From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Subject: Re: [PATCH] drm/amdgpu: reserve GDS resources statically Date: Thu, 13 Sep 2018 14:20:28 -0400 Message-ID: References: <20180912203358.2172-1-maraeo@gmail.com> <904d7dbb-eeec-03a0-92c8-5c5170a7b43c@gmail.com> <7db280c8-e013-6865-aef7-7c1d5640b875@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7db280c8-e013-6865-aef7-7c1d5640b875-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?Q?Christian_K=C3=B6nig?= Cc: amd-gfx mailing list R0RTIGlzIGEgdGVtcG9yYXJ5IG1lbW9yeS4gSXRzIHB1cnBvc2UgZGVwZW5kcyBvbiB0aGUgam9i LCBidXQgbW9zdCBvZgp0aGUgdGltZSwgdGhlIGlkZWEgaXM6Ci0gYmVnaW5uaW5nIG9mIElCCi0g aW5pdGlhbGl6ZSBHRFMgdmFyaWFibGVzCi0gZGlzcGF0Y2ggY29tcHV0ZSB0aGF0IHdvcmtzIHdp dGggR0RTIHZhcmlhYmxlcwotIHdoZW4gZG9uZSwgY29weSBHRFMgdmFyaWFibGVzIHRvIG1lbW9y eQotIHJlcGVhdCAuLi4KLSBlbmQgb2YgSUIKCkdEUyBpcyBsaWtlIGEgcG9vbCBvZiBnbG9iYWwg c2hhZGVyIEdQUnMuCgpHRFMgaXMgdG9vIHNtYWxsIGZvciBwZXJzaXN0ZW50IGRhdGEuCgpNYXJl awoKT24gVGh1LCBTZXAgMTMsIDIwMTggYXQgMToyNiBQTSwgQ2hyaXN0aWFuIEvDtm5pZwo8Y2hy aXN0aWFuLmtvZW5pZ0BhbWQuY29tPiB3cm90ZToKPiBBcmUgeW91IHN1cmUgb2YgdGhhdD8gSSBt ZWFuIGl0IGlzIHJhdGhlciBwb2ludGxlc3MgdG8gaGF2ZSBhIEdsb2JhbCBEYXRhCj4gU2hhcmUg d2hlbiBpdCBjYW4ndCBiZSB1c2VkIHRvIHNoYXJlIGFueXRoaW5nPwo+Cj4gT24gdGhlIG90aGVy IGhhbmQgSSdtIG5vdCBvcHBvc2VkIHRvIGdldCByaWQgb2YgYWxsIHRoYXQgc3R1ZmYgaWYgd2Ug cmVhbGx5Cj4gZG9uJ3QgbmVlZCBpdC4KPgo+IENocmlzdGlhbi4KPgo+IEFtIDEzLjA5LjIwMTgg dW0gMTc6Mjcgc2NocmllYiBNYXJlayBPbMWhw6FrOgo+Pgo+PiBUaGF0J3MgT0suIFdlIGRvbid0 IG5lZWQgSUJzIHRvIGdldCB0aGUgc2FtZSBWTUlELgo+Pgo+PiBNYXJlawo+Pgo+PiBPbiBUaHUs IFNlcCAxMywgMjAxOCBhdCA0OjQwIEFNLCBDaHJpc3RpYW4gS8O2bmlnCj4+IDxja29lbmlnLmxl aWNodHp1bWVya2VuQGdtYWlsLmNvbT4gd3JvdGU6Cj4+Pgo+Pj4gQXMgZGlzY3Vzc2VkIGludGVy bmFsbHkgdGhhdCBkb2Vzbid0IHdvcmsgYmVjYXVzZSB0aHJlYWRzIGRvbid0IG5lY2Vzc2FyeQo+ Pj4gZ2V0IHRoZSBzYW1lIFZNSUQgYXNzaWduZWQuCj4+Pgo+Pj4gQ2hyaXN0aWFuLgo+Pj4KPj4+ IEFtIDEyLjA5LjIwMTggdW0gMjI6MzMgc2NocmllYiBNYXJlayBPbMWhw6FrOgo+Pj4+Cj4+Pj4g RnJvbTogTWFyZWsgT2zFocOhayA8bWFyZWsub2xzYWtAYW1kLmNvbT4KPj4+Pgo+Pj4+IEkndmUg Y2hvc2VuIHRvIGRvIGl0IGxpa2UgdGhpcyBiZWNhdXNlIGl0J3MgZWFzeSBhbmQgYWxsb3dzIGFu IGFyYml0cmFyeQo+Pj4+IG51bWJlciBvZiBwcm9jZXNzZXMuCj4+Pj4KPj4+PiBTaWduZWQtb2Zm LWJ5OiBNYXJlayBPbMWhw6FrIDxtYXJlay5vbHNha0BhbWQuY29tPgo+Pj4+IC0tLQo+Pj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmMgfCAgMTAgLS0KPj4+ PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5oIHwgICAzIC0K Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyAgICAgIHwgIDIw IC0tLS0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2RzLmggICAg IHwgIDE5ICstLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0u YyAgICAgfCAgMjQgKy0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9pZHMuYyAgICAgfCAgIDYgLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9pZHMuaCAgICAgfCAgIDcgLS0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfam9iLmggICAgIHwgICAzIC0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfa21zLmMgICAgIHwgIDE0ICstLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyAgfCAgMjEgLS0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaCAgfCAgIDYgLQo+Pj4+ICAgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmggICAgfCAgIDUgLQo+Pj4+ICAgIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYyAgICAgfCAgNjEgLS0tLS0tLS0tLQo+ Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uaCAgICAgfCAgIDgg LS0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyAgICAgIHwg IDM0ICstLS0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMg ICAgICAgfCAxMjUKPj4+PiArKysrKy0tLS0tLS0tLS0tLS0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgICAgICAgfCAxMjMgKysrKystLS0tLS0tLS0tLS0t LQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgICAgICAgfCAx MjQgKysrKysrLS0tLS0tLS0tLS0tLQo+Pj4+ICAgIGluY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2Ry bS5oICAgICAgICAgICAgICAgfCAgMTUgKy0tCj4+Pj4gICAgMTkgZmlsZXMgY2hhbmdlZCwgMTA5 IGluc2VydGlvbnMoKyksIDUxOSBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5jCj4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5jCj4+Pj4gaW5kZXggYjgwMjQzZDM5 NzJlLi43MjY0YTQ5MzBiODggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2JvX2xpc3QuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9ib19saXN0LmMKPj4+PiBAQCAtNzEsMjMgKzcxLDIwIEBAIGludCBhbWRncHVf Ym9fbGlzdF9jcmVhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UKPj4+PiAqYWRldiwKPj4+PiBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbHAsCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyBzaXplb2Yoc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5KSkKPj4+PiAgICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+ICAgICAgICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IGFt ZGdwdV9ib19saXN0KTsKPj4+PiAgICAgICAgICBzaXplICs9IG51bV9lbnRyaWVzICogc2l6ZW9m KHN0cnVjdCBhbWRncHVfYm9fbGlzdF9lbnRyeSk7Cj4+Pj4gICAgICAgICAgbGlzdCA9IGt2bWFs bG9jKHNpemUsIEdGUF9LRVJORUwpOwo+Pj4+ICAgICAgICAgIGlmICghbGlzdCkKPj4+PiAgICAg ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pj4+ICAgICAgICAgIGtyZWZfaW5pdCgmbGlz dC0+cmVmY291bnQpOwo+Pj4+IC0gICAgICAgbGlzdC0+Z2RzX29iaiA9IGFkZXYtPmdkcy5nZHNf Z2Z4X2JvOwo+Pj4+IC0gICAgICAgbGlzdC0+Z3dzX29iaiA9IGFkZXYtPmdkcy5nd3NfZ2Z4X2Jv Owo+Pj4+IC0gICAgICAgbGlzdC0+b2Ffb2JqID0gYWRldi0+Z2RzLm9hX2dmeF9ibzsKPj4+PiAg ICAgICAgICBhcnJheSA9IGFtZGdwdV9ib19saXN0X2FycmF5X2VudHJ5KGxpc3QsIDApOwo+Pj4+ ICAgICAgICAgIG1lbXNldChhcnJheSwgMCwgbnVtX2VudHJpZXMgKiBzaXplb2Yoc3RydWN0Cj4+ Pj4gYW1kZ3B1X2JvX2xpc3RfZW50cnkpKTsKPj4+PiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg bnVtX2VudHJpZXM7ICsraSkgewo+Pj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9i b19saXN0X2VudHJ5ICplbnRyeTsKPj4+PiAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqZ29iajsKPj4+PiAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmJv Owo+Pj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqdXNlcm1tOwo+Pj4+ICAg IEBAIC0xMTEsMjcgKzEwOCwyMCBAQCBpbnQgYW1kZ3B1X2JvX2xpc3RfY3JlYXRlKHN0cnVjdCBh bWRncHVfZGV2aWNlCj4+Pj4gKmFkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCwKPj4+PiAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5 ID0gJmFycmF5W2xhc3RfZW50cnkrK107Cj4+Pj4gICAgICAgICAgICAgICAgICB9Cj4+Pj4gICAg ICAgICAgICAgICAgICBlbnRyeS0+cm9iaiA9IGJvOwo+Pj4+ICAgICAgICAgICAgICAgICAgZW50 cnktPnByaW9yaXR5ID0gbWluKGluZm9baV0uYm9fcHJpb3JpdHksCj4+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1ER1BVX0JPX0xJU1RfTUFYX1BSSU9SSVRZKTsK Pj4+PiAgICAgICAgICAgICAgICAgIGVudHJ5LT50di5ibyA9ICZlbnRyeS0+cm9iai0+dGJvOwo+ Pj4+ICAgICAgICAgICAgICAgICAgZW50cnktPnR2LnNoYXJlZCA9ICFlbnRyeS0+cm9iai0+cHJp bWVfc2hhcmVkX2NvdW50Owo+Pj4+ICAgIC0gICAgICAgICAgICAgaWYgKGVudHJ5LT5yb2JqLT5w cmVmZXJyZWRfZG9tYWlucyA9PQo+Pj4+IEFNREdQVV9HRU1fRE9NQUlOX0dEUykKPj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICBsaXN0LT5nZHNfb2JqID0gZW50cnktPnJvYmo7Cj4+Pj4gLSAg ICAgICAgICAgICAgIGlmIChlbnRyeS0+cm9iai0+cHJlZmVycmVkX2RvbWFpbnMgPT0KPj4+PiBB TURHUFVfR0VNX0RPTUFJTl9HV1MpCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+ Z3dzX29iaiA9IGVudHJ5LT5yb2JqOwo+Pj4+IC0gICAgICAgICAgICAgICBpZiAoZW50cnktPnJv YmotPnByZWZlcnJlZF9kb21haW5zID09Cj4+Pj4gQU1ER1BVX0dFTV9ET01BSU5fT0EpCj4+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+b2Ffb2JqID0gZW50cnktPnJvYmo7Cj4+Pj4g LQo+Pj4+ICAgICAgICAgICAgICAgICAgdG90YWxfc2l6ZSArPSBhbWRncHVfYm9fc2l6ZShlbnRy eS0+cm9iaik7Cj4+Pj4gICAgICAgICAgICAgICAgICB0cmFjZV9hbWRncHVfYm9fbGlzdF9zZXQo bGlzdCwgZW50cnktPnJvYmopOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAgICAgICBsaXN0LT5m aXJzdF91c2VycHRyID0gZmlyc3RfdXNlcnB0cjsKPj4+PiAgICAgICAgICBsaXN0LT5udW1fZW50 cmllcyA9IG51bV9lbnRyaWVzOwo+Pj4+ICAgICAgICAgIHRyYWNlX2FtZGdwdV9jc19ib19zdGF0 dXMobGlzdC0+bnVtX2VudHJpZXMsIHRvdGFsX3NpemUpOwo+Pj4+ICAgICAgICAgICpyZXN1bHQg PSBsaXN0Owo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYm9fbGlzdC5oCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9f bGlzdC5oCj4+Pj4gaW5kZXggNjFiMDg5NzY4ZTFjLi4zMGYxMmE2MGFhMjggMTAwNjQ0Cj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xpc3QuaAo+Pj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmgKPj4+PiBAQCAt MzYsMjMgKzM2LDIwIEBAIHN0cnVjdCBhbWRncHVfYm9fbGlzdF9lbnRyeSB7Cj4+Pj4gICAgICAg ICAgc3RydWN0IHR0bV92YWxpZGF0ZV9idWZmZXIgICAgICB0djsKPj4+PiAgICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2JvX3ZhICAgICAgICAgICAgICpib192YTsKPj4+PiAgICAgICAgICB1aW50MzJf dCAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5Owo+Pj4+ICAgICAgICAgIHN0cnVjdCBw YWdlICAgICAgICAgICAgICAgICAgICAgKip1c2VyX3BhZ2VzOwo+Pj4+ICAgICAgICAgIGludCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pbnZhbGlkYXRlZDsKPj4+PiAgICB9Owo+ Pj4+ICAgICAgc3RydWN0IGFtZGdwdV9ib19saXN0IHsKPj4+PiAgICAgICAgICBzdHJ1Y3QgcmN1 X2hlYWQgcmhlYWQ7Cj4+Pj4gICAgICAgICAgc3RydWN0IGtyZWYgcmVmY291bnQ7Cj4+Pj4gLSAg ICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpnZHNfb2JqOwo+Pj4+IC0gICAgICAgc3RydWN0IGFtZGdw dV9ibyAqZ3dzX29iajsKPj4+PiAtICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKm9hX29iajsKPj4+ PiAgICAgICAgICB1bnNpZ25lZCBmaXJzdF91c2VycHRyOwo+Pj4+ICAgICAgICAgIHVuc2lnbmVk IG51bV9lbnRyaWVzOwo+Pj4+ICAgIH07Cj4+Pj4gICAgICBpbnQgYW1kZ3B1X2JvX2xpc3RfZ2V0 KHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LCBpbnQgaWQsCj4+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGFtZGdwdV9ib19saXN0ICoqcmVzdWx0KTsKPj4+PiAgICB2b2lkIGFt ZGdwdV9ib19saXN0X2dldF9saXN0KHN0cnVjdCBhbWRncHVfYm9fbGlzdCAqbGlzdCwKPj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp2YWxpZGF0ZWQp Owo+Pj4+ICAgIHZvaWQgYW1kZ3B1X2JvX2xpc3RfcHV0KHN0cnVjdCBhbWRncHVfYm9fbGlzdCAq bGlzdCk7Cj4+Pj4gICAgaW50IGFtZGdwdV9ib19jcmVhdGVfbGlzdF9lbnRyeV9hcnJheShzdHJ1 Y3QgZHJtX2FtZGdwdV9ib19saXN0X2luCj4+Pj4gKmluLAo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+PiBpbmRleCAxMDgxZmQwMGIwNTkuLjg4YjU4ZmFj ZjI5ZSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y3MuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+ Pj4gQEAgLTU2NSwyMyArNTY1LDIwIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX2xpc3RfdmFsaWRh dGUoc3RydWN0Cj4+Pj4gYW1kZ3B1X2NzX3BhcnNlciAqcCwKPj4+PiAgICAgICAgICByZXR1cm4g MDsKPj4+PiAgICB9Cj4+Pj4gICAgICBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0 cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuaW9uIGRybV9hbWRncHVfY3MgKmNzKQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICBz dHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2Owo+Pj4+ICAg ICAgICAgIHN0cnVjdCBhbWRncHVfdm0gKnZtID0gJmZwcml2LT52bTsKPj4+PiAgICAgICAgICBz dHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4+Pj4gICAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCBkdXBsaWNhdGVzOwo+Pj4+IC0gICAgICAgc3RydWN0IGFtZGdwdV9ibyAqZ2RzOwo+Pj4+ IC0gICAgICAgc3RydWN0IGFtZGdwdV9ibyAqZ3dzOwo+Pj4+IC0gICAgICAgc3RydWN0IGFtZGdw dV9ibyAqb2E7Cj4+Pj4gICAgICAgICAgdW5zaWduZWQgdHJpZXMgPSAxMDsKPj4+PiAgICAgICAg ICBpbnQgcjsKPj4+PiAgICAgICAgICBJTklUX0xJU1RfSEVBRCgmcC0+dmFsaWRhdGVkKTsKPj4+ PiAgICAgICAgICAvKiBwLT5ib19saXN0IGNvdWxkIGFscmVhZHkgYmUgYXNzaWduZWQgaWYKPj4+ PiBBTURHUFVfQ0hVTktfSURfQk9fSEFORExFUyBpcyBwcmVzZW50ICovCj4+Pj4gICAgICAgICAg aWYgKGNzLT5pbi5ib19saXN0X2hhbmRsZSkgewo+Pj4+ICAgICAgICAgICAgICAgICAgaWYgKHAt PmJvX2xpc3QpCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ Pj4+ICAgIEBAIC03MDUsNDAgKzcwMiwyMyBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJf Ym9zKHN0cnVjdAo+Pj4+IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4+Pj4gICAgICAgICAgciA9IGFt ZGdwdV9jc19saXN0X3ZhbGlkYXRlKHAsICZwLT52YWxpZGF0ZWQpOwo+Pj4+ICAgICAgICAgIGlm IChyKSB7Cj4+Pj4gICAgICAgICAgICAgICAgICBEUk1fRVJST1IoImFtZGdwdV9jc19saXN0X3Zh bGlkYXRlKHZhbGlkYXRlZCkKPj4+PiBmYWlsZWQuXG4iKTsKPj4+PiAgICAgICAgICAgICAgICAg IGdvdG8gZXJyb3JfdmFsaWRhdGU7Cj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgICAgICAgIGFtZGdw dV9jc19yZXBvcnRfbW92ZWRfYnl0ZXMocC0+YWRldiwgcC0+Ynl0ZXNfbW92ZWQsCj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5ieXRlc19tb3ZlZF92aXMpOwo+ Pj4+ICAgIC0gICAgIGdkcyA9IHAtPmJvX2xpc3QtPmdkc19vYmo7Cj4+Pj4gLSAgICAgICBnd3Mg PSBwLT5ib19saXN0LT5nd3Nfb2JqOwo+Pj4+IC0gICAgICAgb2EgPSBwLT5ib19saXN0LT5vYV9v Ymo7Cj4+Pj4gLQo+Pj4+ICAgICAgICAgIGFtZGdwdV9ib19saXN0X2Zvcl9lYWNoX2VudHJ5KGUs IHAtPmJvX2xpc3QpCj4+Pj4gICAgICAgICAgICAgICAgICBlLT5ib192YSA9IGFtZGdwdV92bV9i b19maW5kKHZtLCBlLT5yb2JqKTsKPj4+PiAgICAtICAgICBpZiAoZ2RzKSB7Cj4+Pj4gLSAgICAg ICAgICAgICAgIHAtPmpvYi0+Z2RzX2Jhc2UgPSBhbWRncHVfYm9fZ3B1X29mZnNldChnZHMpOwo+ Pj4+IC0gICAgICAgICAgICAgICBwLT5qb2ItPmdkc19zaXplID0gYW1kZ3B1X2JvX3NpemUoZ2Rz KTsKPj4+PiAtICAgICAgIH0KPj4+PiAtICAgICAgIGlmIChnd3MpIHsKPj4+PiAtICAgICAgICAg ICAgICAgcC0+am9iLT5nd3NfYmFzZSA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGd3cyk7Cj4+Pj4g LSAgICAgICAgICAgICAgIHAtPmpvYi0+Z3dzX3NpemUgPSBhbWRncHVfYm9fc2l6ZShnd3MpOwo+ Pj4+IC0gICAgICAgfQo+Pj4+IC0gICAgICAgaWYgKG9hKSB7Cj4+Pj4gLSAgICAgICAgICAgICAg IHAtPmpvYi0+b2FfYmFzZSA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KG9hKTsKPj4+PiAtICAgICAg ICAgICAgICAgcC0+am9iLT5vYV9zaXplID0gYW1kZ3B1X2JvX3NpemUob2EpOwo+Pj4+IC0gICAg ICAgfQo+Pj4+IC0KPj4+PiAgICAgICAgICBpZiAoIXIgJiYgcC0+dWZfZW50cnkucm9iaikgewo+ Pj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9ibyAqdWYgPSBwLT51Zl9lbnRyeS5y b2JqOwo+Pj4+ICAgICAgICAgICAgICAgICAgciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmdWYt PnRibyk7Cj4+Pj4gICAgICAgICAgICAgICAgICBwLT5qb2ItPnVmX2FkZHIgKz0gYW1kZ3B1X2Jv X2dwdV9vZmZzZXQodWYpOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAgIGVycm9yX3ZhbGlkYXRl Ogo+Pj4+ICAgICAgICAgIGlmIChyKQo+Pj4+ICAgICAgICAgICAgICAgICAgdHRtX2V1X2JhY2tv ZmZfcmVzZXJ2YXRpb24oJnAtPnRpY2tldCwgJnAtPnZhbGlkYXRlZCk7Cj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZHMuaAo+Pj4+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dkcy5oCj4+Pj4gaW5kZXggZTczNzI4ZDkwMzg4 Li42OWJhMjVjMmU5MjEgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2dkcy5oCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2dkcy5oCj4+Pj4gQEAgLTE3LDQ4ICsxNywzMyBAQAo+Pj4+ICAgICAqIFRIRSBDT1BZUklH SFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPj4+PiBE QU1BR0VTCj4+Pj4gT1IKPj4+PiAgICAgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCj4+Pj4gT1RIRVJXSVNFLAo+Pj4+ICAgICAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRQo+Pj4+IE9SCj4+Pj4gICAgICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF Lgo+Pj4+ICAgICAqCj4+Pj4gICAgICovCj4+Pj4gICAgICAjaWZuZGVmIF9fQU1ER1BVX0dEU19I X18KPj4+PiAgICAjZGVmaW5lIF9fQU1ER1BVX0dEU19IX18KPj4+PiAgICAtLyogQmVjYXVzZSBU VE0gcmVxdWVzdCB0aGF0IGFsbG9hY3RlZCBidWZmZXIgc2hvdWxkIGJlIFBBR0VfU0laRQo+Pj4+ IGFsaWduZWQsCj4+Pj4gLSAqIHdlIHNob3VsZCByZXBvcnQgR0RTL0dXUy9PQSBzaXplIGFzIFBB R0VfU0laRSBhbGlnbmVkCj4+Pj4gLSAqICovCj4+Pj4gLSNkZWZpbmUgQU1ER1BVX0dEU19TSElG VCAgICAgICAyCj4+Pj4gLSNkZWZpbmUgQU1ER1BVX0dXU19TSElGVCAgICAgICBQQUdFX1NISUZU Cj4+Pj4gLSNkZWZpbmUgQU1ER1BVX09BX1NISUZUICAgICAgICAgICAgICAgIFBBR0VfU0hJRlQK Pj4+PiAtCj4+Pj4gICAgc3RydWN0IGFtZGdwdV9yaW5nOwo+Pj4+ICAgIHN0cnVjdCBhbWRncHVf Ym87Cj4+Pj4gICAgICBzdHJ1Y3QgYW1kZ3B1X2dkc19hc2ljX2luZm8gewo+Pj4+ICAgICAgICAg IHVpbnQzMl90ICAgICAgICB0b3RhbF9zaXplOwo+Pj4+IC0gICAgICAgdWludDMyX3QgICAgICAg IGdmeF9wYXJ0aXRpb25fc2l6ZTsKPj4+PiAtICAgICAgIHVpbnQzMl90ICAgICAgICBjc19wYXJ0 aXRpb25fc2l6ZTsKPj4+PiArICAgICAgIHVpbnQzMl90ICAgICAgICBnZnhfc2l6ZV9wZXJfdm1p ZDsKPj4+PiArICAgICAgIHVpbnQzMl90ICAgICAgICBrZmRfc2l6ZV9wZXJfdm1pZDsKPj4+PiAg ICB9Owo+Pj4+ICAgICAgc3RydWN0IGFtZGdwdV9nZHMgewo+Pj4+ICAgICAgICAgIHN0cnVjdCBh bWRncHVfZ2RzX2FzaWNfaW5mbyAgICAgbWVtOwo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVf Z2RzX2FzaWNfaW5mbyAgICAgZ3dzOwo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfZ2RzX2Fz aWNfaW5mbyAgICAgb2E7Cj4+Pj4gLSAgICAgICAvKiBBdCBwcmVzZW50LCBHRFMsIEdXUyBhbmQg T0EgcmVzb3VyY2VzIGZvciBnZnggKGdyYXBoaWNzKQo+Pj4+IC0gICAgICAgICogaXMgYWx3YXlz IHByZS1hbGxvY2F0ZWQgYW5kIGF2YWlsYWJsZSBmb3IgZ3JhcGhpY3Mgb3BlcmF0aW9uLgo+Pj4+ IC0gICAgICAgICogU3VjaCByZXNvdXJjZSBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgZ2Z4IGNsaWVu dHMuCj4+Pj4gLSAgICAgICAgKiBUT0RPOiBtb3ZlIHRoaXMgb3BlcmF0aW9uIHRvIHVzZXIgc3Bh Y2UKPj4+PiAtICAgICAgICAqICovCj4+Pj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvKiAgICAg ICAgICAgICAgIGdkc19nZnhfYm87Cj4+Pj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvKiAgICAg ICAgICAgICAgIGd3c19nZnhfYm87Cj4+Pj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvKiAgICAg ICAgICAgICAgIG9hX2dmeF9ibzsKPj4+PiAgICB9Owo+Pj4+ICAgICAgc3RydWN0IGFtZGdwdV9n ZHNfcmVnX29mZnNldCB7Cj4+Pj4gICAgICAgICAgdWludDMyX3QgICAgICAgIG1lbV9iYXNlOwo+ Pj4+ICAgICAgICAgIHVpbnQzMl90ICAgICAgICBtZW1fc2l6ZTsKPj4+PiAgICAgICAgICB1aW50 MzJfdCAgICAgICAgZ3dzOwo+Pj4+ICAgICAgICAgIHVpbnQzMl90ICAgICAgICBvYTsKPj4+PiAg ICB9Owo+Pj4+ICAgICAgI2VuZGlmIC8qIF9fQU1ER1BVX0dEU19IX18gKi8KPj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKPj4+PiBpbmRleCBkMzBhMDgzODg1 MWIuLmM4N2FkNGI0ZDBiNiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ2VtLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2VtLmMKPj4+PiBAQCAtMjIzLDQzICsyMjMsMjUgQEAgaW50IGFtZGdwdV9nZW1fY3Jl YXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlCj4+Pj4gKmRldiwKPj4+PiB2b2lkICpkYXRhLAo+ Pj4+ICAgICAgICAgIGlmIChmbGFncyAmIH4oQU1ER1BVX0dFTV9DUkVBVEVfQ1BVX0FDQ0VTU19S RVFVSVJFRCB8Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVfR0VNX0NSRUFURV9O T19DUFVfQUNDRVNTIHwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgIEFNREdQVV9HRU1fQ1JF QVRFX0NQVV9HVFRfVVNXQyB8Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVfR0VN X0NSRUFURV9WUkFNX0NMRUFSRUQgfAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgQU1ER1BV X0dFTV9DUkVBVEVfVk1fQUxXQVlTX1ZBTElEIHwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAg IEFNREdQVV9HRU1fQ1JFQVRFX0VYUExJQ0lUX1NZTkMpKQo+Pj4+ICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4+Pj4gICAgICAgICAgLyogcmVqZWN0IGludmFsaWQgZ2VtIGRvbWFp bnMgKi8KPj4+PiAtICAgICAgIGlmIChhcmdzLT5pbi5kb21haW5zICYgfkFNREdQVV9HRU1fRE9N QUlOX01BU0spCj4+Pj4gKyAgICAgICBpZiAoYXJncy0+aW4uZG9tYWlucyAmIH4oQU1ER1BVX0dF TV9ET01BSU5fQ1BVIHwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTURH UFVfR0VNX0RPTUFJTl9HVFQgfAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFNREdQVV9HRU1fRE9NQUlOX1ZSQU0pKQo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4+Pj4gICAgLSAgICAgLyogY3JlYXRlIGEgZ2VtIG9iamVjdCB0byBjb250YWluIHRo aXMgb2JqZWN0IGluICovCj4+Pj4gLSAgICAgICBpZiAoYXJncy0+aW4uZG9tYWlucyAmIChBTURH UFVfR0VNX0RPTUFJTl9HRFMgfAo+Pj4+IC0gICAgICAgICAgIEFNREdQVV9HRU1fRE9NQUlOX0dX UyB8IEFNREdQVV9HRU1fRE9NQUlOX09BKSkgewo+Pj4+IC0gICAgICAgICAgICAgICBpZiAoZmxh Z3MgJiBBTURHUFVfR0VNX0NSRUFURV9WTV9BTFdBWVNfVkFMSUQpIHsKPj4+PiAtICAgICAgICAg ICAgICAgICAgICAgICAvKiBpZiBnZHMgYm8gaXMgY3JlYXRlZCBmcm9tIHVzZXIgc3BhY2UsIGl0 IG11c3QKPj4+PiBiZQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAqIHBhc3NlZCB0byBi byBsaXN0Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICovCj4+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgRFJNX0VSUk9SKCJHRFMgYm8gY2Fubm90IGJlIHBlci12bS1ib1xuIik7Cj4+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gLSAgICAgICAg ICAgICAgIH0KPj4+PiAtICAgICAgICAgICAgICAgZmxhZ3MgfD0gQU1ER1BVX0dFTV9DUkVBVEVf Tk9fQ1BVX0FDQ0VTUzsKPj4+PiAtICAgICAgICAgICAgICAgaWYgKGFyZ3MtPmluLmRvbWFpbnMg PT0gQU1ER1BVX0dFTV9ET01BSU5fR0RTKQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHNp emUgPSBzaXplIDw8IEFNREdQVV9HRFNfU0hJRlQ7Cj4+Pj4gLSAgICAgICAgICAgICAgIGVsc2Ug aWYgKGFyZ3MtPmluLmRvbWFpbnMgPT0gQU1ER1BVX0dFTV9ET01BSU5fR1dTKQo+Pj4+IC0gICAg ICAgICAgICAgICAgICAgICAgIHNpemUgPSBzaXplIDw8IEFNREdQVV9HV1NfU0hJRlQ7Cj4+Pj4g LSAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3MtPmluLmRvbWFpbnMgPT0gQU1ER1BVX0dFTV9E T01BSU5fT0EpCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHNpemUgPDwgQU1E R1BVX09BX1NISUZUOwo+Pj4+IC0gICAgICAgICAgICAgICBlbHNlCj4+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gLSAgICAgICB9Cj4+Pj4gICAgICAgICAg c2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKPj4+PiAgICAgICAgICBpZiAoZmxhZ3Mg JiBBTURHUFVfR0VNX0NSRUFURV9WTV9BTFdBWVNfVkFMSUQpIHsKPj4+PiAgICAgICAgICAgICAg ICAgIHIgPSBhbWRncHVfYm9fcmVzZXJ2ZSh2bS0+cm9vdC5iYXNlLmJvLCBmYWxzZSk7Cj4+Pj4g ICAgICAgICAgICAgICAgICBpZiAocikKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHI7Cj4+Pj4gICAgICAgICAgICAgICAgICByZXN2ID0gdm0tPnJvb3QuYmFzZS5iby0+dGJv LnJlc3Y7Cj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfaWRzLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9pZHMuYwo+Pj4+IGluZGV4IDNhMDcyYTdhMzlmMC4uYzJlNmExYTExZDdmIDEw MDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuYwo+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuYwo+Pj4+IEBA IC01MTYsMjYgKzUxNiwyMCBAQCB2b2lkIGFtZGdwdV92bWlkX2ZyZWVfcmVzZXJ2ZWQoc3RydWN0 Cj4+Pj4gYW1kZ3B1X2RldmljZQo+Pj4+ICphZGV2LAo+Pj4+ICAgICAqIFJlc2V0IHNhdmVkIEdE VywgR1dTIGFuZCBPQSB0byBmb3JjZSBzd2l0Y2ggb24gbmV4dCBmbHVzaC4KPj4+PiAgICAgKi8K Pj4+PiAgICB2b2lkIGFtZGdwdV92bWlkX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1bnNpZ25lZCB2bWh1YiwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2 bWlkKQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtaWRfbWdyICppZF9t Z3IgPQo+Pj4+ICZhZGV2LT52bV9tYW5hZ2VyLmlkX21nclt2bWh1Yl07Cj4+Pj4gICAgICAgICAg c3RydWN0IGFtZGdwdV92bWlkICppZCA9ICZpZF9tZ3ItPmlkc1t2bWlkXTsKPj4+PiAgICAgICAg ICBtdXRleF9sb2NrKCZpZF9tZ3ItPmxvY2spOwo+Pj4+ICAgICAgICAgIGlkLT5vd25lciA9IDA7 Cj4+Pj4gLSAgICAgICBpZC0+Z2RzX2Jhc2UgPSAwOwo+Pj4+IC0gICAgICAgaWQtPmdkc19zaXpl ID0gMDsKPj4+PiAtICAgICAgIGlkLT5nd3NfYmFzZSA9IDA7Cj4+Pj4gLSAgICAgICBpZC0+Z3dz X3NpemUgPSAwOwo+Pj4+IC0gICAgICAgaWQtPm9hX2Jhc2UgPSAwOwo+Pj4+IC0gICAgICAgaWQt Pm9hX3NpemUgPSAwOwo+Pj4+ICAgICAgICAgIG11dGV4X3VubG9jaygmaWRfbWdyLT5sb2NrKTsK Pj4+PiAgICB9Cj4+Pj4gICAgICAvKioKPj4+PiAgICAgKiBhbWRncHVfdm1pZF9yZXNldF9hbGwg LSByZXNldCBWTUlEIHRvIHplcm8KPj4+PiAgICAgKgo+Pj4+ICAgICAqIEBhZGV2OiBhbWRncHUg ZGV2aWNlIHN0cnVjdHVyZQo+Pj4+ICAgICAqCj4+Pj4gICAgICogUmVzZXQgVk1JRCB0byBmb3Jj ZSBmbHVzaCBvbiBuZXh0IHVzZQo+Pj4+ICAgICAqLwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWRzLmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9pZHMuaAo+Pj4+IGluZGV4IDc2MjU0MTlmMGZjMi4uMDYwNzhlNjY1 NTMyIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9p ZHMuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuaAo+ Pj4+IEBAIC00NCwyNyArNDQsMjAgQEAgc3RydWN0IGFtZGdwdV92bWlkIHsKPj4+PiAgICAgICAg ICBzdHJ1Y3QgYW1kZ3B1X3N5bmMgICAgICBhY3RpdmU7Cj4+Pj4gICAgICAgICAgc3RydWN0IGRt YV9mZW5jZSAgICAgICAgKmxhc3RfZmx1c2g7Cj4+Pj4gICAgICAgICAgdWludDY0X3QgICAgICAg ICAgICAgICAgb3duZXI7Cj4+Pj4gICAgICAgICAgdWludDY0X3QgICAgICAgICAgICAgICAgcGRf Z3B1X2FkZHI7Cj4+Pj4gICAgICAgICAgLyogbGFzdCBmbHVzaGVkIFBEL1BUIHVwZGF0ZSAqLwo+ Pj4+ICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgICAgICAgICpmbHVzaGVkX3VwZGF0ZXM7Cj4+ Pj4gICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgY3VycmVudF9ncHVfcmVzZXRfY291 bnQ7Cj4+Pj4gICAgLSAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgZ2RzX2Jhc2U7Cj4+Pj4g LSAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBnZHNfc2l6ZTsKPj4+PiAtICAgICAgIHVp bnQzMl90ICAgICAgICAgICAgICAgIGd3c19iYXNlOwo+Pj4+IC0gICAgICAgdWludDMyX3QgICAg ICAgICAgICAgICAgZ3dzX3NpemU7Cj4+Pj4gLSAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAg ICBvYV9iYXNlOwo+Pj4+IC0gICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgb2Ffc2l6ZTsK Pj4+PiAtCj4+Pj4gICAgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgcGFzaWQ7Cj4+Pj4g ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAgICAgICAgKnBhc2lkX21hcHBpbmc7Cj4+Pj4gICAg fTsKPj4+PiAgICAgIHN0cnVjdCBhbWRncHVfdm1pZF9tZ3Igewo+Pj4+ICAgICAgICAgIHN0cnVj dCBtdXRleCAgICAgICAgICAgIGxvY2s7Cj4+Pj4gICAgICAgICAgdW5zaWduZWQgICAgICAgICAg ICAgICAgbnVtX2lkczsKPj4+PiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBpZHNf bHJ1Owo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfdm1pZCAgICAgIGlkc1tBTURHUFVfTlVN X1ZNSURdOwo+Pj4+ICAgICAgICAgIGF0b21pY190ICAgICAgICAgICAgICAgIHJlc2VydmVkX3Zt aWRfbnVtOwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfam9iLmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuaAo+ Pj4+IGluZGV4IDU3Y2ZlNzhhMjYyYi4uM2RiNTUzZjZhZDAxIDEwMDY0NAo+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuaAo+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuaAo+Pj4+IEBAIC00MiwyMyArNDIsMjAgQEAg c3RydWN0IGFtZGdwdV9qb2Igewo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfc3luYyAgICAg IHNjaGVkX3N5bmM7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9pYiAgICAgICAgKmliczsK Pj4+PiAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICAgICAgICAqZmVuY2U7IC8qIHRoZSBodyBm ZW5jZSAqLwo+Pj4+ICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHByZWFtYmxlX3N0 YXR1czsKPj4+PiAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBudW1faWJzOwo+Pj4+ ICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICpvd25lcjsKPj4+PiAgICAgICAgICBi b29sICAgICAgICAgICAgICAgICAgICB2bV9uZWVkc19mbHVzaDsKPj4+PiAgICAgICAgICB1aW50 NjRfdCAgICAgICAgICAgICAgICB2bV9wZF9hZGRyOwo+Pj4+ICAgICAgICAgIHVuc2lnbmVkICAg ICAgICAgICAgICAgIHZtaWQ7Cj4+Pj4gICAgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAg cGFzaWQ7Cj4+Pj4gLSAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBnZHNfYmFzZSwgZ2Rz X3NpemU7Cj4+Pj4gLSAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBnd3NfYmFzZSwgZ3dz X3NpemU7Cj4+Pj4gLSAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBvYV9iYXNlLCBvYV9z aXplOwo+Pj4+ICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHZyYW1fbG9zdF9jb3Vu dGVyOwo+Pj4+ICAgICAgICAgIC8qIHVzZXIgZmVuY2UgaGFuZGxpbmcgKi8KPj4+PiAgICAgICAg ICB1aW50NjRfdCAgICAgICAgICAgICAgICB1Zl9hZGRyOwo+Pj4+ICAgICAgICAgIHVpbnQ2NF90 ICAgICAgICAgICAgICAgIHVmX3NlcXVlbmNlOwo+Pj4+ICAgICAgfTsKPj4+PiAgICAgIGludCBh bWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBudW1f aWJzLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqKmpvYiwg c3RydWN0IGFtZGdwdV92bSAqdm0pOwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfa21zLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9rbXMuYwo+Pj4+IGluZGV4IDI5YWMzODczZWViMC4uMjA5OTU0MjkwOTU0IDEwMDY0 NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+Pj4+IEBAIC01 MTcsMjcgKzUxNywyNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9pbmZvX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlCj4+Pj4gKmRldiwKPj4+PiB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUKPj4+PiAg ICAgICAgICBjYXNlIEFNREdQVV9JTkZPX1ZJU19WUkFNX1VTQUdFOgo+Pj4+ICAgICAgICAgICAg ICAgICAgdWk2NCA9Cj4+Pj4gYW1kZ3B1X3ZyYW1fbWdyX3Zpc191c2FnZSgmYWRldi0+bW1hbi5i ZGV2Lm1hbltUVE1fUExfVlJBTV0pOwo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlf dG9fdXNlcihvdXQsICZ1aTY0LCBtaW4oc2l6ZSwgOHUpKSA/Cj4+Pj4gLUVGQVVMVCA6Cj4+Pj4g MDsKPj4+PiAgICAgICAgICBjYXNlIEFNREdQVV9JTkZPX0dUVF9VU0FHRToKPj4+PiAgICAgICAg ICAgICAgICAgIHVpNjQgPQo+Pj4+IGFtZGdwdV9ndHRfbWdyX3VzYWdlKCZhZGV2LT5tbWFuLmJk ZXYubWFuW1RUTV9QTF9UVF0pOwo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlfdG9f dXNlcihvdXQsICZ1aTY0LCBtaW4oc2l6ZSwgOHUpKSA/Cj4+Pj4gLUVGQVVMVCA6Cj4+Pj4gMDsK Pj4+PiAgICAgICAgICBjYXNlIEFNREdQVV9JTkZPX0dEU19DT05GSUc6IHsKPj4+PiAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fYW1kZ3B1X2luZm9fZ2RzIGdkc19pbmZvOwo+Pj4+ICAgICAg ICAgICAgICAgICAgbWVtc2V0KCZnZHNfaW5mbywgMCwgc2l6ZW9mKGdkc19pbmZvKSk7Cj4+Pj4g LSAgICAgICAgICAgICAgIGdkc19pbmZvLmdkc19nZnhfcGFydGl0aW9uX3NpemUgPQo+Pj4+IGFk ZXYtPmdkcy5tZW0uZ2Z4X3BhcnRpdGlvbl9zaXplID4+IEFNREdQVV9HRFNfU0hJRlQ7Cj4+Pj4g LSAgICAgICAgICAgICAgIGdkc19pbmZvLmNvbXB1dGVfcGFydGl0aW9uX3NpemUgPQo+Pj4+IGFk ZXYtPmdkcy5tZW0uY3NfcGFydGl0aW9uX3NpemUgPj4gQU1ER1BVX0dEU19TSElGVDsKPj4+PiAt ICAgICAgICAgICAgICAgZ2RzX2luZm8uZ2RzX3RvdGFsX3NpemUgPSBhZGV2LT5nZHMubWVtLnRv dGFsX3NpemUgPj4KPj4+PiBBTURHUFVfR0RTX1NISUZUOwo+Pj4+IC0gICAgICAgICAgICAgICBn ZHNfaW5mby5nd3NfcGVyX2dmeF9wYXJ0aXRpb24gPQo+Pj4+IGFkZXYtPmdkcy5nd3MuZ2Z4X3Bh cnRpdGlvbl9zaXplID4+IEFNREdQVV9HV1NfU0hJRlQ7Cj4+Pj4gLSAgICAgICAgICAgICAgIGdk c19pbmZvLmd3c19wZXJfY29tcHV0ZV9wYXJ0aXRpb24gPQo+Pj4+IGFkZXYtPmdkcy5nd3MuY3Nf cGFydGl0aW9uX3NpemUgPj4gQU1ER1BVX0dXU19TSElGVDsKPj4+PiAtICAgICAgICAgICAgICAg Z2RzX2luZm8ub2FfcGVyX2dmeF9wYXJ0aXRpb24gPQo+Pj4+IGFkZXYtPmdkcy5vYS5nZnhfcGFy dGl0aW9uX3NpemUgPj4gQU1ER1BVX09BX1NISUZUOwo+Pj4+IC0gICAgICAgICAgICAgICBnZHNf aW5mby5vYV9wZXJfY29tcHV0ZV9wYXJ0aXRpb24gPQo+Pj4+IGFkZXYtPmdkcy5vYS5jc19wYXJ0 aXRpb25fc2l6ZSA+PiBBTURHUFVfT0FfU0hJRlQ7Cj4+Pj4gKyAgICAgICAgICAgICAgIGdkc19p bmZvLmdkc19nZnhfcGFydGl0aW9uX3NpemUgPQo+Pj4+IGFkZXYtPmdkcy5tZW0uZ2Z4X3NpemVf cGVyX3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAgICAgIGdkc19pbmZvLmNvbXB1dGVfcGFydGl0aW9u X3NpemUgPQo+Pj4+IGFkZXYtPmdkcy5tZW0ua2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+Pj4gKyAgICAg ICAgICAgICAgIGdkc19pbmZvLmdkc190b3RhbF9zaXplID0gYWRldi0+Z2RzLm1lbS50b3RhbF9z aXplOwo+Pj4+ICsgICAgICAgICAgICAgICBnZHNfaW5mby5nd3NfcGVyX2dmeF9wYXJ0aXRpb24g PQo+Pj4+IGFkZXYtPmdkcy5nd3MuZ2Z4X3NpemVfcGVyX3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAg ICAgIGdkc19pbmZvLmd3c19wZXJfY29tcHV0ZV9wYXJ0aXRpb24gPQo+Pj4+IGFkZXYtPmdkcy5n d3Mua2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAgICAgIGdkc19pbmZvLm9hX3Bl cl9nZnhfcGFydGl0aW9uID0KPj4+PiBhZGV2LT5nZHMub2EuZ2Z4X3NpemVfcGVyX3ZtaWQ7Cj4+ Pj4gKyAgICAgICAgICAgICAgIGdkc19pbmZvLm9hX3Blcl9jb21wdXRlX3BhcnRpdGlvbiA9Cj4+ Pj4gYWRldi0+Z2RzLm9hLmtmZF9zaXplX3Blcl92bWlkOwo+Pj4+ICAgICAgICAgICAgICAgICAg cmV0dXJuIGNvcHlfdG9fdXNlcihvdXQsICZnZHNfaW5mbywKPj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWluKChzaXplX3Qpc2l6ZSwKPj4+PiBzaXplb2YoZ2RzX2lu Zm8pKSkgPwo+Pj4+IC1FRkFVTFQgOiAwOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAgICAgICBj YXNlIEFNREdQVV9JTkZPX1ZSQU1fR1RUOiB7Cj4+Pj4gICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX2FtZGdwdV9pbmZvX3ZyYW1fZ3R0IHZyYW1fZ3R0Owo+Pj4+ICAgICAgICAgICAgICAgICAg dnJhbV9ndHQudnJhbV9zaXplID0gYWRldi0+Z21jLnJlYWxfdnJhbV9zaXplIC0KPj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgYXRvbWljNjRfcmVhZCgmYWRldi0+dnJhbV9waW5fc2l6ZSk7 Cj4+Pj4gICAgICAgICAgICAgICAgICB2cmFtX2d0dC52cmFtX2NwdV9hY2Nlc3NpYmxlX3NpemUg PQo+Pj4+IGFkZXYtPmdtYy52aXNpYmxlX3ZyYW1fc2l6ZSAtCj4+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgIGF0b21pYzY0X3JlYWQoJmFkZXYtPnZpc2libGVfcGluX3NpemUpOwo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+Pj4+IGluZGV4 IGRlOTkwYmRjZGQ2Yy4uNzY3NzBhOGMyOWE1IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+Pj4+IEBAIC0xNzgsNDEgKzE3OCwyMCBAQCB2 b2lkIGFtZGdwdV9ib19wbGFjZW1lbnRfZnJvbV9kb21haW4oc3RydWN0Cj4+Pj4gYW1kZ3B1X2Jv ICphYm8sIHUzMiBkb21haW4pCj4+Pj4gICAgICAgICAgICAgICAgICBwbGFjZXNbY10ubHBmbiA9 IDA7Cj4+Pj4gICAgICAgICAgICAgICAgICBwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfRkxBR19T WVNURU07Cj4+Pj4gICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBBTURHUFVfR0VNX0NSRUFU RV9DUFVfR1RUX1VTV0MpCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc1tjXS5m bGFncyB8PSBUVE1fUExfRkxBR19XQyB8Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVFRNX1BMX0ZMQUdfVU5DQUNIRUQ7Cj4+Pj4gICAgICAgICAgICAgICAgICBlbHNlCj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mbGFncyB8PSBUVE1fUExfRkxB R19DQUNIRUQ7Cj4+Pj4gICAgICAgICAgICAgICAgICBjKys7Cj4+Pj4gICAgICAgICAgfQo+Pj4+ ICAgIC0gICAgIGlmIChkb21haW4gJiBBTURHUFVfR0VNX0RPTUFJTl9HRFMpIHsKPj4+PiAtICAg ICAgICAgICAgICAgcGxhY2VzW2NdLmZwZm4gPSAwOwo+Pj4+IC0gICAgICAgICAgICAgICBwbGFj ZXNbY10ubHBmbiA9IDA7Cj4+Pj4gLSAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mbGFncyA9IFRU TV9QTF9GTEFHX1VOQ0FDSEVEIHwKPj4+PiBBTURHUFVfUExfRkxBR19HRFM7Cj4+Pj4gLSAgICAg ICAgICAgICAgIGMrKzsKPj4+PiAtICAgICAgIH0KPj4+PiAtCj4+Pj4gLSAgICAgICBpZiAoZG9t YWluICYgQU1ER1BVX0dFTV9ET01BSU5fR1dTKSB7Cj4+Pj4gLSAgICAgICAgICAgICAgIHBsYWNl c1tjXS5mcGZuID0gMDsKPj4+PiAtICAgICAgICAgICAgICAgcGxhY2VzW2NdLmxwZm4gPSAwOwo+ Pj4+IC0gICAgICAgICAgICAgICBwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfRkxBR19VTkNBQ0hF RCB8Cj4+Pj4gQU1ER1BVX1BMX0ZMQUdfR1dTOwo+Pj4+IC0gICAgICAgICAgICAgICBjKys7Cj4+ Pj4gLSAgICAgICB9Cj4+Pj4gLQo+Pj4+IC0gICAgICAgaWYgKGRvbWFpbiAmIEFNREdQVV9HRU1f RE9NQUlOX09BKSB7Cj4+Pj4gLSAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mcGZuID0gMDsKPj4+ PiAtICAgICAgICAgICAgICAgcGxhY2VzW2NdLmxwZm4gPSAwOwo+Pj4+IC0gICAgICAgICAgICAg ICBwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfRkxBR19VTkNBQ0hFRCB8Cj4+Pj4gQU1ER1BVX1BM X0ZMQUdfT0E7Cj4+Pj4gLSAgICAgICAgICAgICAgIGMrKzsKPj4+PiAtICAgICAgIH0KPj4+PiAt Cj4+Pj4gICAgICAgICAgaWYgKCFjKSB7Cj4+Pj4gICAgICAgICAgICAgICAgICBwbGFjZXNbY10u ZnBmbiA9IDA7Cj4+Pj4gICAgICAgICAgICAgICAgICBwbGFjZXNbY10ubHBmbiA9IDA7Cj4+Pj4g ICAgICAgICAgICAgICAgICBwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfTUFTS19DQUNISU5HIHwK Pj4+PiBUVE1fUExfRkxBR19TWVNURU07Cj4+Pj4gICAgICAgICAgICAgICAgICBjKys7Cj4+Pj4g ICAgICAgICAgfQo+Pj4+ICAgICAgICAgIEJVR19PTihjID49IEFNREdQVV9CT19NQVhfUExBQ0VN RU5UUyk7Cj4+Pj4gICAgICAgICAgcGxhY2VtZW50LT5udW1fcGxhY2VtZW50ID0gYzsKPj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKPj4+PiBpbmRl eCA5MDdmZGY0NmQ4OTUuLmUwODk5NjRjYmNiNyAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKPj4+PiBAQCAtMTIwLDI2ICsxMjAsMjAgQEAg c3RhdGljIGlubGluZSBzdHJ1Y3QgYW1kZ3B1X2JvCj4+Pj4gKnR0bV90b19hbWRncHVfYm8oc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pCj4+Pj4gICAgICovCj4+Pj4gICAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBhbWRncHVfbWVtX3R5cGVfdG9fZG9tYWluKHUzMiBtZW1fdHlwZSkKPj4+ PiAgICB7Cj4+Pj4gICAgICAgICAgc3dpdGNoIChtZW1fdHlwZSkgewo+Pj4+ICAgICAgICAgIGNh c2UgVFRNX1BMX1ZSQU06Cj4+Pj4gICAgICAgICAgICAgICAgICByZXR1cm4gQU1ER1BVX0dFTV9E T01BSU5fVlJBTTsKPj4+PiAgICAgICAgICBjYXNlIFRUTV9QTF9UVDoKPj4+PiAgICAgICAgICAg ICAgICAgIHJldHVybiBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7Cj4+Pj4gICAgICAgICAgY2FzZSBU VE1fUExfU1lTVEVNOgo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIEFNREdQVV9HRU1fRE9N QUlOX0NQVTsKPj4+PiAtICAgICAgIGNhc2UgQU1ER1BVX1BMX0dEUzoKPj4+PiAtICAgICAgICAg ICAgICAgcmV0dXJuIEFNREdQVV9HRU1fRE9NQUlOX0dEUzsKPj4+PiAtICAgICAgIGNhc2UgQU1E R1BVX1BMX0dXUzoKPj4+PiAtICAgICAgICAgICAgICAgcmV0dXJuIEFNREdQVV9HRU1fRE9NQUlO X0dXUzsKPj4+PiAtICAgICAgIGNhc2UgQU1ER1BVX1BMX09BOgo+Pj4+IC0gICAgICAgICAgICAg ICByZXR1cm4gQU1ER1BVX0dFTV9ET01BSU5fT0E7Cj4+Pj4gICAgICAgICAgZGVmYXVsdDoKPj4+ PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAgICAgICBy ZXR1cm4gMDsKPj4+PiAgICB9Cj4+Pj4gICAgICAvKioKPj4+PiAgICAgKiBhbWRncHVfYm9fcmVz ZXJ2ZSAtIHJlc2VydmUgYm8KPj4+PiAgICAgKiBAYm86ICAgICAgICAgICAgICAgYm8gc3RydWN0 dXJlCj4+Pj4gICAgICogQG5vX2ludHI6ICBkb24ndCByZXR1cm4gLUVSRVNUQVJUU1lTIG9uIHBl bmRpbmcgc2lnbmFsCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yaW5nLmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9y aW5nLmgKPj4+PiBpbmRleCA5Y2MyMzk5NjhlNDAuLmY2ZWE5NjA0ZTYxMSAxMDA2NDQKPj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+Pj4+IEBAIC0xMzAsMjQg KzEzMCwyMCBAQCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3Mgewo+Pj4+ICAgICAgICAgIC8qIGNv bW1hbmQgZW1pdCBmdW5jdGlvbnMgKi8KPj4+PiAgICAgICAgICB2b2lkICgqZW1pdF9pYikoc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2liICppYiwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg dm1pZCwgYm9vbCBjdHhfc3dpdGNoKTsKPj4+PiAgICAgICAgICB2b2lkICgqZW1pdF9mZW5jZSko c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50NjRfdCBhZGRyLAo+Pj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBzZXEsIHVuc2lnbmVkIGZsYWdzKTsKPj4+PiAgICAg ICAgICB2b2lkICgqZW1pdF9waXBlbGluZV9zeW5jKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcp Owo+Pj4+ICAgICAgICAgIHZvaWQgKCplbWl0X3ZtX2ZsdXNoKShzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcsIHVuc2lnbmVkIHZtaWQsCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90IHBkX2FkZHIpOwo+Pj4+ICAgICAgICAgIHZvaWQgKCplbWl0X2hkcF9mbHVzaCko c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPj4+PiAtICAgICAgIHZvaWQgKCplbWl0X2dkc19z d2l0Y2gpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3Qgdm1pZCwKPj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGdkc19iYXNlLCB1aW50MzJfdCBn ZHNfc2l6ZSwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGd3 c19iYXNlLCB1aW50MzJfdCBnd3Nfc2l6ZSwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IG9hX2Jhc2UsIHVpbnQzMl90IG9hX3NpemUpOwo+Pj4+ICAgICAgICAg IC8qIHRlc3RpbmcgZnVuY3Rpb25zICovCj4+Pj4gICAgICAgICAgaW50ICgqdGVzdF9yaW5nKShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+ICAgICAgICAgIGludCAoKnRlc3RfaWIpKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZywgbG9uZyB0aW1lb3V0KTsKPj4+PiAgICAgICAgICAvKiBp bnNlcnQgTk9QIHBhY2tldHMgKi8KPj4+PiAgICAgICAgICB2b2lkICgqaW5zZXJ0X25vcCkoc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBjb3VudCk7Cj4+Pj4gICAgICAgICAgdm9p ZCAoKmluc2VydF9zdGFydCkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPj4+PiAgICAgICAg ICB2b2lkICgqaW5zZXJ0X2VuZCkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPj4+PiAgICAg ICAgICAvKiBwYWQgdGhlIGluZGlyZWN0IGJ1ZmZlciB0byB0aGUgbmVjZXNzYXJ5IG51bWJlciBv ZiBkdyAqLwo+Pj4+ICAgICAgICAgIHZvaWQgKCpwYWRfaWIpKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgc3RydWN0IGFtZGdwdV9pYiAqaWIpOwo+Pj4+ICAgICAgICAgIHVuc2lnbmVkICgqaW5p dF9jb25kX2V4ZWMpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cj4+Pj4gQEAgLTIyNiwyMSAr MjIyLDIwIEBAIHN0cnVjdCBhbWRncHVfcmluZyB7Cj4+Pj4gICAgI2RlZmluZSBhbWRncHVfcmlu Z19wYXRjaF9jc19pbl9wbGFjZShyLCBwLCBpYikKPj4+PiAoKHIpLT5mdW5jcy0+cGF0Y2hfY3Nf aW5fcGxhY2UoKHApLCAoaWIpKSkKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX3Rlc3Rfcmlu ZyhyKSAociktPmZ1bmNzLT50ZXN0X3JpbmcoKHIpKQo+Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3Jp bmdfdGVzdF9pYihyLCB0KSAociktPmZ1bmNzLT50ZXN0X2liKChyKSwgKHQpKQo+Pj4+ICAgICNk ZWZpbmUgYW1kZ3B1X3JpbmdfZ2V0X3JwdHIocikgKHIpLT5mdW5jcy0+Z2V0X3JwdHIoKHIpKQo+ Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZ2V0X3dwdHIocikgKHIpLT5mdW5jcy0+Z2V0X3dw dHIoKHIpKQo+Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3Jpbmdfc2V0X3dwdHIocikgKHIpLT5mdW5j cy0+c2V0X3dwdHIoKHIpKQo+Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9pYihyLCBp Yiwgdm1pZCwgYykgKHIpLT5mdW5jcy0+ZW1pdF9pYigociksCj4+Pj4gKGliKSwgKHZtaWQpLCAo YykpCj4+Pj4gICAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3BpcGVsaW5lX3N5bmMocikKPj4+ PiAociktPmZ1bmNzLT5lbWl0X3BpcGVsaW5lX3N5bmMoKHIpKQo+Pj4+ICAgICNkZWZpbmUgYW1k Z3B1X3JpbmdfZW1pdF92bV9mbHVzaChyLCB2bWlkLCBhZGRyKQo+Pj4+IChyKS0+ZnVuY3MtPmVt aXRfdm1fZmx1c2goKHIpLCAodm1pZCksIChhZGRyKSkKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9y aW5nX2VtaXRfZmVuY2UociwgYWRkciwgc2VxLCBmbGFncykKPj4+PiAociktPmZ1bmNzLT5lbWl0 X2ZlbmNlKChyKSwgKGFkZHIpLCAoc2VxKSwgKGZsYWdzKSkKPj4+PiAtI2RlZmluZSBhbWRncHVf cmluZ19lbWl0X2dkc19zd2l0Y2gociwgdiwgZGIsIGRzLCB3Yiwgd3MsIGFiLCBhcykKPj4+PiAo ciktPmZ1bmNzLT5lbWl0X2dkc19zd2l0Y2goKHIpLCAodiksIChkYiksIChkcyksICh3YiksICh3 cyksIChhYiksCj4+Pj4gKGFzKSkKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfaGRw X2ZsdXNoKHIpIChyKS0+ZnVuY3MtPmVtaXRfaGRwX2ZsdXNoKChyKSkKPj4+PiAgICAjZGVmaW5l IGFtZGdwdV9yaW5nX2VtaXRfc3dpdGNoX2J1ZmZlcihyKQo+Pj4+IChyKS0+ZnVuY3MtPmVtaXRf c3dpdGNoX2J1ZmZlcigocikpCj4+Pj4gICAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2NudHhj bnRsKHIsIGQpCj4+Pj4gKHIpLT5mdW5jcy0+ZW1pdF9jbnR4Y250bCgociksCj4+Pj4gKGQpKQo+ Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9ycmVnKHIsIGQpIChyKS0+ZnVuY3MtPmVt aXRfcnJlZygociksIChkKSkKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfd3JlZyhy LCBkLCB2KSAociktPmZ1bmNzLT5lbWl0X3dyZWcoKHIpLAo+Pj4+IChkKSwKPj4+PiAodikpCj4+ Pj4gICAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3JlZ193YWl0KHIsIGQsIHYsIG0pCj4+Pj4g KHIpLT5mdW5jcy0+ZW1pdF9yZWdfd2FpdCgociksIChkKSwgKHYpLCAobSkpCj4+Pj4gICAgI2Rl ZmluZSBhbWRncHVfcmluZ19lbWl0X3JlZ193cml0ZV9yZWdfd2FpdChyLCBkMCwgZDEsIHYsIG0p Cj4+Pj4gKHIpLT5mdW5jcy0+ZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXQoKHIpLCAoZDApLCAoZDEp LCAodiksIChtKSkKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfdG16KHIsIGIpIChy KS0+ZnVuY3MtPmVtaXRfdG16KChyKSwgKGIpKQo+Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3Jpbmdf cGFkX2liKHIsIGliKSAoKHIpLT5mdW5jcy0+cGFkX2liKChyKSwgKGliKSkpCj4+Pj4gICAgI2Rl ZmluZSBhbWRncHVfcmluZ19pbml0X2NvbmRfZXhlYyhyKSAociktPmZ1bmNzLT5pbml0X2NvbmRf ZXhlYygocikpCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV90dG0uYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5j Cj4+Pj4gaW5kZXggOGExNThlZTkyMmY3Li4yY2M2MmIwZTdlYTggMTAwNjQ0Cj4+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCj4+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCj4+Pj4gQEAgLTE5NSwzMCArMTk1LDIw IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2luaXRfbWVtX3R5cGUoc3RydWN0Cj4+Pj4gdHRtX2JvX2Rl dmljZQo+Pj4+ICpiZGV2LCB1aW50MzJfdCB0eXBlLAo+Pj4+ICAgICAgICAgICAgICAgICAgYnJl YWs7Cj4+Pj4gICAgICAgICAgY2FzZSBUVE1fUExfVlJBTToKPj4+PiAgICAgICAgICAgICAgICAg IC8qICJPbi1jYXJkIiB2aWRlbyByYW0gKi8KPj4+PiAgICAgICAgICAgICAgICAgIG1hbi0+ZnVu YyA9ICZhbWRncHVfdnJhbV9tZ3JfZnVuYzsKPj4+PiAgICAgICAgICAgICAgICAgIG1hbi0+Z3B1 X29mZnNldCA9IGFkZXYtPmdtYy52cmFtX3N0YXJ0Owo+Pj4+ICAgICAgICAgICAgICAgICAgbWFu LT5mbGFncyA9IFRUTV9NRU1UWVBFX0ZMQUdfRklYRUQgfAo+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRUTV9NRU1UWVBFX0ZMQUdfTUFQUEFCTEU7Cj4+Pj4gICAgICAgICAgICAg ICAgICBtYW4tPmF2YWlsYWJsZV9jYWNoaW5nID0gVFRNX1BMX0ZMQUdfVU5DQUNIRUQgfAo+Pj4+ IFRUTV9QTF9GTEFHX1dDOwo+Pj4+ICAgICAgICAgICAgICAgICAgbWFuLT5kZWZhdWx0X2NhY2hp bmcgPSBUVE1fUExfRkxBR19XQzsKPj4+PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+IC0g ICAgICAgY2FzZSBBTURHUFVfUExfR0RTOgo+Pj4+IC0gICAgICAgY2FzZSBBTURHUFVfUExfR1dT Ogo+Pj4+IC0gICAgICAgY2FzZSBBTURHUFVfUExfT0E6Cj4+Pj4gLSAgICAgICAgICAgICAgIC8q IE9uLWNoaXAgR0RTIG1lbW9yeSovCj4+Pj4gLSAgICAgICAgICAgICAgIG1hbi0+ZnVuYyA9ICZ0 dG1fYm9fbWFuYWdlcl9mdW5jOwo+Pj4+IC0gICAgICAgICAgICAgICBtYW4tPmdwdV9vZmZzZXQg PSAwOwo+Pj4+IC0gICAgICAgICAgICAgICBtYW4tPmZsYWdzID0gVFRNX01FTVRZUEVfRkxBR19G SVhFRCB8Cj4+Pj4gVFRNX01FTVRZUEVfRkxBR19DTUE7Cj4+Pj4gLSAgICAgICAgICAgICAgIG1h bi0+YXZhaWxhYmxlX2NhY2hpbmcgPSBUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4+PiAtICAgICAg ICAgICAgICAgbWFuLT5kZWZhdWx0X2NhY2hpbmcgPSBUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4+ PiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gICAgICAgICAgZGVmYXVsdDoKPj4+PiAgICAg ICAgICAgICAgICAgIERSTV9FUlJPUigiVW5zdXBwb3J0ZWQgbWVtb3J5IHR5cGUgJXVcbiIsCj4+ Pj4gKHVuc2lnbmVkKXR5cGUpOwo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgICAgICAgIHJldHVybiAwOwo+Pj4+ICAgIH0KPj4+PiAg ICAgIC8qKgo+Pj4+ICAgICAqIGFtZGdwdV9ldmljdF9mbGFncyAtIENvbXB1dGUgcGxhY2VtZW50 IGZsYWdzCj4+Pj4gICAgICoKPj4+PiBAQCAtMTAzOSwyNSArMTAyOSwyMCBAQCBzdGF0aWMgaW50 IGFtZGdwdV90dG1fYmFja2VuZF9iaW5kKHN0cnVjdCB0dG1fdHQKPj4+PiAqdHRtLAo+Pj4+ICAg ICAgICAgICAgICAgICAgaWYgKHIpIHsKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgRFJN X0VSUk9SKCJmYWlsZWQgdG8gcGluIHVzZXJwdHJcbiIpOwo+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcjsKPj4+PiAgICAgICAgICAgICAgICAgIH0KPj4+PiAgICAgICAgICB9 Cj4+Pj4gICAgICAgICAgaWYgKCF0dG0tPm51bV9wYWdlcykgewo+Pj4+ICAgICAgICAgICAgICAg ICAgV0FSTigxLCAibm90aGluZyB0byBiaW5kICVsdSBwYWdlcyBmb3IgbXJlZyAlcCBiYWNrCj4+ Pj4gJXAhXG4iLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICB0dG0tPm51bV9wYWdlcywgYm9f bWVtLCB0dG0pOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAtICAgICBpZiAoYm9fbWVtLT5tZW1f dHlwZSA9PSBBTURHUFVfUExfR0RTIHx8Cj4+Pj4gLSAgICAgICAgICAgYm9fbWVtLT5tZW1fdHlw ZSA9PSBBTURHUFVfUExfR1dTIHx8Cj4+Pj4gLSAgICAgICAgICAgYm9fbWVtLT5tZW1fdHlwZSA9 PSBBTURHUFVfUExfT0EpCj4+Pj4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+ IC0KPj4+PiAgICAgICAgICBpZiAoIWFtZGdwdV9ndHRfbWdyX2hhc19nYXJ0X2FkZHIoYm9fbWVt KSkgewo+Pj4+ICAgICAgICAgICAgICAgICAgZ3R0LT5vZmZzZXQgPSBBTURHUFVfQk9fSU5WQUxJ RF9PRkZTRVQ7Cj4+Pj4gICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4+PiAgICAgICAgICB9 Cj4+Pj4gICAgICAgICAgLyogY29tcHV0ZSBQVEUgZmxhZ3MgcmVsZXZhbnQgdG8gdGhpcyBCTyBt ZW1vcnkgKi8KPj4+PiAgICAgICAgICBmbGFncyA9IGFtZGdwdV90dG1fdHRfcHRlX2ZsYWdzKGFk ZXYsIHR0bSwgYm9fbWVtKTsKPj4+PiAgICAgICAgICAvKiBiaW5kIHBhZ2VzIGludG8gR0FSVCBw YWdlIHRhYmxlcyAqLwo+Pj4+ICAgICAgICAgIGd0dC0+b2Zmc2V0ID0gKCh1NjQpYm9fbWVtLT5z dGFydCA8PCBQQUdFX1NISUZUKSAtCj4+Pj4gYWRldi0+Z21jLmdhcnRfc3RhcnQ7Cj4+Pj4gQEAg LTE4MTgsNjAgKzE4MDMsMjAgQEAgaW50IGFtZGdwdV90dG1faW5pdChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikKPj4+PiAgICAgICAgICAvKiBJbml0aWFsaXplIEdUVCBtZW1vcnkgcG9vbCAq Lwo+Pj4+ICAgICAgICAgIHIgPSB0dG1fYm9faW5pdF9tbSgmYWRldi0+bW1hbi5iZGV2LCBUVE1f UExfVFQsIGd0dF9zaXplID4+Cj4+Pj4gUEFHRV9TSElGVCk7Cj4+Pj4gICAgICAgICAgaWYgKHIp IHsKPj4+PiAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIGluaXRpYWxpemluZyBH VFQgaGVhcC5cbiIpOwo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4gICAgICAg ICAgfQo+Pj4+ICAgICAgICAgIERSTV9JTkZPKCJhbWRncHU6ICV1TSBvZiBHVFQgbWVtb3J5IHJl YWR5LlxuIiwKPj4+PiAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpKGd0dF9zaXplIC8gKDEw MjQgKiAxMDI0KSkpOwo+Pj4+ICAgIC0gICAgIC8qIEluaXRpYWxpemUgdmFyaW91cyBvbi1jaGlw IG1lbW9yeSBwb29scyAqLwo+Pj4+IC0gICAgICAgYWRldi0+Z2RzLm1lbS50b3RhbF9zaXplID0g YWRldi0+Z2RzLm1lbS50b3RhbF9zaXplIDw8Cj4+Pj4gQU1ER1BVX0dEU19TSElGVDsKPj4+PiAt ICAgICAgIGFkZXYtPmdkcy5tZW0uZ2Z4X3BhcnRpdGlvbl9zaXplID0KPj4+PiBhZGV2LT5nZHMu bWVtLmdmeF9wYXJ0aXRpb25fc2l6ZSA8PCBBTURHUFVfR0RTX1NISUZUOwo+Pj4+IC0gICAgICAg YWRldi0+Z2RzLm1lbS5jc19wYXJ0aXRpb25fc2l6ZSA9Cj4+Pj4gYWRldi0+Z2RzLm1lbS5jc19w YXJ0aXRpb25fc2l6ZQo+Pj4+IDw8IEFNREdQVV9HRFNfU0hJRlQ7Cj4+Pj4gLSAgICAgICBhZGV2 LT5nZHMuZ3dzLnRvdGFsX3NpemUgPSBhZGV2LT5nZHMuZ3dzLnRvdGFsX3NpemUgPDwKPj4+PiBB TURHUFVfR1dTX1NISUZUOwo+Pj4+IC0gICAgICAgYWRldi0+Z2RzLmd3cy5nZnhfcGFydGl0aW9u X3NpemUgPQo+Pj4+IGFkZXYtPmdkcy5nd3MuZ2Z4X3BhcnRpdGlvbl9zaXplIDw8IEFNREdQVV9H V1NfU0hJRlQ7Cj4+Pj4gLSAgICAgICBhZGV2LT5nZHMuZ3dzLmNzX3BhcnRpdGlvbl9zaXplID0K Pj4+PiBhZGV2LT5nZHMuZ3dzLmNzX3BhcnRpdGlvbl9zaXplCj4+Pj4gPDwgQU1ER1BVX0dXU19T SElGVDsKPj4+PiAtICAgICAgIGFkZXYtPmdkcy5vYS50b3RhbF9zaXplID0gYWRldi0+Z2RzLm9h LnRvdGFsX3NpemUgPDwKPj4+PiBBTURHUFVfT0FfU0hJRlQ7Cj4+Pj4gLSAgICAgICBhZGV2LT5n ZHMub2EuZ2Z4X3BhcnRpdGlvbl9zaXplID0KPj4+PiBhZGV2LT5nZHMub2EuZ2Z4X3BhcnRpdGlv bl9zaXplCj4+Pj4gPDwgQU1ER1BVX09BX1NISUZUOwo+Pj4+IC0gICAgICAgYWRldi0+Z2RzLm9h LmNzX3BhcnRpdGlvbl9zaXplID0gYWRldi0+Z2RzLm9hLmNzX3BhcnRpdGlvbl9zaXplCj4+Pj4g PDwKPj4+PiBBTURHUFVfT0FfU0hJRlQ7Cj4+Pj4gLSAgICAgICAvKiBHRFMgTWVtb3J5ICovCj4+ Pj4gLSAgICAgICBpZiAoYWRldi0+Z2RzLm1lbS50b3RhbF9zaXplKSB7Cj4+Pj4gLSAgICAgICAg ICAgICAgIHIgPSB0dG1fYm9faW5pdF9tbSgmYWRldi0+bW1hbi5iZGV2LCBBTURHUFVfUExfR0RT LAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRldi0+Z2RzLm1lbS50 b3RhbF9zaXplID4+Cj4+Pj4gUEFHRV9TSElGVCk7Cj4+Pj4gLSAgICAgICAgICAgICAgIGlmIChy KSB7Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgaW5pdGlh bGl6aW5nIEdEUyBoZWFwLlxuIik7Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHI7Cj4+Pj4gLSAgICAgICAgICAgICAgIH0KPj4+PiAtICAgICAgIH0KPj4+PiAtCj4+Pj4gLSAg ICAgICAvKiBHV1MgKi8KPj4+PiAtICAgICAgIGlmIChhZGV2LT5nZHMuZ3dzLnRvdGFsX3NpemUp IHsKPj4+PiAtICAgICAgICAgICAgICAgciA9IHR0bV9ib19pbml0X21tKCZhZGV2LT5tbWFuLmJk ZXYsIEFNREdQVV9QTF9HV1MsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhZGV2LT5nZHMuZ3dzLnRvdGFsX3NpemUgPj4KPj4+PiBQQUdFX1NISUZUKTsKPj4+PiAtICAg ICAgICAgICAgICAgaWYgKHIpIHsKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICBEUk1fRVJS T1IoIkZhaWxlZCBpbml0aWFsaXppbmcgZ3dzIGhlYXAuXG4iKTsKPj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcjsKPj4+PiAtICAgICAgICAgICAgICAgfQo+Pj4+IC0gICAgICAg fQo+Pj4+IC0KPj4+PiAtICAgICAgIC8qIE9BICovCj4+Pj4gLSAgICAgICBpZiAoYWRldi0+Z2Rz Lm9hLnRvdGFsX3NpemUpIHsKPj4+PiAtICAgICAgICAgICAgICAgciA9IHR0bV9ib19pbml0X21t KCZhZGV2LT5tbWFuLmJkZXYsIEFNREdQVV9QTF9PQSwKPj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkZXYtPmdkcy5vYS50b3RhbF9zaXplID4+Cj4+Pj4gUEFHRV9TSElG VCk7Cj4+Pj4gLSAgICAgICAgICAgICAgIGlmIChyKSB7Cj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgaW5pdGlhbGl6aW5nIG9hIGhlYXAuXG4iKTsKPj4+PiAt ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPj4+PiAtICAgICAgICAgICAgICAgfQo+ Pj4+IC0gICAgICAgfQo+Pj4+IC0KPj4+PiAgICAgICAgICAvKiBSZWdpc3RlciBkZWJ1Z2ZzIGVu dHJpZXMgZm9yIGFtZGdwdV90dG0gKi8KPj4+PiAgICAgICAgICByID0gYW1kZ3B1X3R0bV9kZWJ1 Z2ZzX2luaXQoYWRldik7Cj4+Pj4gICAgICAgICAgaWYgKHIpIHsKPj4+PiAgICAgICAgICAgICAg ICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGluaXQgZGVidWdmc1xuIik7Cj4+Pj4gICAgICAgICAg ICAgICAgICByZXR1cm4gcjsKPj4+PiAgICAgICAgICB9Cj4+Pj4gICAgICAgICAgcmV0dXJuIDA7 Cj4+Pj4gICAgfQo+Pj4+ICAgICAgLyoqCj4+Pj4gQEAgLTE4OTIsMjYgKzE4MzcsMjAgQEAgdm9p ZCBhbWRncHVfdHRtX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4gICAgICAg ICAgICAgICAgICByZXR1cm47Cj4+Pj4gICAgICAgICAgYW1kZ3B1X3R0bV9kZWJ1Z2ZzX2Zpbmko YWRldik7Cj4+Pj4gICAgICAgICAgYW1kZ3B1X3R0bV9md19yZXNlcnZlX3ZyYW1fZmluaShhZGV2 KTsKPj4+PiAgICAgICAgICBpZiAoYWRldi0+bW1hbi5hcGVyX2Jhc2Vfa2FkZHIpCj4+Pj4gICAg ICAgICAgICAgICAgICBpb3VubWFwKGFkZXYtPm1tYW4uYXBlcl9iYXNlX2thZGRyKTsKPj4+PiAg ICAgICAgICBhZGV2LT5tbWFuLmFwZXJfYmFzZV9rYWRkciA9IE5VTEw7Cj4+Pj4gICAgICAgICAg dHRtX2JvX2NsZWFuX21tKCZhZGV2LT5tbWFuLmJkZXYsIFRUTV9QTF9WUkFNKTsKPj4+PiAgICAg ICAgICB0dG1fYm9fY2xlYW5fbW0oJmFkZXYtPm1tYW4uYmRldiwgVFRNX1BMX1RUKTsKPj4+PiAt ICAgICAgIGlmIChhZGV2LT5nZHMubWVtLnRvdGFsX3NpemUpCj4+Pj4gLSAgICAgICAgICAgICAg IHR0bV9ib19jbGVhbl9tbSgmYWRldi0+bW1hbi5iZGV2LCBBTURHUFVfUExfR0RTKTsKPj4+PiAt ICAgICAgIGlmIChhZGV2LT5nZHMuZ3dzLnRvdGFsX3NpemUpCj4+Pj4gLSAgICAgICAgICAgICAg IHR0bV9ib19jbGVhbl9tbSgmYWRldi0+bW1hbi5iZGV2LCBBTURHUFVfUExfR1dTKTsKPj4+PiAt ICAgICAgIGlmIChhZGV2LT5nZHMub2EudG90YWxfc2l6ZSkKPj4+PiAtICAgICAgICAgICAgICAg dHRtX2JvX2NsZWFuX21tKCZhZGV2LT5tbWFuLmJkZXYsIEFNREdQVV9QTF9PQSk7Cj4+Pj4gICAg ICAgICAgdHRtX2JvX2RldmljZV9yZWxlYXNlKCZhZGV2LT5tbWFuLmJkZXYpOwo+Pj4+ICAgICAg ICAgIGFtZGdwdV90dG1fZ2xvYmFsX2ZpbmkoYWRldik7Cj4+Pj4gICAgICAgICAgYWRldi0+bW1h bi5pbml0aWFsaXplZCA9IGZhbHNlOwo+Pj4+ICAgICAgICAgIERSTV9JTkZPKCJhbWRncHU6IHR0 bSBmaW5hbGl6ZWRcbiIpOwo+Pj4+ICAgIH0KPj4+PiAgICAgIC8qKgo+Pj4+ICAgICAqIGFtZGdw dV90dG1fc2V0X2J1ZmZlcl9mdW5jc19zdGF0dXMgLSBlbmFibGUvZGlzYWJsZSB1c2Ugb2YgYnVm ZmVyCj4+Pj4gZnVuY3Rpb25zCj4+Pj4gICAgICoKPj4+PiAgICAgKiBAYWRldjogYW1kZ3B1X2Rl dmljZSBwb2ludGVyCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV90dG0uaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0 bS5oCj4+Pj4gaW5kZXggZmU4ZjI3NmU5ODExLi4wNDU1N2EzODJiMTkgMTAwNjQ0Cj4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCj4+Pj4gQEAgLTIwLDI4ICsyMCwy MCBAQAo+Pj4+ICAgICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+PiAgICAg Kgo+Pj4+ICAgICAqLwo+Pj4+ICAgICAgI2lmbmRlZiBfX0FNREdQVV9UVE1fSF9fCj4+Pj4gICAg I2RlZmluZSBfX0FNREdQVV9UVE1fSF9fCj4+Pj4gICAgICAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4+ Pj4gICAgI2luY2x1ZGUgPGRybS9ncHVfc2NoZWR1bGVyLmg+Cj4+Pj4gICAgLSNkZWZpbmUgQU1E R1BVX1BMX0dEUyAgICAgICAgICAgICAgICAoVFRNX1BMX1BSSVYgKyAwKQo+Pj4+IC0jZGVmaW5l IEFNREdQVV9QTF9HV1MgICAgICAgICAgKFRUTV9QTF9QUklWICsgMSkKPj4+PiAtI2RlZmluZSBB TURHUFVfUExfT0EgICAgICAgICAgIChUVE1fUExfUFJJViArIDIpCj4+Pj4gLQo+Pj4+IC0jZGVm aW5lIEFNREdQVV9QTF9GTEFHX0dEUyAgICAgICAgICAgICAoVFRNX1BMX0ZMQUdfUFJJViA8PCAw KQo+Pj4+IC0jZGVmaW5lIEFNREdQVV9QTF9GTEFHX0dXUyAgICAgICAgICAgICAoVFRNX1BMX0ZM QUdfUFJJViA8PCAxKQo+Pj4+IC0jZGVmaW5lIEFNREdQVV9QTF9GTEFHX09BICAgICAgICAgICAg ICAoVFRNX1BMX0ZMQUdfUFJJViA8PCAyKQo+Pj4+IC0KPj4+PiAgICAjZGVmaW5lIEFNREdQVV9H VFRfTUFYX1RSQU5TRkVSX1NJWkUgIDUxMgo+Pj4+ICAgICNkZWZpbmUgQU1ER1BVX0dUVF9OVU1f VFJBTlNGRVJfV0lORE9XUyAgICAgICAyCj4+Pj4gICAgICBzdHJ1Y3QgYW1kZ3B1X21tYW4gewo+ Pj4+ICAgICAgICAgIHN0cnVjdCB0dG1fYm9fZ2xvYmFsX3JlZiAgICAgICAgYm9fZ2xvYmFsX3Jl ZjsKPj4+PiAgICAgICAgICBzdHJ1Y3QgZHJtX2dsb2JhbF9yZWZlcmVuY2UgICAgIG1lbV9nbG9i YWxfcmVmOwo+Pj4+ICAgICAgICAgIHN0cnVjdCB0dG1fYm9fZGV2aWNlICAgICAgICAgICAgYmRl djsKPj4+PiAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbV9nbG9i YWxfcmVmZXJlbmNlZDsKPj4+PiAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluaXRpYWxpemVkOwo+Pj4+ICAgICAgICAgIHZvaWQgX19pb21lbSAgICAgICAgICAgICAg ICAgICAgKmFwZXJfYmFzZV9rYWRkcjsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5jCj4+Pj4gaW5kZXggYmUxNjU5ZmVkZjk0Li5jNjZmMWM2ZjBiYTggMTAwNjQ0 Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+IEBAIC04MDMs ODYgKzgwMyw2OSBAQCB2b2lkIGFtZGdwdV92bV9jaGVja19jb21wdXRlX2J1ZyhzdHJ1Y3QKPj4+ PiBhbWRncHVfZGV2aWNlICphZGV2KQo+Pj4+ICAgICAqIFJldHVybnM6Cj4+Pj4gICAgICogVHJ1 ZSBpZiBzeW5jIGlzIG5lZWRlZC4KPj4+PiAgICAgKi8KPj4+PiAgICBib29sIGFtZGdwdV92bV9u ZWVkX3BpcGVsaW5lX3N5bmMoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYikKPj4+PiAg ICB7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2 Owo+Pj4+ICAgICAgICAgIHVuc2lnbmVkIHZtaHViID0gcmluZy0+ZnVuY3MtPnZtaHViOwo+Pj4+ ICAgICAgICAgIHN0cnVjdCBhbWRncHVfdm1pZF9tZ3IgKmlkX21nciA9Cj4+Pj4gJmFkZXYtPnZt X21hbmFnZXIuaWRfbWdyW3ZtaHViXTsKPj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtaWQg KmlkOwo+Pj4+IC0gICAgICAgYm9vbCBnZHNfc3dpdGNoX25lZWRlZDsKPj4+PiAgICAgICAgICBi b29sIHZtX2ZsdXNoX25lZWRlZCA9IGpvYi0+dm1fbmVlZHNfZmx1c2ggfHwKPj4+PiByaW5nLT5o YXNfY29tcHV0ZV92bV9idWc7Cj4+Pj4gICAgICAgICAgaWYgKGpvYi0+dm1pZCA9PSAwKQo+Pj4+ ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICAgICAgICAgIGlkID0gJmlkX21n ci0+aWRzW2pvYi0+dm1pZF07Cj4+Pj4gLSAgICAgICBnZHNfc3dpdGNoX25lZWRlZCA9IHJpbmct PmZ1bmNzLT5lbWl0X2dkc19zd2l0Y2ggJiYgKAo+Pj4+IC0gICAgICAgICAgICAgICBpZC0+Z2Rz X2Jhc2UgIT0gam9iLT5nZHNfYmFzZSB8fAo+Pj4+IC0gICAgICAgICAgICAgICBpZC0+Z2RzX3Np emUgIT0gam9iLT5nZHNfc2l6ZSB8fAo+Pj4+IC0gICAgICAgICAgICAgICBpZC0+Z3dzX2Jhc2Ug IT0gam9iLT5nd3NfYmFzZSB8fAo+Pj4+IC0gICAgICAgICAgICAgICBpZC0+Z3dzX3NpemUgIT0g am9iLT5nd3Nfc2l6ZSB8fAo+Pj4+IC0gICAgICAgICAgICAgICBpZC0+b2FfYmFzZSAhPSBqb2It Pm9hX2Jhc2UgfHwKPj4+PiAtICAgICAgICAgICAgICAgaWQtPm9hX3NpemUgIT0gam9iLT5vYV9z aXplKTsKPj4+PiAgICAgICAgICBpZiAoYW1kZ3B1X3ZtaWRfaGFkX2dwdV9yZXNldChhZGV2LCBp ZCkpCj4+Pj4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4+PiAgICAtICAgICByZXR1 cm4gdm1fZmx1c2hfbmVlZGVkIHx8IGdkc19zd2l0Y2hfbmVlZGVkOwo+Pj4+ICsgICAgICAgcmV0 dXJuIHZtX2ZsdXNoX25lZWRlZDsKPj4+PiAgICB9Cj4+Pj4gICAgICAvKioKPj4+PiAgICAgKiBh bWRncHVfdm1fZmx1c2ggLSBoYXJkd2FyZSBmbHVzaCB0aGUgdm0KPj4+PiAgICAgKgo+Pj4+ICAg ICAqIEByaW5nOiByaW5nIHRvIHVzZSBmb3IgZmx1c2gKPj4+PiAgICAgKiBAam9iOiAgcmVsYXRl ZCBqb2IKPj4+PiAgICAgKiBAbmVlZF9waXBlX3N5bmM6IGlzIHBpcGUgc3luYyBuZWVkZWQKPj4+ PiAgICAgKgo+Pj4+ICAgICAqIEVtaXQgYSBWTSBmbHVzaCB3aGVuIGl0IGlzIG5lY2Vzc2FyeS4K Pj4+PiAgICAgKgo+Pj4+ICAgICAqIFJldHVybnM6Cj4+Pj4gICAgICogMCBvbiBzdWNjZXNzLCBl cnJubyBvdGhlcndpc2UuCj4+Pj4gICAgICovCj4+Pj4gICAgaW50IGFtZGdwdV92bV9mbHVzaChz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdCBhbWRncHVfam9iICpqb2IsCj4+Pj4gYm9v bCBuZWVkX3BpcGVfc3luYykKPj4+PiAgICB7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+Pj4+ICAgICAgICAgIHVuc2lnbmVkIHZtaHViID0g cmluZy0+ZnVuY3MtPnZtaHViOwo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfdm1pZF9tZ3Ig KmlkX21nciA9Cj4+Pj4gJmFkZXYtPnZtX21hbmFnZXIuaWRfbWdyW3ZtaHViXTsKPj4+PiAgICAg ICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtaWQgKmlkID0gJmlkX21nci0+aWRzW2pvYi0+dm1pZF07Cj4+ Pj4gLSAgICAgICBib29sIGdkc19zd2l0Y2hfbmVlZGVkID0gcmluZy0+ZnVuY3MtPmVtaXRfZ2Rz X3N3aXRjaCAmJiAoCj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nZHNfYmFzZSAhPSBqb2ItPmdk c19iYXNlIHx8Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nZHNfc2l6ZSAhPSBqb2ItPmdkc19z aXplIHx8Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nd3NfYmFzZSAhPSBqb2ItPmd3c19iYXNl IHx8Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nd3Nfc2l6ZSAhPSBqb2ItPmd3c19zaXplIHx8 Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5vYV9iYXNlICE9IGpvYi0+b2FfYmFzZSB8fAo+Pj4+ IC0gICAgICAgICAgICAgICBpZC0+b2Ffc2l6ZSAhPSBqb2ItPm9hX3NpemUpOwo+Pj4+ICAgICAg ICAgIGJvb2wgdm1fZmx1c2hfbmVlZGVkID0gam9iLT52bV9uZWVkc19mbHVzaDsKPj4+PiAgICAg ICAgICBib29sIHBhc2lkX21hcHBpbmdfbmVlZGVkID0gaWQtPnBhc2lkICE9IGpvYi0+cGFzaWQg fHwKPj4+PiAgICAgICAgICAgICAgICAgICFpZC0+cGFzaWRfbWFwcGluZyB8fAo+Pj4+ICAgICAg ICAgICAgICAgICAgIWRtYV9mZW5jZV9pc19zaWduYWxlZChpZC0+cGFzaWRfbWFwcGluZyk7Cj4+ Pj4gICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMOwo+Pj4+ICAgICAgICAg IHVuc2lnbmVkIHBhdGNoX29mZnNldCA9IDA7Cj4+Pj4gICAgICAgICAgaW50IHI7Cj4+Pj4gICAg ICAgICAgaWYgKGFtZGdwdV92bWlkX2hhZF9ncHVfcmVzZXQoYWRldiwgaWQpKSB7Cj4+Pj4gLSAg ICAgICAgICAgICAgIGdkc19zd2l0Y2hfbmVlZGVkID0gdHJ1ZTsKPj4+PiAgICAgICAgICAgICAg ICAgIHZtX2ZsdXNoX25lZWRlZCA9IHRydWU7Cj4+Pj4gICAgICAgICAgICAgICAgICBwYXNpZF9t YXBwaW5nX25lZWRlZCA9IHRydWU7Cj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgIC0gICAgIGdkc19z d2l0Y2hfbmVlZGVkICY9ICEhcmluZy0+ZnVuY3MtPmVtaXRfZ2RzX3N3aXRjaDsKPj4+PiAgICAg ICAgICB2bV9mbHVzaF9uZWVkZWQgJj0gISFyaW5nLT5mdW5jcy0+ZW1pdF92bV9mbHVzaCAgJiYK Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgam9iLT52bV9wZF9hZGRyICE9IEFNREdQVV9C T19JTlZBTElEX09GRlNFVDsKPj4+PiAgICAgICAgICBwYXNpZF9tYXBwaW5nX25lZWRlZCAmPSBh ZGV2LT5nbWMuZ21jX2Z1bmNzLT5lbWl0X3Bhc2lkX21hcHBpbmcKPj4+PiAmJgo+Pj4+ICAgICAg ICAgICAgICAgICAgcmluZy0+ZnVuY3MtPmVtaXRfd3JlZzsKPj4+PiAgICAtICAgICBpZiAoIXZt X2ZsdXNoX25lZWRlZCAmJiAhZ2RzX3N3aXRjaF9uZWVkZWQgJiYgIW5lZWRfcGlwZV9zeW5jKQo+ Pj4+ICsgICAgICAgaWYgKCF2bV9mbHVzaF9uZWVkZWQgJiYgIW5lZWRfcGlwZV9zeW5jKQo+Pj4+ ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gICAgICAgICAgaWYgKHJpbmctPmZ1bmNz LT5pbml0X2NvbmRfZXhlYykKPj4+PiAgICAgICAgICAgICAgICAgIHBhdGNoX29mZnNldCA9IGFt ZGdwdV9yaW5nX2luaXRfY29uZF9leGVjKHJpbmcpOwo+Pj4+ICAgICAgICAgIGlmIChuZWVkX3Bp cGVfc3luYykKPj4+PiAgICAgICAgICAgICAgICAgIGFtZGdwdV9yaW5nX2VtaXRfcGlwZWxpbmVf c3luYyhyaW5nKTsKPj4+PiAgICAgICAgICBpZiAodm1fZmx1c2hfbmVlZGVkKSB7Cj4+Pj4gICAg ICAgICAgICAgICAgICB0cmFjZV9hbWRncHVfdm1fZmx1c2gocmluZywgam9iLT52bWlkLAo+Pj4+ IGpvYi0+dm1fcGRfYWRkcik7Cj4+Pj4gQEAgLTkwNywzMyArODkwLDIwIEBAIGludCBhbWRncHVf dm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4+IHN0cnVjdAo+Pj4+IGFtZGdw dV9qb2IgKmpvYiwgYm9vbCBuZWVkXwo+Pj4+ICAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2Nr KCZpZF9tZ3ItPmxvY2spOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAgICAgICBpZiAocGFzaWRf bWFwcGluZ19uZWVkZWQpIHsKPj4+PiAgICAgICAgICAgICAgICAgIGlkLT5wYXNpZCA9IGpvYi0+ cGFzaWQ7Cj4+Pj4gICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGlkLT5wYXNpZF9tYXBw aW5nKTsKPj4+PiAgICAgICAgICAgICAgICAgIGlkLT5wYXNpZF9tYXBwaW5nID0gZG1hX2ZlbmNl X2dldChmZW5jZSk7Cj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgICAgICAgIGRtYV9mZW5jZV9wdXQo ZmVuY2UpOwo+Pj4+ICAgIC0gICAgIGlmIChyaW5nLT5mdW5jcy0+ZW1pdF9nZHNfc3dpdGNoICYm IGdkc19zd2l0Y2hfbmVlZGVkKSB7Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nZHNfYmFzZSA9 IGpvYi0+Z2RzX2Jhc2U7Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nZHNfc2l6ZSA9IGpvYi0+ Z2RzX3NpemU7Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nd3NfYmFzZSA9IGpvYi0+Z3dzX2Jh c2U7Cj4+Pj4gLSAgICAgICAgICAgICAgIGlkLT5nd3Nfc2l6ZSA9IGpvYi0+Z3dzX3NpemU7Cj4+ Pj4gLSAgICAgICAgICAgICAgIGlkLT5vYV9iYXNlID0gam9iLT5vYV9iYXNlOwo+Pj4+IC0gICAg ICAgICAgICAgICBpZC0+b2Ffc2l6ZSA9IGpvYi0+b2Ffc2l6ZTsKPj4+PiAtICAgICAgICAgICAg ICAgYW1kZ3B1X3JpbmdfZW1pdF9nZHNfc3dpdGNoKHJpbmcsIGpvYi0+dm1pZCwKPj4+PiBqb2It Pmdkc19iYXNlLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgam9iLT5nZHNfc2l6ZSwKPj4+PiBqb2ItPmd3c19iYXNlLAo+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iLT5nd3Nfc2l6ZSwgam9iLT5vYV9iYXNl LAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iLT5v YV9zaXplKTsKPj4+PiAtICAgICAgIH0KPj4+PiAtCj4+Pj4gICAgICAgICAgaWYgKHJpbmctPmZ1 bmNzLT5wYXRjaF9jb25kX2V4ZWMpCj4+Pj4gICAgICAgICAgICAgICAgICBhbWRncHVfcmluZ19w YXRjaF9jb25kX2V4ZWMocmluZywgcGF0Y2hfb2Zmc2V0KTsKPj4+PiAgICAgICAgICAvKiB0aGUg ZG91YmxlIFNXSVRDSF9CVUZGRVIgaGVyZSAqY2Fubm90KiBiZSBza2lwcGVkIGJ5Cj4+Pj4gQ09O RF9FWEVDCj4+Pj4gKi8KPj4+PiAgICAgICAgICBpZiAocmluZy0+ZnVuY3MtPmVtaXRfc3dpdGNo X2J1ZmZlcikgewo+Pj4+ICAgICAgICAgICAgICAgICAgYW1kZ3B1X3JpbmdfZW1pdF9zd2l0Y2hf YnVmZmVyKHJpbmcpOwo+Pj4+ICAgICAgICAgICAgICAgICAgYW1kZ3B1X3JpbmdfZW1pdF9zd2l0 Y2hfYnVmZmVyKHJpbmcpOwo+Pj4+ICAgICAgICAgIH0KPj4+PiAgICAgICAgICByZXR1cm4gMDsK Pj4+PiAgICB9Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dm eF92N18wLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKPj4+ PiBpbmRleCBhMTVkOWMwZjIzM2IuLmY1MjI4ZTE2OWMzYSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwo+Pj4+IEBAIC0xODkwLDIxICsxODkwLDIxIEBAIHN0 YXRpYyB2b2lkIGdmeF92N18wX2NvbmZpZ19pbml0KHN0cnVjdAo+Pj4+IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCj4+Pj4gICAgICoKPj4+PiAgICAgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVy Cj4+Pj4gICAgICoKPj4+PiAgICAgKiBDb25maWd1cmVzIHRoZSAzRCBlbmdpbmUgYW5kIHRpbGlu ZyBjb25maWd1cmF0aW9uCj4+Pj4gICAgICogcmVnaXN0ZXJzIHNvIHRoYXQgdGhlIDNEIGVuZ2lu ZSBpcyB1c2FibGUuCj4+Pj4gICAgICovCj4+Pj4gICAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBfZ3B1 X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4gICAgewo+Pj4+ICAgICAgICAg IHUzMiBzaF9tZW1fY2ZnLCBzaF9zdGF0aWNfbWVtX2NmZywgc2hfbWVtX2Jhc2U7Cj4+Pj4gICAg ICAgICAgdTMyIHRtcDsKPj4+PiAtICAgICAgIGludCBpOwo+Pj4+ICsgICAgICAgaW50IGksIHZt aWQ7Cj4+Pj4gICAgICAgICAgV1JFRzMyKG1tR1JCTV9DTlRMLCAoMHhmZiA8PCBHUkJNX0NOVExf X1JFQURfVElNRU9VVF9fU0hJRlQpKTsKPj4+PiAgICAgICAgICBXUkVHMzIobW1HQl9BRERSX0NP TkZJRywgYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZyk7Cj4+Pj4gICAgICAgICAgV1JF RzMyKG1tSERQX0FERFJfQ09ORklHLCBhZGV2LT5nZnguY29uZmlnLmdiX2FkZHJfY29uZmlnKTsK Pj4+PiAgICAgICAgICBXUkVHMzIobW1ETUlGX0FERFJfQ0FMQywgYWRldi0+Z2Z4LmNvbmZpZy5n Yl9hZGRyX2NvbmZpZyk7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y3XzBfdGlsaW5nX21vZGVfdGFibGVf aW5pdChhZGV2KTsKPj4+PiAgICAgICAgICBnZnhfdjdfMF9zZXR1cF9yYihhZGV2KTsKPj4+PiBA QCAtMjAxNCwyMCArMjAxNCw0MiBAQCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9ncHVfaW5pdChzdHJ1 Y3QKPj4+PiBhbWRncHVfZGV2aWNlCj4+Pj4gKmFkZXYpCj4+Pj4gICAgICAgICAgdG1wID0gUlJF RzMyKG1tU1BJX0FSQl9QUklPUklUWSk7Cj4+Pj4gICAgICAgICAgdG1wID0gUkVHX1NFVF9GSUVM RCh0bXAsIFNQSV9BUkJfUFJJT1JJVFksIFBJUEVfT1JERVJfVFMwLCAyKTsKPj4+PiAgICAgICAg ICB0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgU1BJX0FSQl9QUklPUklUWSwgUElQRV9PUkRFUl9U UzEsIDIpOwo+Pj4+ICAgICAgICAgIHRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBTUElfQVJCX1BS SU9SSVRZLCBQSVBFX09SREVSX1RTMiwgMik7Cj4+Pj4gICAgICAgICAgdG1wID0gUkVHX1NFVF9G SUVMRCh0bXAsIFNQSV9BUkJfUFJJT1JJVFksIFBJUEVfT1JERVJfVFMzLCAyKTsKPj4+PiAgICAg ICAgICBXUkVHMzIobW1TUElfQVJCX1BSSU9SSVRZLCB0bXApOwo+Pj4+ICAgICAgICAgIG11dGV4 X3VubG9jaygmYWRldi0+Z3JibV9pZHhfbXV0ZXgpOwo+Pj4+ICAgICsgICAgIGZvciAodm1pZCA9 IDA7IHZtaWQgPCBBTURHUFVfTlVNX1ZNSUQ7IHZtaWQrKykgewo+Pj4+ICsgICAgICAgICAgICAg ICB1bnNpZ25lZCBnZHNfc2l6ZSwgZ3dzX3NpemUsIG9hX3NpemU7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgICAgICAgICBpZiAodm1pZCA8Cj4+Pj4gYWRldi0+dm1fbWFuYWdlci5pZF9tZ3JbQU1ER1BV X0dGWEhVQl0ubnVtX2lkcykKPj4+PiB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2Rz X3NpemUgPSBhZGV2LT5nZHMubWVtLmdmeF9zaXplX3Blcl92bWlkOwo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGd3c19zaXplID0gYWRldi0+Z2RzLmd3cy5nZnhfc2l6ZV9wZXJfdm1pZDsK Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICBvYV9zaXplID0gYWRldi0+Z2RzLm9hLmdmeF9z aXplX3Blcl92bWlkOwo+Pj4+ICsgICAgICAgICAgICAgICB9IGVsc2Ugewo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGdkc19zaXplID0gYWRldi0+Z2RzLm1lbS5rZmRfc2l6ZV9wZXJfdm1p ZDsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBnd3Nfc2l6ZSA9IGFkZXYtPmdkcy5nd3Mu a2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgb2Ffc2l6ZSA9 IGFkZXYtPmdkcy5vYS5rZmRfc2l6ZV9wZXJfdm1pZDsKPj4+PiArICAgICAgICAgICAgICAgfQo+ Pj4+ICsKPj4+PiArICAgICAgICAgICAgICAgV1JFRzMyKGFtZGdwdV9nZHNfcmVnX29mZnNldFt2 bWlkXS5tZW1fYmFzZSwgdm1pZCAqCj4+Pj4gZ2RzX3NpemUpOwo+Pj4+ICsgICAgICAgICAgICAg ICBXUkVHMzIoYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3ZtaWRdLm1lbV9zaXplLCBnZHNfc2l6ZSk7 Cj4+Pj4gKyAgICAgICAgICAgICAgIFdSRUczMihhbWRncHVfZ2RzX3JlZ19vZmZzZXRbdm1pZF0u Z3dzLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgKHZtaWQgKiBnd3Nfc2l6ZSkgfAo+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgKGd3c19zaXplIDw8IEdEU19HV1NfVk1JRDBfX1NJWkVf X1NISUZUKSk7Cj4+Pj4gKyAgICAgICAgICAgICAgIFdSRUczMihhbWRncHVfZ2RzX3JlZ19vZmZz ZXRbdm1pZF0ub2EsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAoKDEgPDwgb2Ffc2l6ZSkg LSAxKSA8PCAodm1pZCAqIG9hX3NpemUpKTsKPj4+PiArICAgICAgIH0KPj4+PiArCj4+Pj4gICAg ICAgICAgdWRlbGF5KDUwKTsKPj4+PiAgICB9Cj4+Pj4gICAgICAvKgo+Pj4+ICAgICAqIEdQVSBz Y3JhdGNoIHJlZ2lzdGVycyBoZWxwZXJzIGZ1bmN0aW9uLgo+Pj4+ICAgICAqLwo+Pj4+ICAgIC8q Kgo+Pj4+ICAgICAqIGdmeF92N18wX3NjcmF0Y2hfaW5pdCAtIHNldHVwIGRyaXZlciBpbmZvIGZv ciBDUCBzY3JhdGNoIHJlZ3MKPj4+PiAgICAgKgo+Pj4+ICAgICAqIEBhZGV2OiBhbWRncHVfZGV2 aWNlIHBvaW50ZXIKPj4+PiBAQCAtNDE1Nyw2OCArNDE3OSwyMCBAQCBzdGF0aWMgdWludDY0X3QK Pj4+PiBnZnhfdjdfMF9nZXRfZ3B1X2Nsb2NrX2NvdW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCj4+Pj4gICAgICAgICAgdWludDY0X3QgY2xvY2s7Cj4+Pj4gICAgICAgICAgbXV0ZXhf bG9jaygmYWRldi0+Z2Z4LmdwdV9jbG9ja19tdXRleCk7Cj4+Pj4gICAgICAgICAgV1JFRzMyKG1t UkxDX0NBUFRVUkVfR1BVX0NMT0NLX0NPVU5ULCAxKTsKPj4+PiAgICAgICAgICBjbG9jayA9ICh1 aW50NjRfdClSUkVHMzIobW1STENfR1BVX0NMT0NLX0NPVU5UX0xTQikgfAo+Pj4+ICAgICAgICAg ICAgICAgICAgKCh1aW50NjRfdClSUkVHMzIobW1STENfR1BVX0NMT0NLX0NPVU5UX01TQikgPDwg MzJVTEwpOwo+Pj4+ICAgICAgICAgIG11dGV4X3VubG9jaygmYWRldi0+Z2Z4LmdwdV9jbG9ja19t dXRleCk7Cj4+Pj4gICAgICAgICAgcmV0dXJuIGNsb2NrOwo+Pj4+ICAgIH0KPj4+PiAgICAtc3Rh dGljIHZvaWQgZ2Z4X3Y3XzBfcmluZ19lbWl0X2dkc19zd2l0Y2goc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IHZtaWQsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgZ2RzX2Jhc2UsIHVpbnQzMl90Cj4+Pj4gZ2RzX3NpemUsCj4+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZ3dzX2Jhc2UsIHVp bnQzMl90Cj4+Pj4gZ3dzX3NpemUsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3Qgb2FfYmFzZSwgdWludDMyX3QKPj4+PiBvYV9zaXplKQo+Pj4+ IC17Cj4+Pj4gLSAgICAgICBnZHNfYmFzZSA9IGdkc19iYXNlID4+IEFNREdQVV9HRFNfU0hJRlQ7 Cj4+Pj4gLSAgICAgICBnZHNfc2l6ZSA9IGdkc19zaXplID4+IEFNREdQVV9HRFNfU0hJRlQ7Cj4+ Pj4gLQo+Pj4+IC0gICAgICAgZ3dzX2Jhc2UgPSBnd3NfYmFzZSA+PiBBTURHUFVfR1dTX1NISUZU Owo+Pj4+IC0gICAgICAgZ3dzX3NpemUgPSBnd3Nfc2l6ZSA+PiBBTURHUFVfR1dTX1NISUZUOwo+ Pj4+IC0KPj4+PiAtICAgICAgIG9hX2Jhc2UgPSBvYV9iYXNlID4+IEFNREdQVV9PQV9TSElGVDsK Pj4+PiAtICAgICAgIG9hX3NpemUgPSBvYV9zaXplID4+IEFNREdQVV9PQV9TSElGVDsKPj4+PiAt Cj4+Pj4gLSAgICAgICAvKiBHRFMgQmFzZSAqLwo+Pj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgUEFDS0VUMyhQQUNLRVQzX1dSSVRFX0RBVEEsIDMpKTsKPj4+PiAtICAgICAgIGFt ZGdwdV9yaW5nX3dyaXRlKHJpbmcsIChXUklURV9EQVRBX0VOR0lORV9TRUwoMCkgfAo+Pj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfREFUQV9EU1RfU0VMKDApKSk7Cj4+ Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBhbWRncHVfZ2RzX3JlZ19vZmZzZXRb dm1pZF0ubWVtX2Jhc2UpOwo+Pj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7 Cj4+Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBnZHNfYmFzZSk7Cj4+Pj4gLQo+ Pj4+IC0gICAgICAgLyogR0RTIFNpemUgKi8KPj4+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19XUklURV9EQVRBLCAzKSk7Cj4+Pj4gLSAgICAgICBhbWRn cHVfcmluZ193cml0ZShyaW5nLCAoV1JJVEVfREFUQV9FTkdJTkVfU0VMKDApIHwKPj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX0RBVEFfRFNUX1NFTCgwKSkpOwo+Pj4+ IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3Zt aWRdLm1lbV9zaXplKTsKPj4+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+ Pj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgZ2RzX3NpemUpOwo+Pj4+IC0KPj4+ PiAtICAgICAgIC8qIEdXUyAqLwo+Pj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg UEFDS0VUMyhQQUNLRVQzX1dSSVRFX0RBVEEsIDMpKTsKPj4+PiAtICAgICAgIGFtZGdwdV9yaW5n X3dyaXRlKHJpbmcsIChXUklURV9EQVRBX0VOR0lORV9TRUwoMCkgfAo+Pj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgV1JJVEVfREFUQV9EU1RfU0VMKDApKSk7Cj4+Pj4gLSAgICAg ICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBhbWRncHVfZ2RzX3JlZ19vZmZzZXRbdm1pZF0uZ3dz KTsKPj4+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+Pj4+IC0gICAgICAg YW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgZ3dzX3NpemUgPDwgR0RTX0dXU19WTUlEMF9fU0laRV9f U0hJRlQgfAo+Pj4+IGd3c19iYXNlKTsKPj4+PiAtCj4+Pj4gLSAgICAgICAvKiBPQSAqLwo+Pj4+ IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUMyhQQUNLRVQzX1dSSVRFX0RB VEEsIDMpKTsKPj4+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIChXUklURV9EQVRB X0VOR0lORV9TRUwoMCkgfAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJ VEVfREFUQV9EU1RfU0VMKDApKSk7Cj4+Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5n LCBhbWRncHVfZ2RzX3JlZ19vZmZzZXRbdm1pZF0ub2EpOwo+Pj4+IC0gICAgICAgYW1kZ3B1X3Jp bmdfd3JpdGUocmluZywgMCk7Cj4+Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAo MSA8PCAob2Ffc2l6ZSArIG9hX2Jhc2UpKSAtICgxIDw8Cj4+Pj4gb2FfYmFzZSkpOwo+Pj4+IC19 Cj4+Pj4gLQo+Pj4+ICAgIHN0YXRpYyB2b2lkIGdmeF92N18wX3Jpbmdfc29mdF9yZWNvdmVyeShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+Pj4gdW5zaWduZWQgdm1pZCkKPj4+PiAgICB7Cj4+ Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+Pj4+ ICAgICAgICAgIHVpbnQzMl90IHZhbHVlID0gMDsKPj4+PiAgICAgICAgICB2YWx1ZSA9IFJFR19T RVRfRklFTEQodmFsdWUsIFNRX0NNRCwgQ01ELCAweDAzKTsKPj4+PiAgICAgICAgICB2YWx1ZSA9 IFJFR19TRVRfRklFTEQodmFsdWUsIFNRX0NNRCwgTU9ERSwgMHgwMSk7Cj4+Pj4gICAgICAgICAg dmFsdWUgPSBSRUdfU0VUX0ZJRUxEKHZhbHVlLCBTUV9DTUQsIENIRUNLX1ZNSUQsIDEpOwo+Pj4+ ICAgICAgICAgIHZhbHVlID0gUkVHX1NFVF9GSUVMRCh2YWx1ZSwgU1FfQ01ELCBWTV9JRCwgdm1p ZCk7Cj4+Pj4gICAgICAgICAgV1JFRzMyKG1tU1FfQ01ELCB2YWx1ZSk7Cj4+Pj4gQEAgLTQ1ODQs NTUgKzQ1NTgsMzIgQEAgc3RhdGljIGludCBnZnhfdjdfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkK Pj4+Pgo+Pj4+IHJpbmdfaWQsCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBrLAo+Pj4+IGopOwo+Pj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKQo+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmluZ19pZCsrOwo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICB9 Cj4+Pj4gICAgICAgICAgICAgICAgICB9Cj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgIC0gICAgIC8q IHJlc2VydmUgR0RTLCBHV1MgYW5kIE9BIHJlc291cmNlIGZvciBnZnggKi8KPj4+PiAtICAgICAg IHIgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChhZGV2LAo+Pj4+IGFkZXYtPmdkcy5tZW0uZ2Z4 X3BhcnRpdGlvbl9zaXplLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBBR0VfU0laRSwgQU1ER1BVX0dFTV9ET01BSU5fR0RTLAo+Pj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZhZGV2LT5nZHMuZ2RzX2dmeF9ibywgTlVMTCwgTlVMTCk7Cj4+ Pj4gLSAgICAgICBpZiAocikKPj4+PiAtICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4gLQo+ Pj4+IC0gICAgICAgciA9IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsCj4+Pj4gYWRldi0+ Z2RzLmd3cy5nZnhfcGFydGl0aW9uX3NpemUsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUEFHRV9TSVpFLCBBTURHUFVfR0VNX0RPTUFJTl9HV1MsCj4+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZXYtPmdkcy5nd3NfZ2Z4X2JvLCBOVUxM LCBOVUxMKTsKPj4+PiAtICAgICAgIGlmIChyKQo+Pj4+IC0gICAgICAgICAgICAgICByZXR1cm4g cjsKPj4+PiAtCj4+Pj4gLSAgICAgICByID0gYW1kZ3B1X2JvX2NyZWF0ZV9rZXJuZWwoYWRldiwK Pj4+PiBhZGV2LT5nZHMub2EuZ2Z4X3BhcnRpdGlvbl9zaXplLAo+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBR0VfU0laRSwgQU1ER1BVX0dFTV9ET01BSU5fT0EsCj4+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZXYtPmdkcy5vYV9nZnhf Ym8sIE5VTEwsIE5VTEwpOwo+Pj4+IC0gICAgICAgaWYgKHIpCj4+Pj4gLSAgICAgICAgICAgICAg IHJldHVybiByOwo+Pj4+IC0KPj4+PiAgICAgICAgICBhZGV2LT5nZnguY2VfcmFtX3NpemUgPSAw eDgwMDA7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y3XzBfZ3B1X2Vhcmx5X2luaXQoYWRldik7Cj4+Pj4g ICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4gICAgfQo+Pj4+ICAgICAgc3RhdGljIGludCBnZnhfdjdf MF9zd19maW5pKHZvaWQgKmhhbmRsZSkKPj4+PiAgICB7Cj4+Pj4gICAgICAgICAgaW50IGk7Cj4+ Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKiloYW5kbGU7Cj4+Pj4gICAgLSAgICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2 LT5nZHMub2FfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4+PiAtICAgICAgIGFtZGdwdV9ib19mcmVl X2tlcm5lbCgmYWRldi0+Z2RzLmd3c19nZnhfYm8sIE5VTEwsIE5VTEwpOwo+Pj4+IC0gICAgICAg YW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT5nZHMuZ2RzX2dmeF9ibywgTlVMTCwgTlVMTCk7 Cj4+Pj4gLQo+Pj4+ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhZGV2LT5nZngubnVtX2dmeF9y aW5nczsgaSsrKQo+Pj4+ICAgICAgICAgICAgICAgICAgYW1kZ3B1X3JpbmdfZmluaSgmYWRldi0+ Z2Z4LmdmeF9yaW5nW2ldKTsKPj4+PiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWRldi0+Z2Z4 Lm51bV9jb21wdXRlX3JpbmdzOyBpKyspCj4+Pj4gICAgICAgICAgICAgICAgICBhbWRncHVfcmlu Z19maW5pKCZhZGV2LT5nZnguY29tcHV0ZV9yaW5nW2ldKTsKPj4+PiAgICAgICAgICBnZnhfdjdf MF9jcF9jb21wdXRlX2ZpbmkoYWRldik7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y3XzBfcmxjX2Zpbmko YWRldik7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y3XzBfbWVjX2ZpbmkoYWRldik7Cj4+Pj4gICAgICAg ICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT5nZngucmxjLmNsZWFyX3N0YXRlX29iaiwK Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRldi0+Z2Z4LnJsYy5jbGVh cl9zdGF0ZV9ncHVfYWRkciwKPj4+PiBAQCAtNTA3Myw2NCArNTAyNCw2MCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGFtZF9pcF9mdW5jcwo+Pj4+IGdmeF92N18wX2lwX2Z1bmNzCj4+Pj4gPSB7Cj4+ Pj4gICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNzIGdmeF92N18wX3Jp bmdfZnVuY3NfZ2Z4ID0gewo+Pj4+ICAgICAgICAgIC50eXBlID0gQU1ER1BVX1JJTkdfVFlQRV9H RlgsCj4+Pj4gICAgICAgICAgLmFsaWduX21hc2sgPSAweGZmLAo+Pj4+ICAgICAgICAgIC5ub3Ag PSBQQUNLRVQzKFBBQ0tFVDNfTk9QLCAweDNGRkYpLAo+Pj4+ICAgICAgICAgIC5zdXBwb3J0XzY0 Yml0X3B0cnMgPSBmYWxzZSwKPj4+PiAgICAgICAgICAuZ2V0X3JwdHIgPSBnZnhfdjdfMF9yaW5n X2dldF9ycHRyLAo+Pj4+ICAgICAgICAgIC5nZXRfd3B0ciA9IGdmeF92N18wX3JpbmdfZ2V0X3dw dHJfZ2Z4LAo+Pj4+ICAgICAgICAgIC5zZXRfd3B0ciA9IGdmeF92N18wX3Jpbmdfc2V0X3dwdHJf Z2Z4LAo+Pj4+ICAgICAgICAgIC5lbWl0X2ZyYW1lX3NpemUgPQo+Pj4+IC0gICAgICAgICAgICAg ICAyMCArIC8qIGdmeF92N18wX3JpbmdfZW1pdF9nZHNfc3dpdGNoICovCj4+Pj4gICAgICAgICAg ICAgICAgICA3ICsgLyogZ2Z4X3Y3XzBfcmluZ19lbWl0X2hkcF9mbHVzaCAqLwo+Pj4+ICAgICAg ICAgICAgICAgICAgNSArIC8qIGhkcCBpbnZhbGlkYXRlICovCj4+Pj4gICAgICAgICAgICAgICAg ICAxMiArIDEyICsgMTIgKyAvKiBnZnhfdjdfMF9yaW5nX2VtaXRfZmVuY2VfZ2Z4IHgzIGZvcgo+ Pj4+IHVzZXIKPj4+PiBmZW5jZSwgdm0gZmVuY2UgKi8KPj4+PiAgICAgICAgICAgICAgICAgIDcg KyA0ICsgLyogZ2Z4X3Y3XzBfcmluZ19lbWl0X3BpcGVsaW5lX3N5bmMgKi8KPj4+PiAgICAgICAg ICAgICAgICAgIENJS19GTFVTSF9HUFVfVExCX05VTV9XUkVHICogNSArIDcgKyA2ICsgLyoKPj4+ PiBnZnhfdjdfMF9yaW5nX2VtaXRfdm1fZmx1c2ggKi8KPj4+PiAgICAgICAgICAgICAgICAgIDMg KyA0LCAvKiBnZnhfdjdfcmluZ19lbWl0X2NudHhjbnRsIGluY2x1ZGluZyB2Z3QKPj4+PiBmbHVz aCovCj4+Pj4gICAgICAgICAgLmVtaXRfaWJfc2l6ZSA9IDQsIC8qIGdmeF92N18wX3JpbmdfZW1p dF9pYl9nZnggKi8KPj4+PiAgICAgICAgICAuZW1pdF9pYiA9IGdmeF92N18wX3JpbmdfZW1pdF9p Yl9nZngsCj4+Pj4gICAgICAgICAgLmVtaXRfZmVuY2UgPSBnZnhfdjdfMF9yaW5nX2VtaXRfZmVu Y2VfZ2Z4LAo+Pj4+ICAgICAgICAgIC5lbWl0X3BpcGVsaW5lX3N5bmMgPSBnZnhfdjdfMF9yaW5n X2VtaXRfcGlwZWxpbmVfc3luYywKPj4+PiAgICAgICAgICAuZW1pdF92bV9mbHVzaCA9IGdmeF92 N18wX3JpbmdfZW1pdF92bV9mbHVzaCwKPj4+PiAtICAgICAgIC5lbWl0X2dkc19zd2l0Y2ggPSBn ZnhfdjdfMF9yaW5nX2VtaXRfZ2RzX3N3aXRjaCwKPj4+PiAgICAgICAgICAuZW1pdF9oZHBfZmx1 c2ggPSBnZnhfdjdfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoLAo+Pj4+ICAgICAgICAgIC50ZXN0X3Jp bmcgPSBnZnhfdjdfMF9yaW5nX3Rlc3RfcmluZywKPj4+PiAgICAgICAgICAudGVzdF9pYiA9IGdm eF92N18wX3JpbmdfdGVzdF9pYiwKPj4+PiAgICAgICAgICAuaW5zZXJ0X25vcCA9IGFtZGdwdV9y aW5nX2luc2VydF9ub3AsCj4+Pj4gICAgICAgICAgLnBhZF9pYiA9IGFtZGdwdV9yaW5nX2dlbmVy aWNfcGFkX2liLAo+Pj4+ICAgICAgICAgIC5lbWl0X2NudHhjbnRsID0gZ2Z4X3Y3X3JpbmdfZW1p dF9jbnR4Y250bCwKPj4+PiAgICAgICAgICAuZW1pdF93cmVnID0gZ2Z4X3Y3XzBfcmluZ19lbWl0 X3dyZWcsCj4+Pj4gICAgICAgICAgLnNvZnRfcmVjb3ZlcnkgPSBnZnhfdjdfMF9yaW5nX3NvZnRf cmVjb3ZlcnksCj4+Pj4gICAgfTsKPj4+PiAgICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1 X3JpbmdfZnVuY3MgZ2Z4X3Y3XzBfcmluZ19mdW5jc19jb21wdXRlID0KPj4+PiB7Cj4+Pj4gICAg ICAgICAgLnR5cGUgPSBBTURHUFVfUklOR19UWVBFX0NPTVBVVEUsCj4+Pj4gICAgICAgICAgLmFs aWduX21hc2sgPSAweGZmLAo+Pj4+ICAgICAgICAgIC5ub3AgPSBQQUNLRVQzKFBBQ0tFVDNfTk9Q LCAweDNGRkYpLAo+Pj4+ICAgICAgICAgIC5zdXBwb3J0XzY0Yml0X3B0cnMgPSBmYWxzZSwKPj4+ PiAgICAgICAgICAuZ2V0X3JwdHIgPSBnZnhfdjdfMF9yaW5nX2dldF9ycHRyLAo+Pj4+ICAgICAg ICAgIC5nZXRfd3B0ciA9IGdmeF92N18wX3JpbmdfZ2V0X3dwdHJfY29tcHV0ZSwKPj4+PiAgICAg ICAgICAuc2V0X3dwdHIgPSBnZnhfdjdfMF9yaW5nX3NldF93cHRyX2NvbXB1dGUsCj4+Pj4gICAg ICAgICAgLmVtaXRfZnJhbWVfc2l6ZSA9Cj4+Pj4gLSAgICAgICAgICAgICAgIDIwICsgLyogZ2Z4 X3Y3XzBfcmluZ19lbWl0X2dkc19zd2l0Y2ggKi8KPj4+PiAgICAgICAgICAgICAgICAgIDcgKyAv KiBnZnhfdjdfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoICovCj4+Pj4gICAgICAgICAgICAgICAgICA1 ICsgLyogaGRwIGludmFsaWRhdGUgKi8KPj4+PiAgICAgICAgICAgICAgICAgIDcgKyAvKiBnZnhf djdfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYyAqLwo+Pj4+ICAgICAgICAgICAgICAgICAgQ0lL X0ZMVVNIX0dQVV9UTEJfTlVNX1dSRUcgKiA1ICsgNyArIC8qCj4+Pj4gZ2Z4X3Y3XzBfcmluZ19l bWl0X3ZtX2ZsdXNoICovCj4+Pj4gICAgICAgICAgICAgICAgICA3ICsgNyArIDcsIC8qIGdmeF92 N18wX3JpbmdfZW1pdF9mZW5jZV9jb21wdXRlIHgzIGZvcgo+Pj4+IHVzZXIKPj4+PiBmZW5jZSwg dm0gZmVuY2UgKi8KPj4+PiAgICAgICAgICAuZW1pdF9pYl9zaXplID0gNCwgLyogZ2Z4X3Y3XzBf cmluZ19lbWl0X2liX2NvbXB1dGUgKi8KPj4+PiAgICAgICAgICAuZW1pdF9pYiA9IGdmeF92N18w X3JpbmdfZW1pdF9pYl9jb21wdXRlLAo+Pj4+ICAgICAgICAgIC5lbWl0X2ZlbmNlID0gZ2Z4X3Y3 XzBfcmluZ19lbWl0X2ZlbmNlX2NvbXB1dGUsCj4+Pj4gICAgICAgICAgLmVtaXRfcGlwZWxpbmVf c3luYyA9IGdmeF92N18wX3JpbmdfZW1pdF9waXBlbGluZV9zeW5jLAo+Pj4+ICAgICAgICAgIC5l bWl0X3ZtX2ZsdXNoID0gZ2Z4X3Y3XzBfcmluZ19lbWl0X3ZtX2ZsdXNoLAo+Pj4+IC0gICAgICAg LmVtaXRfZ2RzX3N3aXRjaCA9IGdmeF92N18wX3JpbmdfZW1pdF9nZHNfc3dpdGNoLAo+Pj4+ICAg ICAgICAgIC5lbWl0X2hkcF9mbHVzaCA9IGdmeF92N18wX3JpbmdfZW1pdF9oZHBfZmx1c2gsCj4+ Pj4gICAgICAgICAgLnRlc3RfcmluZyA9IGdmeF92N18wX3JpbmdfdGVzdF9yaW5nLAo+Pj4+ICAg ICAgICAgIC50ZXN0X2liID0gZ2Z4X3Y3XzBfcmluZ190ZXN0X2liLAo+Pj4+ICAgICAgICAgIC5p bnNlcnRfbm9wID0gYW1kZ3B1X3JpbmdfaW5zZXJ0X25vcCwKPj4+PiAgICAgICAgICAucGFkX2li ID0gYW1kZ3B1X3JpbmdfZ2VuZXJpY19wYWRfaWIsCj4+Pj4gICAgICAgICAgLmVtaXRfd3JlZyA9 IGdmeF92N18wX3JpbmdfZW1pdF93cmVnLAo+Pj4+ICAgIH07Cj4+Pj4gICAgICBzdGF0aWMgdm9p ZCBnZnhfdjdfMF9zZXRfcmluZ19mdW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4+ PiAgICB7Cj4+Pj4gQEAgLTUxNjksNDIgKzUxMTYsMjggQEAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBf c2V0X2lycV9mdW5jcyhzdHJ1Y3QKPj4+PiBhbWRncHVfZGV2aWNlICphZGV2KQo+Pj4+ICAgICAg ICAgIGFkZXYtPmdmeC5wcml2X2luc3RfaXJxLmZ1bmNzID0gJmdmeF92N18wX3ByaXZfaW5zdF9p cnFfZnVuY3M7Cj4+Pj4gICAgfQo+Pj4+ICAgICAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBfc2V0X2dk c19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+Pj4+ICAgIHsKPj4+PiAgICAgICAg ICAvKiBpbml0IGFzY2kgZ2RzIGluZm8gKi8KPj4+PiAgICAgICAgICBhZGV2LT5nZHMubWVtLnRv dGFsX3NpemUgPSBSUkVHMzIobW1HRFNfVk1JRDBfU0laRSk7Cj4+Pj4gICAgICAgICAgYWRldi0+ Z2RzLmd3cy50b3RhbF9zaXplID0gNjQ7Cj4+Pj4gICAgICAgICAgYWRldi0+Z2RzLm9hLnRvdGFs X3NpemUgPSAxNjsKPj4+PiAgICAtICAgICBpZiAoYWRldi0+Z2RzLm1lbS50b3RhbF9zaXplID09 IDY0ICogMTAyNCkgewo+Pj4+IC0gICAgICAgICAgICAgICBhZGV2LT5nZHMubWVtLmdmeF9wYXJ0 aXRpb25fc2l6ZSA9IDQwOTY7Cj4+Pj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdkcy5tZW0uY3Nf cGFydGl0aW9uX3NpemUgPSA0MDk2Owo+Pj4+IC0KPj4+PiAtICAgICAgICAgICAgICAgYWRldi0+ Z2RzLmd3cy5nZnhfcGFydGl0aW9uX3NpemUgPSA0Owo+Pj4+IC0gICAgICAgICAgICAgICBhZGV2 LT5nZHMuZ3dzLmNzX3BhcnRpdGlvbl9zaXplID0gNDsKPj4+PiAtCj4+Pj4gLSAgICAgICAgICAg ICAgIGFkZXYtPmdkcy5vYS5nZnhfcGFydGl0aW9uX3NpemUgPSA0Owo+Pj4+IC0gICAgICAgICAg ICAgICBhZGV2LT5nZHMub2EuY3NfcGFydGl0aW9uX3NpemUgPSAxOwo+Pj4+IC0gICAgICAgfSBl bHNlIHsKPj4+PiAtICAgICAgICAgICAgICAgYWRldi0+Z2RzLm1lbS5nZnhfcGFydGl0aW9uX3Np emUgPSAxMDI0Owo+Pj4+IC0gICAgICAgICAgICAgICBhZGV2LT5nZHMubWVtLmNzX3BhcnRpdGlv bl9zaXplID0gMTAyNDsKPj4+PiAtCj4+Pj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdkcy5nd3Mu Z2Z4X3BhcnRpdGlvbl9zaXplID0gMTY7Cj4+Pj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdkcy5n d3MuY3NfcGFydGl0aW9uX3NpemUgPSAxNjsKPj4+PiAtCj4+Pj4gLSAgICAgICAgICAgICAgIGFk ZXYtPmdkcy5vYS5nZnhfcGFydGl0aW9uX3NpemUgPSA0Owo+Pj4+IC0gICAgICAgICAgICAgICBh ZGV2LT5nZHMub2EuY3NfcGFydGl0aW9uX3NpemUgPSA0Owo+Pj4+IC0gICAgICAgfQo+Pj4+ICsg ICAgICAgYWRldi0+Z2RzLm1lbS5nZnhfc2l6ZV9wZXJfdm1pZCA9IGFkZXYtPmdkcy5tZW0udG90 YWxfc2l6ZSAvCj4+Pj4gQU1ER1BVX05VTV9WTUlEOwo+Pj4+ICsgICAgICAgYWRldi0+Z2RzLm1l bS5rZmRfc2l6ZV9wZXJfdm1pZCA9IGFkZXYtPmdkcy5tZW0udG90YWxfc2l6ZSAvCj4+Pj4gQU1E R1BVX05VTV9WTUlEOwo+Pj4+ICsgICAgICAgYWRldi0+Z2RzLmd3cy5nZnhfc2l6ZV9wZXJfdm1p ZCA9IGFkZXYtPmdkcy5nd3MudG90YWxfc2l6ZSAvCj4+Pj4gQU1ER1BVX05VTV9WTUlEOwo+Pj4+ ICsgICAgICAgYWRldi0+Z2RzLmd3cy5rZmRfc2l6ZV9wZXJfdm1pZCA9IGFkZXYtPmdkcy5nd3Mu dG90YWxfc2l6ZSAvCj4+Pj4gQU1ER1BVX05VTV9WTUlEOwo+Pj4+ICsgICAgICAgYWRldi0+Z2Rz Lm9hLmdmeF9zaXplX3Blcl92bWlkID0gYWRldi0+Z2RzLm9hLnRvdGFsX3NpemUgLyA4OyAvKgo+ Pj4+IGdmeCBvbmx5ICovCj4+Pj4gKyAgICAgICBhZGV2LT5nZHMub2Eua2ZkX3NpemVfcGVyX3Zt aWQgPSAwOwo+Pj4+ICAgIH0KPj4+PiAgICAtCj4+Pj4gICAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBf Z2V0X2N1X2luZm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4gICAgewo+Pj4+ICAg ICAgICAgIGludCBpLCBqLCBrLCBjb3VudGVyLCBhY3RpdmVfY3VfbnVtYmVyID0gMDsKPj4+PiAg ICAgICAgICB1MzIgbWFzaywgYml0bWFwLCBhb19iaXRtYXAsIGFvX2N1X21hc2sgPSAwOwo+Pj4+ ICAgICAgICAgIHN0cnVjdCBhbWRncHVfY3VfaW5mbyAqY3VfaW5mbyA9ICZhZGV2LT5nZnguY3Vf aW5mbzsKPj4+PiAgICAgICAgICB1bnNpZ25lZCBkaXNhYmxlX21hc2tzWzQgKiAyXTsKPj4+PiAg ICAgICAgICB1MzIgYW9fY3VfbnVtOwo+Pj4+ICAgICAgICAgIGlmIChhZGV2LT5mbGFncyAmIEFN RF9JU19BUFUpCj4+Pj4gICAgICAgICAgICAgICAgICBhb19jdV9udW0gPSAyOwo+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCj4+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCj4+Pj4gaW5kZXggMzg4MjY4OWIyZDhm Li5iMTFhNTRiZDA2NjggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3Y4XzAuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92 OF8wLmMKPj4+PiBAQCAtMjE1NCw1NyArMjE1NCwzNCBAQCBzdGF0aWMgaW50IGdmeF92OF8wX3N3 X2luaXQodm9pZCAqaGFuZGxlKQo+Pj4+ICAgICAgICAgIGtpcSA9ICZhZGV2LT5nZngua2lxOwo+ Pj4+ICAgICAgICAgIHIgPSBhbWRncHVfZ2Z4X2tpcV9pbml0X3JpbmcoYWRldiwgJmtpcS0+cmlu ZywgJmtpcS0+aXJxKTsKPj4+PiAgICAgICAgICBpZiAocikKPj4+PiAgICAgICAgICAgICAgICAg IHJldHVybiByOwo+Pj4+ICAgICAgICAgIC8qIGNyZWF0ZSBNUUQgZm9yIGFsbCBjb21wdXRlIHF1 ZXVlcyBhcyB3ZWxsIGFzIEtJUSBmb3IgU1JJT1YKPj4+PiBjYXNlCj4+Pj4gKi8KPj4+PiAgICAg ICAgICByID0gYW1kZ3B1X2dmeF9jb21wdXRlX21xZF9zd19pbml0KGFkZXYsIHNpemVvZihzdHJ1 Y3QKPj4+PiB2aV9tcWRfYWxsb2NhdGlvbikpOwo+Pj4+ICAgICAgICAgIGlmIChyKQo+Pj4+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4gICAgLSAgICAgLyogcmVzZXJ2ZSBHRFMsIEdX UyBhbmQgT0EgcmVzb3VyY2UgZm9yIGdmeCAqLwo+Pj4+IC0gICAgICAgciA9IGFtZGdwdV9ib19j cmVhdGVfa2VybmVsKGFkZXYsCj4+Pj4gYWRldi0+Z2RzLm1lbS5nZnhfcGFydGl0aW9uX3NpemUs Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFLCBBTURH UFVfR0VNX0RPTUFJTl9HRFMsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmFkZXYtPmdkcy5nZHNfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4+PiAtICAgICAgIGlmIChy KQo+Pj4+IC0gICAgICAgICAgICAgICByZXR1cm4gcjsKPj4+PiAtCj4+Pj4gLSAgICAgICByID0g YW1kZ3B1X2JvX2NyZWF0ZV9rZXJuZWwoYWRldiwKPj4+PiBhZGV2LT5nZHMuZ3dzLmdmeF9wYXJ0 aXRpb25fc2l6ZSwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdF X1NJWkUsIEFNREdQVV9HRU1fRE9NQUlOX0dXUywKPj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmYWRldi0+Z2RzLmd3c19nZnhfYm8sIE5VTEwsIE5VTEwpOwo+Pj4+IC0g ICAgICAgaWYgKHIpCj4+Pj4gLSAgICAgICAgICAgICAgIHJldHVybiByOwo+Pj4+IC0KPj4+PiAt ICAgICAgIHIgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChhZGV2LAo+Pj4+IGFkZXYtPmdkcy5v YS5nZnhfcGFydGl0aW9uX3NpemUsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFHRV9TSVpFLCBBTURHUFVfR0VNX0RPTUFJTl9PQSwKPj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmYWRldi0+Z2RzLm9hX2dmeF9ibywgTlVMTCwgTlVMTCk7 Cj4+Pj4gLSAgICAgICBpZiAocikKPj4+PiAtICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4g LQo+Pj4+ICAgICAgICAgIGFkZXYtPmdmeC5jZV9yYW1fc2l6ZSA9IDB4ODAwMDsKPj4+PiAgICAg ICAgICByID0gZ2Z4X3Y4XzBfZ3B1X2Vhcmx5X2luaXQoYWRldik7Cj4+Pj4gICAgICAgICAgaWYg KHIpCj4+Pj4gICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPj4+PiAgICAgICAgICByZXR1cm4g MDsKPj4+PiAgICB9Cj4+Pj4gICAgICBzdGF0aWMgaW50IGdmeF92OF8wX3N3X2Zpbmkodm9pZCAq aGFuZGxlKQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICBpbnQgaTsKPj4+PiAgICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsK Pj4+PiAgICAtICAgICBhbWRncHVfYm9fZnJlZV9rZXJuZWwoJmFkZXYtPmdkcy5vYV9nZnhfYm8s IE5VTEwsIE5VTEwpOwo+Pj4+IC0gICAgICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT5n ZHMuZ3dzX2dmeF9ibywgTlVMTCwgTlVMTCk7Cj4+Pj4gLSAgICAgICBhbWRncHVfYm9fZnJlZV9r ZXJuZWwoJmFkZXYtPmdkcy5nZHNfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4+PiAtCj4+Pj4gICAg ICAgICAgZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1fZ2Z4X3JpbmdzOyBpKyspCj4+Pj4g ICAgICAgICAgICAgICAgICBhbWRncHVfcmluZ19maW5pKCZhZGV2LT5nZnguZ2Z4X3JpbmdbaV0p Owo+Pj4+ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmlu Z3M7IGkrKykKPj4+PiAgICAgICAgICAgICAgICAgIGFtZGdwdV9yaW5nX2ZpbmkoJmFkZXYtPmdm eC5jb21wdXRlX3JpbmdbaV0pOwo+Pj4+ICAgICAgICAgIGFtZGdwdV9nZnhfY29tcHV0ZV9tcWRf c3dfZmluaShhZGV2KTsKPj4+PiAgICAgICAgICBhbWRncHVfZ2Z4X2tpcV9mcmVlX3JpbmcoJmFk ZXYtPmdmeC5raXEucmluZywKPj4+PiAmYWRldi0+Z2Z4LmtpcS5pcnEpOwo+Pj4+ICAgICAgICAg IGFtZGdwdV9nZnhfa2lxX2ZpbmkoYWRldik7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y4XzBfbWVjX2Zp bmkoYWRldik7Cj4+Pj4gQEAgLTM4NTAsMjEgKzM4MjcsMjEgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4 XzBfY29uZmlnX2luaXQoc3RydWN0Cj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldikKPj4+PiAgICAg ICAgICBjYXNlIENISVBfQ0FSUklaTzoKPj4+PiAgICAgICAgICBjYXNlIENISVBfU1RPTkVZOgo+ Pj4+ICAgICAgICAgICAgICAgICAgYWRldi0+Z2Z4LmNvbmZpZy5kb3VibGVfb2ZmY2hpcF9sZHNf YnVmID0gMDsKPj4+PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICAgICAgICAgIH0KPj4+ PiAgICB9Cj4+Pj4gICAgICBzdGF0aWMgdm9pZCBnZnhfdjhfMF9ncHVfaW5pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKPj4+PiAgICB7Cj4+Pj4gICAgICAgICAgdTMyIHRtcCwgc2hfc3Rh dGljX21lbV9jZmc7Cj4+Pj4gLSAgICAgICBpbnQgaTsKPj4+PiArICAgICAgIGludCBpLCB2bWlk Owo+Pj4+ICAgICAgICAgIFdSRUczMl9GSUVMRChHUkJNX0NOVEwsIFJFQURfVElNRU9VVCwgMHhG Rik7Cj4+Pj4gICAgICAgICAgV1JFRzMyKG1tR0JfQUREUl9DT05GSUcsIGFkZXYtPmdmeC5jb25m aWcuZ2JfYWRkcl9jb25maWcpOwo+Pj4+ICAgICAgICAgIFdSRUczMihtbUhEUF9BRERSX0NPTkZJ RywgYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZyk7Cj4+Pj4gICAgICAgICAgV1JFRzMy KG1tRE1JRl9BRERSX0NBTEMsIGFkZXYtPmdmeC5jb25maWcuZ2JfYWRkcl9jb25maWcpOwo+Pj4+ ICAgICAgICAgIGdmeF92OF8wX3RpbGluZ19tb2RlX3RhYmxlX2luaXQoYWRldik7Cj4+Pj4gICAg ICAgICAgZ2Z4X3Y4XzBfc2V0dXBfcmIoYWRldik7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y4XzBfZ2V0 X2N1X2luZm8oYWRldik7Cj4+Pj4gICAgICAgICAgZ2Z4X3Y4XzBfY29uZmlnX2luaXQoYWRldik7 Cj4+Pj4gQEAgLTM5MjcsMjAgKzM5MDQsNDEgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfZ3B1X2lu aXQoc3RydWN0Cj4+Pj4gYW1kZ3B1X2RldmljZQo+Pj4+ICphZGV2KQo+Pj4+ICAgICAgICAgIHRt cCA9IFJSRUczMihtbVNQSV9BUkJfUFJJT1JJVFkpOwo+Pj4+ICAgICAgICAgIHRtcCA9IFJFR19T RVRfRklFTEQodG1wLCBTUElfQVJCX1BSSU9SSVRZLCBQSVBFX09SREVSX1RTMCwgMik7Cj4+Pj4g ICAgICAgICAgdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFNQSV9BUkJfUFJJT1JJVFksIFBJUEVf T1JERVJfVFMxLCAyKTsKPj4+PiAgICAgICAgICB0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgU1BJ X0FSQl9QUklPUklUWSwgUElQRV9PUkRFUl9UUzIsIDIpOwo+Pj4+ICAgICAgICAgIHRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBTUElfQVJCX1BSSU9SSVRZLCBQSVBFX09SREVSX1RTMywgMik7Cj4+ Pj4gICAgICAgICAgV1JFRzMyKG1tU1BJX0FSQl9QUklPUklUWSwgdG1wKTsKPj4+PiAgICAgICAg ICBtdXRleF91bmxvY2soJmFkZXYtPmdyYm1faWR4X211dGV4KTsKPj4+PiAgICArICAgICBmb3Ig KHZtaWQgPSAwOyB2bWlkIDwgQU1ER1BVX05VTV9WTUlEOyB2bWlkKyspIHsKPj4+PiArICAgICAg ICAgICAgICAgdW5zaWduZWQgZ2RzX3NpemUsIGd3c19zaXplLCBvYV9zaXplOwo+Pj4+ICsKPj4+ PiArICAgICAgICAgICAgICAgaWYgKHZtaWQgPAo+Pj4+IGFkZXYtPnZtX21hbmFnZXIuaWRfbWdy W0FNREdQVV9HRlhIVUJdLm51bV9pZHMpCj4+Pj4gewo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGdkc19zaXplID0gYWRldi0+Z2RzLm1lbS5nZnhfc2l6ZV9wZXJfdm1pZDsKPj4+PiArICAg ICAgICAgICAgICAgICAgICAgICBnd3Nfc2l6ZSA9IGFkZXYtPmdkcy5nd3MuZ2Z4X3NpemVfcGVy X3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgb2Ffc2l6ZSA9IGFkZXYtPmdkcy5v YS5nZnhfc2l6ZV9wZXJfdm1pZDsKPj4+PiArICAgICAgICAgICAgICAgfSBlbHNlIHsKPj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICBnZHNfc2l6ZSA9IGFkZXYtPmdkcy5tZW0ua2ZkX3NpemVf cGVyX3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ3dzX3NpemUgPSBhZGV2LT5n ZHMuZ3dzLmtmZF9zaXplX3Blcl92bWlkOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG9h X3NpemUgPSBhZGV2LT5nZHMub2Eua2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+Pj4gKyAgICAgICAgICAg ICAgIH0KPj4+PiArCj4+Pj4gKyAgICAgICAgICAgICAgIFdSRUczMihhbWRncHVfZ2RzX3JlZ19v ZmZzZXRbdm1pZF0ubWVtX2Jhc2UsIHZtaWQgKgo+Pj4+IGdkc19zaXplKTsKPj4+PiArICAgICAg ICAgICAgICAgV1JFRzMyKGFtZGdwdV9nZHNfcmVnX29mZnNldFt2bWlkXS5tZW1fc2l6ZSwgZ2Rz X3NpemUpOwo+Pj4+ICsgICAgICAgICAgICAgICBXUkVHMzIoYW1kZ3B1X2dkc19yZWdfb2Zmc2V0 W3ZtaWRdLmd3cywKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICh2bWlkICogZ3dzX3NpemUp IHwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgIChnd3Nfc2l6ZSA8PCBHRFNfR1dTX1ZNSUQw X19TSVpFX19TSElGVCkpOwo+Pj4+ICsgICAgICAgICAgICAgICBXUkVHMzIoYW1kZ3B1X2dkc19y ZWdfb2Zmc2V0W3ZtaWRdLm9hLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgKCgxIDw8IG9h X3NpemUpIC0gMSkgPDwgKHZtaWQgKiBvYV9zaXplKSk7Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gICAg fQo+Pj4+ICAgICAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfd2FpdF9mb3JfcmxjX3NlcmRlcyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZQo+Pj4+ICphZGV2KQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICB1MzIg aSwgaiwgazsKPj4+PiAgICAgICAgICB1MzIgbWFzazsKPj4+PiAgICAgICAgICBtdXRleF9sb2Nr KCZhZGV2LT5ncmJtX2lkeF9tdXRleCk7Cj4+Pj4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFk ZXYtPmdmeC5jb25maWcubWF4X3NoYWRlcl9lbmdpbmVzOyBpKyspIHsKPj4+PiAgICAgICAgICAg ICAgICAgIGZvciAoaiA9IDA7IGogPCBhZGV2LT5nZnguY29uZmlnLm1heF9zaF9wZXJfc2U7IGor Kykgewo+Pj4+IEBAIC01MzgzLDY4ICs1MzgxLDIwIEBAIHN0YXRpYyB1aW50NjRfdAo+Pj4+IGdm eF92OF8wX2dldF9ncHVfY2xvY2tfY291bnRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK Pj4+PiAgICAgICAgICB1aW50NjRfdCBjbG9jazsKPj4+PiAgICAgICAgICBtdXRleF9sb2NrKCZh ZGV2LT5nZnguZ3B1X2Nsb2NrX211dGV4KTsKPj4+PiAgICAgICAgICBXUkVHMzIobW1STENfQ0FQ VFVSRV9HUFVfQ0xPQ0tfQ09VTlQsIDEpOwo+Pj4+ICAgICAgICAgIGNsb2NrID0gKHVpbnQ2NF90 KVJSRUczMihtbVJMQ19HUFVfQ0xPQ0tfQ09VTlRfTFNCKSB8Cj4+Pj4gICAgICAgICAgICAgICAg ICAoKHVpbnQ2NF90KVJSRUczMihtbVJMQ19HUFVfQ0xPQ0tfQ09VTlRfTVNCKSA8PCAzMlVMTCk7 Cj4+Pj4gICAgICAgICAgbXV0ZXhfdW5sb2NrKCZhZGV2LT5nZnguZ3B1X2Nsb2NrX211dGV4KTsK Pj4+PiAgICAgICAgICByZXR1cm4gY2xvY2s7Cj4+Pj4gICAgfQo+Pj4+ICAgIC1zdGF0aWMgdm9p ZCBnZnhfdjhfMF9yaW5nX2VtaXRfZ2RzX3N3aXRjaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg dm1pZCwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBnZHNfYmFzZSwgdWludDMyX3QKPj4+PiBnZHNfc2l6ZSwKPj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBnd3NfYmFzZSwgdWludDMyX3QK Pj4+PiBnd3Nfc2l6ZSwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCBvYV9iYXNlLCB1aW50MzJfdAo+Pj4+IG9hX3NpemUpCj4+Pj4gLXsKPj4+ PiAtICAgICAgIGdkc19iYXNlID0gZ2RzX2Jhc2UgPj4gQU1ER1BVX0dEU19TSElGVDsKPj4+PiAt ICAgICAgIGdkc19zaXplID0gZ2RzX3NpemUgPj4gQU1ER1BVX0dEU19TSElGVDsKPj4+PiAtCj4+ Pj4gLSAgICAgICBnd3NfYmFzZSA9IGd3c19iYXNlID4+IEFNREdQVV9HV1NfU0hJRlQ7Cj4+Pj4g LSAgICAgICBnd3Nfc2l6ZSA9IGd3c19zaXplID4+IEFNREdQVV9HV1NfU0hJRlQ7Cj4+Pj4gLQo+ Pj4+IC0gICAgICAgb2FfYmFzZSA9IG9hX2Jhc2UgPj4gQU1ER1BVX09BX1NISUZUOwo+Pj4+IC0g ICAgICAgb2Ffc2l6ZSA9IG9hX3NpemUgPj4gQU1ER1BVX09BX1NISUZUOwo+Pj4+IC0KPj4+PiAt ICAgICAgIC8qIEdEUyBCYXNlICovCj4+Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5n LCBQQUNLRVQzKFBBQ0tFVDNfV1JJVEVfREFUQSwgMykpOwo+Pj4+IC0gICAgICAgYW1kZ3B1X3Jp bmdfd3JpdGUocmluZywgKFdSSVRFX0RBVEFfRU5HSU5FX1NFTCgwKSB8Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=