From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS Date: Thu, 27 Dec 2018 14:31:51 +0000 Message-ID: <20181227143151.GM22341@e110455-lin.cambridge.arm.com> References: <20181221095757.15510-1-james.qian.wang@arm.com> <20181221095757.15510-8-james.qian.wang@arm.com> <20181224123213.GI22341@e110455-lin.cambridge.arm.com> <20181227070853.GC26908@james-ThinkStation-P300> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181227070853.GC26908@james-ThinkStation-P300> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "james qian wang (Arm Technology China)" Cc: Mark Rutland , "linux-doc@vger.kernel.org" , "maxime.ripard@bootlin.com" , "Jonathan Chai (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "yamada.masahiro@socionext.com" , "Yiqi Kang (Arm Technology China)" , "mchehab+samsung@kernel.org" , "Tiannan Zhu (Arm Technology China)" , "corbet@lwn.net" , "airlied@linux.ie" , "malidp@foss.arm.com" , "thomas Sun (Arm Technology China)" , Ayan Halder , devicetree List-Id: devicetree@vger.kernel.org T24gVGh1LCBEZWMgMjcsIDIwMTggYXQgMDc6MDk6MDdBTSArMDAwMCwgamFtZXMgcWlhbiB3YW5n IChBcm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6Cj4gT24gTW9uLCBEZWMgMjQsIDIwMTggYXQg MDg6MzI6MTRQTSArMDgwMCwgTGl2aXUgRHVkYXUgd3JvdGU6Cj4gPiBPbiBGcmksIERlYyAyMSwg MjAxOCBhdCAxMDowMDozM0FNICswMDAwLCBqYW1lcyBxaWFuIHdhbmcgKEFybSBUZWNobm9sb2d5 IENoaW5hKSB3cm90ZToKPiA+ID4gQWRkIGtvbWVkYV9rbXMgYWJzdHJhY3RvbiB0byBhdHRhY2gg a29tZWRhX2RldiB0byBEUk0tS01TCj4gPiA+ICAgQ1JUQzogYWNjb3JkaW5nIHRvIHRoZSBrb21l ZGFfcGlwZWxpbmUKPiA+ID4gICBQTEFORTogYWNjb3JkaW5nIHRvIGtvbWVkYV9sYXllciAobGF5 ZXIgaW5wdXQgcGlwZWxpbmUpCj4gPiA+ICAgUFJJVkFURV9PQkpTOiBrb21lZGFfcGlwZWxpbmUv Y29tcG9uZW50IGFsbCB3aWxsIGJlIHRyZWF0IGFzIHByaXZhdGVfb2Jqcwo+ID4gPiAKPiA+ID4g a29tZWRhX2ttcyBpcyBmb3IgY29ubmVjdGluZyBEUk0tS01TIGFuZCBrb21lZGFfZGV2LCBsaWtl IHJlcG9ydGluZyB0aGUKPiA+ID4ga21zIG9iamVjdCBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byB0 aGUga29tZWRhX2RldiwgYW5kIHBhc3MvY29udmVydCBLTVMncwo+ID4gPiByZXF1aXJlbWVudCB0 byBrb21lZGFfZGV2Lgo+ID4gPiAKPiA+ID4gQ2hhbmdlcyBpbiB2MzoKPiA+ID4gLSBGaXhlZCBz dHlsZSBwcm9ibGVtIGZvdW5kIGJ5IGNoZWNrcGF0Y2gucGwgLS1zdHJpY3QuCj4gPiA+IAo+ID4g PiBDaGFuZ2VzIGluIHYyOgo+ID4gPiAtIFVuaWZpZWQgYWJicmV2aWF0aW9uIG9mICJwaXBlbGlu ZSIgdG8gInBpcGUiLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogSmFtZXMgKFFpYW4pIFdh bmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUgICB8ICAgNiArLQo+ID4gPiAgLi4uL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRjLmMgIHwgMTA2ICsrKysrKysrKysr Cj4gPiA+ICAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rydi5jICAgfCAg MTkgKy0KPiA+ID4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMg ICB8IDE2OSArKysrKysrKysrKysrKysrKysKPiA+ID4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfa21zLmggICB8IDExMyArKysrKysrKysrKysKPiA+ID4gIC4uLi9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oICB8ICAgMyArCj4gPiA+ICAuLi4v Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMgfCAxMDkgKysrKysrKysr KysKPiA+ID4gIC4uLi9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMgICB8 ICA4OCArKysrKysrKysKPiA+ID4gIDggZmlsZXMgY2hhbmdlZCwgNjA4IGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMKPiA+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9rbXMuaAo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jCj4g PiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUK PiA+ID4gaW5kZXggMjViZWFlOTAwZWQyLi4xYjg3NWU1ZGMwZjYgMTAwNjQ0Cj4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUKPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQo+ID4gPiBAQCAtOSw3 ICs5LDExIEBAIGtvbWVkYS15IDo9IFwKPiA+ID4gIAlrb21lZGFfZGV2Lm8gXAo+ID4gPiAgCWtv bWVkYV9mb3JtYXRfY2Fwcy5vIFwKPiA+ID4gIAlrb21lZGFfcGlwZWxpbmUubyBcCj4gPiA+IC0J a29tZWRhX2ZyYW1lYnVmZmVyLm8KPiA+ID4gKwlrb21lZGFfZnJhbWVidWZmZXIubyBcCj4gPiA+ ICsJa29tZWRhX2ttcy5vIFwKPiA+ID4gKwlrb21lZGFfY3J0Yy5vIFwKPiA+ID4gKwlrb21lZGFf cGxhbmUubyBcCj4gPiA+ICsJa29tZWRhX3ByaXZhdGVfb2JqLm8KPiA+ID4gIAo+ID4gPiAga29t ZWRhLXkgKz0gXAo+ID4gPiAgCWQ3MS9kNzFfZGV2Lm8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYwo+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjViYjVhNTVmNmIzMQo+ID4gPiAtLS0g L2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2NydGMuYwo+ID4gPiBAQCAtMCwwICsxLDEwNiBAQAo+ID4gPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ID4gKy8qCj4gPiA+ICsgKiAoQykgQ09QWVJJR0hU IDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKiBBdXRob3I6 IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+Cj4gPiA+ICsgKgo+ID4g PiArICovCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvc3BpbmxvY2suaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ID4gPiAr I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9k cm1fcGxhbmVfaGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o Pgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KPiA+ID4gKyNpbmNsdWRlICJr b21lZGFfZGV2LmgiCj4gPiA+ICsjaW5jbHVkZSAia29tZWRhX2ttcy5oIgo+ID4gPiArCj4gPiA+ ICtzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGtvbWVkYV9jcnRjX2hlbHBlcl9mdW5jcyA9 IHsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNf ZnVuY3Mga29tZWRhX2NydGNfZnVuY3MgPSB7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtpbnQg a29tZWRhX2ttc19zZXR1cF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKPiA+ID4g KwkJCSAgIHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBr b21lZGFfY3J0YyAqY3J0YzsKPiA+ID4gKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICptYXN0ZXI7 Cj4gPiA+ICsJY2hhciBzdHJbMTZdOwo+ID4gPiArCWludCBpOwo+ID4gPiArCj4gPiA+ICsJa21z LT5uX2NydGNzID0gMDsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBtZGV2LT5uX3Bp cGVsaW5lczsgaSsrKSB7Cj4gPiA+ICsJCWNydGMgPSAma21zLT5jcnRjc1trbXMtPm5fY3J0Y3Nd Owo+ID4gPiArCQltYXN0ZXIgPSBtZGV2LT5waXBlbGluZXNbaV07Cj4gPiA+ICsKPiA+ID4gKwkJ Y3J0Yy0+bWFzdGVyID0gbWFzdGVyOwo+ID4gPiArCQljcnRjLT5zbGF2ZSAgPSBOVUxMOwo+ID4g PiArCj4gPiA+ICsJCWlmIChjcnRjLT5zbGF2ZSkKPiA+ID4gKwkJCXNwcmludGYoc3RyLCAicGlw ZS0lZCIsIGNydGMtPnNsYXZlLT5pZCk7Cj4gPiA+ICsJCWVsc2UKPiA+ID4gKwkJCXNwcmludGYo c3RyLCAiTm9uZSIpOwo+ID4gPiArCj4gPiA+ICsJCURSTV9JTkZPKCJjcnRjJWQ6IG1hc3Rlcihw aXBlLSVkKSBzbGF2ZSglcykgb3V0cHV0OiAlcy5cbiIsCj4gPiA+ICsJCQkga21zLT5uX2NydGNz LCBtYXN0ZXItPmlkLCBzdHIsCj4gPiA+ICsJCQkgbWFzdGVyLT5vZl9vdXRwdXRfZGV2ID8KPiA+ ID4gKwkJCSBtYXN0ZXItPm9mX291dHB1dF9kZXYtPmZ1bGxfbmFtZSA6ICJOb25lIik7Cj4gPiA+ ICsKPiA+ID4gKwkJa21zLT5uX2NydGNzKys7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0 dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lICoK PiA+ID4gK2dldF9jcnRjX3ByaW1hcnkoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVj dCBrb21lZGFfY3J0YyAqY3J0YykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3Qga29tZWRhX3BsYW5l ICprcGxhbmU7Cj4gPiA+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiA+ICsKPiA+ID4g Kwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsICZrbXMtPmJhc2UpIHsKPiA+ID4gKwkJaWYgKHBs YW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gPiA+ICsJCQljb250aW51ZTsK PiA+ID4gKwo+ID4gPiArCQlrcGxhbmUgPSB0b19rcGxhbmUocGxhbmUpOwo+ID4gPiArCQkvKiBv bmx5IG1hc3RlciBjYW4gYmUgcHJpbWFyeSAqLwo+ID4gPiArCQlpZiAoa3BsYW5lLT5sYXllci0+ YmFzZS5waXBlbGluZSA9PSBjcnRjLT5tYXN0ZXIpCj4gPiA+ICsJCQlyZXR1cm4gcGxhbmU7Cj4g PiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBpbnQga29tZWRhX2NydGNfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21z LAo+ID4gPiArCQkJICAgc3RydWN0IGtvbWVkYV9jcnRjICprY3J0YykKPiA+ID4gK3sKPiA+ID4g KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAma2NydGMtPmJhc2U7Cj4gPiA+ICsJaW50IGVycjsK PiA+ID4gKwo+ID4gPiArCWVyciA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoJmttcy0+YmFz ZSwgY3J0YywKPiA+ID4gKwkJCQkJZ2V0X2NydGNfcHJpbWFyeShrbXMsIGtjcnRjKSwgTlVMTCwK PiA+ID4gKwkJCQkJJmtvbWVkYV9jcnRjX2Z1bmNzLCBOVUxMKTsKPiA+ID4gKwlpZiAoZXJyKQo+ ID4gPiArCQlyZXR1cm4gZXJyOwo+ID4gPiArCj4gPiA+ICsJZHJtX2NydGNfaGVscGVyX2FkZChj cnRjLCAma29tZWRhX2NydGNfaGVscGVyX2Z1bmNzKTsKPiA+ID4gKwlkcm1fY3J0Y192Ymxhbmtf cmVzZXQoY3J0Yyk7Cj4gPiA+ICsKPiA+ID4gKwljcnRjLT5wb3J0ID0ga2NydGMtPm1hc3Rlci0+ b2Zfb3V0cHV0X3BvcnQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiAraW50IGtvbWVkYV9rbXNfYWRkX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKPiA+ID4gK3sKPiA+ID4gKwlpbnQgaSwgZXJy Owo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGttcy0+bl9jcnRjczsgaSsrKSB7Cj4g PiA+ICsJCWVyciA9IGtvbWVkYV9jcnRjX2FkZChrbXMsICZrbXMtPmNydGNzW2ldKTsKPiA+ID4g KwkJaWYgKGVycikKPiA+ID4gKwkJCXJldHVybiBlcnI7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2Rydi5jCj4gPiA+IGluZGV4IGEyNjU3YjNkMDlkNy4uNGI4Y2U3 MTdhNzFjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9kcnYuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9kcnYuYwo+ID4gPiBAQCAtMTMsMTggKzEzLDIxIEBACj4gPiA+ICAKPiA+ ID4gIHN0cnVjdCBrb21lZGFfZHJ2IHsKPiA+ID4gIAlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldjsK PiA+ID4gKwlzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttczsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ ID4gIHN0YXRpYyB2b2lkIGtvbWVkYV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gPiAg ewo+ID4gPiAgCXN0cnVjdCBrb21lZGFfZHJ2ICptZHJ2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7 Cj4gPiA+ICAKPiA+ID4gLQlkZXZfc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsKPiA+ID4gLQo+ID4g Cj4gPiBJIHdvdWxkIGFyZ3VlIHRoYXQgeW91J3JlIGZpeGluZyBhIGJ1ZyBoZXJlIHRoYXQgd2Fz IGludHJvZHVjZWQgaW4gYW4KPiA+IGVhcmxpZXIgcGF0Y2gsIGFuZCB0aGF0IHlvdSBzaG91bGQg Zml4IHRoYXQgcGF0Y2ggcmF0aGVyIHRoYW4gdGhpcwo+ID4gY2hhbmdlLgo+IAo+IFNvcnJ5LCB5 b3UncmUgcmlnaHQsIHdpbGwgZml4IGl0IHRoZSBuZXh0IHZlcnNpb24uCj4gCj4gPiA+ICAJaWYg KCFtZHJ2KQo+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ICAKPiA+ID4gKwlrb21lZGFfa21zX2RldGFj aChtZHJ2LT5rbXMpOwo+ID4gPiArCj4gPiA+ICAJa29tZWRhX2Rldl9kZXN0cm95KG1kcnYtPm1k ZXYpOwo+ID4gPiArCj4gPiA+ICsJZGV2X3NldF9kcnZkYXRhKGRldiwgTlVMTCk7Cj4gPiA+ICAJ a2ZyZWUobWRydik7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gQEAgLTMzLDcgKzM2LDcgQEAgc3Rh dGljIGludCBrb21lZGFfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiA+ICAJc3RydWN0IGtv bWVkYV9kcnYgKm1kcnY7Cj4gPiA+ICAJaW50IGVycjsKPiA+ID4gIAo+ID4gPiAtCW1kcnYgPSBr emFsbG9jKHNpemVvZigqbWRydiksIEdGUF9LRVJORUwpOwo+ID4gPiArCW1kcnYgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKm1kcnYpLCBHRlBfS0VSTkVMKTsKPiA+ID4gIAlpZiAoIW1kcnYp Cj4gPiA+ICAJCXJldHVybiAtRU5PTUVNOwo+ID4gPiAgCj4gPiA+IEBAIC00NSwxMCArNDgsMTgg QEAgc3RhdGljIGludCBrb21lZGFfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiA+ICAKPiA+ ID4gIAlkZXZfc2V0X2RydmRhdGEoZGV2LCBtZHJ2KTsKPiA+ID4gIAo+ID4gPiArCW1kcnYtPmtt cyA9IGtvbWVkYV9rbXNfYXR0YWNoKG1kcnYtPm1kZXYpOwo+ID4gPiArCWlmIChJU19FUlIobWRy di0+a21zKSkgewo+ID4gPiArCQllcnIgPSBQVFJfRVJSKG1kcnYtPmttcyk7Cj4gPiAKPiA+IGRv ZXMgbWRydi0+a21zIG5lZWRzIHRvIGJlIHNldCB0byBOVUxMIGhlcmU/CgpQaW5nIG9uIHRoaXMg b25lLgoKPiA+IAo+ID4gPiArCQlnb3RvIGRlc3Ryb3lfbWRldjsKPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIAo+ID4gPiArZGVzdHJveV9tZGV2Ogo+ID4gPiArCWtv bWVkYV9kZXZfZGVzdHJveShtZHJ2LT5tZGV2KTsKPiA+ID4gIGZyZWVfbWRydjoKPiA+ID4gLQlr ZnJlZShtZHJ2KTsKPiA+ID4gKwlkZXZtX2tmcmVlKGRldiwgbWRydik7Cj4gPiA+ICAJcmV0dXJu IGVycjsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g PiBpbmRleCAwMDAwMDAwMDAwMDAuLmZkNDgzNjBjYTUyNAo+ID4gPiAtLS0gL2Rldi9udWxsCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5j Cj4gPiA+IEBAIC0wLDAgKzEsMTY5IEBACj4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+ID4gPiArLyoKPiA+ID4gKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ID4gKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5X YW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4g KyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0 b21pYy5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gPiAr I2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgo+ID4gPiArI2luY2x1 ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2Zi X2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ID4gPiArI2lu Y2x1ZGUgImtvbWVkYV9kZXYuaCIKPiA+ID4gKyNpbmNsdWRlICJrb21lZGFfa21zLmgiCj4gPiA+ ICsjaW5jbHVkZSAia29tZWRhX2ZyYW1lYnVmZmVyLmgiCj4gPiA+ICsKPiA+ID4gK0RFRklORV9E Uk1fR0VNX0NNQV9GT1BTKGtvbWVkYV9jbWFfZm9wcyk7Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBp bnQga29tZWRhX2dlbV9jbWFfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAo+ID4g PiArCQkJCSAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICsJCQkJICAgICAgc3Ry dWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKQo+ID4gPiArewo+ID4gPiArCXUzMiBhbGln bm1lbnQgPSAxNjsgLyogVE9ETyBnZXQgYWxpZ25tZW50IGZyb20gZGV2ICovCj4gPiA+ICsKPiA+ ID4gKwlhcmdzLT5waXRjaCA9IEFMSUdOKERJVl9ST1VORF9VUChhcmdzLT53aWR0aCAqIGFyZ3Mt PmJwcCwgOCksCj4gPiA+ICsJCQkgICAgYWxpZ25tZW50KTsKPiA+ID4gKwo+ID4gPiArCXJldHVy biBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZV9pbnRlcm5hbChmaWxlLCBkZXYsIGFyZ3MpOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIga29tZWRhX2ttc19k cml2ZXIgPSB7Cj4gPiA+ICsJLmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9HRU0gfCBEUklWRVJf TU9ERVNFVCB8IERSSVZFUl9BVE9NSUMgfAo+ID4gPiArCQkJICAgRFJJVkVSX1BSSU1FLAo+ID4g PiArCS5sYXN0Y2xvc2UJCQk9IGRybV9mYl9oZWxwZXJfbGFzdGNsb3NlLAo+ID4gPiArCS5nZW1f ZnJlZV9vYmplY3RfdW5sb2NrZWQJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKPiA+ID4gKwku Z2VtX3ZtX29wcwkJCT0gJmRybV9nZW1fY21hX3ZtX29wcywKPiA+ID4gKwkuZHVtYl9jcmVhdGUJ CQk9IGtvbWVkYV9nZW1fY21hX2R1bWJfY3JlYXRlLAo+ID4gPiArCS5wcmltZV9oYW5kbGVfdG9f ZmQJCT0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCj4gPiA+ICsJLnByaW1lX2ZkX3RvX2hh bmRsZQkJPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwKPiA+ID4gKwkuZ2VtX3ByaW1lX2V4 cG9ydAkJPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKPiA+ID4gKwkuZ2VtX3ByaW1lX2ltcG9ydAkJ PSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKPiA+ID4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQkJ PSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCj4gPiA+ICsJLmdlbV9wcmltZV9pbXBv cnRfc2dfdGFibGUJPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGUsCj4gPiA+ICsJ LmdlbV9wcmltZV92bWFwCQkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+ID4gPiArCS5nZW1f cHJpbWVfdnVubWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwKPiA+ID4gKwkuZ2VtX3By aW1lX21tYXAJCQk9IGRybV9nZW1fY21hX3ByaW1lX21tYXAsCj4gPiA+ICsJLmZvcHMgPSAma29t ZWRhX2NtYV9mb3BzLAo+ID4gPiArCS5uYW1lID0gImtvbWVkYSIsCj4gPiA+ICsJLmRlc2MgPSAi QVJNIE1hbGkgS29tZWRhIERpc3BsYXkgUHJvY2Vzc29yIGRyaXZlciIsCj4gPiA+ICsJLmRhdGUg PSAiMjAxODExMDEiLAo+ID4gPiArCS5tYWpvciA9IDAsCj4gPiA+ICsJLm1pbm9yID0gMSwKPiA+ ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGtvbWVkYV9rbXNfY29tbWl0X3RhaWwo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gb2xkX3N0YXRlLT5kZXY7Cj4gPiA+ICsKPiA+ID4gKwlkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhkZXYsIG9sZF9zdGF0ZSk7Cj4g PiA+ICsKPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKGRldiwgb2xkX3N0 YXRlLCAwKTsKPiA+ID4gKwo+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0 X2VuYWJsZXMoZGV2LCBvbGRfc3RhdGUpOwo+ID4gCj4gPiBNYWlubGluZSBoYXMgYWxzbyBpbnRy b2R1Y2VkIHRoZSBkcm1fYXRvbWljX2hlbHBlcl9mYWtlX3ZibGFuayhvbGRfc3RhdGUpIGNhbGwK PiA+IHRvIGhlbHAgd2l0aCB3cml0ZWJhY2tzIG9uIENSVENzIHRoYXQgbWlnaHQgYmUgb3RoZXJ3 aXNlIGRpc2FibGVkLiBEbyB3ZSBuZWVkCj4gPiB0byBoYXZlIGl0IGhlcmUgdG9vPwo+IAo+IHdl IGRvbid0IG5lZWQgaXQsIHNpbmNlIEQ3MSBIVyBzdGlsbCBzZW5kcyBmbGlwIGludGVycnVwdCBl dmVuIG9uIG9uZXNob3QKPiB3cml0ZWJhY2sgbW9kZS4KClllYWgsIGJ1dCBkb2VzIGl0IGRvIGl0 IHdoZW4gdGhlIENSVEMgaXMgZGlzYWJsZWQ/IEdpdmVuIHRoYXQgdGhlCndyaXRlYmFjayBjb3Vs ZCB0YWtlIGEgd2hpbGUsIGFuZCBpdCBpcyBzb21ldGhpbmcgdGhhdCBnZXRzIHN0YXJ0ZWQKZHVy aW5nIG9uZSBhdG9taWMgY29tbWl0IGJ1dCBmaW5pc2hlcyBhdCBzb21lIGxhdGVyIHRpbWUgd2l0 aG91dApibG9ja2luZyB0aGUgbmV4dCBjb21taXQsIHlvdSBjb3VsZCBoYXZlIG9uZSBhdG9taWMg Y29tbWl0IGFza2luZyBmb3IgYQp3cml0ZWJhY2sgYW5kIHRoZW4gYW5vdGhlciBjb21taXQgZGlz YWJsaW5nIHRoZSBDUlRDIGJlZm9yZSB0aGUKd3JpdGViYWNrIGhhcyBmaW5pc2hlZC4gSW4gdGhh dCBjYXNlIHlvdSBzdGlsbCBuZWVkIHRvIGZha2UgdGhlIHZibGFuawpldmVudCB3aGVuIHRoZSB3 cml0ZWJhY2sgaXMgZG9uZSwgb3RoZXJ3aXNlIHVzZXJzcGFjZSB3aWxsIGh1bmcgd2FpdGluZwpm b3JldmVyIGZvciB0aGUgZmVuY2UgdG8gYmUgc2lnbmFsbGVkLgoKCkJlc3QgcmVnYXJkcywKTGl2 aXUKCgoKPiAKPiA+ID4gKwo+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2ZsaXBf ZG9uZShkZXYsIG9sZF9zdGF0ZSk7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfaHdfZG9uZShvbGRfc3RhdGUpOwo+ID4gPiArCj4gPiA+ICsJZHJtX2F0b21pY19oZWxw ZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3Mga29tZWRh X21vZGVfY29uZmlnX2hlbHBlcnMgPSB7Cj4gPiA+ICsJLmF0b21pY19jb21taXRfdGFpbCA9IGtv bWVkYV9rbXNfY29tbWl0X3RhaWwsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBrb21lZGFfbW9kZV9jb25maWdfZnVuY3Mg PSB7Cj4gPiA+ICsJLmZiX2NyZWF0ZQkJPSBrb21lZGFfZmJfY3JlYXRlLAo+ID4gPiArCS5hdG9t aWNfY2hlY2sJCT0gTlVMTCwvKmtvbWVkYV9rbXNfY2hlY2sqLwo+ID4gCj4gPiBJIHdvdWxkIGFy Z3VlIHRoYXQgeW91IHNob3VsZCBhdCBsZWFzdCB1c2UgZHJtX2F0b21pY19oZWxwZXJfY2hlY2sg aGVyZSwKPiA+IHJhdGhlciB0aGFuIHNldCBpdCB0byBOVUxMLCBldmVuIGlmIGxhdGVyIHlvdSB3 aWxsIHJlcGxhY2UgaXQgd2l0aCBhCj4gPiBrb21lZGEgZnVuY3Rpb24uCj4gCj4gT0suCj4gCj4g PiAKPiA+ID4gKwkuYXRvbWljX2NvbW1pdAkJPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQsCj4g PiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBrb21lZGFfa21zX21vZGVfY29uZmln X2luaXQoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCj4gPiA+ICsJCQkJCXN0cnVjdCBrb21l ZGFfZGV2ICptZGV2KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNv bmZpZyA9ICZrbXMtPmJhc2UubW9kZV9jb25maWc7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fbW9kZV9j b25maWdfaW5pdCgma21zLT5iYXNlKTsKPiA+ID4gKwo+ID4gPiArCWtvbWVkYV9rbXNfc2V0dXBf Y3J0Y3Moa21zLCBtZGV2KTsKPiA+ID4gKwo+ID4gPiArCS8qIEdldCB2YWx1ZSBmcm9tIGRldiAq Lwo+ID4gPiArCWNvbmZpZy0+bWluX3dpZHRoCT0gMDsKPiA+ID4gKwljb25maWctPm1pbl9oZWln aHQJPSAwOwo+ID4gPiArCWNvbmZpZy0+bWF4X3dpZHRoCT0gNDA5NjsKPiA+ID4gKwljb25maWct Pm1heF9oZWlnaHQJPSA0MDk2Owo+ID4gPiArCWNvbmZpZy0+YWxsb3dfZmJfbW9kaWZpZXJzID0g dHJ1ZTsKPiA+ID4gKwo+ID4gPiArCWNvbmZpZy0+ZnVuY3MgPSAma29tZWRhX21vZGVfY29uZmln X2Z1bmNzOwo+ID4gPiArCWNvbmZpZy0+aGVscGVyX3ByaXZhdGUgPSAma29tZWRhX21vZGVfY29u ZmlnX2hlbHBlcnM7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBrb21lZGFfa21zX2Rl diAqa29tZWRhX2ttc19hdHRhY2goc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCj4gPiA+ICt7Cj4g PiA+ICsJc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMgPSBremFsbG9jKHNpemVvZigqa21zKSwg R0ZQX0tFUk5FTCk7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKPiA+ID4gKwlpbnQg ZXJyOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFrbXMpCj4gPiA+ICsJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ID4gPiArCj4gPiA+ICsJZHJtID0gJmttcy0+YmFzZTsKPiA+ID4gKwllcnIgPSBk cm1fZGV2X2luaXQoZHJtLCAma29tZWRhX2ttc19kcml2ZXIsIG1kZXYtPmRldik7Cj4gPiA+ICsJ aWYgKGVycikKPiA+ID4gKwkJZ290byBmcmVlX2ttczsKPiA+ID4gKwo+ID4gPiArCWRybS0+ZGV2 X3ByaXZhdGUgPSBtZGV2Owo+ID4gPiArCj4gPiA+ICsJa29tZWRhX2ttc19tb2RlX2NvbmZpZ19p bml0KGttcywgbWRldik7Cj4gPiA+ICsKPiA+ID4gKwllcnIgPSBrb21lZGFfa21zX2FkZF9wcml2 YXRlX29ianMoa21zLCBtZGV2KTsKPiA+ID4gKwlpZiAoZXJyKQo+ID4gPiArCQlnb3RvIGNsZWFu dXBfbW9kZV9jb25maWc7Cj4gPiA+ICsKPiA+ID4gKwllcnIgPSBrb21lZGFfa21zX2FkZF9wbGFu ZXMoa21zLCBtZGV2KTsKPiA+ID4gKwlpZiAoZXJyKQo+ID4gPiArCQlnb3RvIGNsZWFudXBfbW9k ZV9jb25maWc7Cj4gPiA+ICsKPiA+ID4gKwllcnIgPSBkcm1fdmJsYW5rX2luaXQoZHJtLCBrbXMt Pm5fY3J0Y3MpOwo+ID4gPiArCWlmIChlcnIpCj4gPiA+ICsJCWdvdG8gY2xlYW51cF9tb2RlX2Nv bmZpZzsKPiA+ID4gKwo+ID4gPiArCWVyciA9IGtvbWVkYV9rbXNfYWRkX2NydGNzKGttcywgbWRl dik7Cj4gPiA+ICsJaWYgKGVycikKPiA+ID4gKwkJZ290byBjbGVhbnVwX21vZGVfY29uZmlnOwo+ ID4gPiArCj4gPiA+ICsJZXJyID0gY29tcG9uZW50X2JpbmRfYWxsKG1kZXYtPmRldiwga21zKTsK PiA+ID4gKwlpZiAoZXJyKQo+ID4gPiArCQlnb3RvIGNsZWFudXBfbW9kZV9jb25maWc7Cj4gPiA+ ICsKPiA+ID4gKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsKPiA+ID4gKwo+ID4gPiArCWVy ciA9IGRybV9kZXZfcmVnaXN0ZXIoZHJtLCAwKTsKPiA+ID4gKwlpZiAoZXJyKQo+ID4gPiArCQln b3RvIHVuaW5zdGFsbF9pcnE7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4ga21zOwo+ID4gPiArCj4g PiA+ICt1bmluc3RhbGxfaXJxOgo+ID4gPiArCWRybV9pcnFfdW5pbnN0YWxsKGRybSk7Cj4gPiA+ ICtjbGVhbnVwX21vZGVfY29uZmlnOgo+ID4gPiArCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRy bSk7Cj4gPiA+ICtmcmVlX2ttczoKPiA+ID4gKwlrZnJlZShrbXMpOwo+ID4gPiArCXJldHVybiBF UlJfUFRSKGVycik7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3ZvaWQga29tZWRhX2ttc19kZXRh Y2goc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRy bV9kZXZpY2UgKmRybSA9ICZrbXMtPmJhc2U7Cj4gPiA+ICsJc3RydWN0IGtvbWVkYV9kZXYgKm1k ZXYgPSBkcm0tPmRldl9wcml2YXRlOwo+ID4gPiArCj4gPiA+ICsJZHJtX2Rldl91bnJlZ2lzdGVy KGRybSk7Cj4gPiA+ICsJY29tcG9uZW50X3VuYmluZF9hbGwobWRldi0+ZGV2LCBkcm0pOwo+ID4g PiArCWtvbWVkYV9rbXNfY2xlYW51cF9wcml2YXRlX29ianMobWRldik7Cj4gPiA+ICsJZHJtX21v ZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiA+ID4gKwlkcm0tPmRldl9wcml2YXRlID0gTlVMTDsK PiA+ID4gKwlkcm1fZGV2X3B1dChkcm0pOwo+ID4gPiArfQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmggYi9kcml2ZXJzL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaAo+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYxMzY2NjAwNGE0Mgo+ID4gPiAtLS0g L2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2ttcy5oCj4gPiA+IEBAIC0wLDAgKzEsMTEzIEBACj4gPiA+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ID4gPiArLyoKPiA+ID4gKyAqIChDKSBDT1BZUklH SFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ID4gKyAqIEF1dGhv cjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KPiA+ID4gKyAqCj4g PiA+ICsgKi8KPiA+ID4gKyNpZm5kZWYgX0tPTUVEQV9LTVNfSF8KPiA+ID4gKyNkZWZpbmUgX0tP TUVEQV9LTVNfSF8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4g PiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNr Lmg+Cj4gPiA+ICsKPiA+ID4gKy8qKiBzdHJ1Y3Qga29tZWRhX3BsYW5lIC0ga29tZWRhIGluc3Rh bmNlIG9mIGRybV9wbGFuZSAqLwo+ID4gPiArc3RydWN0IGtvbWVkYV9wbGFuZSB7Cj4gPiA+ICsJ LyoqIEBiYXNlOiAmZHJtX3BsYW5lICovCj4gPiA+ICsJc3RydWN0IGRybV9wbGFuZSBiYXNlOwo+ ID4gPiArCS8qKgo+ID4gPiArCSAqIEBsYXllcjoKPiA+ID4gKwkgKgo+ID4gPiArCSAqIHJlcHJl c2VudHMgYXZhaWxhYmxlIGxheWVyIGlucHV0IHBpcGVsaW5lcyBmb3IgdGhpcyBwbGFuZS4KPiA+ ID4gKwkgKgo+ID4gPiArCSAqIE5PVEU6Cj4gPiA+ICsJICogdGhlIGxheWVyIGlzIG5vdCBmb3Ig YSBzcGVjaWZpYyBMYXllciwgYnV0IGluZGljYXRlIGEgZ3JvdXAgb2YKPiA+ID4gKwkgKiBMYXll cnMgd2l0aCBzYW1lIGNhcGFiaWxpdGllcy4KPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3Qga29t ZWRhX2xheWVyICpsYXllcjsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICog c3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZQo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSBwbGFuZV9z dGF0ZSBjYW4gYmUgc3BsaXQgaW50byB0d28gZGF0YSBmbG93IChsZWZ0L3JpZ2h0KSBhbmQgaGFu ZGxlZAo+ID4gPiArICogYnkgdHdvIGxheWVycyAma29tZWRhX3BsYW5lLmxheWVyIGFuZCAma29t ZWRhX3BsYW5lLmxheWVyLnJpZ2h0Cj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBrb21lZGFfcGxh bmVfc3RhdGUgewo+ID4gPiArCS8qKiBAYmFzZTogJmRybV9wbGFuZV9zdGF0ZSAqLwo+ID4gPiAr CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgYmFzZTsKPiA+ID4gKwo+ID4gPiArCS8qIHByaXZhdGUg cHJvcGVydGllcyAqLwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBzdHJ1 Y3Qga29tZWRhX3diX2Nvbm5lY3Rvcgo+ID4gPiArICovCj4gPiA+ICtzdHJ1Y3Qga29tZWRhX3di X2Nvbm5lY3RvciB7Cj4gPiA+ICsJLyoqIEBiYXNlOiAmZHJtX3dyaXRlYmFja19jb25uZWN0b3Ig Ki8KPiA+ID4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgYmFzZTsKPiA+ID4gKwo+ ID4gPiArCS8qKiBAd2JfbGF5ZXI6IHJlcHJlc2VudHMgYXNzb2NpYXRlZCB3cml0ZWJhY2sgcGlw ZWxpbmUgb2Yga29tZWRhICovCj4gPiA+ICsJc3RydWN0IGtvbWVkYV9sYXllciAqd2JfbGF5ZXI7 Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIHN0cnVjdCBrb21lZGFfY3J0 Ywo+ID4gPiArICovCj4gPiA+ICtzdHJ1Y3Qga29tZWRhX2NydGMgewo+ID4gPiArCS8qKiBAYmFz ZTogJmRybV9jcnRjICovCj4gPiA+ICsJc3RydWN0IGRybV9jcnRjIGJhc2U7Cj4gPiA+ICsJLyoq IEBtYXN0ZXI6IG9ubHkgbWFzdGVyIGhhcyBkaXNwbGF5IG91dHB1dCAqLwo+ID4gPiArCXN0cnVj dCBrb21lZGFfcGlwZWxpbmUgKm1hc3RlcjsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAc2xhdmU6 IG9wdGlvbmFsCj4gPiA+ICsJICoKPiA+ID4gKwkgKiBEb2Vzbid0IGhhdmUgaXRzIG93biBkaXNw bGF5IG91dHB1dCwgdGhlIGhhbmRsZWQgZGF0YSBmbG93IHdpbGwKPiA+ID4gKwkgKiBtZXJnZSBp bnRvIHRoZSBtYXN0ZXIuCj4gPiA+ICsJICovCj4gPiA+ICsJc3RydWN0IGtvbWVkYV9waXBlbGlu ZSAqc2xhdmU7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKiogc3RydWN0IGtvbWVkYV9jcnRj X3N0YXRlICovCj4gPiA+ICtzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgewo+ID4gPiArCS8qKiBA YmFzZTogJmRybV9jcnRjX3N0YXRlICovCj4gPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlIGJh c2U7Cj4gPiA+ICsKPiA+ID4gKwkvKiBwcml2YXRlIHByb3BlcnRpZXMgKi8KPiA+ID4gKwo+ID4g PiArCS8qIGNvbXB1dGVkIHN0YXRlIHdoaWNoIGFyZSB1c2VkIGJ5IHZhbGlkYXRlL2NoZWNrICov Cj4gPiA+ICsJdTMyIGFmZmVjdGVkX3BpcGVzOwo+ID4gPiArCXUzMiBhY3RpdmVfcGlwZXM7Cj4g PiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKiogc3RydWN0IGtvbWVkYV9rbXNfZGV2IC0gZm9yIGdh dGhlciBLTVMgcmVsYXRlZCB0aGluZ3MgKi8KPiA+ID4gK3N0cnVjdCBrb21lZGFfa21zX2RldiB7 Cj4gPiA+ICsJLyoqIEBiYXNlOiAmZHJtX2RldmljZSAqLwo+ID4gPiArCXN0cnVjdCBkcm1fZGV2 aWNlIGJhc2U7Cj4gPiA+ICsKPiA+ID4gKwkvKiogQG5fY3J0Y3M6IHZhbGlkIG51bWJlcnMgb2Yg Y3J0Y3MgaW4gJmtvbWVkYV9rbXNfZGV2LmNydGNzICovCj4gPiA+ICsJaW50IG5fY3J0Y3M7Cj4g PiA+ICsJLyoqIEBjcnRjczogY3J0Y3MgbGlzdCAqLwo+ID4gPiArCXN0cnVjdCBrb21lZGFfY3J0 YyBjcnRjc1tLT01FREFfTUFYX1BJUEVMSU5FU107Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsj ZGVmaW5lIHRvX2twbGFuZShwKQljb250YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9wbGFuZSwg YmFzZSkKPiA+ID4gKyNkZWZpbmUgdG9fa3BsYW5lX3N0KHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1 Y3Qga29tZWRhX3BsYW5lX3N0YXRlLCBiYXNlKQo+ID4gPiArI2RlZmluZSB0b19rY29ubihwKQlj b250YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0b3IsIGJhc2UpCj4gPiA+ICsj ZGVmaW5lIHRvX2tjcnRjKHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qga29tZWRhX2NydGMsIGJh c2UpCj4gPiA+ICsjZGVmaW5lIHRvX2tjcnRjX3N0KHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qg a29tZWRhX2NydGNfc3RhdGUsIGJhc2UpCj4gPiA+ICsjZGVmaW5lIHRvX2tkZXYocCkJY29udGFp bmVyX29mKHAsIHN0cnVjdCBrb21lZGFfa21zX2RldiwgYmFzZSkKPiA+ID4gKwo+ID4gPiAraW50 IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Moc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVj dCBrb21lZGFfZGV2ICptZGV2KTsKPiA+ID4gKwo+ID4gPiAraW50IGtvbWVkYV9rbXNfYWRkX2Ny dGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7 Cj4gPiA+ICtpbnQga29tZWRhX2ttc19hZGRfcGxhbmVzKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7Cj4gPiA+ICtpbnQga29tZWRhX2ttc19hZGRf cHJpdmF0ZV9vYmpzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAo+ID4gPiArCQkJCXN0cnVj dCBrb21lZGFfZGV2ICptZGV2KTsKPiA+ID4gK3ZvaWQga29tZWRhX2ttc19jbGVhbnVwX3ByaXZh dGVfb2JqcyhzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBr b21lZGFfa21zX2RldiAqa29tZWRhX2ttc19hdHRhY2goc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYp Owo+ID4gPiArdm9pZCBrb21lZGFfa21zX2RldGFjaChzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmtt cyk7Cj4gPiA+ICsKPiA+ID4gKyNlbmRpZiAvKl9LT01FREFfS01TX0hfKi8KPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5l LmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5o Cj4gPiA+IGluZGV4IDJkNjhmZmVhZTI1ZC4uMTE0MTI5ZDk2ODUxIDEwMDY0NAo+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVs aW5lLmgKPiA+ID4gQEAgLTMzMyw2ICszMzMsOSBAQCBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX3N0 YXRlIHsKPiA+ID4gICNkZWZpbmUgdG9faW1wcm9jX3N0KGMpCWNvbnRhaW5lcl9vZihjLCBzdHJ1 Y3Qga29tZWRhX2ltcHJvY19zdGF0ZSwgYmFzZSkKPiA+ID4gICNkZWZpbmUgdG9fY3RybHJfc3Qo YykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfdGltaW5nX2N0cmxyX3N0YXRlLCBiYXNl KQo+ID4gPiAgCj4gPiA+ICsjZGVmaW5lIHByaXZfdG9fY29tcF9zdChvKSBjb250YWluZXJfb2Yo bywgc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUsIG9iaikKPiA+ID4gKyNkZWZpbmUgcHJp dl90b19waXBlX3N0KG8pICBjb250YWluZXJfb2Yobywgc3RydWN0IGtvbWVkYV9waXBlbGluZV9z dGF0ZSwgb2JqKQo+ID4gPiArCj4gPiA+ICAvKiBwaXBlbGluZSBBUElzICovCj4gPiA+ICBzdHJ1 Y3Qga29tZWRhX3BpcGVsaW5lICoKPiA+ID4gIGtvbWVkYV9waXBlbGluZV9hZGQoc3RydWN0IGtv bWVkYV9kZXYgKm1kZXYsIHNpemVfdCBzaXplLAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMKPiA+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wYTQ5NTNhOWE5MDkKPiA+ID4gLS0tIC9k ZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9wbGFuZS5jCj4gPiA+IEBAIC0wLDAgKzEsMTA5IEBACj4gPiA+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gPiArLyoKPiA+ID4gKyAqIChDKSBDT1BZUklHSFQg MjAxOCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ID4gKyAqIEF1dGhvcjog SmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KPiA+ID4gKyAqCj4gPiA+ ICsgKi8KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ID4gPiArI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVf aGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSAia29tZWRhX2Rldi5oIgo+ID4gPiArI2luY2x1ZGUg ImtvbWVkYV9rbXMuaCIKPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxh bmVfaGVscGVyX2Z1bmNzIGtvbWVkYV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7Cj4gPiA+ICt9Owo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBrb21lZGFfcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSkKPiA+ID4gK3sKPiA+ID4gKwlkcm1fcGxhbmVfY2xlYW51cChwbGFuZSk7 Cj4gPiA+ICsKPiA+ID4gKwlrZnJlZSh0b19rcGxhbmUocGxhbmUpKTsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mga29tZWRhX3BsYW5l X2Z1bmNzID0gewo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyogZm9yIGtvbWVkYSwgd2hpY2gg aXMgcGlwZWxpbmUgY2FuIGJlIHNoYXJlIGJldHdlZW4gY3J0Y3MgKi8KPiA+ID4gK3N0YXRpYyB1 MzIgZ2V0X3Bvc3NpYmxlX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAo+ID4gPiAr CQkJICAgICAgc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSkKPiA+ID4gK3sKPiA+ID4gKwlz dHJ1Y3Qga29tZWRhX2NydGMgKmNydGM7Cj4gPiA+ICsJdTMyIHBvc3NpYmxlX2NydGNzID0gMDsK PiA+ID4gKwlpbnQgaTsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBrbXMtPm5fY3J0 Y3M7IGkrKykgewo+ID4gPiArCQljcnRjID0gJmttcy0+Y3J0Y3NbaV07Cj4gPiA+ICsKPiA+ID4g KwkJaWYgKChwaXBlID09IGNydGMtPm1hc3RlcikgfHwgKHBpcGUgPT0gY3J0Yy0+c2xhdmUpKQo+ ID4gPiArCQkJcG9zc2libGVfY3J0Y3MgfD0gQklUKGkpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4g PiArCXJldHVybiBwb3NzaWJsZV9jcnRjczsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyogdXNl IExheWVyMCBhcyBwcmltYXJ5ICovCj4gPiA+ICtzdGF0aWMgdTMyIGdldF9wbGFuZV90eXBlKHN0 cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAo+ID4gPiArCQkJICBzdHJ1Y3Qga29tZWRhX2NvbXBv bmVudCAqYykKPiA+ID4gK3sKPiA+ID4gKwlib29sIGlzX3ByaW1hcnkgPSAoYy0+aWQgPT0gS09N RURBX0NPTVBPTkVOVF9MQVlFUjApOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIGlzX3ByaW1hcnkg PyBEUk1fUExBTkVfVFlQRV9QUklNQVJZIDogRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKPiA+ID4g K30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBrb21lZGFfcGxhbmVfYWRkKHN0cnVjdCBrb21l ZGFfa21zX2RldiAqa21zLAo+ID4gPiArCQkJICAgIHN0cnVjdCBrb21lZGFfbGF5ZXIgKmxheWVy KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2ID0ga21zLT5iYXNlLmRl dl9wcml2YXRlOwo+ID4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjID0gJmxheWVyLT5i YXNlOwo+ID4gPiArCXN0cnVjdCBrb21lZGFfcGxhbmUgKmtwbGFuZTsKPiA+ID4gKwlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZTsKPiA+ID4gKwl1MzIgKmZvcm1hdHMsIG5fZm9ybWF0cyA9IDA7Cj4g PiA+ICsJaW50IGVycjsKPiA+ID4gKwo+ID4gPiArCWtwbGFuZSA9IGt6YWxsb2Moc2l6ZW9mKCpr cGxhbmUpLCBHRlBfS0VSTkVMKTsKPiA+ID4gKwlpZiAoIWtwbGFuZSkKPiA+ID4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gPiA+ICsKPiA+ID4gKwlwbGFuZSA9ICZrcGxhbmUtPmJhc2U7Cj4gPiA+ICsJ a3BsYW5lLT5sYXllciA9IGxheWVyOwo+ID4gPiArCj4gPiA+ICsJZm9ybWF0cyA9IGtvbWVkYV9n ZXRfbGF5ZXJfZm91cmNjX2xpc3QoJm1kZXYtPmZtdF90YmwsCj4gPiA+ICsJCQkJCSAgICAgICBs YXllci0+bGF5ZXJfdHlwZSwgJm5fZm9ybWF0cyk7Cj4gPiA+ICsKPiA+ID4gKwllcnIgPSBkcm1f dW5pdmVyc2FsX3BsYW5lX2luaXQoJmttcy0+YmFzZSwgcGxhbmUsCj4gPiA+ICsJCQlnZXRfcG9z c2libGVfY3J0Y3Moa21zLCBjLT5waXBlbGluZSksCj4gPiA+ICsJCQkma29tZWRhX3BsYW5lX2Z1 bmNzLAo+ID4gPiArCQkJZm9ybWF0cywgbl9mb3JtYXRzLCBOVUxMLAo+ID4gPiArCQkJZ2V0X3Bs YW5lX3R5cGUoa21zLCBjKSwKPiA+ID4gKwkJCSIlcyIsIGMtPm5hbWUpOwo+ID4gPiArCj4gPiA+ ICsJa29tZWRhX3B1dF9mb3VyY2NfbGlzdChmb3JtYXRzKTsKPiA+ID4gKwo+ID4gPiArCWlmIChl cnIpCj4gPiA+ICsJCWdvdG8gY2xlYW51cDsKPiA+ID4gKwo+ID4gPiArCWRybV9wbGFuZV9oZWxw ZXJfYWRkKHBsYW5lLCAma29tZWRhX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gPiA+ICsKPiA+ID4g KwlyZXR1cm4gMDsKPiA+ID4gK2NsZWFudXA6Cj4gPiA+ICsJa29tZWRhX3BsYW5lX2Rlc3Ryb3ko cGxhbmUpOwo+ID4gPiArCXJldHVybiBlcnI7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK2ludCBr b21lZGFfa21zX2FkZF9wbGFuZXMoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVjdCBr b21lZGFfZGV2ICptZGV2KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUg KnBpcGU7Cj4gPiA+ICsJaW50IGksIGosIGVycjsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IDA7 IGkgPCBtZGV2LT5uX3BpcGVsaW5lczsgaSsrKSB7Cj4gPiA+ICsJCXBpcGUgPSBtZGV2LT5waXBl bGluZXNbaV07Cj4gPiA+ICsKPiA+ID4gKwkJZm9yIChqID0gMDsgaiA8IHBpcGUtPm5fbGF5ZXJz OyBqKyspIHsKPiA+ID4gKwkJCWVyciA9IGtvbWVkYV9wbGFuZV9hZGQoa21zLCBwaXBlLT5sYXll cnNbal0pOwo+ID4gPiArCQkJaWYgKGVycikKPiA+ID4gKwkJCQlyZXR1cm4gZXJyOwo+ID4gPiAr CQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2 YXRlX29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJp dmF0ZV9vYmouYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAw MDAwMDAuLjllZGZkNmFiMGMxMgo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMKPiA+ID4g QEAgLTAsMCArMSw4OCBAQAo+ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPiA+ID4gKy8qCj4gPiA+ICsgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFt ZXMucWlhbi53YW5nQGFybS5jb20+Cj4gPiA+ICsgKgo+ID4gPiArICovCj4gPiA+ICsjaW5jbHVk ZSAia29tZWRhX2Rldi5oIgo+ID4gPiArI2luY2x1ZGUgImtvbWVkYV9rbXMuaCIKPiA+ID4gKwo+ ID4gPiArc3RhdGljIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqCj4gPiA+ICtrb21lZGFfcGlw ZWxpbmVfYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmop Cj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGtvbWVkYV9waXBlbGluZV9zdGF0ZSAqc3Q7Cj4gPiA+ ICsKPiA+ID4gKwlzdCA9IGttZW1kdXAob2JqLT5zdGF0ZSwgc2l6ZW9mKCpzdCksIEdGUF9LRVJO RUwpOwo+ID4gPiArCWlmICghc3QpCj4gPiA+ICsJCXJldHVybiBOVUxMOwo+ID4gPiArCj4gPiA+ ICsJc3QtPmFjdGl2ZV9jb21wcyA9IDA7Cj4gPiA+ICsKPiA+ID4gKwlfX2RybV9hdG9taWNfaGVs cGVyX3ByaXZhdGVfb2JqX2R1cGxpY2F0ZV9zdGF0ZShvYmosICZzdC0+b2JqKTsKPiA+ID4gKwo+ ID4gPiArCXJldHVybiAmc3QtPm9iajsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZv aWQKPiA+ID4gK2tvbWVkYV9waXBlbGluZV9hdG9taWNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJt X3ByaXZhdGVfb2JqICpvYmosCj4gPiA+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3Rh dGUgKnN0YXRlKQo+ID4gPiArewo+ID4gPiArCWtmcmVlKHByaXZfdG9fcGlwZV9zdChzdGF0ZSkp Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcml2YXRl X3N0YXRlX2Z1bmNzIGtvbWVkYV9waXBlbGluZV9vYmpfZnVuY3MgPSB7Cj4gPiA+ICsJLmF0b21p Y19kdXBsaWNhdGVfc3RhdGUJPSBrb21lZGFfcGlwZWxpbmVfYXRvbWljX2R1cGxpY2F0ZV9zdGF0 ZSwKPiA+ID4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBrb21lZGFfcGlwZWxpbmVfYXRvbWlj X2Rlc3Ryb3lfc3RhdGUsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGtvbWVk YV9waXBlbGluZV9vYmpfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAo+ID4gPiArCQkJ CSAgIHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0 IGtvbWVkYV9waXBlbGluZV9zdGF0ZSAqc3Q7Cj4gPiA+ICsKPiA+ID4gKwlzdCA9IGt6YWxsb2Mo c2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ID4gPiArCWlmICghc3QpCj4gPiA+ICsJCXJldHVy biAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsJc3QtPnBpcGUgPSBwaXBlOwo+ID4gPiArCWRybV9h dG9taWNfcHJpdmF0ZV9vYmpfaW5pdCgmcGlwZS0+b2JqLCAmc3QtPm9iaiwKPiA+ID4gKwkJCQkg ICAgJmtvbWVkYV9waXBlbGluZV9vYmpfZnVuY3MpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK2ludCBrb21lZGFfa21zX2FkZF9wcml2YXRlX29ianMo c3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCj4gPiA+ICsJCQkJc3RydWN0IGtvbWVkYV9kZXYg Km1kZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZTsKPiA+ ID4gKwlpbnQgaSwgZXJyOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IG1kZXYtPm5f cGlwZWxpbmVzOyBpKyspIHsKPiA+ID4gKwkJcGlwZSA9IG1kZXYtPnBpcGVsaW5lc1tpXTsKPiA+ ID4gKwo+ID4gPiArCQllcnIgPSBrb21lZGFfcGlwZWxpbmVfb2JqX2FkZChrbXMsIHBpcGUpOwo+ ID4gPiArCQlpZiAoZXJyKQo+ID4gPiArCQkJcmV0dXJuIGVycjsKPiA+ID4gKwo+ID4gPiArCQkv KiBBZGQgY29tcG9uZW50ICovCj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3ZvaWQga29tZWRhX2ttc19jbGVhbnVwX3ByaXZhdGVfb2Jq cyhzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3Qga29tZWRh X3BpcGVsaW5lICpwaXBlOwo+ID4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjOwo+ID4g PiArCWludCBpLCBpZDsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBtZGV2LT5uX3Bp cGVsaW5lczsgaSsrKSB7Cj4gPiA+ICsJCXBpcGUgPSBtZGV2LT5waXBlbGluZXNbaV07Cj4gPiA+ ICsJCWRwX2Zvcl9lYWNoX3NldF9iaXQoaWQsIHBpcGUtPmF2YWlsX2NvbXBzKSB7Cj4gPiA+ICsJ CQljID0ga29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnQocGlwZSwgaWQpOwo+ID4gPiArCj4g PiA+ICsJCQlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2ZpbmkoJmMtPm9iaik7Cj4gPiA+ICsJCX0K PiA+ID4gKwkJZHJtX2F0b21pY19wcml2YXRlX29ial9maW5pKCZwaXBlLT5vYmopOwo+ID4gPiAr CX0KPiA+ID4gK30KPiA+ID4gLS0gCj4gPiA+IDIuMTcuMQo+ID4gPiAKPiA+IAo+ID4gUmV2aWV3 ZWQtYnk6IExpdml1IER1ZGF1IDxsaXZpdS5kdWRhdUBhcm0uY29tPgo+ID4gCj4gPiBCZXN0IHJl Z2FyZHMsCj4gPiBMaXZpdQo+ID4gCj4gPiAKPiA+IC0tIAo+ID4gPT09PT09PT09PT09PT09PT09 PT0KPiA+IHwgSSB3b3VsZCBsaWtlIHRvIHwKPiA+IHwgZml4IHRoZSB3b3JsZCwgIHwKPiA+IHwg YnV0IHRoZXkncmUgbm90IHwKPiA+IHwgZ2l2aW5nIG1lIHRoZSAgIHwKPiA+ICBcIHNvdXJjZSBj b2RlISAgLwo+ID4gICAtLS0tLS0tLS0tLS0tLS0KPiA+ICAgICDCr1xfKOODhClfL8KvCgotLSAK PT09PT09PT09PT09PT09PT09PT0KfCBJIHdvdWxkIGxpa2UgdG8gfAp8IGZpeCB0aGUgd29ybGQs ICB8CnwgYnV0IHRoZXkncmUgbm90IHwKfCBnaXZpbmcgbWUgdGhlICAgfAogXCBzb3VyY2UgY29k ZSEgIC8KICAtLS0tLS0tLS0tLS0tLS0KICAgIMKvXF8o44OEKV8vwq8KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==