From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20180322172417.13414-1-tvrtko.ursulin@linux.intel.com> <20180322172417.13414-2-tvrtko.ursulin@linux.intel.com> <152174067840.23562.6734615924357718746@mail.alporthouse.com> From: Tvrtko Ursulin Message-ID: <5d402e9e-49d6-657d-aef5-77941b67e2cd@linux.intel.com> Date: Fri, 23 Mar 2018 09:46:49 +0000 MIME-Version: 1.0 In-Reply-To: <152174067840.23562.6734615924357718746@mail.alporthouse.com> Content-Language: en-GB Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 2/3] tests/gem_eio: Speed up test execution List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , Tvrtko Ursulin , igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: Ck9uIDIyLzAzLzIwMTggMTc6NDQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTAzLTIyIDE3OjI0OjE2KQo+PiBGcm9tOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pgo+PiBJZiB3ZSBzdG9wIHJlbHlpbmcgb24gcmVn dWxhciBHUFUgaGFuZ3MgdG8gYmUgZGV0ZWN0ZWQsIGJ1dCB0cmlnZ2VyIHRoZW0KPj4gbWFudWFs bHkgYXMgc29vbiBhcyB3ZSBrbm93IG91ciBiYXRjaCBvZiBpbnRlcmVzdCBpcyBhY3R1YWxseSBl eGVjdXRpbmcKPj4gb24gdGhlIEdQVSwgd2UgY2FuIGRyYW1hdGljYWxseSBzcGVlZCB1cCB2YXJp b3VzIHN1YnRlc3RzLgo+Pgo+PiBUaGlzIGlzIGVuYWJsZWQgYnkgdGhlIHBvbGxhYmxlIHNwaW4g YmF0Y2ggYWRkZWQgaW4gdGhlIHByZXZpb3VzIHBhdGNoLgo+Pgo+PiB2MjoKPj4gICAqIFRlc3Qg Z2VtX3dhaXQgYWZ0ZXIgcmVzZXQvd2VkZ2UgYW5kIHdpdGggcmVzZXQvd2VkZ2UgYWZ0ZXIgYSBm ZXcKPj4gICAgIHByZWRlZmluZWQgaW50ZXJ2YWxzIHNpbmNlIGdlbV93YWl0IGludm9jYXRpb24u IChDaHJpcyBXaWxzb24pCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+IFN1Z2dlc3RlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4+IENjOiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8u YXJnZW56aWFub0BpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGxpYi50YXIgICAgICAgICB8IEJpbiAw IC0+IDEwMjQwMCBieXRlcwo+PiAgIHRlc3RzL2dlbV9laW8uYyB8IDIxNCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+PiAgIDIgZmlsZXMg Y2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQo+PiAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWIudGFyCj4+Cj4+IGRpZmYgLS1naXQgYS90ZXN0cy9nZW1fZWlvLmMgYi90 ZXN0cy9nZW1fZWlvLmMKPj4gaW5kZXggNGJjYzU5MzdkYjM5Li4yZjllOTU0MDg1ZWMgMTAwNjQ0 Cj4+IC0tLSBhL3Rlc3RzL2dlbV9laW8uYwo+PiArKysgYi90ZXN0cy9nZW1fZWlvLmMKPj4gQEAg LTM1LDYgKzM1LDcgQEAKPj4gICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KPj4gICAjaW5jbHVkZSA8 ZXJybm8uaD4KPj4gICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4+ICsjaW5jbHVkZSA8c2lnbmFs Lmg+Cj4+ICAgCj4+ICAgI2luY2x1ZGUgPGRybS5oPgo+PiAgIAo+PiBAQCAtNzEsMjYgKzcyLDIz IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJfcmVzZXQoaW50IGZkKQo+PiAgICAgICAgICBnZW1fcXVp ZXNjZW50X2dwdShmZCk7Cj4+ICAgfQo+PiAgIAo+PiAtc3RhdGljIHZvaWQgd2VkZ2VfZ3B1KGlu dCBmZCkKPj4gK3N0YXRpYyB2b2lkIG1hbnVhbF9oYW5nKGludCBkcm1fZmQpCj4+ICAgewo+PiAt ICAgICAgIC8qIEZpcnN0IGlkbGUgdGhlIEdQVSB0aGVuIGRpc2FibGUgR1BVIHJlc2V0cyBiZWZv cmUgaW5qZWN0aW5nIGEgaGFuZyAqLwo+PiAtICAgICAgIGdlbV9xdWllc2NlbnRfZ3B1KGZkKTsK Pj4gLQo+PiAtICAgICAgIGlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkpOwo+ PiArICAgICAgIGludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIoZHJtX2ZkKTsKPj4gICAKPj4gLSAg ICAgICBpZ3RfZGVidWcoIldlZGdpbmcgR1BVIGJ5IGluamVjdGluZyBoYW5nXG4iKTsKPj4gLSAg ICAgICBpZ3RfcG9zdF9oYW5nX3JpbmcoZmQsIGlndF9oYW5nX3JpbmcoZmQsIEk5MTVfRVhFQ19E RUZBVUxUKSk7Cj4+ICsgICAgICAgaWd0X3N5c2ZzX3NldChkaXIsICJpOTE1X3dlZGdlZCIsICIt MSIpOwo+PiAgIAo+PiAtICAgICAgIGlndF9hc3NlcnQoaTkxNV9yZXNldF9jb250cm9sKHRydWUp KTsKPj4gKyAgICAgICBjbG9zZShkaXIpOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyB2b2lkIHdl ZGdlbWUoaW50IGRybV9mZCkKPj4gK3N0YXRpYyB2b2lkIHdlZGdlX2dwdShpbnQgZmQpCj4+ICAg ewo+PiAtICAgICAgIGludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIoZHJtX2ZkKTsKPj4gLQo+PiAt ICAgICAgIGlndF9zeXNmc19zZXQoZGlyLCAiaTkxNV93ZWRnZWQiLCAiLTEiKTsKPj4gKyAgICAg ICAvKiBGaXJzdCBpZGxlIHRoZSBHUFUgdGhlbiBkaXNhYmxlIEdQVSByZXNldHMgYmVmb3JlIGlu amVjdGluZyBhIGhhbmcgKi8KPj4gKyAgICAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4+ICAg Cj4+IC0gICAgICAgY2xvc2UoZGlyKTsKPj4gKyAgICAgICBpZ3RfcmVxdWlyZShpOTE1X3Jlc2V0 X2NvbnRyb2woZmFsc2UpKTsKPj4gKyAgICAgICBtYW51YWxfaGFuZyhmZCk7Cj4+ICsgICAgICAg aWd0X2Fzc2VydChpOTE1X3Jlc2V0X2NvbnRyb2wodHJ1ZSkpOwo+PiAgIH0KPj4gICAKPj4gICBz dGF0aWMgaW50IF9fZ2VtX3Rocm90dGxlKGludCBmZCkKPj4gQEAgLTE0OSwyNiArMTQ3LDExMSBA QCBzdGF0aWMgaW50IF9fZ2VtX3dhaXQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIGludDY0X3Qg dGltZW91dCkKPj4gICAgICAgICAgcmV0dXJuIGVycjsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMg dm9pZCB0ZXN0X3dhaXQoaW50IGZkKQo+PiArc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9s bChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKPj4gK3sKPj4gKyAg ICAgICBpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZmxhZ3MpKQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIF9faWd0X3NwaW5fYmF0Y2hfbmV3X3BvbGwoZmQsIGN0eCwgZmxhZ3MpOwo+PiAr ICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBfX2lndF9zcGluX2JhdGNoX25l dyhmZCwgY3R4LCBmbGFncywgMCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIF9fc3Bpbl93 YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikKPj4gK3sKPj4gKyAgICAgICBpZiAoc3Bpbi0+ cnVubmluZykgewo+PiArICAgICAgICAgICAgICAgaWd0X3NwaW5fYnVzeXdhaXRfdW50aWxfcnVu bmluZyhzcGluKTsKPj4gKyAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgaWd0X2Rl YnVnKCJfX3NwaW5fd2FpdCAtIHVzbGVlcCBtb2RlXG4iKTsKPj4gKyAgICAgICAgICAgICAgIHVz bGVlcCg1MDBlMyk7IC8qIEJldHRlciB0aGFuIG5vdGhpbmchICovCj4+ICsgICAgICAgfQo+PiAr fQo+PiArCj4+ICtzdGF0aWMgaWd0X3NwaW5fdCAqIHNwaW5fc3luYyhpbnQgZmQsIHVpbnQzMl90 IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKPj4gK3sKPj4gKyAgICAgICBpZ3Rfc3Bpbl90ICpz cGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZmxhZ3MpOwo+PiArCj4+ICsgICAgICAgX19zcGlu X3dhaXQoZmQsIHNwaW4pOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIHNwaW47Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyBpbnQgZGVidWdmc19kaXIgPSAtMTsKPj4gKwo+PiArc3RhdGljIHZvaWQgaGFu Z19oYW5kbGVyKGludCBzaWcpCj4+ICt7Cj4+ICsgICAgICAgaWd0X3N5c2ZzX3NldChkZWJ1Z2Zz X2RpciwgImk5MTVfd2VkZ2VkIiwgIi0xIik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGhh bmdfYWZ0ZXIoaW50IGZkLCB1bnNpZ25lZCBpbnQgdXMpCj4+ICt7Cj4+ICsgICAgICAgIHN0cnVj dCBzaWdhY3Rpb24gc2EgPSB7IC5zYV9oYW5kbGVyID0gaGFuZ19oYW5kbGVyIH07Cj4+ICsgICAg ICAgc3RydWN0IGl0aW1lcnZhbCBpdHYgPSB7IH07Cj4+ICsKPj4gKyAgICAgICBkZWJ1Z2ZzX2Rp ciA9IGlndF9kZWJ1Z2ZzX2RpcihmZCk7Cj4+ICsgICAgICAgaWd0X2Fzc2VydF9mZChkZWJ1Z2Zz X2Rpcik7Cj4+ICsKPj4gKyAgICAgICBpZ3RfYXNzZXJ0X2VxKHNpZ2FjdGlvbihTSUdBTFJNLCAm c2EsIE5VTEwpLCAwKTsKPj4gKwo+PiArICAgICAgIGl0di5pdF92YWx1ZS50dl9zZWMgPSB1cyAv IDEwMDAwMDA7Cj4gCj4gVVNFQ19QRVJfU0VDLgo+IAo+PiArICAgICAgIGl0di5pdF92YWx1ZS50 dl91c2VjID0gdXMgJSAxMDAwMDAwOwo+PiArICAgICAgIHNldGl0aW1lcihJVElNRVJfUkVBTCwg Jml0diwgTlVMTCk7Cj4gCj4gT2ssIHRoYXQgZ2l2ZXMgYSBzaW5nbGUgc2hvdCBzaWduYWwuCj4g Cj4gSSB3b3VsZCBoYXZlIHVzZWQKPiBzdHJ1Y3Qgc2lnZXZlbnQgc2V2ID0gewo+IAkuc2lnZXZf bm90aWZ5ID0gU0lHRVZfVEhSRUFELAo+IAkuc2lnZXZfdmFsdWUuc2lndmFsX2ludCA9IGRlYnVn ZnNfZGlyCj4gCS5zaWdldl9ub3RpZnlfZnVuY3Rpb24gPSBoYW5nX2hhbmRsZXIKPiB9Owo+IHRp bWVyX2NyZWF0ZShDTE9DS19NT05PVE9OSUMsICZzZWMsICZ0aW1lcik7Cj4gdGltZXJfc2V0dGlt ZSh0aW1lciwgMCwgJml0cywgTlVMTCk7Cj4gCj4gVGhlbgo+IAo+IHN0YXRpYyB2b2lkIGhhbmdf aGFuZGxlcih1bmlvbiBzaWd2YWwgYXJnKQo+IHsKPiAJaWd0X3N5c2ZzX3NldChhcmcuc2l2YWxf aW50LCAiaTkxNV93ZWRnZWQiLCAxKTsKPiB9Cj4gCj4gTm8gc2lnbmFscywgbm9yIGdsb2JhbHMg cmVxdWlyZWQgOikKCkkgd2Fzbid0IGZhbWlsaWFyIHdpdGggdGhpcyBmYWNpbGl0eS4KCkl0IGNy ZWF0ZXMgYSBuZXcgdGhyZWFkLCBzbyBhbnkgaG9wZXMgZm9yIHNtYWxsIG1pY3Jvc2Vjb25kIGRl bGF5cyBtaWdodCAKYmUgcnVpbmVkLiBJIGNhbiB0cnkgaXQgaWYgeW91IHRoaW5rIGl0IGlzIHN0 aWxsIHdvcnRoIGl0PwoKPiBUaGUgcHJvYmxlbSB3aXRoIHVzaW5nIGEgc2lnbmFsIGlzIHRoYXQg aXQgaW50ZXJydXB0cyB0aGUgZ2VtX3dhaXQoKQo+IGFuZCBzbyB3ZSBkb24ndCBhY3R1YWxseSBj aGVjayB0aGF0IGl0IGlzIGJlaW5nIHdva2VuIGJ5IHRoZSBoYW5nCj4gYmVjYXVzZSBpdCBpcyBh bHJlYWR5IGF3YWtlLiBHYWguCgpIbS4uLiBpZiBJIGFtIGZvbGxvd2luZyBjb3JyZWN0bHksIHdl IGVuZCB1cCB3aXRoIC1FUkVTVEFSVFNZUyBhbmQgdGhlIAp0aGUgaW9jdGwgY2FuIGdldCByZXN0 YXJ0ZWQgZm9yIHVzLCBpZiBJIHdvdWxkIHNldCBTQV9SRVNUQVJULgoKQXQgdGhlIG1vbWVudCBp dCBoYXBwZW5zIHRvIHdvcmsgYmVjYXVzZSBkcm1Jb2N0bCByZXN0YXJ0IHRoZSBzaWduYWwuCgo+ PiArc3RhdGljIHZvaWQgY2xlYW51cF9oYW5nKHZvaWQpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0 IGl0aW1lcnZhbCBpdHYgPSB7IH07Cj4+ICsKPj4gKyAgICAgICBpZ3RfYXNzZXJ0X2VxKHNldGl0 aW1lcihJVElNRVJfUkVBTCwgJml0diwgTlVMTCksIDApOwo+IAo+IFlvdSBhbHNvIG5lZWQgYSBz bGVlcCBoZXJlIGFzIGl0IGRvZXMgbm90IGZsdXNoIGluZmxpZ2h0IHNpZ25hbHMuCj4gKEFsc28g dGltZXJfZGVzdHJveSA6KQoKSSBhbHdheXMgcGFzcyBhIGxvbmdlciB0aW1lb3V0IHRvIGdlbV93 YWl0IHRoYW4gdGhlIHNpZ25hbCBzbyBJIHRoaW5rIGl0IApzaG91bGQgYmUgZ3VhcmFudGVlZCB0 aGF0IHRoZSBzaWduYWwgaGFkIGZpcmVkIGJlZm9yZSBnZW1fd2FpdCB3aWxsIGJlIApleGl0aW5n LgoKUmVnYXJkcywKClR2cnRrbwoKPiAKPj4gKyAgICAgICBpZ3RfYXNzZXJ0X2ZkKGRlYnVnZnNf ZGlyKTsKPj4gKyAgICAgICBjbG9zZShkZWJ1Z2ZzX2Rpcik7Cj4+ICsgICAgICAgZGVidWdmc19k aXIgPSAtMTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBfX2NoZWNrX3dhaXQoaW50IGZkLCB1 aW50MzJfdCBibywgdW5zaWduZWQgaW50IHdhaXQpCj4+ICt7Cj4+ICsgICAgICAgdW5zaWduZWQg bG9uZyB3YWl0X3RpbWVvdXQgPSAyNTBlNjsgLyogU29tZSBtYXJnaW4gZm9yIGFjdHVhbCByZXNl dC4gKi8KPj4gKyAgICAgICBpbnQgcmV0Owo+PiArCj4+ICsgICAgICAgaWYgKHdhaXQpIHsKPj4g KyAgICAgICAgICAgICAgIHdhaXRfdGltZW91dCArPSB3YWl0ICogMjAwMDsgLyogeDIgZm9yIHNh ZmV0eS4gKi8KPj4gKyAgICAgICAgICAgICAgIHdhaXRfdGltZW91dCArPSAyNTBlNjsgLyogTWFy Z2luIGZvciBzaWduYWwgZGVsYXkuICovOwo+PiArICAgICAgICAgICAgICAgaGFuZ19hZnRlcihm ZCwgd2FpdCk7Cj4+ICsgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIG1hbnVhbF9o YW5nKGZkKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXQgPSBfX2dlbV93YWl0KGZk LCBibywgd2FpdF90aW1lb3V0KTsKPiAKPiBPaywgSSB1bmRlcnN0YW5kIHdoZXJlIHRoZSBjb25j ZXJuZWQgYWJvdXQgaG93IGxvbmcgaXQgdG9vayB0byByZWNvdmVyCj4gZnJvbSByZXNldCBjYW1l IGZyb20gOikKPiAKPj4gKwo+PiArICAgICAgIGlmICh3YWl0KQo+PiArICAgICAgICAgICAgICAg Y2xlYW51cF9oYW5nKCk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ ICsjZGVmaW5lIFRFU1RfV0VER0UgKDEpCj4+ICsKPj4gK3N0YXRpYyB2b2lkIHRlc3Rfd2FpdChp bnQgZmQsIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IHdhaXQpCj4+ICAgewo+PiAt ICAgICAgIGlndF9oYW5nX3QgaGFuZzsKPj4gKyAgICAgICBpZ3Rfc3Bpbl90ICpoYW5nOwo+PiAg IAo+PiAgICAgICAgICBpZ3RfcmVxdWlyZV9nZW0oZmQpOwo+PiAgIAo+PiAtICAgICAgIC8qIElm IHRoZSByZXF1ZXN0IHdlIHdhaXQgb24gY29tcGxldGVzIGR1ZSB0byBhIGhhbmcgKGV2ZW4gZm9y Cj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBJZiB0aGUgcmVxdWVzdCB3ZSB3YWl0IG9uIGNv bXBsZXRlcyBkdWUgdG8gYSBoYW5nIChldmVuIGZvcgo+PiAgICAgICAgICAgKiB0aGF0IHJlcXVl c3QpLCB0aGUgdXNlciBleHBlY3RzIHRoZSByZXR1cm4gdmFsdWUgdG8gMCAoc3VjY2VzcykuCj4+ ICAgICAgICAgICAqLwo+PiAtICAgICAgIGhhbmcgPSBpZ3RfaGFuZ19yaW5nKGZkLCBJOTE1X0VY RUNfREVGQVVMVCk7Cj4+IC0gICAgICAgaWd0X2Fzc2VydF9lcShfX2dlbV93YWl0KGZkLCBoYW5n LmhhbmRsZSwgLTEpLCAwKTsKPj4gLSAgICAgICBpZ3RfcG9zdF9oYW5nX3JpbmcoZmQsIGhhbmcp Owo+PiAgIAo+PiAtICAgICAgIC8qIElmIHRoZSBHUFUgaXMgd2VkZ2VkIGR1cmluZyB0aGUgd2Fp dCwgYWdhaW4gd2UgZXhwZWN0IHRoZSByZXR1cm4KPj4gLSAgICAgICAgKiB2YWx1ZSB0byBiZSAw IChzdWNjZXNzKS4KPj4gLSAgICAgICAgKi8KPj4gLSAgICAgICBpZ3RfcmVxdWlyZShpOTE1X3Jl c2V0X2NvbnRyb2woZmFsc2UpKTsKPj4gLSAgICAgICBoYW5nID0gaWd0X2hhbmdfcmluZyhmZCwg STkxNV9FWEVDX0RFRkFVTFQpOwo+PiAtICAgICAgIGlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChm ZCwgaGFuZy5oYW5kbGUsIC0xKSwgMCk7Cj4+IC0gICAgICAgaWd0X3Bvc3RfaGFuZ19yaW5nKGZk LCBoYW5nKTsKPj4gKyAgICAgICBpZiAoZmxhZ3MgJiBURVNUX1dFREdFKQo+PiArICAgICAgICAg ICAgICAgaWd0X3JlcXVpcmUoaTkxNV9yZXNldF9jb250cm9sKGZhbHNlKSk7Cj4+ICsgICAgICAg ZWxzZQo+PiArICAgICAgICAgICAgICAgaWd0X3JlcXVpcmUoaTkxNV9yZXNldF9jb250cm9sKHRy dWUpKTsKPj4gKwo+PiArICAgICAgIGhhbmcgPSBzcGluX3N5bmMoZmQsIDAsIEk5MTVfRVhFQ19E RUZBVUxUKTsKPj4gKwo+PiArICAgICAgIGlndF9hc3NlcnRfZXEoX19jaGVja193YWl0KGZkLCBo YW5nLT5oYW5kbGUsIHdhaXQpLCAwKTsKPj4gKwo+PiArICAgICAgIGlndF9zcGluX2JhdGNoX2Zy ZWUoZmQsIGhhbmcpOwo+PiArCj4+ICAgICAgICAgIGlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29u dHJvbCh0cnVlKSk7Cj4+ICAgCj4+ICAgICAgICAgIHRyaWdnZXJfcmVzZXQoZmQpOwo+PiBAQCAt MTgxLDcgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3VzcGVuZChpbnQgZmQsIGludCBzdGF0 ZSkKPj4gICAKPj4gICAgICAgICAgLyogQ2hlY2sgd2UgY2FuIHN1c3BlbmQgd2hlbiB0aGUgZHJp dmVyIGlzIGFscmVhZHkgd2VkZ2VkICovCj4+ICAgICAgICAgIGlndF9yZXF1aXJlKGk5MTVfcmVz ZXRfY29udHJvbChmYWxzZSkpOwo+PiAtICAgICAgIHdlZGdlbWUoZmQpOwo+PiArICAgICAgIG1h bnVhbF9oYW5nKGZkKTsKPj4gICAKPj4gICAgICAgICAgaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9y ZXN1bWUoc3RhdGUsIFNVU1BFTkRfVEVTVF9ERVZJQ0VTKTsKPj4gICAKPj4gQEAgLTE4OSw3ICsy NzIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3N1c3BlbmQoaW50IGZkLCBpbnQgc3RhdGUpCj4+ICAg ICAgICAgIHRyaWdnZXJfcmVzZXQoZmQpOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyB2b2lkIHRl c3RfaW5mbGlnaHQoaW50IGZkKQo+PiArc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodChpbnQgZmQs IHVuc2lnbmVkIGludCB3YWl0KQo+PiAgIHsKPj4gICAgICAgICAgY29uc3QgdWludDMyX3QgYmJl ID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPj4gICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgb2JqWzJdOwo+PiBAQCAtMjA5LDExICsyOTIsMTAgQEAgc3RhdGljIHZvaWQg dGVzdF9pbmZsaWdodChpbnQgZmQpCj4+ICAgICAgICAgICAgICAgICAgaW50IGZlbmNlWzY0XTsg LyogY29uc2VydmF0aXZlIGVzdGltYXRlIG9mIHJpbmcgc2l6ZSAqLwo+PiAgIAo+PiAgICAgICAg ICAgICAgICAgIGdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKPj4gLQo+PiAgICAgICAgICAgICAgICAg IGlndF9kZWJ1ZygiU3RhcnRpbmcgJXMgb24gZW5naW5lICclcydcbiIsIF9fZnVuY19fLCBlX18t Pm5hbWUpOwo+PiAgICAgICAgICAgICAgICAgIGlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJv bChmYWxzZSkpOwo+PiAgIAo+PiAtICAgICAgICAgICAgICAgaGFuZyA9IF9faWd0X3NwaW5fYmF0 Y2hfbmV3KGZkLCAwLCBlbmdpbmUsIDApOwo+PiArICAgICAgICAgICAgICAgaGFuZyA9IHNwaW5f c3luYyhmZCwgMCwgZW5naW5lKTsKPj4gICAgICAgICAgICAgICAgICBvYmpbMF0uaGFuZGxlID0g aGFuZy0+aGFuZGxlOwo+PiAgIAo+PiAgICAgICAgICAgICAgICAgIG1lbXNldCgmZXhlY2J1Ziwg MCwgc2l6ZW9mKGV4ZWNidWYpKTsKPj4gQEAgLTIyNyw3ICszMDksOCBAQCBzdGF0aWMgdm9pZCB0 ZXN0X2luZmxpZ2h0KGludCBmZCkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGlndF9hc3Nl cnQoZmVuY2Vbbl0gIT0gLTEpOwo+PiAgICAgICAgICAgICAgICAgIH0KPj4gICAKPj4gLSAgICAg ICAgICAgICAgIGlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEp LCAwKTsKPj4gKyAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoX19jaGVja193YWl0KGZkLCBv YmpbMV0uaGFuZGxlLCB3YWl0KSwgMCk7Cj4+ICsKPj4gICAgICAgICAgICAgICAgICBmb3IgKHVu c2lnbmVkIGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoZmVuY2UpOyBuKyspIHsKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoc3luY19mZW5jZV9zdGF0dXMoZmVuY2Vb bl0pLCAtRUlPKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZlbmNlW25dKTsK Pj4gQEAgLTI1Niw3ICszMzksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X3N1c3BlbmQo aW50IGZkKQo+PiAgICAgICAgICBvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7 Cj4+ICAgICAgICAgIGdlbV93cml0ZShmZCwgb2JqWzFdLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9m KGJiZSkpOwo+PiAgIAo+PiAtICAgICAgIGhhbmcgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwg MCwgMCwgMCk7Cj4+ICsgICAgICAgaGFuZyA9IHNwaW5fc3luYyhmZCwgMCwgMCk7Cj4+ICAgICAg ICAgIG9ialswXS5oYW5kbGUgPSBoYW5nLT5oYW5kbGU7Cj4+ICAgCj4+ICAgICAgICAgIG1lbXNl dCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKPj4gQEAgLTI3Myw3ICszNTYsOCBAQCBz dGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X3N1c3BlbmQoaW50IGZkKQo+PiAgICAgICAgICBpZ3Rf c2V0X2F1dG9yZXN1bWVfZGVsYXkoMzApOwo+PiAgICAgICAgICBpZ3Rfc3lzdGVtX3N1c3BlbmRf YXV0b3Jlc3VtZShTVVNQRU5EX1NUQVRFX01FTSwgU1VTUEVORF9URVNUX05PTkUpOwo+PiAgIAo+ PiAtICAgICAgIGlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwgLTEp LCAwKTsKPj4gKyAgICAgICBpZ3RfYXNzZXJ0X2VxKF9fY2hlY2tfd2FpdChmZCwgb2JqWzFdLmhh bmRsZSwgMTApLCAwKTsKPj4gKwo+PiAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBuID0gMDsg biA8IEFSUkFZX1NJWkUoZmVuY2UpOyBuKyspIHsKPj4gICAgICAgICAgICAgICAgICBpZ3RfYXNz ZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25dKSwgLUVJTyk7Cj4+ICAgICAgICAgICAg ICAgICAgY2xvc2UoZmVuY2Vbbl0pOwo+PiBAQCAtMzAxLDcgKzM4NSw3IEBAIHN0YXRpYyB1aW50 MzJfdCBjb250ZXh0X2NyZWF0ZV9zYWZlKGludCBpOTE1KQo+PiAgICAgICAgICByZXR1cm4gcGFy YW0uY3R4X2lkOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfY29u dGV4dHMoaW50IGZkKQo+PiArc3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9jb250ZXh0cyhpbnQg ZmQsIHVuc2lnbmVkIGludCB3YWl0KQo+PiAgIHsKPj4gICAgICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwo+PiAgICAgICAgICBjb25zdCB1aW50MzJfdCBiYmUg PSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+PiBAQCAtMzMwLDcgKzQxNCw3IEBAIHN0YXRpYyB2b2lk IHRlc3RfaW5mbGlnaHRfY29udGV4dHMoaW50IGZkKQo+PiAgICAgICAgICAgICAgICAgIGlndF9k ZWJ1ZygiU3RhcnRpbmcgJXMgb24gZW5naW5lICclcydcbiIsIF9fZnVuY19fLCBlX18tPm5hbWUp Owo+PiAgICAgICAgICAgICAgICAgIGlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxz ZSkpOwo+PiAgIAo+PiAtICAgICAgICAgICAgICAgaGFuZyA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3 KGZkLCAwLCBlbmdpbmUsIDApOwo+PiArICAgICAgICAgICAgICAgaGFuZyA9IHNwaW5fc3luYyhm ZCwgMCwgZW5naW5lKTsKPj4gICAgICAgICAgICAgICAgICBvYmpbMF0uaGFuZGxlID0gaGFuZy0+ aGFuZGxlOwo+PiAgIAo+PiAgICAgICAgICAgICAgICAgIG1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6 ZW9mKGV4ZWNidWYpKTsKPj4gQEAgLTM0NSw3ICs0MjksOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2lu ZmxpZ2h0X2NvbnRleHRzKGludCBmZCkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGlndF9h c3NlcnQoZmVuY2Vbbl0gIT0gLTEpOwo+PiAgICAgICAgICAgICAgICAgIH0KPj4gICAKPj4gLSAg ICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgb2JqWzFdLmhhbmRsZSwg LTEpLCAwKTsKPj4gKyAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoX19jaGVja193YWl0KGZk LCBvYmpbMV0uaGFuZGxlLCB3YWl0KSwgMCk7Cj4+ICsKPj4gICAgICAgICAgICAgICAgICBmb3Ig KHVuc2lnbmVkIGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoZmVuY2UpOyBuKyspIHsKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoc3luY19mZW5jZV9zdGF0dXMoZmVu Y2Vbbl0pLCAtRUlPKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZlbmNlW25d KTsKPj4gQEAgLTM3NSw3ICs0NjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2V4dGVy bmFsKGludCBmZCkKPj4gICAgICAgICAgZmVuY2UgPSBpZ3RfY29ya19wbHVnKCZjb3JrLCBmZCk7 Cj4+ICAgCj4+ICAgICAgICAgIGlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbChmYWxzZSkp Owo+PiAtICAgICAgIGhhbmcgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgMCwgMCwgMCk7Cj4+ ICsgICAgICAgaGFuZyA9IF9fc3Bpbl9wb2xsKGZkLCAwLCAwKTsKPj4gICAKPj4gICAgICAgICAg bWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKPj4gICAgICAgICAgb2JqLmhhbmRsZSA9IGdl bV9jcmVhdGUoZmQsIDQwOTYpOwo+PiBAQCAtMzkzLDYgKzQ3OCw5IEBAIHN0YXRpYyB2b2lkIHRl c3RfaW5mbGlnaHRfZXh0ZXJuYWwoaW50IGZkKQo+PiAgICAgICAgICBmZW5jZSA9IGV4ZWNidWYu cnN2ZDIgPj4gMzI7Cj4+ICAgICAgICAgIGlndF9hc3NlcnQoZmVuY2UgIT0gLTEpOwo+PiAgIAo+ PiArICAgICAgIF9fc3Bpbl93YWl0KGZkLCBoYW5nKTsKPj4gKyAgICAgICBtYW51YWxfaGFuZyhm ZCk7Cj4+ICsKPj4gICAgICAgICAgZ2VtX3N5bmMoZmQsIGhhbmctPmhhbmRsZSk7IC8qIHdlZGdl ZCwgd2l0aCBhbiB1bnJlYWR5IGJhdGNoICovCj4+ICAgICAgICAgIGlndF9hc3NlcnQoIWdlbV9i b19idXN5KGZkLCBoYW5nLT5oYW5kbGUpKTsKPj4gICAgICAgICAgaWd0X2Fzc2VydChnZW1fYm9f YnVzeShmZCwgb2JqLmhhbmRsZSkpOwo+PiBAQCAtNDA3LDcgKzQ5NSw3IEBAIHN0YXRpYyB2b2lk IHRlc3RfaW5mbGlnaHRfZXh0ZXJuYWwoaW50IGZkKQo+PiAgICAgICAgICB0cmlnZ2VyX3Jlc2V0 KGZkKTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2ludGVybmFs KGludCBmZCkKPj4gK3N0YXRpYyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkLCB1 bnNpZ25lZCBpbnQgd2FpdCkKPj4gICB7Cj4+ICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPj4gICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVj X29iamVjdDIgb2JqWzJdOwo+PiBAQCAtNDIwLDcgKzUwOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rf aW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkKQo+PiAgICAgICAgICBpZ3RfcmVxdWlyZShnZW1faGFz X2V4ZWNfZmVuY2UoZmQpKTsKPj4gICAKPj4gICAgICAgICAgaWd0X3JlcXVpcmUoaTkxNV9yZXNl dF9jb250cm9sKGZhbHNlKSk7Cj4+IC0gICAgICAgaGFuZyA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3 KGZkLCAwLCAwLCAwKTsKPj4gKyAgICAgICBoYW5nID0gc3Bpbl9zeW5jKGZkLCAwLCAwKTsKPj4g ICAKPj4gICAgICAgICAgbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOwo+PiAgICAgICAgICBv YmpbMF0uaGFuZGxlID0gaGFuZy0+aGFuZGxlOwo+PiBAQCAtNDQxLDcgKzUyOSw4IEBAIHN0YXRp YyB2b2lkIHRlc3RfaW5mbGlnaHRfaW50ZXJuYWwoaW50IGZkKQo+PiAgICAgICAgICAgICAgICAg IG5mZW5jZSsrOwo+PiAgICAgICAgICB9Cj4+ICAgCj4+IC0gICAgICAgaWd0X2Fzc2VydF9lcShf X2dlbV93YWl0KGZkLCBvYmpbMV0uaGFuZGxlLCAtMSksIDApOwo+PiArICAgICAgIGlndF9hc3Nl cnRfZXEoX19jaGVja193YWl0KGZkLCBvYmpbMV0uaGFuZGxlLCB3YWl0KSwgMCk7Cj4+ICsKPj4g ICAgICAgICAgd2hpbGUgKG5mZW5jZS0tKSB7Cj4+ICAgICAgICAgICAgICAgICAgaWd0X2Fzc2Vy dF9lcShzeW5jX2ZlbmNlX3N0YXR1cyhmZW5jZXNbbmZlbmNlXSksIC1FSU8pOwo+PiAgICAgICAg ICAgICAgICAgIGNsb3NlKGZlbmNlc1tuZmVuY2VdKTsKPj4gQEAgLTQ4NCwyOSArNTczLDQ2IEBA IGlndF9tYWluCj4+ICAgICAgICAgIGlndF9zdWJ0ZXN0KCJleGVjYnVmIikKPj4gICAgICAgICAg ICAgICAgICB0ZXN0X2V4ZWNidWYoZmQpOwo+PiAgIAo+PiAtICAgICAgIGlndF9zdWJ0ZXN0KCJ3 YWl0IikKPj4gLSAgICAgICAgICAgICAgIHRlc3Rfd2FpdChmZCk7Cj4+IC0KPj4gICAgICAgICAg aWd0X3N1YnRlc3QoInN1c3BlbmQiKQo+PiAgICAgICAgICAgICAgICAgIHRlc3Rfc3VzcGVuZChm ZCwgU1VTUEVORF9TVEFURV9NRU0pOwo+PiAgIAo+PiAgICAgICAgICBpZ3Rfc3VidGVzdCgiaGli ZXJuYXRlIikKPj4gICAgICAgICAgICAgICAgICB0ZXN0X3N1c3BlbmQoZmQsIFNVU1BFTkRfU1RB VEVfRElTSyk7Cj4+ICAgCj4+IC0gICAgICAgaWd0X3N1YnRlc3QoImluLWZsaWdodCIpCj4+IC0g ICAgICAgICAgICAgICB0ZXN0X2luZmxpZ2h0KGZkKTsKPj4gLQo+PiAtICAgICAgIGlndF9zdWJ0 ZXN0KCJpbi1mbGlnaHQtY29udGV4dHMiKQo+PiAtICAgICAgICAgICAgICAgdGVzdF9pbmZsaWdo dF9jb250ZXh0cyhmZCk7Cj4+IC0KPj4gICAgICAgICAgaWd0X3N1YnRlc3QoImluLWZsaWdodC1l eHRlcm5hbCIpCj4+ICAgICAgICAgICAgICAgICAgdGVzdF9pbmZsaWdodF9leHRlcm5hbChmZCk7 Cj4+ICAgCj4+IC0gICAgICAgaWd0X3N1YnRlc3QoImluLWZsaWdodC1pbnRlcm5hbCIpIHsKPj4g LSAgICAgICAgICAgICAgIGlndF9za2lwX29uKGdlbV9oYXNfc2VtYXBob3JlcyhmZCkpOwo+PiAt ICAgICAgICAgICAgICAgdGVzdF9pbmZsaWdodF9pbnRlcm5hbChmZCk7Cj4+IC0gICAgICAgfQo+ PiAtCj4+ICAgICAgICAgIGlndF9zdWJ0ZXN0KCJpbi1mbGlnaHQtc3VzcGVuZCIpCj4+ICAgICAg ICAgICAgICAgICAgdGVzdF9pbmZsaWdodF9zdXNwZW5kKGZkKTsKPj4gKwo+PiArICAgICAgIGln dF9zdWJ0ZXN0X2dyb3VwIHsKPj4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3YWl0Owo+PiArICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lOwo+PiArICAgICAgICAgICAgICAgfSB3YWl0c1td ID0gewo+PiArICAgICAgICAgICAgICAgICAgICAgICB7IC53YWl0ID0gMCwgLm5hbWUgPSAiaW1t ZWRpYXRlIiB9LAo+PiArICAgICAgICAgICAgICAgICAgICAgICB7IC53YWl0ID0gMTAsIC5uYW1l ID0gIjEwdXMiIH0sCj4gCj4gaTkxNV9yZXF1ZXN0X3NwaW4gaXMgc2V0IHRvIDJ1cyBjdXJyZW50 bHkgOnwgSSBndWVzcyB0aGF0J3MgYSByZWFsbHkgaGFyZAo+IHdpbmRvdyB0byBoaXQgcmVsaWFi bHkuIE1heWJlIHdlIHNob3VsZCBzcGluIGZvciAyMDBtcyBqdXN0IHRvIG1ha2UKPiB0ZXN0aW5n IGVhc2llciEKPiAKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgeyAud2FpdCA9IDEwMDAwLCAu bmFtZSA9ICIxMG1zIiB9LAo+PiArICAgICAgICAgICAgICAgfTsKPj4gKyAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBpOwo+PiArCj4+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg c2l6ZW9mKHdhaXRzKSAvIHNpemVvZih3YWl0c1swXSk7IGkrKykgewo+PiArICAgICAgICAgICAg ICAgICAgICAgICBpZ3Rfc3VidGVzdF9mKCJ3YWl0LSVzIiwgd2FpdHNbaV0ubmFtZSkKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3dhaXQoZmQsIDAsIHdhaXRzW2ldLndh aXQpOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlndF9zdWJ0ZXN0X2YoIndhaXQt d2VkZ2UtJXMiLCB3YWl0c1tpXS5uYW1lKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3Rfd2FpdChmZCwgVEVTVF9XRURHRSwgd2FpdHNbaV0ud2FpdCk7Cj4gCj4gT2suCj4g Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWd0X3N1YnRlc3RfZigiaW4tZmxpZ2h0 LSVzIiwgd2FpdHNbaV0ubmFtZSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXN0X2luZmxpZ2h0KGZkLCB3YWl0c1tpXS53YWl0KTsKPj4gKwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBpZ3Rfc3VidGVzdF9mKCJpbi1mbGlnaHQtY29udGV4dHMtJXMiLCB3YWl0c1tpXS5u YW1lKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mbGlnaHRfY29u dGV4dHMoZmQsIHdhaXRzW2ldLndhaXQpOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGlndF9zdWJ0ZXN0X2YoImluLWZsaWdodC1pbnRlcm5hbC0lcyIsIHdhaXRzW2ldLm5hbWUpIHsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ3Rfc2tpcF9vbihnZW1faGFzX3Nl bWFwaG9yZXMoZmQpKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2lu ZmxpZ2h0X2ludGVybmFsKGZkLCB3YWl0c1tpXS53YWl0KTsKPiAKPiBBbmQgb2suCj4gLUNocmlz Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4g Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYg bWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=