From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 2/2] xen/input: add multi-touch support Date: Wed, 21 Jun 2017 11:54:28 +0300 Message-ID: <8eb8a2c6-1390-a2bb-3298-cb13b594a6d1__36661.5265528255$1498035341$gmane$org@gmail.com> References: <1492083484-31786-1-git-send-email-andr2000@gmail.com> <1492083484-31786-3-git-send-email-andr2000@gmail.com> <20170421021018.GB23279@dtor-ws> <20170530055150.GA38163@dtor-ws> <8092dd49-20e0-3e8d-977d-2f570142a37d@gmail.com> <20170530163708.GA12922@dtor-ws> <20170607165630.GA13116@dtor-ws> <222abecb-10b6-6196-9f44-6ec366377335@gmail.com> <20170621072425.GA36968@dtor-ws> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNbPF-0003xe-Cz for xen-devel@lists.xenproject.org; Wed, 21 Jun 2017 08:54:33 +0000 Received: by mail-lf0-f66.google.com with SMTP id l200so7921657lfg.1 for ; Wed, 21 Jun 2017 01:54:31 -0700 (PDT) In-Reply-To: <20170621072425.GA36968@dtor-ws> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dmitry Torokhov Cc: jgross@suse.com, Oleksandr Andrushchenko , vlad.babchuk@gmail.com, linux-kernel@vger.kernel.org, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, linux-input@vger.kernel.org, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org SGksIERtaXRyeSEKCk9uIDA2LzIxLzIwMTcgMTA6MjQgQU0sIERtaXRyeSBUb3Jva2hvdiB3cm90 ZToKPiBPbiBUaHUsIEp1biAwOCwgMjAxNyBhdCAwOTo0NToxOEFNICswMzAwLCBPbGVrc2FuZHIg QW5kcnVzaGNoZW5rbyB3cm90ZToKPj4gSGksIERtaXRyeSEKPj4KPj4gT24gMDYvMDcvMjAxNyAw Nzo1NiBQTSwgRG1pdHJ5IFRvcm9raG92IHdyb3RlOgo+Pj4gT24gV2VkLCBNYXkgMzEsIDIwMTcg YXQgMTI6MDY6NTZQTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+Pj4g SGksIERtaXRyeSEKPj4+Pgo+Pj4+IE9uIDA1LzMwLzIwMTcgMDc6MzcgUE0sIERtaXRyeSBUb3Jv a2hvdiB3cm90ZToKPj4+Pj4gT24gVHVlLCBNYXkgMzAsIDIwMTcgYXQgMDM6NTA6MjBQTSArMDMw MCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+Pj4+PiBIaSwgRG1pdHJ5IQo+Pj4+ Pj4KPj4+Pj4+IE9uIDA1LzMwLzIwMTcgMDg6NTEgQU0sIERtaXRyeSBUb3Jva2hvdiB3cm90ZToK Pj4+Pj4+PiBPbiBGcmksIEFwciAyMSwgMjAxNyBhdCAwOTo0MDozNkFNICswMzAwLCBPbGVrc2Fu ZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+Pj4+Pj4gSGksIERtaXRyeSEKPj4+Pj4+Pj4KPj4+ Pj4+Pj4gT24gMDQvMjEvMjAxNyAwNToxMCBBTSwgRG1pdHJ5IFRvcm9raG92IHdyb3RlOgo+Pj4+ Pj4+Pj4gSGkgT2xla3NhbmRyLAo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IE9uIFRodSwgQXByIDEzLCAy MDE3IGF0IDAyOjM4OjA0UE0gKzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ Pj4+Pj4+Pj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVz aGNoZW5rb0BlcGFtLmNvbT4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IEV4dGVuZCB4ZW5fa2JkZnJv bnQgdG8gcHJvdmlkZSBtdWx0aS10b3VjaCBzdXBwb3J0Cj4+Pj4+Pj4+Pj4gdG8gdW5wcml2aWxl Z2VkIGRvbWFpbnMuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2Fu ZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+ Pj4+Pj4gLS0tCj4+Pj4+Pj4+Pj4gICBkcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMg fCAxNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4+Pj4+Pj4+PiAg IDEgZmlsZSBjaGFuZ2VkLCAxNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4+Pj4+ Pj4+Pgo+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZy b250LmMgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4+Pj4+PiBpbmRl eCAwMWMyN2I0YzMyODguLmU1ZDA2NGFhYTIzNyAxMDA2NDQKPj4+Pj4+Pj4+PiAtLS0gYS9kcml2 ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2lu cHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4+Pj4+PiBAQCAtMTcsNiArMTcsNyBAQAo+Pj4+ Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Cj4+Pj4+Pj4+Pj4gICAjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+Cj4+Pj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KPj4+ Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2lucHV0L210Lmg+Cj4+Pj4+Pj4+Pj4gICAjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+Pj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNv ci5oPgo+Pj4+Pj4+Pj4+IEBAIC0zNCwxMSArMzUsMTQgQEAKPj4+Pj4+Pj4+PiAgIHN0cnVjdCB4 ZW5rYmRfaW5mbyB7Cj4+Pj4+Pj4+Pj4gICAJc3RydWN0IGlucHV0X2RldiAqa2JkOwo+Pj4+Pj4+ Pj4+ICAgCXN0cnVjdCBpbnB1dF9kZXYgKnB0cjsKPj4+Pj4+Pj4+PiArCXN0cnVjdCBpbnB1dF9k ZXYgKm10b3VjaDsKPj4+Pj4+Pj4+PiAgIAlzdHJ1Y3QgeGVua2JkX3BhZ2UgKnBhZ2U7Cj4+Pj4+ Pj4+Pj4gICAJaW50IGdyZWY7Cj4+Pj4+Pj4+Pj4gICAJaW50IGlycTsKPj4+Pj4+Pj4+PiAgIAlz dHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJkZXY7Cj4+Pj4+Pj4+Pj4gICAJY2hhciBwaHlzWzMyXTsK Pj4+Pj4+Pj4+PiArCS8qIGN1cnJlbnQgTVQgc2xvdC9jb250YWN0IElEIHdlIGFyZSBpbmplY3Rp bmcgZXZlbnRzIGluICovCj4+Pj4+Pj4+Pj4gKwlpbnQgbXRvdWNoX2N1cl9jb250YWN0X2lkOwo+ Pj4+Pj4+Pj4+ICAgfTsKPj4+Pj4+Pj4+PiAgIGVudW0geyBLUEFSQU1fWCwgS1BBUkFNX1ksIEtQ QVJBTV9DTlQgfTsKPj4+Pj4+Pj4+PiBAQCAtNDcsNiArNTEsMTIgQEAgbW9kdWxlX3BhcmFtX2Fy cmF5KHB0cl9zaXplLCBpbnQsIE5VTEwsIDA0NDQpOwo+Pj4+Pj4+Pj4+ICAgTU9EVUxFX1BBUk1f REVTQyhwdHJfc2l6ZSwKPj4+Pj4+Pj4+PiAgIAkiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBoZWln aHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgwMCw2MDApIik7Cj4+Pj4+Pj4+Pj4gK2VudW0geyBLUEFS QU1fTVRfWCwgS1BBUkFNX01UX1ksIEtQQVJBTV9NVF9DTlQgfTsKPj4+Pj4+Pj4+PiArc3RhdGlj IGludCBtdG91Y2hfc2l6ZVtLUEFSQU1fTVRfQ05UXSA9IHsgWEVORkJfV0lEVEgsIFhFTkZCX0hF SUdIVCB9Owo+Pj4+Pj4+Pj4+ICttb2R1bGVfcGFyYW1fYXJyYXkobXRvdWNoX3NpemUsIGludCwg TlVMTCwgMDQ0NCk7Cj4+Pj4+Pj4+Pj4gK01PRFVMRV9QQVJNX0RFU0MocHRyX3NpemUsCj4+Pj4+ Pj4+Pj4gKwkiTXVsdGktdG91Y2ggZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChkZWZh dWx0IDgwMCw2MDApIik7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gV2h5IGRvIHlvdSBuZWVkIHNl cGFyYXRlIG1vZHVsZSBwYXJhbWV0ZXJzIGZvciBtdWx0aS10b3VjaCBkZXZpY2U/Cj4+Pj4+Pj4+ IHBsZWFzZSBzZWUgYmVsb3cKPj4+Pj4+Pj4+PiAgIHN0YXRpYyBpbnQgeGVua2JkX3JlbW92ZShz dHJ1Y3QgeGVuYnVzX2RldmljZSAqKTsKPj4+Pj4+Pj4+PiAgIHN0YXRpYyBpbnQgeGVua2JkX2Nv bm5lY3RfYmFja2VuZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqLCBzdHJ1Y3QgeGVua2JkX2luZm8g Kik7Cj4+Pj4+Pj4+Pj4gICBzdGF0aWMgdm9pZCB4ZW5rYmRfZGlzY29ubmVjdF9iYWNrZW5kKHN0 cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPj4+Pj4+Pj4+PiBAQCAtMTAwLDYgKzExMCw2MCBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxlcihpbnQgcnEsIHZvaWQgKmRldl9pZCkKPj4+Pj4+ Pj4+PiAgIAkJCQlpbnB1dF9yZXBvcnRfcmVsKGRldiwgUkVMX1dIRUVMLAo+Pj4+Pj4+Pj4+ICAg CQkJCQkJIC1ldmVudC0+cG9zLnJlbF96KTsKPj4+Pj4+Pj4+PiAgIAkJCWJyZWFrOwo+Pj4+Pj4+ Pj4+ICsJCWNhc2UgWEVOS0JEX1RZUEVfTVRPVUNIOgo+Pj4+Pj4+Pj4+ICsJCQlkZXYgPSBpbmZv LT5tdG91Y2g7Cj4+Pj4+Pj4+Pj4gKwkJCWlmICh1bmxpa2VseSghZGV2KSkKPj4+Pj4+Pj4+PiAr CQkJCWJyZWFrOwo+Pj4+Pj4+Pj4+ICsJCQlpZiAodW5saWtlbHkoZXZlbnQtPm10b3VjaC5jb250 YWN0X2lkICE9Cj4+Pj4+Pj4+Pj4gKwkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSkg ewo+Pj4+Pj4+Pj4gV2h5IGlzIHRoaXMgdW5saWtlbHk/IERvZXMgY29udGFjdCBJRCBjaGFuZ2Vz IG9uY2UgaW4gMTAwMCBwYWNrZXRzIG9yCj4+Pj4+Pj4+PiBldmVuIGxlc3M/Cj4+Pj4+Pj4+IE11 IGFzc3VtcHRpb24gd2FzIHRoYXQgcmVnYXJkbGVzcyBvZiB0aGUgZmFjdCB0aGF0IHdlIGFyZSBt dWx0aS10b3VjaAo+Pj4+Pj4+PiBkZXZpY2Ugc3RpbGwgc2luZ2xlIHRvdWNoZXMgd2lsbCBjb21l IGluIG1vcmUgZnJlcXVlbnRseQo+Pj4+Pj4+PiBCdXQgSSBjYW4gcmVtb3ZlICp1bmxpa2VseSog aWYgbXkgYXNzdW1wdGlvbiBpcyBub3QgY29ycmVjdAo+Pj4+Pj4+IEkgdGhpbmsgdGhlIG5vcm1h bCBleHBlY3RhdGlvbiBpcyB0aGF0ICJ1bmxpa2VseSIgaXMgc3VwcG9zZWQgZm9yCj4+Pj4+Pj4g c29tZXRoaW5nIHRoYXQgaGFwcGVucyBvbmNlIGluIGEgYmx1ZSBtb29uLCBzbyBJJ2QgcmF0aGVy IHJlbW92ZSBpdC4KPj4+Pj4+Pgo+Pj4+Pj4gYWdyZWUsIHJlbW92ZWQgInVubGlrZWx5Igo+Pj4+ Pj4+Pj4+ICsJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkID0KPj4+Pj4+Pj4+PiArCQkJ CQlldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQ7Cj4+Pj4+Pj4+Pj4gKwkJCQlpbnB1dF9tdF9zbG90 KGRldiwgZXZlbnQtPm10b3VjaC5jb250YWN0X2lkKTsKPj4+Pj4+Pj4+PiArCQkJfQo+Pj4+Pj4+ Pj4+ICsJCQlzd2l0Y2ggKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSkgewo+Pj4+Pj4+Pj4+ICsJ CQljYXNlIFhFTktCRF9NVF9FVl9ET1dOOgo+Pj4+Pj4+Pj4+ICsJCQkJaW5wdXRfbXRfcmVwb3J0 X3Nsb3Rfc3RhdGUoZGV2LCBNVF9UT09MX0ZJTkdFUiwKPj4+Pj4+Pj4+PiArCQkJCQkJCSAgIHRy dWUpOwo+Pj4+Pj4+IFNob3VsZCB3ZSBlc3RhYmxpc2ggdG9vbCBldmVudD8gV2UgaGF2ZSBNVF9U T09MX1BFTiwgZXRjLgo+Pj4+Pj4gSSB0aGluayB0aGF0IGZvciBtdWx0aS10b3VjaCBNVF9UT09M X0ZJTkdFUiBpcyBlbm91Z2gKPj4+Pj4+IGFueSByZWFzb24gd2Ugd291bGQgYWxzbyB3YW50IE1U X1RPT0xfUEVOIGhlcmU/Cj4+Pj4+IFdoeSB3b3VsZCBub3QgeW91PyBMZXQncyBzYXkgeW91IGhh dmUgYSBkcmF3aW5nIGFwcGxpY2F0aW9uIHJ1bm5pbmcgaW4KPj4+Pj4gZ3Vlc3QgdGhhdCBjYW4g bWFrZSB1c2Ugb2YgdG9vbCB0eXBlcy4gV2h5IHdvdWxkIG5vdCB5b3Ugd2FudCB0byB0ZWxsIGl0 Cj4+Pj4+IHRoYXQgdGhlIHRvb2wgdXNlciBpcyBjdXJyZW50bHkgdXNpbmcgaXMgaW4gZmFjdCBh IHBlbiBhbmQgbm90IGZpbmdlcj8KPj4+PiBCdXQgaXQgaXMgYSBmaW5nZXIgOikgd2UgYXJlIG11 bHRpLXRvdWNoLCBub3QgbXVsdGkgcGVuCj4+PiBTbyBmb3IgdGFibGV0cyB0aGF0IHN1cHBvcnQg Ym90aCB0b3VjaCBhbmQgc3R5bHVzIHlvdSB3b3VsZCBleHBvcnQgdGhlbQo+Pj4gYXMgMiBzZXBh cmF0ZSBkZXZpY2VzPwo+PiB0aGlzIGNvdWxkIGJlIGRvbmUgaW4gZGlmZmVyZW50IHdheXMsIGJ1 dCBwbGVhc2Ugc2VlIG9uCj4+IHBlbiBzdXBwb3J0IGJlbG93Cj4+Pj4gQmVzaWRlcywgdGhhdCwg aWYgSSBhbSBhYm91dCB0byBpbXBsZW1lbnQgcGVuIHN1cHBvcnQKPj4+PiAod2hpY2ggSSBzdGls bCBub3QgY29udmluY2VkIHdlIHJlYWxseSBuZWVkKSwgaG93IHdpbGwgSQo+Pj4+IGRvIHRoYXQ/ Cj4+PiBJIGRvIG5vdCBrbm93IHdoYXQgeW91IGhhdmUgb24gdGhlIGJhY2tlbmQgc2lkZSwgYnV0 IHJvdWdobHkgc3BlYWtpbmcgaWYKPj4+IHlvdSBkZXRlY3QgYSBwZW4vc3R5bHVzIHlvdSBsZXQg eW91ciBndWVzdCBrbm93IHRoYXQgdGhlIGNvbnRhY3QgaXMgbm90Cj4+PiBhIGZpbmdlciwgYnV0 IHBlbi4gSG93IHlvdSBwbHVtYiBpdCB0aHJvdWdoIGlzIHVwIHRvIHlvdS4KPj4gd2UgZG8gbm90 IGRldGVjdCBwZW4sIG9ubHkgZmluZ2VyIGF0IHRoZSBtb21lbnQKPj4gYW5kIHRoZSBleGlzdGlu ZyBwcm90b2NvbCBoYXMgbm8gbWVhbnMgdG8gdGVsbAo+PiB0eXBlIG9mIHRoZSB0b29sIHVzZWQs IGV2ZXJ5dGhpbmcgaXMgc3VwcG9zZWQgdG8KPj4gYmUgImZpbmdlciIsIHNvIGZyb250LWVuZCBo YXMgbm8gcG9zc2liaWxpdHkgdG8KPj4gdGVsbCBvbmUgdG9vbCBmcm9tIGFub3RoZXIKPj4+PiBN eSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgSSBuZWVkIDIgZGlmZmVyZW50IHNsb3RzIHRvIHJlcG9y dAo+Pj4+IHRoZSBzYW1lIGNvb3JkaW5hdGVzIGZvciBmaW5nZXIgYW5kIHBlbi4gVGhpcyBpcyBi ZWNhdXNlCj4+Pj4gaW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUgaGFzIGEgY2hlY2sgdGhhdCBp ZiB0b29sIGhhcwo+Pj4+IGNoYW5nZWQgZm9yIHRoZSBjdXJyZW50IHNsb3QgdGhlbiBhIG5ldyB0 cmFja2luZyBJRCBpcyBzZXQuCj4+Pj4gRG8gSSBhbHNvIG5lZWQgdG8gYWxsb2NhdGUgdHdpY2Ug bW9yZSBzbG90cywgc28gSSBjYW4KPj4+PiByZXBvcnQgMiAqIG51bV9jb250YWN0cyBldmVudHMg c2ltdWx0YW5lb3VzbHkgKG9uZSBmb3IgZmluZ2VyCj4+Pj4gYW5kIGFub3RoZXIgZm9yIHBlbik/ Cj4+Pj4gVGhhdCBzYWlkLCBJIGJlbGlldmUgd2UgY2FuIHN0YXJ0IHdpdGggbXVsdGktdG91Y2gg c3VwcG9ydAo+Pj4+IGFuZCBpZiBuZWVkIGJlIHRoZW4gYWRkIHBlbiBzdXBwb3J0IGFzIGEgc2Vw YXJhdGUgY2hhbmdlLAo+Pj4+IGRvZXMgdGhhdCBtYWtlIHNlbnNlIGZvciB5b3U/Cj4+Pj4+PiAo SSBndWVzcyBNVF9UT09MX1BBTE0gaXMgbm90IGFwcHJvcHJpYXRlIGFueXdheXMpCj4+Pj4+IERl cGVuZHMgb24gaWYgeW91IGRvIHN0cmFpZ2h0IHBhc3MtdGhyb3VnaCBmcm9tIHRoZSBob3N0IHNp ZGUgb3Igbm90LiBJZgo+Pj4+PiB5b3Ugc3RhY2sgZG9lcyBwYWxtIHJlamVjdGlvbiBiZWZvcmUg cGFzc2luZyB0aGUgZGF0YSB0aHJvdWdoIHRoZW4geW91Cj4+Pj4+IHdvdWxkIG5vdCBzZWUgTVRf VE9PTF9QQUxNIGluIGd1ZXN0Lgo+Pj4+IHRoZSBwcm90b2NvbCB1c2VkIGJldHdlZW4gZ3Vlc3Qg YW5kIGhvc3QgaXMgYSBnZW5lcmljIG9uZSwKPj4+PiBub3QgdXNpbmcgTGludXggdHlwZXMvY29u c3RhbnRzL2V2ZW50cy4KPj4+IEl0IGRvZXMgbm90IGhhdmUgdG8gdXNlIExpbnV4IHR5cGVzIHRv IHN1cHBvcnQgdGhlIGNvbmNlcHQgb2YgZGlmZmVyZW50Cj4+PiB0b29scy4KPj4gYWdyZWUKPj4+ PiBTbywgbm8gUEFMTS9UT09MIHN1cHBvcnQgaXMgaW4gcGxhY2UKPj4+IE9LLCB0aGF0IGlzIGZh aXIuIFRoZSBwZW4gc3VwcG9ydCBpcyBkZWZpbml0ZWx5IG5vdCBhIGhhcmQgcmVxdWlyZW1lbnQu Cj4+IHNvLCBjYW4gd2UgbGl2ZSB3aXRoIGZpbmdlciBhdCB0aGlzIHBvaW50LCBubyBwZW4/Cj4+ PiBJIHdhcyBqdXN0IHdvbmRlcmluZyBpZiB5b3UgY29uc2lkZXJlZCBvciBoYXZlIHBsYW5zIGZv ciBhZGRpbmcgdGhhdC4KPj4gd2VsbCwgaG9uZXN0bHksIHdlIGRvIG5vdCBuZWVkIHBlbiBhdCB0 aGUgbW9tZW50LAo+PiBidXQgd2UgZGlkIGFkZCBtdWx0aS10b3VjaCBzdXBwb3J0IGludG8gWGVu IHByb3RvY29scwo+PiBhbmQgaWYgcGVuIHJlcXVpcmVkIGl0IGNhbiBiZSBkb25lIGFzIGEgc2Vw YXJhdGUKPj4gY2hhbmdlIHRvIGJvdGggcHJvdG9jb2wgYW5kIGZyb250L2JhY2sgZW5kcwo+Pj4g ICBPcgo+Pj4gaWYgeW91IHdhbnQgdG8gcmV2aWV3IHRoZSBwcm90b2NvbCBzbyBpdCBjYW4gYmUg ZWFzaWx5IGFkZGVkIGluIHRoZQo+Pj4gZnV0dXJlLiBGb3IgZXhhbXBsZSB5b3UgY291bGQgaGF2 ZSB0b29sIHR5cGUgdG8gYmUgcGFydCBvZgo+Pj4gWEVOS0JEX01UX0VWX0RPV04gZXZlbnQuCj4+ IHByb3RvY29sIGRpZCBhIGxvbmcgd2F5IHRvIGdldCBpbnRvIFhlbi9LZXJuZWwuLi4gOikKPj4g b2YgY291cnNlLCB0aGlzIGNhbiBiZSBkb25lLCBidXQgSSB3b3VsZCBwcmVmZXIgaXQgaXMKPj4g YWRkZWQgd2hlbiBpdCBpcyBuZWVkZWQsIG5vdCBvbmx5IHRoYXQgd2UgaGF2ZSB0aGlzIGZ1bmN0 aW9uYWxpdHkKPiBPSy4KPgo+Pj4+Pj4+Pj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMs IEFCU19NVF9QT1NJVElPTl9YLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUu cG9zLmFic194KTsKPj4+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNf TVRfUE9TSVRJT05fWSwKPj4+Pj4+Pj4+PiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5h YnNfeSk7Cj4+Pj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1gsCj4+ Pj4+Pj4+Pj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+Pj4+Pj4+Pj4+ ICsJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19ZLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAg ICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4+Pj4+Pj4+PiArCQkJCWJyZWFrOwo+Pj4+ Pj4+Pj4+ICsJCQljYXNlIFhFTktCRF9NVF9FVl9VUDoKPj4+Pj4+Pj4+PiArCQkJCWlucHV0X210 X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRfVE9PTF9GSU5HRVIsCj4+Pj4+Pj4+Pj4gKwkJCQkJ CQkgICBmYWxzZSk7Cj4+Pj4+Pj4+Pj4gKwkJCQlicmVhazsKPj4+Pj4+Pj4+PiArCQkJY2FzZSBY RU5LQkRfTVRfRVZfTU9USU9OOgo+Pj4+Pj4+Pj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9B QlMsIEFCU19NVF9QT1NJVElPTl9YLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNo LnUucG9zLmFic194KTsKPj4+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBB QlNfTVRfUE9TSVRJT05fWSwKPj4+Pj4+Pj4+PiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBv cy5hYnNfeSk7Cj4+Pj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1gs Cj4+Pj4+Pj4+Pj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+Pj4+Pj4+ Pj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19ZLAo+Pj4+Pj4+Pj4+ICsJCQkJ CSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4+Pj4+Pj4+PiArCQkJCWJyZWFrOwo+ Pj4+Pj4+Pj4+ICsJCQljYXNlIFhFTktCRF9NVF9FVl9TWU46Cj4+Pj4+Pj4+Pj4gKwkJCQlpbnB1 dF9tdF9zeW5jX2ZyYW1lKGRldik7Cj4+Pj4+Pj4+Pj4gKwkJCQlicmVhazsKPj4+Pj4+Pj4+PiAr CQkJY2FzZSBYRU5LQkRfTVRfRVZfU0hBUEU6Cj4+Pj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVudChk ZXYsIEVWX0FCUywgQUJTX01UX1RPVUNIX01BSk9SLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVu dC0+bXRvdWNoLnUuc2hhcGUubWFqb3IpOwo+Pj4+Pj4+Pj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2 LCBFVl9BQlMsIEFCU19NVF9UT1VDSF9NSU5PUiwKPj4+Pj4+Pj4+PiArCQkJCQkgICAgZXZlbnQt Pm10b3VjaC51LnNoYXBlLm1pbm9yKTsKPj4+Pj4+Pj4+PiArCQkJCWJyZWFrOwo+Pj4+Pj4+Pj4+ ICsJCQljYXNlIFhFTktCRF9NVF9FVl9PUklFTlQ6Cj4+Pj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVu dChkZXYsIEVWX0FCUywgQUJTX01UX09SSUVOVEFUSU9OLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAgICBl dmVudC0+bXRvdWNoLnUub3JpZW50YXRpb24pOwo+Pj4+Pj4+Pj4+ICsJCQkJYnJlYWs7Cj4+Pj4+ Pj4+Pj4gKwkJCX0KPj4+Pj4+Pj4+PiArCQkJLyogb25seSByZXBvcnQgc3luIHdoZW4gcmVxdWVz dGVkICovCj4+Pj4+Pj4+Pj4gKwkJCWlmIChldmVudC0+bXRvdWNoLmV2ZW50X3R5cGUgIT0gWEVO S0JEX01UX0VWX1NZTikKPj4+Pj4+Pj4+PiArCQkJCWRldiA9IE5VTEw7Cj4+Pj4+Pj4+Pj4gICAJ CX0KPj4+Pj4+Pj4+PiAgIAkJaWYgKGRldikKPj4+Pj4+Pj4+PiAgIAkJCWlucHV0X3N5bmMoZGV2 KTsKPj4+Pj4+Pj4+PiBAQCAtMTE1LDkgKzE3OSw5IEBAIHN0YXRpYyBpbnQgeGVua2JkX3Byb2Jl KHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4+Pj4+Pj4+Pj4gICAJCQkJICBjb25zdCBzdHJ1 Y3QgeGVuYnVzX2RldmljZV9pZCAqaWQpCj4+Pj4+Pj4+Pj4gICB7Cj4+Pj4+Pj4+Pj4gICAJaW50 IHJldCwgaTsKPj4+Pj4+Pj4+PiAtCXVuc2lnbmVkIGludCBhYnM7Cj4+Pj4+Pj4+Pj4gKwl1bnNp Z25lZCBpbnQgYWJzLCB0b3VjaDsKPj4+Pj4+Pj4+PiAgIAlzdHJ1Y3QgeGVua2JkX2luZm8gKmlu Zm87Cj4+Pj4+Pj4+Pj4gLQlzdHJ1Y3QgaW5wdXRfZGV2ICprYmQsICpwdHI7Cj4+Pj4+Pj4+Pj4g KwlzdHJ1Y3QgaW5wdXRfZGV2ICprYmQsICpwdHIsICptdG91Y2g7Cj4+Pj4+Pj4+Pj4gICAJaW5m byA9IGt6YWxsb2Moc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7Cj4+Pj4+Pj4+Pj4gICAJaWYg KCFpbmZvKSB7Cj4+Pj4+Pj4+Pj4gQEAgLTE1Miw2ICsyMTYsMTcgQEAgc3RhdGljIGludCB4ZW5r YmRfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKPj4+Pj4+Pj4+PiAgIAkJfQo+Pj4+ Pj4+Pj4+ICAgCX0KPj4+Pj4+Pj4+PiArCXRvdWNoID0geGVuYnVzX3JlYWRfdW5zaWduZWQoZGV2 LT5ub2RlbmFtZSwKPj4+Pj4+Pj4+PiArCQkJCSAgICAgWEVOS0JEX0ZJRUxEX0ZFQVRfTVRPVUNI LCAwKTsKPj4+Pj4+Pj4+PiArCWlmICh0b3VjaCkgewo+Pj4+Pj4+Pj4+ICsJCXJldCA9IHhlbmJ1 c193cml0ZShYQlRfTklMLCBkZXYtPm5vZGVuYW1lLAo+Pj4+Pj4+Pj4+ICsJCQkJICAgWEVOS0JE X0ZJRUxEX1JFUV9NVE9VQ0gsICIxIik7Cj4+Pj4+Pj4+Pj4gKwkJaWYgKHJldCkgewo+Pj4+Pj4+ Pj4+ICsJCQlwcl93YXJuaW5nKCJ4ZW5rYmQ6IGNhbid0IHJlcXVlc3QgbXVsdGktdG91Y2giKTsK Pj4+Pj4+Pj4+PiArCQkJdG91Y2ggPSAwOwo+Pj4+Pj4+Pj4+ICsJCX0KPj4+Pj4+Pj4+PiArCX0K Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gICAJLyoga2V5Ym9hcmQgKi8KPj4+Pj4+Pj4+PiAgIAlr YmQgPSBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKTsKPj4+Pj4+Pj4+PiAgIAlpZiAoIWtiZCkKPj4+ Pj4+Pj4+PiBAQCAtMjA4LDYgKzI4Myw2NyBAQCBzdGF0aWMgaW50IHhlbmtiZF9wcm9iZShzdHJ1 Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+Pj4+Pj4+Pj4+ICAgCX0KPj4+Pj4+Pj4+PiAgIAlpbmZv LT5wdHIgPSBwdHI7Cj4+Pj4+Pj4+Pj4gKwkvKiBtdWx0aS10b3VjaCBkZXZpY2UgKi8KPj4+Pj4+ Pj4+PiArCWlmICh0b3VjaCkgewo+Pj4+Pj4+Pj4+ICsJCWludCBudW1fY29udCwgd2lkdGgsIGhl aWdodDsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKwkJbXRvdWNoID0gaW5wdXRfYWxsb2NhdGVf ZGV2aWNlKCk7Cj4+Pj4+Pj4+Pj4gKwkJaWYgKCFtdG91Y2gpCj4+Pj4+Pj4+Pj4gKwkJCWdvdG8g ZXJyb3Jfbm9tZW07Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsJCW51bV9jb250ID0geGVuYnVz X3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+Pj4+Pj4+Pj4+ICsJCQkJCQlY RU5LQkRfRklFTERfTVRfTlVNX0NPTlRBQ1RTLAo+Pj4+Pj4+Pj4+ICsJCQkJCQkxKTsKPj4+Pj4+ PiBTaG91bGQgd2UgcmVmdXNlIE1UIGRldmljZXMgd2l0aCBudW1iZXIgb2YgY29udGFjdHMgbGVz cyB0aGFuIDI/Cj4+Pj4+PiB3ZSBjYW4sIGJ1dCBJIHNlZSBubyBoYXJtIGluIDEuIHdoYXQgaXMg bW9yZSwgdGhpcyBtYXkKPj4+Pj4+IGFsbG93IGd1ZXN0cyB0byBlbXVsYXRlIG1vcmUgcG9pbnRp bmcgZGV2aWNlcwo+Pj4+Pj4gYnV0LCBpZiB5b3UgaW5zaXN0LCB0aGVuIEkgd2lsbCBhZGQgYXBw cm9wcmlhdGUgY29kZSB0bwo+Pj4+Pj4gcmVqZWN0IGlmIG51bWJlciBvZiBjb250YWN0cyBpcyBs ZXNzIHRoZW4gMgo+Pj4gVGhlIHF1ZXN0aW9uIGlzIGlmIHlvdSBhcmUgcGxhbm5pbmcgdG8ga2Vl cCB0aGUgc2luZ2xlLXRvdWNoIGludGVyZmFjZQo+Pj4gb3IgeW91IHdpbGwgbWlncmF0ZSBldmVy eXRoaW5nIHRvIG11bHRpLXRvdWNoLgo+PiBJIHdpbGwga2VlcCBzaW5nbGUgdG91Y2ggYXMgbGVn YWN5LCBidXQgaW4gb3VyIHVzZS1jYXNlcwo+PiB3ZSBhcmUgbW9yZSBmb2N1c2luZyBvbiB1c2lu ZyBtdWx0aS10b3VjaCBkZXZpY2VzLgo+PiBidXQgZXZlbiB3aXRoIG51bWJlciBvZiBjb250YWN0 cyA9PSAxIGl0IGNhbiBzdGlsbCBiZQo+PiB1c2VmdWwgYXMgaXQgZ2l2ZXMgbW9yZSBmbGV4aWJp bGl0eSBpbiBjb25maWd1cmluZyBndWVzdCBPUwo+PiBJZiB5b3UgaW5zaXN0IHRoYXQgbnVtIGNv bnRhY3RzID09IDEgbXVzdCBiZSByZW1vdmVkLAo+PiBwbGVhc2UgbGV0IG1lIGtub3cgYW5kIEkg d2lsbCBoYW5kbGUgdGhhdAo+IE5vLCB0aGF0IGlzIGZpbmUuIEkgd2FzIHNpbXBseSB0cnlpbmcg dG8gdW5kZXJzdGFuZCB0aGUgcGxhbnMgZm9yCj4gc2luZ2xlL211bHRpLXRvdWNoIHN1cHBvcnQg aW4geW91ciBiYWNrZW5kLgo+Cj4+Pj4+Pj4+Pj4gKwkJd2lkdGggPSB4ZW5idXNfcmVhZF91bnNp Z25lZChpbmZvLT54YmRldi0+bm9kZW5hbWUsCj4+Pj4+Pj4+Pj4gKwkJCQkJICAgICBYRU5LQkRf RklFTERfTVRfV0lEVEgsCj4+Pj4+Pj4+Pj4gKwkJCQkJICAgICBYRU5GQl9XSURUSCk7Cj4+Pj4+ Pj4+Pj4gKwkJaGVpZ2h0ID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVu YW1lLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAgICAgIFhFTktCRF9GSUVMRF9NVF9IRUlHSFQsCj4+Pj4+ Pj4+Pj4gKwkJCQkJICAgICAgWEVORkJfSEVJR0hUKTsKPj4+Pj4+Pj4+IEN1cmlvdXMgd2h5IHlv dSBuZWVkIHNlcGFyYXRlIHBhcmFtZXRlcnMgaGVyZSB0b28uLi4KPj4+Pj4+Pj4gVGhpcyBpcyBi ZWNhdXNlIG10IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBmcm9tIHB0cgo+Pj4+Pj4+PiBpbiBh IHdheSB0aGF0IHRoZXkgYXJlIGNvbmZpZ3VyYWJsZSBwZXIgZnJvbnQgZHJpdmVyJ3MKPj4+Pj4+ Pj4gaW5zdGFuY2UgcmF0aGVyIHRoYW4gcGVyIGJhY2tlbmQsIGUuZy4gaW4gWGVuU3RvcmU6Cj4+ Pj4+Pj4+Cj4+Pj4+Pj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZrYmQvMS8wL3dpZHRoID0g IjE5MjAiCj4+Pj4+Pj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZrYmQvMS8wL2hlaWdodCA9 ICIxMDgwIgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMC9t dWx0aS10b3VjaC13aWR0aCA9ICIxOTIwIgo+Pj4+Pj4+PiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZrYmQvMC9tdWx0aS10b3VjaC1oZWlnaHQgPSAiMTA4MCIKPj4+Pj4+Pj4gL2xvY2FsL2RvbWFp bi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gtbnVtLWNvbnRhY3RzID0gIjEwIgo+Pj4+Pj4+ Pgo+Pj4+Pj4+PiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMS9tdWx0aS10b3VjaC13aWR0 aCA9ICI4MDAiCj4+Pj4+Pj4+IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8xL211bHRpLXRv dWNoLWhlaWdodCA9ICI2MDAiCj4+Pj4+Pj4+IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8x L211bHRpLXRvdWNoLW51bS1jb250YWN0cyA9ICIzIgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGUgbWFp biByZWFzb24gZm9yIHN1Y2ggY29uZmlndXJhdGlvbiBpcyB0aGF0IHlvdSBjYW4KPj4+Pj4+Pj4g Y29uZmlndXJlIG11bHRpcGxlIG10IGlucHV0IGRldmljZXMgZXZlbiBmb3IgdGhlIHNhbWUgZ3Vl c3QKPj4+Pj4+Pj4gd2l0aCBkaWZmZXJlbnQgcmVzb2x1dGlvbnMgd2hpY2ggbWF5IG5vdCBtYXRj aCB0aG9zZQo+Pj4+Pj4+PiBjb25maWd1cmVkIGZvciBwdHIuCj4+Pj4+Pj4+IChJbiBteSB1c2Ut Y2FzZSBJIHVzZSBuZXcgZGlzcGxpZiBwcm90b2NvbCBbMV0gaW4gY29uanVuY3Rpb24KPj4+Pj4+ Pj4gd2l0aCBtdCBpbnB1dCBkZXZpY2VzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBiYWNrZW5kIGlz IG5vdAo+Pj4+Pj4+PiBRRU1VJ3MgeGVuZmIpCj4+Pj4+Pj4gSSBzZWUuCj4+Pj4+Pj4KPj4+Pj4+ Pj4gQXMgdG8gbW9kdWxlIHBhcmFtZXRlcnMsIEkgYWRkZWQgdGhvc2UgdG8gYmUgY29uc2lzdGVu dCB3aXRoCj4+Pj4+Pj4+IHB0ciBkZXZpY2UuIERvIHlvdSB0aGluayB3ZSBjYW4gbGl2ZSB3aXRo b3V0IHRoZW0gYW5kCj4+Pj4+Pj4+IGRvIHlvdSB3YW50IG1lIHRvIHJlbW92ZSB0aGVtPwo+Pj4+ Pj4+IFllcywgSSB0aGluayB3ZSBiZXR0ZXIuIEkgYW0gYWxzbyBjb25mdXNlZCBieSB0aGUgd2F5 IHlvdSBhcmUgaGFuZGxpbmcKPj4+Pj4+PiB0aGUgbW9kdWxlIHBhcmFtZXRlcnMuIEl0IGxvb2tz IHRvIG1lIHlvdSB1cGRhdGUgdGhlbSB3aXRoIGRhdGEgcGFzc2VkCj4+Pj4+PiA+ZnJvbSB0aGUg YmFja2VuZCwgYnV0IG5ldmVyIHVzZSB0aGUgZGF0YS4uLgo+Pj4+Pj4gSSBoYXZlIHJlbW92ZWQg bW9kdWxlIHBhcmFtZXRlcnMgKHRoZSBvbmx5IHVzZSBvZiB0aG9zZQo+Pj4+Pj4gd2FzIHRvIGJl IGFibGUgdG8gc2VlIGNvbmZpZ3VyZWQgd2lkdGggYW5kIGhlaWdodCBvbgo+Pj4+Pj4gZ3Vlc3Qg c2lkZSwgYnV0IHRoaXMgaXMgbWlub3IpCj4+Pj4+IGV2dGVzdCB3b3VsZCBzaG93IGl0IHRvIHlv dS4gT3IgeW91IGNhbiBxdWVyeSBpbnB1dCBkZXZpY2UgeW91cnNlbGYKPj4+Pj4gKEVWSU9DR0FC UyBpb3RjbCkuCj4+Pj4geWVzLCBpZiBlbWJlZGRlZCBzeXN0ZW0gKHdoaWNoIGlzIG15IHRhcmdl dCkgaGFzIGV2dGVzdAo+Pj4+IGJ1dCBpdCBkZWZpbml0ZWx5IGRvZXMgaGF2ZSBpb2N0bCB0aG91 Z2gKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKwkJbXRvdWNoLT5uYW1lID0gIlhlbiBWaXJ0dWFs IE11bHRpLXRvdWNoIjsKPj4+Pj4+Pj4+PiArCQltdG91Y2gtPnBoeXMgPSBpbmZvLT5waHlzOwo+ Pj4+Pj4+Pj4+ICsJCW10b3VjaC0+aWQuYnVzdHlwZSA9IEJVU19QQ0k7Cj4+Pj4+Pj4+Pj4gKwkJ bXRvdWNoLT5pZC52ZW5kb3IgPSAweDU4NTM7Cj4+Pj4+Pj4+Pj4gKwkJbXRvdWNoLT5pZC5wcm9k dWN0ID0gMHhmZmZkOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCQlfX3NldF9iaXQoRVZfQUJT LCBtdG91Y2gtPmV2Yml0KTsKPj4+Pj4+Pj4+PiArCQlfX3NldF9iaXQoRVZfS0VZLCBtdG91Y2gt PmV2Yml0KTsKPj4+Pj4+Pj4+PiArCQlfX3NldF9iaXQoQlROX1RPVUNILCBtdG91Y2gtPmtleWJp dCk7Cj4+Pj4+IFBsZWFzZSBtYWtlIGl0Cj4+Pj4+IAkJaW5wdXRfc2V0X2NhcGFiaWxpdHkobXRv dWNoLCBFVl9LRVksIEJUTl9UT1VDSCk7Cj4+Pj4+Cj4+Pj4+IGFuZCBkcm9wIGFsbCBfX3NldF9i aXQoKXMuCj4+Pj4gZG9uZSwgdGhhbmsgeW91Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsJCWlu cHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1gsCj4+Pj4+Pj4+Pj4gKwkJCQkgICAgIDAs IHdpZHRoLCAwLCAwKTsKPj4+Pj4+Pj4+PiArCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gs IEFCU19ZLAo+Pj4+Pj4+Pj4+ICsJCQkJICAgICAwLCBoZWlnaHQsIDAsIDApOwo+Pj4+Pj4+Pj4+ ICsJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1BSRVNTVVJFLAo+Pj4+Pj4+Pj4+ ICsJCQkJICAgICAwLCAyNTUsIDAsIDApOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCQlpbnB1 dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9UT1VDSF9NQUpPUiwKPj4+Pj4+Pj4+PiAr CQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPj4+Pj4+Pj4+PiArCQlpbnB1dF9zZXRfYWJzX3BhcmFt cyhtdG91Y2gsIEFCU19NVF9QT1NJVElPTl9YLAo+Pj4+Pj4+Pj4+ICsJCQkJICAgICAwLCB3aWR0 aCwgMCwgMCk7Cj4+Pj4+Pj4+Pj4gKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNf TVRfUE9TSVRJT05fWSwKPj4+Pj4+Pj4+PiArCQkJCSAgICAgMCwgaGVpZ2h0LCAwLCAwKTsKPj4+ Pj4+Pj4+PiArCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9QUkVTU1VSRSwK Pj4+Pj4+Pj4+PiArCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+ Pj4gKwkJaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250LCAwKTsKPj4+Pj4+PiBX ZSBuZWVkIGVycm9yIGhhbmRsaW5nIGhlcmUuCj4+Pj4+PiBkb25lCj4+Pj4+Pj4gICBBbHNvLCBp dCB3b3VsZCBiZSBuaWNlIGlmIHdlIHNldCBJTlBVVF9NVF8qCj4+Pj4+Pj4gZmxhZ3MgaGVyZSwg c28gdGhhdCB1c2Vyc3BhY2UgaGFkIGJldHRlciBjaGFuY2Ugb2YgZmlndXJpbmcgaG93IHRvCj4+ Pj4+Pj4gaGFuZGxlIHRoZSBkZXZpY2UuCj4+Pj4+PiBkb25lLCBJIHdpbGwgdXNlIElOUFVUX01U X0RJUkVDVCB8IElOUFVUX01UX0RST1BfVU5VU0VECj4+Pj4+IERvZXMgdGhhdCBtZWFuIHRoYXQg eW91ciBiYWNrZW5kIGRvZXMgbm90IHJlbGlhYmx5IHJlcG9ydCByZWxlYXNlIG9mCj4+Pj4+IGNv bnRhY3RzPwo+Pj4+IHRoZXJlIGlzIGEgcmluZyBidWZmZXIgYmV0d2VlbiBob3N0IGFuZCBndWVz dCwKPj4+PiBzbyB0aGVyZSBpcyBhbHdheXMgYSBwb3NzaWJpbGl0eSAocmF0aGVyIHNtYWxsIEkg YmVsaWV2ZSkKPj4+PiB0aGF0IHRoZSBidWZmZXIgb3ZlcnJ1bnMuIERvIHlvdSB0aGluayBJIG5l ZWQgSU5QVVRfTVRfRFJPUF9VTlVTRUQgb3IKPj4+PiB3ZSBjYW4gbGl2ZSB3aXRob3V0IGl0Pwo+ Pj4gQWdhaW4sIGl0IGRlcGVuZHMgb24geW91ciBiYWNrZW5kIGJlaGF2aW9yLiBEbyB5b3UgcmVw b3J0IGFsbCBzbG90cwo+Pj4gcmVwZWF0ZWRseSBmb3IgZXZlcnkgcGFja2V0IG9yIHlvdSByZXBv cnQgb25seSBjaGFuZ2VkIHNsb3RzPwo+PiB3ZSByZXBvcnQgZXZlbnRzIHJlcGVhdGVkbHksIHNv IEkgdGhpbmsgd2UgY2FuIGxpdmUKPj4gdy9vIF9EUk9QX1VOVVNFRAo+Pj4gVGhhbmtzLgo+Pj4K Pj4+Pj4gVGhhbmtzLgo+Pj4+Pgo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCQltdG91Y2hfc2l6 ZVtLUEFSQU1fTVRfWF0gPSB3aWR0aDsKPj4+Pj4+Pj4+PiArCQltdG91Y2hfc2l6ZVtLUEFSQU1f TVRfWV0gPSBoZWlnaHQ7Cj4+Pj4+Pj4+Pj4gKwkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lk ID0gLTE7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsJCXJldCA9IGlucHV0X3JlZ2lzdGVyX2Rl dmljZShtdG91Y2gpOwo+Pj4+Pj4+Pj4+ICsJCWlmIChyZXQpIHsKPj4+Pj4+Pj4+PiArCQkJaW5w dXRfZnJlZV9kZXZpY2UobXRvdWNoKTsKPj4+Pj4+Pj4+PiArCQkJeGVuYnVzX2Rldl9mYXRhbChp bmZvLT54YmRldiwgcmV0LAo+Pj4+Pj4+Pj4+ICsJCQkJCSAiaW5wdXRfcmVnaXN0ZXJfZGV2aWNl KG10b3VjaCkiKTsKPj4+Pj4+Pj4+PiArCQkJZ290byBlcnJvcjsKPj4+Pj4+Pj4+PiArCQl9Cj4+ Pj4+Pj4+Pj4gKwkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkID0gLTE7Cj4+Pj4+Pj4+Pj4g KwkJaW5mby0+bXRvdWNoID0gbXRvdWNoOwo+Pj4+Pj4+Pj4+ICsJfQo+Pj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4+PiAgIAlyZXQgPSB4ZW5rYmRfY29ubmVjdF9iYWNrZW5kKGRldiwgaW5mbyk7Cj4+Pj4+ Pj4+Pj4gICAJaWYgKHJldCA8IDApCj4+Pj4+Pj4+Pj4gICAJCWdvdG8gZXJyb3I7Cj4+Pj4+Pj4+ Pj4gQEAgLTI0MCw2ICszNzYsOCBAQCBzdGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0IHhl bmJ1c19kZXZpY2UgKmRldikKPj4+Pj4+Pj4+PiAgIAkJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2Uo aW5mby0+a2JkKTsKPj4+Pj4+Pj4+PiAgIAlpZiAoaW5mby0+cHRyKQo+Pj4+Pj4+Pj4+ICAgCQlp bnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5wdHIpOwo+Pj4+Pj4+Pj4+ICsJaWYgKGluZm8t Pm10b3VjaCkKPj4+Pj4+Pj4+PiArCQlpbnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5tdG91 Y2gpOwo+Pj4+Pj4+Pj4+ICAgCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylpbmZvLT5wYWdlKTsK Pj4+Pj4+Pj4+PiAgIAlrZnJlZShpbmZvKTsKPj4+Pj4+Pj4+PiAgIAlyZXR1cm4gMDsKPj4+Pj4+ Pj4+PiAtLSAKPj4+Pj4+Pj4+PiAyLjcuNAo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4gVGhhbmtzLgo+Pj4+ Pj4+Cj4+Pj4+PiBGb3IgeW91ciBjb252ZW5pZW5jZSBJIGFtIGF0dGFjaGluZyB0aGUgY2hhbmdl cyBJIGFtIGFib3V0Cj4+Pj4+PiB0byBwdXQgaW50byB2MSBvZiB0aGUgc2VyaWVzOgo+Pj4+Pj4g ICAtIHJlbW92ZSB1bmxpa2VseQo+Pj4+Pj4gICAtIHJlbW92ZSBtb2R1bGUgcGFyYW1ldGVycwo+ Pj4+Pj4gICAtIGVycm9yIGhhbmRsaW5nIGZvciBpbnB1dF9tdF9pbml0X3Nsb3RzCj4+Pj4+PiAg IC0gbGV0IHVzZXJzcGFjZSBiZXR0ZXIgY2hhbmNlIG9mIGZpZ3VyaW5nIGhvdyB0byBoYW5kbGUg dGhlIGRldmljZQo+Pj4+Pj4KPj4+Pj4+IFRoYW5rIHlvdSwKPj4+Pj4+IE9sZWtzYW5kcgo+Pj4+ Pj4gIEZyb20gZTc2NTA2YzU1ODQ2ZTJiYjRjY2JhZmE0MzA2NDJlMzY4NjQzZTUxZCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKPj4+Pj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxv bGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+Pj4+IERhdGU6IFR1ZSwgMzAgTWF5 IDIwMTcgMTQ6NDk6NTggKzAzMDAKPj4+Pj4+IFN1YmplY3Q6IFtQQVRDSF0gRml4OiByZW1vdmUg dW5saWtlbHkgRml4OiByZW1vdmUgbW9kdWxlIHBhcmFtdGVycyBGaXg6IGVycm9yCj4+Pj4+PiAg IGhhbmRsaW5nIGZvciBpbnB1dF9tdF9pbml0X3Nsb3RzIEZpeDogbGV0IHVzZXJzcGFjZSBiZXR0 ZXIgY2hhbmNlIG9mIGZpZ3VyaW5nCj4+Pj4+PiAgIGhvdyB0byBoYW5kbGUgdGhlIGRldmljZQo+ Pj4+Pj4KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVr c2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+Pj4+IC0tLQo+Pj4+Pj4gICBkcml2ZXJz L2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgfCAyMSArKysrKysrKysrLS0tLS0tLS0tLS0KPj4+ Pj4+ICAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQo+ Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250 LmMgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4+IGluZGV4IDgyNjZl Zjk0OGEwNi4uMjczZDc4NmExOWNkIDEwMDY0NAo+Pj4+Pj4gLS0tIGEvZHJpdmVycy9pbnB1dC9t aXNjL3hlbi1rYmRmcm9udC5jCj4+Pj4+PiArKysgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWti ZGZyb250LmMKPj4+Pj4+IEBAIC01MSwxMiArNTEsNiBAQCBtb2R1bGVfcGFyYW1fYXJyYXkocHRy X3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4+Pj4+PiAgIE1PRFVMRV9QQVJNX0RFU0MocHRyX3Np emUsCj4+Pj4+PiAgIAkiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChk ZWZhdWx0IDgwMCw2MDApIik7Cj4+Pj4+PiAtZW51bSB7IEtQQVJBTV9NVF9YLCBLUEFSQU1fTVRf WSwgS1BBUkFNX01UX0NOVCB9Owo+Pj4+Pj4gLXN0YXRpYyBpbnQgbXRvdWNoX3NpemVbS1BBUkFN X01UX0NOVF0gPSB7IFhFTkZCX1dJRFRILCBYRU5GQl9IRUlHSFQgfTsKPj4+Pj4+IC1tb2R1bGVf cGFyYW1fYXJyYXkobXRvdWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4+Pj4+PiAtTU9EVUxF X1BBUk1fREVTQyhwdHJfc2l6ZSwKPj4+Pj4+IC0JIk11bHRpLXRvdWNoIGRldmljZSB3aWR0aCwg aGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdCA4MDAsNjAwKSIpOwo+Pj4+Pj4gLQo+Pj4+Pj4gICBz dGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKik7Cj4+Pj4+PiAg IHN0YXRpYyBpbnQgeGVua2JkX2Nvbm5lY3RfYmFja2VuZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAq LCBzdHJ1Y3QgeGVua2JkX2luZm8gKik7Cj4+Pj4+PiAgIHN0YXRpYyB2b2lkIHhlbmtiZF9kaXNj b25uZWN0X2JhY2tlbmQoc3RydWN0IHhlbmtiZF9pbmZvICopOwo+Pj4+Pj4gQEAgLTExNCw4ICsx MDgsOCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxlcihpbnQgcnEsIHZvaWQgKmRl dl9pZCkKPj4+Pj4+ICAgCQkJZGV2ID0gaW5mby0+bXRvdWNoOwo+Pj4+Pj4gICAJCQlpZiAodW5s aWtlbHkoIWRldikpCj4+Pj4+PiAgIAkJCQlicmVhazsKPj4+Pj4+IC0JCQlpZiAodW5saWtlbHko ZXZlbnQtPm10b3VjaC5jb250YWN0X2lkICE9Cj4+Pj4+PiAtCQkJCQlpbmZvLT5tdG91Y2hfY3Vy X2NvbnRhY3RfaWQpKSB7Cj4+Pj4+PiArCQkJaWYgKGV2ZW50LT5tdG91Y2guY29udGFjdF9pZCAh PQo+Pj4+Pj4gKwkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSB7Cj4+Pj4+PiAgIAkJ CQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPQo+Pj4+Pj4gICAJCQkJCWV2ZW50LT5tdG91 Y2guY29udGFjdF9pZDsKPj4+Pj4+ICAgCQkJCWlucHV0X210X3Nsb3QoZGV2LCBldmVudC0+bXRv dWNoLmNvbnRhY3RfaWQpOwo+Pj4+Pj4gQEAgLTMyNywxMCArMzIxLDE1IEBAIHN0YXRpYyBpbnQg eGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4+Pj4+PiAgIAkJaW5wdXRf c2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfTVRfUFJFU1NVUkUsCj4+Pj4+PiAgIAkJCQkgICAg IDAsIDI1NSwgMCwgMCk7Cj4+Pj4+PiAtCQlpbnB1dF9tdF9pbml0X3Nsb3RzKG10b3VjaCwgbnVt X2NvbnQsIDApOwo+Pj4+Pj4gKwkJcmV0ID0gaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51 bV9jb250LAo+Pj4+Pj4gKwkJCQlJTlBVVF9NVF9ESVJFQ1QgfCBJTlBVVF9NVF9EUk9QX1VOVVNF RCk7Cj4+Pj4+PiArCQlpZiAocmV0KSB7Cj4+Pj4+PiArCQkJaW5wdXRfZnJlZV9kZXZpY2UobXRv dWNoKTsKPj4+Pj4+ICsJCQl4ZW5idXNfZGV2X2ZhdGFsKGluZm8tPnhiZGV2LCByZXQsCj4+Pj4+ PiArCQkJCQkgImlucHV0X210X2luaXRfc2xvdHMiKTsKPj4+Pj4+ICsJCQlnb3RvIGVycm9yOwo+ Pj4+Pj4gKwkJfQo+Pj4+Pj4gLQkJbXRvdWNoX3NpemVbS1BBUkFNX01UX1hdID0gd2lkdGg7Cj4+ Pj4+PiAtCQltdG91Y2hfc2l6ZVtLUEFSQU1fTVRfWV0gPSBoZWlnaHQ7Cj4+Pj4+PiAgIAkJaW5m by0+bXRvdWNoX2N1cl9jb250YWN0X2lkID0gLTE7Cj4+Pj4+PiAgIAkJcmV0ID0gaW5wdXRfcmVn aXN0ZXJfZGV2aWNlKG10b3VjaCk7Cj4+Pj4+PiAtLSAKPj4+Pj4+IDIuNy40Cj4+Pj4+Pgo+Pj4+ IFRoYW5rIHlvdSwKPj4+PiBPbGVrc2FuZHIKPj4gRG1pdHJ5LCB0aGFuayB5b3UgZm9yIGNvbW1l bnRzCj4+IFRoZSBib3R0b20gbGluZSBJIHNlZSBpczoKPj4gICAtIG5vIHN1cHBvcnQgZm9yIFBF TiB0b29sIGF0IHRoZSBtb21lbnQKPj4gICAtIG51bSBjb250YWN0cyA9PSAxIGlzIE9LCj4+ICAg LSBJIHdpbGwgbm90IHVzZSBJTlBVVF9NVF9EUk9QX1VOVVNFRAo+IFNvdW5kcyBnb29kLgpUaGFu ayB5b3UsCkkgd2lsbCByZS10ZXN0IHRoZSByZXN1bHRpbmcgcGF0Y2ggYW5kIHdpbGwgc2VuZCB0 aGUgbmV3IHZlcnNpb24KPgo+PiBJZiB0aGUgYWJvdmUgaXMgb2sgdG8geW91LCB0aGVuIEkgd2ls bCBzZW5kIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUKPj4gc2VyaWVzIChCVFcsIGNhbiBJIHVzZSB5 b3VyIFJCIGZvciB0aGUgZmlyc3QgcGF0Y2ggd2hpY2gKPj4gcmVtb3ZlcyBoYXJkLWNvZGVzPykK PiBJIGFscmVhZHkgYXBwbGllZCB0aGF0IG9uZSBhbmQgaXQgc2hvdWxkIGJlIGluIC1uZXh0IGFs cmVhZHksIHRoZXJlIGlzCj4gbm8gbmVlZCB0byByZXNlbnQgdGhlIGZpcnN0IHBhdGNoLgpPaCwg dGhhdCBpcyBncmVhdCwgdGhhbmsgeW91Cj4gVGhhbmtzLgo+CgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==