From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2] tests/gem_error_capture: Initial testcase for error state capture/dump Date: Tue, 15 Apr 2014 17:49:36 +0300 Message-ID: <87mwfmodfj.fsf@gaia.fi.intel.com> References: <1397221193-12278-1-git-send-email-oscar.mateo@intel.com> <1397234892-13820-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 6C30B6E25C for ; Tue, 15 Apr 2014 07:50:09 -0700 (PDT) In-Reply-To: <1397234892-13820-1-git-send-email-oscar.mateo@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: oscar.mateo@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKb3NjYXIubWF0ZW9AaW50ZWwuY29tIHdyaXRlczoKCj4gRnJvbTogT3NjYXIgTWF0ZW8g PG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPgo+IEd1YXJhbnRlZXMgdGhhdCBlcnJvciBjYXB0dXJl IHdvcmtzIGF0IGEgdmVyeSBiYXNpYyBsZXZlbC4KPgo+IHYyOiBBbHNvIGNoZWNrIHRoYXQgdGhl IHJpbmcgb2JqZWN0IGNvbnRhaW5zIGEgcmVsb2Mgd2l0aCBNSV9CQl9TVEFSVAo+IGZvciB0aGUg cHJlc3VtZWQgYmF0Y2ggb2JqZWN0J3MgYWRkcmVzcy4KPgo+IFNpZ25lZC1vZmYtYnk6IE9zY2Fy IE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzLy5naXRpZ25vcmUg ICAgICAgICAgfCAgIDEgKwo+ICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgIHwgICAxICsKPiAg dGVzdHMvZ2VtX2Vycm9yX2NhcHR1cmUuYyB8IDI2OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2VydGlvbnMo KykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2dlbV9lcnJvcl9jYXB0dXJlLmMKPgo+IGRp ZmYgLS1naXQgYS90ZXN0cy8uZ2l0aWdub3JlIGIvdGVzdHMvLmdpdGlnbm9yZQo+IGluZGV4IDE0 NmJhYjAuLjk0NTU3NGMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvLmdpdGlnbm9yZQo+ICsrKyBiL3Rl c3RzLy5naXRpZ25vcmUKPiBAQCAtMjcsNiArMjcsNyBAQCBnZW1fY3R4X2NyZWF0ZQo+ICBnZW1f Y3R4X2V4ZWMKPiAgZ2VtX2RvdWJsZV9pcnFfbG9vcAo+ICBnZW1fZHVtbXlfcmVsb2NfbG9vcAo+ ICtnZW1fZXJyb3JfY2FwdHVyZQo+ICBnZW1fZXZpY3RfYWxpZ25tZW50Cj4gIGdlbV9ldmljdF9l dmVyeXRoaW5nCj4gIGdlbV9leGVjX2JhZF9kb21haW5zCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01h a2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggYmYwMmE0OC4u NjEyYmViNiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVz dHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC0yNCw2ICsyNCw3IEBAIFRFU1RTX3Byb2dzX00gPSBc Cj4gIAlnZW1fY3R4X2JhZF9leGVjIFwKPiAgCWdlbV9jdHhfZXhlYyBcCj4gIAlnZW1fZHVtbXlf cmVsb2NfbG9vcCBcCj4gKwlnZW1fZXJyb3JfY2FwdHVyZSBcCj4gIAlnZW1fZXZpY3RfYWxpZ25t ZW50IFwKPiAgCWdlbV9ldmljdF9ldmVyeXRoaW5nIFwKPiAgCWdlbV9leGVjX2JhZF9kb21haW5z IFwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX2Vycm9yX2NhcHR1cmUuYyBiL3Rlc3RzL2dlbV9l cnJvcl9jYXB0dXJlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjg4 ODQ1YzkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMvZ2VtX2Vycm9yX2NhcHR1cmUuYwo+ IEBAIC0wLDAgKzEsMjY5IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENv cnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0 Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIEF1dGhvcnM6 Cj4gKyAqICAgIE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4gKyAqCj4gKyAq Lwo+ICsKPiArLyoKPiArICogVGVzdGNhc2U6IENoZWNrIHdoZXRoZXIgYmFzaWMgZXJyb3Igc3Rh dGUgY2FwdHVyZS9kdW1wIG1lY2hhbmlzbSBpcyBjb3JyZWN0bHkKPiArICogd29ya2luZyBmb3Ig YWxsIHJpbmdzLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUg PHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8 aW50dHlwZXMuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5o Pgo+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gKyNpbmNsdWRlICJkcm0uaCIKPiArI2luY2x1 ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4gKyNpbmNsdWRlICJkcm10ZXN0LmgiCj4gKyNpbmNsdWRl ICJpbnRlbF9pby5oIgo+ICsjaW5jbHVkZSAiaWd0X2RlYnVnZnMuaCIKPiArCj4gKyNkZWZpbmUg TUFHSUNfTlVNQkVSIDB4MTAwMDEKPiArdWludDMyX3QgYmF0Y2hbNF0gPSB7TUlfTk9PUCwgTUlf QkFUQ0hfQlVGRkVSX0VORCwgTUFHSUNfTlVNQkVSLCBNQUdJQ19OVU1CRVJ9Owo+ICsKPiArc3Rh dGljIHZvaWQgc3RvcF9yaW5ncyh2b2lkKQo+ICt7Cj4gKwlpbnQgZmQ7Cj4gKwlzdGF0aWMgY29u c3QgY2hhciBidWZbXSA9ICIweGYiOwo+ICsKPiArCWZkID0gaWd0X2RlYnVnZnNfb3BlbigiaTkx NV9yaW5nX3N0b3AiLCBPX1dST05MWSk7Cj4gKwlpZ3RfYXNzZXJ0KGZkID49IDApOwo+ICsKPiAr CWlndF9hc3NlcnQod3JpdGUoZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpID09IHNpemVvZihidWYpKTsK PiArCj4gKwljbG9zZShmZCk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHJpbmdzX3N0b3BwZWQo dm9pZCkKPiArewo+ICsJaW50IGZkOwo+ICsJc3RhdGljIGNoYXIgYnVmWzEyOF07Cj4gKwl1bnNp Z25lZCBsb25nIGxvbmcgdmFsOwo+ICsKPiArCWZkID0gaWd0X2RlYnVnZnNfb3BlbigiaTkxNV9y aW5nX3N0b3AiLCBPX1JET05MWSk7Cj4gKwlpZ3RfYXNzZXJ0KGZkID49IDApOwo+ICsKPiArCWln dF9hc3NlcnQocmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSkgPiAwKTsKPiArCWNsb3NlKGZkKTsK PiArCj4gKwlzc2NhbmYoYnVmLCAiJWxseCIsICZ2YWwpOwo+ICsKPiArCXJldHVybiAoYm9vbCl2 YWw7Cj4gK30KClBsZWFzZSB1c2UgaWd0X3NldF9zdG9wX3JpbmdzKCkgYW5kIGlndF9nZXRfc3Rv cF9yaW5ncygpLgoKQWxzbyBjb25zaWRlciBzdG9wcGluZyBvbmx5IHRoZSByaW5nIHlvdSBhcmUg dGVzdGluZyBmb3IuCgo+ICtzdGF0aWMgdm9pZCBjbGVhcl9lcnJvcl9zdGF0ZSh2b2lkKQo+ICt7 Cj4gKwlpbnQgZmQ7Cj4gKwlzdGF0aWMgY29uc3QgY2hhciBidWZbXSA9ICIiOwo+ICsKPiArCWZk ID0gaWd0X2RlYnVnZnNfb3BlbigiaTkxNV9lcnJvcl9zdGF0ZSIsIE9fV1JPTkxZKTsKPiArCWln dF9hc3NlcnQoZmQgPj0gMCk7Cj4gKwo+ICsJaWd0X2Fzc2VydCh3cml0ZShmZCwgYnVmLCBzaXpl b2YoYnVmKSkgPT0gc2l6ZW9mKGJ1ZikpOwo+ICsJY2xvc2UoZmQpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBjaGVja19lcnJvcl9zdGF0ZShjb25zdCBjaGFyICpleHBlY3RlZF9yaW5nX25hbWUs Cj4gKwkJCQl1aW50NjRfdCBleHBlY3RlZF9vZmZzZXQpCj4gK3sKPiArCUZJTEUgKmZpbGU7Cj4g KwlpbnQgZGVidWdfZmQ7Cj4gKwljaGFyICpsaW5lID0gTlVMTDsKPiArCXNpemVfdCBsaW5lX3Np emUgPSAwOwo+ICsJY2hhciAqZGFzaGVzID0gTlVMTDsKPiArCWNoYXIgKnJpbmdfbmFtZSA9IE5V TEw7Cj4gKwlpbnQgYmJfbWF0Y2hlZCA9IDA7Cj4gKwl1aW50MzJfdCBndHRfb2Zmc2V0Owo+ICsJ Y2hhciBleHBlY3RlZF9saW5lWzMyXTsKPiArCWludCByZXFfbWF0Y2hlZCA9IDA7Cj4gKwlpbnQg cmVxdWVzdHM7Cj4gKwl1aW50MzJfdCBzZXFubywgdGFpbDsKPiArCWxvbmcgamlmZmllczsKPiAr CWludCByaW5nYnVmX21hdGNoZWQgPSAwOwo+ICsJdW5zaWduZWQgaW50IG9mZnNldCwgY29tbWFu ZCwgZXhwZWN0ZWRfYWRkciA9IDA7Cj4gKwlpbnQgaSwgaXRlbXM7Cj4gKwlib29sIGJiX29rID0g ZmFsc2UsIHJlcV9vayA9IGZhbHNlLCByaW5nYnVmX29rID0gZmFsc2U7Cj4gKwo+ICsJZGVidWdf ZmQgPSBpZ3RfZGVidWdmc19vcGVuKCJpOTE1X2Vycm9yX3N0YXRlIiwgT19SRE9OTFkpOwo+ICsJ aWd0X2Fzc2VydChkZWJ1Z19mZCA+PSAwKTsKPiArCWZpbGUgPSBmZG9wZW4oZGVidWdfZmQsICJy Iik7Cj4gKwo+ICsJd2hpbGUgKGdldGxpbmUoJmxpbmUsICZsaW5lX3NpemUsIGZpbGUpID4gMCkg ewo+ICsJCWRhc2hlcyA9IHN0cnN0cihsaW5lLCAiLS0tIik7Cj4gKwkJaWYgKCFkYXNoZXMpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlyaW5nX25hbWUgPSByZWFsbG9jKHJpbmdfbmFtZSwgZGFz aGVzIC0gbGluZSk7Cj4gKwkJc3RybmNweShyaW5nX25hbWUsIGxpbmUsIGRhc2hlcyAtIGxpbmUp Owo+ICsJCXJpbmdfbmFtZVtkYXNoZXMgLSBsaW5lIC0gMV0gPSAnXDAnOwo+ICsKPiArCQliYl9t YXRjaGVkID0gc3NjYW5mKGRhc2hlcywgIi0tLSBndHRfb2Zmc2V0ID0gMHglMDh4XG4iLAo+ICsJ CQkJJmd0dF9vZmZzZXQpOwo+ICsJCWlmIChiYl9tYXRjaGVkID09IDEpIHsKPiArCQkJaWd0X2Fz c2VydChzdHJzdHIocmluZ19uYW1lLCBleHBlY3RlZF9yaW5nX25hbWUpKTsKPiArCQkJaWd0X2Fz c2VydChndHRfb2Zmc2V0ID09IGV4cGVjdGVkX29mZnNldCk7Cj4gKwo+ICsJCQlmb3IgKGkgPSAw OyBpIDwgc2l6ZW9mKGJhdGNoKSAvIDQ7IGkrKykgewo+ICsJCQkJaWd0X2Fzc2VydChnZXRsaW5l KCZsaW5lLCAmbGluZV9zaXplLCBmaWxlKSA+IDApOwo+ICsJCQkJc25wcmludGYoZXhwZWN0ZWRf bGluZSwgc2l6ZW9mKGV4cGVjdGVkX2xpbmUpLCAiJTA4eCA6ICAlMDh4IiwKPiArCQkJCQkJNCpp LCBiYXRjaFtpXSk7Cj4gKwkJCQlpZ3RfYXNzZXJ0KHN0cnN0cihsaW5lLCBleHBlY3RlZF9saW5l KSk7Cj4gKwkJCX0KPiArCQkJYmJfb2sgPSB0cnVlOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4g Kwo+ICsJCXJlcV9tYXRjaGVkID0gc3NjYW5mKGRhc2hlcywgIi0tLSAlZCByZXF1ZXN0c1xuIiwK PiArCQkJCSZyZXF1ZXN0cyk7Cj4gKwkJaWYgKHJlcV9tYXRjaGVkID09IDEpIHsKPiArCQkJaWd0 X2Fzc2VydChzdHJzdHIocmluZ19uYW1lLCBleHBlY3RlZF9yaW5nX25hbWUpKTsKPiArCQkJaWd0 X2Fzc2VydChyZXF1ZXN0cyA9PSAxKTsKPiArCj4gKwkJCWlndF9hc3NlcnQoZ2V0bGluZSgmbGlu ZSwgJmxpbmVfc2l6ZSwgZmlsZSkgPiAwKTsKPiArCQkJaXRlbXMgPSBzc2NhbmYobGluZSwgIiAg c2Vxbm8gMHglMDh4LCBlbWl0dGVkICVsZCwgdGFpbCAweCUwOHhcbiIsCj4gKwkJCQkJJnNlcW5v LCAmamlmZmllcywgJnRhaWwpOwo+ICsJCQlpZ3RfYXNzZXJ0KGl0ZW1zID09IDMpOwo+ICsJCQly ZXFfb2sgPSB0cnVlOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCXJpbmdidWZfbWF0 Y2hlZCA9IHNzY2FuZihkYXNoZXMsICItLS0gcmluZ2J1ZmZlciA9IDB4JTA4eFxuIiwKPiArCQkJ CSZndHRfb2Zmc2V0KTsKPiArCQlpZiAocmluZ2J1Zl9tYXRjaGVkID09IDEpIHsKPiArCQkJaWYg KCFzdHJzdHIocmluZ19uYW1lLCBleHBlY3RlZF9yaW5nX25hbWUpKQo+ICsJCQkJY29udGludWU7 Cj4gKwkJCWlndF9hc3NlcnQocmVxX29rKTsKPiArCj4gKwkJCWZvciAoaSA9IDA7IGkgPCB0YWls IC8gNDsgaSsrKSB7Cj4gKwkJCQlpZ3RfYXNzZXJ0KGdldGxpbmUoJmxpbmUsICZsaW5lX3NpemUs IGZpbGUpID4gMCk7Cj4gKwkJCQlpdGVtcyA9IHNzY2FuZihsaW5lLCAiJTA4eCA6ICAlMDh4XG4i LAo+ICsJCQkJCQkmb2Zmc2V0LCAmY29tbWFuZCk7Cj4gKwkJCQlpZ3RfYXNzZXJ0KGl0ZW1zID09 IDIpOwo+ICsJCQkJaWYgKChjb21tYW5kICYgMHgxRjgwMDAwMCkgPT0gTUlfQkFUQ0hfQlVGRkVS X1NUQVJUKSB7Cj4gKwkJCQkJaWd0X2Fzc2VydChnZXRsaW5lKCZsaW5lLCAmbGluZV9zaXplLCBm aWxlKSA+IDApOwo+ICsJCQkJCWl0ZW1zID0gc3NjYW5mKGxpbmUsICIlMDh4IDogICUwOHhcbiIs Cj4gKwkJCQkJCQkmb2Zmc2V0LCAmZXhwZWN0ZWRfYWRkcik7Cj4gKwkJCQkJaWd0X2Fzc2VydChp dGVtcyA9PSAyKTsKClNob3VsZCBjaGVjayBmb3IgTUFHSUNfTlVNQkVSIGhlcmU/CgotTWlrYQoK PiArCQkJCQlpKys7Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCQkJaWd0X2Fzc2VydChleHBlY3RlZF9h ZGRyID09IGV4cGVjdGVkX29mZnNldCk7Cj4gKwkJCXJpbmdidWZfb2sgPSB0cnVlOwo+ICsJCQlj b250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCWlmIChiYl9vayAmJiByZXFfb2sgJiYgcmluZ2J1Zl9v aykKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwlpZ3RfYXNzZXJ0KGJiX29rICYmIHJlcV9vayAmJiBy aW5nYnVmX29rKTsKPiArCj4gKwlmcmVlKGxpbmUpOwo+ICsJZnJlZShyaW5nX25hbWUpOwo+ICsJ Y2xvc2UoZGVidWdfZmQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0ZXN0KGludCBmZCwgdWlu dDMyX3QgaGFuZGxlLCB1bnNpZ25lZCByaW5nX2lkLCBjb25zdCBjaGFyICpyaW5nX25hbWUpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiArCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIGV4ZWM7Cj4gKwl1aW50NjRfdCBwcmVzdW1lZF9v ZmZzZXQ7Cj4gKwo+ICsJZ2VtX3JlcXVpcmVfcmluZyhmZCwgcmluZ19pZCk7Cj4gKwo+ICsJY2xl YXJfZXJyb3Jfc3RhdGUoKTsKPiArCj4gKwlleGVjLmhhbmRsZSA9IGhhbmRsZTsKPiArCWV4ZWMu cmVsb2NhdGlvbl9jb3VudCA9IDA7Cj4gKwlleGVjLnJlbG9jc19wdHIgPSAwOwo+ICsJZXhlYy5h bGlnbm1lbnQgPSAwOwo+ICsJZXhlYy5vZmZzZXQgPSAwOwo+ICsJZXhlYy5mbGFncyA9IDA7Cj4g KwlleGVjLnJzdmQxID0gMDsKPiArCWV4ZWMucnN2ZDIgPSAwOwo+ICsKPiArCWV4ZWNidWYuYnVm ZmVyc19wdHIgPSAodWludHB0cl90KSZleGVjOwo+ICsJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAx Owo+ICsJZXhlY2J1Zi5iYXRjaF9zdGFydF9vZmZzZXQgPSAwOwo+ICsJZXhlY2J1Zi5iYXRjaF9s ZW4gPSAxNjsKPiArCWV4ZWNidWYuY2xpcHJlY3RzX3B0ciA9IDA7Cj4gKwlleGVjYnVmLm51bV9j bGlwcmVjdHMgPSAwOwo+ICsJZXhlY2J1Zi5EUjEgPSAwOwo+ICsJZXhlY2J1Zi5EUjQgPSAwOwo+ ICsJZXhlY2J1Zi5mbGFncyA9IHJpbmdfaWQ7Cj4gKwlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250 ZXh0X2lkKGV4ZWNidWYsIDApOwo+ICsJZXhlY2J1Zi5yc3ZkMiA9IDA7Cj4gKwo+ICsJZ2VtX2V4 ZWNidWYoZmQsICZleGVjYnVmKTsKPiArCWdlbV9zeW5jKGZkLCBoYW5kbGUpOwo+ICsKPiArCXBy ZXN1bWVkX29mZnNldCA9IGV4ZWMub2Zmc2V0Owo+ICsKPiArCXN0b3BfcmluZ3MoKTsKPiArCj4g KwlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwo+ICsJZ2VtX3N5bmMoZmQsIGhhbmRsZSk7Cj4g Kwo+ICsJaWd0X2Fzc2VydChyaW5nc19zdG9wcGVkKCkgPT0gZmFsc2UpOwo+ICsJaWd0X2Fzc2Vy dChwcmVzdW1lZF9vZmZzZXQgPT0gZXhlYy5vZmZzZXQpOwo+ICsKPiArCWNoZWNrX2Vycm9yX3N0 YXRlKHJpbmdfbmFtZSwgZXhlYy5vZmZzZXQpOwo+ICt9Cj4gKwo+ICt1aW50MzJfdCBoYW5kbGU7 Cj4gK2ludCBmZDsKPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWlndF9maXh0dXJlIHsKPiArCQlm ZCA9IGRybV9vcGVuX2FueSgpOwo+ICsKPiArCQloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2 KTsKPiArCQlnZW1fd3JpdGUoZmQsIGhhbmRsZSwgMCwgYmF0Y2gsIHNpemVvZihiYXRjaCkpOwo+ ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0KCJyZW5kZXIiKQo+ICsJCXRlc3QoZmQsIGhhbmRsZSwg STkxNV9FWEVDX1JFTkRFUiwgInJlbmRlciByaW5nIik7Cj4gKwo+ICsJaWd0X3N1YnRlc3QoImJz ZCIpCj4gKwkJdGVzdChmZCwgaGFuZGxlLCBJOTE1X0VYRUNfQlNELCAiYnNkIHJpbmciKTsKPiAr Cj4gKwlpZ3Rfc3VidGVzdCgiYmx0IikKPiArCQl0ZXN0KGZkLCBoYW5kbGUsIEk5MTVfRVhFQ19C TFQsICJibGl0dGVyIHJpbmciKTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgidmVib3giKQo+ICsJCXRl c3QoZmQsIGhhbmRsZSwgSTkxNV9FWEVDX1ZFQk9YLCAidmlkZW8gZW5oYW5jZW1lbnQgcmluZyIp Owo+ICsKPiArCWlndF9maXh0dXJlIHsKPiArCQlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7Cj4gKwo+ ICsJCWNsb3NlKGZkKTsKPiArCX0KPiArfQo+IC0tIAo+IDEuOS4wCj4KPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=