From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH igt] tests: Add gem_busy Date: Fri, 15 Jan 2016 14:45:49 +0000 Message-ID: <5699061D.5070005@linux.intel.com> References: <20160115122730.GG8308@nuc-i3427.alporthouse.com> <1452866003-17538-1-git-send-email-chris@chris-wilson.co.uk> 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 ESMTP id A492B6EB8D for ; Fri, 15 Jan 2016 06:45:51 -0800 (PST) In-Reply-To: <1452866003-17538-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE1LzAxLzE2IDEzOjUzLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gRXhlcmNpc2UgdGhlIGJ1 c3ktaW9jdGwgYW5kIHZlcmlmeSBpdCByZXBvcnRzIHRoZSByaWdodCBhY3RpdmUgZW5naW5lcwo+ IHVzaW5nIHRoZSBleGVjYnVmZmVyIG5vdGF0aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICB0ZXN0cy9NYWtlZmls ZS5zb3VyY2VzIHwgICAxICsKPiAgIHRlc3RzL2dlbV9idXN5LmMgICAgICAgfCAyMzMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMiBmaWxlcyBj aGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2dl bV9idXN5LmMKPgo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+IGluZGV4IGQyYzdkNmYuLjU0NWFjYTAgMTAwNjQ0Cj4gLS0tIGEv dGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBA QCAtMTEsNiArMTEsNyBAQCBURVNUU19wcm9nc19NID0gXAo+ICAgCWRydl9oYW5nbWFuIFwKPiAg IAlnZW1fYmFkX3JlbG9jIFwKPiAgIAlnZW1fYmFzaWMgXAo+ICsJZ2VtX2J1c3kgXAo+ICAgCWdl bV9jYWNoaW5nIFwKPiAgIAlnZW1fY2xvc2VfcmFjZSBcCj4gICAJZ2VtX2NvbmN1cnJlbnRfYmxp dCBcCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9idXN5LmMgYi90ZXN0cy9nZW1fYnVzeS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5jNmI4YThiCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL3Rlc3RzL2dlbV9idXN5LmMKPiBAQCAtMCwwICsxLDIzMyBAQAo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgoKMjAxNgoKPiArICoKPiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAq IElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaWd0LmgiCj4gKwo+ICsv KiBFeGVyY2lzZSB0aGUgYnVzeS1pb2N0bCwgZW5zdXJpbmcgdGhlIEFCSSBpcyBuZXZlciBicm9r ZW4gKi8KPiArSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJhc2ljIGNoZWNrIG9mIGJ1c3ktaW9jdGwg QUJJLiIpOwo+ICsKPiArZW51bSB7IFRFU1QgPSAwLCBCVVNZLCBCQVRDSCB9Owo+ICsKPiArc3Rh dGljIHZvaWQgX19nZW1fYnVzeShpbnQgZmQsCj4gKwkJICAgICAgIHVpbnQzMl90IGhhbmRsZSwK PiArCQkgICAgICAgdWludDMyX3QgKnJlYWQsCj4gKwkJICAgICAgIHVpbnQzMl90ICp3cml0ZSkK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9idXN5IGJ1c3k7Cj4gKwo+ICsJbWVtc2V0KCZi dXN5LCAwLCBzaXplb2YoYnVzeSkpOwo+ICsJYnVzeS5oYW5kbGUgPSBoYW5kbGU7Cj4gKwo+ICsJ ZG9faW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZLCAmYnVzeSk7Cj4gKwo+ICsJKndy aXRlID0gYnVzeS5idXN5ICYgMHhmZmZmOwo+ICsJKnJlYWQgPSBidXN5LmJ1c3kgPj4gMTY7Cj4g K30KPiArCj4gK3N0YXRpYyB1aW50MzJfdCBidXN5X2JsdChpbnQgZmQpCj4gK3sKPiArCWNvbnN0 IGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICsJY29uc3Qg aW50IGhhc182NGJpdF9yZWxvYyA9IGdlbiA+PSA4Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjYnVmZmVyMiBleGVjYnVmOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg b2JqZWN0WzJdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9j WzIwXSwgKnI7Cj4gKwl1aW50MzJfdCByZWFkLCB3cml0ZTsKPiArCXVpbnQzMl90ICptYXA7Cj4g KwlpbnQgZmFjdG9yID0gMTA7Cj4gKwlpbnQgaSA9IDA7Cj4gKwo+ICsJbWVtc2V0KG9iamVjdCwg MCwgc2l6ZW9mKG9iamVjdCkpOwo+ICsJb2JqZWN0WzBdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQs IDEwMjQqMTAyNCk7Cj4gKwlvYmplY3RbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7 Cj4gKwo+ICsJciA9IG1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJlbG9jKSk7Cj4gKwltYXAgPSBn ZW1fbW1hcF9fY3B1KGZkLCBvYmplY3RbMV0uaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsK PiArCWdlbV9zZXRfZG9tYWluKGZkLCBvYmplY3RbMV0uaGFuZGxlLAo+ICsJCSAgICAgICBJOTE1 X0dFTV9ET01BSU5fQ1BVLCBJOTE1X0dFTV9ET01BSU5fQ1BVKTsKPiArCj4gKyNkZWZpbmUgQ09Q WV9CTFRfQ01ECQkoMjw8Mjl8MHg1Mzw8MjJ8MHg2KQo+ICsjZGVmaW5lIEJMVF9XUklURV9BTFBI QQkJKDE8PDIxKQo+ICsjZGVmaW5lIEJMVF9XUklURV9SR0IJCSgxPDwyMCkKPiArCXdoaWxlIChm YWN0b3ItLSkgewo+ICsJCS8qIFhZX1NSQ19DT1BZICovCj4gKwkJbWFwW2krK10gPSBDT1BZX0JM VF9DTUQgfCBCTFRfV1JJVEVfQUxQSEEgfCBCTFRfV1JJVEVfUkdCOwo+ICsJCWlmIChoYXNfNjRi aXRfcmVsb2MpCj4gKwkJCW1hcFtpLTFdICs9IDI7Cj4gKwkJbWFwW2krK10gPSAweGNjIDw8IDE2 IHwgMSA8PCAyNSB8IDEgPDwgMjQgfCAoNCoxMDI0KTsKPiArCQltYXBbaSsrXSA9IDA7Cj4gKwkJ bWFwW2krK10gPSAyNTYgPDwgMTYgfCAxMDI0Owo+ICsKPiArCQlyLT5vZmZzZXQgPSBpICogc2l6 ZW9mKHVpbnQzMl90KTsKPiArCQlyLT50YXJnZXRfaGFuZGxlID0gb2JqZWN0WzBdLmhhbmRsZTsK PiArCQlyLT5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOwo+ICsJCXItPndy aXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwkJcisrOwo+ICsJCW1hcFtp KytdID0gMDsKPiArCQlpZiAoaGFzXzY0Yml0X3JlbG9jKQo+ICsJCQltYXBbaSsrXSA9IDA7Cj4g Kwo+ICsJCW1hcFtpKytdID0gMDsKPiArCQltYXBbaSsrXSA9IDQwOTY7Cj4gKwo+ICsJCXItPm9m ZnNldCA9IGkgKiBzaXplb2YodWludDMyX3QpOwo+ICsJCXItPnRhcmdldF9oYW5kbGUgPSBvYmpl Y3RbMF0uaGFuZGxlOwo+ICsJCXItPnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5E RVI7Cj4gKwkJci0+d3JpdGVfZG9tYWluID0gMDsKPiArCQlyKys7Cj4gKwkJbWFwW2krK10gPSAw Owo+ICsJCWlmIChoYXNfNjRiaXRfcmVsb2MpCj4gKwkJCW1hcFtpKytdID0gMDsKPiArCX0KPiAr CW1hcFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArCW11bm1hcChtYXAsIDQwOTYpOwo+ ICsKPiArCW9iamVjdFsxXS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdClyZWxvYzsKPiArCW9iamVj dFsxXS5yZWxvY2F0aW9uX2NvdW50ID0gciAtIHJlbG9jOwo+ICsKPiArCW1lbXNldCgmZXhlY2J1 ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKPiArCWV4ZWNidWYuYnVmZmVyc19wdHIgPSAodW5zaWdu ZWQgbG9uZylvYmplY3Q7Cj4gKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDI7Cj4gKwlpZiAoZ2Vu ID49IDYpCj4gKwkJZXhlY2J1Zi5mbGFncyA9IEk5MTVfRVhFQ19CTFQ7Cj4gKwlnZW1fZXhlY2J1 ZihmZCwgJmV4ZWNidWYpOwo+ICsKPiArCV9fZ2VtX2J1c3koZmQsIG9iamVjdFswXS5oYW5kbGUs ICZyZWFkLCAmd3JpdGUpOwo+ICsJaWd0X2Fzc2VydF9lcShyZWFkLCAxIDw8IHdyaXRlKTsKPiAr CWlndF9hc3NlcnRfZXEod3JpdGUsIGdlbiA+PSA2ID8gSTkxNV9FWEVDX0JMVCA6IEk5MTVfRVhF Q19SRU5ERVIpOwoKV2lsbCB0aGUgYmxpdHMgYmUgbG9uZyBlbm91Z2ggZm9yIHRoaXMgdG8gYmUg c3RhYmxlPwoKPiArCj4gKwlpZ3RfZGVidWcoIkNyZWF0ZWQgYnVzeSBoYW5kbGUgJWRcbiIsIG9i amVjdFswXS5oYW5kbGUpOwo+ICsJZ2VtX2Nsb3NlKGZkLCBvYmplY3RbMV0uaGFuZGxlKTsKPiAr CXJldHVybiBvYmplY3RbMF0uaGFuZGxlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IF9fZ2VtX2V4 ZWNidWYoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICplYikKPiArewo+ ICsJaW50IGVyciA9IDA7Cj4gKwlpZiAoZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9F WEVDQlVGRkVSMiwgZWIpKQo+ICsJCWVyciA9IC1lcnJubzsKPiArCXJldHVybiBlcnI7Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIGV4ZWNfbm9vcChpbnQgZmQsCj4gKwkJICAgICAgdWludDMyX3Qg KmhhbmRsZXMsCj4gKwkJICAgICAgdW5zaWduZWQgcmluZywKPiArCQkgICAgICBib29sIHdyaXRl KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBleGVjWzNdOwo+ICsKPiArCW1lbXNldChl eGVjLCAwLCBzaXplb2YoZXhlYykpOwo+ICsJZXhlY1swXS5oYW5kbGUgPSBoYW5kbGVzW0JVU1ld Owo+ICsJZXhlY1sxXS5oYW5kbGUgPSBoYW5kbGVzW1RFU1RdOwo+ICsJaWYgKHdyaXRlKQo+ICsJ CWV4ZWNbMV0uZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfV1JJVEU7Cj4gKwlleGVjWzJdLmhhbmRsZSA9 IGhhbmRsZXNbQkFUQ0hdOwo+ICsKPiArCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNi dWYpKTsKPiArCWV4ZWNidWYuYnVmZmVyc19wdHIgPSAodWludHB0cl90KWV4ZWM7Cj4gKwlleGVj YnVmLmJ1ZmZlcl9jb3VudCA9IDM7Cj4gKwlleGVjYnVmLmZsYWdzID0gcmluZzsKPiArCWlndF9k ZWJ1ZygiUXVldWluZyBoYW5kbGUgZm9yICVzIG9uIHJpbmcgJWRcbiIsCj4gKwkJICB3cml0ZSA/ ICJ3cml0aW5nIiA6ICJyZWFkaW5nIiwgcmluZyAmIDB4Nyk7Cj4gKwlyZXR1cm4gX19nZW1fZXhl Y2J1ZihmZCwgJmV4ZWNidWYpID09IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHRlc3Rfcmlu ZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVpbnQzMl90IGZsYWdzKQo+ICt7Cj4gKwl1aW50MzJf dCBiYmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+ICsJdWludDMyX3QgaGFuZGxlWzNdOwo+ICsJ dWludDMyX3QgcmVhZCwgd3JpdGU7Cj4gKwl1aW50MzJfdCBhY3RpdmU7Cj4gKwl1bnNpZ25lZCBp Owo+ICsKPiArCWhhbmRsZVtURVNUXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsJaGFuZGxl W0JBVENIXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsJZ2VtX3dyaXRlKGZkLCBoYW5kbGVb QkFUQ0hdLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7Cj4gKwo+ICsJLyogQ3JlYXRlIGEgbG9uZyBy dW5uaW5nIGJhdGNoIHdoaWNoIHdlIGNhbiB1c2UgdG8gaG9nIHRoZSBHUFUgKi8KPiArCWhhbmRs ZVtCVVNZXSA9IGJ1c3lfYmx0KGZkKTsKPiArCj4gKwkvKiBRdWV1ZSBhIGJhdGNoIGFmdGVyIHRo ZSBidXN5LCBpdCBzaG91bGQgYmxvY2sgYW5kIHJlbWFpbiAiYnVzeSIgKi8KPiArCWlndF9yZXF1 aXJlKGV4ZWNfbm9vcChmZCwgaGFuZGxlLCByaW5nIHwgZmxhZ3MsIGZhbHNlKSk7CgpUb28gYmFk IHdlIGRvbid0IGdldCBFTk9ERVYgYnV0IGEgYm9yaW5nIG9sZCBFSU5WQUwgb24gIUhBU19CU0Qy IC0gdGhpcyAKd2FzIHRoaXMgY2FuIGJlIHRvbyBza2lwIGhhcHB5IGlmIHNvbWV0aGluZyBlbHNl IGdldHMgYnJva2VuLiA6KAoKPiArCV9fZ2VtX2J1c3koZmQsIGhhbmRsZVtURVNUXSwgJnJlYWQs ICZ3cml0ZSk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKHJlYWQsIDEgPDwgcmluZyk7Cj4gKwlpZ3RfYXNz ZXJ0X2VxKHdyaXRlLCAwKTsKPiArCj4gKwkvKiBOb3cgcXVldWUgaXQgb24gYWxsIGF2YWlsYWJs ZSByaW5ncywgYW5kIHNldCBpdCBhcyB3cml0ZSBvbiB0aGlzICovCj4gKwlhY3RpdmUgPSAwOwo+ ICsJZm9yIChpID0gSTkxNV9FWEVDX1JFTkRFUjsgaSA8PSBJOTE1X0VYRUNfVkVCT1g7IGkrKykg ewo+ICsJCWlmIChleGVjX25vb3AoZmQsIGhhbmRsZSwgaSB8IGZsYWdzLCBpID09IHJpbmcpKQo+ ICsJCQlhY3RpdmUgfD0gMSA8PCBpOwo+ICsJfQo+ICsJX19nZW1fYnVzeShmZCwgaGFuZGxlW1RF U1RdLCAmcmVhZCwgJndyaXRlKTsKPiArCWlndF9hc3NlcnRfZXEocmVhZCwgYWN0aXZlKTsKPiAr CWlndF9hc3NlcnRfZXEod3JpdGUsIHJpbmcpOwo+ICsKPiArCS8qIENoZWNrIHRoYXQgb3VyIGxv bmcgYmF0Y2ggd2FzIGxvbmcgZW5vdWdoICovCj4gKwlfX2dlbV9idXN5KGZkLCBoYW5kbGVbQlVT WV0sICZyZWFkLCAmd3JpdGUpOwo+ICsJaWd0X2Fzc2VydCh3cml0ZSk7Cj4gKwo+ICsJZm9yIChp ID0gVEVTVDsgaSA8PSBCQVRDSDsgaSsrKQo+ICsJCWdlbV9jbG9zZShmZCwgaGFuZGxlW2ldKTsK PiArfQo+ICsKPiArc3RhdGljIGJvb2wgaGFzX3NlbWFwaG9yZXMoaW50IGZkKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gZ3A7Cj4gKwlpbnQgdmFsID0gLTE7Cj4gKwo+ICsJbWVt c2V0KCZncCwgMCwgc2l6ZW9mKGdwKSk7Cj4gKwlncC5wYXJhbSA9IEk5MTVfUEFSQU1fSEFTX1NF TUFQSE9SRVM7Cj4gKwlncC52YWx1ZSA9ICZ2YWw7Cj4gKwo+ICsJZHJtSW9jdGwoZmQsIERSTV9J T0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3ApOwo+ICsJZXJybm8gPSAwOwo+ICsKPiArCXJldHVybiB2 YWwgPiAwOwo+ICt9Cj4gKwo+ICtpZ3RfbWFpbgo+ICt7Cj4gKwlpbnQgZmQgPSAtMTsKPiArCj4g KwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWZk ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gKwkJaWd0X3JlcXVpcmUoaGFzX3Nl bWFwaG9yZXMoZmQpKTsKCkNvcHkmcGFzdGUsIG9yPwoKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVz dCgicmVuZGVyIikKPiArCQl0ZXN0X3JpbmcoZmQsIEk5MTVfRVhFQ19SRU5ERVIsIDApOwo+ICsJ aWd0X3N1YnRlc3QoImJzZCIpCj4gKwkJdGVzdF9yaW5nKGZkLCBJOTE1X0VYRUNfQlNELCAxPDwx MyAvKkk5MTVfRVhFQ19CU0RfUklORzEqLyk7Cj4gKwlpZ3Rfc3VidGVzdCgiYnNkMiIpCj4gKwkJ dGVzdF9yaW5nKGZkLCBJOTE1X0VYRUNfQlNELCAyPDwxMyAvKkk5MTVfRVhFQ19CU0RfUklORzIq Lyk7Cj4gKwlpZ3Rfc3VidGVzdCgiYmx0IikKPiArCQl0ZXN0X3JpbmcoZmQsIEk5MTVfRVhFQ19C TFQsIDApOwo+ICsJaWd0X3N1YnRlc3QoInZlYm94IikKPiArCQl0ZXN0X3JpbmcoZmQsIEk5MTVf RVhFQ19WRUJPWCwgMCk7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUKPiArCQljbG9zZShmZCk7Cj4gK30K PgoKTG9va3MgT0sgdG8gbWUsCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51 cnN1bGluQGludGVsLmNvbT4KCk1heWJlIG1hcmsgYXMgYmFzaWMgc2luY2UgaXQgaXMgQUJJPwoK UmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=