From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH 23/43] drm/i915: wrapping all hdcp var into intel_hdcp Date: Mon, 26 Feb 2018 11:35:41 +0530 Message-ID: References: <1518617638-21684-1-git-send-email-ramalingam.c@intel.com> <1518617638-21684-24-git-send-email-ramalingam.c@intel.com> <20180222144739.GB223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id ACDE76E125 for ; Mon, 26 Feb 2018 06:11:38 +0000 (UTC) In-Reply-To: <20180222144739.GB223881@art_vandelay> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Sean Paul Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, tomas.winkler@intel.com, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiBUaHVyc2RheSAyMiBGZWJydWFyeSAyMDE4IDA4OjE3IFBNLCBTZWFuIFBhdWwgd3JvdGU6 Cj4gT24gV2VkLCBGZWIgMTQsIDIwMTggYXQgMDc6NDM6MzhQTSArMDUzMCwgUmFtYWxpbmdhbSBD IHdyb3RlOgo+PiBDb25zaWRlcmluZyB0aGUgdXBjb21pbmcgc2lnbmlmaWNhbnQgbm8gSERDUDIu MiB2YXJpYWJsZXMsIGl0IHdpbGwKPj4gYmUgY2xlYW4gdG8gaGF2ZSBzZXBhcmF0ZSBzdHJ1Y3Qg Zm8gSERDUC4KPj4KPj4gTmV3IHN0cnVjdHVyZSBjYWxsZWQgaW50ZWxfaGRjcCBpcyBpbnRyb2R1 Y2VkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRl bC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8 ICAgOSArKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgfCAgIDQg Ky0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgMjAgKysrLS0K Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgICAgfCAxNDEgKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPj4gICA0IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNl cnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+PiBpbmRleCAwNDhkNjBiNTE0M2IuLjIyMDk3MzQ5NTI5YiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMTUzMTQsMTAgKzE1MzE0LDExIEBA IHN0YXRpYyB2b2lkIGludGVsX2hwZF9wb2xsX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikK Pj4gICAJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVy KSB7Cj4+ICAgCQlpZiAoY29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5X3dvcmsuZnVuYykKPj4gICAJ CQljYW5jZWxfd29ya19zeW5jKCZjb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yayk7Cj4+IC0J CWlmIChjb25uZWN0b3ItPmhkY3Bfc2hpbSkgewo+PiAtCQkJY2FuY2VsX2RlbGF5ZWRfd29ya19z eW5jKCZjb25uZWN0b3ItPmhkY3BfY2hlY2tfd29yayk7Cj4+IC0JCQljYW5jZWxfd29ya19zeW5j KCZjb25uZWN0b3ItPmhkY3BfcHJvcF93b3JrKTsKPj4gLQkJCWNhbmNlbF93b3JrX3N5bmMoJmNv bm5lY3Rvci0+aGRjcF9lbmFibGVfd29yayk7Cj4+ICsJCWlmIChjb25uZWN0b3ItPmhkY3AgJiYg Y29ubmVjdG9yLT5oZGNwLT5oZGNwX3NoaW0pIHsKPj4gKwkJCWNhbmNlbF9kZWxheWVkX3dvcmtf c3luYygKPj4gKwkJCQkJJmNvbm5lY3Rvci0+aGRjcC0+aGRjcF9jaGVja193b3JrKTsKPj4gKwkJ CWNhbmNlbF93b3JrX3N5bmMoJmNvbm5lY3Rvci0+aGRjcC0+aGRjcF9wcm9wX3dvcmspOwo+PiAr CQkJY2FuY2VsX3dvcmtfc3luYygmY29ubmVjdG9yLT5oZGNwLT5oZGNwX2VuYWJsZV93b3JrKTsK Pj4gICAJCX0KPj4gICAJfQo+PiAgIAlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5f aXRlcik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBpbmRleCBmMjBiMjVmOThlNWEuLjgw NDc2Njg5NzU0ZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+IEBAIC01NDQ1LDcg KzU0NDUsOSBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9uZ19ocGQpCj4+ICAgCQlXQVJOKGlyZXQsICJBY3F1aXJp bmcgbW9kZXNldCBsb2NrcyBmYWlsZWQgd2l0aCAlaVxuIiwgaXJldCk7Cj4+ICAgCj4+ICAgCQkv KiBTaG9ydCBwdWxzZSBjYW4gc2lnbmlmeSBsb3NzIG9mIGhkY3AgYXV0aGVudGljYXRpb24gKi8K Pj4gLQkJaW50ZWxfaGRjcF9jaGVja19saW5rKGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3Ip Owo+PiArCQlpZiAoaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcCkKPj4gKwkJCWlu dGVsX2hkY3BfY2hlY2tfbGluaygKPj4gKwkJCQkJaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rv ci0+aGRjcCk7Cj4+ICAgCj4+ICAgCQlpZiAoIWhhbmRsZWQpIHsKPj4gICAJCQlpbnRlbF9kcC0+ ZGV0ZWN0X2RvbmUgPSBmYWxzZTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXgg N2I5ZTVmNzA4MjZmLi41YjE3MGZmN2VjMTQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4+IEBAIC0zNzUsNiArMzc1LDE3IEBAIHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gewo+PiAg IAkJCSAgICBib29sICpoZGNwX2NhcGFibGUpOwo+PiAgIH07Cj4+ICAgCj4+ICtzdHJ1Y3QgaW50 ZWxfaGRjcCB7Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IFlvdSBk b24ndCBuZWVkIGEgYmFja3BvaW50ZXIsIHVzZSBjb250YWluZXJfb2YgaWYgbmVjZXNzYXJ5Lgpv ayBzdXJlLgo+Cj4+ICsKPj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3No aW07Cj4+ICsJc3RydWN0IG11dGV4IGhkY3BfbXV0ZXg7Cj4+ICsJdWludDY0X3QgaGRjcF92YWx1 ZTsgLyogcHJvdGVjdGVkIGJ5IGhkY3BfbXV0ZXggKi8KPj4gKwlzdHJ1Y3QgZGVsYXllZF93b3Jr IGhkY3BfY2hlY2tfd29yazsKPj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgaGRjcF9wcm9wX3dvcms7 Cj4+ICsJc3RydWN0IHdvcmtfc3RydWN0IGhkY3BfZW5hYmxlX3dvcms7Cj4+ICt9Owo+PiArCj4+ ICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4+ICAgCXN0cnVjdCBkcm1fY29ubmVjdG9yIGJh c2U7Cj4+ICAgCS8qCj4+IEBAIC00MDcsMTIgKzQxOCw3IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0 b3Igewo+PiAgIAkvKiBXb3JrIHN0cnVjdCB0byBzY2hlZHVsZSBhIHVldmVudCBvbiBsaW5rIHRy YWluIGZhaWx1cmUgKi8KPj4gICAJc3RydWN0IHdvcmtfc3RydWN0IG1vZGVzZXRfcmV0cnlfd29y azsKPj4gICAKPj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3NoaW07Cj4+ IC0Jc3RydWN0IG11dGV4IGhkY3BfbXV0ZXg7Cj4+IC0JdWludDY0X3QgaGRjcF92YWx1ZTsgLyog cHJvdGVjdGVkIGJ5IGhkY3BfbXV0ZXggKi8KPj4gLQlzdHJ1Y3QgZGVsYXllZF93b3JrIGhkY3Bf Y2hlY2tfd29yazsKPj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgaGRjcF9wcm9wX3dvcms7Cj4+IC0J c3RydWN0IHdvcmtfc3RydWN0IGhkY3BfZW5hYmxlX3dvcms7Cj4+ICsJc3RydWN0IGludGVsX2hk Y3AgKmhkY3A7Cj4+ICAgfTsKPj4gICAKPj4gICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0 b3Jfc3RhdGUgewo+PiBAQCAtMTg1Myw3ICsxODU5LDcgQEAgaW50IGludGVsX2hkY3BfaW5pdChz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAgCQkgICAgY29uc3Qgc3RydWN0 IGludGVsX2hkY3Bfc2hpbSAqaGRjcF9zaGltKTsKPj4gICBpbnQgaW50ZWxfaGRjcF9lbmFibGUo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPj4gICBpbnQgaW50ZWxfaGRjcF9k aXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+IC1pbnQgaW50ZWxf aGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+ICtp bnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9oZGNwICpoZGNwKTsKPj4gICBi b29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg ZW51bSBwb3J0IHBvcnQpOwo+PiAgIAo+PiAgIC8qIGludGVsX3Bzci5jICovCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMKPj4gaW5kZXggZTAzYmQzNzZkOTJjLi45MTQ3ZmIxN2E5ZmMgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gQEAgLTU0NSw4ICs1NDUsOSBAQCBz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpjb25uX3RvX2RpZ19wb3J0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAJcmV0dXJuIGVuY190b19kaWdfcG9ydCgmaW50ZWxf YXR0YWNoZWRfZW5jb2RlcigmY29ubmVjdG9yLT5iYXNlKS0+YmFzZSk7Cj4+ICAgfQo+PiAgIAo+ PiAtc3RhdGljIGludCBfaW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPj4gK3N0YXRpYyBpbnQgX2ludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfaGRjcCAqaGRjcCkKPj4gICB7Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yID0gaGRjcC0+Y29ubmVjdG9yOwo+IEknbSBub3Qgc3VyZSB3aHkgd2UgbmVlZCB0byBjaGFu Z2UgYWxsIG9mIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgdG8gaW50ZWxfaGRjcAo+IGlmIHRoZSBm aXJzdCB0aGluZyB3ZSBkbyBpcyBmZXRjaCB0aGUgY29ubmVjdG9yLgo+Cj4+ICAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtPmRldl9wcml2 YXRlOwo+PiAgIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNv bm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKPj4gICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9k aWdfcG9ydC0+YmFzZS5wb3J0Owo+PiBAQCAtNTYyLDcgKzU2Myw3IEBAIHN0YXRpYyBpbnQgX2lu dGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICAg CQlyZXR1cm4gLUVUSU1FRE9VVDsKPj4gICAJfQo+PiAgIAo+PiAtCXJldCA9IGNvbm5lY3Rvci0+ aGRjcF9zaGltLT50b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgZmFsc2UpOwo+PiAr CXJldCA9IGhkY3AtPmhkY3Bfc2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcoaW50ZWxfZGlnX3BvcnQs IGZhbHNlKTsKPj4gICAJaWYgKHJldCkgewo+PiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlz YWJsZSBIRENQIHNpZ25hbGxpbmdcbiIpOwo+PiAgIAkJcmV0dXJuIHJldDsKPj4gQEAgLTU3Miw4 ICs1NzMsOSBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0 aWMgaW50IF9pbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4+ICtzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfaGRjcCAq aGRjcCkKPj4gICB7Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gaGRj cC0+Y29ubmVjdG9yOwo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBj b25uZWN0b3ItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gICAJaW50IGksIHJldCwgdHJpZXMg PSAzOwo+PiAgIAo+PiBAQCAtNTk5LDEyICs2MDEsMTIgQEAgc3RhdGljIGludCBfaW50ZWxfaGRj cF9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIAkvKiBJbmNh c2Ugb2YgYXV0aGVudGljYXRpb24gZmFpbHVyZXMsIEhEQ1Agc3BlYyBleHBlY3RzIHJlYXV0aC4g Ki8KPj4gICAJZm9yIChpID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKPj4gICAJCXJldCA9IGludGVs X2hkY3BfYXV0aChjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3RvciksCj4+IC0JCQkJICAgICAgY29u bmVjdG9yLT5oZGNwX3NoaW0pOwo+PiArCQkJCSAgICAgIGhkY3AtPmhkY3Bfc2hpbSk7Cj4+ICAg CQlpZiAoIXJldCkgewo+PiAtCQkJY29ubmVjdG9yLT5oZGNwX3ZhbHVlID0KPj4gKwkJCWhkY3At PmhkY3BfdmFsdWUgPQo+PiAgIAkJCQkJRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJM RUQ7Cj4+IC0JCQlzY2hlZHVsZV93b3JrKCZjb25uZWN0b3ItPmhkY3BfcHJvcF93b3JrKTsKPj4g LQkJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmY29ubmVjdG9yLT5oZGNwX2NoZWNrX3dvcmssCj4+ ICsJCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5oZGNwX3Byb3Bfd29yayk7Cj4+ICsJCQlzY2hlZHVs ZV9kZWxheWVkX3dvcmsoJmhkY3AtPmhkY3BfY2hlY2tfd29yaywKPj4gICAJCQkJCSAgICAgIERS TV9IRENQX0NIRUNLX1BFUklPRF9NUyk7Cj4+ICAgCQkJcmV0dXJuIDA7Cj4+ICAgCQl9Cj4+IEBA IC02MTIsNyArNjE0LDcgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIAkJRFJNX0RFQlVHX0tNUygiSERDUCBBdXRo IGZhaWx1cmUgKCVkKVxuIiwgcmV0KTsKPj4gICAKPj4gICAJCS8qIEVuc3VyaW5nIEhEQ1AgZW5j cnlwdGlvbiBhbmQgc2lnbmFsbGluZyBhcmUgc3RvcHBlZC4gKi8KPj4gLQkJX2ludGVsX2hkY3Bf ZGlzYWJsZShjb25uZWN0b3IpOwo+PiArCQlfaW50ZWxfaGRjcF9kaXNhYmxlKGhkY3ApOwo+PiAg IAl9Cj4+ICAgCj4+ICAgCURSTV9FUlJPUigiSERDUCBhdXRoZW50aWNhdGlvbiBmYWlsZWQgKCVk IHRyaWVzLyVkKVxuIiwgdHJpZXMsIHJldCk7Cj4+IEBAIC02MjEsNDcgKzYyMyw0NSBAQCBzdGF0 aWMgaW50IF9pbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4+ICAgCj4+ICAgc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9lbmFibGVfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCj4+ICAgewo+PiAtCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciA9IGNvbnRhaW5lcl9vZih3b3JrLAo+PiAtCQkJCQkJCSBzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yLAo+PiAtCQkJCQkJCSBoZGNwX2VuYWJsZV93b3JrKTsKPj4gKwlzdHJ1Y3QgaW50ZWxf aGRjcCAqaGRjcCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaW50ZWxfaGRjcCwKPj4gKwkJ CQkJICAgICAgIGhkY3BfZW5hYmxlX3dvcmspOwo+PiAgIAo+PiAtCW11dGV4X2xvY2soJmNvbm5l Y3Rvci0+aGRjcF9tdXRleCk7Cj4+IC0JX2ludGVsX2hkY3BfZW5hYmxlKGNvbm5lY3Rvcik7Cj4+ IC0JbXV0ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmhkY3BfbXV0ZXgpOwo+PiArCW11dGV4X2xvY2so JmhkY3AtPmhkY3BfbXV0ZXgpOwo+PiArCV9pbnRlbF9oZGNwX2VuYWJsZShoZGNwKTsKPj4gKwlt dXRleF91bmxvY2soJmhkY3AtPmhkY3BfbXV0ZXgpOwo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMg dm9pZCBpbnRlbF9oZGNwX2NoZWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAg IHsKPj4gLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBjb250YWluZXJfb2Yo dG9fZGVsYXllZF93b3JrKHdvcmspLAo+PiAtCQkJCQkJCSBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y LAo+PiAtCQkJCQkJCSBoZGNwX2NoZWNrX3dvcmspOwo+PiAtCWlmICghaW50ZWxfaGRjcF9jaGVj a19saW5rKGNvbm5lY3RvcikpCj4+IC0JCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmY29ubmVjdG9y LT5oZGNwX2NoZWNrX3dvcmssCj4+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb250YWlu ZXJfb2YodG9fZGVsYXllZF93b3JrKHdvcmspLAo+PiArCQkJCQkgICAgICAgc3RydWN0IGludGVs X2hkY3AsCj4+ICsJCQkJCSAgICAgICBoZGNwX2NoZWNrX3dvcmspOwo+PiArCWlmICghaW50ZWxf aGRjcF9jaGVja19saW5rKGhkY3ApKQo+PiArCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmhkY3At PmhkY3BfY2hlY2tfd29yaywKPj4gICAJCQkJICAgICAgRFJNX0hEQ1BfQ0hFQ0tfUEVSSU9EX01T KTsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9wcm9wX3dvcmsoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAgIHsKPj4gLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IgPSBjb250YWluZXJfb2Yod29yaywKPj4gLQkJCQkJCQkgc3RydWN0IGludGVs X2Nvbm5lY3RvciwKPj4gLQkJCQkJCQkgaGRjcF9wcm9wX3dvcmspOwo+PiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+PiArCXN0cnVjdCBpbnRlbF9oZGNw ICpoZGNwID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbnRlbF9oZGNwLAo+PiArCQkJCQkg ICAgICAgaGRjcF9wcm9wX3dvcmspOwo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBoZGNw LT5jb25uZWN0b3ItPmJhc2UuZGV2Owo+PiAgIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq c3RhdGU7Cj4+ICAgCj4+ICAgCWRybV9tb2Rlc2V0X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29u bmVjdGlvbl9tdXRleCwgTlVMTCk7Cj4+IC0JbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5oZGNwX211 dGV4KTsKPj4gKwltdXRleF9sb2NrKCZoZGNwLT5oZGNwX211dGV4KTsKPj4gICAKPj4gICAJLyoK Pj4gICAJICogVGhpcyB3b3JrZXIgaXMgb25seSB1c2VkIHRvIGZsaXAgYmV0d2VlbiBFTkFCTEVE L0RFU0lSRUQuIEVpdGhlciBvZgo+PiAgIAkgKiB0aG9zZSB0byBVTkRFU0lSRUQgaXMgaGFuZGxl ZCBieSBjb3JlLiBJZiBoZGNwX3ZhbHVlID09IFVOREVTSVJFRCwKPj4gICAJICogd2UncmUgcnVu bmluZyBqdXN0IGFmdGVyIGhkY3AgaGFzIGJlZW4gZGlzYWJsZWQsIHNvIGp1c3QgZXhpdAo+PiAg IAkgKi8KPj4gLQlpZiAoY29ubmVjdG9yLT5oZGNwX3ZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRf UFJPVEVDVElPTl9VTkRFU0lSRUQpIHsKPj4gLQkJc3RhdGUgPSBjb25uZWN0b3ItPmJhc2Uuc3Rh dGU7Cj4+IC0JCXN0YXRlLT5jb250ZW50X3Byb3RlY3Rpb24gPSBjb25uZWN0b3ItPmhkY3BfdmFs dWU7Cj4+ICsJaWYgKGhkY3AtPmhkY3BfdmFsdWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNU SU9OX1VOREVTSVJFRCkgewo+PiArCQlzdGF0ZSA9IGhkY3AtPmNvbm5lY3Rvci0+YmFzZS5zdGF0 ZTsKPj4gKwkJc3RhdGUtPmNvbnRlbnRfcHJvdGVjdGlvbiA9IGhkY3AtPmhkY3BfdmFsdWU7Cj4+ ICAgCX0KPj4gICAKPj4gLQltdXRleF91bmxvY2soJmNvbm5lY3Rvci0+aGRjcF9tdXRleCk7Cj4+ ICsJbXV0ZXhfdW5sb2NrKCZoZGNwLT5oZGNwX211dGV4KTsKPj4gICAJZHJtX21vZGVzZXRfdW5s b2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwo+PiAgIH0KPj4gICAKPj4g QEAgLTY3Niw0OCArNjc2LDY0IEBAIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+PiAgIAkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3No aW0gKmhkY3Bfc2hpbSkKPj4gICB7Cj4+ICAgCWludCByZXQ7Cj4+ICsJc3RydWN0IGludGVsX2hk Y3AgKmhkY3A7Cj4+ICsKPj4gKwloZGNwID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGludGVsX2hk Y3ApLCBHRlBfS0VSTkVMKTsKPiBZb3UncmUgbGVha2luZyB0aGlzLiBZb3UgcHJvYmFibHkgZG9u J3QgbmVlZCBpdCB0byBiZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQuCmRpZG4ndCB3YW50IHRoZSBt ZW0gc3BhcmVkIGZvciBzdHJ1Y3QgaGRjcCwgaW5jYXNlIG9mIG5vbiBoZGNwIGNhcGFibGUgCmNv bm5lY3RvcnMuCk1heSBiZSBpdHMgb2sgdG8gaGF2ZSBzbWFsbCBzdHJ1Y3QgZm9yIGFsbCBjb25u ZWN0b3JzLiBpIHdpbGwgbW92ZSBpdCAKZnJvbSBkeW5hbWljIGFsbG9jLgo+Cj4+ICsJaWYgKCFo ZGNwKSB7Cj4+ICsJCXJldCA9IC1FTk9NRU07Cj4+ICsJCWdvdG8gZXJyOwo+PiArCX0KPj4gICAK Pj4gICAJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfY29udGVudF9wcm90ZWN0aW9uX3Byb3Bl cnR5KAo+PiAgIAkJCSZjb25uZWN0b3ItPmJhc2UpOwo+PiAgIAlpZiAocmV0KQo+PiAtCQlyZXR1 cm4gcmV0Owo+PiArCQlnb3RvIGVycjsKPj4gKwo+PiArCWhkY3AtPmhkY3Bfc2hpbSA9IGhkY3Bf c2hpbTsKPj4gKwltdXRleF9pbml0KCZoZGNwLT5oZGNwX211dGV4KTsKPj4gKwlJTklUX0RFTEFZ RURfV09SSygmaGRjcC0+aGRjcF9jaGVja193b3JrLCBpbnRlbF9oZGNwX2NoZWNrX3dvcmspOwo+ PiArCUlOSVRfV09SSygmaGRjcC0+aGRjcF9wcm9wX3dvcmssIGludGVsX2hkY3BfcHJvcF93b3Jr KTsKPj4gKwlJTklUX1dPUksoJmhkY3AtPmhkY3BfZW5hYmxlX3dvcmssIGludGVsX2hkY3BfZW5h YmxlX3dvcmspOwo+PiAgIAo+PiAtCWNvbm5lY3Rvci0+aGRjcF9zaGltID0gaGRjcF9zaGltOwo+ PiAtCW11dGV4X2luaXQoJmNvbm5lY3Rvci0+aGRjcF9tdXRleCk7Cj4+IC0JSU5JVF9ERUxBWUVE X1dPUksoJmNvbm5lY3Rvci0+aGRjcF9jaGVja193b3JrLCBpbnRlbF9oZGNwX2NoZWNrX3dvcmsp Owo+PiAtCUlOSVRfV09SSygmY29ubmVjdG9yLT5oZGNwX3Byb3Bfd29yaywgaW50ZWxfaGRjcF9w cm9wX3dvcmspOwo+PiAtCUlOSVRfV09SSygmY29ubmVjdG9yLT5oZGNwX2VuYWJsZV93b3JrLCBp bnRlbF9oZGNwX2VuYWJsZV93b3JrKTsKPj4gKwljb25uZWN0b3ItPmhkY3AgPSBoZGNwOwo+PiAg IAlyZXR1cm4gMDsKPj4gKwo+PiArZXJyOgo+PiArCWtmcmVlKGhkY3ApOwo+PiArCXJldHVybiBy ZXQ7Cj4+ICAgfQo+PiAgIAo+PiAgIGludCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICAgewo+PiAtCWlmICghY29ubmVjdG9yLT5oZGNwX3No aW0pCj4+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb25uZWN0b3ItPmhkY3A7Cj4+ICsK Pj4gKwlpZiAoIWhkY3AgfHwgIWhkY3AtPmhkY3Bfc2hpbSkKPiBJcyBpdCBwb3NzaWJsZSBmb3Ig aGRjcCB0byBiZSAhPSBOVUxMLCBidXQgaGRjcF9zaGltID09IE5VTEw/CkFsb25nIHdpdGggaGRj cDIuMiwgdGhpcyBjb3VsZCBiZSBhIHBvc3NpYmlsaXR5LiBBbnl3YXkgYnkgbW92aW5nIHRvCnN0 YXRpYyBhbGxvY2F0aW9uIGZvciBoZGNwLCBubyBtb3JlIGNoZWNrIGZvciBoZGNwIHB0ciA6KQot LVJhbQo+Cj4+ICAgCQlyZXR1cm4gLUVOT0VOVDsKPj4gICAKPj4gLQltdXRleF9sb2NrKCZjb25u ZWN0b3ItPmhkY3BfbXV0ZXgpOwo+PiAtCXNjaGVkdWxlX3dvcmsoJmNvbm5lY3Rvci0+aGRjcF9l bmFibGVfd29yayk7Cj4+IC0JbXV0ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmhkY3BfbXV0ZXgpOwo+ PiArCW11dGV4X2xvY2soJmhkY3AtPmhkY3BfbXV0ZXgpOwo+PiArCXNjaGVkdWxlX3dvcmsoJmhk Y3AtPmhkY3BfZW5hYmxlX3dvcmspOwo+PiArCW11dGV4X3VubG9jaygmaGRjcC0+aGRjcF9tdXRl eCk7Cj4+ICAgCj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gICAKPj4gICBpbnQgaW50ZWxfaGRj cF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICB7Cj4+ICsJ c3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb25uZWN0b3ItPmhkY3A7Cj4+ICAgCWludCByZXQg PSAwOwo+PiAgIAo+PiAtCWlmICghY29ubmVjdG9yLT5oZGNwX3NoaW0pCj4+ICsJaWYgKCFoZGNw IHx8ICFoZGNwLT5oZGNwX3NoaW0pCj4+ICAgCQlyZXR1cm4gLUVOT0VOVDsKPj4gICAKPj4gLQlt dXRleF9sb2NrKCZjb25uZWN0b3ItPmhkY3BfbXV0ZXgpOwo+PiArCW11dGV4X2xvY2soJmhkY3At PmhkY3BfbXV0ZXgpOwo+PiAgIAo+PiAtCWlmIChjb25uZWN0b3ItPmhkY3BfdmFsdWUgIT0gRFJN X01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkgewo+PiAtCQljb25uZWN0b3ItPmhk Y3BfdmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fVU5ERVNJUkVEOwo+PiAtCQly ZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGNvbm5lY3Rvcik7Cj4+ICsJaWYgKGhkY3AtPmhkY3Bf dmFsdWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkgewo+PiArCQlo ZGNwLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRDsK Pj4gKwkJcmV0ID0gX2ludGVsX2hkY3BfZGlzYWJsZShoZGNwKTsKPj4gICAJfQo+PiAgIAo+PiAt CW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5oZGNwX211dGV4KTsKPj4gLQljYW5jZWxfZGVsYXll ZF93b3JrX3N5bmMoJmNvbm5lY3Rvci0+aGRjcF9jaGVja193b3JrKTsKPj4gKwltdXRleF91bmxv Y2soJmhkY3AtPmhkY3BfbXV0ZXgpOwo+PiArCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaGRj cC0+aGRjcF9jaGVja193b3JrKTsKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+ICAgCj4+IEBA IC03NTUsMTkgKzc3MSwyMCBAQCB2b2lkIGludGVsX2hkY3BfYXRvbWljX2NoZWNrKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAgfQo+PiAgIAo+PiAgIC8qIEltcGxlbWVudHMg UGFydCAzIG9mIHRoZSBIRENQIGF1dGhvcml6YXRpb24gcHJvY2VkdXJlICovCj4+IC1pbnQgaW50 ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4g K2ludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2hkY3AgKmhkY3ApCj4+ICAg ewo+PiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGhkY3AtPmNvbm5lY3Rv cjsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9yLT5i YXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+PiAgIAllbnVtIHBv cnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4+ICAgCWludCByZXQgPSAwOwo+ PiAgIAo+PiAtCWlmICghY29ubmVjdG9yLT5oZGNwX3NoaW0pCj4+ICsJaWYgKCFoZGNwLT5oZGNw X3NoaW0pCj4+ICAgCQlyZXR1cm4gLUVOT0VOVDsKPj4gICAKPj4gLQltdXRleF9sb2NrKCZjb25u ZWN0b3ItPmhkY3BfbXV0ZXgpOwo+PiArCW11dGV4X2xvY2soJmhkY3AtPmhkY3BfbXV0ZXgpOwo+ PiAgIAo+PiAtCWlmIChjb25uZWN0b3ItPmhkY3BfdmFsdWUgPT0gRFJNX01PREVfQ09OVEVOVF9Q Uk9URUNUSU9OX1VOREVTSVJFRCkKPj4gKwlpZiAoaGRjcC0+aGRjcF92YWx1ZSA9PSBEUk1fTU9E RV9DT05URU5UX1BST1RFQ1RJT05fVU5ERVNJUkVEKQo+PiAgIAkJZ290byBvdXQ7Cj4+ICAgCj4+ ICAgCWlmICghKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmIEhEQ1BfU1RBVFVT X0VOQykpIHsKPj4gQEAgLTc3NSwxNyArNzkyLDE3IEBAIGludCBpbnRlbF9oZGNwX2NoZWNrX2xp bmsoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIAkJCSAgY29ubmVjdG9y LT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+PiAgIAkJCSAgSTkxNV9SRUFE KFBPUlRfSERDUF9TVEFUVVMocG9ydCkpKTsKPj4gICAJCXJldCA9IC1FTlhJTzsKPj4gLQkJY29u bmVjdG9yLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7 Cj4+IC0JCXNjaGVkdWxlX3dvcmsoJmNvbm5lY3Rvci0+aGRjcF9wcm9wX3dvcmspOwo+PiArCQlo ZGNwLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4+ ICsJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPmhkY3BfcHJvcF93b3JrKTsKPj4gICAJCWdvdG8gb3V0 Owo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKGNvbm5lY3Rvci0+aGRjcF9zaGltLT5jaGVja19saW5r KGludGVsX2RpZ19wb3J0KSkgewo+PiAtCQlpZiAoY29ubmVjdG9yLT5oZGNwX3ZhbHVlICE9Cj4+ ICsJaWYgKGhkY3AtPmhkY3Bfc2hpbS0+Y2hlY2tfbGluayhpbnRlbF9kaWdfcG9ydCkpIHsKPj4g KwkJaWYgKGhkY3AtPmhkY3BfdmFsdWUgIT0KPj4gICAJCSAgICBEUk1fTU9ERV9DT05URU5UX1BS T1RFQ1RJT05fVU5ERVNJUkVEKSB7Cj4+IC0JCQljb25uZWN0b3ItPmhkY3BfdmFsdWUgPQo+PiAr CQkJaGRjcC0+aGRjcF92YWx1ZSA9Cj4+ICAgCQkJCURSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElP Tl9FTkFCTEVEOwo+PiAtCQkJc2NoZWR1bGVfd29yaygmY29ubmVjdG9yLT5oZGNwX3Byb3Bfd29y ayk7Cj4+ICsJCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5oZGNwX3Byb3Bfd29yayk7Cj4+ICAgCQl9 Cj4+ICAgCQlnb3RvIG91dDsKPj4gICAJfQo+PiBAQCAtNzkzLDIzICs4MTAsMjMgQEAgaW50IGlu dGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ ICAgCURSTV9ERUJVR19LTVMoIlslczolZF0gSERDUCBsaW5rIGZhaWxlZCwgcmV0cnlpbmcgYXV0 aGVudGljYXRpb25cbiIsCj4+ICAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVj dG9yLT5iYXNlLmJhc2UuaWQpOwo+PiAgIAo+PiAtCXJldCA9IF9pbnRlbF9oZGNwX2Rpc2FibGUo Y29ubmVjdG9yKTsKPj4gKwlyZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGhkY3ApOwo+PiAgIAlp ZiAocmV0KSB7Cj4+ICAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBkaXNhYmxlIGhkY3AgKCVkKVxu IiwgcmV0KTsKPj4gLQkJY29ubmVjdG9yLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9Q Uk9URUNUSU9OX0RFU0lSRUQ7Cj4+IC0JCXNjaGVkdWxlX3dvcmsoJmNvbm5lY3Rvci0+aGRjcF9w cm9wX3dvcmspOwo+PiArCQloZGNwLT5oZGNwX3ZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9U RUNUSU9OX0RFU0lSRUQ7Cj4+ICsJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPmhkY3BfcHJvcF93b3Jr KTsKPj4gICAJCWdvdG8gb3V0Owo+PiAgIAl9Cj4+ICAgCj4+IC0JcmV0ID0gX2ludGVsX2hkY3Bf ZW5hYmxlKGNvbm5lY3Rvcik7Cj4+ICsJcmV0ID0gX2ludGVsX2hkY3BfZW5hYmxlKGhkY3ApOwo+ PiAgIAlpZiAocmV0KSB7Cj4+ICAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFibGUgaGRjcCAo JWQpXG4iLCByZXQpOwo+PiAtCQljb25uZWN0b3ItPmhkY3BfdmFsdWUgPSBEUk1fTU9ERV9DT05U RU5UX1BST1RFQ1RJT05fREVTSVJFRDsKPj4gLQkJc2NoZWR1bGVfd29yaygmY29ubmVjdG9yLT5o ZGNwX3Byb3Bfd29yayk7Cj4+ICsJCWhkY3AtPmhkY3BfdmFsdWUgPSBEUk1fTU9ERV9DT05URU5U X1BST1RFQ1RJT05fREVTSVJFRDsKPj4gKwkJc2NoZWR1bGVfd29yaygmaGRjcC0+aGRjcF9wcm9w X3dvcmspOwo+PiAgIAkJZ290byBvdXQ7Cj4+ICAgCX0KPj4gICAKPj4gICBvdXQ6Cj4+IC0JbXV0 ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmhkY3BfbXV0ZXgpOwo+PiArCW11dGV4X3VubG9jaygmaGRj cC0+aGRjcF9tdXRleCk7Cj4+ICAgCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAtLSAKPj4gMi43LjQK Pj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=