From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH libdrm 7/7] add syncobj timeline tests v3 Date: Thu, 16 May 2019 12:52:09 +0200 Message-ID: <7f032aed-a83e-6ac7-25fc-0098ceffc7ab@gmail.com> References: <20190516080714.14980-1-david1.zhou@amd.com> <20190516080714.14980-7-david1.zhou@amd.com> <212b7506-58cc-fd48-a0cf-4e6098d0d4b1@gmail.com> <786dd8b0-0943-8275-39fc-d88ae9685ad7@amd.com> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id ACAA78936C for ; Thu, 16 May 2019 10:52:13 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id g12so2566686wro.8 for ; Thu, 16 May 2019 03:52:13 -0700 (PDT) In-Reply-To: <786dd8b0-0943-8275-39fc-d88ae9685ad7@amd.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: zhoucm1 , christian.koenig@amd.com, Chunming Zhou , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW0gMTYuMDUuMTkgdW0gMTI6MTkgc2NocmllYiB6aG91Y20xOgo+Cj4KPiBPbiAyMDE55bm0MDXm nIgxNuaXpSAxODowOSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4gW0NBVVRJT046IEV4dGVy bmFsIEVtYWlsXQo+Pgo+PiBBbSAxNi4wNS4xOSB1bSAxMDoxNiBzY2hyaWViIHpob3VjbTE6Cj4+ PiBJIHdhcyBhYmxlIHRvIHB1c2ggY2hhbmdlcyB0byBsaWJkcm0sIGJ1dCBub3cgc2VlbXMgYWZ0 ZXIgbGliZHJtIGlzCj4+PiBtaWdyYXRlZCB0byBnaXRsYWIsIEkgY2Fubm90IHlldC4gV2hhdCBz dGVwIGRvIEkgbmVlZCB0byBnZXQgYmFjayBteQo+Pj4gcGVybWlzc2lvbj8gSSBhbHJlYWR5IGNh biBsb2dpbiBpbnRvIGdpdGxhYiB3aXRoIG9sZCBmcmVlZGVza3RvcCAKPj4+IGFjY291bnQuCj4+ Pgo+Pj4gQENocmlzdGlhbiwgQ2FuIHlvdSBoZWxwIHN1Ym1pdCB0aGlzIHBhdGNoIHNldCB0byBs aWJkcm0gZmlyc3Q/Cj4+Cj4+IERvbmUuIEFuZCBJIHRoaW5rIHlvdSBjYW4gbm93IHJlcXVlc3Qg d3JpdGUgcGVybWlzc2lvbiB0byBhIHJlcG9zaXRvcnkKPj4gdGhyb3VnaCB0aGUgd2ViLWludGVy ZmFjZSBhbmQgYWxsIHRoZSAib3duZXJzIiBvZiB0aGUgcHJvamVjdCBjYW4gZ3JhbnQKPj4gdGhh dCB0byB5b3UuCj4gQW55IGd1aWRlIGZvciB0aGF0PyBJIGZhaWxlZCB0byBmaW5kIHdoZXJlIHRv IHJlcXVlc3QgcGVybWlzc2lvbi4KCk5vdCBvZiBoYW5kLiBXaGF0IGRvZXMgdGhlIHN5c3RlbSBz YXkgd2hlbiB5b3UgdHJ5IHRvIHB1c2g/CgpDaHJpc3RpYW4uCgo+Cj4gLURhdmlkCj4+Cj4+IENo cmlzdGlhbi4KPj4KPj4+Cj4+Pgo+Pj4gVGhhbmtzLAo+Pj4KPj4+IC1EYXZpZAo+Pj4KPj4+Cj4+ PiBPbiAyMDE55bm0MDXmnIgxNuaXpSAxNjowNywgQ2h1bm1pbmcgWmhvdSB3cm90ZToKPj4+PiB2 MjogZHJvcCBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSwgZml4IHRpbWVvdXQgY2Fs Y3VsYXRpb24sCj4+Pj4gwqDCoMKgwqAgZml4IHNvbWUgd2FybmluZ3MKPj4+PiB2MzogYWRkIGV4 cG9ydC9pbXBvcnQgYW5kIGNwdSBzaWduYWwgdGVzdGluZyBjYXNlcwo+Pj4+Cj4+Pj4gU2lnbmVk LW9mZi1ieTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KPj4+PiBBY2tlZC1i eTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+Pj4+IEFja2Vk LWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4+ Pj4gLS0tCj4+Pj4gwqAgdGVzdHMvYW1kZ3B1L01ha2VmaWxlLmFtwqDCoMKgwqAgfMKgwqAgMyAr LQo+Pj4+IMKgIHRlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5jwqDCoCB8wqAgMTEgKysKPj4+PiDC oCB0ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuaMKgwqAgfMKgIDIxICsrKwo+Pj4+IMKgIHRlc3Rz L2FtZGdwdS9tZXNvbi5idWlsZMKgwqDCoMKgIHzCoMKgIDIgKy0KPj4+PiDCoCB0ZXN0cy9hbWRn cHUvc3luY29ial90ZXN0cy5jIHwgMjkwIAo+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4+Pj4gwqAgNSBmaWxlcyBjaGFuZ2VkLCAzMjUgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKPj4+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvYW1kZ3B1L3N5bmNv YmpfdGVzdHMuYwo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9NYWtlZmlsZS5h bSBiL3Rlc3RzL2FtZGdwdS9NYWtlZmlsZS5hbQo+Pj4+IGluZGV4IDQ4Mjc4ODQ4Li45MjA4ODJk MCAxMDA2NDQKPj4+PiAtLS0gYS90ZXN0cy9hbWRncHUvTWFrZWZpbGUuYW0KPj4+PiArKysgYi90 ZXN0cy9hbWRncHUvTWFrZWZpbGUuYW0KPj4+PiBAQCAtMzQsNCArMzQsNSBAQCBhbWRncHVfdGVz dF9TT1VSQ0VTID0gXAo+Pj4+IMKgwqDCoMKgwqAgdXZlX2liLmggXAo+Pj4+IMKgwqDCoMKgwqAg ZGVhZGxvY2tfdGVzdHMuYyBcCj4+Pj4gwqDCoMKgwqDCoCB2bV90ZXN0cy5jwqDCoMKgIFwKPj4+ PiAtwqDCoMKgIHJhc190ZXN0cy5jCj4+Pj4gK8KgwqDCoCByYXNfdGVzdHMuYyBcCj4+Pj4gK8Kg wqDCoCBzeW5jb2JqX3Rlc3RzLmMKPj4+PiBkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L2FtZGdw dV90ZXN0LmMgYi90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYwo+Pj4+IGluZGV4IDM1YzhiZjZj Li43MzQwM2ZiNCAxMDA2NDQKPj4+PiAtLS0gYS90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYwo+ Pj4+ICsrKyBiL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5jCj4+Pj4gQEAgLTU3LDYgKzU3LDcg QEAKPj4+PiDCoCAjZGVmaW5lIERFQURMT0NLX1RFU1RTX1NUUiAiRGVhZGxvY2sgVGVzdHMiCj4+ Pj4gwqAgI2RlZmluZSBWTV9URVNUU19TVFIgIlZNIFRlc3RzIgo+Pj4+IMKgICNkZWZpbmUgUkFT X1RFU1RTX1NUUiAiUkFTIFRlc3RzIgo+Pj4+ICsjZGVmaW5lIFNZTkNPQkpfVElNRUxJTkVfVEVT VFNfU1RSICJTWU5DT0JKIFRJTUVMSU5FIFRlc3RzIgo+Pj4+IMKgwqDCoCAvKioKPj4+PiDCoMKg ICrCoCBPcGVuIGhhbmRsZXMgZm9yIGFtZGdwdSBkZXZpY2VzCj4+Pj4gQEAgLTEyMyw2ICsxMjQs MTIgQEAgc3RhdGljIENVX1N1aXRlSW5mbyBzdWl0ZXNbXSA9IHsKPj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgLnBDbGVhbnVwRnVuYyA9IHN1aXRlX3Jhc190ZXN0c19jbGVhbiwKPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgLnBUZXN0cyA9IHJhc190ZXN0cywKPj4+PiDCoMKgwqDCoMKgIH0sCj4+Pj4g K8KgwqDCoCB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIC5wTmFtZSA9IFNZTkNPQkpfVElNRUxJTkVf VEVTVFNfU1RSLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoCAucEluaXRGdW5jID0gc3VpdGVfc3luY29i al90aW1lbGluZV90ZXN0c19pbml0LAo+Pj4+ICvCoMKgwqDCoMKgwqDCoCAucENsZWFudXBGdW5j ID0gc3VpdGVfc3luY29ial90aW1lbGluZV90ZXN0c19jbGVhbiwKPj4+PiArwqDCoMKgwqDCoMKg wqAgLnBUZXN0cyA9IHN5bmNvYmpfdGltZWxpbmVfdGVzdHMsCj4+Pj4gK8KgwqDCoCB9LAo+Pj4+ IMKgwqDCoMKgwqDCoMKgIENVX1NVSVRFX0lORk9fTlVMTCwKPj4+PiDCoCB9Owo+Pj4+IEBAIC0x NzYsNiArMTgzLDEwIEBAIHN0YXRpYyBTdWl0ZXNfQWN0aXZlX1N0YXR1cyBzdWl0ZXNfYWN0aXZl X3N0YXRbXQo+Pj4+ID0gewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5wTmFtZSA9 IFJBU19URVNUU19TVFIsCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnBBY3RpdmUg PSBzdWl0ZV9yYXNfdGVzdHNfZW5hYmxlLAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LAo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnBOYW1lID0g U1lOQ09CSl9USU1FTElORV9URVNUU19TVFIsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LnBBY3RpdmUgPSBzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2VuYWJsZSwKPj4+PiArwqDC oMKgwqDCoMKgwqAgfSwKPj4+PiDCoCB9Owo+Pj4+IMKgwqDCoCBkaWZmIC0tZ2l0IGEvdGVzdHMv YW1kZ3B1L2FtZGdwdV90ZXN0LmggCj4+Pj4gYi90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuaAo+ Pj4+IGluZGV4IGJjZDBiYzdlLi4zNjY3NWVhMyAxMDA2NDQKPj4+PiAtLS0gYS90ZXN0cy9hbWRn cHUvYW1kZ3B1X3Rlc3QuaAo+Pj4+ICsrKyBiL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5oCj4+ Pj4gQEAgLTIxNiw2ICsyMTYsMjcgQEAgQ1VfQk9PTCBzdWl0ZV9yYXNfdGVzdHNfZW5hYmxlKHZv aWQpOwo+Pj4+IMKgIGV4dGVybiBDVV9UZXN0SW5mbyByYXNfdGVzdHNbXTsKPj4+PiDCoMKgwqAg Ky8qKgo+Pj4+ICsgKiBJbml0aWFsaXplIHN5bmNvYmogdGltZWxpbmUgdGVzdCBzdWl0ZQo+Pj4+ ICsgKi8KPj4+PiAraW50IHN1aXRlX3N5bmNvYmpfdGltZWxpbmVfdGVzdHNfaW5pdCgpOwo+Pj4+ ICsKPj4+PiArLyoqCj4+Pj4gKyAqIERlaW5pdGlhbGl6ZSBzeW5jb2JqIHRpbWVsaW5lIHRlc3Qg c3VpdGUKPj4+PiArICovCj4+Pj4gK2ludCBzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2Ns ZWFuKCk7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiArICogRGVjaWRlIGlmIHRoZSBzdWl0ZSBpcyBl bmFibGVkIGJ5IGRlZmF1bHQgb3Igbm90Lgo+Pj4+ICsgKi8KPj4+PiArQ1VfQk9PTCBzdWl0ZV9z eW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2VuYWJsZSh2b2lkKTsKPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ ICsgKiBUZXN0cyBpbiBzeW5jb2JqIHRpbWVsaW5lIHRlc3Qgc3VpdGUKPj4+PiArICovCj4+Pj4g K2V4dGVybiBDVV9UZXN0SW5mbyBzeW5jb2JqX3RpbWVsaW5lX3Rlc3RzW107Cj4+Pj4gKwo+Pj4+ ICsKPj4+PiDCoCAvKioKPj4+PiDCoMKgICogSGVscGVyIGZ1bmN0aW9ucwo+Pj4+IMKgwqAgKi8K Pj4+PiBkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkIGIvdGVzdHMvYW1kZ3B1 L21lc29uLmJ1aWxkCj4+Pj4gaW5kZXggOTVlZDkzMDUuLjE3MjZjYjQzIDEwMDY0NAo+Pj4+IC0t LSBhL3Rlc3RzL2FtZGdwdS9tZXNvbi5idWlsZAo+Pj4+ICsrKyBiL3Rlc3RzL2FtZGdwdS9tZXNv bi5idWlsZAo+Pj4+IEBAIC0yNCw3ICsyNCw3IEBAIGlmIGRlcF9jdW5pdC5mb3VuZCgpCj4+Pj4g wqDCoMKgwqDCoCBmaWxlcygKPj4+PiDCoMKgwqDCoMKgwqDCoCAnYW1kZ3B1X3Rlc3QuYycsICdi YXNpY190ZXN0cy5jJywgJ2JvX3Rlc3RzLmMnLCAnY3NfdGVzdHMuYycsCj4+Pj4gwqDCoMKgwqDC oMKgwqAgJ3ZjZV90ZXN0cy5jJywgJ3V2ZF9lbmNfdGVzdHMuYycsICd2Y25fdGVzdHMuYycsCj4+ Pj4gJ2RlYWRsb2NrX3Rlc3RzLmMnLAo+Pj4+IC3CoMKgwqDCoMKgICd2bV90ZXN0cy5jJywgJ3Jh c190ZXN0cy5jJywKPj4+PiArwqDCoMKgwqDCoCAndm1fdGVzdHMuYycsICdyYXNfdGVzdHMuYycs ICdzeW5jb2JqX3Rlc3RzLmMnLAo+Pj4+IMKgwqDCoMKgwqAgKSwKPj4+PiDCoMKgwqDCoMKgIGRl cGVuZGVuY2llcyA6IFtkZXBfY3VuaXQsIGRlcF90aHJlYWRzXSwKPj4+PiDCoMKgwqDCoMKgIGlu Y2x1ZGVfZGlyZWN0b3JpZXMgOiBbaW5jX3Jvb3QsIGluY19kcm0sCj4+Pj4gaW5jbHVkZV9kaXJl Y3RvcmllcygnLi4vLi4vYW1kZ3B1JyldLAo+Pj4+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUv c3luY29ial90ZXN0cy5jIAo+Pj4+IGIvdGVzdHMvYW1kZ3B1L3N5bmNvYmpfdGVzdHMuYwo+Pj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAuLmEwYzYyN2Q3Cj4+Pj4g LS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL3Rlc3RzL2FtZGdwdS9zeW5jb2JqX3Rlc3RzLmMKPj4+ PiBAQCAtMCwwICsxLDI5MCBAQAo+Pj4+ICsvKgo+Pj4+ICsgKiBDb3B5cmlnaHQgMjAxNyBBZHZh bmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+Pj4gb2J0YWlu aW5nIGEKPj4+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZQo+Pj4+ICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+ IGxpbWl0YXRpb24KPj4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4+Pj4gc3VibGljZW5zZSwKPj4+PiArICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20KPj4+PiB0aGUKPj4+PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgCj4+Pj4gY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh bGwgYmUKPj4+PiBpbmNsdWRlZCBpbgo+Pj4+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4g RVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTwo+Pj4+ IEVWRU5UIFNIQUxMCj4+Pj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihT KSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPj4+PiBEQU1BR0VTIE9SCj4+Pj4gKyAqIE9USEVS IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKPj4+ PiBPVEhFUldJU0UsCj4+Pj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCj4+Pj4gVVNFIE9SCj4+Pj4gKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+PiArICoKPj4+PiArKi8KPj4+PiArCj4+Pj4gKyNp bmNsdWRlICJDVW5pdC9CYXNpYy5oIgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgImFtZGdwdV90ZXN0 LmgiCj4+Pj4gKyNpbmNsdWRlICJhbWRncHVfZHJtLmgiCj4+Pj4gKyNpbmNsdWRlICJhbWRncHVf aW50ZXJuYWwuaCIKPj4+PiArI2luY2x1ZGUgPHB0aHJlYWQuaD4KPj4+PiArCj4+Pj4gK3N0YXRp Y8KgIGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldmljZV9oYW5kbGU7Cj4+Pj4gK3N0YXRpY8KgIHVp bnQzMl90wqAgbWFqb3JfdmVyc2lvbjsKPj4+PiArc3RhdGljwqAgdWludDMyX3TCoCBtaW5vcl92 ZXJzaW9uOwo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQgYW1kZ3B1X3N5bmNvYmpfdGltZWxpbmVf dGVzdCh2b2lkKTsKPj4+PiArCj4+Pj4gK0NVX0JPT0wgc3VpdGVfc3luY29ial90aW1lbGluZV90 ZXN0c19lbmFibGUodm9pZCkKPj4+PiArewo+Pj4+ICvCoMKgwqAgcmV0dXJuIENVX1RSVUU7Cj4+ Pj4gK30KPj4+PiArCj4+Pj4gK2ludCBzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2luaXQo dm9pZCkKPj4+PiArewo+Pj4+ICvCoMKgwqAgaW50IHI7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgciA9 IGFtZGdwdV9kZXZpY2VfaW5pdGlhbGl6ZShkcm1fYW1kZ3B1WzBdLCAmbWFqb3JfdmVyc2lvbiwK Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtaW5vcl92ZXJzaW9u LCAmZGV2aWNlX2hhbmRsZSk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHIpIHsKPj4+PiArwqDC oMKgwqDCoMKgwqAgaWYgKChyID09IC1FQUNDRVMpICYmIChlcnJubyA9PSBFQUNDRVMpKQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ZigiXG5cbkVycm9yOiVzLiAiCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiSGludDpUcnkgdG8gcnVuIHRoaXMgdGVzdCBw cm9ncmFtIGFzIHJvb3QuIiwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cmVycm9yKGVycm5vKSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBDVUVfU0lOSVRfRkFJ TEVEOwo+Pj4+ICvCoMKgwqAgfQo+Pj4+ICsKPj4+PiArwqDCoMKgIHJldHVybiBDVUVfU1VDQ0VT UzsKPj4+PiArfQo+Pj4+ICsKPj4+PiAraW50IHN1aXRlX3N5bmNvYmpfdGltZWxpbmVfdGVzdHNf Y2xlYW4odm9pZCkKPj4+PiArewo+Pj4+ICvCoMKgwqAgaW50IHIgPSBhbWRncHVfZGV2aWNlX2Rl aW5pdGlhbGl6ZShkZXZpY2VfaGFuZGxlKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCBpZiAociA9PSAw KQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQ1VFX1NVQ0NFU1M7Cj4+Pj4gK8KgwqDCoCBl bHNlCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBDVUVfU0NMRUFOX0ZBSUxFRDsKPj4+PiAr fQo+Pj4+ICsKPj4+PiArCj4+Pj4gK0NVX1Rlc3RJbmZvIHN5bmNvYmpfdGltZWxpbmVfdGVzdHNb XSA9IHsKPj4+PiArwqDCoMKgIHsgInN5bmNvYmogdGltZWxpbmUgdGVzdCIsIGFtZGdwdV9zeW5j b2JqX3RpbWVsaW5lX3Rlc3QgfSwKPj4+PiArwqDCoMKgIENVX1RFU1RfSU5GT19OVUxMLAo+Pj4+ ICt9Owo+Pj4+ICsKPj4+PiArI2RlZmluZSBHRlhfQ09NUFVURV9OT1DCoCAweGZmZmYxMDAwCj4+ Pj4gKyNkZWZpbmUgU0RNQV9OT1DCoCAweDAKPj4+PiArc3RhdGljIGludCBzeW5jb2JqX2NvbW1h bmRfc3VibWlzc2lvbl9oZWxwZXIodWludDMyX3QKPj4+PiBzeW5jb2JqX2hhbmRsZSwgYm9vbAo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2Fp dF9vcl9zaWduYWwsIHVpbnQ2NF90IHBvaW50KQo+Pj4+ICt7Cj4+Pj4gK8KgwqDCoCBhbWRncHVf Y29udGV4dF9oYW5kbGUgY29udGV4dF9oYW5kbGU7Cj4+Pj4gK8KgwqDCoCBhbWRncHVfYm9faGFu ZGxlIGliX3Jlc3VsdF9oYW5kbGU7Cj4+Pj4gK8KgwqDCoCB2b2lkICppYl9yZXN1bHRfY3B1Owo+ Pj4+ICvCoMKgwqAgdWludDY0X3QgaWJfcmVzdWx0X21jX2FkZHJlc3M7Cj4+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVuayBjaHVua3NbMl07Cj4+Pj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2FtZGdwdV9jc19jaHVua19kYXRhIGNodW5rX2RhdGE7Cj4+Pj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2FtZGdwdV9jc19jaHVua19zeW5jb2JqIHN5bmNvYmpfZGF0YTsKPj4+PiArwqDCoMKgIHN0 cnVjdCBhbWRncHVfY3NfZmVuY2UgZmVuY2Vfc3RhdHVzOwo+Pj4+ICvCoMKgwqAgYW1kZ3B1X2Jv X2xpc3RfaGFuZGxlIGJvX2xpc3Q7Cj4+Pj4gK8KgwqDCoCBhbWRncHVfdmFfaGFuZGxlIHZhX2hh bmRsZTsKPj4+PiArwqDCoMKgIHVpbnQzMl90IGV4cGlyZWQsIGZsYWdzOwo+Pj4+ICvCoMKgwqAg aW50IGksIHI7Cj4+Pj4gK8KgwqDCoCB1aW50NjRfdCBzZXFfbm87Cj4+Pj4gK8KgwqDCoCBzdGF0 aWMgdWludDMyX3QgKnB0cjsKPj4+PiArCj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2NzX2N0eF9j cmVhdGUoZGV2aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFuZGxlKTsKPj4+PiArwqDCoMKgIENVX0FT U0VSVF9FUVVBTChyLCAwKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2JvX2FsbG9j X2FuZF9tYXAoZGV2aWNlX2hhbmRsZSwgNDA5NiwgNDA5NiwKPj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLAo+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmaWJfcmVzdWx0X2hhbmRsZSwg JmliX3Jlc3VsdF9jcHUsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICZpYl9yZXN1bHRfbWNfYWRkcmVzcywgJnZhX2hhbmRsZSk7Cj4+Pj4gK8KgwqDCoCBDVV9B U1NFUlRfRVFVQUwociwgMCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgciA9IGFtZGdwdV9nZXRfYm9f bGlzdChkZXZpY2VfaGFuZGxlLCBpYl9yZXN1bHRfaGFuZGxlLCBOVUxMLAo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmJvX2xpc3QpOwo+Pj4+ICvCoMKgwqAgQ1Vf QVNTRVJUX0VRVUFMKHIsIDApOwo+Pj4+ICsKPj4+PiArwqDCoMKgIHB0ciA9IGliX3Jlc3VsdF9j cHU7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IDE2OyArK2kpCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIHB0cltpXSA9IHdhaXRfb3Jfc2lnbmFsID8gR0ZYX0NPTVBVVEVfTk9QOiBT RE1BX05PUDsKPj4+PiArCj4+Pj4gK8KgwqDCoCBjaHVua3NbMF0uY2h1bmtfaWQgPSBBTURHUFVf Q0hVTktfSURfSUI7Cj4+Pj4gK8KgwqDCoCBjaHVua3NbMF0ubGVuZ3RoX2R3ID0gc2l6ZW9mKHN0 cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2liKSAvIDQ7Cj4+Pj4gK8KgwqDCoCBjaHVua3NbMF0u Y2h1bmtfZGF0YSA9ICh1aW50NjRfdCkodWludHB0cl90KSZjaHVua19kYXRhOwo+Pj4+ICvCoMKg wqAgY2h1bmtfZGF0YS5pYl9kYXRhLl9wYWQgPSAwOwo+Pj4+ICvCoMKgwqAgY2h1bmtfZGF0YS5p Yl9kYXRhLnZhX3N0YXJ0ID0gaWJfcmVzdWx0X21jX2FkZHJlc3M7Cj4+Pj4gK8KgwqDCoCBjaHVu a19kYXRhLmliX2RhdGEuaWJfYnl0ZXMgPSAxNiAqIDQ7Cj4+Pj4gK8KgwqDCoCBjaHVua19kYXRh LmliX2RhdGEuaXBfdHlwZSA9IHdhaXRfb3Jfc2lnbmFsID8gQU1ER1BVX0hXX0lQX0dGWCA6Cj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIEFNREdQVV9IV19JUF9ETUE7Cj4+Pj4gK8KgwqDCoCBjaHVua19k YXRhLmliX2RhdGEuaXBfaW5zdGFuY2UgPSAwOwo+Pj4+ICvCoMKgwqAgY2h1bmtfZGF0YS5pYl9k YXRhLnJpbmcgPSAwOwo+Pj4+ICvCoMKgwqAgY2h1bmtfZGF0YS5pYl9kYXRhLmZsYWdzID0gMDsK Pj4+PiArCj4+Pj4gK8KgwqDCoCBjaHVua3NbMV0uY2h1bmtfaWQgPSB3YWl0X29yX3NpZ25hbCA/ Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIEFNREdQVV9DSFVOS19JRF9TWU5DT0JKX1RJTUVMSU5FX1dB SVQgOgo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBBTURHUFVfQ0hVTktfSURfU1lOQ09CSl9USU1FTElO RV9TSUdOQUw7Cj4+Pj4gK8KgwqDCoCBjaHVua3NbMV0ubGVuZ3RoX2R3ID0gc2l6ZW9mKHN0cnVj dCBkcm1fYW1kZ3B1X2NzX2NodW5rX3N5bmNvYmopCj4+Pj4gLyA0Owo+Pj4+ICvCoMKgwqAgY2h1 bmtzWzFdLmNodW5rX2RhdGEgPSAodWludDY0X3QpKHVpbnRwdHJfdCkmc3luY29ial9kYXRhOwo+ Pj4+ICvCoMKgwqAgc3luY29ial9kYXRhLmhhbmRsZSA9IHN5bmNvYmpfaGFuZGxlOwo+Pj4+ICvC oMKgwqAgc3luY29ial9kYXRhLnBvaW50ID0gcG9pbnQ7Cj4+Pj4gK8KgwqDCoCBzeW5jb2JqX2Rh dGEuZmxhZ3MgPSBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVDsKPj4+PiAr Cj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2NzX3N1Ym1pdF9yYXcoZGV2aWNlX2hhbmRsZSwKPj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGV4dF9oYW5kbGUsCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvX2xpc3QsCj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNodW5rcywKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JnNlcV9ubyk7Cj4+Pj4gK8KgwqDCoCBDVV9BU1NFUlRfRVFVQUwociwgMCk7Cj4+Pj4gKwo+Pj4+ ICsKPj4+PiArwqDCoMKgIG1lbXNldCgmZmVuY2Vfc3RhdHVzLCAwLCBzaXplb2Yoc3RydWN0IGFt ZGdwdV9jc19mZW5jZSkpOwo+Pj4+ICvCoMKgwqAgZmVuY2Vfc3RhdHVzLmNvbnRleHQgPSBjb250 ZXh0X2hhbmRsZTsKPj4+PiArwqDCoMKgIGZlbmNlX3N0YXR1cy5pcF90eXBlID0gd2FpdF9vcl9z aWduYWwgPyBBTURHUFVfSFdfSVBfR0ZYOgo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBBTURHUFVfSFdf SVBfRE1BOwo+Pj4+ICvCoMKgwqAgZmVuY2Vfc3RhdHVzLmlwX2luc3RhbmNlID0gMDsKPj4+PiAr wqDCoMKgIGZlbmNlX3N0YXR1cy5yaW5nID0gMDsKPj4+PiArwqDCoMKgIGZlbmNlX3N0YXR1cy5m ZW5jZSA9IHNlcV9ubzsKPj4+PiArCj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2NzX3F1ZXJ5X2Zl bmNlX3N0YXR1cygmZmVuY2Vfc3RhdHVzLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFN REdQVV9USU1FT1VUX0lORklOSVRFLDAsICZleHBpcmVkKTsKPj4+PiArwqDCoMKgIENVX0FTU0VS VF9FUVVBTChyLCAwKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2JvX2xpc3RfZGVz dHJveShib19saXN0KTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsKPj4+PiAr Cj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2JvX3VubWFwX2FuZF9mcmVlKGliX3Jlc3VsdF9oYW5k bGUsIHZhX2hhbmRsZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpYl9yZXN1bHRfbWNfYWRkcmVzcywgNDA5Nik7Cj4+Pj4gK8KgwqDCoCBDVV9BU1NFUlRf RVFVQUwociwgMCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgciA9IGFtZGdwdV9jc19jdHhfZnJlZShj b250ZXh0X2hhbmRsZSk7Cj4+Pj4gK8KgwqDCoCBDVV9BU1NFUlRfRVFVQUwociwgMCk7Cj4+Pj4g Kwo+Pj4+ICvCoMKgwqAgcmV0dXJuIHI7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0cnVjdCBzeW5j b2JqX3BvaW50IHsKPj4+PiArwqDCoMKgIHVpbnQzMl90IHN5bmNvYmpfaGFuZGxlOwo+Pj4+ICvC oMKgwqAgdWludDY0X3QgcG9pbnQ7Cj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCAq c3luY29ial93YWl0KHZvaWQgKmRhdGEpCj4+Pj4gK3sKPj4+PiArwqDCoMKgIHN0cnVjdCBzeW5j b2JqX3BvaW50ICpzcCA9IChzdHJ1Y3Qgc3luY29ial9wb2ludCAqKWRhdGE7Cj4+Pj4gK8KgwqDC oCBpbnQgcjsKPj4+PiArCj4+Pj4gK8KgwqDCoCByID0gc3luY29ial9jb21tYW5kX3N1Ym1pc3Np b25faGVscGVyKHNwLT5zeW5jb2JqX2hhbmRsZSwgdHJ1ZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3AtPnBvaW50KTsKPj4+PiArwqDC oMKgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCByZXR1cm4gKHZv aWQgKikobG9uZylyOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCAqc3luY29ial9z aWduYWwodm9pZCAqZGF0YSkKPj4+PiArewo+Pj4+ICvCoMKgwqAgc3RydWN0IHN5bmNvYmpfcG9p bnQgKnNwID0gKHN0cnVjdCBzeW5jb2JqX3BvaW50ICopZGF0YTsKPj4+PiArwqDCoMKgIGludCBy Owo+Pj4+ICsKPj4+PiArwqDCoMKgIHIgPSBzeW5jb2JqX2NvbW1hbmRfc3VibWlzc2lvbl9oZWxw ZXIoc3AtPnN5bmNvYmpfaGFuZGxlLCBmYWxzZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3AtPnBvaW50KTsKPj4+PiArwqDCoMKgIENV X0FTU0VSVF9FUVVBTChyLCAwKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCByZXR1cm4gKHZvaWQgKiko bG9uZylyOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCBhbWRncHVfc3luY29ial90 aW1lbGluZV90ZXN0KHZvaWQpCj4+Pj4gK3sKPj4+PiArwqDCoMKgIHN0YXRpYyBwdGhyZWFkX3Qg d2FpdF90aHJlYWQ7Cj4+Pj4gK8KgwqDCoCBzdGF0aWMgcHRocmVhZF90IHNpZ25hbF90aHJlYWQ7 Cj4+Pj4gK8KgwqDCoCBzdGF0aWMgcHRocmVhZF90IGNfdGhyZWFkOwo+Pj4+ICvCoMKgwqAgc3Ry dWN0IHN5bmNvYmpfcG9pbnQgc3AxLCBzcDIsIHNwMzsKPj4+PiArwqDCoMKgIHVpbnQzMl90IHN5 bmNvYmpfaGFuZGxlOwo+Pj4+ICvCoMKgwqAgdWludDY0X3QgcGF5bG9hZDsKPj4+PiArwqDCoMKg IHVpbnQ2NF90IHdhaXRfcG9pbnQsIHNpZ25hbF9wb2ludDsKPj4+PiArwqDCoMKgIHVpbnQ2NF90 IHRpbWVvdXQ7Cj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgdGltZXNwZWMgdHA7Cj4+Pj4gK8KgwqDCoCBp bnQgciwgc3luY19mZDsKPj4+PiArwqDCoMKgIHZvaWQgKnRtcDsKPj4+PiArCj4+Pj4gK8KgwqDC oCByID3CoCBhbWRncHVfY3NfY3JlYXRlX3N5bmNvYmoyKGRldmljZV9oYW5kbGUsIDAsIAo+Pj4+ ICZzeW5jb2JqX2hhbmRsZSk7Cj4+Pj4gK8KgwqDCoCBDVV9BU1NFUlRfRVFVQUwociwgMCk7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqAgLy8gd2FpdCBvbiBwb2ludCA1Cj4+Pj4gK8KgwqDCoCBzcDEuc3lu Y29ial9oYW5kbGUgPSBzeW5jb2JqX2hhbmRsZTsKPj4+PiArwqDCoMKgIHNwMS5wb2ludCA9IDU7 Cj4+Pj4gK8KgwqDCoCByID0gcHRocmVhZF9jcmVhdGUoJndhaXRfdGhyZWFkLCBOVUxMLCBzeW5j b2JqX3dhaXQsICZzcDEpOwo+Pj4+ICvCoMKgwqAgQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+Pj4+ ICsKPj4+PiArwqDCoMKgIC8vIHNpZ25hbCBvbiBwb2ludCAxMAo+Pj4+ICvCoMKgwqAgc3AyLnN5 bmNvYmpfaGFuZGxlID0gc3luY29ial9oYW5kbGU7Cj4+Pj4gK8KgwqDCoCBzcDIucG9pbnQgPSAx MDsKPj4+PiArwqDCoMKgIHIgPSBwdGhyZWFkX2NyZWF0ZSgmc2lnbmFsX3RocmVhZCwgTlVMTCwg c3luY29ial9zaWduYWwsICZzcDIpOwo+Pj4+ICvCoMKgwqAgQ1VfQVNTRVJUX0VRVUFMKHIsIDAp Owo+Pj4+ICsKPj4+PiArwqDCoMKgIHIgPSBwdGhyZWFkX2pvaW4od2FpdF90aHJlYWQsICZ0bXAp Owo+Pj4+ICvCoMKgwqAgQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+Pj4+ICvCoMKgwqAgQ1VfQVNT RVJUX0VRVUFMKHRtcCwgMCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgciA9IHB0aHJlYWRfam9pbihz aWduYWxfdGhyZWFkLCAmdG1wKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsK Pj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTCh0bXAsIDApOwo+Pj4+ICsKPj4+PiArwqDCoMKg IC8vcXVlcnkgdGltZWxpbmUgcGF5bG9hZAo+Pj4+ICvCoMKgwqAgciA9IGFtZGdwdV9jc19zeW5j b2JqX3F1ZXJ5KGRldmljZV9oYW5kbGUsICZzeW5jb2JqX2hhbmRsZSwKPj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnBheWxvYWQsIDEpOwo+Pj4+ICvCoMKgwqAg Q1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+Pj4+ICvCoMKgwqAgQ1VfQVNTRVJUX0VRVUFMKHBheWxv YWQsIDEwKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCAvL3NpZ25hbCBvbiBwb2ludCAxNgo+Pj4+ICvC oMKgwqAgc3AzLnN5bmNvYmpfaGFuZGxlID0gc3luY29ial9oYW5kbGU7Cj4+Pj4gK8KgwqDCoCBz cDMucG9pbnQgPSAxNjsKPj4+PiArwqDCoMKgIHIgPSBwdGhyZWFkX2NyZWF0ZSgmY190aHJlYWQs IE5VTEwsIHN5bmNvYmpfc2lnbmFsLCAmc3AzKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVB TChyLCAwKTsKPj4+PiArwqDCoMKgIC8vQ1BVIHdhaXQgb24gcG9pbnQgMTYKPj4+PiArwqDCoMKg IHdhaXRfcG9pbnQgPSAxNjsKPj4+PiArwqDCoMKgIHRpbWVvdXQgPSAwOwo+Pj4+ICvCoMKgwqAg Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0cCk7Cj4+Pj4gK8KgwqDCoCB0aW1lb3V0 ID0gdHAudHZfc2VjICogMTAwMDAwMDAwMFVMTCArIHRwLnR2X25zZWM7Cj4+Pj4gK8KgwqDCoCB0 aW1lb3V0ICs9IDB4MTAwMDAwMDAwMDA7IC8vMTBzCj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2Nz X3N5bmNvYmpfdGltZWxpbmVfd2FpdChkZXZpY2VfaGFuZGxlLCAKPj4+PiAmc3luY29ial9oYW5k bGUsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JndhaXRfcG9pbnQsIDEsIHRpbWVvdXQsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCB8Cj4+ Pj4gKyBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCwKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMKTsKPj4+PiArCj4+ Pj4gK8KgwqDCoCBDVV9BU1NFUlRfRVFVQUwociwgMCk7Cj4+Pj4gK8KgwqDCoCByID0gcHRocmVh ZF9qb2luKGNfdGhyZWFkLCAmdG1wKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChyLCAw KTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTCh0bXAsIDApOwo+Pj4+ICsKPj4+PiArwqDC oMKgIC8vIGV4cG9ydCBwb2ludCAxNiBhbmQgaW1wb3J0IHRvIHBvaW50IDE4Cj4+Pj4gK8KgwqDC oCByID0gYW1kZ3B1X2NzX3N5bmNvYmpfZXhwb3J0X3N5bmNfZmlsZTIoZGV2aWNlX2hhbmRsZSwK Pj4+PiBzeW5jb2JqX2hhbmRsZSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAxNiwKPj4+PiArIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9G T1JfU1VCTUlULAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICZzeW5jX2ZkKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsKPj4+ PiArwqDCoMKgIHIgPSBhbWRncHVfY3Nfc3luY29ial9pbXBvcnRfc3luY19maWxlMihkZXZpY2Vf aGFuZGxlLAo+Pj4+IHN5bmNvYmpfaGFuZGxlLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDE4LCBzeW5jX2ZkKTsKPj4+PiArwqDCoMKgIENVX0FT U0VSVF9FUVVBTChyLCAwKTsKPj4+PiArwqDCoMKgIHIgPSBhbWRncHVfY3Nfc3luY29ial9xdWVy eShkZXZpY2VfaGFuZGxlLCAmc3luY29ial9oYW5kbGUsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZwYXlsb2FkLCAxKTsKPj4+PiArwqDCoMKgIENVX0FTU0VS VF9FUVVBTChyLCAwKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChwYXlsb2FkLCAxOCk7 Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgLy8gQ1BVIHNpZ25hbCBvbiBwb2ludCAyMAo+Pj4+ICvCoMKg wqAgc2lnbmFsX3BvaW50ID0gMjA7Cj4+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X2NzX3N5bmNvYmpf dGltZWxpbmVfc2lnbmFsKGRldmljZV9oYW5kbGUsCj4+Pj4gJnN5bmNvYmpfaGFuZGxlLAo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc2ln bmFsX3BvaW50LCAxKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsKPj4+PiAr wqDCoMKgIHIgPSBhbWRncHVfY3Nfc3luY29ial9xdWVyeShkZXZpY2VfaGFuZGxlLCAmc3luY29i al9oYW5kbGUsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZw YXlsb2FkLCAxKTsKPj4+PiArwqDCoMKgIENVX0FTU0VSVF9FUVVBTChyLCAwKTsKPj4+PiArwqDC oMKgIENVX0FTU0VSVF9FUVVBTChwYXlsb2FkLCAyMCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgciA9 IGFtZGdwdV9jc19kZXN0cm95X3N5bmNvYmooZGV2aWNlX2hhbmRsZSwgc3luY29ial9oYW5kbGUp Owo+Pj4+ICvCoMKgwqAgQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+Pj4+ICsKPj4+PiArfQo+Pj4K Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBk cmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo+Pgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=