From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Siluvery, Arun" Subject: Re: [PATCH 2/2] igt/gem_workarounds: igt to test workaround registers Date: Wed, 20 Aug 2014 17:23:40 +0100 Message-ID: <53F4CB8C.8020900@linux.intel.com> References: <1408546332-27157-1-git-send-email-arun.siluvery@linux.intel.com> <1408546332-27157-3-git-send-email-arun.siluvery@linux.intel.com> 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 ESMTP id A7E3B6E726 for ; Wed, 20 Aug 2014 09:24:00 -0700 (PDT) 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: Thomas Wood Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gMjAvMDgvMjAxNCAxNjozNywgVGhvbWFzIFdvb2Qgd3JvdGU6Cj4gT24gMjAgQXVndXN0IDIw MTQgMTU6NTIsIEFydW4gU2lsdXZlcnkgPGFydW4uc2lsdXZlcnlAbGludXguaW50ZWwuY29tPiB3 cm90ZToKPj4gU29tZSBvZiB0aGUgd29ya2Fyb3VuZHMgYXJlIGxvc3QgZm9sbG93ZWQgYnkgYSBn cHUgcmVzZXQsIHN1c3BlbmQvcmVzdW1lOwo+PiB0aGlzIHBhdGNoIGFkZHMgYSB0ZXN0IHdoaWNo IGNvbXBhcmVzIHJlZ2lzdGVyIHN0YXRlIGJlZm9yZSBhbmQgYWZ0ZXIKPj4gdGhlIHRlc3Qgc2Nl bmFyaW8uCj4+Cj4+IFRoaXMgdGVzdCBjdXJyZW50bHkgdmVyaWZpZXMgb25seSBiZHcgd29ya2Fy b3VuZHMuCj4KPiBKdXN0IGEgZmV3IHBvaW50cyBmcm9tIGFuIGlndCBwZXJzcGVjdGl2ZTogY291 bGQgeW91IGFkZCB0aGUgYmluYXJ5IHRvCj4gdGVzdHMvLmdpdGlnbm9yZSBhbmQgcGVyaGFwcyBj b25zaWRlciB1c2luZyBpZ3RfZGVidWcgb3IgaWd0X2luZm8KPiBpbnN0ZWFkIG9mIHByaW50Zj8g VGhlcmUgYXJlIGFsc28gc29tZSBkZWJ1Z2ZzIGhlbHBlcnMgaW4gaWd0X2RlYnVnZnMKClRoYW5r IHlvdSBmb3IgdGhlIGNvbW1lbnRzLCBjb3JyZWN0ZWQgdGhlIHBhdGNoIGxvY2FsbHksIHdpbGwg c2VuZCB0aGUgCnVwZGF0ZWQgdmVyc2lvbiBhbG9uZyB3aXRoIGFueSBvdGhlciBjb21tZW50cy4K CnJlZ2FyZHMKQXJ1bgoKPiB0byBvcGVuL2ZvcGVuIGRlYnVnZnMgZmlsZXMuIFRoZXJlIGFyZSBh bHNvIGEgZmV3IG90aGVyIHRlc3RzIHRoYXQKPiBpbXBsZW1lbnQgR1BVIGhhbmdzLCBzbyBpdCB3 b3VsZCBiZSBnb29kIHRvIHNoYXJlIGNvZGUgdG8gZG8gdGhpcwo+IGJldHdlZW4gdGhlbSwgYnV0 IG5vdCBlc3NlbnRpYWwgZm9yIHRoaXMgcGF0Y2guCj4KCj4KPj4KPj4gU2lnbmVkLW9mZi1ieTog QXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiAg IHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgIHwgICAxICsKPj4gICB0ZXN0cy9nZW1fd29ya2Fyb3Vu ZHMuYyB8IDIzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4gICAyIGZpbGVzIGNoYW5nZWQsIDIzOSBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL2dlbV93b3JrYXJvdW5kcy5jCj4+Cj4+IGRpZmYgLS1naXQgYS90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+PiBpbmRleCAwZWI5 MzY5Li5hMTdhY2QxIDEwMDY0NAo+PiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4+ICsr KyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPj4gQEAgLTEyNywyMCArMTI3LDIxIEBAIFRFU1RT X3Byb2dzID0gXAo+PiAgICAgICAgICBnZW1fc3RvcmVkd19sb29wX3ZlYm94IFwKPj4gICAgICAg ICAgZ2VtX3RocmVhZGVkX2FjY2Vzc190aWxlZCBcCj4+ICAgICAgICAgIGdlbV90aWxlZF9mZW5j ZV9ibGl0cyBcCj4+ICAgICAgICAgIGdlbV90aWxlZF9wcmVhZCBcCj4+ICAgICAgICAgIGdlbV90 aWxlZF9wcmVhZF9wd3JpdGUgXAo+PiAgICAgICAgICBnZW1fdGlsZWRfc3dhcHBpbmcgXAo+PiAg ICAgICAgICBnZW1fdGlsaW5nX21heF9zdHJpZGUgXAo+PiAgICAgICAgICBnZW1fdW5mZW5jZV9h Y3RpdmVfYnVmZmVycyBcCj4+ICAgICAgICAgIGdlbV91bnJlZl9hY3RpdmVfYnVmZmVycyBcCj4+ ICAgICAgICAgIGdlbV93YWl0X3JlbmRlcl90aW1lb3V0IFwKPj4gKyAgICAgICBnZW1fd29ya2Fy b3VuZHMgXAo+PiAgICAgICAgICBnZW4zX21peGVkX2JsaXRzIFwKPj4gICAgICAgICAgZ2VuM19y ZW5kZXJfbGluZWFyX2JsaXRzIFwKPj4gICAgICAgICAgZ2VuM19yZW5kZXJfbWl4ZWRfYmxpdHMg XAo+PiAgICAgICAgICBnZW4zX3JlbmRlcl90aWxlZHhfYmxpdHMgXAo+PiAgICAgICAgICBnZW4z X3JlbmRlcl90aWxlZHlfYmxpdHMgXAo+PiAgICAgICAgICBnZW43X2ZvcmNld2FrZV9tdCBcCj4+ ICAgICAgICAgIGttc19mb3JjZV9jb25uZWN0b3IgXAo+PiAgICAgICAgICBrbXNfc2lua19jcmNf YmFzaWMgXAo+PiAgICAgICAgICBrbXNfZmVuY2VfcGluX2xlYWsgXAo+PiAgICAgICAgICBwbV9w c3IgXAo+PiBkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX3dvcmthcm91bmRzLmMgYi90ZXN0cy9nZW1f d29ya2Fyb3VuZHMuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi41 NmJmNGIxCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdGVzdHMvZ2VtX3dvcmthcm91bmRzLmMK Pj4gQEAgLTAsMCArMSwyMzggQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRl bCBDb3Jwb3JhdGlvbgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAo+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us Cj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAo+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ ICsgKgo+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiAr ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKPj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPj4gKyAqIElOIFRIRSBTT0ZUV0FS RS4KPj4gKyAqCj4+ICsgKiBBdXRob3JzOgo+PiArICogIEFydW4gU2lsdXZlcnkgPGFydW4uc2ls dXZlcnlAbGludXguaW50ZWwuY29tPgo+PiArICoKPj4gKyAqLwo+PiArCj4+ICsjZGVmaW5lIF9H TlVfU09VUkNFCj4+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+PiArI2luY2x1ZGUgPHVuaXN0ZC5o Pgo+PiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+PiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4+ICsjaW5j bHVkZSA8c3RyaW5nLmg+Cj4+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPj4gKyNpbmNsdWRlIDxpbnR0 eXBlcy5oPgo+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4K Pj4gKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KPj4gKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgo+PiAr I2luY2x1ZGUgPHRpbWUuaD4KPj4gKyNpbmNsdWRlIDxzaWduYWwuaD4KPj4gKwo+PiArI2luY2x1 ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4+ICsjaW5jbHVkZSAiZHJtdGVzdC5oIgo+PiArI2luY2x1 ZGUgImlndF9kZWJ1Z2ZzLmgiCj4+ICsjaW5jbHVkZSAiaWd0X2F1eC5oIgo+PiArI2luY2x1ZGUg ImludGVsX2NoaXBzZXQuaCIKPj4gKyNpbmNsdWRlICJpbnRlbF9pby5oIgo+PiArCj4+ICtlbnVt IG9wZXJhdGlvbiB7Cj4+ICsgICAgICAgR1BVX1JFU0VUID0gMHgwMSwKPj4gKyAgICAgICBTVVNQ RU5EX1JFU1VNRSA9IDB4MDIsCj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgaW50ZWxfd2FfcmVnIHsK Pj4gKyAgICAgICB1aW50MzJfdCBhZGRyOwo+PiArICAgICAgIHVpbnQzMl90IHZhbHVlOwo+PiAr ICAgICAgIHVpbnQzMl90IG1hc2s7Cj4+ICt9Owo+PiArCj4+ICtpbnQgZHJtX2ZkOwo+PiArdWlu dDMyX3QgZGV2aWQ7Cj4+ICtzdGF0aWMgZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwo+PiArc3Ry dWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKPj4gK2ludCBudW1fd2E7Cj4+ICtzdHJ1Y3Qg aW50ZWxfd2FfcmVnICp3YV9yZWdzOwo+PiArCj4+ICsKPj4gK3N0YXRpYyB2b2lkIHRlc3RfaGFu Z19ncHUodm9pZCkKPj4gK3sKPj4gKyAgICAgICBpbnQgcmV0cnlfY291bnQgPSAzMDsKPj4gKyAg ICAgICBlbnVtIHN0b3BfcmluZ19mbGFncyBmbGFnczsKPj4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgZ2VtX2V4ZWM7Cj4+ICsgICAgICAgdWludDMyX3QgYlsyXSA9IHtNSV9C QVRDSF9CVUZGRVJfRU5EfTsKPj4gKwo+PiArICAgICAgIGlndF9hc3NlcnQocmV0cnlfY291bnQp Owo+PiArICAgICAgIGlndF9zZXRfc3RvcF9yaW5ncyhTVE9QX1JJTkdfREVGQVVMVFMpOwo+PiAr Cj4+ICsgICAgICAgbWVtc2V0KCZnZW1fZXhlYywgMCwgc2l6ZW9mKGdlbV9leGVjKSk7Cj4+ICsg ICAgICAgZ2VtX2V4ZWMuaGFuZGxlID0gZ2VtX2NyZWF0ZShkcm1fZmQsIDQwOTYpOwo+PiArICAg ICAgIGdlbV93cml0ZShkcm1fZmQsIGdlbV9leGVjLmhhbmRsZSwgMCwgYiwgc2l6ZW9mKGIpKTsK Pj4gKwo+PiArICAgICAgIG1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKPj4g KyAgICAgICBleGVjYnVmLmJ1ZmZlcnNfcHRyID0gKHVpbnRwdHJfdCkmZ2VtX2V4ZWM7Cj4+ICsg ICAgICAgZXhlY2J1Zi5idWZmZXJfY291bnQgPSAxOwo+PiArICAgICAgIGV4ZWNidWYuYmF0Y2hf bGVuID0gc2l6ZW9mKGIpOwo+PiArCj4+ICsgICAgICAgZHJtSW9jdGwoZHJtX2ZkLCBEUk1fSU9D VExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIsICZleGVjYnVmKTsKPj4gKwo+PiArICAgICAgIHdoaWxl KHJldHJ5X2NvdW50LS0pIHsKPj4gKyAgICAgICAgICAgICAgIGZsYWdzID0gaWd0X2dldF9zdG9w X3JpbmdzKCk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gMCkKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgICBwcmludGYoImdwdSBoYW5n IG5vdCB5ZXQgY2xlYXJlZCwgcmV0cmllcyBsZWZ0ICVkXG4iLCByZXRyeV9jb3VudCk7Cj4+ICsg ICAgICAgICAgICAgICBzbGVlcCgxKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBmbGFn cyA9IGlndF9nZXRfc3RvcF9yaW5ncygpOwo+PiArICAgICAgIGlmIChmbGFncykKPj4gKyAgICAg ICAgICAgICAgIGlndF9zZXRfc3RvcF9yaW5ncyhTVE9QX1JJTkdfTk9ORSk7Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyB2b2lkIHRlc3Rfc3VzcGVuZF9yZXN1bWUodm9pZCkKPj4gK3sKPj4gKyAgICAg ICBwcmludGYoIlN1c3BlbmRpbmcgdGhlIGRldmljZSAuLi5cbiIpOwo+PiArICAgICAgIGlndF9z eXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGdl dF9jdXJyZW50X3dhX2RhdGEoc3RydWN0IGludGVsX3dhX3JlZyAqKmN1cnIsIGludCBudW0pCj4+ ICt7Cj4+ICsgICAgICAgaW50IGk7Cj4+ICsgICAgICAgc3RydWN0IGludGVsX3dhX3JlZyAqcHRy ID0gTlVMTDsKPj4gKwo+PiArICAgICAgIHB0ciA9ICpjdXJyOwo+PiArCj4+ICsgICAgICAgaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCk7Cj4+ICsK Pj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyArK2kpIHsKPj4gKyAgICAgICAgICAgICAg IHB0cltpXS5hZGRyID0gd2FfcmVnc1tpXS5hZGRyOwo+PiArICAgICAgICAgICAgICAgcHRyW2ld LnZhbHVlID0gaW50ZWxfcmVnaXN0ZXJfcmVhZCh3YV9yZWdzW2ldLmFkZHIpOwo+PiArICAgICAg ICAgICAgICAgcHRyW2ldLm1hc2sgPSB3YV9yZWdzW2ldLm1hc2s7Cj4+ICsgICAgICAgfQo+PiAr Cj4+ICsgICAgICAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHZvaWQgY2hlY2tfd29ya2Fyb3VuZHMoZW51bSBvcGVyYXRpb24gb3AsIGludCBudW0p Cj4+ICt7Cj4+ICsgICAgICAgaW50IGk7Cj4+ICsgICAgICAgaW50IGZhaWxfY291bnQgPSAwOwo+ PiArICAgICAgIGludCBzdGF0dXMgPSAwOwo+PiArICAgICAgIHN0cnVjdCBpbnRlbF93YV9yZWcg KmN1cnJlbnRfd2EgPSBOVUxMOwo+PiArCj4+ICsgICAgICAgc3dpdGNoIChvcCkgewo+PiArICAg ICAgIGNhc2UgR1BVX1JFU0VUOgo+PiArICAgICAgICAgICAgICAgdGVzdF9oYW5nX2dwdSgpOwo+ PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsKPj4gKyAgICAgICBjYXNlIFNVU1BFTkRfUkVT VU1FOgo+PiArICAgICAgICAgICAgICAgdGVzdF9zdXNwZW5kX3Jlc3VtZSgpOwo+PiArICAgICAg ICAgICAgICAgYnJlYWs7Cj4+ICsKPj4gKyAgICAgICBkZWZhdWx0Ogo+PiArICAgICAgICAgICAg ICAgZmFpbF9jb3VudCA9IDE7Cj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gKyAgICAg ICB9Cj4+ICsKPj4gKyAgICAgICBjdXJyZW50X3dhID0gbWFsbG9jKG51bSAqIHNpemVvZigqY3Vy cmVudF93YSkpOwo+PiArICAgICAgIGlndF9hc3NlcnQoY3VycmVudF93YSk7Cj4+ICsgICAgICAg Z2V0X2N1cnJlbnRfd2FfZGF0YSgmY3VycmVudF93YSwgbnVtKTsKPj4gKwo+PiArICAgICAgIHBy aW50ZigiQWRkcmVzc1x0YmVmb3JlXHRcdGFmdGVyXHRcdHcvYSBtYXNrXHRyZXN1bHRcbiIpOwo+ PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgewo+PiArICAgICAgICAgICAgICAg c3RhdHVzID0gKGN1cnJlbnRfd2FbaV0udmFsdWUgJiBjdXJyZW50X3dhW2ldLm1hc2spICE9Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICh3YV9yZWdzW2ldLnZhbHVlICYgd2FfcmVnc1tpXS5t YXNrKTsKPj4gKyAgICAgICAgICAgICAgIGlmIChzdGF0dXMpCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICsrZmFpbF9jb3VudDsKPj4gKwo+PiArICAgICAgICAgICAgICAgcHJpbnRmKCIweCVY XHQweCUwOFhcdDB4JTA4WFx0MHglMDhYXHQlc1xuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICBjdXJyZW50X3dhW2ldLmFkZHIsIHdhX3JlZ3NbaV0udmFsdWUsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgY3VycmVudF93YVtpXS52YWx1ZSwgY3VycmVudF93YVtpXS5tYXNrLAo+PiArICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cyA/ICJmYWlsIiA6ICJzdWNjZXNzIik7Cj4+ICsgICAg ICAgfQo+PiArCj4+ICtvdXQ6Cj4+ICsgICAgICAgZnJlZShjdXJyZW50X3dhKTsKPj4gKyAgICAg ICBpZ3RfYXNzZXJ0KGZhaWxfY291bnQgPT0gMCk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKPj4gK3sKPj4gKyAgICAgICBpZ3Rfc3VidGVzdF9pbml0KGFy Z2MsIGFyZ3YpOwo+PiArCj4+ICsgICAgICAgaWd0X2ZpeHR1cmUgewo+PiArICAgICAgICAgICAg ICAgaW50IGk7Cj4+ICsgICAgICAgICAgICAgICBpbnQgcmV0Owo+PiArICAgICAgICAgICAgICAg RklMRSAqZmlsZTsKPj4gKyAgICAgICAgICAgICAgIGludCBjYXJkX2luZGV4Owo+PiArICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqZHJpX3BhdGggPSAiL3N5cy9rZXJuZWwvZGVidWcvZHJpIjsK Pj4gKyAgICAgICAgICAgICAgIGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKPj4gKyAgICAgICAgICAg ICAgIGNoYXIgKmxpbmUgPSBOVUxMOwo+PiArICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVfc2l6 ZTsKPj4gKwo+PiArICAgICAgICAgICAgICAgZHJtX2ZkID0gZHJtX29wZW5fYW55KCk7Cj4+ICsK Pj4gKyAgICAgICAgICAgICAgIGJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZHJt X2ZkLCA0MDk2KTsKPj4gKyAgICAgICAgICAgICAgIGRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZp ZChkcm1fZmQpOwo+PiArICAgICAgICAgICAgICAgYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9h bGxvYyhidWZtZ3IsIGRldmlkKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgY2FyZF9pbmRleCA9 IGRybV9nZXRfY2FyZCgpOwo+PiArICAgICAgICAgICAgICAgaWd0X2Fzc2VydChjYXJkX2luZGV4 ICE9IC0xKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgcmV0ID0gYXNwcmludGYoJmZpbGVuYW1l LCAiJXMvJWQvaW50ZWxfd2FfcmVnaXN0ZXJzIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRyaV9wYXRoLCBjYXJkX2luZGV4KTsKPj4gKyAgICAgICAgICAgICAgIGlndF9hc3Nl cnQocmV0ID4gMCk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGZpbGUgPSBmb3BlbihmaWxlbmFt ZSwgInIiKTsKPj4gKyAgICAgICAgICAgICAgIGlndF9hc3NlcnQoZmlsZSA+IDApOwo+PiArCj4+ ICsgICAgICAgICAgICAgICByZXQgPSBnZXRsaW5lKCZsaW5lLCAmbGluZV9zaXplLCBmaWxlKTsK Pj4gKyAgICAgICAgICAgICAgIGlndF9hc3NlcnQocmV0ID4gMCk7Cj4+ICsgICAgICAgICAgICAg ICBzc2NhbmYobGluZSwgIldvcmthcm91bmRzIGFwcGxpZWQ6ICVkIiwgJm51bV93YSk7Cj4+ICsg ICAgICAgICAgICAgICBpZ3RfYXNzZXJ0KG51bV93YSA+IDApOwo+PiArCj4+ICsgICAgICAgICAg ICAgICB3YV9yZWdzID0gbWFsbG9jKG51bV93YSAqIHNpemVvZigqd2FfcmVncykpOwo+PiArCj4+ ICsgICAgICAgICAgICAgICBpID0gMDsKPj4gKyAgICAgICAgICAgICAgIHdoaWxlKGdldGxpbmUo JmxpbmUsICZsaW5lX3NpemUsIGZpbGUpID4gMCkgewo+PiArICAgICAgICAgICAgICAgICAgICAg ICBzc2NhbmYobGluZSwgIjB4JVg6IDB4JTA4WCwgbWFzazogMHglMDhYIiwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZ3YV9yZWdzW2ldLmFkZHIsICZ3YV9yZWdzW2ldLnZhbHVl LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndhX3JlZ3NbaV0ubWFzayk7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICsraTsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+ PiArICAgICAgICAgICAgICAgZnJlZShsaW5lKTsKPj4gKyAgICAgICAgICAgICAgIGZjbG9zZShm aWxlKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBpZ3Rfc3VidGVzdCgiY2hlY2std29y a2Fyb3VuZC1kYXRhLWFmdGVyLXJlc2V0Iikgewo+PiArICAgICAgICAgICAgICAgaWYgKElTX0JS T0FEV0VMTChkZXZpZCkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX3dvcmthcm91 bmRzKEdQVV9SRVNFVCwgbnVtX3dhKTsKPj4gKyAgICAgICAgICAgICAgIGVsc2UKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWd0X3NraXBfb24oIk5vIFdvcmthcm91bmQgdGFibGUgYXZhaWxh YmxlISFcbiIpOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlndF9zdWJ0ZXN0KCJjaGVj ay13b3JrYXJvdW5kLWRhdGEtYWZ0ZXItc3VzcGVuZC1yZXN1bWUiKSB7Cj4+ICsgICAgICAgICAg ICAgICBpZiAoSVNfQlJPQURXRUxMKGRldmlkKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg Y2hlY2tfd29ya2Fyb3VuZHMoU1VTUEVORF9SRVNVTUUsIG51bV93YSk7Cj4+ICsgICAgICAgICAg ICAgICBlbHNlCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlndF9za2lwX29uKCJObyBXb3Jr YXJvdW5kIHRhYmxlIGF2YWlsYWJsZSEhXG4iKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAg ICBmcmVlKHdhX3JlZ3MpOwo+PiArCj4+ICsgICAgICAgY2xvc2UoZHJtX2ZkKTsKPj4gKyAgICAg ICBpZ3RfZXhpdCgpOwo+PiArfQo+PiAtLQo+PiAyLjAuNAo+Pgo+PiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0 Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+Cj4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==