From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH v3 2/2] drm/lima: driver for ARM Mali4xx GPUs Date: Wed, 27 Feb 2019 15:41:08 -0600 Message-ID: References: <20190227134124.28602-1-yuq825@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190227134124.28602-1-yuq825@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Qiang Yu Cc: Marek Vasut , Simon Shields , lima@lists.freedesktop.org, Maxime Ripard , =?UTF-8?Q?Christian_K=C3=B6nig?= , Neil Armstrong , dri-devel , Vasily Khoruzhick , David Airlie , Sean Paul , Andreas Baierl , Erico Nunes List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBGZWIgMjcsIDIwMTkgYXQgNzo0MiBBTSBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNv bT4gd3JvdGU6Cj4KCkxvb2tzIHByZXR0eSBnb29kLiBBIGZldyBzbWFsbCB0aGluZ3MgYW5kIHNv bWUgcXVlc3Rpb25zIGhvcGVmdWxseQpzb21lIG90aGVycyBjYW4gYW5zd2VyLgoKPiAtIE1hbGkg NHh4IEdQVXMgaGF2ZSB0d28ga2luZHMgb2YgcHJvY2Vzc29ycyBHUCBhbmQgUFAuIEdQIGlzIGZv cgo+ICAgT3BlbkdMIHZlcnRleCBzaGFkZXIgcHJvY2Vzc2luZyBhbmQgUFAgaXMgZm9yIGZyYWdt ZW50IHNoYWRlcgo+ICAgcHJvY2Vzc2luZy4gRWFjaCBwcm9jZXNzb3IgaGFzIGl0cyBvd24gTU1V IHNvIHByY2Vzc29ycyB3b3JrIGluCj4gICB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuCj4gLSBUaGVy ZSdzIG9ubHkgb25lIEdQIGJ1dCBtdWx0aXBsZSBQUCAobWF4IDQgZm9yIG1hbGkgNDAwIGFuZCA4 Cj4gICBmb3IgbWFsaSA0NTApIGluIHRoZSBzYW1lIG1hbGkgNHh4IEdQVS4gQWxsIFBQcyBhcmUg Z3JvdXBlZAo+ICAgdG9nYXRoZXIgdG8gaGFuZGxlIGEgc2luZ2xlIGZyYWdtZW50IHNoYWRlciB0 YXNrIGRpdmlkZWQgYnkKPiAgIEZCIG91dHB1dCB0aWxlZCBwaXhlbHMuIE1hbGkgNDAwIHVzZXIg c3BhY2UgZHJpdmVyIGlzCj4gICByZXNwb25zaWJsZSBmb3IgYXNzaWduIHRhcmdldCB0aWxlZCBw aXhlbHMgdG8gZWFjaCBQUCwgYnV0IG1hbGkKPiAgIDQ1MCBoYXMgYSBIVyBtb2R1bGUgY2FsbGVk IERMQlUgdG8gZHluYW1pY2FsbHkgYmFsYW5jZSBlYWNoCj4gICBQUCdzIGxvYWQuCj4gLSBVc2Vy IHNwYWNlIGRyaXZlciBhbGxvY2F0ZSBidWZmZXIgb2JqZWN0IGFuZCBtYXAgaW50byBHUFUKPiAg IHZpcnR1YWwgYWRkcmVzcyBzcGFjZSwgdXBsb2FkIGNvbW1hbmQgc3RyZWFtIGFuZCBkcmF3IGRh dGEgd2l0aAo+ICAgQ1BVIG1tYXAgb2YgdGhlIGJ1ZmZlciBvYmplY3QsIHRoZW4gc3VibWl0IHRh c2sgdG8gR1AvUFAgd2l0aAo+ICAgYSByZWdpc3RlciBmcmFtZSBpbmRpY2F0aW5nIHdoZXJlIGlz IHRoZSBjb21tYW5kIHN0cmVhbSBhbmQgbWlzYwo+ICAgc2V0dGluZ3MuCj4gLSBUaGVyZSdzIG5v IGNvbW1hbmQgc3RyZWFtIHZhbGlkYXRpb24vcmVsb2NhdGlvbiBkdWUgdG8gZWFjaCB1c2VyCj4g ICBwcm9jZXNzIGhhcyBpdHMgb3duIEdQVSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIEdQL1BQJ3Mg TU1VIHN3aXRjaAo+ICAgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGJlZm9yZSBydW5uaW5nIHR3byB0 YXNrcyBmcm9tIGRpZmZlcmVudAo+ICAgdXNlciBwcm9jZXNzLiBFcnJvciBvciBldmlsIHVzZXIg c3BhY2UgY29kZSBqdXN0IGdldCBNTVUgZmF1bHQKPiAgIG9yIEdQL1BQIGVycm9yIElSUSwgdGhl biB0aGUgSFcvU1cgd2lsbCBiZSByZWNvdmVyZWQuCj4gLSBVc2UgR0VNK3NobWVtIGZvciBNTS4g Q3VycmVudGx5IGp1c3QgYWxsb2MgYW5kIHBpbiBtZW1vcnkgd2hlbgo+ICAgZ2VtIG9iamVjdCBj cmVhdGlvbi4gR1BVIHZtIG1hcCBvZiB0aGUgYnVmZmVyIGlzIGFsc28gZG9uZSBpbgo+ICAgdGhl IGFsbG9jIHN0YWdlIGluIGtlcm5lbCBzcGFjZS4gV2UgbWF5IGRlbGF5IHRoZSBtZW1vcnkKPiAg IGFsbG9jYXRpb24gYW5kIHJlYWwgR1BVIHZtIG1hcCB0byBjb21tYW5kIHN1Ym1pdGlvbiBzdGFn ZSBpbiB0aGUKPiAgIGZ1cnR1cmUgYXMgaW1wcm92ZW1lbnQuCj4gLSBVc2UgZHJtX3NjaGVkIGZv ciBHUFUgdGFzayBzY2hlZHVsZS4gRWFjaCBPcGVuR0wgY29udGV4dCBzaG91bGQKPiAgIGhhdmUg YSBsaW1hIGNvbnRleHQgb2JqZWN0IGluIHRoZSBrZXJuZWwgdG8gZGlzdGluZ3Vpc2ggdGFza3MK PiAgIGZyb20gZGlmZmVyZW50IHVzZXIuIGRybV9zY2hlZCBnZXRzIHRhc2sgZnJvbSBlYWNoIGxp bWEgY29udGV4dAo+ICAgaW4gYSBmYWlyIHdheS4KPgo+IHYzOgo+IC0gZml4IGNvbW1lbnRzIGZy b20ga2J1aWxkIHJvYm90Cj4gLSByZXN0cmljdCBzdXBwb3J0ZWQgYXJjaCB0byB0ZXN0ZWQgb25l cwo+Cj4gdjI6Cj4gLSBmaXggc3lzY2FsbCBhcmd1bWVudCBjaGVjawo+IC0gZml4IGpvYiBmaW5p c2ggZmVuY2UgbGVhayBzaW5jZSBrZXJuZWwgNS4wCj4gLSB1c2UgZHJtIHN5bmNvYmogdG8gcmVw bGFjZSBuYXRpdmUgZmVuY2UKPiAtIG1vdmUgYnVmZmVyIG9iamVjdCBHUFUgdmEgbWFwIGludG8g a2VybmVsCj4gLSByZXNlcnZlIHN5c2NhbGwgYXJndW1lbnQgc3BhY2UgZm9yIGZ1dHVyZSBpbmZv Cj4gLSByZW1vdmUga2VybmVsIGdlbSBtb2RpZmllcgo+IC0gc3dpdGNoIFRUTSBiYWNrIHRvIEdF TStzaG1lbSBNTQo+IC0gdXNlIHRpbWUgYmFzZWQgaW8gcG9sbAo+IC0gdXNlIHdob2xlIHJlZ2lz dGVyIG5hbWUKPiAtIGFkb3B0IGdlbSByZXNlcnZhdGlvbiBvYmogaW50ZWdyYXRpb24KPiAtIHVz ZSBkcm1fdGltZW91dF9hYnNfdG9famlmZmllcwo+Cj4gQ2M6IEVyaWMgQW5ob2x0IDxlcmljQGFu aG9sdC5uZXQ+Cj4gQ2M6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Cj4gQ2M6IENocmlz dGlhbiBLw7ZuaWcgPGNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPgo+IENjOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gQ2M6IEFsZXggRGV1Y2hlciA8YWxleGRldWNo ZXJAZ21haWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgQmFpZXJsIDxpY2hnZWhAaW1r cmVpc3J1bS5kZT4KPiBTaWduZWQtb2ZmLWJ5OiBFcmljbyBOdW5lcyA8bnVuZXMuZXJpY29AZ21h aWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+ Cj4gU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Cj4gU2lnbmVkLW9m Zi1ieTogTmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5bGlicmUuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IFNpbW9uIFNoaWVsZHMgPHNpbW9uQGxpbmVhZ2Vvcy5vcmc+Cj4gU2lnbmVkLW9mZi1i eTogVmFzaWx5IEtob3J1emhpY2sgPGFuYXJzb3VsQGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5 OiBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4KPiAtLS0KCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9saW1hL2xpbWFfYmNhc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFf YmNhc3QuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zOThl NmQ2MDQ0MjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGlt YV9iY2FzdC5jCj4gQEAgLTAsMCArMSw0NiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCBPUiBNSVQKPiArLyogQ29weXJpZ2h0IDIwMTggUWlhbmcgWXUgPHl1cTgyNUBn bWFpbC5jb20+ICovCgpJdCdzIDIwMTkgbm93LgoKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9pby5o Pgo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSAibGltYV9kZXZp Y2UuaCIKPiArI2luY2x1ZGUgImxpbWFfYmNhc3QuaCIKPiArI2luY2x1ZGUgImxpbWFfcmVncy5o Igo+ICsKPiArI2RlZmluZSBiY2FzdF93cml0ZShyZWcsIGRhdGEpIHdyaXRlbChkYXRhLCBpcC0+ aW9tZW0gKyByZWcpCj4gKyNkZWZpbmUgYmNhc3RfcmVhZChyZWcpIHJlYWRsKGlwLT5pb21lbSAr IHJlZykKPiArCj4gK3ZvaWQgbGltYV9iY2FzdF9lbmFibGUoc3RydWN0IGxpbWFfZGV2aWNlICpk ZXYsIGludCBudW1fcHApCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBp cGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVfcHA7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9pcCAq aXAgPSBkZXYtPmlwICsgbGltYV9pcF9iY2FzdDsKPiArICAgICAgIGludCBpLCBtYXNrID0gYmNh c3RfcmVhZChMSU1BX0JDQVNUX0JST0FEQ0FTVF9NQVNLKSAmIDB4ZmZmZjAwMDA7Cj4gKwo+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9wcDsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgIHN0 cnVjdCBsaW1hX2lwICpwcCA9IHBpcGUtPnByb2Nlc3NvcltpXTsKPiArICAgICAgICAgICAgICAg bWFzayB8PSAxIDw8IChwcC0+aWQgLSBsaW1hX2lwX3BwMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgYmNhc3Rfd3JpdGUoTElNQV9CQ0FTVF9CUk9BRENBU1RfTUFTSywgbWFzayk7Cj4gK30K PiArCj4gK2ludCBsaW1hX2JjYXN0X2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKyAg ICAgICBpbnQgaSwgbWFzayA9IDA7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gbGltYV9pcF9wcDA7 IGkgPD0gbGltYV9pcF9wcDc7IGkrKykgewo+ICsgICAgICAgICAgICAgICBpZiAoaXAtPmRldi0+ aXBbaV0ucHJlc2VudCkKPiArICAgICAgICAgICAgICAgICAgICAgICBtYXNrIHw9IDEgPDwgKGkg LSBsaW1hX2lwX3BwMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgYmNhc3Rfd3JpdGUoTElN QV9CQ0FTVF9CUk9BRENBU1RfTUFTSywgbWFzayA8PCAxNik7Cj4gKyAgICAgICBiY2FzdF93cml0 ZShMSU1BX0JDQVNUX0lOVEVSUlVQVF9NQVNLLCBtYXNrKTsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICt2b2lkIGxpbWFfYmNhc3RfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApCj4gK3sK PiArCj4gK30KPiArCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfYmNh c3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfYmNhc3QuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zNDVlM2U4MDk4NjAKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9iY2FzdC5oCj4gQEAgLTAsMCArMSwx NCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQgKi8KPiAr LyogQ29weXJpZ2h0IDIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsj aWZuZGVmIF9fTElNQV9CQ0FTVF9IX18KPiArI2RlZmluZSBfX0xJTUFfQkNBU1RfSF9fCj4gKwo+ ICtzdHJ1Y3QgbGltYV9pcDsKPiArCj4gK2ludCBsaW1hX2JjYXN0X2luaXQoc3RydWN0IGxpbWFf aXAgKmlwKTsKPiArdm9pZCBsaW1hX2JjYXN0X2Zpbmkoc3RydWN0IGxpbWFfaXAgKmlwKTsKPiAr Cj4gK3ZvaWQgbGltYV9iY2FzdF9lbmFibGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYsIGludCBu dW1fcHApOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1h L2xpbWFfY3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjQzOWNiNDRkN2EwZAo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jCj4gQEAgLTAsMCAr MSwxMDUgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCj4g Ky8qIENvcHlyaWdodCAyMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiAr I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArCj4gKyNpbmNsdWRlICJsaW1hX2RldmljZS5oIgo+ ICsjaW5jbHVkZSAibGltYV9jdHguaCIKPiArCj4gK2ludCBsaW1hX2N0eF9jcmVhdGUoc3RydWN0 IGxpbWFfZGV2aWNlICpkZXYsIHN0cnVjdCBsaW1hX2N0eF9tZ3IgKm1nciwgdTMyICppZCkKPiAr ewo+ICsgICAgICAgc3RydWN0IGxpbWFfY3R4ICpjdHg7Cj4gKyAgICAgICBpbnQgaSwgZXJyOwo+ ICsKPiArICAgICAgIGN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPiAr ICAgICAgIGlmICghY3R4KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAg ICAgIGN0eC0+ZGV2ID0gZGV2Owo+ICsgICAgICAga3JlZl9pbml0KCZjdHgtPnJlZmNudCk7Cj4g Kwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGxpbWFfcGlwZV9udW07IGkrKykgewo+ICsgICAg ICAgICAgICAgICBlcnIgPSBsaW1hX3NjaGVkX2NvbnRleHRfaW5pdChkZXYtPnBpcGUgKyBpLCBj dHgtPmNvbnRleHQgKyBpLCAmY3R4LT5ndWlsdHkpOwo+ICsgICAgICAgICAgICAgICBpZiAoZXJy KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDA7Cj4gKyAgICAgICB9Cj4g Kwo+ICsgICAgICAgaWRyX3ByZWxvYWQoR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBzcGluX2xvY2so Jm1nci0+bG9jayk7Cj4gKyAgICAgICBlcnIgPSBpZHJfYWxsb2MoJm1nci0+aGFuZGxlcywgY3R4 LCAxLCAwLCBHRlBfQVRPTUlDKTsKPiArICAgICAgIHNwaW5fdW5sb2NrKCZtZ3ItPmxvY2spOwo+ ICsgICAgICAgaWRyX3ByZWxvYWRfZW5kKCk7Cj4gKyAgICAgICBpZiAoZXJyIDwgMCkKPiArICAg ICAgICAgICAgICAgZ290byBlcnJfb3V0MDsKPiArCj4gKyAgICAgICAqaWQgPSBlcnI7Cj4gKyAg ICAgICByZXR1cm4gMDsKPiArCj4gK2Vycl9vdXQwOgo+ICsgICAgICAgZm9yIChpLS07IGkgPj0g MDsgaS0tKQo+ICsgICAgICAgICAgICAgICBsaW1hX3NjaGVkX2NvbnRleHRfZmluaShkZXYtPnBp cGUgKyBpLCBjdHgtPmNvbnRleHQgKyBpKTsKPiArICAgICAgIGtmcmVlKGN0eCk7Cj4gKyAgICAg ICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBsaW1hX2N0eF9kb19yZWxlYXNl KHN0cnVjdCBrcmVmICpyZWYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2N0eCAqY3R4ID0g Y29udGFpbmVyX29mKHJlZiwgc3RydWN0IGxpbWFfY3R4LCByZWZjbnQpOwo+ICsgICAgICAgaW50 IGk7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGxpbWFfcGlwZV9udW07IGkrKykKPiAr ICAgICAgICAgICAgICAgbGltYV9zY2hlZF9jb250ZXh0X2ZpbmkoY3R4LT5kZXYtPnBpcGUgKyBp LCBjdHgtPmNvbnRleHQgKyBpKTsKPiArICAgICAgIGtmcmVlKGN0eCk7Cj4gK30KPiArCj4gK2lu dCBsaW1hX2N0eF9mcmVlKHN0cnVjdCBsaW1hX2N0eF9tZ3IgKm1nciwgdTMyIGlkKQo+ICt7Cj4g KyAgICAgICBzdHJ1Y3QgbGltYV9jdHggKmN0eDsKPiArCj4gKyAgICAgICBzcGluX2xvY2soJm1n ci0+bG9jayk7Cj4gKyAgICAgICBjdHggPSBpZHJfcmVtb3ZlKCZtZ3ItPmhhbmRsZXMsIGlkKTsK PiArICAgICAgIHNwaW5fdW5sb2NrKCZtZ3ItPmxvY2spOwo+ICsKPiArICAgICAgIGlmIChjdHgp IHsKPiArICAgICAgICAgICAgICAga3JlZl9wdXQoJmN0eC0+cmVmY250LCBsaW1hX2N0eF9kb19y ZWxlYXNlKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICB9Cj4gKyAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArc3RydWN0IGxpbWFfY3R4ICpsaW1hX2N0eF9n ZXQoc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgaWQpCj4gK3sKPiArICAgICAgIHN0cnVj dCBsaW1hX2N0eCAqY3R4Owo+ICsKPiArICAgICAgIHNwaW5fbG9jaygmbWdyLT5sb2NrKTsKPiAr ICAgICAgIGN0eCA9IGlkcl9maW5kKCZtZ3ItPmhhbmRsZXMsIGlkKTsKPiArICAgICAgIGlmIChj dHgpCj4gKyAgICAgICAgICAgICAgIGtyZWZfZ2V0KCZjdHgtPnJlZmNudCk7Cj4gKyAgICAgICBz cGluX3VubG9jaygmbWdyLT5sb2NrKTsKPiArICAgICAgIHJldHVybiBjdHg7Cj4gK30KPiArCj4g K3ZvaWQgbGltYV9jdHhfcHV0KHN0cnVjdCBsaW1hX2N0eCAqY3R4KQo+ICt7Cj4gKyAgICAgICBr cmVmX3B1dCgmY3R4LT5yZWZjbnQsIGxpbWFfY3R4X2RvX3JlbGVhc2UpOwo+ICt9Cj4gKwo+ICt2 b2lkIGxpbWFfY3R4X21ncl9pbml0KHN0cnVjdCBsaW1hX2N0eF9tZ3IgKm1ncikKPiArewo+ICsg ICAgICAgc3Bpbl9sb2NrX2luaXQoJm1nci0+bG9jayk7Cj4gKyAgICAgICBpZHJfaW5pdCgmbWdy LT5oYW5kbGVzKTsKPiArfQo+ICsKPiArdm9pZCBsaW1hX2N0eF9tZ3JfZmluaShzdHJ1Y3QgbGlt YV9jdHhfbWdyICptZ3IpCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2N0eCAqY3R4Owo+ICsg ICAgICAgc3RydWN0IGlkciAqaWRwOwo+ICsgICAgICAgdWludDMyX3QgaWQ7Cj4gKwo+ICsgICAg ICAgaWRwID0gJm1nci0+aGFuZGxlczsKPiArCj4gKyAgICAgICBpZHJfZm9yX2VhY2hfZW50cnko aWRwLCBjdHgsIGlkKSB7Cj4gKyAgICAgICAgICAgICAgIGtyZWZfcHV0KCZjdHgtPnJlZmNudCwg bGltYV9jdHhfZG9fcmVsZWFzZSk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWRyX2Rlc3Ry b3koJm1nci0+aGFuZGxlcyk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xp bWEvbGltYV9jdHguaCBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmgKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMmQzMmZmOWIzMGFkCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmgKPiBAQCAtMCww ICsxLDMwIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVCAq Lwo+ICsvKiBDb3B5cmlnaHQgMjAxOCBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4gKi8KPiAr Cj4gKyNpZm5kZWYgX19MSU1BX0NUWF9IX18KPiArI2RlZmluZSBfX0xJTUFfQ1RYX0hfXwo+ICsK PiArI2luY2x1ZGUgPGxpbnV4L2lkci5oPgo+ICsKPiArI2luY2x1ZGUgImxpbWFfZGV2aWNlLmgi Cj4gKwo+ICtzdHJ1Y3QgbGltYV9jdHggewo+ICsgICAgICAgc3RydWN0IGtyZWYgcmVmY250Owo+ ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXY7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9z Y2hlZF9jb250ZXh0IGNvbnRleHRbbGltYV9waXBlX251bV07Cj4gKyAgICAgICBhdG9taWNfdCBn dWlsdHk7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgbGltYV9jdHhfbWdyIHsKPiArICAgICAgIHNwaW5s b2NrX3QgbG9jazsKPiArICAgICAgIHN0cnVjdCBpZHIgaGFuZGxlczsKPiArfTsKPiArCj4gK2lu dCBsaW1hX2N0eF9jcmVhdGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYsIHN0cnVjdCBsaW1hX2N0 eF9tZ3IgKm1nciwgdTMyICppZCk7Cj4gK2ludCBsaW1hX2N0eF9mcmVlKHN0cnVjdCBsaW1hX2N0 eF9tZ3IgKm1nciwgdTMyIGlkKTsKPiArc3RydWN0IGxpbWFfY3R4ICpsaW1hX2N0eF9nZXQoc3Ry dWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgaWQpOwo+ICt2b2lkIGxpbWFfY3R4X3B1dChzdHJ1 Y3QgbGltYV9jdHggKmN0eCk7Cj4gK3ZvaWQgbGltYV9jdHhfbWdyX2luaXQoc3RydWN0IGxpbWFf Y3R4X21nciAqbWdyKTsKPiArdm9pZCBsaW1hX2N0eF9tZ3JfZmluaShzdHJ1Y3QgbGltYV9jdHhf bWdyICptZ3IpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjJlMTM3YTBiYWRkYgo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5j Cj4gQEAgLTAsMCArMSwzNzYgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgT1IgTUlUCj4gKy8qIENvcHlyaWdodCAyMDE3LTIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFp bC5jb20+ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImxp bWFfZ3AuaCIKPiArI2luY2x1ZGUgImxpbWFfcHAuaCIKPiArI2luY2x1ZGUgImxpbWFfbW11Lmgi Cj4gKyNpbmNsdWRlICJsaW1hX3BtdS5oIgo+ICsjaW5jbHVkZSAibGltYV9sMl9jYWNoZS5oIgo+ ICsjaW5jbHVkZSAibGltYV9kbGJ1LmgiCj4gKyNpbmNsdWRlICJsaW1hX2JjYXN0LmgiCj4gKyNp bmNsdWRlICJsaW1hX3ZtLmgiCj4gKwo+ICtzdHJ1Y3QgbGltYV9pcF9kZXNjIHsKPiArICAgICAg IGNoYXIgKm5hbWU7Cj4gKyAgICAgICBjaGFyICppcnFfbmFtZTsKPiArICAgICAgIGJvb2wgbXVz dF9oYXZlW2xpbWFfZ3B1X251bV07Cj4gKyAgICAgICBpbnQgb2Zmc2V0W2xpbWFfZ3B1X251bV07 Cj4gKwo+ICsgICAgICAgaW50ICgqaW5pdCkoc3RydWN0IGxpbWFfaXAgKik7Cj4gKyAgICAgICB2 b2lkICgqZmluaSkoc3RydWN0IGxpbWFfaXAgKik7Cj4gK307Cj4gKwo+ICsjZGVmaW5lIExJTUFf SVBfREVTQyhpcG5hbWUsIG1zdDAsIG1zdDEsIG9mZjAsIG9mZjEsIGZ1bmMsIGlycSkgXAo+ICsg ICAgICAgW2xpbWFfaXBfIyNpcG5hbWVdID0geyBcCj4gKyAgICAgICAgICAgICAgIC5uYW1lID0g I2lwbmFtZSwgXAo+ICsgICAgICAgICAgICAgICAuaXJxX25hbWUgPSBpcnEsIFwKPiArICAgICAg ICAgICAgICAgLm11c3RfaGF2ZSA9IHsgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIFtsaW1h X2dwdV9tYWxpNDAwXSA9IG1zdDAsIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBbbGltYV9n cHVfbWFsaTQ1MF0gPSBtc3QxLCBcCj4gKyAgICAgICAgICAgICAgIH0sIFwKPiArICAgICAgICAg ICAgICAgLm9mZnNldCA9IHsgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIFtsaW1hX2dwdV9t YWxpNDAwXSA9IG9mZjAsIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBbbGltYV9ncHVfbWFs aTQ1MF0gPSBvZmYxLCBcCj4gKyAgICAgICAgICAgICAgIH0sIFwKPiArICAgICAgICAgICAgICAg LmluaXQgPSBsaW1hXyMjZnVuYyMjX2luaXQsIFwKPiArICAgICAgICAgICAgICAgLmZpbmkgPSBs aW1hXyMjZnVuYyMjX2ZpbmksIFwKPiArICAgICAgIH0KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbGlt YV9pcF9kZXNjIGxpbWFfaXBfZGVzY1tsaW1hX2lwX251bV0gPSB7Cj4gKyAgICAgICBMSU1BX0lQ X0RFU0MocG11LCAgICAgICAgIGZhbHNlLCBmYWxzZSwgMHgwMjAwMCwgMHgwMjAwMCwgcG11LCAg ICAgICJwbXUiKSwKPiArICAgICAgIExJTUFfSVBfREVTQyhsMl9jYWNoZTAsICAgdHJ1ZSwgIHRy dWUsICAweDAxMDAwLCAweDEwMDAwLCBsMl9jYWNoZSwgTlVMTCksCj4gKyAgICAgICBMSU1BX0lQ X0RFU0MobDJfY2FjaGUxLCAgIGZhbHNlLCB0cnVlLCAgLTEsICAgICAgMHgwMTAwMCwgbDJfY2Fj aGUsIE5VTEwpLAo+ICsgICAgICAgTElNQV9JUF9ERVNDKGwyX2NhY2hlMiwgICBmYWxzZSwgZmFs c2UsIC0xLCAgICAgIDB4MTEwMDAsIGwyX2NhY2hlLCBOVUxMKSwKPiArICAgICAgIExJTUFfSVBf REVTQyhncCwgICAgICAgICAgdHJ1ZSwgIHRydWUsICAweDAwMDAwLCAweDAwMDAwLCBncCwgICAg ICAgImdwIiksCj4gKyAgICAgICBMSU1BX0lQX0RFU0MocHAwLCAgICAgICAgIHRydWUsICB0cnVl LCAgMHgwODAwMCwgMHgwODAwMCwgcHAsICAgICAgICJwcDAiKSwKPiArICAgICAgIExJTUFfSVBf REVTQyhwcDEsICAgICAgICAgZmFsc2UsIGZhbHNlLCAweDBBMDAwLCAweDBBMDAwLCBwcCwgICAg ICAgInBwMSIpLAo+ICsgICAgICAgTElNQV9JUF9ERVNDKHBwMiwgICAgICAgICBmYWxzZSwgZmFs c2UsIDB4MEMwMDAsIDB4MEMwMDAsIHBwLCAgICAgICAicHAyIiksCj4gKyAgICAgICBMSU1BX0lQ X0RFU0MocHAzLCAgICAgICAgIGZhbHNlLCBmYWxzZSwgMHgwRTAwMCwgMHgwRTAwMCwgcHAsICAg ICAgICJwcDMiKSwKPiArICAgICAgIExJTUFfSVBfREVTQyhwcDQsICAgICAgICAgZmFsc2UsIGZh bHNlLCAtMSwgICAgICAweDI4MDAwLCBwcCwgICAgICAgInBwNCIpLAo+ICsgICAgICAgTElNQV9J UF9ERVNDKHBwNSwgICAgICAgICBmYWxzZSwgZmFsc2UsIC0xLCAgICAgIDB4MkEwMDAsIHBwLCAg ICAgICAicHA1IiksCj4gKyAgICAgICBMSU1BX0lQX0RFU0MocHA2LCAgICAgICAgIGZhbHNlLCBm YWxzZSwgLTEsICAgICAgMHgyQzAwMCwgcHAsICAgICAgICJwcDYiKSwKPiArICAgICAgIExJTUFf SVBfREVTQyhwcDcsICAgICAgICAgZmFsc2UsIGZhbHNlLCAtMSwgICAgICAweDJFMDAwLCBwcCwg ICAgICAgInBwNyIpLAo+ICsgICAgICAgTElNQV9JUF9ERVNDKGdwbW11LCAgICAgICB0cnVlLCAg dHJ1ZSwgIDB4MDMwMDAsIDB4MDMwMDAsIG1tdSwgICAgICAiZ3BtbXUiKSwKPiArICAgICAgIExJ TUFfSVBfREVTQyhwcG1tdTAsICAgICAgdHJ1ZSwgIHRydWUsICAweDA0MDAwLCAweDA0MDAwLCBt bXUsICAgICAgInBwbW11MCIpLAo+ICsgICAgICAgTElNQV9JUF9ERVNDKHBwbW11MSwgICAgICBm YWxzZSwgZmFsc2UsIDB4MDUwMDAsIDB4MDUwMDAsIG1tdSwgICAgICAicHBtbXUxIiksCj4gKyAg ICAgICBMSU1BX0lQX0RFU0MocHBtbXUyLCAgICAgIGZhbHNlLCBmYWxzZSwgMHgwNjAwMCwgMHgw NjAwMCwgbW11LCAgICAgICJwcG1tdTIiKSwKPiArICAgICAgIExJTUFfSVBfREVTQyhwcG1tdTMs ICAgICAgZmFsc2UsIGZhbHNlLCAweDA3MDAwLCAweDA3MDAwLCBtbXUsICAgICAgInBwbW11MyIp LAo+ICsgICAgICAgTElNQV9JUF9ERVNDKHBwbW11NCwgICAgICBmYWxzZSwgZmFsc2UsIC0xLCAg ICAgIDB4MUMwMDAsIG1tdSwgICAgICAicHBtbXU0IiksCj4gKyAgICAgICBMSU1BX0lQX0RFU0Mo cHBtbXU1LCAgICAgIGZhbHNlLCBmYWxzZSwgLTEsICAgICAgMHgxRDAwMCwgbW11LCAgICAgICJw cG1tdTUiKSwKPiArICAgICAgIExJTUFfSVBfREVTQyhwcG1tdTYsICAgICAgZmFsc2UsIGZhbHNl LCAtMSwgICAgICAweDFFMDAwLCBtbXUsICAgICAgInBwbW11NiIpLAo+ICsgICAgICAgTElNQV9J UF9ERVNDKHBwbW11NywgICAgICBmYWxzZSwgZmFsc2UsIC0xLCAgICAgIDB4MUYwMDAsIG1tdSwg ICAgICAicHBtbXU3IiksCj4gKyAgICAgICBMSU1BX0lQX0RFU0MoZGxidSwgICAgICAgIGZhbHNl LCB0cnVlLCAgLTEsICAgICAgMHgxNDAwMCwgZGxidSwgICAgIE5VTEwpLAo+ICsgICAgICAgTElN QV9JUF9ERVNDKGJjYXN0LCAgICAgICBmYWxzZSwgdHJ1ZSwgIC0xLCAgICAgIDB4MTMwMDAsIGJj YXN0LCAgICBOVUxMKSwKPiArICAgICAgIExJTUFfSVBfREVTQyhwcF9iY2FzdCwgICAgZmFsc2Us IHRydWUsICAtMSwgICAgICAweDE2MDAwLCBwcF9iY2FzdCwgInBwIiksCj4gKyAgICAgICBMSU1B X0lQX0RFU0MocHBtbXVfYmNhc3QsIGZhbHNlLCB0cnVlLCAgLTEsICAgICAgMHgxNTAwMCwgbW11 LCAgICAgIE5VTEwpLAo+ICt9Owo+ICsKPiArY29uc3QgY2hhciAqbGltYV9pcF9uYW1lKHN0cnVj dCBsaW1hX2lwICppcCkKPiArewo+ICsgICAgICAgcmV0dXJuIGxpbWFfaXBfZGVzY1tpcC0+aWRd Lm5hbWU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGltYV9jbGtfaW5pdChzdHJ1Y3QgbGltYV9k ZXZpY2UgKmRldikKPiArewo+ICsgICAgICAgaW50IGVycjsKPiArICAgICAgIHVuc2lnbmVkIGxv bmcgYnVzX3JhdGUsIGdwdV9yYXRlOwo+ICsKPiArICAgICAgIGRldi0+Y2xrX2J1cyA9IGRldm1f Y2xrX2dldChkZXYtPmRldiwgImJ1cyIpOwo+ICsgICAgICAgaWYgKElTX0VSUihkZXYtPmNsa19i dXMpKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LT5kZXYsICJnZXQgYnVzIGNsayBm YWlsZWQgJWxkXG4iLCBQVFJfRVJSKGRldi0+Y2xrX2J1cykpOwo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUihkZXYtPmNsa19idXMpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGRl di0+Y2xrX2dwdSA9IGRldm1fY2xrX2dldChkZXYtPmRldiwgImNvcmUiKTsKPiArICAgICAgIGlm IChJU19FUlIoZGV2LT5jbGtfZ3B1KSkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldi0+ ZGV2LCAiZ2V0IGNvcmUgY2xrIGZhaWxlZCAlbGRcbiIsIFBUUl9FUlIoZGV2LT5jbGtfZ3B1KSk7 Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGRldi0+Y2xrX2dwdSk7Cj4gKyAgICAg ICB9Cj4gKwo+ICsgICAgICAgYnVzX3JhdGUgPSBjbGtfZ2V0X3JhdGUoZGV2LT5jbGtfYnVzKTsK PiArICAgICAgIGRldl9pbmZvKGRldi0+ZGV2LCAiYnVzIHJhdGUgPSAlbHVcbiIsIGJ1c19yYXRl KTsKPiArCj4gKyAgICAgICBncHVfcmF0ZSA9IGNsa19nZXRfcmF0ZShkZXYtPmNsa19ncHUpOwo+ ICsgICAgICAgZGV2X2luZm8oZGV2LT5kZXYsICJtb2QgcmF0ZSA9ICVsdSIsIGdwdV9yYXRlKTsK PiArCj4gKyAgICAgICBpZiAoKGVyciA9IGNsa19wcmVwYXJlX2VuYWJsZShkZXYtPmNsa19idXMp KSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArICAgICAgIGlmICgoZXJyID0gY2xr X3ByZXBhcmVfZW5hYmxlKGRldi0+Y2xrX2dwdSkpKQo+ICsgICAgICAgICAgICAgICBnb3RvIGVy cm9yX291dDA7Cj4gKwo+ICsgICAgICAgZGV2LT5yZXNldCA9IGRldm1fcmVzZXRfY29udHJvbF9n ZXRfb3B0aW9uYWwoZGV2LT5kZXYsIE5VTEwpOwo+ICsgICAgICAgaWYgKElTX0VSUihkZXYtPnJl c2V0KSkgewo+ICsgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGRldi0+cmVzZXQpOwo+ICsg ICAgICAgICAgICAgICBnb3RvIGVycm9yX291dDE7Cj4gKyAgICAgICB9IGVsc2UgaWYgKGRldi0+ cmVzZXQgIT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICBpZiAoKGVyciA9IHJlc2V0X2NvbnRy b2xfZGVhc3NlcnQoZGV2LT5yZXNldCkpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g ZXJyb3Jfb3V0MTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArCj4gK2Vy cm9yX291dDE6Cj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoZGV2LT5jbGtfZ3B1KTsK PiArZXJyb3Jfb3V0MDoKPiArICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShkZXYtPmNsa19i dXMpOwo+ICsgICAgICAgcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9j bGtfZmluaShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKPiArewo+ICsgICAgICAgaWYgKGRldi0+ cmVzZXQgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmVzZXRfY29udHJvbF9hc3NlcnQoZGV2 LT5yZXNldCk7Cj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoZGV2LT5jbGtfZ3B1KTsK PiArICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShkZXYtPmNsa19idXMpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGxpbWFfcmVndWxhdG9yX2luaXQoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYp Cj4gK3sKPiArICAgICAgIGludCByZXQ7Cj4gKyAgICAgICBkZXYtPnJlZ3VsYXRvciA9IGRldm1f cmVndWxhdG9yX2dldF9vcHRpb25hbChkZXYtPmRldiwgIm1hbGkiKTsKPiArICAgICAgIGlmIChJ U19FUlIoZGV2LT5yZWd1bGF0b3IpKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIo ZGV2LT5yZWd1bGF0b3IpOwo+ICsgICAgICAgICAgICAgICBkZXYtPnJlZ3VsYXRvciA9IE5VTEw7 Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPT0gLUVOT0RFVikKPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYtPmRldiwgImZh aWxlZCB0byBnZXQgcmVndWxhdG9yOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSByZWd1bGF0b3JfZW5hYmxl KGRldi0+cmVndWxhdG9yKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIHJlZ3VsYXRvcjogJWRcbiIs IHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfcmVndWxhdG9yX2Zp bmkoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpCj4gK3sKPiArICAgICAgIGlmIChkZXYtPnJlZ3Vs YXRvcikKPiArICAgICAgICAgICAgICAgcmVndWxhdG9yX2Rpc2FibGUoZGV2LT5yZWd1bGF0b3Ip Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxpbWFfaW5pdF9pcChzdHJ1Y3QgbGltYV9kZXZpY2Ug KmRldiwgaW50IGluZGV4KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9pcF9kZXNjICpkZXNj ID0gbGltYV9pcF9kZXNjICsgaW5kZXg7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9pcCAqaXAgPSBk ZXYtPmlwICsgaW5kZXg7Cj4gKyAgICAgICBpbnQgb2Zmc2V0ID0gZGVzYy0+b2Zmc2V0W2Rldi0+ aWRdOwo+ICsgICAgICAgYm9vbCBtdXN0ID0gZGVzYy0+bXVzdF9oYXZlW2Rldi0+aWRdOwo+ICsg ICAgICAgaW50IGVycjsKPiArCj4gKyAgICAgICBpZiAob2Zmc2V0IDwgMCkKPiArICAgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgICAgaXAtPmRldiA9IGRldjsKPiArICAgICAgIGlw LT5pZCA9IGluZGV4Owo+ICsgICAgICAgaXAtPmlvbWVtID0gZGV2LT5pb21lbSArIG9mZnNldDsK PiArICAgICAgIGlmIChkZXNjLT5pcnFfbmFtZSkgewo+ICsgICAgICAgICAgICAgICBlcnIgPSBw bGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShkZXYtPnBkZXYsIGRlc2MtPmlycV9uYW1lKTsKPiArICAg ICAgICAgICAgICAgaWYgKGVyciA8IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBv dXQ7Cj4gKyAgICAgICAgICAgICAgIGlwLT5pcnEgPSBlcnI7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgZXJyID0gZGVzYy0+aW5pdChpcCk7Cj4gKyAgICAgICBpZiAoIWVycikgewo+ICsgICAg ICAgICAgICAgICBpcC0+cHJlc2VudCA9IHRydWU7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAw Owo+ICsgICAgICAgfQo+ICsKPiArb3V0Ogo+ICsgICAgICAgcmV0dXJuIG11c3QgPyBlcnIgOiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBsaW1hX2ZpbmlfaXAoc3RydWN0IGxpbWFfZGV2aWNl ICpsZGV2LCBpbnQgaW5kZXgpCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2lwX2Rlc2MgKmRl c2MgPSBsaW1hX2lwX2Rlc2MgKyBpbmRleDsKPiArICAgICAgIHN0cnVjdCBsaW1hX2lwICppcCA9 IGxkZXYtPmlwICsgaW5kZXg7Cj4gKwo+ICsgICAgICAgaWYgKGlwLT5wcmVzZW50KQo+ICsgICAg ICAgICAgICAgICBkZXNjLT5maW5pKGlwKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW1hX2lu aXRfZ3BfcGlwZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKPiArewo+ICsgICAgICAgc3RydWN0 IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSA9IGRldi0+cGlwZSArIGxpbWFfcGlwZV9ncDsKPiArICAg ICAgIGludCBlcnI7Cj4gKwo+ICsgICAgICAgaWYgKChlcnIgPSBsaW1hX3NjaGVkX3BpcGVfaW5p dChwaXBlLCAiZ3AiKSkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gKwo+ICsgICAg ICAgcGlwZS0+bDJfY2FjaGVbcGlwZS0+bnVtX2wyX2NhY2hlKytdID0gZGV2LT5pcCArIGxpbWFf aXBfbDJfY2FjaGUwOwo+ICsgICAgICAgcGlwZS0+bW11W3BpcGUtPm51bV9tbXUrK10gPSBkZXYt PmlwICsgbGltYV9pcF9ncG1tdTsKPiArICAgICAgIHBpcGUtPnByb2Nlc3NvcltwaXBlLT5udW1f cHJvY2Vzc29yKytdID0gZGV2LT5pcCArIGxpbWFfaXBfZ3A7Cj4gKwo+ICsgICAgICAgaWYgKChl cnIgPSBsaW1hX2dwX3BpcGVfaW5pdChkZXYpKSkgewo+ICsgICAgICAgICAgICAgICBsaW1hX3Nj aGVkX3BpcGVfZmluaShwaXBlKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArICAg ICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGlt YV9maW5pX2dwX3BpcGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpCj4gK3sKPiArICAgICAgIHN0 cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVfZ3A7Cj4g Kwo+ICsgICAgICAgbGltYV9ncF9waXBlX2ZpbmkoZGV2KTsKPiArICAgICAgIGxpbWFfc2NoZWRf cGlwZV9maW5pKHBpcGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxpbWFfaW5pdF9wcF9waXBl KHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hl ZF9waXBlICpwaXBlID0gZGV2LT5waXBlICsgbGltYV9waXBlX3BwOwo+ICsgICAgICAgaW50IGVy ciwgaTsKPiArCj4gKyAgICAgICBpZiAoKGVyciA9IGxpbWFfc2NoZWRfcGlwZV9pbml0KHBpcGUs ICJwcCIpKSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArCj4gKyAgICAgICBmb3Ig KGkgPSAwOyBpIDwgTElNQV9TQ0hFRF9QSVBFX01BWF9QUk9DRVNTT1I7IGkrKykgewo+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgbGltYV9pcCAqcHAgPSBkZXYtPmlwICsgbGltYV9pcF9wcDAgKyBp Owo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9pcCAqcHBtbXUgPSBkZXYtPmlwICsgbGlt YV9pcF9wcG1tdTAgKyBpOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9pcCAqbDJfY2Fj aGU7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoZGV2LT5pZCA9PSBsaW1hX2dwdV9tYWxpNDAw KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGwyX2NhY2hlID0gZGV2LT5pcCArIGxpbWFfaXBf bDJfY2FjaGUwOwo+ICsgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgbDJfY2FjaGUgPSBkZXYtPmlwICsgbGltYV9pcF9sMl9jYWNoZTEgKyAoaSA+PiAyKTsKPiAr Cj4gKyAgICAgICAgICAgICAgIGlmIChwcC0+cHJlc2VudCAmJiBwcG1tdS0+cHJlc2VudCAmJiBs Ml9jYWNoZS0+cHJlc2VudCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIHBpcGUtPm1tdVtw aXBlLT5udW1fbW11KytdID0gcHBtbXU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcGlwZS0+ cHJvY2Vzc29yW3BpcGUtPm51bV9wcm9jZXNzb3IrK10gPSBwcDsKPiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAoIXBpcGUtPmwyX2NhY2hlW2kgPj4gMl0pCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwaXBlLT5sMl9jYWNoZVtwaXBlLT5udW1fbDJfY2FjaGUrK10gPSBsMl9j YWNoZTsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChk ZXYtPmlwW2xpbWFfaXBfYmNhc3RdLnByZXNlbnQpIHsKPiArICAgICAgICAgICAgICAgcGlwZS0+ YmNhc3RfcHJvY2Vzc29yID0gZGV2LT5pcCArIGxpbWFfaXBfcHBfYmNhc3Q7Cj4gKyAgICAgICAg ICAgICAgIHBpcGUtPmJjYXN0X21tdSA9IGRldi0+aXAgKyBsaW1hX2lwX3BwbW11X2JjYXN0Owo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmICgoZXJyID0gbGltYV9wcF9waXBlX2luaXQoZGV2 KSkpIHsKPiArICAgICAgICAgICAgICAgbGltYV9zY2hlZF9waXBlX2ZpbmkocGlwZSk7Cj4gKyAg ICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfZmluaV9wcF9waXBlKHN0cnVjdCBsaW1h X2RldmljZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBl ID0gZGV2LT5waXBlICsgbGltYV9waXBlX3BwOwo+ICsKPiArICAgICAgIGxpbWFfcHBfcGlwZV9m aW5pKGRldik7Cj4gKyAgICAgICBsaW1hX3NjaGVkX3BpcGVfZmluaShwaXBlKTsKPiArfQo+ICsK PiAraW50IGxpbWFfZGV2aWNlX2luaXQoc3RydWN0IGxpbWFfZGV2aWNlICpsZGV2KQo+ICt7Cj4g KyAgICAgICBpbnQgZXJyLCBpOwo+ICsgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwo+ ICsgICAgICAgZG1hX3NldF9jb2hlcmVudF9tYXNrKGxkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMy KSk7Cj4gKwo+ICsgICAgICAgZXJyID0gbGltYV9jbGtfaW5pdChsZGV2KTsKPiArICAgICAgIGlm IChlcnIpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihsZGV2LT5kZXYsICJjbGsgaW5pdCBm YWlsICVkXG4iLCBlcnIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIGlmICgoZXJyID0gbGltYV9yZWd1bGF0b3JfaW5pdChsZGV2KSkpIHsK PiArICAgICAgICAgICAgICAgZGV2X2VycihsZGV2LT5kZXYsICJyZWd1bGF0b3IgaW5pdCBmYWls ICVkXG4iLCBlcnIpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQwOwo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIGxkZXYtPmVtcHR5X3ZtID0gbGltYV92bV9jcmVhdGUobGRldik7Cj4g KyAgICAgICBpZiAoIWxkZXYtPmVtcHR5X3ZtKSB7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IC1F Tk9NRU07Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDE7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgbGRldi0+dmFfc3RhcnQgPSAwOwo+ICsgICAgICAgaWYgKGxkZXYtPmlkID09IGxp bWFfZ3B1X21hbGk0NTApIHsKPiArICAgICAgICAgICAgICAgbGRldi0+dmFfZW5kID0gTElNQV9W QV9SRVNFUlZFX1NUQVJUOwo+ICsgICAgICAgICAgICAgICBsZGV2LT5kbGJ1X2NwdSA9IGRtYV9h bGxvY193YygKPiArICAgICAgICAgICAgICAgICAgICAgICBsZGV2LT5kZXYsIExJTUFfUEFHRV9T SVpFLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICZsZGV2LT5kbGJ1X2RtYSwgR0ZQX0tFUk5F TCk7Cj4gKyAgICAgICAgICAgICAgIGlmICghbGRldi0+ZGxidV9jcHUpIHsKPiArICAgICAgICAg ICAgICAgICAgICAgICBlcnIgPSAtRU5PTUVNOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXJyX291dDI7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiArICAgICAgIGVs c2UKPiArICAgICAgICAgICAgICAgbGRldi0+dmFfZW5kID0gTElNQV9WQV9SRVNFUlZFX0VORDsK PiArCj4gKyAgICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UobGRldi0+cGRldiwgSU9S RVNPVVJDRV9NRU0sIDApOwo+ICsgICAgICAgbGRldi0+aW9tZW0gPSBkZXZtX2lvcmVtYXBfcmVz b3VyY2UobGRldi0+ZGV2LCByZXMpOwo+ICsgICAgICAgaWYgKElTX0VSUihsZGV2LT5pb21lbSkp IHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihsZGV2LT5kZXYsICJmYWlsIHRvIGlvcmVtYXAg aW9tZW1cbiIpOwo+ICsgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGxkZXYtPmlvbWVtKTsK PiArICAgICAgICAgICAgICAgZ290byBlcnJfb3V0MzsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbGltYV9pcF9udW07IGkrKykgewo+ICsgICAgICAgICAgICAgICBl cnIgPSBsaW1hX2luaXRfaXAobGRldiwgaSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChlcnIpCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0NDsKPiArICAgICAgIH0KPiArCj4g KyAgICAgICBlcnIgPSBsaW1hX2luaXRfZ3BfcGlwZShsZGV2KTsKPiArICAgICAgIGlmIChlcnIp Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDQ7Cj4gKwo+ICsgICAgICAgZXJyID0gbGlt YV9pbml0X3BwX3BpcGUobGRldik7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAg ICBnb3RvIGVycl9vdXQ1Owo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZXJyX291dDU6 Cj4gKyAgICAgICBsaW1hX2ZpbmlfZ3BfcGlwZShsZGV2KTsKPiArZXJyX291dDQ6Cj4gKyAgICAg ICB3aGlsZSAoLS1pID49IDApCj4gKyAgICAgICAgICAgICAgIGxpbWFfZmluaV9pcChsZGV2LCBp KTsKPiArZXJyX291dDM6Cj4gKyAgICAgICBpZiAobGRldi0+ZGxidV9jcHUpCj4gKyAgICAgICAg ICAgICAgIGRtYV9mcmVlX3djKGxkZXYtPmRldiwgTElNQV9QQUdFX1NJWkUsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxkZXYtPmRsYnVfY3B1LCBsZGV2LT5kbGJ1X2RtYSk7Cj4gK2Vy cl9vdXQyOgo+ICsgICAgICAgbGltYV92bV9wdXQobGRldi0+ZW1wdHlfdm0pOwo+ICtlcnJfb3V0 MToKPiArICAgICAgIGxpbWFfcmVndWxhdG9yX2ZpbmkobGRldik7Cj4gK2Vycl9vdXQwOgo+ICsg ICAgICAgbGltYV9jbGtfZmluaShsZGV2KTsKPiArICAgICAgIHJldHVybiBlcnI7Cj4gK30KPiAr Cj4gK3ZvaWQgbGltYV9kZXZpY2VfZmluaShzdHJ1Y3QgbGltYV9kZXZpY2UgKmxkZXYpCj4gK3sK PiArICAgICAgIGludCBpOwo+ICsKPiArICAgICAgIGxpbWFfZmluaV9wcF9waXBlKGxkZXYpOwo+ ICsgICAgICAgbGltYV9maW5pX2dwX3BpcGUobGRldik7Cj4gKwo+ICsgICAgICAgZm9yIChpID0g bGltYV9pcF9udW0gLSAxOyBpID49IDA7IGktLSkKPiArICAgICAgICAgICAgICAgbGltYV9maW5p X2lwKGxkZXYsIGkpOwo+ICsKPiArICAgICAgIGlmIChsZGV2LT5kbGJ1X2NwdSkKPiArICAgICAg ICAgICAgICAgZG1hX2ZyZWVfd2MobGRldi0+ZGV2LCBMSU1BX1BBR0VfU0laRSwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGRldi0+ZGxidV9jcHUsIGxkZXYtPmRsYnVfZG1hKTsKPiAr Cj4gKyAgICAgICBsaW1hX3ZtX3B1dChsZGV2LT5lbXB0eV92bSk7Cj4gKwo+ICsgICAgICAgbGlt YV9yZWd1bGF0b3JfZmluaShsZGV2KTsKPiArCj4gKyAgICAgICBsaW1hX2Nsa19maW5pKGxkZXYp Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGV2aWNlLmgg Yi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjQxNDk5ZjI4YWUxMwo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5oCj4gQEAgLTAsMCArMSwxMjkg QEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUICovCj4gKy8q IENvcHlyaWdodCAyMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lm bmRlZiBfX0xJTUFfREVWSUNFX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9ERVZJQ0VfSF9fCj4gKwo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+ Cj4gKwo+ICsjaW5jbHVkZSAibGltYV9zY2hlZC5oIgo+ICsKPiArZW51bSBsaW1hX2dwdV9pZCB7 Cj4gKyAgICAgICBsaW1hX2dwdV9tYWxpNDAwID0gMCwKPiArICAgICAgIGxpbWFfZ3B1X21hbGk0 NTAsCj4gKyAgICAgICBsaW1hX2dwdV9udW0sCj4gK307Cj4gKwo+ICtlbnVtIGxpbWFfaXBfaWQg ewo+ICsgICAgICAgbGltYV9pcF9wbXUsCj4gKyAgICAgICBsaW1hX2lwX2dwbW11LAo+ICsgICAg ICAgbGltYV9pcF9wcG1tdTAsCj4gKyAgICAgICBsaW1hX2lwX3BwbW11MSwKPiArICAgICAgIGxp bWFfaXBfcHBtbXUyLAo+ICsgICAgICAgbGltYV9pcF9wcG1tdTMsCj4gKyAgICAgICBsaW1hX2lw X3BwbW11NCwKPiArICAgICAgIGxpbWFfaXBfcHBtbXU1LAo+ICsgICAgICAgbGltYV9pcF9wcG1t dTYsCj4gKyAgICAgICBsaW1hX2lwX3BwbW11NywKPiArICAgICAgIGxpbWFfaXBfZ3AsCj4gKyAg ICAgICBsaW1hX2lwX3BwMCwKPiArICAgICAgIGxpbWFfaXBfcHAxLAo+ICsgICAgICAgbGltYV9p cF9wcDIsCj4gKyAgICAgICBsaW1hX2lwX3BwMywKPiArICAgICAgIGxpbWFfaXBfcHA0LAo+ICsg ICAgICAgbGltYV9pcF9wcDUsCj4gKyAgICAgICBsaW1hX2lwX3BwNiwKPiArICAgICAgIGxpbWFf aXBfcHA3LAo+ICsgICAgICAgbGltYV9pcF9sMl9jYWNoZTAsCj4gKyAgICAgICBsaW1hX2lwX2wy X2NhY2hlMSwKPiArICAgICAgIGxpbWFfaXBfbDJfY2FjaGUyLAo+ICsgICAgICAgbGltYV9pcF9k bGJ1LAo+ICsgICAgICAgbGltYV9pcF9iY2FzdCwKPiArICAgICAgIGxpbWFfaXBfcHBfYmNhc3Qs Cj4gKyAgICAgICBsaW1hX2lwX3BwbW11X2JjYXN0LAo+ICsgICAgICAgbGltYV9pcF9udW0sCj4g K307Cj4gKwo+ICtzdHJ1Y3QgbGltYV9kZXZpY2U7Cj4gKwo+ICtzdHJ1Y3QgbGltYV9pcCB7Cj4g KyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldjsKPiArICAgICAgIGVudW0gbGltYV9pcF9p ZCBpZDsKPiArICAgICAgIGJvb2wgcHJlc2VudDsKPiArCj4gKyAgICAgICB2b2lkIF9faW9tZW0g KmlvbWVtOwo+ICsgICAgICAgaW50IGlycTsKPiArCj4gKyAgICAgICB1bmlvbiB7Cj4gKyAgICAg ICAgICAgICAgIC8qIGdwL3BwICovCj4gKyAgICAgICAgICAgICAgIGJvb2wgYXN5bmNfcmVzZXQ7 Cj4gKyAgICAgICAgICAgICAgIC8qIGwyIGNhY2hlICovCj4gKyAgICAgICAgICAgICAgIHNwaW5s b2NrX3QgbG9jazsKPiArICAgICAgIH0gZGF0YTsKPiArfTsKPiArCj4gK2VudW0gbGltYV9waXBl X2lkIHsKPiArICAgICAgIGxpbWFfcGlwZV9ncCwKPiArICAgICAgIGxpbWFfcGlwZV9wcCwKPiAr ICAgICAgIGxpbWFfcGlwZV9udW0sCj4gK307Cj4gKwo+ICtzdHJ1Y3QgbGltYV9kZXZpY2Ugewo+ ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2Ug KmRkZXY7Cj4gKyAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Owo+ICsKPiArICAg ICAgIGVudW0gbGltYV9ncHVfaWQgaWQ7Cj4gKyAgICAgICBpbnQgbnVtX3BwOwo+ICsKPiArICAg ICAgIHZvaWQgX19pb21lbSAqaW9tZW07Cj4gKyAgICAgICBzdHJ1Y3QgY2xrICpjbGtfYnVzOwo+ ICsgICAgICAgc3RydWN0IGNsayAqY2xrX2dwdTsKPiArICAgICAgIHN0cnVjdCByZXNldF9jb250 cm9sICpyZXNldDsKPiArICAgICAgIHN0cnVjdCByZWd1bGF0b3IgKnJlZ3VsYXRvcjsKPiArCj4g KyAgICAgICBzdHJ1Y3QgbGltYV9pcCBpcFtsaW1hX2lwX251bV07Cj4gKyAgICAgICBzdHJ1Y3Qg bGltYV9zY2hlZF9waXBlIHBpcGVbbGltYV9waXBlX251bV07Cj4gKwo+ICsgICAgICAgc3RydWN0 IGxpbWFfdm0gKmVtcHR5X3ZtOwo+ICsgICAgICAgdWludDY0X3QgdmFfc3RhcnQ7Cj4gKyAgICAg ICB1aW50NjRfdCB2YV9lbmQ7Cj4gKwo+ICsgICAgICAgdTMyICpkbGJ1X2NwdTsKPiArICAgICAg IGRtYV9hZGRyX3QgZGxidV9kbWE7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBs aW1hX2RldmljZSAqCj4gK3RvX2xpbWFfZGV2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sK PiArICAgICAgIHJldHVybiBkZXYtPmRldl9wcml2YXRlOwo+ICt9Cj4gKwo+ICtpbnQgbGltYV9k ZXZpY2VfaW5pdChzdHJ1Y3QgbGltYV9kZXZpY2UgKmxkZXYpOwo+ICt2b2lkIGxpbWFfZGV2aWNl X2Zpbmkoc3RydWN0IGxpbWFfZGV2aWNlICpsZGV2KTsKPiArCj4gK2NvbnN0IGNoYXIgKmxpbWFf aXBfbmFtZShzdHJ1Y3QgbGltYV9pcCAqaXApOwo+ICsKPiArdHlwZWRlZiBpbnQgKCpsaW1hX3Bv bGxfZnVuY190KShzdHJ1Y3QgbGltYV9pcCAqKTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGxp bWFfcG9sbF90aW1lb3V0KHN0cnVjdCBsaW1hX2lwICppcCwgbGltYV9wb2xsX2Z1bmNfdCBmdW5j LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzbGVlcF91cywgaW50 IHRpbWVvdXRfdXMpCj4gK3sKPiArICAgICAgIGt0aW1lX3QgdGltZW91dCA9IGt0aW1lX2FkZF91 cyhrdGltZV9nZXQoKSwgdGltZW91dF91cyk7Cj4gKwo+ICsgICAgICAgbWlnaHRfc2xlZXBfaWYo c2xlZXBfdXMpOwo+ICsgICAgICAgd2hpbGUgKDEpIHsKPiArICAgICAgICAgICAgICAgaWYgKGZ1 bmMoaXApKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAg ICAgICAgICAgaWYgKHRpbWVvdXRfdXMgJiYga3RpbWVfY29tcGFyZShrdGltZV9nZXQoKSwgdGlt ZW91dCkgPiAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVRJTUVET1VUOwo+ ICsKPiArICAgICAgICAgICAgICAgaWYgKHNsZWVwX3VzKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHVzbGVlcF9yYW5nZSgoc2xlZXBfdXMgPj4gMikgKyAxLCBzbGVlcF91cyk7Cj4gKyAgICAg ICB9Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGxidS5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEv bGltYV9kbGJ1LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4u Yjc3Mzk3MTJmMjM1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1h L2xpbWFfZGxidS5jCj4gQEAgLTAsMCArMSw1NiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMCBPUiBNSVQKPiArLyogQ29weXJpZ2h0IDIwMTggUWlhbmcgWXUgPHl1cTgy NUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUg PGxpbnV4L2RldmljZS5oPgo+ICsKPiArI2luY2x1ZGUgImxpbWFfZGV2aWNlLmgiCj4gKyNpbmNs dWRlICJsaW1hX2RsYnUuaCIKPiArI2luY2x1ZGUgImxpbWFfdm0uaCIKPiArI2luY2x1ZGUgImxp bWFfcmVncy5oIgo+ICsKPiArI2RlZmluZSBkbGJ1X3dyaXRlKHJlZywgZGF0YSkgd3JpdGVsKGRh dGEsIGlwLT5pb21lbSArIHJlZykKPiArI2RlZmluZSBkbGJ1X3JlYWQocmVnKSByZWFkbChpcC0+ aW9tZW0gKyByZWcpCj4gKwo+ICt2b2lkIGxpbWFfZGxidV9lbmFibGUoc3RydWN0IGxpbWFfZGV2 aWNlICpkZXYsIGludCBudW1fcHApCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX3NjaGVkX3Bp cGUgKnBpcGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVfcHA7Cj4gKyAgICAgICBzdHJ1Y3QgbGlt YV9pcCAqaXAgPSBkZXYtPmlwICsgbGltYV9pcF9kbGJ1Owo+ICsgICAgICAgaW50IGksIG1hc2sg PSAwOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcHA7IGkrKykgewo+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgbGltYV9pcCAqcHAgPSBwaXBlLT5wcm9jZXNzb3JbaV07Cj4gKyAg ICAgICAgICAgICAgIG1hc2sgfD0gMSA8PCAocHAtPmlkIC0gbGltYV9pcF9wcDApOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIGRsYnVfd3JpdGUoTElNQV9ETEJVX1BQX0VOQUJMRV9NQVNLLCBt YXNrKTsKPiArfQo+ICsKPiArdm9pZCBsaW1hX2RsYnVfZGlzYWJsZShzdHJ1Y3QgbGltYV9kZXZp Y2UgKmRldikKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfaXAgKmlwID0gZGV2LT5pcCArIGxp bWFfaXBfZGxidTsKPiArICAgICAgIGRsYnVfd3JpdGUoTElNQV9ETEJVX1BQX0VOQUJMRV9NQVNL LCAwKTsKPiArfQo+ICsKPiArdm9pZCBsaW1hX2RsYnVfc2V0X3JlZyhzdHJ1Y3QgbGltYV9pcCAq aXAsIHUzMiAqcmVnKQo+ICt7Cj4gKyAgICAgICBkbGJ1X3dyaXRlKExJTUFfRExCVV9UTExJU1Rf VkJBU0VBRERSLCByZWdbMF0pOwo+ICsgICAgICAgZGxidV93cml0ZShMSU1BX0RMQlVfRkJfRElN LCByZWdbMV0pOwo+ICsgICAgICAgZGxidV93cml0ZShMSU1BX0RMQlVfVExMSVNUX0NPTkYsIHJl Z1syXSk7Cj4gKyAgICAgICBkbGJ1X3dyaXRlKExJTUFfRExCVV9TVEFSVF9USUxFX1BPUywgcmVn WzNdKTsKPiArfQo+ICsKPiAraW50IGxpbWFfZGxidV9pbml0KHN0cnVjdCBsaW1hX2lwICppcCkK PiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXYgPSBpcC0+ZGV2Owo+ICsKPiAr ICAgICAgIGRsYnVfd3JpdGUoTElNQV9ETEJVX01BU1RFUl9UTExJU1RfUEhZU19BRERSLCBkZXYt PmRsYnVfZG1hIHwgMSk7Cj4gKyAgICAgICBkbGJ1X3dyaXRlKExJTUFfRExCVV9NQVNURVJfVExM SVNUX1ZBRERSLCBMSU1BX1ZBX1JFU0VSVkVfRExCVSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3ZvaWQgbGltYV9kbGJ1X2Zpbmkoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7 Cj4gKwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGxidS5o IGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9kbGJ1LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjBjYmEzODdjZjMwCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGxidS5oCj4gQEAgLTAsMCArMSwxOCBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQgKi8KPiArLyogQ29w eXJpZ2h0IDIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaWZuZGVm IF9fTElNQV9ETEJVX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9ETEJVX0hfXwo+ICsKPiArc3RydWN0 IGxpbWFfaXA7Cj4gK3N0cnVjdCBsaW1hX2RldmljZTsKPiArCj4gK3ZvaWQgbGltYV9kbGJ1X2Vu YWJsZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgaW50IG51bV9wcCk7Cj4gK3ZvaWQgbGltYV9k bGJ1X2Rpc2FibGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpOwo+ICsKPiArdm9pZCBsaW1hX2Rs YnVfc2V0X3JlZyhzdHJ1Y3QgbGltYV9pcCAqaXAsIHUzMiAqcmVnKTsKPiArCj4gK2ludCBsaW1h X2RsYnVfaW5pdChzdHJ1Y3QgbGltYV9pcCAqaXApOwo+ICt2b2lkIGxpbWFfZGxidV9maW5pKHN0 cnVjdCBsaW1hX2lwICppcCk7Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZHJ2LmMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTkzYmNlMTZlZTEw Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZHJ2LmMK PiBAQCAtMCwwICsxLDM1MyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCBPUiBNSVQKPiArLyogQ29weXJpZ2h0IDIwMTctMjAxOCBRaWFuZyBZdSA8eXVxODI1QGdtYWls LmNvbT4gKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxp bnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9sb2cyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX3ByaW1lLmg+Cj4gKyNpbmNsdWRlIDxkcm0vbGltYV9kcm0uaD4KPiArCj4gKyNp bmNsdWRlICJsaW1hX2Rydi5oIgo+ICsjaW5jbHVkZSAibGltYV9nZW0uaCIKPiArI2luY2x1ZGUg ImxpbWFfZ2VtX3ByaW1lLmgiCj4gKyNpbmNsdWRlICJsaW1hX3ZtLmgiCj4gKwo+ICtpbnQgbGlt YV9zY2hlZF90aW1lb3V0X21zID0gMDsKPiAraW50IGxpbWFfc2NoZWRfbWF4X3Rhc2tzID0gMzI7 Cj4gKwo+ICtNT0RVTEVfUEFSTV9ERVNDKHNjaGVkX3RpbWVvdXRfbXMsICJ0YXNrIHJ1biB0aW1l b3V0IGluIG1zICgwID0gbm8gdGltZW91dCAoZGVmYXVsdCkpIik7Cj4gK21vZHVsZV9wYXJhbV9u YW1lZChzY2hlZF90aW1lb3V0X21zLCBsaW1hX3NjaGVkX3RpbWVvdXRfbXMsIGludCwgMDQ0NCk7 Cj4gKwo+ICtNT0RVTEVfUEFSTV9ERVNDKHNjaGVkX21heF90YXNrcywgIm1heCBxdWV1ZWQgdGFz ayBudW0gaW4gYSBjb250ZXh0IChkZWZhdWx0IDMyKSIpOwo+ICttb2R1bGVfcGFyYW1fbmFtZWQo c2NoZWRfbWF4X3Rhc2tzLCBsaW1hX3NjaGVkX21heF90YXNrcywgaW50LCAwNDQ0KTsKPiArCj4g K3N0YXRpYyBpbnQgbGltYV9pb2N0bF9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewoKRm9yIHBhbmZyb3N0LCB3ZSBnZW5l cmFsaXplZCB0aGlzIHRvICJnZXQgcGFyYW0iIGxpa2Ugb3RoZXIgZHJpdmVycy4KTG9va3MgbGlr ZSB5b3UgY2FuIG9ubHkgYWRkIDcgbW9yZSBpdGVtcy4KCldoYXQgYWJvdXQgR1BVIHJldmlzaW9u cz8KCj4gKyAgICAgICBzdHJ1Y3QgZHJtX2xpbWFfaW5mbyAqaW5mbyA9IGRhdGE7Cj4gKyAgICAg ICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmxkZXYgPSB0b19saW1hX2RldihkZXYpOwo+ICsKPiArICAg ICAgIHN3aXRjaCAobGRldi0+aWQpIHsKPiArICAgICAgIGNhc2UgbGltYV9ncHVfbWFsaTQwMDoK PiArICAgICAgICAgICAgICAgaW5mby0+Z3B1X2lkID0gTElNQV9JTkZPX0dQVV9NQUxJNDAwOwoK UGVyc29uYWxseSwgSSdkIHJldHVybiB0aGUgZWl0aGVyIHRoZSByYXcgbW9kZWwgb3Igc29tZXRo aW5nIGxpa2UKJzQwMCcgcmF0aGVyIHRoYW4gbWFraW5nIHVwIHNvbWUgZW51bWVyYXRpb24uCgo+ ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgbGltYV9ncHVfbWFsaTQ1MDoK PiArICAgICAgICAgICAgICAgaW5mby0+Z3B1X2lkID0gTElNQV9JTkZPX0dQVV9NQUxJNDUwOwo+ ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRU5PREVWOwo+ICsgICAgICAgfQo+ICsgICAgICAgaW5mby0+bnVtX3BwID0g bGRldi0+cGlwZVtsaW1hX3BpcGVfcHBdLm51bV9wcm9jZXNzb3I7Cj4gKyAgICAgICBpbmZvLT52 YWxpZCA9IDA7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW1h X2lvY3RsX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3Ry dWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2xpbWFfZ2VtX2Ny ZWF0ZSAqYXJncyA9IGRhdGE7Cj4gKwo+ICsgICAgICAgaWYgKGFyZ3MtPmZsYWdzKQo+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICBpZiAoYXJncy0+c2l6ZSA9 PSAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICByZXR1 cm4gbGltYV9nZW1fY3JlYXRlX2hhbmRsZShkZXYsIGZpbGUsIGFyZ3MtPnNpemUsIGFyZ3MtPmZs YWdzLCAmYXJncy0+aGFuZGxlKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW1hX2lvY3RsX2dl bV9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKPiArewo+ICsgICAgICAgc3RydWN0IGRybV9saW1hX2dlbV9pbmZvICphcmdzID0g ZGF0YTsKPiArCj4gKyAgICAgICByZXR1cm4gbGltYV9nZW1fZ2V0X2luZm8oZmlsZSwgYXJncy0+ aGFuZGxlLCAmYXJncy0+dmEsICZhcmdzLT5vZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGxpbWFfaW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fbGltYV9n ZW1fc3VibWl0ICphcmdzID0gZGF0YTsKPiArICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqbGRl diA9IHRvX2xpbWFfZGV2KGRldik7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kcm1fcHJpdiAqcHJp diA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICsgICAgICAgc3RydWN0IGRybV9saW1hX2dlbV9zdWJt aXRfYm8gKmJvczsKPiArICAgICAgIHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGU7Cj4gKyAg ICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrOwo+ICsgICAgICAgc3RydWN0IGxpbWFf Y3R4ICpjdHg7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zdWJtaXQgc3VibWl0ID0gezB9Owo+ICsg ICAgICAgc2l6ZV90IHNpemU7Cj4gKyAgICAgICBpbnQgZXJyID0gMDsKPiArCj4gKyAgICAgICBp ZiAoYXJncy0+cGlwZSA+PSBsaW1hX3BpcGVfbnVtIHx8IGFyZ3MtPm5yX2JvcyA9PSAwKQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICBpZiAoYXJncy0+Zmxh Z3MgJiB+KExJTUFfU1VCTUlUX0ZMQUdfRVhQTElDSVRfRkVOQ0UpKQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICBwaXBlID0gbGRldi0+cGlwZSArIGFyZ3Mt PnBpcGU7Cj4gKyAgICAgICBpZiAoYXJncy0+ZnJhbWVfc2l6ZSAhPSBwaXBlLT5mcmFtZV9zaXpl KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICBib3MgPSBr dmNhbGxvYyhhcmdzLT5ucl9ib3MsIHNpemVvZigqc3VibWl0LmJvcykgKyBzaXplb2YoKnN1Ym1p dC5sYm9zKSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBpZiAoIWJvcykKPiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgICAgc2l6ZSA9IGFyZ3MtPm5yX2JvcyAqIHNp emVvZigqc3VibWl0LmJvcyk7Cj4gKyAgICAgICBpZiAoY29weV9mcm9tX3VzZXIoYm9zLCB1NjRf dG9fdXNlcl9wdHIoYXJncy0+Ym9zKSwgc2l6ZSkpIHsKPiArICAgICAgICAgICAgICAgZXJyID0g LUVGQVVMVDsKPiArICAgICAgICAgICAgICAgZ290byBvdXQwOwo+ICsgICAgICAgfQo+ICsKPiAr ICAgICAgIHRhc2sgPSBrbWVtX2NhY2hlX3phbGxvYyhwaXBlLT50YXNrX3NsYWIsIEdGUF9LRVJO RUwpOwo+ICsgICAgICAgaWYgKCF0YXNrKSB7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IC1FTk9N RU07Cj4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0MDsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICB0YXNrLT5mcmFtZSA9IHRhc2sgKyAxOwo+ICsgICAgICAgaWYgKGNvcHlfZnJvbV91c2VyKHRh c2stPmZyYW1lLCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZnJhbWUpLCBhcmdzLT5mcmFtZV9zaXpl KSkgewo+ICsgICAgICAgICAgICAgICBlcnIgPSAtRUZBVUxUOwo+ICsgICAgICAgICAgICAgICBn b3RvIG91dDE7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZXJyID0gcGlwZS0+dGFza192YWxp ZGF0ZShwaXBlLCB0YXNrKTsKPiArICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAgIGdv dG8gb3V0MTsKPiArCj4gKyAgICAgICBjdHggPSBsaW1hX2N0eF9nZXQoJnByaXYtPmN0eF9tZ3Is IGFyZ3MtPmN0eCk7Cj4gKyAgICAgICBpZiAoIWN0eCkgewo+ICsgICAgICAgICAgICAgICBlcnIg PSAtRU5PRU5UOwo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDE7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgc3VibWl0LnBpcGUgPSBhcmdzLT5waXBlOwo+ICsgICAgICAgc3VibWl0LmJvcyA9 IGJvczsKPiArICAgICAgIHN1Ym1pdC5sYm9zID0gKHZvaWQgKilib3MgKyBzaXplOwo+ICsgICAg ICAgc3VibWl0Lm5yX2JvcyA9IGFyZ3MtPm5yX2JvczsKPiArICAgICAgIHN1Ym1pdC50YXNrID0g dGFzazsKPiArICAgICAgIHN1Ym1pdC5jdHggPSBjdHg7Cj4gKyAgICAgICBzdWJtaXQuZmxhZ3Mg PSBhcmdzLT5mbGFnczsKPiArICAgICAgIHN1Ym1pdC5pbl9zeW5jWzBdID0gYXJncy0+aW5fc3lu Y1swXTsKPiArICAgICAgIHN1Ym1pdC5pbl9zeW5jWzFdID0gYXJncy0+aW5fc3luY1sxXTsKPiAr ICAgICAgIHN1Ym1pdC5vdXRfc3luYyA9IGFyZ3MtPm91dF9zeW5jOwo+ICsKPiArICAgICAgIGVy ciA9IGxpbWFfZ2VtX3N1Ym1pdChmaWxlLCAmc3VibWl0KTsKPiArCj4gKyAgICAgICBsaW1hX2N0 eF9wdXQoY3R4KTsKPiArb3V0MToKPiArICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAg IGttZW1fY2FjaGVfZnJlZShwaXBlLT50YXNrX3NsYWIsIHRhc2spOwo+ICtvdXQwOgo+ICsgICAg ICAga3ZmcmVlKGJvcyk7Cj4gKyAgICAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGxpbWFfaW9jdGxfZ2VtX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2xpbWFf Z2VtX3dhaXQgKmFyZ3MgPSBkYXRhOwo+ICsKPiArICAgICAgIGlmIChhcmdzLT5vcCAmIH4oTElN QV9HRU1fV0FJVF9SRUFEfExJTUFfR0VNX1dBSVRfV1JJVEUpKQo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICByZXR1cm4gbGltYV9nZW1fd2FpdChmaWxlLCBh cmdzLT5oYW5kbGUsIGFyZ3MtPm9wLCBhcmdzLT50aW1lb3V0X25zKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBsaW1hX2lvY3RsX2N0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fbGltYV9j dHggKmFyZ3MgPSBkYXRhOwo+ICsgICAgICAgc3RydWN0IGxpbWFfZHJtX3ByaXYgKnByaXYgPSBm aWxlLT5kcml2ZXJfcHJpdjsKPiArICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqbGRldiA9IHRv X2xpbWFfZGV2KGRldik7Cj4gKwo+ICsgICAgICAgaWYgKGFyZ3MtPm9wID09IExJTUFfQ1RYX09Q X0NSRUFURSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIGxpbWFfY3R4X2NyZWF0ZShsZGV2LCAm cHJpdi0+Y3R4X21nciwgJmFyZ3MtPmlkKTsKPiArICAgICAgIGVsc2UgaWYgKGFyZ3MtPm9wID09 IExJTUFfQ1RYX09QX0ZSRUUpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBsaW1hX2N0eF9mcmVl KCZwcml2LT5jdHhfbWdyLCBhcmdzLT5pZCk7CgpXYXNuJ3QgaXQgc3VnZ2VzdGVkIGluIHRoZSBw cmlvciB2ZXJzaW9uIHRvIG5vdCBtdXggdGhlc2U/IE1ha2UgdGhlbSAyIGlvY3Rscy4KCj4gKwo+ ICsgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGltYV9kcm1f ZHJpdmVyX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxl KQo+ICt7Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsgICAgICAgc3RydWN0IGxpbWFfZHJtX3ByaXYg KnByaXY7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmxkZXYgPSB0b19saW1hX2Rldihk ZXYpOwo+ICsKPiArICAgICAgIHByaXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJO RUwpOwo+ICsgICAgICAgaWYgKCFwcml2KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPiArCj4gKyAgICAgICBwcml2LT52bSA9IGxpbWFfdm1fY3JlYXRlKGxkZXYpOwo+ICsgICAg ICAgaWYgKCFwcml2LT52bSkgewo+ICsgICAgICAgICAgICAgICBlcnIgPSAtRU5PTUVNOwo+ICsg ICAgICAgICAgICAgICBnb3RvIGVycl9vdXQwOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGxp bWFfY3R4X21ncl9pbml0KCZwcml2LT5jdHhfbWdyKTsKPiArCj4gKyAgICAgICBmaWxlLT5kcml2 ZXJfcHJpdiA9IHByaXY7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArCj4gK2Vycl9vdXQwOgo+ICsg ICAgICAga2ZyZWUocHJpdik7Cj4gKyAgICAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBsaW1hX2RybV9kcml2ZXJfcG9zdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfZHJtX3By aXYgKnByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiArCj4gKyAgICAgICBsaW1hX2N0eF9tZ3Jf ZmluaSgmcHJpdi0+Y3R4X21ncik7Cj4gKyAgICAgICBsaW1hX3ZtX3B1dChwcml2LT52bSk7Cj4g KyAgICAgICBrZnJlZShwcml2KTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f aW9jdGxfZGVzYyBsaW1hX2RybV9kcml2ZXJfaW9jdGxzW10gPSB7Cj4gKyAgICAgICBEUk1fSU9D VExfREVGX0RSVihMSU1BX0lORk8sIGxpbWFfaW9jdGxfaW5mbywgRFJNX0FVVEh8RFJNX1JFTkRF Ul9BTExPVyksCj4gKyAgICAgICBEUk1fSU9DVExfREVGX0RSVihMSU1BX0dFTV9DUkVBVEUsIGxp bWFfaW9jdGxfZ2VtX2NyZWF0ZSwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4gKyAgICAg ICBEUk1fSU9DVExfREVGX0RSVihMSU1BX0dFTV9JTkZPLCBsaW1hX2lvY3RsX2dlbV9pbmZvLCBE Uk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKPiArICAgICAgIERSTV9JT0NUTF9ERUZfRFJWKExJ TUFfR0VNX1NVQk1JVCwgbGltYV9pb2N0bF9nZW1fc3VibWl0LCBEUk1fQVVUSHxEUk1fUkVOREVS X0FMTE9XKSwKPiArICAgICAgIERSTV9JT0NUTF9ERUZfRFJWKExJTUFfR0VNX1dBSVQsIGxpbWFf aW9jdGxfZ2VtX3dhaXQsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+ICsgICAgICAgRFJN X0lPQ1RMX0RFRl9EUlYoTElNQV9DVFgsIGxpbWFfaW9jdGxfY3R4LCBEUk1fQVVUSHxEUk1fUkVO REVSX0FMTE9XKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIGxpbWFfZHJtX2RyaXZlcl9mb3BzID0gewo+ICsgICAgICAgLm93bmVyICAgICAgICAgICAg ICA9IFRISVNfTU9EVUxFLAo+ICsgICAgICAgLm9wZW4gICAgICAgICAgICAgICA9IGRybV9vcGVu LAo+ICsgICAgICAgLnJlbGVhc2UgICAgICAgICAgICA9IGRybV9yZWxlYXNlLAo+ICsgICAgICAg LnVubG9ja2VkX2lvY3RsICAgICA9IGRybV9pb2N0bCwKPiArI2lmZGVmIENPTkZJR19DT01QQVQK PiArICAgICAgIC5jb21wYXRfaW9jdGwgICAgICAgPSBkcm1fY29tcGF0X2lvY3RsLAo+ICsjZW5k aWYKPiArICAgICAgIC5tbWFwICAgICAgICAgICAgICAgPSBsaW1hX2dlbV9tbWFwLAo+ICt9Owo+ ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGxpbWFfZHJtX2RyaXZlciA9IHsKPiArICAg ICAgIC5kcml2ZXJfZmVhdHVyZXMgICAgPSBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0dFTSB8IERS SVZFUl9QUklNRSB8IERSSVZFUl9TWU5DT0JKLAo+ICsgICAgICAgLm9wZW4gICAgICAgICAgICAg ICA9IGxpbWFfZHJtX2RyaXZlcl9vcGVuLAo+ICsgICAgICAgLnBvc3RjbG9zZSAgICAgICAgICA9 IGxpbWFfZHJtX2RyaXZlcl9wb3N0Y2xvc2UsCj4gKyAgICAgICAuaW9jdGxzICAgICAgICAgICAg ID0gbGltYV9kcm1fZHJpdmVyX2lvY3RscywKPiArICAgICAgIC5udW1faW9jdGxzICAgICAgICAg PSBBUlJBWV9TSVpFKGxpbWFfZHJtX2RyaXZlcl9pb2N0bHMpLAo+ICsgICAgICAgLmZvcHMgICAg ICAgICAgICAgICA9ICZsaW1hX2RybV9kcml2ZXJfZm9wcywKPiArICAgICAgIC5nZW1fZnJlZV9v YmplY3RfdW5sb2NrZWQgPSBsaW1hX2dlbV9mcmVlX29iamVjdCwKPiArICAgICAgIC5nZW1fb3Bl bl9vYmplY3QgICAgPSBsaW1hX2dlbV9vYmplY3Rfb3BlbiwKPiArICAgICAgIC5nZW1fY2xvc2Vf b2JqZWN0ICAgPSBsaW1hX2dlbV9vYmplY3RfY2xvc2UsCj4gKyAgICAgICAuZ2VtX3ZtX29wcyAg ICAgICAgID0gJmxpbWFfZ2VtX3ZtX29wcywKPiArICAgICAgIC5uYW1lICAgICAgICAgICAgICAg PSAibGltYSIsCj4gKyAgICAgICAuZGVzYyAgICAgICAgICAgICAgID0gImxpbWEgRFJNIiwKPiAr ICAgICAgIC5kYXRlICAgICAgICAgICAgICAgPSAiMjAxOTAyMTciLAo+ICsgICAgICAgLm1ham9y ICAgICAgICAgICAgICA9IDEsCj4gKyAgICAgICAubWlub3IgICAgICAgICAgICAgID0gMCwKPiAr ICAgICAgIC5wYXRjaGxldmVsICAgICAgICAgPSAwLAo+ICsKPiArICAgICAgIC5wcmltZV9mZF90 b19oYW5kbGUgPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwKPiArICAgICAgIC5nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlID0gbGltYV9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAo+ICsg ICAgICAgLnByaW1lX2hhbmRsZV90b19mZCA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAo+ ICsgICAgICAgLmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSBsaW1hX2dlbV9wcmltZV9nZXRfc2df dGFibGUsCj4gKyAgICAgICAuZ2VtX3ByaW1lX21tYXAgPSBsaW1hX2dlbV9wcmltZV9tbWFwLAo+ ICt9Owo+ICsKPiArc3RhdGljIGludCBsaW1hX3BkZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpsZGV2Owo+ICsg ICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXY7Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsKPiAr ICAgICAgIGxkZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpsZGV2KSwgR0ZQ X0tFUk5FTCk7Cj4gKyAgICAgICBpZiAoIWxkZXYpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ICsKPiArICAgICAgIGxkZXYtPnBkZXYgPSBwZGV2Owo+ICsgICAgICAgbGRldi0+ ZGV2ID0gJnBkZXYtPmRldjsKPiArICAgICAgIGxkZXYtPmlkID0gKGVudW0gbGltYV9ncHVfaWQp b2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpOwo+ICsKPiArICAgICAgIHBsYXRm b3JtX3NldF9kcnZkYXRhKHBkZXYsIGxkZXYpOwo+ICsKPiArICAgICAgIC8qIEFsbG9jYXRlIGFu ZCBpbml0aWFsaXplIHRoZSBEUk0gZGV2aWNlLiAqLwo+ICsgICAgICAgZGRldiA9IGRybV9kZXZf YWxsb2MoJmxpbWFfZHJtX2RyaXZlciwgJnBkZXYtPmRldik7Cj4gKyAgICAgICBpZiAoSVNfRVJS KGRkZXYpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihkZGV2KTsKPiArCj4gKyAg ICAgICBkZGV2LT5kZXZfcHJpdmF0ZSA9IGxkZXY7Cj4gKyAgICAgICBsZGV2LT5kZGV2ID0gZGRl djsKPiArCj4gKyAgICAgICBlcnIgPSBsaW1hX2RldmljZV9pbml0KGxkZXYpOwo+ICsgICAgICAg aWYgKGVycikgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYXRhbCBl cnJvciBkdXJpbmcgR1BVIGluaXRcbiIpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQw Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBSZWdpc3RlciB0aGUg RFJNIGRldmljZSB3aXRoIHRoZSBjb3JlIGFuZCB0aGUgY29ubmVjdG9ycyB3aXRoCj4gKyAgICAg ICAgKiBzeXNmcy4KPiArICAgICAgICAqLwo+ICsgICAgICAgZXJyID0gZHJtX2Rldl9yZWdpc3Rl cihkZGV2LCAwKTsKPiArICAgICAgIGlmIChlcnIgPCAwKQo+ICsgICAgICAgICAgICAgICBnb3Rv IGVycl9vdXQxOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZXJyX291dDE6Cj4gKyAg ICAgICBsaW1hX2RldmljZV9maW5pKGxkZXYpOwo+ICtlcnJfb3V0MDoKPiArICAgICAgIGRybV9k ZXZfcHV0KGRkZXYpOwo+ICsgICAgICAgcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBsaW1hX3BkZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiAr ICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqbGRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBk ZXYpOwo+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBsZGV2LT5kZGV2Owo+ICsK PiArICAgICAgIGRybV9kZXZfdW5yZWdpc3RlcihkZGV2KTsKPiArICAgICAgIGxpbWFfZGV2aWNl X2ZpbmkobGRldik7Cj4gKyAgICAgICBkcm1fZGV2X3B1dChkZGV2KTsKPiArICAgICAgIHJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkdF9tYXRj aFtdID0gewo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJhcm0sbWFsaS00MDAiLCAuZGF0YSA9 ICh2b2lkICopbGltYV9ncHVfbWFsaTQwMCB9LAo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJh cm0sbWFsaS00NTAiLCAuZGF0YSA9ICh2b2lkICopbGltYV9ncHVfbWFsaTQ1MCB9LAo+ICsgICAg ICAge30KPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHRfbWF0Y2gpOwo+ICsKPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbGltYV9wbGF0Zm9ybV9kcml2ZXIgPSB7Cj4g KyAgICAgICAucHJvYmUgICAgICA9IGxpbWFfcGRldl9wcm9iZSwKPiArICAgICAgIC5yZW1vdmUg ICAgID0gbGltYV9wZGV2X3JlbW92ZSwKPiArICAgICAgIC5kcml2ZXIgICAgID0gewo+ICsgICAg ICAgICAgICAgICAubmFtZSAgID0gImxpbWEiLAo+ICsgICAgICAgICAgICAgICAub2ZfbWF0Y2hf dGFibGUgPSBkdF9tYXRjaCwKPiArICAgICAgIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBs aW1hX2NoZWNrX21vZHVsZV9wYXJhbSh2b2lkKQo+ICt7Cj4gKyAgICAgICBpZiAobGltYV9zY2hl ZF9tYXhfdGFza3MgPCA0KQo+ICsgICAgICAgICAgICAgICBsaW1hX3NjaGVkX21heF90YXNrcyA9 IDQ7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIGxpbWFfc2NoZWRfbWF4X3Rhc2tz ID0gcm91bmR1cF9wb3dfb2ZfdHdvKGxpbWFfc2NoZWRfbWF4X3Rhc2tzKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBfX2luaXQgbGltYV9pbml0KHZvaWQpCj4gK3sKPiArICAgICAgIGludCByZXQ7 Cj4gKwo+ICsgICAgICAgbGltYV9jaGVja19tb2R1bGVfcGFyYW0oKTsKPiArICAgICAgIHJldCA9 IGxpbWFfc2NoZWRfc2xhYl9pbml0KCk7Cj4gKyAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgIHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdp c3RlcigmbGltYV9wbGF0Zm9ybV9kcml2ZXIpOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAg ICAgICAgICAgbGltYV9zY2hlZF9zbGFiX2ZpbmkoKTsKPiArCj4gKyAgICAgICByZXR1cm4gcmV0 Owo+ICt9Cj4gK21vZHVsZV9pbml0KGxpbWFfaW5pdCk7Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2V4 aXQgbGltYV9leGl0KHZvaWQpCj4gK3sKPiArICAgICAgIHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lz dGVyKCZsaW1hX3BsYXRmb3JtX2RyaXZlcik7Cj4gKyAgICAgICBsaW1hX3NjaGVkX3NsYWJfZmlu aSgpOwo+ICt9Cj4gK21vZHVsZV9leGl0KGxpbWFfZXhpdCk7Cj4gKwo+ICtNT0RVTEVfQVVUSE9S KCJMaW1hIFByb2plY3QgRGV2ZWxvcGVycyIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkxpbWEg RFJNIERyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9s aW1hX2Rydi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjY0 MGE1NDhjZDYxNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9s aW1hX2Rydi5oCj4gQEAgLTAsMCArMSw0NiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCBPUiBNSVQgKi8KPiArLyogQ29weXJpZ2h0IDIwMTctMjAxOCBRaWFuZyBZdSA8 eXVxODI1QGdtYWlsLmNvbT4gKi8KPiArCj4gKyNpZm5kZWYgX19MSU1BX0RSVl9IX18KPiArI2Rl ZmluZSBfX0xJTUFfRFJWX0hfXwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKwo+ICsj aW5jbHVkZSAibGltYV9jdHguaCIKPiArCj4gK2V4dGVybiBpbnQgbGltYV9zY2hlZF90aW1lb3V0 X21zOwo+ICtleHRlcm4gaW50IGxpbWFfc2NoZWRfbWF4X3Rhc2tzOwo+ICsKPiArc3RydWN0IGxp bWFfdm07Cj4gK3N0cnVjdCBsaW1hX2JvOwo+ICtzdHJ1Y3QgbGltYV9zY2hlZF90YXNrOwo+ICsK PiArc3RydWN0IGRybV9saW1hX2dlbV9zdWJtaXRfYm87Cj4gKwo+ICtzdHJ1Y3QgbGltYV9kcm1f cHJpdiB7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV92bSAqdm07Cj4gKyAgICAgICBzdHJ1Y3QgbGlt YV9jdHhfbWdyIGN0eF9tZ3I7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgbGltYV9zdWJtaXQgewo+ICsg ICAgICAgc3RydWN0IGxpbWFfY3R4ICpjdHg7Cj4gKyAgICAgICBpbnQgcGlwZTsKPiArICAgICAg IHUzMiBmbGFnczsKPiArCj4gKyAgICAgICBzdHJ1Y3QgZHJtX2xpbWFfZ2VtX3N1Ym1pdF9ibyAq Ym9zOwo+ICsgICAgICAgc3RydWN0IGxpbWFfYm8gKipsYm9zOwo+ICsgICAgICAgdTMyIG5yX2Jv czsKPiArCj4gKyAgICAgICB1MzIgaW5fc3luY1syXTsKPiArICAgICAgIHUzMiBvdXRfc3luYzsK PiArCj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrOwo+ICt9Owo+ICsKPiAr c3RhdGljIGlubGluZSBzdHJ1Y3QgbGltYV9kcm1fcHJpdiAqCj4gK3RvX2xpbWFfZHJtX3ByaXYo c3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gZmlsZS0+ZHJpdmVy X3ByaXY7Cj4gK30KPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bGltYS9saW1hX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42NjY5NjAzNDU1NjYKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYwo+IEBAIC0w LDAgKzEsMzc5IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1J VAo+ICsvKiBDb3B5cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAq Lwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3N5bmNv YmouaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fdXRpbHMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N5 bmNfZmlsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGZuX3QuaD4KPiArCj4gKyNpbmNsdWRlIDxk cm0vbGltYV9kcm0uaD4KPiArCj4gKyNpbmNsdWRlICJsaW1hX2Rydi5oIgo+ICsjaW5jbHVkZSAi bGltYV9nZW0uaCIKPiArI2luY2x1ZGUgImxpbWFfZ2VtX3ByaW1lLmgiCj4gKyNpbmNsdWRlICJs aW1hX3ZtLmgiCj4gKyNpbmNsdWRlICJsaW1hX29iamVjdC5oIgo+ICsKPiAraW50IGxpbWFfZ2Vt X2NyZWF0ZV9oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpm aWxlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBzaXplLCB1MzIgZmxhZ3MsIHUz MiAqaGFuZGxlKQo+ICt7Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsgICAgICAgc3RydWN0IGxpbWFf Ym8gKmJvOwo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpsZGV2ID0gdG9fbGltYV9kZXYo ZGV2KTsKPiArCj4gKyAgICAgICBibyA9IGxpbWFfYm9fY3JlYXRlKGxkZXYsIHNpemUsIGZsYWdz LCBOVUxMLCBOVUxMKTsKPiArICAgICAgIGlmIChJU19FUlIoYm8pKQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gUFRSX0VSUihibyk7Cj4gKwo+ICsgICAgICAgZXJyID0gZHJtX2dlbV9oYW5kbGVf Y3JlYXRlKGZpbGUsICZiby0+Z2VtLCBoYW5kbGUpOwo+ICsKPiArICAgICAgIC8qIGRyb3AgcmVm ZXJlbmNlIGZyb20gYWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93ICovCj4gKyAgICAgICBk cm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJmJvLT5nZW0pOwo+ICsKPiArICAgICAgIHJldHVy biBlcnI7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2JvICpibyA9IHRvX2xp bWFfYm8ob2JqKTsKPiArCj4gKyAgICAgICBpZiAoIWxpc3RfZW1wdHkoJmJvLT52YSkpCj4gKyAg ICAgICAgICAgICAgIGRldl9lcnIob2JqLT5kZXYtPmRldiwgImxpbWEgZ2VtIGZyZWUgYm8gc3Rp bGwgaGFzIHZhXG4iKTsKPiArCj4gKyAgICAgICBsaW1hX2JvX2Rlc3Ryb3koYm8pOwo+ICt9Cj4g Kwo+ICtpbnQgbGltYV9nZW1fb2JqZWN0X29wZW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfYm8gKmJv ID0gdG9fbGltYV9ibyhvYmopOwo+ICsgICAgICAgc3RydWN0IGxpbWFfZHJtX3ByaXYgKnByaXYg PSB0b19saW1hX2RybV9wcml2KGZpbGUpOwo+ICsgICAgICAgc3RydWN0IGxpbWFfdm0gKnZtID0g cHJpdi0+dm07Cj4gKwo+ICsgICAgICAgcmV0dXJuIGxpbWFfdm1fYm9fYWRkKHZtLCBibywgdHJ1 ZSk7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV9nZW1fb2JqZWN0X2Nsb3NlKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArICAgICAgIHN0cnVj dCBsaW1hX2JvICpibyA9IHRvX2xpbWFfYm8ob2JqKTsKPiArICAgICAgIHN0cnVjdCBsaW1hX2Ry bV9wcml2ICpwcml2ID0gdG9fbGltYV9kcm1fcHJpdihmaWxlKTsKPiArICAgICAgIHN0cnVjdCBs aW1hX3ZtICp2bSA9IHByaXYtPnZtOwo+ICsKPiArICAgICAgIGxpbWFfdm1fYm9fZGVsKHZtLCBi byk7Cj4gK30KPiArCj4gK2ludCBsaW1hX2dlbV9nZXRfaW5mbyhzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUsIHUzMiBoYW5kbGUsIHUzMiAqdmEsIHU2NCAqb2Zmc2V0KQo+ICt7Cj4gKyAgICAgICBzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiArICAgICAgIHN0cnVjdCBsaW1hX2JvICpibzsKPiAr ICAgICAgIHN0cnVjdCBsaW1hX2RybV9wcml2ICpwcml2ID0gdG9fbGltYV9kcm1fcHJpdihmaWxl KTsKPiArICAgICAgIHN0cnVjdCBsaW1hX3ZtICp2bSA9IHByaXYtPnZtOwo+ICsgICAgICAgaW50 IGVycjsKPiArCj4gKyAgICAgICBvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgaGFu ZGxlKTsKPiArICAgICAgIGlmICghb2JqKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VO VDsKPiArCj4gKyAgICAgICBibyA9IHRvX2xpbWFfYm8ob2JqKTsKPiArCj4gKyAgICAgICAqdmEg PSBsaW1hX3ZtX2dldF92YSh2bSwgYm8pOwo+ICsKPiArICAgICAgIGVyciA9IGRybV9nZW1fY3Jl YXRlX21tYXBfb2Zmc2V0KG9iaik7Cj4gKyAgICAgICBpZiAoIWVycikKPiArICAgICAgICAgICAg ICAgKm9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmb2JqLT52bWFfbm9kZSk7Cj4g Kwo+ICsgICAgICAgZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gKyAgICAgICBy ZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm1fZmF1bHRfdCBsaW1hX2dlbV9mYXVsdChz dHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiArewo+ICsgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEgPSB2bWYtPnZtYTsKPiArICAgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0g dm1hLT52bV9wcml2YXRlX2RhdGE7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9ibyAqYm8gPSB0b19s aW1hX2JvKG9iaik7Cj4gKyAgICAgICBwZm5fdCBwZm47Cj4gKyAgICAgICBwZ29mZl90IHBnb2Zm Owo+ICsKPiArICAgICAgIC8qIFdlIGRvbid0IHVzZSB2bWYtPnBnb2ZmIHNpbmNlIHRoYXQgaGFz IHRoZSBmYWtlIG9mZnNldDogKi8KPiArICAgICAgIHBnb2ZmID0gKHZtZi0+YWRkcmVzcyAtIHZt YS0+dm1fc3RhcnQpID4+IFBBR0VfU0hJRlQ7Cj4gKyAgICAgICBwZm4gPSBfX3Bmbl90b19wZm5f dChwYWdlX3RvX3Bmbihiby0+cGFnZXNbcGdvZmZdKSwgUEZOX0RFVik7Cj4gKwo+ICsgICAgICAg cmV0dXJuIHZtZl9pbnNlcnRfbWl4ZWQodm1hLCB2bWYtPmFkZHJlc3MsIHBmbik7Cj4gK30KPiAr Cj4gK2NvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBsaW1hX2dlbV92bV9vcHMgPSB7 Cj4gKyAgICAgICAuZmF1bHQgPSBsaW1hX2dlbV9mYXVsdCwKPiArICAgICAgIC5vcGVuID0gZHJt X2dlbV92bV9vcGVuLAo+ICsgICAgICAgLmNsb3NlID0gZHJtX2dlbV92bV9jbG9zZSwKPiArfTsK PiArCj4gK3ZvaWQgbGltYV9zZXRfdm1hX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h KQo+ICt7Cj4gKyAgICAgICBwZ3Byb3RfdCBwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZt X2ZsYWdzKTsKPiArCj4gKyAgICAgICB2bWEtPnZtX2ZsYWdzIHw9IFZNX01JWEVETUFQOwo+ICsg ICAgICAgdm1hLT52bV9mbGFncyAmPSB+Vk1fUEZOTUFQOwo+ICsgICAgICAgdm1hLT52bV9wYWdl X3Byb3QgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHByb3QpOwo+ICt9Cj4gKwo+ICtpbnQgbGltYV9n ZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4g K3sKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgcmV0ID0gZHJtX2dlbV9tbWFwKGZp bHAsIHZtYSk7Cj4gKyAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+ICsKPiArICAgICAgIGxpbWFfc2V0X3ZtYV9mbGFncyh2bWEpOwo+ICsgICAgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGltYV9nZW1fc3luY19ibyhzdHJ1Y3QgbGltYV9z Y2hlZF90YXNrICp0YXNrLCBzdHJ1Y3QgbGltYV9ibyAqYm8sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgd3JpdGUsIGJvb2wgZXhwbGljaXQpCj4gK3sKPiArICAgICAgIGludCBl cnIgPSAwOwo+ICsKPiArICAgICAgIGlmICghd3JpdGUpIHsKPiArICAgICAgICAgICAgICAgZXJy ID0gcmVzZXJ2YXRpb25fb2JqZWN0X3Jlc2VydmVfc2hhcmVkKGJvLT5nZW0ucmVzdiwgMSk7Cj4g KyAgICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGVycjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICAvKiBleHBsaWNpdCBzeW5jIHVzZSB1c2Vy IHBhc3NlZCBkZXAgZmVuY2UgKi8KPiArICAgICAgIGlmIChleHBsaWNpdCkKPiArICAgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgICAgLyogaW1wbGljaXQgc3luYyB1c2UgYm8gZmVu Y2UgaW4gcmVzdiBvYmogKi8KPiArICAgICAgIGlmICh3cml0ZSkgewo+ICsgICAgICAgICAgICAg ICB1bnNpZ25lZCBucl9mZW5jZXM7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2Ug KipmZW5jZXM7Cj4gKyAgICAgICAgICAgICAgIGludCBpOwo+ICsKPiArICAgICAgICAgICAgICAg ZXJyID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9mZW5jZXNfcmN1KAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGJvLT5nZW0ucmVzdiwgTlVMTCwgJm5yX2ZlbmNlcywgJmZlbmNlcyk7Cj4gKyAg ICAgICAgICAgICAgIGlmIChlcnIgfHwgIW5yX2ZlbmNlcykKPiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gZXJyOwo+ICsKPiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5y X2ZlbmNlczsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gbGltYV9zY2hl ZF90YXNrX2FkZF9kZXAodGFzaywgZmVuY2VzW2ldKTsKPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIC8qIGZvciBlcnJvciBjYXNlIGZy ZWUgcmVtYWluaW5nIGZlbmNlcyAqLwo+ICsgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBucl9m ZW5jZXM7IGkrKykKPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNl c1tpXSk7Cj4gKwo+ICsgICAgICAgICAgICAgICBrZnJlZShmZW5jZXMpOwo+ICsgICAgICAgfQo+ ICsgICAgICAgZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl Owo+ICsgICAgICAgICAgICAgICBmZW5jZSA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbF9y Y3UoYm8tPmdlbS5yZXN2KTsKPiArICAgICAgICAgICAgICAgaWYgKGZlbmNlKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZXJyID0gbGltYV9zY2hlZF90YXNrX2FkZF9kZXAodGFzaywgZmVu Y2UpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiArICAgICAgICAgICAgICAg fQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgbGltYV9nZW1fbG9ja19ib3Moc3RydWN0IGxpbWFfYm8gKipib3MsIHUzMiBucl9ib3Ms Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0 eCkKPiArewo+ICsgICAgICAgaW50IGksIHJldCA9IDAsIGNvbnRlbmRlZCwgc2xvd19sb2NrZWQg PSAtMTsKPiArCj4gKyAgICAgICB3d19hY3F1aXJlX2luaXQoY3R4LCAmcmVzZXJ2YXRpb25fd3df Y2xhc3MpOwo+ICsKPiArcmV0cnk6Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfYm9zOyBp KyspIHsKPiArICAgICAgICAgICAgICAgaWYgKGkgPT0gc2xvd19sb2NrZWQpIHsKPiArICAgICAg ICAgICAgICAgICAgICAgICBzbG93X2xvY2tlZCA9IC0xOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBy ZXQgPSB3d19tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmJvc1tpXS0+Z2VtLnJlc3YtPmxvY2ss IGN0eCk7Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgY29udGVuZGVkID0gaTsKPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cjsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHd3X2FjcXVp cmVfZG9uZShjdHgpOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICtlcnI6Cj4gKyAgICAgICBm b3IgKGktLTsgaSA+PSAwOyBpLS0pCj4gKyAgICAgICAgICAgICAgIHd3X211dGV4X3VubG9jaygm Ym9zW2ldLT5nZW0ucmVzdi0+bG9jayk7Cj4gKwo+ICsgICAgICAgaWYgKHNsb3dfbG9ja2VkID49 IDApCj4gKyAgICAgICAgICAgICAgIHd3X211dGV4X3VubG9jaygmYm9zW3Nsb3dfbG9ja2VkXS0+ Z2VtLnJlc3YtPmxvY2spOwo+ICsKPiArICAgICAgIGlmIChyZXQgPT0gLUVERUFETEspIHsKPiAr ICAgICAgICAgICAgICAgLyogd2UgbG9zdCBvdXQgaW4gYSBzZXFubyByYWNlLCBsb2NrIGFuZCBy ZXRyeS4uICovCj4gKyAgICAgICAgICAgICAgIHJldCA9IHd3X211dGV4X2xvY2tfc2xvd19pbnRl cnJ1cHRpYmxlKAo+ICsgICAgICAgICAgICAgICAgICAgICAgICZib3NbY29udGVuZGVkXS0+Z2Vt LnJlc3YtPmxvY2ssIGN0eCk7Cj4gKyAgICAgICAgICAgICAgIGlmICghcmV0KSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgc2xvd19sb2NrZWQgPSBjb250ZW5kZWQ7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZ290byByZXRyeTsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ ICsgICAgICAgd3dfYWNxdWlyZV9maW5pKGN0eCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9nZW1fdW5sb2NrX2JvcyhzdHJ1Y3QgbGltYV9i byAqKmJvcywgdTMyIG5yX2JvcywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB3d19hY3F1aXJlX2N0eCAqY3R4KQo+ICt7Cj4gKyAgICAgICBpbnQgaTsKPiArCj4gKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfYm9zOyBpKyspCj4gKyAgICAgICAgICAgICAgIHd3X211 dGV4X3VubG9jaygmYm9zW2ldLT5nZW0ucmVzdi0+bG9jayk7Cj4gKyAgICAgICB3d19hY3F1aXJl X2ZpbmkoY3R4KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW1hX2dlbV9hZGRfZGVwcyhzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KQo+ICt7Cj4gKyAg ICAgICBpbnQgaSwgZXJyOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHN1Ym1pdC0+aW5fc3luYyk7IGkrKykgewo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSA9IE5VTEw7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoIXN1Ym1pdC0+aW5f c3luY1tpXSkKPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArCj4gKyAgICAg ICAgICAgICAgIGVyciA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmlsZSwgc3VibWl0LT5pbl9z eW5jW2ldLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs IDAsICZmZW5jZSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGVycjsKPiArCj4gKyAgICAgICAgICAgICAgIGVyciA9IGxpbWFfc2No ZWRfdGFza19hZGRfZGVwKHN1Ym1pdC0+dGFzaywgZmVuY2UpOwo+ICsgICAgICAgICAgICAgICBp ZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hX2ZlbmNlX3B1dChmZW5jZSk7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArICAgICAgICAgICAgICAg fQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgbGlt YV9nZW1fc3VibWl0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGxpbWFfc3VibWl0ICpz dWJtaXQpCj4gK3sKPiArICAgICAgIGludCBpLCBlcnIgPSAwOwo+ICsgICAgICAgc3RydWN0IHd3 X2FjcXVpcmVfY3R4IGN0eDsKPiArICAgICAgIHN0cnVjdCBsaW1hX2RybV9wcml2ICpwcml2ID0g dG9fbGltYV9kcm1fcHJpdihmaWxlKTsKPiArICAgICAgIHN0cnVjdCBsaW1hX3ZtICp2bSA9IHBy aXYtPnZtOwo+ICsgICAgICAgc3RydWN0IGRybV9zeW5jb2JqICpvdXRfc3luYyA9IE5VTEw7Cj4g KyAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiArICAgICAgIHN0cnVjdCBsaW1hX2Jv ICoqYm9zID0gc3VibWl0LT5sYm9zOwo+ICsKPiArICAgICAgIGlmIChzdWJtaXQtPm91dF9zeW5j KSB7Cj4gKyAgICAgICAgICAgICAgIG91dF9zeW5jID0gZHJtX3N5bmNvYmpfZmluZChmaWxlLCBz dWJtaXQtPm91dF9zeW5jKTsKPiArICAgICAgICAgICAgICAgaWYgKCFvdXRfc3luYykKPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiArICAgICAgIH0KPiArCj4gKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgewo+ICsgICAgICAgICAg ICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiArICAgICAgICAgICAgICAgc3RydWN0 IGxpbWFfYm8gKmJvOwo+ICsKPiArICAgICAgICAgICAgICAgb2JqID0gZHJtX2dlbV9vYmplY3Rf bG9va3VwKGZpbGUsIHN1Ym1pdC0+Ym9zW2ldLmhhbmRsZSk7Cj4gKyAgICAgICAgICAgICAgIGlm ICghb2JqKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLUVOT0VOVDsKPiArICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQwOwo+ICsgICAgICAgICAgICAgICB9Cj4g Kwo+ICsgICAgICAgICAgICAgICBibyA9IHRvX2xpbWFfYm8ob2JqKTsKPiArCj4gKyAgICAgICAg ICAgICAgIC8qIGluY3JlYXNlIHJlZmNudCBvZiBncHUgdmEgbWFwIHRvIHByZXZlbnQgdW5tYXBw ZWQgd2hlbiBleGVjdXRpbmcsCj4gKyAgICAgICAgICAgICAgICAqIHdpbGwgYmUgZGVjcmVhc2Vk IHdoZW4gdGFzayBkb25lICovCj4gKyAgICAgICAgICAgICAgIGVyciA9IGxpbWFfdm1fYm9fYWRk KHZtLCBibywgZmFsc2UpOwo+ICsgICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0MDsKPiArICAgICAgICAgICAgICAgfQo+ICsK PiArICAgICAgICAgICAgICAgYm9zW2ldID0gYm87Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAg ZXJyID0gbGltYV9nZW1fbG9ja19ib3MoYm9zLCBzdWJtaXQtPm5yX2JvcywgJmN0eCk7Cj4gKyAg ICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQwOwo+ICsKPiArICAg ICAgIGVyciA9IGxpbWFfc2NoZWRfdGFza19pbml0KAo+ICsgICAgICAgICAgICAgICBzdWJtaXQt PnRhc2ssIHN1Ym1pdC0+Y3R4LT5jb250ZXh0ICsgc3VibWl0LT5waXBlLAo+ICsgICAgICAgICAg ICAgICBib3MsIHN1Ym1pdC0+bnJfYm9zLCB2bSk7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAg ICAgICAgICAgICBnb3RvIGVycl9vdXQxOwo+ICsKPiArICAgICAgIGVyciA9IGxpbWFfZ2VtX2Fk ZF9kZXBzKGZpbGUsIHN1Ym1pdCk7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAg ICBnb3RvIGVycl9vdXQyOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBzdWJtaXQtPm5y X2JvczsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IGxpbWFfZ2VtX3N5bmNfYm8oCj4g KyAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0LT50YXNrLCBib3NbaV0sCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgc3VibWl0LT5ib3NbaV0uZmxhZ3MgJiBMSU1BX1NVQk1JVF9CT19XUklU RSwKPiArICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXQtPmZsYWdzICYgTElNQV9TVUJNSVRf RkxBR19FWFBMSUNJVF9GRU5DRSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChlcnIpCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0MjsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICBmZW5jZSA9IGxpbWFfc2NoZWRfY29udGV4dF9xdWV1ZV90YXNrKAo+ICsgICAgICAgICAgICAg ICBzdWJtaXQtPmN0eC0+Y29udGV4dCArIHN1Ym1pdC0+cGlwZSwgc3VibWl0LT50YXNrKTsKPiAr Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgewo+ICsgICAg ICAgICAgICAgICBpZiAoc3VibWl0LT5ib3NbaV0uZmxhZ3MgJiBMSU1BX1NVQk1JVF9CT19XUklU RSkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xf ZmVuY2UoYm9zW2ldLT5nZW0ucmVzdiwgZmVuY2UpOwo+ICsgICAgICAgICAgICAgICBlbHNlCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVu Y2UoYm9zW2ldLT5nZW0ucmVzdiwgZmVuY2UpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGxp bWFfZ2VtX3VubG9ja19ib3MoYm9zLCBzdWJtaXQtPm5yX2JvcywgJmN0eCk7Cj4gKwo+ICsgICAg ICAgZm9yIChpID0gMDsgaSA8IHN1Ym1pdC0+bnJfYm9zOyBpKyspCj4gKyAgICAgICAgICAgICAg IGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmYm9zW2ldLT5nZW0pOwo+ICsKPiArICAgICAg IGlmIChvdXRfc3luYykgewo+ICsgICAgICAgICAgICAgICBkcm1fc3luY29ial9yZXBsYWNlX2Zl bmNlKG91dF9zeW5jLCBmZW5jZSk7Cj4gKyAgICAgICAgICAgICAgIGRybV9zeW5jb2JqX3B1dChv dXRfc3luYyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZG1hX2ZlbmNlX3B1dChmZW5jZSk7 Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICtlcnJfb3V0MjoKPiArICAgICAgIGxpbWFf c2NoZWRfdGFza19maW5pKHN1Ym1pdC0+dGFzayk7Cj4gK2Vycl9vdXQxOgo+ICsgICAgICAgbGlt YV9nZW1fdW5sb2NrX2Jvcyhib3MsIHN1Ym1pdC0+bnJfYm9zLCAmY3R4KTsKPiArZXJyX291dDA6 Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgewo+ICsgICAg ICAgICAgICAgICBpZiAoIWJvc1tpXSkKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgICAgICAgICAgbGltYV92bV9ib19kZWwodm0sIGJvc1tpXSk7Cj4gKyAgICAgICAg ICAgICAgIGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmYm9zW2ldLT5nZW0pOwo+ICsgICAg ICAgfQo+ICsgICAgICAgaWYgKG91dF9zeW5jKQo+ICsgICAgICAgICAgICAgICBkcm1fc3luY29i al9wdXQob3V0X3N5bmMpOwo+ICsgICAgICAgcmV0dXJuIGVycjsKPiArfQo+ICsKPiAraW50IGxp bWFfZ2VtX3dhaXQoc3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFuZGxlLCB1MzIgb3AsIHM2 NCB0aW1lb3V0X25zKQo+ICt7Cj4gKyAgICAgICBib29sIHdyaXRlID0gb3AgJiBMSU1BX0dFTV9X QUlUX1dSSVRFOwo+ICsgICAgICAgbG9uZyByZXQsIHRpbWVvdXQ7Cj4gKwo+ICsgICAgICAgaWYg KCFvcCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgICAgdGltZW91dCA9 IGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzKHRpbWVvdXRfbnMpOwo+ICsKPiArICAgICAgIHJl dCA9IGRybV9nZW1fcmVzZXJ2YXRpb25fb2JqZWN0X3dhaXQoZmlsZSwgaGFuZGxlLCB3cml0ZSwg dGltZW91dCk7Cj4gKyAgICAgICBpZiAocmV0ID09IDApCj4gKyAgICAgICAgICAgICAgIHJldCA9 IHRpbWVvdXQgPyAtRVRJTUVET1VUIDogLUVCVVNZOwo+ICsKPiArICAgICAgIHJldHVybiByZXQ7 Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uaCBiL2Ry aXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uZjFjNDY1ODEwMGE4Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmgKPiBAQCAtMCwwICsxLDI1IEBACj4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVCAqLwo+ICsvKiBDb3B5cmlnaHQg MjAxNy0yMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lmbmRlZiBf X0xJTUFfR0VNX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9HRU1fSF9fCj4gKwo+ICtzdHJ1Y3QgbGlt YV9ibzsKPiArc3RydWN0IGxpbWFfc3VibWl0Owo+ICsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCB2 bV9vcGVyYXRpb25zX3N0cnVjdCBsaW1hX2dlbV92bV9vcHM7Cj4gKwo+ICtzdHJ1Y3QgbGltYV9i byAqbGltYV9nZW1fY3JlYXRlX2JvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBzaXplLCB1 MzIgZmxhZ3MpOwo+ICtpbnQgbGltYV9nZW1fY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgdTMyIHNpemUsIHUzMiBmbGFncywgdTMyICpoYW5kbGUpOwo+ICt2b2lkIGxpbWFfZ2VtX2Zy ZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiAraW50IGxpbWFfZ2VtX29i amVjdF9vcGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpOwo+ICt2b2lkIGxpbWFfZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAraW50IGxpbWFfZ2VtX2dldF9pbmZvKHN0 cnVjdCBkcm1fZmlsZSAqZmlsZSwgdTMyIGhhbmRsZSwgdTMyICp2YSwgdTY0ICpvZmZzZXQpOwo+ ICtpbnQgbGltYV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpOwo+ICtpbnQgbGltYV9nZW1fc3VibWl0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwg c3RydWN0IGxpbWFfc3VibWl0ICpzdWJtaXQpOwo+ICtpbnQgbGltYV9nZW1fd2FpdChzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUsIHUzMiBoYW5kbGUsIHUzMiBvcCwgczY0IHRpbWVvdXRfbnMpOwo+ICsK PiArdm9pZCBsaW1hX3NldF92bWFfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2Vt X3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbV9wcmltZS5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmZlODM0OGEwNTVmNgo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbV9wcmltZS5jCj4g QEAgLTAsMCArMSw0NyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBP UiBNSVQKPiArLyogQ29weXJpZ2h0IDIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICov Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9w cmltZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f ZmlsZS5oPgo+ICsKPiArI2luY2x1ZGUgImxpbWFfZGV2aWNlLmgiCj4gKyNpbmNsdWRlICJsaW1h X29iamVjdC5oIgo+ICsjaW5jbHVkZSAibGltYV9nZW0uaCIKPiArI2luY2x1ZGUgImxpbWFfZ2Vt X3ByaW1lLmgiCj4gKwo+ICtzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmxpbWFfZ2VtX3ByaW1lX2lt cG9ydF9zZ190YWJsZSgKPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKPiArICAgICAgIHN0cnVjdCBzZ190YWJsZSAqc2d0 KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmxkZXYgPSB0b19saW1hX2Rldihk ZXYpOwo+ICsgICAgICAgc3RydWN0IGxpbWFfYm8gKmJvOwo+ICsKPiArICAgICAgIGJvID0gbGlt YV9ib19jcmVhdGUobGRldiwgYXR0YWNoLT5kbWFidWYtPnNpemUsIDAsIHNndCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+ICsgICAgICAgaWYg KElTX0VSUihibykpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBFUlJfQ0FTVChibyk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuICZiby0+Z2VtOwo+ICt9Cj4gKwo+ICtzdHJ1Y3Qgc2dfdGFibGUgKmxp bWFfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAr ewo+ICsgICAgICAgc3RydWN0IGxpbWFfYm8gKmJvID0gdG9fbGltYV9ibyhvYmopOwo+ICsgICAg ICAgaW50IG5wYWdlcyA9IG9iai0+c2l6ZSA+PiBQQUdFX1NISUZUOwo+ICsKPiArICAgICAgIHJl dHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2coYm8tPnBhZ2VzLCBucGFnZXMpOwo+ICt9Cj4gKwo+ ICtpbnQgbGltYV9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gK3sKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsg ICAgICAgcmV0ID0gZHJtX2dlbV9tbWFwX29iaihvYmosIG9iai0+c2l6ZSwgdm1hKTsKPiArICAg ICAgIGlmIChyZXQpCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgICAg bGltYV9zZXRfdm1hX2ZsYWdzKHZtYSk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbV9wcmltZS5oIGIvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9nZW1fcHJpbWUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5jZWIxYmU5ODQwYTUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW1fcHJpbWUuaAo+IEBAIC0wLDAgKzEsMTMgQEAKPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUICovCj4gKy8qIENvcHly aWdodCAyMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lmbmRlZiBf X0xJTUFfR0VNX1BSSU1FX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9HRU1fUFJJTUVfSF9fCj4gKwo+ ICtzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmxpbWFfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSgK PiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmF0dGFjaCwKPiArICAgICAgIHN0cnVjdCBzZ190YWJsZSAqc2d0KTsKPiArc3RydWN0IHNn X3RhYmxlICpsaW1hX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmopOwo+ICtpbnQgbGltYV9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZ3AuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li40ZjRlOWY1ZjdlMTkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xp bWEvbGltYV9ncC5jCj4gQEAgLTAsMCArMSwyODIgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAgT1IgTUlUCj4gKy8qIENvcHlyaWdodCAyMDE3LTIwMTggUWlhbmcgWXUg PHl1cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5o Pgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9saW1hX2Ry bS5oPgo+ICsKPiArI2luY2x1ZGUgImxpbWFfZGV2aWNlLmgiCj4gKyNpbmNsdWRlICJsaW1hX2dw LmgiCj4gKyNpbmNsdWRlICJsaW1hX3JlZ3MuaCIKPiArCj4gKyNkZWZpbmUgZ3Bfd3JpdGUocmVn LCBkYXRhKSB3cml0ZWwoZGF0YSwgaXAtPmlvbWVtICsgcmVnKQo+ICsjZGVmaW5lIGdwX3JlYWQo cmVnKSByZWFkbChpcC0+aW9tZW0gKyByZWcpCj4gKwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbGlt YV9ncF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1 Y3QgbGltYV9pcCAqaXAgPSBkYXRhOwo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXYg PSBpcC0+ZGV2Owo+ICsgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSA9IGRldi0+ cGlwZSArIGxpbWFfcGlwZV9ncDsKPiArICAgICAgIHUzMiBzdGF0ZSA9IGdwX3JlYWQoTElNQV9H UF9JTlRfU1RBVCk7Cj4gKyAgICAgICB1MzIgc3RhdHVzID0gZ3BfcmVhZChMSU1BX0dQX1NUQVRV Uyk7Cj4gKyAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKPiArCj4gKyAgICAgICAvKiBmb3Igc2hh cmVkIGlycSBjYXNlICovCj4gKyAgICAgICBpZiAoIXN0YXRlKQo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gSVJRX05PTkU7Cj4gKwo+ICsgICAgICAgaWYgKHN0YXRlICYgTElNQV9HUF9JUlFfTUFT S19FUlJPUikgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldi0+ZGV2LCAiZ3AgZXJyb3Ig aXJxIHN0YXRlPSV4IHN0YXR1cz0leFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBzdGF0 ZSwgc3RhdHVzKTsKPiArCj4gKyAgICAgICAgICAgICAgIC8qIG1hc2sgYWxsIGludGVycnVwdHMg YmVmb3JlIGhhcmQgcmVzZXQgKi8KPiArICAgICAgICAgICAgICAgZ3Bfd3JpdGUoTElNQV9HUF9J TlRfTUFTSywgMCk7Cj4gKwo+ICsgICAgICAgICAgICAgICBwaXBlLT5lcnJvciA9IHRydWU7Cj4g KyAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwo+ICsgICAgICAgfQo+ICsgICAgICAgZWxzZSB7 Cj4gKyAgICAgICAgICAgICAgIGJvb2wgdmFsaWQgPSBzdGF0ZSAmIChMSU1BX0dQX0lSUV9WU19F TkRfQ01EX0xTVCB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU1B X0dQX0lSUV9QTEJVX0VORF9DTURfTFNUKTsKPiArICAgICAgICAgICAgICAgYm9vbCBhY3RpdmUg PSBzdGF0dXMgJiAoTElNQV9HUF9TVEFUVVNfVlNfQUNUSVZFIHwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTElNQV9HUF9TVEFUVVNfUExCVV9BQ1RJVkUpOwo+ICsg ICAgICAgICAgICAgICBkb25lID0gdmFsaWQgJiYgIWFjdGl2ZTsKPiArICAgICAgIH0KPiArCj4g KyAgICAgICBncF93cml0ZShMSU1BX0dQX0lOVF9DTEVBUiwgc3RhdGUpOwo+ICsKPiArICAgICAg IGlmIChkb25lKQo+ICsgICAgICAgICAgICAgICBsaW1hX3NjaGVkX3BpcGVfdGFza19kb25lKHBp cGUpOwo+ICsKPiArICAgICAgIHJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgbGltYV9ncF9zb2Z0X3Jlc2V0X2FzeW5jKHN0cnVjdCBsaW1hX2lwICppcCkKPiArewo+ ICsgICAgICAgaWYgKGlwLT5kYXRhLmFzeW5jX3Jlc2V0KQo+ICsgICAgICAgICAgICAgICByZXR1 cm47Cj4gKwo+ICsgICAgICAgZ3Bfd3JpdGUoTElNQV9HUF9JTlRfTUFTSywgMCk7Cj4gKyAgICAg ICBncF93cml0ZShMSU1BX0dQX0lOVF9DTEVBUiwgTElNQV9HUF9JUlFfUkVTRVRfQ09NUExFVEVE KTsKPiArICAgICAgIGdwX3dyaXRlKExJTUFfR1BfQ01ELCBMSU1BX0dQX0NNRF9TT0ZUX1JFU0VU KTsKPiArICAgICAgIGlwLT5kYXRhLmFzeW5jX3Jlc2V0ID0gdHJ1ZTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBsaW1hX2dwX3NvZnRfcmVzZXRfYXN5bmNfd2FpdChzdHJ1Y3QgbGltYV9pcCAqaXAp Cj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqZGV2ID0gaXAtPmRldjsKPiArICAg ICAgIGludCBlcnI7Cj4gKyAgICAgICB1MzIgdjsKPiArCj4gKyAgICAgICBpZiAoIWlwLT5kYXRh LmFzeW5jX3Jlc2V0KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICBl cnIgPSByZWFkbF9wb2xsX3RpbWVvdXQoaXAtPmlvbWVtICsgTElNQV9HUF9JTlRfUkFXU1RBVCwg diwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICYgTElNQV9HUF9JUlFfUkVT RVRfQ09NUExFVEVELAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEwMCk7 Cj4gKyAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LT5kZXYs ICJncCBzb2Z0IHJlc2V0IHRpbWUgb3V0XG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVy cjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBncF93cml0ZShMSU1BX0dQX0lOVF9DTEVBUiwg TElNQV9HUF9JUlFfTUFTS19BTEwpOwo+ICsgICAgICAgZ3Bfd3JpdGUoTElNQV9HUF9JTlRfTUFT SywgTElNQV9HUF9JUlFfTUFTS19VU0VEKTsKPiArCj4gKyAgICAgICBpcC0+ZGF0YS5hc3luY19y ZXNldCA9IGZhbHNlOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg bGltYV9ncF90YXNrX3ZhbGlkYXRlKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFz aykKPiArewo+ICsgICAgICAgc3RydWN0IGRybV9saW1hX2dwX2ZyYW1lICpmcmFtZSA9IHRhc2st PmZyYW1lOwo+ICsgICAgICAgdTMyICpmID0gZnJhbWUtPmZyYW1lOwo+ICsgICAgICAgKHZvaWQp cGlwZTsKPiArCj4gKyAgICAgICBpZiAoZltMSU1BX0dQX1ZTQ0xfU1RBUlRfQUREUiA+PiAyXSA+ Cj4gKyAgICAgICAgICAgZltMSU1BX0dQX1ZTQ0xfRU5EX0FERFIgPj4gMl0gfHwKPiArICAgICAg ICAgICBmW0xJTUFfR1BfUExCVUNMX1NUQVJUX0FERFIgPj4gMl0gPgo+ICsgICAgICAgICAgIGZb TElNQV9HUF9QTEJVQ0xfRU5EX0FERFIgPj4gMl0gfHwKPiArICAgICAgICAgICBmW0xJTUFfR1Bf UExCVV9BTExPQ19TVEFSVF9BRERSID4+IDJdID4KPiArICAgICAgICAgICBmW0xJTUFfR1BfUExC VV9BTExPQ19FTkRfQUREUiA+PiAyXSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICsgICAgICAgaWYgKGZbTElNQV9HUF9WU0NMX1NUQVJUX0FERFIgPj4gMl0gPT0KPiAr ICAgICAgICAgICBmW0xJTUFfR1BfVlNDTF9FTkRfQUREUiA+PiAyXSAmJgo+ICsgICAgICAgICAg IGZbTElNQV9HUF9QTEJVQ0xfU1RBUlRfQUREUiA+PiAyXSA9PQo+ICsgICAgICAgICAgIGZbTElN QV9HUF9QTEJVQ0xfRU5EX0FERFIgPj4gMl0pCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBsaW1h X2dwX3Rhc2tfcnVuKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrKQo+ICt7Cj4gKyAg ICAgICBzdHJ1Y3QgbGltYV9pcCAqaXAgPSBwaXBlLT5wcm9jZXNzb3JbMF07Cj4gKyAgICAgICBz dHJ1Y3QgZHJtX2xpbWFfZ3BfZnJhbWUgKmZyYW1lID0gdGFzay0+ZnJhbWU7Cj4gKyAgICAgICB1 MzIgKmYgPSBmcmFtZS0+ZnJhbWU7Cj4gKyAgICAgICB1MzIgY21kID0gMDsKPiArICAgICAgIGlu dCBpOwo+ICsKPiArICAgICAgIGlmIChmW0xJTUFfR1BfVlNDTF9TVEFSVF9BRERSID4+IDJdICE9 Cj4gKyAgICAgICAgICAgZltMSU1BX0dQX1ZTQ0xfRU5EX0FERFIgPj4gMl0pCj4gKyAgICAgICAg ICAgICAgIGNtZCB8PSBMSU1BX0dQX0NNRF9TVEFSVF9WUzsKPiArICAgICAgIGlmIChmW0xJTUFf R1BfUExCVUNMX1NUQVJUX0FERFIgPj4gMl0gIT0KPiArICAgICAgICAgICBmW0xJTUFfR1BfUExC VUNMX0VORF9BRERSID4+IDJdKQo+ICsgICAgICAgICAgICAgICBjbWQgfD0gTElNQV9HUF9DTURf U1RBUlRfUExCVTsKPiArCj4gKyAgICAgICAvKiBiZWZvcmUgYW55IGh3IG9wcywgd2FpdCBsYXN0 IHN1Y2Nlc3MgdGFzayBhc3luYyBzb2Z0IHJlc2V0ICovCj4gKyAgICAgICBsaW1hX2dwX3NvZnRf cmVzZXRfYXN5bmNfd2FpdChpcCk7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IExJTUFf R1BfRlJBTUVfUkVHX05VTTsgaSsrKQo+ICsgICAgICAgICAgICAgICB3cml0ZWwoZltpXSwgaXAt PmlvbWVtICsgTElNQV9HUF9WU0NMX1NUQVJUX0FERFIgKyBpICogNCk7Cj4gKwo+ICsgICAgICAg Z3Bfd3JpdGUoTElNQV9HUF9DTUQsIExJTUFfR1BfQ01EX1VQREFURV9QTEJVX0FMTE9DKTsKPiAr ICAgICAgIGdwX3dyaXRlKExJTUFfR1BfQ01ELCBjbWQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGxpbWFfZ3BfaGFyZF9yZXNldF9wb2xsKHN0cnVjdCBsaW1hX2lwICppcCkKPiArewo+ICsgICAg ICAgZ3Bfd3JpdGUoTElNQV9HUF9QRVJGX0NOVF8wX0xJTUlULCAweEMwMUEwMDAwKTsKPiArICAg ICAgIHJldHVybiBncF9yZWFkKExJTUFfR1BfUEVSRl9DTlRfMF9MSU1JVCkgPT0gMHhDMDFBMDAw MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW1hX2dwX2hhcmRfcmVzZXQoc3RydWN0IGxpbWFf aXAgKmlwKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlwLT5kZXY7 Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGdwX3dyaXRlKExJTUFfR1BfUEVSRl9D TlRfMF9MSU1JVCwgMHhDMEZGRTAwMCk7Cj4gKyAgICAgICBncF93cml0ZShMSU1BX0dQX0lOVF9N QVNLLCAwKTsKPiArICAgICAgIGdwX3dyaXRlKExJTUFfR1BfQ01ELCBMSU1BX0dQX0NNRF9SRVNF VCk7Cj4gKyAgICAgICByZXQgPSBsaW1hX3BvbGxfdGltZW91dChpcCwgbGltYV9ncF9oYXJkX3Jl c2V0X3BvbGwsIDEwLCAxMDApOwo+ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKGRldi0+ZGV2LCAiZ3AgaGFyZCByZXNldCB0aW1lb3V0XG4iKTsKPiArICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBncF93cml0ZShM SU1BX0dQX1BFUkZfQ05UXzBfTElNSVQsIDApOwo+ICsgICAgICAgZ3Bfd3JpdGUoTElNQV9HUF9J TlRfQ0xFQVIsIExJTUFfR1BfSVJRX01BU0tfQUxMKTsKPiArICAgICAgIGdwX3dyaXRlKExJTUFf R1BfSU5UX01BU0ssIExJTUFfR1BfSVJRX01BU0tfVVNFRCk7Cj4gKyAgICAgICByZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9ncF90YXNrX2Zpbmkoc3RydWN0IGxpbWFfc2No ZWRfcGlwZSAqcGlwZSkKPiArewo+ICsgICAgICAgbGltYV9ncF9zb2Z0X3Jlc2V0X2FzeW5jKHBp cGUtPnByb2Nlc3NvclswXSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfZ3BfdGFza19l cnJvcihzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg bGltYV9pcCAqaXAgPSBwaXBlLT5wcm9jZXNzb3JbMF07Cj4gKwo+ICsgICAgICAgZGV2X2Vycihp cC0+ZGV2LT5kZXYsICJncCB0YXNrIGVycm9yIGludF9zdGF0ZT0leCBzdGF0dXM9JXhcbiIsCj4g KyAgICAgICAgICAgICAgIGdwX3JlYWQoTElNQV9HUF9JTlRfU1RBVCksIGdwX3JlYWQoTElNQV9H UF9TVEFUVVMpKTsKPiArCj4gKyAgICAgICBsaW1hX2dwX2hhcmRfcmVzZXQoaXApOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBsaW1hX2dwX3Rhc2tfbW11X2Vycm9yKHN0cnVjdCBsaW1hX3NjaGVk X3BpcGUgKnBpcGUpCj4gK3sKPiArICAgICAgIGxpbWFfc2NoZWRfcGlwZV90YXNrX2RvbmUocGlw ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfZ3BfcHJpbnRfdmVyc2lvbihzdHJ1Y3Qg bGltYV9pcCAqaXApCj4gK3sKPiArICAgICAgIHUzMiB2ZXJzaW9uLCBtYWpvciwgbWlub3I7Cj4g KyAgICAgICBjaGFyICpuYW1lOwo+ICsKPiArICAgICAgIHZlcnNpb24gPSBncF9yZWFkKExJTUFf R1BfVkVSU0lPTik7Cj4gKyAgICAgICBtYWpvciA9ICh2ZXJzaW9uID4+IDgpICYgMHhGRjsKPiAr ICAgICAgIG1pbm9yID0gdmVyc2lvbiAmIDB4RkY7Cj4gKyAgICAgICBzd2l0Y2ggKHZlcnNpb24g Pj4gMTYpIHsKPiArICAgICAgIGNhc2UgMHhBMDc6Cj4gKyAgICAgICAgICAgbmFtZSA9ICJtYWxp MjAwIjsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIDB4QzA3Ogo+ICsg ICAgICAgICAgICAgICBuYW1lID0gIm1hbGkzMDAiOwo+ICsgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgIGNhc2UgMHhCMDc6Cj4gKyAgICAgICAgICAgICAgIG5hbWUgPSAibWFsaTQwMCI7 Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSAweEQwNzoKPiArICAgICAg ICAgICAgICAgbmFtZSA9ICJtYWxpNDUwIjsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICBuYW1lID0gInVua25vdyI7Cj4gKyAgICAg ICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAgZGV2X2luZm8oaXAtPmRldi0+ ZGV2LCAiJXMgLSAlcyB2ZXJzaW9uIG1ham9yICVkIG1pbm9yICVkXG4iLAo+ICsgICAgICAgICAg ICAgICAgbGltYV9pcF9uYW1lKGlwKSwgbmFtZSwgbWFqb3IsIG1pbm9yKTsKPiArfQo+ICsKPiAr c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpsaW1hX2dwX3Rhc2tfc2xhYiA9IE5VTEw7Cj4gK3N0 YXRpYyBpbnQgbGltYV9ncF90YXNrX3NsYWJfcmVmY250ID0gMDsKPiArCj4gK2ludCBsaW1hX2dw X2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZp Y2UgKmRldiA9IGlwLT5kZXY7Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsKPiArICAgICAgIGxpbWFf Z3BfcHJpbnRfdmVyc2lvbihpcCk7Cj4gKwo+ICsgICAgICAgaXAtPmRhdGEuYXN5bmNfcmVzZXQg PSBmYWxzZTsKPiArICAgICAgIGxpbWFfZ3Bfc29mdF9yZXNldF9hc3luYyhpcCk7Cj4gKyAgICAg ICBlcnIgPSBsaW1hX2dwX3NvZnRfcmVzZXRfYXN5bmNfd2FpdChpcCk7Cj4gKyAgICAgICBpZiAo ZXJyKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsKPiArICAgICAgIGVyciA9IGRl dm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIGlwLT5pcnEsIGxpbWFfZ3BfaXJxX2hhbmRsZXIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUUZfU0hBUkVELCBsaW1hX2lwX25hbWUo aXApLCBpcCk7Cj4gKyAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo ZGV2LT5kZXYsICJncCAlcyBmYWlsIHRvIHJlcXVlc3QgaXJxXG4iLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGxpbWFfaXBfbmFtZShpcCkpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJy Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGxp bWFfZ3BfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApCj4gK3sKPiArCj4gK30KPiArCj4gK2ludCBs aW1hX2dwX3BpcGVfaW5pdChzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKPiArewo+ICsgICAgICAg aW50IGZyYW1lX3NpemUgPSBzaXplb2Yoc3RydWN0IGRybV9saW1hX2dwX2ZyYW1lKTsKPiArICAg ICAgIHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVf Z3A7Cj4gKwo+ICsgICAgICAgaWYgKCFsaW1hX2dwX3Rhc2tfc2xhYikgewo+ICsgICAgICAgICAg ICAgICBsaW1hX2dwX3Rhc2tfc2xhYiA9IGttZW1fY2FjaGVfY3JlYXRlX3VzZXJjb3B5KAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICJsaW1hX2dwX3Rhc2siLCBzaXplb2Yoc3RydWN0IGxpbWFf c2NoZWRfdGFzaykgKyBmcmFtZV9zaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIDAsIFNM QUJfSFdDQUNIRV9BTElHTiwgc2l6ZW9mKHN0cnVjdCBsaW1hX3NjaGVkX3Rhc2spLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGZyYW1lX3NpemUsIE5VTEwpOwo+ICsgICAgICAgICAgICAgICBp ZiAoIWxpbWFfZ3BfdGFza19zbGFiKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ICsgICAgICAgfQo+ICsgICAgICAgbGltYV9ncF90YXNrX3NsYWJfcmVmY250Kys7 Cj4gKwo+ICsgICAgICAgcGlwZS0+ZnJhbWVfc2l6ZSA9IGZyYW1lX3NpemU7Cj4gKyAgICAgICBw aXBlLT50YXNrX3NsYWIgPSBsaW1hX2dwX3Rhc2tfc2xhYjsKPiArCj4gKyAgICAgICBwaXBlLT50 YXNrX3ZhbGlkYXRlID0gbGltYV9ncF90YXNrX3ZhbGlkYXRlOwo+ICsgICAgICAgcGlwZS0+dGFz a19ydW4gPSBsaW1hX2dwX3Rhc2tfcnVuOwo+ICsgICAgICAgcGlwZS0+dGFza19maW5pID0gbGlt YV9ncF90YXNrX2Zpbmk7Cj4gKyAgICAgICBwaXBlLT50YXNrX2Vycm9yID0gbGltYV9ncF90YXNr X2Vycm9yOwo+ICsgICAgICAgcGlwZS0+dGFza19tbXVfZXJyb3IgPSBsaW1hX2dwX3Rhc2tfbW11 X2Vycm9yOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGxpbWFfZ3Bf cGlwZV9maW5pKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBpZiAoIS0t bGltYV9ncF90YXNrX3NsYWJfcmVmY250KSB7Cj4gKyAgICAgICAgICAgICAgIGttZW1fY2FjaGVf ZGVzdHJveShsaW1hX2dwX3Rhc2tfc2xhYik7Cj4gKyAgICAgICAgICAgICAgIGxpbWFfZ3BfdGFz a19zbGFiID0gTlVMTDsKPiArICAgICAgIH0KPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbGltYS9saW1hX2dwLmggYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dwLmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTViYzQ4ZWM3NjAzCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ3AuaAo+IEBA IC0wLDAgKzEsMTYgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1Ig TUlUICovCj4gKy8qIENvcHlyaWdodCAyMDE3LTIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5j b20+ICovCj4gKwo+ICsjaWZuZGVmIF9fTElNQV9HUF9IX18KPiArI2RlZmluZSBfX0xJTUFfR1Bf SF9fCj4gKwo+ICtzdHJ1Y3QgbGltYV9pcDsKPiArc3RydWN0IGxpbWFfZGV2aWNlOwo+ICsKPiAr aW50IGxpbWFfZ3BfaW5pdChzdHJ1Y3QgbGltYV9pcCAqaXApOwo+ICt2b2lkIGxpbWFfZ3BfZmlu aShzdHJ1Y3QgbGltYV9pcCAqaXApOwo+ICsKPiAraW50IGxpbWFfZ3BfcGlwZV9pbml0KHN0cnVj dCBsaW1hX2RldmljZSAqZGV2KTsKPiArdm9pZCBsaW1hX2dwX3BpcGVfZmluaShzdHJ1Y3QgbGlt YV9kZXZpY2UgKmRldik7Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2xpbWEvbGltYV9sMl9jYWNoZS5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9sMl9j YWNoZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjJiYTQ3 ODZmOWVjNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1h X2wyX2NhY2hlLmMKPiBAQCAtMCwwICsxLDgwIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wIE9SIE1JVAo+ICsvKiBDb3B5cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5 dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+ICsj aW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSAibGltYV9kZXZpY2UuaCIK PiArI2luY2x1ZGUgImxpbWFfbDJfY2FjaGUuaCIKPiArI2luY2x1ZGUgImxpbWFfcmVncy5oIgo+ ICsKPiArI2RlZmluZSBsMl9jYWNoZV93cml0ZShyZWcsIGRhdGEpIHdyaXRlbChkYXRhLCBpcC0+ aW9tZW0gKyByZWcpCj4gKyNkZWZpbmUgbDJfY2FjaGVfcmVhZChyZWcpIHJlYWRsKGlwLT5pb21l bSArIHJlZykKPiArCj4gK3N0YXRpYyBpbnQgbGltYV9sMl9jYWNoZV93YWl0X2lkbGUoc3RydWN0 IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlw LT5kZXY7Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsgICAgICAgdTMyIHY7Cj4gKwo+ICsgICAgICAg ZXJyID0gcmVhZGxfcG9sbF90aW1lb3V0KGlwLT5pb21lbSArIExJTUFfTDJfQ0FDSEVfU1RBVFVT LCB2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEodiAmIExJTUFfTDJfQ0FD SEVfU1RBVFVTX0NPTU1BTkRfQlVTWSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwgMTAwMCk7Cj4gKyAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgZGV2X2Vycihk ZXYtPmRldiwgImwyIGNhY2hlIHdhaXQgY29tbWFuZCB0aW1lb3V0XG4iKTsKPiArICAgICAgICAg ICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g K2ludCBsaW1hX2wyX2NhY2hlX2ZsdXNoKHN0cnVjdCBsaW1hX2lwICppcCkKPiArewo+ICsgICAg ICAgaW50IHJldDsKPiArCj4gKyAgICAgICBzcGluX2xvY2soJmlwLT5kYXRhLmxvY2spOwo+ICsg ICAgICAgbDJfY2FjaGVfd3JpdGUoTElNQV9MMl9DQUNIRV9DT01NQU5ELCBMSU1BX0wyX0NBQ0hF X0NPTU1BTkRfQ0xFQVJfQUxMKTsKPiArICAgICAgIHJldCA9IGxpbWFfbDJfY2FjaGVfd2FpdF9p ZGxlKGlwKTsKPiArICAgICAgIHNwaW5fdW5sb2NrKCZpcC0+ZGF0YS5sb2NrKTsKPiArICAgICAg IHJldHVybiByZXQ7Cj4gK30KPiArCj4gK2ludCBsaW1hX2wyX2NhY2hlX2luaXQoc3RydWN0IGxp bWFfaXAgKmlwKQo+ICt7Cj4gKyAgICAgICBpbnQgaSwgZXJyOwo+ICsgICAgICAgdTMyIHNpemU7 Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlwLT5kZXY7Cj4gKwo+ICsgICAg ICAgLyogbDJfY2FjaGUyIG9ubHkgZXhpc3RzIHdoZW4gb25lIG9mIFBQNC03IHByZXNlbnQgKi8K PiArICAgICAgIGlmIChpcC0+aWQgPT0gbGltYV9pcF9sMl9jYWNoZTIpIHsKPiArICAgICAgICAg ICAgICAgZm9yIChpID0gbGltYV9pcF9wcDQ7IGkgPD0gbGltYV9pcF9wcDc7IGkrKykgewo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXYtPmlwW2ldLnByZXNlbnQpCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAg ICAgICAgICAgICBpZiAoaSA+IGxpbWFfaXBfcHA3KQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAtRU5PREVWOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHNwaW5fbG9ja19pbml0 KCZpcC0+ZGF0YS5sb2NrKTsKPiArCj4gKyAgICAgICBzaXplID0gbDJfY2FjaGVfcmVhZChMSU1B X0wyX0NBQ0hFX1NJWkUpOwo+ICsgICAgICAgZGV2X2luZm8oZGV2LT5kZXYsICJsMiBjYWNoZSAl dUssICV1LXdheSwgJXVieXRlIGNhY2hlIGxpbmUsICV1Yml0IGV4dGVybmFsIGJ1c1xuIiwKPiAr ICAgICAgICAgICAgICAgIDEgPDwgKCgoc2l6ZSA+PiAxNikgJiAweGZmKSAtIDEwKSwKPiArICAg ICAgICAgICAgICAgIDEgPDwgKChzaXplID4+IDgpICYgMHhmZiksCj4gKyAgICAgICAgICAgICAg ICAxIDw8IChzaXplICYgMHhmZiksCj4gKyAgICAgICAgICAgICAgICAxIDw8ICgoc2l6ZSA+PiAy NCkgJiAweGZmKSk7Cj4gKwo+ICsgICAgICAgZXJyID0gbGltYV9sMl9jYWNoZV9mbHVzaChpcCk7 Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsKPiAr ICAgICAgIGwyX2NhY2hlX3dyaXRlKExJTUFfTDJfQ0FDSEVfRU5BQkxFLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgTElNQV9MMl9DQUNIRV9FTkFCTEVfQUNDRVNTfExJTUFfTDJfQ0FDSEVfRU5B QkxFX1JFQURfQUxMT0NBVEUpOwo+ICsgICAgICAgbDJfY2FjaGVfd3JpdGUoTElNQV9MMl9DQUNI RV9NQVhfUkVBRFMsIDB4MWMpOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2 b2lkIGxpbWFfbDJfY2FjaGVfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApCj4gK3sKPiArCj4gK30K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9sMl9jYWNoZS5oIGIvZHJp dmVycy9ncHUvZHJtL2xpbWEvbGltYV9sMl9jYWNoZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLjJmZjkxZWFmZWZiZQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2wyX2NhY2hlLmgKPiBAQCAtMCwwICsxLDE0IEBA Cj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVCAqLwo+ICsvKiBD b3B5cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiAr I2lmbmRlZiBfX0xJTUFfTDJfQ0FDSEVfSF9fCj4gKyNkZWZpbmUgX19MSU1BX0wyX0NBQ0hFX0hf Xwo+ICsKPiArc3RydWN0IGxpbWFfaXA7Cj4gKwo+ICtpbnQgbGltYV9sMl9jYWNoZV9pbml0KHN0 cnVjdCBsaW1hX2lwICppcCk7Cj4gK3ZvaWQgbGltYV9sMl9jYWNoZV9maW5pKHN0cnVjdCBsaW1h X2lwICppcCk7Cj4gKwo+ICtpbnQgbGltYV9sMl9jYWNoZV9mbHVzaChzdHJ1Y3QgbGltYV9pcCAq aXApOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xp bWFfbW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX21tdS5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmM2YzE1MWQzM2NmOAo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX21tdS5jCj4gQEAgLTAsMCArMSwx NDIgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCj4gKy8q IENvcHlyaWdodCAyMDE3LTIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsKPiArI2luY2x1ZGUgImxpbWFfZGV2 aWNlLmgiCj4gKyNpbmNsdWRlICJsaW1hX21tdS5oIgo+ICsjaW5jbHVkZSAibGltYV92bS5oIgo+ ICsjaW5jbHVkZSAibGltYV9vYmplY3QuaCIKPiArI2luY2x1ZGUgImxpbWFfcmVncy5oIgo+ICsK PiArI2RlZmluZSBtbXVfd3JpdGUocmVnLCBkYXRhKSB3cml0ZWwoZGF0YSwgaXAtPmlvbWVtICsg cmVnKQo+ICsjZGVmaW5lIG1tdV9yZWFkKHJlZykgcmVhZGwoaXAtPmlvbWVtICsgcmVnKQo+ICsK PiArI2RlZmluZSBsaW1hX21tdV9zZW5kX2NvbW1hbmQoY21kLCBhZGRyLCB2YWwsIGNvbmQpICAg ICAgICAgXAo+ICsoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gKyAgICAgICBpbnQgX19yZXQ7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgbW11X3dyaXRlKExJTUFf TU1VX0NPTU1BTkQsIGNtZCk7ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBfX3JldCA9 IHJlYWRsX3BvbGxfdGltZW91dChpcC0+aW9tZW0gKyAoYWRkciksIHZhbCwgIFwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZCwgMCwgMTAwKTsgICAgICAgICAgICAgXAo+ ICsgICAgICAgaWYgKF9fcmV0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LT5kZXYsICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAibW11IGNvbW1hbmQgJXgg dGltZW91dFxuIiwgY21kKTsgICAgXAo+ICsgICAgICAgX19yZXQ7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK30pCj4gKwo+ICtzdGF0aWMgaXJxcmV0 dXJuX3QgbGltYV9tbXVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKPiArewo+ICsg ICAgICAgc3RydWN0IGxpbWFfaXAgKmlwID0gZGF0YTsKPiArICAgICAgIHN0cnVjdCBsaW1hX2Rl dmljZSAqZGV2ID0gaXAtPmRldjsKPiArICAgICAgIHUzMiBzdGF0dXMgPSBtbXVfcmVhZChMSU1B X01NVV9JTlRfU1RBVFVTKTsKPiArICAgICAgIHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGU7 Cj4gKwo+ICsgICAgICAgLyogZm9yIHNoYXJlZCBpcnEgY2FzZSAqLwo+ICsgICAgICAgaWYgKCFz dGF0dXMpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBJUlFfTk9ORTsKPiArCj4gKyAgICAgICBp ZiAoc3RhdHVzICYgTElNQV9NTVVfSU5UX1BBR0VfRkFVTFQpIHsKPiArICAgICAgICAgICAgICAg dTMyIGZhdWx0ID0gbW11X3JlYWQoTElNQV9NTVVfUEFHRV9GQVVMVF9BRERSKTsKPiArICAgICAg ICAgICAgICAgZGV2X2VycihkZXYtPmRldiwgIm1tdSBwYWdlIGZhdWx0IGF0IDB4JXggZnJvbSBi dXMgaWQgJWQgb2YgdHlwZSAlcyBvbiAlc1xuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBm YXVsdCwgTElNQV9NTVVfU1RBVFVTX0JVU19JRChzdGF0dXMpLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cyAmIExJTUFfTU1VX1NUQVRVU19QQUdFX0ZBVUxUX0lTX1dSSVRFID8gIndy aXRlIiA6ICJyZWFkIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBsaW1hX2lwX25hbWUoaXAp KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoc3RhdHVzICYgTElNQV9NTVVfSU5UX1JF QURfQlVTX0VSUk9SKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LT5kZXYsICJtbXUg JXMgaXJxIGJ1cyBlcnJvclxuIiwgbGltYV9pcF9uYW1lKGlwKSk7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgLyogbWFzayBhbGwgaW50ZXJydXB0cyBiZWZvcmUgcmVzdW1lICovCj4gKyAgICAg ICBtbXVfd3JpdGUoTElNQV9NTVVfSU5UX01BU0ssIDApOwo+ICsgICAgICAgbW11X3dyaXRlKExJ TUFfTU1VX0lOVF9DTEVBUiwgc3RhdHVzKTsKPiArCj4gKyAgICAgICBwaXBlID0gZGV2LT5waXBl ICsgKGlwLT5pZCA9PSBsaW1hX2lwX2dwbW11ID8gbGltYV9waXBlX2dwIDogbGltYV9waXBlX3Bw KTsKPiArICAgICAgIGxpbWFfc2NoZWRfcGlwZV9tbXVfZXJyb3IocGlwZSk7Cj4gKwo+ICsgICAg ICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtpbnQgbGltYV9tbXVfaW5pdChzdHJ1 Y3QgbGltYV9pcCAqaXApCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqZGV2ID0g aXAtPmRldjsKPiArICAgICAgIGludCBlcnI7Cj4gKyAgICAgICB1MzIgdjsKPiArCj4gKyAgICAg ICBpZiAoaXAtPmlkID09IGxpbWFfaXBfcHBtbXVfYmNhc3QpCj4gKyAgICAgICAgICAgICAgIHJl dHVybiAwOwo+ICsKPiArICAgICAgIG1tdV93cml0ZShMSU1BX01NVV9EVEVfQUREUiwgMHhDQUZF QkFCRSk7Cj4gKyAgICAgICBpZiAobW11X3JlYWQoTElNQV9NTVVfRFRFX0FERFIpICE9IDB4Q0FG RUIwMDApIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYtPmRldiwgIm1tdSAlcyBkdGUg d3JpdGUgdGVzdCBmYWlsXG4iLCBsaW1hX2lwX25hbWUoaXApKTsKPiArICAgICAgICAgICAgICAg cmV0dXJuIC1FSU87Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgbW11X3dyaXRlKExJTUFfTU1V X0NPTU1BTkQsIExJTUFfTU1VX0NPTU1BTkRfSEFSRF9SRVNFVCk7Cj4gKyAgICAgICBlcnIgPSBs aW1hX21tdV9zZW5kX2NvbW1hbmQoTElNQV9NTVVfQ09NTUFORF9IQVJEX1JFU0VULAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTUFfTU1VX0RURV9BRERSLCB2LCB2ID09 IDApOwo+ICsgICAgICAgaWYgKGVycikKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiAr Cj4gKyAgICAgICBlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldi0+ZGV2LCBpcC0+aXJxLCBsaW1h X21tdV9pcnFfaGFuZGxlciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJRRl9T SEFSRUQsIGxpbWFfaXBfbmFtZShpcCksIGlwKTsKPiArICAgICAgIGlmIChlcnIpIHsKPiArICAg ICAgICAgICAgICAgZGV2X2VycihkZXYtPmRldiwgIm1tdSAlcyBmYWlsIHRvIHJlcXVlc3QgaXJx XG4iLCBsaW1hX2lwX25hbWUoaXApKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiAr ICAgICAgIH0KPiArCj4gKyAgICAgICBtbXVfd3JpdGUoTElNQV9NTVVfSU5UX01BU0ssIExJTUFf TU1VX0lOVF9QQUdFX0ZBVUxUIHwgTElNQV9NTVVfSU5UX1JFQURfQlVTX0VSUk9SKTsKPiArICAg ICAgIG1tdV93cml0ZShMSU1BX01NVV9EVEVfQUREUiwgZGV2LT5lbXB0eV92bS0+cGQuZG1hKTsK PiArICAgICAgIHJldHVybiBsaW1hX21tdV9zZW5kX2NvbW1hbmQoTElNQV9NTVVfQ09NTUFORF9F TkFCTEVfUEFHSU5HLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU1B X01NVV9TVEFUVVMsIHYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYg JiBMSU1BX01NVV9TVEFUVVNfUEFHSU5HX0VOQUJMRUQpOwo+ICt9Cj4gKwo+ICt2b2lkIGxpbWFf bW11X2Zpbmkoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKwo+ICt9Cj4gKwo+ICt2b2lkIGxp bWFfbW11X3N3aXRjaF92bShzdHJ1Y3QgbGltYV9pcCAqaXAsIHN0cnVjdCBsaW1hX3ZtICp2bSkK PiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXYgPSBpcC0+ZGV2Owo+ICsgICAg ICAgdTMyIHY7Cj4gKwo+ICsgICAgICAgbGltYV9tbXVfc2VuZF9jb21tYW5kKExJTUFfTU1VX0NP TU1BTkRfRU5BQkxFX1NUQUxMLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTUFf TU1VX1NUQVRVUywgdiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICYgTElNQV9N TVVfU1RBVFVTX1NUQUxMX0FDVElWRSk7Cj4gKwo+ICsgICAgICAgaWYgKHZtKQo+ICsgICAgICAg ICAgICAgICBtbXVfd3JpdGUoTElNQV9NTVVfRFRFX0FERFIsIHZtLT5wZC5kbWEpOwo+ICsKPiAr ICAgICAgIC8qIGZsdXNoIHRoZSBUTEIgKi8KPiArICAgICAgIG1tdV93cml0ZShMSU1BX01NVV9D T01NQU5ELCBMSU1BX01NVV9DT01NQU5EX1pBUF9DQUNIRSk7Cj4gKwo+ICsgICAgICAgbGltYV9t bXVfc2VuZF9jb21tYW5kKExJTUFfTU1VX0NPTU1BTkRfRElTQUJMRV9TVEFMTCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMSU1BX01NVV9TVEFUVVMsIHYsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgISh2ICYgTElNQV9NTVVfU1RBVFVTX1NUQUxMX0FDVElWRSkpOwo+ ICt9Cj4gKwo+ICt2b2lkIGxpbWFfbW11X3BhZ2VfZmF1bHRfcmVzdW1lKHN0cnVjdCBsaW1hX2lw ICppcCkKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXYgPSBpcC0+ZGV2Owo+ ICsgICAgICAgdTMyIHN0YXR1cyA9IG1tdV9yZWFkKExJTUFfTU1VX1NUQVRVUyk7Cj4gKyAgICAg ICB1MzIgdjsKPiArCj4gKyAgICAgICBpZiAoc3RhdHVzICYgTElNQV9NTVVfU1RBVFVTX1BBR0Vf RkFVTFRfQUNUSVZFKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGRldi0+ZGV2LCAibW11 IHJlc3VtZVxuIik7Cj4gKwo+ICsgICAgICAgICAgICAgICBtbXVfd3JpdGUoTElNQV9NTVVfSU5U X01BU0ssIDApOwo+ICsgICAgICAgICAgICAgICBtbXVfd3JpdGUoTElNQV9NTVVfRFRFX0FERFIs IDB4Q0FGRUJBQkUpOwo+ICsgICAgICAgICAgICAgICBsaW1hX21tdV9zZW5kX2NvbW1hbmQoTElN QV9NTVVfQ09NTUFORF9IQVJEX1JFU0VULAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTElNQV9NTVVfRFRFX0FERFIsIHYsIHYgPT0gMCk7Cj4gKyAgICAgICAgICAgICAg IG1tdV93cml0ZShMSU1BX01NVV9JTlRfTUFTSywgTElNQV9NTVVfSU5UX1BBR0VfRkFVTFQgfCBM SU1BX01NVV9JTlRfUkVBRF9CVVNfRVJST1IpOwo+ICsgICAgICAgICAgICAgICBtbXVfd3JpdGUo TElNQV9NTVVfRFRFX0FERFIsIGRldi0+ZW1wdHlfdm0tPnBkLmRtYSk7Cj4gKyAgICAgICAgICAg ICAgIGxpbWFfbW11X3NlbmRfY29tbWFuZChMSU1BX01NVV9DT01NQU5EX0VOQUJMRV9QQUdJTkcs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU1BX01NVV9TVEFUVVMs IHYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICYgTElNQV9NTVVf U1RBVFVTX1BBR0lOR19FTkFCTEVEKTsKPiArICAgICAgIH0KPiArfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX21tdS5oIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGlt YV9tbXUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jYTE3 M2I2MGZjNzMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGlt YV9tbXUuaAo+IEBAIC0wLDAgKzEsMTYgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgT1IgTUlUICovCj4gKy8qIENvcHlyaWdodCAyMDE3LTIwMTggUWlhbmcgWXUgPHl1 cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaWZuZGVmIF9fTElNQV9NTVVfSF9fCj4gKyNkZWZp bmUgX19MSU1BX01NVV9IX18KPiArCj4gK3N0cnVjdCBsaW1hX2lwOwo+ICtzdHJ1Y3QgbGltYV92 bTsKPiArCj4gK2ludCBsaW1hX21tdV9pbml0KHN0cnVjdCBsaW1hX2lwICppcCk7Cj4gK3ZvaWQg bGltYV9tbXVfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApOwo+ICsKPiArdm9pZCBsaW1hX21tdV9z d2l0Y2hfdm0oc3RydWN0IGxpbWFfaXAgKmlwLCBzdHJ1Y3QgbGltYV92bSAqdm0pOwo+ICt2b2lk IGxpbWFfbW11X3BhZ2VfZmF1bHRfcmVzdW1lKHN0cnVjdCBsaW1hX2lwICppcCk7Cj4gKwo+ICsj ZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9vYmplY3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfb2JqZWN0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjhmZjFiOGUxZGNhCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfb2JqZWN0LmMKPiBAQCAtMCwwICsxLDEyNCBA QAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQKPiArLyogQ29w eXJpZ2h0IDIwMTggUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9wcmltZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgo+ICsjaW5j bHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPiArCj4gKyNpbmNsdWRlICJsaW1hX29iamVjdC5o Igo+ICsKPiArdm9pZCBsaW1hX2JvX2Rlc3Ryb3koc3RydWN0IGxpbWFfYm8gKmJvKQo+ICt7Cj4g KyAgICAgICAgaWYgKGJvLT5zZ3QpIHsKPiArICAgICAgICAgICAgICAga2ZyZWUoYm8tPnBhZ2Vz KTsKPiArICAgICAgICAgICAgICAgZHJtX3ByaW1lX2dlbV9kZXN0cm95KCZiby0+Z2VtLCBiby0+ c2d0KTsKPiArICAgICAgIH0KPiArICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICBpZiAo Ym8tPnBhZ2VzX2RtYV9hZGRyKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGksIG5w YWdlcyA9IGJvLT5nZW0uc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICsKPiArICAgICAgICAgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnBhZ2VzOyBpKyspIHsKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChiby0+cGFnZXNfZG1hX2FkZHJbaV0pCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV91bm1hcF9wYWdlKGJvLT5nZW0uZGV2LT5k ZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvLT5wYWdlc19kbWFfYWRkcltpXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFLCBETUFfQklESVJFQ1RJT05BTCk7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsg ICAgICAgICAgICAgICBpZiAoYm8tPnBhZ2VzKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRy bV9nZW1fcHV0X3BhZ2VzKCZiby0+Z2VtLCBiby0+cGFnZXMsIHRydWUsIHRydWUpOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIGtmcmVlKGJvLT5wYWdlc19kbWFfYWRkcik7Cj4gKyAgICAgICBk cm1fZ2VtX29iamVjdF9yZWxlYXNlKCZiby0+Z2VtKTsKPiArICAgICAgIGtmcmVlKGJvKTsKPiAr fQo+ICsKPiArc3RhdGljIHN0cnVjdCBsaW1hX2JvICpsaW1hX2JvX2NyZWF0ZV9zdHJ1Y3Qoc3Ry dWN0IGxpbWFfZGV2aWNlICpkZXYsIHUzMiBzaXplLCB1MzIgZmxhZ3MsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVj dCAqcmVzdikKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfYm8gKmJvOwo+ICsgICAgICAgaW50 IGVycjsKPiArCj4gKyAgICAgICBzaXplID0gUEFHRV9BTElHTihzaXplKTsKPiArCj4gKyAgICAg ICBibyA9IGt6YWxsb2Moc2l6ZW9mKCpibyksIEdGUF9LRVJORUwpOwo+ICsgICAgICAgaWYgKCFi bykKPiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsgICAg ICAgbXV0ZXhfaW5pdCgmYm8tPmxvY2spOwo+ICsgICAgICAgSU5JVF9MSVNUX0hFQUQoJmJvLT52 YSk7Cj4gKyAgICAgICBiby0+Z2VtLnJlc3YgPSByZXN2Owo+ICsKPiArICAgICAgIGVyciA9IGRy bV9nZW1fb2JqZWN0X2luaXQoZGV2LT5kZGV2LCAmYm8tPmdlbSwgc2l6ZSk7Cj4gKyAgICAgICBp ZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIGtmcmVlKGJvKTsKPiArICAgICAgICAgICAgICAg cmV0dXJuIEVSUl9QVFIoZXJyKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gYm87 Cj4gK30KPiArCj4gK3N0cnVjdCBsaW1hX2JvICpsaW1hX2JvX2NyZWF0ZShzdHJ1Y3QgbGltYV9k ZXZpY2UgKmRldiwgdTMyIHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUz MiBmbGFncywgc3RydWN0IHNnX3RhYmxlICpzZ3QsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YpCj4gK3sKPiArICAgICAgIGlu dCBpLCBlcnI7Cj4gKyAgICAgICBzaXplX3QgbnBhZ2VzOwo+ICsgICAgICAgc3RydWN0IGxpbWFf Ym8gKmJvLCAqcmV0Owo+ICsKPiArICAgICAgIGJvID0gbGltYV9ib19jcmVhdGVfc3RydWN0KGRl diwgc2l6ZSwgZmxhZ3MsIHJlc3YpOwo+ICsgICAgICAgaWYgKElTX0VSUihibykpCj4gKyAgICAg ICAgICAgICAgIHJldHVybiBibzsKPiArCj4gKyAgICAgICBucGFnZXMgPSBiby0+Z2VtLnNpemUg Pj4gUEFHRV9TSElGVDsKPiArCj4gKyAgICAgICBiby0+cGFnZXNfZG1hX2FkZHIgPSBremFsbG9j KG5wYWdlcyAqIHNpemVvZihkbWFfYWRkcl90KSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBpZiAo IWJvLT5wYWdlc19kbWFfYWRkcikgewo+ICsgICAgICAgICAgICAgICByZXQgPSBFUlJfUFRSKC1F Tk9NRU0pOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgaWYgKHNndCkgewo+ICsgICAgICAgICAgICAgICBiby0+c2d0ID0gc2d0Owo+ICsK PiArICAgICAgICAgICAgICAgYm8tPnBhZ2VzID0ga3phbGxvYyhucGFnZXMgKiBzaXplb2YoKmJv LT5wYWdlcyksIEdGUF9LRVJORUwpOwo+ICsgICAgICAgICAgICAgICBpZiAoIWJvLT5wYWdlcykg ewo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0Owo+ICsgICAgICAgICAgICAgICB9Cj4g Kwo+ICsgICAgICAgICAgICAgICBlcnIgPSBkcm1fcHJpbWVfc2dfdG9fcGFnZV9hZGRyX2FycmF5 cygKPiArICAgICAgICAgICAgICAgICAgICAgICBzZ3QsIGJvLT5wYWdlcywgYm8tPnBhZ2VzX2Rt YV9hZGRyLCBucGFnZXMpOwo+ICsgICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0ID0gRVJSX1BUUihlcnIpOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gZXJyX291dDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsgICAg ICAgZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIG1hcHBpbmdfc2V0X2dmcF9tYXNrKGJvLT5nZW0u ZmlscC0+Zl9tYXBwaW5nLCBHRlBfRE1BMzIpOwo+ICsgICAgICAgICAgICAgICBiby0+cGFnZXMg PSBkcm1fZ2VtX2dldF9wYWdlcygmYm8tPmdlbSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChJU19F UlIoYm8tPnBhZ2VzKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IEVSUl9DQVNU KGJvLT5wYWdlcyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYm8tPnBhZ2VzID0gTlVMTDsK PiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICAgICAgICAgICAg IH0KPiArCj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBucGFnZXM7IGkrKykgewo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgYWRkciA9IGRtYV9tYXBfcGFnZShk ZXYtPmRldiwgYm8tPnBhZ2VzW2ldLCAwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJWkUsIERNQV9CSURJUkVDVElPTkFMKTsK PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LT5kZXYs IGFkZHIpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBFUlJfUFRS KC1FRkFVTFQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0 Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICBi by0+cGFnZXNfZG1hX2FkZHJbaV0gPSBhZGRyOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsg ICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiBibzsKPiArCj4gK2Vycl9vdXQ6Cj4gKyAgICAg ICBsaW1hX2JvX2Rlc3Ryb3koYm8pOwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5oIGIvZHJpdmVycy9ncHUv ZHJtL2xpbWEvbGltYV9vYmplY3QuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMDAwLi43MDA5OWYxMDQ1YWMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9vYmplY3QuaAo+IEBAIC0wLDAgKzEsMzYgQEAKPiArLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUICovCj4gKy8qIENvcHlyaWdodCAyMDE4 IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lmbmRlZiBfX0xJTUFfT0JK RUNUX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9PQkpFQ1RfSF9fCj4gKwo+ICsjaW5jbHVkZSA8ZHJt L2RybV9nZW0uaD4KPiArCj4gKyNpbmNsdWRlICJsaW1hX2RldmljZS5oIgo+ICsKPiArc3RydWN0 IGxpbWFfYm8gewo+ICsgICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0IGdlbTsKPiArCj4gKyAg ICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+ICsgICAgICAgZG1hX2FkZHJfdCAqcGFnZXNfZG1h X2FkZHI7Cj4gKyAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiArICAgICAgIHZvaWQgKnZh ZGRyOwo+ICsKPiArICAgICAgIHN0cnVjdCBtdXRleCBsb2NrOwo+ICsgICAgICAgc3RydWN0IGxp c3RfaGVhZCB2YTsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpbWFfYm8gKgo+ ICt0b19saW1hX2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKyAgICAgICBy ZXR1cm4gY29udGFpbmVyX29mKG9iaiwgc3RydWN0IGxpbWFfYm8sIGdlbSk7Cj4gK30KPiArCj4g K3N0cnVjdCBsaW1hX2JvICpsaW1hX2JvX2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwg dTMyIHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBmbGFncywgc3Ry dWN0IHNnX3RhYmxlICpzZ3QsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YpOwo+ICt2b2lkIGxpbWFfYm9fZGVzdHJveShzdHJ1 Y3QgbGltYV9ibyAqYm8pOwo+ICt2b2lkICpsaW1hX2JvX3ZtYXAoc3RydWN0IGxpbWFfYm8gKmJv KTsKPiArdm9pZCBsaW1hX2JvX3Z1bm1hcChzdHJ1Y3QgbGltYV9ibyAqYm8pOwo+ICsKPiArI2Vu ZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfcG11LmMgYi9kcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX3BtdS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjNjNTA1MjRiNzBhNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX3BtdS5jCj4gQEAgLTAsMCArMSw1OSBAQAo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQKPiArLyogQ29weXJpZ2h0IDIwMTct MjAxOCBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4gKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51 eC9pb3BvbGwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsKPiArI2luY2x1ZGUg ImxpbWFfZGV2aWNlLmgiCj4gKyNpbmNsdWRlICJsaW1hX3BtdS5oIgo+ICsjaW5jbHVkZSAibGlt YV9yZWdzLmgiCj4gKwo+ICsjZGVmaW5lIHBtdV93cml0ZShyZWcsIGRhdGEpIHdyaXRlbChkYXRh LCBpcC0+aW9tZW0gKyByZWcpCj4gKyNkZWZpbmUgcG11X3JlYWQocmVnKSByZWFkbChpcC0+aW9t ZW0gKyByZWcpCj4gKwo+ICtzdGF0aWMgaW50IGxpbWFfcG11X3dhaXRfY21kKHN0cnVjdCBsaW1h X2lwICppcCkKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXYgPSBpcC0+ZGV2 Owo+ICsgICAgICAgaW50IGVycjsKPiArICAgICAgIHUzMiB2Owo+ICsKPiArICAgICAgIGVyciA9 IHJlYWRsX3BvbGxfdGltZW91dChpcC0+aW9tZW0gKyBMSU1BX1BNVV9JTlRfUkFXU1RBVCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCB2ICYgTElNQV9QTVVfSU5UX0NNRF9N QVNLLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCwgMTAwMDAwKTsKPiAr ICAgICAgIGlmIChlcnIpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYtPmRldiwgInRp bWVvdXQgd2FpdCBwbWQgY21kXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiAr ICAgICAgIH0KPiArCj4gKyAgICAgICBwbXVfd3JpdGUoTElNQV9QTVVfSU5UX0NMRUFSLCBMSU1B X1BNVV9JTlRfQ01EX01BU0spOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBs aW1hX3BtdV9pbml0KHN0cnVjdCBsaW1hX2lwICppcCkKPiArewo+ICsgICAgICAgaW50IGVycjsK PiArICAgICAgIHUzMiBzdGF0Owo+ICsKPiArICAgICAgIHBtdV93cml0ZShMSU1BX1BNVV9JTlRf TUFTSywgMCk7Cj4gKwo+ICsgICAgICAgLyogSWYgdGhpcyB2YWx1ZSBpcyB0b28gbG93LCB3aGVu IGluIGhpZ2ggR1BVIGNsayBmcmVxLAo+ICsgICAgICAgICogR1BVIHdpbGwgYmUgaW4gdW5zdGFi bGUgc3RhdGUuICovCj4gKyAgICAgICBwbXVfd3JpdGUoTElNQV9QTVVfU1dfREVMQVksIDB4ZmZm Zik7Cj4gKwo+ICsgICAgICAgLyogc3RhdHVzIHJlZyAxPW9mZiAwPW9uICovCj4gKyAgICAgICBz dGF0ID0gcG11X3JlYWQoTElNQV9QTVVfU1RBVFVTKTsKPiArCj4gKyAgICAgICAvKiBwb3dlciB1 cCBhbGwgaXAgKi8KPiArICAgICAgIGlmIChzdGF0KSB7Cj4gKyAgICAgICAgICAgICAgIHBtdV93 cml0ZShMSU1BX1BNVV9QT1dFUl9VUCwgc3RhdCk7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IGxp bWFfcG11X3dhaXRfY21kKGlwKTsKPiArICAgICAgICAgICAgICAgaWYgKGVycikKPiArICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV9wbXVfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApCj4g K3sKPiArCj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9wbXUu aCBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfcG11LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWNmOTRhMzViZGY5Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfcG11LmgKPiBAQCAtMCwwICsxLDEyIEBACj4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVCAqLwo+ICsvKiBDb3B5 cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lm bmRlZiBfX0xJTUFfUE1VX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9QTVVfSF9fCj4gKwo+ICtzdHJ1 Y3QgbGltYV9pcDsKPiArCj4gK2ludCBsaW1hX3BtdV9pbml0KHN0cnVjdCBsaW1hX2lwICppcCk7 Cj4gK3ZvaWQgbGltYV9wbXVfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApOwo+ICsKPiArI2VuZGlm Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfcHAuYyBiL2RyaXZlcnMv Z3B1L2RybS9saW1hL2xpbWFfcHAuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMDAwLi43YjM2YzI5ZWVlODkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9wcC5jCj4gQEAgLTAsMCArMSw0MjMgQEAKPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCj4gKy8qIENvcHlyaWdodCAyMDE3LTIwMTgg UWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2xp bWFfZHJtLmg+Cj4gKwo+ICsjaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImxp bWFfcHAuaCIKPiArI2luY2x1ZGUgImxpbWFfZGxidS5oIgo+ICsjaW5jbHVkZSAibGltYV9iY2Fz dC5oIgo+ICsjaW5jbHVkZSAibGltYV92bS5oIgo+ICsjaW5jbHVkZSAibGltYV9yZWdzLmgiCj4g Kwo+ICsjZGVmaW5lIHBwX3dyaXRlKHJlZywgZGF0YSkgd3JpdGVsKGRhdGEsIGlwLT5pb21lbSAr IHJlZykKPiArI2RlZmluZSBwcF9yZWFkKHJlZykgcmVhZGwoaXAtPmlvbWVtICsgcmVnKQo+ICsK PiArc3RhdGljIHZvaWQgbGltYV9wcF9oYW5kbGVfaXJxKHN0cnVjdCBsaW1hX2lwICppcCwgdTMy IHN0YXRlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlwLT5kZXY7 Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlID0gZGV2LT5waXBlICsgbGlt YV9waXBlX3BwOwo+ICsKPiArICAgICAgIGlmIChzdGF0ZSAmIExJTUFfUFBfSVJRX01BU0tfRVJS T1IpIHsKPiArICAgICAgICAgICAgICAgdTMyIHN0YXR1cyA9IHBwX3JlYWQoTElNQV9QUF9TVEFU VVMpOwo+ICsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYtPmRldiwgInBwIGVycm9yIGly cSBzdGF0ZT0leCBzdGF0dXM9JXhcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUs IHN0YXR1cyk7Cj4gKwo+ICsgICAgICAgICAgICAgICBwaXBlLT5lcnJvciA9IHRydWU7Cj4gKwo+ ICsgICAgICAgICAgICAgICAvKiBtYXNrIGFsbCBpbnRlcnJ1cHRzIGJlZm9yZSBoYXJkIHJlc2V0 ICovCj4gKyAgICAgICAgICAgICAgIHBwX3dyaXRlKExJTUFfUFBfSU5UX01BU0ssIDApOwo+ICsg ICAgICAgfQo+ICsKPiArICAgICAgIHBwX3dyaXRlKExJTUFfUFBfSU5UX0NMRUFSLCBzdGF0ZSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBsaW1hX3BwX2lycV9oYW5kbGVyKGludCBp cnEsIHZvaWQgKmRhdGEpCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2lwICppcCA9IGRhdGE7 Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlwLT5kZXY7Cj4gKyAgICAgICBz dHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlID0gZGV2LT5waXBlICsgbGltYV9waXBlX3BwOwo+ ICsgICAgICAgdTMyIHN0YXRlID0gcHBfcmVhZChMSU1BX1BQX0lOVF9TVEFUVVMpOwo+ICsKPiAr ICAgICAgIC8qIGZvciBzaGFyZWQgaXJxIGNhc2UgKi8KPiArICAgICAgIGlmICghc3RhdGUpCj4g KyAgICAgICAgICAgICAgIHJldHVybiBJUlFfTk9ORTsKPiArCj4gKyAgICAgICBsaW1hX3BwX2hh bmRsZV9pcnEoaXAsIHN0YXRlKTsKPiArCj4gKyAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVz dCgmcGlwZS0+dGFzaykpCj4gKyAgICAgICAgICAgICAgIGxpbWFfc2NoZWRfcGlwZV90YXNrX2Rv bmUocGlwZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaXJxcmV0dXJuX3QgbGltYV9wcF9iY2FzdF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICpkYXRhKQo+ICt7Cj4gKyAgICAgICBpbnQgaTsKPiArICAgICAgIGlycXJldHVybl90IHJldCA9 IElSUV9OT05FOwo+ICsgICAgICAgc3RydWN0IGxpbWFfaXAgKnBwX2JjYXN0ID0gZGF0YTsKPiAr ICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqZGV2ID0gcHBfYmNhc3QtPmRldjsKPiArICAgICAg IHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVfcHA7 Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2xpbWFfbTQ1MF9wcF9mcmFtZSAqZnJhbWUgPSBwaXBlLT5j dXJyZW50X3Rhc2stPmZyYW1lOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBmcmFtZS0+ bnVtX3BwOyBpKyspIHsKPiArICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfaXAgKmlwID0gcGlw ZS0+cHJvY2Vzc29yW2ldOwo+ICsgICAgICAgICAgICAgICB1MzIgc3RhdHVzLCBzdGF0ZTsKPiAr Cj4gKyAgICAgICAgICAgICAgIGlmIChwaXBlLT5kb25lICYgKDEgPDwgaSkpCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBzdGF0dXMg cmVhZCBmaXJzdCBpbiBjYXNlIGludCBzdGF0ZSBjaGFuZ2UgaW4gdGhlIG1pZGRsZQo+ICsgICAg ICAgICAgICAgICAgKiB3aGljaCBtYXkgbWlzcyB0aGUgaW50ZXJydXB0IGhhbmRsaW5nICovCj4g KyAgICAgICAgICAgICAgIHN0YXR1cyA9IHBwX3JlYWQoTElNQV9QUF9TVEFUVVMpOwo+ICsgICAg ICAgICAgICAgICBzdGF0ZSA9IHBwX3JlYWQoTElNQV9QUF9JTlRfU1RBVFVTKTsKPiArCj4gKyAg ICAgICAgICAgICAgIGlmIChzdGF0ZSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGxpbWFf cHBfaGFuZGxlX2lycShpcCwgc3RhdGUpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9 IElSUV9IQU5ETEVEOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIGVsc2Ug ewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiBMSU1BX1BQX1NUQVRVU19S RU5ERVJJTkdfQUNUSVZFKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIHBpcGUtPmRvbmUg fD0gKDEgPDwgaSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZw aXBlLT50YXNrKSkKPiArICAgICAgICAgICAgICAgICAgICAgICBsaW1hX3NjaGVkX3BpcGVfdGFz a19kb25lKHBpcGUpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfcHBfc29mdF9yZXNldF9hc3luYyhzdHJ1Y3QgbGltYV9p cCAqaXApCj4gK3sKPiArICAgICAgIGlmIChpcC0+ZGF0YS5hc3luY19yZXNldCkKPiArICAgICAg ICAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgICAgIHBwX3dyaXRlKExJTUFfUFBfSU5UX01BU0ss IDApOwo+ICsgICAgICAgcHBfd3JpdGUoTElNQV9QUF9JTlRfUkFXU1RBVCwgTElNQV9QUF9JUlFf TUFTS19BTEwpOwo+ICsgICAgICAgcHBfd3JpdGUoTElNQV9QUF9DVFJMLCBMSU1BX1BQX0NUUkxf U09GVF9SRVNFVCk7Cj4gKyAgICAgICBpcC0+ZGF0YS5hc3luY19yZXNldCA9IHRydWU7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbGltYV9wcF9zb2Z0X3Jlc2V0X3BvbGwoc3RydWN0IGxpbWFfaXAg KmlwKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gIShwcF9yZWFkKExJTUFfUFBfU1RBVFVTKSAmIExJ TUFfUFBfU1RBVFVTX1JFTkRFUklOR19BQ1RJVkUpICYmCj4gKyAgICAgICAgICAgICAgIHBwX3Jl YWQoTElNQV9QUF9JTlRfUkFXU1RBVCkgPT0gTElNQV9QUF9JUlFfUkVTRVRfQ09NUExFVEVEOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxpbWFfcHBfc29mdF9yZXNldF9hc3luY193YWl0X29uZShz dHJ1Y3QgbGltYV9pcCAqaXApCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqZGV2 ID0gaXAtPmRldjsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgcmV0ID0gbGltYV9w b2xsX3RpbWVvdXQoaXAsIGxpbWFfcHBfc29mdF9yZXNldF9wb2xsLCAwLCAxMDApOwo+ICsgICAg ICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldi0+ZGV2LCAicHAgJXMg cmVzZXQgdGltZSBvdXRcbiIsIGxpbWFfaXBfbmFtZShpcCkpOwo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHBwX3dyaXRlKExJTUFfUFBfSU5U X0NMRUFSLCBMSU1BX1BQX0lSUV9NQVNLX0FMTCk7Cj4gKyAgICAgICBwcF93cml0ZShMSU1BX1BQ X0lOVF9NQVNLLCBMSU1BX1BQX0lSUV9NQVNLX1VTRUQpOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgbGltYV9wcF9zb2Z0X3Jlc2V0X2FzeW5jX3dhaXQoc3RydWN0 IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKyAgICAgICBpbnQgaSwgZXJyID0gMDsKPiArCj4gKyAgICAg ICBpZiAoIWlwLT5kYXRhLmFzeW5jX3Jlc2V0KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsK PiArCj4gKyAgICAgICBpZiAoaXAtPmlkID09IGxpbWFfaXBfcHBfYmNhc3QpIHsKPiArICAgICAg ICAgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXYgPSBpcC0+ZGV2Owo+ICsgICAgICAgICAg ICAgICBzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlID0gZGV2LT5waXBlICsgbGltYV9waXBl X3BwOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2xpbWFfbTQ1MF9wcF9mcmFtZSAqZnJh bWUgPSBwaXBlLT5jdXJyZW50X3Rhc2stPmZyYW1lOwo+ICsKPiArICAgICAgICAgICAgICAgZm9y IChpID0gMDsgaSA8IGZyYW1lLT5udW1fcHA7IGkrKykKPiArICAgICAgICAgICAgICAgICAgICAg ICBlcnIgfD0gbGltYV9wcF9zb2Z0X3Jlc2V0X2FzeW5jX3dhaXRfb25lKHBpcGUtPnByb2Nlc3Nv cltpXSk7Cj4gKyAgICAgICB9Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIGVyciA9 IGxpbWFfcHBfc29mdF9yZXNldF9hc3luY193YWl0X29uZShpcCk7Cj4gKwo+ICsgICAgICAgaXAt PmRhdGEuYXN5bmNfcmVzZXQgPSBmYWxzZTsKPiArICAgICAgIHJldHVybiBlcnI7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGxpbWFfcHBfd3JpdGVfZnJhbWUoc3RydWN0IGxpbWFfaXAgKmlwLCB1 MzIgKmZyYW1lLCB1MzIgKndiKQo+ICt7Cj4gKyAgICAgICBpbnQgaSwgaiwgbiA9IDA7Cj4gKwo+ ICsgICAgICAgZm9yIChpID0gMDsgaSA8IExJTUFfUFBfRlJBTUVfUkVHX05VTTsgaSsrKQo+ICsg ICAgICAgICAgICAgICB3cml0ZWwoZnJhbWVbaV0sIGlwLT5pb21lbSArIExJTUFfUFBfRlJBTUUg KyBpICogNCk7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewo+ICsgICAg ICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgTElNQV9QUF9XQl9SRUdfTlVNOyBqKyspCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgd3JpdGVsKHdiW24rK10sIGlwLT5pb21lbSArIExJTUFfUFBf V0IoaSkgKyBqICogNCk7Cj4gKyAgICAgICB9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGltYV9w cF9oYXJkX3Jlc2V0X3BvbGwoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKyAgICAgICBwcF93 cml0ZShMSU1BX1BQX1BFUkZfQ05UXzBfTElNSVQsIDB4QzAxQTAwMDApOwo+ICsgICAgICAgcmV0 dXJuIHBwX3JlYWQoTElNQV9QUF9QRVJGX0NOVF8wX0xJTUlUKSA9PSAweEMwMUEwMDAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGxpbWFfcHBfaGFyZF9yZXNldChzdHJ1Y3QgbGltYV9pcCAqaXAp Cj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2RldmljZSAqZGV2ID0gaXAtPmRldjsKPiArICAg ICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgcHBfd3JpdGUoTElNQV9QUF9QRVJGX0NOVF8wX0xJ TUlULCAweEMwRkZFMDAwKTsKPiArICAgICAgIHBwX3dyaXRlKExJTUFfUFBfSU5UX01BU0ssIDAp Owo+ICsgICAgICAgcHBfd3JpdGUoTElNQV9QUF9DVFJMLCBMSU1BX1BQX0NUUkxfRk9SQ0VfUkVT RVQpOwo+ICsgICAgICAgcmV0ID0gbGltYV9wb2xsX3RpbWVvdXQoaXAsIGxpbWFfcHBfaGFyZF9y ZXNldF9wb2xsLCAxMCwgMTAwKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAg ICAgZGV2X2VycihkZXYtPmRldiwgInBwIGhhcmQgcmVzZXQgdGltZW91dFxuIik7Cj4gKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcHBfd3JpdGUo TElNQV9QUF9QRVJGX0NOVF8wX0xJTUlULCAwKTsKPiArICAgICAgIHBwX3dyaXRlKExJTUFfUFBf SU5UX0NMRUFSLCBMSU1BX1BQX0lSUV9NQVNLX0FMTCk7Cj4gKyAgICAgICBwcF93cml0ZShMSU1B X1BQX0lOVF9NQVNLLCBMSU1BX1BQX0lSUV9NQVNLX1VTRUQpOwo+ICsgICAgICAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfcHBfcHJpbnRfdmVyc2lvbihzdHJ1Y3QgbGlt YV9pcCAqaXApCj4gK3sKPiArICAgICAgIHUzMiB2ZXJzaW9uLCBtYWpvciwgbWlub3I7Cj4gKyAg ICAgICBjaGFyICpuYW1lOwo+ICsKPiArICAgICAgIHZlcnNpb24gPSBwcF9yZWFkKExJTUFfUFBf VkVSU0lPTik7Cj4gKyAgICAgICBtYWpvciA9ICh2ZXJzaW9uID4+IDgpICYgMHhGRjsKPiArICAg ICAgIG1pbm9yID0gdmVyc2lvbiAmIDB4RkY7Cj4gKyAgICAgICBzd2l0Y2ggKHZlcnNpb24gPj4g MTYpIHsKPiArICAgICAgIGNhc2UgMHhDODA3Ogo+ICsgICAgICAgICAgIG5hbWUgPSAibWFsaTIw MCI7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSAweENFMDc6Cj4gKyAg ICAgICAgICAgICAgIG5hbWUgPSAibWFsaTMwMCI7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ ICsgICAgICAgY2FzZSAweENEMDc6Cj4gKyAgICAgICAgICAgICAgIG5hbWUgPSAibWFsaTQwMCI7 Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSAweENGMDc6Cj4gKyAgICAg ICAgICAgICAgIG5hbWUgPSAibWFsaTQ1MCI7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg ICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgbmFtZSA9ICJ1bmtub3ciOwo+ICsgICAg ICAgICAgICAgICBicmVhazsKPiArICAgICAgIH0KPiArICAgICAgIGRldl9pbmZvKGlwLT5kZXYt PmRldiwgIiVzIC0gJXMgdmVyc2lvbiBtYWpvciAlZCBtaW5vciAlZFxuIiwKPiArICAgICAgICAg ICAgICAgIGxpbWFfaXBfbmFtZShpcCksIG5hbWUsIG1ham9yLCBtaW5vcik7Cj4gK30KPiArCj4g K2ludCBsaW1hX3BwX2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7Cj4gKyAgICAgICBzdHJ1 Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlwLT5kZXY7Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsKPiAr ICAgICAgIGxpbWFfcHBfcHJpbnRfdmVyc2lvbihpcCk7Cj4gKwo+ICsgICAgICAgaXAtPmRhdGEu YXN5bmNfcmVzZXQgPSBmYWxzZTsKPiArICAgICAgIGxpbWFfcHBfc29mdF9yZXNldF9hc3luYyhp cCk7Cj4gKyAgICAgICBlcnIgPSBsaW1hX3BwX3NvZnRfcmVzZXRfYXN5bmNfd2FpdChpcCk7Cj4g KyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsKPiArICAg ICAgIGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIGlwLT5pcnEsIGxpbWFfcHBfaXJx X2hhbmRsZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUUZfU0hBUkVELCBs aW1hX2lwX25hbWUoaXApLCBpcCk7Cj4gKyAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LT5kZXYsICJwcCAlcyBmYWlsIHRvIHJlcXVlc3QgaXJxXG4iLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGxpbWFfaXBfbmFtZShpcCkpOwo+ICsgICAgICAgICAgICAg ICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4g Kwo+ICt2b2lkIGxpbWFfcHBfZmluaShzdHJ1Y3QgbGltYV9pcCAqaXApCj4gK3sKPiArCj4gK30K PiArCj4gK2ludCBsaW1hX3BwX2JjYXN0X2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKQo+ICt7Cj4g KyAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlwLT5kZXY7Cj4gKyAgICAgICBpbnQg ZXJyOwo+ICsKPiArICAgICAgIGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIGlwLT5p cnEsIGxpbWFfcHBfYmNhc3RfaXJxX2hhbmRsZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElSUUZfU0hBUkVELCBsaW1hX2lwX25hbWUoaXApLCBpcCk7Cj4gKyAgICAgICBpZiAo ZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LT5kZXYsICJwcCAlcyBmYWlsIHRv IHJlcXVlc3QgaXJxXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGxpbWFfaXBfbmFtZShp cCkpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsKPiArICAg ICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGxpbWFfcHBfYmNhc3RfZmluaShzdHJ1Y3Qg bGltYV9pcCAqaXApCj4gK3sKPiArCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGltYV9wcF90YXNr X3ZhbGlkYXRlKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaykKPiArewo+ICsg ICAgICAgdTMyIG51bV9wcDsKPiArCj4gKyAgICAgICBpZiAocGlwZS0+YmNhc3RfcHJvY2Vzc29y KSB7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fbGltYV9tNDUwX3BwX2ZyYW1lICpmID0g dGFzay0+ZnJhbWU7Cj4gKyAgICAgICAgICAgICAgIG51bV9wcCA9IGYtPm51bV9wcDsKPiArICAg ICAgIH0KPiArICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2xpbWFf bTQwMF9wcF9mcmFtZSAqZiA9IHRhc2stPmZyYW1lOwo+ICsgICAgICAgICAgICAgICBudW1fcHAg PSBmLT5udW1fcHA7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKG51bV9wcCA9PSAwIHx8 IG51bV9wcCA+IHBpcGUtPm51bV9wcm9jZXNzb3IpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBs aW1hX3BwX3Rhc2tfcnVuKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrKQo+ICt7Cj4g KyAgICAgICBpZiAocGlwZS0+YmNhc3RfcHJvY2Vzc29yKSB7Cj4gKyAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1fbGltYV9tNDUwX3BwX2ZyYW1lICpmcmFtZSA9IHRhc2stPmZyYW1lOwo+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IHBpcGUtPmJjYXN0X3Byb2Nlc3Nv ci0+ZGV2Owo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9pcCAqaXAgPSBwaXBlLT5iY2Fz dF9wcm9jZXNzb3I7Cj4gKyAgICAgICAgICAgICAgIGludCBpOwo+ICsKPiArICAgICAgICAgICAg ICAgcGlwZS0+ZG9uZSA9IDA7Cj4gKyAgICAgICAgICAgICAgIGF0b21pY19zZXQoJnBpcGUtPnRh c2ssIGZyYW1lLT5udW1fcHApOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGZyYW1lLT51c2Vf ZGxidSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGxpbWFfZGxidV9lbmFibGUoZGV2LCBm cmFtZS0+bnVtX3BwKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmZyYW1l W0xJTUFfUFBfRlJBTUUgPj4gMl0gPSBMSU1BX1ZBX1JFU0VSVkVfRExCVTsKPiArICAgICAgICAg ICAgICAgICAgICAgICBsaW1hX2RsYnVfc2V0X3JlZyhkZXYtPmlwICsgbGltYV9pcF9kbGJ1LCBm cmFtZS0+ZGxidV9yZWdzKTsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICBl bHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGltYV9kbGJ1X2Rpc2FibGUoZGV2KTsKPiAr Cj4gKyAgICAgICAgICAgICAgIGxpbWFfYmNhc3RfZW5hYmxlKGRldiwgZnJhbWUtPm51bV9wcCk7 Cj4gKwo+ICsgICAgICAgICAgICAgICBsaW1hX3BwX3NvZnRfcmVzZXRfYXN5bmNfd2FpdChpcCk7 Cj4gKwo+ICsgICAgICAgICAgICAgICBsaW1hX3BwX3dyaXRlX2ZyYW1lKGlwLCBmcmFtZS0+ZnJh bWUsIGZyYW1lLT53Yik7Cj4gKwo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZnJh bWUtPm51bV9wcDsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpbWFf aXAgKmlwID0gcGlwZS0+cHJvY2Vzc29yW2ldOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg ICBwcF93cml0ZShMSU1BX1BQX1NUQUNLLCBmcmFtZS0+ZnJhZ21lbnRfc3RhY2tfYWRkcmVzc1tp XSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS0+dXNlX2RsYnUpCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcF93cml0ZShMSU1BX1BQX0ZSQU1FLCBmcmFt ZS0+cGxidV9hcnJheV9hZGRyZXNzW2ldKTsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAg ICAgICAgICAgICAgcHBfd3JpdGUoTElNQV9QUF9DVFJMLCBMSU1BX1BQX0NUUkxfU1RBUlRfUkVO REVSSU5HKTsKPiArICAgICAgIH0KPiArICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2xpbWFfbTQwMF9wcF9mcmFtZSAqZnJhbWUgPSB0YXNrLT5mcmFtZTsKPiArICAg ICAgICAgICAgICAgaW50IGk7Cj4gKwo+ICsgICAgICAgICAgICAgICBhdG9taWNfc2V0KCZwaXBl LT50YXNrLCBmcmFtZS0+bnVtX3BwKTsKPiArCj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBmcmFtZS0+bnVtX3BwOyBpKyspIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbGltYV9pcCAqaXAgPSBwaXBlLT5wcm9jZXNzb3JbaV07Cj4gKwo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGZyYW1lLT5mcmFtZVtMSU1BX1BQX0ZSQU1FID4+IDJdID0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5wbGJ1X2FycmF5X2FkZHJlc3NbaV07Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmZyYW1lW0xJTUFfUFBfU1RBQ0sgPj4gMl0gPQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmZyYWdtZW50X3N0YWNrX2Fk ZHJlc3NbaV07Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGxpbWFfcHBfc29mdF9yZXNl dF9hc3luY193YWl0KGlwKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGltYV9wcF93 cml0ZV9mcmFtZShpcCwgZnJhbWUtPmZyYW1lLCBmcmFtZS0+d2IpOwo+ICsKPiArICAgICAgICAg ICAgICAgICAgICAgICBwcF93cml0ZShMSU1BX1BQX0NUUkwsIExJTUFfUFBfQ1RSTF9TVEFSVF9S RU5ERVJJTkcpOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGxpbWFfcHBfdGFza19maW5pKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUp Cj4gK3sKPiArICAgICAgIGlmIChwaXBlLT5iY2FzdF9wcm9jZXNzb3IpCj4gKyAgICAgICAgICAg ICAgIGxpbWFfcHBfc29mdF9yZXNldF9hc3luYyhwaXBlLT5iY2FzdF9wcm9jZXNzb3IpOwo+ICsg ICAgICAgZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIGludCBpOwo+ICsgICAgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgcGlwZS0+bnVtX3Byb2Nlc3NvcjsgaSsrKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGxpbWFfcHBfc29mdF9yZXNldF9hc3luYyhwaXBlLT5wcm9jZXNzb3JbaV0pOwo+ ICsgICAgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBsaW1hX3BwX3Rhc2tfZXJyb3Ioc3Ry dWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSkKPiArewo+ICsgICAgICAgaW50IGk7Cj4gKwo+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IHBpcGUtPm51bV9wcm9jZXNzb3I7IGkrKykgewo+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgbGltYV9pcCAqaXAgPSBwaXBlLT5wcm9jZXNzb3JbaV07Cj4gKwo+ ICsgICAgICAgICAgICAgICBkZXZfZXJyKGlwLT5kZXYtPmRldiwgInBwIHRhc2sgZXJyb3IgJWQg aW50X3N0YXRlPSV4IHN0YXR1cz0leFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBpLCBw cF9yZWFkKExJTUFfUFBfSU5UX1NUQVRVUyksIHBwX3JlYWQoTElNQV9QUF9TVEFUVVMpKTsKPiAr Cj4gKyAgICAgICAgICAgICAgIGxpbWFfcHBfaGFyZF9yZXNldChpcCk7Cj4gKyAgICAgICB9Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfcHBfdGFza19tbXVfZXJyb3Ioc3RydWN0IGxpbWFf c2NoZWRfcGlwZSAqcGlwZSkKPiArewo+ICsgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3Qo JnBpcGUtPnRhc2spKQo+ICsgICAgICAgICAgICAgICBsaW1hX3NjaGVkX3BpcGVfdGFza19kb25l KHBpcGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmxpbWFfcHBfdGFz a19zbGFiID0gTlVMTDsKPiArc3RhdGljIGludCBsaW1hX3BwX3Rhc2tfc2xhYl9yZWZjbnQgPSAw Owo+ICsKPiAraW50IGxpbWFfcHBfcGlwZV9pbml0KHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KQo+ ICt7Cj4gKyAgICAgICBpbnQgZnJhbWVfc2l6ZTsKPiArICAgICAgIHN0cnVjdCBsaW1hX3NjaGVk X3BpcGUgKnBpcGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVfcHA7Cj4gKwo+ICsgICAgICAgaWYg KGRldi0+aWQgPT0gbGltYV9ncHVfbWFsaTQwMCkKPiArICAgICAgICAgICAgICAgZnJhbWVfc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgZHJtX2xpbWFfbTQwMF9wcF9mcmFtZSk7Cj4gKyAgICAgICBlbHNl Cj4gKyAgICAgICAgICAgICAgIGZyYW1lX3NpemUgPSBzaXplb2Yoc3RydWN0IGRybV9saW1hX200 NTBfcHBfZnJhbWUpOwo+ICsKPiArICAgICAgIGlmICghbGltYV9wcF90YXNrX3NsYWIpIHsKPiAr ICAgICAgICAgICAgICAgbGltYV9wcF90YXNrX3NsYWIgPSBrbWVtX2NhY2hlX2NyZWF0ZV91c2Vy Y29weSgKPiArICAgICAgICAgICAgICAgICAgICAgICAibGltYV9wcF90YXNrIiwgc2l6ZW9mKHN0 cnVjdCBsaW1hX3NjaGVkX3Rhc2spICsgZnJhbWVfc2l6ZSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAwLCBTTEFCX0hXQ0FDSEVfQUxJR04sIHNpemVvZihzdHJ1Y3QgbGltYV9zY2hlZF90YXNr KSwKPiArICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9zaXplLCBOVUxMKTsKPiArICAgICAg ICAgICAgICAgaWYgKCFsaW1hX3BwX3Rhc2tfc2xhYikKPiArICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLUVOT01FTTsKPiArICAgICAgIH0KPiArICAgICAgIGxpbWFfcHBfdGFza19zbGFi X3JlZmNudCsrOwo+ICsKPiArICAgICAgIHBpcGUtPmZyYW1lX3NpemUgPSBmcmFtZV9zaXplOwo+ ICsgICAgICAgcGlwZS0+dGFza19zbGFiID0gbGltYV9wcF90YXNrX3NsYWI7Cj4gKwo+ICsgICAg ICAgcGlwZS0+dGFza192YWxpZGF0ZSA9IGxpbWFfcHBfdGFza192YWxpZGF0ZTsKPiArICAgICAg IHBpcGUtPnRhc2tfcnVuID0gbGltYV9wcF90YXNrX3J1bjsKPiArICAgICAgIHBpcGUtPnRhc2tf ZmluaSA9IGxpbWFfcHBfdGFza19maW5pOwo+ICsgICAgICAgcGlwZS0+dGFza19lcnJvciA9IGxp bWFfcHBfdGFza19lcnJvcjsKPiArICAgICAgIHBpcGUtPnRhc2tfbW11X2Vycm9yID0gbGltYV9w cF90YXNrX21tdV9lcnJvcjsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArdm9p ZCBsaW1hX3BwX3BpcGVfZmluaShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKPiArewo+ICsgICAg ICAgaWYgKCEtLWxpbWFfcHBfdGFza19zbGFiX3JlZmNudCkgewo+ICsgICAgICAgICAgICAgICBr bWVtX2NhY2hlX2Rlc3Ryb3kobGltYV9wcF90YXNrX3NsYWIpOwo+ICsgICAgICAgICAgICAgICBs aW1hX3BwX3Rhc2tfc2xhYiA9IE5VTEw7Cj4gKyAgICAgICB9Cj4gK30KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9wcC5oIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGlt YV9wcC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY4M2Y4 Y2I0ZDMwYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1h X3BwLmgKPiBAQCAtMCwwICsxLDE5IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wIE9SIE1JVCAqLwo+ICsvKiBDb3B5cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5dXE4 MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lmbmRlZiBfX0xJTUFfUFBfSF9fCj4gKyNkZWZpbmUg X19MSU1BX1BQX0hfXwo+ICsKPiArc3RydWN0IGxpbWFfaXA7Cj4gK3N0cnVjdCBsaW1hX2Rldmlj ZTsKPiArCj4gK2ludCBsaW1hX3BwX2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKTsKPiArdm9pZCBs aW1hX3BwX2Zpbmkoc3RydWN0IGxpbWFfaXAgKmlwKTsKPiArCj4gK2ludCBsaW1hX3BwX2JjYXN0 X2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKTsKPiArdm9pZCBsaW1hX3BwX2JjYXN0X2Zpbmkoc3Ry dWN0IGxpbWFfaXAgKmlwKTsKPiArCj4gK2ludCBsaW1hX3BwX3BpcGVfaW5pdChzdHJ1Y3QgbGlt YV9kZXZpY2UgKmRldik7Cj4gK3ZvaWQgbGltYV9wcF9waXBlX2Zpbmkoc3RydWN0IGxpbWFfZGV2 aWNlICpkZXYpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9yZWdzLmgKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDVhZGU4ZmM4OTAxCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfcmVncy5oCj4gQEAg LTAsMCArMSwyOTggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8K PiArLyogQ29weXJpZ2h0IDIwMTAtMjAxNyBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KPiArICogQ29weXJpZ2h0IDIwMTctMjAxOCBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4K PiArICovCj4gKwo+ICsjaWZuZGVmIF9fTElNQV9SRUdTX0hfXwo+ICsjZGVmaW5lIF9fTElNQV9S RUdTX0hfXwo+ICsKPiArLyogVGhpcyBmaWxlJ3MgcmVnaXN0ZXIgZGVmaW5pdGlvbiBpcyBjb2xs ZWN0ZWQgZnJvbSB0aGUKPiArICogb2ZmaWNpYWwgQVJNIE1hbGkgVXRnYXJkIEdQVSBrZXJuZWwg ZHJpdmVyIHNvdXJjZSBjb2RlCj4gKyAqLwo+ICsKPiArLyogUE1VIHJlZ3MgKi8KPiArI2RlZmlu ZSBMSU1BX1BNVV9QT1dFUl9VUCAgICAgICAgICAgICAgICAgIDB4MDAKPiArI2RlZmluZSBMSU1B X1BNVV9QT1dFUl9ET1dOICAgICAgICAgICAgICAgIDB4MDQKPiArI2RlZmluZSAgIExJTUFfUE1V X1BPV0VSX0dQMF9NQVNLICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lICAgTElNQV9QTVVfUE9X RVJfTDJfTUFTSyAgICAgICAgICAgQklUKDEpCj4gKyNkZWZpbmUgICBMSU1BX1BNVV9QT1dFUl9Q UF9NQVNLKGkpICAgICAgICBCSVQoMiArIGkpCj4gKwo+ICsvKgo+ICsgKiBPbiBNYWxpNDUwIGVh Y2ggYmxvY2sgYXV0b21hdGljYWxseSBzdGFydHMgdXAgaXRzIGNvcnJlc3BvbmRpbmcgTDIKPiAr ICogYW5kIHRoZSBQUHMgYXJlIG5vdCBmdWxseSBpbmRlcGVuZGVudCBjb250cm9sbGFibGUuCj4g KyAqIEluc3RlYWQgUFAwLCBQUDEtMyBhbmQgUFA0LTcgY2FuIGJlIHR1cm5lZCBvbiBvciBvZmYu Cj4gKyAqLwo+ICsjZGVmaW5lICAgTElNQTQ1MF9QTVVfUE9XRVJfUFAwX01BU0sgICAgICAgQklU KDEpCj4gKyNkZWZpbmUgICBMSU1BNDUwX1BNVV9QT1dFUl9QUDEzX01BU0sgICAgICBCSVQoMikK PiArI2RlZmluZSAgIExJTUE0NTBfUE1VX1BPV0VSX1BQNDdfTUFTSyAgICAgIEJJVCgzKQo+ICsK PiArI2RlZmluZSBMSU1BX1BNVV9TVEFUVVMgICAgICAgICAgICAgICAgICAgIDB4MDgKPiArI2Rl ZmluZSBMSU1BX1BNVV9JTlRfTUFTSyAgICAgICAgICAgICAgICAgIDB4MEMKPiArI2RlZmluZSBM SU1BX1BNVV9JTlRfUkFXU1RBVCAgICAgICAgICAgICAgIDB4MTAKPiArI2RlZmluZSBMSU1BX1BN VV9JTlRfQ0xFQVIgICAgICAgICAgICAgICAgIDB4MTgKPiArI2RlZmluZSAgIExJTUFfUE1VX0lO VF9DTURfTUFTSyAgICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIExJTUFfUE1VX1NXX0RFTEFZ ICAgICAgICAgICAgICAgICAgMHgxQwo+ICsKPiArLyogTDIgY2FjaGUgcmVncyAqLwo+ICsjZGVm aW5lIExJTUFfTDJfQ0FDSEVfU0laRSAgICAgICAgICAgICAgICAgICAweDAwMDQKPiArI2RlZmlu ZSBMSU1BX0wyX0NBQ0hFX1NUQVRVUyAgICAgICAgICAgICAgICAgMHgwMDA4Cj4gKyNkZWZpbmUg ICBMSU1BX0wyX0NBQ0hFX1NUQVRVU19DT01NQU5EX0JVU1kgIEJJVCgwKQo+ICsjZGVmaW5lICAg TElNQV9MMl9DQUNIRV9TVEFUVVNfREFUQV9CVVNZICAgICBCSVQoMSkKPiArI2RlZmluZSBMSU1B X0wyX0NBQ0hFX0NPTU1BTkQgICAgICAgICAgICAgICAgMHgwMDEwCj4gKyNkZWZpbmUgICBMSU1B X0wyX0NBQ0hFX0NPTU1BTkRfQ0xFQVJfQUxMICAgIEJJVCgwKQo+ICsjZGVmaW5lIExJTUFfTDJf Q0FDSEVfQ0xFQVJfUEFHRSAgICAgICAgICAgICAweDAwMTQKPiArI2RlZmluZSBMSU1BX0wyX0NB Q0hFX01BWF9SRUFEUyAgICAgICAgICAgICAgMHgwMDE4Cj4gKyNkZWZpbmUgTElNQV9MMl9DQUNI RV9FTkFCTEUgICAgICAgICAgICAgICAgIDB4MDAxQwo+ICsjZGVmaW5lICAgTElNQV9MMl9DQUNI RV9FTkFCTEVfQUNDRVNTICAgICAgICBCSVQoMCkKPiArI2RlZmluZSAgIExJTUFfTDJfQ0FDSEVf RU5BQkxFX1JFQURfQUxMT0NBVEUgQklUKDEpCj4gKyNkZWZpbmUgTElNQV9MMl9DQUNIRV9QRVJG Q05UX1NSQzAgICAgICAgICAgIDB4MDAyMAo+ICsjZGVmaW5lIExJTUFfTDJfQ0FDSEVfUEVSRkNO VF9WQUwwICAgICAgICAgICAweDAwMjQKPiArI2RlZmluZSBMSU1BX0wyX0NBQ0hFX1BFUkZDTlRf U1JDMSAgICAgICAgICAgMHgwMDI4Cj4gKyNkZWZpbmUgTElNQV9MMl9DQUNIRV9FUkZDTlRfVkFM MSAgICAgICAgICAgIDB4MDAyQwo+ICsKPiArLyogR1AgcmVncyAqLwo+ICsjZGVmaW5lIExJTUFf R1BfVlNDTF9TVEFSVF9BRERSICAgICAgICAgICAgICAgIDB4MDAKPiArI2RlZmluZSBMSU1BX0dQ X1ZTQ0xfRU5EX0FERFIgICAgICAgICAgICAgICAgICAweDA0Cj4gKyNkZWZpbmUgTElNQV9HUF9Q TEJVQ0xfU1RBUlRfQUREUiAgICAgICAgICAgICAgMHgwOAo+ICsjZGVmaW5lIExJTUFfR1BfUExC VUNMX0VORF9BRERSICAgICAgICAgICAgICAgIDB4MGMKPiArI2RlZmluZSBMSU1BX0dQX1BMQlVf QUxMT0NfU1RBUlRfQUREUiAgICAgICAgICAweDEwCj4gKyNkZWZpbmUgTElNQV9HUF9QTEJVX0FM TE9DX0VORF9BRERSICAgICAgICAgICAgMHgxNAo+ICsjZGVmaW5lIExJTUFfR1BfQ01EICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MjAKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX1NUQVJU X1ZTICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX1NUQVJU X1BMQlUgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX1VQREFU RV9QTEJVX0FMTE9DICAgICAgICBCSVQoNCkKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX1JFU0VU ICAgICAgICAgICAgICAgICAgICBCSVQoNSkKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX0ZPUkNF X0hBTkcgICAgICAgICAgICAgICBCSVQoNikKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX1NUT1Bf QlVTICAgICAgICAgICAgICAgICBCSVQoOSkKPiArI2RlZmluZSAgIExJTUFfR1BfQ01EX1NPRlRf UkVTRVQgICAgICAgICAgICAgICBCSVQoMTApCj4gKyNkZWZpbmUgTElNQV9HUF9JTlRfUkFXU1RB VCAgICAgICAgICAgICAgICAgICAgMHgyNAo+ICsjZGVmaW5lIExJTUFfR1BfSU5UX0NMRUFSICAg ICAgICAgICAgICAgICAgICAgIDB4MjgKPiArI2RlZmluZSBMSU1BX0dQX0lOVF9NQVNLICAgICAg ICAgICAgICAgICAgICAgICAweDJDCj4gKyNkZWZpbmUgTElNQV9HUF9JTlRfU1RBVCAgICAgICAg ICAgICAgICAgICAgICAgMHgzMAo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfVlNfRU5EX0NNRF9M U1QgICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfUExCVV9FTkRfQ01E X0xTVCAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfUExCVV9PVVRfT0Zf TUVNICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfVlNfU0VNX0lSUSAg ICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfUExCVV9TRU1fSVJR ICAgICAgICAgICAgIEJJVCg0KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfSEFORyAgICAgICAg ICAgICAgICAgICAgIEJJVCg1KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfRk9SQ0VfSEFORyAg ICAgICAgICAgICAgIEJJVCg2KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfUEVSRl9DTlRfMF9M SU1JVCAgICAgICAgIEJJVCg3KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfUEVSRl9DTlRfMV9M SU1JVCAgICAgICAgIEJJVCg4KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfV1JJVEVfQk9VTkRf RVJSICAgICAgICAgIEJJVCg5KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfU1lOQ19FUlJPUiAg ICAgICAgICAgICAgIEJJVCgxMCkKPiArI2RlZmluZSAgIExJTUFfR1BfSVJRX0FYSV9CVVNfRVJS T1IgICAgICAgICAgICBCSVQoMTEpCj4gKyNkZWZpbmUgICBMSU1BX0dQX0lSUV9BWElfQlVTX1NU T1BQRUQgICAgICAgICAgQklUKDEyKQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfVlNfSU5WQUxJ RF9DTUQgICAgICAgICAgIEJJVCgxMykKPiArI2RlZmluZSAgIExJTUFfR1BfSVJRX1BMQl9JTlZB TElEX0NNRCAgICAgICAgICBCSVQoMTQpCj4gKyNkZWZpbmUgICBMSU1BX0dQX0lSUV9SRVNFVF9D T01QTEVURUQgICAgICAgICAgQklUKDE5KQo+ICsjZGVmaW5lICAgTElNQV9HUF9JUlFfU0VNQVBI T1JFX1VOREVSRkxPVyAgICAgIEJJVCgyMCkKPiArI2RlZmluZSAgIExJTUFfR1BfSVJRX1NFTUFQ SE9SRV9PVkVSRkxPVyAgICAgICBCSVQoMjEpCj4gKyNkZWZpbmUgICBMSU1BX0dQX0lSUV9QVFJf QVJSQVlfT1VUX09GX0JPVU5EUyAgQklUKDIyKQo+ICsjZGVmaW5lIExJTUFfR1BfV1JJVEVfQk9V TkRfTE9XICAgICAgICAgICAgICAgIDB4MzQKPiArI2RlZmluZSBMSU1BX0dQX1BFUkZfQ05UXzBf RU5BQkxFICAgICAgICAgICAgICAweDNDCj4gKyNkZWZpbmUgTElNQV9HUF9QRVJGX0NOVF8xX0VO QUJMRSAgICAgICAgICAgICAgMHg0MAo+ICsjZGVmaW5lIExJTUFfR1BfUEVSRl9DTlRfMF9TUkMg ICAgICAgICAgICAgICAgIDB4NDQKPiArI2RlZmluZSBMSU1BX0dQX1BFUkZfQ05UXzFfU1JDICAg ICAgICAgICAgICAgICAweDQ4Cj4gKyNkZWZpbmUgTElNQV9HUF9QRVJGX0NOVF8wX1ZBTFVFICAg ICAgICAgICAgICAgMHg0Qwo+ICsjZGVmaW5lIExJTUFfR1BfUEVSRl9DTlRfMV9WQUxVRSAgICAg ICAgICAgICAgIDB4NTAKPiArI2RlZmluZSBMSU1BX0dQX1BFUkZfQ05UXzBfTElNSVQgICAgICAg ICAgICAgICAweDU0Cj4gKyNkZWZpbmUgTElNQV9HUF9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgMHg2OAo+ICsjZGVmaW5lICAgTElNQV9HUF9TVEFUVVNfVlNfQUNUSVZFICAgICAgICAg ICAgIEJJVCgxKQo+ICsjZGVmaW5lICAgTElNQV9HUF9TVEFUVVNfQlVTX1NUT1BQRUQgICAgICAg ICAgIEJJVCgyKQo+ICsjZGVmaW5lICAgTElNQV9HUF9TVEFUVVNfUExCVV9BQ1RJVkUgICAgICAg ICAgIEJJVCgzKQo+ICsjZGVmaW5lICAgTElNQV9HUF9TVEFUVVNfQlVTX0VSUk9SICAgICAgICAg ICAgIEJJVCg2KQo+ICsjZGVmaW5lICAgTElNQV9HUF9TVEFUVVNfV1JJVEVfQk9VTkRfRVJSICAg ICAgIEJJVCg4KQo+ICsjZGVmaW5lIExJTUFfR1BfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAg ICAgIDB4NkMKPiArI2RlZmluZSBMSU1BX0dQX1ZTQ0xfU1RBUlRfQUREUl9SRUFEICAgICAgICAg ICAweDgwCj4gKyNkZWZpbmUgTElNQV9HUF9QTEJDTF9TVEFSVF9BRERSX1JFQUQgICAgICAgICAg MHg4NAo+ICsjZGVmaW5lIExJTUFfR1BfQ09OVFJfQVhJX0JVU19FUlJPUl9TVEFUICAgICAgIDB4 OTQKPiArCj4gKyNkZWZpbmUgTElNQV9HUF9JUlFfTUFTS19BTEwgICAgICAgICAgICAgIFwKPiAr ICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIExJ TUFfR1BfSVJRX1ZTX0VORF9DTURfTFNUICAgICAgfCBcCj4gKyAgICAgICAgTElNQV9HUF9JUlFf UExCVV9FTkRfQ01EX0xTVCAgICB8IFwKPiArICAgICAgICBMSU1BX0dQX0lSUV9QTEJVX09VVF9P Rl9NRU0gICAgIHwgXAo+ICsgICAgICAgIExJTUFfR1BfSVJRX1ZTX1NFTV9JUlEgICAgICAgICAg fCBcCj4gKyAgICAgICAgTElNQV9HUF9JUlFfUExCVV9TRU1fSVJRICAgICAgICB8IFwKPiArICAg ICAgICBMSU1BX0dQX0lSUV9IQU5HICAgICAgICAgICAgICAgIHwgXAo+ICsgICAgICAgIExJTUFf R1BfSVJRX0ZPUkNFX0hBTkcgICAgICAgICAgfCBcCj4gKyAgICAgICAgTElNQV9HUF9JUlFfUEVS Rl9DTlRfMF9MSU1JVCAgICB8IFwKPiArICAgICAgICBMSU1BX0dQX0lSUV9QRVJGX0NOVF8xX0xJ TUlUICAgIHwgXAo+ICsgICAgICAgIExJTUFfR1BfSVJRX1dSSVRFX0JPVU5EX0VSUiAgICAgfCBc Cj4gKyAgICAgICAgTElNQV9HUF9JUlFfU1lOQ19FUlJPUiAgICAgICAgICB8IFwKPiArICAgICAg ICBMSU1BX0dQX0lSUV9BWElfQlVTX0VSUk9SICAgICAgIHwgXAo+ICsgICAgICAgIExJTUFfR1Bf SVJRX0FYSV9CVVNfU1RPUFBFRCAgICAgfCBcCj4gKyAgICAgICAgTElNQV9HUF9JUlFfVlNfSU5W QUxJRF9DTUQgICAgICB8IFwKPiArICAgICAgICBMSU1BX0dQX0lSUV9QTEJfSU5WQUxJRF9DTUQg ICAgIHwgXAo+ICsgICAgICAgIExJTUFfR1BfSVJRX1JFU0VUX0NPTVBMRVRFRCAgICAgfCBcCj4g KyAgICAgICAgTElNQV9HUF9JUlFfU0VNQVBIT1JFX1VOREVSRkxPVyB8IFwKPiArICAgICAgICBM SU1BX0dQX0lSUV9TRU1BUEhPUkVfT1ZFUkZMT1cgIHwgXAo+ICsgICAgICAgIExJTUFfR1BfSVJR X1BUUl9BUlJBWV9PVVRfT0ZfQk9VTkRTKQo+ICsKPiArI2RlZmluZSBMSU1BX0dQX0lSUV9NQVNL X0VSUk9SICAgICAgICAgICAgIFwKPiArICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICsgICAgICAgIExJTUFfR1BfSVJRX1BMQlVfT1VUX09GX01FTSAgICAgfCBc Cj4gKyAgICAgICAgTElNQV9HUF9JUlFfRk9SQ0VfSEFORyAgICAgICAgICB8IFwKPiArICAgICAg ICBMSU1BX0dQX0lSUV9XUklURV9CT1VORF9FUlIgICAgIHwgXAo+ICsgICAgICAgIExJTUFfR1Bf SVJRX1NZTkNfRVJST1IgICAgICAgICAgfCBcCj4gKyAgICAgICAgTElNQV9HUF9JUlFfQVhJX0JV U19FUlJPUiAgICAgICB8IFwKPiArICAgICAgICBMSU1BX0dQX0lSUV9WU19JTlZBTElEX0NNRCAg ICAgIHwgXAo+ICsgICAgICAgIExJTUFfR1BfSVJRX1BMQl9JTlZBTElEX0NNRCAgICAgfCBcCj4g KyAgICAgICAgTElNQV9HUF9JUlFfU0VNQVBIT1JFX1VOREVSRkxPVyB8IFwKPiArICAgICAgICBM SU1BX0dQX0lSUV9TRU1BUEhPUkVfT1ZFUkZMT1cgIHwgXAo+ICsgICAgICAgIExJTUFfR1BfSVJR X1BUUl9BUlJBWV9PVVRfT0ZfQk9VTkRTKQo+ICsKPiArI2RlZmluZSBMSU1BX0dQX0lSUV9NQVNL X1VTRUQgICAgICAgICAgICAgXAo+ICsgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAgTElNQV9HUF9JUlFfVlNfRU5EX0NNRF9MU1QgICAgICB8IFwK PiArICAgICAgICBMSU1BX0dQX0lSUV9QTEJVX0VORF9DTURfTFNUICAgIHwgXAo+ICsgICAgICAg IExJTUFfR1BfSVJRX01BU0tfRVJST1IpCj4gKwo+ICsvKiBQUCByZWdzICovCj4gKyNkZWZpbmUg TElNQV9QUF9GUkFNRSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAo+ICsjZGVmaW5lIExJ TUFfUFBfUlNXICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNAo+ICsjZGVmaW5lIExJTUFf UFBfU1RBQ0sgICAgICAgICAgICAgICAgICAgICAgIDB4MDAzMAo+ICsjZGVmaW5lIExJTUFfUFBf U1RBQ0tfU0laRSAgICAgICAgICAgICAgICAgIDB4MDAzNAo+ICsjZGVmaW5lIExJTUFfUFBfT1JJ R0lOX09GRlNFVF9YICAgICAgICAgICAgICAgICAgICAgMHgwMDQwCj4gKyNkZWZpbmUgTElNQV9Q UF9XQihpKSAgICAgICAgICAgICAgICAgICAgICAgKDB4MDEwMCAqIChpICsgMSkpCj4gKyNkZWZp bmUgICBMSU1BX1BQX1dCX1NPVVJDRV9TRUxFQ1QgICAgICAgICAgIDB4MDAwMAo+ICsjZGVmaW5l ICAgICAgICAgIExJTUFfUFBfV0JfU09VUkNFX0FERFIgICAgICAgICAgICAgMHgwMDA0Cj4gKwo+ ICsjZGVmaW5lIExJTUFfUFBfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAweDEwMDAKPiAr I2RlZmluZSBMSU1BX1BQX0NVUlJFTlRfUkVORF9MSVNUX0FERFIgICAgICAgMHgxMDA0Cj4gKyNk ZWZpbmUgTElNQV9QUF9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwOAo+ICsjZGVm aW5lICAgTElNQV9QUF9TVEFUVVNfUkVOREVSSU5HX0FDVElWRSAgICBCSVQoMCkKPiArI2RlZmlu ZSAgIExJTUFfUFBfU1RBVFVTX0JVU19TVE9QUEVEICAgICAgICAgQklUKDQpCj4gKyNkZWZpbmUg TElNQV9QUF9DVFJMICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwYwo+ICsjZGVmaW5lICAg TElNQV9QUF9DVFJMX1NUT1BfQlVTICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSAgIExJ TUFfUFBfQ1RSTF9GTFVTSF9DQUNIRVMgICAgICAgICAgQklUKDMpCj4gKyNkZWZpbmUgICBMSU1B X1BQX0NUUkxfRk9SQ0VfUkVTRVQgICAgICAgICAgIEJJVCg1KQo+ICsjZGVmaW5lICAgTElNQV9Q UF9DVFJMX1NUQVJUX1JFTkRFUklORyAgICAgICBCSVQoNikKPiArI2RlZmluZSAgIExJTUFfUFBf Q1RSTF9TT0ZUX1JFU0VUICAgICAgICAgICAgQklUKDcpCj4gKyNkZWZpbmUgTElNQV9QUF9JTlRf UkFXU1RBVCAgICAgICAgICAgICAgICAgIDB4MTAyMAo+ICsjZGVmaW5lIExJTUFfUFBfSU5UX0NM RUFSICAgICAgICAgICAgICAgICAgICAweDEwMjQKPiArI2RlZmluZSBMSU1BX1BQX0lOVF9NQVNL ICAgICAgICAgICAgICAgICAgICAgMHgxMDI4Cj4gKyNkZWZpbmUgTElNQV9QUF9JTlRfU1RBVFVT ICAgICAgICAgICAgICAgICAgIDB4MTAyYwo+ICsjZGVmaW5lICAgTElNQV9QUF9JUlFfRU5EX09G X0ZSQU1FICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSAgIExJTUFfUFBfSVJRX0VORF9PRl9U SUxFICAgICAgICAgICAgQklUKDEpCj4gKyNkZWZpbmUgICBMSU1BX1BQX0lSUV9IQU5HICAgICAg ICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lICAgTElNQV9QUF9JUlFfRk9SQ0VfSEFORyAg ICAgICAgICAgICBCSVQoMykKPiArI2RlZmluZSAgIExJTUFfUFBfSVJRX0JVU19FUlJPUiAgICAg ICAgICAgICAgQklUKDQpCj4gKyNkZWZpbmUgICBMSU1BX1BQX0lSUV9CVVNfU1RPUCAgICAgICAg ICAgICAgIEJJVCg1KQo+ICsjZGVmaW5lICAgTElNQV9QUF9JUlFfQ05UXzBfTElNSVQgICAgICAg ICAgICBCSVQoNikKPiArI2RlZmluZSAgIExJTUFfUFBfSVJRX0NOVF8xX0xJTUlUICAgICAgICAg ICAgQklUKDcpCj4gKyNkZWZpbmUgICBMSU1BX1BQX0lSUV9XUklURV9CT1VOREFSWV9FUlJPUiAg IEJJVCg4KQo+ICsjZGVmaW5lICAgTElNQV9QUF9JUlFfSU5WQUxJRF9QTElTVF9DT01NQU5EICBC SVQoOSkKPiArI2RlZmluZSAgIExJTUFfUFBfSVJRX0NBTExfU1RBQ0tfVU5ERVJGTE9XICAgQklU KDEwKQo+ICsjZGVmaW5lICAgTElNQV9QUF9JUlFfQ0FMTF9TVEFDS19PVkVSRkxPVyAgICBCSVQo MTEpCj4gKyNkZWZpbmUgICBMSU1BX1BQX0lSUV9SRVNFVF9DT01QTEVURUQgICAgICAgIEJJVCgx MikKPiArI2RlZmluZSBMSU1BX1BQX1dSSVRFX0JPVU5EQVJZX0xPVyAgICAgICAgICAgMHgxMDQ0 Cj4gKyNkZWZpbmUgTElNQV9QUF9CVVNfRVJST1JfU1RBVFVTICAgICAgICAgICAgIDB4MTA1MAo+ ICsjZGVmaW5lIExJTUFfUFBfUEVSRl9DTlRfMF9FTkFCTEUgICAgICAgICAgICAweDEwODAKPiAr I2RlZmluZSBMSU1BX1BQX1BFUkZfQ05UXzBfU1JDICAgICAgICAgICAgICAgMHgxMDg0Cj4gKyNk ZWZpbmUgTElNQV9QUF9QRVJGX0NOVF8wX0xJTUlUICAgICAgICAgICAgIDB4MTA4OAo+ICsjZGVm aW5lIExJTUFfUFBfUEVSRl9DTlRfMF9WQUxVRSAgICAgICAgICAgICAweDEwOGMKPiArI2RlZmlu ZSBMSU1BX1BQX1BFUkZfQ05UXzFfRU5BQkxFICAgICAgICAgICAgMHgxMGEwCj4gKyNkZWZpbmUg TElNQV9QUF9QRVJGX0NOVF8xX1NSQyAgICAgICAgICAgICAgIDB4MTBhNAo+ICsjZGVmaW5lIExJ TUFfUFBfUEVSRl9DTlRfMV9MSU1JVCAgICAgICAgICAgICAweDEwYTgKPiArI2RlZmluZSBMSU1B X1BQX1BFUkZfQ05UXzFfVkFMVUUgICAgICAgICAgICAgMHgxMGFjCj4gKyNkZWZpbmUgTElNQV9Q UF9QRVJGTU9OX0NPTlRSICAgICAgICAgICAgICAgIDB4MTBiMAo+ICsjZGVmaW5lIExJTUFfUFBf UEVSRk1PTl9CQVNFICAgICAgICAgICAgICAgICAweDEwYjQKPiArCj4gKyNkZWZpbmUgTElNQV9Q UF9JUlFfTUFTS19BTEwgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgTElNQV9QUF9JUlFfRU5EX09GX0ZS QU1FICAgICAgICAgIHwgXAo+ICsgICAgICAgIExJTUFfUFBfSVJRX0VORF9PRl9USUxFICAgICAg ICAgICB8IFwKPiArICAgICAgICBMSU1BX1BQX0lSUV9IQU5HICAgICAgICAgICAgICAgICAgfCBc Cj4gKyAgICAgICAgTElNQV9QUF9JUlFfRk9SQ0VfSEFORyAgICAgICAgICAgIHwgXAo+ICsgICAg ICAgIExJTUFfUFBfSVJRX0JVU19FUlJPUiAgICAgICAgICAgICB8IFwKPiArICAgICAgICBMSU1B X1BQX0lSUV9CVVNfU1RPUCAgICAgICAgICAgICAgfCBcCj4gKyAgICAgICAgTElNQV9QUF9JUlFf Q05UXzBfTElNSVQgICAgICAgICAgIHwgXAo+ICsgICAgICAgIExJTUFfUFBfSVJRX0NOVF8xX0xJ TUlUICAgICAgICAgICB8IFwKPiArICAgICAgICBMSU1BX1BQX0lSUV9XUklURV9CT1VOREFSWV9F UlJPUiAgfCBcCj4gKyAgICAgICAgTElNQV9QUF9JUlFfSU5WQUxJRF9QTElTVF9DT01NQU5EIHwg XAo+ICsgICAgICAgIExJTUFfUFBfSVJRX0NBTExfU1RBQ0tfVU5ERVJGTE9XICB8IFwKPiArICAg ICAgICBMSU1BX1BQX0lSUV9DQUxMX1NUQUNLX09WRVJGTE9XICAgfCBcCj4gKyAgICAgICAgTElN QV9QUF9JUlFfUkVTRVRfQ09NUExFVEVEKQo+ICsKPiArI2RlZmluZSBMSU1BX1BQX0lSUV9NQVNL X0VSUk9SICAgICAgICAgICAgICAgXAo+ICsgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPiArICAgICAgICBMSU1BX1BQX0lSUV9GT1JDRV9IQU5HICAgICAgICAg ICAgfCBcCj4gKyAgICAgICAgTElNQV9QUF9JUlFfQlVTX0VSUk9SICAgICAgICAgICAgIHwgXAo+ ICsgICAgICAgIExJTUFfUFBfSVJRX1dSSVRFX0JPVU5EQVJZX0VSUk9SICB8IFwKPiArICAgICAg ICBMSU1BX1BQX0lSUV9JTlZBTElEX1BMSVNUX0NPTU1BTkQgfCBcCj4gKyAgICAgICAgTElNQV9Q UF9JUlFfQ0FMTF9TVEFDS19VTkRFUkZMT1cgIHwgXAo+ICsgICAgICAgIExJTUFfUFBfSVJRX0NB TExfU1RBQ0tfT1ZFUkZMT1cpCj4gKwo+ICsjZGVmaW5lIExJTUFfUFBfSVJRX01BU0tfVVNFRCAg ICAgICAgICAgICAgICBcCj4gKyAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgIExJTUFfUFBfSVJRX0VORF9PRl9GUkFNRSAgICAgICAgICB8IFwK PiArICAgICAgICBMSU1BX1BQX0lSUV9NQVNLX0VSUk9SKQo+ICsKPiArLyogTU1VIHJlZ3MgKi8K PiArI2RlZmluZSBMSU1BX01NVV9EVEVfQUREUiAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAo+ ICsjZGVmaW5lIExJTUFfTU1VX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0Cj4g KyNkZWZpbmUgICBMSU1BX01NVV9TVEFUVVNfUEFHSU5HX0VOQUJMRUQgICAgICBCSVQoMCkKPiAr I2RlZmluZSAgIExJTUFfTU1VX1NUQVRVU19QQUdFX0ZBVUxUX0FDVElWRSAgIEJJVCgxKQo+ICsj ZGVmaW5lICAgTElNQV9NTVVfU1RBVFVTX1NUQUxMX0FDVElWRSAgICAgICAgQklUKDIpCj4gKyNk ZWZpbmUgICBMSU1BX01NVV9TVEFUVVNfSURMRSAgICAgICAgICAgICAgICBCSVQoMykKPiArI2Rl ZmluZSAgIExJTUFfTU1VX1NUQVRVU19SRVBMQVlfQlVGRkVSX0VNUFRZIEJJVCg0KQo+ICsjZGVm aW5lICAgTElNQV9NTVVfU1RBVFVTX1BBR0VfRkFVTFRfSVNfV1JJVEUgQklUKDUpCj4gKyNkZWZp bmUgICBMSU1BX01NVV9TVEFUVVNfQlVTX0lEKHgpICAgICAgICAgICAoKHggPj4gNikgJiAweDFG KQo+ICsjZGVmaW5lIExJTUFfTU1VX0NPTU1BTkQgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4 Cj4gKyNkZWZpbmUgICBMSU1BX01NVV9DT01NQU5EX0VOQUJMRV9QQUdJTkcgICAgICAweDAwCj4g KyNkZWZpbmUgICBMSU1BX01NVV9DT01NQU5EX0RJU0FCTEVfUEFHSU5HICAgICAweDAxCj4gKyNk ZWZpbmUgICBMSU1BX01NVV9DT01NQU5EX0VOQUJMRV9TVEFMTCAgICAgICAweDAyCj4gKyNkZWZp bmUgICBMSU1BX01NVV9DT01NQU5EX0RJU0FCTEVfU1RBTEwgICAgICAweDAzCj4gKyNkZWZpbmUg ICBMSU1BX01NVV9DT01NQU5EX1pBUF9DQUNIRSAgICAgICAgICAweDA0Cj4gKyNkZWZpbmUgICBM SU1BX01NVV9DT01NQU5EX1BBR0VfRkFVTFRfRE9ORSAgICAweDA1Cj4gKyNkZWZpbmUgICBMSU1B X01NVV9DT01NQU5EX0hBUkRfUkVTRVQgICAgICAgICAweDA2Cj4gKyNkZWZpbmUgTElNQV9NTVVf UEFHRV9GQVVMVF9BRERSICAgICAgICAgICAgICAweDAwMEMKPiArI2RlZmluZSBMSU1BX01NVV9a QVBfT05FX0xJTkUgICAgICAgICAgICAgICAgIDB4MDAxMAo+ICsjZGVmaW5lIExJTUFfTU1VX0lO VF9SQVdTVEFUICAgICAgICAgICAgICAgICAgMHgwMDE0Cj4gKyNkZWZpbmUgTElNQV9NTVVfSU5U X0NMRUFSICAgICAgICAgICAgICAgICAgICAweDAwMTgKPiArI2RlZmluZSBMSU1BX01NVV9JTlRf TUFTSyAgICAgICAgICAgICAgICAgICAgIDB4MDAxQwo+ICsjZGVmaW5lICAgTElNQV9NTVVfSU5U X1BBR0VfRkFVTFQgICAgICAgICAgICAgQklUKDApCj4gKyNkZWZpbmUgICBMSU1BX01NVV9JTlRf UkVBRF9CVVNfRVJST1IgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBMSU1BX01NVV9JTlRfU1RB VFVTICAgICAgICAgICAgICAgICAgIDB4MDAyMAo+ICsKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdf UFJFU0VOVCAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdfUkVBRF9QRVJN SVNTSU9OICBCSVQoMSkKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdfV1JJVEVfUEVSTUlTU0lPTiBC SVQoMikKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdfT1ZFUlJJREVfQ0FDSEUgICBCSVQoMykKPiAr I2RlZmluZSBMSU1BX1ZNX0ZMQUdfV1JJVEVfQ0FDSEVBQkxFICBCSVQoNCkKPiArI2RlZmluZSBM SU1BX1ZNX0ZMQUdfV1JJVEVfQUxMT0NBVEUgICBCSVQoNSkKPiArI2RlZmluZSBMSU1BX1ZNX0ZM QUdfV1JJVEVfQlVGRkVSQUJMRSBCSVQoNikKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdfUkVBRF9D QUNIRUFCTEUgICBCSVQoNykKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdfUkVBRF9BTExPQ0FURSAg ICBCSVQoOCkKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdfTUFTSyAgICAgICAgICAgICAweDFGRgo+ ICsKPiArI2RlZmluZSBMSU1BX1ZNX0ZMQUdTX0NBQ0hFICggICAgICAgICAgICAgICAgICAgXAo+ ICsgICAgICAgICAgICAgICBMSU1BX1ZNX0ZMQUdfUFJFU0VOVCB8ICAgICAgICAgICBcCj4gKyAg ICAgICAgICAgICAgIExJTUFfVk1fRkxBR19SRUFEX1BFUk1JU1NJT04gfCAgIFwKPiArICAgICAg ICAgICAgICAgTElNQV9WTV9GTEFHX1dSSVRFX1BFUk1JU1NJT04gfCAgXAo+ICsgICAgICAgICAg ICAgICBMSU1BX1ZNX0ZMQUdfT1ZFUlJJREVfQ0FDSEUgfCAgICBcCj4gKyAgICAgICAgICAgICAg IExJTUFfVk1fRkxBR19XUklURV9DQUNIRUFCTEUgfCAgIFwKPiArICAgICAgICAgICAgICAgTElN QV9WTV9GTEFHX1dSSVRFX0JVRkZFUkFCTEUgfCAgXAo+ICsgICAgICAgICAgICAgICBMSU1BX1ZN X0ZMQUdfUkVBRF9DQUNIRUFCTEUgfCAgICBcCj4gKyAgICAgICAgICAgICAgIExJTUFfVk1fRkxB R19SRUFEX0FMTE9DQVRFICkKPiArCj4gKyNkZWZpbmUgTElNQV9WTV9GTEFHU19VTkNBQ0hFICgg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIExJTUFfVk1fRkxBR19Q UkVTRU5UIHwgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBMSU1BX1ZNX0ZMQUdfUkVBRF9Q RVJNSVNTSU9OIHwgIFwKPiArICAgICAgICAgICAgICAgTElNQV9WTV9GTEFHX1dSSVRFX1BFUk1J U1NJT04gKQo+ICsKPiArLyogRExCVSByZWdzICovCj4gKyNkZWZpbmUgTElNQV9ETEJVX01BU1RF Ul9UTExJU1RfUEhZU19BRERSICAweDAwMDAKPiArI2RlZmluZSAgICAgICAgTElNQV9ETEJVX01B U1RFUl9UTExJU1RfVkFERFIgICAgICAweDAwMDQKPiArI2RlZmluZSAgICAgICAgTElNQV9ETEJV X1RMTElTVF9WQkFTRUFERFIgICAgICAgICAweDAwMDgKPiArI2RlZmluZSAgICAgICAgTElNQV9E TEJVX0ZCX0RJTSAgICAgICAgICAgICAgICAgICAweDAwMEMKPiArI2RlZmluZSAgICAgICAgTElN QV9ETEJVX1RMTElTVF9DT05GICAgICAgICAgICAgICAweDAwMTAKPiArI2RlZmluZSAgICAgICAg TElNQV9ETEJVX1NUQVJUX1RJTEVfUE9TICAgICAgICAgICAweDAwMTQKPiArI2RlZmluZSAgICAg ICAgTElNQV9ETEJVX1BQX0VOQUJMRV9NQVNLICAgICAgICAgICAweDAwMTgKPiArCj4gKy8qIEJD QVNUIHJlZ3MgKi8KPiArI2RlZmluZSBMSU1BX0JDQVNUX0JST0FEQ0FTVF9NQVNLICAgIDB4MAo+ ICsjZGVmaW5lIExJTUFfQkNBU1RfSU5URVJSVVBUX01BU0sgICAgMHg0Cj4gKwo+ICsjZW5kaWYK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jIGIvZHJpdmVy cy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjUzOWIyOWNlNWU5YQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMKPiBAQCAtMCwwICsxLDM5OCBAQAo+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQKPiArLyogQ29weXJpZ2h0IDIw MTctMjAxOCBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4gKi8KPiArCj4gKyNpbmNsdWRlIDxs aW51eC9rdGhyZWFkLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVk ZSAibGltYV9kcnYuaCIKPiArI2luY2x1ZGUgImxpbWFfc2NoZWQuaCIKPiArI2luY2x1ZGUgImxp bWFfdm0uaCIKPiArI2luY2x1ZGUgImxpbWFfbW11LmgiCj4gKyNpbmNsdWRlICJsaW1hX2wyX2Nh Y2hlLmgiCj4gKyNpbmNsdWRlICJsaW1hX29iamVjdC5oIgo+ICsKPiArc3RydWN0IGxpbWFfZmVu Y2Ugewo+ICsgICAgICAgc3RydWN0IGRtYV9mZW5jZSBiYXNlOwo+ICsgICAgICAgc3RydWN0IGxp bWFfc2NoZWRfcGlwZSAqcGlwZTsKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qga21lbV9jYWNo ZSAqbGltYV9mZW5jZV9zbGFiID0gTlVMTDsKPiArCj4gK2ludCBsaW1hX3NjaGVkX3NsYWJfaW5p dCh2b2lkKQo+ICt7Cj4gKyAgICAgICBsaW1hX2ZlbmNlX3NsYWIgPSBrbWVtX2NhY2hlX2NyZWF0 ZSgKPiArICAgICAgICAgICAgICAgImxpbWFfZmVuY2UiLCBzaXplb2Yoc3RydWN0IGxpbWFfZmVu Y2UpLCAwLAo+ICsgICAgICAgICAgICAgICBTTEFCX0hXQ0FDSEVfQUxJR04sIE5VTEwpOwo+ICsg ICAgICAgaWYgKCFsaW1hX2ZlbmNlX3NsYWIpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5P TUVNOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGxpbWFfc2NoZWRf c2xhYl9maW5pKHZvaWQpCj4gK3sKPiArICAgICAgIGttZW1fY2FjaGVfZGVzdHJveShsaW1hX2Zl bmNlX3NsYWIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsaW1hX2ZlbmNlICp0 b19saW1hX2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKyAgICAgICByZXR1 cm4gY29udGFpbmVyX29mKGZlbmNlLCBzdHJ1Y3QgbGltYV9mZW5jZSwgYmFzZSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBjaGFyICpsaW1hX2ZlbmNlX2dldF9kcml2ZXJfbmFtZShzdHJ1Y3Qg ZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsgICAgICAgcmV0dXJuICJsaW1hIjsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IGNoYXIgKmxpbWFfZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUoc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX2ZlbmNlICpmID0g dG9fbGltYV9mZW5jZShmZW5jZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIGYtPnBpcGUtPmJhc2Uu bmFtZTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgbGltYV9mZW5jZV9lbmFibGVfc2lnbmFsaW5n KHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9mZW5jZV9yZWxlYXNlX3JjdShzdHJ1Y3QgcmN1X2hl YWQgKnJjdSkKPiArewo+ICsgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZiA9IGNvbnRhaW5lcl9v ZihyY3UsIHN0cnVjdCBkbWFfZmVuY2UsIHJjdSk7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9mZW5j ZSAqZmVuY2UgPSB0b19saW1hX2ZlbmNlKGYpOwo+ICsKPiArICAgICAgIGttZW1fY2FjaGVfZnJl ZShsaW1hX2ZlbmNlX3NsYWIsIGZlbmNlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9m ZW5jZV9yZWxlYXNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKyAgICAgICBzdHJ1 Y3QgbGltYV9mZW5jZSAqZiA9IHRvX2xpbWFfZmVuY2UoZmVuY2UpOwo+ICsKPiArICAgICAgIGNh bGxfcmN1KCZmLT5iYXNlLnJjdSwgbGltYV9mZW5jZV9yZWxlYXNlX3JjdSk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBsaW1hX2ZlbmNlX29wcyA9IHsKPiAr ICAgICAgIC5nZXRfZHJpdmVyX25hbWUgPSBsaW1hX2ZlbmNlX2dldF9kcml2ZXJfbmFtZSwKPiAr ICAgICAgIC5nZXRfdGltZWxpbmVfbmFtZSA9IGxpbWFfZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUs Cj4gKyAgICAgICAuZW5hYmxlX3NpZ25hbGluZyA9IGxpbWFfZmVuY2VfZW5hYmxlX3NpZ25hbGlu ZywKPiArICAgICAgIC53YWl0ID0gZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCwKPiArICAgICAgIC5y ZWxlYXNlID0gbGltYV9mZW5jZV9yZWxlYXNlLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBs aW1hX2ZlbmNlICpsaW1hX2ZlbmNlX2NyZWF0ZShzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBl KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9mZW5jZSAqZmVuY2U7Cj4gKwo+ICsgICAgICAg ZmVuY2UgPSBrbWVtX2NhY2hlX3phbGxvYyhsaW1hX2ZlbmNlX3NsYWIsIEdGUF9LRVJORUwpOwoK T3V0IG9mIGN1cmlvc2l0eSwgd2hhdCBpcyB0aGUgYmVuZWZpdCBvZiB1c2luZyBhIHNlcGFyYXRl IHNsYWIgaGVyZT8KSWYgdGhpcyBpcyBiZW5lZmljaWFsLCB0aGVuIG90aGVyIGRyaXZlcnMgc2hv dWxkIGRvIHRoaXMgdG9vIGFuZCBpdApzaG91bGQgYmUgY29tbW9uLiBPdGhlcndpc2UsIGl0IGFk ZHMgc29tZSBjb21wbGV4aXR5LgoKQW5kIG1heWJlIHRoZSBzbGFiIHNob3VsZCBiZSBpbml0aWFs emVkIGluIHByb2JlIHJhdGhlciB0aGFuIG1vZHVsZV9pbml0LgoKPiArICAgICAgIGlmICghZmVu Y2UpCj4gKyAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKwo+ICsgICAgICAgZmVuY2UtPnBp cGUgPSBwaXBlOwo+ICsgICAgICAgZG1hX2ZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLCAmbGltYV9m ZW5jZV9vcHMsICZwaXBlLT5mZW5jZV9sb2NrLAo+ICsgICAgICAgICAgICAgICAgICAgICAgcGlw ZS0+ZmVuY2VfY29udGV4dCwgKytwaXBlLT5mZW5jZV9zZXFubyk7Cj4gKwo+ICsgICAgICAgcmV0 dXJuIGZlbmNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsaW1hX3NjaGVkX3Rh c2sgKnRvX2xpbWFfdGFzayhzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9iKQo+ICt7Cj4gKyAgICAg ICByZXR1cm4gY29udGFpbmVyX29mKGpvYiwgc3RydWN0IGxpbWFfc2NoZWRfdGFzaywgYmFzZSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqdG9fbGlt YV9waXBlKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gK3sKPiArICAgICAgIHJl dHVybiBjb250YWluZXJfb2Yoc2NoZWQsIHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUsIGJhc2UpOwo+ ICt9Cj4gKwo+ICtpbnQgbGltYV9zY2hlZF90YXNrX2luaXQoc3RydWN0IGxpbWFfc2NoZWRfdGFz ayAqdGFzaywKPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfY29u dGV4dCAqY29udGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfYm8g Kipib3MsIGludCBudW1fYm9zLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlt YV92bSAqdm0pCj4gK3sKPiArICAgICAgIGludCBlcnIsIGk7Cj4gKwo+ICsgICAgICAgdGFzay0+ Ym9zID0ga21lbWR1cChib3MsIHNpemVvZigqYm9zKSAqIG51bV9ib3MsIEdGUF9LRVJORUwpOwo+ ICsgICAgICAgaWYgKCF0YXNrLT5ib3MpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fYm9zOyBpKyspCj4gKyAgICAgICAg ICAgICAgIGRybV9nZW1fb2JqZWN0X2dldCgmYm9zW2ldLT5nZW0pOwo+ICsKPiArICAgICAgIGVy ciA9IGRybV9zY2hlZF9qb2JfaW5pdCgmdGFzay0+YmFzZSwgJmNvbnRleHQtPmJhc2UsIHZtKTsK PiArICAgICAgIGlmIChlcnIpIHsKPiArICAgICAgICAgICAgICAga2ZyZWUodGFzay0+Ym9zKTsK PiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICB0 YXNrLT5udW1fYm9zID0gbnVtX2JvczsKPiArICAgICAgIHRhc2stPnZtID0gbGltYV92bV9nZXQo dm0pOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV9zY2hlZF90YXNr X2Zpbmkoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaykKPiArewo+ICsgICAgICAgaW50IGk7 Cj4gKwo+ICsgICAgICAgZHJtX3NjaGVkX2pvYl9jbGVhbnVwKCZ0YXNrLT5iYXNlKTsKPiArCj4g KyAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGFzay0+bnVtX2RlcDsgaSsrKQo+ICsgICAgICAgICAg ICAgICBkbWFfZmVuY2VfcHV0KHRhc2stPmRlcFtpXSk7Cj4gKwo+ICsgICAgICAga2ZyZWUodGFz ay0+ZGVwKTsKPiArCj4gKyAgICAgICBpZiAodGFzay0+Ym9zKSB7Cj4gKyAgICAgICAgICAgICAg IGZvciAoaSA9IDA7IGkgPCB0YXNrLT5udW1fYm9zOyBpKyspCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZ0YXNrLT5ib3NbaV0tPmdlbSk7Cj4g KyAgICAgICAgICAgICAgIGtmcmVlKHRhc2stPmJvcyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg ICAgbGltYV92bV9wdXQodGFzay0+dm0pOwo+ICt9Cj4gKwo+ICtpbnQgbGltYV9zY2hlZF90YXNr X2FkZF9kZXAoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaywgc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2UpCj4gK3sKPiArICAgICAgIGludCBpLCBuZXdfZGVwID0gNDsKPiArCj4gKyAgICAgICAv KiBzYW1lIGNvbnRleHQncyBmZW5jZSBpcyBkZWZpbml0bHkgZWFybGllciB0aGVuIHRoaXMgdGFz ayAqLwo+ICsgICAgICAgaWYgKGZlbmNlLT5jb250ZXh0ID09IHRhc2stPmJhc2Uuc19mZW5jZS0+ ZmluaXNoZWQuY29udGV4dCkgewo+ICsgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNl KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAg aWYgKHRhc2stPmRlcCAmJiB0YXNrLT5udW1fZGVwID09IHRhc2stPm1heF9kZXApCj4gKyAgICAg ICAgICAgICAgIG5ld19kZXAgPSB0YXNrLT5tYXhfZGVwICogMjsKPiArCj4gKyAgICAgICBpZiAo dGFzay0+bWF4X2RlcCA8IG5ld19kZXApIHsKPiArICAgICAgICAgICAgICAgdm9pZCAqZGVwID0g a3JlYWxsb2ModGFzay0+ZGVwLCBzaXplb2YoKnRhc2stPmRlcCkgKiBuZXdfZGVwLCBHRlBfS0VS TkVMKTsKPiArICAgICAgICAgICAgICAgaWYgKCFkZXApCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9NRU07Cj4gKyAgICAgICAgICAgICAgIHRhc2stPm1heF9kZXAgPSBuZXdf ZGVwOwo+ICsgICAgICAgICAgICAgICB0YXNrLT5kZXAgPSBkZXA7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHRhc2stPm51bV9kZXA7IGkrKykgewo+ICsgICAgICAg ICAgICAgICBpZiAodGFzay0+ZGVwW2ldLT5jb250ZXh0ID09IGZlbmNlLT5jb250ZXh0ICYmCj4g KyAgICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfaXNfbGF0ZXIoZmVuY2UsIHRhc2stPmRlcFtp XSkpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KHRhc2stPmRlcFtp XSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdGFzay0+ZGVwW2ldID0gZmVuY2U7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAg ICAgIH0KPiArCj4gKyAgICAgICB0YXNrLT5kZXBbdGFzay0+bnVtX2RlcCsrXSA9IGZlbmNlOwo+ ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBsaW1hX3NjaGVkX2NvbnRleHRfaW5p dChzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgbGltYV9zY2hlZF9jb250ZXh0ICpjb250ZXh0LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBhdG9taWNfdCAqZ3VpbHR5KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZHJt X3NjaGVkX3JxICpycSA9IHBpcGUtPmJhc2Uuc2NoZWRfcnEgKyBEUk1fU0NIRURfUFJJT1JJVFlf Tk9STUFMOwo+ICsKPiArICAgICAgIHJldHVybiBkcm1fc2NoZWRfZW50aXR5X2luaXQoJmNvbnRl eHQtPmJhc2UsICZycSwgMSwgZ3VpbHR5KTsKPiArfQo+ICsKPiArdm9pZCBsaW1hX3NjaGVkX2Nv bnRleHRfZmluaShzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfY29udGV4dCAqY29udGV4dCkKPiArewo+ ICsgICAgICAgZHJtX3NjaGVkX2VudGl0eV9maW5pKCZjb250ZXh0LT5iYXNlKTsKPiArfQo+ICsK PiArc3RydWN0IGRtYV9mZW5jZSAqbGltYV9zY2hlZF9jb250ZXh0X3F1ZXVlX3Rhc2soc3RydWN0 IGxpbWFfc2NoZWRfY29udGV4dCAqY29udGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrKQo+ICt7 Cj4gKyAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IGRtYV9mZW5jZV9nZXQoJnRhc2st PmJhc2Uuc19mZW5jZS0+ZmluaXNoZWQpOwo+ICsKPiArICAgICAgIGRybV9zY2hlZF9lbnRpdHlf cHVzaF9qb2IoJnRhc2stPmJhc2UsICZjb250ZXh0LT5iYXNlKTsKPiArICAgICAgIHJldHVybiBm ZW5jZTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKmxpbWFfc2NoZWRfZGVw ZW5kZW5jeShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9iLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0 eSkKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzayA9IHRvX2xpbWFf dGFzayhqb2IpOwo+ICsgICAgICAgaW50IGk7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8 IHRhc2stPm51bV9kZXA7IGkrKykgewo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZSA9IHRhc2stPmRlcFtpXTsKPiArCj4gKyAgICAgICAgICAgICAgIGlmICghdGFzay0+ ZGVwW2ldKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAg ICAgICAgICAgdGFzay0+ZGVwW2ldID0gTlVMTDsKPiArCj4gKyAgICAgICAgICAgICAgIGlmICgh ZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKPiArICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmVuY2U7Cj4gKwo+ICsgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNlKTsK PiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBkbWFfZmVuY2UgKmxpbWFfc2NoZWRfcnVuX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pv YiAqam9iKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrID0gdG9f bGltYV90YXNrKGpvYik7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlID0g dG9fbGltYV9waXBlKGpvYi0+c2NoZWQpOwo+ICsgICAgICAgc3RydWN0IGxpbWFfZmVuY2UgKmZl bmNlOwo+ICsgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqcmV0Owo+ICsgICAgICAgc3RydWN0IGxp bWFfdm0gKnZtID0gTlVMTCwgKmxhc3Rfdm0gPSBOVUxMOwo+ICsgICAgICAgaW50IGk7Cj4gKwo+ ICsgICAgICAgLyogYWZ0ZXIgR1BVIHJlc2V0ICovCj4gKyAgICAgICBpZiAoam9iLT5zX2ZlbmNl LT5maW5pc2hlZC5lcnJvciA8IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ICsK PiArICAgICAgIGZlbmNlID0gbGltYV9mZW5jZV9jcmVhdGUocGlwZSk7Cj4gKyAgICAgICBpZiAo IWZlbmNlKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiArICAgICAgIHRhc2stPmZl bmNlID0gJmZlbmNlLT5iYXNlOwo+ICsKPiArICAgICAgIC8qIGZvciBjYWxsZXIgdXNhZ2Ugb2Yg dGhlIGZlbmNlLCBvdGhlcndpc2UgaXJxIGhhbmRsZXIKPiArICAgICAgICAqIG1heSBjb25zdW1l IHRoZSBmZW5jZSBiZWZvcmUgY2FsbGVyIHVzZSBpdCAqLwo+ICsgICAgICAgcmV0ID0gZG1hX2Zl bmNlX2dldCh0YXNrLT5mZW5jZSk7Cj4gKwo+ICsgICAgICAgcGlwZS0+Y3VycmVudF90YXNrID0g dGFzazsKPiArCj4gKyAgICAgICAvKiB0aGlzIGlzIG5lZWRlZCBmb3IgTU1VIHRvIHdvcmsgY29y cmVjdGx5LCBvdGhlcndpc2UgR1AvUFAKPiArICAgICAgICAqIHdpbGwgaGFuZyBvciBwYWdlIGZh dWx0IGZvciB1bmtub3duIHJlYXNvbiBhZnRlciBydW5uaW5nIGZvcgo+ICsgICAgICAgICogYSB3 aGlsZS4KPiArICAgICAgICAqCj4gKyAgICAgICAgKiBOZWVkIHRvIGludmVzdGlnYXRlOgo+ICsg ICAgICAgICogMS4gaXMgaXQgcmVsYXRlZCB0byBUTEIKPiArICAgICAgICAqIDIuIGhvdyBtdWNo IHBlcmZvcm1hbmNlIHdpbGwgYmUgYWZmZWN0ZWQgYnkgTDIgY2FjaGUgZmx1c2gKPiArICAgICAg ICAqIDMuIGNhbiB3ZSByZWR1Y2UgdGhlIGNhbGxpbmcgb2YgdGhpcyBmdW5jdGlvbiBiZWNhdXNl IGFsbAo+ICsgICAgICAgICogICAgR1AvUFAgdXNlIHRoZSBzYW1lIEwyIGNhY2hlIG9uIG1hbGk0 MDAKPiArICAgICAgICAqCj4gKyAgICAgICAgKiBUT0RPOgo+ICsgICAgICAgICogMS4gbW92ZSB0 aGlzIHRvIHRhc2sgZmluaSB0byBzYXZlIHNvbWUgd2FpdCB0aW1lPwo+ICsgICAgICAgICogMi4g d2hlbiBHUC9QUCB1c2UgZGlmZmVyZW50IGwyIGNhY2hlLCBuZWVkIFBQIHdhaXQgR1AgbDIKPiAr ICAgICAgICAqICAgIGNhY2hlIGZsdXNoPwo+ICsgICAgICAgICovCj4gKyAgICAgICBmb3IgKGkg PSAwOyBpIDwgcGlwZS0+bnVtX2wyX2NhY2hlOyBpKyspCj4gKyAgICAgICAgICAgICAgIGxpbWFf bDJfY2FjaGVfZmx1c2gocGlwZS0+bDJfY2FjaGVbaV0pOwo+ICsKPiArICAgICAgIGlmICh0YXNr LT52bSAhPSBwaXBlLT5jdXJyZW50X3ZtKSB7Cj4gKyAgICAgICAgICAgICAgIHZtID0gbGltYV92 bV9nZXQodGFzay0+dm0pOwo+ICsgICAgICAgICAgICAgICBsYXN0X3ZtID0gcGlwZS0+Y3VycmVu dF92bTsKPiArICAgICAgICAgICAgICAgcGlwZS0+Y3VycmVudF92bSA9IHRhc2stPnZtOwo+ICsg ICAgICAgfQo+ICsKPiArICAgICAgIGlmIChwaXBlLT5iY2FzdF9tbXUpCj4gKyAgICAgICAgICAg ICAgIGxpbWFfbW11X3N3aXRjaF92bShwaXBlLT5iY2FzdF9tbXUsIHZtKTsKPiArICAgICAgIGVs c2Ugewo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bnVtX21tdTsgaSsr KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGxpbWFfbW11X3N3aXRjaF92bShwaXBlLT5tbXVb aV0sIHZtKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAobGFzdF92bSkKPiArICAgICAg ICAgICAgICAgbGltYV92bV9wdXQobGFzdF92bSk7Cj4gKwo+ICsgICAgICAgcGlwZS0+ZXJyb3Ig PSBmYWxzZTsKPiArICAgICAgIHBpcGUtPnRhc2tfcnVuKHBpcGUsIHRhc2spOwo+ICsKPiArICAg ICAgIHJldHVybiB0YXNrLT5mZW5jZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9zY2hl ZF9oYW5kbGVfZXJyb3JfdGFzayhzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpbWFfc2NoZWRfdGFz ayAqdGFzaykKPiArewo+ICsgICAgICAga3RocmVhZF9wYXJrKHBpcGUtPmJhc2UudGhyZWFkKTsK PiArICAgICAgIGRybV9zY2hlZF9od19qb2JfcmVzZXQoJnBpcGUtPmJhc2UsICZ0YXNrLT5iYXNl KTsKPiArCj4gKyAgICAgICBwaXBlLT50YXNrX2Vycm9yKHBpcGUpOwo+ICsKPiArICAgICAgIGlm IChwaXBlLT5iY2FzdF9tbXUpCj4gKyAgICAgICAgICAgICAgIGxpbWFfbW11X3BhZ2VfZmF1bHRf cmVzdW1lKHBpcGUtPmJjYXN0X21tdSk7Cj4gKyAgICAgICBlbHNlIHsKPiArICAgICAgICAgICAg ICAgaW50IGk7Cj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaXBlLT5udW1fbW11 OyBpKyspCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGltYV9tbXVfcGFnZV9mYXVsdF9yZXN1 bWUocGlwZS0+bW11W2ldKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAocGlwZS0+Y3Vy cmVudF92bSkKPiArICAgICAgICAgICAgICAgbGltYV92bV9wdXQocGlwZS0+Y3VycmVudF92bSk7 Cj4gKwo+ICsgICAgICAgcGlwZS0+Y3VycmVudF92bSA9IE5VTEw7Cj4gKyAgICAgICBwaXBlLT5j dXJyZW50X3Rhc2sgPSBOVUxMOwo+ICsKPiArICAgICAgIGRybV9zY2hlZF9qb2JfcmVjb3Zlcnko JnBpcGUtPmJhc2UpOwo+ICsgICAgICAga3RocmVhZF91bnBhcmsocGlwZS0+YmFzZS50aHJlYWQp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBsaW1hX3NjaGVkX3RpbWVkb3V0X2pvYihzdHJ1Y3Qg ZHJtX3NjaGVkX2pvYiAqam9iKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9zY2hlZF9waXBl ICpwaXBlID0gdG9fbGltYV9waXBlKGpvYi0+c2NoZWQpOwo+ICsgICAgICAgc3RydWN0IGxpbWFf c2NoZWRfdGFzayAqdGFzayA9IHRvX2xpbWFfdGFzayhqb2IpOwo+ICsKPiArICAgICAgIERSTV9F UlJPUigibGltYSBqb2IgdGltZW91dFxuIik7Cj4gKwo+ICsgICAgICAgbGltYV9zY2hlZF9oYW5k bGVfZXJyb3JfdGFzayhwaXBlLCB0YXNrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGltYV9z Y2hlZF9mcmVlX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9iKQo+ICt7Cj4gKyAgICAgICBz dHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrID0gdG9fbGltYV90YXNrKGpvYik7Cj4gKyAgICAg ICBzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlID0gdG9fbGltYV9waXBlKGpvYi0+c2NoZWQp Owo+ICsgICAgICAgc3RydWN0IGxpbWFfdm0gKnZtID0gdGFzay0+dm07Cj4gKyAgICAgICBzdHJ1 Y3QgbGltYV9ibyAqKmJvcyA9IHRhc2stPmJvczsKPiArICAgICAgIGludCBpOwo+ICsKPiArICAg ICAgIGRtYV9mZW5jZV9wdXQodGFzay0+ZmVuY2UpOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7 IGkgPCB0YXNrLT5udW1fYm9zOyBpKyspCj4gKyAgICAgICAgICAgICAgIGxpbWFfdm1fYm9fZGVs KHZtLCBib3NbaV0pOwo+ICsKPiArICAgICAgIGxpbWFfc2NoZWRfdGFza19maW5pKHRhc2spOwo+ ICsgICAgICAga21lbV9jYWNoZV9mcmVlKHBpcGUtPnRhc2tfc2xhYiwgdGFzayk7Cj4gK30KPiAr Cj4gK2NvbnN0IHN0cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgbGltYV9zY2hlZF9vcHMgPSB7 Cj4gKyAgICAgICAuZGVwZW5kZW5jeSA9IGxpbWFfc2NoZWRfZGVwZW5kZW5jeSwKPiArICAgICAg IC5ydW5fam9iID0gbGltYV9zY2hlZF9ydW5fam9iLAo+ICsgICAgICAgLnRpbWVkb3V0X2pvYiA9 IGxpbWFfc2NoZWRfdGltZWRvdXRfam9iLAo+ICsgICAgICAgLmZyZWVfam9iID0gbGltYV9zY2hl ZF9mcmVlX2pvYiwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGxpbWFfc2NoZWRfZXJyb3Jfd29y ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1hX3Nj aGVkX3BpcGUgKnBpcGUgPQo+ICsgICAgICAgICAgICAgICBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IGxpbWFfc2NoZWRfcGlwZSwgZXJyb3Jfd29yayk7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV9z Y2hlZF90YXNrICp0YXNrID0gcGlwZS0+Y3VycmVudF90YXNrOwo+ICsKPiArICAgICAgIGxpbWFf c2NoZWRfaGFuZGxlX2Vycm9yX3Rhc2socGlwZSwgdGFzayk7Cj4gK30KPiArCj4gK2ludCBsaW1h X3NjaGVkX3BpcGVfaW5pdChzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlLCBjb25zdCBjaGFy ICpuYW1lKQo+ICt7Cj4gKyAgICAgICBsb25nIHRpbWVvdXQ7Cj4gKwo+ICsgICAgICAgaWYgKGxp bWFfc2NoZWRfdGltZW91dF9tcyA8PSAwKQo+ICsgICAgICAgICAgICAgICB0aW1lb3V0ID0gTUFY X1NDSEVEVUxFX1RJTUVPVVQ7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIHRpbWVv dXQgPSBtc2Vjc190b19qaWZmaWVzKGxpbWFfc2NoZWRfdGltZW91dF9tcyk7Cj4gKwo+ICsgICAg ICAgcGlwZS0+ZmVuY2VfY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+ICsg ICAgICAgc3Bpbl9sb2NrX2luaXQoJnBpcGUtPmZlbmNlX2xvY2spOwo+ICsKPiArICAgICAgIElO SVRfV09SSygmcGlwZS0+ZXJyb3Jfd29yaywgbGltYV9zY2hlZF9lcnJvcl93b3JrKTsKPiArCj4g KyAgICAgICByZXR1cm4gZHJtX3NjaGVkX2luaXQoJnBpcGUtPmJhc2UsICZsaW1hX3NjaGVkX29w cywgMSwgMCwgdGltZW91dCwgbmFtZSk7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV9zY2hlZF9waXBl X2Zpbmkoc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSkKPiArewo+ICsgICAgICAgZHJtX3Nj aGVkX2ZpbmkoJnBpcGUtPmJhc2UpOwo+ICt9Cj4gKwo+ICt2b2lkIGxpbWFfc2NoZWRfcGlwZV90 YXNrX2RvbmUoc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSkKPiArewo+ICsgICAgICAgaWYg KHBpcGUtPmVycm9yKQo+ICsgICAgICAgICAgICAgICBzY2hlZHVsZV93b3JrKCZwaXBlLT5lcnJv cl93b3JrKTsKPiArICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgbGltYV9z Y2hlZF90YXNrICp0YXNrID0gcGlwZS0+Y3VycmVudF90YXNrOwo+ICsKPiArICAgICAgICAgICAg ICAgcGlwZS0+dGFza19maW5pKHBpcGUpOwo+ICsgICAgICAgICAgICAgICBkbWFfZmVuY2Vfc2ln bmFsKHRhc2stPmZlbmNlKTsKPiArICAgICAgIH0KPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmggYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3Nj aGVkLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDQ5ODVl NGRhM2ZiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFf c2NoZWQuaAo+IEBAIC0wLDAgKzEsMTA0IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wIE9SIE1JVCAqLwo+ICsvKiBDb3B5cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5 dXE4MjVAZ21haWwuY29tPiAqLwo+ICsKPiArI2lmbmRlZiBfX0xJTUFfU0NIRURfSF9fCj4gKyNk ZWZpbmUgX19MSU1BX1NDSEVEX0hfXwo+ICsKPiArI2luY2x1ZGUgPGRybS9ncHVfc2NoZWR1bGVy Lmg+Cj4gKwo+ICtzdHJ1Y3QgbGltYV92bTsKPiArCj4gK3N0cnVjdCBsaW1hX3NjaGVkX3Rhc2sg ewo+ICsgICAgICAgc3RydWN0IGRybV9zY2hlZF9qb2IgYmFzZTsKPiArCj4gKyAgICAgICBzdHJ1 Y3QgbGltYV92bSAqdm07Cj4gKyAgICAgICB2b2lkICpmcmFtZTsKPiArCj4gKyAgICAgICBzdHJ1 Y3QgZG1hX2ZlbmNlICoqZGVwOwo+ICsgICAgICAgaW50IG51bV9kZXA7Cj4gKyAgICAgICBpbnQg bWF4X2RlcDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbGltYV9ibyAqKmJvczsKPiArICAgICAgIGlu dCBudW1fYm9zOwo+ICsKPiArICAgICAgIC8qIHBpcGUgZmVuY2UgKi8KPiArICAgICAgIHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOwo+ICt9Owo+ICsKPiArc3RydWN0IGxpbWFfc2NoZWRfY29udGV4 dCB7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSBiYXNlOwo+ICt9Owo+ICsKPiAr I2RlZmluZSBMSU1BX1NDSEVEX1BJUEVfTUFYX01NVSAgICAgICA4Cj4gKyNkZWZpbmUgTElNQV9T Q0hFRF9QSVBFX01BWF9MMl9DQUNIRSAgMgo+ICsjZGVmaW5lIExJTUFfU0NIRURfUElQRV9NQVhf UFJPQ0VTU09SIDgKPiArCj4gK3N0cnVjdCBsaW1hX2lwOwo+ICsKPiArc3RydWN0IGxpbWFfc2No ZWRfcGlwZSB7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgYmFzZTsKPiArCj4g KyAgICAgICB1NjQgZmVuY2VfY29udGV4dDsKPiArICAgICAgIHUzMiBmZW5jZV9zZXFubzsKPiAr ICAgICAgIHNwaW5sb2NrX3QgZmVuY2VfbG9jazsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbGltYV9z Y2hlZF90YXNrICpjdXJyZW50X3Rhc2s7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV92bSAqY3VycmVu dF92bTsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbGltYV9pcCAqbW11W0xJTUFfU0NIRURfUElQRV9N QVhfTU1VXTsKPiArICAgICAgIGludCBudW1fbW11Owo+ICsKPiArICAgICAgIHN0cnVjdCBsaW1h X2lwICpsMl9jYWNoZVtMSU1BX1NDSEVEX1BJUEVfTUFYX0wyX0NBQ0hFXTsKPiArICAgICAgIGlu dCBudW1fbDJfY2FjaGU7Cj4gKwo+ICsgICAgICAgc3RydWN0IGxpbWFfaXAgKnByb2Nlc3NvcltM SU1BX1NDSEVEX1BJUEVfTUFYX1BST0NFU1NPUl07Cj4gKyAgICAgICBpbnQgbnVtX3Byb2Nlc3Nv cjsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbGltYV9pcCAqYmNhc3RfcHJvY2Vzc29yOwo+ICsgICAg ICAgc3RydWN0IGxpbWFfaXAgKmJjYXN0X21tdTsKPiArCj4gKyAgICAgICB1MzIgZG9uZTsKPiAr ICAgICAgIGJvb2wgZXJyb3I7Cj4gKyAgICAgICBhdG9taWNfdCB0YXNrOwo+ICsKPiArICAgICAg IGludCBmcmFtZV9zaXplOwo+ICsgICAgICAgc3RydWN0IGttZW1fY2FjaGUgKnRhc2tfc2xhYjsK PiArCj4gKyAgICAgICBpbnQgKCp0YXNrX3ZhbGlkYXRlKShzdHJ1Y3QgbGltYV9zY2hlZF9waXBl ICpwaXBlLCBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrKTsKPiArICAgICAgIHZvaWQgKCp0 YXNrX3J1bikoc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSwgc3RydWN0IGxpbWFfc2NoZWRf dGFzayAqdGFzayk7Cj4gKyAgICAgICB2b2lkICgqdGFza19maW5pKShzdHJ1Y3QgbGltYV9zY2hl ZF9waXBlICpwaXBlKTsKPiArICAgICAgIHZvaWQgKCp0YXNrX2Vycm9yKShzdHJ1Y3QgbGltYV9z Y2hlZF9waXBlICpwaXBlKTsKPiArICAgICAgIHZvaWQgKCp0YXNrX21tdV9lcnJvcikoc3RydWN0 IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSk7Cj4gKwo+ICsgICAgICAgc3RydWN0IHdvcmtfc3RydWN0 IGVycm9yX3dvcms7Cj4gK307Cj4gKwo+ICtpbnQgbGltYV9zY2hlZF90YXNrX2luaXQoc3RydWN0 IGxpbWFfc2NoZWRfdGFzayAqdGFzaywKPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGxpbWFfc2NoZWRfY29udGV4dCAqY29udGV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGxpbWFfYm8gKipib3MsIGludCBudW1fYm9zLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgbGltYV92bSAqdm0pOwo+ICt2b2lkIGxpbWFfc2NoZWRfdGFza19maW5pKHN0 cnVjdCBsaW1hX3NjaGVkX3Rhc2sgKnRhc2spOwo+ICtpbnQgbGltYV9zY2hlZF90YXNrX2FkZF9k ZXAoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaywgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2Up Owo+ICsKPiAraW50IGxpbWFfc2NoZWRfY29udGV4dF9pbml0KHN0cnVjdCBsaW1hX3NjaGVkX3Bp cGUgKnBpcGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaW1hX3NjaGVk X2NvbnRleHQgKmNvbnRleHQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pY190 ICpndWlsdHkpOwo+ICt2b2lkIGxpbWFfc2NoZWRfY29udGV4dF9maW5pKHN0cnVjdCBsaW1hX3Nj aGVkX3BpcGUgKnBpcGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlt YV9zY2hlZF9jb250ZXh0ICpjb250ZXh0KTsKPiArc3RydWN0IGRtYV9mZW5jZSAqbGltYV9zY2hl ZF9jb250ZXh0X3F1ZXVlX3Rhc2soc3RydWN0IGxpbWFfc2NoZWRfY29udGV4dCAqY29udGV4dCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg bGltYV9zY2hlZF90YXNrICp0YXNrKTsKPiArCj4gK2ludCBsaW1hX3NjaGVkX3BpcGVfaW5pdChz dHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlLCBjb25zdCBjaGFyICpuYW1lKTsKPiArdm9pZCBs aW1hX3NjaGVkX3BpcGVfZmluaShzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlKTsKPiArdm9p ZCBsaW1hX3NjaGVkX3BpcGVfdGFza19kb25lKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUp Owo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGxpbWFfc2NoZWRfcGlwZV9tbXVfZXJyb3Ioc3Ry dWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSkKPiArewo+ICsgICAgICAgcGlwZS0+ZXJyb3IgPSB0 cnVlOwo+ICsgICAgICAgcGlwZS0+dGFza19tbXVfZXJyb3IocGlwZSk7Cj4gK30KPiArCj4gK2lu dCBsaW1hX3NjaGVkX3NsYWJfaW5pdCh2b2lkKTsKPiArdm9pZCBsaW1hX3NjaGVkX3NsYWJfZmlu aSh2b2lkKTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGlt YS9saW1hX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzllYmEzZmFlMDE5Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfdm0uYwo+IEBAIC0wLDAgKzEs MjgwIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVAo+ICsv KiBDb3B5cmlnaHQgMjAxNy0yMDE4IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwo+ICsK PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5n Lmg+Cj4gKwo+ICsjaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImxpbWFfdm0u aCIKPiArI2luY2x1ZGUgImxpbWFfb2JqZWN0LmgiCj4gKyNpbmNsdWRlICJsaW1hX3JlZ3MuaCIK PiArCj4gK3N0cnVjdCBsaW1hX2JvX3ZhIHsKPiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlz dDsKPiArICAgICAgIHVuc2lnbmVkIHJlZl9jb3VudDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgZHJt X21tX25vZGUgbm9kZTsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbGltYV92bSAqdm07Cj4gK307Cj4g Kwo+ICsjZGVmaW5lIExJTUFfVk1fUERfU0hJRlQgMjIKPiArI2RlZmluZSBMSU1BX1ZNX1BUX1NI SUZUIDEyCj4gKyNkZWZpbmUgTElNQV9WTV9QQl9TSElGVCAoTElNQV9WTV9QRF9TSElGVCArIExJ TUFfVk1fTlVNX1BUX1BFUl9CVF9TSElGVCkKPiArI2RlZmluZSBMSU1BX1ZNX0JUX1NISUZUIExJ TUFfVk1fUFRfU0hJRlQKPiArCj4gKyNkZWZpbmUgTElNQV9WTV9QVF9NQVNLICgoMSA8PCBMSU1B X1ZNX1BEX1NISUZUKSAtIDEpCj4gKyNkZWZpbmUgTElNQV9WTV9CVF9NQVNLICgoMSA8PCBMSU1B X1ZNX1BCX1NISUZUKSAtIDEpCj4gKwo+ICsjZGVmaW5lIExJTUFfUERFKHZhKSAodmEgPj4gTElN QV9WTV9QRF9TSElGVCkKPiArI2RlZmluZSBMSU1BX1BURSh2YSkgKCh2YSAmIExJTUFfVk1fUFRf TUFTSykgPj4gTElNQV9WTV9QVF9TSElGVCkKPiArI2RlZmluZSBMSU1BX1BCRSh2YSkgKHZhID4+ IExJTUFfVk1fUEJfU0hJRlQpCj4gKyNkZWZpbmUgTElNQV9CVEUodmEpICgodmEgJiBMSU1BX1ZN X0JUX01BU0spID4+IExJTUFfVk1fQlRfU0hJRlQpCj4gKwo+ICsKPiArc3RhdGljIHZvaWQgbGlt YV92bV91bm1hcF9wYWdlX3RhYmxlKHN0cnVjdCBsaW1hX3ZtICp2bSwgdTMyIHN0YXJ0LCB1MzIg ZW5kKQo+ICt7Cj4gKyAgICAgICB1MzIgYWRkcjsKPiArCj4gKyAgICAgICBmb3IgKGFkZHIgPSBz dGFydDsgYWRkciA8PSBlbmQ7IGFkZHIgKz0gTElNQV9QQUdFX1NJWkUpIHsKPiArICAgICAgICAg ICAgICAgdTMyIHBiZSA9IExJTUFfUEJFKGFkZHIpOwo+ICsgICAgICAgICAgICAgICB1MzIgYnRl ID0gTElNQV9CVEUoYWRkcik7Cj4gKwo+ICsgICAgICAgICAgICAgICB2bS0+YnRzW3BiZV0uY3B1 W2J0ZV0gPSAwOwo+ICsgICAgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxpbWFfdm1fbWFw X3BhZ2VfdGFibGUoc3RydWN0IGxpbWFfdm0gKnZtLCBkbWFfYWRkcl90ICpkbWEsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBzdGFydCwgdTMyIGVuZCkKPiArewo+ICsg ICAgICAgdTY0IGFkZHI7Cj4gKyAgICAgICBpbnQgaSA9IDA7Cj4gKwo+ICsgICAgICAgZm9yIChh ZGRyID0gc3RhcnQ7IGFkZHIgPD0gZW5kOyBhZGRyICs9IExJTUFfUEFHRV9TSVpFKSB7Cj4gKyAg ICAgICAgICAgICAgIHUzMiBwYmUgPSBMSU1BX1BCRShhZGRyKTsKPiArICAgICAgICAgICAgICAg dTMyIGJ0ZSA9IExJTUFfQlRFKGFkZHIpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKCF2bS0+ YnRzW3BiZV0uY3B1KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hX2FkZHJfdCBwdHM7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdTMyICpwZDsKPiArICAgICAgICAgICAgICAgICAg ICAgICBpbnQgajsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdm0tPmJ0c1twYmVdLmNw dSA9IGRtYV9hbGxvY193YygKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLT5k ZXYtPmRldiwgTElNQV9QQUdFX1NJWkUgPDwgTElNQV9WTV9OVU1fUFRfUEVSX0JUX1NISUZULAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZtLT5idHNbcGJlXS5kbWEsIEdGUF9L RVJORUwgfCBfX0dGUF9aRVJPKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZtLT5i dHNbcGJlXS5jcHUpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGRy ICE9IHN0YXJ0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1h X3ZtX3VubWFwX3BhZ2VfdGFibGUodm0sIHN0YXJ0LCBhZGRyIC0gMSk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAgICAgICAgICAgICAgICAg ICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHB0cyA9IHZtLT5idHNbcGJlXS5k bWE7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcGQgPSB2bS0+cGQuY3B1ICsgKHBiZSA8PCBM SU1BX1ZNX05VTV9QVF9QRVJfQlRfU0hJRlQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZv ciAoaiA9IDA7IGogPCBMSU1BX1ZNX05VTV9QVF9QRVJfQlQ7IGorKykgewo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGRbal0gPSBwdHMgfCBMSU1BX1ZNX0ZMQUdfUFJFU0VOVDsK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cyArPSBMSU1BX1BBR0VfU0laRTsK PiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAg ICAgICAgICAgICAgIHZtLT5idHNbcGJlXS5jcHVbYnRlXSA9IGRtYVtpKytdIHwgTElNQV9WTV9G TEFHU19DQUNIRTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIHN0cnVjdCBsaW1hX2JvX3ZhICoKPiArbGltYV92bV9ib19maW5kKHN0cnVjdCBs aW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGlt YV9ib192YSAqYm9fdmEsICpyZXQgPSBOVUxMOwo+ICsKPiArICAgICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkoYm9fdmEsICZiby0+dmEsIGxpc3QpIHsKPiArICAgICAgICAgICAgICAgaWYgKGJvX3Zh LT52bSA9PSB2bSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGJvX3ZhOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiAraW50IGxpbWFfdm1fYm9f YWRkKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvLCBib29sIGNyZWF0ZSkK PiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfYm9fdmEgKmJvX3ZhOwo+ICsgICAgICAgaW50IGVy cjsKPiArCj4gKyAgICAgICBtdXRleF9sb2NrKCZiby0+bG9jayk7Cj4gKwo+ICsgICAgICAgYm9f dmEgPSBsaW1hX3ZtX2JvX2ZpbmQodm0sIGJvKTsKPiArICAgICAgIGlmIChib192YSkgewo+ICsg ICAgICAgICAgICAgICBib192YS0+cmVmX2NvdW50Kys7Cj4gKyAgICAgICAgICAgICAgIG11dGV4 X3VubG9jaygmYm8tPmxvY2spOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICAg IH0KPiArCj4gKyAgICAgICAvKiBzaG91bGQgbm90IGNyZWF0ZSBuZXcgYm9fdmEgaWYgbm90IGFz a2VkIGJ5IGNhbGxlciAqLwo+ICsgICAgICAgaWYgKCFjcmVhdGUpIHsKPiArICAgICAgICAgICAg ICAgbXV0ZXhfdW5sb2NrKCZiby0+bG9jayk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5P RU5UOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGJvX3ZhID0ga3phbGxvYyhzaXplb2YoKmJv X3ZhKSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBpZiAoIWJvX3ZhKSB7Cj4gKyAgICAgICAgICAg ICAgIGVyciA9IC1FTk9NRU07Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDA7Cj4gKyAg ICAgICB9Cj4gKwo+ICsgICAgICAgYm9fdmEtPnZtID0gdm07Cj4gKyAgICAgICBib192YS0+cmVm X2NvdW50ID0gMTsKPiArCj4gKyAgICAgICBtdXRleF9sb2NrKCZ2bS0+bG9jayk7Cj4gKwo+ICsg ICAgICAgZXJyID0gZHJtX21tX2luc2VydF9ub2RlKCZ2bS0+bW0sICZib192YS0+bm9kZSwgYm8t PmdlbS5zaXplKTsKPiArICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJy X291dDE7Cj4gKwo+ICsgICAgICAgZXJyID0gbGltYV92bV9tYXBfcGFnZV90YWJsZSh2bSwgYm8t PnBhZ2VzX2RtYV9hZGRyLCBib192YS0+bm9kZS5zdGFydCwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9kZS5zaXplIC0g MSk7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQyOwo+ ICsKPiArICAgICAgIG11dGV4X3VubG9jaygmdm0tPmxvY2spOwo+ICsKPiArICAgICAgIGxpc3Rf YWRkX3RhaWwoJmJvX3ZhLT5saXN0LCAmYm8tPnZhKTsKClNvIHlvdSBjYW4gaGF2ZSAxIEJPIGF0 IG11bHRpcGxlIFZBcz8gSXMgdGhhdCByZWFsbHkgbmVlZGVkPwoKPiArCj4gKyAgICAgICBtdXRl eF91bmxvY2soJmJvLT5sb2NrKTsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZXJyX291dDI6 Cj4gKyAgICAgICBkcm1fbW1fcmVtb3ZlX25vZGUoJmJvX3ZhLT5ub2RlKTsKPiArZXJyX291dDE6 Cj4gKyAgICAgICBtdXRleF91bmxvY2soJnZtLT5sb2NrKTsKPiArICAgICAgIGtmcmVlKGJvX3Zh KTsKPiArZXJyX291dDA6Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmJvLT5sb2NrKTsKPiArICAg ICAgIHJldHVybiBlcnI7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV92bV9ib19kZWwoc3RydWN0IGxp bWFfdm0gKnZtLCBzdHJ1Y3QgbGltYV9ibyAqYm8pCj4gK3sKPiArICAgICAgIHN0cnVjdCBsaW1h X2JvX3ZhICpib192YTsKPiArCj4gKyAgICAgICBtdXRleF9sb2NrKCZiby0+bG9jayk7Cj4gKwo+ ICsgICAgICAgYm9fdmEgPSBsaW1hX3ZtX2JvX2ZpbmQodm0sIGJvKTsKPiArICAgICAgIGlmICgt LWJvX3ZhLT5yZWZfY291bnQgPiAwKSB7Cj4gKyAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygm Ym8tPmxvY2spOwo+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgbXV0ZXhfbG9jaygmdm0tPmxvY2spOwo+ICsKPiArICAgICAgIGxpbWFfdm1fdW5tYXBf cGFnZV90YWJsZSh2bSwgYm9fdmEtPm5vZGUuc3RhcnQsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9kZS5zaXplIC0gMSk7Cj4g Kwo+ICsgICAgICAgZHJtX21tX3JlbW92ZV9ub2RlKCZib192YS0+bm9kZSk7Cj4gKwo+ICsgICAg ICAgbXV0ZXhfdW5sb2NrKCZ2bS0+bG9jayk7Cj4gKwo+ICsgICAgICAgbGlzdF9kZWwoJmJvX3Zh LT5saXN0KTsKPiArCj4gKyAgICAgICBtdXRleF91bmxvY2soJmJvLT5sb2NrKTsKPiArCj4gKyAg ICAgICBrZnJlZShib192YSk7Cj4gK30KPiArCj4gK3UzMiBsaW1hX3ZtX2dldF92YShzdHJ1Y3Qg bGltYV92bSAqdm0sIHN0cnVjdCBsaW1hX2JvICpibykKPiArewo+ICsgICAgICAgc3RydWN0IGxp bWFfYm9fdmEgKmJvX3ZhOwo+ICsgICAgICAgdTMyIHJldDsKPiArCj4gKyAgICAgICBtdXRleF9s b2NrKCZiby0+bG9jayk7Cj4gKwo+ICsgICAgICAgYm9fdmEgPSBsaW1hX3ZtX2JvX2ZpbmQodm0s IGJvKTsKPiArICAgICAgIHJldCA9IGJvX3ZhLT5ub2RlLnN0YXJ0Owo+ICsKPiArICAgICAgIG11 dGV4X3VubG9jaygmYm8tPmxvY2spOwo+ICsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0cnVjdCBsaW1hX3ZtICpsaW1hX3ZtX2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRl dikKPiArewo+ICsgICAgICAgc3RydWN0IGxpbWFfdm0gKnZtOwo+ICsKPiArICAgICAgIHZtID0g a3phbGxvYyhzaXplb2YoKnZtKSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBpZiAoIXZtKQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICAgICB2bS0+ZGV2ID0gZGV2Owo+ ICsgICAgICAgbXV0ZXhfaW5pdCgmdm0tPmxvY2spOwo+ICsgICAgICAga3JlZl9pbml0KCZ2bS0+ cmVmY291bnQpOwo+ICsKPiArICAgICAgIHZtLT5wZC5jcHUgPSBkbWFfYWxsb2Nfd2MoZGV2LT5k ZXYsIExJTUFfUEFHRV9TSVpFLCAmdm0tPnBkLmRtYSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOwo+ICsgICAgICAgaWYgKCF2bS0+ cGQuY3B1KQo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQwOwo+ICsKPiArICAgICAgIGlm IChkZXYtPmRsYnVfY3B1KSB7Cj4gKyAgICAgICAgICAgICAgIGludCBlcnIgPSBsaW1hX3ZtX21h cF9wYWdlX3RhYmxlKAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHZtLCAmZGV2LT5kbGJ1X2Rt YSwgTElNQV9WQV9SRVNFUlZFX0RMQlUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgTElNQV9W QV9SRVNFUlZFX0RMQlUgKyBMSU1BX1BBR0VfU0laRSAtIDEpOwo+ICsgICAgICAgICAgICAgICBp ZiAoZXJyKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDE7Cj4gKyAgICAg ICB9Cj4gKwo+ICsgICAgICAgZHJtX21tX2luaXQoJnZtLT5tbSwgZGV2LT52YV9zdGFydCwgZGV2 LT52YV9lbmQgLSBkZXYtPnZhX3N0YXJ0KTsKPiArCj4gKyAgICAgICByZXR1cm4gdm07Cj4gKwo+ ICtlcnJfb3V0MToKPiArICAgICAgIGRtYV9mcmVlX3djKGRldi0+ZGV2LCBMSU1BX1BBR0VfU0la RSwgdm0tPnBkLmNwdSwgdm0tPnBkLmRtYSk7Cj4gK2Vycl9vdXQwOgo+ICsgICAgICAga2ZyZWUo dm0pOwo+ICsgICAgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3ZvaWQgbGltYV92bV9yZWxl YXNlKHN0cnVjdCBrcmVmICprcmVmKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbGltYV92bSAqdm0g PSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGxpbWFfdm0sIHJlZmNvdW50KTsKPiArICAgICAg IGludCBpOwo+ICsKPiArICAgICAgIGRybV9tbV90YWtlZG93bigmdm0tPm1tKTsKPiArCj4gKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgTElNQV9WTV9OVU1fQlQ7IGkrKykgewo+ICsgICAgICAgICAg ICAgICBpZiAodm0tPmJ0c1tpXS5jcHUpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hX2Zy ZWVfd2Modm0tPmRldi0+ZGV2LCBMSU1BX1BBR0VfU0laRSA8PCBMSU1BX1ZNX05VTV9QVF9QRVJf QlRfU0hJRlQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmJ0c1tp XS5jcHUsIHZtLT5idHNbaV0uZG1hKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKHZt LT5wZC5jcHUpCj4gKyAgICAgICAgICAgICAgIGRtYV9mcmVlX3djKHZtLT5kZXYtPmRldiwgTElN QV9QQUdFX1NJWkUsIHZtLT5wZC5jcHUsIHZtLT5wZC5kbWEpOwo+ICsKPiArICAgICAgIGtmcmVl KHZtKTsKPiArfQo+ICsKPiArdm9pZCBsaW1hX3ZtX3ByaW50KHN0cnVjdCBsaW1hX3ZtICp2bSkK PiArewo+ICsgICAgICAgaW50IGksIGosIGs7Cj4gKyAgICAgICB1MzIgKnBkLCAqcHQ7Cj4gKwo+ ICsgICAgICAgaWYgKCF2bS0+cGQuY3B1KQo+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gKwo+ ICsgICAgICAgcGQgPSB2bS0+cGQuY3B1Owo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IExJTUFf Vk1fTlVNX0JUOyBpKyspIHsKPiArICAgICAgICAgICAgICAgaWYgKCF2bS0+YnRzW2ldLmNwdSkK PiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArCj4gKyAgICAgICAgICAgICAg IHB0ID0gdm0tPmJ0c1tpXS5jcHU7Cj4gKyAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBM SU1BX1ZNX05VTV9QVF9QRVJfQlQ7IGorKykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlu dCBpZHggPSAoaSA8PCBMSU1BX1ZNX05VTV9QVF9QRVJfQlRfU0hJRlQpICsgajsKPiArICAgICAg ICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9JTkZPICJsaW1hIHZtIHBkICUwM3g6JTA4eFxu IiwgaWR4LCBwZFtpZHhdKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0g MDsgayA8IExJTUFfUEFHRV9FTlRfTlVNOyBrKyspIHsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiBwdGUgPSAqcHQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChwdGUpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy aW50ayhLRVJOX0lORk8gIiAgcHQgJTAzeDolMDh4XG4iLCBrLCBwdGUpOwo+ICsgICAgICAgICAg ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICt9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfdm0uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9saW1hL2xpbWFfdm0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MDAwLi5hMTM1ZTJmMDUzMTUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2xpbWEvbGltYV92bS5oCj4gQEAgLTAsMCArMSw2MiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCBPUiBNSVQgKi8KPiArLyogQ29weXJpZ2h0IDIwMTctMjAxOCBRaWFu ZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4gKi8KPiArCj4gKyNpZm5kZWYgX19MSU1BX1ZNX0hfXwo+ ICsjZGVmaW5lIF9fTElNQV9WTV9IX18KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX21tLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gKwo+ICsjZGVmaW5lIExJTUFfUEFHRV9TSVpFICAg IDQwOTYKPiArI2RlZmluZSBMSU1BX1BBR0VfTUFTSyAgICAoTElNQV9QQUdFX1NJWkUgLSAxKQo+ ICsjZGVmaW5lIExJTUFfUEFHRV9FTlRfTlVNIChMSU1BX1BBR0VfU0laRSAvIHNpemVvZih1MzIp KQo+ICsKPiArI2RlZmluZSBMSU1BX1ZNX05VTV9QVF9QRVJfQlRfU0hJRlQgMwo+ICsjZGVmaW5l IExJTUFfVk1fTlVNX1BUX1BFUl9CVCAoMSA8PCBMSU1BX1ZNX05VTV9QVF9QRVJfQlRfU0hJRlQp Cj4gKyNkZWZpbmUgTElNQV9WTV9OVU1fQlQgKExJTUFfUEFHRV9FTlRfTlVNID4+IExJTUFfVk1f TlVNX1BUX1BFUl9CVF9TSElGVCkKPiArCj4gKyNkZWZpbmUgTElNQV9WQV9SRVNFUlZFX1NUQVJU ICAweEZGRjAwMDAwCj4gKyNkZWZpbmUgTElNQV9WQV9SRVNFUlZFX0RMQlUgICBMSU1BX1ZBX1JF U0VSVkVfU1RBUlQKPiArI2RlZmluZSBMSU1BX1ZBX1JFU0VSVkVfRU5EICAgIDB4MTAwMDAwMDAw Cj4gKwo+ICtzdHJ1Y3QgbGltYV9kZXZpY2U7Cj4gKwo+ICtzdHJ1Y3QgbGltYV92bV9wYWdlIHsK PiArICAgICAgIHUzMiAqY3B1Owo+ICsgICAgICAgZG1hX2FkZHJfdCBkbWE7Cj4gK307Cj4gKwo+ ICtzdHJ1Y3QgbGltYV92bSB7Cj4gKyAgICAgICBzdHJ1Y3QgbXV0ZXggbG9jazsKPiArICAgICAg IHN0cnVjdCBrcmVmIHJlZmNvdW50Owo+ICsKPiArICAgICAgIHN0cnVjdCBkcm1fbW0gbW07Cj4g Kwo+ICsgICAgICAgc3RydWN0IGxpbWFfZGV2aWNlICpkZXY7Cj4gKwo+ICsgICAgICAgc3RydWN0 IGxpbWFfdm1fcGFnZSBwZDsKPiArICAgICAgIHN0cnVjdCBsaW1hX3ZtX3BhZ2UgYnRzW0xJTUFf Vk1fTlVNX0JUXTsKPiArfTsKPiArCj4gK2ludCBsaW1hX3ZtX2JvX2FkZChzdHJ1Y3QgbGltYV92 bSAqdm0sIHN0cnVjdCBsaW1hX2JvICpibywgYm9vbCBjcmVhdGUpOwo+ICt2b2lkIGxpbWFfdm1f Ym9fZGVsKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKTsKPiArCj4gK3Uz MiBsaW1hX3ZtX2dldF92YShzdHJ1Y3QgbGltYV92bSAqdm0sIHN0cnVjdCBsaW1hX2JvICpibyk7 Cj4gKwo+ICtzdHJ1Y3QgbGltYV92bSAqbGltYV92bV9jcmVhdGUoc3RydWN0IGxpbWFfZGV2aWNl ICpkZXYpOwo+ICt2b2lkIGxpbWFfdm1fcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsaW1hX3ZtICpsaW1hX3ZtX2dldChzdHJ1Y3QgbGltYV92 bSAqdm0pCj4gK3sKPiArICAgICAgIGtyZWZfZ2V0KCZ2bS0+cmVmY291bnQpOwo+ICsgICAgICAg cmV0dXJuIHZtOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgbGltYV92bV9wdXQoc3Ry dWN0IGxpbWFfdm0gKnZtKQo+ICt7Cj4gKyAgICAgICBrcmVmX3B1dCgmdm0tPnJlZmNvdW50LCBs aW1hX3ZtX3JlbGVhc2UpOwo+ICt9Cj4gKwo+ICt2b2lkIGxpbWFfdm1fcHJpbnQoc3RydWN0IGxp bWFfdm0gKnZtKTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJt L2xpbWFfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2xpbWFfZHJtLmgKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjRmYjQ4MDc5NThkCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vbGltYV9kcm0uaAo+IEBAIC0wLDAgKzEsMTI2IEBA Cj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCBXSVRIIExpbnV4LXN5c2Nh bGwtbm90ZSkgT1IgTUlUICovCj4gKy8qIENvcHlyaWdodCAyMDE3LTIwMTggUWlhbmcgWXUgPHl1 cTgyNUBnbWFpbC5jb20+ICovCj4gKwo+ICsjaWZuZGVmIF9fTElNQV9EUk1fSF9fCj4gKyNkZWZp bmUgX19MSU1BX0RSTV9IX18KPiArCj4gKyNpbmNsdWRlICJkcm0uaCIKPiArCj4gKyNpZiBkZWZp bmVkKF9fY3BsdXNwbHVzKQo+ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4gKwo+ICsjZGVmaW5l IExJTUFfSU5GT19HUFVfTUFMSTQwMCAweDAwCj4gKyNkZWZpbmUgTElNQV9JTkZPX0dQVV9NQUxJ NDUwIDB4MDEKPiArCj4gK3N0cnVjdCBkcm1fbGltYV9pbmZvIHsKPiArICAgICAgIF9fdTMyIGdw dV9pZDsgICAvKiBvdXQgKi8KPiArICAgICAgIF9fdTMyIG51bV9wcDsgICAvKiBvdXQgKi8KPiAr ICAgICAgIF9fdTMyIHZhbGlkOyAgICAvKiBvdXQgKi8KPiArICAgICAgIF9fdTMyIF9yZXN2Wzdd Owo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9saW1hX2dlbV9jcmVhdGUgewo+ICsgICAgICAgX191 MzIgc2l6ZTsgICAgLyogaW4gKi8KPiArICAgICAgIF9fdTMyIGZsYWdzOyAgIC8qIGluICovCj4g KyAgICAgICBfX3UzMiBoYW5kbGU7ICAvKiBvdXQgKi8KPiArICAgICAgIF9fdTMyIHBhZDsKPiAr fTsKPiArCj4gK3N0cnVjdCBkcm1fbGltYV9nZW1faW5mbyB7Cj4gKyAgICAgICBfX3UzMiBoYW5k bGU7ICAvKiBpbiAqLwo+ICsgICAgICAgX191MzIgdmE7ICAgICAgLyogb3V0ICovCj4gKyAgICAg ICBfX3U2NCBvZmZzZXQ7ICAvKiBvdXQgKi8KPiArfTsKPiArCj4gKyNkZWZpbmUgTElNQV9TVUJN SVRfQk9fUkVBRCAgIDB4MDEKPiArI2RlZmluZSBMSU1BX1NVQk1JVF9CT19XUklURSAgMHgwMgo+ ICsKPiArc3RydWN0IGRybV9saW1hX2dlbV9zdWJtaXRfYm8gewo+ICsgICAgICAgX191MzIgaGFu ZGxlOyAgLyogaW4gKi8KPiArICAgICAgIF9fdTMyIGZsYWdzOyAgIC8qIGluICovCj4gK307Cj4g Kwo+ICsjZGVmaW5lIExJTUFfR1BfRlJBTUVfUkVHX05VTSA2Cj4gKwo+ICtzdHJ1Y3QgZHJtX2xp bWFfZ3BfZnJhbWUgewo+ICsgICAgICAgX191MzIgZnJhbWVbTElNQV9HUF9GUkFNRV9SRUdfTlVN XTsKPiArfTsKPiArCj4gKyNkZWZpbmUgTElNQV9QUF9GUkFNRV9SRUdfTlVNIDIzCj4gKyNkZWZp bmUgTElNQV9QUF9XQl9SRUdfTlVNIDEyCj4gKwo+ICtzdHJ1Y3QgZHJtX2xpbWFfbTQwMF9wcF9m cmFtZSB7Cj4gKyAgICAgICBfX3UzMiBmcmFtZVtMSU1BX1BQX0ZSQU1FX1JFR19OVU1dOwo+ICsg ICAgICAgX191MzIgbnVtX3BwOwo+ICsgICAgICAgX191MzIgd2JbMyAqIExJTUFfUFBfV0JfUkVH X05VTV07Cj4gKyAgICAgICBfX3UzMiBwbGJ1X2FycmF5X2FkZHJlc3NbNF07Cj4gKyAgICAgICBf X3UzMiBmcmFnbWVudF9zdGFja19hZGRyZXNzWzRdOwo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9s aW1hX200NTBfcHBfZnJhbWUgewo+ICsgICAgICAgX191MzIgZnJhbWVbTElNQV9QUF9GUkFNRV9S RUdfTlVNXTsKPiArICAgICAgIF9fdTMyIG51bV9wcDsKPiArICAgICAgIF9fdTMyIHdiWzMgKiBM SU1BX1BQX1dCX1JFR19OVU1dOwo+ICsgICAgICAgX191MzIgdXNlX2RsYnU7Cj4gKyAgICAgICBf X3UzMiBfcGFkOwo+ICsgICAgICAgdW5pb24gewo+ICsgICAgICAgICAgICAgICBfX3UzMiBwbGJ1 X2FycmF5X2FkZHJlc3NbOF07Cj4gKyAgICAgICAgICAgICAgIF9fdTMyIGRsYnVfcmVnc1s0XTsK PiArICAgICAgIH07Cj4gKyAgICAgICBfX3UzMiBmcmFnbWVudF9zdGFja19hZGRyZXNzWzhdOwo+ ICt9Owo+ICsKPiArI2RlZmluZSBMSU1BX1BJUEVfR1AgIDB4MDAKPiArI2RlZmluZSBMSU1BX1BJ UEVfUFAgIDB4MDEKPiArCj4gKyNkZWZpbmUgTElNQV9TVUJNSVRfRkxBR19FWFBMSUNJVF9GRU5D RSAoMSA8PCAwKQo+ICsKPiArc3RydWN0IGRybV9saW1hX2dlbV9zdWJtaXQgewo+ICsgICAgICAg X191MzIgY3R4OyAgICAgICAgIC8qIGluICovCj4gKyAgICAgICBfX3UzMiBwaXBlOyAgICAgICAg LyogaW4gKi8KPiArICAgICAgIF9fdTMyIG5yX2JvczsgICAgICAvKiBpbiAqLwo+ICsgICAgICAg X191MzIgZnJhbWVfc2l6ZTsgIC8qIGluICovCj4gKyAgICAgICBfX3U2NCBib3M7ICAgICAgICAg LyogaW4gKi8KPiArICAgICAgIF9fdTY0IGZyYW1lOyAgICAgICAvKiBpbiAqLwo+ICsgICAgICAg X191MzIgZmxhZ3M7ICAgICAgIC8qIGluICovCj4gKyAgICAgICBfX3UzMiBvdXRfc3luYzsgICAg LyogaW4gKi8KPiArICAgICAgIF9fdTMyIGluX3N5bmNbMl07ICAvKiBpbiAqLwo+ICt9Owo+ICsK PiArI2RlZmluZSBMSU1BX0dFTV9XQUlUX1JFQUQgICAweDAxCj4gKyNkZWZpbmUgTElNQV9HRU1f V0FJVF9XUklURSAgMHgwMgo+ICsKPiArc3RydWN0IGRybV9saW1hX2dlbV93YWl0IHsKPiArICAg ICAgIF9fdTMyIGhhbmRsZTsgICAgICAvKiBpbiAqLwo+ICsgICAgICAgX191MzIgb3A7ICAgICAg ICAgIC8qIGluICovCj4gKyAgICAgICBfX3M2NCB0aW1lb3V0X25zOyAgLyogaW4gKi8KPiArfTsK PiArCj4gKyNkZWZpbmUgTElNQV9DVFhfT1BfQ1JFQVRFIDEKPiArI2RlZmluZSBMSU1BX0NUWF9P UF9GUkVFICAgMgo+ICsKPiArc3RydWN0IGRybV9saW1hX2N0eCB7Cj4gKyAgICAgICBfX3UzMiBv cDsgICAgICAgICAgLyogaW4gKi8KPiArICAgICAgIF9fdTMyIGlkOyAgICAgICAgICAvKiBpbi9v dXQgKi8KPiArfTsKPiArCj4gKyNkZWZpbmUgRFJNX0xJTUFfSU5GTyAgICAgICAgMHgwMAo+ICsj ZGVmaW5lIERSTV9MSU1BX0dFTV9DUkVBVEUgIDB4MDEKPiArI2RlZmluZSBEUk1fTElNQV9HRU1f SU5GTyAgICAweDAyCj4gKyNkZWZpbmUgRFJNX0xJTUFfR0VNX1NVQk1JVCAgMHgwMwo+ICsjZGVm aW5lIERSTV9MSU1BX0dFTV9XQUlUICAgIDB4MDQKPiArI2RlZmluZSBEUk1fTElNQV9DVFggICAg ICAgICAweDA1Cj4gKwo+ICsjZGVmaW5lIERSTV9JT0NUTF9MSU1BX0lORk8gRFJNX0lPUihEUk1f Q09NTUFORF9CQVNFICsgRFJNX0xJTUFfSU5GTywgc3RydWN0IGRybV9saW1hX2luZm8pCj4gKyNk ZWZpbmUgRFJNX0lPQ1RMX0xJTUFfR0VNX0NSRUFURSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0xJTUFfR0VNX0NSRUFURSwgc3RydWN0IGRybV9saW1hX2dlbV9jcmVhdGUpCj4gKyNk ZWZpbmUgRFJNX0lPQ1RMX0xJTUFfR0VNX0lORk8gRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9MSU1BX0dFTV9JTkZPLCBzdHJ1Y3QgZHJtX2xpbWFfZ2VtX2luZm8pCj4gKyNkZWZpbmUg RFJNX0lPQ1RMX0xJTUFfR0VNX1NVQk1JVCBEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f TElNQV9HRU1fU1VCTUlULCBzdHJ1Y3QgZHJtX2xpbWFfZ2VtX3N1Ym1pdCkKPiArI2RlZmluZSBE Uk1fSU9DVExfTElNQV9HRU1fV0FJVCBEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTElN QV9HRU1fV0FJVCwgc3RydWN0IGRybV9saW1hX2dlbV93YWl0KQo+ICsjZGVmaW5lIERSTV9JT0NU TF9MSU1BX0NUWCBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0xJTUFfQ1RYLCBzdHJ1 Y3QgZHJtX2xpbWFfY3R4KQo+ICsKPiArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCj4gK30KPiAr I2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX19MSU1BX0RSTV9IX18gKi8KPiAtLQo+IDIuMTcuMQo+ Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==