From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: staging: typec: handle vendor defined part and modify drp toggling flow From: =?utf-8?b?c2h1ZmFuX2xlZSjmnY7mm7jluIYp?= Message-Id: <1519789258692.80587@richtek.com> Date: Wed, 28 Feb 2018 03:40:58 +0000 To: Jun Li , ShuFanLee , "heikki.krogerus@linux.intel.com" , "linux@roeck-us.net" , "greg@kroah.com" Cc: =?big5?B?Y3lfaHVhbmcotsCx0q3sKQ==?= , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , dl-linux-imx List-ID: SGkgSnVuLA0KDQogIEZvciB0aGUgcXVlc3Rpb25zIG9mIGRycF90b2dnbGluZywgb3VyIHRlc3Qg aXMgYXMgZm9sbG93aW5nOg0KDQogIEFjY29yZGluZyB0byBUQ1BDSSA0LjQuNS4yDQpJdCBpcyBy ZWNvbW1lbmRlZCB0aGUgVENQTSB3cml0ZSBST0xFX0NPTlRST0wuRFJQPTAgYmVmb3JlIHdyaXRp bmcgdG8NClBPV0VSX0NPTlRST0wuQXV0b0Rpc2NoYXJnZURpc2Nvbm5lY3QgYW5kIHN0YXJ0aW5n IHRoZSBEUlAgdG9nZ2xpbmcgdXNpbmcNCkNPTU1BTkQuTG9vazRDb25uZWN0aW9uLg0KDQogIFdl J3ZlIGVuY291bnRlciBhIHNpdHVhdGlvbiB3aGlsZSB0ZXN0aW5nIHdpdGggUlQxNzExSCBhcyBm b2xsb3dpbmc6DQogIFdlIHJlcGVhdGVkbHkgcGx1ZyBpbi9vdXQgYSBkZXZpY2UgKHdpdGggUmQp LCBhbmQgbm90IHRvIHByb3ZpZGUgVkJVUyg1Vikgd2hpbGUgcGx1Z2dpbmcgaW4uDQogIElmIHdl IHBsdWcgb3V0IHRoZSBkZXZpY2UgcmlnaHQgYWZ0ZXIgVENQQyBkZXRlY3RzIGl0IGFuZCBzdG9w cyB0b2dnbGluZywgVENQTSB3aWxsIHRyeSB0byByZXN0YXJ0IGRycF90b2dnbGluZy4NCiAgSGVy ZSwgd2UgcmUtcGx1ZyBpbiB0aGUgZGV2aWNlIGJlZm9yZSBUQ1BNIGNhbGxzIGRycF90b2dnbGlu Zy4gVW5kZXIgdGhpcyBjaXJjdW1zdGFuY2UsIFJUMTcxMUggcmVwb3J0cyBvcGVuL29wZW4gYWZ0 ZXIgZHJwX3RvZ2dsaW5nIGlzIGNhbGxlZC4NCiAgRm9yIGN1cnJlbnQgVENQTSwgaXQgc3RvcHMg aWYgb3Blbi9vcGVuIGlzIHJlcG9ydGVkIGF0IGRycF90b2dnbGluZyBzdGF0ZS4NCg0KICBUaGUg ZGV0YWlsZWQgZmxvdyB0aGF0IGNhdXNlcyBSVDE3MTFIIHJlcG9ydGluZyBvcGVuL29wZW4gaXMg ZGVzY3JpYmVkIGFzIGZvbGxvd2luZzoNCiAgMS4gUlQxNzExSCBkZXRlY3RzIHRoZSBkZXZpY2Us IHN0b3BzIHRvZ2dsaW5nIGFuZCByZXBvcnRzIHRvIFRDUE0uDQogIDIuIFJkIGlzIHBsdWdnZWQg b3V0IGJlZm9yZSBzZXRfY2MgaXMgY2FsbGVkLiBTbywgUk9MRV9DT05UUk9MLkRSUCBpcyBzdGls bCAxLg0KICAzLiBQbHVnIGluIHRoZSBkZXZpY2UgYmVmb3JlIFRDUE0gcmVzdGFydHMgZHJwX3Rv Z2dsaW5nDQogIDQuIFRoZSBkZXZpY2UgaXMgZGV0ZWN0ZWQgYnkgUlQxNzExSCdzIGludGVybmFs IGZpcm13YXJlIGFnYWluKFRDUEMgY2hpcCdzIGludGVybmFsIGZpcm13YXJlKS4NCiAgNS4gVENQ TSBjYWxscyBkcnBfdG9nZ2xpbmcgYmVmb3JlIGNjX2NoYW5nZSB0cmlnZ2VyZWQgYnkgc3RlcCA0 IGlzIGhhbmRsZWQuDQogIDYuIFRDUE0gc2V0cyBST0xFX0NPTlRST0wuRFJQID0gMSwgUmQvUmQg YW5kIHN0YXJ0IGRycF90b2dnbGluZy4NCkFjY29yZGluZyB0byBUQ1BDSSA0LjQuNS4yDQpUaGUg VENQTSBzaGFsbCB3cml0ZSBCNiAoRFJQKSA9IDBiIGFuZCBCMy4uMCAoQ0MxL0NDMikgaWYgaXQg d2lzaGVzIHRvIGNvbnRyb2wgdGhlIFJwL1JkDQpkaXJlY3RseSBpbnN0ZWFkIG9mIGhhdmluZyB0 aGUgVENQQyBwZXJmb3JtIERSUCB0b2dnbGluZyBhdXRvbm9tb3VzbC4NClNvLCBSZC9SZCBzZXQg aW4gc3RlcCA2IHdpbGwgbm90IHdvcmsuIChCZWNhdXNlIFJPTEVfQ09OVFJPTC5EUlAgaXMgMSBz aW5jZSB0aGUgZmlyc3Qgc3RlcC4pDQogIDcuIFJUMTcxMUggd2lsbCBzdG9wIHRvZ2dsaW5nIGlt bWVkaWF0ZWx5IChCZWNhdXNlIGl0J3MgaW50ZXJuYWwgZmlybXdhcmUgYWxyZWFkeSBkZXRlY3Rz IGRldmljZSBhdCBzdGVwIDQpIGFuZCByZXBvcnQgb3Blbi9vcGVuIChCZWNhdXNlIENDMS9DQzIg d2lsbCBiZSBjaGFuZ2VkIHRvIFJkIGJ5IFJUMTcxMUggYWZ0ZXIgTE9PSzRDT05ORUNUSU9OIGlz IHNldC4gUlQxNzExSCBzZXRzIHRvIFJkIGFuZCBkZXZpY2UgaXMgUmQgc28gb3BlbiBpcyByZXBv cnRlZCkNCiAgOC4gVENQQ0kgcmVwb3J0cyBvcGVuL29wZW4gdG8gVENQTSBhdCBkcnBfdG9nZ2xp bmcgc3RhdGUNCg0KICBUaGF0J3Mgd2h5IHdlIGFsd2F5cyBzZXQgUk9MRV9DT05UUk9MLkRSUCB0 byAwIHdoaWxlIHNldHRpbmcgUmQvUmQuDQogIElmIHRoaXMgY2lyY3Vtc3RhbmNlIGlzIG5vdCBh IGdlbmVyYWwgY2FzZSwgd2UgY2FuIGFsc28gdXNlIGEgdmVuZG9yIG9wcyB0byByZXBsYWNlIGl0 Lg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQoNCkkgZG9uJ3QgY2F0Y2ggdGhlIHBvaW50IG9mIGhvdyB5b3Ug aGFuZGxlIHByaXZhdGUgZXZlbnRzIGJ5IGFib3ZlIGNoYW5nZSwNCm1heWJlIHBvc3QgeW91ciBS VDE3MTFIIHBhcnQgYXMgYSB1c2VyIGluIG9uZSBzZXJpZXMgY2FuIG1ha2UgaXQgY2xlYXIsDQpJ IGFzc3VtZSB0aGlzIGNhbiBiZSBkb25lIGluIGV4aXN0aW5nIHRjcGNpX2lycSBsaWtlIGFib3Zl IHZlbmRlciBzcGVjaWZpYw0KaGFuZGxpbmcgYXMgd2VsbDoNCg0KRm9yIGV2ZXJ5IGdsdWUgZHJp dmVyLCBpdCByZWdpc3RlcnMgaXRzIG93biBpcnEgaGFuZGxlciBhbmQgY2FsbHMgdGNwY2lfaXJx IGluIHRoZSBoYW5kbGVyLg0KDQpUYWtlIFJUMTcxMUggYXMgYW4gZXhhbXBsZToNCkl0IHJlZ2lz dGVycyBpdHMgb3duIGlycSBoYW5kbGVyIGluIHByb2JlIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdmVu ZG9yIGRlZmluZWQgaW50ZXJydXB0cyBiZWZvcmUgY2FsbGluZyBnZW5lcmFsIHRjcGNpX2lycToN Cg0Kc3RhdGljIGlycXJldHVybl90IF90Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0K ew0KICAgICAgICBzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwID0gZGV2X2lkOw0KDQogICAgICAg IC8qIGhhbmRsZSB2ZW5kb3IgZGVmaW5lZCBpbnRlcnJ1cHRzIGhlcmUgKi8NCg0KICAgICAgICAv KiBjYWxsIGdlbmVyYWwgdGNwY2lfaXJxICovDQogICAgICAgIHJldHVybiB0Y3BjaV9pcnEoY2hp cC0+dGNwY2kpOw0KfQ0KDQpzdGF0aWMgaW50IHJ0MTcxMWhfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkNCnsNCiAgICAg ICAgLi4uLg0KICAgICAgICByZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtPmRl diwgY2xpZW50LT5pcnEsIE5VTEwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfdGNwY2lfaXJxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9UUklHR0VSX0xPVywNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKCZjbGllbnQtPmRldiksIGNoaXApOw0K fQ0KDQoNCkJlc3QgUmVnYXJkcywNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqDQpTaHUtRmFuIExlZQ0KUmljaHRlayBUZWNobm9sb2d5IENvcnBvcmF0aW9uDQpURUw6 ICs4ODYtMy01NTI2Nzg5ICMyMzU5DQpGQVg6ICs4ODYtMy01NTI2NjEyDQoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQrlr4Tku7bogIU6IEp1biBMaSA8anVuLmxpQG54cC5jb20+DQrlr4Tk u7bml6XmnJ86IDIwMTjlubQy5pyIMjLml6Ug5LiL5Y2IIDA2OjE2DQrmlLbku7bogIU6IFNodUZh bkxlZTsgaGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbTsgbGludXhAcm9lY2stdXMubmV0 OyBncmVnQGtyb2FoLmNvbQ0K5Ymv5pysOiBzaHVmYW5fbGVlKOadjuabuOW4hik7IGN5X2h1YW5n KOm7g+WVn+WOnyk7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXVzYkB2Z2Vy Lmtlcm5lbC5vcmc7IGRsLWxpbnV4LWlteA0K5Li75peoOiBSRTogW1BBVENIXSBzdGFnaW5nOiB0 eXBlYzogaGFuZGxlIHZlbmRvciBkZWZpbmVkIHBhcnQgYW5kIG1vZGlmeSBkcnAgdG9nZ2xpbmcg Zmxvdw0KDQpIaSwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBsaW51 eC11c2Itb3duZXJAdmdlci5rZXJuZWwub3JnDQo+IFttYWlsdG86bGludXgtdXNiLW93bmVyQHZn ZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIFNodUZhbkxlZQ0KPiBTZW50OiAyMDE45bm0Muac iDIx5pelIDIzOjAyDQo+IFRvOiBoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tOyBsaW51 eEByb2Vjay11cy5uZXQ7IGdyZWdAa3JvYWguY29tDQo+IENjOiBzaHVmYW5fbGVlQHJpY2h0ZWsu Y29tOyBjeV9odWFuZ0ByaWNodGVrLmNvbTsNCj4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9y ZzsgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBbUEFUQ0hdIHN0YWdpbmc6 IHR5cGVjOiBoYW5kbGUgdmVuZG9yIGRlZmluZWQgcGFydCBhbmQgbW9kaWZ5IGRycA0KPiB0b2dn bGluZyBmbG93DQo+DQo+IEZyb206IFNodUZhbkxlZSA8c2h1ZmFuX2xlZUByaWNodGVrLmNvbT4N Cj4NCj4gSGFuZGxlIHZlbmRvciBkZWZpbmVkIGJlaGF2aW9yIGluIHRjcGNpX2luaXQsIHRjcGNp X3NldF92Y29ubiBhbmQgZXhwb3J0DQo+IHRjcGNpX2lycS4NCj4gTW9yZSBvcGVyYXRpb25zIGNh biBiZSBleHRlbmRlZCBpbiB0Y3BjaV9kYXRhIGlmIG5lZWRlZC4NCj4gQWNjb3JkaW5nIHRvIFRD UENJIHNwZWNpZmljYXRpb24sIDQuNC41LjIgUk9MRV9DT05UUk9MLCBUQ1BDIHNoYWxsIG5vdA0K PiBzdGFydCBEUlAgdG9nZ2xpbmcgdW50aWwgc3Vic2VxdWVudGx5IHRoZSBUQ1BNIHdyaXRlcyB0 byB0aGUgQ09NTUFORA0KPiByZWdpc3RlciB0byBzdGFydCBEUlAgdG9nZ2xpbmcuDQoNCk15IHVu ZGVyc3RhbmRpbmcgb2YgYWJvdmUgc3RhdGVtZW50IGlzIFRDUE0odGhpcyBMaW51eCBkcml2ZXIp IGNhbiBlbmFibGUNCkRSUCBhbmQgQ0MxL0NDMiBpbiBvbmUgc2hvdCwgYnV0IFRDUEMoeW91ciB0 eXBlYyBjaGlwIGludGVybmFsIGZpcm13YXJlKQ0KbmVlZHMgd2FpdCB1bnRpbCBUQ1BNIHdyaXRl cyB0byBDT01NQU5EIHJlZ2lzdGVyIHRvIHN0YXJ0IGRycCB0b2dnbGluZy4NCg0KPiBEUlAgdG9n Z2xpbmcgZmxvdyBpcyBjaGFnbmVkIGFzIGZvbGxvd2luZzoNCj4gICAtIFdyaXRlIERSUCA9IDAg JiBSZC9SZA0KDQpXaHkgZml4ZWQgdG8gYmUgUmQvUmQ/IGluIHRoaXMgY2FzZSwgaXQgbWVhbnMg dGhlIHN0YXJ0aW5nIHZhbHVlOg0KDQpUY3BjaSA0LjQuNS4yOg0KIldoZW4gaW5pdGlhdGluZyBh dXRvbm9tb3VzIERSUCB0b2dnbGluZywgdGhlIFRDUE0gc2hhbGwgd3JpdGUgQjYgKERSUCkgPTFi DQphbmQgdGhlIHN0YXJ0aW5nIHZhbHVlIG9mIFJwL1JkIHRvIEIzLi4wIChDQzEvQ0MyKSB0byBp bmRpY2F0ZSBEUlAgYXV0b25vbW91cw0KdG9nZ2xpbmcgbW9kZSB0byB0aGUgVENQQy4iDQoNCj4g ICAtIFdyaXRlIERSUCA9IDENCg0KV2hhdCdzIHlvdXIgcHJvYmxlbSBpZiBjb21iaW5lIGFib3Zl IDIgaW4gb25lIHNob3Q/DQoNCj4gICAtIFNldCBMT09LNENPTk5FQ1RJT04gY29tbWFuZA0KPg0K PiBTaWduZWQtb2ZmLWJ5OiBTaHVGYW5MZWUgPHNodWZhbl9sZWVAcmljaHRlay5jb20+DQo+IC0t LQ0KPiAgZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMgfCAxMjgNCj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tDQo+ICBkcml2ZXJzL3N0YWdpbmcvdHlwZWMv dGNwY2kuaCB8ICAxMyArKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygr KSwgMjYgZGVsZXRpb25zKC0pDQo+DQo+ICBwYXRjaCBjaGFuZ2Vsb2dzIGJldHdlZW4gdjEgJiB2 Mg0KPiAgLSBSZW1vdmUgdW5uZWNlc3NhcnkgaTJjX2NsaWVudCBpbiB0aGUgc3RydWN0dXJlIG9m IHRjcGNpDQo+ICAtIFJlbmFtZSBzdHJ1Y3R1cmUgb2YgdGNwY2lfdmVuZG9yX2RhdGEgdG8gdGNw Y2lfZGF0YQ0KPiAgLSBOb3QgZXhwb3J0aW5nIHRjcGNpIHJlYWQvd3JpdGUgd3JhcHBlcnMgYnV0 IHJlZ2lzdGVyIGkyYyByZWdtYXAgaW4gZ2x1ZQ0KPiBkcml2ZXINCj4gIC0gQWRkIHNldF92Y29u biBvcHMgaW4gdGNwY2lfZGF0YQ0KPiAgICAoSXQgaXMgbmVjZXNzYXJ5IGZvciBSVDE3MTFIIHRv IGVuYWJsZS9kaXNhYmxlIGlkbGUgbW9kZSBiZWZvcmUNCj4gZGlzYWJsaW5nL2VuYWJsaW5nIHZj b25uKQ0KPiAgLSBFeHBvcnQgdGNwY2lfaXJxIHNvIHRoYXQgdmVuZG9yIGNhbiBjYWxsIGl0IGlu IHRoZWlyIG93biBJUlEgaGFuZGxlcg0KPg0KPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYy ICYgdjMNCj4gIC0gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZSBvZiB0Y3BjaV9pcnEgZnJvbSBpbnQg dG8gaXJxcmV0dXJuX3QNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90 Y3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMNCj4gaW5kZXggOWJkNDQxMi4u NDk1OWM2OSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMNCj4g KysrIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMNCj4gQEAgLTIxLDcgKzIxLDYgQEAN Cj4NCj4gIHN0cnVjdCB0Y3BjaSB7DQo+ICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsNCj4gLSAg ICAgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsNCj4NCj4gICAgICAgc3RydWN0IHRjcG1fcG9y dCAqcG9ydDsNCj4NCj4gQEAgLTMwLDYgKzI5LDEyIEBAIHN0cnVjdCB0Y3BjaSB7DQo+ICAgICAg IGJvb2wgY29udHJvbHNfdmJ1czsNCj4NCj4gICAgICAgc3RydWN0IHRjcGNfZGV2IHRjcGM7DQo+ ICsgICAgIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHRj cGNpX2NoaXAgew0KPiArICAgICBzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0KPiArICAgICBzdHJ1Y3Qg dGNwY2lfZGF0YSBkYXRhOw0KPiAgfTsNCj4NCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNp ICp0Y3BjX3RvX3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNwYykgQEAgLTM3LDgNCj4gKzQyLDcg QEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdGNwY2kgKnRjcGNfdG9fdGNwY2koc3RydWN0IHRjcGNf ZGV2ICp0Y3BjKQ0KPiAgICAgICByZXR1cm4gY29udGFpbmVyX29mKHRjcGMsIHN0cnVjdCB0Y3Bj aSwgdGNwYyk7ICB9DQo+DQo+IC1zdGF0aWMgaW50IHRjcGNpX3JlYWQxNihzdHJ1Y3QgdGNwY2kg KnRjcGNpLCB1bnNpZ25lZCBpbnQgcmVnLA0KPiAtICAgICAgICAgICAgICAgICAgICAgdTE2ICp2 YWwpDQo+ICtzdGF0aWMgaW50IHRjcGNpX3JlYWQxNihzdHJ1Y3QgdGNwY2kgKnRjcGNpLCB1bnNp Z25lZCBpbnQgcmVnLCB1MTYNCj4gKyp2YWwpDQo+ICB7DQo+ICAgICAgIHJldHVybiByZWdtYXBf cmF3X3JlYWQodGNwY2ktPnJlZ21hcCwgcmVnLCB2YWwsIHNpemVvZih1MTYpKTsgIH0gQEANCj4g LTk4LDggKzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9jYyhzdHJ1Y3QgdGNwY19kZXYg KnRjcGMsIGVudW0NCj4gdHlwZWNfY2Nfc3RhdHVzIGNjKSAgc3RhdGljIGludCB0Y3BjaV9zdGFy dF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2DQo+ICp0Y3BjLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSB0eXBlY19jY19zdGF0dXMgY2MpDQo+ICB7DQo+ICsg ICAgIGludCByZXQ7DQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNp KHRjcGMpOw0KPiAtICAgICB1bnNpZ25lZCBpbnQgcmVnID0gVENQQ19ST0xFX0NUUkxfRFJQOw0K PiArICAgICB1bnNpZ25lZCBpbnQgcmVnID0gKFRDUENfUk9MRV9DVFJMX0NDX1JEIDw8DQo+IFRD UENfUk9MRV9DVFJMX0NDMV9TSElGVCkgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKFRD UENfUk9MRV9DVFJMX0NDX1JEIDw8DQo+IFRDUENfUk9MRV9DVFJMX0NDMl9TSElGVCk7DQo+DQo+ ICAgICAgIHN3aXRjaCAoY2MpIHsNCj4gICAgICAgZGVmYXVsdDoNCj4gQEAgLTExNyw3ICsxMjMs MTkgQEAgc3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2 DQo+ICp0Y3BjLA0KPiAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICB9DQo+DQo+IC0gICAg IHJldHVybiByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7 DQo+ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RS TCwgcmVnKTsNCj4gKyAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIHJl dDsNCj4gKyAgICAgdXNsZWVwX3JhbmdlKDUwMCwgMTAwMCk7DQoNCldoeSBuZWVkIGEgd2FpdCBo ZXJlPyBJdCBzZWVtcyB5b3UgYWN0dWFsbHkgZG9uJ3Qgd2FudCB0byBkbyBhdXRvbm9tb3VzbHkg dG9nZ2xpbmcNCmZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLCBpbnN0ZWFkLCB5b3UgYmVnaW4gd2l0 aCBhIGRpcmVjdGx5IGNvbnRyb2wgb24gQ0MsIGtlZXAgaXQoUmQpDQpmb3Igc29tZSB0aW1lLCB0 aGVuIHN3aXRjaCB0byB1c2UgYXV0b25vbW91c2x5IHRvZ2dsaW5nLCB3aHkgeW91IG5lZWQgc3Vj aCBraW5kIG9mDQpzZXF1ZW5jZT8gSSB0aGluayBpdCdzIHNwZWNpYWwgYW5kIG5vdCBmb2xsb3dp bmcgdGNwY2kgc3BlYy4NCg0KPiArICAgICByZWcgfD0gVENQQ19ST0xFX0NUUkxfRFJQOw0KPiAr ICAgICByZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJl Zyk7DQo+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX0NPTU1BTkQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBUQ1BDX0NNRF9MT09LNENPTk5FQ1RJT04pOw0KPiAr ICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICBy ZXR1cm4gMDsNCj4gIH0NCj4NCj4gIHN0YXRpYyBlbnVtIHR5cGVjX2NjX3N0YXR1cyB0Y3BjaV90 b190eXBlY19jYyh1bnNpZ25lZCBpbnQgY2MsIGJvb2wgc2luaykNCj4gQEAgLTE3OCw2ICsxOTYs MTYgQEAgc3RhdGljIGludCB0Y3BjaV9zZXRfdmNvbm4oc3RydWN0IHRjcGNfZGV2ICp0Y3BjLA0K PiBib29sIGVuYWJsZSkNCj4gICAgICAgc3RydWN0IHRjcGNpICp0Y3BjaSA9IHRjcGNfdG9fdGNw Y2kodGNwYyk7DQo+ICAgICAgIGludCByZXQ7DQo+DQo+ICsgICAgIC8qIEhhbmRsZSB2ZW5kb3Ig c2V0IHZjb25uICovDQo+ICsgICAgIGlmICh0Y3BjaS0+ZGF0YSkgew0KPiArICAgICAgICAgICAg IGlmICh0Y3BjaS0+ZGF0YS0+c2V0X3Zjb25uKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBy ZXQgPSB0Y3BjaS0+ZGF0YS0+c2V0X3Zjb25uKHRjcGNpLCB0Y3BjaS0+ZGF0YSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlKTsNCj4g KyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiAr DQo+ICAgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1BPV0VSX0NU UkwsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgPyBUQ1BDX1BPV0VSX0NUUkxf VkNPTk5fRU5BQkxFIDogMCk7DQo+ICAgICAgIGlmIChyZXQgPCAwKQ0KPiBAQCAtMzIzLDYgKzM1 MSwxNSBAQCBzdGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0Y3BjKQ0KPiAg ICAgICBpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkNCj4gICAgICAgICAgICAgICBy ZXR1cm4gLUVUSU1FRE9VVDsNCj4NCj4gKyAgICAgLyogSGFuZGxlIHZlbmRvciBpbml0ICovDQo+ ICsgICAgIGlmICh0Y3BjaS0+ZGF0YSkgew0KPiArICAgICAgICAgICAgIGlmICh0Y3BjaS0+ZGF0 YS0+aW5pdCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdGNwY2ktPmRhdGEtPmlu aXQodGNwY2ksIHRjcGNpLT5kYXRhKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQg PCAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAg ICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiArDQo+ICAgICAgIC8qIENsZWFyIGFsbCBldmVudHMg Ki8NCj4gICAgICAgcmV0ID0gdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVCwgMHhmZmZm KTsNCj4gICAgICAgaWYgKHJldCA8IDApDQo+IEBAIC0zNDQsOSArMzgxLDE1IEBAIHN0YXRpYyBp bnQgdGNwY2lfaW5pdChzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpDQo+ICAgICAgIHJldHVybiB0Y3Bj aV93cml0ZTE2KHRjcGNpLCBUQ1BDX0FMRVJUX01BU0ssIHJlZyk7ICB9DQo+DQo+IC1zdGF0aWMg aXJxcmV0dXJuX3QgdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4gK3N0YXRpYyBp cnFyZXR1cm5fdCBfdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4gIHsNCj4gICAg ICAgc3RydWN0IHRjcGNpICp0Y3BjaSA9IGRldl9pZDsNCj4gKw0KPiArICAgICByZXR1cm4gdGNw Y2lfaXJxKHRjcGNpKTsNCj4gK30NCj4gKw0KPiAraXJxcmV0dXJuX3QgdGNwY2lfaXJxKHN0cnVj dCB0Y3BjaSAqdGNwY2kpIHsNCj4gICAgICAgdTE2IHN0YXR1czsNCj4NCj4gICAgICAgdGNwY2lf cmVhZDE2KHRjcGNpLCBUQ1BDX0FMRVJULCAmc3RhdHVzKTsgQEAgLTQxMiw2ICs0NTUsNyBAQA0K PiBzdGF0aWMgaXJxcmV0dXJuX3QgdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4N Cj4gICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOw0KPiAgfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwo dGNwY2lfaXJxKTsNCg0KSSBkb24ndCBjYXRjaCB0aGUgcG9pbnQgb2YgaG93IHlvdSBoYW5kbGUg cHJpdmF0ZSBldmVudHMgYnkgYWJvdmUgY2hhbmdlLA0KbWF5YmUgcG9zdCB5b3VyIFJUMTcxMUgg cGFydCBhcyBhIHVzZXIgaW4gb25lIHNlcmllcyBjYW4gbWFrZSBpdCBjbGVhciwNCkkgYXNzdW1l IHRoaXMgY2FuIGJlIGRvbmUgaW4gZXhpc3RpbmcgdGNwY2lfaXJxIGxpa2UgYWJvdmUgdmVuZGVy IHNwZWNpZmljDQpoYW5kbGluZyBhcyB3ZWxsOg0KICAgICAgdGNwY2ktPmRhdGEtPnByaXZfZXZl bnRzKHRjcGNpLCB0Y3BjaS0+ZGF0YSk7DQoNCkxpIEp1bg0KPg0KPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdtYXBfY29uZmlnIHRjcGNpX3JlZ21hcF9jb25maWcgPSB7DQo+ICAgICAgIC5yZWdf Yml0cyA9IDgsDQo+IEBAIC00MzUsMjIgKzQ3OSwxOCBAQCBzdGF0aWMgaW50IHRjcGNpX3BhcnNl X2NvbmZpZyhzdHJ1Y3QgdGNwY2kgKnRjcGNpKQ0KPiAgICAgICByZXR1cm4gMDsNCj4gIH0NCj4N Cj4gLXN0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4g LSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkN Cj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9ydChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCB0Y3BjaV9kYXRhDQo+ICsqZGF0YSkNCj4gIHsNCj4gICAgICAgc3RydWN0IHRjcGNp ICp0Y3BjaTsNCj4gICAgICAgaW50IGVycjsNCj4NCj4gLSAgICAgdGNwY2kgPSBkZXZtX2t6YWxs b2MoJmNsaWVudC0+ZGV2LCBzaXplb2YoKnRjcGNpKSwgR0ZQX0tFUk5FTCk7DQo+ICsgICAgIHRj cGNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwpOw0KPiAg ICAgICBpZiAoIXRjcGNpKQ0KPiAtICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArICAg ICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPg0KPiAtICAgICB0Y3BjaS0+Y2xp ZW50ID0gY2xpZW50Ow0KPiAtICAgICB0Y3BjaS0+ZGV2ID0gJmNsaWVudC0+ZGV2Ow0KPiAtICAg ICBpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCB0Y3BjaSk7DQo+IC0gICAgIHRjcGNpLT5yZWdt YXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhjbGllbnQsICZ0Y3BjaV9yZWdtYXBfY29uZmlnKTsN Cj4gLSAgICAgaWYgKElTX0VSUih0Y3BjaS0+cmVnbWFwKSkNCj4gLSAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUih0Y3BjaS0+cmVnbWFwKTsNCj4gKyAgICAgdGNwY2ktPmRldiA9IGRldjsNCj4g KyAgICAgdGNwY2ktPmRhdGEgPSBkYXRhOw0KPiArICAgICB0Y3BjaS0+cmVnbWFwID0gZGF0YS0+ cmVnbWFwOw0KPg0KPiAgICAgICB0Y3BjaS0+dGNwYy5pbml0ID0gdGNwY2lfaW5pdDsNCj4gICAg ICAgdGNwY2ktPnRjcGMuZ2V0X3ZidXMgPSB0Y3BjaV9nZXRfdmJ1czsgQEAgLTQ2NywyNyArNTA3 LDYzIEBAIHN0YXRpYw0KPiBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCwNCj4NCj4gICAgICAgZXJyID0gdGNwY2lfcGFyc2VfY29uZmlnKHRjcGNpKTsNCj4gICAgICAg aWYgKGVyciA8IDApDQo+IC0gICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gKyAgICAgICAgICAg ICByZXR1cm4gRVJSX1BUUihlcnIpOw0KPiArDQo+ICsgICAgIHRjcGNpLT5wb3J0ID0gdGNwbV9y ZWdpc3Rlcl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNwYyk7DQo+ICsgICAgIGlmIChQVFJf RVJSX09SX1pFUk8odGNwY2ktPnBvcnQpKQ0KPiArICAgICAgICAgICAgIHJldHVybiBFUlJfQ0FT VCh0Y3BjaS0+cG9ydCk7DQo+DQo+IC0gICAgIC8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzICov DQo+IC0gICAgIHRjcGNpX3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlRfTUFTSywgMCk7DQo+ICsg ICAgIHJldHVybiB0Y3BjaTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3JlZ2lz dGVyX3BvcnQpOw0KPiArDQo+ICt2b2lkIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChzdHJ1Y3QgdGNw Y2kgKnRjcGNpKSB7DQo+ICsgICAgIHRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNpLT5wb3J0KTsN Cj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3VucmVnaXN0ZXJfcG9ydCk7DQo+DQo+ IC0gICAgIGVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodGNwY2ktPmRldiwgY2xpZW50 LT5pcnEsIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNw Y2lfaXJxLA0KPiArc3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAq aTJjX2lkKSB7DQo+ICsgICAgIHN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwOw0KPiArICAgICBpbnQg ZXJyOw0KPiArICAgICB1MTYgdmFsID0gMDsNCj4gKw0KPiArICAgICBjaGlwID0gZGV2bV9remFs bG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCpjaGlwKSwgR0ZQX0tFUk5FTCk7DQo+ICsgICAgIGlm ICghY2hpcCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgICBj aGlwLT5kYXRhLnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwNCj4gJnRjcGNp X3JlZ21hcF9jb25maWcpOw0KPiArICAgICBpZiAoSVNfRVJSKGNoaXAtPmRhdGEucmVnbWFwKSkN Cj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjaGlwLT5kYXRhLnJlZ21hcCk7DQo+ICsN Cj4gKyAgICAgLyogRGlzYWJsZSBjaGlwIGludGVycnVwdHMgYmVmb3JlIHJlcXVlc3RpbmcgaXJx ICovDQo+ICsgICAgIGVyciA9IHJlZ21hcF9yYXdfd3JpdGUoY2hpcC0+ZGF0YS5yZWdtYXAsIFRD UENfQUxFUlRfTUFTSywgJnZhbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YodTE2KSk7DQo+ICsgICAgIGlmIChlcnIgPCAwKQ0KPiArICAgICAgICAgICAgIHJldHVybiBl cnI7DQo+ICsNCj4gKyAgICAgZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmY2xpZW50 LT5kZXYsIGNsaWVudC0+aXJxLCBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF90Y3BjaV9pcnEsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9UUklHR0VSX0xPVywNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZfbmFtZSh0Y3BjaS0+ZGV2KSwgdGNwY2kpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKCZjbGllbnQtPmRl diksIGNoaXApOw0KPiAgICAgICBpZiAoZXJyIDwgMCkNCj4gICAgICAgICAgICAgICByZXR1cm4g ZXJyOw0KPg0KPiAtICAgICB0Y3BjaS0+cG9ydCA9IHRjcG1fcmVnaXN0ZXJfcG9ydCh0Y3BjaS0+ ZGV2LCAmdGNwY2ktPnRjcGMpOw0KPiAtICAgICByZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHRjcGNp LT5wb3J0KTsNCj4gKyAgICAgY2hpcC0+dGNwY2kgPSB0Y3BjaV9yZWdpc3Rlcl9wb3J0KCZjbGll bnQtPmRldiwgJmNoaXAtPmRhdGEpOw0KPiArICAgICBpZiAoUFRSX0VSUl9PUl9aRVJPKGNoaXAt PnRjcGNpKSkNCj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjaGlwLT50Y3BjaSk7DQo+ ICsNCj4gKyAgICAgaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgY2hpcCk7DQo+ICsgICAgIHJl dHVybiAwOw0KPiAgfQ0KPg0KPiAgc3RhdGljIGludCB0Y3BjaV9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkgIHsNCj4gLSAgICAgc3RydWN0IHRjcGNpICp0Y3BjaSA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOw0KPiArICAgICBzdHJ1Y3QgdGNwY2lfY2hpcCAqY2hpcCA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOw0KPg0KPiAtICAgICB0Y3BtX3VucmVnaXN0ZXJfcG9y dCh0Y3BjaS0+cG9ydCk7DQo+ICsgICAgIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChjaGlwLT50Y3Bj aSk7DQo+DQo+ICAgICAgIHJldHVybiAwOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL3R5cGVjL3RjcGNpLmggYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaA0KPiBp bmRleCBmZGZiMDZjLi40MDAyNWIyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHlw ZWMvdGNwY2kuaA0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaA0KPiBAQCAt NTksNiArNTksNyBAQA0KPiAgI2RlZmluZSBUQ1BDX1BPV0VSX0NUUkxfVkNPTk5fRU5BQkxFIEJJ VCgwKQ0KPg0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg MHgxZA0KPiArI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19EUlBSU1QgICAgICAgICAgICAgICAgQklU KDUpDQo+ICAjZGVmaW5lIFRDUENfQ0NfU1RBVFVTX1RFUk0gICAgICAgICAgQklUKDQpDQo+ICAj ZGVmaW5lIFRDUENfQ0NfU1RBVFVTX0NDMl9TSElGVCAgICAgMg0KPiAgI2RlZmluZSBUQ1BDX0ND X1NUQVRVU19DQzJfTUFTSyAgICAgICAgICAgICAgMHgzDQo+IEBAIC0xMjEsNCArMTIyLDE2IEBA DQo+ICAjZGVmaW5lIFRDUENfVkJVU19WT0xUQUdFX0FMQVJNX0hJX0NGRyAgICAgICAgICAgICAg IDB4NzYNCj4gICNkZWZpbmUgVENQQ19WQlVTX1ZPTFRBR0VfQUxBUk1fTE9fQ0ZHICAgICAgICAg ICAgICAgMHg3OA0KPg0KPiArc3RydWN0IHRjcGNpOw0KPiArc3RydWN0IHRjcGNpX2RhdGEgew0K PiArICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7DQo+ICsgICAgIGludCAoKmluaXQpKHN0cnVj dCB0Y3BjaSAqdGNwY2ksIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhKTsNCj4gKyAgICAgaW50ICgq c2V0X3Zjb25uKShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZSk7DQo+ICt9Ow0KPiArDQo+ICtz dHJ1Y3QgdGNwY2kgKnRjcGNpX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgdGNwY2lfZGF0YQ0KPiArKmRhdGEpOyB2b2lkIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChzdHJ1 Y3QgdGNwY2kgKnRjcGNpKTsgaXJxcmV0dXJuX3QNCj4gK3RjcGNpX2lycShzdHJ1Y3QgdGNwY2kg KnRjcGNpKTsNCj4gKw0KPiAgI2VuZGlmIC8qIF9fTElOVVhfVVNCX1RDUENJX0ggKi8NCj4gLS0N Cj4gMS45LjENCj4NCj4gLS0NCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQg dGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4gdGhlDQo+IGJvZHkgb2YgYSBtZXNz YWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9yZSBtYWpvcmRvbW8gaW5mbyBhdA0K PiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0 dHAlM0ElMkYlMkZ2Z2VyDQo+IC5rZXJuZWwub3JnJTJGbWFqb3Jkb21vLWluZm8uaHRtbCZkYXRh PTAyJTdDMDElN0NqdW4ubGklNDBueHAuY29tDQo+ICU3QzQ0ZDExYWYyN2UwMjQ0ZmE0ZDExMDhk NTc5M2MzZGM0JTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkOTljDQo+IDVjMzAxNjM1JTdDMCU3QzEl N0M2MzY1NDgyMjIwMDg5MDUyMDYmc2RhdGE9em4yb3VnS1J2cyUyQmJtSA0KPiBRZzJjOFJqajd2 TmUwWmlpVktkYXI3R2RQYSUyQjNvJTNEJnJlc2VydmVkPTANCioqKioqKioqKioqKiogRW1haWwg Q29uZmlkZW50aWFsaXR5IE5vdGljZSAqKioqKioqKioqKioqKioqKioqKg0KDQpUaGUgaW5mb3Jt YXRpb24gY29udGFpbmVkIGluIHRoaXMgZS1tYWlsIG1lc3NhZ2UgKGluY2x1ZGluZyBhbnkgYXR0 YWNobWVudHMpIG1heSBiZSBjb25maWRlbnRpYWwsIHByb3ByaWV0YXJ5LCBwcml2aWxlZ2VkLCBv ciBvdGhlcndpc2UgZXhlbXB0IGZyb20gZGlzY2xvc3VyZSB1bmRlciBhcHBsaWNhYmxlIGxhd3Mu IEl0IGlzIGludGVuZGVkIHRvIGJlIGNvbnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVj aXBpZW50KHMpLiBBbnkgdXNlLCBkaXNzZW1pbmF0aW9uLCBkaXN0cmlidXRpb24sIHByaW50aW5n LCByZXRhaW5pbmcgb3IgY29weWluZyBvZiB0aGlzIGUtbWFpbCAoaW5jbHVkaW5nIGl0cyBhdHRh Y2htZW50cykgYnkgdW5pbnRlbmRlZCByZWNpcGllbnQocykgaXMgc3RyaWN0bHkgcHJvaGliaXRl ZCBhbmQgbWF5IGJlIHVubGF3ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGll bnQgb2YgdGhpcyBlLW1haWwsIG9yIGJlbGlldmUgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz IGUtbWFpbCBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IChi eSByZXBseWluZyB0byB0aGlzIGUtbWFpbCksIGRlbGV0ZSBhbnkgYW5kIGFsbCBjb3BpZXMgb2Yg dGhpcyBlLW1haWwgKGluY2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIGZyb20geW91ciBzeXN0ZW0s IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnQgb2YgdGhpcyBlLW1haWwgdG8gYW55IG90 aGVyIHBlcnNvbi4gVGhhbmsgeW91IQo=