From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id DB11BAA94 for ; Wed, 14 Mar 2018 13:12:12 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Mar 2018 05:12:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,470,1515484800"; d="scan'208";a="33769711" Received: from irsmsx151.ger.corp.intel.com ([163.33.192.59]) by FMSMGA003.fm.intel.com with ESMTP; 14 Mar 2018 05:12:09 -0700 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.5]) by IRSMSX151.ger.corp.intel.com ([169.254.4.16]) with mapi id 14.03.0319.002; Wed, 14 Mar 2018 12:12:09 +0000 From: "Trahe, Fiona" To: "'Verma, Shally'" , "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Murthy, Nidadavolu" , "Sahu, Sunila" , "Gupta, Ashish" , "Doherty, Declan" , "Keating, Brian A" , "Griffin, John" , "Tadepalli, Hari K" CC: "De Lara Guarch, Pablo" , "Trahe, Fiona" Thread-Topic: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTlDBfXZBgpUvRIEKp4vWzYT7c5qOaq6DggCpIKwCAAAenMA== Date: Wed, 14 Mar 2018 12:12:08 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B4358934AC7A@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> <348A99DA5F5B7549AA880327E580B4358931B76C@IRSMSX101.ger.corp.intel.com> In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNTJlYTBiMGMtZjI3NS00ODViLTlkMmMtOWZjNGE1ZmYwNjBkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IjVzeUFTYWdOTHY3c3UzaXV2Wk5kU3NhVlhBVEZlMnFEa1Iyd1NcL3ljR0FjPSJ9 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: Wed, 14 Mar 2018 12:12:13 -0000 SGkgU2hhbGx5LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZlcm1h LCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gU2VudDogV2VkbmVz ZGF5LCBNYXJjaCA3LCAyMDE4IDEyOjE2IFBNDQo+IFRvOiBUcmFoZSwgRmlvbmEgPGZpb25hLnRy YWhlQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsgQXRocmV5YSwgTmFyYXlhbmEgUHJhc2FkDQo+ IDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+OyBNdXJ0aHksIE5pZGFkYXZvbHUg PE5pZGFkYXZvbHUuTXVydGh5QGNhdml1bS5jb20+OyBTYWh1LA0KPiBTdW5pbGEgPFN1bmlsYS5T YWh1QGNhdml1bS5jb20+OyBHdXB0YSwgQXNoaXNoIDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47 IERvaGVydHksIERlY2xhbg0KPiA8ZGVjbGFuLmRvaGVydHlAaW50ZWwuY29tPjsgS2VhdGluZywg QnJpYW4gQSA8YnJpYW4uYS5rZWF0aW5nQGludGVsLmNvbT47IEdyaWZmaW4sIEpvaG4NCj4gPGpv aG4uZ3JpZmZpbkBpbnRlbC5jb20+DQo+IENjOiBEZSBMYXJhIEd1YXJjaCwgUGFibG8gPHBhYmxv LmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtkcGRrLWRldl0gW1JG QyB2MSAxLzFdIGxpYi9jcnlwdG9kZXY6IGFkZCBzdXBwb3J0IG9mIGFzeW1tZXRyaWMgY3J5cHRv DQo+IA0KPiBIaSBGaW9uYQ0KPiANCj4gDQo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+RnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86ZmlvbmEudHJhaGVAaW50ZWwuY29tXQ0KPiA+ U2VudDogMDkgRmVicnVhcnkgMjAxOCAyMzo0Mw0KPiA+VG86IGRldkBkcGRrLm9yZzsgQXRocmV5 YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+OyBN dXJ0aHksDQo+IE5pZGFkYXZvbHUNCj4gPjxOaWRhZGF2b2x1Lk11cnRoeUBjYXZpdW0uY29tPjsg U2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3VwdGEsIEFzaGlzaA0KPiA8 QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBWZXJtYSwNCj4gPlNoYWxseSA8U2hhbGx5LlZlcm1h QGNhdml1bS5jb20+OyBEb2hlcnR5LCBEZWNsYW4gPGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT47 IEtlYXRpbmcsIEJyaWFuIEENCj4gPGJyaWFuLmEua2VhdGluZ0BpbnRlbC5jb20+Ow0KPiA+R3Jp ZmZpbiwgSm9obiA8am9obi5ncmlmZmluQGludGVsLmNvbT4NCj4gPkNjOiBUcmFoZSwgRmlvbmEg PGZpb25hLnRyYWhlQGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFibG8uZGUu bGFyYS5ndWFyY2hAaW50ZWwuY29tPg0KPiA+U3ViamVjdDogUkU6IFtkcGRrLWRldl0gW1JGQyB2 MSAxLzFdIGxpYi9jcnlwdG9kZXY6IGFkZCBzdXBwb3J0IG9mIGFzeW1tZXRyaWMgY3J5cHRvDQo+ ID4NCj4gPkhpIFNoYWxseSwNCj4gPkNvbW1lbnRzIGJlbG93Lg0KPiA+DQo+ID4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRw ZGsub3JnXSBPbiBCZWhhbGYgT2YgU2hhbGx5IFZlcm1hDQo+ID4+IFNlbnQ6IFR1ZXNkYXksIEph bnVhcnkgMjMsIDIwMTggOTo1NCBBTQ0KPiA+PiBUbzogRG9oZXJ0eSwgRGVjbGFuIDxkZWNsYW4u ZG9oZXJ0eUBpbnRlbC5jb20+DQo+ID4+IENjOiBkZXZAZHBkay5vcmc7IHBhdGhyZXlhQGNhdml1 bW5ldHdvcmtzLmNvbTsgbm11cnRoeUBjYXZpdW1uZXR3b3Jrcy5jb207DQo+ID4+IHNzYWh1QGNh dml1bW5ldHdvcmtzLmNvbTsgYWd1cHRhQGNhdml1bW5ldHdvcmtzLmNvbTsgU2hhbGx5IFZlcm1h DQo+ID4+IDxzdmVybWFAY2F2aXVtbmV0d29ya3MuY29tPg0KPiA+PiBTdWJqZWN0OiBbZHBkay1k ZXZdIFtSRkMgdjEgMS8xXSBsaWIvY3J5cHRvZGV2OiBhZGQgc3VwcG9ydCBvZiBhc3ltbWV0cmlj IGNyeXB0bw0KPiA+Pg0KPiANCj4gLy9zbmlwDQo+IA0KPiA+DQo+ID4+ICsJUlRFX0NSWVBUT19B U1lNX1hGT1JNX0ZFQ0MsDQo+ID4+ICsJLyoqPCBGdW5kYW1lbnRhbCBFbGxpcHRpYyBjdXJ2ZSBv cGVyYXRpb25zLg0KPiA+PiArCSAqIFBlcmZvcm0gZWxsaXB0aWMgY3VydmUgb3BlcmF0aW9uOg0K PiA+PiArCSAqIGFkZCwgZG91YmxlIHBvaW50LCBtdWx0aXBsaWNhdGlvbg0KPiA+PiArCSAqIFJl ZmVyIHRvIGVudW0gcnRlX2NyeXB0b19mZWNjX29wdHlwZQ0KPiA+PiArCSAqLw0KPiA+PiArCVJU RV9DUllQVE9fQVNZTV9YRk9STV9NT0RJTlYsDQo+ID4+ICsJLyoqPCBNb2R1bGFyIEludmVyc2Ug Ki8NCj4gPltGaW9uYV0gd291bGQgYmUgbmljZXIgdG8gZ3JvdXAgbW9kaW52IHdpdGggbW9kZXhw DQo+IA0KPiBbU2hhbGx5XSBJIHRob3VnaHQgb2YgaXQgYnV0IGhhdmluZyBhIHhmb3JtIFJURV9D UllQVE9fWEZPUk1fTU9EIHdpdGggdHdvIG9wcw0KPiBSVEVfQ1JZUFRPX09QX01PRF9FWFAgYW5k IE1PRF9JTlYNCj4gZG9lc27igJl0IHNlZW0gdG8gcHJvdmlkZSBhbnkgYmVuZWZpdC4gT3IgZG8g eW91IGhhdmUgc29tZXRoaW5nIGVsc2UgaW4gbWluZD8NCltGaW9uYV0gSSBvbmx5IG1lYW50IHRv IGxpc3QgdGhlbSBiZXNpZGUgZWFjaCBvdGhlciBpbiB0aGUgZW51bS4gIA0KDQo+IEluIGFkZGl0 aW9uLCBJIGFtIHRoaW5raW5nIHByb2JhYmx5IHdlIGRvbuKAmXQgbmVlZCBzZXNzaW9ucyBmb3Ig bW9kZXhwIG9yIG1vZGludiBvcHMuIEkgYW0gdGhpbmtpbmcgdG8NCj4gY2hhbmdlIHRoZWlyIHN1 cHBvcnQgYXMgc2Vzc2lvbmxlc3Mgb25seS4NCj4gQXBwIGNhbiBkaXJlY3RseSBhdHRhY2ggeGZv cm0gdG8gY29tcHV0ZSBtb2RleHAgb3IgaW52ZXJzZSB0byBvcC4gV2hhdCBkbyB5b3Ugc3VnZ2Vz dD8NCltGaW9uYV0gVGhhdCdzIG9rIGZvciBtZS4NCg0KPiA+PiArCVJURV9DUllQVE9fQVNZTV9Y Rk9STV9UWVBFX0xJU1RfRU5EDQo+ID4+ICsJLyoqPCBFbmQgb2YgbGlzdCAqLw0KPiA+PiArfTsN Cj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsgKiBBc3ltbWV0cmljIGNyeXB0b2dyIG9wZXJhdGlv biB0eXBlIHZhcmlhbnRzDQo+ID5bRmlvbmFdIHR5cG86IFVzZSBjcnlwdG8gb3IgY3J5cHRvZ3Jh cGhpYw0KPiA+DQo+ID4+ICsgKi8NCj4gPj4gK2VudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUg ew0KPiA+PiArCVJURV9DUllQVE9fQVNZTV9PUF9OT1RfU1BFQ0lGSUVEID0gMSwNCj4gPltGaW9u YV0gV2h5IGRvZXMgdGhpcyBzdGFydCBhdCAxPw0KPiA+QW5kIGlzIGl0IG5lY2Vzc2FyeT8NCj4g Pg0KPiBbU2hhbGx5XSAgV2UgbmVlZCB0byBpbmRpY2F0ZSBsaXN0IG9mIHN1cHBvcnRlZCBvcCBp biB4Zm9ybSBjYXBhYmlsaXR5IHN0cnVjdHVyZS4gQmVjYXVzZSBhbiBpbXBsZW1lbnRhdGlvbg0K PiBtYXkgc3VwcG9ydCBSU0EgZW5jcnlwdCBhbmQgZGVjcnlwdCBidXQgbm90IFJTQSBTaWduIGFu ZCB2ZXJpZnkuIE9yLCBDYW4gc3VwcG9ydCBEU0EgU2lnbiBjb21wdXRlIGJ1dA0KPiBub3QgdmVy aWZ5Lg0KPiBTbywgaXQgd2FzIGFkZGVkIHRvIGluZGljYXRlIGVuZC1vZi1hcnJheSBtYXJrZXIg KHRob3VnaCBkb2VzbuKAmXQgbmVlZCB0byBiZSAxIGZvciB0aGF0IHJlYXNvbikuIGJ1dCBub3cN Cj4gd2hlbiBJIHRoaW5rIHRvIHJlLWRlc2lnbiBpdHMgc3VwcG9ydCwgdGhlbiBpdCB3b24ndCBi ZSBuZWVkZWQuDQo+IFNvLCBJIHRob3VnaHQgcmF0aGVyIHRoYW4gY2Fycnlpbmcgb3BfdHlwZSBh cnJheSwgSSBjYW4gYWRkIGFuIG9wX3R5cGUgYml0bWFzayBpbiB4Zm9ybSBjYXBhYmlsaXR5IHRv IHNob3cNCj4gc3VwcG9ydGVkIG9wcy4NCltGaW9uYV0gSSB0aGluayBhIGJpdG1hc2sgaXMgb2su IFdvdWxkIG9ubHkgbmVlZCBhbiBhcnJheSBpZiB0aGVyZSB3ZXJlIG90aGVyIHBhcmFtcyB3aG9z ZSBjYXBhYmlsaXRpZXMgd291bGQNCiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgb3BfdHlwZS4gRS5n LiBsaWtlIHJhbmdlIG9mIGRpZ2VzdF9zaXplIGluIHN5bSBkZXBlbmRzIG9uIHRoZSBhbGdvLiBC dXQgZG9lcyBjb2RlIGJlbG93DQpub3QgbmVlZCBhIHhmb3JtX3R5cGUgaW5wdXQ/IE9yIGlzIGNh cGEgdGhlIGNhcGFiaWxpdHkgZm9yIG9uZSBzcGVjaWZpYyB4Zm9ybV90eXBlPw0KDQo+IEV4YW1w bGUgY2FwYWJpbGl0eSBjaGVjayBjb2RlIHRoZW4gd291bGQgbG9vayBsaWtlOg0KPiBpbnQgcnRl X2NyeXB0b19hc3ltX2NoZWNrX29wX3R5cGUgKCBjb25zdCBydGVfY3J5cHRvX2FzeW1fY2FwYWJp bHRpZXMgKmNhcGEsIGludCBvcF90eXBlKSB7DQo+IAlJZihjYXBhLT5vcF90eXBlcyAmICgxIDw8 IG9wX3R5cGUpKQ0KPiAJCXJldHVybiAwOw0KPiAJcmV0dXJuIC0xOw0KPiB9DQo+IA0KPiBQbGVh c2UgbGV0IG1lIGtub3cgeW91ciBmZWVkYmFjaywgaWYgeW91IGhhdmUgYW55IHByZWZlcmVuY2Vz IGhlcmUuDQo+IA0KPiA+PiArCS8qKjwgT3BlcmF0aW9uIHVuc3BlY2lmaWVkICovDQo+ID4+ICsJ UlRFX0NSWVBUT19BU1lNX09QX0VOQ1JZUFQsDQo+ID4+ICsJLyoqPCBBc3ltbWV0cmljIGVuY3J5 cHQgb3BlcmF0aW9uICovDQo+ID4+ICsJUlRFX0NSWVBUT19BU1lNX09QX0RFQ1JZUFQsDQo+ID4+ ICsJLyoqPCBBc3ltbWV0cmljIERlY3J5cHQgb3BlcmF0aW9uICovDQo+ID4+ICsJUlRFX0NSWVBU T19BU1lNX09QX1NJR04sDQo+ID4+ICsJLyoqPCBTaWduYXR1cmUgZ2VuZXJhdGlvbiBvcGVyYXRp b24gKi8NCj4gPj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfVkVSSUZZLA0KPiA+PiArCS8qKjwgU2ln bmF0dXJlIHZlcmlmaWNhdGlvbiBvcGVyYXRpb24gKi8NCj4gPj4gKwlSVEVfQ1JZUFRPX0FTWU1f T1BfS0VZX1BBSVJfR0VORVJBVElPTiwNCj4gPj4gKwkvKio8IFB1YmxpYy9Qcml2YXRlIGtleSBw YWlyIGdlbmVyYXRpb24gb3BlcmF0aW9uICovDQo+ID5bRmlvbmFdIEluIHRoZSBjb21tZW50LCBj bGFyaWZ5IHRoYXQgdGhpcyBpcyBmb3IgREggYW5kIEVDREgsIGFuZCBmb3IgdGhlDQo+ID4gZ2Vu ZXJhdGlvbiBvZiB0aGUgcHVibGljIGtleSAoYW5kIG9wdGlvbmFsbHkgdGhlIHByaXZhdGUga2V5 PykNCj4gPg0KPiANCj4gW1NoYWxseV0gc28gZmFyLCBJIHdhcyBhc3N1bWluZyBpdCB3aWxsIGdl bmVyYXRlIGJvdGggYnV0IHdoZW4geW91IHNheSBwcml2YXRlIGtleSBvcHRpb25hbCwgd2hlcmUg eW91DQo+IGV4cGVjdCBpdCB0byBiZSBjb21pbmcgZnJvbT8gLSBmcm9tIGFwcCBvciBnZW5lcmF0 ZWQgaW50ZXJuYWxseT8gSXMgdGhlaXIgaHcgdmFyaWFudCB3aGljaCBtYXkgbm90DQo+IGdlbmVy YXRlIHByaXZhdGUga2V5Pw0KPiANCltGaW9uYV0gSW4gb3VyIG5hdGl2ZSBkcml2ZXIgdGhlIHBy aXZhdGUga2V5LCB3aGljaCBpcyB1c3VhbGx5IGp1c3QgYSByYW5kb20gbnVtYmVyIGNvbmZvcm1p bmcgdG8gDQowIDwgcHJpdmF0ZV9rZXkgPCAocHJpbWVQIC0gMSksIGlzIHBhc3NlZCBpbiBieSB0 aGUgYXBwbGljYXRpb24gYW5kIG9ubHkgdGhlIHB1YmxpYyBrZXkgaXMgZ2VuZXJhdGVkLg0KU29t ZSBodyBhY2NlbGVyYXRvcnMgbWF5IGhhdmUgUk5HIGNhcGFiaWxpdGllcywgb3RoZXJzIG1heSBu b3Qgb3IgdGhlIGFwcGxpY2F0aW9uIG1heSBwcmVmZXIgdG8gZ2VuZXJhdGUNCml0cyBvd24gUk4u DQoNCg0KPiAvL3NuaXANCj4gDQo+ID4+ICsvKioNCj4gPj4gKyAqIEZ1bmRhbWVudGFsIEVDQyBv cGVyYXRpb24gdHlwZSB2YXJpYW50cy4NCj4gPj4gKyAqLw0KPiA+PiArZW51bSBydGVfY3J5cHRv X2ZlY2Nfb3B0eXBlIHsNCj4gPj4gKwlSVEVfQ1JZUFRPX0ZFQ0NfT1BfTk9UX1NQRUNJRklFRCA9 IDEsDQo+ID4+ICsJLyoqPCBGRUNDIG9wZXJhdGlvbiB0eXBlIHVuc3BlY2lmaWVkICovDQo+ID5b RmlvbmFdIGFzIGFib3ZlLiBXaHkgMT8gQW5kIGlzIGl0IG5lZWRlZD8NCj4gDQo+IFtTaGFsbHld IFRoaXMgaXMgZm9yIHNhbWUgcmVhc29uIHRvIGluZGljYXRlIGluIGZlY2MgeGZvcm0gY2FwYWJp bGl0eSBsaXN0IG9mIHN1cHBvcnRlZCBvcCB0eXBlIGluIGZ1bmRhbWVudGFsDQo+IEVDIG9wZXJh dGlvbi4gQW5kIGlmIHdlIGFncmVlIHRvIHVzZSBwcm9wb3NhbCBhYm92ZSB0byB1c2UgYml0bWFz aywgaXQgd29uJ3QgYmUgbmVlZGVkLg0KW0Zpb25hXSBvaw0KDQo+ID4NCj4gPj4gKwlSVEVfQ1JZ UFRPX0ZFQ0NfT1BfUE9JTlRfQURELA0KPiA+PiArCS8qKjwgRnVuZGFtZW50YWwgRUNDIHBvaW50 IGFkZGl0aW9uIG9wZXJhdGlvbiAqLw0KPiA+PiArCVJURV9DUllQVE9fRkVDQ19PUF9QT0lOVF9E QkwsDQo+ID4+ICsJLyoqPCBGdW5kYW1lbnRhbCBFQ0MgcG9pbnQgZG91Ymxpbmcgb3BlcmF0aW9u ICovDQo+ID4+ICsJUlRFX0NSWVBUT19GRUNDX09QX1BPSU5UX01VTFRJUExZLA0KPiA+PiArCS8q KjwgRnVuZGFtZW50YWwgRUNDIHBvaW50IG11bHRpcGxpY2F0aW9uIG9wZXJhdGlvbiAqLw0KPiA+ PiArCVJURV9DUllQVE9fRkVDQ19PUF9MSVNUX0VORA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiAr I2RlZmluZSBSVEVfQ1JZUFRPX0VDX0NVUlZFX05PVF9TUEVDSUZJRUQgIC0xDQo+ID5bRmlvbmFd IFdvdWxkbid0IGl0IGJlIGJldHRlciB0byBwdXQgdGhpcyBiYWNrIGluIGFzIHRoZSBpbml0aWFs IHZhbHVlIGluIHRoZSBlbnVtIGFzIG9yaWdpbmFsbHkgZG9uZT8NCj4gPkVsc2Ugd2lsbCB0aGVy ZSBub3QgYmUgYSBjb21waWxlciB3YXJuaW5nIGlmIGEgcGFyYW0gb2YgdGhhdCBlbnVtIHR5cGUg aXMNCj4gPmluaXRpYWxpc2VkIHRvIGFib3ZlICNkZWZpbmU/DQo+ID5BbmQgYXJlIF9CSU5BUlkg YW5kIF9QUklNRSB2YWx1ZXMgbmVlZGVkIGluIHRoaXMgY2FzZT8NCj4gDQo+IFtTaGFsbHldIEFn cmVlZC4gV2Ugd291bGQgbmVlZCB0byB1c2UgdHlwZWNhc3QgdG8gYXZvaWQgd2FybmluZyBzbyBJ IHdpbGwgcmV2ZXJ0IGFuZCBkZWZpbmUgX1ByaW1hcnkgYW5kDQo+IEJpbmFyeSB2YXJpYW50LiBC dXQgYmVmb3JlIHRoYXQgSSBoYXZlIG9uZSBxdWVzdGlvbiBvbiBwdWJsaXNoZWQgbGlzdC4gU2Vl IGJlbG93Lg0KPiANCj4gPg0KPiA+PiArLyoqDQo+ID4+ICsgKiBFQ0MgbGlzdCBvZiBjdXJ2ZXMu DQo+ID4+ICsgKi8NCj4gLy9zbmlwDQo+IA0KPiA+PiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3Vy dmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ID4+ICsJUlRFX0NSWVBUT19FQ19D VVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHM0LA0KPiA+PiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVy IGEgMTEzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dh cF93c2dfaWRtX2VjaWRfd3RsczUsDQo+ID4+ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMTYz IGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2df aWRtX2VjaWRfd3RsczEwLA0KPiA+PiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBh IDIzMyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ID4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV93YXBf d3NnX2lkbV9lY2lkX3d0bHMxMSwNCj4gPj4gKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZlIG92 ZXIgYSAyMzMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiA+PiArCVJURV9DUllQVE9fRUNfQkNVUlZF X0xJU1RfRU5EDQo+ID4+ICt9Ow0KPiA+W0Zpb25hXSBEbyB3ZSByZWFsbHkgd2FudCB0byBzcGVj aWZ5IGN1cnZlcyA8IDIyNCBiaXRzPyBFdmVuIDIyNCBpcyB3b2VmdWxseSBpbnNlY3VyZSB0aGVz ZSBkYXlzLg0KPiA+QWxzbyBkbyB3ZSB3YW50IHRvIGxpc3QgYWxsICJwdWJsaXNoZWQiIGN1cnZl cywgb3IgYWxsb3cgY3VzdG9tZXJzIHRvIHNwZWNpZnkNCj4gPnRoZWlyIG93biBjdXJ2ZSBwYXJh bWV0ZXJzLCBhdCBsZWFzdCBvbiB0aGUgRkVDQyBBUEk/IEFkZGluZyBhbiBBUEkgdG8gc3BlY2lm eSBhIGN1cnZlIHdpdGgNCj4gPml0cyBwYXJhbXMgd291bGQgYWxsb3cgbmV3IGN1cnZlcyB0byBi ZSB1c2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBBUEkgYW5kDQo+ID53b3VsZCBhdm9pZCB0aGUg bmVlZCBmb3Igc3VjaCBhbiBleHRlbnNpdmUgbGlzdC4NCj4gDQo+IFtTaGFsbHldIEkgd291bGQg dGFrZSB0aGlzIHF1ZXN0aW9uIGluLXBhcnRzOg0KPiANCj4gIiBBbHNvIGRvIHdlIHdhbnQgdG8g bGlzdCBhbGwgInB1Ymxpc2hlZCIgY3VydmVzLCBvciBhbGxvdyBjdXN0b21lcnMgdG8gc3BlY2lm eSB0aGVpciBvd24gY3VydmUgcGFyYW1ldGVycywiDQo+IC0gQ3VycmVudGx5IHNwZWNpZmljYXRp b24gYWxsb3cgYXBwIHRvIGRvIGJvdGggaS5lLiBpdCBjYW4gZWl0aGVyIHNldHVwIHRoZXNlIHB1 Ymxpc2hlZCBjdXJ2ZSBpZHMgb3Igc3BlY2lmeSBpdHMNCj4gb3duIGRvbWFpbiBwYXJhbXMgdG8g YWxsIGVsbGlwdGljIGN1cnZlIGJhc2VkIHhmb3JtcyAoZWNkaCwgZWNkc2EsIGFuZCBmZWNjKS4N Cj4gICBJZiBpbnB1dCBjdXJ2ZSBoYXMgY3VydmVfdHlwZSA9IFVOU1BFQ0lGSUVELCBQTUQgdXNl cyBkb21haW4gcGFyYW1ldGVycyBlbHNlIGl0IHVzZXMgY3VydmVpZCBnaXZlbiBieQ0KPiBhcHAg ZnJvbSB0aGlzIHB1Ymxpc2hlZCBsaXN0Lg0KPiAgIFNvLCBpcyB0aGlzIG1pc3NpbmcgYW55IHJl cXVpcmVtZW50IHRoYXQgbmVlZCB0byBiZSBzdXBwb3J0ZWQ/IQ0KW0Zpb25hXSBTbyB5b3UgbWVh biB0aGUgcGFyYW1zIGluIEVDREggeGZvcm0gKGEsYixHLG4saCkgYXJlIG9ubHkgc3BlY2lmaWVk IGlmIGN1cnZlX3R5cGUgPSBVTlNQRUNJRklFRCwNCmVsc2Ugbm90IG5lZWRlZD8gQW5kIGluIEZF Q0MgdGhlIHBhcmFtcyAob3JkZXIsRyxhLGIsaCkgPw0KRWNkc2EgeGZvcm0gbm90IHlldCBzcGVj aWZpZWQsIGJ1dCBpdCB3aWxsIGhhdmUgYSBzaW1pbGFyIHNldD8NClRoZW4gSSB3b3VsZCBzdWdn ZXN0IGNyZWF0aW5nIGEgc3RydWN0IHRvIGhvbGQgdGhpcyBwYXJhbSBzZXQgYW5kIHVzaW5nIHNh bWUgc3RydWN0IGluIGFsbCAzIHhmb3Jtcy4NCg0KPiANCj4gIiBBZGRpbmcgYW4gQVBJIHRvIHNw ZWNpZnkgYSBjdXJ2ZSB3aXRoIGl0cyBwYXJhbXMgd291bGQgYWxsb3cgbmV3IGN1cnZlcyB0byBi ZSB1c2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZQ0KPiBBUEkgYW5kIHdvdWxkIGF2b2lkIHRoZSBu ZWVkIGZvciBzdWNoIGFuIGV4dGVuc2l2ZSBsaXN0LiINCj4gLSBoZWxwIG1lIHVuZGVyc3RhbmQg YSBiaXQgaGVyZS4gQXJlIHlvdSBzdWdnZXN0aW5nLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgcHVibGlz aCBsaXN0IGFuZCBhZGQgYSBuZXcgQVBJDQo+IHN1Y2ggYXMNCj4gDQo+IGludCBydGVfY3J5cHRv X2FzeW1fbmV3X2N1cnZlKGludCBjdXJ2ZWlkLCBydGVfY3J5cHRvX2FzeW1fZWNfZG9tYWluX3Bh cmFtcyBwYXJhbXMpDQo+IA0KPiB3aGljaCBhcHAgY2FuIGNhbGwgdG8gY3JlYXRlIGl0cyBjdXJ2 ZWlkIHdpdGggaXRzIG93biBkb21haW4gcGFyYW1ldGVycyBpbiBQTUQ/DQpbRmlvbmFdIFllcywg SSB3YXMgdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGxpa2UgdGhhdC4gQnV0IGFib3ZlIGFwcHJvYWNo IHRvIHBhc3MgaW4gb24gdGhlIHhmb3JtcyBpcyBvaw0KYW5kIHByb2JhYmx5IGVhc2llciB0byBt YW5hZ2UuDQo+IA0KPiBJZiB5ZXMsIHRoZW4gaG93IGl0IHdvdWxkIGhlbHAgcmVtb3ZlIHB1Ymxp c2hlZCBsaXN0PyBEb2VzIHRoYXQgbWVhbiB0aGF0IHdlIGFzc3VtZSBhcHAgdG8gcmV0cmlldmUN Cj4gZG9tYWluIHBhcmFtcyBmcm9tIHRoZXNlIHN0YW5kYXJkIGFuZCByZS1jcmVhdGUgYWdhaW4g b24gUE1EPw0KPiANCj4gImRvIHdlIGhhdmUgdG8gcHVibGlzaCBjdXJ2ZXMgPCAyMjQgYml0cyIN Cj4gLSBXZSBqdXN0IGxpc3RlZCBhbGwgYmFzZWQgb24gcHJldmlvdXMgZmVlZGJhY2sgdG8gaW5j bHVkZSBub24tbmlzdCBjdXJ2ZSBpZC4gQnV0IGFncmVlIGl0IGNhbiBiZSBuYXJyb3dlZA0KPiBk b3duIHRvIGZldyAobWF5IGJlIHRvIG9uZSB1c2VkIGJ5IHNzbCkNCltGaW9uYV0gSSdtIGxvb2tp bmcgZm9yIGZlZWRiYWNrIGludGVybmFsbHkgb24gdGhpcyAtIHdpbGwgZ2V0IGJhY2sgdG8geW91 IGxhdGVyLg0KQnV0IEkgdGhpbmsgaXQgY291bGQgYmUgdHJpbW1lZCB0byBhdCBsZWFzdCByZW1v dmluZyB0aG9zZSBjdXJ2ZXMgPCAyMjQgYml0cy4NClRoZSB4Zm9ybSBwYXJhbXMgY2FuIGJlIHVz ZWQgdG8gY292ZXIgdW5saWtlbHkgY3VydmVzIHRyaW1tZWQgZnJvbSB0aGUgbGlzdC4NCiANCj4g PkRvIHdlIG5lZWQgYSAiY2FwYWJpbGl0aWVzIiBtYXNrIHRvIHNheSB3aGljaCBjdXJ2ZXMgYXJl IHN1cHBvcnRlZCBieSBhIGRldmljZT8NCj4gDQo+IFtTaGFsbHldIFllcywgaWYgd2UgYXJlIHN1 cHBvcnRpbmcgcHVibGlzaGVkIGlkLg0KW0Zpb25hXSBvaw0KIA0KPiA+V2hhdCBhYm91dCBTTTI/ DQo+IFtTaGFsbHldIGFwcCBjYW4gc2V0dXAgZWMgcGFyYW1zIGFzIG1lbnRpb25lZCBpbiBzbTIg c3BlYy4gZG9lcyBpdCBuZWVkIGFueSBleHBsaWNpdCBzdXBwb3J0IG9uIEFQST8NCltGaW9uYV0g b2sNCg0KPiANCj4gPg0KPiAvL3NuaXANCj4gDQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICog RWxsaXB0aWMgY3VydmUgaWQNCj4gPj4gKyAqLw0KPiA+PiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNf Y3VydmVfaWQgew0KPiA+PiArCVJURV9TVERfQzExDQo+ID4+ICsJdW5pb24gew0KPiA+PiArCQll bnVtIHJ0ZV9jcnlwdG9fZWNfcHJpbWVfY3VydmUgcGN1cnZlOw0KPiA+PiArCQllbnVtIHJ0ZV9j cnlwdG9fZWNfYmluYXJ5X2N1cnZlIGJjdXJ2ZTsNCj4gPj4gKwl9Ow0KPiA+PiArfTsNCj4gPltG aW9uYV0gQmVjYXVzZSB0aGUgdmFsdWVzIG9mIHRoZXNlIHR3byBlbnVtcyBvdmVybGFwLCBpZiB5 b3Ugc3BlY2lmeSB0aGUgY3VydmUgdHlwZSBpbmNvcnJlY3RseSwgeW91J2xsIHN0aWxsDQo+ID5o YXZlIGEgcG90ZW50aWFsbHkgdmFsaWQgY3VydmUgZW51bSBzcGVjaWZpZWQuIEkgc3VnZ2VzdCBp dCdzIHNhZmVyIHRvIGluY2x1ZGUgdGhlIHR5cGUgaGVyZSB3aXRoIHRoZSB1bmlvbiwNCj4gPnJh dGhlciB0aGFuIGluIHRoZSB3cmFwcGVyIHhmb3JtIHN0cnVjdCwgaS5lLg0KPiA+c3RydWN0IHJ0 ZV9jcnlwdG9fZWNfY3VydmUgew0KPiA+CWVudW0gcnRlX2NyeXB0b19lY19jdXJ2ZV90eXBlIGN1 cnZlX3R5cGU7DQo+ID4JLyoqPCBjdXJ2ZSB0eXBlOiBQcmltZSB2cyBCaW5hcnkgKi8NCj4gPgl1 bmlvbiB7DQo+ID4JZW51bSBydGVfY3J5cHRvX2VjX3ByaW1lX2N1cnZlIHBjdXJ2ZV9pZDsNCj4g PgllbnVtIHJ0ZV9jcnlwdG9fZWNfYmluYXJ5X2N1cnZlIGJjdXJ2ZV9pZDsNCj4gPgl9Ow0KPiA+ fTsNCj4gW1NoYWxseV0gV2Ugd291bGQgbmVlZCBjdXJ2ZSB0eXBlIGlmIHdlIG5lZWQgdG8gZGVm aW5lIGEgbmV3IGN1cnZlIGJhc2VkIG9uIGRvbWFpbiBwYXJhbXMuIExldCdzIGNvdmVyDQo+IGl0 IGxhdGVyIG9uY2Ugd2UgY2xhcmlmeSBhYm92ZSBmZWVkYmFjay4NCltGaW9uYV0gU28gaG93IGFi b3V0IGFkZGluZyB0aGUgc3RydWN0IHdpdGggY3VydmUgcGFyYW1zIEkgbWVudGlvbmVkIGFib3Zl IGFzIGEgM3JkIGVsZW1lbnQgaW4gdGhlIHVuaW9uPw0KDQo+IA0KPiA+PiArLyoqDQo+ID4+ICsg KiBBc3ltbWV0cmljIFJTQSB0cmFuc2Zvcm0gZGF0YQ0KPiA+PiArICoNCj4gPj4gKyAqIFRoaXMg c3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBSU0EgY3J5cHRvDQo+ ID4+ICsgKiB0cmFuc2Zvcm0uDQo+ID4+ICsgKg0KPiA+PiArICovDQo+ID4+ICtzdHJ1Y3QgcnRl X2NyeXB0b19yc2FfeGZvcm0gew0KPiA+PiArDQo+ID4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJh bSBuOw0KPiA+PiArCS8qKjwgbiAtIFByaW1lIG1vZHVsdXMNCj4gPj4gKwkgKiBQcmltZSBtb2R1 bHVzIGRhdGEgb2YgUlNBIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yaw0KPiA+PiAr CSAqIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiA+PiArCSAqLw0KPiA+PiArDQo+ID4+ICsJcnRlX2Ny eXB0b194Zm9ybV9wYXJhbSBlOw0KPiA+PiArCS8qKjwgZSAtIFB1YmxpYyBrZXkgZXhwb25lbnQN Cj4gPj4gKwkgKiBQdWJsaWMga2V5IGV4cG9uZW50IHVzZWQgZm9yIFJTQSBwdWJsaWMga2V5IG9w ZXJhdGlvbnMgaW4gT2N0ZXQtDQo+ID4+ICsJICogc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBm b3JtYXQuDQo+ID4+ICsJICovDQo+ID4+ICsNCj4gPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFt IGQ7DQo+ID4+ICsJLyoqPCBkIC0gUHJpdmF0ZSBrZXkgZXhwb25lbnQNCj4gPj4gKwkgKiBQcml2 YXRlIGtleSBleHBvbmVudCB1c2VkIGZvciBSU0EgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbg0K PiA+PiArCSAqIE9jdGV0LXN0cmluZyAgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gPj4g KwkgKi8NCj4gPj4gKw0KPiA+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcDsNCj4gPj4gKwkv Kio8IHAgLSBQcml2YXRlIGtleSBjb21wb25lbnQgUA0KPiA+PiArCSAqIFByaXZhdGUga2V5IGNv bXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0KPiA+PiAr CSAqIG9mIHByaXZhdGUga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0 ZSBvcmRlcg0KPiA+PiArCSAqIGZvcm1hdC4NCj4gPj4gKwkgKi8NCj4gPj4gKw0KPiA+PiArCXJ0 ZV9jcnlwdG9feGZvcm1fcGFyYW0gcTsNCj4gPj4gKwkvKio8IHEgLSBQcml2YXRlIGtleSBjb21w b25lbnQgUQ0KPiA+PiArCSAqIFByaXZhdGUga2V5IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVy ICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0KPiA+PiArCSAqIG9mIHByaXZhdGUga2V5IG9wZXJh dGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPiA+PiArCSAqIGZvcm1h dC4NCj4gPj4gKwkgKi8NCj4gPj4gKw0KPiA+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZFA7 DQo+ID4+ICsJLyoqPCBkUCAtIFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KPiA+PiArCSAqIFByaXZh dGUgQ1JUIGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhv ZA0KPiA+PiArCSAqIFJTQSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBu ZXR3b3JrIGJ5dGUgb3JkZXINCj4gPj4gKwkgKiBmb3JtYXQuDQo+ID4+ICsJICogZFAgPSBkIG1v ZCAoIHAgLSAxICkNCj4gPj4gKwkgKi8NCj4gPj4gKw0KPiA+PiArCXJ0ZV9jcnlwdG9feGZvcm1f cGFyYW0gZFE7DQo+ID4+ICsJLyoqPCBkUSAtIFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KPiA+PiAr CSAqIFByaXZhdGUgQ1JUIGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3Ig Q1JUIG1ldGhvZA0KPiA+PiArCSAqIFJTQSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0 LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4gPj4gKwkgKiBmb3JtYXQuDQo+ID4+ICsJICog ZFEgPSBkIG1vZCAoIHEgLSAxICkNCj4gPj4gKwkgKi8NCj4gPj4gKw0KPiA+PiArCXJ0ZV9jcnlw dG9feGZvcm1fcGFyYW0gcUludjsNCj4gPj4gKwkvKio8IHFJbnYgLSBQcml2YXRlIENSVCBjb21w b25lbnQNCj4gPj4gKwkgKiBQcml2YXRlIENSVCBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRlciAg cmVxdWlyZWQgZm9yIENSVCBtZXRob2QNCj4gPj4gKwkgKiBSU0EgcHJpdmF0ZSBrZXkgb3BlcmF0 aW9ucyBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+ID4+ICsJICogZm9ybWF0 Lg0KPiA+PiArCSAqIHFJbnYgPSBpbnYgcSBtb2QgcA0KPiA+PiArCSAqLw0KPiA+PiArfTsNCj4g PltGaW9uYV0gVGhpcyBhbGxvd3MgYm90aCByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHByaXZhdGUg a2V5IHRvIGJlIHNwZWNpZmllZA0KPiA+d2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgY29uZnVzaW9u IGlmIGJvdGggYXJlIHNwZWNpZmllZC4NCj4gPldvdWxkIGl0IGJlIGJldHRlciB0byBoYXZlIGEg dW5pb24gb2YgMiBkaWZmZXJlbnQgc3RydWN0dXJlcywgb25lIHdpdGgge24sZH0gYW5kDQo+ID50 aGUgb3RoZXIgd2l0aCB7cCxxLGRQLGRRLHFJbnZ9Pw0KPiA+DQo+IA0KPiBbU2hhbGx5XSBPay4N Cj4gDQo+IC8vc25pcA0KPiANCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsgKiBBc3ltbWV0cmlj IGNyeXB0byB0cmFuc2Zvcm0gZGF0YQ0KPiA+PiArICoNCj4gPj4gKyAqIFRoaXMgc3RydWN0dXJl IGNvbnRhaW5zIHRoZSBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gdGhlDQo+ID4+ICsgKiBhc3lt bWV0cmljIGNyeXB0byB0cmFuc2Zvcm1hdGlvbiBvcGVyYXRpb24uIFRoZSBmaWVsZCBvcA0KPiA+ PiArICogZGV0ZXJtaW5lcyB0aGUgYXN5bW1ldHJpYyBhbGdvcml0aG0gZm9yIHRyYW5zZm9ybWF0 aW9uLg0KPiA+W0Zpb25hXSBjbGFyaWZ5IGNvbW1lbnQuIFRoZSB4Zm9ybSBvbmx5IGNvbnRhaW5z IHNvbWUgb2YgdGhlIGRhdGEsIHRoZSByZXN0IHdpbGwgYmUgcHJvdmlkZWQgaW4gdGhlIG9wLg0K PiA+QW5kIHRoZXJlJ3Mgbm8gZmllbGQgb3AgaGVyZS4NCj4gDQo+IFtTaGFsbHldIE9rDQo+IA0K PiA+PiArICovDQo+ID4+ICtzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtIHsNCj4gPj4gKwlz dHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtICpuZXh0Ow0KPiA+W0Zpb25hXSBJcyB0aGVyZSBh bnkgcmVhc29uIGZvciBhIGNoYWluIG9mIHhmb3Jtcz8NCj4gPkknZCBzdWdnZXN0IHJlbW92aW5n IHVubGVzcyBuZWVkZWQuDQo+ID4NCj4gDQo+IFtTaGFsbHldIFllcy4gT25lIHBvc3NpYmxlIGNo YWluIEVDREgga2V5IGdlbmVyYXRpb24gZm9sbG93ZWQgYnkgRUNEU0Egc2lnbiBjb21wdXRlLiBT aW1pbGFyIHdpdGggREgga2V5DQo+IGdlbmVyYXRpb24gKyBEU0Egc2lnbiBjb21wdXRlLg0KPiBD dXJyZW50bHkgdGhlc2UgYXJlIG9ubHkgdmFsaWQgY2hhaW4gSSBmb3Jlc2VlIHRoYXQgY2FuIGJl IHNldHVwIHRvIGJlIHBlcmZvcm1lZCBvbiBhbiBvcCB1c2luZyB0aGF0DQo+IHNlc3Npb24uIENh biBhZGQgb3RoZXIgaWYgd2UgaWRlbnRpZnkgbW9yZSBzdWNoIGRlcGVuZGVudA0KPiBzZXQgb2Yg b3BlcmF0aW9uLg0KW0Zpb25hXSBvaw0KDQo+IA0KPiA+PiArCWVudW0gcnRlX2NyeXB0b19hc3lt X3hmb3JtX3R5cGUgeGZvcm1fdHlwZTsNCj4gPj4gKwkvKio8IEFzeW1tZXRyaWMgYWxnb3JpdGht IGZvciBjcnlwdG8gdHJhbnNmb3JtICovDQo+ID4+ICsNCj4gPj4gKwlSVEVfU1REX0MxMQ0KPiA+ PiArCXVuaW9uIHsNCj4gPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fcnNhX3hmb3JtIHJzYTsNCj4g Pj4gKwkJLyoqPCBSU0EgeGZvcm0gcGFyYW1ldGVycyAqLw0KPiA+PiArDQo+ID4+ICsJCXN0cnVj dCBydGVfY3J5cHRvX2ZlY2NfeGZvcm0gZmVjYzsNCj4gPj4gKwkJLyoqPCBGdW5kYW1lbnRhbCBF bGxpcHRpYyBDdXJ2ZSB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+ID4+ICsNCj4gPj4gKwkJc3RydWN0 IHJ0ZV9jcnlwdG9fbW9kZXhfeGZvcm0gbW9kZXg7DQo+ID4+ICsJCS8qKjwgTW9kdWxhciBFeHBv bmVudGlhdGlvbiB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+ID4+ICsNCj4gPj4gKwkJc3RydWN0IHJ0 ZV9jcnlwdG9fbW9kaW52X3hmb3JtIG1vZGludjsNCj4gPj4gKwkJLyoqPCBNb2R1bHVzIEludmVy c2UgeGZvcm0gcGFyYW1ldGVycyAqLw0KPiA+PiArDQo+ID4+ICsJCXN0cnVjdCBydGVfY3J5cHRv X2VjZHNhX3hmb3JtIGVjZHNhOw0KPiA+PiArCQkvKio8IEVDRFNBIHhmb3JtIHBhcmFtZXRlcnMg Ki8NCj4gPj4gKw0KPiA+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX3hmb3JtIGVjZGg7DQo+ ID4+ICsJCS8qKjwgRUNESCB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+ID4+ICsNCj4gPj4gKwkJc3Ry dWN0IHJ0ZV9jcnlwdG9fZHNhX3hmb3JtIGRzYTsNCj4gPj4gKwkJLyoqPCBEU0EgeGZvcm0gcGFy YW1ldGVycyAqLw0KPiA+PiArCX07DQo+ID4+ICt9Ow0KPiANCj4gLy9zbmlwDQo+IA0KPiA+PiAg I2RlZmluZSBSVEVfQ1JZUFRPREVWX0RFVEFDSEVEICAoMCkNCj4gPj4gQEAgLTUxMyw2ICs2Nzcs MjQgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY29uZmlnIHsNCj4gPj4gIAlpbnQgc29ja2V0X2lk OwkJCS8qKjwgU29ja2V0IHRvIGFsbG9jYXRlIHJlc291cmNlcyBvbiAqLw0KPiA+PiAgCXVpbnQx Nl90IG5iX3F1ZXVlX3BhaXJzOw0KPiA+PiAgCS8qKjwgTnVtYmVyIG9mIHF1ZXVlIHBhaXJzIHRv IGNvbmZpZ3VyZSBvbiBkZXZpY2UgKi8NCj4gPj4gKw0KPiA+PiArCXVpbnQxNl90IG5iX3N5bW1f cXA7DQo+ID4+ICsJLyoqPCBOdW1iZXIgb2YgcXVldWUgcGFpciB0byBiZSB1c2VkIGZvciBzeW1t ZXRyaWMgb3BlcmF0aW9ucy4NCj4gPj4gKwkgKiBPcHRpb25hbCBpbnB1dC4NCj4gPj4gKwkgKiBW YWxpZCBmb3IgZGV2aWNlIHN1cHBvcnRpbmcgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMu DQo+ID4+ICsJICogU2hvdWxkIGJlIGxlc3MgdGhhbiBlcXVhbCB0byBydGVfY3J5cHRvZGV2X2lu Zm86bWF4X25iX3N5bW1fcXAuDQo+ID4+ICsJICogcGxlYXNlIG5vdGUgdGhpcyBudW1iZXIgb25s eSB0ZWxscyBob3cgbWFueSBxdWV1ZSBwYWlyIHRvIGJlIHVzZWQNCj4gPj4gKwkgKiBmb3Igc3lt bWV0cmljIG9wIGFuZCBkb2VzICpub3QqIHRlbGwgc3BlY2lmaWMgSURzIHRvIGJlIHVzZWQuDQo+ ID4+ICsJICovDQo+ID4+ICsNCj4gPj4gKwl1aW50MTZfdCBuYl9hc3ltbV9xcDsNCj4gPj4gKwkv Kio8IE51bWJlciBvZiBxdWV1ZSBwYWlyIHRvIGJlIHVzZWQgZm9yIGFzeW1tZXRyaWMgb3BlcmF0 aW9ucy4NCj4gPj4gKwkgKiBPcHRpb25hbCBpbnB1dC4NCj4gPj4gKwkgKiBWYWxpZCBmb3IgZGV2 aWNlIHN1cHBvcnRpbmcgYm90aCBhc3ltbWV0cmljIGFuZCBzeW1tZXRyaWMuDQo+ID4+ICsJICog U2hvdWxkIGJlIGxlc3MgdGhhbiBlcXVhbCB0byBydGVfY3J5cHRvZGV2X2luZm86bWF4X25iX2Fz eW1tX3FwDQo+ID4+ICsJICogUGxlYXNlIG5vdGUgdGhpcyBudW1iZXIgb25seSB0ZWxscyBob3cg bWFueSBxdWV1ZSBwYWlyIHRvIGJlDQo+ID4+ICsJICogdXNlZCBmb3IgYXN5bW1ldHJpYyBhbmQg ZG9lcyAqbm90KiBzcGVjaWZpY2FsbHkgdGVsbCBxcCBJRA0KPiA+PiArCSAqLw0KPiA+PiAgfTsN Cj4gPj4NCj4gPltGaW9uYV0gVGhlIHBhcmFtcyBmcm9tIGNvbmZpZyBzdHJ1Y3R1cmUgYWJvdmUg c2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZXMgaW4gdGhlIGRhdGEgc3RydWN0dXJlDQo+ ID5UaGlzIGNvZGUgaXMgbWlzc2luZy4NCj4gDQo+IFtTaGFsbHldIGFzIGRpc2N1c3NlZCAsIHN1 Y2ggY2hhbmdlcyBhYm91dCBzeW0vYXN5bSBxcCB3b3VsZCBiZSByZW1vdmVkDQo+IA0KPiA+DQo+ IC8vc25pcA0KPiANCj4gPj4gQEAgLTk3NSw2ICsxMjUzLDggQEAgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfc3ltX3Nlc3Npb24gKg0KPiA+Pg0KPiA+PiAgLyoqDQo+ID4+ICAgKiBHZXQgdGhlIHNpemUg b2YgdGhlIHByaXZhdGUgc2Vzc2lvbiBkYXRhIGZvciBhIGRldmljZS4NCj4gPj4gKyAqIGlmIGRl dmljZSBzdXBwb3J0IGJvdGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljLCBpdA0KPiA+PiArICog cmV0dXJuIHNpemUgaW5jbHVzaXZlIG9mIGJvdGgNCj4gPltGaW9uYV0gQXJlIHlvdSBzdWdnZXN0 aW5nIHRoZSBzYW1lIHNlc3Npb24gcG9vbCBtaWdodCBiZSB1c2VkDQo+ID5mb3IgYm90aCBzeW0g YW5kIGFzeW0gc2Vzc2lvbnM/DQo+ID5TZWVtcyB1bmxpa2VseSwgYnV0IGlmIGFuIGFwcGxpY2F0 aW9uIGNob3NlIHRvLCBpdCBzZWVtcyBiZXR0ZXINCj4gPiB0aGF0IGl0IHdvdWxkIGRvIGl0IGV4 cGxpY2l0bHksDQo+ID5lLmcuIGdldCBhc3ltIGFuZCBzeW0gcHJpdmF0ZSBzaXplcywgc2FtZSBh cyBpdCBnZXRzIHNpemUgZnJvbSB0aGUgb3RoZXINCj4gPmRyaXZlcnMgYW5kIHNpemVzIGZvciB0 aGUgbWF4aW11bS4NCj4gPklmIG1lYW5pbmcgaXMgY2hhbmdlZCBhcyB5b3Ugc3VnZ2VzdCB0aGVu IHN5bSBhcHBsaWNhdGlvbnMgYWxyZWFkeQ0KPiA+aW1wbGVtZW50ZWQgd2lsbCBsaWtlbHkgZW5k IHVwIHdpdGggcG9vbHMgc2l6ZWQgZm9yIGEgc2Vzc2lvbiBzaXplIHRoZXkgZG9u4oCZdCBuZWVk Lg0KPiA+DQo+ID5BcyBJIHRoaW5rIHRoZSBjb21iaW5lZCBwb29sIGNhc2UgdW5saWtlbHksIGl0 IG1ha2VzIG1vcmUgc2Vuc2UgdG8gbWUgdGhhdCB0aGlzDQo+ID5mbiBzaG91bGQgaGF2ZSBjb21t ZW50IGNoYW5nZWQgdG8gc2F5IGl0IHJldHVybnMgb25seSBzeW0gc2Vzc2lvbiBzaXplDQo+ID5m b3IgYmFja3dhcmRzIGNhcGFiaWxpdHkgcmVhc29ucywgYnV0IHdpbGwgYmUgZGVwcmVjYXRlZA0K PiA+YW5kIGFwcGxzIHNob3VsZCB1c2UgZ2V0X3N5bV9zZXNzaW9uX3ByaXZhdGVfc2l6ZSBpbnN0 ZWFkLg0KPiANCj4gW1NoYWxseV0gT2sgYWdyZWUuIEkgd2lsbCByZXZlcnQgdG8gaXRzIG9yaWdp bmFsIGRlZmluaXRpb24uDQo+ID4NCj4gDQo+IC8vIHNuaXANCj4gDQo+IC8vc25pcA0KPiANCj4g Pj4gKy8qKg0KPiA+PiArICogQ3JlYXRlIGEgYXN5bW1ldHJpYyBzZXNzaW9uIG1lbXBvb2wgdG8g YWxsb2NhdGUgc2Vzc2lvbnMgZnJvbQ0KPiA+PiArICoNCj4gPj4gKyAqIEBwYXJhbQlkZXYJCUNy eXB0byBkZXZpY2UgcG9pbnRlcg0KPiA+PiArICogQHBhcmFtCW5iX29ianMJCU51bWJlciBvZiBh c3ltbWV0cmljIHNlc3Npb25zIG9iamVjdHMgaW4gbWVtcG9vbA0KPiA+PiArICogQHBhcmFtCW9i al9jYWNoZQlsLWNvcmUgb2JqZWN0IGNhY2hlIHNpemUsIHNlZSAqcnRlX3JpbmdfY3JlYXRlKg0K PiA+PiArICogQHBhcmFtCXNvY2tldF9pZAlTb2NrZXQgSWQgdG8gYWxsb2NhdGUgIG1lbXBvb2wg b24uDQo+ID4+ICsgKg0KPiA+PiArICogQHJldHVybg0KPiA+PiArICogLSBPbiBzdWNjZXNzIHJl dHVybnMgYSBwb2ludGVyIHRvIGEgcnRlX21lbXBvb2wNCj4gPj4gKyAqIC0gT24gZmFpbHVyZSBy ZXR1cm5zIGEgTlVMTCBwb2ludGVyDQo+ID4+ICsgKi8NCj4gPj4gK3R5cGVkZWYgaW50ICgqY3J5 cHRvZGV2X2FzeW1fY3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCj4gPj4gKwkJc3RydWN0IHJ0ZV9j cnlwdG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2JqcywNCj4gPj4gKwkJdW5zaWduZWQgb2JqX2Nh Y2hlX3NpemUsIGludCBzb2NrZXRfaWQpOw0KPiA+Pg0KPiA+W0Zpb25hXSBzZXNzaW9uIHBvb2xz IGFyZSBub3QgY3JlYXRlZCBub3cgcGVyIGRldmljZSBzbyB0aGlzIGlzIG5ldmVyIGNhbGxlZCBm b3Igc3ltIGFuZA0KPiA+c2hvdWxkIGJlIGRlcHJlY2F0ZWQuIFNvIG5vIG5lZWQgdG8gYWRkIGZv ciBhc3ltDQo+IA0KPiBbU2hhbGx5XSBPaw0KPiANCj4gPg0KPiAvL3NuaXANCj4gDQo+ID4+ICsJ Y3J5cHRvZGV2X3N5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCBzeW1fc2Vzc2lvbl9nZXRf c2l6ZTsNCj4gPj4gKwkvKio8IFJldHVybiBwcml2YXRlIHNpemUgZm9yIHN5bW1ldHJpYyBjcnlw dG8uICovDQo+ID4+ICsJY3J5cHRvZGV2X3N5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCBh c3ltX3Nlc3Npb25fZ2V0X3NpemU7DQo+ID4+ICsJLyoqPCBSZXR1cm4gcHJpdmF0ZSBzaXplIGZv ciBhc3ltbWV0cmljIGNyeXB0by4gKi8NCj4gPj4gIAljcnlwdG9kZXZfc3ltX2NvbmZpZ3VyZV9z ZXNzaW9uX3Qgc2Vzc2lvbl9jb25maWd1cmU7DQo+ID4+ICAJLyoqPCBDb25maWd1cmUgYSBDcnlw dG8gc2Vzc2lvbi4gKi8NCj4gPltGaW9uYV0gVGhpcyBzaG91bGQgcmVhbGx5IGJlIHJlbmFtZWQg c3ltX3Nlc3Npb25fY29uZmlndXJlLCBzYW1lIGZvciBzZXNzaW9uX2NsZWFyLA0KPiA+cXBfYXR0 YWNoX3Nlc3Npb24gYW5kIHFwX2RldGFjaF9zZXNzaW9uDQo+ID4NCj4gDQo+IFtTaGFsbHldIEkg dGhvdWdodCB0byBrZWVwIGl0IGJhY2t3YXJkIGNvbXBhdGlibGUgZm9yIG5vdy4gSSB0aGluayB3 ZSBjYW4gdGFrZSB0aGlzIGNoYW5nZSBsYXRlciBhcyBpdCBuZWVkDQo+IGFubm91bmNlbWVudCBm aXJzdA0KW0Zpb25hXSBBcyB0aGVzZSBhcmUgb24gdGhlIGludGVybmFsIEFQSSBiZXR3ZWVuIFBN RHMgYW5kIEFQSSBsYXllciwgcmF0aGVyIHRoYW4gdGhlIGFwcGxpY2F0aW9uPC0+Y3J5cHRvZGV2 DQppbnRlcmZhY2UgSSB0aGluayB0aGV5IGRvbid0IG5lZWQgYW4gYW5ub3VuY2VtZW50Lg0KQnV0 IHdvdWxkIG5lZWQgdG8gYmUgZG9uZSBpbiBhIHN0YW5kYWxvbmUgcGF0Y2gsIHdpdGggYWxsIFBN RHMgY2hhbmdlZA0KDQo+ID4+ICsJY3J5cHRvZGV2X2FzeW1fY29uZmlndXJlX3Nlc3Npb25fdCBh c3ltX3Nlc3Npb25fY29uZmlndXJlOw0KPiA+PiArCS8qKjwgQ29uZmlndXJlIGFzeW1tZXRyaWMg Q3J5cHRvIHNlc3Npb24uICovDQo+IA0KPiAvL3NuaXANCj4gDQo+ID4+ICsNCj4gPj4gK0VYUEVS SU1FTlRBTCB7DQo+ID4+ICsJZ2xvYmFsOg0KPiA+PiArDQo+ID5bRmlvbmFdIHRoZSBpbXBsZW1l bnRhdGlvbiBvZiBhbGwgdGhlc2UgQVBJcyBhbHNvIG5lZWRzIHRoZSBfZXhwZXJpbWVudGFsIHRh Zy4NCj4gPg0KPiANCj4gW1NoYWxseV0gR290IHRoYXQuDQo+IA0KPiA+PiArCXJ0ZV9jcnlwdG9k ZXZfYXN5bV9jYXBhYmlsaXR5X2dldDsNCj4gPj4gKwlydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJp bGl0eV9tb2RsZW47DQo+ID4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfY291bnQ7 DQo+ID4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY3JlYXRlOw0KPiA+PiArCXJ0ZV9j cnlwdG9kZXZfYXN5bV9zZXNzaW9uX2NsZWFyOw0KPiA+PiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9z ZXNzaW9uX2ZyZWU7DQo+ID4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25faW5pdDsNCj4g Pj4gKwlydGVfY3J5cHRvZGV2X2dldF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplOw0KPiA+PiAr CXJ0ZV9jcnlwdG9kZXZfZ2V0X3N5bV9zZXNzaW9uX3ByaXZhdGVfc2l6ZTsNCj4gPj4gKwlydGVf Y3J5cHRvZGV2X2dldF94Zm9ybV9hbGdvX2VudW07DQo+ID4+ICsJcnRlX2NyeXB0b2Rldl9xdWV1 ZV9wYWlyX2F0dGFjaF9hc3ltX3Nlc3Npb247DQo+ID4+ICsJcnRlX2NyeXB0b2Rldl9xdWV1ZV9w YWlyX2RldGFjaF9hc3ltX3Nlc3Npb247DQo+ID4+ICsJcnRlX2NyeXB0b2Rldl9zeW1fcXVldWVf cGFpcl9jb3VudDsNCj4gPj4gKwlydGVfY3J5cHRvX2FzeW1feGZvcm1fc3RyaW5nczsNCj4gPj4g KwlydGVfY3J5cHRvX2FzeW1fb3BlcmF0aW9uX3N0cmluZ3M7DQo+ID4+ICsNCj4gPj4gK307DQo+ ID4+IC0tDQo+ID4+IDEuOS4xDQo+IA0KPiBUaGFua3MNCj4gU2hhbGx5DQoNCg==