From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBA8010E388 for ; Tue, 15 Nov 2022 10:54:27 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "Gupta, Nidhi1" Date: Tue, 15 Nov 2022 10:54:23 +0000 Message-ID: <22b39ea2a919600bb7414615b1de35cf72e7c256.camel@intel.com> References: <1668492962-3418-1-git-send-email-nidhi1.gupta@intel.com> <1668492962-3418-2-git-send-email-nidhi1.gupta@intel.com> In-Reply-To: <1668492962-3418-2-git-send-email-nidhi1.gupta@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <72CB6E31A0244B479447DC40F345629D@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH 1/3] tests/i915/i915_pm_backlight: Add new subtest to validate dual panel backlight List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T25lIGlubGluZSBjb21tZW50IGJlbG93LgoKT24gVHVlLCAyMDIyLTExLTE1IGF0IDExOjQ2ICsw NTMwLCBOaWRoaSBHdXB0YSB3cm90ZToKPiBTaW5jZSBkcml2ZXIgY2FuIG5vdyBzdXBwb3J0IG11 bHRpcGxlIGVEUHMgYW5kIERlYnVnZnMgc3RydWN0dXJlIGZvcgo+IGJhY2tsaWdodCBjaGFuZ2Vk IHBlciBjb25uZWN0b3IgdGhlIHRlc3Qgc2hvdWxkIHRoZW4gaXRlcmF0ZSB0aHJvdWdoCj4gYWxs IGVEUCBjb25uZWN0b3JzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE5pZGhpIEd1cHRhIDxuaWRoaTEu Z3VwdGFAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEJoYW51cHJha2FzaCBNb2RlbSA8Ymhh bnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT4KPiAtLS0KPiDCoHRlc3RzL2k5MTUvaTkxNV9wbV9i YWNrbGlnaHQuYyB8IDIxMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gLS0tLS0t LS0tLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCj4gYi90 ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiBpbmRleCBjYWZhZTdmLi5jZjU4ZjhiIDEw MDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+ICsrKyBiL3Rlc3Rz L2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+IEBAIC0zNCwyOSArMzQsMzQgQEAKPiDCoCNpbmNs dWRlIDxlcnJuby5oPgo+IMKgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IMKgI2luY2x1ZGUgPHRpbWUu aD4KPiArI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImlndF9kZXZpY2Vfc2Nh bi5oIgo+IMKgCj4gwqBzdHJ1Y3QgY29udGV4dCB7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBtYXg7 Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKg Y2hhciBwYXRoW1BBVEhfTUFYXTsKPiDCoH07Cj4gwqAKPiAtCj4gwqAjZGVmaW5lIFRPTEVSQU5D RSA1IC8qIHBlcmNlbnQgKi8KPiAtI2RlZmluZSBCQUNLTElHSFRfUEFUSCAiL3N5cy9jbGFzcy9i YWNrbGlnaHQvaW50ZWxfYmFja2xpZ2h0Igo+ICsjZGVmaW5lIEJBQ0tMSUdIVF9QQVRIICIvc3lz L2NsYXNzL2JhY2tsaWdodCIKPiDCoAo+IMKgI2RlZmluZSBGQURFU1RFUFMgMTAKPiDCoCNkZWZp bmUgRkFERVNQRUVEIDEwMCAvKiBtaWxsaXNlY29uZHMgYmV0d2VlbiBzdGVwcyAqLwo+IMKgCj4g KyNkZWZpbmUgTlVNX0VEUF9PVVRQVVRTIDIKPiArCj4gwqBJR1RfVEVTVF9ERVNDUklQVElPTigi QmFzaWMgYmFja2xpZ2h0IHN5c2ZzIHRlc3QiKTsKPiDCoAo+IC1zdGF0aWMgaW50IGJhY2tsaWdo dF9yZWFkKGludCAqcmVzdWx0LCBjb25zdCBjaGFyICpmbmFtZSkKPiArc3RhdGljIGludCBiYWNr bGlnaHRfcmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hhciAqZm5hbWUsIHN0cnVjdAo+IGNvbnRl eHQgKmNvbnRleHQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBmZDsKPiDCoMKgwqDCoMKg wqDCoMKgY2hhciBmdWxsW1BBVEhfTUFYXTsKPiDCoMKgwqDCoMKgwqDCoMKgY2hhciBkc3RbNjRd Owo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgciwgZTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9h c3NlcnQoc25wcmludGYoZnVsbCwgUEFUSF9NQVgsICIlcy8lcyIsIEJBQ0tMSUdIVF9QQVRILAo+ IGZuYW1lKSA8IFBBVEhfTUFYKTsKPiAtCj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChzbnBy aW50ZihmdWxsLCBQQVRIX01BWCwgIiVzLyVzLyVzIiwKPiBCQUNLTElHSFRfUEFUSCwgY29udGV4 dC0+cGF0aCwgZm5hbWUpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgPCBQQVRIX01BWCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGZkID0gb3Blbihm dWxsLCBPX1JET05MWSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChmZCA9PSAtMSkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtZXJybm87Cj4gQEAgLTczLDE0ICs3OCwx NSBAQCBzdGF0aWMgaW50IGJhY2tsaWdodF9yZWFkKGludCAqcmVzdWx0LCBjb25zdCBjaGFyCj4g KmZuYW1lKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJybm87Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBiYWNrbGlnaHRfd3JpdGUoaW50IHZhbHVlLCBjb25zdCBjaGFyICpmbmFtZSkKPiAr c3RhdGljIGludCBiYWNrbGlnaHRfd3JpdGUoaW50IHZhbHVlLCBjb25zdCBjaGFyICpmbmFtZSwg c3RydWN0Cj4gY29udGV4dCAqY29udGV4dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGZk Owo+IMKgwqDCoMKgwqDCoMKgwqBjaGFyIGZ1bGxbUEFUSF9NQVhdOwo+IMKgwqDCoMKgwqDCoMKg wqBjaGFyIHNyY1s2NF07Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBsZW47Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqBpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMiLCBCQUNL TElHSFRfUEFUSCwKPiBmbmFtZSkgPCBQQVRIX01BWCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fz c2VydChzbnByaW50ZihmdWxsLCBQQVRIX01BWCwgIiVzLyVzLyVzIiwKPiBCQUNLTElHSFRfUEFU SCwgY29udGV4dC0+cGF0aCwgZm5hbWUpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgPCBQQVRIX01BWCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGZkID0gb3BlbihmdWxsLCBPX1dS T05MWSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChmZCA9PSAtMSkKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtZXJybm87Cj4gQEAgLTEwMCwxMiArMTA2LDEyIEBAIHN0 YXRpYyB2b2lkIHRlc3RfYW5kX3ZlcmlmeShzdHJ1Y3QgY29udGV4dAo+ICpjb250ZXh0LCBpbnQg dmFsKQo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBpbnQgdG9sZXJhbmNlID0gdmFsICogVE9MRVJB TkNFIC8gMTAwOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmVzdWx0Owo+IMKgCj4gLcKgwqDCoMKg wqDCoMKgaWd0X2Fzc2VydF9lcShiYWNrbGlnaHRfd3JpdGUodmFsLCAiYnJpZ2h0bmVzcyIpLCAw KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKGJhY2tsaWdodF9yZWFkKCZyZXN1bHQs ICJicmlnaHRuZXNzIiksIDApOwo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEoYmFja2xp Z2h0X3dyaXRlKHZhbCwgImJyaWdodG5lc3MiLCBjb250ZXh0KSwKPiAwKTsKPiArwqDCoMKgwqDC oMKgwqBpZ3RfYXNzZXJ0X2VxKGJhY2tsaWdodF9yZWFkKCZyZXN1bHQsICJicmlnaHRuZXNzIiwg Y29udGV4dCksCj4gMCk7Cj4gwqDCoMKgwqDCoMKgwqDCoC8qIENoZWNrIHRoYXQgdGhlIGV4YWN0 IHZhbHVlIHN0aWNrcyAqLwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKHJlc3VsdCwg dmFsKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEoYmFja2xpZ2h0X3JlYWQo JnJlc3VsdCwgImFjdHVhbF9icmlnaHRuZXNzIiksCj4gMCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0 X2Fzc2VydF9lcShiYWNrbGlnaHRfcmVhZCgmcmVzdWx0LCAiYWN0dWFsX2JyaWdodG5lc3MiLAo+ IGNvbnRleHQpLCAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgLyogU29tZSByb3VuZGluZyBtYXkgaGFw cGVuIGRlcGVuZGluZyBvbiBodyAqLwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2YocmVz dWx0ID49IG1heCgwLCB2YWwgLSB0b2xlcmFuY2UpICYmCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXN1bHQgPD0gbWluKGNvbnRleHQtPm1heCwgdmFsICsgdG9s ZXJhbmNlKSwKPiBAQCAtMTI0LDE2ICsxMzAsMTYgQEAgc3RhdGljIHZvaWQgdGVzdF9iYWRfYnJp Z2h0bmVzcyhzdHJ1Y3QgY29udGV4dAo+ICpjb250ZXh0KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBpbnQgdmFsOwo+IMKgwqDCoMKgwqDCoMKgwqAvKiBGaXJzdCB3cml0ZSBzb21lIHNhbmUgdmFs dWUgKi8KPiAtwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfd3JpdGUoY29udGV4dC0+bWF4IC8gMiwg ImJyaWdodG5lc3MiKTsKPiArwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfd3JpdGUoY29udGV4dC0+ bWF4IC8gMiwgImJyaWdodG5lc3MiLCBjb250ZXh0KTsKPiDCoMKgwqDCoMKgwqDCoMKgLyogV3Jp dGluZyBpbnZhbGlkIHZhbHVlcyBzaG91bGQgZmFpbCBhbmQgbm90IGNoYW5nZSB0aGUKPiB2YWx1 ZSAqLwo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dyaXRlKC0xLCAi YnJpZ2h0bmVzcyIpLCAwKTsKPiAtwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAi YnJpZ2h0bmVzcyIpOwo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dy aXRlKC0xLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpLCAwKTsKPiArwqDCoMKgwqDCoMKgwqBiYWNr bGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDCoMKg wqBpZ3RfYXNzZXJ0X2VxKHZhbCwgY29udGV4dC0+bWF4IC8gMik7Cj4gLcKgwqDCoMKgwqDCoMKg aWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoY29udGV4dC0+bWF4ICsgMSwKPiAiYnJpZ2h0 bmVzcyIpLCAwKTsKPiAtwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0 bmVzcyIpOwo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dyaXRlKGNv bnRleHQtPm1heCArIDEsICJicmlnaHRuZXNzIiwKPiBjb250ZXh0KSwgMCk7Cj4gK8KgwqDCoMKg wqDCoMKgYmFja2xpZ2h0X3JlYWQoJnZhbCwgImJyaWdodG5lc3MiLCBjb250ZXh0KTsKPiDCoMKg wqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9lcSh2YWwsIGNvbnRleHQtPm1heCAvIDIpOwo+IC3CoMKg wqDCoMKgwqDCoGlndF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dyaXRlKElOVF9NQVgsICJicmlnaHRu ZXNzIiksIDApOwo+IC3CoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRu ZXNzIik7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoSU5U X01BWCwgImJyaWdodG5lc3MiLAo+IGNvbnRleHQpLCAwKTsKPiArwqDCoMKgwqDCoMKgwqBiYWNr bGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDCoMKg wqBpZ3RfYXNzZXJ0X2VxKHZhbCwgY29udGV4dC0+bWF4IC8gMik7Cj4gwqB9Cj4gwqAKPiBAQCAt MTc5LDIxICsxODUsNTcgQEAgdGVzdF9mYWRlX3dpdGhfc3VzcGVuZChzdHJ1Y3QgY29udGV4dCAq Y29udGV4dCwKPiBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKPiDCoMKgwqDCoMKgwqDCoMKgdGVzdF9m YWRlKGNvbnRleHQpOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyB2b2lkIHRlc3RfY2xlYW51cChpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5LCBpZ3Rfb3V0cHV0X3QKPiAqb3V0cHV0KQo+ICt7Cj4gK8KgwqDC oMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7Cj4gK8KgwqDC oMKgwqDCoMKgaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMg Pwo+IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rf cG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCB0ZXN0X3NldHVwKGlndF9kaXNwbGF5X3QgZGlzcGxheSwgaWd0X291dHB1dF90ICpv dXRwdXQpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiArwqDC oMKgwqDCoMKgwqBkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGlndF9mYiBmYjsKPiArwqDCoMKgwqDCoMKgwqBlbnVtIHBpcGUgcGlwZTsKPiArCj4gK8KgwqDC oMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVzZXQoJmRpc3BsYXkpOwo+ICsKPiArwqDCoMKgwqDCoMKg wqBmb3JfZWFjaF9waXBlKCZkaXNwbGF5LCBwaXBlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICghaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBpcGUsIG91dHB1dCkpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsK PiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBwaXBlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbW9kZSA9IGln dF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlndF9jcmVhdGVfcGF0dGVybl9mYihkaXNwbGF5LmRybV9mZCwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX01PRF9M SU5FQVIsICZmYik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByaW1hcnkgPSBp Z3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwKPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3BsYW5lX3NldF9mYihwcmlt YXJ5LCAmZmIpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3Bs YXlfY29tbWl0MigmZGlzcGxheSwgZGlzcGxheS5pc19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMg OiBDT01NSVRfTEVHQUNZKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3Bt X2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICt9Cj4gKwo+IMKg aWd0X21haW4KPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY29udGV4dCBjb250ZXh0ID0g ezB9Owo+IC3CoMKgwqDCoMKgwqDCoGludCBvbGQ7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IG9sZCwg ZmQ7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGkgPSAwOwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlz cGxheV90IGRpc3BsYXk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBpZ3RfZmIgZmI7Cj4gK8KgwqDCoMKgwqDCoMKgY2hhciBm aWxlX3BhdGhfbltQQVRIX01BWF0gPSAiIjsKPiArwqDCoMKgwqDCoMKgwqBib29sIGR1YWxfZWRw ID0gZmFsc2U7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNvbnRleHQgY29udGV4dHNbTlVNX0VE UF9PVVRQVVRTXTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfZml4dHVyZSB7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVudW0gcGlwZSBwaXBlOwo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYm9vbCBmb3VuZCA9IGZhbHNlOwo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2hhciBmdWxsX25hbWVbMzJdID0ge307Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjaGFyICpuYW1lOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlndF9wbGFuZV90ICpwcmltYXJ5Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogQmFja2xpZ2h0 IHRlc3RzIHJlcXVpcmVzIHRoZSBvdXRwdXQgdG8gYmUgZW5hYmxlZCwKPiBAQCAtMjAyLDU2ICsy NDQsMTA0IEBAIGlndF9tYWluCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrbXN0 ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LAo+IGRybV9vcGVuX2RyaXZlcihEUklW RVJfSU5URUwpKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBHZXQg dGhlIG1heCB2YWx1ZSBhbmQgc2tpcCB0aGUgd2hvbGUgdGVzdCBpZiBzeXNmcwo+IGludGVyZmFj ZSBub3QgYXZhaWxhYmxlICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9z a2lwX29uKGJhY2tsaWdodF9yZWFkKCZvbGQsICJicmlnaHRuZXNzIikpOwo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGJhY2tsaWdodF9yZWFkKCZjb250ZXh0Lm1h eCwKPiAibWF4X2JyaWdodG5lc3MiKSA+IC0xKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dCgmZGlzcGxheSwgb3V0cHV0KSB7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3V0cHV0LT5j b25maWcuY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZQo+ICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9l RFApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY29udGludWU7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogc2hvdWxkIGJlIC4uLy4uL2NhcmRYLSRvdXRwdXQgKi8KPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdCgxMiwgcmVhZGxpbmsoQkFDS0xJR0hUX1BBVEgg Ii9kZXZpY2UiLAo+IGZ1bGxfbmFtZSwgc2l6ZW9mKGZ1bGxfbmFtZSkgLSAxKSk7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5hbWUgPSBiYXNlbmFtZShmdWxsX25hbWUpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZvdW5kKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHNucHJpbnRmKGZpbGVfcGF0aF9uLCBQQVRIX01BWCwKPiAiJXMvY2FyZCVpLSVzLWJh Y2tsaWdodC9icmlnaHRuZXNzIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJBQ0tMSUdIVF9Q QVRILAo+IGlndF9kZXZpY2VfZ2V0X2NhcmRfaW5kZXgoZGlzcGxheS5kcm1fZmQpLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWd0X291dHB1dF9uYW1lKG91dHB1dCkpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNucHJpbnRm KGZpbGVfcGF0aF9uLCBQQVRIX01BWCwKPiAiJXMvaW50ZWxfYmFja2xpZ2h0L2JyaWdodG5lc3Mi LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQkFDS0xJR0hUX1BBVEgpOwo+IMKgCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQo JmRpc3BsYXksIHBpcGUsCj4gb3V0cHV0KSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoc3RyY21wKG5hbWUgKyA2LCBvdXRwdXQtPm5hbWUpKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmQgPSBvcGVu KGZpbGVfcGF0aF9uLCBPX1JET05MWSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoZmQgPT0gLTEpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm91bmQgPSB0cnVlOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfcmVxdWlyZV9mKGZvdW5kLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiQ291bGQgbm90IG1hcCBiYWNr bGlnaHQgZm9yIFwiJXNcIiB0bwo+IGNvbm5lY3RlZCBvdXRwdXRcbiIsCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5hbWUpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIHBpcGUpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtb2RlID0gaWd0X291 dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGZvdW5kKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNucHJpbnRmKGNvbnRleHRzW2ldLnBh dGgsIFBBVEhfTUFYLAo+ICJjYXJkJWktJXMtYmFja2xpZ2h0IiwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgCj4gaWd0X2RldmljZV9nZXRfY2FyZF9pbmRleChkaXNwbGF5LmRybV9mZCksCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25wcmlu dGYoY29udGV4dHNbaV0ucGF0aCwgUEFUSF9NQVgsCj4gImludGVsX2JhY2tsaWdodCIpOwo+ICsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsb3NlKGZk KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBzaG91bGQgYmUgLi4vLi4vY2FyZFgtJG91dHB1dCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25wcmludGYoZmlsZV9wYXRoX24sIFBBVEhfTUFY LAo+ICIlcy8lcy9kZXZpY2UiLCBCQUNLTElHSFRfUEFUSCwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGV4dHNbaV0u cGF0aCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfYXNzZXJ0X2x0KDE2LCByZWFkbGluayhmaWxlX3BhdGhfbiwKPiBmdWxsX25hbWUsIHNpemVv ZihmdWxsX25hbWUpIC0gMSkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbmFtZSA9IGJhc2VuYW1lKGZ1bGxfbmFtZSk7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFzdHJjbXAobmFtZSArIDYs IG91dHB1dC0+bmFtZSkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250ZXh0c1tpKytdLm91dHB1dCA9IG91dHB1dDsK PiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGZvdW5kKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkdWFsX2VkcCA9 IHRydWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3VuZCA9IHRydWU7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWd0X3JlcXVpcmVfZihmb3VuZCwgIk5vIHZhbGlkIG91dHB1dCBmb3VuZC5cbiIpOwo+ ICvCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfY3JlYXRlX3BhdHRlcm5fZmIoZGlzcGxheS5kcm1fZmQsCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt b2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9S TUFUX1hSR0I4ODg4LAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0ZPUk1BVF9NT0RfTElORUFSLCAm ZmIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcmltYXJ5ID0gaWd0X291dHB1 dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsCj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZi KTsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiYmFzaWMtYnJpZ2h0bmVzcyIpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IChkdWFsX2VkcCA/ IDIgOiAxKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB0ZXN0X3NldHVwKGRpc3BsYXksICZjb250ZXh0cy0+b3V0cHV0W2ldKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoYmFj a2xpZ2h0X3JlYWQoJmNvbnRleHRzW2ldLm1heCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCJtYXhfYnJpZ2h0bmVzcyIsCj4gJmNvbnRleHRzW2ldKSA+IC0xKTsKCklu c3RlYWQgb2YgcmVhZGluZyB0aGlzIG1hbnkgdGltZXMgZm9yIGVhY2ggdGVzdCBhbmQgZm9yIGVh Y2ggYmFja2xpZ2h0CnlvdSBjb3VsZCBkbyBpdCBvbmNlIGluIHRoZSBsb29wIHdoZXJlIGNvbnRl eHRzIGFycmF5IGlzIGZpbGxlZC4KCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0ZXN0X2JyaWdodG5lc3MoJmNvbnRleHRzW2ldKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGlzcGxh eSwgb3V0cHV0KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxh eV9jb21taXQyKCZkaXNwbGF5LCBkaXNwbGF5LmlzX2F0b21pYyA/Cj4gQ09NTUlUX0FUT01JQyA6 IENPTU1JVF9MRUdBQ1kpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcG1f ZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0 X3N1YnRlc3QoImJhZC1icmlnaHRuZXNzIikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmb3IgKGkgPSAwOyBpIDwgKGR1YWxfZWRwID8gMiA6IDEpOyBpKyspIHsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoZGlzcGxh eSwgJmNvbnRleHRzLT5vdXRwdXRbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChiYWNrbGlnaHRfcmVhZCgmY29udGV4dHNbaV0u bWF4LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm1heF9icmlnaHRu ZXNzIiwKPiAmY29udGV4dHNbaV0pID4gLTEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9iYWRfYnJpZ2h0bmVzcygmY29udGV4dHNbaV0pOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVh bnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiZmFkZSIp IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IChkdWFs X2VkcCA/IDIgOiAxKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKGRpc3BsYXksICZjb250ZXh0cy0+b3V0cHV0W2ldKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3Nl cnQoYmFja2xpZ2h0X3JlYWQoJmNvbnRleHRzW2ldLm1heCwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCJtYXhfYnJpZ2h0bmVzcyIsCj4gJmNvbnRleHRzW2ldKSA+IC0x KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rf ZmFkZSgmY29udGV4dHNbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDC oGlndF9zdWJ0ZXN0KCJmYWRlX3dpdGhfZHBtcyIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IChkdWFsX2VkcCA/IDIgOiAxKTsgaSsrKSB7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKGRp c3BsYXksICZjb250ZXh0cy0+b3V0cHV0W2ldKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoYmFja2xpZ2h0X3JlYWQoJmNvbnRleHRz W2ldLm1heCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJtYXhfYnJp Z2h0bmVzcyIsCj4gJmNvbnRleHRzW2ldKSA+IC0xKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfZmFkZV93aXRoX2RwbXMoJmNvbnRleHRzW2ld LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdGVzdF9jbGVhbnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoGlndF9zdWJ0 ZXN0KCJmYWRlX3dpdGhfc3VzcGVuZCIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZm9yIChpID0gMDsgaSA8IChkdWFsX2VkcCA/IDIgOiAxKTsgaSsrKSB7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKGRpc3BsYXks ICZjb250ZXh0cy0+b3V0cHV0W2ldKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoYmFja2xpZ2h0X3JlYWQoJmNvbnRleHRzW2ldLm1h eCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJtYXhfYnJpZ2h0bmVz cyIsCj4gJmNvbnRleHRzW2ldKSA+IC0xKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfZmFkZV93aXRoX3N1c3BlbmQoJmNvbnRleHRzW2ldLCBv dXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dGVzdF9jbGVhbnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGln dF9zdWJ0ZXN0KCJiYXNpYy1icmlnaHRuZXNzIikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdGVzdF9icmlnaHRuZXNzKCZjb250ZXh0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3Vi dGVzdCgiYmFkLWJyaWdodG5lc3MiKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0 ZXN0X2JhZF9icmlnaHRuZXNzKCZjb250ZXh0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVz dCgiZmFkZSIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfZmFkZSgmY29u dGV4dCk7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3QoImZhZGVfd2l0aF9kcG1zIikKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRlX3dpdGhfZHBtcygmY29udGV4 dCwgb3V0cHV0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiZmFkZV93aXRoX3N1c3Bl bmQiKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2ZhZGVfd2l0aF9zdXNw ZW5kKCZjb250ZXh0LCBvdXRwdXQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9maXh0dXJl IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFJlc3RvcmUgb2xkIGJyaWdo dG5lc3MgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3dyaXRl KG9sZCwgImJyaWdodG5lc3MiKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9y IChpID0gMDsgaSA8IChkdWFsX2VkcCA/IDIgOiAxKTsgaSsrKQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3dyaXRlKG9sZCwgImJyaWdo dG5lc3MiLAo+ICZjb250ZXh0c1tpXSk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlndF9kaXNwbGF5X2ZpbmkoJmRpc3BsYXkpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfcmVtb3ZlX2ZiKGRpc3BsYXkuZHJtX2ZkLCAmZmIpOwo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQoKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsb3NlKGRpc3Bs YXkuZHJtX2ZkKTsKPiDCoMKgwqDCoMKgwqDCoMKgfQoK