From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yaodong Li Subject: Re: [PATCH 1/2] drm/i915: Add code to accept valid locked WOPCM register values Date: Thu, 22 Mar 2018 14:27:59 -0700 Message-ID: <5964e390-35d1-799d-771a-e5c2173a0597@intel.com> References: <1521587927-7404-1-git-send-email-yaodong.li@intel.com> <20180322203837.tx2ynthlssq7k2lg@mwiniars-main.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6206E6E033 for ; Thu, 22 Mar 2018 21:29:55 +0000 (UTC) In-Reply-To: <20180322203837.tx2ynthlssq7k2lg@mwiniars-main.ger.corp.intel.com> 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: =?UTF-8?Q?Micha=c5=82_Winiarski?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDMvMjIvMjAxOCAwMTozOCBQTSwgTWljaGHFgiBXaW5pYXJza2kgd3JvdGU6Cj4gT24gVHVl LCBNYXIgMjAsIDIwMTggYXQgMDQ6MTg6NDZQTSAtMDcwMCwgSmFja2llIExpIHdyb3RlOgo+PiBJ biBjdXJyZW50IGNvZGUsIHdlIG9ubHkgY29tcGFyZSB0aGUgbG9ja2VkIFdPUENNIHJlZ2lzdGVy IHZhbHVlcyB3aXRoIHRoZQo+PiBjYWxjdWxhdGVkIHZhbHVlcy4gSG93ZXZlciwgd2UgY2FuIGNv bnRpbnVlIGxvYWRpbmcgR3VDL0h1QyBmaXJtd2FyZSBpZiB0aGUKPj4gbG9ja2VkIChvciBwYXJ0 aWFsbHkgbG9ja2VkKSB2YWx1ZXMgd2VyZSB2YWxpZCBmb3IgY3VycmVudCBHdUMvSHVDIGZpcm13 YXJlCj4+IHNpemVzLgo+Pgo+PiBUaGlzIHBhdGNoIGFkZGVkIGEgbmV3IGNvZGUgcGF0aCB0byB2 ZXJpZnkgd2hldGhlciB0aGUgbG9ja2VkIHJlZ2lzdGVyCj4+IHZhbHVlcyBjYW4gYmUgdXNlZCBm b3IgR3VDL0h1QyBmaXJtd2FyZSBsb2FkaW5nLCBpdCB3aWxsIHJlY2FsY3VsYXRlIHRoZQo+PiB2 ZXJpZnkgdGhlIG5ldyB2YWx1ZXMgaWYgdGhlc2UgcmVnaXN0ZXJzIHdlcmUgcGFydGlhbGx5IGxv Y2tlZCwgc28gdGhhdCB3ZQo+PiB3b24ndCBmYWlsIHRoZSBHdUMvSHVDIGZpcm13YXJlIGxvYWRp bmcgZXZlbiBpZiB0aGUgbG9ja2VkIHJlZ2lzdGVyIHZhbHVlcwo+PiBhcmUgZGlmZmVyZW50IGZy b20gdGhlIGNhbGN1bGF0ZWQgb25lcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogSmFja2llIExpIDx5 YW9kb25nLmxpQGludGVsLmNvbT4KPj4gQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpk ZWN6a29AaW50ZWwuY29tPgo+PiBDYzogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxl QGludGVsLmNvbT4KPj4gQ2M6IE1pY2hhxYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGlu dGVsLmNvbT4KPj4gQ2M6IEpvaG4gU3BvdHN3b29kIDxqb2huLmEuc3BvdHN3b29kQGludGVsLmNv bT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYyB8IDE4MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4+ICAgMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKPiBbc25pcF0KPgo+PiAgIC8qKgo+ PiAgICAqIGludGVsX3dvcGNtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIFdPUENNIHN0cnVjdHVy ZS4KPj4gICAgKiBAd29wY206IHBvaW50ZXIgdG8gaW50ZWxfd29wY20uCj4+IEBAIC0xNTUsMTAg KzIwMiw4IEBAIGludCBpbnRlbF93b3BjbV9pbml0KHN0cnVjdCBpbnRlbF93b3BjbSAqd29wY20p Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gd29wY21fdG9faTkxNSh3b3Bj bSk7Cj4+ICAgCXUzMiBndWNfZndfc2l6ZSA9IGludGVsX3VjX2Z3X2dldF91cGxvYWRfc2l6ZSgm aTkxNS0+Z3VjLmZ3KTsKPj4gICAJdTMyIGh1Y19md19zaXplID0gaW50ZWxfdWNfZndfZ2V0X3Vw bG9hZF9zaXplKCZpOTE1LT5odWMuZncpOwo+PiAtCXUzMiBjdHhfcnN2ZCA9IGNvbnRleHRfcmVz ZXJ2ZWRfc2l6ZShpOTE1KTsKPj4gICAJdTMyIGd1Y193b3BjbV9iYXNlOwo+PiAgIAl1MzIgZ3Vj X3dvcGNtX3NpemU7Cj4+IC0JdTMyIGd1Y193b3BjbV9yc3ZkOwo+PiAgIAlpbnQgZXJyOwo+PiAg IAo+PiAgIAlHRU1fQlVHX09OKCF3b3BjbS0+c2l6ZSk7Cj4+IEBAIC0xNzUsMzAgKzIyMCwxNyBA QCBpbnQgaW50ZWxfd29wY21faW5pdChzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtKQo+PiAgIAkJ cmV0dXJuIC1FMkJJRzsKPj4gICAJfQo+PiAgIAo+PiAtCWd1Y193b3BjbV9iYXNlID0gQUxJR04o aHVjX2Z3X3NpemUgKyBXT1BDTV9SRVNFUlZFRF9TSVpFLAo+PiAtCQkJICAgICAgIEdVQ19XT1BD TV9PRkZTRVRfQUxJR05NRU5UKTsKPj4gLQlpZiAoKGd1Y193b3BjbV9iYXNlICsgY3R4X3JzdmQp ID49IHdvcGNtLT5zaXplKSB7Cj4+IC0JCURSTV9FUlJPUigiR3VDIFdPUENNIGJhc2UgKCV1S2lC KSBpcyB0b28gYmlnLlxuIiwKPj4gLQkJCSAgZ3VjX3dvcGNtX2Jhc2UgLyAxMDI0KTsKPj4gLQkJ cmV0dXJuIC1FMkJJRzsKPj4gLQl9Cj4+IC0KPj4gLQlndWNfd29wY21fc2l6ZSA9IHdvcGNtLT5z aXplIC0gZ3VjX3dvcGNtX2Jhc2UgLSBjdHhfcnN2ZDsKPj4gLQlndWNfd29wY21fc2l6ZSAmPSBH VUNfV09QQ01fU0laRV9NQVNLOwo+PiArCWd1Y193b3BjbV9iYXNlID0gY2FsY3VsYXRlX21pbl9n dWNfd29wY21fYmFzZShodWNfZndfc2l6ZSk7Cj4gV2UgYWxyZWFkeSBkaXNjdXNzZWQgdGhpcyBl bHNld2hlcmUsIGJ1dCBqdXN0IHRvIGhhdmUgdGhpcyBwYXJ0IGF2YWlsYWJsZQo+IGZvciB3aWRl ciBhdWRpZW5jZToKPgo+IGh1Y19md19zaXplIGlzIHVua25vd24gKHRoZXJlIG1heSBiZSBubyBo dWMgZmlybXdhcmUgcHJlc2VudCkgLSB3aGljaCBtZWFucwo+IHdlJ3JlIHN0aWxsIG5vdCBhYmxl IHRvIGhhbmRsZSBtb2R1bGUgcmVsb2FkIGZyb20gZ3VjLXdpdGhvdXQtaHVjIGludG8KPiBndWMt d2l0aC1odWMKPgo+IFF1ZXN0aW9uIHJlbWFpbnMgd2hldGhlciB3ZSB3YW50IHRvIHN1cHBvcnQg dGhpcyBzY2VuYXJpbywgb3Igd2hldGhlciB3ZSBzaG91bGQKPiB0aWUgR3VDIGFuZCBIdUMgdG9n ZXRoZXIgYW5kIHJlZnVzZSB0byBvcGVyYXRlIGVhcmx5IG9uIGlmIGVpdGhlciBvbmUgaXMgbm90 Cj4gcHJlc2VudC4gV2UgY291bGQgcmVtb3ZlIGEgbG90IG9mIGNvZGUgdGhpcyB3YXkuLi4KVGhh bmtzLiBBcyB3ZSBkaXNjdXNzZWQgSSB0aGluayB3ZSBzaG91bGQgZGVzY3JpYmUgdGhpcyBwcm9i bGVtIGluIHRoaXMgd2F5Ogp3ZSBzaGFsbCBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbiBvbiBlaXRo ZXIgZ3VjX2Z3X3NpemUgYW5kIGh1Y19md19zaXplLgpPbiB0aGUgb3RoZXIgaGFuZGxlLCB3ZSBk byBuZWVkIGNhbGN1bGF0ZSB0aGUgV09QQ00gbGF5b3V0IGJhc2VkIG9uCmJvdGggR3VDIGFuZCBI dUMgRlcgc2l6ZXMsIGVzcGVjaWFsbHkgd2hlbiB3ZSB3YW50IHRvIHN1cHBvcnQgbW9kcGFyYW0K ZW5hYmxlX2d1YyB0byBlbmFibGUvZGlzYWJsZSBIdUMgRlcgbG9hZGluZyBkeW5hbWljYWxseS4g VGhhdCdzIHdoeSBJIApzdWdnZXN0CnRvIHVwZGF0ZSB0aGUgRlcgZmV0Y2ggY29kZSB0byByZXBv cnQgdGhlIEZXIHNpemUgbm8gbWF0dGVyIHdlIHR1cm4gdGhlIEh1QwpGVyBsb2FkaW5nIG9uIG9y IG5vdC4KT3RoZXIgYXNwZWN0IG9mIHRoZSBkaXNjdXNzaW9uIGlzIHdoZXRoZXIgd2Ugc2hvdWxk IHN1cHBvcnQgZW5hYmxlX2d1YyAKc3dpdGNoaW5nCmZyb20gMSB0byAzICsgQWRkaW5nIG5ldyBI dUMgRlcgdG8gdGhlIGZpbGVzeXN0ZW0gd2l0aG91dCBhIHN5c3RlbSByZWJvb3QuCkluIGFub3Ro ZXIgd29yZCB3aGV0aGVyIHdlIHNob3VsZCBzdXBwb3J0IEZXIGltYWdlIHVwZGF0ZXMKKGFkZC9k ZWxldGUvdXBkYXRlIHRvIGEgbmV3IHZlcnNpb24pIGluIHRoZSBmaWxlc3lzdGVtIHdpdGhvdXQg ZXhwZWN0aW5nIAphIHN5c3RlbQpyZWJvb3QuIE15IHBvaW50IGlzIGl0J3MgdW5saWtlbHkgd2Ug Y2FuIHN1cHBvcnQgdGhpcyBzaW5jZSB0aGUgRlcgc2l6ZXMgCndvdWxkIGxpa2VseQpjaGFuZ2Ug YW5kIHdlIG5lZWQgcmVjb25maWd1cmUgdGhlIFdPIHJlZ2lzdGVyIHdpdGggdGhlIGxhdGVzdCBG VyAKYXZhaWxhYmxlIGluCnRoZSBGUywgYW5kIEkgdGhpbmsgaXQgd29ydGggdG8gZG8gaXQgdG8g MTAwJSBtYWtlIHN1cmUgd2Ugd29uJ3QgcnVuIAppbnRvIGFueQptb2R1bGUgbG9hZGluZy9pbml0 IGVycm9ycy4KPgo+PiArCWVyciA9IGNhbGN1bGF0ZV9tYXhfZ3VjX3dvcGNtX3NpemUod29wY20s IGd1Y193b3BjbV9iYXNlLAo+PiArCQkJCQkgICAmZ3VjX3dvcGNtX3NpemUpOwo+PiArCWlmIChl cnIpCj4+ICsJCXJldHVybiBlcnI7Cj4+ICAgCj4+ICAgCURSTV9ERUJVR19EUklWRVIoIkNhbGN1 bGF0ZWQgR3VDIFdPUENNIFJlZ2lvbjogWyV1S2lCLCAldUtpQilcbiIsCj4+ICAgCQkJIGd1Y193 b3BjbV9iYXNlIC8gMTAyNCwgZ3VjX3dvcGNtX3NpemUgLyAxMDI0KTsKPj4gICAKPj4gLQlndWNf d29wY21fcnN2ZCA9IEdVQ19XT1BDTV9SRVNFUlZFRCArIEdVQ19XT1BDTV9TVEFDS19SRVNFUlZF RDsKPj4gLQlpZiAoKGd1Y19md19zaXplICsgZ3VjX3dvcGNtX3JzdmQpID4gZ3VjX3dvcGNtX3Np emUpIHsKPj4gLQkJRFJNX0VSUk9SKCJOZWVkICV1S2lCIFdPUENNIGZvciBHdUMsICV1S2lCIGF2 YWlsYWJsZS5cbiIsCj4+IC0JCQkgIChndWNfZndfc2l6ZSArIGd1Y193b3BjbV9yc3ZkKSAvIDEw MjQsCj4+IC0JCQkgIGd1Y193b3BjbV9zaXplIC8gMTAyNCk7Cj4+IC0JCXJldHVybiAtRTJCSUc7 Cj4+IC0JfQo+PiAtCj4+IC0JZXJyID0gY2hlY2tfaHdfcmVzdHJpY3Rpb24oaTkxNSwgZ3VjX3dv cGNtX2Jhc2UsIGd1Y193b3BjbV9zaXplLAo+PiAtCQkJCSAgIGh1Y19md19zaXplKTsKPj4gKwll cnIgPSB2ZXJpZnlfY2FsY3VsYXRlZF92YWx1ZXMoaTkxNSwgZ3VjX2Z3X3NpemUsIGh1Y19md19z aXplLAo+PiArCQkJCSAgICAgICBndWNfd29wY21fYmFzZSwgZ3VjX3dvcGNtX3NpemUpOwo+IE9r IC0gc28gd2UncmUgY2FsY3VsYXRpbmcgdGhlIHZhbHVlcyBpbiBpbml0Li4uCk1vc3QgbGlrZWx5 IGNhc2UsIHdlIGFyZSBnb2luZyB0byBnZXQgdGhlc2UgdmFsdWVzIHJlYWR5IHdpdGhvdXQgZ2V0 dGluZwphbnkgZm9yY2V3YWtlIGR1cmluZyB0aGUgaW5pdC4gVGhlbiBpbiBpbml0X2h3IHdlIG9u bHkgbmVlZCB0byB1cGRhdGUKdGhlc2UgdmFsdWVzIHRvIHRoZSByZWdpc3RlciB3aXRob3V0IHdh c3RpbmcgYW55dGltZSBvbiB0aGVzZSBjYWxjdWxhdGlvbi4KSG93ZXZlciwgdGhpcyBwYXRjaCBp bnRyb2R1Y2UgbW9yZSBjb2RlIHRvIGhhbmRsZSB0aGUgcmFyZSBjYXNlcyB3aGljaAp0aGVzZSBy ZWdzIHdlcmUgbG9ja2VkIHdpdGggZGlmZmVyZW50IHZhbHVlcyBmcm9tIHRoZSBvbmVzIHdlIGNh bGN1bGF0ZWQKaW4gdGhlIGluaXQgcGhhc2UuIEluIHRoaXMgY2FzZSwgd2Ugd2lsbCB0cnkgdG8g cmVjYWxjdWxhdGUvdmVyaWZ5IHRoZXNlIApsb2NrZWQKb3IgcGFydGlhbGx5IGxvY2tlZCB2YWx1 ZXMgYW5kIHRyeSBvdXIgYmVzdCB0byBnbyB3aXRoIHRoZSBsb2NrZWQgdmFsdWVzLgo+Cj4+ICAg CWlmIChlcnIpCj4+ICAgCQlyZXR1cm4gZXJyOwo+PiAgIAo+PiBAQCAtMjA4LDYgKzI0MCw5MiBA QCBpbnQgaW50ZWxfd29wY21faW5pdChzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtKQo+PiAgIAly ZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4gW3NuaXBdCj4KPj4gICBzdGF0aWMgaW5saW5lIGludCB3 cml0ZV9hbmRfdmVyaWZ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJ CQkJICAgaTkxNV9yZWdfdCByZWcsIHUzMiB2YWwsIHUzMiBtYXNrLAo+PiAgIAkJCQkgICB1MzIg bG9ja2VkX2JpdCkKPj4gQEAgLTIzMSw3ICszNDksOCBAQCBzdGF0aWMgaW5saW5lIGludCB3cml0 ZV9hbmRfdmVyaWZ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAgKiB3 aWxsIHZlcmlmeSB0aGUgcmVnaXN0ZXIgdmFsdWVzIHRvIG1ha2Ugc3VyZSB0aGUgcmVnaXN0ZXJz IGFyZSBsb2NrZWQgd2l0aAo+PiAgICAqIGNvcnJlY3QgdmFsdWVzLgo+PiAgICAqCj4+IC0gKiBS ZXR1cm46IDAgb24gc3VjY2Vzcy4gLUVJTyBpZiByZWdpc3RlcnMgd2VyZSBsb2NrZWQgd2l0aCBp bmNvcnJlY3QgdmFsdWVzLgo+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIE1pbnVzIGVycm9y IGNvZGUgaWYgcmVnaXN0ZXJlZCB3ZXJlIGxvY2tlZCB3aXRoCj4+ICsgKiBpbmNvcnJlY3QgdmFs dWVzLi1FSU8gaWYgcmVnaXN0ZXJzIGZhaWxlZCB0byBsb2NrIHdpdGggY29ycmVjdCB2YWx1ZXMu Cj4+ICAgICovCj4+ICAgaW50IGludGVsX3dvcGNtX2luaXRfaHcoc3RydWN0IGludGVsX3dvcGNt ICp3b3BjbSkKPj4gICB7Cj4+IEBAIC0yNDcsMjcgKzM2NiwzOSBAQCBpbnQgaW50ZWxfd29wY21f aW5pdF9odyhzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtKQo+PiAgIAlHRU1fQlVHX09OKCF3b3Bj bS0+Z3VjLnNpemUpOwo+PiAgIAlHRU1fQlVHX09OKCF3b3BjbS0+Z3VjLmJhc2UpOwo+PiAgIAo+ PiArCWVyciA9IHZlcmlmeV9sb2NrZWRfdmFsdWVzX2FuZF91cGRhdGUod29wY20pOwo+PiArCWlm IChlcnIpIHsKPj4gKwkJRFJNX0VSUk9SKCJXT1BDTSByZWdpc3RlcnMgYXJlIGxvY2tlZCB3aXRo IGludmFsaWQgdmFsdWVzLlxuIik7Cj4+ICsJCWdvdG8gZXJyX291dDsKPj4gKwl9Cj4+ICsKPiAu Li5Pbmx5IHRvIHRocm93IGV2ZXJ5dGhpbmcgb3V0IGlmIHRoZSByZWdzIGFyZSBsb2NrZWQgaW4g aW5pdF9odz8KPgo+IFNpbmNlIHdlJ3ZlIGNoYW5nZWQgdGhlIGxvZ2ljLCBJIHRoaW5rIHdlIHNo b3VsZCByZWZhY3RvciBhIGJpdCBieSBjaGFuZ2luZwo+IHRoZSBvcmRlcmluZy4KPiBXZSBjb3Vs ZCBzdGFydCBmcm9tIGNoZWNraW5nIHRoZSByZWdzIGFuZCBwYXJ0aXRpb24gb3Vyc2VsdmVzIGlm IHRoZSB2YWx1ZXMgYXJlCj4gbm90IGxvY2tlZC4KPgo+IFdlIGNhbiB0aGVuIGhhdmUgYSBjb21t b24gY29kZXBhdGggZm9yIHZlcmlmaWNhdGlvbi4KV2UgaGF2ZSBwb3dlciBkb21haW4gb24gYXQg dGhpcyBwb2ludCBzbyB3ZSBleHBlY3QgdG8gc3BlbmQgYXMgbGVzcwp0aW1lIGFzIHBvc3NpYmxl IGhlcmUuIFdlIGFyZSBleHBlY3RpbmcgdGhlIHJlZ3Mgd2VyZSBub3QgbG9ja2VkIG9yCmxvY2tl ZCB3aXRoIHRoZSBzYW1lIHZhbHVlcyBhcyB3ZSBjYWxjdWxhdGVkIChlLmcuIG1vZHVsZSByZWxv YWRpbmcsCnJlc2V0LCBldGMpIGluIG1vc3QgY2FzZS4gQnV0IGZvciBzb21lIHJhcmUgY2FzZXMg KEJJT1MgZGlkIHVwbG9hZCB0aGUKcmVncykgd2Ugd2lsbCBoYXZlIHRoaXMgbmV3IHBhdGggdG8g aGFuZGxlIHRob3NlIGNhc2VzLiBCdXQgdGhlc2UgYXJlCmFsbCBhYm5vcm1hbCBjYXNlcyBhbmQg ZXZlbiBzaG91bGQgbm90IGhhcHBlbi4KPgo+PiAgIAllcnIgPSB3cml0ZV9hbmRfdmVyaWZ5KGRl dl9wcml2LCBHVUNfV09QQ01fU0laRSwgd29wY20tPmd1Yy5zaXplLAo+PiAgIAkJCSAgICAgICBH VUNfV09QQ01fU0laRV9NQVNLIHwgR1VDX1dPUENNX1NJWkVfTE9DS0VELAo+PiAgIAkJCSAgICAg ICBHVUNfV09QQ01fU0laRV9MT0NLRUQpOwpBY3R1YWxseSwgSSB0aGluayB3ZSBzaGFsbCBkZWNp ZGUgd2hldGhlciB1cGRhdGluZyB0aGUgcmVnIGJhc2VkIG9uIHRoZQpsb2NraW5nIHN0YXR1cy4g V2lsbCBoYW5kbGUgaXQgaW4gdjI6KQo+PiAtCWlmIChlcnIpCj4+ICsJaWYgKGVycikgewo+PiAr CQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb2NrIEdVQ19XT1BDTV9TSVpFIHdpdGggJSN4LlxuIiwK Pj4gKwkJCSAgd29wY20tPmd1Yy5zaXplKTsKPj4gICAJCWdvdG8gZXJyX291dDsKPj4gKwl9Cj4+ ICAgCj4+ICAgCWh1Y19hZ2VudCA9IFVTRVNfSFVDKGRldl9wcml2KSA/IEhVQ19MT0FESU5HX0FH RU5UX0dVQyA6IDA7Cj4+ICAgCW1hc2sgPSBHVUNfV09QQ01fT0ZGU0VUX01BU0sgfCBHVUNfV09Q Q01fT0ZGU0VUX1ZBTElEIHwgaHVjX2FnZW50Owo+PiAgIAllcnIgPSB3cml0ZV9hbmRfdmVyaWZ5 KGRldl9wcml2LCBETUFfR1VDX1dPUENNX09GRlNFVCwKPj4gICAJCQkgICAgICAgd29wY20tPmd1 Yy5iYXNlIHwgaHVjX2FnZW50LCBtYXNrLAo+PiAgIAkJCSAgICAgICBHVUNfV09QQ01fT0ZGU0VU X1ZBTElEKTsKPj4gLQlpZiAoZXJyKQo+PiArCWlmIChlcnIpIHsKPj4gKwkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gbG9jayBETUFfR1VDX1dPUENNX09GRlNFVCB3aXRoICUjeC5cbiIsCj4+ICsJCQkg IHdvcGNtLT5ndWMuYmFzZSk7Cj4+ICAgCQlnb3RvIGVycl9vdXQ7Cj4+ICsJfQo+PiAgIAo+PiAg IAlyZXR1cm4gMDsKPj4gICAKPj4gICBlcnJfb3V0Ogo+PiAtCURSTV9FUlJPUigiRmFpbGVkIHRv IGluaXQgV09QQ00gcmVnaXN0ZXJzOlxuIik7Cj4+ICAgCURSTV9FUlJPUigiRE1BX0dVQ19XT1BD TV9PRkZTRVQ9JSN4XG4iLAo+PiAgIAkJICBJOTE1X1JFQUQoRE1BX0dVQ19XT1BDTV9PRkZTRVQp KTsKPj4gICAJRFJNX0VSUk9SKCJHVUNfV09QQ01fU0laRT0lI3hcbiIsIEk5MTVfUkVBRChHVUNf V09QQ01fU0laRSkpOwo+PiArCURSTV9FUlJPUigiQSBzeXN0ZW0gcmVib290IGlzIHJlcXVpcmVk LlxuIik7Cj4gRnVuY3Rpb25hbGx5IEkgdGhpbmsgaXQncyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRp cmVjdGlvbiwgYnV0IEkgdGhpbmsgd2Ugc2hvdWxkCj4gdHJ5IGV2ZW4gaGFyZGVyIHRvIG5vdCBl dmVyIGRpc3BsYXkgdGhpcyBlcnJvciBtc2cuCkl0IHNoYWxsIGJlIHZlcnkgdmVyeSB1bmxpa2Vs eSBpZiB3ZSBoYWQgY2xlYXIgc3lzdGVtIGNvbmZpZ3VyZSBhbmQgRlcKdXBkYXRlIHNlcXVlbmNl LiBIb3dldmVyLCB3ZSBhcmUgc3RpbGwgZXhwZWN0aW5nIHN1Y2ggYW4gZXJyb3IuIChlLmcuIApV cGRhdGVkCkZXIGltYWdlcyAod2l0aCBsYXJnZXIgc2l6ZXMpIGFuZCB0cnkgdG8gbG9hZCB0aGUg bmV3IEZXIHdpdGhvdXQgYSByZWJvb3QuCndlIGNhbm5vdCAxMDAlIGd1YXJhbnRlZSB0aGUgY29y cmVjdG5lc3Mgc2luY2UgdGhlIFdPUENNIGxheW91dCBpcyAKbG9ja2VkIHdpdGgKdmFsdWVzIHdl IGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIG9sZCBGVyBzdGF0dXMgaW4gdGhlIEZTLCB0aHVzIHdl IHdpbGwgCnJlcG9ydCBzdWNoIGFuIGVycm9yCm1lc3NhZ2UuCgpSZWdhcmRzLAotSmFja2llCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=