From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 307781B88A for ; Fri, 9 Feb 2018 19:13:35 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Feb 2018 10:13:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,483,1511856000"; d="scan'208";a="26166725" Received: from irsmsx151.ger.corp.intel.com ([163.33.192.59]) by orsmga003.jf.intel.com with ESMTP; 09 Feb 2018 10:13:27 -0800 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.188]) by IRSMSX151.ger.corp.intel.com ([169.254.4.16]) with mapi id 14.03.0319.002; Fri, 9 Feb 2018 18:13:26 +0000 From: "Trahe, Fiona" To: "dev@dpdk.org" , "pathreya@caviumnetworks.com" , "nmurthy@caviumnetworks.com" , "ssahu@caviumnetworks.com" , "agupta@caviumnetworks.com" , Shally Verma , "Doherty, Declan" , "Keating, Brian A" , "Griffin, John" CC: "Trahe, Fiona" , "De Lara Guarch, Pablo" Thread-Topic: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTlDBfXZBgpUvRIEKp4vWzYT7c5qOaq6Dg Date: Fri, 9 Feb 2018 18:13:26 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B4358931B76C@IRSMSX101.ger.corp.intel.com> References: <1516701263-13154-1-git-send-email-shally.verma@caviumnetworks.com> <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> In-Reply-To: <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNmEwMTkyYmMtNDkyYS00Y2U1LWFhYWItNDAyODliNGViMzVhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6Ik1WYlFqTVh2RWdTVjJ1XC95ZzZNdXlMeitvbGtHUHFiT0loeHhqSmFobTBRPSJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Feb 2018 18:13:37 -0000 SGkgU2hhbGx5LA0KQ29tbWVudHMgYmVsb3cuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBP ZiBTaGFsbHkgVmVybWENCj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAyMywgMjAxOCA5OjU0IEFN DQo+IFRvOiBEb2hlcnR5LCBEZWNsYW4gPGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT4NCj4gQ2M6 IGRldkBkcGRrLm9yZzsgcGF0aHJleWFAY2F2aXVtbmV0d29ya3MuY29tOyBubXVydGh5QGNhdml1 bW5ldHdvcmtzLmNvbTsNCj4gc3NhaHVAY2F2aXVtbmV0d29ya3MuY29tOyBhZ3VwdGFAY2F2aXVt bmV0d29ya3MuY29tOyBTaGFsbHkgVmVybWENCj4gPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+ DQo+IFN1YmplY3Q6IFtkcGRrLWRldl0gW1JGQyB2MSAxLzFdIGxpYi9jcnlwdG9kZXY6IGFkZCBz dXBwb3J0IG9mIGFzeW1tZXRyaWMgY3J5cHRvDQo+IA0KPiBGcm9tOiBTaGFsbHkgVmVybWEgPHN2 ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+IA0KPiBBZGQgc3VwcG9ydCBmb3IgYXN5bW1ldHJp YyBjcnlwdG8gb3BlcmF0aW9ucyBpbiBEUERLIGxpYiBjcnlwdG9kZXYNCj4gDQo+IEtleSBmZWF0 dXJlIGluY2x1ZGU6DQo+IC0gT25seSBzZXNzaW9uIGJhc2VkIGFzeW1tZXRyaWMgY3J5cHRvIG9w ZXJhdGlvbnMNCj4gLSBuZXcgZ2V0IGFuZCBzZXQgQVBJcyBmb3Igc3ltbWV0cmljIGFuZCBhc3lt bWV0cmljIHNlc3Npb24gcHJpdmF0ZQ0KPiAgIGRhdGEgYW5kIG90aGVyIGluZm9ybWF0aW9ucw0K PiAtIEFQSXMgdG8gY3JlYXRlLCBjb25maWd1cmUgYW5kIGF0dGNoIHF1ZXVlIHBhaXIgdG8gYXN5 bW1ldHJpYyBzZXNzaW9ucw0KPiAtIG5ldyBjYXBhYmlsaXRpZXMgaW4gc3RydWN0IGRldmljZV9p bmZvIHRvIGluZGljYXRlDQo+ICAgLS0gbnVtYmVyIG9mIGRlZGljYXRlZCBxdWV1ZSBwYWlycyBh dmFpbGFibGUgZm9yIHN5bW1ldHJpYyBhbmQNCj4gICAgICBhc3ltbWV0cmljIG9wZXJhdGlvbnMs IGlmIGFueQ0KPiAgIC0tIG51bWJlciBvZiBhc3ltbWV0cmljIHNlc3Npb25zIHBvc3NpYmxlIHBl ciBxcA0KPiANCltGaW9uYV0gVGhvdWdoIGl0J3MgcHJvYmFibHkgcHJlbWF0dXJlIHRvIGluY2x1 ZGUgb24gdGhlIEFQSSBoYXZlIHlvdSBjb25zaWRlcmVkIA0KcHJvdmlkaW5nIGZvciBwcmUtbG9h ZGVkIGtleXMgaW4gZnV0dXJlLCBpLmUuIHRoZSBhYmlsaXR5IHRvIHdyYXAga2V5cyBvciByZWZl ciB0byBrZXlzDQphbHJlYWR5IHN0b3JlZCBzZWN1cmVseSBvbiB0aGUgZGV2aWNlLCBhcyBhbiBh bHRlcm5hdGl2ZSB0byBwYXNzaW5nIHRoZSBrZXlzIG9uIHRoZSBBUEk/DQoNCg0KPiBQcm9wb3Nl ZCBhc3ltbWV0cmljIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBhcmU6DQo+IC0gcnNhDQo+IC0g ZHNhDQo+IC0gZGVmZmllLWhlbGxtYW4ga2V5IHBhaXIgZ2VuZXJhdGlvbiBhbmQgc2hhcmVkIGtl eSBjb21wdXRhdGlvbg0KPiAtIGVjZGVmZmllLWhlbGxtYW4NCj4gLSBmdW5kYW1lbnRhbCBlbGxp cHRpYyBjdXJ2ZSBvcGVyYXRpb25zDQo+IC0gZWxsaXB0aWMgY3VydmUgRFNBDQo+IC0gbW9kdWxh ciBleHBvbmVudGlhdGlvbiBhbmQgaW52ZXJzaW9uDQo+IA0KPiBUaGlzIHBhdGNoIHByaW1hcmls eSBkZWZpbmVzIFBNRCBvcGVyYXRpb25zIGFuZCBkZXZpY2UgY2FwYWJpbGl0aWVzDQo+IHRvIHBl cmZvcm0gYXN5bW1ldHJpYyBjcnlwdG8gb3BzIG9uIHF1ZXVlIHBhaXJzIGFuZCBpbnRlbmQgdG8N Cj4gaW52aXRlIGZlZWRiYWNrcyBvbiBjdXJyZW50IHByb3Bvc2FsIHNvIGFzIHRvIGVuc3VyZSBp dCBlbmNvbXBhc3MNCj4gYWxsIGtpbmQgb2YgY3J5cHRvIGRldmljZXMgd2l0aCBkaWZmZXJlbnQg Y2FwYWJpbGl0aWVzIGFuZCBxdWV1ZQ0KPiBwYWlyIG1hbmFnZW1lbnQuDQo+IA0KPiBMaXN0IG9m IFRCRHM6DQo+IC0gQ3VycmVudGx5LCBwYXRjaCBvbmx5IHVwZGF0ZWQgZm9yIFJTQSB4Zm9ybSBh bmQgYXNzb2NpYXRlZCBwYXJhbXMuDQo+ICAgT3RoZXIgYWxnb3JpdG1zIHRvIGJlIGFkZGVkIGlu IHN1YnNlcXVlbnQgdmVyc2lvbnMuDQo+IC0gcGVyLXNlcnZpY2Ugc3RhdHMgdXBkYXRlDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBTaGFsbHkgVmVybWEgPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+ DQo+IC0tLQ0KPiANCj4gSXQgaXMgZGVyaXZhdGl2ZSBvZiBSRkMgdjIgYXN5bW1ldHJpYyBjcnlw dG8gcGF0Y2ggc2VyaWVzIGluaXRpYXRlZCBieQ0KPiBVbWVzaCBLYXJ0aGEobWFpbHRvOnVtZXNo LmthcnRoYUBjYXZpdW1uZXR3b3Jrcy5jb20pOg0KPiANCj4gIGh0dHA6Ly9kcGRrLm9yZy9kZXYv cGF0Y2h3b3JrL3BhdGNoLzI0MjQ1Lw0KPiAgaHR0cDovL2RwZGsub3JnL2Rldi9wYXRjaHdvcmsv cGF0Y2gvMjQyNDYvDQo+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29yay9wYXRjaC8yNDI0 Ny8NCj4gDQo+IEFuZCBpbmNsdXNpdmUgb2YgYWxsIHJldmlldyBjb21tZW50cyBnaXZlbiBvbiBS RkMgdjIuDQo+ICAoIFNlZSBjb21wbGV0ZSBkaXNjdXNzaW9uIHRocmVhZCBoZXJlOg0KPiBodHRw Oi8vZGV2LmRwZGsubmFya2l2ZS5jb20veXFURkZMSHcvZHBkay1kZXYtcmZjLXNwZWNpZmljYXRp b25zLWZvci1hc3ltbWV0cmljLWNyeXB0by0NCj4gYWxnb3JpdGhtcyNwb3N0MTIpDQo+IA0KPiBT b21lIG9mIHRoZSBSRkN2MiBSZXZpZXcgY29tbWVudHMgcGVuZGluZyBmb3IgY2xvc3VyZToNCj4g PiAiIFtGaW9uYV0gVGhlIGNvdW50IGZuIGlzbid0IHVzZWQgYXQgYWxsIGZvciBzeW0gLSBwcm9i YWJseSBubyBuZWVkIHRvIGFkZCBmb3IgYXN5bQ0KPiAgICAgIGJldHRlciBpbnN0ZWFkIHRvIHJl bW92ZSB0aGUgc3ltIGZuLiINCj4gDQo+ICAgICAgSXQgaXMgc3RpbGwgcHJlc2VudCBpbiBkcGRr LW5leHQtY3J5cHRvIGZvciBzeW0sIHNvIHdoYXQgaGFzIGJlZW4gZGVjaXNpb24NCj4gICAgICBv biBpdD8NCltGaW9uYV0gTm8gY2hhbmdlLiBUaGUgcnRlX2NyeXB0b2Rldl9vcHMgZm4gaXMgc3Rp bGwgbm90IGNhbGxlZCBzbyB1c2VsZXNzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4NCnJ0ZV9jcnlw dG9kZXZfcXVldWVfcGFpcl9jb3VudCgpIHJldHVybnMgdGhlIG51bV9xcHMgY29uZmlndXJlZCBp biANCnJ0ZV9jcnlwdG9kZXZfY29uZmlndXJlKCksIGJ1dCBuZXZlciBjYWxscyB0aGUgUE1EIGRl dl9vcHMucXVldWVfcGFpcl9jb3VudCgpLg0KU28gY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2Nv dW50X3Qgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuDQpBbmQgbm8gcG9pbnQgaW4gYWRkaW5nIG9uZSBm b3IgYXN5bS4NCg0KPiANCj4gPiJbRmlvbmFdIGlmIGVhY2ggcXAgY2FuIGhhbmRsZSBvbmx5IGEg c3BlY2lmaWMgc2VydmljZSwgaS5lLiBhIHN1YnNldCBvZmYgdGhlIGNhcGFiaWxpdGllcw0KPiAg ICAgSW5kaWNhdGVkIGJ5IHRoZSBkZXZpY2UgY2FwYWJpbGl0eSBsaXN0LCB0aGVyZSdzIGEgbmVl ZCBmb3IgYSBuZXcgQVBJIHRvIHF1ZXJ5DQo+ICAgICB0aGUgY2FwYWJpbGl0eSBvZiBhIHFwLiIN Cj4gDQo+ICAgICBDdXJyZW50IHByb3Bvc2FsIGRvZXNu4oCZdCBkaXN0aW5ndWlzaCBiZXR3ZWVu IGRldmljZSBjYXBhYmlsaXR5IGFuZCBxcCBjYXBhYmlsaXR5Lg0KPiAgICAgSXQgcmF0aGVyIGxl YXZlIHN1Y2ggZGlmZmVyZW5jZXMgaGFuZGxpbmcgaW50ZXJuYWwgdG8gUE1Ecy4gVGh1cyBubyBj YXBhYmlsaXR5DQo+ICAgICBvciBBUEkgYWRkZWQgZm9yIHFwIGluIGN1cnJlbnQgdmVyc2lvbi4g SXQgaXMgc3ViamVjdCB0byByZXZpc2l0IGJhc2VkIG9uIHJldmlldw0KPiAgICAgZmVlZGJhY2sg b24gY3VycmVudCBwcm9wb3NhbC4NCltGaW9uYV0gVGhpcyB3b3VsZCBub3Qgd29yayBmb3Igc29t ZSBkZXZpY2VzLCBjb21tZW50cyBiZWxvdy4NCg0KPiANCj4gLSBTZXNzaW9ubGVzcyBTdXBwb3J0 Lg0KPiAgICAgQ3VycmVudCBwcm9wb3NhbCBvbmx5IHN1cHBvcnQgU2Vzc2lvbi1iYXNlZCBiZWNh dXNlOg0KPiAgICAgIDEuIEFsbCBvbmUtdGltZSBzZXR1cCBpLmUuICBhbGdvcyBhbmQgYXNzb2Np YXRlZCBwYXJhbXMsIHN1Y2ggYXMsIHB1YmxpYy1wcml2YXRlIGtleXMNCj4gICAgICAgICBvciBt b2R1bHVzIGxlbmd0aCBjYW4gYmUgZG9uZSBpbiBjb250cm9sIHBhdGggdXNpbmcgc2Vzc2lvbi1p bml0IEFQSQ0KPiAgICAgIDIuIGl04oCZcyBhbiBlYXNpZXIgd2F5IHRvIGRlZGljYXRlIHFwIHRv IGRvIHNwZWNpZmljIHNlcnZpY2UgKHVzaW5nIHF1ZXVlX3BhaXJfYXR0YWNoKCkpDQo+ICAgICAg ICAgd2hpY2ggY2Fubm90IGJlIGNhc2UgaW4gc2Vzc2lvbmxlc3MNCj4gICAgICAzLiBDb3VsZG7i gJl0IGZpbmQgYW55IHNpZ25pZmljYW50IGFkdmFudGFnZSBnb2luZyBzZXNzaW9ubGVzcyB3YXku IEFsc28gZXhpc3RpbmcgbW9zdCBvZiBQTURzIGFyZQ0KPiBzZXNzaW9uLWJhc2VkLg0KPiANCj4g ICAgIEl0IGNvdWxkIGJlIGFkZGVkIGluIHN1YnNlcXVlbnQgdmVyc2lvbnMsIGlmIHJlcXVpcmVt ZW50IGlzIGlkZW50aWZpZWQsIGJhc2VkIG9uIHJldmlldyBjb21tZW50DQo+ICAgICBvbiB0aGlz IFJGQy4NCltGaW9uYV0gT3VyIHByZWZlcmVuY2Ugd291bGQgYmUgZm9yIHNlc3Npb25sZXNzLCBh cyBpdCB3b3VsZCBuZWVkIGZld2VyIEFQSSBjYWxscyAobm8gc2Vzc2lvbl9jcmVhdGUvc2Vzc2lv bl9jbGVhcikgDQphbmQgZS5nLiBESCBhbmQgRUNESCBzZXNzaW9ucyBhcmUgbGlrZWx5IHRvIGJl IG9ubHkgdXNlZCBmb3IgYSBzaW5nbGUgb3AuIEhvd2V2ZXIgdGhpcyBpcyBub3QgYSBibG9ja2Vy IGZvcg0KdGhpcyBBUEksIHdlIGNhbiBQT0MgaXQgbGF0ZXIgYW5kIHByb3Bvc2UgYW4gZXh0ZW5z aW9uIHRvIHRoZSBBUEkgaWYgaXQgZ2l2ZXMgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4NCiAN Cj4gDQo+IFN1bW1hcnkNCj4gLS0tLS0tLQ0KPiANCj4gVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGFu IG92ZXJ2aWV3IG9mIGtleSBmZWF0dXJlIGVuYWJsZWQgaW4gY3VycmVudCBzcGVjaWZpY2F0aW9u Lg0KPiBJdCBjb21wcmlzZSBvZiBrZXkgZGVzaWduIGNoYWxsZW5nZXMgYXMgaGF2ZSBiZWVuIGlk ZW50aWZpZWQgb24gUkZDdjIgYW5kDQo+IHN1bW1hcnkgZGVzY3JpcHRpb24gb2YgbmV3IGludGVy ZmFjZXMgYW5kIGRlZmluaXRpb25zIGFkZGVkIHRvIGhhbmRsZSBzYW1lLg0KPiANCj4gRGVzY3Jp cHRpb24NCj4gLS0tLS0tLS0tLS0NCj4gDQo+IFRoaXMgQVBJIHNldCBhc3N1bWVzIHRoYXQgdGhl IG1heF9uYl9xdWV1ZV9wYWlycyBvbiBhDQo+IGRldmljZSBjYW4gYmUgYWxsb2NhdGVkIHRvIGFu eSBtaXggb2Ygc3ltIG9yIGFzeW0uIFNvbWUgZGV2aWNlcw0KPiBtYXkgaGF2ZSBhIGZpeGVkIG1h eCBwZXIgc2VydmljZS4gVGh1cywgcnRlX2NyeXB0b2Rldl9pbmZvDQo+IGlzIHVwZGF0ZWQgd2l0 aCBtYXhfc3ltX25iX3F1ZXVlcyBhbmQgbWF4X2FzeW1fbmJfcXVldWVzIHdpdGggcnVsZToNCj4g DQo+IG1heF9uYl9xdWV1ZV9wYWlyID0gbWF4X25iX3N5bV9xcCArIG1heF9uYl9hc3ltX3FwLg0K PiANCj4gSWYgZGV2aWNlIGhhcyBubyByZXN0cmljdGlvbnMgb24gcXAgdG8gYmUgdXNlZCBwZXIg c2VydmljZSwgc3VjaCBQTURzIGNhbiBsZWF2ZQ0KPiBtYXhfbmJfc3ltX3FwID0gbWF4X25iX2Fz eW1fcXAgPSAwLiBJbiBzdWNoIGNhc2UsIGFwcGxpY2F0aW9uIGNhbiBzZXR1cCBhbnkgb2YNCj4g dGhlIHNlcnZpY2UgdXB0byBsaW1pdCBkZWZpbmVkIGJ5IG1heF9uYl9xdWV1ZV9wYWlyLg0KW0Zp b25hXSBUaGlzIHNlZW1zIGF3a3dhcmQgaWYgYSBnZW51aW5lIDAgIGUuZy4gQW4gYXBwbCB3YW50 cyB0byBzZXQgdXAgYSBzeW0gcXAsIGFuZA0Kc2VlcyB0aGF0IG1heF9uYl9xdWV1ZV9wYWlyPTQu IENhbid0IHRydXN0IHRoaXMgLSBuZWVkcyB0byBsb29rIGRlZXBlci4gU2VlcyANCm1heF9uYl9z eW1fcXA9MC4gRG9lc24ndCBrbm93IGlmIHRoYXQgbWVhbnMgaXQgY2FuIHNldCB1cCA0IHN5bSBx cHMgb3Igbm8gcXBzDQp1bnRpbCBpdCBhbHNvIGNoZWNrcyBtYXhfbmJfYXN5bV9xcC4gSWY9NCB0 aGVuIGl0IGNhbid0IHNldCB1cCBhbnkgc3ltIHFwLCBpZj0wIGl0IGNhbiBzZXQgdXAgNC4NCldv dWxkIGl0IGJlIGJldHRlciBpZiAgIA0KCW1heF9uYl9xdWV1ZV9wYWlyID0gbWF4KG1heF9uYl9z eW1fcXAsIG1heF9uYl9hc3ltX3FwKS4NCgltYXhfbmJfc3ltX3FwID0gMC4ubWF4X25iX3F1ZXVl X3BhaXINCgltYXhfbmJfYXN5bV9xcCA9IDAuLm1heF9uYl9xdWV1ZV9wYWlyDQoNCj4gSGVyZSwg bWF4X25iX3N5bV9xcCBhbmQgbWF4X25iX2FzeW1fcXAsIGlmIG5vbi16ZXJvLCBqdXN0IGRlZmlu ZSBsaW1pdCBvbiBxcCB3aGljaCBhcmUNCj4gYXZhaWxhYmxlIGZvciBlYWNoIHNlcnZpY2UgYW5k ICphcmUgbm90KiBpZHMgdG8gYmUgdXNlZCBkdXJpbmcgcXAgc2V0dXAgYW5kIGVucXVldWUgaS5l Lg0KPiBpZiBkZXZpY2Ugc3VwcG9ydHMgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMgd2l0 aCBuIHFwLCB0aGVuIGFueSBvZiB0aGVtDQo+IGNhbiBiZSBjb25maWd1cmVkIGZvciBzeW1tZXRy aWMgb3IgYXN5bW1ldHJpYyBzdWJqZWN0IHRvIGxpbWl0IGRlZmluZWQgYnkNCj4gbWF4X25iX3N5 bV9xcCBhbmQgbWF4X25iX2FzeW1fcXAuIEZvciBleGFtcGxlLA0KPiBpZiBkZXZpY2UgaGFzIDYg cXVldWVzIGFuZCA1IGZvciBzeW1tZXRyaWMgYW5kIDEgZm9yIGFzeW1tZXRyaWMgdGhhdCBpbXBs eQ0KPiBhcHBsaWNhdGlvbiBjYW4gc2V0dXAgb25seSAxIG91dCBvZiBhbnkgNiBxcCBmb3IgYXN5 bW1ldHJpYyBhbmQgcmVzdCBmb3INCj4gc3ltbWV0cmljLg0KPiANCj4gQWRkaXRpb25hbGx5LCBh cHBsaWNhdGlvbiBjYW4gZGVkaWNhdGUgcXAgdG8gcGVyZm9ybSBzcGVjaWZpYyBzZXJ2aWNlIHZp YSBvcHRpb25hbA0KPiBxdWV1ZV9wYWlyX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgQVBJLg0K W0Zpb25hXSBUaGlzIGlzIHRvbyBsYXRlIC0gc29tZSBkZXZpY2VzIGhhdmUgcXBzIHdoaWNoIG5l ZWQgdG8ga25vdyBhdCBzZXR1cCB3aGljaA0Kc2VydmljZSB0aGV5J2xsIGJlIHVzZWQgZm9yLCBh cyB0aGV5IHJlc2VydmUgcmVzb3VyY2VzIGJhc2VkIG9uIHRoZSBzZXJ2aWNlLg0KZS5nLiBhIGRl dmljZSByZXBvcnRzIGluIGluZm8gdGhhdCBpdCBjYW4gc3VwcG9ydCBxcHMobWF4IDQsIG1heF9z eW0gMiwgbWF4IGFzeW0gMikNCkFuIGFwcGxpY2F0aW9uIGp1c3Qgd2FudHMgdG8gdXNlIDEgc3lt IHFwIGFuZCAxIGFzeW0sIHNvIGNvbmZpZ3VyZXMgZGV2aWNlIHdpdGggDQpxcHMobWF4IDIsIG1h eF9zeW0gMSwgbWF4IGFzeW0gMSkNCk5vdyBhcHBsIGNhbGxzIHFwX3NldHVwIGZvciBxcCBpbmRl eCAwLiBXYW50cyB0byBzdGFydCB3aXRoIHJ1bm5pbmcgYXN5bW1ldHJpYw0Kc2VydmljZSBhbmQg d2lsbCBzZXQgdXAgdGhlIHN5bW1ldHJpYyBsYXRlciwgbWF5YmUgaW4gYSBzZXBhcmF0ZSB0aHJl YWQuDQpPdXIgZGV2aWNlcyBuZWVkIHRvIGtub3cgYXQgc2V0dXAgdGltZSB3aGljaCBzZXJ2aWNl IHdpbGwgYmUgdXNlZCBvbiB0aGUgcXAuDQpTbyBoYXZlbid0IGJlZW4gZ2l2ZW4gZW5vdWdoIGlu Zm9ybWF0aW9uIHRvIHNldHVwIHRoZSBxcC4NCg0KRXZlbiBpZiB0aGUgUE1EIGNvdWxkIHNldCB1 cCBzZXJ2aWNlLWFnbm9zdGljIHFwcyBhbmQganVzdCBtYXAgbGF0ZXIsIHlvdSANCnN1Z2dlc3Qg dGhlIHFwX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgd291bGQgYmUgb3B0aW9uYWwuIEhvdyBj b3VsZCB0aGUgYXBwbA0KbWFrZSB0aGUgZGVjaXNpb24gd2hldGhlciB0byBjYWxsIGl0IG9yIG5v dCBpbiBhYm92ZSBjYXNlPyBJdCBuZWVkcyB0byBrbm93IHdoZXRoZXINCnRoZSBjcmVhdGVkIHFw IGlzIGFnbm9zdGljIG9yIG5vdCwgc28gYSBjYXBhYmlsaXR5IG11c3QgYmUgcmVwb3J0ZWQgYnkg dGhlIFBNRC4gDQpPUiB0aGUgQVBJIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIG11c3QgYmUgY2Fs bGVkIGZvciBldmVyeSBzZXNzaW9uLiANCkJ1dCB0aGF0J3MgcGVyZiBpbXBhY3RpbmcgYW5kIG5v dCBoZWxwZnVsIGlmIGEgZGV2aWNlIGNvdWxkIHN1cHBvcnQgc2VydmljZS1hZ25vc3RpYyBxcHMu DQoNCkkgZG9uJ3QgaGF2ZSBhIHNvbHV0aW9uIGZvciBzZXJ2aWNlLWFnbm9zdGljIHFwcy4gRm9y IG91ciBkZXZpY2VzIHRoYXQncyBub3QgbmVjZXNzYXJ5Lg0KSXMgaXQgbGlrZWx5IHRoYXQgYW55 b25lIHdhbnRzIHRvIHNldCB1cCBhIHFwIHRvIHByb2Nlc3MgYm90aCBzeW0gYW5kIGFzeW0gb3Bz Pw0KSXMgaXQgc3VmZmljaWVudCB0byBhY2NvbW1vZGF0ZSBxcHMgd2hpY2ggY2FuIHN1cHBvcnQg ZWl0aGVyDQpzZXJ2aWNlLCBidXQgb25lIG11c3QgYmUgcGlja2VkIGF0IHNldHVwIGFmdGVyIHdo aWNoIHRoZSBxcCBzdXBwb3J0cyBvbmx5IHRoYXQgc2VydmljZT8NCkhvdyBhYm91dCB0aGUgZm9s bG93aW5nIC0gOg0KIC0gZGV2aWNlIHJlcG9ydHMgaW4gaW5mbyBxcHMobWF4LCBtYXhfc3ltLCBt YXggYXN5bSkgd2hlcmUNCgltYXggPSBtYXgobWF4X3N5bSwgbWF4X2FzeW0pLg0KCW1heF9zeW0g PSAwLi5tYXgNCgltYXhfYXN5bSA9IDAuLm1heA0KCVNvIGlmIGEgZGV2aWNlIHJlcG9ydHMgNCwy LDIsIGl0IGhhcyA0IHRvdGFsLCAyIGNhbiBiZSBzZXR1cCBmb3Igc3ltLCAyIGZvciBhc3ltDQoJ T3IgaWYgaXQgcmVwb3J0cyA0LDQsNCwgYWxsIDQgb2YgdGhlbSBjYW4gYmUgc2V0dXAgYXMgc3lt IG9yIGFsbCA0IGFzDQoJYXN5bSBvciBhIG1peCwgYnV0IHRvdGFsIHNldHVwIGNhbid0IGJlIG1v cmUgdGhhbiA0LiANCiAtIGFwcGwgY29uZmlndXJlcyBxcHMobWF4LCBtYXhfc3ltLCBtYXhfYXN5 bSkNCglJZiBpdCBzcGVjaWZpZXMgNCwxLDMgaXQgd2FudHMgdG8gdXNlIDQgaW4gdG90YWwsIDEg Zm9yIHN5bSwgMyBmb3IgYXN5bS4NCglJZiBpdCBzcGVjaWZpZXMgMSwxLDAgaXQgd2FudHMgdG8g dXNlIDEgaW4gdG90YWwsIDEgZm9yIHN5bSwgMCBmb3IgYXN5bS4NCglUaGUgbnVtYmVycyBpdCBj b25maWd1cmVzIG11c3QgYmUgPD0gdGhvc2UgcmVwb3J0ZWQgaW4gaW5mby4NCiAtIGFwcGwgY2Fs bHMgcXBfc2V0dXAoZGV2LCBxcCwgc2VydmljZSkgd2hlcmUgc2VydmljZSA9IHN5bSBvciBhc3lt DQoJcXAgaW5kZXggbXVzdCBiZSBiZXR3ZWVuIDAuLm1heC0xDQoJVGhlIFBNRCBtYXBzIHRoYXQg aW5kZXggdG8gYW4gaW50ZXJuYWwgcXAgd2hpY2ggY2FuIHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBz ZXJ2aWNlLg0KCUlmIHFwX3NldHVwIGlzIGNhbGxlZCBvbiBhbiBpbmRleCBhbmQgdGhlIG1heCBj b25maWd1cmVkIHFwcyBoYXZlIGFscmVhZHkNCgliZWVuIHNldHVwIGZvciB0aGF0IHNlcnZpY2Ug dGhlbiB0aGUgc2V0dXAgZmFpbHMuDQpJbiBjYXNlIHRoZSBhcHBsIGZvcmdldHMgd2hpY2ggcXAg aXQgc2V0IHVwIGZvciB3aGljaCBzZXJ2aWNlLCBJIHRoaW5rIGl0IHdvdWxkIGJlIG5lY2Vzc2Fy eSB0byBhZGQgYSBuZXcgQVBJDQoJcnRlX2NyeXB0b2Rldl9xcF9pbmZvKCkgd2hpY2ggd291bGQg cmV0dXJuIHdoYXQgc2VydmljZSBpcyBjb25maWd1cmVkIG9uIHRoZSBxcA0KIA0KSWYgaXQncyBu ZWNlc3NhcnkgdG8gc3VwcG9ydCBzZXJ2aWNlLWFnbm9zdGljIHFwcywgdGhlbiBvbmUgd2F5IHdv dWxkIGJlIHRvIHNwZWNpZnkgYSB0aGlyZCBzZXJ2aWNlIGFib3ZlIGFzIA0KIC0gc3ltK2FzeW0u DQpBbmQgaGF2ZSBkZXZpY2VzIHJlcG9ydCBtYXhfc3ltX2FzeW1fcXBzPw0KDQpJdCdzIGRpZmZp Y3VsdCB0byBmaW5kIGEgc29sdXRpb24gZm9yIHRoaXMgd2l0aG91dCBicmVha2luZyB0aGUgY3Vy cmVudCBBUEkgLSBzZWUgc2ltcGxlcg0KYWx0ZXJuYXRpdmUgYmVsb3cuDQogDQo+IEV4Y2VwdCB0 aGUgb25lcyBtZW50aW9uZWQgYWJvdmUsIHNwZWNpZmljYXRpb24gZG9lc24ndCBkZWZpbmUgYW55 IHJlc3RyaWN0aW9ucyBvbg0KPiBlbnF1ZXVlL2RlcXVldWUgQVBJIGZvciBkaWZmZXJlbnQgY3J5 cHRvIHNlcnZpY2VzLiBBcHBsaWNhdGlvbiBjYW4gZW5xdWV1ZSBib3RoIHN5bW1ldHJpYw0KPiBh bmQgYXN5bW1ldHJpYyBvcGVyYXRpb25zIHRvIHNhbWUgZGV2aWNlIGFuZCBxcCBpZiBkZXZpY2Ug aW5mbyBpbmRpY2F0ZSBzdXBwb3J0IG9mIGJvdGgNCj4gc3ltbWV0cmljIGFuZCBhc3ltbWV0cmlj IGFuZCBxcCBpcyBub3QgZGVkaWNhdGVkIHRvIGFueS4gSG93ZXZlciBpbiBwcmFjdGljZSwgaXQg Y291bGQNCj4gcmVzdWx0IGluIGhlYWQtb2YtbGluZSBibG9ja2luZyBkdWUgdG8gdGhlIGFzeW0g b3BzIHRha2luZyBsb25nZXIgdGhhbiB0aGUgc3ltbWV0cmljIG9wcy4NCj4gDQo+IFNvbWUgSFcg YWNjZWxlcmF0b3JzIGF2b2lkIHRoaXMgaXNzdWUgYnkgc3VwcG9ydGluZyBzeW0gYW5kIGFzeW0g b3BzDQo+IG9uIGRpZmZlcmVudCBxcHMgb24gdGhlIHNhbWUgZGV2aWNlLiAgU3VjaCBkZXZpY2Vz IGNhbiBzZXQgbWF4X25iX3N5bV9xcCBhbmQNCj4gbWF4X25iX2FzeW1fcXAgdG8gbnVtYmVyIG9m IHF1ZXVlcyBhdmFpbGFibGUgZm9yIGVhY2ggcmVzcGVjdGl2ZSBzZXJ2aWNlLg0KPiANCj4gVGhp cyBtYXkgZ2l2ZSBwcm9ibGVtIGluIGluZGV4aW5nIG9uIGVucXVldWUvZGVxdWV1ZSBpLmUuDQo+ IGlmIDIgYXN5bSBxcHMgYW5kIDIgc3ltIHFwcyBhcmUgY3JlYXRlZCBvbiB0aGUgc2FtZSBkZXZp Y2UsDQo+IHRoZSBxdWV1ZV9wYWlyX2lkcyBhcmUgZHVwbGljYXRlZC4gVG8gaGFuZGxlIHN1Y2gg c2NlbmFyaW8sDQo+IDIgYWx0ZXJuYXRpdmVzIGFyZSBwcm9wb3NlZCBmb3IgUE1EIGRlc2lnbjoN Cj4gDQo+IDEuIEFsbG93IGFsbCBxcCB0byBpbnB1dCBhbnkgb3BlcmF0aW9uIHR5cGUgdmlydHVh bGx5LiBTYXksDQo+IA0KPiAgICAgQ29uc2lkZXIgZGV2aWNlIHdpdGggc3ltbWV0cmljIGFuZCBh c3ltbWV0cmljIGNhcGFiaWxpdHkgaGF2aW5nDQo+ICAgICBtYXhfbmJfcXVldWVfcGFpciBhcyA2 LCB0aGVuIGJ5IGRlc2lnbiwgYWxsIDYgYXJlIGNhcGFibGUgdG8gaW5wdXQNCj4gICAgIGJvdGgg b3AgdHlwZXMuDQo+IA0KPiAgICAgSWYgUE1EIHVzZXMgZml4ZWQgc2V0IG9mIHFwLCB0aGVuIGlu dGVybmFsbHksIGNhbiBtYXAgcXAgaWQgdG8NCj4gICAgIGFjdHVhbCBwaHlzaWNhbCBxcCBpZCB0 byBiZSB1c2VkIGFjY29yZGluZyB0byBzZXNzaW9uL29wIHR5cGUuDQo+ICAgICBJZiBzdWNoIG1h cHBpbmcgaXMgZG9uZSBvbiBkYXRhIHBhdGgsIG1heSBpbXBhY3QgcGVyZm9ybWFuY2Ugb2YgUE1E cy4NCj4gICAgIFRodXMsIHRvIGhhbmRsZSBzdWNoIG1hcHBpbmcgb3V0IG9mIGRhdGEgcGF0aCwg bGlicmFyeSBwcm92aWRlcyBhbiBBUEkNCj4gICAgIHF1ZXVlX3BhaXJfYXR0YWNoX3N5bS9hc3lt X3Nlc3Npb24oKSB3aGljaCBmYWNpbGl0YXRlIGFwcGxpY2F0aW9uIHRvDQo+ICAgICBkZWRpY2F0 ZSBxcCBpZCB0byBwZXJmb3JtIHNwZWNpZmljIChzeW0vYXN5bSkgc2VydmljZSBpbiBjb250cm9s IHBhdGgNCj4gICAgIGFuZCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSAxc3QgY2FsbCB0byBlbnF1 ZXVlX2J1cnN0KCkuDQo+ICAgICBIZXJlIFBNRCBjYW4gYmluZCBhcHAgcHJvdmlkZWQgbG9naWNh bCBxcCBpZCB0byBhY3R1YWwgcGh5c2ljYWwgcXAgaWQgdG8gdXNlDQo+ICAgICBkZXBlbmRpbmcg b24gc2Vzc2lvbiB0eXBlICwgT1IgYWx0ZXJuYXRpdmVseQ0KPiANCj4gMi4gUE1EcyBjYW4gc3Bs aXQgaXQgaW50byB0d28gUE1Ecywgb25lIHdpdGggc3ltbWV0cmljIE9OTFkgY2FwYWJpbGl0eSBh bmQgb3RoZXINCj4gICAgIHdpdGggYXN5bW1ldHJpYyBPTkxZIGNhcGFiaWxpdHkgKGFsc28gcHJv cG9zZWQgYnkgRmlvbmEgaW4gUkZDdjIpLg0KPiAgICAgVGhpcyBtYXkgcmVxdWlyZSBzb21lICBj aGFuZ2VzIHRvIEVBTCB0byBmYWNpbGl0YXRlIHBjaSBkZXZpY2Ugc2hhcmluZyBiZXR3ZWVuDQo+ ICAgICBQTURzLCBlbmFibGluZyBzZXBhcmF0aW9uIG9mIHN5bSBhbmQgIGFzeW0gc2VydmljZXMg b250byBkaWZmZXJlbnQgUE1Ecy4NCj4gICAgIEFzIHBlciBSRkN2MiBmZWVkYmFjaywgSW50ZWwg IHByb3Bvc2VkIHRvIHN1Ym1pdCBhIHBhdGNoIHRvICBlbmFibGUgdGhpcy4NCltGaW9uYV0gVGhl IGVhbCBjaGFuZ2VzIHdlcmUgcHJvYmxlbWF0aWMsIGFuZCBmZWVkYmFjayBmcm9tIHRoZSBEdWJs aW4gdXNlcnNwYWNlIA0KZXZlbnQgbGFzdCBTZXB0ZW1iZXIgd2FzIHRoYXQgc2V2ZXJhbCBvdGhl cnMgaGF2ZSB0cmllZCBzaW1pbGFyIGJ1dCByZXZlcnRlZCB0byByZXNvbHZpbmcNCnRoZSBwcm9i bGVtIHdpdGhpbiB0aGUgUE1ELiBUaGlzIGlzIHdoYXQgd2UgYXJlIGFsc28gaW4gdGhlIHByb2Nl c3Mgb2YgZG9pbmcuDQpXaXRoIHRoaXMgd2UgaW50ZW5kIHRvIGF2b2lkIGFsbCB0aGUgYWJvdmUg Y29tcGxpY2F0aW9ucy4NCmkuZS4gb25lIHBjaSBkZXZpY2UsIGluIGl0cyBwcm9iZSBmbiwgY2Fu IGNyZWF0ZSBtdWx0aXBsZSBBUEkgZGV2aWNlIGluc3RhbmNlcy4NCk9uZSBpbnN0YW5jZSBvZiBj cnlwdG9kZXYgd2lsbCBwcm92aWRlIGEgc3ltIGNyeXB0byBzZXJ2aWNlLCBvbmUgaW5zdGFuY2Ug b2YgDQpjb21wcmVzc2RldiB3aWxsIHByb3ZpZGUgYSBjb21wcmVzc2lvbiBzZXJ2aWNlIGFuZCBh IHNlY29uZCBjcnlwdG9kZXYgaW5zdGFuY2Ugd2lsbA0KcHJvdmlkZSB0aGUgYXN5bW1ldHJpYyBz ZXJ2aWNlLiBBbGwgcXBzIG9uIGVhY2ggQVBJIGRldmljZSBpbnN0YW5jZSBjYW4gdGhlbiBzdXBw b3J0IGFsbCANCm9mIHRoZSBjYXBhYmlsaXRpZXMgcmVwb3J0ZWQgYnkgdGhhdCBkZXZpY2UuDQoN CkEgc3VnZ2VzdGlvbiBmb3Iga2VlcGluZyB0aGUgc2ltcGxpY2l0eSBvbiB0aGUgQVBJIHdvdWxk IGJlIHRvIGZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuLg0KaS5lLiBkb24ndCBwcm92aWRlIGFueSBz dXBwb3J0IGZvciBzcGVjaWZpY2F0aW9uIG9mIHN5bSBvciBhc3ltIHFwcy4gRXhwZWN0IGFsbA0K cXBzIG9uIGVhY2ggZGV2aWNlIHRvIHN1cHBvcnQgYWxsIGNhcGFiaWxpdGllcyByZXBvcnRlZC4g DQoNCg0KPiAzLiBTb21lIG9mIHRoZSBvdGhlciBhbHRlcm5hdGl2ZXMgd2VyZSBhbHNvIHN1Z2dl c3RlZCBvbiBSRkN2MiBhcyBzdW1tYXJpc2VkIGhlcmU6DQo+ICAgICAiW0Zpb25hXSBPbmUgYWx0 ZXJuYXRpdmUgaXMgdG8gdXNlIGRpZmZlcmVudCBxcF9pZHMgZm9yIHN5bSBhbmQgYXN5bS4NCj4g ICAgICAgUmVtb3ZlIHRoZSBxdWV1ZV9wYWlyX2lkIGZyb20gdGhlIHh4eF9xdWV1ZV9wYWlyX3Nl dHVwIGZucw0KPiAgICAgICBhbmQgaW5zdGVhZCByZXR1cm4gdGhlIGlkLiBTbyBlLmcuIGlmIHN5 bV9xdWV1ZV9wYWlyX3NldHVwKCkgaXMgY2FsbGVkLCB0aGVuDQo+ICAgICAgIGFzeW1fcXVldWVf cGFpcl9zZXR1cCgpLCB0aGVuIHN5bV9xdWV1ZV9wYWlyX3NldHVwKCkgcXBfaWQgMCBhbmQgMiB3 b3VsZCBiZQ0KPiAgICAgICBzeW0gcXBzIGFuZCBxcF9pZCAxIHdvdWxkIGJlIGFuIGFzeW0gcXAu IEluc3RlYWQgb2Ygc2VwYXJhdGUNCj4gICAgICAgZGV2LT5kYXRhLT5hc3ltX3F1ZXVlX3BhaXJz IGFuZCBkZXYtPmRhdGEtPnN5bV9xdWV1ZV9wYWlycyBhcnJheXMgdGhlcmUNCj4gICAgICAgd291 bGQgYmUgb25lIGNvbW1vbiBhcnJheS4gQW5vdGhlciBhbHRlcm5hdGl2ZSBpcyB0byB1c2Ugc2Vw YXJhdGUgQVBJcyBpLmUuDQo+ICAgICAgIHJ0ZV9jcnlwdG9kZXZfc3ltX2VucXVldWVfYnVyc3Qg cnRlX2NyeXB0b2Rldl9hc3ltX2VucXVldWVfYnVyc3QuIg0KPiANCj4gICAgICBXZSBiZWxpZXZl IGVpdGhyIG9mIGFib3ZlIHByb3Bvc2VkIDFzdCB0d28gc29sdXRpb25zKGFnYWluc3QgcG9pbnQg MSBhbmQgMikgc3VmZmljZSB0byBhY2hpZXZlIHB1cnBvc2UuDQo+ICAgICAgVGh1cywgd2UgZG9u 4oCZdCByZWFsaXplIG5lZWQgdG8gY2hhbmdlIG5vdGlvbiBvZiBxcF9zZXR1cCgpIG9yIGFkZCBu ZXcgZW5xdWV1ZV9idXJzdCgpIHZhcmlhbnQNCj4gICAgICBmb3IgYXN5bSBhdCBjdXJyZW50IHN0 YWdlLiBIb3dldmVyIGl0IGlzIHN1YmplY3QgdG8gcmV2aXNpdCwgaWYgYW55IHJlcXVpcmVtZW50 IGlzIGlkZW50aWZpZWQuDQo+IA0KPiAtLS0NCj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L01ha2Vm aWxlICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRl X2NyeXB0by5oICAgICAgICAgICAgICB8ICAzOSArLQ0KPiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYv cnRlX2NyeXB0b19hc3ltLmggICAgICAgICB8IDk0OSArKysrKysrKysrKysrKysrKysrKysrKysr DQo+ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmMgICAgICAgICAgIHwgMjg3 ICsrKysrKysrDQo+ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmggICAgICAg ICAgIHwgMzU4ICsrKysrKysrKy0NCj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9k ZXZfcG1kLmMgICAgICAgfCAgMTkgKy0NCj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlw dG9kZXZfcG1kLmggICAgICAgfCAxNTQgKysrLQ0KPiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRl X2NyeXB0b2Rldl92ZXJzaW9uLm1hcCB8ICAyMSArDQo+ICA4IGZpbGVzIGNoYW5nZWQsIDE4MTEg aW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV9jcnlwdG9kZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9NYWtlZmlsZQ0K PiBpbmRleCBiYmE4ZGVlLi5kZWMzMjViIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2NyeXB0 b2Rldi9NYWtlZmlsZQ0KPiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9NYWtlZmlsZQ0KPiBA QCAtMjEsNiArMjEsNyBAQCBTUkNTLXkgKz0gcnRlX2NyeXB0b2Rldi5jIHJ0ZV9jcnlwdG9kZXZf cG1kLmMNCj4gICMgZXhwb3J0IGluY2x1ZGUgZmlsZXMNCj4gIFNZTUxJTksteS1pbmNsdWRlICs9 IHJ0ZV9jcnlwdG8uaA0KPiAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRlX2NyeXB0b19zeW0uaA0K PiArU1lNTElOSy15LWluY2x1ZGUgKz0gcnRlX2NyeXB0b19hc3ltLmgNCj4gIFNZTUxJTksteS1p bmNsdWRlICs9IHJ0ZV9jcnlwdG9kZXYuaA0KPiAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRlX2Ny eXB0b2Rldl9wbWQuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0 ZV9jcnlwdG8uaCBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG8uaA0KPiBpbmRleCA5 NWNmODYxLi5lOGMwYmFjIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVf Y3J5cHRvLmgNCj4gKysrIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0by5oDQo+IEBA IC0yMyw2ICsyMyw3IEBADQo+ICAjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiANCj4gICNpbmNs dWRlICJydGVfY3J5cHRvX3N5bS5oIg0KPiArI2luY2x1ZGUgInJ0ZV9jcnlwdG9fYXN5bS5oIg0K PiANCj4gIC8qKiBDcnlwdG8gb3BlcmF0aW9uIHR5cGVzICovDQo+ICBlbnVtIHJ0ZV9jcnlwdG9f b3BfdHlwZSB7DQo+IEBAIC0zMCw2ICszMSw4IEBAIGVudW0gcnRlX2NyeXB0b19vcF90eXBlIHsN Cj4gIAkvKio8IFVuZGVmaW5lZCBvcGVyYXRpb24gdHlwZSAqLw0KPiAgCVJURV9DUllQVE9fT1Bf VFlQRV9TWU1NRVRSSUMsDQo+ICAJLyoqPCBTeW1tZXRyaWMgb3BlcmF0aW9uICovDQo+ICsJUlRF X0NSWVBUT19PUF9UWVBFX0FTWU1NRVRSSUMNCj4gKwkvKio8IEFzeW1tZXRyaWMgb3BlcmF0aW9u ICovDQo+ICB9Ow0KPiANCj4gIC8qKiBTdGF0dXMgb2YgY3J5cHRvIG9wZXJhdGlvbiAqLw0KPiBA QCAtOTcsNiArMTAwLDEwIEBAIHN0cnVjdCBydGVfY3J5cHRvX29wIHsNCj4gIAl1bmlvbiB7DQo+ ICAJCXN0cnVjdCBydGVfY3J5cHRvX3N5bV9vcCBzeW1bMF07DQo+ICAJCS8qKjwgU3ltbWV0cmlj IG9wZXJhdGlvbiBwYXJhbWV0ZXJzICovDQo+ICsNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5 bV9vcCBhc3ltWzBdOw0KPiArCQkvKio8IEFzeW1tZXRyaWMgb3BlcmF0aW9uIHBhcmFtZXRlcnMg Ki8NCj4gKw0KPiAgCX07IC8qKjwgb3BlcmF0aW9uIHNwZWNpZmljIHBhcmFtZXRlcnMgKi8NCj4g IH07DQo+IA0KPiBAQCAtMTE3LDYgKzEyNCw5IEBAIHN0cnVjdCBydGVfY3J5cHRvX29wIHsNCj4g IAljYXNlIFJURV9DUllQVE9fT1BfVFlQRV9TWU1NRVRSSUM6DQo+ICAJCV9fcnRlX2NyeXB0b19z eW1fb3BfcmVzZXQob3AtPnN5bSk7DQo+ICAJCWJyZWFrOw0KPiArCWNhc2UgUlRFX0NSWVBUT19P UF9UWVBFX0FTWU1NRVRSSUM6DQo+ICsJCV9fcnRlX2NyeXB0b19hc3ltX29wX3Jlc2V0KG9wLT5h c3ltKTsNCj4gKwkJYnJlYWs7DQo+ICAJY2FzZSBSVEVfQ1JZUFRPX09QX1RZUEVfVU5ERUZJTkVE Og0KPiAgCWRlZmF1bHQ6DQo+ICAJCWJyZWFrOw0KPiBAQCAtMTI0LDcgKzEzNCw3IEBAIHN0cnVj dCBydGVfY3J5cHRvX29wIHsNCj4gIH0NCj4gDQo+ICAvKioNCj4gLSAqIFByaXZhdGUgZGF0YSBz dHJ1Y3R1cmUgYmVsb25naW5nIHRvIGEgY3J5cHRvIHN5bW1ldHJpYyBvcGVyYXRpb24gcG9vbC4N Cj4gKyAqIFByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgYmVsb25naW5nIHRvIGEgY3J5cHRvIG9wZXJh dGlvbiBwb29sLg0KPiAgICovDQo+ICBzdHJ1Y3QgcnRlX2NyeXB0b19vcF9wb29sX3ByaXZhdGUg ew0KPiAgCWVudW0gcnRlX2NyeXB0b19vcF90eXBlIHR5cGU7DQo+IEBAIC0yODMsOSArMjkzLDE0 IEBAIHN0cnVjdCBydGVfY3J5cHRvX29wX3Bvb2xfcHJpdmF0ZSB7DQo+ICAJaWYgKGxpa2VseShv cC0+bWVtcG9vbCAhPSBOVUxMKSkgew0KPiAgCQlwcml2X3NpemUgPSBfX3J0ZV9jcnlwdG9fb3Bf Z2V0X3ByaXZfZGF0YV9zaXplKG9wLT5tZW1wb29sKTsNCj4gDQo+IC0JCWlmIChsaWtlbHkocHJp dl9zaXplID49IHNpemUpKQ0KPiAtCQkJcmV0dXJuICh2b2lkICopKCh1aW50OF90ICopKG9wICsg MSkgKw0KPiArCQlpZiAobGlrZWx5KHByaXZfc2l6ZSA+PSBzaXplKSkgew0KPiArCQkJaWYgKG9w LT50eXBlID09IFJURV9DUllQVE9fT1BfVFlQRV9TWU1NRVRSSUMpDQo+ICsJCQkJcmV0dXJuICh2 b2lkICopKCh1aW50OF90ICopKG9wICsgMSkgKw0KPiAgCQkJCQlzaXplb2Yoc3RydWN0IHJ0ZV9j cnlwdG9fc3ltX29wKSk7DQo+ICsJCQlpZiAob3AtPnR5cGUgPT0gUlRFX0NSWVBUT19PUF9UWVBF X0FTWU1NRVRSSUMpDQo+ICsJCQkJcmV0dXJuICh2b2lkICopKCh1aW50OF90ICopKG9wKzEpICsN Cj4gKwkJCQkJc2l6ZW9mKHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3ApKTsNCj4gKwkJfQ0KPiAg CX0NCj4gDQo+ICAJcmV0dXJuIE5VTEw7DQo+IEBAIC0zODgsNiArNDAzLDI0IEBAIHN0cnVjdCBy dGVfY3J5cHRvX29wX3Bvb2xfcHJpdmF0ZSB7DQo+ICAJcmV0dXJuIF9fcnRlX2NyeXB0b19zeW1f b3BfYXR0YWNoX3N5bV9zZXNzaW9uKG9wLT5zeW0sIHNlc3MpOw0KPiAgfQ0KPiANCj4gKy8qKg0K PiArICogQXR0YWNoIGEgYXN5bW1ldHJpYyBzZXNzaW9uIHRvIGEgY3J5cHRvIG9wZXJhdGlvbg0K PiArICoNCj4gKyAqIEBwYXJhbQlvcAljcnlwdG8gb3BlcmF0aW9uLCBtdXN0IGJlIG9mIHR5cGUg YXN5bW1ldHJpYw0KPiArICogQHBhcmFtCXNlc3MJY3J5cHRvZGV2IHNlc3Npb24NCj4gKyAqLw0K PiArc3RhdGljIGlubGluZSBpbnQNCj4gK3J0ZV9jcnlwdG9fb3BfYXR0YWNoX2FzeW1fc2Vzc2lv bihzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqb3AsDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2Fz eW1fc2Vzc2lvbiAqc2VzcykNCj4gK3sNCj4gKwlpZiAodW5saWtlbHkob3AtPnR5cGUgIT0gUlRF X0NSWVBUT19PUF9UWVBFX0FTWU1NRVRSSUMpKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwlv cC0+c2Vzc190eXBlID0gUlRFX0NSWVBUT19PUF9XSVRIX1NFU1NJT047DQo+ICsNCj4gKwlyZXR1 cm4gX19ydGVfY3J5cHRvX29wX2F0dGFjaF9hc3ltX3Nlc3Npb24ob3AtPmFzeW0sIHNlc3MpOw0K PiArfQ0KPiArDQo+ICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gIH0NCj4gICNlbmRpZg0KPiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b19hc3ltLmggYi9saWIvbGli cnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2FzeW0uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwLi4yN2NhZjU1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xp YnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b19hc3ltLmgNCj4gQEAgLTAsMCArMSw5NDkgQEANCj4g Ky8qDQo+ICsgKiAgIEJTRCBMSUNFTlNFDQo+ICsgKg0KW0Zpb25hXSBVc2UgU1BEWCBsaWNlbnNl DQoNCj4gKyAqICAgQ29weXJpZ2h0IChDKSBDYXZpdW0gbmV0d29ya3MgTHRkLiAyMDE3Lg0KPiAr ICoNCj4gKyAqICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ICsgKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiArICogICBhcmUgbWV0 Og0KPiArICoNCj4gKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsgKiAgICAg KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodA0KPiArICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluDQo+ICsgKiAgICAgICB0aGUgZG9jdW1lbnRh dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgKiAgICAg ICBkaXN0cmlidXRpb24uDQo+ICsgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIENhdml1bSBO ZXR3b3JrcyBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArICogICAgICAgY29udHJpYnV0b3JzIG1h eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsgKiAg ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl cm1pc3Npb24uDQo+ICsgKg0KPiArICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQo+ICsgKiAgICJBUyBJUyIgQU5E IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQo+ ICsgKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUg0KPiArICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KPiArICogICBPV05FUiBP UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwNCj4gKyAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUIE5PVA0KPiArICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCj4gKyAqICAgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZDQo+ICsgKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCj4gKyAqICAgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsg KiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfUlRFX0NSWVBUT19BU1lN X0hfDQo+ICsjZGVmaW5lIF9SVEVfQ1JZUFRPX0FTWU1fSF8NCj4gKw0KPiArLyoqDQo+ICsgKiBA ZmlsZSBydGVfY3J5cHRvX2FzeW0uaA0KPiArICoNCj4gKyAqIFJURSBEZWZpbml0aW9ucyBmb3Ig QXN5bW1ldHJpYyBDcnlwdG9ncmFwaHkNCj4gKyAqDQo+ICsgKiBEZWZpbmVzIGFzeW1tZXRyaWMg YWxnb3JpdGhtcyBhbmQgbW9kZXMsIGFzIHdlbGwgYXMgc3VwcG9ydGVkDQo+ICsgKiBhc3ltbWV0 cmljIGNyeXB0byBvcGVyYXRpb25zLg0KPiArICovDQo+ICsNCj4gKyNpZmRlZiBfX2NwbHVzcGx1 cw0KPiArZXh0ZXJuICJDIiB7DQo+ICsjZW5kaWYNCj4gKw0KPiArI2luY2x1ZGUgPHN0cmluZy5o Pg0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tYnVmLmg+DQo+ICsj aW5jbHVkZSA8cnRlX21lbW9yeS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tZW1wb29sLmg+DQo+ICsj aW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBydGVfY3J5cHRv X3hmb3JtX3BhcmFtX3Qgew0KPiArCXVpbnQ4X3QgKmRhdGE7DQo+ICsJcGh5c19hZGRyX3QgcGh5 c19hZGRyOw0KW0Zpb25hXSBVc2UgaW92YQ0KDQo+ICsJc2l6ZV90IGxlbmd0aDsNCj4gK30gcnRl X2NyeXB0b194Zm9ybV9wYXJhbTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgcnRlX2NyeXB0b19v cF9wYXJhbV90IHsNCj4gKwl1aW50OF90ICpkYXRhOw0KPiArCXBoeXNfYWRkcl90IHBoeXNfYWRk cjsNCj4gKwlzaXplX3QgbGVuZ3RoOw0KPiArfSBydGVfY3J5cHRvX29wX3BhcmFtOw0KPiArDQpb RmlvbmFdICBzcGVjaWZ5IHRoYXQgYWJvdmUgbGVuZ3RocyBhcmUgYnl0ZXMgLSBhc3ltIHVzZXMg Yml0IGxlbmd0aHMgaW4gc29tZSBjb250ZXh0cy4NCkFib3ZlIHN0cnVjdHMgYXJlIGlkZW50aWNh bCAtIHdoeSBub3QgdXNlIGEgc2luZ2xlIHN0cnVjdD8gDQpydGVfY3J5cHRvX3BhcmFtX3QNCg0K bWVudGlvbiANCj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtYXRpb24g dHlwZXMuDQo+ICsgKiBFYWNoIHhmb3JtIHR5cGUgbWFwcyB0byBvbmUgYXN5bW1ldHJpYyBhbGdv cml0aG0NCj4gKyAqIHBlcmZvcm1pbmcgc3BlY2lmaWMgb3BlcmF0aW9uDQo+ICsgKg0KPiArICov DQo+ICtlbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlIHsNCj4gKwlSVEVfQ1JZUFRPX0FT WU1fWEZPUk1fTk9ORSA9IDAsDQo+ICsJLyoqPCBYZm9ybSB0eXBlIE5vbmUuIE1heSBiZSBzdXBw b3J0ZWQgYnkNCj4gKwkgKiBQTUQgdG8gc3VwcG9ydCBwYXNzdGhyb3VnaCBvcCBmb3IgZGVidWdn aW5nDQo+ICsJICogcHVycG9zZS4NCj4gKwkgKiBpZiB4Zm9ybV90eXBlIG5vbmUgLCBvcF90eXBl IGlzIGRpc3JlZ2FyZGVkLg0KPiArCSAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9SU0Es DQo+ICsJLyoqPCBSU0EuIFBlcmZvcm1zIEVuY3J5cHQsIERlY3J5cHQsIFNpZ24gYW5kIFZlcmlm eQ0KPiArCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlDQo+ICsJICovDQo+ICsJ UlRFX0NSWVBUT19BU1lNX1hGT1JNX01PREVYLA0KPiArCS8qKjwgTW9kdWxhciBFeHBvbmVudGlh dGlvbg0KPiArCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlDQo+ICsJICovDQo+ ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RILA0KPiArCS8qKjwgRGVmZmllLUhlbGxtYW4uIFBl cmZvcm0gS2V5IEdlbmVyYXRlLCBLZXkgQ29tcHV0ZQ0KPiArCSAqIFJlZmVyIHRvIHJ0ZV9jcnlw dG9fYXN5bV9vcF90eXBlDQo+ICsJICovDQo+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0VDREgs DQo+ICsJLyoqPCBFbGxpcHRpYyBDdXJ2ZSBEZWZmaWUtSGVsbG1hbi4NCj4gKwkgKiBQZXJmb3Jt IEtleSBHZW5lYXJhdGUsIEtleSBDaGVjayBhbmQgS2V5IENvbXB1dGUNCltGaW9uYV0gdHlwbzog Z2VuZXJhdGUNCg0KPiArCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlDQo+ICsJ ICovDQo+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RTQSwNCj4gKwkvKio8IERpZ2l0YWwgU2ln bmF0dXJlIEFsZ29yaXRobQ0KPiArCSAqIFBlcmZvcm1zIFNpZ25hdHVyZSB2ZXJpZmljYXRpb24g YW5kIEdlbmVyYXRpb24NCj4gKwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZQ0K PiArCSAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9FQ0RTQSwNCj4gKwkvKio8IEVsbGlw dGljIEN1cnZlIERpZ2l0YWwgU2lnbmF0dXJlIEFsZ29yaXRobS4NCj4gKwkgKiBQZXJmb3JtcyBT aWduYXR1cmUgR2VuZXJhdGlvbiwgYW5kIFZlcmlmaWNhdGlvbi4NCj4gKwkgKiBSZWZlciB0byBy dGVfY3J5cHRvX2FzeW1fb3BfdHlwZQ0KPiArCSAqLw0KW0Zpb25hXSB0eXBvIGluIGJvdGggYWJv dmU6IFNpZ25hdHVyZSBHZW5lcmF0aW9uIGFuZCBWZXJpZmljYXRpb24NCg0KPiArCVJURV9DUllQ VE9fQVNZTV9YRk9STV9GRUNDLA0KPiArCS8qKjwgRnVuZGFtZW50YWwgRWxsaXB0aWMgY3VydmUg b3BlcmF0aW9ucy4NCj4gKwkgKiBQZXJmb3JtIGVsbGlwdGljIGN1cnZlIG9wZXJhdGlvbjoNCj4g KwkgKiBhZGQsIGRvdWJsZSBwb2ludCwgbXVsdGlwbGljYXRpb24NCj4gKwkgKiBSZWZlciB0byBl bnVtIHJ0ZV9jcnlwdG9fZmVjY19vcHR5cGUNCj4gKwkgKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fTU9ESU5WLA0KPiArCS8qKjwgTW9kdWxhciBJbnZlcnNlICovDQpbRmlvbmFdIHdvdWxk IGJlIG5pY2VyIHRvIGdyb3VwIG1vZGludiB3aXRoIG1vZGV4cA0KDQo+ICsJUlRFX0NSWVBUT19B U1lNX1hGT1JNX1RZUEVfTElTVF9FTkQNCj4gKwkvKio8IEVuZCBvZiBsaXN0ICovDQo+ICt9Ow0K PiArDQo+ICsvKioNCj4gKyAqIEFzeW1tZXRyaWMgY3J5cHRvZ3Igb3BlcmF0aW9uIHR5cGUgdmFy aWFudHMNCltGaW9uYV0gdHlwbzogVXNlIGNyeXB0byBvciBjcnlwdG9ncmFwaGljDQoNCj4gKyAq Lw0KPiArZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZSB7DQo+ICsJUlRFX0NSWVBUT19BU1lN X09QX05PVF9TUEVDSUZJRUQgPSAxLA0KW0Zpb25hXSBXaHkgZG9lcyB0aGlzIHN0YXJ0IGF0IDE/ DQpBbmQgaXMgaXQgbmVjZXNzYXJ5Pw0KDQo+ICsJLyoqPCBPcGVyYXRpb24gdW5zcGVjaWZpZWQg Ki8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfRU5DUllQVCwNCj4gKwkvKio8IEFzeW1tZXRyaWMg ZW5jcnlwdCBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfREVDUllQVCwNCj4g KwkvKio8IEFzeW1tZXRyaWMgRGVjcnlwdCBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0FT WU1fT1BfU0lHTiwNCj4gKwkvKio8IFNpZ25hdHVyZSBnZW5lcmF0aW9uIG9wZXJhdGlvbiAqLw0K PiArCVJURV9DUllQVE9fQVNZTV9PUF9WRVJJRlksDQo+ICsJLyoqPCBTaWduYXR1cmUgdmVyaWZp Y2F0aW9uIG9wZXJhdGlvbiAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9PUF9LRVlfUEFJUl9HRU5F UkFUSU9OLA0KPiArCS8qKjwgUHVibGljL1ByaXZhdGUga2V5IHBhaXIgZ2VuZXJhdGlvbiBvcGVy YXRpb24gKi8NCltGaW9uYV0gSW4gdGhlIGNvbW1lbnQsIGNsYXJpZnkgdGhhdCB0aGlzIGlzIGZv ciBESCBhbmQgRUNESCwgYW5kIGZvciB0aGUNCiBnZW5lcmF0aW9uIG9mIHRoZSBwdWJsaWMga2V5 IChhbmQgb3B0aW9uYWxseSB0aGUgcHJpdmF0ZSBrZXk/KQ0KDQo+ICsJUlRFX0NSWVBUT19BU1lN X09QX1NIQVJFRF9LRVlfQ09NUFVUQVRJT04sDQo+ICsJLyoqPCBESCBwcml2YXRlIGtleSBjb21w dXRhdGlvbiBvcGVyYXRpb24gKi8NCltGaW9uYV0gSW4gdGhlIGNvbW1lbnQsIHJlcGxhY2UgInBy aXZhdGUga2V5IiB3aXRoICJzaGFyZWQgc2VjcmV0IGtleSIuIA0KQWxzbyBjbGFyaWZ5IHRoYXQg dGhpcyBpcyBmb3IgYm90aCBESCBhbmQgRUNESA0KIA0KPiArCVJURV9DUllQVE9fQVNZTV9PUF9F Q0RIX09QX0tFWV9DSEVDSywNCj4gKwkvKio8IEVDREggcHVibGljIGtleSB2YWxpZGl0eSBjaGVj ayBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfTElTVF9FTkQNCj4gK307DQo+ ICsNCj4gKy8qKg0KPiArICogUGFkZGluZyB0eXBlcyBmb3IgUlNBIHNpZ25hdHVyZS4NCj4gKyAq Lw0KPiArZW51bSBydGVfY3J5cHRvX3JzYV9wYWRkaW5nX3R5cGUgew0KPiArCVJURV9DUllQVE9f UlNBX1BBRERJTkdfTk9UX1NQRUNJRklFRCA9IDEsDQo+ICsJLyoqPCBSU0Egbm8gcGFkZGluZyBz Y2hlbWUgKi8NCj4gKwlSVEVfQ1JZUFRPX1JTQV9QQURESU5HX0JUMSwNCj4gKwkvKio8IFJTQSBQ S0NTIzEgcGFkZGluZyBCVDEgc2NoZW1lICovDQo+ICsJUlRFX0NSWVBUT19SU0FfUEFERElOR19C VDIsDQo+ICsJLyoqPCBSU0EgUEtDUyMxIHBhZGRpbmcgQlQyIHNjaGVtZSAqLw0KW0Zpb25hXSBJ biB0aGUgbmFtZSwgSSB3b3VsZCBhZGQgX1BLQ1MxX1YxLjVfLCB0byBtYWtlIHRoaXMgY2xlYXJl ci4gQWxzbyBpbiB0aGUgY29tbWVudCwgY2xhcmlmeSB0aGF0IEJUIGlzDQpmb3IgImJsb2NrIHR5 cGUiLiBBbHNvIGNsYXJpZnkgaG93IHRoZXNlIG1hcCB0byB0aGUgYmxvY2sgdHlwZSBpbiBQS0NT IzEgdjEuNQ0KKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMzEzKSwgd2hpY2ggc3Bl Y2lmaWVzIHRocmVlIHZhbHVlcyBmb3IgYmxvY2sgdHlwZS4NCg0KPiArCVJURV9DUllQVE9fUlNB X1BBRERJTkdfT0FFUCwNCj4gKwkvKio8IFJTQSBQS0NTIzEgT0FFUCBwYWRkaW5nIHNjaGVtZSAq Lw0KPiArCVJURV9DUllQVE9fUlNBX1BBRERJTkdfUFNTLA0KPiArCS8qKjwgUlNBIFBLQ1MjMSBQ U1MgcGFkZGluZyBzY2hlbWUgKi8NCj4gKwlSVEVfQ1JZUFRPX1JTQV9QQURESU5HX1RZUEVfTElT VF9FTkQNCj4gK307DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgKiBGdW5kYW1lbnRhbCBFQ0Mgb3Bl cmF0aW9uIHR5cGUgdmFyaWFudHMuDQo+ICsgKi8NCj4gK2VudW0gcnRlX2NyeXB0b19mZWNjX29w dHlwZSB7DQo+ICsJUlRFX0NSWVBUT19GRUNDX09QX05PVF9TUEVDSUZJRUQgPSAxLA0KPiArCS8q KjwgRkVDQyBvcGVyYXRpb24gdHlwZSB1bnNwZWNpZmllZCAqLw0KW0Zpb25hXSBhcyBhYm92ZS4g V2h5IDE/IEFuZCBpcyBpdCBuZWVkZWQ/DQoNCj4gKwlSVEVfQ1JZUFRPX0ZFQ0NfT1BfUE9JTlRf QURELA0KPiArCS8qKjwgRnVuZGFtZW50YWwgRUNDIHBvaW50IGFkZGl0aW9uIG9wZXJhdGlvbiAq Lw0KPiArCVJURV9DUllQVE9fRkVDQ19PUF9QT0lOVF9EQkwsDQo+ICsJLyoqPCBGdW5kYW1lbnRh bCBFQ0MgcG9pbnQgZG91Ymxpbmcgb3BlcmF0aW9uICovDQo+ICsJUlRFX0NSWVBUT19GRUNDX09Q X1BPSU5UX01VTFRJUExZLA0KPiArCS8qKjwgRnVuZGFtZW50YWwgRUNDIHBvaW50IG11bHRpcGxp Y2F0aW9uIG9wZXJhdGlvbiAqLw0KPiArCVJURV9DUllQVE9fRkVDQ19PUF9MSVNUX0VORA0KPiAr fTsNCj4gKw0KPiArI2RlZmluZSBSVEVfQ1JZUFRPX0VDX0NVUlZFX05PVF9TUEVDSUZJRUQgIC0x DQpbRmlvbmFdIFdvdWxkbid0IGl0IGJlIGJldHRlciB0byBwdXQgdGhpcyBiYWNrIGluIGFzIHRo ZSBpbml0aWFsIHZhbHVlIGluIHRoZSBlbnVtIGFzIG9yaWdpbmFsbHkgZG9uZT8NCkVsc2Ugd2ls bCB0aGVyZSBub3QgYmUgYSBjb21waWxlciB3YXJuaW5nIGlmIGEgcGFyYW0gb2YgdGhhdCBlbnVt IHR5cGUgaXMgDQppbml0aWFsaXNlZCB0byBhYm92ZSAjZGVmaW5lPw0KQW5kIGFyZSBfQklOQVJZ IGFuZCBfUFJJTUUgdmFsdWVzIG5lZWRlZCBpbiB0aGlzIGNhc2U/DQoNCj4gKy8qKg0KPiArICog RUNDIGxpc3Qgb2YgY3VydmVzLg0KPiArICovDQo+ICtlbnVtIHJ0ZV9jcnlwdG9fZWNfcHJpbWVf Y3VydmUgew0KPiArCS8qKjwgVW5zcGVjaWZpZWQgb3IgZW1wdHkgY3VydmUgaWQgKi8NCltGaW9u YV0gUmVtb3ZlIHN0cmF5IGNvbW1lbnQNCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3AxMTJy MSwNCj4gKwkvKio8IFNFQ0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMTEyIGJpdCBwcmltZSBmaWVsZCAq Lw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDExMnIyLA0KPiArCS8qKjwgU0VDRyBjdXJ2 ZSBvdmVyIGEgMTEyIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVf c2VjcDEyOHIxLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTI4IGJpdCBwcmltZSBmaWVs ZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDEyOHIyLA0KPiArCS8qKjwgU0VDRyBj dXJ2ZSBvdmVyIGEgMTI4IGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VS VkVfc2VjcDE2MGsxLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBm aWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDE2MHIxLA0KPiArCS8qKjwgU0VD RyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNf Q1VSVkVfc2VjcDE2MHIyLA0KPiArCS8qKjwgU0VDRy9XVExTIGN1cnZlIG92ZXIgYSAxNjAgYml0 IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTkyazEsDQo+ICsJ LyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxOTIgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NS WVBUT19FQ19DVVJWRV9zZWNwMjI0azEsDQo+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyMjQg Yml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMjI0cjEsDQo+ ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCj4g KwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3AyNTZrMSwNCj4gKwkvKio8IFNFQ0cgY3VydmUgb3Zl ciBhIDI1NiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3Az ODRyMSwNCj4gKwkvKio8IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVs ZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDUyMXIxLA0KPiArCS8qKjwgTklTVC9T RUNHIGN1cnZlIG92ZXIgYSA1MjEgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV9wcmltZTE5MnYxLA0KPiArCS8qKjwgTklTVC9YOS42Mi9TRUNHIGN1cnZlIG92ZXIg YSAxOTIgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTE5 MnYyLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5MiBiaXQgcHJpbWUgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3ByaW1lMTkydjMsDQo+ICsJLyoqPCBYOS42MiBjdXJ2 ZSBvdmVyIGEgMTkyIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVf cHJpbWUyMzl2MSwNCj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAyMzkgYml0IHByaW1lIGZp ZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTIzOXYyLA0KPiArCS8qKjwgWDku NjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VD X0NVUlZFX3ByaW1lMjM5djMsDQo+ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMjM5IGJpdCBw cmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfcHJpbWUyNTZ2MSwNCj4gKwkv Kio8IFg5LjYyL1NFQ0cgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlS VEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczYsDQo+ICsJLyoqPCBTRUNH L1dUTFMgY3VydmUgb3ZlciBhIDExMiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczcsDQo+ICsJLyoqPCBTRUNHL1dUTFMgY3Vy dmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X3dhcF93c2dfaWRtX2VjaWRfd3RsczgsDQo+ICsJLyoqPCBXVExTIGN1cnZlIG92ZXIgYSAxMTIg Yml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV93YXBfd3NnX2lkbV9l Y2lkX3d0bHM5LA0KPiArCS8qKjwgV1RMUyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVs ZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzMTIsDQo+ ICsJLyoqPCBXVExTIGN1cnZlIG92ZXIgYSAyMjQgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMTYwcjEsDQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2 ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVf YnJhaW5wb29sUDE2MHQxLA0KPiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE2MCBiaXQg cHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2JyYWlucG9vbFAxOTJyMSwN Cj4gKwkvKio8IFJGQyA1NjM5IGN1cnZlIG92ZXIgYSAxOTIgYml0IHByaW1lIGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMTkydDEsDQo+ICsJLyoqPCBSRkMgNTYz OSBjdXJ2ZSBvdmVyIGEgMTkyIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNf Q1VSVkVfYnJhaW5wb29sUDIyNHIxLA0KPiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDIy NCBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2JyYWlucG9vbFAy MjR0MSwNCj4gKwkvKio8IFJGQyA1NjM5IGN1cnZlIG92ZXIgYSAyMjQgYml0IHByaW1lIGZpZWxk ICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjU2cjEsDQo+ICsJLyoqPCBS RkMgNTYzOSBjdXJ2ZSBvdmVyIGEgMjU2IGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQ VE9fRUNfQ1VSVkVfYnJhaW5wb29sUDI1NnQxLA0KPiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3Zl ciBhIDI1NiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2JyYWlu cG9vbFAzMjByMSwNCj4gKwkvKio8IFJGQyA1NjM5IGN1cnZlIG92ZXIgYSAzMjAgYml0IHByaW1l IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMzIwdDEsDQo+ICsJ LyoqPCBSRkMgNTYzOSBjdXJ2ZSBvdmVyIGEgMzIwIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJU RV9DUllQVE9fRUNfQ1VSVkVfYnJhaW5wb29sUDM4NHIxLA0KPiArCS8qKjwgUkZDIDU2MzkgY3Vy dmUgb3ZlciBhIDM4NCBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X2JyYWlucG9vbFAzODR0MSwNCj4gKwkvKio8IFJGQyA1NjM5IGN1cnZlIG92ZXIgYSAzODQgYml0 IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQNTEycjEs DQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2ZSBvdmVyIGEgNTEyIGJpdCBwcmltZSBmaWVsZCAqLw0K PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYnJhaW5wb29sUDUxMnQxLA0KPiArCS8qKjwgUkZDIDU2 MzkgY3VydmUgb3ZlciBhIDUxMiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VD X0NVUlZFX3gyNTUxOSwNCj4gKwkvKio8IEN1cnZlIDI1NTE5ICovDQo+ICsJUlRFX0NSWVBUT19F Q19QQ1VSVkVfTElTVF9FTkQNCj4gK307DQo+ICsNCj4gK2VudW0gcnRlX2NyeXB0b19lY19iaW5h cnlfY3VydmUgew0KPiArCS8qKjwgVW5zcGVjaWZpZWQgb3IgZW1wdHkgY3VydmUgaWQgKi8NCltG aW9uYV0gcmVtb3ZlIHN0cmF5IGNvbW1lbnQNCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3Qx MTNyMSwNCj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDExMyBiaXQgYmluYXJ5IGZpZWxkICov DQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MTEzcjIsDQo+ICsJLyoqPCBTRUNHIGN1cnZl IG92ZXIgYSAxMTMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVf c2VjdDEzMXIxLA0KPiArCS8qKjwgU0VDRy9XVExTIGN1cnZlIG92ZXIgYSAxMzEgYml0IGJpbmFy eSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDEzMXIyLA0KPiArCS8qKjwg U0VDRyBjdXJ2ZSBvdmVyIGEgMTMxIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3NlY3QxNjNrMSwNCj4gKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZlIG92ZXIg YSAxNjMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDE2 M3IxLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QxNjNyMiwNCj4gKwkvKio8IE5JU1QvU0VDRyBj dXJ2ZSBvdmVyIGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NV UlZFX3NlY3QxOTNyMSwNCj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDE5MyBiaXQgYmluYXJ5 IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MTkzcjIsDQo+ICsJLyoqPCBT RUNHIGN1cnZlIG92ZXIgYSAxOTMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9f RUNfQ1VSVkVfc2VjdDIzM2sxLA0KPiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBh IDIzMyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MjMz cjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMjMzIGJpdCBiaW5hcnkg ZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QyMzlrMSwNCj4gKwkvKio8IFNF Q0cgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV9zZWN0MjgzazEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDI4MyBi aXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MjgzcjEsDQo+ ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDI4MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0NDA5azEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3Vy dmUgb3ZlciBhIDQwOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9zZWN0NDA5cjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDQwOSBiaXQgYmlu YXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0NTcxazEsDQo+ICsJLyoq PCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDU3MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9zZWN0NTcxcjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3Zl ciBhIDU3MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBu YjE2M3YxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxk ICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE2M3YyLA0KPiArCS8qKjwgWDkuNjIg Y3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19D VVJWRV9jMnBuYjE2M3YzLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmlu YXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE3NnYxLA0KPiArCS8q KjwgWDkuNjIgY3VydmUgb3ZlciBhIDE3NiBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NS WVBUT19FQ19DVVJWRV9jMnRuYjE5MXYxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5 MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjE5MXYy LA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjE5MXYzLA0KPiArCS8qKjwgWDkuNjIgY3VydmUg b3ZlciBhIDE5MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9j MnBuYjIwOHcxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIwOCBiaXQgYmluYXJ5IGZp ZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjIzOXYxLA0KPiArCS8qKjwgWDku NjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV9jMnRuYjIzOXYyLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQg YmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjIzOXYzLA0KPiAr CS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9jMnBuYjI3MncxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBh IDI3MiBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjMw NHcxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDMwNCBiaXQgYmluYXJ5IGZpZWxkICov DQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjM1OXYxLA0KPiArCS8qKjwgWDkuNjIgY3Vy dmUgb3ZlciBhIDM1OSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9jMnBuYjM2OHcxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDM2OCBiaXQgYmluYXJ5 IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjQzMXIxLA0KPiArCS8qKjwg WDkuNjIgY3VydmUgb3ZlciBhIDQzMSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBU T19FQ19DVVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHMxLA0KPiArCS8qKjwgV1RMUyBjdXJ2ZSBv dmVyIGEgMTEzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dh cF93c2dfaWRtX2VjaWRfd3RsczMsDQo+ICsJLyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVy IGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93 c2dfaWRtX2VjaWRfd3RsczQsDQo+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxMTMgYml0IGJp bmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93 dGxzNSwNCj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxNjMgYml0IGJpbmFyeSBmaWVsZCAq Lw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzMTAsDQo+ICsJ LyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMjMzIGJpdCBiaW5hcnkgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczExLA0KPiArCS8q KjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19CQ1VSVkVfTElTVF9FTkQNCj4gK307DQpbRmlvbmFdIERvIHdlIHJl YWxseSB3YW50IHRvIHNwZWNpZnkgY3VydmVzIDwgMjI0IGJpdHM/IEV2ZW4gMjI0IGlzIHdvZWZ1 bGx5IGluc2VjdXJlIHRoZXNlIGRheXMuDQpBbHNvIGRvIHdlIHdhbnQgdG8gbGlzdCBhbGwgInB1 Ymxpc2hlZCIgY3VydmVzLCBvciBhbGxvdyBjdXN0b21lcnMgdG8gc3BlY2lmeSANCnRoZWlyIG93 biBjdXJ2ZSBwYXJhbWV0ZXJzLCBhdCBsZWFzdCBvbiB0aGUgRkVDQyBBUEk/IEFkZGluZyBhbiBB UEkgdG8gc3BlY2lmeSBhIGN1cnZlIHdpdGgNCml0cyBwYXJhbXMgd291bGQgYWxsb3cgbmV3IGN1 cnZlcyB0byBiZSB1c2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBBUEkgYW5kDQp3b3VsZCBhdm9p ZCB0aGUgbmVlZCBmb3Igc3VjaCBhbiBleHRlbnNpdmUgbGlzdC4NCkRvIHdlIG5lZWQgYSAiY2Fw YWJpbGl0aWVzIiBtYXNrIHRvIHNheSB3aGljaCBjdXJ2ZXMgYXJlIHN1cHBvcnRlZCBieSBhIGRl dmljZT8NCldoYXQgYWJvdXQgU00yPw0KDQo+ICsvKioNCj4gKyAqIEVsbGlwdGljIGN1cnZlIHBv aW50IGZvcm1hdA0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCB7DQo+ICsJ c3RydWN0IHsNCj4gKwkJaW50IGxlbmd0aDsNCj4gKwkJdWludDhfdCAqZGF0YTsNCj4gKwkJcGh5 c19hZGRyX3QgcGh5c19hZGRyOw0KPiArCQkvKio8IHBoeXNfYWRkciBpcyB1c2VkIG9ubHkgZm9y IHBvaW50cyBwYXNzZWQgaW4gdGhlDQo+ICsJCSAqIGFzeW1fb3Agc3RydWN0dXJlLg0KPiArCQkg Ki8NCj4gKwl9IHg7DQo+ICsJLyoqPCBYIGNvLW9yZGluYXRlICovDQo+ICsNCltGaW9uYV0gSWYg Z2VuZXJpYyBydGVfY3J5cHRvX3BhcmFtX3QgaXMgZGVmaW5lZCB0aGVuIGl0IGNvdWxkIGJlIHVz ZWQgaGVyZSB0b28uDQoNCj4gKwlzdHJ1Y3Qgew0KPiArCQlpbnQgbGVuZ3RoOw0KPiArCQl1aW50 OF90ICpkYXRhOw0KPiArCQlwaHlzX2FkZHJfdCBwaHlzX2FkZHI7DQo+ICsJCS8qKjwgcGh5c19h ZGRyIGlzIHVzZWQgb25seSBmb3IgcG9pbnRzIHBhc3NlZCBpbiB0aGUNCj4gKwkJICogb3BlcmF0 aW9uIHN0cnVjdHVyZQ0KPiArCQkgKi8NCj4gKwl9IHk7DQo+ICsJLyoqPCBZIGNvLW9yZGluYXRl ICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEVsbGlwdGljIGN1cnZlIHR5cGUNCj4gKyAq Lw0KPiArZW51bSBydGVfY3J5cHRvX2VjX2N1cnZlX3R5cGUgew0KPiArCVJURV9DUllQVE9fRUNf Q1VSVkVfVFlQRV9VTkRFRklORUQsDQo+ICsJLyoqPCBDdXJ2ZSB0eXBlIHVuZGVmaW5lZCAqLw0K PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfVFlQRV9QUklNRV9GSUVMRCwNCj4gKwkvKio8IEVDIGN1 cnZlIGRlZmluZWQgb3ZlciBhIHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9UWVBFX0JJTkFSWV9GSUVMRCwNCj4gKwkvKio8IEVDIGN1cnZlIGRlZmluZWQgb3ZlciBhIGJp bmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfTElTVF9FTkQNCj4gK307DQo+ ICsNCj4gKy8qKiBhc3ltIHhmb3JtIHR5cGUgbmFtZSBzdHJpbmdzICovDQo+ICtleHRlcm4gY29u c3QgY2hhciAqDQo+ICtydGVfY3J5cHRvX2FzeW1feGZvcm1fc3RyaW5nc1tdOw0KPiArDQo+ICsv KiogYXN5bSBvcGVyYXRpb25zIHR5cGUgbmFtZSBzdHJpbmdzICovDQo+ICtleHRlcm4gY29uc3Qg Y2hhciAqDQo+ICtydGVfY3J5cHRvX2FzeW1fb3Bfc3RyaW5nc1tdOw0KPiArDQo+ICsvKioNCj4g KyAqIEVsbGlwdGljIGN1cnZlIGlkDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvX2VjX2N1 cnZlX2lkIHsNCj4gKwlSVEVfU1REX0MxMQ0KPiArCXVuaW9uIHsNCj4gKwkJZW51bSBydGVfY3J5 cHRvX2VjX3ByaW1lX2N1cnZlIHBjdXJ2ZTsNCj4gKwkJZW51bSBydGVfY3J5cHRvX2VjX2JpbmFy eV9jdXJ2ZSBiY3VydmU7DQo+ICsJfTsNCj4gK307DQpbRmlvbmFdIEJlY2F1c2UgdGhlIHZhbHVl cyBvZiB0aGVzZSB0d28gZW51bXMgb3ZlcmxhcCwgaWYgeW91IHNwZWNpZnkgdGhlIGN1cnZlIHR5 cGUgaW5jb3JyZWN0bHksIHlvdSdsbCBzdGlsbA0KaGF2ZSBhIHBvdGVudGlhbGx5IHZhbGlkIGN1 cnZlIGVudW0gc3BlY2lmaWVkLiBJIHN1Z2dlc3QgaXQncyBzYWZlciB0byBpbmNsdWRlIHRoZSB0 eXBlIGhlcmUgd2l0aCB0aGUgdW5pb24sDQpyYXRoZXIgdGhhbiBpbiB0aGUgd3JhcHBlciB4Zm9y bSBzdHJ1Y3QsIGkuZS4gDQpzdHJ1Y3QgcnRlX2NyeXB0b19lY19jdXJ2ZSB7DQoJZW51bSBydGVf Y3J5cHRvX2VjX2N1cnZlX3R5cGUgY3VydmVfdHlwZTsNCgkvKio8IGN1cnZlIHR5cGU6IFByaW1l IHZzIEJpbmFyeSAqLw0KCXVuaW9uIHsNCgllbnVtIHJ0ZV9jcnlwdG9fZWNfcHJpbWVfY3VydmUg cGN1cnZlX2lkOw0KCWVudW0gcnRlX2NyeXB0b19lY19iaW5hcnlfY3VydmUgYmN1cnZlX2lkOw0K CX07DQp9Ow0KPiArLyoqDQo+ICsgKiBBc3ltbWV0cmljIFJTQSB0cmFuc2Zvcm0gZGF0YQ0KPiAr ICoNCj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9y bSBSU0EgY3J5cHRvDQo+ICsgKiB0cmFuc2Zvcm0uDQo+ICsgKg0KPiArICovDQo+ICtzdHJ1Y3Qg cnRlX2NyeXB0b19yc2FfeGZvcm0gew0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBu Ow0KPiArCS8qKjwgbiAtIFByaW1lIG1vZHVsdXMNCj4gKwkgKiBQcmltZSBtb2R1bHVzIGRhdGEg b2YgUlNBIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yaw0KPiArCSAqIGJ5dGUgb3Jk ZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBlOw0K PiArCS8qKjwgZSAtIFB1YmxpYyBrZXkgZXhwb25lbnQNCj4gKwkgKiBQdWJsaWMga2V5IGV4cG9u ZW50IHVzZWQgZm9yIFJTQSBwdWJsaWMga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtDQo+ICsJICog c3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsNCj4gKwlydGVf Y3J5cHRvX3hmb3JtX3BhcmFtIGQ7DQo+ICsJLyoqPCBkIC0gUHJpdmF0ZSBrZXkgZXhwb25lbnQN Cj4gKwkgKiBQcml2YXRlIGtleSBleHBvbmVudCB1c2VkIGZvciBSU0EgcHJpdmF0ZSBrZXkgb3Bl cmF0aW9ucyBpbg0KPiArCSAqIE9jdGV0LXN0cmluZyAgbmV0d29yayBieXRlIG9yZGVyIGZvcm1h dC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcDsNCj4gKwkvKio8 IHAgLSBQcml2YXRlIGtleSBjb21wb25lbnQgUA0KPiArCSAqIFByaXZhdGUga2V5IGNvbXBvbmVu dCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0KPiArCSAqIG9mIHBy aXZhdGUga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0K PiArCSAqIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0g cTsNCj4gKwkvKio8IHEgLSBQcml2YXRlIGtleSBjb21wb25lbnQgUQ0KPiArCSAqIFByaXZhdGUg a2V5IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0K PiArCSAqIG9mIHByaXZhdGUga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsg Ynl0ZSBvcmRlcg0KPiArCSAqIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9f eGZvcm1fcGFyYW0gZFA7DQo+ICsJLyoqPCBkUCAtIFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KPiAr CSAqIFByaXZhdGUgQ1JUIGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3Ig Q1JUIG1ldGhvZA0KPiArCSAqIFJTQSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0 cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4gKwkgKiBmb3JtYXQuDQo+ICsJICogZFAgPSBkIG1v ZCAoIHAgLSAxICkNCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZFE7 DQo+ICsJLyoqPCBkUSAtIFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KPiArCSAqIFByaXZhdGUgQ1JU IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0KPiAr CSAqIFJTQSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5 dGUgb3JkZXINCj4gKwkgKiBmb3JtYXQuDQo+ICsJICogZFEgPSBkIG1vZCAoIHEgLSAxICkNCj4g KwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcUludjsNCj4gKwkvKio8IHFJ bnYgLSBQcml2YXRlIENSVCBjb21wb25lbnQNCj4gKwkgKiBQcml2YXRlIENSVCBjb21wb25lbnQg b2YgUlNBIHBhcmFtZXRlciAgcmVxdWlyZWQgZm9yIENSVCBtZXRob2QNCj4gKwkgKiBSU0EgcHJp dmF0ZSBrZXkgb3BlcmF0aW9ucyBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+ ICsJICogZm9ybWF0Lg0KPiArCSAqIHFJbnYgPSBpbnYgcSBtb2QgcA0KPiArCSAqLw0KPiArfTsN CltGaW9uYV0gVGhpcyBhbGxvd3MgYm90aCByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHByaXZhdGUg a2V5IHRvIGJlIHNwZWNpZmllZA0Kd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgY29uZnVzaW9uIGlm IGJvdGggYXJlIHNwZWNpZmllZC4NCldvdWxkIGl0IGJlIGJldHRlciB0byBoYXZlIGEgdW5pb24g b2YgMiBkaWZmZXJlbnQgc3RydWN0dXJlcywgb25lIHdpdGgge24sZH0gYW5kIA0KdGhlIG90aGVy IHdpdGgge3AscSxkUCxkUSxxSW52fT8NCg0KPiArLyoqDQo+ICsgKiBBc3ltbWV0cmljIE1vZHVs YXIgZXhwb25lbnRpYXRpb24gdHJhbnNmb3JtIGRhdGENCj4gKyAqDQo+ICsgKiBUaGlzIHN0cnVj dHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gbW9kdWxhciBleHBvbmVudGF0 aW9uDQo+ICsgKiBjcnlwdG8gdHJhbnNmb3JtLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0 ZV9jcnlwdG9fbW9kZXhfeGZvcm0gew0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBt b2R1bHVzOw0KPiArCS8qKjwgbW9kdWx1cw0KPiArCSAqIFByaW1lIG1vZHVsdXMgb2YgdGhlIG1v ZGV4cCB0cmFuc2Zvcm0gb3BlcmF0aW9uIGluIE9jdGV0LXN0cmluZw0KPiArCSAqIG5ldHdvcmsg Ynl0ZSBvcmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsNCj4gKwlydGVfY3J5cHRvX3hmb3JtX3Bh cmFtIGV4cG9uZW50Ow0KPiArCS8qKjwgZXhwb25lbnQNCj4gKwkgKiBQcml2YXRlIGV4cG9uZW50 IG9mIHRoZSBtb2RleHAgdHJhbnNmb3JtIG9wZXJhdGlvbiBpbg0KPiArCSAqIE9jdGV0LXN0cmlu ZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoq DQo+ICsgKiBBc3ltbWV0cmljIERIIHRyYW5zZm9ybSBkYXRhDQo+ICsgKg0KPiArICogVGhpcyBz dHJ1Y3R1cmUgY29udGFpbnMgZGF0YSB1c2VkIHRvIHBlcmZvcm0gREgga2V5DQo+ICsgKiBvcGVy YXRpb25zLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZGhfeGZvcm0gew0K PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcDsNCj4gKwkvKio8IHAgOiBQcmltZSBtb2R1bHVz IGRhdGENCj4gKwkgKiBESCBwcmltZSBtb2R1bG91cyBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3 b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9y bV9wYXJhbSBnOw0KPiArCS8qKjwgZyA6IEdlbmVyYXRvcg0KPiArCSAqIERIIGdyb3VwIGdlbmVy YXRvciBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4gKwkgKiBmb3Jt YXQuDQo+ICsJICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEFzeW1tZXRyaWMgRUNESCB0 cmFuc2Zvcm0gZGF0YQ0KPiArICoNCj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEg cmVxdWlyZWQgdG8gcGVyZm9ybSBFQ0RIIGNyeXB0bw0KPiArICogdHJhbnNmb3JtLg0KPiArICoN Cj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNkaF94Zm9ybSB7DQo+ICsNCj4gKwllbnVt IHJ0ZV9jcnlwdG9fZWNfY3VydmVfdHlwZSBjdXJ2ZV90eXBlOw0KPiArCS8qKjwgRUNESCBjdXJ2 ZSB0eXBlOiBQcmltZSB2cyBCaW5hcnkgKi8NCj4gKw0KPiArCXN0cnVjdCBydGVfY3J5cHRvX2Vj X2N1cnZlX2lkIGN1cnZlX2lkOw0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBwOw0K PiArCS8qKjwgcDoNCj4gKwkgKiBJZiB0aGUgY3VydmVfdHlwZSBpcyBAcmVmIFJURV9DUllQVE9f RUNfQ1VSVkVfVFlQRV9QUklNRV9GSUVMRDoNCj4gKwkgKiBwIGhvbGRzIHRoZSBwcmltZSBtb2R1 bHVzIGRhdGEgaW4gT2N0ZXQgc3RyaW5nIGZvcm1hdC4NCj4gKwkgKg0KPiArCSAqIElmIHRoZSBj dXJ2ZV90eXBlIGlzIEByZWYgUlRFX0NSWVBUT19FQ19DVVJWRV9UWVBFX0JJTkFSWV9GSUVMRDoN Cj4gKwkgKiBwIGhvbGRzIHJlZHVjdGlvbiBwb2x5bm9taWFsIGNvLWVmZmljaWVudHMgYW5kIGRl Z3JlZS4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gYTsNCj4gKwkv Kio8IEN1cnZlIFBhcmFtZXRlciBDby1lZmZpY2llbnQgJ2EnIG9mIGN1cnZlIGVxdWF0aW9uIGRh dGEgaW4NCj4gKwkgKiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4g KwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gYjsNCj4gKwkvKio8IEN1cnZl IFBhcmFtZXRlciBDby1lZmZpY2llbnQgJ2InIG9mIGN1cnZlIGVxdWF0aW9uIGRhdGEgaW4NCj4g KwkgKiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4g Kw0KPiArCXN0cnVjdCAgcnRlX2NyeXB0b19lY19wb2ludCBHOw0KPiArCS8qKjwgRzogRUMgY3Vy dmUgZ2VuZXJhdG9yIHBvaW50DQo+ICsJICogRUMgY3VydmUgZ2VuZXJhdG9yIHBvaW50IGRhdGEg aW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPiArCSAqIGZvcm1hdC4NCj4gKwkg Ki8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gbjsNCj4gKwkvKio8IG4gOiBvcmRl ciBvZiBHDQo+ICsJICogRUNESCBjdXJ2ZSBvcmRlciBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3 b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJaW50IGg7DQo+ICsJLyoq PCBDby1mYWN0b3Igb2YgdGhlIGN1cnZlICovDQo+ICsNCj4gKwlydGVfY3J5cHRvX3hmb3JtX3Bh cmFtIHBrZXk7DQo+ICsJLyoqPCBwa2V5OiBQcml2YXRlIGtleQ0KPiArCSAqIFByaXZhdGUga2V5 IGRhdGEgZm9yIEVDREggb3BlcmF0aW9uIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUNCj4g KwkgKiBvcmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19l Y19wb2ludCBROw0KPiArCS8qKjwgUTogUHVibGljIGtleSBwb2ludA0KPiArCSAqIFB1YmxpYyBr ZXkgcG9pbnQgZGF0YSBvZiBFQ0RIIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yaw0K PiArCSAqIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ ICsgKiBBc3ltbWV0cmljIERpZ2l0YWwgU2lnbmF0dXJlIHRyYW5zZm9ybSBvcGVyYXRpb24NCj4g KyAqDQo+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWluIHNpZ25lciBrZXkgaW5mb3JtYXRpb24g Zm9yIERTQSBzaWduYXR1cmUNCj4gKyAqIGdlbmVyYXRpb24gYW5kIHZlcmlmaWNhdGlvbi4NCj4g KyAqIEFwcCB3aGljaCBkb2VzIGJvdGggU2lnbmF0dXJlIEdlbmVyYXRpb24gYW5kIFZlcmlmaWNh dGlvbiBzaG91bGQNCj4gKyAqIGNyZWF0ZSB0d28gc2VwYXJhdGUgc2Vzc2lvbiBjYXJyeWluZyBp dHMgb3duIGFuZCBwZWVyIGtleSBpbmZvcm1hdGlvbg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0 IHJ0ZV9jcnlwdG9fZHNhX3hmb3JtIHsNCj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHA7DQo+ ICsJLyoqPCBwIC0gUHJpbWUgbW9kdWx1cw0KPiArCSAqIFByaW1lIG1vZHVsdXMgZGF0YSBmb3Ig RFNBIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlDQo+ICsJICogb3JkZXIg Zm9ybWF0Lg0KPiArCSAqLw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcTsNCj4gKwkvKio8 IHEgOiBPcmRlciBvZiB0aGUgc3ViZ3JvdXAuDQo+ICsJICogT3JkZXIgb2YgdGhlIHN1Ymdyb3Vw IGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPiArCSAqIGZvcm1hdC4N Cj4gKwkgKiAocC0xKSAlIHEgPSAwDQo+ICsJICovDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJh bSBnOw0KPiArCS8qKjwgZzogR2VuZXJhdG9yIG9mIHRoZSBzdWJncm91cA0KPiArCSAqIEdlbmVy YXRvciAgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4g KwkgKi8NCj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHg7DQo+ICsJLyoqPCB4OiBQcml2YXRl IGtleSBvZiB0aGUgc2lnbmVyDQo+ICsJICogUHJpdmF0ZSBrZXkgZGF0YSBpbiBPY3RldC1zdHJp bmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKiBQcml2YXRlIGtleSBpcyB2YWxp ZCBvbmx5IGZvciBzaWduYXR1cmUgZ2VuZXJhdGlvbiBvcGVyYXRpb24uDQo+ICsJICovDQo+ICsJ cnRlX2NyeXB0b194Zm9ybV9wYXJhbSB5Ow0KPiArCS8qKjwgeSA6IFB1YmxpYyBrZXkgb2YgdGhl IHNpZ25lci4NCj4gKwkgKiBQdWJsaWMga2V5IGRhdGEgb2YgdGhlIHNpZ25lciBpbiBPY3RldC1z dHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+ICsJICogZm9ybWF0Lg0KPiArCSAqIHkgPSBnXngg bW9kIHANCj4gKwkgKi8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBFQ0RT QSB0cmFuc2Zvcm0gZGF0YQ0KPiArICoNCj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRh dGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBFQ0RTQSBjcnlwdG8NCj4gKyAqIHRyYW5zZm9ybS4NCj4g KyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNkc2FfeGZvcm0gew0KPiArCS8qKiBUQkQgKi8N Cj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBtb2R1bGFyIGludmVyc2UgdHJh bnNmb3JtIG9wZXJhdGlvbg0KPiArICoNCj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRh dGEgcmVxdWlyZWQgdG8gcGVyZm9ybQ0KPiArICogYXN5bW1ldHJpYyBtb2R1bGFyIGludmVyc2Ug Y3J5cHRvIHRyYW5zZm9ybQ0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b19tb2RpbnZfeGZv cm0gew0KPiArCS8qKiBUQkQgKi8NCj4gK307DQo+ICsNCj4gKy8qKiBBc3ltbWV0cmljIEZ1bmRh bWVudGFsIEVDQyB0cmFuc2Zvcm0gb3BlcmF0aW9uDQo+ICsgKg0KPiArICogVGhpcyBzdHJ1Y3R1 cmUgY29udGFpbnMgZGF0YSByZXF1aXJlZCB0byBwZXJmb3JtIGFzeW1tZXRyaWMNCj4gKyAqIGZ1 bmRhbWVudGFsIEVDQyBjcnlwdG8gdHJhbnNmb3JtLg0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2Ny eXB0b19mZWNjX3hmb3JtIHsNCj4gKw0KPiArCWVudW0gcnRlX2NyeXB0b19lY19jdXJ2ZV90eXBl IGN1cnZlX3R5cGU7DQo+ICsJLyoqPCBGRUNDIGN1cnZlIHR5cGU6IFByaW1lIHZzIEJpbmFyeSAq Lw0KPiArDQo+ICsJc3RydWN0IHJ0ZV9jcnlwdG9fZWNfY3VydmVfaWQgY3VydmVfaWQ7DQo+ICsJ LyoqPCBFQyBjdXJ2ZSBJRCAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBvcmRl cjsNCj4gKwkvKio8IG9yZGVyIDogRUNDIGN1cnZlIG9yZGVyDQo+ICsJICogQ3VydmUgb3JkZXIg ZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8N Cj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcHJpbWU7DQo+ICsJLyoqPCBwcmltZSA6 IEN1cnZlIHByaW1lIG1vZHVsdXMgZGF0YQ0KPiArCSAqIFByaW1lIG1vZHVsdXMgZGF0YSBpbiBP Y3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiAr CXN0cnVjdCBydGVfY3J5cHRvX2VjX3BvaW50IEc7DQo+ICsJLyoqPCBHOiBjdXJ2ZSBnZW5lcmF0 b3IgcG9pbnQNCj4gKwkgKiBDdXJ2ZSBnZW5lcmF0b3IgcG9pbnQgZGF0YSBpbiBPY3RldC1zdHJp bmcgbmV0d29yayBieXRlIG9yZGVyDQo+ICsJICogZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJ cnRlX2NyeXB0b194Zm9ybV9wYXJhbSBhOw0KPiArCS8qKjwgQ28tZWZmaWNpZW50ICdhJyBvZiBj dXJ2ZSBlcXVhdGlvbiBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrDQo+ICsJICogYnl0ZSBv cmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsNCj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIGI7 DQo+ICsJLyoqPCBDby1lZmZpY2llbnQgJ2EnIG9mIGN1cnZlIGVxdWF0aW9uIGRhdGEgaW4gT2N0 ZXQtc3RyaW5nIG5ldHdvcmsNCj4gKwkgKiBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4g Kw0KPiArCWludCBoOw0KPiArCS8qKjwgQ28tZmFjdG9yIG9mIHRoZSBjdXJ2ZSAqLw0KPiArDQo+ ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEFzeW1tZXRyaWMgY3J5cHRvIHRyYW5zZm9ybSBkYXRh DQo+ICsgKg0KPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGRhdGEgcmVxdWlyZWQg dG8gcGVyZm9ybSB0aGUNCj4gKyAqIGFzeW1tZXRyaWMgY3J5cHRvIHRyYW5zZm9ybWF0aW9uIG9w ZXJhdGlvbi4gVGhlIGZpZWxkIG9wDQo+ICsgKiBkZXRlcm1pbmVzIHRoZSBhc3ltbWV0cmljIGFs Z29yaXRobSBmb3IgdHJhbnNmb3JtYXRpb24uDQpbRmlvbmFdIGNsYXJpZnkgY29tbWVudC4gVGhl IHhmb3JtIG9ubHkgY29udGFpbnMgc29tZSBvZiB0aGUgZGF0YSwgdGhlIHJlc3Qgd2lsbCBiZSBw cm92aWRlZCBpbiB0aGUgb3AuDQpBbmQgdGhlcmUncyBubyBmaWVsZCBvcCBoZXJlLiANCj4gKyAq Lw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybSB7DQo+ICsJc3RydWN0IHJ0ZV9jcnlw dG9fYXN5bV94Zm9ybSAqbmV4dDsNCltGaW9uYV0gSXMgdGhlcmUgYW55IHJlYXNvbiBmb3IgYSBj aGFpbiBvZiB4Zm9ybXM/DQpJJ2Qgc3VnZ2VzdCByZW1vdmluZyB1bmxlc3MgbmVlZGVkLg0KDQo+ ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB4Zm9ybV90eXBlOw0KPiArCS8qKjwg QXN5bW1ldHJpYyBhbGdvcml0aG0gZm9yIGNyeXB0byB0cmFuc2Zvcm0gKi8NCj4gKw0KPiArCVJU RV9TVERfQzExDQo+ICsJdW5pb24gew0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19yc2FfeGZvcm0g cnNhOw0KPiArCQkvKio8IFJTQSB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+ICsNCj4gKwkJc3RydWN0 IHJ0ZV9jcnlwdG9fZmVjY194Zm9ybSBmZWNjOw0KPiArCQkvKio8IEZ1bmRhbWVudGFsIEVsbGlw dGljIEN1cnZlIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4gKw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0 b19tb2RleF94Zm9ybSBtb2RleDsNCj4gKwkJLyoqPCBNb2R1bGFyIEV4cG9uZW50aWF0aW9uIHhm b3JtIHBhcmFtZXRlcnMgKi8NCj4gKw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19tb2RpbnZfeGZv cm0gbW9kaW52Ow0KPiArCQkvKio8IE1vZHVsdXMgSW52ZXJzZSB4Zm9ybSBwYXJhbWV0ZXJzICov DQo+ICsNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fZWNkc2FfeGZvcm0gZWNkc2E7DQo+ICsJCS8q KjwgRUNEU0EgeGZvcm0gcGFyYW1ldGVycyAqLw0KPiArDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRv X2VjZGhfeGZvcm0gZWNkaDsNCj4gKwkJLyoqPCBFQ0RIIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4g Kw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19kc2FfeGZvcm0gZHNhOw0KPiArCQkvKio8IERTQSB4 Zm9ybSBwYXJhbWV0ZXJzICovDQo+ICsJfTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBydGVfY3J5 cHRvZGV2X2FzeW1fc2Vzc2lvbjsNCj4gKw0KPiArLyoqDQo+ICsgKiBSU0Egb3BlcmF0aW9uIHBh cmFtcw0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fcnNhX29wX3BhcmFtIHsN Cj4gKwllbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIG9wX3R5cGU7DQo+ICsJLyoqPCBUeXBl IG9mIFJTQSBvcGVyYXRpb24gZm9yIHRyYW5zZm9ybSAqLzsNCj4gKw0KPiArCXJ0ZV9jcnlwdG9f b3BfcGFyYW0gbWVzc2FnZTsNCj4gKwkvKio8DQo+ICsJICogUG9pbnRlciB0byBkYXRhDQo+ICsJ ICogLSB0byBiZSBlbmNyeXB0ZWQgZm9yIFJTQSBwdWJsaWMgZW5jcnlwdC4NCj4gKwkgKiAtIHRv IGJlIGRlY3J5cHRlZCBmb3IgUlNBIHByaXZhdGUgZGVjcnlwdC4NCj4gKwkgKiAtIHRvIGJlIHNp Z25lZCBmb3IgUlNBIHNpZ24gZ2VuZXJhdGlvbi4NCj4gKwkgKiAtIHRvIGJlIGF1dGhlbnRpY2F0 ZWQgZm9yIFJTQSBzaWduIHZlcmlmaWNhdGlvbi4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlw dG9fb3BfcGFyYW0gc2lnbjsNCj4gKwkvKio8DQo+ICsJICogUG9pbnRlciB0byBSU0Egc2lnbmF0 dXJlIGRhdGEuIElmIG9wZXJhdGlvbiBpcyBSU0ENCj4gKwkgKiBzaWduIEByZWYgUlRFX0NSWVBU T19SU0FfT1BfU0lHTiwgYnVmZmVyIHdpbGwgYmUNCj4gKwkgKiBvdmVyLXdyaXR0ZW4gd2l0aCBn ZW5lcmF0ZWQgc2lnbmF0dXJlLg0KPiArCSAqDQo+ICsJICogTGVuZ3RoIG9mIHRoZSBzaWduYXR1 cmUgZGF0YSB3aWxsIGJlIGVxdWFsIHRvIHRoZQ0KPiArCSAqIFJTQSBwcmltZSBtb2R1bHVzIGxl bmd0aC4NCj4gKwkgKi8NCj4gKw0KPiArCWVudW0gcnRlX2NyeXB0b19yc2FfcGFkZGluZ190eXBl IHBhZDsNCj4gKwkvKio8IFJTQSBwYWRkaW5nIHNjaGVtZSB0byBiZSB1c2VkIGZvciB0cmFuc2Zv cm0gKi8NCj4gKw0KPiArCWVudW0gcnRlX2NyeXB0b19hdXRoX2FsZ29yaXRobSBtZDsNCj4gKwkv Kio8IEhhc2ggYWxnb3JpdGhtIHRvIGJlIHVzZWQgZm9yIGRhdGEgaGFzaCBpZiBwYWRkaW5nDQo+ ICsJICogc2NoZW1lIGlzIGVpdGhlciBPQUVQIG9yIFBTUy4gVmFsaWQgaGFzaCBhbGdvcml0aG1z DQo+ICsJICogYXJlOg0KPiArCSAqIE1ENSwgU0hBMSwgU0hBMjI0LCBTSEEyNTYsIFNIQTM4NCwg U0hBNTEyDQo+ICsJICovDQo+ICsNCj4gKwllbnVtIHJ0ZV9jcnlwdG9fYXV0aF9hbGdvcml0aG0g bWdmMW1kOw0KPiArCS8qKjwNCj4gKwkgKiBIYXNoIGFsZ29yaXRobSB0byBiZSB1c2VkIGZvciBt YXNrIGdlbmVyYXRpb24gaWYNCj4gKwkgKiBwYWRkaW5nIHNjaGVtZSBpcyBlaXRoZXIgT0FFUCBv ciBQU1MuIElmIHBhZGRpbmcNCj4gKwkgKiBzY2hlbWUgaXMgdW5zcGVjaWZpZWQgZGF0YSBoYXNo IGFsZ29yaXRobSBpcyB1c2VkDQo+ICsJICogZm9yIG1hc2sgZ2VuZXJhdGlvbi4gVmFsaWQgaGFz aCBhbGdvcml0aG1zIGFyZToNCj4gKwkgKiBNRDUsIFNIQTEsIFNIQTIyNCwgU0hBMjU2LCBTSEEz ODQsIFNIQTUxMg0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBEZWZmaWUtSGVs bG1hbiBPcGVyYXRpb25zIHBhcmFtcw0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlw dG9fZGhfb3BfcGFyYW0gew0KPiArCWVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgb3BfdHlw ZTsNCj4gKwkvKio8IEFzeW1tZXRyaWMgb3AgdHlwZTogS2V5IEdlbmVyYXRpb24gLyBDb21wdXRh dGlvbiAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b19vcF9wYXJhbSBwdWJfa2V5Ow0KPiArCS8qKjwN Cj4gKwkgKiBPdXRwdXQgbmF0aXZlIGFwcCBwdWJsaWMga2V5IHdoZW4gREggb3BlcmF0aW9uIHR5 cGUgaXMNCj4gKwkgKiBLRVlfR0VORVJBVElPTi4NCj4gKwkgKiBJbnB1dCBwZWVyIHB1YmxpYyBr ZXkgd2hlbiBESCBvcGVyYXRpb24gaXMgc2hhcmVkIGtleQ0KPiArCSAqIEtFWV9DT01QVVRBVElP Tg0KPiArCSAqIEFuIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiAr CSAqDQo+ICsJICovDQo+ICsNCj4gKwlydGVfY3J5cHRvX29wX3BhcmFtIHByaXZfa2V5Ow0KPiAr CS8qKjwNCj4gKwkgKiBPdXRwdXQgbmF0aXZlIGFwcCBwcml2YXRlIGtleSBpZiBvcGVyYXRpb24g dHlwZQ0KPiArCSAqIEtFWV9HRU5FUkFUSU9OLg0KPiArCSAqIElucHV0IG5hdGl2ZSBhcHAgcHJp dmF0ZSBrZXkgd2hlbiBvcGVyYXRpb24gdHlwZQ0KPiArCSAqIGlzIEtFWV9DT01QVVRBVElPTi4g cHJpdl9rZXkgaXMgaW4NCj4gKwkgKiBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVy IGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9fb3BfcGFyYW0gc2hhcmVkX2tl eTsNCj4gKwkvKg0KPiArCSAqIE91dHB1dCB3aGVuIERIIG9wZXJhdGlvbiB0eXBlIGlzIEtFWV9D T01QVVRBVElPTjoNCj4gKwkgKiBjb21wdXRlZC4gc2hhcmVkX2tleSBpcyB3cml0dGVuIGFzDQo+ ICsJICogT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+ICsJICogSWdu b3JlZCBmb3IgS0VZX0dFTkVSQVRJT04uDQo+ICsJICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4g KyAqIERTQSBPcGVyYXRpb25zIHBhcmFtcw0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9j cnlwdG9fZHNhX29wX3BhcmFtIHsNCj4gKwkvKiogVEJEICovDQo+ICt9Ow0KPiArDQo+ICsvKioN Cj4gKyAqIE1vZCBFeHAgT3BlcmF0aW9ucyBwYXJhbXMNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVj dCBydGVfY3J5cHRvX21vZGV4X29wX3BhcmFtIHsNCj4gKwlydGVfY3J5cHRvX29wX3BhcmFtIGJh c2U7DQo+ICsJLyoqPA0KPiArCSAqIFBvaW50ZXIgdG8gYmFzZSBvZiBtb2R1bGFyIGV4cG9uZW50 aWF0aW9uIGRhdGEgaW4NCj4gKwkgKiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZv cm1hdC4NCj4gKwkgKi8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogRWxsaXB0aWMgY3VydmUg RGVmZmllLUhlbGxtYW4gT3BlcmF0aW9ucyBwYXJhbXMNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVj dCBydGVfY3J5cHRvX2VjZGhfb3BfcGFyYW0gew0KPiArCWVudW0gcnRlX2NyeXB0b19hc3ltX29w X3R5cGUgb3BfdHlwZTsNCj4gKwkvKio8IEFzeW1tZXRyaWMgb3BlcmF0aW9uOiBrZXkgZ2VuZXJh dGlvbiwgY29tcHV0YXRpb24gKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9fb3BfcGFyYW0gcHJpdl9r ZXk7DQo+ICsJLyoqPA0KPiArCSAqIE91dHB1dCBpZiBvcGVyYXRpb24gdHlwZSBpcyBLRVlfUEFJ Ul9HRU5FUkFUSU9OLA0KPiArCSAqIG91dHB1dCBuYXRpdmUgYXBwIHByaXZhdGUga2V5Lg0KPiAr CSAqIElucHV0IGFuZCBvdXRwdXQsIElmIEVDREggb3BlcmF0aW9uIHR5cGUgaXMgU0hBUkVEX0tF WV9DT01QVVRBVElPTiwNCj4gKwkgKiBwcml2X2tleSB3aWxsIGhvbGQgdGhlICdYJyBjby1vcmRp bmF0ZSBvZiB0aGUgc2hhcmVkDQo+ICsJICogc2VjcmV0IEVDIHBvaW50LiBwcml2X2tleSBpcyBp biBPY3RldC1zdHJpbmcgbmV0d29yaw0KPiArCSAqIGJ5dGUgb3JkZXIuDQo+ICsJICovDQo+ICsN Cj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBwdWJfa2V5Ow0KPiArCS8qKjwNCj4gKwkg KiBPdXRwdXQgaWYgb3BlcmF0aW9uIHR5cGUgaXMgS0VZX1BBSVJfR0VORVJBVElPTiwNCj4gKwkg KiBzdG9yZSBuYXRpdmUgYXBwIHB1YmxpYyBrZXkuDQo+ICsJICogSW5wdXQgaWYgb3BlcmF0aW9u IHR5cGUgaXMgU0hBUkVEX0tFWV9DT01QVVRBVElPTiwNCj4gKwkgKg0KPiArCSAqIEtFWV9DT01Q VVRBVElPTjoNCj4gKwkgKiAgcHViX2tleSBpcyBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRl IG9yZGVyLg0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBFbGxpcHRpYyBDdXJ2 ZSBEU0EgT3BlcmF0aW9ucyBwYXJhbXMNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5 cHRvX2VjZHNhX29wX3BhcmFtIHsNCj4gKw0KPiArCWVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5 cGUgZWNkc2Ffb3A7DQo+ICsJLyoqPCBFQ0RTQSBjcnlwdG8geGZvcm0gb3BlcmF0aW9uIHR5cGU6 IFNpZ25hdHVyZQ0KPiArCSAqICBnZW5lcmF0aW9uL1ZlcmlmaWNhdGlvbg0KPiArCSAqLw0KPiAr CS8qKiBUQkQgKi8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogRnVuZGFtZW50YWwgRWxsaXB0 aWMgQ3VydmUgT3BlcmF0aW9ucyBwYXJhbXMNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVf Y3J5cHRvX2ZlY2Nfb3BfcGFyYW0gew0KPiArCWVudW0gcnRlX2NyeXB0b19mZWNjX29wdHlwZSBm ZWNjX29wOw0KPiArCS8qKjwgRkVDQyBjcnlwdG8geGZvcm0gb3BlcmF0aW9uIHR5cGUgKi8NCj4g Kw0KPiArCS8qKiBUQkQgKi8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogTW9kIEludiBPcGVy YXRpb25zIHBhcmFtcw0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fbW9kaW52 X29wX3BhcmFtIHsNCj4gKwlydGVfY3J5cHRvX29wX3BhcmFtIHByaW1lOw0KPiArCS8qKjwNCj4g KwkgKiBQb2ludGVyIHRvIHRoZSBwcmltZSBtb2R1bHVzIGRhdGEgZm9yIG1vZHVsYXINCj4gKwkg KiBpbnZlcnNlIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlDQo+ICsJICog b3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b19vcF9wYXJhbSBiYXNl Ow0KPiArCS8qKjwNCj4gKwkgKiBQb2ludGVyIHRvIHRoZSBiYXNlIGZvciB0aGUgbW9kdWxhciBp bnZlcnNlDQo+ICsJICogb3BlcmF0aW9uIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3Jk ZXINCj4gKwkgKiBmb3JtYXQuDQo+ICsJICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEFz eW1tZXRyaWMgQ3J5cHRvZ3JhcGhpYyBPcGVyYXRpb24uDQo+ICsgKg0KPiArICogVGhpcyBzdHJ1 Y3R1cmUgY29udGFpbnMgZGF0YSByZWxhdGluZyB0byBwZXJmb3JtaW5nIGFzeW1tZXRyaWMgY3J5 cHRvZ3JhcGhpYw0KPiArICogb3BlcmF0aW9uLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0 ZV9jcnlwdG9fYXN5bV9vcCB7DQo+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB0 eXBlOw0KPiArCS8qKjwgUlNBLCBESCwgRUNESCwgRFNBIGV0YyAqLw0KPiArDQo+ICsJc3RydWN0 IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzaW9uOw0KPiArCS8qKjwgSGFuZGxlIGZv ciB0aGUgaW5pdGlhbGlzZWQgc2Vzc2lvbiBjb250ZXh0ICovDQo+ICsNCj4gKwlSVEVfU1REX0Mx MQ0KPiArCXVuaW9uIHsNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fcnNhX29wX3BhcmFtIHJzYTsN Cj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fZGhfb3BfcGFyYW0gZGg7DQo+ICsJCXN0cnVjdCBydGVf Y3J5cHRvX21vZGV4X29wX3BhcmFtIG1vZGV4Ow0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19lY2Ro X29wX3BhcmFtIGVjZGg7DQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvX2VjZHNhX29wX3BhcmFtIGVj ZHNhOw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19kc2Ffb3BfcGFyYW0gZHNhOw0KPiArCQlzdHJ1 Y3QgcnRlX2NyeXB0b19mZWNjX29wX3BhcmFtIGZlY2M7DQo+ICsJCXN0cnVjdCBydGVfY3J5cHRv X21vZGludl9vcF9wYXJhbSBtb2RpbnY7DQo+ICsJfTsNCj4gK30gX19ydGVfY2FjaGVfYWxpZ25l ZDsNCj4gKw0KPiArLyoqDQo+ICsgKiBSZXNldCB0aGUgZmllbGRzIG9mIGFuIGFzeW1tZXRyaWMg b3BlcmF0aW9uIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLg0KPiArICoNCj4gKyAqIEBwYXJhbQlv cAlUaGUgY3J5cHRvIG9wZXJhdGlvbiB0byBiZSByZXNldC4NCj4gKyAqLw0KPiArc3RhdGljIGlu bGluZSB2b2lkDQo+ICtfX3J0ZV9jcnlwdG9fYXN5bV9vcF9yZXNldChzdHJ1Y3QgcnRlX2NyeXB0 b19hc3ltX29wICpvcCkNCj4gK3sNCj4gKwltZW1zZXQob3AsIDAsIHNpemVvZigqb3ApKTsNCj4g K30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAqIEF0dGFjaCBhIHNlc3Npb24gdG8gYW4gYXN5bW1l dHJpYyBjcnlwdG8gb3BlcmF0aW9uDQo+ICsgKg0KPiArICogQHBhcmFtCWFzeW1fb3AJY3J5cHRv IG9wZXJhdGlvbg0KPiArICogQHBhcmFtCXNlc3MJY3J5cHRvZGV2IHNlc3Npb24NCj4gKyAqLw0K PiArc3RhdGljIGlubGluZSBpbnQNCj4gK19fcnRlX2NyeXB0b19vcF9hdHRhY2hfYXN5bV9zZXNz aW9uKHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3AgKmFzeW1fb3AsDQo+ICsJCXN0cnVjdCBydGVf Y3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCj4gK3sNCj4gKwlhc3ltX29wLT5zZXNzaW9u ID0gc2VzczsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVz DQo+ICt9DQo+ICsjZW5kaWYNCj4gKw0KPiArI2VuZGlmIC8qIF9SVEVfQ1JZUFRPX0FTWU1fSF8g Ki8NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuYyBi L2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuYw0KPiBpbmRleCA3NzI2ZDE1Li5i YWQxOGMzIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2 LmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5jDQo+IEBAIC0x NjYsNiArMTY2LDMzIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCj4gIAlbUlRF X0NSWVBUT19BRUFEX09QX0RFQ1JZUFRdCT0gImRlY3J5cHQiDQo+ICB9Ow0KPiANCj4gKy8qKg0K PiArICogQXN5bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtIG9wZXJhdGlvbiBzdHJpbmdzIGlkZW50 aWZpZXJzLg0KPiArICovDQo+ICtjb25zdCBjaGFyICpydGVfY3J5cHRvX2FzeW1feGZvcm1fc3Ry aW5nc1tdID0gew0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBXQk9ICJyc2EiLA0KPiAr CVtSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTU9ERVhdCT0gIm1vZGV4cCIsDQo+ICsJW1JURV9DUllQ VE9fQVNZTV9YRk9STV9ESF0JPSAiZGgiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRUNE SF0JPSAiZWNkaCIsDQo+ICsJW1JURV9DUllQVE9fQVNZTV9YRk9STV9EU0FdCT0gImRzYSIsDQo+ ICsJW1JURV9DUllQVE9fQVNZTV9YRk9STV9FQ0RTQV0JPSAiZWNkc2EiLA0KPiArCVtSVEVfQ1JZ UFRPX0FTWU1fWEZPUk1fTU9ESU5WXQk9ICJtb2RpbnYiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fRkVDQ10JPSAiZmVjYyINCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogQXN5bW1ldHJp YyBjcnlwdG8gb3BlcmF0aW9uIHN0cmluZ3MgaWRlbnRpZmllcnMuDQo+ICsgKi8NCj4gK2NvbnN0 IGNoYXIgKnJ0ZV9jcnlwdG9fYXN5bV9vcF9zdHJpbmdzW10gPSB7DQo+ICsJW1JURV9DUllQVE9f QVNZTV9PUF9FTkNSWVBUXQk9ICJlbmNyeXB0IiwNCj4gKwlbUlRFX0NSWVBUT19BU1lNX09QX0RF Q1JZUFRdCT0gImRlY3J5cHQiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fT1BfU0lHTl0JPSAic2ln biIsDQo+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9WRVJJRlldCT0gInZlcmlmeSIsDQo+ICsJW1JU RV9DUllQVE9fQVNZTV9PUF9LRVlfUEFJUl9HRU5FUkFUSU9OXQk9ICJrZXlwYWlyX2dlbmVyYXRl IiwNCj4gKwlbUlRFX0NSWVBUT19BU1lNX09QX1NIQVJFRF9LRVlfQ09NUFVUQVRJT05dID0gInNo YXJlZGtleV9jb21wdXRhdGlvbiIsDQo+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9FQ0RIX09QX0tF WV9DSEVDS10JPSAiZWNkaF9rZXljaGVjayIsDQo+ICt9Ow0KPiArDQo+ICBpbnQNCj4gIHJ0ZV9j cnlwdG9kZXZfZ2V0X2NpcGhlcl9hbGdvX2VudW0oZW51bSBydGVfY3J5cHRvX2NpcGhlcl9hbGdv cml0aG0gKmFsZ29fZW51bSwNCj4gIAkJY29uc3QgY2hhciAqYWxnb19zdHJpbmcpDQo+IEBAIC0y MTcsNiArMjQ0LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCj4gIAlyZXR1 cm4gLTE7DQo+ICB9DQo+IA0KPiAraW50DQo+ICtydGVfY3J5cHRvZGV2X2dldF9hc3ltX3hmb3Jt X2VudW0oZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSAqeGZvcm1fZW51bSwNCj4gKwkJ Y29uc3QgY2hhciAqeGZvcm1fc3RyaW5nKQ0KPiArew0KPiArCXVuc2lnbmVkIGludCBpOw0KPiAr DQo+ICsJZm9yIChpID0gMTsgaSA8IFJURV9ESU0ocnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0cmlu Z3MpOyBpKyspIHsNCj4gKwkJaWYgKHN0cmNtcCh4Zm9ybV9zdHJpbmcsDQo+ICsJCQkgICBydGVf Y3J5cHRvX2FzeW1feGZvcm1fc3RyaW5nc1tpXSkgPT0gMCkgew0KPiArCQkJKnhmb3JtX2VudW0g PSAoZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSkgaTsNCj4gKwkJCXJldHVybiAwOw0K PiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJLyogSW52YWxpZCBzdHJpbmcgKi8NCj4gKwlyZXR1cm4g LTE7DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICogVGhlIGNyeXB0byBhdXRoIG9wZXJhdGlvbiBz dHJpbmdzIGlkZW50aWZpZXJzLg0KPiAgICogSXQgY291bGQgYmUgdXNlZCBpbiBhcHBsaWNhdGlv biBjb21tYW5kIGxpbmUuDQo+IEBAIC0yNjIsNiArMzA3LDI4IEBAIHN0cnVjdCBydGVfY3J5cHRv ZGV2X2NhbGxiYWNrIHsNCj4gDQo+ICB9DQo+IA0KPiArY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bW1ldHJpY19jYXBhYmlsaXR5ICoNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmls aXR5X2dldCh1aW50OF90IGRldl9pZCwNCj4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXZf YXN5bV9jYXBhYmlsaXR5X2lkeCAqaWR4KQ0KPiArew0KPiArCWNvbnN0IHN0cnVjdCBydGVfY3J5 cHRvZGV2X2NhcGFiaWxpdGllcyAqY2FwYWJpbGl0eTsNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9pbmZvIGRldl9pbmZvOw0KPiArCXVuc2lnbmVkIGludCBpID0gMDsNCj4gKw0KPiArCW1lbXNl dCgmZGV2X2luZm8sIDAsIHNpemVvZihydGVfY3J5cHRvZGV2X2luZm8pKTsNCj4gKwlydGVfY3J5 cHRvZGV2X2luZm9fZ2V0KGRldl9pZCwgJmRldl9pbmZvKTsNCj4gKw0KPiArCXdoaWxlICgoY2Fw YWJpbGl0eSA9ICZkZXZfaW5mby5jYXBhYmlsaXRpZXNbaSsrXSktPm9wICE9DQo+ICsJCQlSVEVf Q1JZUFRPX09QX1RZUEVfVU5ERUZJTkVEKSB7DQo+ICsJCWlmIChjYXBhYmlsaXR5LT5vcCAhPSBS VEVfQ1JZUFRPX09QX1RZUEVfQVNZTU1FVFJJQykNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICsJ CWlmIChjYXBhYmlsaXR5LT5hc3ltLnhmb3JtX3R5cGUgPT0gaWR4LT50eXBlKQ0KPiArCQkJcmV0 dXJuICZjYXBhYmlsaXR5LT5hc3ltOw0KPiArCX0NCj4gKwlyZXR1cm4gTlVMTDsNCj4gK307DQo+ ICsNCj4gICNkZWZpbmUgcGFyYW1fcmFuZ2VfY2hlY2soeCwgeSkgXA0KPiAgCSgoKHggPCB5Lm1p bikgfHwgKHggPiB5Lm1heCkpIHx8IFwNCj4gIAkoeS5pbmNyZW1lbnQgIT0gMCAmJiAoeCAlIHku aW5jcmVtZW50KSAhPSAwKSkNCj4gQEAgLTYwMSw2ICs2NjgsMjQgQEAgc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKg0KPiAgCXJldHVybiBkZXYtPmRhdGEtPm5iX3F1ZXVlX3BhaXJzOw0KPiAgfQ0KPiAN Cj4gK3VpbnQxNl90DQo+ICtydGVfY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9jb3VudCh1aW50 OF90IGRldl9pZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPiArDQo+ ICsJZGV2ID0gJnJ0ZV9jcnlwdG9fZGV2aWNlc1tkZXZfaWRdOw0KPiArCXJldHVybiBkZXYtPmRh dGEtPm5iX2FzeW1fcXA7DQo+ICt9DQo+ICsNCj4gK3VpbnQxNl90DQo+ICtydGVfY3J5cHRvZGV2 X3N5bV9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3QgZGV2X2lkKQ0KPiArew0KPiArCXN0cnVjdCBy dGVfY3J5cHRvZGV2ICpkZXY7DQo+ICsNCj4gKwlkZXYgPSAmcnRlX2NyeXB0b19kZXZpY2VzW2Rl dl9pZF07DQo+ICsJcmV0dXJuIGRldi0+ZGF0YS0+bmJfc3ltX3FwOw0KPiArfQ0KPiArDQo+ICBz dGF0aWMgaW50DQo+ICBydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJzX2NvbmZpZyhzdHJ1Y3QgcnRl X2NyeXB0b2RldiAqZGV2LCB1aW50MTZfdCBuYl9xcGFpcnMsDQo+ICAJCWludCBzb2NrZXRfaWQp DQo+IEBAIC0xMDg4LDYgKzExNzMsMzggQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKg0KPiAgCXJl dHVybiAwOw0KPiAgfQ0KPiANCj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25f aW5pdCh1aW50OF90IGRldl9pZCwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNz aW9uICpzZXNzLA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtICp4Zm9ybXMsDQo+ ICsJCXN0cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9jcnlwdG9k ZXYgKmRldjsNCj4gKwl1aW50OF90IGluZGV4Ow0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlkZXYg PSBydGVfY3J5cHRvZGV2X3BtZF9nZXRfZGV2KGRldl9pZCk7DQo+ICsNCj4gKwlpZiAoc2VzcyA9 PSBOVUxMIHx8IHhmb3JtcyA9PSBOVUxMIHx8IGRldiA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gKw0KPiArCWluZGV4ID0gZGV2LT5kcml2ZXJfaWQ7DQo+ICsNCj4gKwlpZiAoc2Vz cy0+c2Vzc19wcml2YXRlX2RhdGFbaW5kZXhdID09IE5VTEwpIHsNCj4gKwkJcmV0ID0gZGV2LT5k ZXZfb3BzLT5hc3ltX3Nlc3Npb25fY29uZmlndXJlKGRldiwNCj4gKwkJCQkJCQkgICB4Zm9ybXMs DQo+ICsJCQkJCQkJICAgc2VzcywgbXApOw0KPiArCQlpZiAocmV0IDwgMCkgew0KPiArCQkJQ0RF Vl9MT0dfRVJSKA0KPiArCQkJCSJkZXZfaWQgJWQgZmFpbGVkIHRvIGNvbmZpZ3VyZSBzZXNzaW9u IGRldGFpbHMiLA0KPiArCQkJCWRldl9pZCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIHN0cnVjdCBydGVfY3J5cHRv ZGV2X3N5bV9zZXNzaW9uICoNCj4gIHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fY3JlYXRlKHN0 cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ICB7DQo+IEBAIC0xMTA1LDYgKzEyMjIsMjMgQEAgc3Ry dWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgCXJldHVybiBzZXNzOw0KPiAgfQ0K PiANCj4gK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqDQo+ICtydGVfY3J5cHRv ZGV2X2FzeW1fc2Vzc2lvbl9jcmVhdGUoc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4gK3sNCj4g KwlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3M7DQo+ICsNCj4gKwkvKiBB bGxvY2F0ZSBhIHNlc3Npb24gc3RydWN0dXJlIGZyb20gdGhlIHNlc3Npb24gcG9vbCAqLw0KPiAr CWlmIChydGVfbWVtcG9vbF9nZXQobXAsICh2b2lkICopJnNlc3MpKSB7DQo+ICsJCUNERVZfTE9H X0VSUigiY291bGRuJ3QgZ2V0IG9iamVjdCBmcm9tIHNlc3Npb24gbWVtcG9vbCIpOw0KPiArCQly ZXR1cm4gTlVMTDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBDbGVhciBkZXZpY2Ugc2Vzc2lvbiBwb2lu dGVyICovDQo+ICsJbWVtc2V0KHNlc3MsIDAsIChzaXplb2Yodm9pZCAqKSAqIG5iX2RyaXZlcnMp KTsNCj4gKw0KPiArCXJldHVybiBzZXNzOw0KPiArfQ0KPiArDQo+ICBpbnQNCj4gIHJ0ZV9jcnlw dG9kZXZfcXVldWVfcGFpcl9hdHRhY2hfc3ltX3Nlc3Npb24odWludDhfdCBkZXZfaWQsIHVpbnQx Nl90IHFwX2lkLA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqc2VzcykN Cj4gQEAgLTExNjAsNiArMTI5NCw2MCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lv biAqDQo+ICB9DQo+IA0KPiAgaW50DQo+ICtydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfYXR0YWNo X2FzeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ICsJCXN0cnVj dCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCj4gK3sNCj4gKwlzdHJ1Y3QgcnRl X2NyeXB0b2RldiAqZGV2Ow0KPiArDQo+ICsJaWYgKCFydGVfY3J5cHRvZGV2X3BtZF9pc192YWxp ZF9kZXYoZGV2X2lkKSkgew0KPiArCQlDREVWX0xPR19FUlIoIkludmFsaWQgZGV2X2lkPSVkIiwg ZGV2X2lkKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJZGV2ID0gJnJ0 ZV9jcnlwdG9fZGV2aWNlc1tkZXZfaWRdOw0KPiArDQo+ICsJLyogVGhlIEFQSSBpcyBvcHRpb25h bCwgbm90IHJldHVybmluZyBlcnJvciBpZiBkcml2ZXIgZG8gbm90IHN1dXBvcnQgKi8NCj4gKwlS VEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLT5hc3ltX3FwX2F0dGFjaF9zZXNz aW9uLCAwKTsNCj4gKw0KPiArCXZvaWQgKnNlc3NfcHJpdiA9IGdldF9hc3ltX3Nlc3Npb25fcHJp dmF0ZV9kYXRhKHNlc3MsIGRldi0+ZHJpdmVyX2lkKTsNCj4gKw0KPiArCWlmIChkZXYtPmRldl9v cHMtPmFzeW1fcXBfYXR0YWNoX3Nlc3Npb24oZGV2LCBxcF9pZCwgc2Vzc19wcml2KSkgew0KPiAr CQlDREVWX0xPR19FUlIoImRldl9pZCAlZCBmYWlsZWQgdG8gYXR0YWNoIHFwOiAlZCB3aXRoIHNl c3Npb24iLA0KPiArCQkJCWRldl9pZCwgcXBfaWQpOw0KPiArCQlyZXR1cm4gLUVQRVJNOw0KPiAr CX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9k ZXZfcXVldWVfcGFpcl9kZXRhY2hfYXN5bV9zZXNzaW9uKHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZf dCBxcF9pZCwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKQ0K PiArew0KPiArCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXY7DQo+ICsNCj4gKwlpZiAoIXJ0ZV9j cnlwdG9kZXZfcG1kX2lzX3ZhbGlkX2RldihkZXZfaWQpKSB7DQo+ICsJCUNERVZfTE9HX0VSUigi SW52YWxpZCBkZXZfaWQ9JWQiLCBkZXZfaWQpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9 DQo+ICsNCj4gKwlkZXYgPSAmcnRlX2NyeXB0b19kZXZpY2VzW2Rldl9pZF07DQo+ICsNCj4gKwkv KiBUaGUgQVBJIGlzIG9wdGlvbmFsLCBub3QgcmV0dXJuaW5nIGVycm9yIGlmIGRyaXZlciBkbyBu b3Qgc3V1cG9ydCAqLw0KPiArCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9vcHMt PmFzeW1fcXBfZGV0YWNoX3Nlc3Npb24sIDApOw0KPiArDQo+ICsJdm9pZCAqc2Vzc19wcml2ID0g Z2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc2VzcywgZGV2LT5kcml2ZXJfaWQpOw0KPiAr DQo+ICsJaWYgKGRldi0+ZGV2X29wcy0+YXN5bV9xcF9kZXRhY2hfc2Vzc2lvbihkZXYsIHFwX2lk LCBzZXNzX3ByaXYpKSB7DQo+ICsJCUNERVZfTE9HX0VSUigiZGV2X2lkICVkIGZhaWxlZCB0byBk ZXRhY2ggcXA6ICVkIGZyb20gc2Vzc2lvbiIsDQo+ICsJCQkJZGV2X2lkLCBxcF9pZCk7DQo+ICsJ CXJldHVybiAtRVBFUk07DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g K2ludA0KPiAgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbl9jbGVhcih1aW50OF90IGRldl9pZCwN Cj4gIAkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKnNlc3MpDQo+ICB7DQo+IEBA IC0xMTc2LDYgKzEzNjQsMjIgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0K PiAgfQ0KPiANCj4gIGludA0KPiArcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY2xlYXIodWlu dDhfdCBkZXZfaWQsDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2Vz cykNCj4gK3sNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPiArDQo+ICsJZGV2ID0g cnRlX2NyeXB0b2Rldl9wbWRfZ2V0X2RldihkZXZfaWQpOw0KPiArDQo+ICsJaWYgKGRldiA9PSBO VUxMIHx8IHNlc3MgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlkZXYt PmRldl9vcHMtPmFzeW1fc2Vzc2lvbl9jbGVhcihkZXYsIHNlc3MpOw0KPiArDQo+ICsJcmV0dXJu IDA7DQo+ICt9DQo+ICsNCj4gK2ludA0KPiAgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbl9mcmVl KHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzKQ0KPiAgew0KPiAgCXVpbnQ4 X3QgaTsNCj4gQEAgLTExOTksNiArMTQwMywzMSBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1f c2Vzc2lvbiAqDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAraW50DQo+ICtydGVfY3J5cHRv ZGV2X2FzeW1fc2Vzc2lvbl9mcmVlKHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAq c2VzcykNCj4gK3sNCj4gKwl1aW50OF90IGk7DQo+ICsJdm9pZCAqc2Vzc19wcml2Ow0KPiArCXN0 cnVjdCBydGVfbWVtcG9vbCAqc2Vzc19tcDsNCj4gKw0KPiArCWlmIChzZXNzID09IE5VTEwpDQo+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJLyogQ2hlY2sgdGhhdCBhbGwgZGV2aWNlIHBy aXZhdGUgZGF0YSBoYXMgYmVlbiBmcmVlZCAqLw0KPiArCWZvciAoaSA9IDA7IGkgPCBuYl9kcml2 ZXJzOyBpKyspIHsNCj4gKwkJc2Vzc19wcml2ID0gZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2Rh dGEoc2VzcywgaSk7DQo+ICsJCWlmIChzZXNzX3ByaXYgIT0gTlVMTCkNCj4gKwkJCXJldHVybiAt RUJVU1k7DQo+ICsJfQ0KPiArDQo+ICsJLyogUmV0dXJuIHNlc3Npb24gdG8gbWVtcG9vbCAqLw0K PiArCXNlc3NfbXAgPSBydGVfbWVtcG9vbF9mcm9tX29iaihzZXNzKTsNCj4gKwlydGVfbWVtcG9v bF9wdXQoc2Vzc19tcCwgc2Vzcyk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiAr DQo+ICB1bnNpZ25lZCBpbnQNCj4gIHJ0ZV9jcnlwdG9kZXZfZ2V0X2hlYWRlcl9zZXNzaW9uX3Np emUodm9pZCkNCj4gIHsNCj4gQEAgLTEyMzUsNiArMTQ2NCw1NyBAQCBzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9zeW1fc2Vzc2lvbiAqDQo+ICAJCXJldHVybiBoZWFkZXJfc2l6ZTsNCj4gDQo+ICAJcmV0 dXJuIHByaXZfc2Vzc19zaXplOw0KPiArfQ0KPiArDQo+ICt1bnNpZ25lZCBpbnQNCj4gK3J0ZV9j cnlwdG9kZXZfZ2V0X3N5bV9zZXNzaW9uX3ByaXZhdGVfc2l6ZSh1aW50OF90IGRldl9pZCkNCj4g K3sNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPiArCXVuc2lnbmVkIGludCBoZWFk ZXJfc2l6ZSA9IHNpemVvZih2b2lkICopICogbmJfZHJpdmVyczsNCj4gKwl1bnNpZ25lZCBpbnQg cHJpdl9zZXNzX3NpemU7DQo+ICsNCj4gKwlpZiAoIXJ0ZV9jcnlwdG9kZXZfcG1kX2lzX3ZhbGlk X2RldihkZXZfaWQpKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCWRldiA9IHJ0ZV9jcnlwdG9k ZXZfcG1kX2dldF9kZXYoZGV2X2lkKTsNCj4gKw0KPiArCWlmICgqZGV2LT5kZXZfb3BzLT5zeW1f c2Vzc2lvbl9nZXRfc2l6ZSA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCXByaXZf c2Vzc19zaXplID0gKCpkZXYtPmRldl9vcHMtPnN5bV9zZXNzaW9uX2dldF9zaXplKShkZXYpOw0K PiArDQo+ICsJLyoNCj4gKwkgKiBJZiBzaXplIGlzIGxlc3MgdGhhbiBzZXNzaW9uIGhlYWRlciBz aXplLA0KPiArCSAqIHJldHVybiB0aGUgbGF0dGVyLCBhcyB0aGlzIGd1YXJhbnRlZXMgdGhhdA0K PiArCSAqIHNlc3Npb25sZXNzIG9wZXJhdGlvbnMgd2lsbCB3b3JrDQo+ICsJICovDQo+ICsJaWYg KHByaXZfc2Vzc19zaXplIDwgaGVhZGVyX3NpemUpDQo+ICsJCXJldHVybiBoZWFkZXJfc2l6ZTsN Cj4gKw0KPiArCXJldHVybiBwcml2X3Nlc3Nfc2l6ZTsNCj4gK30NCj4gKw0KPiArDQo+ICt1bnNp Z25lZCBpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX3NpemUo dWludDhfdCBkZXZfaWQpDQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCj4g Kwl1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUgPSBzaXplb2Yodm9pZCAqKSAqIG5iX2RyaXZlcnM7 DQo+ICsJdW5zaWduZWQgaW50IHByaXZfc2Vzc19zaXplOw0KPiArDQo+ICsJaWYgKCFydGVfY3J5 cHRvZGV2X3BtZF9pc192YWxpZF9kZXYoZGV2X2lkKSkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4g KwlkZXYgPSBydGVfY3J5cHRvZGV2X3BtZF9nZXRfZGV2KGRldl9pZCk7DQo+ICsNCj4gKwlpZiAo KmRldi0+ZGV2X29wcy0+YXN5bV9zZXNzaW9uX2dldF9zaXplID09IE5VTEwpDQo+ICsJCXJldHVy biAwOw0KPiArDQo+ICsJcHJpdl9zZXNzX3NpemUgPSAoKmRldi0+ZGV2X29wcy0+YXN5bV9zZXNz aW9uX2dldF9zaXplKShkZXYpOw0KPiArCWlmIChwcml2X3Nlc3Nfc2l6ZSA8IGhlYWRlcl9zaXpl KQ0KPiArCQlyZXR1cm4gaGVhZGVyX3NpemU7DQo+ICsNCj4gKwlyZXR1cm4gcHJpdl9zZXNzX3Np emU7DQo+IA0KPiAgfQ0KPiANCj4gQEAgLTEyNjgsNiArMTU0OCwxMyBAQCBzdHJ1Y3QgcnRlX21l bXBvb2wgKg0KPiAgCQkJc2l6ZW9mKHN0cnVjdCBydGVfY3J5cHRvX3N5bV9vcCkgKw0KPiAgCQkJ cHJpdl9zaXplOw0KPiANCj4gKwlpZiAodHlwZSA9PSBSVEVfQ1JZUFRPX09QX1RZUEVfQVNZTU1F VFJJQykgew0KPiArCQkvKiBvdmVycmlkZSBzaXplIGJ5IHNpemUgb2YgYXN5bSBvcCAqLw0KPiAr CQllbHRfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnRlX2NyeXB0b19vcCkgKw0KPiArCQkJICAgc2l6 ZW9mKHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3ApICsNCj4gKwkJCSAgIHByaXZfc2l6ZTsNCj4g Kwl9DQo+ICsNCj4gIAkvKiBsb29rdXAgbWVtcG9vbCBpbiBjYXNlIGFscmVhZHkgYWxsb2NhdGVk ICovDQo+ICAJc3RydWN0IHJ0ZV9tZW1wb29sICptcCA9IHJ0ZV9tZW1wb29sX2xvb2t1cChuYW1l KTsNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2 LmggYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmgNCj4gaW5kZXggYzhmYTY4 OS4uNzI4NDgzYyAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0 b2Rldi5oDQo+ICsrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuaA0KPiBA QCAtMTc4LDE1ICsxNzgsNDEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltbWV0cmljX2NhcGFi aWxpdHkgew0KPiAgCX07DQo+ICB9Ow0KPiANCj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBDcnlw dG8gQ2FwYWJpbGl0eQ0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5 bW1ldHJpY19jYXBhYmlsaXR5IHsNCj4gKwllbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBl IHhmb3JtX3R5cGU7DQo+ICsJLyoqPCBUcmFuc2Zvcm0gdHlwZTogUlNBL01PREVYUC9ESC9FQ0RI L0RTQS9FQ0RTQS9GRUNDL01PRElOViAqLw0KPiArDQpbRmlvbmFdIElzIHRoZXJlIGEgZml4ZWQg c2V0IG9mIHJ0ZV9jcnlwdG9kZXZfYXN5bV9vcF90eXBlIGZvciBlYWNoIHhmb3JtIHR5cGU/DQpJ ZiBhbnkgdmFyaWFudCBwb3NzaWJsZSB0aGVuIHRoZXJlIHdvdWxkIG5lZWQgdG8gYmUgYSBjYXBh YmlsaXR5IGZpZWxkIGZvciB0aGlzLg0KDQoJUlRFX1NURF9DMTENCj4gKwl1bmlvbiB7DQo+ICsJ CXN0cnVjdCBydGVfY3J5cHRvX3BhcmFtX3JhbmdlIG1vZGxlbjsNCj4gKwkJLyoqPCBSYW5nZSBv ZiBtb2R1bHVzIGxlbmd0aCBzdXBwb3J0ZWQgZm9yIG1vZHVsdXMgYmFzZWQNCj4gKwkJICogYWxn b3M6DQo+ICsJCSAqIFJTQQ0KPiArCQkgKiBNT0RFWFANCj4gKwkJICogTU9ESU5WDQo+ICsJCSAq IERIDQo+ICsJCSAqDQo+ICsJCSAqIFZhbHVlIDAgdG8gbWluIGFuZC9vciBtYXggbWVhbnMgbm8g c3BlY2lmaWMgbGltaXQgYW5kIGxpbWl0DQo+ICsJCSAqIGlzIGltcGxlbWVudGF0aW9uIGRlcGVu ZGVudA0KPiArCQkgKg0KPiArCQkgKi8NCj4gKwl9Ow0KPiArfTsNCj4gKw0KPiAgLyoqIFN0cnVj dHVyZSB1c2VkIHRvIGNhcHR1cmUgYSBjYXBhYmlsaXR5IG9mIGEgY3J5cHRvIGRldmljZSAqLw0K PiAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY2FwYWJpbGl0aWVzIHsNCj4gIAllbnVtIHJ0ZV9jcnlw dG9fb3BfdHlwZSBvcDsNCj4gLQkvKio8IE9wZXJhdGlvbiB0eXBlICovDQo+ICsJLyoqPCBPcGVy YXRpb24gdHlwZTogc3ltbWV0cmljL2FzeW1tZXRyaWMgKi8NCj4gDQo+ICAJUlRFX1NURF9DMTEN Cj4gIAl1bmlvbiB7DQo+ICAJCXN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bW1ldHJpY19jYXBhYmls aXR5IHN5bTsNCj4gIAkJLyoqPCBTeW1tZXRyaWMgb3BlcmF0aW9uIGNhcGFiaWxpdHkgcGFyYW1l dGVycyAqLw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltbWV0cmljX2NhcGFiaWxpdHkg YXN5bTsNCj4gKwkJLyoqPCBBc3ltbWV0cmljIG9wZXJhdGlvbiBjYXBhYmlsaXR5IHBhcmFtZXRl cnMgKi8NCj4gIAl9Ow0KPiAgfTsNCj4gDQo+IEBAIC0yMDEsNyArMjI3LDE3IEBAIHN0cnVjdCBy dGVfY3J5cHRvZGV2X3N5bV9jYXBhYmlsaXR5X2lkeCB7DQo+ICB9Ow0KPiANCj4gIC8qKg0KPiAt ICogIFByb3ZpZGUgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSBmb3IgZGVmaW5lZCBkZXZpY2UgYW5k IGFsZ29yaXRobQ0KPiArICogU3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYXN5bW1ldHJpYyBj cnlwdG8geGZvcm1zDQo+ICsgKiBFYWNoIHhmb3JtIG1hcHMgdG8gb25lIGFzeW0gYWxnb3JpdGht Lg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5 X2lkeCB7DQo+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB0eXBlOw0KPiArCS8q KjwgQXN5bW1ldHJpYyB4Zm9ybSAoYWxnbykgdHlwZSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ ICsgKiBQcm92aWRlIGNhcGFiaWxpdGllcyBhdmFpbGFibGUgZm9yIGRlZmluZWQgZGV2aWNlIGFu ZCBhbGdvcml0aG0NCj4gICAqDQo+ICAgKiBAcGFyYW0JZGV2X2lkCQlUaGUgaWRlbnRpZmllciBv ZiB0aGUgZGV2aWNlLg0KPiAgICogQHBhcmFtCWlkeAkJRGVzY3JpcHRpb24gb2YgY3J5cHRvIGFs Z29yaXRobXMuDQo+IEBAIC0yMTUsNiArMjUxLDIwIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5 bV9jYXBhYmlsaXR5X2lkeCB7DQo+ICAJCWNvbnN0IHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9j YXBhYmlsaXR5X2lkeCAqaWR4KTsNCj4gDQo+ICAvKioNCj4gKyAqICBQcm92aWRlIGNhcGFiaWxp dGllcyBhdmFpbGFibGUgZm9yIGRlZmluZWQgZGV2aWNlIGFuZCBhbGdvcml0aG0NCj4gKyAqDQo+ ICsgKiBAcGFyYW0JZGV2X2lkCQlUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiArICog QHBhcmFtCWFsZ28JCURlc2NyaXB0aW9uIG9mIGNyeXB0byBhbGdvcml0aG1zLg0KPiArICoNCj4g KyAqIEByZXR1cm4NCj4gKyAqICAgLSBSZXR1cm4gZGVzY3JpcHRpb24gb2YgdGhlIGFzeW1tZXRy aWMgY3J5cHRvIGNhcGFiaWxpdHkgaWYgZXhpc3QuDQo+ICsgKiAgIC0gUmV0dXJuIE5VTEwgaWYg dGhlIGNhcGFiaWxpdHkgbm90IGV4aXN0Lg0KPiArICovDQo+ICtjb25zdCBzdHJ1Y3QgcnRlX2Ny eXB0b2Rldl9hc3ltbWV0cmljX2NhcGFiaWxpdHkgKg0KPiArcnRlX2NyeXB0b2Rldl9hc3ltX2Nh cGFiaWxpdHlfZ2V0KHVpbnQ4X3QgZGV2X2lkLA0KPiArCQljb25zdCBzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9hc3ltX2NhcGFiaWxpdHlfaWR4ICppZHgpOw0KPiArDQo+ICsvKioNCj4gICAqIENoZWNr IGlmIGtleSBzaXplIGFuZCBpbml0aWFsIHZlY3RvciBhcmUgc3VwcG9ydGVkDQo+ICAgKiBpbiBj cnlwdG8gY2lwaGVyIGNhcGFiaWxpdHkNCj4gICAqDQo+IEBAIC0yNzAsNiArMzIwLDIxIEBAIHN0 cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9jYXBhYmlsaXR5X2lkeCB7DQo+ICAJCXVpbnQxNl90IGl2 X3NpemUpOw0KPiANCj4gIC8qKg0KPiArICogQ2hlY2sgaWYgbW9kdWx1cyBsZW5ndGggaXMgaW4g c3VwcG9ydGVkIHJhbmdlDQo+ICsgKg0KPiArICogQHBhcmFtCWNhcGFiaWxpdHkJRGVzY3JpcHRp b24gb2YgdGhlIGFzeW1tZXRyaWMgY3J5cHRvIGNhcGFiaWxpdHkuDQo+ICsgKiBAcGFyYW0JbW9k bGVuCQltb2R1bHVzIGxlbmd0aC4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0gUmV0 dXJuIDAgaWYgdGhlIHBhcmFtZXRlcnMgYXJlIGluIHJhbmdlIG9mIHRoZSBjYXBhYmlsaXR5Lg0K PiArICogICAtIFJldHVybiAtMSBpZiB0aGUgcGFyYW1ldGVycyBhcmUgb3V0IG9mIHJhbmdlIG9m IHRoZSBjYXBhYmlsaXR5Lg0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9j YXBhYmlsaXR5X2NoZWNrX21vZGxlbigNCj4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXZf YXN5bW1ldHJpY19jYXBhYmlsaXR5ICpjYXBhYmlsaXR5LA0KPiArCQl1aW50MTZfdCBtb2RsZW4p Ow0KPiArDQo+ICsvKioNCj4gICAqIFByb3ZpZGUgdGhlIGNpcGhlciBhbGdvcml0aG0gZW51bSwg Z2l2ZW4gYW4gYWxnb3JpdGhtIHN0cmluZw0KPiAgICoNCj4gICAqIEBwYXJhbQlhbGdvX2VudW0J QSBwb2ludGVyIHRvIHRoZSBjaXBoZXIgYWxnb3JpdGhtDQo+IEBAIC0zMTQsNiArMzc5LDIyIEBA IHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9jYXBhYmlsaXR5X2lkeCB7DQo+ICBydGVfY3J5cHRv ZGV2X2dldF9hZWFkX2FsZ29fZW51bShlbnVtIHJ0ZV9jcnlwdG9fYWVhZF9hbGdvcml0aG0gKmFs Z29fZW51bSwNCj4gIAkJY29uc3QgY2hhciAqYWxnb19zdHJpbmcpOw0KPiANCj4gKy8qKg0KPiAr ICogUHJvdmlkZSB0aGUgQXN5bW1ldHJpYyB4Zm9ybSBlbnVtLCBnaXZlbiBhbiB4Zm9ybSBzdHJp bmcNCj4gKyAqDQo+ICsgKiBAcGFyYW0JeGZvcm1fZW51bQlBIHBvaW50ZXIgdG8gdGhlIHhmb3Jt IHR5cGUNCj4gKyAqCQkJCWVudW0gdG8gYmUgZmlsbGVkDQo+ICsgKiBAcGFyYW0JeGZvcm1fc3Ry aW5nCXhmb3JtIHN0cmluZw0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqIC0gUmV0dXJuIC0x IGlmIHN0cmluZyBpcyBub3QgdmFsaWQNCj4gKyAqIC0gUmV0dXJuIDAgaXMgdGhlIHN0cmluZyBp cyB2YWxpZA0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfZ2V0X2FzeW1feGZvcm1f ZW51bShlbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlICp4Zm9ybV9lbnVtLA0KPiArCQlj b25zdCBjaGFyICp4Zm9ybV9zdHJpbmcpOw0KPiArDQo+ICsNCj4gIC8qKiBNYWNybyB1c2VkIGF0 IGVuZCBvZiBjcnlwdG8gUE1EIGxpc3QgKi8NCj4gICNkZWZpbmUgUlRFX0NSWVBUT0RFVl9FTkRf T0ZfQ0FQQUJJTElUSUVTX0xJU1QoKSBcDQo+ICAJeyBSVEVfQ1JZUFRPX09QX1RZUEVfVU5ERUZJ TkVEIH0NCj4gQEAgLTM3OSwxNiArNDYwLDk5IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2luZm8g ew0KPiAgCS8qKjwgQXJyYXkgb2YgZGV2aWNlcyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzICovDQo+ IA0KPiAgCXVuc2lnbmVkIG1heF9uYl9xdWV1ZV9wYWlyczsNCj4gLQkvKio8IE1heGltdW0gbnVt YmVyIG9mIHF1ZXVlcyBwYWlycyBzdXBwb3J0ZWQgYnkgZGV2aWNlLiAqLw0KPiArCS8qKjwgTWF4 aW11bSBudW1iZXIgb2YgcXVldWVzIHBhaXJzIHN1cHBvcnRlZCBieSBkZXZpY2UuDQo+ICsJICoN Cj4gKwkgKiBUaGlzIGlzIHRvdGFsIG51bWJlciBvZiBxdWV1ZXMgc3VwcG9ydGVkIGJ5IGRldmlj ZSBhbmQgaW5jbHVzaXZlDQo+ICsJICogb2YgbnVtYmVycyB1c2VkIGZvciBib3RoIHN5bW1ldHJp YyBhbmQgYXN5bW1ldHJpYyBmb3IgUE1EIHRoYXQNCj4gKwkgKiBzdXBwb3J0IHN5bW1ldHJpYyBh bmQgYXN5bW1ldHJpYyBvcCBpLmUuDQo+ICsJICoNCj4gKwkgKiBtYXhfbmJfcXVldWVfcGFpcnMg PSBtYXhfbmJfc3ltbV9xcCArIG1heF9uYl9hc3ltbV9xcA0KPiArCSAqDQo+ICsJICogRm9sbG93 aW5nIHRhYmxlIGRlbW9uc3RhcnRlIHdoYXQgdGhlIHZhbHVlcyBzaG91bGQgYmUgZm9yIGRldmlj ZQ0KPiArCSAqIHdpdGggbWF4IG51bSBvZiAnbicgcXVldWUgcGFpciAoeCA9IGRvbid0IGNhcmUp Og0KPiArCSAqDQo+ICsJICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKwkgKiB8ZGV2X2NhcGEgICAgICAgICAg ICAgICAgfCBtYXhfbmJfYXN5bW1fcXB8IG1heF9uYl9zeW1tX3FwIHwgbWF4X3FwfA0KPiArCSAq ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ICsJICogfCBTeW1tIG9ubHkgICAgICAgICAgICAgIHwgICAgeCAgICAg ICAgICAgfCAwICAgICAgICAgICAgICB8IG4gICAgIHwNCj4gKwkgKiB8IEFzeW1tIG9ubHkgICAg ICAgICAgICAgfCAgICAwICAgICAgICAgICB8IHggICAgICAgICAgICAgIHwgbiAgICAgfA0KPiAr CSAqIHwgc3ltbSthc3ltbSB3LyBmaXhlZCBxcCB8ICAgIHAgICAgICAgICAgIHwgbi1wICAgICAg ICAgICAgfCBuICAgICB8DQo+ICsJICogfCBzeW1tK2FzeW1tIHcvIGFsbCBxcCAgIHwgICAgMCAg ICAgICAgICAgfCAwICAgICAgICAgICAgICB8IG4gICAgIHwNCj4gKwkgKiAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiArCSAqDQo+ICsJICogLSBpZiBkZXZpY2Ugc3VwcG9ydHMgb25seSBhc3ltbWV0cmljLCB0aGVu IG1heF9uYl9xdWV1ZV9wYWlyDQo+ICsJICogICBpbmRpY2F0ZXMgbWF4IHFwIGF2YWlsYWJsZSBm b3IgYXN5bW1ldHJpYyBvcGVyYXRpb25zLg0KPiArCSAqDQo+ICsJICogLSBpZiBkZXZpY2Ugc3Vw cG9ydCBvbmx5IHN5bW1ldHJpYywgdGhlbiBtYXhfbmJfcXVldWVfcGFpcg0KPiArCSAqICAgaW5k aWNhdGVzIG1heCBxcCBhdmFpbGFibGUgZm9yIHN5bW1ldHJpYyBvcGVyYXRpb25zLg0KPiArCSAq DQo+ICsJICogLSBpZiBkZXZpY2Ugc3VwcG9ydCBib3RoIHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJp YyBjcnlwdG8gb3AsDQo+ICsJICogICB0aGVuIG1heF9uYl9xdWV1ZV9wYWlyIGluZGljYXRlcyB0 b3RhbCBudW1iZXIgb2YgYXZhaWxhYmxlDQo+ICsJICogICBxcCBmb3IgYm90aCBvcGVyYXRpb25z Lg0KPiArCSAqDQo+ICsJICogKipTcGVjaWFsIG5vdGUgb24gZGV2aWNlcyBzdXBwb3J0aW5nIHN5 bW0gYW5kIGFzeW1tOg0KPiArCSAqDQo+ICsJICogU3VjaCBkdWFsIGZ1bmN0aW9uIGRldmljZXMg bWF5IG1hbmFnZSBxcCBpbiB2YXJpb3VzIHBvc3NpYmxlIHdheXMuDQo+ICsJICogVGhleSBjYW4g ZWl0aGVyOg0KPiArCSAqDQo+ICsJICogMS4gVXNlIGFsbCBtYXhfbmJfcXVldWVfcGFpciBmb3Ig YW55IG9wZXJhdGlvbiB0eXBlLg0KPiArCSAqICAgIEluIHN1Y2ggY2FzZSwgYXBwIGNhbiBjb25m aWd1cmUgYW55IG9mIHRoZSBhdmFpbGFibGUgcXANCj4gKwkgKiAgICBmb3IgYW55IG9wZXJhaXRv bi4gVGh1cywNCj4gKwkgKiAgICBkZXZfaW5mbyBzaG91bGQgcmV0dXJuIG51bSBxdWV1ZSBwYWly IGRpc3RyaWJ1dGlvbiBhcyBtZW50aW9uZWQNCj4gKwkgKiAgICBpbiByb3cgJ3N5bW0rYXN5bW0g dy8gYWxsIHFwJyBpbiB0YWJsZSBhYm92ZQ0KPiArCSAqDQo+ICsJICogMi4gT3IsIHVzZSBkZWRp Y2F0ZWQgc2V0IG9mIHFwIGZvciBlYWNoIG9wDQo+ICsJICogICAgU3VjaCBkZXZpY2UgUE1Ecywg Y2FuIHRha2UgMiBhcHByb2FjaGVzOg0KPiArCSAqICAgIDEuIEVpdGhlciwgaXQgY2FuIHNob3cg dXAgYXMgMiBzZXBhcmF0ZSBQTURzIHdoZXJlIG9uZSBhcw0KPiArCSAqCSBzeW1tZXRyaWMgb25s eSBhbmQgb3RoZXIgYXN5bW1ldHJpYyBvbmx5LiBpbiBzdWNoIGNhc2UsDQo+ICsJICoJIGRldmlj ZSBpbmZvIHdpbGwgcmV0dXJuIG51bSBxdWV1ZSBwYWlyIGRpc3RyaWJ1dGlvbiBhcw0KPiArCSAq CSBtZW50aW9uZWQgaW4gcm93ICdzeW1tZXRyaWMvYXN5bW1ldHJpYyBvbmx5JyBkZXZpY2UNCj4g KwkgKg0KPiArCSAqICAgIDIuIE9yLCBjYW4gYXBwZWFyIGFzIG9uZSBQTUQgd2l0aCBudW1iZXIg b2YgcXVldWUgcGFpciBkZWRpY2F0ZWQNCj4gKwkgKgkgdG8gZWFjaCBvcGVyYXRpb24gaW4gbWF4 X25iX3N5bW1fcXAgYW5kIG1heF9uYl9hc3ltbV9xcA0KPiArCSAqDQo+ICsJICovDQo+IA0KPiAg CXN0cnVjdCB7DQo+ICAJCXVuc2lnbmVkIG1heF9uYl9zZXNzaW9uczsNCj4gLQkJLyoqPCBNYXhp bXVtIG51bWJlciBvZiBzZXNzaW9ucyBzdXBwb3J0ZWQgYnkgZGV2aWNlLiAqLw0KPiArCQkvKio8 IE1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zIHN1cHBvcnRlZA0KPiArCQkgKiBmb3Igc3ltbWV0 cmljIG9wZXJhdGlvbnMuDQo+ICsJCSAqLw0KPiAgCQl1bnNpZ25lZCBpbnQgbWF4X25iX3Nlc3Np b25zX3Blcl9xcDsNCj4gLQkJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucyBwZXIgcXVl dWUgcGFpci4NCj4gKwkJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBzeW1tZXRyaWMgc2Vzc2lvbnMN Cj4gKwkJICogcGVyIHF1ZXVlIHBhaXIuDQo+ICAJCSAqIERlZmF1bHQgMCBmb3IgaW5maW5pdGUg c2Vzc2lvbnMNCj4gIAkJICovDQo+ICsJCSB1bnNpZ25lZCBpbnQgbWF4X25iX3N5bV9xcDsNCj4g KwkJLyoqPCBNYXhpbXVtIG51bSBvZiBxcCBkZWRpY2F0ZWQgdG8gc3ltbWV0cmljIG9wLg0KPiAr CQkgKiBOQSBmb3IgZGV2aWNlIHRoYXQgc3VwcG9ydCBzeW1tZXRyaWMgb25seS4NCj4gKwkJICog MCBtZWFucyBkZXZpY2UgY2FuIHVzZSBhbGwgbWF4X25iX3F1ZXVlX3BhaXINCj4gKwkJICogZm9y IHN5bW0gb3AuDQo+ICsJCSAqIFBsZWFzZSBub3RlLCB0aGlzIHZhcmlhYmxlIG9ubHkgdGVsbHMg bnVtYmVyIG9mIHF1ZXVlIHBhaXJzDQo+ICsJCSAqIHRoYXQgY2FuIGJlIGVucXVldWVkIHdpdGgg c3ltbWV0cmljIG9wcyBhbmQgZG9lc24ndCByZXZlYWwNCj4gKwkJICogc3BlY2lmaWMgSURzIHVz ZWQgYnkgUE1EcyBmb3IgdGhpcyBvcGVyYXRpb24NCj4gKwkJICoNCj4gKwkJICovDQo+ICAJfSBz eW07DQo+ICsNCj4gKwlzdHJ1Y3Qgew0KPiArCQl1bnNpZ25lZCBpbnQgbWF4X25iX2FzeW1fc2Vz c2lvbnM7DQo+ICsJCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgYXN5bW1ldHJpYyBzZXNzaW9ucyBz dXBwb3J0ZWQgYnkgZGV2aWNlLg0KPiArCQkgKiAwIGluZmluaXRlIGFzIGxvbmcgYXMgcmVzb3Vy Y2VzIGFyZSBhdmFpbGFibGUNCj4gKwkJICovDQo+ICsJCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5 bV9zZXNzaW9uc19wZXJfcXA7DQo+ICsJCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgYXN5bW1ldHJp YyBzZXNzaW9ucyBwZXIgcXVldWUgcGFpci4NCj4gKwkJICogMCBtZWFucyBpbmZpbml0ZSBhcyBs b25nIGFzIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlDQo+ICsJCSAqLw0KPiArCQl1bnNpZ25lZCBp bnQgbWF4X25iX2FzeW1fcXA7DQo+ICsJCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgcXAgZGVkaWNh dGVkIGZvciBhc3ltbSBvcGVyYXRpb24uDQo+ICsJCSAqIDAgbWVhbnMgZGV2aWNlIGNhbiB1c2Ug YWxsIG1heF9uYl9xdWV1ZV9wYWlyIGZvciBhc3ltbSBvcC4NCj4gKwkJICogUGxlYXNlIG5vdGUs IHRoaXMgdmFyaWFibGUgb25seSB0ZWxscyBudW1iZXIgb2YgcXVldWUgcGFpcnMNCj4gKwkJICog dGhhdCBjYW4gYmUgZW5xdWV1ZWQgd2l0aCBhc3ltbWV0cmljIG9wcyBhbmQgZG9lc24ndCByZXZl YWwNCj4gKwkJICogc3BlY2lmaWMgSURzIHVzZWQgYnkgUE1EcyBmb3IgdGhpcyBvcGVyYXRpb24N Cj4gKwkJICoNCj4gKwkJICovDQo+ICsJfSBhc3ltOw0KPiAgfTsNCj4gDQo+ICAjZGVmaW5lIFJU RV9DUllQVE9ERVZfREVUQUNIRUQgICgwKQ0KPiBAQCAtNTEzLDYgKzY3NywyNCBAQCBzdHJ1Y3Qg cnRlX2NyeXB0b2Rldl9jb25maWcgew0KPiAgCWludCBzb2NrZXRfaWQ7CQkJLyoqPCBTb2NrZXQg dG8gYWxsb2NhdGUgcmVzb3VyY2VzIG9uICovDQo+ICAJdWludDE2X3QgbmJfcXVldWVfcGFpcnM7 DQo+ICAJLyoqPCBOdW1iZXIgb2YgcXVldWUgcGFpcnMgdG8gY29uZmlndXJlIG9uIGRldmljZSAq Lw0KPiArDQo+ICsJdWludDE2X3QgbmJfc3ltbV9xcDsNCj4gKwkvKio8IE51bWJlciBvZiBxdWV1 ZSBwYWlyIHRvIGJlIHVzZWQgZm9yIHN5bW1ldHJpYyBvcGVyYXRpb25zLg0KPiArCSAqIE9wdGlv bmFsIGlucHV0Lg0KPiArCSAqIFZhbGlkIGZvciBkZXZpY2Ugc3VwcG9ydGluZyBib3RoIHN5bW1l dHJpYyBhbmQgYXN5bW1ldHJpYy4NCj4gKwkgKiBTaG91bGQgYmUgbGVzcyB0aGFuIGVxdWFsIHRv IHJ0ZV9jcnlwdG9kZXZfaW5mbzptYXhfbmJfc3ltbV9xcC4NCj4gKwkgKiBwbGVhc2Ugbm90ZSB0 aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBhaXIgdG8gYmUgdXNlZA0KPiAr CSAqIGZvciBzeW1tZXRyaWMgb3AgYW5kIGRvZXMgKm5vdCogdGVsbCBzcGVjaWZpYyBJRHMgdG8g YmUgdXNlZC4NCj4gKwkgKi8NCj4gKw0KPiArCXVpbnQxNl90IG5iX2FzeW1tX3FwOw0KPiArCS8q KjwgTnVtYmVyIG9mIHF1ZXVlIHBhaXIgdG8gYmUgdXNlZCBmb3IgYXN5bW1ldHJpYyBvcGVyYXRp b25zLg0KPiArCSAqIE9wdGlvbmFsIGlucHV0Lg0KPiArCSAqIFZhbGlkIGZvciBkZXZpY2Ugc3Vw cG9ydGluZyBib3RoIGFzeW1tZXRyaWMgYW5kIHN5bW1ldHJpYy4NCj4gKwkgKiBTaG91bGQgYmUg bGVzcyB0aGFuIGVxdWFsIHRvIHJ0ZV9jcnlwdG9kZXZfaW5mbzptYXhfbmJfYXN5bW1fcXANCj4g KwkgKiBQbGVhc2Ugbm90ZSB0aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBh aXIgdG8gYmUNCj4gKwkgKiB1c2VkIGZvciBhc3ltbWV0cmljIGFuZCBkb2VzICpub3QqIHNwZWNp ZmljYWxseSB0ZWxsIHFwIElEDQo+ICsJICovDQo+ICB9Ow0KPiANCltGaW9uYV0gVGhlIHBhcmFt cyBmcm9tIGNvbmZpZyBzdHJ1Y3R1cmUgYWJvdmUgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZSB2 YWx1ZXMgaW4gdGhlIGRhdGEgc3RydWN0dXJlDQpUaGlzIGNvZGUgaXMgbWlzc2luZy4NCg0KPiAg LyoqDQo+IEBAIC01OTUsNiArNzc3LDkgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY29uZmlnIHsN Cj4gICAqIEByZXR1cm4NCj4gICAqICAgLSAwOiBTdWNjZXNzLCBxdWV1ZSBwYWlyIGNvcnJlY3Rs eSBzZXQgdXAuDQo+ICAgKiAgIC0gPDA6IFF1ZXVlIHBhaXIgY29uZmlndXJhdGlvbiBmYWlsZWQN Cj4gKyAqDQo+ICsgKiBAbm90ZTogcXVldWUgcGFpciB0byBiZSBzZXR1cCBpbmRlcGVuZGVudCBv ZiBvcGVyYXRpb24gdHlwZS4NCj4gKyAqDQo+ICAgKi8NCj4gIGV4dGVybiBpbnQNCj4gIHJ0ZV9j cnlwdG9kZXZfcXVldWVfcGFpcl9zZXR1cCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXVldWVf cGFpcl9pZCwNCj4gQEAgLTY0NCw2ICs4MjksMjYgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY29u ZmlnIHsNCj4gIGV4dGVybiB1aW50MTZfdA0KPiAgcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2Nv dW50KHVpbnQ4X3QgZGV2X2lkKTsNCj4gDQo+ICsvKioNCj4gKyAqIEdldCB0aGUgbnVtYmVyIG9m IHN5bW1ldHJpYyBxdWV1ZSBwYWlycyBvbiB0aGlzIGNyeXB0byBkZXZpY2UNCj4gKyAqDQo+ICsg KiBAcGFyYW0JZGV2X2lkCQlDcnlwdG8gZGV2aWNlIGlkZW50aWZpZXIuDQo+ICsgKiBAcmV0dXJu DQo+ICsgKiAgIC0gVGhlIG51bWJlciBvZiBjb25maWd1cmVkIHN5bW1ldHJpYyBxdWV1ZSBwYWly cy4NCj4gKyAqLw0KPiArZXh0ZXJuIHVpbnQxNl90DQo+ICtydGVfY3J5cHRvZGV2X3N5bV9xdWV1 ZV9wYWlyX2NvdW50KHVpbnQ4X3QgZGV2X2lkKTsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyAqIEdl dCB0aGUgbnVtYmVyIG9mIGFzeW1tZXRyaWMgcXVldWUgcGFpcnMgb24gdGhpcyBjcnlwdG8gZGV2 aWNlDQo+ICsgKg0KPiArICogQHBhcmFtCWRldl9pZAkJQ3J5cHRvIGRldmljZSBpZGVudGlmaWVy Lg0KPiArICogQHJldHVybg0KPiArICogICAtIFRoZSBudW1iZXIgb2YgY29uZmlndXJlZCBhc3lt bWV0cmljIHF1ZXVlIHBhaXJzLg0KPiArICovDQo+ICtleHRlcm4gdWludDE2X3QNCj4gK3J0ZV9j cnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3QgZGV2X2lkKTsNCj4gDQo+ICAv KioNCj4gICAqIFJldHJpZXZlIHRoZSBnZW5lcmFsIEkvTyBzdGF0aXN0aWNzIG9mIGEgZGV2aWNl Lg0KPiBAQCAtNzk1LDYgKzEwMDAsMTAgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfZGF0YSB7DQo+ ICAJLyoqPCBBcnJheSBvZiBwb2ludGVycyB0byBxdWV1ZSBwYWlycy4gKi8NCj4gIAl1aW50MTZf dCBuYl9xdWV1ZV9wYWlyczsNCj4gIAkvKio8IE51bWJlciBvZiBkZXZpY2UgcXVldWUgcGFpcnMu ICovDQo+ICsJdWludDE2X3QgbmJfc3ltX3FwOw0KPiArCS8qKjwgTnVtYmVyIG9mIHN5bW1ldHJp YyBxdWV1ZSBwYWlycy4gKi8NCj4gKwl1aW50MTZfdCBuYl9hc3ltX3FwOw0KPiArCS8qKjwgTnVt YmVyIG9mIGFzeW1tZXRyaWMgcXVldWUgcGFpcnMuICovDQo+IA0KPiAgCXZvaWQgKmRldl9wcml2 YXRlOw0KPiAgCS8qKjwgUE1ELXNwZWNpZmljIHByaXZhdGUgZGF0YSAqLw0KPiBAQCAtOTAwLDYg KzExMDksMTEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gew0KPiAgCS8qKjwg UHJpdmF0ZSBzZXNzaW9uIG1hdGVyaWFsICovDQo+ICB9Ow0KPiANCj4gKy8qKiBDcnlwdG9kZXYg YXN5bW1ldHJpYyBjcnlwdG8gc2Vzc2lvbiAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5 bV9zZXNzaW9uIHsNCj4gKwlfX2V4dGVuc2lvbl9fIHZvaWQgKnNlc3NfcHJpdmF0ZV9kYXRhWzBd Ow0KPiArCS8qKjwgUHJpdmF0ZSBhc3ltbWV0cmljIHNlc3Npb24gbWF0ZXJpYWwgKi8NCj4gK307 DQo+IA0KPiAgLyoqDQo+ICAgKiBDcmVhdGUgc3ltbWV0cmljIGNyeXB0byBzZXNzaW9uIGhlYWRl ciAoZ2VuZXJpYyB3aXRoIG5vIHByaXZhdGUgZGF0YSkNCj4gQEAgLTkxNCw2ICsxMTI4LDE4IEBA IHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4gIHJ0ZV9jcnlwdG9kZXZfc3lt X3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCk7DQo+IA0KPiAgLyoq DQo+ICsgKiBDcmVhdGUgYXN5bW1ldHJpYyBjcnlwdG8gc2Vzc2lvbiBoZWFkZXIgKGdlbmVyaWMg d2l0aCBubyBwcml2YXRlIGRhdGEpDQo+ICsgKg0KPiArICogQHBhcmFtICAgbWVtcG9vbCAgICBt ZW1wb29sIHRvIGFsbG9jYXRlIGFzeW1tZXRyaWMgc2Vzc2lvbg0KPiArICogICAgICAgICAgICAg ICAgICAgICBvYmplY3RzIGZyb20NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAtIE9uIHN1Y2Nlc3Mg cmV0dXJuIHBvaW50ZXIgdG8gYXN5bS1zZXNzaW9uDQo+ICsgKiAgLSBPbiBmYWlsdXJlIHJldHVy bnMgTlVMTA0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKg0K PiArcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBydGVfbWVtcG9vbCAq bWVtcG9vbCk7DQo+ICsNCj4gKy8qKg0KPiAgICogRnJlZXMgc3ltbWV0cmljIGNyeXB0byBzZXNz aW9uIGhlYWRlciwgYWZ0ZXIgY2hlY2tpbmcgdGhhdCBhbGwNCj4gICAqIHRoZSBkZXZpY2UgcHJp dmF0ZSBkYXRhIGhhcyBiZWVuIGZyZWVkLCByZXR1cm5pbmcgaXQNCj4gICAqIHRvIGl0cyBvcmln aW5hbCBtZW1wb29sLg0KPiBAQCAtOTI5LDYgKzExNTUsMjEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfc3ltX3Nlc3Npb24gKg0KPiAgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbl9mcmVlKHN0cnVj dCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzKTsNCj4gDQo+ICAvKioNCj4gKyAqIEZy ZWVzIGFzeW1tZXRyaWMgY3J5cHRvIHNlc3Npb24gaGVhZGVyLCBhZnRlciBjaGVja2luZyB0aGF0 IGFsbA0KPiArICogdGhlIGRldmljZSBwcml2YXRlIGRhdGEgaGFzIGJlZW4gZnJlZWQsIHJldHVy bmluZyBpdA0KPiArICogdG8gaXRzIG9yaWdpbmFsIG1lbXBvb2wuDQo+ICsgKg0KPiArICogQHBh cmFtICAgc2VzcyAgICAgU2Vzc2lvbiBoZWFkZXIgdG8gYmUgZnJlZWQuDQo+ICsgKg0KPiArICog QHJldHVybg0KPiArICogIC0gMCBpZiBzdWNjZXNzZnVsLg0KPiArICogIC0gLUVJTlZBTCBpZiBz ZXNzaW9uIGlzIE5VTEwuDQo+ICsgKiAgLSAtRUJVU1kgaWYgbm90IGFsbCBkZXZpY2UgcHJpdmF0 ZSBkYXRhIGhhcyBiZWVuIGZyZWVkLg0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZf YXN5bV9zZXNzaW9uX2ZyZWUoc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNz KTsNCj4gKw0KPiArLyoqDQo+ICAgKiBGaWxsIG91dCBwcml2YXRlIGRhdGEgZm9yIHRoZSBkZXZp Y2UgaWQsIGJhc2VkIG9uIGl0cyBkZXZpY2UgdHlwZS4NCj4gICAqDQo+ICAgKiBAcGFyYW0gICBk ZXZfaWQgICBJRCBvZiBkZXZpY2UgdGhhdCB3ZSB3YW50IHRoZSBzZXNzaW9uIHRvIGJlIHVzZWQg b24NCj4gQEAgLTk1MCw2ICsxMTkxLDI3IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNz aW9uICoNCj4gIAkJCXN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCk7DQo+IA0KPiAgLyoqDQo+ ICsgKiBJbml0aWFsaXplIGFzeW1tZXRyaWMgc2Vzc2lvbiBvbiBhIGRldmljZSB3aXRoIHNwZWNp ZmljIGFzeW1tZXRyaWMgeGZvcm0NCj4gKyAqDQo+ICsgKiBAcGFyYW0gICBkZXZfaWQgICBJRCBv ZiBkZXZpY2UgdGhhdCB3ZSB3YW50IHRoZSBzZXNzaW9uIHRvIGJlIHVzZWQgb24NCj4gKyAqIEBw YXJhbSAgIHNlc3MgICAgIFNlc3Npb24gdG8gYmUgc2V0IHVwIG9uIGEgZGV2aWNlDQo+ICsgKiBA cGFyYW0gICB4Zm9ybXMgICBBc3ltbWV0cmljIGNyeXB0byB0cmFuc2Zvcm0gb3BlcmF0aW9ucyB0 byBhcHBseSBvbiBmbG93DQo+ICsgKiAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgd2l0aCB0 aGlzIHNlc3Npb24NCj4gKyAqIEBwYXJhbSAgIG1lbXBvb2wgIE1lbXBvb2wgdG8gYmUgdXNlZCBm b3IgaW50ZXJuYWwgYWxsb2NhdGlvbi4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSBP biBzdWNjZXNzLCB6ZXJvLg0KPiArICogIC0gLUVJTlZBTCBpZiBpbnB1dCBwYXJhbWV0ZXJzIGFy ZSBpbnZhbGlkLg0KPiArICogIC0gLUVOT1RTVVAgaWYgY3J5cHRvIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IHRoZSBjcnlwdG8gdHJhbnNmb3JtLg0KPiArICogIC0gLUVOT01FTSBpZiB0aGUgcHJp dmF0ZSBzZXNzaW9uIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQuDQo+ICsgKi8NCj4gK2ludA0KPiAr cnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25faW5pdCh1aW50OF90IGRldl9pZCwNCj4gKwkJCXN0 cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcywNCj4gKwkJCXN0cnVjdCBydGVf Y3J5cHRvX2FzeW1feGZvcm0gKnhmb3JtcywNCj4gKwkJCXN0cnVjdCBydGVfbWVtcG9vbCAqbWVt cG9vbCk7DQo+ICsNCj4gKy8qKg0KPiAgICogRnJlZXMgcHJpdmF0ZSBkYXRhIGZvciB0aGUgZGV2 aWNlIGlkLCBiYXNlZCBvbiBpdHMgZGV2aWNlIHR5cGUsDQo+ICAgKiByZXR1cm5pbmcgaXQgdG8g aXRzIG1lbXBvb2wuDQo+ICAgKg0KPiBAQCAtOTY1LDcgKzEyMjcsMjMgQEAgc3RydWN0IHJ0ZV9j cnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nl c3Npb24gKnNlc3MpOw0KPiANCj4gIC8qKg0KPiArICogRnJlZXMgcmVzb3VyY2VzIGhlbGQgYnkg YXN5bW1ldHJpYyBzZXNzaW9uIGR1cmluZyBydGVfY3J5cHRvZGV2X3Nlc3Npb25faW5pdA0KPiAr ICoNCj4gKyAqIEBwYXJhbSAgIGRldl9pZCAgIElEIG9mIGRldmljZSB0aGF0IHVzZXMgdGhlIGFz eW1tZXRyaWMgc2Vzc2lvbi4NCj4gKyAqIEBwYXJhbSAgIHNlc3MgICAgIEFzeW1tZXRyaWMgc2Vz c2lvbiBzZXR1cCBvbiBkZXZpY2UgdXNpbmcNCj4gKyAqCQkJCQkgcnRlX2NyeXB0b2Rldl9zZXNz aW9uX2luaXQNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAtIDAgaWYgc3VjY2Vzc2Z1bC4NCj4gKyAq ICAtIC1FSU5WQUwgaWYgZGV2aWNlIGlzIGludmFsaWQgb3Igc2Vzc2lvbiBpcyBOVUxMLg0KPiAr ICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2NsZWFyKHVpbnQ4X3Qg ZGV2X2lkLA0KPiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKTsN Cj4gKw0KPiArLyoqDQo+ICAgKiBHZXQgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBzZXNzaW9uLCBm b3IgYWxsIHJlZ2lzdGVyZWQgZHJpdmVycy4NCj4gKyAqIEZvciBkZXZpY2VzIHN1cHBvcnRpbmcg Ym90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMsIGl0IHNob3VsZA0KPiArICogcmV0dXJuIGhl YWRlciBzaXplIGluY2x1c2l2ZSBvZiBib3RoDQpbRmlvbmFdID8gVGhpcyBBUEkgaXMgbm90IGNh bGxlZCBvbiBhIGRldmljZS4NCkFzIHRoZSBoZHIgc2l6ZSBpcyBqdXN0IGEgbGlzdCBvZiBwb2lu dGVycywgaXQncyBpbmRlcGVuZGVudCBvZiBzeW0vYXN5bQ0KDQo+ICAgKg0KPiAgICogQHJldHVy bg0KPiAgICogICBTaXplIG9mIHRoZSBoZWFkZXIgc2Vzc2lvbi4NCj4gQEAgLTk3NSw2ICsxMjUz LDggQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiANCj4gIC8qKg0KPiAg ICogR2V0IHRoZSBzaXplIG9mIHRoZSBwcml2YXRlIHNlc3Npb24gZGF0YSBmb3IgYSBkZXZpY2Uu DQo+ICsgKiBpZiBkZXZpY2Ugc3VwcG9ydCBib3RoIHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJpYywg aXQNCj4gKyAqIHJldHVybiBzaXplIGluY2x1c2l2ZSBvZiBib3RoDQpbRmlvbmFdIEFyZSB5b3Ug c3VnZ2VzdGluZyB0aGUgc2FtZSBzZXNzaW9uIHBvb2wgbWlnaHQgYmUgdXNlZA0KZm9yIGJvdGgg c3ltIGFuZCBhc3ltIHNlc3Npb25zPw0KU2VlbXMgdW5saWtlbHksIGJ1dCBpZiBhbiBhcHBsaWNh dGlvbiBjaG9zZSB0bywgaXQgc2VlbXMgYmV0dGVyDQogdGhhdCBpdCB3b3VsZCBkbyBpdCBleHBs aWNpdGx5LA0KZS5nLiBnZXQgYXN5bSBhbmQgc3ltIHByaXZhdGUgc2l6ZXMsIHNhbWUgYXMgaXQg Z2V0cyBzaXplIGZyb20gdGhlIG90aGVyIA0KZHJpdmVycyBhbmQgc2l6ZXMgZm9yIHRoZSBtYXhp bXVtLg0KSWYgbWVhbmluZyBpcyBjaGFuZ2VkIGFzIHlvdSBzdWdnZXN0IHRoZW4gc3ltIGFwcGxp Y2F0aW9ucyBhbHJlYWR5DQppbXBsZW1lbnRlZCB3aWxsIGxpa2VseSBlbmQgdXAgd2l0aCBwb29s cyBzaXplZCBmb3IgYSBzZXNzaW9uIHNpemUgdGhleSBkb27igJl0IG5lZWQuDQoNCkFzIEkgdGhp bmsgdGhlIGNvbWJpbmVkIHBvb2wgY2FzZSB1bmxpa2VseSwgaXQgbWFrZXMgbW9yZSBzZW5zZSB0 byBtZSB0aGF0IHRoaXMNCmZuIHNob3VsZCBoYXZlIGNvbW1lbnQgY2hhbmdlZCB0byBzYXkgaXQg cmV0dXJucyBvbmx5IHN5bSBzZXNzaW9uIHNpemUNCmZvciBiYWNrd2FyZHMgY2FwYWJpbGl0eSBy ZWFzb25zLCBidXQgd2lsbCBiZSBkZXByZWNhdGVkDQphbmQgYXBwbHMgc2hvdWxkIHVzZSBnZXRf c3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplIGluc3RlYWQuDQoNCj4gICAqDQo+ICAgKiBAcGFyYW0J ZGV2X2lkCQlUaGUgZGV2aWNlIGlkZW50aWZpZXIuDQo+ICAgKg0KPiBAQCAtOTg2LDYgKzEyNjYs MzIgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgcnRlX2NyeXB0b2Rl dl9nZXRfcHJpdmF0ZV9zZXNzaW9uX3NpemUodWludDhfdCBkZXZfaWQpOw0KPiANCj4gIC8qKg0K PiArICogR2V0IHRoZSBzaXplIG9mIHRoZSBwcml2YXRlIGRhdGEgZm9yIHN5bW1ldHJpYyBzZXNz aW9uDQo+ICsgKiBvbiBkZXZpY2UNCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2X2lkCQlUaGUgZGV2 aWNlIGlkZW50aWZpZXIuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIFNpemUgb2Yg dGhlIHN5bW1ldHJpYyBzZXNzaW9uIHByaXZhdGUgZGF0YSwgaWYgc3VjY2Vzc2Z1bA0KPiArICog ICAtIDAgaWYgZGV2aWNlIGlzIGludmFsaWQgb3IgZG9lcyBub3QgaGF2ZSBwcml2YXRlIHNlc3Np b24NCj4gKyAqLw0KPiArdW5zaWduZWQgaW50DQo+ICtydGVfY3J5cHRvZGV2X2dldF9zeW1fc2Vz c2lvbl9wcml2YXRlX3NpemUodWludDhfdCBkZXZfaWQpOw0KPiArDQo+ICsvKioNCj4gKyAqIEdl dCB0aGUgc2l6ZSBvZiB0aGUgcHJpdmF0ZSBkYXRhIGZvciBhc3ltbWV0cmljIHNlc3Npb24NCj4g KyAqIG9uIGRldmljZQ0KPiArICoNCj4gKyAqIEBwYXJhbQlkZXZfaWQJCVRoZSBkZXZpY2UgaWRl bnRpZmllci4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0gU2l6ZSBvZiB0aGUgYXN5 bW1ldHJpYyBwcml2YXRlIGRhdGEsIGlmIHN1Y2Nlc3NmdWwNCj4gKyAqICAgLSAwIGlmIGRldmlj ZSBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGhhdmUgcHJpdmF0ZSBzZXNzaW9uDQo+ICsgKi8NCj4g K3Vuc2lnbmVkIGludA0KPiArcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVf c2l6ZSh1aW50OF90IGRldl9pZCk7DQo+ICsNCj4gKy8qKg0KPiAgICogQXR0YWNoIHF1ZXVlIHBh aXIgd2l0aCBzeW0gc2Vzc2lvbi4NCj4gICAqDQo+ICAgKiBAcGFyYW0JZGV2X2lkCQlEZXZpY2Ug dG8gd2hpY2ggdGhlIHNlc3Npb24gd2lsbCBiZSBhdHRhY2hlZC4NCj4gQEAgLTEwMDIsNiArMTMw OCwzMSBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqDQo+ICAJCXN0cnVjdCBy dGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzaW9uKTsNCj4gDQo+ICAvKioNCj4gKyAqIEF0 dGFjaCBxdWV1ZSBwYWlyIHdpdGggYXN5bSBzZXNzaW9uLg0KPiArICoNCj4gKyAqIEBwYXJhbQlk ZXZfaWQJCURldmljZSB0byB3aGljaCB0aGUgc2Vzc2lvbiBpcyBhdHRhY2hlZC4NCj4gKyAqIEBw YXJhbQlxcF9pZAkJUXVldWUgcGFpciB0byB3aGljaCB0aGUgc2Vzc2lvbiB3aWxsIGJlDQo+ICsg KgkJCQlhdHRhY2hlZC4NCj4gKyAqIEBwYXJhbQlzZXNzaW9uCQlBc3ltbWV0cmljIFNlc3Npb24g cG9pbnRlciBwcmV2aW91c2x5DQo+ICsgKgkJCQlhbGxvY2F0ZWQgYnkNCj4gKyAqCQkJCSpydGVf Y3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jcmVhdGUqLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4g KyAqICAtIE9uIHN1Y2Nlc3MsIHplcm8uDQo+ICsgKiAgLSBPbiBmYWlsdXJlLCBhIG5lZ2F0aXZl IHZhbHVlLg0KPiArICoNCj4gKyAqIEBub3RlIDogYXBwIGNhbiBkZWRpY2F0ZSBhIHFwX2lkIHRv IHNwZWNpZmljIG9wZXJhdGlvbiB0eXBlOnN5bW0vYXN5bW0NCj4gKyAqIGJ5IGNhbGxpbmcgcnRl X2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgYmVmb3JlDQo+ ICsgKiBlbnF1ZXVlX2J1cnN0KCkgY2FsbC4gUE1EIHdpdGggU1lNTUVUUklDICYgQVNZTU1FVFJJ QyBmZWF0dXJlIGZsYWcgc2V0LA0KPiArICogY2FuIGludGVybmFsbHkgYmluZCB0aGUgbG9naWNh bCBxcF9pZCB0byBhY3R1YWwgcGh5c2ljYWwgcXBfaWQgaGVyZSBhbmQNCj4gKyAqIGRlZGljYXRl IHNwZWNpZmljIHFwX2lkIHRvIHBlcmZvcm0gc3BlY2lmaWMgb3BfdHlwZShzeW1tZXRyaWMgb3IN Cj4gKyAqIGFzeW1tZXRyaWMpLg0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfcXVl dWVfcGFpcl9hdHRhY2hfYXN5bV9zZXNzaW9uKHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxcF9p ZCwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzaW9uKTsNCj4g Kw0KPiArLyoqDQo+ICAgKiBEZXRhY2ggcXVldWUgcGFpciB3aXRoIHN5bSBzZXNzaW9uLg0KPiAg ICoNCj4gICAqIEBwYXJhbQlkZXZfaWQJCURldmljZSB0byB3aGljaCB0aGUgc2Vzc2lvbiBpcyBh dHRhY2hlZC4NCj4gQEAgLTEwMTgsNiArMTM0OSwyMyBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9z eW1fc2Vzc2lvbiAqDQo+ICAJCXN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNz aW9uKTsNCj4gDQo+ICAvKioNCj4gKyAqIERldGFjaCBxdWV1ZSBwYWlyIGZyb20gYXN5bSBzZXNz aW9uLg0KPiArICoNCj4gKyAqIEBwYXJhbQlkZXZfaWQJCURldmljZSB0byB3aGljaCB0aGUgc2Vz c2lvbiBpcyBhdHRhY2hlZC4NCj4gKyAqIEBwYXJhbQlxcF9pZAkJUXVldWUgcGFpciB0byB3aGlj aCB0aGUgc2Vzc2lvbiBpcyBhdHRhY2hlZC4NCj4gKyAqIEBwYXJhbQlzZXNzaW9uCQlBc3ltbWV0 cmljIFNlc3Npb24gcG9pbnRlciBwcmV2aW91c2x5IGF0dGFjaGVkDQo+ICsgKgkJCQlieSBjYWxs aW5nDQo+ICsgKgkJCQkqcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2F0dGFjaF9hc3ltX3Nlc3Np b24qLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAtIE9uIHN1Y2Nlc3MsIHplcm8uDQo+ ICsgKiAgLSBPbiBmYWlsdXJlLCBhIG5lZ2F0aXZlIHZhbHVlLg0KPiArICovDQo+ICtpbnQNCj4g K3J0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9kZXRhY2hfYXN5bV9zZXNzaW9uKHVpbnQ4X3QgZGV2 X2lkLCB1aW50MTZfdCBxcF9pZCwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNz aW9uICpzZXNzaW9uKTsNCj4gKw0KPiArLyoqDQo+ICAgKiBQcm92aWRlIGRyaXZlciBpZGVudGlm aWVyLg0KPiAgICoNCj4gICAqIEBwYXJhbSBuYW1lDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl X2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5jIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRl X2NyeXB0b2Rldl9wbWQuYw0KPiBpbmRleCBmMmFhYzI0Li40NDM5YThlIDEwMDY0NA0KPiAtLS0g YS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5jDQo+ICsrKyBiL2xpYi9s aWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1kLmMNCj4gQEAgLTY2LDYgKzY2LDIwIEBA DQo+ICAJCQlnb3RvIGZyZWVfa3ZsaXN0Ow0KPiANCj4gIAkJcmV0ID0gcnRlX2t2YXJnc19wcm9j ZXNzKGt2bGlzdCwNCj4gKwkJCQlSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfQVNZTV9RUF9BUkcs DQo+ICsJCQkJJnJ0ZV9jcnlwdG9kZXZfcG1kX3BhcnNlX3VpbnRfYXJnLA0KPiArCQkJCSZwYXJh bXMtPm1heF9uYl9hc3ltX3FwKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlnb3RvIGZyZWVf a3ZsaXN0Ow0KPiArDQo+ICsJCXJldCA9IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsDQo+ICsJ CQkJUlRFX0NSWVBUT0RFVl9QTURfTUFYX05CX1NZTV9RUF9BUkcsDQo+ICsJCQkJJnJ0ZV9jcnlw dG9kZXZfcG1kX3BhcnNlX3VpbnRfYXJnLA0KPiArCQkJCSZwYXJhbXMtPm1heF9uYl9zeW1fcXAp Ow0KPiArCQlpZiAocmV0IDwgMCkNCj4gKwkJCWdvdG8gZnJlZV9rdmxpc3Q7DQo+ICsNCltGaW9u YV0gIm1heF9uYl9xdWV1ZV9wYWlyIiBpcyBwYXNzZWQgaW4gdG8gYXJncyBhbmQgcGFyc2VkLiBT dG9yZWQgaW4gaW5pdF9wYXJhbXMsDQpwYXNzZWQgdG8gZGV2aWNlIGNyZWF0aW9uLiBBbmQgdGhl biBpZ25vcmVkLCBub3QgdXNlZCBhdCBhbGwuIFNvIG5vIG5lZWQgdG8gYWRkIG5ldyANCm1heF9u Yl9hc3ltX3FwIGFuZCBtYXhfbmJfc3ltX3FwIHRvIGVpdGhlciBhcmdzIG9yIGluaXRfcGFyYW1z LiBUaGV5J3JlIG5vdA0KdXNlZCBlaXRoZXIgaW4gdGhpcyBSRkMuDQpXZSBzaG91bGQgZGVwcmVj YXRlIHRoZSBjdXJyZW50IHBhcmFtIGZyb20gYXJncyBhbmQgaW5pdF9wYXJhbXMuDQoNClBNRHMg aGFyZGNvZGUgdGhlIHZhbHVlIHRoZXkgcmV0dXJuIGluIHJ0ZV9jcnlwdG9kZXZfaW5mby4NCj4g KwkJcmV0ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwNCj4gIAkJCQlSVEVfQ1JZUFRPREVW X1BNRF9NQVhfTkJfU0VTU19BUkcsDQo+ICAJCQkJJnJ0ZV9jcnlwdG9kZXZfcG1kX3BhcnNlX3Vp bnRfYXJnLA0KPiAgCQkJCSZwYXJhbXMtPm1heF9uYl9zZXNzaW9ucyk7DQo+IEBAIC0xMDksOSAr MTIzLDEyIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2ICoNCj4gIAkJCWRldmljZS0+ZHJpdmVyLT5u YW1lLCBuYW1lKTsNCj4gDQo+ICAJQ0RFVl9MT0dfSU5GTygiWyVzXSAtIEluaXRpYWxpc2F0aW9u IHBhcmFtZXRlcnMgLSBuYW1lOiAlcywiDQo+IC0JCQkic29ja2V0IGlkOiAlZCwgbWF4IHF1ZXVl IHBhaXJzOiAldSwgbWF4IHNlc3Npb25zOiAldSIsDQo+ICsJCQkic29ja2V0IGlkOiAlZCwgbWF4 IHF1ZXVlIHBhaXJzOiAldSwgIg0KPiArCQkJIm1heCBzeW0gcXVldWUgcGFpZDogJXUsIG1heCBh c3ltIHF1ZXVlIHBhaXIgJXUsICINCj4gKwkJCSJtYXggc2Vzc2lvbnM6ICV1IiwNCj4gIAkJCWRl dmljZS0+ZHJpdmVyLT5uYW1lLCBuYW1lLA0KPiAgCQkJcGFyYW1zLT5zb2NrZXRfaWQsIHBhcmFt cy0+bWF4X25iX3F1ZXVlX3BhaXJzLA0KPiArCQkJcGFyYW1zLT5tYXhfbmJfYXN5bV9xcCwgcGFy YW1zLT5tYXhfbmJfc3ltX3FwLA0KPiAgCQkJcGFyYW1zLT5tYXhfbmJfc2Vzc2lvbnMpOw0KPiAN Cj4gIAkvKiBhbGxvY2F0ZSBkZXZpY2Ugc3RydWN0dXJlICovDQo+IGRpZmYgLS1naXQgYS9saWIv bGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5oIGIvbGliL2xpYnJ0ZV9jcnlwdG9k ZXYvcnRlX2NyeXB0b2Rldl9wbWQuaA0KPiBpbmRleCAwODk4NDhlLi4yNzJiNDg5IDEwMDY0NA0K PiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5oDQo+ICsrKyBi L2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1kLmgNCj4gQEAgLTYwLDE4ICs2 MCwyNSBAQA0KPiANCj4gICNkZWZpbmUgUlRFX0NSWVBUT0RFVl9QTURfREVGQVVMVF9NQVhfTkJf UVVFVUVfUEFJUlMJOA0KPiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9ERUZBVUxUX01BWF9O Ql9TRVNTSU9OUwkyMDQ4DQo+ICsvKiBBbGxvdyBhbGwgcXAgdG8gYmUgdXNlZCBmb3Igc3ltICov DQo+ICsjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX0RFRkFVTFRfTUFYX05CX1NZTV9RUAkJMA0K PiArLyogQWxsb3cgYWxsIHFwIHRvIGJlIHVzZWQgZm9yIGFzeW0gKi8NCj4gKyNkZWZpbmUgUlRF X0NSWVBUT0RFVl9QTURfREVGQVVMVF9NQVhfTkJfQVNZTV9RUAkwDQo+IA0KPiAgI2RlZmluZSBS VEVfQ1JZUFRPREVWX1BNRF9OQU1FX0FSRwkJCSgibmFtZSIpDQo+ICAjZGVmaW5lIFJURV9DUllQ VE9ERVZfUE1EX01BWF9OQl9RUF9BUkcJCQkoIm1heF9uYl9xdWV1ZV9wYWlycyIpDQo+ICAjZGVm aW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TRVNTX0FSRwkJKCJtYXhfbmJfc2Vzc2lvbnMi KQ0KPiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9TT0NLRVRfSURfQVJHCQkJKCJzb2NrZXRf aWQiKQ0KPiAtDQo+ICsjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9BU1lNX1FQX0FS RwkJKCJtYXhfbmJfYXN5bV9xcCIpDQo+ICsjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9O Ql9TWU1fUVBfQVJHCQkoIm1heF9uYl9zeW1fcXAiKQ0KPiANCj4gIHN0YXRpYyBjb25zdCBjaGFy ICogY29uc3QgY3J5cHRvZGV2X3BtZF92YWxpZF9wYXJhbXNbXSA9IHsNCj4gIAlSVEVfQ1JZUFRP REVWX1BNRF9OQU1FX0FSRywNCj4gIAlSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfUVBfQVJHLA0K PiAgCVJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TRVNTX0FSRywNCj4gLQlSVEVfQ1JZUFRPREVW X1BNRF9TT0NLRVRfSURfQVJHDQo+ICsJUlRFX0NSWVBUT0RFVl9QTURfU09DS0VUX0lEX0FSRywN Cj4gKwlSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfQVNZTV9RUF9BUkcsDQo+ICsJUlRFX0NSWVBU T0RFVl9QTURfTUFYX05CX1NZTV9RUF9BUkcNCj4gIH07DQo+IA0KPiAgLyoqDQo+IEBAIC04NCw2 ICs5MSwxMCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9wbWRfaW5pdF9wYXJhbXMgew0KPiAgCWlu dCBzb2NrZXRfaWQ7DQo+ICAJdW5zaWduZWQgaW50IG1heF9uYl9xdWV1ZV9wYWlyczsNCj4gIAl1 bnNpZ25lZCBpbnQgbWF4X25iX3Nlc3Npb25zOw0KPiArCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5 bV9xcDsNCj4gKwkvKio8IG1heGltdW0gbnVtYmVyIG9mIHFwIHRvIGJlIHVzZWQgZm9yIGFzeW1t ZXRyaWMgb3BzICovDQo+ICsJdW5zaWduZWQgaW50IG1heF9uYl9zeW1fcXA7DQo+ICsJLyoqPCBt YXhpbXVtIG51bWJlciBvZiBxcCB0byBiZSB1c2VkIGZvciBzeW1tZXRyaWMgb3BzICovDQo+ICB9 Ow0KPiANCj4gIC8qKiBHbG9iYWwgc3RydWN0dXJlIHVzZWQgZm9yIG1haW50YWluaW5nIHN0YXRl IG9mIGFsbG9jYXRlZCBjcnlwdG8gZGV2aWNlcyAqLw0KPiBAQCAtMjc1LDcgKzI4NiwyOSBAQCB0 eXBlZGVmIGludCAoKmNyeXB0b2Rldl9xdWV1ZV9wYWlyX3JlbGVhc2VfdCkoc3RydWN0IHJ0ZV9j cnlwdG9kZXYgKmRldiwNCj4gIHR5cGVkZWYgdWludDMyX3QgKCpjcnlwdG9kZXZfcXVldWVfcGFp cl9jb3VudF90KShzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2KTsNCj4gDQo+ICAvKioNCj4gLSAq IENyZWF0ZSBhIHNlc3Npb24gbWVtcG9vbCB0byBhbGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQo+ICsg KiBHZXQgbnVtYmVyIG9mIGF2YWlsYWJsZSBzeW1tZXRyaWMgcXVldWUgcGFpcnMgb2YgYSBkZXZp Y2UuDQo+ICsgKg0KPiArICogQHBhcmFtCWRldglDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4gKyAq DQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAtIFJldHVybnMgbnVtYmVyIG9mIHN5bW1ldHJpYyBxdWV1 ZSBwYWlycw0KPiArICovDQo+ICt0eXBlZGVmIHVpbnQzMl90ICgqY3J5cHRvZGV2X3N5bV9xdWV1 ZV9wYWlyX2NvdW50X3QpKA0KPiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7DQo+ICsN Cj4gKy8qKg0KPiArICogR2V0IG51bWJlciBvZiBhdmFpbGFibGUgYXN5bW1ldHJpYyBxdWV1ZSBw YWlycyBvZiBhIGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2CUNyeXB0byBkZXZpY2Ug cG9pbnRlcg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqIC0gUmV0dXJucyBudW1iZXIgb2Yg c3ltbWV0cmljIHF1ZXVlIHBhaXJzDQo+ICsgKi8NCj4gK3R5cGVkZWYgdWludDMyX3QgKCpjcnlw dG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50X3QpKA0KPiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9k ZXYgKmRldik7DQo+ICsNCltGaW9uYV0gSXMgc29tZXRoaW5nIGNhbGxpbmcgZWl0aGVyIG9mIGFi b3ZlIGZucz8gSWYgbm90IGJldHRlciB0byByZW1vdmUgdGhlIGFzeW0gb25lLg0KVGhlIHN5bSBv bmUgc2hvdWxkIGJlIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4g DQoNCj4gKy8qKg0KPiArICogQ3JlYXRlIGEgc3ltbWV0cmljIHNlc3Npb24gbWVtcG9vbCB0byBh bGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQo+ICAgKg0KPiAgICogQHBhcmFtCWRldgkJQ3J5cHRvIGRl dmljZSBwb2ludGVyDQo+ICAgKiBAcGFyYW0JbmJfb2JqcwkJbnVtYmVyIG9mIHNlc3Npb25zIG9i amVjdHMgaW4gbWVtcG9vbA0KPiBAQCAtMjkwLDYgKzMyMywyMSBAQCB0eXBlZGVmIGludCAoKmNy eXB0b2Rldl9zeW1fY3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCj4gIAkJc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2JqcywNCj4gIAkJdW5zaWduZWQgb2JqX2NhY2hlX3Np emUsIGludCBzb2NrZXRfaWQpOw0KPiANCj4gKy8qKg0KPiArICogQ3JlYXRlIGEgYXN5bW1ldHJp YyBzZXNzaW9uIG1lbXBvb2wgdG8gYWxsb2NhdGUgc2Vzc2lvbnMgZnJvbQ0KPiArICoNCj4gKyAq IEBwYXJhbQlkZXYJCUNyeXB0byBkZXZpY2UgcG9pbnRlcg0KPiArICogQHBhcmFtCW5iX29ianMJ CU51bWJlciBvZiBhc3ltbWV0cmljIHNlc3Npb25zIG9iamVjdHMgaW4gbWVtcG9vbA0KPiArICog QHBhcmFtCW9ial9jYWNoZQlsLWNvcmUgb2JqZWN0IGNhY2hlIHNpemUsIHNlZSAqcnRlX3Jpbmdf Y3JlYXRlKg0KPiArICogQHBhcmFtCXNvY2tldF9pZAlTb2NrZXQgSWQgdG8gYWxsb2NhdGUgIG1l bXBvb2wgb24uDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogLSBPbiBzdWNjZXNzIHJldHVy bnMgYSBwb2ludGVyIHRvIGEgcnRlX21lbXBvb2wNCj4gKyAqIC0gT24gZmFpbHVyZSByZXR1cm5z IGEgTlVMTCBwb2ludGVyDQo+ICsgKi8NCj4gK3R5cGVkZWYgaW50ICgqY3J5cHRvZGV2X2FzeW1f Y3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwg dW5zaWduZWQgbmJfb2JqcywNCj4gKwkJdW5zaWduZWQgb2JqX2NhY2hlX3NpemUsIGludCBzb2Nr ZXRfaWQpOw0KPiANCltGaW9uYV0gc2Vzc2lvbiBwb29scyBhcmUgbm90IGNyZWF0ZWQgbm93IHBl ciBkZXZpY2Ugc28gdGhpcyBpcyBuZXZlciBjYWxsZWQgZm9yIHN5bSBhbmQgDQpzaG91bGQgYmUg ZGVwcmVjYXRlZC4gU28gbm8gbmVlZCB0byBhZGQgZm9yIGFzeW0NCiANCj4gIC8qKg0KPiAgICog R2V0IHRoZSBzaXplIG9mIGEgY3J5cHRvZGV2IHNlc3Npb24NCj4gQEAgLTMwMiw2ICszNTAsMTcg QEAgdHlwZWRlZiBpbnQgKCpjcnlwdG9kZXZfc3ltX2NyZWF0ZV9zZXNzaW9uX3Bvb2xfdCkoDQo+ ICAgKi8NCj4gIHR5cGVkZWYgdW5zaWduZWQgKCpjcnlwdG9kZXZfc3ltX2dldF9zZXNzaW9uX3By aXZhdGVfc2l6ZV90KSgNCj4gIAkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7DQo+ICsvKioN Cj4gKyAqIEdldCB0aGUgc2l6ZSBvZiBhIGFzeW1tZXRyaWMgY3J5cHRvZGV2IHNlc3Npb24NCj4g KyAqDQo+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4gKyAqDQo+ICsg KiBAcmV0dXJuDQo+ICsgKiAgLSBPbiBzdWNjZXNzIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIHNl c3Npb24gc3RydWN0dXJlIGZvciBkZXZpY2UNCj4gKyAqICAtIE9uIGZhaWx1cmUgcmV0dXJucyAw DQo+ICsgKi8NCj4gK3R5cGVkZWYgdW5zaWduZWQgKCpjcnlwdG9kZXZfYXN5bV9nZXRfc2Vzc2lv bl9wcml2YXRlX3NpemVfdCkoDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYpOw0KPiAN Cj4gIC8qKg0KPiAgICogQ29uZmlndXJlIGEgQ3J5cHRvIHNlc3Npb24gb24gYSBkZXZpY2UuDQo+ IEBAIC0zMjEsNyArMzgwLDI0IEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5bV9jb25maWd1 cmVfc2Vzc2lvbl90KShzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KPiAgCQlzdHJ1Y3QgcnRl X2NyeXB0b19zeW1feGZvcm0gKnhmb3JtLA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1f c2Vzc2lvbiAqc2Vzc2lvbiwNCj4gIAkJc3RydWN0IHJ0ZV9tZW1wb29sICptcCk7DQo+IC0NCj4g Ky8qKg0KPiArICogQ29uZmlndXJlIGEgQ3J5cHRvIGFzeW1tZXRyaWMgc2Vzc2lvbiBvbiBhIGRl dmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4g KyAqIEBwYXJhbQl4Zm9ybQkJU2luZ2xlIG9yIGNoYWluIG9mIGNyeXB0byB4Zm9ybXMNCj4gKyAq IEBwYXJhbQlwcml2X3Nlc3MJUG9pbnRlciB0byBjcnlwdG9kZXYncyBwcml2YXRlIHNlc3Npb24g c3RydWN0dXJlDQo+ICsgKiBAcGFyYW0JbXAJCU1lbXBvb2wgd2hlcmUgdGhlIHByaXZhdGUgc2Vz c2lvbiBpcyBhbGxvY2F0ZWQNCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSBSZXR1cm5z IDAgaWYgcHJpdmF0ZSBzZXNzaW9uIHN0cnVjdHVyZSBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNz ZnVsbHkuDQo+ICsgKiAgLSBSZXR1cm5zIC1FSU5WQUwgaWYgaW5wdXQgcGFyYW1ldGVycyBhcmUg aW52YWxpZC4NCj4gKyAqICAtIFJldHVybnMgLUVOT1RTVVAgaWYgY3J5cHRvIGRldmljZSBkb2Vz IG5vdCBzdXBwb3J0IHRoZSBjcnlwdG8gdHJhbnNmb3JtLg0KPiArICogIC0gUmV0dXJucyAtRU5P TUVNIGlmIHRoZSBwcml2YXRlIHNlc3Npb24gY291bGQgbm90IGJlIGFsbG9jYXRlZC4NCj4gKyAq Lw0KPiArdHlwZWRlZiBpbnQgKCpjcnlwdG9kZXZfYXN5bV9jb25maWd1cmVfc2Vzc2lvbl90KShz dHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hm b3JtICp4Zm9ybSwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNz aW9uLA0KPiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKTsNCj4gIC8qKg0KPiAgICogRnJlZSBk cml2ZXIgcHJpdmF0ZSBzZXNzaW9uIGRhdGEuDQo+ICAgKg0KPiBAQCAtMzMyLDYgKzQwOCwxNSBA QCB0eXBlZGVmIHZvaWQgKCpjcnlwdG9kZXZfc3ltX2ZyZWVfc2Vzc2lvbl90KShzdHJ1Y3QgcnRl X2NyeXB0b2RldiAqZGV2LA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAq c2Vzcyk7DQo+IA0KPiAgLyoqDQo+ICsgKiBGcmVlIGFzeW1tZXRyaWMgc2Vzc2lvbiBwcml2YXRl IGRhdGEuDQo+ICsgKg0KPiArICogQHBhcmFtCWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQo+ ICsgKiBAcGFyYW0Jc2VzcwkJQ3J5cHRvZGV2IHNlc3Npb24gc3RydWN0dXJlDQo+ICsgKi8NCj4g K3R5cGVkZWYgdm9pZCAoKmNyeXB0b2Rldl9hc3ltX2ZyZWVfc2Vzc2lvbl90KShzdHJ1Y3QgcnRl X2NyeXB0b2RldiAqZGV2LA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24g KnNlc3MpOw0KPiArDQo+ICsvKioNCj4gICAqIE9wdGlvbmFsIEFQSSBmb3IgZHJpdmVycyB0byBh dHRhY2ggc2Vzc2lvbnMgd2l0aCBxdWV1ZSBwYWlyLg0KPiAgICogQHBhcmFtCWRldgkJQ3J5cHRv IGRldmljZSBwb2ludGVyDQo+ICAgKiBAcGFyYW0JcXBfaWQJCXF1ZXVlIHBhaXIgaWQgZm9yIGF0 dGFjaGluZyBzZXNzaW9uDQo+IEBAIC0zNDMsNiArNDI4LDE4IEBAIHR5cGVkZWYgaW50ICgqY3J5 cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2F0dGFjaF9zZXNzaW9uX3QpKA0KPiAgCQkgIHN0cnVjdCBy dGVfY3J5cHRvZGV2ICpkZXYsDQo+ICAJCSAgdWludDE2X3QgcXBfaWQsDQo+ICAJCSAgdm9pZCAq c2Vzc2lvbl9wcml2YXRlKTsNCj4gKy8qKg0KPiArICogT3B0aW9uYWwgQVBJIGZvciBkcml2ZXJz IHRvIGF0dGFjaCBhc3ltbWV0cmljIHNlc3Npb24gd2l0aCBxdWV1ZSBwYWlyLg0KPiArICogQHBh cmFtCWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQo+ICsgKiBAcGFyYW0JcXBfaWQJCVF1ZXVl IHBhaXIgaWQgZm9yIGF0dGFjaGluZyBzZXNzaW9uDQo+ICsgKiBAcGFyYW0JcHJpdl9zZXNzICAg ICAgIFBvaW50ZXIgdG8gY3J5cHRvZGV2J3MgcHJpdmF0ZSBzZXNzaW9uIHN0cnVjdHVyZQ0KPiAr ICogQHJldHVybg0KPiArICogIC0gUmV0dXJuIDAgb24gc3VjY2Vzcw0KPiArICovDQo+ICt0eXBl ZGVmIGludCAoKmNyeXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCkoDQo+ ICsJCSAgc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwNCj4gKwkJICB1aW50MTZfdCBxcF9pZCwN Cj4gKwkJICB2b2lkICpzZXNzaW9uX3ByaXZhdGUpOw0KPiANCj4gIC8qKg0KPiAgICogT3B0aW9u YWwgQVBJIGZvciBkcml2ZXJzIHRvIGRldGFjaCBzZXNzaW9ucyBmcm9tIHF1ZXVlIHBhaXIuDQo+ IEBAIC0zNTcsNiArNDU0LDE5IEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5bV9xdWV1ZV9w YWlyX2RldGFjaF9zZXNzaW9uX3QpKA0KPiAgCQkgIHVpbnQxNl90IHFwX2lkLA0KPiAgCQkgIHZv aWQgKnNlc3Npb25fcHJpdmF0ZSk7DQo+IA0KPiArLyoqDQo+ICsgKiBPcHRpb25hbCBBUEkgZm9y IGRyaXZlcnMgdG8gZGV0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiBmcm9tIHF1ZXVlIHBhaXIuDQo+ ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4gKyAqIEBwYXJhbQlxcF9p ZAkJcXVldWUgcGFpciBpZCBmb3IgZGV0YWNoaW5nIHNlc3Npb24NCj4gKyAqIEBwYXJhbQlwcml2 X3Nlc3MgICAgICAgUG9pbnRlciB0byBjcnlwdG9kZXYncyBwcml2YXRlIHNlc3Npb24gc3RydWN0 dXJlDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSBSZXR1cm4gMCBvbiBzdWNjZXNzDQo+ICsgKi8N Cj4gK3R5cGVkZWYgaW50ICgqY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9kZXRhY2hfc2Vzc2lv bl90KSgNCj4gKwkJICBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KPiArCQkgIHVpbnQxNl90 IHFwX2lkLA0KPiArCQkgIHZvaWQgKnNlc3Npb25fcHJpdmF0ZSk7DQo+ICsNCj4gIC8qKiBDcnlw dG8gZGV2aWNlIG9wZXJhdGlvbnMgZnVuY3Rpb24gcG9pbnRlciB0YWJsZSAqLw0KPiAgc3RydWN0 IHJ0ZV9jcnlwdG9kZXZfb3BzIHsNCj4gIAljcnlwdG9kZXZfY29uZmlndXJlX3QgZGV2X2NvbmZp Z3VyZTsJLyoqPCBDb25maWd1cmUgZGV2aWNlLiAqLw0KPiBAQCAtMzgwLDE3ICs0OTAsMzIgQEAg c3RydWN0IHJ0ZV9jcnlwdG9kZXZfb3BzIHsNCj4gIAljcnlwdG9kZXZfcXVldWVfcGFpcl9zdG9w X3QgcXVldWVfcGFpcl9zdG9wOw0KPiAgCS8qKjwgU3RvcCBhIHF1ZXVlIHBhaXIuICovDQo+ICAJ Y3J5cHRvZGV2X3F1ZXVlX3BhaXJfY291bnRfdCBxdWV1ZV9wYWlyX2NvdW50Ow0KPiAtCS8qKjwg R2V0IGNvdW50IG9mIHRoZSBxdWV1ZSBwYWlycy4gKi8NCj4gLQ0KPiArCS8qKjwgR2V0IHRvdGFs IGNvdW50IG9mIHRoZSBxdWV1ZSBwYWlycyhzeW1tZXRyaWMrYXN5bW1ldHJpYykuICovDQo+ICsJ Y3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2NvdW50X3Qgc3ltX3F1ZXVlX3BhaXJfY291bnQ7DQo+ ICsJLyoqPCBHZXQgY291bnQgb2YgdGhlIHN5bW1ldHJpYyBxdWV1ZSBwYWlycy4gKi8NCj4gKwlj cnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50X3QgYXN5bV9xdWV1ZV9wYWlyX2NvdW50Ow0K PiArCS8qKjwgR2V0IGNvdW50IG9mIHRoZSBhc3ltbWV0cmljIHF1ZXVlIHBhaXJzLiAqLw0KPiAg CWNyeXB0b2Rldl9zeW1fZ2V0X3Nlc3Npb25fcHJpdmF0ZV9zaXplX3Qgc2Vzc2lvbl9nZXRfc2l6 ZTsNCj4gLQkvKio8IFJldHVybiBwcml2YXRlIHNlc3Npb24uICovDQo+ICsJLyoqPCBSZXR1cm4g cHJpdmF0ZSBzaXplIGZvciBhIHNlc3Npb24gKi8NCj4gKwljcnlwdG9kZXZfc3ltX2dldF9zZXNz aW9uX3ByaXZhdGVfc2l6ZV90IHN5bV9zZXNzaW9uX2dldF9zaXplOw0KPiArCS8qKjwgUmV0dXJu IHByaXZhdGUgc2l6ZSBmb3Igc3ltbWV0cmljIGNyeXB0by4gKi8NCj4gKwljcnlwdG9kZXZfc3lt X2dldF9zZXNzaW9uX3ByaXZhdGVfc2l6ZV90IGFzeW1fc2Vzc2lvbl9nZXRfc2l6ZTsNCj4gKwkv Kio8IFJldHVybiBwcml2YXRlIHNpemUgZm9yIGFzeW1tZXRyaWMgY3J5cHRvLiAqLw0KPiAgCWNy eXB0b2Rldl9zeW1fY29uZmlndXJlX3Nlc3Npb25fdCBzZXNzaW9uX2NvbmZpZ3VyZTsNCj4gIAkv Kio8IENvbmZpZ3VyZSBhIENyeXB0byBzZXNzaW9uLiAqLw0KW0Zpb25hXSBUaGlzIHNob3VsZCBy ZWFsbHkgYmUgcmVuYW1lZCBzeW1fc2Vzc2lvbl9jb25maWd1cmUsIHNhbWUgZm9yIHNlc3Npb25f Y2xlYXIsDQpxcF9hdHRhY2hfc2Vzc2lvbiBhbmQgcXBfZGV0YWNoX3Nlc3Npb24NCg0KPiArCWNy eXB0b2Rldl9hc3ltX2NvbmZpZ3VyZV9zZXNzaW9uX3QgYXN5bV9zZXNzaW9uX2NvbmZpZ3VyZTsN Cj4gKwkvKio8IENvbmZpZ3VyZSBhc3ltbWV0cmljIENyeXB0byBzZXNzaW9uLiAqLw0KPiAgCWNy eXB0b2Rldl9zeW1fZnJlZV9zZXNzaW9uX3Qgc2Vzc2lvbl9jbGVhcjsNCj4gIAkvKio8IENsZWFy IGEgQ3J5cHRvIHNlc3Npb25zIHByaXZhdGUgZGF0YS4gKi8NCj4gKwljcnlwdG9kZXZfYXN5bV9m cmVlX3Nlc3Npb25fdCBhc3ltX3Nlc3Npb25fY2xlYXI7DQo+ICsJLyoqPCBDbGVhciBhIENyeXB0 byBzZXNzaW9ucyBwcml2YXRlIGRhdGEuICovDQo+ICAJY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWly X2F0dGFjaF9zZXNzaW9uX3QgcXBfYXR0YWNoX3Nlc3Npb247DQo+ICAJLyoqPCBBdHRhY2ggc2Vz c2lvbiB0byBxdWV1ZSBwYWlyLiAqLw0KPiAtCWNyeXB0b2Rldl9zeW1fcXVldWVfcGFpcl9kZXRh Y2hfc2Vzc2lvbl90IHFwX2RldGFjaF9zZXNzaW9uOw0KPiArCWNyeXB0b2Rldl9hc3ltX3F1ZXVl X3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBhc3ltX3FwX2F0dGFjaF9zZXNzaW9uOw0KPiArCS8qKjwg QXR0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiB0byBxdWV1ZSBwYWlyLiAqLw0KPiArCWNyeXB0b2Rl dl9zeW1fcXVldWVfcGFpcl9hdHRhY2hfc2Vzc2lvbl90IHFwX2RldGFjaF9zZXNzaW9uOw0KPiAr CS8qKjwgRGV0YWNoIHNlc3Npb24gZnJvbSBxdWV1ZSBwYWlyLiAqLw0KW0Zpb25hXSB0eXBvIChi YXNlZCBvbiBhIHR5cG8gSSB0aGluayB3YXMgZml4ZWQgaW4gYSByZWNlbnQgcGF0Y2gpDQo+ICsJ Y3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9hdHRhY2hfc2Vzc2lvbl90IGFzeW1fcXBfZGV0YWNo X3Nlc3Npb247DQo+ICAJLyoqPCBEZXRhY2ggc2Vzc2lvbiBmcm9tIHF1ZXVlIHBhaXIuICovDQo+ ICB9Ow0KPiANCj4gQEAgLTUzNSw2ICs2NjAsMTkgQEAgdWludDhfdCBydGVfY3J5cHRvZGV2X2Fs bG9jYXRlX2RyaXZlcihzdHJ1Y3QgY3J5cHRvZGV2X2RyaXZlciAqY3J5cHRvX2RydiwNCj4gIAlz ZXNzLT5zZXNzX3ByaXZhdGVfZGF0YVtkcml2ZXJfaWRdID0gcHJpdmF0ZV9kYXRhOw0KPiAgfQ0K PiANCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCAqDQo+ICtnZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVf ZGF0YShjb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MsDQo+ICsJ CXVpbnQ4X3QgZHJpdmVyX2lkKSB7DQo+ICsJcmV0dXJuIHNlc3MtPnNlc3NfcHJpdmF0ZV9kYXRh W2RyaXZlcl9pZF07DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArc2V0X2Fz eW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9u ICpzZXNzLA0KPiArCQl1aW50OF90IGRyaXZlcl9pZCwgdm9pZCAqcHJpdmF0ZV9kYXRhKQ0KPiAr ew0KPiArCXNlc3MtPnNlc3NfcHJpdmF0ZV9kYXRhW2RyaXZlcl9pZF0gPSBwcml2YXRlX2RhdGE7 DQo+ICt9DQo+ICsNCj4gICNpZmRlZiBfX2NwbHVzcGx1cw0KPiAgfQ0KPiAgI2VuZGlmDQo+IGRp ZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3ZlcnNpb24ubWFw DQo+IGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl92ZXJzaW9uLm1hcA0KPiBp bmRleCBlYjQ3MzA4Li4zMjMyOTRhIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rl di9ydGVfY3J5cHRvZGV2X3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2 L3J0ZV9jcnlwdG9kZXZfdmVyc2lvbi5tYXANCj4gQEAgLTg1LDMgKzg1LDI0IEBAIERQREtfMTcu MTEgew0KPiAgCXJ0ZV9jcnlwdG9kZXZfcG1kX3BhcnNlX2lucHV0X2FyZ3M7DQo+IA0KPiAgfSBE UERLXzE3LjA4Ow0KPiArDQo+ICtFWFBFUklNRU5UQUwgew0KPiArCWdsb2JhbDoNCj4gKw0KW0Zp b25hXSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWxsIHRoZXNlIEFQSXMgYWxzbyBuZWVkcyB0aGUg X2V4cGVyaW1lbnRhbCB0YWcuDQoNCj4gKwlydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJpbGl0eV9n ZXQ7DQo+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX2NhcGFiaWxpdHlfbW9kbGVuOw0KPiArCXJ0ZV9j cnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50Ow0KPiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9z ZXNzaW9uX2NyZWF0ZTsNCj4gKwlydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jbGVhcjsNCj4g KwlydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9mcmVlOw0KPiArCXJ0ZV9jcnlwdG9kZXZfYXN5 bV9zZXNzaW9uX2luaXQ7DQo+ICsJcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV9zZXNzaW9uX3ByaXZh dGVfc2l6ZTsNCj4gKwlydGVfY3J5cHRvZGV2X2dldF9zeW1fc2Vzc2lvbl9wcml2YXRlX3NpemU7 DQo+ICsJcnRlX2NyeXB0b2Rldl9nZXRfeGZvcm1fYWxnb19lbnVtOw0KPiArCXJ0ZV9jcnlwdG9k ZXZfcXVldWVfcGFpcl9hdHRhY2hfYXN5bV9zZXNzaW9uOw0KPiArCXJ0ZV9jcnlwdG9kZXZfcXVl dWVfcGFpcl9kZXRhY2hfYXN5bV9zZXNzaW9uOw0KPiArCXJ0ZV9jcnlwdG9kZXZfc3ltX3F1ZXVl X3BhaXJfY291bnQ7DQo+ICsJcnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0cmluZ3M7DQo+ICsJcnRl X2NyeXB0b19hc3ltX29wZXJhdGlvbl9zdHJpbmdzOw0KPiArDQo+ICt9Ow0KPiAtLQ0KPiAxLjku MQ0KDQo=