From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 00FE36E336 for ; Wed, 19 Jun 2019 08:09:25 +0000 (UTC) References: <20190513165347.29108-1-maarten.lankhorst@linux.intel.com> <97cd03dc-387c-e646-2915-9e42829d4bcc@gmail.com> <35164500-06c0-68ab-0416-66750ea3be0e@linux.intel.com> From: Juha-Pekka Heikkila Message-ID: <0ef49307-4e05-50f0-9036-41841c1b105e@gmail.com> Date: Wed, 19 Jun 2019 11:09:22 +0300 MIME-Version: 1.0 In-Reply-To: <35164500-06c0-68ab-0416-66750ea3be0e@linux.intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_yuv: Add yuv specific tests, v6. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com 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: Maarten Lankhorst , igt-dev@lists.freedesktop.org List-ID: T24gMTMuNi4yMDE5IDE2LjE0LCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiBPcCAxMi0wNi0y MDE5IG9tIDIyOjE4IHNjaHJlZWYgSnVoYS1QZWtrYSBIZWlra2lsYToKPj4gU29ycnkgZm9yIGRl bGF5IE1hYXJ0ZW4sIEkndmUgYmVlbiByZWFkaW5nIHRoaXMgb24gc2V2ZXJhbCBldmVuaW5ncyBi dXQgYWx3YXlzIHdhcyBpbnRlcnJ1cHRlZC4gSSB0aGluayB0aGlzIGxvb2sgYWxsIGdvb2QuCj4+ Cj4+IFJldmlld2VkLWJ5OiBKdWhhLVBla2thIEhlaWtraWxhIDxqdWhhcGVra2EuaGVpa2tpbGFA Z21haWwuY29tPgo+Pgo+PiBPbiAxMy41LjIwMTkgMTkuNTMsIE1hYXJ0ZW4gTGFua2hvcnN0IHdy b3RlOgo+Pj4gQWRkIHRlc3RzIGV4Y2VyY2lzaW5nIHN3aXRjaGluZyBiZXR3ZWVuIHZhcmlvdXMg c2NhbGVkL3Vuc2NhbGVkCj4+PiB0cmFuc2l0aW9ucyB0byBhbmQgZnJvbSB2YXJpb3VzIG52MTIg Zm9ybWF0cywgc2luY2Ugc29tZSBvZiB0aGUKPj4+IHdvcmthcm91bmRzIG1lbnRpb24gdGhpcyBt YXkgZmFpbC4KPj4+Cj4+PiBXZSBhbHNvIGFkZCBOVjEyIHNwZWNpZmljIGNsaXBwaW5nL3NjYWxp bmcgdGVzdHMsIHRvIG1ha2Ugc3VyZQo+Pj4gdGhhdCBZVVYgc3JjIGNvb3JkaW5hdGVzIGFyZSBh bHdheXMgcHJvZ3JhbW1lZCBhcyBhIG11bHRpcGxlIG9mIDIKPj4+IGNvcnJlY3RseSwgYW5kIHZl cmlmeSBzY2FsaW5nL2NsaXBwaW5nIHdvcmtzIHdpdGggQ1JDIHRlc3RzLgo+Pj4KPj4+IGNyb3At c2NhbGUtYnVnIHNob3dzIGEgY29ycnVwdGlvbiB3aGVuIHNjYWxpbmcgYW5kIGNyb3BwaW5nIGF0 IHRoZQo+Pj4gc2FtZSB0aW1lLgo+Pj4KPj4+IFRoZSBzdWJwaXhlbCBjbGlwIHRlc3Qgcm90YXRl cyBhbmQgY2xpcHMgYSByZWN0YW5nbGUgb24gZWFjaCBzaWRlLAo+Pj4gd2hpY2ggc2hvdWxkIHBy b2R1Y2UgdGhlIHNhbWUgQ1JDIGFzIHdoZW4gdGhhdCBwYXJ0IG9mIHRoZSByZWN0YW5nbGUKPj4+ IGlzIGhpZGRlbiBieSBhIGN1cnNvciBhbmQgYSB3aG9sZSAyeDIgcGl4ZWwgaXMgaGlkZGVuLgo+ Pj4KPj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+PiAtIFJlc2V0IHBsYW5lIHBvc2l0aW9uIHRvIDAs MCBhdCB0aGUgc3RhcnQgb2YgeXV2X3ZhbGlkX3dpZHRoX3BsYW5lKCkuCj4+PiAtIEhhbmRsZSBT d2F0aSdzIGZlZWRiYWNrLgo+Pj4gQ2hhbmdlcyBzaW5jZSB2MjoKPj4+IC0gU2tpcCA5MMKwLzI3 MMKwIHJvdGF0aW9uIGluIHRlc3RzIHdoZW4gZm9ybWF0cyBkb24ndCBzdXBwb3J0IGl0Lgo+Pj4g LSBBZGQgYWxsIG5ldyBIRFIgZm9ybWF0cyB0byB0ZXN0Lgo+Pj4gLSBVc2UgaWd0X3BsYW5lX2hh c19mb3JtYXRfbW9kLgo+Pj4gLSBTdXBwb3J0IHRlc3RzIG9uICFpOTE1IGJ5IGNoZWNraW5nIGlm IFgvWSB0aWxpbmcgbW9kaWZpZXJzIGFyZSBzdXBwb3J0ZWQuCj4+PiAtIERvIG5vdCBlbmFibGUg dW50ZXN0ZWQgcGxhbmVzIHRvIHByZXZlbnQgZXhoYXVzaW5nIG1lbW9yeSBiYW5kd2lkdGgKPj4+ ICDCoMKgIGFuZCBhdmFpbGFibGUgTlYxMiBZIHBsYW5lcyBpbiB0aGUgcmdiLXN3aXRjaC1zY2Fs ZWQgdGVzdC4KPj4+IENoYW5nZXMgc2luY2UgdjM6Cj4+PiAtIEFkZCBhIHNhbml0eSB0ZXN0IHRv IHNhbml0eSB0ZXN0IFlVViBjb252ZXJzaW9uIHBhdGhzLCBvbiBhbGwgcGxhbmVzIGFuZCBwaXBl cy4KPj4+IC0gRHluYW1pY2FsbHkgZ2VuZXJhdGUgbGlzdCBvZiBZVVYgdGVzdHMgdGhyb3VnaCBp Z3RfZm9ybWF0X2FycmF5X2ZpbGwuCj4+PiBDaGFuZ2VzIHNpbmNlIHY0Ogo+Pj4gLSBEZWNyZWFz ZSBzaXplIHRvIDY0eDY0IHRvIHJlZHVjZSB0ZXN0IGV4ZWN1dGlvbiB0aW1lIGV2ZW4gbW9yZSwK Pj4+ICDCoMKgIHNvbWUgWVVWIGNvbnZlcnNpb24gcm91dGluZXMgYXJlIHNsb3cuCj4+PiAtIERv bid0IGNsZWFyIGRlZ2FtbWEvY3RtLCB0aGlzIGlzIGRvbmUgaW4gY29yZSBub3cuCj4+PiBDaGFu Z2VzIHNpbmNlIHY1Ogo+Pj4gLSBGaXggbWlub3IgY29tcGlsZSBlcnJvci4KPj4+IC0gQWRkIG1p c3NpbmcgaWd0X3N1YnRlc3RfZ3JvdXAKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExh bmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiAg wqAgdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8wqDCoCAxICsKPj4+ICDCoCB0ZXN0cy9rbXNfeXV2 LmPCoMKgwqDCoMKgwqDCoCB8IDkzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+Pj4gIMKgIHRlc3RzL21lc29uLmJ1aWxkwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4+ ICDCoCAzIGZpbGVzIGNoYW5nZWQsIDkzOSBpbnNlcnRpb25zKCspCj4+PiAgwqAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL2ttc195dXYuYwo+Pj4KPj4+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+Pj4gaW5kZXggN2Y5MjFmNmM1 OTg4Li41NzQ4NjFiMmUzMGYgMTAwNjQ0Cj4+PiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz Cj4+PiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4+PiBAQCAtNzUsNiArNzUsNyBAQCBU RVNUU19wcm9ncyA9IFwKPj4+ICDCoMKgwqDCoMKgIGttc191bml2ZXJzYWxfcGxhbmUgXAo+Pj4g IMKgwqDCoMKgwqAga21zX3ZibGFuayBcCj4+PiAgwqDCoMKgwqDCoCBrbXNfdnJyIFwKPj4+ICvC oMKgwqAga21zX3l1diBcCj4+PiAgwqDCoMKgwqDCoCBtZXRhX3Rlc3QgXAo+Pj4gIMKgwqDCoMKg wqAgcGVyZiBcCj4+PiAgwqDCoMKgwqDCoCBwZXJmX3BtdSBcCj4+PiBkaWZmIC0tZ2l0IGEvdGVz dHMva21zX3l1di5jIGIvdGVzdHMva21zX3l1di5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42Y2Y2OWIwNTA0ZjgKPj4+IC0tLSAvZGV2L251bGwKPj4+ ICsrKyBiL3Rlc3RzL2ttc195dXYuYwo+Pj4gQEAgLTAsMCArMSw5MzcgQEAKPj4+ICsvKgo+Pj4g KyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4+PiArICoKPj4+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQo+Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4+PiArICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgo+Pj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+Pj4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Cj4+PiArICoKPj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+Pj4gKyAq IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+Pj4g KyAqCj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPj4+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+PiArICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKPj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4+PiArICogSU4gVEhFIFNP RlRXQVJFLgo+Pj4gKyAqCj4+PiArICogQXV0aG9yczoKPj4+ICsgKsKgwqDCoCBNYWFydGVuIExh bmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+Pj4gKyAqLwo+Pj4g KyNpbmNsdWRlICJjb25maWcuaCIKPj4+ICsKPj4+ICsjaW5jbHVkZSAiaWd0LmgiCj4+PiArI2lu Y2x1ZGUgPGNhaXJvLmg+Cj4+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+PiArI2luY2x1ZGUgPHN0 ZGludC5oPgo+Pj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPj4+ICsjaW5jbHVkZSA8c3lzL3RpbWUu aD4KPj4+ICsKPj4+ICt0eXBlZGVmIHN0cnVjdCB7Cj4+PiArwqDCoMKgIGlndF9kaXNwbGF5X3Qg ZGlzcGxheTsKPj4+ICsKPj4+ICvCoMKgwqAgaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOwo+Pj4g K8KgwqDCoCBzdHJ1Y3QgaWd0X2ZiIGZiWzZdOwo+Pj4gK30gZGF0YV90Owo+Pj4gKwo+Pj4gK3N0 YXRpYyB1aW50NjRfdCB4X21vZGlmaWVyID0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORTsKPj4+ ICtzdGF0aWMgdWludDY0X3QgeV9tb2RpZmllciA9IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkU7 Cj4+PiArc3RhdGljIHVpbnQzMl90ICpmb3JtYXRzLCBjb3VudF9mb3JtYXRzOwo+Pj4gKwo+Pj4g K3N0YXRpYyBib29sIHBpcGVfc3VwcG9ydHNfZm9ybWF0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXks IGVudW0gcGlwZSBwaXBlLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVp bnQzMl90IGZvcm1hdCwgdWludDY0X3QgdGlsaW5nKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWd0X3Bs YW5lX3QgKnBsYW5lOwo+Pj4gKwo+Pj4gK8KgwqDCoCBmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRp c3BsYXksIHBpcGUsIHBsYW5lKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpZ3RfcGxhbmVfaGFz X2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdCwgdGlsaW5nKSkKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiB0cnVlOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gZmFsc2U7Cj4+PiAr fQo+Pj4gKwo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHJlbW92ZV9mYnMoZGF0YV90ICpkYXRhKQo+ Pj4gK3sKPj4+ICvCoMKgwqAgaW50IGk7Cj4+PiArCj4+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGRhdGEtPmZiKTsgaSsrKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9yZW1v dmVfZmIoZGF0YS0+ZGlzcGxheS5kcm1fZmQsICZkYXRhLT5mYltpXSk7Cj4+PiArfQo+Pj4gKwo+ Pj4gK3N0YXRpYyB2b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBl LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKPj4+ICt7Cj4+PiArwqDCoMKgIGlndF9kaXNwbGF5X3Qg KmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPj4+ICsKPj4+ICvCoMKgwqAgcmVtb3ZlX2Zicyhk YXRhKTsKPj4+ICvCoMKgwqAgaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7Cj4+PiArwqDCoMKg IGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPj4+ICvCoMKgwqAgaWd0X2Rpc3Bs YXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPj4+ICsKPj4+ICvCoMKgwqAgaWd0 X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwo+Pj4gK8KgwqDCoCBkYXRhLT5waXBlX2Ny YyA9IGlndF9waXBlX2NyY19uZXcoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLAo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0Vf QVVUTyk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIGZ1ZGdlX2x1dChkYXRhX3QgKmRh dGEsIGVudW0gcGlwZSBwaXBlLCB1aW50MTZfdCBtYXNrKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWd0 X3BpcGVfdCAqcGlwZV9vYmogPSAmZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlXTsKPj4+ICvCoMKg wqAgdWludDE2X3QgKmx1dDsKPj4+ICvCoMKgwqAgaW50IGksIGx1dF9zaXplOwo+Pj4gKwo+Pj4g K8KgwqDCoCBpZiAoIWlndF9waXBlX29ial9oYXNfcHJvcChwaXBlX29iaiwgSUdUX0NSVENfR0FN TUFfTFVUX1NJWkUpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4+ICsKPj4+ICvCoMKg wqAgbHV0X3NpemUgPSBpZ3RfcGlwZV9vYmpfZ2V0X3Byb3AocGlwZV9vYmosIElHVF9DUlRDX0dB TU1BX0xVVF9TSVpFKTsKPj4+ICsKPj4+ICvCoMKgwqAgbHV0ID0gbWFsbG9jKHNpemVvZih1aW50 MTZfdCkgKiBsdXRfc2l6ZSk7Cj4+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsg aSsrKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGx1dFtpXSA9IChpICogMHhmZmZmIC8gKGx1dF9zaXpl IC0gMSkpICYgbWFzazsKPj4+ICsKPj4+ICvCoMKgwqAgaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJv cF9ibG9iKHBpcGVfb2JqLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIGx1dCwgbHV0X3NpemUgKiBzaXpl b2YodWludDE2X3QpKTsKPj4+ICvCoMKgwqAgZnJlZShsdXQpOwo+Pj4gK30KPj4+ICsKPj4+ICtz dGF0aWMgdm9pZCB1bmZ1ZGdlX2x1dChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQo+Pj4g K3sKPj4+ICvCoMKgwqAgaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGF0YS0+ZGlzcGxheS5waXBl c1twaXBlXTsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKGlndF9waXBlX29ial9oYXNfcHJvcChwaXBl X29iaiwgSUdUX0NSVENfR0FNTUFfTFVUKSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfcGlwZV9v YmpfcmVwbGFjZV9wcm9wX2Jsb2IocGlwZV9vYmosIElHVF9DUlRDX0dBTU1BX0xVVCwgTlVMTCwg MCk7Cj4+PiArfQo+Pj4gKwo+Pj4gKy8qCj4+PiArICogVGVzdCB0aGF0IHdlIGluaXRpYWxpemUg YSBZVVYgZmIgYXMgYmxhY2sgY29ycmVjdGx5LAo+Pj4gKyAqIHRoYXQgd2hlbiB3ZSB3cml0ZSBh IGJsYWNrIEZCIGl0IHdpbGwgZ2V0IHRoZSBzYW1lIENSQywgYW5kIHRoYXQKPj4+ICsgKiBhbGwg Y29sb3JzIHdlIHRlc3Qgd2lsbCBnaXZlIHRoZSBzYW1lIENSQyBvbiBhbGwgZm9ybWF0cy4KPj4+ ICsgKi8KPj4+ICtzdGF0aWMgdm9pZCB5dXZfc2FuaXR5KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBl IHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+Pj4gK8KgwqDCoCBpZ3RfcGxhbmVfdCAq cGxhbmU7Cj4+PiArwqDCoMKgIGlndF9jcmNfdCBibGFja19jcmMsIGNvbG9yX2NyYywgY3JjOwo+ Pj4gK8KgwqDCoCBib29sIGZpcnN0ID0gdHJ1ZTsKPj4+ICsKPj4+ICvCoMKgwqAgcHJlcGFyZV9j cnRjKGRhdGEsIHBpcGUsIG91dHB1dCk7Cj4+PiArCj4+PiArwqDCoMKgIGZvcl9lYWNoX3BsYW5l X29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBmb3Ig KGludCBpID0gMDsgaSA8IGNvdW50X2Zvcm1hdHM7IGkrKykgewo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGlndF9mYiAqZmIgPSAmZGF0YS0+ZmJbMF07Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjYWlyb190ICpjcjsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICghaWd0X2Zvcm1hdF9pc195dXYoZm9ybWF0c1tpXSkgfHwKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIWlndF9wbGFuZV9oYXNfZm9ybWF0X21vZChwbGFuZSwgZm9y bWF0c1tpXSwgeF9tb2RpZmllcikpCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbnRpbnVlOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2RlYnVnKCJU ZXN0aW5nIGZvcm1hdCAlLjRzIG9uIHBsYW5lICVpXG4iLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChjaGFyICopJmZvcm1hdHNbaV0sIHBsYW5lLT5pbmRleCk7Cj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfY3JlYXRlX2ZiKGRpc3BsYXktPmRybV9mZCwgNjQs IDY0LCBmb3JtYXRzW2ldLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB4X21vZGlmaWVyLCBmYik7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBmYik7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFmaXJzdCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmMp Owo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2NyY19lcXVh bCgmYmxhY2tfY3JjLCAmY3JjKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7 Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19jb2xsZWN0 X2NyYyhkYXRhLT5waXBlX2NyYywgJmJsYWNrX2NyYyk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBDb21wYXJlIGluaXRp YWwgYmxhY2sgZmIgd2l0aCByZWZlcmVuY2UgcGFpbnRlZCBibGFjayBjb2xvciAqLwo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkaXNwbGF5LT5kcm1f ZmQsIGZiKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9wYWludF9jb2xvcihjciwg MCwgMCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCAwLiwgMC4sIDAuKTsKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlndF9wdXRfY2Fpcm9fY3R4KGRpc3BsYXktPmRybV9mZCwgZmIsIGNyKTsK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9kaXJ0eV9mYihkaXNwbGF5LT5kcm1fZmQs IGZiKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF93YWl0X2Zvcl92YmxhbmsoZGlz cGxheS0+ZHJtX2ZkLCBwaXBlKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9waXBl X2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmYmxhY2tfY3JjLCAmY3JjKTsKPj4+ICsK Pj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFdyaXRlIGEgY29sb3IgZmIgKi8K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNyID0gaWd0X2dldF9jYWlyb19jdHgoZGlzcGxh eS0+ZHJtX2ZkLCBmYik7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcGFpbnRfY29s b3IoY3IsIDAsIDAsIGZiLT53aWR0aCwgZmItPmhlaWdodCwgMS4sIDEuLCAwLik7Cj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcHV0X2NhaXJvX2N0eChkaXNwbGF5LT5kcm1fZmQsIGZi LCBjcik7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmdWRnZV9sdXQoZGF0YSwgcGlwZSwg MHhmYzAwKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIocGxh bmUsIGZiKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoIWZpcnN0KSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9w aXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZjb2xvcl9jcmMsICZj cmMpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVf Y3JjLCAmY29sb3JfY3JjKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmly c3QgPSBmYWxzZTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIENvbnZlcnQgZnJvbSBZVVYsIGJhY2sgdG8gWVVWLCB0byBl eHBvc2UgYnVncyBpbiBjb252ZXJzaW9uIHJvdXRpbmVzICovCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRpc3BsYXktPmRybV9mZCwgZmIpOwo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3B1dF9jYWlyb19jdHgoZGlzcGxheS0+ZHJtX2Zk LCBmYiwgY3IpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2RpcnR5X2ZiKGRpc3Bs YXktPmRybV9mZCwgZmIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3dhaXRfZm9y X3ZibGFuayhkaXNwbGF5LT5kcm1fZmQsIHBpcGUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZjb2xvcl9jcmMsICZj cmMpOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5mdWRnZV9sdXQoZGF0YSwg cGlwZSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCBOVUxMKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9yZW1vdmVfZmIoZGlzcGxh eS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMF0pOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+ICvCoMKg wqAgfQo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBzZXRfZmIoaWd0X3BsYW5lX3QgKnBs YW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYiwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIHNj YWxlZCwgaWd0X3JvdGF0aW9uX3Qgcm90KQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWd0X3BsYW5lX3Nl dF9mYihwbGFuZSwgZmIpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoc2NhbGVkICYmIGZiKQo+Pj4g K8KgwqDCoMKgwqDCoMKgIGlndF9mYl9zZXRfc2l6ZShmYiwgcGxhbmUsIGZiLT53aWR0aCwgMTYp Owo+Pj4gKwo+Pj4gK8KgwqDCoCBpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5lLCByb3QpOwo+ Pj4gK8KgwqDCoCBpZiAoZmIgJiYgKHJvdCA9PSBJR1RfUk9UQVRJT05fOTAgfHwgcm90ID09IElH VF9ST1RBVElPTl8yNzApKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfc2l6ZShw bGFuZSwgZmItPmhlaWdodCwgZmItPndpZHRoKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZv aWQgeXV2X3JnYl9zd2l0Y2goZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBib29sIHNjYWxl ZCwgdW5zaWduZWQgZm9ybWF0KQo+Pj4gK3sKPj4+ICvCoMKgwqAgZHJtTW9kZU1vZGVJbmZvICpt b2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+Pj4gK8KgwqDCoCBpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4+PiArwqDCoMKgIGlndF9wbGFuZV90ICpw bGFuZTsKPj4+ICvCoMKgwqAgaW50IGk7Cj4+PiArwqDCoMKgIGlndF9jcmNfdCByZWZfY3JjWzRd LCBjcmM7Cj4+PiArwqDCoMKgIGJvb2wgdmFsaWRbNF0gPSB7fTsKPj4+ICsKPj4+ICvCoMKgwqAg cHJlcGFyZV9jcnRjKGRhdGEsIHBpcGUsIG91dHB1dCk7Cj4+PiArCj4+PiArwqDCoMKgIGlndF9j cmVhdGVfcGF0dGVybl9mYihkaXNwbGF5LT5kcm1fZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52 ZGlzcGxheSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvcm1hdCwg eF9tb2RpZmllciwgJmRhdGEtPmZiWzBdKTsKPj4+ICsKPj4+ICvCoMKgwqAgaWd0X2NyZWF0ZV9w YXR0ZXJuX2ZiKGRpc3BsYXktPmRybV9mZCwgbW9kZS0+dmRpc3BsYXksIG1vZGUtPmhkaXNwbGF5 LAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9ybWF0LCB5X21vZGlm aWVyLCAmZGF0YS0+ZmJbMV0pOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZ3RfY3JlYXRlX3BhdHRlcm5f ZmIoZGlzcGxheS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4ODg4LCB4 X21vZGlmaWVyLCAmZGF0YS0+ZmJbMl0pOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZ3RfY3JlYXRlX3Bh dHRlcm5fZmIoZGlzcGxheS0+ZHJtX2ZkLCBtb2RlLT52ZGlzcGxheSwgbW9kZS0+aGRpc3BsYXks Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4 ODg4LCB5X21vZGlmaWVyLCAmZGF0YS0+ZmJbM10pOwo+Pj4gKwo+Pj4gK8KgwqDCoCBmb3JfZWFj aF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7Cj4+PiArwqDCoMKgwqDCoMKg wqAgY29uc3QgaW50IHNlcVtdID0gewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMiwgMCwg MiwgMSwgMywgMSwgMwo+Pj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+PiArCj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKCFpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdCwgZGF0YS0+ ZmJbMF0ubW9kaWZpZXIpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+ PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgLyogQ29sbGVjdCByZWZlcmVuY2UgY3JjIHdpdGggdG9n Z2xlIGluIGJldHdlZW4uICovCj4+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUocmVmX2NyYyk7IGkrKykgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0 X3JvdGF0aW9uX3Qgcm90ID0gKGkgPT0gMSB8fCBpID09IDMpID8KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgSUdUX1JPVEFUSU9OXzkwIDogSUdUX1JPVEFUSU9OXzA7Cj4+PiAr Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXRfZmIocGxhbmUsICZkYXRhLT5mYltpXSwg c2NhbGVkLCByb3QpOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2Rpc3Bs YXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJnJlZl9jcmNb aV0pOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsaWRbaV0gPSB0cnVlOwo+Pj4gKwo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0X2ZiKHBsYW5lLCBOVUxMLCBzY2FsZWQsIHJv dCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9BVE9NSUMpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKg wqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzZXEpOyBpKyspIHsKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBqID0gc2VxW2ldOwo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWd0X3JvdGF0aW9uX3Qgcm90ID0gKGogPT0gMSB8fCBqID09IDMpID8KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSUdUX1JPVEFUSU9OXzkwIDogSUdUX1JPVEFU SU9OXzA7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXZhbGlkW2pdKQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4+ICsKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNldF9mYihwbGFuZSwgJmRhdGEtPmZiW2pdLCBzY2FsZWQs IHJvdCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9BVE9NSUMpOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjW2pdLCAmY3Jj KTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgLyogV2Ug b25seSBoYXZlIGZldyBzY2FsZXJzLCBkb24ndCB1c2UgMSBmb3IgdW51c2VkIHBsYW5lcyAqLwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOwo+Pj4gK8Kg wqDCoCB9Cj4+PiArfQo+Pj4gKwo+Pj4gKyNkZWZpbmUgYXNzZXJ0X2NvbGxlY3RlZF9jcmNfZXF1 YWwocGlwZV9jcmMsIGNyYywgcmVmX2NyYykgXAo+Pj4gK8KgwqDCoCBkbyB7IFwKPj4+ICvCoMKg wqDCoMKgwqDCoCBpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGlzcGxheS0+ZHJtX2ZkLCBwaXBl X2NyYywgY3JjKTvCoMKgwqAgXAo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnRfY3JjX2Vx dWFsKHJlZl9jcmMsIGNyYyk7wqDCoMKgIFwKPj4+ICvCoMKgwqAgfSB3aGlsZSAoMCkKPj4+ICsK Pj4+ICtzdGF0aWMgdm9pZCBzZXRfc3JjX2Nvb3JkcyhpZ3RfcGxhbmVfdCAqcGxhbmUsIHN0cnVj dCBpZ3RfZmIgKmZiLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3JvdGF0 aW9uX3Qgcm90LCBpbnQgdmlzLCBpbnQgaGlkZGVuKQo+Pj4gK3sKPj4+ICvCoMKgwqAgc3dpdGNo IChyb3QpIHsKPj4+ICvCoMKgwqAgY2FzZSBJR1RfUk9UQVRJT05fMDoKPj4+ICvCoMKgwqDCoMKg wqDCoCBpZ3RfZmJfc2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwgZmItPndpZHRoIC8gMiAtIHZpcywg ZmItPmhlaWdodCAvIDIgLSB2aXMpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8Kg wqDCoCBjYXNlIElHVF9ST1RBVElPTl85MDoKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfZmJfc2V0 X3Bvc2l0aW9uKGZiLCBwbGFuZSwgZmItPndpZHRoIC8gMiAtIGhpZGRlbiwgZmItPmhlaWdodCAv IDIgLSB2aXMpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8KgwqDCoCBjYXNlIElH VF9ST1RBVElPTl8xODA6Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWd0X2ZiX3NldF9wb3NpdGlvbihm YiwgcGxhbmUsIGZiLT53aWR0aCAvIDIgLSBoaWRkZW4sIGZiLT5oZWlnaHQgLyAyIC0gaGlkZGVu KTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+ICvCoMKgwqAgY2FzZSBJR1RfUk9UQVRJ T05fMjcwOgo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9mYl9zZXRfcG9zaXRpb24oZmIsIHBsYW5l LCBmYi0+d2lkdGggLyAyIC0gdmlzLCBmYi0+aGVpZ2h0IC8gMiAtIGhpZGRlbik7Cj4+PiArwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+PiArwqDCoMKgIGRlZmF1bHQ6IGlndF9hc3NlcnQoMCk7Cj4+ IF5eCj4+IFRoaXMgd2FzIHRoZSBvbmx5IG5pdCBJIG5vdGljZWQuCj4gCj4gV2hhdCdzIHdyb25n IHRoZXJlPyBPciBkbyB5b3UgbWVhbiBwdXR0aW5nIGl0IG9uIGEgbmV3bGluZT8KeWVzLCBkZWZh dWx0IGNhc2Ugb24gaXRzIG93biBsaW5lIGJ1dCBpdHMganVzdCBtaW5vciB0eXBlIGRldGFpbC4K Ci9KdWhhLVBla2thCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==