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: Mon, 19 Jun 2017 13:00:21 +0300 Message-ID: <03a1ec28-3c88-2296-fd5b-c3da2d543de2__19641.6601575494$1497866484$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> 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 1dMtTw-0003lw-08 for xen-devel@lists.xenproject.org; Mon, 19 Jun 2017 10:00:28 +0000 Received: by mail-lf0-f65.google.com with SMTP id x81so9464864lfb.3 for ; Mon, 19 Jun 2017 03:00:24 -0700 (PDT) In-Reply-To: <222abecb-10b6-6196-9f44-6ec366377335@gmail.com> 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 UGluZwoKT24gMDYvMDgvMjAxNyAwOTo0NSBBTSwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3Jv dGU6Cj4gSGksIERtaXRyeSEKPgo+IE9uIDA2LzA3LzIwMTcgMDc6NTYgUE0sIERtaXRyeSBUb3Jv a2hvdiB3cm90ZToKPj4gT24gV2VkLCBNYXkgMzEsIDIwMTcgYXQgMTI6MDY6NTZQTSArMDMwMCwg T2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+PiBIaSwgRG1pdHJ5IQo+Pj4KPj4+IE9u IDA1LzMwLzIwMTcgMDc6MzcgUE0sIERtaXRyeSBUb3Jva2hvdiB3cm90ZToKPj4+PiBPbiBUdWUs IE1heSAzMCwgMjAxNyBhdCAwMzo1MDoyMFBNICswMzAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5r byAKPj4+PiB3cm90ZToKPj4+Pj4gSGksIERtaXRyeSEKPj4+Pj4KPj4+Pj4gT24gMDUvMzAvMjAx NyAwODo1MSBBTSwgRG1pdHJ5IFRvcm9raG92IHdyb3RlOgo+Pj4+Pj4gT24gRnJpLCBBcHIgMjEs IDIwMTcgYXQgMDk6NDA6MzZBTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gCj4+Pj4+ PiB3cm90ZToKPj4+Pj4+PiBIaSwgRG1pdHJ5IQo+Pj4+Pj4+Cj4+Pj4+Pj4gT24gMDQvMjEvMjAx NyAwNToxMCBBTSwgRG1pdHJ5IFRvcm9raG92IHdyb3RlOgo+Pj4+Pj4+PiBIaSBPbGVrc2FuZHIs Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IE9uIFRodSwgQXByIDEzLCAyMDE3IGF0IDAyOjM4OjA0UE0gKzAz MDAsIE9sZWtzYW5kciAKPj4+Pj4+Pj4gQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+Pj4+Pj4+IEZy b206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFt LmNvbT4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBFeHRlbmQgeGVuX2tiZGZyb250IHRvIHByb3ZpZGUg bXVsdGktdG91Y2ggc3VwcG9ydAo+Pj4+Pj4+Pj4gdG8gdW5wcml2aWxlZ2VkIGRvbWFpbnMuCj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28g Cj4+Pj4+Pj4+PiA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+Pj4+PiAt LS0KPj4+Pj4+Pj4+ICAgZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIHwgMTQyIAo+ Pj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4+Pj4+Pj4+ ICAgMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZy b250LmMgCj4+Pj4+Pj4+PiBiL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYwo+Pj4+ Pj4+Pj4gaW5kZXggMDFjMjdiNGMzMjg4Li5lNWQwNjRhYWEyMzcgMTAwNjQ0Cj4+Pj4+Pj4+PiAt LS0gYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4+Pj4+ICsrKyBiL2Ry aXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYwo+Pj4+Pj4+Pj4gQEAgLTE3LDYgKzE3LDcg QEAKPj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Cj4+Pj4+Pj4+PiAgICNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+ Cj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2lucHV0L210Lmg+Cj4+Pj4+Pj4+PiAgICNpbmNs dWRlIDxsaW51eC9zbGFiLmg+Cj4+Pj4+Pj4+PiAgICNpbmNsdWRlIDxhc20veGVuL2h5cGVydmlz b3IuaD4KPj4+Pj4+Pj4+IEBAIC0zNCwxMSArMzUsMTQgQEAKPj4+Pj4+Pj4+ICAgc3RydWN0IHhl bmtiZF9pbmZvIHsKPj4+Pj4+Pj4+ICAgICAgIHN0cnVjdCBpbnB1dF9kZXYgKmtiZDsKPj4+Pj4+ Pj4+ICAgICAgIHN0cnVjdCBpbnB1dF9kZXYgKnB0cjsKPj4+Pj4+Pj4+ICsgICAgc3RydWN0IGlu cHV0X2RldiAqbXRvdWNoOwo+Pj4+Pj4+Pj4gICAgICAgc3RydWN0IHhlbmtiZF9wYWdlICpwYWdl Owo+Pj4+Pj4+Pj4gICAgICAgaW50IGdyZWY7Cj4+Pj4+Pj4+PiAgICAgICBpbnQgaXJxOwo+Pj4+ Pj4+Pj4gICAgICAgc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhiZGV2Owo+Pj4+Pj4+Pj4gICAgICAg Y2hhciBwaHlzWzMyXTsKPj4+Pj4+Pj4+ICsgICAgLyogY3VycmVudCBNVCBzbG90L2NvbnRhY3Qg SUQgd2UgYXJlIGluamVjdGluZyBldmVudHMgaW4gKi8KPj4+Pj4+Pj4+ICsgICAgaW50IG10b3Vj aF9jdXJfY29udGFjdF9pZDsKPj4+Pj4+Pj4+ICAgfTsKPj4+Pj4+Pj4+ICAgZW51bSB7IEtQQVJB TV9YLCBLUEFSQU1fWSwgS1BBUkFNX0NOVCB9Owo+Pj4+Pj4+Pj4gQEAgLTQ3LDYgKzUxLDEyIEBA IG1vZHVsZV9wYXJhbV9hcnJheShwdHJfc2l6ZSwgaW50LCBOVUxMLCAwNDQ0KTsKPj4+Pj4+Pj4+ ICAgTU9EVUxFX1BBUk1fREVTQyhwdHJfc2l6ZSwKPj4+Pj4+Pj4+ICAgICAgICJQb2ludGluZyBk ZXZpY2Ugd2lkdGgsIGhlaWdodCBpbiBwaXhlbHMgKGRlZmF1bHQgCj4+Pj4+Pj4+PiA4MDAsNjAw KSIpOwo+Pj4+Pj4+Pj4gK2VudW0geyBLUEFSQU1fTVRfWCwgS1BBUkFNX01UX1ksIEtQQVJBTV9N VF9DTlQgfTsKPj4+Pj4+Pj4+ICtzdGF0aWMgaW50IG10b3VjaF9zaXplW0tQQVJBTV9NVF9DTlRd ID0geyBYRU5GQl9XSURUSCwgCj4+Pj4+Pj4+PiBYRU5GQl9IRUlHSFQgfTsKPj4+Pj4+Pj4+ICtt b2R1bGVfcGFyYW1fYXJyYXkobXRvdWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4+Pj4+Pj4+ PiArTU9EVUxFX1BBUk1fREVTQyhwdHJfc2l6ZSwKPj4+Pj4+Pj4+ICsgICAgIk11bHRpLXRvdWNo IGRldmljZSB3aWR0aCwgaGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdCAKPj4+Pj4+Pj4+IDgwMCw2 MDApIik7Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+IFdoeSBkbyB5b3UgbmVlZCBzZXBhcmF0ZSBtb2R1 bGUgcGFyYW1ldGVycyBmb3IgbXVsdGktdG91Y2ggZGV2aWNlPwo+Pj4+Pj4+IHBsZWFzZSBzZWUg YmVsb3cKPj4+Pj4+Pj4+ICAgc3RhdGljIGludCB4ZW5rYmRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNf ZGV2aWNlICopOwo+Pj4+Pj4+Pj4gICBzdGF0aWMgaW50IHhlbmtiZF9jb25uZWN0X2JhY2tlbmQo c3RydWN0IHhlbmJ1c19kZXZpY2UgKiwgCj4+Pj4+Pj4+PiBzdHJ1Y3QgeGVua2JkX2luZm8gKik7 Cj4+Pj4+Pj4+PiAgIHN0YXRpYyB2b2lkIHhlbmtiZF9kaXNjb25uZWN0X2JhY2tlbmQoc3RydWN0 IHhlbmtiZF9pbmZvICopOwo+Pj4+Pj4+Pj4gQEAgLTEwMCw2ICsxMTAsNjAgQEAgc3RhdGljIGly cXJldHVybl90IGlucHV0X2hhbmRsZXIoaW50IHJxLCAKPj4+Pj4+Pj4+IHZvaWQgKmRldl9pZCkK Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgIGlucHV0X3JlcG9ydF9yZWwoZGV2LCBSRUxfV0hF RUwsCj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZXZlbnQtPnBvcy5yZWxf eik7Cj4+Pj4+Pj4+PiAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+Pj4+Pj4gKyAgICAgICAgY2Fz ZSBYRU5LQkRfVFlQRV9NVE9VQ0g6Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgZGV2ID0gaW5mby0+ bXRvdWNoOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIGlmICh1bmxpa2VseSghZGV2KSkKPj4+Pj4+ Pj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgaWYgKHVu bGlrZWx5KGV2ZW50LT5tdG91Y2guY29udGFjdF9pZCAhPQo+Pj4+Pj4+Pj4gKyBpbmZvLT5tdG91 Y2hfY3VyX2NvbnRhY3RfaWQpKSB7Cj4+Pj4+Pj4+IFdoeSBpcyB0aGlzIHVubGlrZWx5PyBEb2Vz IGNvbnRhY3QgSUQgY2hhbmdlcyBvbmNlIGluIDEwMDAgCj4+Pj4+Pj4+IHBhY2tldHMgb3IKPj4+ Pj4+Pj4gZXZlbiBsZXNzPwo+Pj4+Pj4+IE11IGFzc3VtcHRpb24gd2FzIHRoYXQgcmVnYXJkbGVz cyBvZiB0aGUgZmFjdCB0aGF0IHdlIGFyZSAKPj4+Pj4+PiBtdWx0aS10b3VjaAo+Pj4+Pj4+IGRl dmljZSBzdGlsbCBzaW5nbGUgdG91Y2hlcyB3aWxsIGNvbWUgaW4gbW9yZSBmcmVxdWVudGx5Cj4+ Pj4+Pj4gQnV0IEkgY2FuIHJlbW92ZSAqdW5saWtlbHkqIGlmIG15IGFzc3VtcHRpb24gaXMgbm90 IGNvcnJlY3QKPj4+Pj4+IEkgdGhpbmsgdGhlIG5vcm1hbCBleHBlY3RhdGlvbiBpcyB0aGF0ICJ1 bmxpa2VseSIgaXMgc3VwcG9zZWQgZm9yCj4+Pj4+PiBzb21ldGhpbmcgdGhhdCBoYXBwZW5zIG9u Y2UgaW4gYSBibHVlIG1vb24sIHNvIEknZCByYXRoZXIgcmVtb3ZlIGl0Lgo+Pj4+Pj4KPj4+Pj4g YWdyZWUsIHJlbW92ZWQgInVubGlrZWx5Igo+Pj4+Pj4+Pj4gKyBpbmZvLT5tdG91Y2hfY3VyX2Nv bnRhY3RfaWQgPQo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgZXZlbnQtPm10b3VjaC5j b250YWN0X2lkOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9tdF9zbG90KGRldiwg ZXZlbnQtPm10b3VjaC5jb250YWN0X2lkKTsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICB9Cj4+Pj4+ Pj4+PiArICAgICAgICAgICAgc3dpdGNoIChldmVudC0+bXRvdWNoLmV2ZW50X3R5cGUpIHsKPj4+ Pj4+Pj4+ICsgICAgICAgICAgICBjYXNlIFhFTktCRF9NVF9FVl9ET1dOOgo+Pj4+Pj4+Pj4gKyAg ICAgICAgICAgICAgICBpbnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZShkZXYsIE1UX1RPT0xfRklO R0VSLAo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKPj4+ Pj4+IFNob3VsZCB3ZSBlc3RhYmxpc2ggdG9vbCBldmVudD8gV2UgaGF2ZSBNVF9UT09MX1BFTiwg ZXRjLgo+Pj4+PiBJIHRoaW5rIHRoYXQgZm9yIG11bHRpLXRvdWNoIE1UX1RPT0xfRklOR0VSIGlz IGVub3VnaAo+Pj4+PiBhbnkgcmVhc29uIHdlIHdvdWxkIGFsc28gd2FudCBNVF9UT09MX1BFTiBo ZXJlPwo+Pj4+IFdoeSB3b3VsZCBub3QgeW91PyBMZXQncyBzYXkgeW91IGhhdmUgYSBkcmF3aW5n IGFwcGxpY2F0aW9uIHJ1bm5pbmcgaW4KPj4+PiBndWVzdCB0aGF0IGNhbiBtYWtlIHVzZSBvZiB0 b29sIHR5cGVzLiBXaHkgd291bGQgbm90IHlvdSB3YW50IHRvIAo+Pj4+IHRlbGwgaXQKPj4+PiB0 aGF0IHRoZSB0b29sIHVzZXIgaXMgY3VycmVudGx5IHVzaW5nIGlzIGluIGZhY3QgYSBwZW4gYW5k IG5vdCBmaW5nZXI/Cj4+PiBCdXQgaXQgaXMgYSBmaW5nZXIgOikgd2UgYXJlIG11bHRpLXRvdWNo LCBub3QgbXVsdGkgcGVuCj4+IFNvIGZvciB0YWJsZXRzIHRoYXQgc3VwcG9ydCBib3RoIHRvdWNo IGFuZCBzdHlsdXMgeW91IHdvdWxkIGV4cG9ydCB0aGVtCj4+IGFzIDIgc2VwYXJhdGUgZGV2aWNl cz8KPiB0aGlzIGNvdWxkIGJlIGRvbmUgaW4gZGlmZmVyZW50IHdheXMsIGJ1dCBwbGVhc2Ugc2Vl IG9uCj4gcGVuIHN1cHBvcnQgYmVsb3cKPj4+IEJlc2lkZXMsIHRoYXQsIGlmIEkgYW0gYWJvdXQg dG8gaW1wbGVtZW50IHBlbiBzdXBwb3J0Cj4+PiAod2hpY2ggSSBzdGlsbCBub3QgY29udmluY2Vk IHdlIHJlYWxseSBuZWVkKSwgaG93IHdpbGwgSQo+Pj4gZG8gdGhhdD8KPj4gSSBkbyBub3Qga25v dyB3aGF0IHlvdSBoYXZlIG9uIHRoZSBiYWNrZW5kIHNpZGUsIGJ1dCByb3VnaGx5IHNwZWFraW5n IGlmCj4+IHlvdSBkZXRlY3QgYSBwZW4vc3R5bHVzIHlvdSBsZXQgeW91ciBndWVzdCBrbm93IHRo YXQgdGhlIGNvbnRhY3QgaXMgbm90Cj4+IGEgZmluZ2VyLCBidXQgcGVuLiBIb3cgeW91IHBsdW1i IGl0IHRocm91Z2ggaXMgdXAgdG8geW91Lgo+IHdlIGRvIG5vdCBkZXRlY3QgcGVuLCBvbmx5IGZp bmdlciBhdCB0aGUgbW9tZW50Cj4gYW5kIHRoZSBleGlzdGluZyBwcm90b2NvbCBoYXMgbm8gbWVh bnMgdG8gdGVsbAo+IHR5cGUgb2YgdGhlIHRvb2wgdXNlZCwgZXZlcnl0aGluZyBpcyBzdXBwb3Nl ZCB0bwo+IGJlICJmaW5nZXIiLCBzbyBmcm9udC1lbmQgaGFzIG5vIHBvc3NpYmlsaXR5IHRvCj4g dGVsbCBvbmUgdG9vbCBmcm9tIGFub3RoZXIKPj4+IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBJ IG5lZWQgMiBkaWZmZXJlbnQgc2xvdHMgdG8gcmVwb3J0Cj4+PiB0aGUgc2FtZSBjb29yZGluYXRl cyBmb3IgZmluZ2VyIGFuZCBwZW4uIFRoaXMgaXMgYmVjYXVzZQo+Pj4gaW5wdXRfbXRfcmVwb3J0 X3Nsb3Rfc3RhdGUgaGFzIGEgY2hlY2sgdGhhdCBpZiB0b29sIGhhcwo+Pj4gY2hhbmdlZCBmb3Ig dGhlIGN1cnJlbnQgc2xvdCB0aGVuIGEgbmV3IHRyYWNraW5nIElEIGlzIHNldC4KPj4+IERvIEkg YWxzbyBuZWVkIHRvIGFsbG9jYXRlIHR3aWNlIG1vcmUgc2xvdHMsIHNvIEkgY2FuCj4+PiByZXBv cnQgMiAqIG51bV9jb250YWN0cyBldmVudHMgc2ltdWx0YW5lb3VzbHkgKG9uZSBmb3IgZmluZ2Vy Cj4+PiBhbmQgYW5vdGhlciBmb3IgcGVuKT8KPj4+IFRoYXQgc2FpZCwgSSBiZWxpZXZlIHdlIGNh biBzdGFydCB3aXRoIG11bHRpLXRvdWNoIHN1cHBvcnQKPj4+IGFuZCBpZiBuZWVkIGJlIHRoZW4g YWRkIHBlbiBzdXBwb3J0IGFzIGEgc2VwYXJhdGUgY2hhbmdlLAo+Pj4gZG9lcyB0aGF0IG1ha2Ug c2Vuc2UgZm9yIHlvdT8KPj4+Pj4gKEkgZ3Vlc3MgTVRfVE9PTF9QQUxNIGlzIG5vdCBhcHByb3By aWF0ZSBhbnl3YXlzKQo+Pj4+IERlcGVuZHMgb24gaWYgeW91IGRvIHN0cmFpZ2h0IHBhc3MtdGhy b3VnaCBmcm9tIHRoZSBob3N0IHNpZGUgb3IgCj4+Pj4gbm90LiBJZgo+Pj4+IHlvdSBzdGFjayBk b2VzIHBhbG0gcmVqZWN0aW9uIGJlZm9yZSBwYXNzaW5nIHRoZSBkYXRhIHRocm91Z2ggdGhlbiB5 b3UKPj4+PiB3b3VsZCBub3Qgc2VlIE1UX1RPT0xfUEFMTSBpbiBndWVzdC4KPj4+IHRoZSBwcm90 b2NvbCB1c2VkIGJldHdlZW4gZ3Vlc3QgYW5kIGhvc3QgaXMgYSBnZW5lcmljIG9uZSwKPj4+IG5v dCB1c2luZyBMaW51eCB0eXBlcy9jb25zdGFudHMvZXZlbnRzLgo+PiBJdCBkb2VzIG5vdCBoYXZl IHRvIHVzZSBMaW51eCB0eXBlcyB0byBzdXBwb3J0IHRoZSBjb25jZXB0IG9mIGRpZmZlcmVudAo+ PiB0b29scy4KPiBhZ3JlZQo+Pj4gU28sIG5vIFBBTE0vVE9PTCBzdXBwb3J0IGlzIGluIHBsYWNl Cj4+IE9LLCB0aGF0IGlzIGZhaXIuIFRoZSBwZW4gc3VwcG9ydCBpcyBkZWZpbml0ZWx5IG5vdCBh IGhhcmQgcmVxdWlyZW1lbnQuCj4gc28sIGNhbiB3ZSBsaXZlIHdpdGggZmluZ2VyIGF0IHRoaXMg cG9pbnQsIG5vIHBlbj8KPj4gSSB3YXMganVzdCB3b25kZXJpbmcgaWYgeW91IGNvbnNpZGVyZWQg b3IgaGF2ZSBwbGFucyBmb3IgYWRkaW5nIHRoYXQuCj4gd2VsbCwgaG9uZXN0bHksIHdlIGRvIG5v dCBuZWVkIHBlbiBhdCB0aGUgbW9tZW50LAo+IGJ1dCB3ZSBkaWQgYWRkIG11bHRpLXRvdWNoIHN1 cHBvcnQgaW50byBYZW4gcHJvdG9jb2xzCj4gYW5kIGlmIHBlbiByZXF1aXJlZCBpdCBjYW4gYmUg ZG9uZSBhcyBhIHNlcGFyYXRlCj4gY2hhbmdlIHRvIGJvdGggcHJvdG9jb2wgYW5kIGZyb250L2Jh Y2sgZW5kcwo+PiAgIE9yCj4+IGlmIHlvdSB3YW50IHRvIHJldmlldyB0aGUgcHJvdG9jb2wgc28g aXQgY2FuIGJlIGVhc2lseSBhZGRlZCBpbiB0aGUKPj4gZnV0dXJlLiBGb3IgZXhhbXBsZSB5b3Ug Y291bGQgaGF2ZSB0b29sIHR5cGUgdG8gYmUgcGFydCBvZgo+PiBYRU5LQkRfTVRfRVZfRE9XTiBl dmVudC4KPiBwcm90b2NvbCBkaWQgYSBsb25nIHdheSB0byBnZXQgaW50byBYZW4vS2VybmVsLi4u IDopCj4gb2YgY291cnNlLCB0aGlzIGNhbiBiZSBkb25lLCBidXQgSSB3b3VsZCBwcmVmZXIgaXQg aXMKPiBhZGRlZCB3aGVuIGl0IGlzIG5lZWRlZCwgbm90IG9ubHkgdGhhdCB3ZSBoYXZlIHRoaXMg ZnVuY3Rpb25hbGl0eQo+Pj4+Pj4+Pj4gKyBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01U X1BPU0lUSU9OX1gsCj4+Pj4+Pj4+PiArIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+Pj4+ Pj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BP U0lUSU9OX1ksCj4+Pj4+Pj4+PiArIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+Pj4+Pj4+ Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1gsCj4+Pj4+ Pj4+PiArIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAg ICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1ksCj4+Pj4+Pj4+PiArIGV2ZW50LT5t dG91Y2gudS5wb3MuYWJzX3kpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4+ Pj4+Pj4+ICsgICAgICAgICAgICBjYXNlIFhFTktCRF9NVF9FVl9VUDoKPj4+Pj4+Pj4+ICsgICAg ICAgICAgICAgICAgaW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUoZGV2LCBNVF9UT09MX0ZJTkdF UiwKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwo+Pj4+ Pj4+Pj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICBjYXNl IFhFTktCRF9NVF9FVl9NT1RJT046Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgIGlucHV0X2V2 ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWCwKPj4+Pj4+Pj4+ICsgZXZlbnQtPm10 b3VjaC51LnBvcy5hYnNfeCk7Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgIGlucHV0X2V2ZW50 KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWSwKPj4+Pj4+Pj4+ICsgZXZlbnQtPm10b3Vj aC51LnBvcy5hYnNfeSk7Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgIGlucHV0X2V2ZW50KGRl diwgRVZfQUJTLCBBQlNfWCwKPj4+Pj4+Pj4+ICsgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeCk7 Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgIGlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNf WSwKPj4+Pj4+Pj4+ICsgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4+Pj4+Pj4+PiArICAg ICAgICAgICAgICAgIGJyZWFrOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIGNhc2UgWEVOS0JEX01U X0VWX1NZTjoKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgaW5wdXRfbXRfc3luY19mcmFtZShk ZXYpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4+Pj4+ICsgICAgICAg ICAgICBjYXNlIFhFTktCRF9NVF9FVl9TSEFQRToKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg aW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19NVF9UT1VDSF9NQUpPUiwKPj4+Pj4+Pj4+ICsg ZXZlbnQtPm10b3VjaC51LnNoYXBlLm1ham9yKTsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg aW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19NVF9UT1VDSF9NSU5PUiwKPj4+Pj4+Pj4+ICsg ZXZlbnQtPm10b3VjaC51LnNoYXBlLm1pbm9yKTsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg YnJlYWs7Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgY2FzZSBYRU5LQkRfTVRfRVZfT1JJRU5UOgo+ Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01U X09SSUVOVEFUSU9OLAo+Pj4+Pj4+Pj4gKyBldmVudC0+bXRvdWNoLnUub3JpZW50YXRpb24pOwo+ Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICB9 Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgLyogb25seSByZXBvcnQgc3luIHdoZW4gcmVxdWVzdGVk ICovCj4+Pj4+Pj4+PiArICAgICAgICAgICAgaWYgKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSAh PSBYRU5LQkRfTVRfRVZfU1lOKQo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICBkZXYgPSBOVUxM Owo+Pj4+Pj4+Pj4gICAgICAgICAgIH0KPj4+Pj4+Pj4+ICAgICAgICAgICBpZiAoZGV2KQo+Pj4+ Pj4+Pj4gICAgICAgICAgICAgICBpbnB1dF9zeW5jKGRldik7Cj4+Pj4+Pj4+PiBAQCAtMTE1LDkg KzE3OSw5IEBAIHN0YXRpYyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCAKPj4+Pj4+Pj4+IHhlbmJ1 c19kZXZpY2UgKmRldiwKPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHhlbmJ1c19kZXZpY2VfaWQgKmlkKQo+Pj4+Pj4+Pj4gICB7Cj4+Pj4+Pj4+PiAgICAgICBpbnQg cmV0LCBpOwo+Pj4+Pj4+Pj4gLSAgICB1bnNpZ25lZCBpbnQgYWJzOwo+Pj4+Pj4+Pj4gKyAgICB1 bnNpZ25lZCBpbnQgYWJzLCB0b3VjaDsKPj4+Pj4+Pj4+ICAgICAgIHN0cnVjdCB4ZW5rYmRfaW5m byAqaW5mbzsKPj4+Pj4+Pj4+IC0gICAgc3RydWN0IGlucHV0X2RldiAqa2JkLCAqcHRyOwo+Pj4+ Pj4+Pj4gKyAgICBzdHJ1Y3QgaW5wdXRfZGV2ICprYmQsICpwdHIsICptdG91Y2g7Cj4+Pj4+Pj4+ PiAgICAgICBpbmZvID0ga3phbGxvYyhzaXplb2YoKmluZm8pLCBHRlBfS0VSTkVMKTsKPj4+Pj4+ Pj4+ICAgICAgIGlmICghaW5mbykgewo+Pj4+Pj4+Pj4gQEAgLTE1Miw2ICsyMTYsMTcgQEAgc3Rh dGljIGludCB4ZW5rYmRfcHJvYmUoc3RydWN0IAo+Pj4+Pj4+Pj4geGVuYnVzX2RldmljZSAqZGV2 LAo+Pj4+Pj4+Pj4gICAgICAgICAgIH0KPj4+Pj4+Pj4+ICAgICAgIH0KPj4+Pj4+Pj4+ICsgICAg dG91Y2ggPSB4ZW5idXNfcmVhZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLAo+Pj4+Pj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIFhFTktCRF9GSUVMRF9GRUFUX01UT1VDSCwgMCk7Cj4+Pj4+Pj4+ PiArICAgIGlmICh0b3VjaCkgewo+Pj4+Pj4+Pj4gKyAgICAgICAgcmV0ID0geGVuYnVzX3dyaXRl KFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgIFhF TktCRF9GSUVMRF9SRVFfTVRPVUNILCAiMSIpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgaWYgKHJldCkg ewo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIHByX3dhcm5pbmcoInhlbmtiZDogY2FuJ3QgcmVxdWVz dCBtdWx0aS10b3VjaCIpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIHRvdWNoID0gMDsKPj4+Pj4+ Pj4+ICsgICAgICAgIH0KPj4+Pj4+Pj4+ICsgICAgfQo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gICAg ICAgLyoga2V5Ym9hcmQgKi8KPj4+Pj4+Pj4+ICAgICAgIGtiZCA9IGlucHV0X2FsbG9jYXRlX2Rl dmljZSgpOwo+Pj4+Pj4+Pj4gICAgICAgaWYgKCFrYmQpCj4+Pj4+Pj4+PiBAQCAtMjA4LDYgKzI4 Myw2NyBAQCBzdGF0aWMgaW50IHhlbmtiZF9wcm9iZShzdHJ1Y3QgCj4+Pj4+Pj4+PiB4ZW5idXNf ZGV2aWNlICpkZXYsCj4+Pj4+Pj4+PiAgICAgICB9Cj4+Pj4+Pj4+PiAgICAgICBpbmZvLT5wdHIg PSBwdHI7Cj4+Pj4+Pj4+PiArICAgIC8qIG11bHRpLXRvdWNoIGRldmljZSAqLwo+Pj4+Pj4+Pj4g KyAgICBpZiAodG91Y2gpIHsKPj4+Pj4+Pj4+ICsgICAgICAgIGludCBudW1fY29udCwgd2lkdGgs IGhlaWdodDsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsgICAgICAgIG10b3VjaCA9IGlucHV0X2Fs bG9jYXRlX2RldmljZSgpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgaWYgKCFtdG91Y2gpCj4+Pj4+Pj4+ PiArICAgICAgICAgICAgZ290byBlcnJvcl9ub21lbTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsg ICAgICAgIG51bV9jb250ID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVu YW1lLAo+Pj4+Pj4+Pj4gKyBYRU5LQkRfRklFTERfTVRfTlVNX0NPTlRBQ1RTLAo+Pj4+Pj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgIDEpOwo+Pj4+Pj4gU2hvdWxkIHdlIHJlZnVzZSBNVCBk ZXZpY2VzIHdpdGggbnVtYmVyIG9mIGNvbnRhY3RzIGxlc3MgdGhhbiAyPwo+Pj4+PiB3ZSBjYW4s IGJ1dCBJIHNlZSBubyBoYXJtIGluIDEuIHdoYXQgaXMgbW9yZSwgdGhpcyBtYXkKPj4+Pj4gYWxs b3cgZ3Vlc3RzIHRvIGVtdWxhdGUgbW9yZSBwb2ludGluZyBkZXZpY2VzCj4+Pj4+IGJ1dCwgaWYg eW91IGluc2lzdCwgdGhlbiBJIHdpbGwgYWRkIGFwcHJvcHJpYXRlIGNvZGUgdG8KPj4+Pj4gcmVq ZWN0IGlmIG51bWJlciBvZiBjb250YWN0cyBpcyBsZXNzIHRoZW4gMgo+PiBUaGUgcXVlc3Rpb24g aXMgaWYgeW91IGFyZSBwbGFubmluZyB0byBrZWVwIHRoZSBzaW5nbGUtdG91Y2ggaW50ZXJmYWNl Cj4+IG9yIHlvdSB3aWxsIG1pZ3JhdGUgZXZlcnl0aGluZyB0byBtdWx0aS10b3VjaC4KPiBJIHdp bGwga2VlcCBzaW5nbGUgdG91Y2ggYXMgbGVnYWN5LCBidXQgaW4gb3VyIHVzZS1jYXNlcwo+IHdl IGFyZSBtb3JlIGZvY3VzaW5nIG9uIHVzaW5nIG11bHRpLXRvdWNoIGRldmljZXMuCj4gYnV0IGV2 ZW4gd2l0aCBudW1iZXIgb2YgY29udGFjdHMgPT0gMSBpdCBjYW4gc3RpbGwgYmUKPiB1c2VmdWwg YXMgaXQgZ2l2ZXMgbW9yZSBmbGV4aWJpbGl0eSBpbiBjb25maWd1cmluZyBndWVzdCBPUwo+IElm IHlvdSBpbnNpc3QgdGhhdCBudW0gY29udGFjdHMgPT0gMSBtdXN0IGJlIHJlbW92ZWQsCj4gcGxl YXNlIGxldCBtZSBrbm93IGFuZCBJIHdpbGwgaGFuZGxlIHRoYXQKPj4+Pj4+Pj4+ICsgICAgICAg IHdpZHRoID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+Pj4+ Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBYRU5LQkRfRklFTERfTVRfV0lEVEgsCj4+ Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIFhFTkZCX1dJRFRIKTsKPj4+Pj4+Pj4+ ICsgICAgICAgIGhlaWdodCA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5ub2Rl bmFtZSwKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTktCRF9GSUVMRF9N VF9IRUlHSFQsCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5GQl9IRUlH SFQpOwo+Pj4+Pj4+PiBDdXJpb3VzIHdoeSB5b3UgbmVlZCBzZXBhcmF0ZSBwYXJhbWV0ZXJzIGhl cmUgdG9vLi4uCj4+Pj4+Pj4gVGhpcyBpcyBiZWNhdXNlIG10IHBhcmFtZXRlcnMgYXJlIGRpZmZl cmVudCBmcm9tIHB0cgo+Pj4+Pj4+IGluIGEgd2F5IHRoYXQgdGhleSBhcmUgY29uZmlndXJhYmxl IHBlciBmcm9udCBkcml2ZXIncwo+Pj4+Pj4+IGluc3RhbmNlIHJhdGhlciB0aGFuIHBlciBiYWNr ZW5kLCBlLmcuIGluIFhlblN0b3JlOgo+Pj4+Pj4+Cj4+Pj4+Pj4gL2xvY2FsL2RvbWFpbi8wL2Jh Y2tlbmQvdmtiZC8xLzAvd2lkdGggPSAiMTkyMCIKPj4+Pj4+PiAvbG9jYWwvZG9tYWluLzAvYmFj a2VuZC92a2JkLzEvMC9oZWlnaHQgPSAiMTA4MCIKPj4+Pj4+Pgo+Pj4+Pj4+IC9sb2NhbC9kb21h aW4vMS9kZXZpY2UvdmtiZC8wL211bHRpLXRvdWNoLXdpZHRoID0gIjE5MjAiCj4+Pj4+Pj4gL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gtaGVpZ2h0ID0gIjEwODAiCj4+ Pj4+Pj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gtbnVtLWNvbnRh Y3RzID0gIjEwIgo+Pj4+Pj4+Cj4+Pj4+Pj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzEv bXVsdGktdG91Y2gtd2lkdGggPSAiODAwIgo+Pj4+Pj4+IC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmtiZC8xL211bHRpLXRvdWNoLWhlaWdodCA9ICI2MDAiCj4+Pj4+Pj4gL2xvY2FsL2RvbWFpbi8x L2RldmljZS92a2JkLzEvbXVsdGktdG91Y2gtbnVtLWNvbnRhY3RzID0gIjMiCj4+Pj4+Pj4KPj4+ Pj4+PiBUaGUgbWFpbiByZWFzb24gZm9yIHN1Y2ggY29uZmlndXJhdGlvbiBpcyB0aGF0IHlvdSBj YW4KPj4+Pj4+PiBjb25maWd1cmUgbXVsdGlwbGUgbXQgaW5wdXQgZGV2aWNlcyBldmVuIGZvciB0 aGUgc2FtZSBndWVzdAo+Pj4+Pj4+IHdpdGggZGlmZmVyZW50IHJlc29sdXRpb25zIHdoaWNoIG1h eSBub3QgbWF0Y2ggdGhvc2UKPj4+Pj4+PiBjb25maWd1cmVkIGZvciBwdHIuCj4+Pj4+Pj4gKElu IG15IHVzZS1jYXNlIEkgdXNlIG5ldyBkaXNwbGlmIHByb3RvY29sIFsxXSBpbiBjb25qdW5jdGlv bgo+Pj4+Pj4+IHdpdGggbXQgaW5wdXQgZGV2aWNlcyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYmFj a2VuZCBpcyBub3QKPj4+Pj4+PiBRRU1VJ3MgeGVuZmIpCj4+Pj4+PiBJIHNlZS4KPj4+Pj4+Cj4+ Pj4+Pj4gQXMgdG8gbW9kdWxlIHBhcmFtZXRlcnMsIEkgYWRkZWQgdGhvc2UgdG8gYmUgY29uc2lz dGVudCB3aXRoCj4+Pj4+Pj4gcHRyIGRldmljZS4gRG8geW91IHRoaW5rIHdlIGNhbiBsaXZlIHdp dGhvdXQgdGhlbSBhbmQKPj4+Pj4+PiBkbyB5b3Ugd2FudCBtZSB0byByZW1vdmUgdGhlbT8KPj4+ Pj4+IFllcywgSSB0aGluayB3ZSBiZXR0ZXIuIEkgYW0gYWxzbyBjb25mdXNlZCBieSB0aGUgd2F5 IHlvdSBhcmUgCj4+Pj4+PiBoYW5kbGluZwo+Pj4+Pj4gdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLiBJ dCBsb29rcyB0byBtZSB5b3UgdXBkYXRlIHRoZW0gd2l0aCBkYXRhIAo+Pj4+Pj4gcGFzc2VkCj4+ Pj4+ID5mcm9tIHRoZSBiYWNrZW5kLCBidXQgbmV2ZXIgdXNlIHRoZSBkYXRhLi4uCj4+Pj4+IEkg aGF2ZSByZW1vdmVkIG1vZHVsZSBwYXJhbWV0ZXJzICh0aGUgb25seSB1c2Ugb2YgdGhvc2UKPj4+ Pj4gd2FzIHRvIGJlIGFibGUgdG8gc2VlIGNvbmZpZ3VyZWQgd2lkdGggYW5kIGhlaWdodCBvbgo+ Pj4+PiBndWVzdCBzaWRlLCBidXQgdGhpcyBpcyBtaW5vcikKPj4+PiBldnRlc3Qgd291bGQgc2hv dyBpdCB0byB5b3UuIE9yIHlvdSBjYW4gcXVlcnkgaW5wdXQgZGV2aWNlIHlvdXJzZWxmCj4+Pj4g KEVWSU9DR0FCUyBpb3RjbCkuCj4+PiB5ZXMsIGlmIGVtYmVkZGVkIHN5c3RlbSAod2hpY2ggaXMg bXkgdGFyZ2V0KSBoYXMgZXZ0ZXN0Cj4+PiBidXQgaXQgZGVmaW5pdGVseSBkb2VzIGhhdmUgaW9j dGwgdGhvdWdoCj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+PiArICAgICAgICBtdG91Y2gtPm5hbWUgPSAi WGVuIFZpcnR1YWwgTXVsdGktdG91Y2giOwo+Pj4+Pj4+Pj4gKyAgICAgICAgbXRvdWNoLT5waHlz ID0gaW5mby0+cGh5czsKPj4+Pj4+Pj4+ICsgICAgICAgIG10b3VjaC0+aWQuYnVzdHlwZSA9IEJV U19QQ0k7Cj4+Pj4+Pj4+PiArICAgICAgICBtdG91Y2gtPmlkLnZlbmRvciA9IDB4NTg1MzsKPj4+ Pj4+Pj4+ICsgICAgICAgIG10b3VjaC0+aWQucHJvZHVjdCA9IDB4ZmZmZDsKPj4+Pj4+Pj4+ICsK Pj4+Pj4+Pj4+ICsgICAgICAgIF9fc2V0X2JpdChFVl9BQlMsIG10b3VjaC0+ZXZiaXQpOwo+Pj4+ Pj4+Pj4gKyAgICAgICAgX19zZXRfYml0KEVWX0tFWSwgbXRvdWNoLT5ldmJpdCk7Cj4+Pj4+Pj4+ PiArICAgICAgICBfX3NldF9iaXQoQlROX1RPVUNILCBtdG91Y2gtPmtleWJpdCk7Cj4+Pj4gUGxl YXNlIG1ha2UgaXQKPj4+PiAgICAgICAgIGlucHV0X3NldF9jYXBhYmlsaXR5KG10b3VjaCwgRVZf S0VZLCBCVE5fVE9VQ0gpOwo+Pj4+Cj4+Pj4gYW5kIGRyb3AgYWxsIF9fc2V0X2JpdCgpcy4KPj4+ IGRvbmUsIHRoYW5rIHlvdQo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgICAgaW5wdXRfc2V0 X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWCwKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAwLCB3aWR0aCwgMCwgMCk7Cj4+Pj4+Pj4+PiArICAgICAgICBpbnB1dF9zZXRfYWJzX3BhcmFt cyhtdG91Y2gsIEFCU19ZLAo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIDAsIGhlaWdo dCwgMCwgMCk7Cj4+Pj4+Pj4+PiArICAgICAgICBpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gs IEFCU19QUkVTU1VSRSwKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAwLCAyNTUsIDAs IDApOwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgICAgaW5wdXRfc2V0X2Fic19wYXJhbXMo bXRvdWNoLCBBQlNfTVRfVE9VQ0hfTUFKT1IsCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgMCwgMjU1LCAwLCAwKTsKPj4+Pj4+Pj4+ICsgICAgICAgIGlucHV0X3NldF9hYnNfcGFyYW1z KG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1gsCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgMCwgd2lkdGgsIDAsIDApOwo+Pj4+Pj4+Pj4gKyAgICAgICAgaW5wdXRfc2V0X2Fic19wYXJh bXMobXRvdWNoLCBBQlNfTVRfUE9TSVRJT05fWSwKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAwLCBoZWlnaHQsIDAsIDApOwo+Pj4+Pj4+Pj4gKyAgICAgICAgaW5wdXRfc2V0X2Fic19w YXJhbXMobXRvdWNoLCBBQlNfTVRfUFJFU1NVUkUsCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgMCwgMjU1LCAwLCAwKTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsgICAgICAgIGlucHV0 X210X2luaXRfc2xvdHMobXRvdWNoLCBudW1fY29udCwgMCk7Cj4+Pj4+PiBXZSBuZWVkIGVycm9y IGhhbmRsaW5nIGhlcmUuCj4+Pj4+IGRvbmUKPj4+Pj4+ICAgQWxzbywgaXQgd291bGQgYmUgbmlj ZSBpZiB3ZSBzZXQgSU5QVVRfTVRfKgo+Pj4+Pj4gZmxhZ3MgaGVyZSwgc28gdGhhdCB1c2Vyc3Bh Y2UgaGFkIGJldHRlciBjaGFuY2Ugb2YgZmlndXJpbmcgaG93IHRvCj4+Pj4+PiBoYW5kbGUgdGhl IGRldmljZS4KPj4+Pj4gZG9uZSwgSSB3aWxsIHVzZSBJTlBVVF9NVF9ESVJFQ1QgfCBJTlBVVF9N VF9EUk9QX1VOVVNFRAo+Pj4+IERvZXMgdGhhdCBtZWFuIHRoYXQgeW91ciBiYWNrZW5kIGRvZXMg bm90IHJlbGlhYmx5IHJlcG9ydCByZWxlYXNlIG9mCj4+Pj4gY29udGFjdHM/Cj4+PiB0aGVyZSBp cyBhIHJpbmcgYnVmZmVyIGJldHdlZW4gaG9zdCBhbmQgZ3Vlc3QsCj4+PiBzbyB0aGVyZSBpcyBh bHdheXMgYSBwb3NzaWJpbGl0eSAocmF0aGVyIHNtYWxsIEkgYmVsaWV2ZSkKPj4+IHRoYXQgdGhl IGJ1ZmZlciBvdmVycnVucy4gRG8geW91IHRoaW5rIEkgbmVlZCBJTlBVVF9NVF9EUk9QX1VOVVNF RCBvcgo+Pj4gd2UgY2FuIGxpdmUgd2l0aG91dCBpdD8KPj4gQWdhaW4sIGl0IGRlcGVuZHMgb24g eW91ciBiYWNrZW5kIGJlaGF2aW9yLiBEbyB5b3UgcmVwb3J0IGFsbCBzbG90cwo+PiByZXBlYXRl ZGx5IGZvciBldmVyeSBwYWNrZXQgb3IgeW91IHJlcG9ydCBvbmx5IGNoYW5nZWQgc2xvdHM/Cj4g d2UgcmVwb3J0IGV2ZW50cyByZXBlYXRlZGx5LCBzbyBJIHRoaW5rIHdlIGNhbiBsaXZlCj4gdy9v IF9EUk9QX1VOVVNFRAo+PiBUaGFua3MuCj4+Cj4+Pj4gVGhhbmtzLgo+Pj4+Cj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+PiArICAgICAgICBtdG91Y2hfc2l6ZVtLUEFSQU1fTVRfWF0gPSB3aWR0aDsKPj4+ Pj4+Pj4+ICsgICAgICAgIG10b3VjaF9zaXplW0tQQVJBTV9NVF9ZXSA9IGhlaWdodDsKPj4+Pj4+ Pj4+ICsgICAgICAgIGluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCA9IC0xOwo+Pj4+Pj4+Pj4g Kwo+Pj4+Pj4+Pj4gKyAgICAgICAgcmV0ID0gaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKG10b3VjaCk7 Cj4+Pj4+Pj4+PiArICAgICAgICBpZiAocmV0KSB7Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgaW5w dXRfZnJlZV9kZXZpY2UobXRvdWNoKTsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICB4ZW5idXNfZGV2 X2ZhdGFsKGluZm8tPnhiZGV2LCByZXQsCj4+Pj4+Pj4+PiArICJpbnB1dF9yZWdpc3Rlcl9kZXZp Y2UobXRvdWNoKSIpOwo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+Pj4+Pj4+ PiArICAgICAgICB9Cj4+Pj4+Pj4+PiArICAgICAgICBpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3Rf aWQgPSAtMTsKPj4+Pj4+Pj4+ICsgICAgICAgIGluZm8tPm10b3VjaCA9IG10b3VjaDsKPj4+Pj4+ Pj4+ICsgICAgfQo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gICAgICAgcmV0ID0geGVua2JkX2Nvbm5l Y3RfYmFja2VuZChkZXYsIGluZm8pOwo+Pj4+Pj4+Pj4gICAgICAgaWYgKHJldCA8IDApCj4+Pj4+ Pj4+PiAgICAgICAgICAgZ290byBlcnJvcjsKPj4+Pj4+Pj4+IEBAIC0yNDAsNiArMzc2LDggQEAg c3RhdGljIGludCB4ZW5rYmRfcmVtb3ZlKHN0cnVjdCAKPj4+Pj4+Pj4+IHhlbmJ1c19kZXZpY2Ug KmRldikKPj4+Pj4+Pj4+ICAgICAgICAgICBpbnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5r YmQpOwo+Pj4+Pj4+Pj4gICAgICAgaWYgKGluZm8tPnB0cikKPj4+Pj4+Pj4+ICAgICAgICAgICBp bnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5wdHIpOwo+Pj4+Pj4+Pj4gKyAgICBpZiAoaW5m by0+bXRvdWNoKQo+Pj4+Pj4+Pj4gKyAgICAgICAgaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoaW5m by0+bXRvdWNoKTsKPj4+Pj4+Pj4+ICAgICAgIGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylpbmZv LT5wYWdlKTsKPj4+Pj4+Pj4+ICAgICAgIGtmcmVlKGluZm8pOwo+Pj4+Pj4+Pj4gICAgICAgcmV0 dXJuIDA7Cj4+Pj4+Pj4+PiAtLSAKPj4+Pj4+Pj4+IDIuNy40Cj4+Pj4+Pj4+Pgo+Pj4+Pj4gVGhh bmtzLgo+Pj4+Pj4KPj4+Pj4gRm9yIHlvdXIgY29udmVuaWVuY2UgSSBhbSBhdHRhY2hpbmcgdGhl IGNoYW5nZXMgSSBhbSBhYm91dAo+Pj4+PiB0byBwdXQgaW50byB2MSBvZiB0aGUgc2VyaWVzOgo+ Pj4+PiAgIC0gcmVtb3ZlIHVubGlrZWx5Cj4+Pj4+ICAgLSByZW1vdmUgbW9kdWxlIHBhcmFtZXRl cnMKPj4+Pj4gICAtIGVycm9yIGhhbmRsaW5nIGZvciBpbnB1dF9tdF9pbml0X3Nsb3RzCj4+Pj4+ ICAgLSBsZXQgdXNlcnNwYWNlIGJldHRlciBjaGFuY2Ugb2YgZmlndXJpbmcgaG93IHRvIGhhbmRs ZSB0aGUgZGV2aWNlCj4+Pj4+Cj4+Pj4+IFRoYW5rIHlvdSwKPj4+Pj4gT2xla3NhbmRyCj4+Pj4+ ICBGcm9tIGU3NjUwNmM1NTg0NmUyYmI0Y2NiYWZhNDMwNjQyZTM2ODY0M2U1MWQgTW9uIFNlcCAx NyAwMDowMDowMCAKPj4+Pj4gMjAwMQo+Pj4+PiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5r byA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+IERhdGU6IFR1ZSwgMzAg TWF5IDIwMTcgMTQ6NDk6NTggKzAzMDAKPj4+Pj4gU3ViamVjdDogW1BBVENIXSBGaXg6IHJlbW92 ZSB1bmxpa2VseSBGaXg6IHJlbW92ZSBtb2R1bGUgcGFyYW10ZXJzIAo+Pj4+PiBGaXg6IGVycm9y Cj4+Pj4+ICAgaGFuZGxpbmcgZm9yIGlucHV0X210X2luaXRfc2xvdHMgRml4OiBsZXQgdXNlcnNw YWNlIGJldHRlciAKPj4+Pj4gY2hhbmNlIG9mIGZpZ3VyaW5nCj4+Pj4+ICAgaG93IHRvIGhhbmRs ZSB0aGUgZGV2aWNlCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNo Y2hlbmtvIAo+Pj4+PiA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+IC0t LQo+Pj4+PiAgIGRyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYyB8IDIxICsrKysrKysr KystLS0tLS0tLS0tLQo+Pj4+PiAgIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAx MSBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlz Yy94ZW4ta2JkZnJvbnQuYyAKPj4+Pj4gYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250 LmMKPj4+Pj4gaW5kZXggODI2NmVmOTQ4YTA2Li4yNzNkNzg2YTE5Y2QgMTAwNjQ0Cj4+Pj4+IC0t LSBhL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYwo+Pj4+PiArKysgYi9kcml2ZXJz L2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4gQEAgLTUxLDEyICs1MSw2IEBAIG1vZHVs ZV9wYXJhbV9hcnJheShwdHJfc2l6ZSwgaW50LCBOVUxMLCAwNDQ0KTsKPj4+Pj4gICBNT0RVTEVf UEFSTV9ERVNDKHB0cl9zaXplLAo+Pj4+PiAgICAgICAiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBo ZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgwMCw2MDApIik7Cj4+Pj4+IC1lbnVtIHsgS1BBUkFN X01UX1gsIEtQQVJBTV9NVF9ZLCBLUEFSQU1fTVRfQ05UIH07Cj4+Pj4+IC1zdGF0aWMgaW50IG10 b3VjaF9zaXplW0tQQVJBTV9NVF9DTlRdID0geyBYRU5GQl9XSURUSCwgCj4+Pj4+IFhFTkZCX0hF SUdIVCB9Owo+Pj4+PiAtbW9kdWxlX3BhcmFtX2FycmF5KG10b3VjaF9zaXplLCBpbnQsIE5VTEws IDA0NDQpOwo+Pj4+PiAtTU9EVUxFX1BBUk1fREVTQyhwdHJfc2l6ZSwKPj4+Pj4gLSAgICAiTXVs dGktdG91Y2ggZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgwMCw2MDAp Iik7Cj4+Pj4+IC0KPj4+Pj4gICBzdGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0IHhlbmJ1 c19kZXZpY2UgKik7Cj4+Pj4+ICAgc3RhdGljIGludCB4ZW5rYmRfY29ubmVjdF9iYWNrZW5kKHN0 cnVjdCB4ZW5idXNfZGV2aWNlICosIHN0cnVjdCAKPj4+Pj4geGVua2JkX2luZm8gKik7Cj4+Pj4+ ICAgc3RhdGljIHZvaWQgeGVua2JkX2Rpc2Nvbm5lY3RfYmFja2VuZChzdHJ1Y3QgeGVua2JkX2lu Zm8gKik7Cj4+Pj4+IEBAIC0xMTQsOCArMTA4LDggQEAgc3RhdGljIGlycXJldHVybl90IGlucHV0 X2hhbmRsZXIoaW50IHJxLCB2b2lkIAo+Pj4+PiAqZGV2X2lkKQo+Pj4+PiAgICAgICAgICAgICAg IGRldiA9IGluZm8tPm10b3VjaDsKPj4+Pj4gICAgICAgICAgICAgICBpZiAodW5saWtlbHkoIWRl dikpCj4+Pj4+ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+PiAtICAgICAgICAgICAgaWYg KHVubGlrZWx5KGV2ZW50LT5tdG91Y2guY29udGFjdF9pZCAhPQo+Pj4+PiAtICAgICAgICAgICAg ICAgICAgICBpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQpKSB7Cj4+Pj4+ICsgICAgICAgICAg ICBpZiAoZXZlbnQtPm10b3VjaC5jb250YWN0X2lkICE9Cj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgIGluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCkgewo+Pj4+PiAgICAgICAgICAgICAgICAg ICBpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPQo+Pj4+PiAgICAgICAgICAgICAgICAgICAg ICAgZXZlbnQtPm10b3VjaC5jb250YWN0X2lkOwo+Pj4+PiAgICAgICAgICAgICAgICAgICBpbnB1 dF9tdF9zbG90KGRldiwgZXZlbnQtPm10b3VjaC5jb250YWN0X2lkKTsKPj4+Pj4gQEAgLTMyNywx MCArMzIxLDE1IEBAIHN0YXRpYyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNl IAo+Pj4+PiAqZGV2LAo+Pj4+PiAgICAgICAgICAgaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNo LCBBQlNfTVRfUFJFU1NVUkUsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU1LCAw LCAwKTsKPj4+Pj4gLSAgICAgICAgaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250 LCAwKTsKPj4+Pj4gKyAgICAgICAgcmV0ID0gaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51 bV9jb250LAo+Pj4+PiArICAgICAgICAgICAgICAgIElOUFVUX01UX0RJUkVDVCB8IElOUFVUX01U X0RST1BfVU5VU0VEKTsKPj4+Pj4gKyAgICAgICAgaWYgKHJldCkgewo+Pj4+PiArICAgICAgICAg ICAgaW5wdXRfZnJlZV9kZXZpY2UobXRvdWNoKTsKPj4+Pj4gKyAgICAgICAgICAgIHhlbmJ1c19k ZXZfZmF0YWwoaW5mby0+eGJkZXYsIHJldCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICJp bnB1dF9tdF9pbml0X3Nsb3RzIik7Cj4+Pj4+ICsgICAgICAgICAgICBnb3RvIGVycm9yOwo+Pj4+ PiArICAgICAgICB9Cj4+Pj4+IC0gICAgICAgIG10b3VjaF9zaXplW0tQQVJBTV9NVF9YXSA9IHdp ZHRoOwo+Pj4+PiAtICAgICAgICBtdG91Y2hfc2l6ZVtLUEFSQU1fTVRfWV0gPSBoZWlnaHQ7Cj4+ Pj4+ICAgICAgICAgICBpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsKPj4+Pj4gICAg ICAgICAgIHJldCA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShtdG91Y2gpOwo+Pj4+PiAtLSAKPj4+ Pj4gMi43LjQKPj4+Pj4KPj4+IFRoYW5rIHlvdSwKPj4+IE9sZWtzYW5kcgo+IERtaXRyeSwgdGhh bmsgeW91IGZvciBjb21tZW50cwo+IFRoZSBib3R0b20gbGluZSBJIHNlZSBpczoKPiAgLSBubyBz dXBwb3J0IGZvciBQRU4gdG9vbCBhdCB0aGUgbW9tZW50Cj4gIC0gbnVtIGNvbnRhY3RzID09IDEg aXMgT0sKPiAgLSBJIHdpbGwgbm90IHVzZSBJTlBVVF9NVF9EUk9QX1VOVVNFRAo+Cj4gSWYgdGhl IGFib3ZlIGlzIG9rIHRvIHlvdSwgdGhlbiBJIHdpbGwgc2VuZCBhbm90aGVyIHZlcnNpb24gb2Yg dGhlCj4gc2VyaWVzIChCVFcsIGNhbiBJIHVzZSB5b3VyIFJCIGZvciB0aGUgZmlyc3QgcGF0Y2gg d2hpY2gKPiByZW1vdmVzIGhhcmQtY29kZXM/KQo+Cj4gVGhhbmsgeW91LAo+IE9sZWtzYW5kcgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=