From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCHv4 3/3] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Wed, 27 Jul 2016 12:17:26 +0200 Message-ID: <20160727101726.GC31475@phenom.ffwll.local> References: <1460986305-7116-1-git-send-email-durgadoss.r@intel.com> <1460986305-7116-4-git-send-email-durgadoss.r@intel.com> <1462540164.9307.58.camel@gmail.com> <4D68720C2E767A4AA6A8796D42C8EB5909455383@BGSMSX101.gar.corp.intel.com> <1462957351.5672.52.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x234.google.com (mail-wm0-x234.google.com [IPv6:2a00:1450:400c:c09::234]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7484C6E1E6 for ; Wed, 27 Jul 2016 10:17:31 +0000 (UTC) Received: by mail-wm0-x234.google.com with SMTP id q128so206135801wma.1 for ; Wed, 27 Jul 2016 03:17:31 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMjYsIDIwMTYgYXQgMDE6NTE6MjBQTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IEFsc28sIGhvdyBkb2VzIHRoaXMgaW50ZWdyYXRlIHdpdGggZmFzdGJvb3Q/Cj4gCj4g SWYgeW91IHVuY29uZGl0aW9uYWxseSBkbyB0aGUgdXBmcm9udCB0cmFpbmluZyBjb3VudGluZyBv biBhIG1vZGVzZXQKPiB3ZSB3aWxsIG5ldmVyIGJlIGFibGUgdG8gZW5hYmxlIGZhc3Rib290LgoK V2UgbmVlZCB0byBkbyB1cGZyb250IGxpbmsgdHJhaW5pbmcgb24gaG90cGx1ZywgYW55dGhpbmcg ZWxzZSB3b24ndCByZWFsbHkKd29yay4gQW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIChyZSlw cm9iZSBhbGwgdGhhdCBvbiBkcml2ZXIgbG9hZCBhbmQgb24KcmVzdW1lLgoKSSBkaWRuJ3QgbG9v ayBhdCB0aGUgY29kZSB0byBjaGVjayB3aGV0aGVyIHRoYXQncyB0aGUgY2FzZSBhbHJlYWR5IDst KQotRGFuaWVsCgo+IAo+IAo+IAo+IE9uIFdlZCwgTWF5IDExLCAyMDE2IGF0IDI6MDIgQU0sIEFu ZGVyIENvbnNlbHZhbiBEZSBPbGl2ZWlyYQo+IDxjb25zZWx2YW4yQGdtYWlsLmNvbT4gd3JvdGU6 Cj4gPiBPbiBNb24sIDIwMTYtMDUtMDkgYXQgMTA6NDMgKzAwMDAsIFIsIER1cmdhZG9zcyB3cm90 ZToKPiA+PiBIaSBBbmRlciwKPiA+Pgo+ID4+IFRoYW5rcyBmb3IgbG9va2luZyBhdCBpdC4KPiA+ PiBGZXcgcXVlcmllcyBiZWxvdy4uCj4gPj4KPiA+PiA+Cj4gPj4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQo+ID4+ID4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIERlIE9saXZlaXJhIFttYWls dG86Y29uc2VsdmFuMkBnbWFpbC5jb21dCj4gPj4gPiBTZW50OiBGcmlkYXksIE1heSA2LCAyMDE2 IDY6MzkgUE0KPiA+PiA+IFRvOiBSLCBEdXJnYWRvc3MgPGR1cmdhZG9zcy5yQGludGVsLmNvbT47 IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+PiA+IFN1YmplY3Q6IFJlOiBbSW50 ZWwtZ2Z4XSBbUEFUQ0h2NCAzLzNdIGRybS9pOTE1L2RwOiBFbmFibGUgVXBmcm9udCBsaW5rCj4g Pj4gPiB0cmFpbmluZyBmb3IgdHlwZUMgRFAgc3VwcG9ydCBvbiBCWFQKPiA+PiA+Cj4gPj4gPiBP biBNb24sIDIwMTYtMDQtMTggYXQgMTk6MDEgKzA1MzAsIER1cmdhZG9zcyBSIHdyb3RlOgo+ID4+ ID4gPgo+ID4+ID4gPiBUbyBzdXBwb3J0IFVTQiB0eXBlIEMgYWx0ZXJuYXRlIERQIG1vZGUsIHRo ZSBkaXNwbGF5IGRyaXZlciBuZWVkcyB0bwo+ID4+ID4gPiBrbm93IHRoZSBudW1iZXIgb2YgbGFu ZXMgcmVxdWlyZWQgYnkgdGhlIERQIHBhbmVsIGFzIHdlbGwgYXMgbnVtYmVyCj4gPj4gPiA+IG9m IGxhbmVzIHRoYXQgY2FuIGJlIHN1cHBvcnRlZCBieSB0aGUgdHlwZS1DIGNhYmxlLiBTb21ldGlt ZXMsIHRoZQo+ID4+ID4gPiB0eXBlLUMgY2FibGUgbWF5IGxpbWl0IHRoZSBiYW5kd2lkdGggZXZl biBpZiBQYW5lbCBjYW4gc3VwcG9ydAo+ID4+ID4gPiBtb3JlIGxhbmVzLiBUbyBhZGRyZXNzIHRo ZXNlIHNjZW5hcmlvcywgdGhlIGRpc3BsYXkgZHJpdmVyIHdpbGwKPiA+PiA+ID4gc3RhcnQgbGlu ayB0cmFpbmluZyB3aXRoIG1heCBsYW5lcywgYW5kIGlmIHRoYXQgZmFpbHMsIHRoZSBkcml2ZXIK PiA+PiA+ID4gZmFsbHMgYmFjayB0byB4MiBsYW5lczsgYW5kIHJlcGVhdHMgdGhpcyBwcm9jZWR1 cmUgZm9yIGFsbAo+ID4+ID4gPiBiYW5kd2lkdGgvbGFuZSBjb25maWd1cmF0aW9ucy4KPiA+PiA+ ID4KPiA+PiA+ID4gKiBTaW5jZSBsaW5rIHRyYWluaW5nIGlzIGRvbmUgYmVmb3JlIG1vZGVzZXQg b25seSB0aGUgcG9ydAo+ID4+ID4gPiAgIChhbmQgbm90IHBpcGUvcGxhbmVzKSBhbmQgaXRzIGFz c29jaWF0ZWQgUExMcyBhcmUgZW5hYmxlZC4KPiA+PiA+ID4gKiBPbiBEUCBob3RwbHVnOiBEaXJl Y3RseSBzdGFydCBsaW5rIHRyYWluaW5nIG9uIHRoZSBjcnRjCj4gPj4gPiA+ICAgYXNzb2NpYXRl ZCB3aXRoIHRoZSBEUCBlbmNvZGVyLgo+ID4+ID4gPiAqIE9uIENvbm5lY3RlZCBib290IHNjZW5h cmlvczogV2hlbiBib290ZWQgd2l0aCBhbiBMRlAgYW5kIGEgRFAsCj4gPj4gPiA+ICAgdHlwaWNh bGx5LCBCSU9TIGJyaW5ncyB1cCBEUC4gSW4gdGhlc2UgY2FzZXMsIHdlIGRpc2FibGUgdGhlCj4g Pj4gPiA+ICAgY3J0YyBhbmQgdGhlbiBkbyB1cGZyb250IGxpbmsgdHJhaW5pbmc7IGFuZCBsZXQg dGhlIHN1YnNlcXVlbnQKPiA+PiA+ID4gICBtb2Rlc2V0IHJlLWVuYWJsZSB0aGUgY3J0Yy4KPiA+ PiA+ID4gKiBBbGwgbG9jYWwgY2hhbmdlcyBtYWRlIGZvciB1cGZyb250IGxpbmsgdHJhaW5pbmcg YXJlIHJlc2V0Cj4gPj4gPiA+ICAgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIG9uY2UgaXQgaXMg ZG9uZTsgc28gdGhhdCB0aGUKPiA+PiA+ID4gICBzdWJzZXF1ZW50IG1vZGVzZXQgaXMgbm90IGF3 YXJlIG9mIHRoZXNlIGNoYW5nZXMuCj4gPj4gPiA+Cj4gPj4gPiA+IENoYW5nZXMgc2luY2UgdjM6 Cj4gPj4gPiA+ICogRml4ZWQgYSByZXR1cm4gdmFsdWUgb24gQlhUIGNoZWNrCj4gPj4gPiA+ICog UmV3b3JrZWQgb24gdG9wIG9mIGJ4dF9kZGlfcGxsX3NlbGVjdCBzcGxpdCBmcm9tIEFuZGVyCj4g Pj4gPiA+ICogUmVuYW1lZCBmcm9tIGRkaV91cGZyb250IHRvIGJ4dF91cGZyb250IHNpbmNlIHRo ZQo+ID4+ID4gPiAgIHVwZnJvbnQgbG9naWMgaW5jbHVkZXMgQlhUIHNwZWNpZmljIGZ1bmN0aW9u cyBmb3Igbm93Lgo+ID4+ID4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4+ID4gPiAqIFJlYmFzZWQg b24gdG9wIG9mIGxhdGVzdCBkcGxsX21nci5jIGNvZGUgYW5kCj4gPj4gPiA+ICAgbGF0ZXN0IEhQ RCByZWxhdGVkIGNsZWFuIHVwcy4KPiA+PiA+ID4gKiBDb3JyZWN0ZWQgcmV0dXJuIHZhbHVlcyBm cm9tIHVwZnJvbnQgKEFuZGVyKQo+ID4+ID4gPiAqIENvcnJlY3RlZCBhdG9taWMgbG9ja2luZyBm b3IgdXBmcm9udCBpbiBpbnRlbF9kcC5jIChWaWxsZSkKPiA+PiA+ID4gQ2hhbmdlcyBzaW5jZSB2 MToKPiA+PiA+ID4gKiAgYWxsIHBsbCByZWxhdGVkIGZ1bmN0aW9ucyBpbnNpZGUgZGRpLmMKPiA+ PiA+ID4KPiA+PiA+ID4gU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGlu dGVsLmNvbT4KPiA+PiA+ID4gLS0tCj4gPj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYyB8ICA3MyArKysrKysrKysrKysrKysrCj4gPj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jICB8IDE4MAo+ID4+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KPiA+PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IHwgICA1ICsrCj4gPj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDI1NiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQo+ID4+ID4gPgo+ID4+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYwo+ID4+ID4gPiBpbmRleCA5NjIzNGM1Li5mN2ZhM2RiIDEwMDY0NAo+ID4+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+ID4gPiBAQCAtMjI2OCw2ICsyMjY4LDc5 IEBAIGludGVsX2RkaV9pbml0X2hkbWlfY29ubmVjdG9yKHN0cnVjdAo+ID4+ID4gaW50ZWxfZGln aXRhbF9wb3J0Cj4gPj4gPiA+Cj4gPj4gPiA+ICppbnRlbF9kaWdfcG9ydCkKPiA+PiA+ID4gICBy ZXR1cm4gY29ubmVjdG9yOwo+ID4+ID4gPiAgfQo+ID4+ID4gPgo+ID4+ID4gPiAraW50IGludGVs X2J4dF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+PiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ PiA+ID4gK3sKPiA+PiA+ID4gKyBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBp bnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ID4+ID4gPiArIHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwo+ID4+ID4gPiArIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4+ ID4gPiArIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ID4+ID4gPiArIHN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbF9jb25maWcgdG1wX3BsbF9jb25maWc7Cj4gPj4gPiA+ICsgc3RydWN0 IGJ4dF9jbGtfZGl2IGNsa19kaXYgPSB7MH07Cj4gPj4gPiA+ICsgc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gPj4gPiA+ICsg ZW51bSBpbnRlbF9kcGxsX2lkIGRwbGxfaWQgPSAoZW51bSBpbnRlbF9kcGxsX2lkKWRpZ19wb3J0 LT5wb3J0Owo+ID4+ID4gPiArIHVpbnQ4X3QgbGlua19idywgbGFuZV9jb3VudDsKPiA+PiA+ID4g Kwo+ID4+ID4gPiArIGlmIChXQVJOX09OKCFjcnRjKSkKPiA+PiA+ID4gKyAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+ID4+ID4gPiArCj4gPj4gPiA+ICsgLyogSW5pdGlhbGl6ZSB3aXRoIE1heCBM aW5rIHJhdGUgJiBsYW5lIGNvdW50IHN1cHBvcnRlZCBieSBwYW5lbAo+ID4+ID4gPiAqLwo+ID4+ ID4gPiArIGxpbmtfYncgPSAgaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xJTktfUkFURV07Cj4gPj4g PiA+ICsgbGFuZV9jb3VudCA9IGRybV9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7 Cj4gPj4gPiBXaGF0IGlmIHRoZSBwYW5lbCBzdXBwb3J0cyBIQlIzPyBXZSBzaG91bGQgdXNlIHRo ZSBtYXhpbXVtIGNvbW1vbiByYXRlCj4gPj4gT2ssIHRvZGF5IHRoYXQgd2lsbCBhZGQgb25lIG1v cmUgaXRlcmF0aW9uIG9mIExpbmsgdHJhaW5pbmcgYmVmb3JlIGdvaW5nCj4gPj4gZG93biB0byBh IHN1cHBvcnRlZCByYXRlLgo+ID4+Cj4gPj4gPgo+ID4+ID4gYmV0d2VlbiBzb3VyY2UgYW5kIHNp bmsuIEFuZCBpdCB3b3VsZCBiZSBuaWNlIGlmIHRob3NlIGRldGFpbHMgd2hlcmUgaW4KPiA+PiA+ IGludGVsX2RwLmMuCj4gPj4gPiBJZGVhbGx5LCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgcGFydCB3 b3VsZCB0YWtlIGxpbmsgcmF0ZSBhbmQgbGFuZSBjb3VudCBhcwo+ID4+ID4gYXJndW1lbnRzIGFu ZCBqdXN0IGRvIHRoZSBwbGwvZW5jb2RlciBlbmFibGluZy9kaXNhYmxpbmcuCj4gPj4gTWF5IGJl IHdpdGggdGhlIG5ldyB7bGlua19idy9sYW5lX2NvdW50fV91cGZyb250IHZhcmlhYmxlcyBpbiBp bnRlbF9kcAo+ID4+IHN0cnVjdHVyZSwKPiA+PiB3ZSBjb3VsZCBkbyB0aGlzIGVhc2lseS4gV2ls bCB0cnkgdGhpcyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIGhvdyBpdCBjb21lcyB1cC4KPiA+Pgo+ ID4+ID4KPiA+PiA+Cj4gPj4gPiA+Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKyBtdXRleF9sb2NrKCZk ZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+PiA+ID4gKyAvKgo+ID4+ID4gPiArICAqIEZJWE1FOiBX b3JrcyBvbmx5IGZvciBCWFQuCj4gPj4gPiA+ICsgICogU2VsZWN0IHRoZSByZXF1aXJlZCBQTEwu IFRoaXMgd29ya3MgZm9yIHBsYXRmb3JtcyB3aGVyZQo+ID4+ID4gPiArICAqIHRoZXJlIGlzIG5v IHNoYXJlZCBEUExMLgo+ID4+ID4gPiArICAqLwo+ID4+ID4gPiArIHBsbCA9ICZkZXZfcHJpdi0+ c2hhcmVkX2RwbGxzW2RwbGxfaWRdOwo+ID4+ID4gPiArIGlmIChXQVJOX09OKHBsbC0+YWN0aXZl X21hc2spKSB7Cj4gPj4gPiA+ICsgICAgICAgICBEUk1fRVJST1IoIlNoYXJlZCBEUExMIGFscmVh ZHkgaW4gdXNlLgo+ID4+ID4gYWN0aXZlX21hc2s6JXhcbiIsCj4gPj4gPiA+Cj4gPj4gPiA+IHBs bC0+YWN0aXZlX21hc2spOwo+ID4+ID4gPiArICAgICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHBsbF9sb2NrKTsKPiA+PiA+ID4gKyAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ID4g PiArIH0KPiA+PiA+ID4gKwo+ID4+ID4gPiArIHRtcF9wbGxfY29uZmlnID0gcGxsLT5jb25maWc7 Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKyBEUk1fREVCVUdfS01TKCJVc2luZyBwaXBlICVjIHdpdGgg cGxsICVzXG4iLAo+ID4+ID4gPiArICAgICAgICAgICAgICAgICBwaXBlX25hbWUoY3J0Yy0+cGlw ZSksIHBsbC0+bmFtZSk7Cj4gPj4gPiA+ICsgZG8gewo+ID4+ID4gPiArICAgICAgICAgY3J0Yy0+ Y29uZmlnLT5wb3J0X2Nsb2NrID0KPiA+PiA+ID4gZHJtX2RwX2J3X2NvZGVfdG9fbGlua19yYXRl KGxpbmtfYncpOwo+ID4+ID4gPiArICAgICAgICAgY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID0g bGFuZV9jb3VudDsKPiA+PiA+ID4gKwo+ID4+ID4gPiArICAgICAgICAgYnh0X2RkaV9kcF9wbGxf ZGl2aWRlcnMoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4+ID4gPiAmY2xrX2Rpdik7Cj4g Pj4gPiA+ICsgICAgICAgICBpZiAoIWJ4dF9kZGlfc2V0X2RwbGxfaHdfc3RhdGUoY3J0Yy0+Y29u ZmlnLT5wb3J0X2Nsb2NrLAo+ID4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmNsa19kaXYsICZwbGwtPmNvbmZpZy5od19zdGF0ZSkpCj4gPj4gPiA+IHsKPiA+PiA+ID4g KyAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJDb3VsZCBub3Qgc2V0dXAgRFBMTFxuIik7Cj4g Pj4gPiA+ICsgICAgICAgICAgICAgICAgIGdvdG8gZXhpdF9wbGw7Cj4gPj4gPiA+ICsgICAgICAg ICB9Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKyAgICAgICAgIC8qIEVuYWJsZSBQTEwgZm9sbG93ZWQg YnkgcG9ydCAqLwo+ID4+ID4gPiArICAgICAgICAgcGxsLT5mdW5jcy5lbmFibGUoZGV2X3ByaXYs IHBsbCk7Cj4gPj4gPiA+ICsgICAgICAgICBlbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29kZXIpOwo+ ID4+ID4gPiArCj4gPj4gPiA+ICsgICAgICAgICAvKiBDaGVjayBpZiBsaW5rIHRyYWluaW5nIHBh c3NlZDsgaWYgc28gdXBkYXRlIERQQ0QgKi8KPiA+PiA+ID4gKyAgICAgICAgIGlmIChpbnRlbF9k cC0+dHJhaW5fc2V0X3ZhbGlkKQo+ID4+ID4gPiArICAgICAgICAgICAgICAgICBpbnRlbF9kcF91 cGRhdGVfZHBjZF9wYXJhbXMoaW50ZWxfZHApOwo+ID4+ID4gPiArCj4gPj4gPiA+ICsgICAgICAg ICAvKiBEaXNhYmxlIHBvcnQgZm9sbG93ZWQgYnkgUExMIGZvciBuZXh0IHJldHJ5L2NsZWFuIHVw Cj4gPj4gPiA+ICovCj4gPj4gPiA+ICsgICAgICAgICBlbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5j b2Rlcik7Cj4gPj4gPiA+ICsgICAgICAgICBwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBs bCk7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKyB9IHdoaWxlICghaW50ZWxfZHAtPnRyYWluX3NldF92 YWxpZCAmJgo+ID4+ID4gPiArICAgICAgICAgaW50ZWxfZHBfZ2V0X2xpbmtfcmV0cnlfcGFyYW1z KGludGVsX2RwLCAmbGFuZV9jb3VudCwKPiA+PiA+ID4gJmxpbmtfYncpKTsKPiA+PiA+ID4gKwo+ ID4+ID4gPiArIERSTV9ERUJVR19LTVMoIlVwZnJvbnQgbGluayB0cmFpbiAlczogbGFuZXM6JWQg Ync6JWRcbiIsCj4gPj4gPiA+ICsgaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCA/ICJQYXNzZWQi IDogIkZhaWxlZCIsIGxhbmVfY291bnQsCj4gPj4gPiA+IGxpbmtfYncpOwo+ID4+ID4gPiArCj4g Pj4gPiA+ICtleGl0X3BsbDoKPiA+PiA+ID4gKyBwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmln Owo+ID4+ID4gPiArIG11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7Cj4gPj4gPiA+ ICsKPiA+PiA+ID4gKyByZXR1cm4gaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCA/IDAgOiAtMTsK PiA+PiA+ID4gK30KPiA+PiA+ID4gKwo+ID4+ID4gPiAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKPiA+PiA+ID4gIHsKPiA+PiA+ID4g ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ID4+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPj4gPiA+Cj4gPj4gPiA+IGlu ZGV4IDYxZWUyMjYuLjU3ZDcxNTkgMTAwNjQ0Cj4gPj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiA+PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ID4+ID4gPiBAQCAtMTU5NSw2ICsxNTk1LDQxIEBAIHZvaWQgaW50ZWxfZHBfc2V0 X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcAo+ID4+ID4gPiAqaW50ZWxfZHAsCj4gPj4gPiA+ ICAgaW50ZWxfZHAtPmxhbmVfY291bnQgPSBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudDsKPiA+PiA+ ID4gIH0KPiA+PiA+ID4KPiA+PiA+ID4gK3ZvaWQgaW50ZWxfZHBfdXBkYXRlX2RwY2RfcGFyYW1z KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPj4gPiA+ICt7Cj4gPj4gPiA+ICsgaW50ZWxf ZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdICY9Cj4gPj4gPiB+RFBfTUFYX0xBTkVfQ09VTlRf TUFTSzsKPiA+PiA+ID4KPiA+PiA+ID4gKyBpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VO VF0gfD0KPiA+PiA+ID4gKyAgICAgICAgICAgICAgICAgaW50ZWxfZHAtPmxhbmVfY291bnQgJgo+ ID4+ID4gRFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKPiA+PiA+ID4KPiA+PiA+ID4gKwo+ID4+ID4g PiArIGludGVsX2RwLT5kcGNkW0RQX01BWF9MSU5LX1JBVEVdID0KPiA+PiA+ID4gKyAgICAgICAg ICAgICAgICAgZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKGludGVsX2RwLQo+ID4+ID4gPiBs aW5rX3JhdGUpOwo+ID4+ID4gSSB0aGluayBJIG1lbnRpb25lZCB0aGlzIGJlZm9yZS4gSSBkb24n dCB0aGluayB3ZSBzaG91bGQgdXBkYXRlIHRoZSBkcGNkCj4gPj4gPiBmaWVsZHMKPiA+PiA+IGRp cmVjdGx5LiBJbnN0ZWFkLCB0aGVyZSBzaG91bGQgYmUgYSBmaWVsZCBmb3IgdGhlIG1heCByYXRl IGFuZCBsYW5lIGNvdW50Cj4gPj4gPiBhY2hpZXZlZCB0aHJvdWdoIHVwZnJvbnQgbGluayB0cmFp bmluZyBpbiBzdHJ1Y3QgaW50ZWxfZHAgYW5kCj4gPj4gPiBpbnRlbF9kcF9tYXhfbGlua19idygp IGFuZCBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudCgpIHNob3VsZCB0YWtlIHRoYXQKPiA+PiA+IGlu dG8KPiA+PiA+IGFjY291bnQuCj4gPj4gSSB0aG91Z2h0IHdlIGFncmVlZCBmb3IgaGF2aW5nIHRo YXQgY2hhbmdlIGFzIGEgbGF0ZXIgaW1wbGVtZW50YXRpb24uCj4gPj4gQW55d2F5LCBpdCdzIG5v dCBhIGJpZyBjaGFuZ2U7IFNvIEkgd2lsbCBkbyBhcyBwYXJ0IG9mIG5leHQgcmV2aXNpb24sCj4g Pj4gcHJvYmFibHkgYXMgYSBzZXBhcmF0ZSBwYXRjaC4KPiA+Pgo+ID4+ID4KPiA+PiA+Cj4gPj4g PiA+Cj4gPj4gPiA+ICt9Cj4gPj4gPiA+ICsKPiA+PiA+ID4gK2Jvb2wgaW50ZWxfZHBfZ2V0X2xp bmtfcmV0cnlfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPj4gPiA+ICsgICAg ICAgICAgICAgICAgIHVpbnQ4X3QgKmxhbmVfY291bnQsIHVpbnQ4X3QgKmxpbmtfYncpCj4gPj4g PiA+ICt7Cj4gPj4gPiA+ICsgLyoKPiA+PiA+ID4gKyAgKiBBcyBwZXIgRFAxLjMgU3BlYywgcmV0 cnkgYWxsIGxpbmsgcmF0ZXMgZm9yIGEgcGFydGljdWxhcgo+ID4+ID4gPiArICAqIGxhbmUgY291 bnQgdmFsdWUsIGJlZm9yZSByZWR1Y2luZyBudW1iZXIgb2YgbGFuZXMuCj4gPj4gPiA+ICsgICov Cj4gPj4gPiA+ICsgaWYgKCpsaW5rX2J3ID09IERQX0xJTktfQldfNV80KSB7Cj4gPj4gPiA+ICsg ICAgICAgICAqbGlua19idyA9IERQX0xJTktfQldfMl83Owo+ID4+ID4gPiArIH0gZWxzZSBpZiAo KmxpbmtfYncgPT0gRFBfTElOS19CV18yXzcpIHsKPiA+PiA+ID4gKyAgICAgICAgICpsaW5rX2J3 ID0gRFBfTElOS19CV18xXzYyOwo+ID4+ID4gPiArIH0gZWxzZSBpZiAoKmxhbmVfY291bnQgPT0g NCkgewo+ID4+ID4gPiArICAgICAgICAgKmxhbmVfY291bnQgPSAyOwo+ID4+ID4gPiArICAgICAg ICAgKmxpbmtfYncgPSBpbnRlbF9kcF9tYXhfbGlua19idyhpbnRlbF9kcCk7Cj4gPj4gPiA+ICsg fSBlbHNlIGlmICgqbGFuZV9jb3VudCA9PSAyKSB7Cj4gPj4gPiA+ICsgICAgICAgICAqbGFuZV9j b3VudCA9IDE7Cj4gPj4gPiA+ICsgICAgICAgICAqbGlua19idyA9IGludGVsX2RwX21heF9saW5r X2J3KGludGVsX2RwKTsKPiA+PiA+ID4gKyB9IGVsc2Ugewo+ID4+ID4gPiArICAgICAgICAgLyog VHJpZWQgYWxsIGNvbWJpbmF0aW9ucywgc28gZXhpdCAqLwo+ID4+ID4gPiArICAgICAgICAgcmV0 dXJuIGZhbHNlOwo+ID4+ID4gPiArIH0KPiA+PiA+ID4gKwo+ID4+ID4gPiArIHJldHVybiB0cnVl Owo+ID4+ID4gPiArfQo+ID4+ID4gPiArCj4gPj4gPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9kcF9w cmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4+ID4gPiAgewo+ID4+ID4g PiAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiA+PiA+ID4g QEAgLTQ1NDgsNiArNDU4MywxMzUgQEAgaW50ZWxfZHBfdW5zZXRfZWRpZChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+ID4+ID4gPiAgIGludGVsX2RwLT5oYXNfYXVkaW8gPSBmYWxzZTsKPiA+ PiA+ID4gIH0KPiA+PiA+ID4KPiA+PiA+ID4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqaW50ZWxfZHBfdXBmcm9udF9nZXRfY3J0Y19zdGF0ZSgKPiA+PiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+PiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiA+ PiA+ID4gK3sKPiA+PiA+ID4gKyBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5k ZXY7Cj4gPj4gPiA+ICsgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4+ID4gPiAr IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4+ID4gPiArCj4gPj4gPiA+ ICsgc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4gPj4gPiA+ICsgaWYgKCFz dGF0ZSkKPiA+PiA+ID4gKyAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4+ID4g PiArCj4gPj4gPiA+ICsgc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ID4+ID4gPiArCj4gPj4g PiA+ICsgY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0 Yyk7Cj4gPj4gPiA+ICsgaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ID4+ID4gPiArICAgICAg ICAgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiA+PiA+ID4gKyAgICAgICAgIHN0YXRl ID0gTlVMTDsKPiA+PiA+ID4gKyB9Cj4gPj4gPiBBbGwgdGhpcyBmdW5jdGlvbiBkb2VzIGlzIGNh bGwgaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKCkuIFNpbmNlIHRoZQo+ID4+ID4gY2FsbGVy Cj4gPj4gPiBhbHNvIGhhdmUgdG8gZGVhbCB3aXRoIGVycm9yIGhhbmRsaW5nLCBJIGRvbid0IHNl ZSB3aGF0IGl0IGFkZHMgb24gdG9wIG9mCj4gPj4gPiB0aGF0Lgo+ID4+ID4gVGhlIGNvZGUgaXMg YWN0dWFsbHkgc2ltcGxlciBpZiBtZXJnZWQgd2l0aCB0aGUgZnVuY3Rpb24gYmVsb3cuCj4gPj4g VGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgZnJvbSB0d28gcGxhY2VzLiBPbmUgaW4g dGhlIGNvbW1pdCgpIGJlbG93LAo+ID4+IGFuZCB0aGUgb3RoZXIgaW4gdGhlIHVwZnJvbnRfbGlu a190cmFpbigpIGl0c2VsZiwgd2hlbiB0aGUgY3J0YyBpcyBub3QKPiA+PiBlbmFibGVkIGFscmVh ZHkuCj4gPj4KPiA+PiA+Cj4gPj4gPgo+ID4+ID4gPgo+ID4+ID4gPiArCj4gPj4gPiA+ICsgcmV0 dXJuIGNydGNfc3RhdGU7Cj4gPj4gPiA+ICt9Cj4gPj4gPiA+ICsKPiA+PiA+ID4gK3N0YXRpYyBp bnQgaW50ZWxfZHBfdXBmcm9udF9jb21taXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4ICpjdHgpCj4gPj4gPiBUaGlzIGZ1bmN0aW9uIGNvdWxkIHVzZSBhIGJldHRlciBuYW1lLiBT b21ldGhpbmcgdGhhdCBzdWdnZXN0cyB0aGUgY3J0YyBpcwo+ID4+ID4gYmVpbmcgZGlzYWJsZWQu IE1heWJlIGRpc2FibGVfY3J0Y19mb3JfdXBmcm9udCgpID8gSXQgZG9lbnMndCByZWFsbHkgZGVw ZW5kcwo+ID4+ID4gb24KPiA+PiBTdXJlLCBiZXR0ZXIgbmFtZSBtYWtlcyBzZW5zZS4uCj4gPj4K PiA+PiA+Cj4gPj4gPiBhbnl0aGluZyBEUCBzcGVjaWZpYywgc28gbWF5YmUgaXQgd291bGQgbWFr ZSBzZW5zZSB0byBtb3ZlIGl0IHRvCj4gPj4gPiBpbnRlbF9kaXNwbGF5LmMgIG9yIGludGVsX2F0 b21pYy5jLiBUaGVuIHdlIGNvdWxkIGNhbGwgaXQKPiA+PiA+IGludGVsX2NydGNfYXRvbWljX2Rp c2FibGVfbG9ja2VkKCkuCj4gPj4gPiBUaGUgImxvY2tlZCIgcGFydCBzaW5jZSB0aGlzIGFzc3Vt ZXMgdGhlIGN0eCBhbHJlYWR5IGhhdmUgY3J0Yy0+bXV0ZXggbG9ja2VkCj4gPj4gPiBzbwo+ID4+ ID4gdGhhdCB0aGVyZSdzIG5vIHJpc2sgb2YgLUVERUFETEsuIEFsdGhvdWdoIGl0IGNhbiBqdXN0 IHBhc3MgdGhlIC1FREVBRExLCj4gPj4gPiBlcnJvciB0bwo+ID4+ID4gdGhlIGNhbGxlciwgc28g anVzdCBpbnRlbF9jcnRjX2F0b21pY19kaXNhYmxlKCkgPwo+ID4+IFN0aWxsIHRoaXMgd291bGQg bmVlZCB0byBjYWxsIHRoZSBhYm92ZSBnZXRfY3J0Y19zdGF0ZSguLikgZnVuY3Rpb24uCj4gPj4g U28sIEkgd2lsbCByZS1uYW1lIGFuZCBpZiBpdCBhbGwgbG9va3MgT2ssIHdpbGwgbW92ZSBpdCB0 byBhdG9taWMuYwo+ID4+IE90aGVyd2lzZSwgd2lsbCBrZWVwIGl0IGhlcmUuLgo+ID4+Cj4gPj4g Pgo+ID4+ID4KPiA+PiA+Cj4gPj4gPgo+ID4+ID4gPgo+ID4+ID4gPiArewo+ID4+ID4gPiArIGlu dCByZXQ7Cj4gPj4gPiA+ICsgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4g Pj4gPiA+ICsgZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ID4+ID4gPiArCj4gPj4gPiA+ ICsgY3J0Y19zdGF0ZSA9IGludGVsX2RwX3VwZnJvbnRfZ2V0X2NydGNfc3RhdGUoY3J0YywgY3R4 KTsKPiA+PiA+ID4gKyBpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+ID4+ID4gPiArICAgICAgICAg cmV0dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKyBEUk1fREVC VUdfS01TKCJEaXNhYmxpbmcgY3J0YyAlYyBmb3IgdXBmcm9udCBsaW5rIHRyYWluXG4iLAo+ID4+ ID4gPiBwaXBlX25hbWUocGlwZSkpOwo+ID4+ID4gPiArCj4gPj4gPiA+ICsgY3J0Y19zdGF0ZS0+ YmFzZS5hY3RpdmUgPSBmYWxzZTsKPiA+PiA+ID4gKyByZXQgPSBkcm1fYXRvbWljX2NvbW1pdChj cnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiA+PiA+ID4gKyBpZiAocmV0KSB7Cj4gPj4gPiA+ICsg ICAgICAgICBkcm1fYXRvbWljX3N0YXRlX2ZyZWUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4g Pj4gPiA+ICsgICAgICAgICBjcnRjX3N0YXRlLT5iYXNlLnN0YXRlID0gTlVMTDsKPiA+PiA+IFRo ZSBmdW5jdGlvbiBkcm1fYXRvbWljX3N0YXRlX2ZyZWUoKSBmcmVlcyB0aGUgY3J0Y19zdGF0ZSwg c28gdGhpcyBpcyBhIHVzZQo+ID4+ID4gYWZ0ZXIgZnJlZS4KPiA+PiBXaWxsIGZpeCB0aGlzLi4K PiA+Pgo+ID4+ID4KPiA+PiA+Cj4gPj4gPiA+Cj4gPj4gPiA+ICsgfQo+ID4+ID4gPiArIHJldHVy biByZXQ7Cj4gPj4gPiA+ICt9Cj4gPj4gPiA+ICsKPiA+PiA+ID4gK3N0YXRpYyBpbnQgaW50ZWxf ZHBfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4g Pj4gPiA+ICt7Cj4gPj4gPiA+ICsgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGludGVsX2F0 dGFjaGVkX2RwKGNvbm5lY3Rvcik7Cj4gPj4gPiBZb3UgY291bGQganVzdCBwYXNzIGludGVsX2Rw IGRpcmVjdGx5LiBUaGUgb25seSB1c2Ugb2YgY29ubmVjdG9yIGlzIHdoZW4KPiA+PiA+IGNvbm5l Y3Rvci0+c3RhdGUtPmNydGMgaXMgaW5zcGVjdGVkLiBCdXQgdGhhdCBzaG91bGQgaGF2ZSB0aGUg c2FtZSB2YWx1ZSBhcwo+ID4+ID4gaW50ZWxfZHAtPmJhc2UuYmFzZS5jcnRjCj4gPj4gT2ssIHdp bGwgY2hhbmdlLgo+ID4+Cj4gPj4gPgo+ID4+ID4KPiA+PiA+ID4KPiA+PiA+ID4gKyBzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9Cj4gPj4gPiA+IGRwX3RvX2RpZ19w b3J0KGludGVsX2RwKTsKPiA+PiA+ID4gKyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiA+PiA+ID4gKyBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXY7Cj4gPj4gPiA+ICsgc3RydWN0IGRybV9t b2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7Cj4gPj4gPiA+ICsgc3RydWN0 IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiA+PiA+ID4gKyBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgKnRtcF9jcnRjX2NvbmZpZzsKPiA+PiA+ID4gKyBzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiA+PiA+ID4gKyBzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PSBOVUxMOwo+ID4+ID4gPiArIGJvb2wgY3J0Y19lbmFibGVkID0gZmFsc2U7Cj4gPj4gPiA+ICsg aW50IHJldCwgc3RhdHVzID0gMDsKPiA+PiA+ID4gKwo+ID4+ID4gPiArIGlmICghSVNfQlJPWFRP TihkZXYpKQo+ID4+ID4gPiArICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gPiA+ICsKPiA+PiA+ID4g KyBkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPj4gPiA+ICtyZXRyeToKPiA+ PiA+ID4gKyByZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjb25maWctPmNvbm5lY3Rpb25fbXV0ZXgs ICZjdHgpOwo+ID4+ID4gPiArIGlmIChyZXQpCj4gPj4gPiA+ICsgICAgICAgICBnb3RvIGV4aXRf ZmFpbDsKPiA+PiA+ID4gKwo+ID4+ID4gPiArIGlmIChjb25uZWN0b3ItPnN0YXRlLT5jcnRjKSB7 Cj4gPj4gPiA+ICsgICAgICAgICBjcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPiA+PiA+ ID4gKwo+ID4+ID4gPiArICAgICAgICAgcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0 ZXgsICZjdHgpOwo+ID4+ID4gPiArICAgICAgICAgaWYgKHJldCkKPiA+PiA+ID4gKyAgICAgICAg ICAgICAgICAgZ290byBleGl0X2ZhaWw7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKyAgICAgICAgIGNy dGNfZW5hYmxlZCA9IHRydWU7Cj4gPj4gPiA+ICsgfSBlbHNlIHsKPiA+PiA+ID4gKyAgICAgICAg IGNydGMgPSBpbnRlbF9nZXRfdW51c2VkX2NydGMoJmludGVsX2VuY29kZXItPmJhc2UsICZjdHgp Owo+ID4+ID4gPiArICAgICAgICAgaWYgKElTX0VSUl9PUl9OVUxMKGNydGMpKSB7Cj4gPj4gPiA+ ICsgICAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlJfT1JfWkVSTyhjcnRjKTsKPiA+PiA+ID4g KyAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiTm8gY3J0YyBhdmFpbGFibGUgZm9yIHVw ZnJvbnQgbGluawo+ID4+ID4gPiB0cmFpbjolZFxuIiwgcmV0KTsKPiA+PiA+ID4gKyAgICAgICAg ICAgICAgICAgZ290byBleGl0X2ZhaWw7Cj4gPj4gPiA+ICsgICAgICAgICB9Cj4gPj4gPiA+ICsg ICAgICAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgPSBjcnRjOwo+ID4+ID4gPiArIH0KPiA+ PiA+IElNTywgdGhlIGZvbGxvd2luZyB3b3VsZCBiZSBhIGJpdCBtb3JlIHJlYWRhYmxlLgo+ID4+ ID4KPiA+PiA+ICAgICBpZiAoaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjKQo+ID4+ID4gICAgICAg ICAgICAgY3J0YyA9IGludGVsX2VuY29kZXItPmJhc2UuY3J0YzsKPiA+PiA+ICAgICBlbHNlCj4g Pj4gPiAgICAgICAgICAgICBjcnRjID0gaW50ZWxfZ2V0X3VudXNlZF9jcnRjKCZpbnRlbF9lbmNv ZGVyLT5iYXNlLCAmY3R4KTsKPiA+PiA+Cj4gPj4gPiAgICAgaWYgKElTX0VSUihjcnRjKSkgewo+ ID4+ID4gICAgICAgICAgICAgLi4uCj4gPj4gPiAgICAgfQo+ID4+ID4KPiA+PiA+ICAgICByZXQg PSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgJmN0eCk7Cj4gPj4gPiAgICAgaWYgKHJl dCkKPiA+PiA+ICAgICAgICAgICAgIGdvdG8gZXhpdF9mYWlsOwo+ID4+ID4KPiA+PiA+ICAgICBj cnRjX2VuYWJsZWQgPSBjcnRjLT5jb25maWctPmFjdGl2ZTsKPiA+PiA+Cj4gPj4gT2ssIG1ha2Vz IHNlbnNlLiBXaWxsIHJlLW9yZGVyIHRoaXMgd2F5Lgo+ID4+Cj4gPj4gPgo+ID4+ID4gPgo+ID4+ ID4gPiArCj4gPj4gPiA+ICsgaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPj4g PiA+ICsgRFJNX0RFQlVHX0tNUygiVXNpbmcgcGlwZSAlYyBmb3IgdXBmcm9udCBsaW5rIHRyYWlu aW5nXG4iLAo+ID4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZV9u YW1lKGludGVsX2NydGMtPnBpcGUpKTsKPiA+PiA+ID4gKwo+ID4+ID4gPiArIHJldCA9IGRybV9t b2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCAmY3R4KTsKPiA+PiA+ID4gKyBpZiAo cmV0KQo+ID4+ID4gPiArICAgICAgICAgZ290byBleGl0X2ZhaWw7Cj4gPj4gPiA+ICsKPiA+PiA+ ID4gKyBpZiAoY3J0Y19lbmFibGVkKSB7Cj4gPj4gPiA+ICsgICAgICAgICByZXQgPSBpbnRlbF9k cF91cGZyb250X2NvbW1pdChpbnRlbF9jcnRjLCAmY3R4KTsKPiA+PiA+ID4gKyAgICAgICAgIGlm IChyZXQpCj4gPj4gPiA+ICsgICAgICAgICAgICAgICAgIGdvdG8gZXhpdF9mYWlsOwo+ID4+ID4g PiArIH0KPiA+PiA+ID4gKwo+ID4+ID4gPiArIGNydGNfc3RhdGUgPSBpbnRlbF9kcF91cGZyb250 X2dldF9jcnRjX3N0YXRlKGludGVsX2NydGMsICZjdHgpOwo+ID4+ID4gPiArIGlmIChJU19FUlIo Y3J0Y19zdGF0ZSkpIHsKPiA+PiA+ID4gKyAgICAgICAgIHJldCA9IFBUUl9FUlIoY3J0Y19zdGF0 ZSk7Cj4gPj4gPiA+ICsgICAgICAgICBnb3RvIGV4aXRfZmFpbDsKPiA+PiA+ID4gKyB9Cj4gPj4g PiA+ICsKPiA+PiA+ID4gKyAvKiBTYXZlIHRoZSBleGlzdGluZyBjb25maWcgKi8KPiA+PiA+ID4g KyB0bXBfY3J0Y19jb25maWcgPSBpbnRlbF9jcnRjLT5jb25maWc7Cj4gPj4gPiBZb3UgbmVlZCB0 byBzYXZlIHRoaXMgZWFybGllci4gT3RoZXJ3aXNlIGlmIGludGVsX2RwX3VwZnJvbnRfY29tbWl0 KCkgaXMKPiA+PiA+IGNhbGxlZCwgdGhlIHN0YXRlIHdpbGwgYmUgcmVzdG9yZWQgd2l0aCBhY3Rp dmUgPT0gZmFsc2Ugd2hlbiBpdCBzaG91bGQKPiA+PiA+IGFjdHVhbGx5IGJlIHRydWUuCj4gPj4g T2ssIHdpbGwgc2F2ZSB0aGlzIGVhcmxpZXIuIEJ1dCBzaW5jZSB3ZSBkb27igJl0IHJlLWVuYWJs ZSBjcnRjICBoZXJlIGFmdGVyCj4gPj4gdXBmcm9udCwKPiA+PiAod2UgbGV0IGl0IGdldCByZS1l bmFibGVkIGFzIHBhcnQgb2Ygc3Vic2VxdWVudCBtb2Rlc2V0KSB0aGUgcmVzdG9yaW5nCj4gPj4g d2l0aCBmYWxzZSBkb2VzIG5vdCBoYXBwZW4gdG9kYXkuLgo+ID4+Cj4gPj4gPgo+ID4+ID4gQnV0 IHRoYXQgd291bGQgY2F1c2UgaW50ZWxfY3J0Yy0+Y29uZmlnIHRvIGJlIGZyZWVkLCBzbyB5b3Ug bmVlZCB0bwo+ID4+ID4gdXNlIGludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlKCkuCj4gPj4gU2lu Y2Ugd2UgYWxsb2MgYSBuZXcgc3RhdGUgYW5kIHRoZW4gb25seSBjYWxsIGdldF9jcnRjX3N0YXRl KCksIEkgdGhvdWdodCB0aGF0Cj4gPj4gYXV0b21hdGljYWxseSBib2lscyBkb3duIHRvIGR1cGxp Y2F0ZV9zdGF0ZSgpIGluc2lkZQo+ID4+IGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoKS4KPiA+ PiBQbGVhc2UgY29ycmVjdCBpZiBteSB1bmRlcnN0YW5kaW5nIGlzIHdyb25nLgo+ID4KPiA+IEl0 IGRvZXMsIGJ1dCBpdCBpcyBhIHNvbWV3aGF0IG1lc3N5IHdheSBvZiBkb2luZyBpdCBpbiB0aGlz IGNhc2UsIHNpbmNlIHlvdSBuZWVkCj4gPiB0byBhbGxvY2F0ZSBhbiBleHRyYSBhdG9taWNfc3Rh dGUuCj4gPgo+ID4gSW4gYW55IGNhc2UsIGFmdGVyIGxvb2tpbmcgYXQgd2h5IHdlIG5lZWQgdG8g ZmlkZGxlIHdpdGggdGhlIGNydGNfc3RhdGUsIG15Cj4gPiBjb25jbHVzaW9uIHdhcyB0aGF0IGl0 IGlzIGVhc2llciB0byByZW1vdmUgdGhvc2UgZGVwZW5kZW5jaWVzIHRoYW4gdG8gZG8gdGhpcwo+ ID4gc2F2ZS9yZXN0b3JlIGRhbmNlLiBBbGwgaXQgd291bGQgdGFrZSBpcyB0byBwYXNzIGxpbmsg cmF0ZSBhbmQgbGFuZSBjb3VudAo+ID4gZGlyZWN0bHkgdG8gaW50ZWxfZHBfc2V0X2xpbmtfcGFy YW1zKCkuIFRoZSBidWxrIG9mIGludGVsX2RkaV9wcmVfZW5hYmxlKCkgY2FuCj4gPiBiZSBzcGxp dCB0byBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgbGluayByYXRlLCBsYW5lIGNvdW50IGFuZCBkcGxs IGFzIGFyZ3VtZW50cywKPiA+IGFuZCB0aGVuIGludGVsX2J4dF91cGZyb250X2xpbmtfdHJhaW4o KSBjYW4gY2FsbCBpdCBkaXJlY3RseS4KPiA+Cj4gPgo+ID4KPiA+Pgo+ID4+ID4KPiA+PiA+Cj4g Pj4gPiA+Cj4gPj4gPiA+ICsgaW50ZWxfY3J0Yy0+Y29uZmlnID0gY3J0Y19zdGF0ZTsKPiA+PiA+ ID4gKwo+ID4+ID4gPiArIGlmIChJU19CUk9YVE9OKGRldikpCj4gPj4gPiA+ICsgICAgICAgICBz dGF0dXMgPSBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3RyYWluKGludGVsX2RwLAo+ID4+ID4gPiBp bnRlbF9jcnRjKTsKPiA+PiA+ID4gKyAgICAgICAgIC8qIE90aGVyIHBsYXRmb3JtcyB1cGZyb250 IGxpbmsgdHJhaW4gY2FsbCBnb2VzIGhlcmUuLiovCj4gPj4gPiA+ICsKPiA+PiA+ID4gKyAvKiBS ZXN0b3JlIHRoZSBzYXZlZCBjb25maWcgKi8KPiA+PiA+ID4gKyBpbnRlbF9jcnRjLT5jb25maWcg PSB0bXBfY3J0Y19jb25maWc7Cj4gPj4gPiA+ICsgaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjID0g Y3J0Y19lbmFibGVkID8gY3J0YyA6IE5VTEw7Cj4gPj4gPiA+ICsgZHJtX2F0b21pY19zdGF0ZV9m cmVlKGNydGNfc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ID4+ID4gVGhpcyBkb2Vzbid0IGFjdHVhbGx5 IHJlLWVuYWJsZXMgdGhlIGNydGMgaWYgaWYgd2FzIGRpc2FibGVkIGluCj4gPj4gPiBpbnRlbF9k cF91cGZyb250X2NvbW1pdCgpLiBUaGlzIHdpbGwgcmVxdWlyZSBhbm90aGVyIGF0b21pYyBvcGVy YXRpb24uCj4gPj4gPiBNYXliZSB0aGF0IGludGVsX2NydGNfYXRvbWljX2Rpc2FibGUoKSBzaG91 bGQganVzdCB0YWtlIGEgYm9vbCBzcGVjaWZ5aW5nIGlmCj4gPj4gPiBpdAo+ID4+ID4gc2hvdWxk IG9uIG9mIG9mZi4KPiA+PiBXZSBsZXQgaXQgZ2V0IHJlLWVuYWJsZWQgYXMgcGFydCBvZiBtb2Rl IHNldCB0aGF0IGhhcHBlbnMgc3Vic2VxdWVudGx5Lgo+ID4+IFBsZWFzZSBsZXQgbWUga25vdyB5 b3VyIG9waW5pb24gb24gdGhpcy4KPiA+Cj4gPiBUaGVyZSdzIG5vIGd1YXJhbnRlZSB0aGVyZSB3 aWxsIGJlIGEgbW9kZSBzZXQgYWZ0ZXJ3YXJkcywgc2luY2UgdGhhdCdzIGEgdXNlcgo+ID4gc3Bh Y2UgZGVjaXNpb24uIE9uZSB0aGluZyB0byBjaGVjayBpcyBpZiB0aGlzIHdvcmtzIGFjcm9zcyBz dXNwZW5kL3Jlc3VtZS4gSUlVQywKPiA+IGl0IGlzIHBvc3NpYmxlIGEgaG90cGx1ZyBldmVudCB3 b24ndCBiZSBzZW50IHRvIHVzZXIgc3BhY2UgaWYgdGhlIGNvbm5lY3Rvcgo+ID4gc3RhdHVzIGRp ZG4ndCBjaGFuZ2UuIEluIHRoYXQgY2FzZSwgSSB0aGluayB0aGlzIG1pZ2h0IGxlYWQgdG8gYmxh bmsgc2NyZWVuLgo+ID4KPiA+IEFuZGVyCj4gPgo+ID4+Cj4gPj4gVGhhbmtzLAo+ID4+IER1cmdh Cj4gPj4KPiA+PiA+Cj4gPj4gPgo+ID4+ID4KPiA+PiA+ID4KPiA+PiA+ID4gKwo+ID4+ID4gPiAr ZXhpdF9mYWlsOgo+ID4+ID4gPiArIGlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+PiA+ID4gKyAg ICAgICAgIGRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPj4gPiA+ICsgICAgICAgICBnb3Rv IHJldHJ5Owo+ID4+ID4gPiArIH0KPiA+PiA+ID4gKyBkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZj dHgpOwo+ID4+ID4gPiArIGRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiA+PiA+ID4g KyByZXR1cm4gc3RhdHVzOwo+ID4+ID4gPiArfQo+ID4+ID4gPiArCj4gPj4gPiA+ICBzdGF0aWMg dm9pZAo+ID4+ID4gPiAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3IpCj4gPj4gPiA+ICB7Cj4gPj4gPiA+IEBAIC00NTU4LDcgKzQ3MjIs NyBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiA+PiA+ID4g KmludGVsX2Nvbm5lY3RvcikKPiA+PiA+ID4gICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7Cj4gPj4gPiA+ICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7 Cj4gPj4gPiA+ICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47 Cj4gPj4gPiA+IC0gYm9vbCByZXQ7Cj4gPj4gPiA+ICsgYm9vbCByZXQsIGRvX3VwZnJvbnRfbGlu a190cmFpbjsKPiA+PiA+ID4gICB1OCBzaW5rX2lycV92ZWN0b3I7Cj4gPj4gPiA+Cj4gPj4gPiA+ ICAgcG93ZXJfZG9tYWluID0KPiA+PiA+IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9t YWluKGludGVsX2VuY29kZXIpOwo+ID4+ID4gPgo+ID4+ID4gPiBAQCAtNDYwNCw3ICs0NzY4LDEx IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3Rvcgo+ID4+ID4gPiAq aW50ZWxfY29ubmVjdG9yKQo+ID4+ID4gPiAgICAgICAgICAgZHJtX21vZGVzZXRfbG9jaygmZGV2 LQo+ID4+ID4gPiBtb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKPiA+PiA+ID4g ICAgICAgICAgIGludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGludGVsX2RwKTsKPiA+PiA+ID4g ICAgICAgICAgIGRybV9tb2Rlc2V0X3VubG9jaygmZGV2LQo+ID4+ID4gPiBtb2RlX2NvbmZpZy5j b25uZWN0aW9uX211dGV4KTsKPiA+PiA+ID4gLSAgICAgICAgIGdvdG8gb3V0Owo+ID4+ID4gPiAr ICAgICAgICAgLyoKPiA+PiA+ID4gKyAgICAgICAgICAqIElmIHdlIGFyZSBoZXJlLCB3ZSBoYXZl IChyZSlyZWFkIERQQ0QgYWJvdmUgYW5kIGhlbmNlCj4gPj4gPiA+ICsgICAgICAgICAgKiBuZWVk IHRvIGRvIHVwZnJvbnQgbGluayB0cmFpbiBhZ2Fpbi4KPiA+PiA+ID4gKyAgICAgICAgICAqLwo+ ID4+ID4gPiArICAgICAgICAgZ290byB1cGZyb250Owo+ID4+ID4gV2UgY2FuIGF2b2lkIHRoaXMg Ynkgbm90IG92ZXJ3cml0aW5nIGludGVsX2RwLT5kcGNkIGFzIEkgbWVudGlvbmVkIGFib3ZlLgo+ ID4+ID4KPiA+PiA+Cj4gPj4gPiBBbmRlcgo+ID4+ID4KPiA+PiA+ID4KPiA+PiA+ID4gICB9Cj4g Pj4gPiA+Cj4gPj4gPiA+ICAgLyoKPiA+PiA+ID4gQEAgLTQ2MzQsNiArNDgwMiwxNCBAQCBpbnRl bF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiA+PiA+ID4gKmludGVsX2Nv bm5lY3RvcikKPiA+PiA+ID4gICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiQ1Ag b3Igc2luayBzcGVjaWZpYyBpcnEKPiA+PiA+ID4gdW5oYW5kbGVkXG4iKTsKPiA+PiA+ID4gICB9 Cj4gPj4gPiA+Cj4gPj4gPiA+ICt1cGZyb250Ogo+ID4+ID4gPiArIC8qIERvIG5vdCBkbyB1cGZy b250IGxpbmsgdHJhaW4sIGlmIGl0IGlzIGEgY29tcGxpYW5jZSByZXF1ZXN0ICovCj4gPj4gPiA+ ICsgZG9fdXBmcm9udF9saW5rX3RyYWluID0KPiA+PiA+ID4gKyAgICAgICAgIGludGVsX2VuY29k ZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUICYmCj4gPj4gPiA+ICsgICAgICAg ICBpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0KPiA+PiA+IERQX1RFU1RfTElOS19U UkFJTklORzsKPiA+PiA+ID4KPiA+PiA+ID4gKwo+ID4+ID4gPiArIGlmIChkb191cGZyb250X2xp bmtfdHJhaW4gJiYKPiA+PiA+IGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihjb25uZWN0b3Ip KQo+ID4+ID4gPgo+ID4+ID4gPiArICAgICAgICAgc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19k aXNjb25uZWN0ZWQ7Cj4gPj4gPiA+ICBvdXQ6Cj4gPj4gPiA+ICAgaWYgKHN0YXR1cyAhPSBjb25u ZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgewo+ID4+ID4gPiAgICAgICAgICAgaW50ZWxfZHBfdW5z ZXRfZWRpZChpbnRlbF9kcCk7Cj4gPj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gPj4gPiA+IGluZGV4IDI3YjVkY2QuLmJmOTg0NzMgMTAwNjQ0Cj4gPj4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4gPiA+IEBAIC0xMDgyLDYgKzEwODIsOCBAQCB2 b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIKPiA+PiA+ICplbmNv ZGVyLAo+ID4+ID4gPgo+ID4+ID4gPiAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiA+PiA+ID4gIHZvaWQgaW50ZWxfZGRpX3NldF92Y19w YXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7Cj4gPj4gPiA+ ICB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsK PiA+PiA+ID4gK2ludCBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlu dGVsX2NydGMgKmNydGMpOwo+ID4+ID4gPgo+ID4+ID4gPiAgLyogaW50ZWxfZnJvbnRidWZmZXIu YyAqLwo+ID4+ID4gPiAgdm9pZCBpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4+ID4gPiBAQCAtMTI4NCw2ICsxMjg2LDkgQEAgYm9vbCBp bnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QKPiA+PiA+IGludGVsX2RpZ2l0YWxfcG9ydAo+ ID4+ID4gPgo+ID4+ID4gPiAqaW50ZWxfZGlnX3BvcnQsCj4gPj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKTsKPiA+PiA+ ID4gIHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gPj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlCj4gPj4gPiA+ICpwaXBlX2NvbmZpZyk7Cj4gPj4gPiA+ICt2b2lkIGludGVsX2Rw X3VwZGF0ZV9kcGNkX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+PiA+ID4g K2Jvb2wgaW50ZWxfZHBfZ2V0X2xpbmtfcmV0cnlfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqbGFuZV9j b3VudCwgdWludDhfdCAqbGlua19idyk7Cj4gPj4gPiA+ICB2b2lkIGludGVsX2RwX3N0YXJ0X2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gPj4gPiA+ICB2b2lkIGludGVs X2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+PiA+ID4g IHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBt b2RlKTsKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo+IAo+IAo+IAo+IC0tIAo+IFJvZHJpZ28gVml2aQo+IEJsb2c6IGh0dHA6Ly9i bG9nLnZpdmkuZW5nLmJyCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==