From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f346.i.mail.ru (f346.i.mail.ru [217.69.130.231]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 9337C469719 for ; Tue, 20 Oct 2020 15:34:04 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Tue, 20 Oct 2020 15:34:02 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1603197242.96080661@f346.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--c35683257aE3672DAeC7F9eC44154a401603197242" In-Reply-To: <1603101096-18698-3-git-send-email-alyapunov@tarantool.org> References: <1603101096-18698-1-git-send-email-alyapunov@tarantool.org> <1603101096-18698-3-git-send-email-alyapunov@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_2/2=5D_memtx=3A_make_tuple?= =?utf-8?q?_compare_hints_optional?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?QWxla3NhbmRyIEx5YXB1bm92?= Cc: tarantool-patches@dev.tarantool.org ----ALT--c35683257aE3672DAeC7F9eC44154a401603197242 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLArCoApUaGFua3MgZm9yIHRoZSBwYXRjaCEKwqAKTEdUTSwgaSBjaGVja2VkIGZvciB0aGUg bnVtYmVyIG9mIGNvbXBpbGVycyB0aGF0IGlmIHdpdGggdGhlwqB0ZW1wbGF0ZWQKYWdydW1lbnTC oGlzIGJlaW5nIHByb2Nlc3NlZCBhdCB0aGUgY29tcGlsZSB0aW1lIHNvIHRoYXQgdGhlcmUgYXJl IG5vIGp1bXBzCmluIGFzbSBjb2RlLgrCoApXaGF0IGkgdGhpbmsgaXMgbmVlZGVkIGlzIHRoZSBl bnVtIGxpa2UgdGhlIGZvbGxvd2luZzoKZW51bSB7CsKgwqDCoMKgwqDCoMKgwqBOT1RfSElOVEVE ID0gIDAgLArCoMKgwqDCoMKgwqDCoMKgSElOVEVEID0gIDEgLAp9OwrCoAp0byBhdm9pZCB1c2lu ZyA8MD4gJiA8MT4uIElmIG5lZWRlZCBpIGNhbiBwdXNoIHN1Y2ggcGF0Y2ggdG8gdGhlIGJyYW5j aC4gCj7Qn9C+0L3QtdC00LXQu9GM0L3QuNC6LCAxOSDQvtC60YLRj9Cx0YDRjyAyMDIwLCAxMjo1 MiArMDM6MDAg0L7RgiBBbGVrc2FuZHIgTHlhcHVub3YgPGFseWFwdW5vdkB0YXJhbnRvb2wub3Jn PjoKPsKgCj5TaW5jZSA5ZmJhMjlhYmI0ZTA1YmFiYjliMjNiNDQxM2JkODA4M2YwZmJhOTMzICht ZW10eDogaW50cm9kdWNlIHR1cGxlCj5jb21wYXJlIGhpbnQpIG1lbXR4IHRyZWUga2V5IGRhdGEg KGluZGV4ZXMpIHN0YXJ0ZWQgdG8gY29udGFpbiBleHRyYSA4Cj5ieXRlcyBhcyBhIGhpbnQuIE5v dyBpdCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHR1cm5lZCBvZmYgaW4gYW4gaW5kZXgKPm9wdGlv bnMgd2l0aCAiaGludCA9IGZhbHNlIiBlbnRyeS4KPgo+Q2xvc2VzICM0OTI3Cj4KPkBUYXJhbnRv b2xCb3QgZG9jdW1lbnQKPlRpdGxlOiBtZW10eDogb3B0aW9uYWwgdHVwbGUgY29tcGFyZSBoaW50 cwo+VXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhbiBpbmRleCBjcmVhdGlvbiB0byByZWZs ZWN0IHRoYXQgdGhlcmUgaXMKPm5vdyBhbiBvcHRpb24gdG8gdHVybiBvZmYgaGludHMgZm9yIHRo ZSBpbmRleC4KPi0tLQo+wqBzcmMvYm94L2luZGV4X2RlZi5jIHwgMiArCj7CoHNyYy9ib3gvaW5k ZXhfZGVmLmggfCA2ICsKPsKgc3JjL2JveC9sdWEvc2NoZW1hLmx1YSB8IDUzICsrKysKPsKgc3Jj L2JveC9sdWEvc3BhY2UuY2MgfCA3ICsKPsKgc3JjL2JveC9tZW10eF9lbmdpbmUuYyB8IDIgKwo+ wqBzcmMvYm94L21lbXR4X3RyZWUuY2MgfCA1OTkgKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCj7CoHNyYy9saWIvc2FsYWQvYnBzX3RyZWUuaCB8IDE5ICsrCj7CoHRlc3QvYm94 L2FsdGVyLnJlc3VsdCB8IDEwMyArKysrKystCj7CoHRlc3QvYm94L2FsdGVyLnRlc3QubHVhIHwg MzQgKysKPsKgdGVzdC9ib3gvZXJyaW5qLnJlc3VsdCB8IDMgKy0KPsKgdGVzdC9ib3gvdHJlZV9w ay5yZXN1bHQgfCAzMTQgKysrKysrKysrKysrKysrKysrKwo+wqB0ZXN0L2JveC90cmVlX3BrLnRl c3QubHVhIHwgMTE1ICsrKysrKysKPsKgdGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQucmVzdWx0 IHwgMTUzICsrKysrKysrKwo+wqB0ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC50ZXN0Lmx1YSB8 IDY0ICsrKysKPsKgMTQgZmlsZXMgY2hhbmdlZCwgMTI2OSBpbnNlcnRpb25zKCspLCAyMDUgZGVs ZXRpb25zKC0pCj4KPmRpZmYgLS1naXQgYS9zcmMvYm94L2luZGV4X2RlZi5jIGIvc3JjL2JveC9p bmRleF9kZWYuYwo+aW5kZXggOTgwMjk2MS4uNzkzOTRiOCAxMDA2NDQKPi0tLSBhL3NyYy9ib3gv aW5kZXhfZGVmLmMKPisrKyBiL3NyYy9ib3gvaW5kZXhfZGVmLmMKPkBAIC01MSw2ICs1MSw3IEBA IGNvbnN0IHN0cnVjdCBpbmRleF9vcHRzIGluZGV4X29wdHNfZGVmYXVsdCA9IHsKPsKgIC8qIC5s c24gPSAqLyAwLAo+wqAgLyogLnN0YXQgPSAqLyBOVUxMLAo+wqAgLyogLmZ1bmMgPSAqLyAwLAo+ KyAvKiAuaGludCA9ICovIHRydWUsCj7CoH07Cj7CoAo+wqBjb25zdCBzdHJ1Y3Qgb3B0X2RlZiBp bmRleF9vcHRzX3JlZ1tdID0gewo+QEAgLTY2LDYgKzY3LDcgQEAgY29uc3Qgc3RydWN0IG9wdF9k ZWYgaW5kZXhfb3B0c19yZWdbXSA9IHsKPsKgIE9QVF9ERUYoImxzbiIsIE9QVF9JTlQ2NCwgc3Ry dWN0IGluZGV4X29wdHMsIGxzbiksCj7CoCBPUFRfREVGKCJmdW5jIiwgT1BUX1VJTlQzMiwgc3Ry dWN0IGluZGV4X29wdHMsIGZ1bmNfaWQpLAo+wqAgT1BUX0RFRl9MRUdBQ1koInNxbCIpLAo+KyBP UFRfREVGKCJoaW50IiwgT1BUX0JPT0wsIHN0cnVjdCBpbmRleF9vcHRzLCBoaW50KSwKPsKgIE9Q VF9FTkQsCj7CoH07Cj7CoAo+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvaW5kZXhfZGVmLmggYi9zcmMv Ym94L2luZGV4X2RlZi5oCj5pbmRleCBkOTI4YjIzLi4yMTgwYTY5IDEwMDY0NAo+LS0tIGEvc3Jj L2JveC9pbmRleF9kZWYuaAo+KysrIGIvc3JjL2JveC9pbmRleF9kZWYuaAo+QEAgLTE2NSw2ICsx NjUsMTAgQEAgc3RydWN0IGluZGV4X29wdHMgewo+wqAgc3RydWN0IGluZGV4X3N0YXQgKnN0YXQ7 Cj7CoCAvKiogSWRlbnRpZmllciBvZiB0aGUgZnVuY3Rpb25hbCBpbmRleCBmdW5jdGlvbi4gKi8K PsKgIHVpbnQzMl90IGZ1bmNfaWQ7Cj4rIC8qKgo+KyAqIFVzZSBoaW50IG9wdGltaXphdGlvbiBm b3IgdHJlZSBpbmRleC4KPisgKi8KPisgYm9vbCBoaW50Owo+wqB9Owo+wqAKPsKgZXh0ZXJuIGNv bnN0IHN0cnVjdCBpbmRleF9vcHRzIGluZGV4X29wdHNfZGVmYXVsdDsKPkBAIC0yMTEsNiArMjE1 LDggQEAgaW5kZXhfb3B0c19jbXAoY29uc3Qgc3RydWN0IGluZGV4X29wdHMgKm8xLCBjb25zdCBz dHJ1Y3QgaW5kZXhfb3B0cyAqbzIpCj7CoCByZXR1cm4gbzEtPmJsb29tX2ZwciA8IG8yLT5ibG9v bV9mcHIgPyAtMSA6IDE7Cj7CoCBpZiAobzEtPmZ1bmNfaWQgIT0gbzItPmZ1bmNfaWQpCj7CoCBy ZXR1cm4gbzEtPmZ1bmNfaWQgLSBvMi0+ZnVuY19pZDsKPisgaWYgKG8xLT5oaW50ICE9IG8yLT5o aW50KQo+KyByZXR1cm4gbzEtPmhpbnQgLSBvMi0+aGludDsKPsKgIHJldHVybiAwOwo+wqB9Cj7C oAo+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvbHVhL3NjaGVtYS5sdWEgYi9zcmMvYm94L2x1YS9zY2hl bWEubHVhCj5pbmRleCAxMTMxYWY3Li45Y2MxMjg5IDEwMDY0NAo+LS0tIGEvc3JjL2JveC9sdWEv c2NoZW1hLmx1YQo+KysrIGIvc3JjL2JveC9sdWEvc2NoZW1hLmx1YQo+QEAgLTEwMDAsOCArMTAw MCwzMSBAQCBsb2NhbCBpbmRleF9vcHRpb25zID0gewo+wqDCoMKgwqDCoHBhZ2Vfc2l6ZSA9ICdu dW1iZXInLAo+wqDCoMKgwqDCoGJsb29tX2ZwciA9ICdudW1iZXInLAo+wqDCoMKgwqDCoGZ1bmMg PSAnbnVtYmVyLCBzdHJpbmcnLAo+KyBoaW50ID0gJ2Jvb2xlYW4nLAo+wqB9Cj7CoAo+K2xvY2Fs IGZ1bmN0aW9uIGpzb25wYXRoc19mcm9tX2lkeF9wYXJ0cyhwYXJ0cykKPisgbG9jYWwgcGF0aHMg PSB7fQo+Kwo+KyBmb3IgXywgcGFydCBpbiBwYWlycyhwYXJ0cykgZG8KPisgaWYgdHlwZShwYXJ0 LnBhdGgpID09ICdzdHJpbmcnIHRoZW4KPisgdGFibGUuaW5zZXJ0KHBhdGhzLCBwYXJ0LnBhdGgp Cj4rIGVuZAo+KyBlbmQKPisKPisgcmV0dXJuIHBhdGhzCj4rZW5kCj4rCj4rbG9jYWwgZnVuY3Rp b24gaXNfbXVsdGlrZXlfaW5kZXgocGFydHMpCj4rIGZvciBfLCBwYXRoIGluIHBhaXJzKGpzb25w YXRoc19mcm9tX2lkeF9wYXJ0cyhwYXJ0cykpIGRvCj4rIGlmIHBhdGg6ZmluZCgnWypdJywgMSwg dHJ1ZSkgdGhlbgo+KyByZXR1cm4gdHJ1ZQo+KyBlbmQKPisgZW5kCj4rCj4rIHJldHVybiBmYWxz ZQo+K2VuZAo+Kwo+wqAtLQo+wqAtLSBjaGVja19wYXJhbV90YWJsZSgpIHRlbXBsYXRlIGZvciBh bHRlciBpbmRleCwKPsKgLS0gaW5jbHVkZXMgYWxsIGluZGV4IG9wdGlvbnMuCj5AQCAtMTA3Niw2 ICsxMDk5LDE1IEBAIGJveC5zY2hlbWEuaW5kZXguY3JlYXRlID0gZnVuY3Rpb24oc3BhY2VfaWQs IG5hbWUsIG9wdGlvbnMpCj7CoMKgwqDCoMKgwqDCoMKgwqBvcHRpb25zX2RlZmF1bHRzID0ge30K PsKgwqDCoMKgwqBlbmQKPsKgwqDCoMKgwqBvcHRpb25zID0gdXBkYXRlX3BhcmFtX3RhYmxlKG9w dGlvbnMsIG9wdGlvbnNfZGVmYXVsdHMpCj4rIGlmIG9wdGlvbnMuaGludCBhbmQKPisgKG9wdGlv bnMudHlwZSB+PSAndHJlZScgb3IgYm94LnNwYWNlW3NwYWNlX2lkXS5lbmdpbmUgfj0gJ21lbXR4 JykgdGhlbgo+KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgbmFtZSwgc3BhY2Uu bmFtZSwKPisgImhpbnQgaXMgb25seSByZWFzb25hYmxlIHdpdGggbWVtdHggdHJlZSBpbmRleCIp Cj4rIGVuZAo+KyBpZiBvcHRpb25zLmhpbnQgYW5kIG9wdGlvbnMuZnVuYyB0aGVuCj4rIGJveC5l cnJvcihib3guZXJyb3IuTU9ESUZZX0lOREVYLCBuYW1lLCBzcGFjZS5uYW1lLAo+KyAiZnVuY3Rp b25hbCBpbmRleCBjYW4ndCB1c2UgaGludHMiKQo+KyBlbmQKPsKgCj7CoMKgwqDCoMKgbG9jYWwg X2luZGV4ID0gYm94LnNwYWNlW2JveC5zY2hlbWEuSU5ERVhfSURdCj7CoMKgwqDCoMKgbG9jYWwg X3ZpbmRleCA9IGJveC5zcGFjZVtib3guc2NoZW1hLlZJTkRFWF9JRF0KPkBAIC0xMTE1LDYgKzEx NDcsNyBAQCBib3guc2NoZW1hLmluZGV4LmNyZWF0ZSA9IGZ1bmN0aW9uKHNwYWNlX2lkLCBuYW1l LCBvcHRpb25zKQo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fc2l6ZV9yYXRpbyA9IG9w dGlvbnMucnVuX3NpemVfcmF0aW8sCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJsb29tX2Zw ciA9IG9wdGlvbnMuYmxvb21fZnByLAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmdW5jID0g b3B0aW9ucy5mdW5jLAo+KyBoaW50ID0gb3B0aW9ucy5oaW50LAo+wqDCoMKgwqDCoH0KPsKgwqDC oMKgwqBsb2NhbCBmaWVsZF90eXBlX2FsaWFzZXMgPSB7Cj7CoMKgwqDCoMKgwqDCoMKgwqBudW0g PSAndW5zaWduZWQnOyAtLSBEZXByZWNhdGVkIHNpbmNlIDEuNy4yCj5AQCAtMTEzNSw2ICsxMTY4 LDEwIEBAIGJveC5zY2hlbWEuaW5kZXguY3JlYXRlID0gZnVuY3Rpb24oc3BhY2VfaWQsIG5hbWUs IG9wdGlvbnMpCj7CoMKgwqDCoMKgaWYgcGFydHNfY2FuX2JlX3NpbXBsaWZpZWQgdGhlbgo+wqDC oMKgwqDCoMKgwqDCoMKgcGFydHMgPSBzaW1wbGlmeV9pbmRleF9wYXJ0cyhwYXJ0cykKPsKgwqDC oMKgwqBlbmQKPisgaWYgb3B0aW9ucy5oaW50IGFuZCBpc19tdWx0aWtleV9pbmRleChwYXJ0cykg dGhlbgo+KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgbmFtZSwgc3BhY2UubmFt ZSwKPisgIm11bHRpa2V5IGluZGV4IGNhbid0IHVzZSBoaW50cyIpCj4rIGVuZAo+wqDCoMKgwqDC oGlmIGluZGV4X29wdHMuZnVuYyB+PSBuaWwgYW5kIHR5cGUoaW5kZXhfb3B0cy5mdW5jKSA9PSAn c3RyaW5nJyB0aGVuCj7CoMKgwqDCoMKgwqDCoMKgwqBpbmRleF9vcHRzLmZ1bmMgPSBmdW5jX2lk X2J5X25hbWUoaW5kZXhfb3B0cy5mdW5jKQo+wqDCoMKgwqDCoGVuZAo+QEAgLTEyNTMsNiArMTI5 MCwxNyBAQCBib3guc2NoZW1hLmluZGV4LmFsdGVyID0gZnVuY3Rpb24oc3BhY2VfaWQsIGluZGV4 X2lkLCBvcHRpb25zKQo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbmRleF9vcHRzW2tdID0g b3B0aW9uc1trXQo+wqDCoMKgwqDCoMKgwqDCoMKgZW5kCj7CoMKgwqDCoMKgZW5kCj4rIGlmIG9w dGlvbnMuaGludCBhbmQKPisgKG9wdGlvbnMudHlwZSB+PSAndHJlZScgb3IgYm94LnNwYWNlW3Nw YWNlX2lkXS5lbmdpbmUgfj0gJ21lbXR4JykgdGhlbgo+KyBib3guZXJyb3IoYm94LmVycm9yLk1P RElGWV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhfaWRdLm5hbWUsCj4rIHNwYWNlLm5hbWUsCj4r ICJoaW50IGlzIG9ubHkgcmVhc29uYWJsZSB3aXRoIG1lbXR4IHRyZWUgaW5kZXgiKQo+KyBlbmQK PisgaWYgb3B0aW9ucy5oaW50IGFuZCBvcHRpb25zLmZ1bmMgdGhlbgo+KyBib3guZXJyb3IoYm94 LmVycm9yLk1PRElGWV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhfaWRdLm5hbWUsCj4rIHNwYWNl Lm5hbWUsCj4rICJmdW5jdGlvbmFsIGluZGV4IGNhbid0IHVzZSBoaW50cyIpCj4rIGVuZAo+wqDC oMKgwqDCoGlmIG9wdGlvbnMucGFydHMgdGhlbgo+wqDCoMKgwqDCoMKgwqDCoMKgbG9jYWwgcGFy dHNfY2FuX2JlX3NpbXBsaWZpZWQKPsKgwqDCoMKgwqDCoMKgwqDCoHBhcnRzLCBwYXJ0c19jYW5f YmVfc2ltcGxpZmllZCA9Cj5AQCAtMTI2Miw2ICsxMzEwLDExIEBAIGJveC5zY2hlbWEuaW5kZXgu YWx0ZXIgPSBmdW5jdGlvbihzcGFjZV9pZCwgaW5kZXhfaWQsIG9wdGlvbnMpCj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHBhcnRzID0gc2ltcGxpZnlfaW5kZXhfcGFydHMocGFydHMpCj7CoMKg wqDCoMKgwqDCoMKgwqBlbmQKPsKgwqDCoMKgwqBlbmQKPisgaWYgb3B0aW9ucy5oaW50IGFuZCBp c19tdWx0aWtleV9pbmRleChwYXJ0cykgdGhlbgo+KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElG WV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhfaWRdLm5hbWUsCj4rIHNwYWNlLm5hbWUsCj4rICJt dWx0aWtleSBpbmRleCBjYW4ndCB1c2UgaGludHMiKQo+KyBlbmQKPsKgwqDCoMKgwqBpZiBpbmRl eF9vcHRzLmZ1bmMgfj0gbmlsIGFuZCB0eXBlKGluZGV4X29wdHMuZnVuYykgPT0gJ3N0cmluZycg dGhlbgo+wqDCoMKgwqDCoMKgwqDCoMKgaW5kZXhfb3B0cy5mdW5jID0gZnVuY19pZF9ieV9uYW1l KGluZGV4X29wdHMuZnVuYykKPsKgwqDCoMKgwqBlbmQKPmRpZmYgLS1naXQgYS9zcmMvYm94L2x1 YS9zcGFjZS5jYyBiL3NyYy9ib3gvbHVhL3NwYWNlLmNjCj5pbmRleCAxNzdjNTg4Li4xZWE5OTNj IDEwMDY0NAo+LS0tIGEvc3JjL2JveC9sdWEvc3BhY2UuY2MKPisrKyBiL3NyYy9ib3gvbHVhL3Nw YWNlLmNjCj5AQCAtMzQ0LDYgKzM0NCwxMyBAQCBsYm94X2ZpbGxzcGFjZShzdHJ1Y3QgbHVhX1N0 YXRlICpMLCBzdHJ1Y3Qgc3BhY2UgKnNwYWNlLCBpbnQgaSkKPsKgIGx1YV9wdXNobnVtYmVyKEws IGluZGV4X29wdHMtPmRpbWVuc2lvbik7Cj7CoCBsdWFfc2V0ZmllbGQoTCwgLTIsICJkaW1lbnNp b24iKTsKPsKgIH0KPisgaWYgKHNwYWNlX2lzX21lbXR4KHNwYWNlKSAmJiBpbmRleF9kZWYtPnR5 cGUgPT0gVFJFRSkgewo+KyBsdWFfcHVzaGJvb2xlYW4oTCwgaW5kZXhfb3B0cy0+aGludCk7Cj4r IGx1YV9zZXRmaWVsZChMLCAtMiwgImhpbnQiKTsKPisgfSBlbHNlIHsKPisgbHVhX3B1c2huaWwo TCk7Cj4rIGx1YV9zZXRmaWVsZChMLCAtMiwgImhpbnQiKTsKPisgfQo+wqAKPsKgIGlmIChpbmRl eF9vcHRzLT5mdW5jX2lkID4gMCkgewo+wqAgbHVhX3B1c2hzdHJpbmcoTCwgImZ1bmMiKTsKPmRp ZmYgLS1naXQgYS9zcmMvYm94L21lbXR4X2VuZ2luZS5jIGIvc3JjL2JveC9tZW10eF9lbmdpbmUu Ywo+aW5kZXggIDgxNDc1NTcgLi40MzAwMGJhIDEwMDY0NAo+LS0tIGEvc3JjL2JveC9tZW10eF9l bmdpbmUuYwo+KysrIGIvc3JjL2JveC9tZW10eF9lbmdpbmUuYwo+QEAgLTEzOTgsNiArMTM5OCw4 IEBAIG1lbXR4X2luZGV4X2RlZl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZChzdHJ1Y3QgaW5kZXgg KmluZGV4LAo+wqAgcmV0dXJuIHRydWU7Cj7CoCBpZiAob2xkX2RlZi0+b3B0cy5mdW5jX2lkICE9 IG5ld19kZWYtPm9wdHMuZnVuY19pZCkKPsKgIHJldHVybiB0cnVlOwo+KyBpZiAob2xkX2RlZi0+ b3B0cy5oaW50ICE9IG5ld19kZWYtPm9wdHMuaGludCkKPisgcmV0dXJuIHRydWU7Cj7CoAo+wqAg Y29uc3Qgc3RydWN0IGtleV9kZWYgKm9sZF9jbXBfZGVmLCAqbmV3X2NtcF9kZWY7Cj7CoCBpZiAo aW5kZXhfZGVwZW5kc19vbl9wayhpbmRleCkpIHsKPmRpZmYgLS1naXQgYS9zcmMvYm94L21lbXR4 X3RyZWUuY2MgYi9zcmMvYm94L21lbXR4X3RyZWUuY2MKPmluZGV4IGQzYjk5M2IuLjE3ZDU4YzUg MTAwNjQ0Cj4tLS0gYS9zcmMvYm94L21lbXR4X3RyZWUuY2MKPisrKyBiL3NyYy9ib3gvbWVtdHhf dHJlZS5jYwo+QEAgLTQ1LDIzICs0NSw1MSBAQAo+wqAvKioKPsKgwqAqIFN0cnVjdCB0aGF0IGlz IHVzZWQgYXMgYSBrZXkgaW4gQlBTIHRyZWUgZGVmaW5pdGlvbi4KPsKgwqAqLwo+LXN0cnVjdCBt ZW10eF90cmVlX2tleV9kYXRhIHsKPitzdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YV9jb21tb24g ewo+wqAgLyoqIFNlcXVlbmNlIG9mIG1zZ3BhY2tlZCBzZWFyY2ggZmllbGRzLiAqLwo+wqAgY29u c3QgY2hhciAqa2V5Owo+wqAgLyoqIE51bWJlciBvZiBtc2dwYWNrZWQgc2VhcmNoIGZpZWxkcy4g Ki8KPsKgIHVpbnQzMl90IHBhcnRfY291bnQ7Cj4rfTsKPisKPit0ZW1wbGF0ZSA8aW50IFVTRV9I SU5UPgo+K3N0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhOwo+Kwo+K3RlbXBsYXRlIDw+Cj4rc3Ry dWN0IG1lbXR4X3RyZWVfa2V5X2RhdGE8MD4gOiBtZW10eF90cmVlX2tleV9kYXRhX2NvbW1vbiB7 Cj4rIHN0YXRpYyBjb25zdGV4cHIgaGludF90IGhpbnQgPSBISU5UX05PTkU7Cj4rIHZvaWQgc2V0 X2hpbnQoaGludF90KSB7IGFzc2VydChmYWxzZSk7IH0KPit9Owo+Kwo+K3RlbXBsYXRlIDw+Cj4r c3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGE8MT4gOiBtZW10eF90cmVlX2tleV9kYXRhX2NvbW1v biB7Cj7CoCAvKiogQ29tcGFyaXNvbiBoaW50LCBzZWUgdHVwbGVfaGludCgpLiAqLwo+wqAgaGlu dF90IGhpbnQ7Cj4rIHZvaWQgc2V0X2hpbnQoaGludF90IGgpIHsgaGludCA9IGg7IH0KPsKgfTsK PsKgCj7CoC8qKgo+wqDCoCogU3RydWN0IHRoYXQgaXMgdXNlZCBhcyBhIGVsZW0gaW4gQlBTIHRy ZWUgZGVmaW5pdGlvbi4KPsKgwqAqLwo+LXN0cnVjdCBtZW10eF90cmVlX2RhdGEgewo+K3N0cnVj dCBtZW10eF90cmVlX2RhdGFfY29tbW9uIHsKPsKgIC8qIFR1cGxlIHRoYXQgdGhpcyBub2RlIGlz IHJlcHJlc2VudHMuICovCj7CoCBzdHJ1Y3QgdHVwbGUgKnR1cGxlOwo+K307Cj4rCj4rdGVtcGxh dGUgPGludCBVU0VfSElOVD4KPitzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhOwo+Kwo+K3RlbXBsYXRl IDw+Cj4rc3RydWN0IG1lbXR4X3RyZWVfZGF0YTwwPiA6IG1lbXR4X3RyZWVfZGF0YV9jb21tb24g ewo+KyBzdGF0aWMgY29uc3RleHByIGhpbnRfdCBoaW50ID0gSElOVF9OT05FOwo+KyB2b2lkIHNl dF9oaW50KGhpbnRfdCkgeyBhc3NlcnQoZmFsc2UpOyB9Cj4rfTsKPisKPit0ZW1wbGF0ZSA8Pgo+ K3N0cnVjdCBtZW10eF90cmVlX2RhdGE8MT4gOiBtZW10eF90cmVlX2RhdGE8MD4gewo+wqAgLyoq IENvbXBhcmlzb24gaGludCwgc2VlIGtleV9oaW50KCkuICovCj7CoCBoaW50X3QgaGludDsKPisg dm9pZCBzZXRfaGludChoaW50X3QgaCkgeyBoaW50ID0gaDsgfQo+wqB9Owo+wqAKPsKgLyoqCj5A QCAtNzMsOCArMTAxLDggQEAgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSB7Cj7CoMKgKiBAcmV0dmFs IGZhbHNlIC0gT3RoZXJ3aXNlLgo+wqDCoCovCj7CoHN0YXRpYyBib29sCj4tbWVtdHhfdHJlZV9k YXRhX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmEsCj4tIGNvbnN0IHN0 cnVjdCBtZW10eF90cmVlX2RhdGEgKmIpCj4rbWVtdHhfdHJlZV9kYXRhX2lzX2VxdWFsKGNvbnN0 IHN0cnVjdCBtZW10eF90cmVlX2RhdGFfY29tbW9uICphLAo+KyBjb25zdCBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhX2NvbW1vbiAqYikKPsKgewo+wqAgcmV0dXJuIGEtPnR1cGxlID09IGItPnR1cGxl Owo+wqB9Cj5AQCAtODksMTIgKzExNywyOCBAQCBtZW10eF90cmVlX2RhdGFfaXNfZXF1YWwoY29u c3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqYSwKPsKgIChiKS0+cGFydF9jb3VudCwgKGIpLT5o aW50LCBhcmcpCj7CoCNkZWZpbmUgQlBTX1RSRUVfSVNfSURFTlRJQ0FMKGEsIGIpIG1lbXR4X3Ry ZWVfZGF0YV9pc19lcXVhbCgmYSwgJmIpCj7CoCNkZWZpbmUgQlBTX1RSRUVfTk9fREVCVUcgMQo+ LSNkZWZpbmUgYnBzX3RyZWVfZWxlbV90IHN0cnVjdCBtZW10eF90cmVlX2RhdGEKPi0jZGVmaW5l IGJwc190cmVlX2tleV90IHN0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhICoKPsKgI2RlZmluZSBi cHNfdHJlZV9hcmdfdCBzdHJ1Y3Qga2V5X2RlZiAqCj7CoAo+KyNkZWZpbmUgQlBTX1RSRUVfTkFN RVNQQUNFIE5TX05PX0hJTlQKPisjZGVmaW5lIGJwc190cmVlX2VsZW1fdCBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhPDA+Cj4rI2RlZmluZSBicHNfdHJlZV9rZXlfdCBzdHJ1Y3QgbWVtdHhfdHJlZV9r ZXlfZGF0YTwwPiAqCj4rCj7CoCNpbmNsdWRlICJzYWxhZC9icHNfdHJlZS5oIgo+wqAKPisjdW5k ZWYgQlBTX1RSRUVfTkFNRVNQQUNFCj4rI3VuZGVmIGJwc190cmVlX2VsZW1fdAo+KyN1bmRlZiBi cHNfdHJlZV9rZXlfdAo+Kwo+KyNkZWZpbmUgQlBTX1RSRUVfTkFNRVNQQUNFIE5TX1VTRV9ISU5U Cj4rI2RlZmluZSBicHNfdHJlZV9lbGVtX3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTwxPgo+KyNk ZWZpbmUgYnBzX3RyZWVfa2V5X3Qgc3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGE8MT4gKgo+Kwo+ KyNpbmNsdWRlICJzYWxhZC9icHNfdHJlZS5oIgo+Kwo+KyN1bmRlZiBCUFNfVFJFRV9OQU1FU1BB Q0UKPisjdW5kZWYgYnBzX3RyZWVfZWxlbV90Cj4rI3VuZGVmIGJwc190cmVlX2tleV90Cj4rCj7C oCN1bmRlZiBCUFNfVFJFRV9OQU1FCj7CoCN1bmRlZiBCUFNfVFJFRV9CTE9DS19TSVpFCj7CoCN1 bmRlZiBCUFNfVFJFRV9FWFRFTlRfU0laRQo+QEAgLTEwMiw2NiArMTQ2LDExOSBAQCBtZW10eF90 cmVlX2RhdGFfaXNfZXF1YWwoY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqYSwKPsKgI3Vu ZGVmIEJQU19UUkVFX0NPTVBBUkVfS0VZCj7CoCN1bmRlZiBCUFNfVFJFRV9JU19JREVOVElDQUwK PsKgI3VuZGVmIEJQU19UUkVFX05PX0RFQlVHCj4tI3VuZGVmIGJwc190cmVlX2VsZW1fdAo+LSN1 bmRlZiBicHNfdHJlZV9rZXlfdAo+wqAjdW5kZWYgYnBzX3RyZWVfYXJnX3QKPsKgCj4rdXNpbmcg bmFtZXNwYWNlIE5TX05PX0hJTlQ7Cj4rdXNpbmcgbmFtZXNwYWNlIE5TX1VTRV9ISU5UOwo+Kwo+ K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4rc3RydWN0IG1lbXR4X3RyZWVfc2VsZWN0b3I7Cj4r Cj4rdGVtcGxhdGUgPD4KPitzdHJ1Y3QgbWVtdHhfdHJlZV9zZWxlY3RvcjwwPiA6IE5TX05PX0hJ TlQ6Om1lbXR4X3RyZWUge307Cj4rCj4rdGVtcGxhdGUgPD4KPitzdHJ1Y3QgbWVtdHhfdHJlZV9z ZWxlY3RvcjwxPiA6IE5TX1VTRV9ISU5UOjptZW10eF90cmVlIHt9Owo+Kwo+K3RlbXBsYXRlIDxp bnQgVVNFX0hJTlQ+Cj4rdXNpbmcgbWVtdHhfdHJlZV90ID0gc3RydWN0IG1lbXR4X3RyZWVfc2Vs ZWN0b3I8VVNFX0hJTlQ+Owo+Kwo+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj4rc3RydWN0IG1l bXR4X3RyZWVfaXRlcmF0b3Jfc2VsZWN0b3I7Cj4rCj4rdGVtcGxhdGUgPD4KPitzdHJ1Y3QgbWVt dHhfdHJlZV9pdGVyYXRvcl9zZWxlY3RvcjwwPiB7Cj4rIHVzaW5nIHR5cGUgPSBOU19OT19ISU5U OjptZW10eF90cmVlX2l0ZXJhdG9yOwo+K307Cj4rCj4rdGVtcGxhdGUgPD4KPitzdHJ1Y3QgbWVt dHhfdHJlZV9pdGVyYXRvcl9zZWxlY3RvcjwxPiB7Cj4rIHVzaW5nIHR5cGUgPSBOU19VU0VfSElO VDo6bWVtdHhfdHJlZV9pdGVyYXRvcjsKPit9Owo+Kwo+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+ Cj4rdXNpbmcgbWVtdHhfdHJlZV9pdGVyYXRvcl90ID0gdHlwZW5hbWUgbWVtdHhfdHJlZV9pdGVy YXRvcl9zZWxlY3RvcjxVU0VfSElOVD46OnR5cGU7Cj4rCj4rc3RhdGljIHZvaWQKPitpbnZhbGlk YXRlX3RyZWVfaXRlcmF0b3IoTlNfTk9fSElOVDo6bWVtdHhfdHJlZV9pdGVyYXRvciAqaXRyKQo+ K3sKPisgKml0ciA9IE5TX05PX0hJTlQ6Om1lbXR4X3RyZWVfaW52YWxpZF9pdGVyYXRvcigpOwo+ K30KPisKPitzdGF0aWMgdm9pZAo+K2ludmFsaWRhdGVfdHJlZV9pdGVyYXRvcihOU19VU0VfSElO VDo6bWVtdHhfdHJlZV9pdGVyYXRvciAqaXRyKQo+K3sKPisgKml0ciA9IE5TX1VTRV9ISU5UOjpt ZW10eF90cmVlX2ludmFsaWRfaXRlcmF0b3IoKTsKPit9Cj4rCj4rdGVtcGxhdGUgPGludCBVU0Vf SElOVD4KPsKgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggewo+wqAgc3RydWN0IGluZGV4IGJhc2U7 Cj4tIHN0cnVjdCBtZW10eF90cmVlIHRyZWU7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmJ1 aWxkX2FycmF5Owo+KyBtZW10eF90cmVlX3Q8VVNFX0hJTlQ+IHRyZWU7Cj4rIHN0cnVjdCBtZW10 eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpidWlsZF9hcnJheTsKPsKgIHNpemVfdCBidWlsZF9hcnJh eV9zaXplLCBidWlsZF9hcnJheV9hbGxvY19zaXplOwo+wqAgc3RydWN0IG1lbXR4X2djX3Rhc2sg Z2NfdGFzazsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgZ2NfaXRlcmF0b3I7Cj4rIG1l bXR4X3RyZWVfaXRlcmF0b3JfdDxVU0VfSElOVD4gZ2NfaXRlcmF0b3I7Cj7CoH07Cj7CoAo+wqAv KiB7e3sgVXRpbGl0aWVzLiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwo+wqAKPit0ZW1wbGF0ZSA8Y2xhc3MgVFJFRT4KPsKgc3RhdGljIGlubGluZSBz dHJ1Y3Qga2V5X2RlZiAqCj4tbWVtdHhfdHJlZV9jbXBfZGVmKHN0cnVjdCBtZW10eF90cmVlICp0 cmVlKQo+K21lbXR4X3RyZWVfY21wX2RlZihUUkVFICp0cmVlKQo+wqB7Cj7CoCByZXR1cm4gdHJl ZS0+YXJnOwo+wqB9Cj7CoAo+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRpYyBpbnQK PsKgbWVtdHhfdHJlZV9xY29tcGFyZShjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkICpiLCB2b2lk ICpjKQo+wqB7Cj4tIGNvbnN0IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmRhdGFfYSA9IChzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhICopYTsKPi0gY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAq ZGF0YV9iID0gKHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKiliOwo+KyBjb25zdCBzdHJ1Y3QgbWVt dHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqZGF0YV9hID0KPisgKHN0cnVjdCBtZW10eF90cmVlX2Rh dGE8VVNFX0hJTlQ+ICopYTsKPisgY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElO VD4gKmRhdGFfYiA9Cj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqKWI7Cj7C oCBzdHJ1Y3Qga2V5X2RlZiAqa2V5X2RlZiA9IChzdHJ1Y3Qga2V5X2RlZiAqKWM7Cj7CoCByZXR1 cm4gdHVwbGVfY29tcGFyZShkYXRhX2EtPnR1cGxlLCBkYXRhX2EtPmhpbnQsIGRhdGFfYi0+dHVw bGUsCj7CoCBkYXRhX2ItPmhpbnQsIGtleV9kZWYpOwo+wqB9Cj7CoAo+wqAvKiB7e3sgTWVtdHhU cmVlIEl0ZXJhdG9ycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo+ K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj7CoHN0cnVjdCB0cmVlX2l0ZXJhdG9yIHsKPsKgIHN0 cnVjdCBpdGVyYXRvciBiYXNlOwo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pdGVyYXRvciB0cmVlX2l0 ZXJhdG9yOwo+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3Q8VVNFX0hJTlQ+IHRyZWVfaXRlcmF0b3I7 Cj7CoCBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZTsKPi0gc3RydWN0IG1lbXR4X3RyZWVfa2V5X2Rh dGEga2V5X2RhdGE7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgY3VycmVudDsKPisgc3RydWN0 IG1lbXR4X3RyZWVfa2V5X2RhdGE8VVNFX0hJTlQ+IGtleV9kYXRhOwo+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhPFVTRV9ISU5UPiBjdXJyZW50Owo+wqAgLyoqIE1lbW9yeSBwb29sIHRoZSBpdGVy YXRvciB3YXMgYWxsb2NhdGVkIGZyb20uICovCj7CoCBzdHJ1Y3QgbWVtcG9vbCAqcG9vbDsKPsKg fTsKPsKgCj4tc3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3IpIDw9IE1F TVRYX0lURVJBVE9SX1NJWkUsCj4tICJzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3IpIG11c3Qg YmUgbGVzcyB0aGFuIG9yIGVxdWFsICIKPitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgdHJl ZV9pdGVyYXRvcjwwPikgPD0gTUVNVFhfSVRFUkFUT1JfU0laRSwKPisgInNpemVvZihzdHJ1Y3Qg dHJlZV9pdGVyYXRvcjwwPikgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgIgo+KyAidG8gTUVN VFhfSVRFUkFUT1JfU0laRSIpOwo+K3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0cmVlX2l0 ZXJhdG9yPDE+KSA8PSBNRU1UWF9JVEVSQVRPUl9TSVpFLAo+KyAic2l6ZW9mKHN0cnVjdCB0cmVl X2l0ZXJhdG9yPDE+KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCAiCj7CoCAidG8gTUVNVFhf SVRFUkFUT1JfU0laRSIpOwo+wqAKPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+wqBzdGF0aWMg dm9pZAo+wqB0cmVlX2l0ZXJhdG9yX2ZyZWUoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvcik7Cj7C oAo+LXN0YXRpYyBpbmxpbmUgc3RydWN0IHRyZWVfaXRlcmF0b3IgKgo+LXRyZWVfaXRlcmF0b3Io c3RydWN0IGl0ZXJhdG9yICppdCkKPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+K3N0YXRpYyBp bmxpbmUgc3RydWN0IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+ICoKPitnZXRfdHJlZV9pdGVyYXRv cihzdHJ1Y3QgaXRlcmF0b3IgKml0KQo+wqB7Cj4tIGFzc2VydChpdC0+ZnJlZSA9PSB0cmVlX2l0 ZXJhdG9yX2ZyZWUpOwo+LSByZXR1cm4gKHN0cnVjdCB0cmVlX2l0ZXJhdG9yICopIGl0Owo+KyBh c3NlcnQoaXQtPmZyZWUgPT0gJnRyZWVfaXRlcmF0b3JfZnJlZTxVU0VfSElOVD4pOwo+KyByZXR1 cm4gKHN0cnVjdCB0cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPiAqKSBpdDsKPsKgfQo+wqAKPit0ZW1w bGF0ZSA8aW50IFVTRV9ISU5UPgo+wqBzdGF0aWMgdm9pZAo+wqB0cmVlX2l0ZXJhdG9yX2ZyZWUo c3RydWN0IGl0ZXJhdG9yICppdGVyYXRvcikKPsKgewo+LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAq aXQgPSB0cmVlX2l0ZXJhdG9yKGl0ZXJhdG9yKTsKPisgc3RydWN0IHRyZWVfaXRlcmF0b3I8VVNF X0hJTlQ+ICppdCA9IGdldF90cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPihpdGVyYXRvcik7Cj7CoCBz dHJ1Y3QgdHVwbGUgKnR1cGxlID0gaXQtPmN1cnJlbnQudHVwbGU7Cj7CoCBpZiAodHVwbGUgIT0g TlVMTCkKPsKgIHR1cGxlX3VucmVmKHR1cGxlKTsKPkBAIC0xNzYsMTQgKzI3MywxNSBAQCB0cmVl X2l0ZXJhdG9yX2R1bW1pZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUg KipyZXQpCj7CoCByZXR1cm4gMDsKPsKgfQo+wqAKPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+ wqBzdGF0aWMgaW50Cj7CoHRyZWVfaXRlcmF0b3JfbmV4dF9iYXNlKHN0cnVjdCBpdGVyYXRvciAq aXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgewo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqaW5kZXggPQo+LSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKilpdGVyYXRvci0+aW5k ZXg7Cj4tIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3Ip Owo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPisgKHN0cnVj dCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWl0ZXJhdG9yLT5pbmRleDsKPisgc3RydWN0 IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+ICppdCA9IGdldF90cmVlX2l0ZXJhdG9yPFVTRV9ISU5U PihpdGVyYXRvcik7Cj7CoCBhc3NlcnQoaXQtPmN1cnJlbnQudHVwbGUgIT0gTlVMTCk7Cj4tIHN0 cnVjdCBtZW10eF90cmVlX2RhdGEgKmNoZWNrID0KPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxV U0VfSElOVD4gKmNoZWNrID0KPsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmluZGV4 LT50cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+wqAgaWYgKGNoZWNrID09IE5VTEwgfHwgIW1l bXR4X3RyZWVfZGF0YV9pc19lcXVhbChjaGVjaywgJml0LT5jdXJyZW50KSkgewo+wqAgaXQtPnRy ZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX3VwcGVyX2JvdW5kX2VsZW0oJmluZGV4LT50cmVlLAo+ QEAgLTE5Miw3ICsyOTAsNyBAQCB0cmVlX2l0ZXJhdG9yX25leHRfYmFzZShzdHJ1Y3QgaXRlcmF0 b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj7CoCBtZW10eF90cmVlX2l0ZXJhdG9y X25leHQoJmluZGV4LT50cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+wqAgfQo+wqAgdHVwbGVf dW5yZWYoaXQtPmN1cnJlbnQudHVwbGUpOwo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMg PQo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqcmVzID0KPsKgIG1lbXR4X3Ry ZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmluZGV4LT50cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+ wqAgaWYgKHJlcyA9PSBOVUxMKSB7Cj7CoCBpdGVyYXRvci0+bmV4dCA9IHRyZWVfaXRlcmF0b3Jf ZHVtbWllOwo+QEAgLTIwNiwxNCArMzA0LDE1IEBAIHRyZWVfaXRlcmF0b3JfbmV4dF9iYXNlKHN0 cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgIHJldHVybiAw Owo+wqB9Cj7CoAo+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRpYyBpbnQKPsKgdHJl ZV9pdGVyYXRvcl9wcmV2X2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1 cGxlICoqcmV0KQo+wqB7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9Cj4tIChz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWl0ZXJhdG9yLT5pbmRleDsKPi0gc3RydWN0IHRyZWVf aXRlcmF0b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7Cj4rIHN0cnVjdCBtZW10eF90 cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8 VVNFX0hJTlQ+ICopaXRlcmF0b3ItPmluZGV4Owo+KyBzdHJ1Y3QgdHJlZV9pdGVyYXRvcjxVU0Vf SElOVD4gKml0ID0gZ2V0X3RyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+KGl0ZXJhdG9yKTsKPsKgIGFz c2VydChpdC0+Y3VycmVudC50dXBsZSAhPSBOVUxMKTsKPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0 YSAqY2hlY2sgPQo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqY2hlY2sgPQo+ wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxlbSgmaW5kZXgtPnRyZWUsICZpdC0+dHJlZV9p dGVyYXRvcik7Cj7CoCBpZiAoY2hlY2sgPT0gTlVMTCB8fCAhbWVtdHhfdHJlZV9kYXRhX2lzX2Vx dWFsKGNoZWNrLCAmaXQtPmN1cnJlbnQpKSB7Cj7CoCBpdC0+dHJlZV9pdGVyYXRvciA9IG1lbXR4 X3RyZWVfbG93ZXJfYm91bmRfZWxlbSgmaW5kZXgtPnRyZWUsCj5AQCAtMjIxLDcgKzMyMCw3IEBA IHRyZWVfaXRlcmF0b3JfcHJldl9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVj dCB0dXBsZSAqKnJldCkKPsKgIH0KPsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfcHJldigmaW5kZXgt PnRyZWUsICZpdC0+dHJlZV9pdGVyYXRvcik7Cj7CoCB0dXBsZV91bnJlZihpdC0+Y3VycmVudC50 dXBsZSk7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9Cj4rIHN0cnVjdCBtZW10eF90 cmVlX2RhdGE8VVNFX0hJTlQ+ICpyZXMgPQo+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxl bSgmaW5kZXgtPnRyZWUsICZpdC0+dHJlZV9pdGVyYXRvcik7Cj7CoCBpZiAoIXJlcykgewo+wqAg aXRlcmF0b3ItPm5leHQgPSB0cmVlX2l0ZXJhdG9yX2R1bW1pZTsKPkBAIC0yMzUsMTQgKzMzNCwx NSBAQCB0cmVlX2l0ZXJhdG9yX3ByZXZfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBz dHJ1Y3QgdHVwbGUgKipyZXQpCj7CoCByZXR1cm4gMDsKPsKgfQo+wqAKPit0ZW1wbGF0ZSA8aW50 IFVTRV9ISU5UPgo+wqBzdGF0aWMgaW50Cj7CoHRyZWVfaXRlcmF0b3JfbmV4dF9lcXVhbF9iYXNl KHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgewo+LSBz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPQo+LSAoc3RydWN0IG1lbXR4X3RyZWVfaW5k ZXggKilpdGVyYXRvci0+aW5kZXg7Cj4tIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9IHRyZWVf aXRlcmF0b3IoaXRlcmF0b3IpOwo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4g KmluZGV4ID0KPisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWl0ZXJhdG9y LT5pbmRleDsKPisgc3RydWN0IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+ICppdCA9IGdldF90cmVl X2l0ZXJhdG9yPFVTRV9ISU5UPihpdGVyYXRvcik7Cj7CoCBhc3NlcnQoaXQtPmN1cnJlbnQudHVw bGUgIT0gTlVMTCk7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmNoZWNrID0KPisgc3RydWN0 IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKmNoZWNrID0KPsKgIG1lbXR4X3RyZWVfaXRlcmF0 b3JfZ2V0X2VsZW0oJmluZGV4LT50cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+wqAgaWYgKGNo ZWNrID09IE5VTEwgfHwgIW1lbXR4X3RyZWVfZGF0YV9pc19lcXVhbChjaGVjaywgJml0LT5jdXJy ZW50KSkgewo+wqAgaXQtPnRyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX3VwcGVyX2JvdW5kX2Vs ZW0oJmluZGV4LT50cmVlLAo+QEAgLTI1MSw3ICszNTEsNyBAQCB0cmVlX2l0ZXJhdG9yX25leHRf ZXF1YWxfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQp Cj7CoCBtZW10eF90cmVlX2l0ZXJhdG9yX25leHQoJmluZGV4LT50cmVlLCAmaXQtPnRyZWVfaXRl cmF0b3IpOwo+wqAgfQo+wqAgdHVwbGVfdW5yZWYoaXQtPmN1cnJlbnQudHVwbGUpOwo+LSBzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPQo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9I SU5UPiAqcmVzID0KPsKgIG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmluZGV4LT50cmVl LCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+wqAgLyogVXNlIHVzZXIga2V5IGRlZiB0byBzYXZlIGEg ZmV3IGxvb3BzLiAqLwo+wqAgaWYgKHJlcyA9PSBOVUxMIHx8Cj5AQCAtMjcxLDE0ICszNzEsMTUg QEAgdHJlZV9pdGVyYXRvcl9uZXh0X2VxdWFsX2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRv ciwgc3RydWN0IHR1cGxlICoqcmV0KQo+wqAgcmV0dXJuIDA7Cj7CoH0KPsKgCj4rdGVtcGxhdGUg PGludCBVU0VfSElOVD4KPsKgc3RhdGljIGludAo+wqB0cmVlX2l0ZXJhdG9yX3ByZXZfZXF1YWxf YmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpCj7CoHsK Pi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0KPi0gKHN0cnVjdCBtZW10eF90cmVl X2luZGV4ICopaXRlcmF0b3ItPmluZGV4Owo+LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0 cmVlX2l0ZXJhdG9yKGl0ZXJhdG9yKTsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJ TlQ+ICppbmRleCA9Cj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKilpdGVy YXRvci0+aW5kZXg7Cj4rIHN0cnVjdCB0cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPiAqaXQgPSBnZXRf dHJlZV9pdGVyYXRvcjxVU0VfSElOVD4oaXRlcmF0b3IpOwo+wqAgYXNzZXJ0KGl0LT5jdXJyZW50 LnR1cGxlICE9IE5VTEwpOwo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpjaGVjayA9Cj4rIHN0 cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpjaGVjayA9Cj7CoCBtZW10eF90cmVlX2l0 ZXJhdG9yX2dldF9lbGVtKCZpbmRleC0+dHJlZSwgJml0LT50cmVlX2l0ZXJhdG9yKTsKPsKgIGlm IChjaGVjayA9PSBOVUxMIHx8ICFtZW10eF90cmVlX2RhdGFfaXNfZXF1YWwoY2hlY2ssICZpdC0+ Y3VycmVudCkpIHsKPsKgIGl0LT50cmVlX2l0ZXJhdG9yID0gbWVtdHhfdHJlZV9sb3dlcl9ib3Vu ZF9lbGVtKCZpbmRleC0+dHJlZSwKPkBAIC0yODYsNyArMzg3LDcgQEAgdHJlZV9pdGVyYXRvcl9w cmV2X2VxdWFsX2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoq cmV0KQo+wqAgfQo+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9wcmV2KCZpbmRleC0+dHJlZSwgJml0 LT50cmVlX2l0ZXJhdG9yKTsKPsKgIHR1cGxlX3VucmVmKGl0LT5jdXJyZW50LnR1cGxlKTsKPi0g c3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVzID0KPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxV U0VfSElOVD4gKnJlcyA9Cj7CoCBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZpbmRleC0+ dHJlZSwgJml0LT50cmVlX2l0ZXJhdG9yKTsKPsKgIC8qIFVzZSB1c2VyIGtleSBkZWYgdG8gc2F2 ZSBhIGZldyBsb29wcy4gKi8KPsKgIGlmIChyZXMgPT0gTlVMTCB8fAo+QEAgLTMwNywyOCArNDA4 LDMwIEBAIHRyZWVfaXRlcmF0b3JfcHJldl9lcXVhbF9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRl cmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgfQo+wqAKPsKgI2RlZmluZSBXUkFQX0lURVJB VE9SX01FVEhPRChuYW1lKSBcCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4gXAo+wqBzdGF0aWMg aW50IFwKPsKgbmFtZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipy ZXQpIFwKPsKgeyBcCj4tIHN0cnVjdCBtZW10eF90cmVlICp0cmVlID0gXAo+LSAmKChzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCAqKWl0ZXJhdG9yLT5pbmRleCktPnRyZWU7IFwKPi0gc3RydWN0IHRy ZWVfaXRlcmF0b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7IFwKPi0gc3RydWN0IG1l bXR4X3RyZWVfaXRlcmF0b3IgKnRpID0gJml0LT50cmVlX2l0ZXJhdG9yOyBcCj4rIG1lbXR4X3Ry ZWVfdDxVU0VfSElOVD4gKnRyZWUgPSBcCj4rICYoKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVT RV9ISU5UPiAqKWl0ZXJhdG9yLT5pbmRleCktPnRyZWU7IFwKPisgc3RydWN0IHRyZWVfaXRlcmF0 b3I8VVNFX0hJTlQ+ICppdCA9IFwKPisgZ2V0X3RyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+KGl0ZXJh dG9yKTsgXAo+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3Q8VVNFX0hJTlQ+ICp0aSA9ICZpdC0+dHJl ZV9pdGVyYXRvcjsgXAo+wqAgdWludDMyX3QgaWlkID0gaXRlcmF0b3ItPmluZGV4LT5kZWYtPmlp ZDsgXAo+wqAgYm9vbCBpc19tdWx0aWtleSA9IGl0ZXJhdG9yLT5pbmRleC0+ZGVmLT5rZXlfZGVm LT5pc19tdWx0aWtleTsgXAo+wqAgc3RydWN0IHR4biAqdHhuID0gaW5fdHhuKCk7IFwKPsKgIHN0 cnVjdCBzcGFjZSAqc3BhY2UgPSBzcGFjZV9ieV9pZChpdGVyYXRvci0+c3BhY2VfaWQpOyBcCj7C oCBib29sIGlzX3J3ID0gdHhuICE9IE5VTEw7IFwKPsKgIGRvIHsgXAo+LSBpbnQgcmMgPSBuYW1l IyNfYmFzZShpdGVyYXRvciwgcmV0KTsgXAo+KyBpbnQgcmMgPSBuYW1lIyNfYmFzZTxVU0VfSElO VD4oaXRlcmF0b3IsIHJldCk7IFwKPsKgIGlmIChyYyAhPSAwIHx8ICpyZXQgPT0gTlVMTCkgXAo+ wqAgcmV0dXJuIHJjOyBcCj7CoCB1aW50MzJfdCBta19pbmRleCA9IDA7IFwKPsKgIGlmIChpc19t dWx0aWtleSkgeyBcCj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmNoZWNrID0gXAo+KyBzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqY2hlY2sgPSBcCj7CoCBtZW10eF90cmVlX2l0 ZXJhdG9yX2dldF9lbGVtKHRyZWUsIHRpKTsgXAo+wqAgYXNzZXJ0KGNoZWNrICE9IE5VTEwpOyBc Cj4tIG1rX2luZGV4ID0gY2hlY2stPmhpbnQ7IFwKPisgbWtfaW5kZXggPSAodWludDMyX3QpY2hl Y2stPmhpbnQ7IFwKPsKgIH0gXAo+wqAgKnJldCA9IG1lbXR4X3R4X3R1cGxlX2NsYXJpZnkodHhu LCBzcGFjZSwgKnJldCwgXAo+wqAgaWlkLCBta19pbmRleCwgaXNfcncpOyBcCj5AQCAtMzQ3LDI3 ICs0NTAsMjggQEAgV1JBUF9JVEVSQVRPUl9NRVRIT0QodHJlZV9pdGVyYXRvcl9wcmV2X2VxdWFs KTsKPsKgCj7CoCN1bmRlZiBXUkFQX0lURVJBVE9SX01FVEhPRAo+wqAKPit0ZW1wbGF0ZSA8aW50 IFVTRV9ISU5UPgo+wqBzdGF0aWMgdm9pZAo+LXRyZWVfaXRlcmF0b3Jfc2V0X25leHRfbWV0aG9k KHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCkKPit0cmVlX2l0ZXJhdG9yX3NldF9uZXh0X21ldGhv ZChzdHJ1Y3QgdHJlZV9pdGVyYXRvcjxVU0VfSElOVD4gKml0KQo+wqB7Cj7CoCBhc3NlcnQoaXQt PmN1cnJlbnQudHVwbGUgIT0gTlVMTCk7Cj7CoCBzd2l0Y2ggKGl0LT50eXBlKSB7Cj7CoCBjYXNl IElURVJfRVE6Cj4tIGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHRfZXF1YWw7Cj4r IGl0LT5iYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHRfZXF1YWw8VVNFX0hJTlQ+Owo+wqAg YnJlYWs7Cj7CoCBjYXNlIElURVJfUkVROgo+LSBpdC0+YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRv cl9wcmV2X2VxdWFsOwo+KyBpdC0+YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9wcmV2X2VxdWFs PFVTRV9ISU5UPjsKPsKgIGJyZWFrOwo+wqAgY2FzZSBJVEVSX0FMTDoKPi0gaXQtPmJhc2UubmV4 dCA9IHRyZWVfaXRlcmF0b3JfbmV4dDsKPisgaXQtPmJhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3Jf bmV4dDxVU0VfSElOVD47Cj7CoCBicmVhazsKPsKgIGNhc2UgSVRFUl9MVDoKPsKgIGNhc2UgSVRF Ul9MRToKPi0gaXQtPmJhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3JfcHJldjsKPisgaXQtPmJhc2Uu bmV4dCA9IHRyZWVfaXRlcmF0b3JfcHJldjxVU0VfSElOVD47Cj7CoCBicmVhazsKPsKgIGNhc2Ug SVRFUl9HRToKPsKgIGNhc2UgSVRFUl9HVDoKPi0gaXQtPmJhc2UubmV4dCA9IHRyZWVfaXRlcmF0 b3JfbmV4dDsKPisgaXQtPmJhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3JfbmV4dDxVU0VfSElOVD47 Cj7CoCBicmVhazsKPsKgIGRlZmF1bHQ6Cj7CoCAvKiBUaGUgdHlwZSB3YXMgY2hlY2tlZCBpbiBp bml0SXRlcmF0b3IgKi8KPkBAIC0zNzUsMTUgKzQ3OSwxNiBAQCB0cmVlX2l0ZXJhdG9yX3NldF9u ZXh0X21ldGhvZChzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQpCj7CoCB9Cj7CoH0KPsKgCj4rdGVt cGxhdGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIGludAo+wqB0cmVlX2l0ZXJhdG9yX3N0YXJ0 KHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgewo+wqAg KnJldCA9IE5VTEw7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9Cj4tIChzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWl0ZXJhdG9yLT5pbmRleDsKPi0gc3RydWN0IHRyZWVfaXRl cmF0b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7Cj4rIHN0cnVjdCBtZW10eF90cmVl X2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNF X0hJTlQ+ICopaXRlcmF0b3ItPmluZGV4Owo+KyBzdHJ1Y3QgdHJlZV9pdGVyYXRvcjxVU0VfSElO VD4gKml0ID0gZ2V0X3RyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+KGl0ZXJhdG9yKTsKPsKgIGl0LT5i YXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX2R1bW1pZTsKPi0gc3RydWN0IG1lbXR4X3RyZWUgKnRy ZWUgPSAmaW5kZXgtPnRyZWU7Cj4rIG1lbXR4X3RyZWVfdDxVU0VfSElOVD4gKnRyZWUgPSAmaW5k ZXgtPnRyZWU7Cj7CoCBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZSA9IGl0LT50eXBlOwo+wqAgYm9v bCBleGFjdCA9IGZhbHNlOwo+wqAgYXNzZXJ0KGl0LT5jdXJyZW50LnR1cGxlID09IE5VTEwpOwo+ QEAgLTQyMyw4ICs1MjgsOCBAQCB0cmVlX2l0ZXJhdG9yX3N0YXJ0KHN0cnVjdCBpdGVyYXRvciAq aXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgIH0KPsKgIH0KPsKgCj4tIHN0cnVjdCBt ZW10eF90cmVlX2RhdGEgKnJlcyA9IG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0odHJlZSwK Pi0gJml0LT50cmVlX2l0ZXJhdG9yKTsKPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElO VD4gKnJlcyA9Cj4rIG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0odHJlZSwgJml0LT50cmVl X2l0ZXJhdG9yKTsKPsKgIGlmICghcmVzKQo+wqAgcmV0dXJuIDA7Cj7CoCAqcmV0ID0gcmVzLT50 dXBsZTsKPkBAIC00NTQsMTQgKzU1OSwxNiBAQCB0cmVlX2l0ZXJhdG9yX3N0YXJ0KHN0cnVjdCBp dGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCkKPsKgCj7CoC8qIHt7eyBNZW10 eFRyZWUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIHZvaWQKPi1t ZW10eF90cmVlX2luZGV4X2ZyZWUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4KQo+K21l bXR4X3RyZWVfaW5kZXhfZnJlZShzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmlu ZGV4KQo+wqB7Cj7CoCBtZW10eF90cmVlX2Rlc3Ryb3koJmluZGV4LT50cmVlKTsKPsKgIGZyZWUo aW5kZXgtPmJ1aWxkX2FycmF5KTsKPsKgIGZyZWUoaW5kZXgpOwo+wqB9Cj7CoAo+K3RlbXBsYXRl IDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRpYyB2b2lkCj7CoG1lbXR4X3RyZWVfaW5kZXhfZ2NfcnVu KHN0cnVjdCBtZW10eF9nY190YXNrICp0YXNrLCBib29sICpkb25lKQo+wqB7Cj5AQCAtNDc1LDE0 ICs1ODIsMTQgQEAgbWVtdHhfdHJlZV9pbmRleF9nY19ydW4oc3RydWN0IG1lbXR4X2djX3Rhc2sg KnRhc2ssIGJvb2wgKmRvbmUpCj7CoCBlbnVtIHsgWUlFTERfTE9PUFMgPSAxMCB9Owo+wqAjZW5k aWYKPsKgCj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IGNvbnRhaW5lcl9vZih0 YXNrLAo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCwgZ2NfdGFzayk7Cj4tIHN0cnVjdCBtZW10 eF90cmVlICp0cmVlID0gJmluZGV4LT50cmVlOwo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pdGVyYXRv ciAqaXRyID0gJmluZGV4LT5nY19pdGVyYXRvcjsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8 VVNFX0hJTlQ+ICppbmRleCA9IGNvbnRhaW5lcl9vZih0YXNrLAo+KyBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleDxVU0VfSElOVD4sIGdjX3Rhc2spOwo+KyBtZW10eF90cmVlX3Q8VVNFX0hJTlQ+ICp0 cmVlID0gJmluZGV4LT50cmVlOwo+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3Q8VVNFX0hJTlQ+ICpp dHIgPSAmaW5kZXgtPmdjX2l0ZXJhdG9yOwo+wqAKPsKgIHVuc2lnbmVkIGludCBsb29wcyA9IDA7 Cj7CoCB3aGlsZSAoIW1lbXR4X3RyZWVfaXRlcmF0b3JfaXNfaW52YWxpZChpdHIpKSB7Cj4tIHN0 cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9Cj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNF X0hJTlQ+ICpyZXMgPQo+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxlbSh0cmVlLCBpdHIp Owo+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9uZXh0KHRyZWUsIGl0cik7Cj7CoCB0dXBsZV91bnJl ZihyZXMtPnR1cGxlKTsKPkBAIC00OTQsMjMgKzYwMSwzMiBAQCBtZW10eF90cmVlX2luZGV4X2dj X3J1bihzdHJ1Y3QgbWVtdHhfZ2NfdGFzayAqdGFzaywgYm9vbCAqZG9uZSkKPsKgICpkb25lID0g dHJ1ZTsKPsKgfQo+wqAKPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+wqBzdGF0aWMgdm9pZAo+ wqBtZW10eF90cmVlX2luZGV4X2djX2ZyZWUoc3RydWN0IG1lbXR4X2djX3Rhc2sgKnRhc2spCj7C oHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gY29udGFpbmVyX29mKHRhc2ss Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4LCBnY190YXNrKTsKPisgc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCA9IGNvbnRhaW5lcl9vZih0YXNrLAo+KyBzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4sIGdjX3Rhc2spOwo+wqAgbWVtdHhfdHJlZV9pbmRl eF9mcmVlKGluZGV4KTsKPsKgfQo+wqAKPi1zdGF0aWMgY29uc3Qgc3RydWN0IG1lbXR4X2djX3Rh c2tfdnRhYiBtZW10eF90cmVlX2luZGV4X2djX3Z0YWIgPSB7Cj4tIC5ydW4gPSBtZW10eF90cmVl X2luZGV4X2djX3J1biwKPi0gLmZyZWUgPSBtZW10eF90cmVlX2luZGV4X2djX2ZyZWUsCj4rdGVt cGxhdGUgPGludCBVU0VfSElOVD4KPitzdGF0aWMgc3RydWN0IG1lbXR4X2djX3Rhc2tfdnRhYiAq IGdldF9tZW10eF90cmVlX2luZGV4X2djX3Z0YWIoKQo+K3sKPisgc3RhdGljIG1lbXR4X2djX3Rh c2tfdnRhYiB0YWIgPQo+KyB7Cj4rIC5ydW4gPSBtZW10eF90cmVlX2luZGV4X2djX3J1bjxVU0Vf SElOVD4sCj4rIC5mcmVlID0gbWVtdHhfdHJlZV9pbmRleF9nY19mcmVlPFVTRV9ISU5UPiwKPisg fTsKPisgcmV0dXJuICZ0YWI7Cj7CoH07Cj7CoAo+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj7C oHN0YXRpYyB2b2lkCj7CoG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveShzdHJ1Y3QgaW5kZXggKmJh c2UpCj7CoHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4ICopYmFzZTsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ ICppbmRleCA9Cj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKiliYXNlOwo+ wqAgc3RydWN0IG1lbXR4X2VuZ2luZSAqbWVtdHggPSAoc3RydWN0IG1lbXR4X2VuZ2luZSAqKWJh c2UtPmVuZ2luZTsKPsKgIGlmIChiYXNlLT5kZWYtPmlpZCA9PSAwKSB7Cj7CoCAvKgo+QEAgLTUx OCw3ICs2MzQsNyBAQCBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3koc3RydWN0IGluZGV4ICpiYXNl KQo+wqAgKiBpbiB0aGUgaW5kZXgsIHdoaWNoIG1heSB0YWtlIGEgd2hpbGUuIFNjaGVkdWxlIGEK PsKgICogYmFja2dyb3VuZCB0YXNrIGluIG9yZGVyIG5vdCB0byBibG9jayB0eCB0aHJlYWQuCj7C oCAqLwo+LSBpbmRleC0+Z2NfdGFzay52dGFiID0gJm1lbXR4X3RyZWVfaW5kZXhfZ2NfdnRhYjsK PisgaW5kZXgtPmdjX3Rhc2sudnRhYiA9IGdldF9tZW10eF90cmVlX2luZGV4X2djX3Z0YWI8VVNF X0hJTlQ+KCk7Cj7CoCBpbmRleC0+Z2NfaXRlcmF0b3IgPSBtZW10eF90cmVlX2l0ZXJhdG9yX2Zp cnN0KCZpbmRleC0+dHJlZSk7Cj7CoCBtZW10eF9lbmdpbmVfc2NoZWR1bGVfZ2MobWVtdHgsICZp bmRleC0+Z2NfdGFzayk7Cj7CoCB9IGVsc2Ugewo+QEAgLTUzMCwxMCArNjQ2LDEyIEBAIG1lbXR4 X3RyZWVfaW5kZXhfZGVzdHJveShzdHJ1Y3QgaW5kZXggKmJhc2UpCj7CoCB9Cj7CoH0KPsKgCj4r dGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIHZvaWQKPsKgbWVtdHhfdHJlZV9pbmRl eF91cGRhdGVfZGVmKHN0cnVjdCBpbmRleCAqYmFzZSkKPsKgewo+LSBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+KyBzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPisgKHN0cnVjdCBtZW10eF90 cmVlX2luZGV4PFVTRV9ISU5UPiAqKWJhc2U7Cj7CoCBzdHJ1Y3QgaW5kZXhfZGVmICpkZWYgPSBi YXNlLT5kZWY7Cj7CoCAvKgo+wqAgKiBXZSB1c2UgZXh0ZW5kZWQga2V5IGRlZiBmb3Igbm9uLXVu aXF1ZSBhbmQgbnVsbGFibGUKPkBAIC01NTMsNTEgKzY3MSw2MiBAQCBtZW10eF90cmVlX2luZGV4 X2RlcGVuZHNfb25fcGsoc3RydWN0IGluZGV4ICpiYXNlKQo+wqAgcmV0dXJuICFkZWYtPm9wdHMu aXNfdW5pcXVlIHx8IGRlZi0+a2V5X2RlZi0+aXNfbnVsbGFibGU7Cj7CoH0KPsKgCj4rdGVtcGxh dGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIHNzaXplX3QKPsKgbWVtdHhfdHJlZV9pbmRleF9z aXplKHN0cnVjdCBpbmRleCAqYmFzZSkKPsKgewo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq aW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 PFVTRV9ISU5UPiAqKWJhc2U7Cj7CoCByZXR1cm4gbWVtdHhfdHJlZV9zaXplKCZpbmRleC0+dHJl ZSk7Cj7CoH0KPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIHNzaXplX3QK PsKgbWVtdHhfdHJlZV9pbmRleF9ic2l6ZShzdHJ1Y3QgaW5kZXggKmJhc2UpCj7CoHsKPi0gc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICop YmFzZTsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCA9Cj4rIChz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKiliYXNlOwo+wqAgcmV0dXJuIG1lbXR4 X3RyZWVfbWVtX3VzZWQoJmluZGV4LT50cmVlKTsKPsKgfQo+wqAKPit0ZW1wbGF0ZSA8aW50IFVT RV9ISU5UPgo+wqBzdGF0aWMgaW50Cj7CoG1lbXR4X3RyZWVfaW5kZXhfcmFuZG9tKHN0cnVjdCBp bmRleCAqYmFzZSwgdWludDMyX3Qgcm5kLCBzdHJ1Y3QgdHVwbGUgKipyZXN1bHQpCj7CoHsKPi0g c3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 ICopYmFzZTsKPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVzID0gbWVtdHhfdHJlZV9yYW5k b20oJmluZGV4LT50cmVlLCBybmQpOwo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElO VD4gKmluZGV4ID0KPisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWJhc2U7 Cj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpyZXMgPSBtZW10eF90cmVlX3Jh bmRvbSgmaW5kZXgtPnRyZWUsIHJuZCk7Cj7CoCAqcmVzdWx0ID0gcmVzICE9IE5VTEwgPyByZXMt PnR1cGxlIDogTlVMTDsKPsKgIHJldHVybiAwOwo+wqB9Cj7CoAo+K3RlbXBsYXRlIDxpbnQgVVNF X0hJTlQ+Cj7CoHN0YXRpYyBzc2l6ZV90Cj7CoG1lbXR4X3RyZWVfaW5kZXhfY291bnQoc3RydWN0 IGluZGV4ICpiYXNlLCBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZSwKPsKgIGNvbnN0IGNoYXIgKmtl eSwgdWludDMyX3QgcGFydF9jb3VudCkKPsKgewo+wqAgaWYgKHR5cGUgPT0gSVRFUl9BTEwpCj4t IHJldHVybiBtZW10eF90cmVlX2luZGV4X3NpemUoYmFzZSk7IC8qIG9wdGltaXphdGlvbiAqLwo+ KyByZXR1cm4gbWVtdHhfdHJlZV9pbmRleF9zaXplPFVTRV9ISU5UPihiYXNlKTsgLyogb3B0aW1p emF0aW9uICovCj7CoCByZXR1cm4gZ2VuZXJpY19pbmRleF9jb3VudChiYXNlLCB0eXBlLCBrZXks IHBhcnRfY291bnQpOwo+wqB9Cj7CoAo+K3RlbXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRp YyBpbnQKPsKgbWVtdHhfdHJlZV9pbmRleF9nZXQoc3RydWN0IGluZGV4ICpiYXNlLCBjb25zdCBj aGFyICprZXksCj7CoCB1aW50MzJfdCBwYXJ0X2NvdW50LCBzdHJ1Y3QgdHVwbGUgKipyZXN1bHQp Cj7CoHsKPsKgIGFzc2VydChiYXNlLT5kZWYtPm9wdHMuaXNfdW5pcXVlICYmCj7CoCBwYXJ0X2Nv dW50ID09IGJhc2UtPmRlZi0+a2V5X2RlZi0+cGFydF9jb3VudCk7Cj4tIHN0cnVjdCBtZW10eF90 cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7Cj4rIHN0 cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+KyAoc3RydWN0IG1lbXR4 X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPsKgIHN0cnVjdCBrZXlfZGVmICpjbXBfZGVm ID0gbWVtdHhfdHJlZV9jbXBfZGVmKCZpbmRleC0+dHJlZSk7Cj4tIHN0cnVjdCBtZW10eF90cmVl X2tleV9kYXRhIGtleV9kYXRhOwo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YTxVU0VfSElO VD4ga2V5X2RhdGE7Cj7CoCBrZXlfZGF0YS5rZXkgPSBrZXk7Cj7CoCBrZXlfZGF0YS5wYXJ0X2Nv dW50ID0gcGFydF9jb3VudDsKPi0ga2V5X2RhdGEuaGludCA9IGtleV9oaW50KGtleSwgcGFydF9j b3VudCwgY21wX2RlZik7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9IG1lbXR4X3Ry ZWVfZmluZCgmaW5kZXgtPnRyZWUsICZrZXlfZGF0YSk7Cj4rIGlmIChVU0VfSElOVCkKPisga2V5 X2RhdGEuc2V0X2hpbnQoa2V5X2hpbnQoa2V5LCBwYXJ0X2NvdW50LCBjbXBfZGVmKSk7Cj4rIHN0 cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpyZXMgPQo+KyBtZW10eF90cmVlX2ZpbmQo JmluZGV4LT50cmVlLCAma2V5X2RhdGEpOwo+wqAgaWYgKHJlcyA9PSBOVUxMKSB7Cj7CoCAqcmVz dWx0ID0gTlVMTDsKPsKgIHJldHVybiAwOwo+QEAgLTYxMSwxOCArNzQwLDIxIEBAIG1lbXR4X3Ry ZWVfaW5kZXhfZ2V0KHN0cnVjdCBpbmRleCAqYmFzZSwgY29uc3QgY2hhciAqa2V5LAo+wqAgcmV0 dXJuIDA7Cj7CoH0KPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIGludAo+ wqBtZW10eF90cmVlX2luZGV4X3JlcGxhY2Uoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVw bGUgKm9sZF90dXBsZSwKPsKgIHN0cnVjdCB0dXBsZSAqbmV3X3R1cGxlLCBlbnVtIGR1cF9yZXBs YWNlX21vZGUgbW9kZSwKPsKgIHN0cnVjdCB0dXBsZSAqKnJlc3VsdCkKPsKgewo+LSBzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNl Owo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPisgKHN0cnVj dCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqKWJhc2U7Cj7CoCBzdHJ1Y3Qga2V5X2RlZiAq Y21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmaW5kZXgtPnRyZWUpOwo+wqAgaWYgKG5ld190 dXBsZSkgewo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIG5ld19kYXRhOwo+KyBzdHJ1Y3QgbWVt dHhfdHJlZV9kYXRhPFVTRV9ISU5UPiBuZXdfZGF0YTsKPsKgIG5ld19kYXRhLnR1cGxlID0gbmV3 X3R1cGxlOwo+LSBuZXdfZGF0YS5oaW50ID0gdHVwbGVfaGludChuZXdfdHVwbGUsIGNtcF9kZWYp Owo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIGR1cF9kYXRhOwo+KyBpZiAoVVNFX0hJTlQpCj4r IG5ld19kYXRhLnNldF9oaW50KHR1cGxlX2hpbnQobmV3X3R1cGxlLCBjbXBfZGVmKSk7Cj4rIHN0 cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+IGR1cF9kYXRhOwo+wqAgZHVwX2RhdGEudHVw bGUgPSBOVUxMOwo+wqAKPsKgIC8qIFRyeSB0byBvcHRpbWlzdGljYWxseSByZXBsYWNlIHRoZSBu ZXdfdHVwbGUuICovCj5AQCAtNjUyLDkgKzc4NCwxMCBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxh Y2Uoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSwKPsKgIH0KPsKg IH0KPsKgIGlmIChvbGRfdHVwbGUpIHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBvbGRfZGF0 YTsKPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gb2xkX2RhdGE7Cj7CoCBvbGRf ZGF0YS50dXBsZSA9IG9sZF90dXBsZTsKPi0gb2xkX2RhdGEuaGludCA9IHR1cGxlX2hpbnQob2xk X3R1cGxlLCBjbXBfZGVmKTsKPisgaWYgKFVTRV9ISU5UKQo+KyBvbGRfZGF0YS5zZXRfaGludCh0 dXBsZV9oaW50KG9sZF90dXBsZSwgY21wX2RlZikpOwo+wqAgbWVtdHhfdHJlZV9kZWxldGUoJmlu ZGV4LT50cmVlLCBvbGRfZGF0YSk7Cj7CoCB9Cj7CoCAqcmVzdWx0ID0gb2xkX3R1cGxlOwo+QEAg LTY2NywxMyArODAwLDEzIEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZShzdHJ1Y3QgaW5kZXgg KmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLAo+wqDCoCogYnkgYWxsIGl0J3MgbXVsdGlr ZXkgaW5kZXhlcy4KPsKgwqAqLwo+wqBzdGF0aWMgaW50Cj4tbWVtdHhfdHJlZV9pbmRleF9yZXBs YWNlX211bHRpa2V5X29uZShzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgsCj4rbWVtdHhf dHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5X29uZShzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwx PiAqaW5kZXgsCj7CoCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSwgc3RydWN0IHR1cGxlICpuZXdf dHVwbGUsCj7CoCBlbnVtIGR1cF9yZXBsYWNlX21vZGUgbW9kZSwgaGludF90IGhpbnQsCj4tIHN0 cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcGxhY2VkX2RhdGEsCj4rIHN0cnVjdCBtZW10eF90cmVl X2RhdGE8MT4gKnJlcGxhY2VkX2RhdGEsCj7CoCBib29sICppc19tdWx0aWtleV9jb25mbGljdCkK PsKgewo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIG5ld19kYXRhLCBkdXBfZGF0YTsKPisgc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YTwxPiBuZXdfZGF0YSwgZHVwX2RhdGE7Cj7CoCBuZXdfZGF0YS50 dXBsZSA9IG5ld190dXBsZTsKPsKgIG5ld19kYXRhLmhpbnQgPSBoaW50Owo+wqAgZHVwX2RhdGEu dHVwbGUgPSBOVUxMOwo+QEAgLTcyMCwxMSArODUzLDExIEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVw bGFjZV9tdWx0aWtleV9vbmUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LAo+wqDCoCog ZGVsZXRlIG9wZXJhdGlvbiBpcyBmYXVsdC10b2xlcmFudC4KPsKgwqAqLwo+wqBzdGF0aWMgdm9p ZAo+LW1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9yb2xsYmFjayhzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCAqaW5kZXgsCj4rbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5 X3JvbGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PDE+ICppbmRleCwKPsKgIHN0cnVjdCB0 dXBsZSAqbmV3X3R1cGxlLCBzdHJ1Y3QgdHVwbGUgKnJlcGxhY2VkX3R1cGxlLAo+wqAgaW50IGVy cl9tdWx0aWtleV9pZHgpCj7CoHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBkYXRhOwo+KyBz dHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPDE+IGRhdGE7Cj7CoCBpZiAocmVwbGFjZWRfdHVwbGUgIT0g TlVMTCkgewo+wqAgLyogUmVzdG9yZSByZXBsYWNlZCB0dXBsZSBpbmRleCBvY2N1cnJlbmNlcy4g Ki8KPsKgIHN0cnVjdCBrZXlfZGVmICpjbXBfZGVmID0gbWVtdHhfdHJlZV9jbXBfZGVmKCZpbmRl eC0+dHJlZSk7Cj5AQCAtNzk4LDcgKzkzMSw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9t dWx0aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLAo+wqAg c3RydWN0IHR1cGxlICpuZXdfdHVwbGUsIGVudW0gZHVwX3JlcGxhY2VfbW9kZSBtb2RlLAo+wqAg c3RydWN0IHR1cGxlICoqcmVzdWx0KQo+wqB7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICpp bmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7Cj4rIHN0cnVjdCBtZW10eF90 cmVlX2luZGV4PDE+ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwxPiAqKWJhc2U7 Cj7CoCBzdHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmaW5kZXgt PnRyZWUpOwo+wqAgKnJlc3VsdCA9IE5VTEw7Cj7CoCBpZiAobmV3X3R1cGxlICE9IE5VTEwpIHsK PkBAIC04MDgsNyArOTQxLDcgQEAgbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5KHN0 cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxlICpvbGRfdHVwbGUsCj7CoCBmb3IgKDsgKHVp bnQzMl90KSBtdWx0aWtleV9pZHggPCBtdWx0aWtleV9jb3VudDsKPsKgIG11bHRpa2V5X2lkeCsr KSB7Cj7CoCBib29sIGlzX211bHRpa2V5X2NvbmZsaWN0Owo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhIHJlcGxhY2VkX2RhdGE7Cj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8MT4gcmVwbGFjZWRf ZGF0YTsKPsKgIGVyciA9IG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoaW5k ZXgsCj7CoCBvbGRfdHVwbGUsIG5ld190dXBsZSwgbW9kZSwKPsKgIG11bHRpa2V5X2lkeCwgJnJl cGxhY2VkX2RhdGEsCj5AQCAtODMzLDcgKzk2Niw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFj ZV9tdWx0aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLAo+ wqAgfQo+wqAgfQo+wqAgaWYgKG9sZF90dXBsZSAhPSBOVUxMKSB7Cj4tIHN0cnVjdCBtZW10eF90 cmVlX2RhdGEgZGF0YTsKPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YTwxPiBkYXRhOwo+wqAgZGF0 YS50dXBsZSA9IG9sZF90dXBsZTsKPsKgIHVpbnQzMl90IG11bHRpa2V5X2NvdW50ID0KPsKgIHR1 cGxlX211bHRpa2V5X2NvdW50KG9sZF90dXBsZSwgY21wX2RlZik7Cj5AQCAtODY1LDcgKzk5OCw3 IEBAIHN0cnVjdCBmdW5jX2tleV91bmRvIHsKPsKgIC8qKiBBIGxpbmsgdG8gb3JnYW5pemUgZW50 cmllcyBpbiBsaXN0LiAqLwo+wqAgc3RydWN0IHJsaXN0IGxpbms7Cj7CoCAvKiogQW4gaW5zZXJ0 ZWQgcmVjb3JkIGNvcHkuICovCj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEga2V5Owo+KyBzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhPDE+IGtleTsKPsKgfTsKPsKgCj7CoC8qKiBBbGxvY2F0ZSBhIG5l dyBmdW5jX2tleV91bmRvIG9uIGdpdmVuIHJlZ2lvbi4gKi8KPkBAIC04ODgsNyArMTAyMSw3IEBA IGZ1bmNfa2V5X3VuZG9fbmV3KHN0cnVjdCByZWdpb24gKnJlZ2lvbikKPsKgwqAqIHJldHVybiBh IGdpdmVuIGluZGV4IG9iamVjdCBpbiBpdCdzIG9yaWdpbmFsIHN0YXRlLgo+wqDCoCovCj7CoHN0 YXRpYyB2b2lkCj4tbWVtdHhfdHJlZV9mdW5jX2luZGV4X3JlcGxhY2Vfcm9sbGJhY2soc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LAo+K21lbXR4X3RyZWVfZnVuY19pbmRleF9yZXBsYWNl X3JvbGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2luZGV4PDE+ICppbmRleCwKPsKgIHN0cnVjdCBy bGlzdCAqb2xkX2tleXMsCj7CoCBzdHJ1Y3Qgcmxpc3QgKm5ld19rZXlzKQo+wqB7Cj5AQCAtOTE5 LDcgKzEwNTIsNyBAQCBtZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVwbGFjZShzdHJ1Y3QgaW5kZXgg KmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLAo+wqAgc3RydWN0IHR1cGxlICpuZXdfdHVw bGUsIGVudW0gZHVwX3JlcGxhY2VfbW9kZSBtb2RlLAo+wqAgc3RydWN0IHR1cGxlICoqcmVzdWx0 KQo+wqB7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCAqKWJhc2U7Cj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PDE+ICppbmRleCA9 IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwxPiAqKWJhc2U7Cj7CoCBzdHJ1Y3QgaW5kZXhfZGVm ICppbmRleF9kZWYgPSBpbmRleC0+YmFzZS5kZWY7Cj7CoCBhc3NlcnQoaW5kZXhfZGVmLT5rZXlf ZGVmLT5mb3JfZnVuY19pbmRleCk7Cj7CoAo+QEAgLTk1Miw3ICsxMDg1LDcgQEAgbWVtdHhfdHJl ZV9mdW5jX2luZGV4X3JlcGxhY2Uoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9s ZF90dXBsZSwKPsKgIHVuZG8tPmtleS5oaW50ID0gKGhpbnRfdClrZXk7Cj7CoCBybGlzdF9hZGQo Jm5ld19rZXlzLCAmdW5kby0+bGluayk7Cj7CoCBib29sIGlzX211bHRpa2V5X2NvbmZsaWN0Owo+ LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIG9sZF9kYXRhOwo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhPDE+IG9sZF9kYXRhOwo+wqAgb2xkX2RhdGEudHVwbGUgPSBOVUxMOwo+wqAgZXJyID0gbWVt dHhfdHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5X29uZShpbmRleCwKPsKgIG9sZF90dXBsZSwg bmV3X3R1cGxlLAo+QEAgLTEwMTUsNyArMTE0OCw3IEBAIG1lbXR4X3RyZWVfZnVuY19pbmRleF9y ZXBsYWNlKHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxlICpvbGRfdHVwbGUsCj7CoCBp ZiAoa2V5X2xpc3RfaXRlcmF0b3JfY3JlYXRlKCZpdCwgb2xkX3R1cGxlLCBpbmRleF9kZWYsIGZh bHNlLAo+wqAgZnVuY19pbmRleF9rZXlfZHVtbXlfYWxsb2MpICE9IDApCj7CoCBnb3RvIGVuZDsK Pi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBkYXRhLCBkZWxldGVkX2RhdGE7Cj4rIHN0cnVjdCBt ZW10eF90cmVlX2RhdGE8MT4gZGF0YSwgZGVsZXRlZF9kYXRhOwo+wqAgZGF0YS50dXBsZSA9IG9s ZF90dXBsZTsKPsKgIGNvbnN0IGNoYXIgKmtleTsKPsKgIHdoaWxlIChrZXlfbGlzdF9pdGVyYXRv cl9uZXh0KCZpdCwgJmtleSkgPT0gMCAmJiBrZXkgIT0gTlVMTCkgewo+QEAgLTEwNDAsMTEgKzEx NzMsMTMgQEAgZW5kOgo+wqAgcmV0dXJuIHJjOwo+wqB9Cj7CoAo+K3RlbXBsYXRlIDxpbnQgVVNF X0hJTlQ+Cj7CoHN0YXRpYyBzdHJ1Y3QgaXRlcmF0b3IgKgo+wqBtZW10eF90cmVlX2luZGV4X2Ny ZWF0ZV9pdGVyYXRvcihzdHJ1Y3QgaW5kZXggKmJhc2UsIGVudW0gaXRlcmF0b3JfdHlwZSB0eXBl LAo+wqAgY29uc3QgY2hhciAqa2V5LCB1aW50MzJfdCBwYXJ0X2NvdW50KQo+wqB7Cj4tIHN0cnVj dCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJh c2U7Cj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXggPQo+KyAoc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPsKgIHN0cnVjdCBtZW10eF9l bmdpbmUgKm1lbXR4ID0gKHN0cnVjdCBtZW10eF9lbmdpbmUgKiliYXNlLT5lbmdpbmU7Cj7CoCBz dHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmaW5kZXgtPnRyZWUp Owo+wqAKPkBAIC0xMDY0LDQyICsxMTk5LDQ3IEBAIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0 ZXJhdG9yKHN0cnVjdCBpbmRleCAqYmFzZSwgZW51bSBpdGVyYXRvcl90eXBlIHR5cGUsCj7CoCBr ZXkgPSBOVUxMOwo+wqAgfQo+wqAKPi0gc3RydWN0IHRyZWVfaXRlcmF0b3IgKml0ID0gKHN0cnVj dCB0cmVlX2l0ZXJhdG9yICopCj4rIHN0cnVjdCB0cmVlX2l0ZXJhdG9yPFVTRV9ISU5UPiAqaXQg PSAoc3RydWN0IHRyZWVfaXRlcmF0b3I8VVNFX0hJTlQ+ICopCj7CoCBtZW1wb29sX2FsbG9jKCZt ZW10eC0+aXRlcmF0b3JfcG9vbCk7Cj7CoCBpZiAoaXQgPT0gTlVMTCkgewo+LSBkaWFnX3NldChP dXRPZk1lbW9yeSwgc2l6ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yKSwKPisgZGlhZ19zZXQoT3V0 T2ZNZW1vcnksIHNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvcjxVU0VfSElOVD4pLAo+wqAgIm1l bXR4X3RyZWVfaW5kZXgiLCAiaXRlcmF0b3IiKTsKPsKgIHJldHVybiBOVUxMOwo+wqAgfQo+wqAg aXRlcmF0b3JfY3JlYXRlKCZpdC0+YmFzZSwgYmFzZSk7Cj7CoCBpdC0+cG9vbCA9ICZtZW10eC0+ aXRlcmF0b3JfcG9vbDsKPi0gaXQtPmJhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3Jfc3RhcnQ7Cj4t IGl0LT5iYXNlLmZyZWUgPSB0cmVlX2l0ZXJhdG9yX2ZyZWU7Cj4rIGl0LT5iYXNlLm5leHQgPSB0 cmVlX2l0ZXJhdG9yX3N0YXJ0PFVTRV9ISU5UPjsKPisgaXQtPmJhc2UuZnJlZSA9IHRyZWVfaXRl cmF0b3JfZnJlZTxVU0VfSElOVD47Cj7CoCBpdC0+dHlwZSA9IHR5cGU7Cj7CoCBpdC0+a2V5X2Rh dGEua2V5ID0ga2V5Owo+wqAgaXQtPmtleV9kYXRhLnBhcnRfY291bnQgPSBwYXJ0X2NvdW50Owo+ LSBpdC0+a2V5X2RhdGEuaGludCA9IGtleV9oaW50KGtleSwgcGFydF9jb3VudCwgY21wX2RlZik7 Cj4tIGl0LT50cmVlX2l0ZXJhdG9yID0gbWVtdHhfdHJlZV9pbnZhbGlkX2l0ZXJhdG9yKCk7Cj4r IGlmIChVU0VfSElOVCkKPisgaXQtPmtleV9kYXRhLnNldF9oaW50KGtleV9oaW50KGtleSwgcGFy dF9jb3VudCwgY21wX2RlZikpOwo+KyBpbnZhbGlkYXRlX3RyZWVfaXRlcmF0b3IoJml0LT50cmVl X2l0ZXJhdG9yKTsKPsKgIGl0LT5jdXJyZW50LnR1cGxlID0gTlVMTDsKPsKgIHJldHVybiAoc3Ry dWN0IGl0ZXJhdG9yICopaXQ7Cj7CoH0KPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKg c3RhdGljIHZvaWQKPsKgbWVtdHhfdHJlZV9pbmRleF9iZWdpbl9idWlsZChzdHJ1Y3QgaW5kZXgg KmJhc2UpCj7CoHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBt ZW10eF90cmVlX2luZGV4ICopYmFzZTsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJ TlQ+ICppbmRleCA9Cj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKiliYXNl Owo+wqAgYXNzZXJ0KG1lbXR4X3RyZWVfc2l6ZSgmaW5kZXgtPnRyZWUpID09IDApOwo+wqAgKHZv aWQpaW5kZXg7Cj7CoH0KPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKgc3RhdGljIGlu dAo+wqBtZW10eF90cmVlX2luZGV4X3Jlc2VydmUoc3RydWN0IGluZGV4ICpiYXNlLCB1aW50MzJf dCBzaXplX2hpbnQpCj7CoHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0 cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8 VVNFX0hJTlQ+ICppbmRleCA9Cj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4g KiliYXNlOwo+wqAgaWYgKHNpemVfaGludCA8IGluZGV4LT5idWlsZF9hcnJheV9hbGxvY19zaXpl KQo+wqAgcmV0dXJuIDA7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnRtcCA9Cj4tIChzdHJ1 Y3QgbWVtdHhfdHJlZV9kYXRhICopCj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ ICp0bXAgPQo+KyAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YTxVU0VfSElOVD4gKikKPsKgIHJlYWxs b2MoaW5kZXgtPmJ1aWxkX2FycmF5LCBzaXplX2hpbnQgKiBzaXplb2YoKnRtcCkpOwo+wqAgaWYg KHRtcCA9PSBOVUxMKSB7Cj7CoCBkaWFnX3NldChPdXRPZk1lbW9yeSwgc2l6ZV9oaW50ICogc2l6 ZW9mKCp0bXApLAo+QEAgLTExMTEsMTQgKzEyNTEsMTUgQEAgbWVtdHhfdHJlZV9pbmRleF9yZXNl cnZlKHN0cnVjdCBpbmRleCAqYmFzZSwgdWludDMyX3Qgc2l6ZV9oaW50KQo+wqAgcmV0dXJuIDA7 Cj7CoH0KPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKgLyoqIEluaXRpYWxpemUgdGhl IG5leHQgZWxlbWVudCBvZiB0aGUgaW5kZXggYnVpbGRfYXJyYXkuICovCj7CoHN0YXRpYyBpbnQK Pi1tZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVuZChzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqaW5kZXgsCj4rbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9hcHBlbmQoc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleCwKPsKgIHN0cnVjdCB0dXBsZSAqdHVw bGUsIGhpbnRfdCBoaW50KQo+wqB7Cj7CoCBpZiAoaW5kZXgtPmJ1aWxkX2FycmF5ID09IE5VTEwp IHsKPsKgIGluZGV4LT5idWlsZF9hcnJheSA9Cj4tIChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICop bWFsbG9jKE1FTVRYX0VYVEVOVF9TSVpFKTsKPisgKHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNF X0hJTlQ+ICopbWFsbG9jKE1FTVRYX0VYVEVOVF9TSVpFKTsKPsKgIGlmIChpbmRleC0+YnVpbGRf YXJyYXkgPT0gTlVMTCkgewo+wqAgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIE1FTVRYX0VYVEVOVF9T SVpFLAo+wqAgIm1lbXR4X3RyZWVfaW5kZXgiLCAiYnVpbGRfbmV4dCIpOwo+QEAgLTExMzEsOCAr MTI3Miw4IEBAIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfYXBwZW5kKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4ICppbmRleCwKPsKgIGlmIChpbmRleC0+YnVpbGRfYXJyYXlfc2l6ZSA9PSBp bmRleC0+YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSkgewo+wqAgaW5kZXgtPmJ1aWxkX2FycmF5X2Fs bG9jX3NpemUgPSBpbmRleC0+YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSArCj7CoCBESVZfUk9VTkRf VVAoaW5kZXgtPmJ1aWxkX2FycmF5X2FsbG9jX3NpemUsIDIpOwo+LSBzdHJ1Y3QgbWVtdHhfdHJl ZV9kYXRhICp0bXAgPQo+LSAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqKXJlYWxsb2MoaW5kZXgt PmJ1aWxkX2FycmF5LAo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9ISU5UPiAqdG1wID0K PisgKHN0cnVjdCBtZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICopcmVhbGxvYyhpbmRleC0+YnVp bGRfYXJyYXksCj7CoCBpbmRleC0+YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSAqIHNpemVvZigqdG1w KSk7Cj7CoCBpZiAodG1wID09IE5VTEwpIHsKPsKgIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBpbmRl eC0+YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSAqCj5AQCAtMTE0MSwxNyArMTI4MiwyMCBAQCBtZW10 eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVuZChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq aW5kZXgsCj7CoCB9Cj7CoCBpbmRleC0+YnVpbGRfYXJyYXkgPSB0bXA7Cj7CoCB9Cj4tIHN0cnVj dCBtZW10eF90cmVlX2RhdGEgKmVsZW0gPQo+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPFVTRV9I SU5UPiAqZWxlbSA9Cj7CoCAmaW5kZXgtPmJ1aWxkX2FycmF5W2luZGV4LT5idWlsZF9hcnJheV9z aXplKytdOwo+wqAgZWxlbS0+dHVwbGUgPSB0dXBsZTsKPi0gZWxlbS0+aGludCA9IGhpbnQ7Cj4r IGlmIChVU0VfSElOVCkKPisgZWxlbS0+c2V0X2hpbnQoaGludCk7Cj7CoCByZXR1cm4gMDsKPsKg fQo+wqAKPit0ZW1wbGF0ZSA8aW50IFVTRV9ISU5UPgo+wqBzdGF0aWMgaW50Cj7CoG1lbXR4X3Ry ZWVfaW5kZXhfYnVpbGRfbmV4dChzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqdHVw bGUpCj7CoHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4ICopYmFzZTsKPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ ICppbmRleCA9Cj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDxVU0VfSElOVD4gKiliYXNlOwo+ wqAgc3RydWN0IGtleV9kZWYgKmNtcF9kZWYgPSBtZW10eF90cmVlX2NtcF9kZWYoJmluZGV4LT50 cmVlKTsKPsKgIHJldHVybiBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVuZChpbmRl eCwgdHVwbGUsCj7CoCB0dXBsZV9oaW50KHR1cGxlLCBjbXBfZGVmKSk7Cj5AQCAtMTE2MCw3ICsx MzA0LDcgQEAgbWVtdHhfdHJlZV9pbmRleF9idWlsZF9uZXh0KHN0cnVjdCBpbmRleCAqYmFzZSwg c3RydWN0IHR1cGxlICp0dXBsZSkKPsKgc3RhdGljIGludAo+wqBtZW10eF90cmVlX2luZGV4X2J1 aWxkX25leHRfbXVsdGlrZXkoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKnR1cGxl KQo+wqB7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCAqKWJhc2U7Cj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PDE+ICppbmRleCA9 IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwxPiAqKWJhc2U7Cj7CoCBzdHJ1Y3Qga2V5X2RlZiAq Y21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmaW5kZXgtPnRyZWUpOwo+wqAgdWludDMyX3Qg bXVsdGlrZXlfY291bnQgPSB0dXBsZV9tdWx0aWtleV9jb3VudCh0dXBsZSwgY21wX2RlZik7Cj7C oCBmb3IgKHVpbnQzMl90IG11bHRpa2V5X2lkeCA9IDA7IG11bHRpa2V5X2lkeCA8IG11bHRpa2V5 X2NvdW50Owo+QEAgLTExNzUsNyArMTMxOSw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4 dF9tdWx0aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUpCj7CoHN0 YXRpYyBpbnQKPsKgbWVtdHhfdHJlZV9mdW5jX2luZGV4X2J1aWxkX25leHQoc3RydWN0IGluZGV4 ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKnR1cGxlKQo+wqB7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7Cj4rIHN0cnVjdCBt ZW10eF90cmVlX2luZGV4PDE+ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleDwxPiAq KWJhc2U7Cj7CoCBzdHJ1Y3QgaW5kZXhfZGVmICppbmRleF9kZWYgPSBpbmRleC0+YmFzZS5kZWY7 Cj7CoCBhc3NlcnQoaW5kZXhfZGVmLT5rZXlfZGVmLT5mb3JfZnVuY19pbmRleCk7Cj7CoAo+QEAg LTEyMTEsOCArMTM1NSw5IEBAIGVycm9yOgo+wqDCoCogb2YgZXF1YWwgdHVwbGVzIChpbiB0ZXJt cyBvZiBpbmRleCdzIGNtcF9kZWYgYW5kIGhhdmUgc2FtZQo+wqDCoCogdHVwbGUgcG9pbnRlciku IFRoZSBidWlsZF9hcnJheSBpcyBleHBlY3RlZCB0byBiZSBzb3J0ZWQuCj7CoMKgKi8KPit0ZW1w bGF0ZSA8aW50IFVTRV9ISU5UPgo+wqBzdGF0aWMgdm9pZAo+LW1lbXR4X3RyZWVfaW5kZXhfYnVp bGRfYXJyYXlfZGVkdXBsaWNhdGUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4LAo+K21l bXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUoc3RydWN0IG1lbXR4X3RyZWVf aW5kZXg8VVNFX0hJTlQ+ICppbmRleCwKPsKgIHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgdHVwbGUg KnR1cGxlLCBjb25zdCBjaGFyICpoaW50KSkKPsKgewo+wqAgaWYgKGluZGV4LT5idWlsZF9hcnJh eV9zaXplID09IDApCj5AQCAtMTI0NiwxMyArMTM5MSwxNiBAQCBtZW10eF90cmVlX2luZGV4X2J1 aWxkX2FycmF5X2RlZHVwbGljYXRlKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCwKPsKg IGluZGV4LT5idWlsZF9hcnJheV9zaXplID0gd19pZHggKyAxOwo+wqB9Cj7CoAo+K3RlbXBsYXRl IDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRpYyB2b2lkCj7CoG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1 aWxkKHN0cnVjdCBpbmRleCAqYmFzZSkKPsKgewo+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAq aW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOwo+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleDxVU0VfSElOVD4gKmluZGV4ID0KPisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 PFVTRV9ISU5UPiAqKWJhc2U7Cj7CoCBzdHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3Ry ZWVfY21wX2RlZigmaW5kZXgtPnRyZWUpOwo+wqAgcXNvcnRfYXJnKGluZGV4LT5idWlsZF9hcnJh eSwgaW5kZXgtPmJ1aWxkX2FycmF5X3NpemUsCj4tIHNpemVvZihpbmRleC0+YnVpbGRfYXJyYXlb MF0pLCBtZW10eF90cmVlX3Fjb21wYXJlLCBjbXBfZGVmKTsKPisgc2l6ZW9mKGluZGV4LT5idWls ZF9hcnJheVswXSksCj4rIG1lbXR4X3RyZWVfcWNvbXBhcmU8VVNFX0hJTlQ+LCBjbXBfZGVmKTsK PsKgIGlmIChjbXBfZGVmLT5pc19tdWx0aWtleSkgewo+wqAgLyoKPsKgICogTXVsdGlrZXkgaW5k ZXggbWF5IGhhdmUgZXF1YWwoaW4gdGVybXMgb2YKPkBAIC0xMjYxLDkgKzE0MDksOSBAQCBtZW10 eF90cmVlX2luZGV4X2VuZF9idWlsZChzdHJ1Y3QgaW5kZXggKmJhc2UpCj7CoCAqIHRoZSBmb2xs b3dpbmcgbWVtdHhfdHJlZV9idWlsZCBhc3N1bWVzIHRoYXQKPsKgICogYWxsIGtleXMgYXJlIHVu aXF1ZS4KPsKgICovCj4tIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUo aW5kZXgsIE5VTEwpOwo+KyBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2RlZHVwbGljYXRl PFVTRV9ISU5UPihpbmRleCwgTlVMTCk7Cj7CoCB9IGVsc2UgaWYgKGNtcF9kZWYtPmZvcl9mdW5j X2luZGV4KSB7Cj4tIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUoaW5k ZXgsCj4rIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGU8VVNFX0hJTlQ+ KGluZGV4LAo+wqAgdHVwbGVfY2h1bmtfZGVsZXRlKTsKPsKgIH0KPsKgIG1lbXR4X3RyZWVfYnVp bGQoJmluZGV4LT50cmVlLCBpbmRleC0+YnVpbGRfYXJyYXksCj5AQCAtMTI3NSwxOSArMTQyMywy MSBAQCBtZW10eF90cmVlX2luZGV4X2VuZF9idWlsZChzdHJ1Y3QgaW5kZXggKmJhc2UpCj7CoCBp bmRleC0+YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSA9IDA7Cj7CoH0KPsKgCj4rdGVtcGxhdGUgPGlu dCBVU0VfSElOVD4KPsKgc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3Igewo+wqAgc3RydWN0 IHNuYXBzaG90X2l0ZXJhdG9yIGJhc2U7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRl eDsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgdHJlZV9pdGVyYXRvcjsKPisgc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICppbmRleDsKPisgbWVtdHhfdHJlZV9pdGVyYXRv cl90PFVTRV9ISU5UPiB0cmVlX2l0ZXJhdG9yOwo+wqAgc3RydWN0IG1lbXR4X3R4X3NuYXBzaG90 X2NsZWFuZXIgY2xlYW5lcjsKPsKgfTsKPsKgCj4rdGVtcGxhdGUgPGludCBVU0VfSElOVD4KPsKg c3RhdGljIHZvaWQKPsKgdHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9mcmVlKHN0cnVjdCBzbmFwc2hv dF9pdGVyYXRvciAqaXRlcmF0b3IpCj7CoHsKPi0gYXNzZXJ0KGl0ZXJhdG9yLT5mcmVlID09IHRy ZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZSk7Cj4tIHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJh dG9yICppdCA9Cj4tIChzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciAqKWl0ZXJhdG9yOwo+ KyBhc3NlcnQoaXRlcmF0b3ItPmZyZWUgPT0gJnRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZTxV U0VfSElOVD4pOwo+KyBzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvcjxVU0VfSElOVD4gKml0 ID0KPisgKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yPFVTRV9ISU5UPiAqKWl0ZXJhdG9y Owo+wqAgbWVtdHhfbGVhdmVfZGVsYXllZF9mcmVlX21vZGUoKHN0cnVjdCBtZW10eF9lbmdpbmUg KikKPsKgIGl0LT5pbmRleC0+YmFzZS5lbmdpbmUpOwo+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9k ZXN0cm95KCZpdC0+aW5kZXgtPnRyZWUsICZpdC0+dHJlZV9pdGVyYXRvcik7Cj5AQCAtMTI5Niwx NyArMTQ0NiwxOCBAQCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX2ZyZWUoc3RydWN0IHNuYXBzaG90 X2l0ZXJhdG9yICppdGVyYXRvcikKPsKgIGZyZWUoaXRlcmF0b3IpOwo+wqB9Cj7CoAo+K3RlbXBs YXRlIDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRpYyBpbnQKPsKgdHJlZV9zbmFwc2hvdF9pdGVyYXRv cl9uZXh0KHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqaXRlcmF0b3IsCj7CoCBjb25zdCBjaGFy ICoqZGF0YSwgdWludDMyX3QgKnNpemUpCj7CoHsKPi0gYXNzZXJ0KGl0ZXJhdG9yLT5mcmVlID09 IHRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZSk7Cj4tIHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0 ZXJhdG9yICppdCA9Cj4tIChzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciAqKWl0ZXJhdG9y Owo+LSBzdHJ1Y3QgbWVtdHhfdHJlZSAqdHJlZSA9ICZpdC0+aW5kZXgtPnRyZWU7Cj4rIGFzc2Vy dChpdGVyYXRvci0+ZnJlZSA9PSAmdHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9mcmVlPFVTRV9ISU5U Pik7Cj4rIHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yPFVTRV9ISU5UPiAqaXQgPQo+KyAo c3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3I8VVNFX0hJTlQ+ICopaXRlcmF0b3I7Cj4rIG1l bXR4X3RyZWVfdDxVU0VfSElOVD4gKnRyZWUgPSAmaXQtPmluZGV4LT50cmVlOwo+wqAKPsKgIHdo aWxlICh0cnVlKSB7Cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9Cj4rIHN0cnVjdCBt ZW10eF90cmVlX2RhdGE8VVNFX0hJTlQ+ICpyZXMgPQo+wqAgbWVtdHhfdHJlZV9pdGVyYXRvcl9n ZXRfZWxlbSh0cmVlLCAmaXQtPnRyZWVfaXRlcmF0b3IpOwo+wqAKPsKgIGlmIChyZXMgPT0gTlVM TCkgewo+QEAgLTEzMzMsMTQgKzE0ODQsMTggQEAgdHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9uZXh0 KHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqaXRlcmF0b3IsCj7CoMKgKiBpbmRleCBtb2RpZmlj YXRpb25zIHdpbGwgbm90IGFmZmVjdCB0aGUgaXRlcmF0aW9uIHJlc3VsdHMuCj7CoMKgKiBNdXN0 IGJlIGRlc3Ryb3llZCBieSBpdGVyYXRvci0+ZnJlZSBhZnRlciB1c2FnZS4KPsKgwqAqLwo+K3Rl bXBsYXRlIDxpbnQgVVNFX0hJTlQ+Cj7CoHN0YXRpYyBzdHJ1Y3Qgc25hcHNob3RfaXRlcmF0b3Ig Kgo+wqBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcihzdHJ1Y3QgaW5k ZXggKmJhc2UpCj7CoHsKPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVj dCBtZW10eF90cmVlX2luZGV4ICopYmFzZTsKPi0gc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0 b3IgKml0ID0KPi0gKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yICopIGNhbGxvYygxLCBz aXplb2YoKml0KSk7Cj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAqaW5kZXgg PQo+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopYmFzZTsKPisgc3RydWN0 IHRyZWVfc25hcHNob3RfaXRlcmF0b3I8VVNFX0hJTlQ+ICppdCA9Cj4rIChzdHJ1Y3QgdHJlZV9z bmFwc2hvdF9pdGVyYXRvcjxVU0VfSElOVD4gKikKPisgY2FsbG9jKDEsIHNpemVvZigqaXQpKTsK PsKgIGlmIChpdCA9PSBOVUxMKSB7Cj4tIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplb2Yoc3Ry dWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3IpLAo+KyBkaWFnX3NldChPdXRPZk1lbW9yeSwKPisg c2l6ZW9mKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yPFVTRV9ISU5UPiksCj7CoCAibWVt dHhfdHJlZV9pbmRleCIsICJjcmVhdGVfc25hcHNob3RfaXRlcmF0b3IiKTsKPsKgIHJldHVybiBO VUxMOwo+wqAgfQo+QEAgLTEzNTIsOCArMTUwNyw4IEBAIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRl X3NuYXBzaG90X2l0ZXJhdG9yKHN0cnVjdCBpbmRleCAqYmFzZSkKPsKgIHJldHVybiBOVUxMOwo+ wqAgfQo+wqAKPi0gaXQtPmJhc2UuZnJlZSA9IHRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZTsK Pi0gaXQtPmJhc2UubmV4dCA9IHRyZWVfc25hcHNob3RfaXRlcmF0b3JfbmV4dDsKPisgaXQtPmJh c2UuZnJlZSA9IHRyZWVfc25hcHNob3RfaXRlcmF0b3JfZnJlZTxVU0VfSElOVD47Cj4rIGl0LT5i YXNlLm5leHQgPSB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX25leHQ8VVNFX0hJTlQ+Owo+wqAgaXQt PmluZGV4ID0gaW5kZXg7Cj7CoCBpbmRleF9yZWYoYmFzZSk7Cj7CoCBpdC0+dHJlZV9pdGVyYXRv ciA9IG1lbXR4X3RyZWVfaXRlcmF0b3JfZmlyc3QoJmluZGV4LT50cmVlKTsKPkBAIC0xMzYyLDk0 ICsxNTE3LDEyNCBAQCBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcihz dHJ1Y3QgaW5kZXggKmJhc2UpCj7CoCByZXR1cm4gKHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAq KSBpdDsKPsKgfQo+wqAKPi1zdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJl ZV9pbmRleF92dGFiID0gewo+LSAvKiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVz dHJveSwKPitzdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9ub19oaW50 X2luZGV4X3Z0YWIgPSB7Cj4rIC8qIC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0 cm95PDA+LAo+wqAgLyogLmNvbW1pdF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9j cmVhdGUsCj7CoCAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9hYm9ydF9jcmVh dGUsCj7CoCAvKiAuY29tbWl0X21vZGlmeSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X21vZGlm eSwKPsKgIC8qIC5jb21taXRfZHJvcCA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ryb3AsCj4t IC8qIC51cGRhdGVfZGVmID0gKi8gbWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVmLAo+KyAvKiAu dXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhfdXBkYXRlX2RlZjwwPiwKPsKgIC8qIC5k ZXBlbmRzX29uX3BrID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXBlbmRzX29uX3BrLAo+wqAgLyog LmRlZl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZCA9ICovCj7CoCBtZW10eF9pbmRleF9kZWZfY2hh bmdlX3JlcXVpcmVzX3JlYnVpbGQsCj4tIC8qIC5zaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9z aXplLAo+LSAvKiAuYnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X2JzaXplLAo+KyAvKiAuc2l6 ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZTwwPiwKPisgLyogLmJzaXplID0gKi8gbWVtdHhf dHJlZV9pbmRleF9ic2l6ZTwwPiwKPsKgIC8qIC5taW4gPSAqLyBnZW5lcmljX2luZGV4X21pbiwK PsKgIC8qIC5tYXggPSAqLyBnZW5lcmljX2luZGV4X21heCwKPi0gLyogLnJhbmRvbSA9ICovIG1l bXR4X3RyZWVfaW5kZXhfcmFuZG9tLAo+LSAvKiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4 X2NvdW50LAo+LSAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQsCj4tIC8qIC5yZXBs YWNlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlLAo+LSAvKiAuY3JlYXRlX2l0ZXJhdG9y ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3IsCj4rIC8qIC5yYW5kb20gPSAq LyBtZW10eF90cmVlX2luZGV4X3JhbmRvbTwwPiwKPisgLyogLmNvdW50ID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9jb3VudDwwPiwKPisgLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0PDA+ LAo+KyAvKiAucmVwbGFjZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZTwwPiwKPisgLyog LmNyZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yPDA+ LAo+wqAgLyogLmNyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciA9ICovCj4tIG1lbXR4X3RyZWVfaW5k ZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yLAo+KyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9z bmFwc2hvdF9pdGVyYXRvcjwwPiwKPsKgIC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0 LAo+wqAgLyogLmNvbXBhY3QgPSAqLyBnZW5lcmljX2luZGV4X2NvbXBhY3QsCj7CoCAvKiAucmVz ZXRfc3RhdCA9ICovIGdlbmVyaWNfaW5kZXhfcmVzZXRfc3RhdCwKPi0gLyogLmJlZ2luX2J1aWxk ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9iZWdpbl9idWlsZCwKPi0gLyogLnJlc2VydmUgPSAqLyBt ZW10eF90cmVlX2luZGV4X3Jlc2VydmUsCj4tIC8qIC5idWlsZF9uZXh0ID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9idWlsZF9uZXh0LAo+LSAvKiAuZW5kX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9lbmRfYnVpbGQsCj4rIC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVn aW5fYnVpbGQ8MD4sCj4rIC8qIC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZl PDA+LAo+KyAvKiAuYnVpbGRfbmV4dCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4dDww PiwKPisgLyogLmVuZF9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkPDA+LAo+ K307Cj4rCj4rc3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfdXNlX2hp bnRfaW5kZXhfdnRhYiA9IHsKPisgLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rl c3Ryb3k8MT4sCj4rIC8qIC5jb21taXRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRf Y3JlYXRlLAo+KyAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9hYm9ydF9jcmVh dGUsCj4rIC8qIC5jb21taXRfbW9kaWZ5ID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfbW9kaWZ5 LAo+KyAvKiAuY29tbWl0X2Ryb3AgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9kcm9wLAo+KyAv KiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhfdXBkYXRlX2RlZjwxPiwKPisgLyog LmRlcGVuZHNfb25fcGsgPSAqLyBtZW10eF90cmVlX2luZGV4X2RlcGVuZHNfb25fcGssCj4rIC8q IC5kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVpbGQgPSAqLwo+KyBtZW10eF9pbmRleF9kZWZfY2hh bmdlX3JlcXVpcmVzX3JlYnVpbGQsCj4rIC8qIC5zaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9z aXplPDE+LAo+KyAvKiAuYnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X2JzaXplPDE+LAo+KyAv KiAubWluID0gKi8gZ2VuZXJpY19pbmRleF9taW4sCj4rIC8qIC5tYXggPSAqLyBnZW5lcmljX2lu ZGV4X21heCwKPisgLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmFuZG9tPDE+LAo+ KyAvKiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50PDE+LAo+KyAvKiAuZ2V0ID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9nZXQ8MT4sCj4rIC8qIC5yZXBsYWNlID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9yZXBsYWNlPDE+LAo+KyAvKiAuY3JlYXRlX2l0ZXJhdG9yID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9jcmVhdGVfaXRlcmF0b3I8MT4sCj4rIC8qIC5jcmVhdGVfc25hcHNob3RfaXRlcmF0 b3IgPSAqLwo+KyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcjwxPiwK PisgLyogLnN0YXQgPSAqLyBnZW5lcmljX2luZGV4X3N0YXQsCj4rIC8qIC5jb21wYWN0ID0gKi8g Z2VuZXJpY19pbmRleF9jb21wYWN0LAo+KyAvKiAucmVzZXRfc3RhdCA9ICovIGdlbmVyaWNfaW5k ZXhfcmVzZXRfc3RhdCwKPisgLyogLmJlZ2luX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRleF9i ZWdpbl9idWlsZDwxPiwKPisgLyogLnJlc2VydmUgPSAqLyBtZW10eF90cmVlX2luZGV4X3Jlc2Vy dmU8MT4sCj4rIC8qIC5idWlsZF9uZXh0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9idWlsZF9uZXh0 PDE+LAo+KyAvKiAuZW5kX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRleF9lbmRfYnVpbGQ8MT4s Cj7CoH07Cj7CoAo+wqBzdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9p bmRleF9tdWx0aWtleV92dGFiID0gewo+LSAvKiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfZGVzdHJveSwKPisgLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3k8 MT4sCj7CoCAvKiAuY29tbWl0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2NyZWF0 ZSwKPsKgIC8qIC5hYm9ydF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2Fib3J0X2NyZWF0ZSwK PsKgIC8qIC5jb21taXRfbW9kaWZ5ID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfbW9kaWZ5LAo+ wqAgLyogLmNvbW1pdF9kcm9wID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfZHJvcCwKPi0gLyog LnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYsCj4rIC8qIC51cGRh dGVfZGVmID0gKi8gbWVtdHhfdHJlZV9pbmRleF91cGRhdGVfZGVmPDE+LAo+wqAgLyogLmRlcGVu ZHNfb25fcGsgPSAqLyBtZW10eF90cmVlX2luZGV4X2RlcGVuZHNfb25fcGssCj7CoCAvKiAuZGVm X2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxkID0gKi8KPsKgIG1lbXR4X2luZGV4X2RlZl9jaGFuZ2Vf cmVxdWlyZXNfcmVidWlsZCwKPi0gLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X3NpemUs Cj4tIC8qIC5ic2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnNpemUsCj4rIC8qIC5zaXplID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9zaXplPDE+LAo+KyAvKiAuYnNpemUgPSAqLyBtZW10eF90cmVl X2luZGV4X2JzaXplPDE+LAo+wqAgLyogLm1pbiA9ICovIGdlbmVyaWNfaW5kZXhfbWluLAo+wqAg LyogLm1heCA9ICovIGdlbmVyaWNfaW5kZXhfbWF4LAo+LSAvKiAucmFuZG9tID0gKi8gbWVtdHhf dHJlZV9pbmRleF9yYW5kb20sCj4tIC8qIC5jb3VudCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY291 bnQsCj4tIC8qIC5nZXQgPSAqLyBtZW10eF90cmVlX2luZGV4X2dldCwKPisgLyogLnJhbmRvbSA9 ICovIG1lbXR4X3RyZWVfaW5kZXhfcmFuZG9tPDE+LAo+KyAvKiAuY291bnQgPSAqLyBtZW10eF90 cmVlX2luZGV4X2NvdW50PDE+LAo+KyAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQ8 MT4sCj7CoCAvKiAucmVwbGFjZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtl eSwKPi0gLyogLmNyZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0 ZXJhdG9yLAo+KyAvKiAuY3JlYXRlX2l0ZXJhdG9yID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jcmVh dGVfaXRlcmF0b3I8MT4sCj7CoCAvKiAuY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yID0gKi8KPi0g bWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfc25hcHNob3RfaXRlcmF0b3IsCj4rIG1lbXR4X3RyZWVf aW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yPDE+LAo+wqAgLyogLnN0YXQgPSAqLyBnZW5l cmljX2luZGV4X3N0YXQsCj7CoCAvKiAuY29tcGFjdCA9ICovIGdlbmVyaWNfaW5kZXhfY29tcGFj dCwKPsKgIC8qIC5yZXNldF9zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9yZXNldF9zdGF0LAo+LSAv KiAuYmVnaW5fYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2JlZ2luX2J1aWxkLAo+LSAvKiAu cmVzZXJ2ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVzZXJ2ZSwKPisgLyogLmJlZ2luX2J1aWxk ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9iZWdpbl9idWlsZDwxPiwKPisgLyogLnJlc2VydmUgPSAq LyBtZW10eF90cmVlX2luZGV4X3Jlc2VydmU8MT4sCj7CoCAvKiAuYnVpbGRfbmV4dCA9ICovIG1l bXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4dF9tdWx0aWtleSwKPi0gLyogLmVuZF9idWlsZCA9ICov IG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkLAo+KyAvKiAuZW5kX2J1aWxkID0gKi8gbWVtdHhf dHJlZV9pbmRleF9lbmRfYnVpbGQ8MT4sCj7CoH07Cj7CoAo+wqBzdGF0aWMgY29uc3Qgc3RydWN0 IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9mdW5jX2luZGV4X3Z0YWIgPSB7Cj4tIC8qIC5kZXN0cm95 ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95LAo+KyAvKiAuZGVzdHJveSA9ICovIG1lbXR4 X3RyZWVfaW5kZXhfZGVzdHJveTwxPiwKPsKgIC8qIC5jb21taXRfY3JlYXRlID0gKi8gZ2VuZXJp Y19pbmRleF9jb21taXRfY3JlYXRlLAo+wqAgLyogLmFib3J0X2NyZWF0ZSA9ICovIGdlbmVyaWNf aW5kZXhfYWJvcnRfY3JlYXRlLAo+wqAgLyogLmNvbW1pdF9tb2RpZnkgPSAqLyBnZW5lcmljX2lu ZGV4X2NvbW1pdF9tb2RpZnksCj7CoCAvKiAuY29tbWl0X2Ryb3AgPSAqLyBnZW5lcmljX2luZGV4 X2NvbW1pdF9kcm9wLAo+LSAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhfdXBk YXRlX2RlZiwKPisgLyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9k ZWY8MT4sCj7CoCAvKiAuZGVwZW5kc19vbl9wayA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVwZW5k c19vbl9waywKPsKgIC8qIC5kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVpbGQgPSAqLwo+wqAgbWVt dHhfaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxkLAo+LSAvKiAuc2l6ZSA9ICovIG1l bXR4X3RyZWVfaW5kZXhfc2l6ZSwKPi0gLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9i c2l6ZSwKPisgLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X3NpemU8MT4sCj4rIC8qIC5i c2l6ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnNpemU8MT4sCj7CoCAvKiAubWluID0gKi8gZ2Vu ZXJpY19pbmRleF9taW4sCj7CoCAvKiAubWF4ID0gKi8gZ2VuZXJpY19pbmRleF9tYXgsCj4tIC8q IC5yYW5kb20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbSwKPi0gLyogLmNvdW50ID0gKi8g bWVtdHhfdHJlZV9pbmRleF9jb3VudCwKPi0gLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhf Z2V0LAo+KyAvKiAucmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yYW5kb208MT4sCj4rIC8q IC5jb3VudCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY291bnQ8MT4sCj4rIC8qIC5nZXQgPSAqLyBt ZW10eF90cmVlX2luZGV4X2dldDwxPiwKPsKgIC8qIC5yZXBsYWNlID0gKi8gbWVtdHhfdHJlZV9m dW5jX2luZGV4X3JlcGxhY2UsCj4tIC8qIC5jcmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVl X2luZGV4X2NyZWF0ZV9pdGVyYXRvciwKPisgLyogLmNyZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4 X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yPDE+LAo+wqAgLyogLmNyZWF0ZV9zbmFwc2hvdF9p dGVyYXRvciA9ICovCj4tIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9y LAo+KyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcjwxPiwKPsKgIC8q IC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0LAo+wqAgLyogLmNvbXBhY3QgPSAqLyBnZW5l cmljX2luZGV4X2NvbXBhY3QsCj7CoCAvKiAucmVzZXRfc3RhdCA9ICovIGdlbmVyaWNfaW5kZXhf cmVzZXRfc3RhdCwKPi0gLyogLmJlZ2luX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRleF9iZWdp bl9idWlsZCwKPi0gLyogLnJlc2VydmUgPSAqLyBtZW10eF90cmVlX2luZGV4X3Jlc2VydmUsCj4r IC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQ8MT4sCj4r IC8qIC5yZXNlcnZlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlPDE+LAo+wqAgLyogLmJ1 aWxkX25leHQgPSAqLyBtZW10eF90cmVlX2Z1bmNfaW5kZXhfYnVpbGRfbmV4dCwKPi0gLyogLmVu ZF9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkLAo+KyAvKiAuZW5kX2J1aWxk ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9lbmRfYnVpbGQ8MT4sCj7CoH07Cj7CoAo+wqAvKioKPkBA IC0xNDU5LDcgKzE2NDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhf dHJlZV9mdW5jX2luZGV4X3Z0YWIgPSB7Cj7CoMKgKiBrZXkgZGVmaW50aW9uIGlzIG5vdCBjb21w bGV0ZWx5IGluaXRpYWxpemVkIGF0IHRoYXQgbW9tZW50KS4KPsKgwqAqLwo+wqBzdGF0aWMgY29u c3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9kaXNhYmxlZF9pbmRleF92dGFiID0gewo+ LSAvKiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSwKPisgLyogLmRlc3Ry b3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3k8MT4sCj7CoCAvKiAuY29tbWl0X2NyZWF0 ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2NyZWF0ZSwKPsKgIC8qIC5hYm9ydF9jcmVhdGUg PSAqLyBnZW5lcmljX2luZGV4X2Fib3J0X2NyZWF0ZSwKPsKgIC8qIC5jb21taXRfbW9kaWZ5ID0g Ki8gZ2VuZXJpY19pbmRleF9jb21taXRfbW9kaWZ5LAo+QEAgLTE0ODgsMjcgKzE2NzMsMTkgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfZGlzYWJsZWRfaW5kZXhf dnRhYiA9IHsKPsKgIC8qIC5lbmRfYnVpbGQgPSAqLyBnZW5lcmljX2luZGV4X2VuZF9idWlsZCwK PsKgfTsKPsKgCj4tc3RydWN0IGluZGV4ICoKPi1tZW10eF90cmVlX2luZGV4X25ldyhzdHJ1Y3Qg bWVtdHhfZW5naW5lICptZW10eCwgc3RydWN0IGluZGV4X2RlZiAqZGVmKQo+K3RlbXBsYXRlIDxp bnQgVVNFX0hJTlQ+Cj4rc3RhdGljIHN0cnVjdCBpbmRleCAqCj4rbWVtdHhfdHJlZV9pbmRleF9u ZXdfdHBsKHN0cnVjdCBtZW10eF9lbmdpbmUgKm1lbXR4LCBzdHJ1Y3QgaW5kZXhfZGVmICpkZWYs Cj4rIGNvbnN0IHN0cnVjdCBpbmRleF92dGFiICp2dGFiKQo+wqB7Cj4tIHN0cnVjdCBtZW10eF90 cmVlX2luZGV4ICppbmRleCA9Cj4tIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWNhbGxvYygx LCBzaXplb2YoKmluZGV4KSk7Cj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4PFVTRV9ISU5UPiAq aW5kZXggPQo+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXg8VVNFX0hJTlQ+ICopCj4rIGNhbGxv YygxLCBzaXplb2YoKmluZGV4KSk7Cj7CoCBpZiAoaW5kZXggPT0gTlVMTCkgewo+wqAgZGlhZ19z ZXQoT3V0T2ZNZW1vcnksIHNpemVvZigqaW5kZXgpLAo+wqAgIm1hbGxvYyIsICJzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCIpOwo+wqAgcmV0dXJuIE5VTEw7Cj7CoCB9Cj4tIGNvbnN0IHN0cnVjdCBp bmRleF92dGFiICp2dGFiOwo+LSBpZiAoZGVmLT5rZXlfZGVmLT5mb3JfZnVuY19pbmRleCkgewo+ LSBpZiAoZGVmLT5rZXlfZGVmLT5mdW5jX2luZGV4X2Z1bmMgPT0gTlVMTCkKPi0gdnRhYiA9ICZt ZW10eF90cmVlX2Rpc2FibGVkX2luZGV4X3Z0YWI7Cj4tIGVsc2UKPi0gdnRhYiA9ICZtZW10eF90 cmVlX2Z1bmNfaW5kZXhfdnRhYjsKPi0gfSBlbHNlIGlmIChkZWYtPmtleV9kZWYtPmlzX211bHRp a2V5KSB7Cj4tIHZ0YWIgPSAmbWVtdHhfdHJlZV9pbmRleF9tdWx0aWtleV92dGFiOwo+LSB9IGVs c2Ugewo+LSB2dGFiID0gJm1lbXR4X3RyZWVfaW5kZXhfdnRhYjsKPi0gfQo+wqAgaWYgKGluZGV4 X2NyZWF0ZSgmaW5kZXgtPmJhc2UsIChzdHJ1Y3QgZW5naW5lICopbWVtdHgsCj7CoCB2dGFiLCBk ZWYpICE9IDApIHsKPsKgIGZyZWUoaW5kZXgpOwo+QEAgLTE1MjQsMyArMTcwMSwyMyBAQCBtZW10 eF90cmVlX2luZGV4X25ldyhzdHJ1Y3QgbWVtdHhfZW5naW5lICptZW10eCwgc3RydWN0IGluZGV4 X2RlZiAqZGVmKQo+wqAgbWVtdHhfaW5kZXhfZXh0ZW50X2ZyZWUsIG1lbXR4KTsKPsKgIHJldHVy biAmaW5kZXgtPmJhc2U7Cj7CoH0KPisKPitzdHJ1Y3QgaW5kZXggKgo+K21lbXR4X3RyZWVfaW5k ZXhfbmV3KHN0cnVjdCBtZW10eF9lbmdpbmUgKm1lbXR4LCBzdHJ1Y3QgaW5kZXhfZGVmICpkZWYp Cj4rewo+KyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiAqdnRhYjsKPisgaWYgKGRlZi0+a2V5X2Rl Zi0+Zm9yX2Z1bmNfaW5kZXgpIHsKPisgaWYgKGRlZi0+a2V5X2RlZi0+ZnVuY19pbmRleF9mdW5j ID09IE5VTEwpCj4rIHZ0YWIgPSAmbWVtdHhfdHJlZV9kaXNhYmxlZF9pbmRleF92dGFiOwo+KyBl bHNlCj4rIHZ0YWIgPSAmbWVtdHhfdHJlZV9mdW5jX2luZGV4X3Z0YWI7Cj4rIH0gZWxzZSBpZiAo ZGVmLT5rZXlfZGVmLT5pc19tdWx0aWtleSkgewo+KyB2dGFiID0gJm1lbXR4X3RyZWVfaW5kZXhf bXVsdGlrZXlfdnRhYjsKPisgfSBlbHNlIGlmIChkZWYtPm9wdHMuaGludCkgewo+KyB2dGFiID0g Jm1lbXR4X3RyZWVfdXNlX2hpbnRfaW5kZXhfdnRhYjsKPisgfSBlbHNlIHsKPisgdnRhYiA9ICZt ZW10eF90cmVlX25vX2hpbnRfaW5kZXhfdnRhYjsKPisgcmV0dXJuIG1lbXR4X3RyZWVfaW5kZXhf bmV3X3RwbDwwPihtZW10eCwgZGVmLCB2dGFiKTsKPisgfQo+KyByZXR1cm4gbWVtdHhfdHJlZV9p bmRleF9uZXdfdHBsPDE+KG1lbXR4LCBkZWYsIHZ0YWIpOwo+K30KPmRpZmYgLS1naXQgYS9zcmMv bGliL3NhbGFkL2Jwc190cmVlLmggYi9zcmMvbGliL3NhbGFkL2Jwc190cmVlLmgKPmluZGV4IGVm NWFlM2QuLjBiYjgwM2EgMTAwNjQ0Cj4tLS0gYS9zcmMvbGliL3NhbGFkL2Jwc190cmVlLmgKPisr KyBiL3NyYy9saWIvc2FsYWQvYnBzX3RyZWUuaAo+QEAgLTE2OCw2ICsxNjgsMTcgQEAKPsKgCj7C oC8qIHt7eyBCUFMtdHJlZSBpbnRlcmZhY2Ugc2V0dGluZ3MgKi8KPsKgLyoqCj4rICogT3B0aW9u YWwgbmFtZXNwYWNlIGZvciBzdHJ1Y3RzIGFuZCBmdW5jdGlvbnMuCj4rICogSXMgc2V0LCBzdHJ1 Y3QgYW5kIGZ1bmN0aW9ucyB3aWxsIGhhdmUgQlBTX1RSRUVfTkFNRVNQQUNFOjogcHJlZml4Lgo+ KyAqIEZvciBleGFtcGxlIG9uZSBjYW4gI2RlZmluZSBCUFNfVFJFRV9OQU1FU1BBQ0UgbXkgYWxv bmcgd2l0aAo+KyAqICNkZWZpbmUgQlBTX1RSRUVfTkFNRSBfdGVzdCwgYW5kIHVzZSB0aGVuCj4r ICogc3RydWN0IG15OjpicHNfdHJlZV90ZXN0IG15X3RyZWU7Cj4rICogbXk6OmJwc190cmVlX3Rl c3RfY3JlYXRlKCZteV90cmVlLCAuLi4pOwo+KyAqCj4rICogI2RlZmluZSBCUFNfVFJFRV9OQU1F U1BBQ0UKPisgKi8KPisKPisvKioKPsKgwqAqIEN1c3RvbSBuYW1lIGZvciBzdHJ1Y3RzIGFuZCBm dW5jdGlvbnMuCj7CoMKgKiBTdHJ1Y3QgYW5kIGZ1bmN0aW9ucyB3aWxsIGhhdmUgYnBzX3RyZWUj I0JQU19UUkVFX05BTUUgbmFtZSBvciBwcmVmaXguCj7CoMKgKiBGb3IgZXhhbXBsZSBvbmUgY2Fu ICNkZWZpbmUgQlBTX1RSRUVfTkFNRSBfdGVzdCwgYW5kIHVzZSB0aGVuCj5AQCAtMzAwLDYgKzMx MSwxMCBAQAo+wqAKPsKgLyogfX19ICovCj7CoAo+KyNpZmRlZiBCUFNfVFJFRV9OQU1FU1BBQ0UK PituYW1lc3BhY2UgQlBTX1RSRUVfTkFNRVNQQUNFIHsKPisjZW5kaWYKPisKPsKgLyoge3t7IEJQ Uy10cmVlIGludGVybmFsIHNldHRpbmdzICovCj7CoHR5cGVkZWYgaW50MTZfdCBicHNfdHJlZV9w b3NfdDsKPsKgdHlwZWRlZiB1aW50MzJfdCBicHNfdHJlZV9ibG9ja19pZF90Owo+QEAgLTYxODgs MyArNjIwMyw3IEBAIGJwc190cmVlX2RlYnVnX2NoZWNrX2ludGVybmFsX2Z1bmN0aW9ucyhib29s IGFzc2VydG1lKQo+wqAjdW5kZWYgYnBzX3RyZWVfZGVidWdfY2hlY2tfaW5zZXJ0X2FuZF9tb3Zl X3RvX2xlZnRfaW5uZXIKPsKgCj7CoC8qIH19fSAqLwo+Kwo+KyNpZmRlZiBCUFNfVFJFRV9OQU1F U1BBQ0UKPit9IC8qIG5hbWVzcGFjZSBCUFNfVFJFRV9OQU1FU1BBQ0UgeyAqLwo+KyNlbmRpZgo+ ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L2FsdGVyLnJlc3VsdCBiL3Rlc3QvYm94L2FsdGVyLnJlc3Vs dAo+aW5kZXggMjM3YzJkOC4uNWI0MTJhNyAxMDA2NDQKPi0tLSBhL3Rlc3QvYm94L2FsdGVyLnJl c3VsdAo+KysrIGIvdGVzdC9ib3gvYWx0ZXIucmVzdWx0Cj5AQCAtNjgwLDggKzY4MCw5IEBAIHMu aW5kZXgucGsKPsKgwqDCoC0gdHlwZTogdW5zaWduZWQKPsKgwqDCoMKgwqBpc19udWxsYWJsZTog ZmFsc2UKPsKgwqDCoMKgwqBmaWVsZG5vOiAyCj4tIHR5cGU6IFRSRUUKPisgaGludDogdHJ1ZQo+ wqDCoMKgaWQ6IDAKPisgdHlwZTogVFJFRQo+wqDCoMKgc3BhY2VfaWQ6IDczMQo+wqDCoMKgbmFt ZTogcGsKPsKgLi4uCj5AQCAtNzEwLDkgKzcxMSwxMCBAQCBzLmluZGV4LnBrCj7CoMKgwqAtIHR5 cGU6IHVuc2lnbmVkCj7CoMKgwqDCoMKgaXNfbnVsbGFibGU6IGZhbHNlCj7CoMKgwqDCoMKgZmll bGRubzogMQo+LSBzcGFjZV9pZDogNzMxCj4rIGhpbnQ6IHRydWUKPsKgwqDCoGlkOiAwCj7CoMKg wqB0eXBlOiBUUkVFCj4rIHNwYWNlX2lkOiA3MzEKPsKgwqDCoG5hbWU6IHBrCj7CoC4uLgo+wqBz LmluZGV4LnNlY29uZGFyeQo+QEAgLTcyMiw4ICs3MjQsOSBAQCBzLmluZGV4LnNlY29uZGFyeQo+ wqDCoMKgLSB0eXBlOiB1bnNpZ25lZAo+wqDCoMKgwqDCoGlzX251bGxhYmxlOiBmYWxzZQo+wqDC oMKgwqDCoGZpZWxkbm86IDIKPi0gdHlwZTogVFJFRQo+KyBoaW50OiB0cnVlCj7CoMKgwqBpZDog MQo+KyB0eXBlOiBUUkVFCj7CoMKgwqBzcGFjZV9pZDogNzMxCj7CoMKgwqBuYW1lOiBzZWNvbmRh cnkKPsKgLi4uCj5AQCAtMTU1OSwzICsxNTYyLDk3IEBAIGFzc2VydChlcnI6bWF0Y2goJ2RvZXMg bm90IGV4aXN0Jykgfj0gbmlsKQo+wqAtLS0KPsKgLSB0cnVlCj7CoC4uLgo+Ky0tIGhpbnQKPitz ID0gYm94LnNjaGVtYS5jcmVhdGVfc3BhY2UoJ3Rlc3QnKTsKPistLS0KPisuLi4KPitzOmNyZWF0 ZV9pbmRleCgndGVzdDEnLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7MSwgJ3VpbnQnfX19KS5oaW50 Cj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QyJywge3R5cGU9J3Ry ZWUnLCBwYXJ0cz17ezIsICd1aW50J319LCBoaW50ID0gdHJ1ZX0pLmhpbnQKPistLS0KPistIHRy dWUKPisuLi4KPitzOmNyZWF0ZV9pbmRleCgndGVzdDMnLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7 MywgJ3VpbnQnfX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPistLS0KPistIGZhbHNlCj4rLi4uCj4r czpjcmVhdGVfaW5kZXgoJ3Rlc3Q0Jywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezQsICdzdHJpbmcn fX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPistLS0KPistIGZhbHNlCj4rLi4uCj4rcy5pbmRleC50 ZXN0MS5oaW50Cj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4rcy5pbmRleC50ZXN0Mi5oaW50Cj4rLS0t Cj4rLSB0cnVlCj4rLi4uCj4rcy5pbmRleC50ZXN0My5oaW50Cj4rLS0tCj4rLSBmYWxzZQo+Ky4u Lgo+K3MuaW5kZXgudGVzdDQuaGludAo+Ky0tLQo+Ky0gZmFsc2UKPisuLi4KPitOID0gMTAwMCBi b3guYmVnaW4oKSBmb3IgaSA9IDEsTiBkbyBzOnJlcGxhY2V7aSwgaSwgaSwgJycgLi4gaX0gZW5k IGJveC5jb21taXQoKQo+Ky0tLQo+Ky4uLgo+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA9PSBzLmlu ZGV4LnRlc3QyOmJzaXplKCkKPistLS0KPistIHRydWUKPisuLi4KPitzLmluZGV4LnRlc3QxOmJz aXplKCkgPiBzLmluZGV4LnRlc3QzOmJzaXplKCkKPistLS0KPistIHRydWUKPisuLi4KPitzLmlu ZGV4LnRlc3QxOmJzaXplKCkgPiBzLmluZGV4LnRlc3Q0OmJzaXplKCkKPistLS0KPistIHRydWUK PisuLi4KPitzLmluZGV4LnRlc3QxOmFsdGVye2hpbnQ9ZmFsc2V9Cj4rLS0tCj4rLi4uCj4rcy5p bmRleC50ZXN0MjphbHRlcntoaW50PXRydWV9Cj4rLS0tCj4rLi4uCj4rcy5pbmRleC50ZXN0Mzph bHRlcntuYW1lPSd0ZXN0MzMnLCBoaW50PWZhbHNlfQo+Ky0tLQo+Ky4uLgo+K3MuaW5kZXgudGVz dDQ6YWx0ZXJ7aGludD10cnVlfQo+Ky0tLQo+Ky4uLgo+K3MuaW5kZXgudGVzdDEuaGludAo+Ky0t LQo+Ky0gZmFsc2UKPisuLi4KPitzLmluZGV4LnRlc3QyLmhpbnQKPistLS0KPistIHRydWUKPisu Li4KPitzLmluZGV4LnRlc3QzMy5oaW50Cj4rLS0tCj4rLSBmYWxzZQo+Ky4uLgo+K3MuaW5kZXgu dGVzdDQuaGludAo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA8 IHMuaW5kZXgudGVzdDI6YnNpemUoKQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3MuaW5kZXgudGVz dDE6YnNpemUoKSA9PSBzLmluZGV4LnRlc3QzMzpic2l6ZSgpCj4rLS0tCj4rLSB0cnVlCj4rLi4u Cj4rcy5pbmRleC50ZXN0MTpic2l6ZSgpIDwgcy5pbmRleC50ZXN0NDpic2l6ZSgpCj4rLS0tCj4r LSB0cnVlCj4rLi4uCj4rczpkcm9wKCkKPistLS0KPisuLi4KPmRpZmYgLS1naXQgYS90ZXN0L2Jv eC9hbHRlci50ZXN0Lmx1YSBiL3Rlc3QvYm94L2FsdGVyLnRlc3QubHVhCj5pbmRleCBhYmQwOGUy Li4yMTE0MTg2IDEwMDY0NAo+LS0tIGEvdGVzdC9ib3gvYWx0ZXIudGVzdC5sdWEKPisrKyBiL3Rl c3QvYm94L2FsdGVyLnRlc3QubHVhCj5AQCAtNjIwLDMgKzYyMCwzNyBAQCBzOmRyb3AoKQo+wqBz OmFsdGVyKHt9KQo+wqBvaywgZXJyID0gcGNhbGwoYm94LnNjaGVtYS5zcGFjZS5hbHRlciwgcy5p ZCwge30pCj7CoGFzc2VydChlcnI6bWF0Y2goJ2RvZXMgbm90IGV4aXN0Jykgfj0gbmlsKQo+Kwo+ Ky0tIGhpbnQKPitzID0gYm94LnNjaGVtYS5jcmVhdGVfc3BhY2UoJ3Rlc3QnKTsKPitzOmNyZWF0 ZV9pbmRleCgndGVzdDEnLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7MSwgJ3VpbnQnfX19KS5oaW50 Cj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QyJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezIsICd1aW50 J319LCBoaW50ID0gdHJ1ZX0pLmhpbnQKPitzOmNyZWF0ZV9pbmRleCgndGVzdDMnLCB7dHlwZT0n dHJlZScsIHBhcnRzPXt7MywgJ3VpbnQnfX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPitzOmNyZWF0 ZV9pbmRleCgndGVzdDQnLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7NCwgJ3N0cmluZyd9fSwgaGlu dCA9IGZhbHNlfSkuaGludAo+Kwo+K3MuaW5kZXgudGVzdDEuaGludAo+K3MuaW5kZXgudGVzdDIu aGludAo+K3MuaW5kZXgudGVzdDMuaGludAo+K3MuaW5kZXgudGVzdDQuaGludAo+Kwo+K04gPSAx MDAwIGJveC5iZWdpbigpIGZvciBpID0gMSxOIGRvIHM6cmVwbGFjZXtpLCBpLCBpLCAnJyAuLiBp fSBlbmQgYm94LmNvbW1pdCgpCj4rCj4rcy5pbmRleC50ZXN0MTpic2l6ZSgpID09IHMuaW5kZXgu dGVzdDI6YnNpemUoKQo+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA+IHMuaW5kZXgudGVzdDM6YnNp emUoKQo+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA+IHMuaW5kZXgudGVzdDQ6YnNpemUoKQo+Kwo+ K3MuaW5kZXgudGVzdDE6YWx0ZXJ7aGludD1mYWxzZX0KPitzLmluZGV4LnRlc3QyOmFsdGVye2hp bnQ9dHJ1ZX0KPitzLmluZGV4LnRlc3QzOmFsdGVye25hbWU9J3Rlc3QzMycsIGhpbnQ9ZmFsc2V9 Cj4rcy5pbmRleC50ZXN0NDphbHRlcntoaW50PXRydWV9Cj4rCj4rcy5pbmRleC50ZXN0MS5oaW50 Cj4rcy5pbmRleC50ZXN0Mi5oaW50Cj4rcy5pbmRleC50ZXN0MzMuaGludAo+K3MuaW5kZXgudGVz dDQuaGludAo+Kwo+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA8IHMuaW5kZXgudGVzdDI6YnNpemUo KQo+K3MuaW5kZXgudGVzdDE6YnNpemUoKSA9PSBzLmluZGV4LnRlc3QzMzpic2l6ZSgpCj4rcy5p bmRleC50ZXN0MTpic2l6ZSgpIDwgcy5pbmRleC50ZXN0NDpic2l6ZSgpCj4rCj4rczpkcm9wKCkK PlwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L2Vycmlu ai5yZXN1bHQgYi90ZXN0L2JveC9lcnJpbmoucmVzdWx0Cj5pbmRleCA2MTNkMjJjLi5iOGMyNDc2 IDEwMDY0NAo+LS0tIGEvdGVzdC9ib3gvZXJyaW5qLnJlc3VsdAo+KysrIGIvdGVzdC9ib3gvZXJy aW5qLnJlc3VsdAo+QEAgLTE3NzQsOSArMTc3NCwxMCBAQCBydHJlZXNwYWNlOmNyZWF0ZV9pbmRl eCgncGsnLCB7aWZfbm90X2V4aXN0cyA9IHRydWV9KQo+wqDCoMKgLSB0eXBlOiB1bnNpZ25lZAo+ wqDCoMKgwqDCoGlzX251bGxhYmxlOiBmYWxzZQo+wqDCoMKgwqDCoGZpZWxkbm86IDEKPisgaGlu dDogdHJ1ZQo+wqDCoMKgaWQ6IDAKPi0gc3BhY2VfaWQ6IDUxMgo+wqDCoMKgdHlwZTogVFJFRQo+ KyBzcGFjZV9pZDogNTEyCj7CoMKgwqBuYW1lOiBwawo+wqAuLi4KPsKgcnRyZWVzcGFjZTpjcmVh dGVfaW5kZXgoJ3RhcmdldCcsIHt0eXBlPSdydHJlZScsIGRpbWVuc2lvbiA9IDMsIHBhcnRzPXsy LCAnYXJyYXknfSx1bmlxdWUgPSBmYWxzZSwgaWZfbm90X2V4aXN0cyA9IHRydWUsfSkKPmRpZmYg LS1naXQgYS90ZXN0L2JveC90cmVlX3BrLnJlc3VsdCBiL3Rlc3QvYm94L3RyZWVfcGsucmVzdWx0 Cj5pbmRleCBkZjNjNzhiLi4xOGNiNjA3IDEwMDY0NAo+LS0tIGEvdGVzdC9ib3gvdHJlZV9way5y ZXN1bHQKPisrKyBiL3Rlc3QvYm94L3RyZWVfcGsucmVzdWx0Cj5AQCAtODUyLDMgKzg1MiwzMTcg QEAgYm94LmludGVybmFsLmNvbGxhdGlvbi5kcm9wKCd0ZXN0JykKPsKgYm94LmludGVybmFsLmNv bGxhdGlvbi5kcm9wKCd0ZXN0LWNpJykKPsKgLS0tCj7CoC4uLgo+Ky0tIGhpbnRzCj4rcyA9IGJv eC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0JykKPistLS0KPisuLi4KPitzOmNyZWF0ZV9pbmRl eCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50ID0gJ3RydWUnfSApCj4rLS0tCj4rLSBlcnJv cjogSWxsZWdhbCBwYXJhbWV0ZXJzLCBvcHRpb25zIHBhcmFtZXRlciAnaGludCcgc2hvdWxkIGJl IG9mIHR5cGUgYm9vbGVhbgo+Ky4uLgo+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAn aGFzaCcsIGhpbnQgPSB0cnVlfSApCj4rLS0tCj4rLSBlcnJvcjogJ0NhbicndCBjcmVhdGUgb3Ig bW9kaWZ5IGluZGV4ICcndGVzdCcnIGluIHNwYWNlICcndGVzdCcnOiBoaW50IGlzIG9ubHkgcmVh c29uYWJsZQo+KyB3aXRoIG1lbXR4IHRyZWUgaW5kZXgnCj4rLi4uCj4rczpjcmVhdGVfaW5kZXgo J3Rlc3QnLCB7dHlwZSA9ICdoYXNoJ30pOmFsdGVyKHtoaW50ID0gdHJ1ZX0pCj4rLS0tCj4rLSBl cnJvcjogJ0NhbicndCBjcmVhdGUgb3IgbW9kaWZ5IGluZGV4ICcndGVzdCcnIGluIHNwYWNlICcn dGVzdCcnOiBoaW50IGlzIG9ubHkgcmVhc29uYWJsZQo+KyB3aXRoIG1lbXR4IHRyZWUgaW5kZXgn Cj4rLi4uCj4rczpjcmVhdGVfaW5kZXgoJ211bHRpa2V5Jywge2hpbnQgPSB0cnVlLCBwYXJ0cyA9 IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSkKPistLS0KPistIGVycm9yOiAnQ2FuJyd0IGNy ZWF0ZSBvciBtb2RpZnkgaW5kZXggJydtdWx0aWtleScnIGluIHNwYWNlICcndGVzdCcnOiBtdWx0 aWtleSBpbmRleAo+KyBjYW4nJ3QgdXNlIGhpbnRzJwo+Ky4uLgo+K3M6Y3JlYXRlX2luZGV4KCdt dWx0aWtleScsIHtwYXJ0cyA9IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSk6YWx0ZXIoe2hp bnQgPSB0cnVlfSkKPistLS0KPistIGVycm9yOiAnQ2FuJyd0IGNyZWF0ZSBvciBtb2RpZnkgaW5k ZXggJydtdWx0aWtleScnIGluIHNwYWNlICcndGVzdCcnOiBtdWx0aWtleSBpbmRleAo+KyBjYW4n J3QgdXNlIGhpbnRzJwo+Ky4uLgo+K2x1YV9jb2RlID0gW1tmdW5jdGlvbih0dXBsZSkgcmV0dXJu IHt0dXBsZVsxXSArIHR1cGxlWzJdfSBlbmRdXQo+Ky0tLQo+Ky4uLgo+K2JveC5zY2hlbWEuZnVu Yy5jcmVhdGUoJ3MnLCB7Ym9keSA9IGx1YV9jb2RlLCBpc19kZXRlcm1pbmlzdGljID0gdHJ1ZSwg aXNfc2FuZGJveGVkID0gdHJ1ZX0pCj4rLS0tCj4rLi4uCj4rczpjcmVhdGVfaW5kZXgoJ2Z1bmMn LCB7aGludCA9IHRydWUsIGZ1bmMgPSBib3guZnVuYy5zLmlkLCBwYXJ0cyA9IHt7MSwgJ3Vuc2ln bmVkJ319fSkKPistLS0KPistIGVycm9yOiAnQ2FuJyd0IGNyZWF0ZSBvciBtb2RpZnkgaW5kZXgg JydmdW5jJycgaW4gc3BhY2UgJyd0ZXN0Jyc6IGZ1bmN0aW9uYWwgaW5kZXgKPisgY2FuJyd0IHVz ZSBoaW50cycKPisuLi4KPitzOmRyb3AoKQo+Ky0tLQo+Ky4uLgo+K3MgPSBib3guc2NoZW1hLnNw YWNlLmNyZWF0ZSgndGVzdCcsIHtlbmdpbmUgPSAndmlueWwnfSkKPistLS0KPisuLi4KPitzOmNy ZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50ID0gdHJ1ZX0gKQo+Ky0tLQo+ Ky0gZXJyb3I6ICdDYW4nJ3QgY3JlYXRlIG9yIG1vZGlmeSBpbmRleCAnJ3Rlc3QnJyBpbiBzcGFj ZSAnJ3Rlc3QnJzogaGludCBpcyBvbmx5IHJlYXNvbmFibGUKPisgd2l0aCBtZW10eCB0cmVlIGlu ZGV4Jwo+Ky4uLgo+K3M6ZHJvcCgpCj4rLS0tCj4rLi4uCj4rLS0gbnVtZXJpYyBoaW50cwo+K3Mx ID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QxJykKPistLS0KPisuLi4KPitzMTpjcmVh dGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9IGZhbHNlfSkuaGludAo+Ky0t LQo+Ky0gZmFsc2UKPisuLi4KPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0Micp Cj4rLS0tCj4rLi4uCj4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZSd9KS5o aW50Cj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4rTiA9IDIwMDAKPistLS0KPisuLi4KPitib3guYmVn aW4oKSBmb3IgaSA9IDEsTiBkbyBsb2NhbCB2ID0gbWF0aC5yYW5kb20oMTAgKiBOKSBzMTpyZXBs YWNle3Z9IHMyOnJlcGxhY2V7dn0gZW5kIGJveC5jb21taXQoKQo+Ky0tLQo+Ky4uLgo+K3MxOmNv dW50KCkgPT0gczI6Y291bnQoKQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K2dvb2QgPSB0cnVlIHIx ID0gczE6c2VsZWN0e30gcjIgPSBzMjpzZWxlY3R7fQo+Ky0tLQo+Ky4uLgo+K2lmICNyMSB+PSAj cjIgdGhlbiBnb29kID0gZmFsc2UgZW5kCj4rLS0tCj4rLi4uCj4rZm9yIGssdiBpbiBwYWlycyhy MSkgZG8gaWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kCj4rLS0t Cj4rLi4uCj4rZ29vZAo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3IxID0gbmlsIHIyID0gbmlsCj4r LS0tCj4rLi4uCj4rZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0dXJuIHQxWzFd IH49IHQyWzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kCj4rLS0tCj4rLi4uCj4rZm9y IGkgPSAxLCBOICogMTAgZG8gaWYgZGlmZihzMTpnZXR7aX0sIHMyOmdldHtpfSkgdGhlbiBnb29k ID0gZmFsc2UgZW5kIGVuZAo+Ky0tLQo+Ky4uLgo+K2dvb2QKPistLS0KPistIHRydWUKPisuLi4K PitzMS5pbmRleFswXTpic2l6ZSgpIDwgczIuaW5kZXhbMF06YnNpemUoKQo+Ky0tLQo+Ky0gdHJ1 ZQo+Ky4uLgo+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX0KPistLS0KPisuLi4KPitzMS5p bmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCkKPistLS0KPistIHRydWUKPisu Li4KPitzMi5pbmRleFswXTphbHRlcntoaW50PWZhbHNlfQo+Ky0tLQo+Ky4uLgo+K3MxLmluZGV4 WzBdOmJzaXplKCkgPiBzMi5pbmRleFswXTpic2l6ZSgpCj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4r czEuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPistLS0KPisuLi4KPitzMS5pbmRleFswXTpi c2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCkKPistLS0KPistIHRydWUKPisuLi4KPitzMTpk cm9wKCkKPistLS0KPisuLi4KPitzMjpkcm9wKCkKPistLS0KPisuLi4KPistLSBzdHJpbmcgaGlu dHMKPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpCj4rLS0tCj4rLi4uCj4r czE6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0gezEsICdzdHIn fSwgaGludCA9IGZhbHNlfSkuaGludAo+Ky0tLQo+Ky0gZmFsc2UKPisuLi4KPitzMiA9IGJveC5z Y2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpCj4rLS0tCj4rLi4uCj4rczI6Y3JlYXRlX2luZGV4 KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0gezEsICdzdHInfX0pLmhpbnQKPistLS0K PistIHRydWUKPisuLi4KPitOID0gMTAwMAo+Ky0tLQo+Ky4uLgo+K2JveC5iZWdpbigpIGZvciBp ID0gMSxOIGRvIGxvY2FsIHYgPSAnJy4ubWF0aC5yYW5kb20oMTAgKiBOKSBzMTpyZXBsYWNle3Z9 IHMyOnJlcGxhY2V7dn0gZW5kIGJveC5jb21taXQoKQo+Ky0tLQo+Ky4uLgo+K3MxOmNvdW50KCkg PT0gczI6Y291bnQoKQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K2dvb2QgPSB0cnVlIHIxID0gczE6 c2VsZWN0e30gcjIgPSBzMjpzZWxlY3R7fQo+Ky0tLQo+Ky4uLgo+K2lmICNyMSB+PSAjcjIgdGhl biBnb29kID0gZmFsc2UgZW5kCj4rLS0tCj4rLi4uCj4rZm9yIGssdiBpbiBwYWlycyhyMSkgZG8g aWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kCj4rLS0tCj4rLi4u Cj4rZ29vZAo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3IxID0gbmlsIHIyID0gbmlsCj4rLS0tCj4r Li4uCj4rZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0dXJuIHQxWzFdIH49IHQy WzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kCj4rLS0tCj4rLi4uCj4rZm9yIGkgPSAx LCBOICogMTAgZG8gdiA9ICcnLi5pIGlmIGRpZmYoczE6Z2V0e3Z9LCBzMjpnZXR7dn0pIHRoZW4g Z29vZCA9IGZhbHNlIGVuZCBlbmQKPistLS0KPisuLi4KPitnb29kCj4rLS0tCj4rLSB0cnVlCj4r Li4uCj4rczEuaW5kZXhbMF06YnNpemUoKSA8IHMyLmluZGV4WzBdOmJzaXplKCkKPistLS0KPist IHRydWUKPisuLi4KPitzMS5pbmRleFswXTphbHRlcntoaW50PXRydWV9Cj4rLS0tCj4rLi4uCj4r czEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4rLS0tCj4rLSB0cnVl Cj4rLi4uCj4rczIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPistLS0KPisuLi4KPitzMS5p bmRleFswXTpic2l6ZSgpID4gczIuaW5kZXhbMF06YnNpemUoKQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4u Lgo+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9Cj4rLS0tCj4rLi4uCj4rczEuaW5kZXhb MF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpCj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4r czE6ZHJvcCgpCj4rLS0tCj4rLi4uCj4rczI6ZHJvcCgpCj4rLS0tCj4rLi4uCj4rLS0gc3RyaW5n IHdpdGggY29sbGF0aW9uIGhpbnRzCj4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVz dDEnKQo+Ky0tLQo+Ky4uLgo+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUn LCBwYXJ0cyA9IHt7MSwgJ3N0cicsIGNvbGxhdGlvbiA9ICdVbmljb2RlJ319LCBoaW50ID0gZmFs c2V9KS5oaW50Cj4rLS0tCj4rLSBmYWxzZQo+Ky4uLgo+K3MyID0gYm94LnNjaGVtYS5zcGFjZS5j cmVhdGUoJ3Rlc3QyJykKPistLS0KPisuLi4KPitzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlw ZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHInLCBjb2xsYXRpb24gPSAnVW5pY29kZSd9fX0p LmhpbnQKPistLS0KPistIHRydWUKPisuLi4KPitOID0gMTAwMAo+Ky0tLQo+Ky4uLgo+K3N5bXMg PSB7J2EnLCAnQicsICdjJywgJ0QnLCAn0LYnLCAn0IEnLCAnficsICcxJywgJyUnLCAnMid9Cj4r LS0tCj4rLi4uCj4rc3ltc19zaXplID0gI3N5bXMKPistLS0KPisuLi4KPitsZW4gPSAyMAo+Ky0t LQo+Ky4uLgo+K3ZhbHMgPSB7fQo+Ky0tLQo+Ky4uLgo+K2ZvciBpID0gMSwyKk4gZG8gc3RyID0g JycgZm9yIGo9MSxsZW4gZG8gc3RyID0gc3RyIC4uIHN5bXNbbWF0aC5yYW5kb20oc3ltc19zaXpl KV0gZW5kIHZhbHNbaV0gPSBzdHIgZW5kCj4rLS0tCj4rLi4uCj4rZm9yIGkgPSAxLE4gZG8gbG9j YWwgdiA9IHZhbHNbaV0gczE6cmVwbGFjZXt2fSBzMjpyZXBsYWNle3Z9IGVuZAo+Ky0tLQo+Ky4u Lgo+K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K2dvb2Qg PSB0cnVlIHIxID0gczE6c2VsZWN0e30gcjIgPSBzMjpzZWxlY3R7fQo+Ky0tLQo+Ky4uLgo+K2lm ICNyMSB+PSAjcjIgdGhlbiBnb29kID0gZmFsc2UgZW5kCj4rLS0tCj4rLi4uCj4rZm9yIGssdiBp biBwYWlycyhyMSkgZG8gaWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQg ZW5kCj4rLS0tCj4rLi4uCj4rZ29vZAo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3IxID0gbmlsIHIy ID0gbmlsCj4rLS0tCj4rLi4uCj4rZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0 dXJuIHQxWzFdIH49IHQyWzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kCj4rLS0tCj4r Li4uCj4rZm9yIGkgPSAxLCBOICogMiBkbyB2ID0gdmFsc1tpXSBpZiBkaWZmKHMxOmdldHt2fSwg czI6Z2V0e3Z9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kCj4rLS0tCj4rLi4uCj4rZ29vZAo+ Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3MxLmluZGV4WzBdOmJzaXplKCkgPCBzMi5pbmRleFswXTpi c2l6ZSgpCj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4rczEuaW5kZXhbMF06YWx0ZXJ7aGludD10cnVl fQo+Ky0tLQo+Ky4uLgo+K3MxLmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUo KQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9Cj4r LS0tCj4rLi4uCj4rczEuaW5kZXhbMF06YnNpemUoKSA+IHMyLmluZGV4WzBdOmJzaXplKCkKPist LS0KPistIHRydWUKPisuLi4KPitzMS5pbmRleFswXTphbHRlcntoaW50PWZhbHNlfQo+Ky0tLQo+ Ky4uLgo+K3MxLmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKQo+Ky0tLQo+ Ky0gdHJ1ZQo+Ky4uLgo+K3MxOmRyb3AoKQo+Ky0tLQo+Ky4uLgo+K3MyOmRyb3AoKQo+Ky0tLQo+ Ky4uLgo+ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L3RyZWVfcGsudGVzdC5sdWEgYi90ZXN0L2JveC90 cmVlX3BrLnRlc3QubHVhCj5pbmRleCAxMTkwYWI0Li4yZjIyZWQ5IDEwMDY0NAo+LS0tIGEvdGVz dC9ib3gvdHJlZV9way50ZXN0Lmx1YQo+KysrIGIvdGVzdC9ib3gvdHJlZV9way50ZXN0Lmx1YQo+ QEAgLTMwMSwzICszMDEsMTE4IEBAIHM6ZHJvcCgpCj7CoAo+wqBib3guaW50ZXJuYWwuY29sbGF0 aW9uLmRyb3AoJ3Rlc3QnKQo+wqBib3guaW50ZXJuYWwuY29sbGF0aW9uLmRyb3AoJ3Rlc3QtY2kn KQo+Kwo+Ky0tIGhpbnRzCj4rcyA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0JykKPitz OmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50ID0gJ3RydWUnfSApCj4r czpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICdoYXNoJywgaGludCA9IHRydWV9ICkKPitz OmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ2hhc2gnfSk6YWx0ZXIoe2hpbnQgPSB0cnVl fSkKPitzOmNyZWF0ZV9pbmRleCgnbXVsdGlrZXknLCB7aGludCA9IHRydWUsIHBhcnRzID0ge3sy LCAnaW50JywgcGF0aCA9ICdbKl0nfX19KQo+K3M6Y3JlYXRlX2luZGV4KCdtdWx0aWtleScsIHtw YXJ0cyA9IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSk6YWx0ZXIoe2hpbnQgPSB0cnVlfSkK PitsdWFfY29kZSA9IFtbZnVuY3Rpb24odHVwbGUpIHJldHVybiB7dHVwbGVbMV0gKyB0dXBsZVsy XX0gZW5kXV0KPitib3guc2NoZW1hLmZ1bmMuY3JlYXRlKCdzJywge2JvZHkgPSBsdWFfY29kZSwg aXNfZGV0ZXJtaW5pc3RpYyA9IHRydWUsIGlzX3NhbmRib3hlZCA9IHRydWV9KQo+K3M6Y3JlYXRl X2luZGV4KCdmdW5jJywge2hpbnQgPSB0cnVlLCBmdW5jID0gYm94LmZ1bmMucy5pZCwgcGFydHMg PSB7ezEsICd1bnNpZ25lZCd9fX0pCj4rczpkcm9wKCkKPisKPitzID0gYm94LnNjaGVtYS5zcGFj ZS5jcmVhdGUoJ3Rlc3QnLCB7ZW5naW5lID0gJ3ZpbnlsJ30pCj4rczpjcmVhdGVfaW5kZXgoJ3Rl c3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9IHRydWV9ICkKPitzOmRyb3AoKQo+Kwo+Ky0tIG51 bWVyaWMgaGludHMKPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpCj4rczE6 Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIGhpbnQgPSBmYWxzZX0pLmhpbnQK PitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpCj4rczI6Y3JlYXRlX2luZGV4 KCd0ZXN0Jywge3R5cGUgPSAndHJlZSd9KS5oaW50Cj4rCj4rTiA9IDIwMDAKPitib3guYmVnaW4o KSBmb3IgaSA9IDEsTiBkbyBsb2NhbCB2ID0gbWF0aC5yYW5kb20oMTAgKiBOKSBzMTpyZXBsYWNl e3Z9IHMyOnJlcGxhY2V7dn0gZW5kIGJveC5jb21taXQoKQo+K3MxOmNvdW50KCkgPT0gczI6Y291 bnQoKQo+Kwo+K2dvb2QgPSB0cnVlIHIxID0gczE6c2VsZWN0e30gcjIgPSBzMjpzZWxlY3R7fQo+ K2lmICNyMSB+PSAjcjIgdGhlbiBnb29kID0gZmFsc2UgZW5kCj4rZm9yIGssdiBpbiBwYWlycyhy MSkgZG8gaWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kCj4rZ29v ZAo+K3IxID0gbmlsIHIyID0gbmlsCj4rCj4rZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRo ZW4gcmV0dXJuIHQxWzFdIH49IHQyWzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kCj4r Zm9yIGkgPSAxLCBOICogMTAgZG8gaWYgZGlmZihzMTpnZXR7aX0sIHMyOmdldHtpfSkgdGhlbiBn b29kID0gZmFsc2UgZW5kIGVuZAo+K2dvb2QKPisKPitzMS5pbmRleFswXTpic2l6ZSgpIDwgczIu aW5kZXhbMF06YnNpemUoKQo+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX0KPitzMS5pbmRl eFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCkKPitzMi5pbmRleFswXTphbHRlcnto aW50PWZhbHNlfQo+K3MxLmluZGV4WzBdOmJzaXplKCkgPiBzMi5pbmRleFswXTpic2l6ZSgpCj4r czEuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMy LmluZGV4WzBdOmJzaXplKCkKPisKPitzMTpkcm9wKCkKPitzMjpkcm9wKCkKPisKPistLSBzdHJp bmcgaGludHMKPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpCj4rczE6Y3Jl YXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0gezEsICdzdHInfSwgaGlu dCA9IGZhbHNlfSkuaGludAo+K3MyID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJykK PitzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7MSwgJ3N0 cid9fSkuaGludAo+Kwo+K04gPSAxMDAwCj4rYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4gZG8gbG9j YWwgdiA9ICcnLi5tYXRoLnJhbmRvbSgxMCAqIE4pIHMxOnJlcGxhY2V7dn0gczI6cmVwbGFjZXt2 fSBlbmQgYm94LmNvbW1pdCgpCj4rczE6Y291bnQoKSA9PSBzMjpjb3VudCgpCj4rCj4rZ29vZCA9 IHRydWUgcjEgPSBzMTpzZWxlY3R7fSByMiA9IHMyOnNlbGVjdHt9Cj4raWYgI3IxIH49ICNyMiB0 aGVuIGdvb2QgPSBmYWxzZSBlbmQKPitmb3Igayx2IGluIHBhaXJzKHIxKSBkbyBpZiByMltrXVsx XSB+PSB2WzFdIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQKPitnb29kCj4rcjEgPSBuaWwgcjIg PSBuaWwKPisKPitmdW5jdGlvbiBkaWZmKHQxLCB0MikgaWYgdDEgdGhlbiByZXR1cm4gdDFbMV0g fj0gdDJbMV0gZWxzZSByZXR1cm4gdDIgfj0gbmlsIGVuZCBlbmQKPitmb3IgaSA9IDEsIE4gKiAx MCBkbyB2ID0gJycuLmkgaWYgZGlmZihzMTpnZXR7dn0sIHMyOmdldHt2fSkgdGhlbiBnb29kID0g ZmFsc2UgZW5kIGVuZAo+K2dvb2QKPisKPitzMS5pbmRleFswXTpic2l6ZSgpIDwgczIuaW5kZXhb MF06YnNpemUoKQo+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX0KPitzMS5pbmRleFswXTpi c2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCkKPitzMi5pbmRleFswXTphbHRlcntoaW50PWZh bHNlfQo+K3MxLmluZGV4WzBdOmJzaXplKCkgPiBzMi5pbmRleFswXTpic2l6ZSgpCj4rczEuaW5k ZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4 WzBdOmJzaXplKCkKPisKPitzMTpkcm9wKCkKPitzMjpkcm9wKCkKPisKPistLSBzdHJpbmcgd2l0 aCBjb2xsYXRpb24gaGludHMKPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScp Cj4rczE6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0ge3sxLCAn c3RyJywgY29sbGF0aW9uID0gJ1VuaWNvZGUnfX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQKPitzMiA9 IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpCj4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0 Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0ge3sxLCAnc3RyJywgY29sbGF0aW9uID0gJ1VuaWNv ZGUnfX19KS5oaW50Cj4rCj4rTiA9IDEwMDAKPitzeW1zID0geydhJywgJ0InLCAnYycsICdEJywg J9C2JywgJ9CBJywgJ34nLCAnMScsICclJywgJzInfQo+K3N5bXNfc2l6ZSA9ICNzeW1zCj4rbGVu ID0gMjAKPit2YWxzID0ge30KPitmb3IgaSA9IDEsMipOIGRvIHN0ciA9ICcnIGZvciBqPTEsbGVu IGRvIHN0ciA9IHN0ciAuLiBzeW1zW21hdGgucmFuZG9tKHN5bXNfc2l6ZSldIGVuZCB2YWxzW2ld ID0gc3RyIGVuZAo+Kwo+K2ZvciBpID0gMSxOIGRvIGxvY2FsIHYgPSB2YWxzW2ldIHMxOnJlcGxh Y2V7dn0gczI6cmVwbGFjZXt2fSBlbmQKPitzMTpjb3VudCgpID09IHMyOmNvdW50KCkKPisKPitn b29kID0gdHJ1ZSByMSA9IHMxOnNlbGVjdHt9IHIyID0gczI6c2VsZWN0e30KPitpZiAjcjEgfj0g I3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZAo+K2ZvciBrLHYgaW4gcGFpcnMocjEpIGRvIGlmIHIy W2tdWzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZAo+K2dvb2QKPityMSA9IG5p bCByMiA9IG5pbAo+Kwo+K2Z1bmN0aW9uIGRpZmYodDEsIHQyKSBpZiB0MSB0aGVuIHJldHVybiB0 MVsxXSB+PSB0MlsxXSBlbHNlIHJldHVybiB0MiB+PSBuaWwgZW5kIGVuZAo+K2ZvciBpID0gMSwg TiAqIDIgZG8gdiA9IHZhbHNbaV0gaWYgZGlmZihzMTpnZXR7dn0sIHMyOmdldHt2fSkgdGhlbiBn b29kID0gZmFsc2UgZW5kIGVuZAo+K2dvb2QKPisKPitzMS5pbmRleFswXTpic2l6ZSgpIDwgczIu aW5kZXhbMF06YnNpemUoKQo+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX0KPitzMS5pbmRl eFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCkKPitzMi5pbmRleFswXTphbHRlcnto aW50PWZhbHNlfQo+K3MxLmluZGV4WzBdOmJzaXplKCkgPiBzMi5pbmRleFswXTpic2l6ZSgpCj4r czEuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX0KPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMy LmluZGV4WzBdOmJzaXplKCkKPisKPitzMTpkcm9wKCkKPitzMjpkcm9wKCkKPmRpZmYgLS1naXQg YS90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC5yZXN1bHQgYi90ZXN0L2JveC90cmVlX3BrX211 bHRpcGFydC5yZXN1bHQKPmluZGV4IDkzMjE5ZjYuLjNmNmJiOTQgMTAwNjQ0Cj4tLS0gYS90ZXN0 L2JveC90cmVlX3BrX211bHRpcGFydC5yZXN1bHQKPisrKyBiL3Rlc3QvYm94L3RyZWVfcGtfbXVs dGlwYXJ0LnJlc3VsdAo+QEAgLTU0MiwzICs1NDIsMTU2IEBAIHNwYWNlOmRyb3AoKQo+wqBzcGFj ZSA9IG5pbAo+wqAtLS0KPsKgLi4uCj4rLS0gaGludHMKPit0ZXN0X3J1bjpjbWQoInNldG9wdCBk ZWxpbWl0ZXIgJzsnIikKPistLS0KPistIHRydWUKPisuLi4KPitmdW5jdGlvbiBlcXVhbChyZXMx LCByZXMyKQo+KyBpZiAjcmVzMSB+PSAjcmVzMiB0aGVuCj4rIHJldHVybiBmYWxzZQo+KyBlbmQK PisgZm9yIGssdiBpbiBwYWlycyhyZXMxKSBkbwo+KyBpZiByZXMyW2tdWzFdIH49IHZbMV0gb3Ig cmVzMltrXVsyXSB+PSB2WzJdIHRoZW4KPisgcmV0dXJuIGZhbHNlCj4rIGVuZAo+KyBlbmQKPisg cmV0dXJuIHRydWUKPitlbmQKPit0ZXN0X3J1bjpjbWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTsK PistLS0KPisuLi4KPistLSBudW0gbnVtCj4rTjEgPSAxMDAKPistLS0KPisuLi4KPit0MSA9IHt9 Cj4rLS0tCj4rLi4uCj4rZm9yIGkgPSAxLE4xKjIgZG8gdDFbaV0gPSBtYXRoLnJhbmRvbSgxMDAw MCkgKiAxMDAwMCArIGkgZW5kCj4rLS0tCj4rLi4uCj4rTjIgPSA1Cj4rLS0tCj4rLi4uCj4rdDIg PSB7fQo+Ky0tLQo+Ky4uLgo+K2ZvciBpID0gMSxOMioyIGRvIHQyW2ldID0gbWF0aC5yYW5kb20o MTAwMDAwMCkgZW5kCj4rLS0tCj4rLi4uCj4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgn dGVzdDEnKQo+Ky0tLQo+Ky4uLgo+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3Ry ZWUnLCBwYXJ0cyA9IHt7MSwgJ251bSd9LCB7MiwgJ251bSd9fSwgaGludCA9IGZhbHNlfSkuaGlu dAo+Ky0tLQo+Ky0gZmFsc2UKPisuLi4KPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0 ZXN0MicpCj4rLS0tCj4rLi4uCj4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJl ZScsIHBhcnRzID0ge3sxLCAnbnVtJ30sIHsyLCAnbnVtJ319LCBoaW50ID0gdHJ1ZX0pLmhpbnQK PistLS0KPistIHRydWUKPisuLi4KPitmb3IgaiA9IDEsTjIgZG8gZm9yIGkgPSAxLE4xIGRvIHMx OnJlcGxhY2V7dDFbaV0sIHQyW2pdfSBzMjpyZXBsYWNle3QxW2ldLCB0MltqXX0gZW5kIGVuZAo+ Ky0tLQo+Ky4uLgo+K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKQo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4u Lgo+K2VxdWFsKHMxOnNlbGVjdHt9LCBzMjpzZWxlY3R7fSkKPistLS0KPistIHRydWUKPisuLi4K Pitnb29kID0gdHJ1ZQo+Ky0tLQo+Ky4uLgo+K2ZvciBpID0gMSxOMSoyIGRvIGdvb2QgPSBnb29k IGFuZCBlcXVhbChzMTpzZWxlY3R7dDFbaV19LCBzMjpzZWxlY3R7dDFbaV19KSBlbmQKPistLS0K PisuLi4KPitnb29kCj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4rZm9yIGkgPSAxLE4xKjIgZG8gZm9y IGo9MSxOMioyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChzMTpzZWxlY3R7dDFbaV0sIHQyW2pd fSwgczI6c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVuZCBlbmQKPistLS0KPisuLi4KPitnb29kCj4r LS0tCj4rLSB0cnVlCj4rLi4uCj4rczE6ZHJvcCgpCj4rLS0tCj4rLi4uCj4rczI6ZHJvcCgpCj4r LS0tCj4rLi4uCj4rLS0gc3RyIG51bQo+K04xID0gMTAwCj4rLS0tCj4rLi4uCj4rdDEgPSB7fQo+ Ky0tLQo+Ky4uLgo+K2ZvciBpID0gMSxOMSoyIGRvIHQxW2ldID0gJycuLihtYXRoLnJhbmRvbSgx MDAwMCkgKiAxMDAwMCArIGkpIGVuZAo+Ky0tLQo+Ky4uLgo+K04yID0gNQo+Ky0tLQo+Ky4uLgo+ K3QyID0ge30KPistLS0KPisuLi4KPitmb3IgaSA9IDEsTjIqMiBkbyB0MltpXSA9IG1hdGgucmFu ZG9tKDEwMDAwMDApIGVuZAo+Ky0tLQo+Ky4uLgo+K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVh dGUoJ3Rlc3QxJykKPistLS0KPisuLi4KPitzMTpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9 ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHInfSwgezIsICdudW0nfX0sIGhpbnQgPSBmYWxzZX0p LmhpbnQKPistLS0KPistIGZhbHNlCj4rLi4uCj4rczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0 ZSgndGVzdDInKQo+Ky0tLQo+Ky4uLgo+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0g J3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0cid9LCB7MiwgJ251bSd9fSwgaGludCA9IHRydWV9KS5o aW50Cj4rLS0tCj4rLSB0cnVlCj4rLi4uCj4rZm9yIGogPSAxLE4yIGRvIGZvciBpID0gMSxOMSBk byBzMTpyZXBsYWNle3QxW2ldLCB0MltqXX0gczI6cmVwbGFjZXt0MVtpXSwgdDJbal19IGVuZCBl bmQKPistLS0KPisuLi4KPitzMTpjb3VudCgpID09IHMyOmNvdW50KCkKPistLS0KPistIHRydWUK PisuLi4KPitlcXVhbChzMTpzZWxlY3R7fSwgczI6c2VsZWN0e30pCj4rLS0tCj4rLSB0cnVlCj4r Li4uCj4rZ29vZCA9IHRydWUKPistLS0KPisuLi4KPitmb3IgaSA9IDEsTjEqMiBkbyBnb29kID0g Z29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldfSwgczI6c2VsZWN0e3QxW2ldfSkgZW5kCj4r LS0tCj4rLi4uCj4rZ29vZAo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K2ZvciBpID0gMSxOMSoyIGRv IGZvciBqPTEsTjIqMiBkbyBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldLCB0 MltqXX0sIHMyOnNlbGVjdHt0MVtpXSwgdDJbal19KSBlbmQgZW5kCj4rLS0tCj4rLi4uCj4rZ29v ZAo+Ky0tLQo+Ky0gdHJ1ZQo+Ky4uLgo+K3MxOmRyb3AoKQo+Ky0tLQo+Ky4uLgo+K3MyOmRyb3Ao KQo+Ky0tLQo+Ky4uLgo+ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlwYXJ0LnRl c3QubHVhIGIvdGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQudGVzdC5sdWEKPmluZGV4IDdkMzQw NWYuLmNiYTNhOTggMTAwNjQ0Cj4tLS0gYS90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC50ZXN0 Lmx1YQo+KysrIGIvdGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQudGVzdC5sdWEKPkBAIC0xOTQs MyArMTk0LDY3IEBAIHRlc3RfcnVuOmNtZCgic2V0b3B0IGRlbGltaXRlciAnJyIpOwo+wqBzcGFj ZTpkcm9wKCkKPsKgCj7CoHNwYWNlID0gbmlsCj4rCj4rCj4rLS0gaGludHMKPit0ZXN0X3J1bjpj bWQoInNldG9wdCBkZWxpbWl0ZXIgJzsnIikKPitmdW5jdGlvbiBlcXVhbChyZXMxLCByZXMyKQo+ KyBpZiAjcmVzMSB+PSAjcmVzMiB0aGVuCj4rIHJldHVybiBmYWxzZQo+KyBlbmQKPisgZm9yIGss diBpbiBwYWlycyhyZXMxKSBkbwo+KyBpZiByZXMyW2tdWzFdIH49IHZbMV0gb3IgcmVzMltrXVsy XSB+PSB2WzJdIHRoZW4KPisgcmV0dXJuIGZhbHNlCj4rIGVuZAo+KyBlbmQKPisgcmV0dXJuIHRy dWUKPitlbmQKPit0ZXN0X3J1bjpjbWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTsKPisKPistLSBu dW0gbnVtCj4rTjEgPSAxMDAKPit0MSA9IHt9Cj4rZm9yIGkgPSAxLE4xKjIgZG8gdDFbaV0gPSBt YXRoLnJhbmRvbSgxMDAwMCkgKiAxMDAwMCArIGkgZW5kCj4rTjIgPSA1Cj4rdDIgPSB7fQo+K2Zv ciBpID0gMSxOMioyIGRvIHQyW2ldID0gbWF0aC5yYW5kb20oMTAwMDAwMCkgZW5kCj4rCj4rczEg PSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKQo+K3MxOmNyZWF0ZV9pbmRleCgndGVz dCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ251bSd9LCB7MiwgJ251bSd9fSwgaGlu dCA9IGZhbHNlfSkuaGludAo+K3MyID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJykK PitzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdu dW0nfSwgezIsICdudW0nfX0sIGhpbnQgPSB0cnVlfSkuaGludAo+K2ZvciBqID0gMSxOMiBkbyBm b3IgaSA9IDEsTjEgZG8gczE6cmVwbGFjZXt0MVtpXSwgdDJbal19IHMyOnJlcGxhY2V7dDFbaV0s IHQyW2pdfSBlbmQgZW5kCj4rczE6Y291bnQoKSA9PSBzMjpjb3VudCgpCj4rZXF1YWwoczE6c2Vs ZWN0e30sIHMyOnNlbGVjdHt9KQo+K2dvb2QgPSB0cnVlCj4rZm9yIGkgPSAxLE4xKjIgZG8gZ29v ZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0sIHMyOnNlbGVjdHt0MVtpXX0pIGVu ZAo+K2dvb2QKPitmb3IgaSA9IDEsTjEqMiBkbyBmb3Igaj0xLE4yKjIgZG8gZ29vZCA9IGdvb2Qg YW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXSwgdDJbal19LCBzMjpzZWxlY3R7dDFbaV0sIHQyW2pd fSkgZW5kIGVuZAo+K2dvb2QKPisKPitzMTpkcm9wKCkKPitzMjpkcm9wKCkKPisKPistLSBzdHIg bnVtCj4rTjEgPSAxMDAKPit0MSA9IHt9Cj4rZm9yIGkgPSAxLE4xKjIgZG8gdDFbaV0gPSAnJy4u KG1hdGgucmFuZG9tKDEwMDAwKSAqIDEwMDAwICsgaSkgZW5kCj4rTjIgPSA1Cj4rdDIgPSB7fQo+ K2ZvciBpID0gMSxOMioyIGRvIHQyW2ldID0gbWF0aC5yYW5kb20oMTAwMDAwMCkgZW5kCj4rCj4r czEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKQo+K3MxOmNyZWF0ZV9pbmRleCgn dGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0cid9LCB7MiwgJ251bSd9fSwg aGludCA9IGZhbHNlfSkuaGludAo+K3MyID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3Qy JykKPitzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEs ICdzdHInfSwgezIsICdudW0nfX0sIGhpbnQgPSB0cnVlfSkuaGludAo+K2ZvciBqID0gMSxOMiBk byBmb3IgaSA9IDEsTjEgZG8gczE6cmVwbGFjZXt0MVtpXSwgdDJbal19IHMyOnJlcGxhY2V7dDFb aV0sIHQyW2pdfSBlbmQgZW5kCj4rczE6Y291bnQoKSA9PSBzMjpjb3VudCgpCj4rZXF1YWwoczE6 c2VsZWN0e30sIHMyOnNlbGVjdHt9KQo+K2dvb2QgPSB0cnVlCj4rZm9yIGkgPSAxLE4xKjIgZG8g Z29vZCA9IGdvb2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXX0sIHMyOnNlbGVjdHt0MVtpXX0p IGVuZAo+K2dvb2QKPitmb3IgaSA9IDEsTjEqMiBkbyBmb3Igaj0xLE4yKjIgZG8gZ29vZCA9IGdv b2QgYW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXSwgdDJbal19LCBzMjpzZWxlY3R7dDFbaV0sIHQy W2pdfSkgZW5kIGVuZAo+K2dvb2QKPisKPitzMTpkcm9wKCkKPitzMjpkcm9wKCkKPi0tCj4yLjcu NAo+wqAKLS0KSWx5YSBLb3NhcmV2 ----ALT--c35683257aE3672DAeC7F9eC44154a401603197242 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGRpdj5IaSw8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+VGhh bmtzIGZvciB0aGUgcGF0Y2ghPC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48ZGl2PkxHVE0sIGkgY2hl Y2tlZCBmb3IgdGhlIG51bWJlciBvZiBjb21waWxlcnMgdGhhdCBpZiB3aXRoIHRoZSZuYnNwO3Rl bXBsYXRlZDwvZGl2PjxkaXY+YWdydW1lbnQmbmJzcDtpcyBiZWluZyBwcm9jZXNzZWQgYXQgdGhl IGNvbXBpbGUgdGltZSBzbyB0aGF0IHRoZXJlIGFyZSBubyBqdW1wczwvZGl2PjxkaXY+aW4gYXNt IGNvZGUuPC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48ZGl2PldoYXQgaSB0aGluayBpcyBuZWVkZWQg aXMgdGhlIGVudW0gbGlrZSB0aGUgZm9sbG93aW5nOjwvZGl2PjxkaXY+PGRpdiBzdHlsZT0iYmFj a2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMjIyMjIyOyBmb250LXdlaWdodDpub3JtYWw7 IGxpbmUtaGVpZ2h0OjE2cHg7IHdoaXRlLXNwYWNlOnByZSI+PGRpdiBzdHlsZT0iZm9udC1mYW1p bHk6JnF1b3Q7VWJ1bnR1IE1vbm8mcXVvdDs7IGZvbnQtc2l6ZToxMnB4Ij48c3BhbiBzdHlsZT0i Y29sb3I6ICMwMDAwZmY7Ij5lbnVtPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzIyMjIyMjsi PiB7PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1VidW50dSBNb25v JnF1b3Q7OyBmb250LXNpemU6MTJweCI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMjIyMjIyOyI+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Tk9UX0hJTlRFRCA9 IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwOTg4NWE7Ij4wPC9zcGFuPjxzcGFuIHN0eWxl PSJjb2xvcjogIzIyMjIyMjsiPiw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7VWJ1bnR1IE1vbm8mcXVvdDs7IGZvbnQtc2l6ZToxMnB4Ij48c3BhbiBzdHlsZT0iY29s b3I6ICMyMjIyMjI7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtISU5URUQgPSA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDk4ODVhOyI+MTwvc3Bh bj48c3BhbiBzdHlsZT0iY29sb3I6ICMyMjIyMjI7Ij4sPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9 ImZvbnQtZmFtaWx5OiZxdW90O1VidW50dSBNb25vJnF1b3Q7OyBmb250LXNpemU6MTJweCI+PHNw YW4gc3R5bGU9ImNvbG9yOiAjMjIyMjIyOyI+fTs8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0iZm9u dC1mYW1pbHk6JnF1b3Q7VWJ1bnR1IE1vbm8mcXVvdDs7IGZvbnQtc2l6ZToxMnB4Ij4mbmJzcDs8 L2Rpdj48ZGl2Pjxmb250IGZhY2U9IkFyaWFsIj50byBhdm9pZCB1c2luZyAmbHQ7MCZndDsgJmFt cDsgJmx0OzEmZ3Q7LiBJZiBuZWVkZWQgaSBjYW4gcHVzaCBzdWNoIHBhdGNoIHRvIHRoZSBicmFu Y2guPC9mb250PjwvZGl2PjwvZGl2PjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCf 0L7QvdC10LTQtdC70YzQvdC40LosIDE5INC+0LrRgtGP0LHRgNGPIDIwMjAsIDEyOjUyICswMzow MCDQvtGCIEFsZWtzYW5kciBMeWFwdW5vdiAmbHQ7YWx5YXB1bm92QHRhcmFudG9vbC5vcmcmZ3Q7 Ojxicj4mbmJzcDs8ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1z ZyI+PGRpdj48ZGl2IGlkPSJzdHlsZV8xNjAzMTAxMTM1MDMxNDE2NjgzNF9CT0RZIj5TaW5jZSA5 ZmJhMjlhYmI0ZTA1YmFiYjliMjNiNDQxM2JkODA4M2YwZmJhOTMzIChtZW10eDogaW50cm9kdWNl IHR1cGxlPGJyPmNvbXBhcmUgaGludCkgbWVtdHggdHJlZSBrZXkgZGF0YSAoaW5kZXhlcykgc3Rh cnRlZCB0byBjb250YWluIGV4dHJhIDg8YnI+Ynl0ZXMgYXMgYSBoaW50LiBOb3cgaXQgaXMgb3B0 aW9uYWwgYW5kIGNhbiBiZSB0dXJuZWQgb2ZmIGluIGFuIGluZGV4PGJyPm9wdGlvbnMgd2l0aCAi aGludCA9IGZhbHNlIiBlbnRyeS48YnI+PGJyPkNsb3NlcyAjNDkyNzxicj48YnI+QFRhcmFudG9v bEJvdCBkb2N1bWVudDxicj5UaXRsZTogbWVtdHg6IG9wdGlvbmFsIHR1cGxlIGNvbXBhcmUgaGlu dHM8YnI+VXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhbiBpbmRleCBjcmVhdGlvbiB0byBy ZWZsZWN0IHRoYXQgdGhlcmUgaXM8YnI+bm93IGFuIG9wdGlvbiB0byB0dXJuIG9mZiBoaW50cyBm b3IgdGhlIGluZGV4Ljxicj4tLS08YnI+Jm5ic3A7c3JjL2JveC9pbmRleF9kZWYuYyB8IDIgKzxi cj4mbmJzcDtzcmMvYm94L2luZGV4X2RlZi5oIHwgNiArPGJyPiZuYnNwO3NyYy9ib3gvbHVhL3Nj aGVtYS5sdWEgfCA1MyArKysrPGJyPiZuYnNwO3NyYy9ib3gvbHVhL3NwYWNlLmNjIHwgNyArPGJy PiZuYnNwO3NyYy9ib3gvbWVtdHhfZW5naW5lLmMgfCAyICs8YnI+Jm5ic3A7c3JjL2JveC9tZW10 eF90cmVlLmNjIHwgNTk5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLTxicj4m bmJzcDtzcmMvbGliL3NhbGFkL2Jwc190cmVlLmggfCAxOSArKzxicj4mbmJzcDt0ZXN0L2JveC9h bHRlci5yZXN1bHQgfCAxMDMgKysrKysrLTxicj4mbmJzcDt0ZXN0L2JveC9hbHRlci50ZXN0Lmx1 YSB8IDM0ICsrPGJyPiZuYnNwO3Rlc3QvYm94L2Vycmluai5yZXN1bHQgfCAzICstPGJyPiZuYnNw O3Rlc3QvYm94L3RyZWVfcGsucmVzdWx0IHwgMzE0ICsrKysrKysrKysrKysrKysrKys8YnI+Jm5i c3A7dGVzdC9ib3gvdHJlZV9way50ZXN0Lmx1YSB8IDExNSArKysrKysrPGJyPiZuYnNwO3Rlc3Qv Ym94L3RyZWVfcGtfbXVsdGlwYXJ0LnJlc3VsdCB8IDE1MyArKysrKysrKys8YnI+Jm5ic3A7dGVz dC9ib3gvdHJlZV9wa19tdWx0aXBhcnQudGVzdC5sdWEgfCA2NCArKysrPGJyPiZuYnNwOzE0IGZp bGVzIGNoYW5nZWQsIDEyNjkgaW5zZXJ0aW9ucygrKSwgMjA1IGRlbGV0aW9ucygtKTxicj48YnI+ ZGlmZiAtLWdpdCBhL3NyYy9ib3gvaW5kZXhfZGVmLmMgYi9zcmMvYm94L2luZGV4X2RlZi5jPGJy PmluZGV4IDk4MDI5NjEuLjc5Mzk0YjggMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvaW5kZXhfZGVm LmM8YnI+KysrIGIvc3JjL2JveC9pbmRleF9kZWYuYzxicj5AQCAtNTEsNiArNTEsNyBAQCBjb25z dCBzdHJ1Y3QgaW5kZXhfb3B0cyBpbmRleF9vcHRzX2RlZmF1bHQgPSB7PGJyPiZuYnNwOyAvKiAu bHNuID0gKi8gMCw8YnI+Jm5ic3A7IC8qIC5zdGF0ID0gKi8gTlVMTCw8YnI+Jm5ic3A7IC8qIC5m dW5jID0gKi8gMCw8YnI+KyAvKiAuaGludCA9ICovIHRydWUsPGJyPiZuYnNwO307PGJyPiZuYnNw Ozxicj4mbmJzcDtjb25zdCBzdHJ1Y3Qgb3B0X2RlZiBpbmRleF9vcHRzX3JlZ1tdID0gezxicj5A QCAtNjYsNiArNjcsNyBAQCBjb25zdCBzdHJ1Y3Qgb3B0X2RlZiBpbmRleF9vcHRzX3JlZ1tdID0g ezxicj4mbmJzcDsgT1BUX0RFRigibHNuIiwgT1BUX0lOVDY0LCBzdHJ1Y3QgaW5kZXhfb3B0cywg bHNuKSw8YnI+Jm5ic3A7IE9QVF9ERUYoImZ1bmMiLCBPUFRfVUlOVDMyLCBzdHJ1Y3QgaW5kZXhf b3B0cywgZnVuY19pZCksPGJyPiZuYnNwOyBPUFRfREVGX0xFR0FDWSgic3FsIiksPGJyPisgT1BU X0RFRigiaGludCIsIE9QVF9CT09MLCBzdHJ1Y3QgaW5kZXhfb3B0cywgaGludCksPGJyPiZuYnNw OyBPUFRfRU5ELDxicj4mbmJzcDt9Ozxicj4mbmJzcDs8YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gv aW5kZXhfZGVmLmggYi9zcmMvYm94L2luZGV4X2RlZi5oPGJyPmluZGV4IGQ5MjhiMjMuLjIxODBh NjkgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvaW5kZXhfZGVmLmg8YnI+KysrIGIvc3JjL2JveC9p bmRleF9kZWYuaDxicj5AQCAtMTY1LDYgKzE2NSwxMCBAQCBzdHJ1Y3QgaW5kZXhfb3B0cyB7PGJy PiZuYnNwOyBzdHJ1Y3QgaW5kZXhfc3RhdCAqc3RhdDs8YnI+Jm5ic3A7IC8qKiBJZGVudGlmaWVy IG9mIHRoZSBmdW5jdGlvbmFsIGluZGV4IGZ1bmN0aW9uLiAqLzxicj4mbmJzcDsgdWludDMyX3Qg ZnVuY19pZDs8YnI+KyAvKio8YnI+KyAqIFVzZSBoaW50IG9wdGltaXphdGlvbiBmb3IgdHJlZSBp bmRleC48YnI+KyAqLzxicj4rIGJvb2wgaGludDs8YnI+Jm5ic3A7fTs8YnI+Jm5ic3A7PGJyPiZu YnNwO2V4dGVybiBjb25zdCBzdHJ1Y3QgaW5kZXhfb3B0cyBpbmRleF9vcHRzX2RlZmF1bHQ7PGJy PkBAIC0yMTEsNiArMjE1LDggQEAgaW5kZXhfb3B0c19jbXAoY29uc3Qgc3RydWN0IGluZGV4X29w dHMgKm8xLCBjb25zdCBzdHJ1Y3QgaW5kZXhfb3B0cyAqbzIpPGJyPiZuYnNwOyByZXR1cm4gbzEt Jmd0O2Jsb29tX2ZwciAmbHQ7IG8yLSZndDtibG9vbV9mcHIgPyAtMSA6IDE7PGJyPiZuYnNwOyBp ZiAobzEtJmd0O2Z1bmNfaWQgIT0gbzItJmd0O2Z1bmNfaWQpPGJyPiZuYnNwOyByZXR1cm4gbzEt Jmd0O2Z1bmNfaWQgLSBvMi0mZ3Q7ZnVuY19pZDs8YnI+KyBpZiAobzEtJmd0O2hpbnQgIT0gbzIt Jmd0O2hpbnQpPGJyPisgcmV0dXJuIG8xLSZndDtoaW50IC0gbzItJmd0O2hpbnQ7PGJyPiZuYnNw OyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gv bHVhL3NjaGVtYS5sdWEgYi9zcmMvYm94L2x1YS9zY2hlbWEubHVhPGJyPmluZGV4IDExMzFhZjcu LjljYzEyODkgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvbHVhL3NjaGVtYS5sdWE8YnI+KysrIGIv c3JjL2JveC9sdWEvc2NoZW1hLmx1YTxicj5AQCAtMTAwMCw4ICsxMDAwLDMxIEBAIGxvY2FsIGlu ZGV4X29wdGlvbnMgPSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3BhZ2Vfc2l6 ZSA9ICdudW1iZXInLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtibG9vbV9mcHIg PSAnbnVtYmVyJyw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZnVuYyA9ICdudW1i ZXIsIHN0cmluZycsPGJyPisgaGludCA9ICdib29sZWFuJyw8YnI+Jm5ic3A7fTxicj4mbmJzcDs8 YnI+K2xvY2FsIGZ1bmN0aW9uIGpzb25wYXRoc19mcm9tX2lkeF9wYXJ0cyhwYXJ0cyk8YnI+KyBs b2NhbCBwYXRocyA9IHt9PGJyPis8YnI+KyBmb3IgXywgcGFydCBpbiBwYWlycyhwYXJ0cykgZG88 YnI+KyBpZiB0eXBlKHBhcnQucGF0aCkgPT0gJ3N0cmluZycgdGhlbjxicj4rIHRhYmxlLmluc2Vy dChwYXRocywgcGFydC5wYXRoKTxicj4rIGVuZDxicj4rIGVuZDxicj4rPGJyPisgcmV0dXJuIHBh dGhzPGJyPitlbmQ8YnI+Kzxicj4rbG9jYWwgZnVuY3Rpb24gaXNfbXVsdGlrZXlfaW5kZXgocGFy dHMpPGJyPisgZm9yIF8sIHBhdGggaW4gcGFpcnMoanNvbnBhdGhzX2Zyb21faWR4X3BhcnRzKHBh cnRzKSkgZG88YnI+KyBpZiBwYXRoOmZpbmQoJ1sqXScsIDEsIHRydWUpIHRoZW48YnI+KyByZXR1 cm4gdHJ1ZTxicj4rIGVuZDxicj4rIGVuZDxicj4rPGJyPisgcmV0dXJuIGZhbHNlPGJyPitlbmQ8 YnI+Kzxicj4mbmJzcDstLTxicj4mbmJzcDstLSBjaGVja19wYXJhbV90YWJsZSgpIHRlbXBsYXRl IGZvciBhbHRlciBpbmRleCw8YnI+Jm5ic3A7LS0gaW5jbHVkZXMgYWxsIGluZGV4IG9wdGlvbnMu PGJyPkBAIC0xMDc2LDYgKzEwOTksMTUgQEAgYm94LnNjaGVtYS5pbmRleC5jcmVhdGUgPSBmdW5j dGlvbihzcGFjZV9pZCwgbmFtZSwgb3B0aW9ucyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7b3B0aW9uc19kZWZhdWx0cyA9IHt9PGJyPiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2VuZDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtvcHRpb25zID0gdXBkYXRlX3BhcmFtX3RhYmxlKG9wdGlvbnMsIG9wdGlvbnNfZGVm YXVsdHMpPGJyPisgaWYgb3B0aW9ucy5oaW50IGFuZDxicj4rIChvcHRpb25zLnR5cGUgfj0gJ3Ry ZWUnIG9yIGJveC5zcGFjZVtzcGFjZV9pZF0uZW5naW5lIH49ICdtZW10eCcpIHRoZW48YnI+KyBi b3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgbmFtZSwgc3BhY2UubmFtZSw8YnI+KyAi aGludCBpcyBvbmx5IHJlYXNvbmFibGUgd2l0aCBtZW10eCB0cmVlIGluZGV4Iik8YnI+KyBlbmQ8 YnI+KyBpZiBvcHRpb25zLmhpbnQgYW5kIG9wdGlvbnMuZnVuYyB0aGVuPGJyPisgYm94LmVycm9y KGJveC5lcnJvci5NT0RJRllfSU5ERVgsIG5hbWUsIHNwYWNlLm5hbWUsPGJyPisgImZ1bmN0aW9u YWwgaW5kZXggY2FuJ3QgdXNlIGhpbnRzIik8YnI+KyBlbmQ8YnI+Jm5ic3A7PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO2xvY2FsIF9pbmRleCA9IGJveC5zcGFjZVtib3guc2NoZW1h LklOREVYX0lEXTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtsb2NhbCBfdmluZGV4 ID0gYm94LnNwYWNlW2JveC5zY2hlbWEuVklOREVYX0lEXTxicj5AQCAtMTExNSw2ICsxMTQ3LDcg QEAgYm94LnNjaGVtYS5pbmRleC5jcmVhdGUgPSBmdW5jdGlvbihzcGFjZV9pZCwgbmFtZSwgb3B0 aW9ucyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cnVuX3NpemVfcmF0aW8gPSBvcHRpb25zLnJ1 bl9zaXplX3JhdGlvLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtibG9vbV9mcHIgPSBvcHRpb25z LmJsb29tX2Zwciw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZnVuYyA9IG9wdGlvbnMuZnVuYyw8 YnI+KyBoaW50ID0gb3B0aW9ucy5oaW50LDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDt9PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2xvY2FsIGZpZWxkX3R5cGVfYWxp YXNlcyA9IHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7bnVtID0gJ3Vuc2lnbmVkJzsgLS0gRGVwcmVjYXRlZCBzaW5jZSAxLjcuMjxicj5A QCAtMTEzNSw2ICsxMTY4LDEwIEBAIGJveC5zY2hlbWEuaW5kZXguY3JlYXRlID0gZnVuY3Rpb24o c3BhY2VfaWQsIG5hbWUsIG9wdGlvbnMpPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O2lmIHBhcnRzX2Nhbl9iZV9zaW1wbGlmaWVkIHRoZW48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cGFydHMgPSBzaW1wbGlmeV9pbmRleF9w YXJ0cyhwYXJ0cyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJyPisgaWYg b3B0aW9ucy5oaW50IGFuZCBpc19tdWx0aWtleV9pbmRleChwYXJ0cykgdGhlbjxicj4rIGJveC5l cnJvcihib3guZXJyb3IuTU9ESUZZX0lOREVYLCBuYW1lLCBzcGFjZS5uYW1lLDxicj4rICJtdWx0 aWtleSBpbmRleCBjYW4ndCB1c2UgaGludHMiKTxicj4rIGVuZDxicj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtpZiBpbmRleF9vcHRzLmZ1bmMgfj0gbmlsIGFuZCB0eXBlKGluZGV4X29w dHMuZnVuYykgPT0gJ3N0cmluZycgdGhlbjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpbmRleF9vcHRzLmZ1bmMgPSBmdW5jX2lkX2J5X25h bWUoaW5kZXhfb3B0cy5mdW5jKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtlbmQ8 YnI+QEAgLTEyNTMsNiArMTI5MCwxNyBAQCBib3guc2NoZW1hLmluZGV4LmFsdGVyID0gZnVuY3Rp b24oc3BhY2VfaWQsIGluZGV4X2lkLCBvcHRpb25zKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtp bmRleF9vcHRzW2tdID0gb3B0aW9uc1trXTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtlbmQ8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ZW5kPGJyPisgaWYgb3B0aW9ucy5oaW50IGFuZDxicj4rIChvcHRpb25zLnR5cGUgfj0g J3RyZWUnIG9yIGJveC5zcGFjZVtzcGFjZV9pZF0uZW5naW5lIH49ICdtZW10eCcpIHRoZW48YnI+ KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhfaWRd Lm5hbWUsPGJyPisgc3BhY2UubmFtZSw8YnI+KyAiaGludCBpcyBvbmx5IHJlYXNvbmFibGUgd2l0 aCBtZW10eCB0cmVlIGluZGV4Iik8YnI+KyBlbmQ8YnI+KyBpZiBvcHRpb25zLmhpbnQgYW5kIG9w dGlvbnMuZnVuYyB0aGVuPGJyPisgYm94LmVycm9yKGJveC5lcnJvci5NT0RJRllfSU5ERVgsIHNw YWNlLmluZGV4W2luZGV4X2lkXS5uYW1lLDxicj4rIHNwYWNlLm5hbWUsPGJyPisgImZ1bmN0aW9u YWwgaW5kZXggY2FuJ3QgdXNlIGhpbnRzIik8YnI+KyBlbmQ8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7aWYgb3B0aW9ucy5wYXJ0cyB0aGVuPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2xvY2FsIHBhcnRzX2Nhbl9iZV9zaW1w bGlmaWVkPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO3BhcnRzLCBwYXJ0c19jYW5fYmVfc2ltcGxpZmllZCA9PGJyPkBAIC0xMjYyLDYgKzEz MTAsMTEgQEAgYm94LnNjaGVtYS5pbmRleC5hbHRlciA9IGZ1bmN0aW9uKHNwYWNlX2lkLCBpbmRl eF9pZCwgb3B0aW9ucyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cGFydHMgPSBzaW1wbGlmeV9p bmRleF9wYXJ0cyhwYXJ0cyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Vu ZDxicj4rIGlmIG9wdGlvbnMuaGludCBhbmQgaXNfbXVsdGlrZXlfaW5kZXgocGFydHMpIHRoZW48 YnI+KyBib3guZXJyb3IoYm94LmVycm9yLk1PRElGWV9JTkRFWCwgc3BhY2UuaW5kZXhbaW5kZXhf aWRdLm5hbWUsPGJyPisgc3BhY2UubmFtZSw8YnI+KyAibXVsdGlrZXkgaW5kZXggY2FuJ3QgdXNl IGhpbnRzIik8YnI+KyBlbmQ8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aWYgaW5k ZXhfb3B0cy5mdW5jIH49IG5pbCBhbmQgdHlwZShpbmRleF9vcHRzLmZ1bmMpID09ICdzdHJpbmcn IHRoZW48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7aW5kZXhfb3B0cy5mdW5jID0gZnVuY19pZF9ieV9uYW1lKGluZGV4X29wdHMuZnVuYyk8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJyPmRpZmYgLS1naXQgYS9zcmMv Ym94L2x1YS9zcGFjZS5jYyBiL3NyYy9ib3gvbHVhL3NwYWNlLmNjPGJyPmluZGV4IDE3N2M1ODgu LjFlYTk5M2MgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvbHVhL3NwYWNlLmNjPGJyPisrKyBiL3Ny Yy9ib3gvbHVhL3NwYWNlLmNjPGJyPkBAIC0zNDQsNiArMzQ0LDEzIEBAIGxib3hfZmlsbHNwYWNl KHN0cnVjdCBsdWFfU3RhdGUgKkwsIHN0cnVjdCBzcGFjZSAqc3BhY2UsIGludCBpKTxicj4mbmJz cDsgbHVhX3B1c2hudW1iZXIoTCwgaW5kZXhfb3B0cy0mZ3Q7ZGltZW5zaW9uKTs8YnI+Jm5ic3A7 IGx1YV9zZXRmaWVsZChMLCAtMiwgImRpbWVuc2lvbiIpOzxicj4mbmJzcDsgfTxicj4rIGlmIChz cGFjZV9pc19tZW10eChzcGFjZSkgJmFtcDsmYW1wOyBpbmRleF9kZWYtJmd0O3R5cGUgPT0gVFJF RSkgezxicj4rIGx1YV9wdXNoYm9vbGVhbihMLCBpbmRleF9vcHRzLSZndDtoaW50KTs8YnI+KyBs dWFfc2V0ZmllbGQoTCwgLTIsICJoaW50Iik7PGJyPisgfSBlbHNlIHs8YnI+KyBsdWFfcHVzaG5p bChMKTs8YnI+KyBsdWFfc2V0ZmllbGQoTCwgLTIsICJoaW50Iik7PGJyPisgfTxicj4mbmJzcDs8 YnI+Jm5ic3A7IGlmIChpbmRleF9vcHRzLSZndDtmdW5jX2lkICZndDsgMCkgezxicj4mbmJzcDsg bHVhX3B1c2hzdHJpbmcoTCwgImZ1bmMiKTs8YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvbWVtdHhf ZW5naW5lLmMgYi9zcmMvYm94L21lbXR4X2VuZ2luZS5jPGJyPmluZGV4IDxzcGFuIGNsYXNzPSJq cy1waG9uZS1udW1iZXIiPjgxNDc1NTc8L3NwYW4+Li40MzAwMGJhIDEwMDY0NDxicj4tLS0gYS9z cmMvYm94L21lbXR4X2VuZ2luZS5jPGJyPisrKyBiL3NyYy9ib3gvbWVtdHhfZW5naW5lLmM8YnI+ QEAgLTEzOTgsNiArMTM5OCw4IEBAIG1lbXR4X2luZGV4X2RlZl9jaGFuZ2VfcmVxdWlyZXNfcmVi dWlsZChzdHJ1Y3QgaW5kZXggKmluZGV4LDxicj4mbmJzcDsgcmV0dXJuIHRydWU7PGJyPiZuYnNw OyBpZiAob2xkX2RlZi0mZ3Q7b3B0cy5mdW5jX2lkICE9IG5ld19kZWYtJmd0O29wdHMuZnVuY19p ZCk8YnI+Jm5ic3A7IHJldHVybiB0cnVlOzxicj4rIGlmIChvbGRfZGVmLSZndDtvcHRzLmhpbnQg IT0gbmV3X2RlZi0mZ3Q7b3B0cy5oaW50KTxicj4rIHJldHVybiB0cnVlOzxicj4mbmJzcDs8YnI+ Jm5ic3A7IGNvbnN0IHN0cnVjdCBrZXlfZGVmICpvbGRfY21wX2RlZiwgKm5ld19jbXBfZGVmOzxi cj4mbmJzcDsgaWYgKGluZGV4X2RlcGVuZHNfb25fcGsoaW5kZXgpKSB7PGJyPmRpZmYgLS1naXQg YS9zcmMvYm94L21lbXR4X3RyZWUuY2MgYi9zcmMvYm94L21lbXR4X3RyZWUuY2M8YnI+aW5kZXgg ZDNiOTkzYi4uMTdkNThjNSAxMDA2NDQ8YnI+LS0tIGEvc3JjL2JveC9tZW10eF90cmVlLmNjPGJy PisrKyBiL3NyYy9ib3gvbWVtdHhfdHJlZS5jYzxicj5AQCAtNDUsMjMgKzQ1LDUxIEBAPGJyPiZu YnNwOy8qKjxicj4mbmJzcDsmbmJzcDsqIFN0cnVjdCB0aGF0IGlzIHVzZWQgYXMgYSBrZXkgaW4g QlBTIHRyZWUgZGVmaW5pdGlvbi48YnI+Jm5ic3A7Jm5ic3A7Ki88YnI+LXN0cnVjdCBtZW10eF90 cmVlX2tleV9kYXRhIHs8YnI+K3N0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhX2NvbW1vbiB7PGJy PiZuYnNwOyAvKiogU2VxdWVuY2Ugb2YgbXNncGFja2VkIHNlYXJjaCBmaWVsZHMuICovPGJyPiZu YnNwOyBjb25zdCBjaGFyICprZXk7PGJyPiZuYnNwOyAvKiogTnVtYmVyIG9mIG1zZ3BhY2tlZCBz ZWFyY2ggZmllbGRzLiAqLzxicj4mbmJzcDsgdWludDMyX3QgcGFydF9jb3VudDs8YnI+K307PGJy Pis8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPitzdHJ1Y3QgbWVtdHhfdHJl ZV9rZXlfZGF0YTs8YnI+Kzxicj4rdGVtcGxhdGUgJmx0OyZndDs8YnI+K3N0cnVjdCBtZW10eF90 cmVlX2tleV9kYXRhJmx0OzAmZ3Q7IDogbWVtdHhfdHJlZV9rZXlfZGF0YV9jb21tb24gezxicj4r IHN0YXRpYyBjb25zdGV4cHIgaGludF90IGhpbnQgPSBISU5UX05PTkU7PGJyPisgdm9pZCBzZXRf aGludChoaW50X3QpIHsgYXNzZXJ0KGZhbHNlKTsgfTxicj4rfTs8YnI+Kzxicj4rdGVtcGxhdGUg Jmx0OyZndDs8YnI+K3N0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhJmx0OzEmZ3Q7IDogbWVtdHhf dHJlZV9rZXlfZGF0YV9jb21tb24gezxicj4mbmJzcDsgLyoqIENvbXBhcmlzb24gaGludCwgc2Vl IHR1cGxlX2hpbnQoKS4gKi88YnI+Jm5ic3A7IGhpbnRfdCBoaW50Ozxicj4rIHZvaWQgc2V0X2hp bnQoaGludF90IGgpIHsgaGludCA9IGg7IH08YnI+Jm5ic3A7fTs8YnI+Jm5ic3A7PGJyPiZuYnNw Oy8qKjxicj4mbmJzcDsmbmJzcDsqIFN0cnVjdCB0aGF0IGlzIHVzZWQgYXMgYSBlbGVtIGluIEJQ UyB0cmVlIGRlZmluaXRpb24uPGJyPiZuYnNwOyZuYnNwOyovPGJyPi1zdHJ1Y3QgbWVtdHhfdHJl ZV9kYXRhIHs8YnI+K3N0cnVjdCBtZW10eF90cmVlX2RhdGFfY29tbW9uIHs8YnI+Jm5ic3A7IC8q IFR1cGxlIHRoYXQgdGhpcyBub2RlIGlzIHJlcHJlc2VudHMuICovPGJyPiZuYnNwOyBzdHJ1Y3Qg dHVwbGUgKnR1cGxlOzxicj4rfTs8YnI+Kzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZn dDs8YnI+K3N0cnVjdCBtZW10eF90cmVlX2RhdGE7PGJyPis8YnI+K3RlbXBsYXRlICZsdDsmZ3Q7 PGJyPitzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0OzAmZ3Q7IDogbWVtdHhfdHJlZV9kYXRhX2Nv bW1vbiB7PGJyPisgc3RhdGljIGNvbnN0ZXhwciBoaW50X3QgaGludCA9IEhJTlRfTk9ORTs8YnI+ KyB2b2lkIHNldF9oaW50KGhpbnRfdCkgeyBhc3NlcnQoZmFsc2UpOyB9PGJyPit9Ozxicj4rPGJy Pit0ZW1wbGF0ZSAmbHQ7Jmd0Ozxicj4rc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDsxJmd0OyA6 IG1lbXR4X3RyZWVfZGF0YSZsdDswJmd0OyB7PGJyPiZuYnNwOyAvKiogQ29tcGFyaXNvbiBoaW50 LCBzZWUga2V5X2hpbnQoKS4gKi88YnI+Jm5ic3A7IGhpbnRfdCBoaW50Ozxicj4rIHZvaWQgc2V0 X2hpbnQoaGludF90IGgpIHsgaGludCA9IGg7IH08YnI+Jm5ic3A7fTs8YnI+Jm5ic3A7PGJyPiZu YnNwOy8qKjxicj5AQCAtNzMsOCArMTAxLDggQEAgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSB7PGJy PiZuYnNwOyZuYnNwOyogQHJldHZhbCBmYWxzZSAtIE90aGVyd2lzZS48YnI+Jm5ic3A7Jm5ic3A7 Ki88YnI+Jm5ic3A7c3RhdGljIGJvb2w8YnI+LW1lbXR4X3RyZWVfZGF0YV9pc19lcXVhbChjb25z dCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICphLDxicj4tIGNvbnN0IHN0cnVjdCBtZW10eF90cmVl X2RhdGEgKmIpPGJyPittZW10eF90cmVlX2RhdGFfaXNfZXF1YWwoY29uc3Qgc3RydWN0IG1lbXR4 X3RyZWVfZGF0YV9jb21tb24gKmEsPGJyPisgY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YV9j b21tb24gKmIpPGJyPiZuYnNwO3s8YnI+Jm5ic3A7IHJldHVybiBhLSZndDt0dXBsZSA9PSBiLSZn dDt0dXBsZTs8YnI+Jm5ic3A7fTxicj5AQCAtODksMTIgKzExNywyOCBAQCBtZW10eF90cmVlX2Rh dGFfaXNfZXF1YWwoY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqYSw8YnI+Jm5ic3A7IChi KS0mZ3Q7cGFydF9jb3VudCwgKGIpLSZndDtoaW50LCBhcmcpPGJyPiZuYnNwOyNkZWZpbmUgQlBT X1RSRUVfSVNfSURFTlRJQ0FMKGEsIGIpIG1lbXR4X3RyZWVfZGF0YV9pc19lcXVhbCgmYW1wO2Es ICZhbXA7Yik8YnI+Jm5ic3A7I2RlZmluZSBCUFNfVFJFRV9OT19ERUJVRyAxPGJyPi0jZGVmaW5l IGJwc190cmVlX2VsZW1fdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhPGJyPi0jZGVmaW5lIGJwc190 cmVlX2tleV90IHN0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhICo8YnI+Jm5ic3A7I2RlZmluZSBi cHNfdHJlZV9hcmdfdCBzdHJ1Y3Qga2V5X2RlZiAqPGJyPiZuYnNwOzxicj4rI2RlZmluZSBCUFNf VFJFRV9OQU1FU1BBQ0UgTlNfTk9fSElOVDxicj4rI2RlZmluZSBicHNfdHJlZV9lbGVtX3Qgc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSZsdDswJmd0Ozxicj4rI2RlZmluZSBicHNfdHJlZV9rZXlfdCBz dHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSZsdDswJmd0OyAqPGJyPis8YnI+Jm5ic3A7I2luY2x1 ZGUgInNhbGFkL2Jwc190cmVlLmgiPGJyPiZuYnNwOzxicj4rI3VuZGVmIEJQU19UUkVFX05BTUVT UEFDRTxicj4rI3VuZGVmIGJwc190cmVlX2VsZW1fdDxicj4rI3VuZGVmIGJwc190cmVlX2tleV90 PGJyPis8YnI+KyNkZWZpbmUgQlBTX1RSRUVfTkFNRVNQQUNFIE5TX1VTRV9ISU5UPGJyPisjZGVm aW5lIGJwc190cmVlX2VsZW1fdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0OzEmZ3Q7PGJyPisj ZGVmaW5lIGJwc190cmVlX2tleV90IHN0cnVjdCBtZW10eF90cmVlX2tleV9kYXRhJmx0OzEmZ3Q7 ICo8YnI+Kzxicj4rI2luY2x1ZGUgInNhbGFkL2Jwc190cmVlLmgiPGJyPis8YnI+KyN1bmRlZiBC UFNfVFJFRV9OQU1FU1BBQ0U8YnI+KyN1bmRlZiBicHNfdHJlZV9lbGVtX3Q8YnI+KyN1bmRlZiBi cHNfdHJlZV9rZXlfdDxicj4rPGJyPiZuYnNwOyN1bmRlZiBCUFNfVFJFRV9OQU1FPGJyPiZuYnNw OyN1bmRlZiBCUFNfVFJFRV9CTE9DS19TSVpFPGJyPiZuYnNwOyN1bmRlZiBCUFNfVFJFRV9FWFRF TlRfU0laRTxicj5AQCAtMTAyLDY2ICsxNDYsMTE5IEBAIG1lbXR4X3RyZWVfZGF0YV9pc19lcXVh bChjb25zdCBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICphLDxicj4mbmJzcDsjdW5kZWYgQlBTX1RS RUVfQ09NUEFSRV9LRVk8YnI+Jm5ic3A7I3VuZGVmIEJQU19UUkVFX0lTX0lERU5USUNBTDxicj4m bmJzcDsjdW5kZWYgQlBTX1RSRUVfTk9fREVCVUc8YnI+LSN1bmRlZiBicHNfdHJlZV9lbGVtX3Q8 YnI+LSN1bmRlZiBicHNfdHJlZV9rZXlfdDxicj4mbmJzcDsjdW5kZWYgYnBzX3RyZWVfYXJnX3Q8 YnI+Jm5ic3A7PGJyPit1c2luZyBuYW1lc3BhY2UgTlNfTk9fSElOVDs8YnI+K3VzaW5nIG5hbWVz cGFjZSBOU19VU0VfSElOVDs8YnI+Kzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8 YnI+K3N0cnVjdCBtZW10eF90cmVlX3NlbGVjdG9yOzxicj4rPGJyPit0ZW1wbGF0ZSAmbHQ7Jmd0 Ozxicj4rc3RydWN0IG1lbXR4X3RyZWVfc2VsZWN0b3ImbHQ7MCZndDsgOiBOU19OT19ISU5UOjpt ZW10eF90cmVlIHt9Ozxicj4rPGJyPit0ZW1wbGF0ZSAmbHQ7Jmd0Ozxicj4rc3RydWN0IG1lbXR4 X3RyZWVfc2VsZWN0b3ImbHQ7MSZndDsgOiBOU19VU0VfSElOVDo6bWVtdHhfdHJlZSB7fTs8YnI+ Kzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+K3VzaW5nIG1lbXR4X3RyZWVf dCA9IHN0cnVjdCBtZW10eF90cmVlX3NlbGVjdG9yJmx0O1VTRV9ISU5UJmd0Ozs8YnI+Kzxicj4r dGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+K3N0cnVjdCBtZW10eF90cmVlX2l0ZXJh dG9yX3NlbGVjdG9yOzxicj4rPGJyPit0ZW1wbGF0ZSAmbHQ7Jmd0Ozxicj4rc3RydWN0IG1lbXR4 X3RyZWVfaXRlcmF0b3Jfc2VsZWN0b3ImbHQ7MCZndDsgezxicj4rIHVzaW5nIHR5cGUgPSBOU19O T19ISU5UOjptZW10eF90cmVlX2l0ZXJhdG9yOzxicj4rfTs8YnI+Kzxicj4rdGVtcGxhdGUgJmx0 OyZndDs8YnI+K3N0cnVjdCBtZW10eF90cmVlX2l0ZXJhdG9yX3NlbGVjdG9yJmx0OzEmZ3Q7IHs8 YnI+KyB1c2luZyB0eXBlID0gTlNfVVNFX0hJTlQ6Om1lbXR4X3RyZWVfaXRlcmF0b3I7PGJyPit9 Ozxicj4rPGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4rdXNpbmcgbWVtdHhf dHJlZV9pdGVyYXRvcl90ID0gdHlwZW5hbWUgbWVtdHhfdHJlZV9pdGVyYXRvcl9zZWxlY3RvciZs dDtVU0VfSElOVCZndDs6OnR5cGU7PGJyPis8YnI+K3N0YXRpYyB2b2lkPGJyPitpbnZhbGlkYXRl X3RyZWVfaXRlcmF0b3IoTlNfTk9fSElOVDo6bWVtdHhfdHJlZV9pdGVyYXRvciAqaXRyKTxicj4r ezxicj4rICppdHIgPSBOU19OT19ISU5UOjptZW10eF90cmVlX2ludmFsaWRfaXRlcmF0b3IoKTs8 YnI+K308YnI+Kzxicj4rc3RhdGljIHZvaWQ8YnI+K2ludmFsaWRhdGVfdHJlZV9pdGVyYXRvcihO U19VU0VfSElOVDo6bWVtdHhfdHJlZV9pdGVyYXRvciAqaXRyKTxicj4rezxicj4rICppdHIgPSBO U19VU0VfSElOVDo6bWVtdHhfdHJlZV9pbnZhbGlkX2l0ZXJhdG9yKCk7PGJyPit9PGJyPis8YnI+ K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0cnVjdCBtZW10eF90cmVl X2luZGV4IHs8YnI+Jm5ic3A7IHN0cnVjdCBpbmRleCBiYXNlOzxicj4tIHN0cnVjdCBtZW10eF90 cmVlIHRyZWU7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqYnVpbGRfYXJyYXk7PGJyPisg bWVtdHhfdHJlZV90Jmx0O1VTRV9ISU5UJmd0OyB0cmVlOzxicj4rIHN0cnVjdCBtZW10eF90cmVl X2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpidWlsZF9hcnJheTs8YnI+Jm5ic3A7IHNpemVfdCBidWls ZF9hcnJheV9zaXplLCBidWlsZF9hcnJheV9hbGxvY19zaXplOzxicj4mbmJzcDsgc3RydWN0IG1l bXR4X2djX3Rhc2sgZ2NfdGFzazs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pdGVyYXRvciBnY19p dGVyYXRvcjs8YnI+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3QmbHQ7VVNFX0hJTlQmZ3Q7IGdjX2l0 ZXJhdG9yOzxicj4mbmJzcDt9Ozxicj4mbmJzcDs8YnI+Jm5ic3A7Lyoge3t7IFV0aWxpdGllcy4g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi88YnI+Jm5i c3A7PGJyPit0ZW1wbGF0ZSAmbHQ7Y2xhc3MgVFJFRSZndDs8YnI+Jm5ic3A7c3RhdGljIGlubGlu ZSBzdHJ1Y3Qga2V5X2RlZiAqPGJyPi1tZW10eF90cmVlX2NtcF9kZWYoc3RydWN0IG1lbXR4X3Ry ZWUgKnRyZWUpPGJyPittZW10eF90cmVlX2NtcF9kZWYoVFJFRSAqdHJlZSk8YnI+Jm5ic3A7ezxi cj4mbmJzcDsgcmV0dXJuIHRyZWUtJmd0O2FyZzs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3Rl bXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0YXRpYyBpbnQ8YnI+Jm5ic3A7 bWVtdHhfdHJlZV9xY29tcGFyZShjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkICpiLCB2b2lkICpj KTxicj4mbmJzcDt7PGJyPi0gY29uc3Qgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqZGF0YV9hID0g KHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKilhOzxicj4tIGNvbnN0IHN0cnVjdCBtZW10eF90cmVl X2RhdGEgKmRhdGFfYiA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICopYjs8YnI+KyBjb25zdCBz dHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqZGF0YV9hID08YnI+KyAoc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKilhOzxicj4rIGNvbnN0IHN0cnVj dCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpkYXRhX2IgPTxicj4rIChzdHJ1Y3Qg bWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqKWI7PGJyPiZuYnNwOyBzdHJ1Y3Qga2V5 X2RlZiAqa2V5X2RlZiA9IChzdHJ1Y3Qga2V5X2RlZiAqKWM7PGJyPiZuYnNwOyByZXR1cm4gdHVw bGVfY29tcGFyZShkYXRhX2EtJmd0O3R1cGxlLCBkYXRhX2EtJmd0O2hpbnQsIGRhdGFfYi0mZ3Q7 dHVwbGUsPGJyPiZuYnNwOyBkYXRhX2ItJmd0O2hpbnQsIGtleV9kZWYpOzxicj4mbmJzcDt9PGJy PiZuYnNwOzxicj4mbmJzcDsvKiB7e3sgTWVtdHhUcmVlIEl0ZXJhdG9ycyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElO VCZndDs8YnI+Jm5ic3A7c3RydWN0IHRyZWVfaXRlcmF0b3Igezxicj4mbmJzcDsgc3RydWN0IGl0 ZXJhdG9yIGJhc2U7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgdHJlZV9pdGVyYXRv cjs8YnI+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3QmbHQ7VVNFX0hJTlQmZ3Q7IHRyZWVfaXRlcmF0 b3I7PGJyPiZuYnNwOyBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZTs8YnI+LSBzdHJ1Y3QgbWVtdHhf dHJlZV9rZXlfZGF0YSBrZXlfZGF0YTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIGN1cnJl bnQ7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfa2V5X2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7IGtleV9k YXRhOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7IGN1cnJlbnQ7 PGJyPiZuYnNwOyAvKiogTWVtb3J5IHBvb2wgdGhlIGl0ZXJhdG9yIHdhcyBhbGxvY2F0ZWQgZnJv bS4gKi88YnI+Jm5ic3A7IHN0cnVjdCBtZW1wb29sICpwb29sOzxicj4mbmJzcDt9Ozxicj4mbmJz cDs8YnI+LXN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yKSAmbHQ7PSBN RU1UWF9JVEVSQVRPUl9TSVpFLDxicj4tICJzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3IpIG11 c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsICI8YnI+K3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVj dCB0cmVlX2l0ZXJhdG9yJmx0OzAmZ3Q7KSAmbHQ7PSBNRU1UWF9JVEVSQVRPUl9TSVpFLDxicj4r ICJzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7MCZndDspIG11c3QgYmUgbGVzcyB0aGFu IG9yIGVxdWFsICI8YnI+KyAidG8gTUVNVFhfSVRFUkFUT1JfU0laRSIpOzxicj4rc3RhdGljX2Fz c2VydChzaXplb2Yoc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7MSZndDspICZsdDs9IE1FTVRYX0lU RVJBVE9SX1NJWkUsPGJyPisgInNpemVvZihzdHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDsxJmd0Oykg bXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgIjxicj4mbmJzcDsgInRvIE1FTVRYX0lURVJBVE9S X1NJWkUiKTs8YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4m bmJzcDtzdGF0aWMgdm9pZDxicj4mbmJzcDt0cmVlX2l0ZXJhdG9yX2ZyZWUoc3RydWN0IGl0ZXJh dG9yICppdGVyYXRvcik7PGJyPiZuYnNwOzxicj4tc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJlZV9p dGVyYXRvciAqPGJyPi10cmVlX2l0ZXJhdG9yKHN0cnVjdCBpdGVyYXRvciAqaXQpPGJyPit0ZW1w bGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4rc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJlZV9p dGVyYXRvciZsdDtVU0VfSElOVCZndDsgKjxicj4rZ2V0X3RyZWVfaXRlcmF0b3Ioc3RydWN0IGl0 ZXJhdG9yICppdCk8YnI+Jm5ic3A7ezxicj4tIGFzc2VydChpdC0mZ3Q7ZnJlZSA9PSB0cmVlX2l0 ZXJhdG9yX2ZyZWUpOzxicj4tIHJldHVybiAoc3RydWN0IHRyZWVfaXRlcmF0b3IgKikgaXQ7PGJy PisgYXNzZXJ0KGl0LSZndDtmcmVlID09ICZhbXA7dHJlZV9pdGVyYXRvcl9mcmVlJmx0O1VTRV9I SU5UJmd0Oyk7PGJyPisgcmV0dXJuIChzdHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZn dDsgKikgaXQ7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9I SU5UJmd0Ozxicj4mbmJzcDtzdGF0aWMgdm9pZDxicj4mbmJzcDt0cmVlX2l0ZXJhdG9yX2ZyZWUo c3RydWN0IGl0ZXJhdG9yICppdGVyYXRvcik8YnI+Jm5ic3A7ezxicj4tIHN0cnVjdCB0cmVlX2l0 ZXJhdG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOzxicj4rIHN0cnVjdCB0cmVlX2l0 ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyAqaXQgPSBnZXRfdHJlZV9pdGVyYXRvciZsdDtVU0VfSElO VCZndDsoaXRlcmF0b3IpOzxicj4mbmJzcDsgc3RydWN0IHR1cGxlICp0dXBsZSA9IGl0LSZndDtj dXJyZW50LnR1cGxlOzxicj4mbmJzcDsgaWYgKHR1cGxlICE9IE5VTEwpPGJyPiZuYnNwOyB0dXBs ZV91bnJlZih0dXBsZSk7PGJyPkBAIC0xNzYsMTQgKzI3MywxNSBAQCB0cmVlX2l0ZXJhdG9yX2R1 bW1pZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZu YnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQg VVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0YXRpYyBpbnQ8YnI+Jm5ic3A7dHJlZV9pdGVyYXRvcl9u ZXh0X2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxi cj4mbmJzcDt7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID08YnI+LSAoc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXggKilpdGVyYXRvci0mZ3Q7aW5kZXg7PGJyPi0gc3RydWN0IHRy ZWVfaXRlcmF0b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7PGJyPisgc3RydWN0IG1l bXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPisgKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWl0ZXJhdG9yLSZndDtpbmRleDs8YnI+KyBz dHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID0gZ2V0X3RyZWVfaXRlcmF0 b3ImbHQ7VVNFX0hJTlQmZ3Q7KGl0ZXJhdG9yKTs8YnI+Jm5ic3A7IGFzc2VydChpdC0mZ3Q7Y3Vy cmVudC50dXBsZSAhPSBOVUxMKTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpjaGVjayA9 PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKmNoZWNrID08YnI+ Jm5ic3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmFtcDtpbmRleC0mZ3Q7dHJlZSwg JmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZuYnNwOyBpZiAoY2hlY2sgPT0gTlVMTCB8 fCAhbWVtdHhfdHJlZV9kYXRhX2lzX2VxdWFsKGNoZWNrLCAmYW1wO2l0LSZndDtjdXJyZW50KSkg ezxicj4mbmJzcDsgaXQtJmd0O3RyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX3VwcGVyX2JvdW5k X2VsZW0oJmFtcDtpbmRleC0mZ3Q7dHJlZSw8YnI+QEAgLTE5Miw3ICsyOTAsNyBAQCB0cmVlX2l0 ZXJhdG9yX25leHRfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUg KipyZXQpPGJyPiZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX25leHQoJmFtcDtpbmRleC0mZ3Q7 dHJlZSwgJmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZuYnNwOyB9PGJyPiZuYnNwOyB0 dXBsZV91bnJlZihpdC0mZ3Q7Y3VycmVudC50dXBsZSk7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVf ZGF0YSAqcmVzID08YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAq cmVzID08YnI+Jm5ic3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmFtcDtpbmRleC0m Z3Q7dHJlZSwgJmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZuYnNwOyBpZiAocmVzID09 IE5VTEwpIHs8YnI+Jm5ic3A7IGl0ZXJhdG9yLSZndDtuZXh0ID0gdHJlZV9pdGVyYXRvcl9kdW1t aWU7PGJyPkBAIC0yMDYsMTQgKzMwNCwxNSBAQCB0cmVlX2l0ZXJhdG9yX25leHRfYmFzZShzdHJ1 Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZuYnNwOyByZXR1 cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQm Z3Q7PGJyPiZuYnNwO3N0YXRpYyBpbnQ8YnI+Jm5ic3A7dHJlZV9pdGVyYXRvcl9wcmV2X2Jhc2Uo c3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mbmJzcDt7 PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID08YnI+LSAoc3RydWN0IG1lbXR4 X3RyZWVfaW5kZXggKilpdGVyYXRvci0mZ3Q7aW5kZXg7PGJyPi0gc3RydWN0IHRyZWVfaXRlcmF0 b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVf aW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPisgKHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWl0ZXJhdG9yLSZndDtpbmRleDs8YnI+KyBzdHJ1Y3QgdHJl ZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID0gZ2V0X3RyZWVfaXRlcmF0b3ImbHQ7VVNF X0hJTlQmZ3Q7KGl0ZXJhdG9yKTs8YnI+Jm5ic3A7IGFzc2VydChpdC0mZ3Q7Y3VycmVudC50dXBs ZSAhPSBOVUxMKTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpjaGVjayA9PGJyPisgc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKmNoZWNrID08YnI+Jm5ic3A7IG1l bXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmFtcDtpbmRleC0mZ3Q7dHJlZSwgJmFtcDtpdC0m Z3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZuYnNwOyBpZiAoY2hlY2sgPT0gTlVMTCB8fCAhbWVtdHhf dHJlZV9kYXRhX2lzX2VxdWFsKGNoZWNrLCAmYW1wO2l0LSZndDtjdXJyZW50KSkgezxicj4mbmJz cDsgaXQtJmd0O3RyZWVfaXRlcmF0b3IgPSBtZW10eF90cmVlX2xvd2VyX2JvdW5kX2VsZW0oJmFt cDtpbmRleC0mZ3Q7dHJlZSw8YnI+QEAgLTIyMSw3ICszMjAsNyBAQCB0cmVlX2l0ZXJhdG9yX3By ZXZfYmFzZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJy PiZuYnNwOyB9PGJyPiZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX3ByZXYoJmFtcDtpbmRleC0m Z3Q7dHJlZSwgJmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZuYnNwOyB0dXBsZV91bnJl ZihpdC0mZ3Q7Y3VycmVudC50dXBsZSk7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVz ID08YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqcmVzID08YnI+ Jm5ic3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2VsZW0oJmFtcDtpbmRleC0mZ3Q7dHJlZSwg JmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPiZuYnNwOyBpZiAoIXJlcykgezxicj4mbmJz cDsgaXRlcmF0b3ItJmd0O25leHQgPSB0cmVlX2l0ZXJhdG9yX2R1bW1pZTs8YnI+QEAgLTIzNSwx NCArMzM0LDE1IEBAIHRyZWVfaXRlcmF0b3JfcHJldl9iYXNlKHN0cnVjdCBpdGVyYXRvciAqaXRl cmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jm5ic3A7IHJldHVybiAwOzxicj4mbmJzcDt9 PGJyPiZuYnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jm5ic3A7c3Rh dGljIGludDxicj4mbmJzcDt0cmVlX2l0ZXJhdG9yX25leHRfZXF1YWxfYmFzZShzdHJ1Y3QgaXRl cmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZuYnNwO3s8YnI+LSBzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPTxicj4tIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRl eCAqKWl0ZXJhdG9yLSZndDtpbmRleDs8YnI+LSBzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqaXQgPSB0 cmVlX2l0ZXJhdG9yKGl0ZXJhdG9yKTs8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtV U0VfSElOVCZndDsgKmluZGV4ID08YnI+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNF X0hJTlQmZ3Q7ICopaXRlcmF0b3ItJmd0O2luZGV4Ozxicj4rIHN0cnVjdCB0cmVlX2l0ZXJhdG9y Jmx0O1VTRV9ISU5UJmd0OyAqaXQgPSBnZXRfdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDso aXRlcmF0b3IpOzxicj4mbmJzcDsgYXNzZXJ0KGl0LSZndDtjdXJyZW50LnR1cGxlICE9IE5VTEwp Ozxicj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKmNoZWNrID08YnI+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqY2hlY2sgPTxicj4mbmJzcDsgbWVtdHhfdHJlZV9p dGVyYXRvcl9nZXRfZWxlbSgmYW1wO2luZGV4LSZndDt0cmVlLCAmYW1wO2l0LSZndDt0cmVlX2l0 ZXJhdG9yKTs8YnI+Jm5ic3A7IGlmIChjaGVjayA9PSBOVUxMIHx8ICFtZW10eF90cmVlX2RhdGFf aXNfZXF1YWwoY2hlY2ssICZhbXA7aXQtJmd0O2N1cnJlbnQpKSB7PGJyPiZuYnNwOyBpdC0mZ3Q7 dHJlZV9pdGVyYXRvciA9IG1lbXR4X3RyZWVfdXBwZXJfYm91bmRfZWxlbSgmYW1wO2luZGV4LSZn dDt0cmVlLDxicj5AQCAtMjUxLDcgKzM1MSw3IEBAIHRyZWVfaXRlcmF0b3JfbmV4dF9lcXVhbF9i YXNlKHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jm5i c3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfbmV4dCgmYW1wO2luZGV4LSZndDt0cmVlLCAmYW1wO2l0 LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jm5ic3A7IH08YnI+Jm5ic3A7IHR1cGxlX3VucmVmKGl0 LSZndDtjdXJyZW50LnR1cGxlKTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPTxi cj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpyZXMgPTxicj4mbmJz cDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9nZXRfZWxlbSgmYW1wO2luZGV4LSZndDt0cmVlLCAmYW1w O2l0LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jm5ic3A7IC8qIFVzZSB1c2VyIGtleSBkZWYgdG8g c2F2ZSBhIGZldyBsb29wcy4gKi88YnI+Jm5ic3A7IGlmIChyZXMgPT0gTlVMTCB8fDxicj5AQCAt MjcxLDE0ICszNzEsMTUgQEAgdHJlZV9pdGVyYXRvcl9uZXh0X2VxdWFsX2Jhc2Uoc3RydWN0IGl0 ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mbmJzcDsgcmV0dXJuIDA7 PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxi cj4mbmJzcDtzdGF0aWMgaW50PGJyPiZuYnNwO3RyZWVfaXRlcmF0b3JfcHJldl9lcXVhbF9iYXNl KHN0cnVjdCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jm5ic3A7 ezxicj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9PGJyPi0gKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4ICopaXRlcmF0b3ItJmd0O2luZGV4Ozxicj4tIHN0cnVjdCB0cmVlX2l0ZXJh dG9yICppdCA9IHRyZWVfaXRlcmF0b3IoaXRlcmF0b3IpOzxicj4rIHN0cnVjdCBtZW10eF90cmVl X2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCZsdDtVU0VfSElOVCZndDsgKilpdGVyYXRvci0mZ3Q7aW5kZXg7PGJyPisgc3RydWN0IHRy ZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7ICppdCA9IGdldF90cmVlX2l0ZXJhdG9yJmx0O1VT RV9ISU5UJmd0OyhpdGVyYXRvcik7PGJyPiZuYnNwOyBhc3NlcnQoaXQtJmd0O2N1cnJlbnQudHVw bGUgIT0gTlVMTCk7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqY2hlY2sgPTxicj4rIHN0 cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpjaGVjayA9PGJyPiZuYnNwOyBt ZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZhbXA7aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQt Jmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mbmJzcDsgaWYgKGNoZWNrID09IE5VTEwgfHwgIW1lbXR4 X3RyZWVfZGF0YV9pc19lcXVhbChjaGVjaywgJmFtcDtpdC0mZ3Q7Y3VycmVudCkpIHs8YnI+Jm5i c3A7IGl0LSZndDt0cmVlX2l0ZXJhdG9yID0gbWVtdHhfdHJlZV9sb3dlcl9ib3VuZF9lbGVtKCZh bXA7aW5kZXgtJmd0O3RyZWUsPGJyPkBAIC0yODYsNyArMzg3LDcgQEAgdHJlZV9pdGVyYXRvcl9w cmV2X2VxdWFsX2Jhc2Uoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoq cmV0KTxicj4mbmJzcDsgfTxicj4mbmJzcDsgbWVtdHhfdHJlZV9pdGVyYXRvcl9wcmV2KCZhbXA7 aW5kZXgtJmd0O3RyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mbmJzcDsgdHVw bGVfdW5yZWYoaXQtJmd0O2N1cnJlbnQudHVwbGUpOzxicj4tIHN0cnVjdCBtZW10eF90cmVlX2Rh dGEgKnJlcyA9PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnJl cyA9PGJyPiZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKCZhbXA7aW5kZXgtJmd0 O3RyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mbmJzcDsgLyogVXNlIHVzZXIg a2V5IGRlZiB0byBzYXZlIGEgZmV3IGxvb3BzLiAqLzxicj4mbmJzcDsgaWYgKHJlcyA9PSBOVUxM IHx8PGJyPkBAIC0zMDcsMjggKzQwOCwzMCBAQCB0cmVlX2l0ZXJhdG9yX3ByZXZfZXF1YWxfYmFz ZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZuYnNw O308YnI+Jm5ic3A7PGJyPiZuYnNwOyNkZWZpbmUgV1JBUF9JVEVSQVRPUl9NRVRIT0QobmFtZSkg XDxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDsgXDxicj4mbmJzcDtzdGF0aWMgaW50 IFw8YnI+Jm5ic3A7bmFtZShzdHJ1Y3QgaXRlcmF0b3IgKml0ZXJhdG9yLCBzdHJ1Y3QgdHVwbGUg KipyZXQpIFw8YnI+Jm5ic3A7eyBcPGJyPi0gc3RydWN0IG1lbXR4X3RyZWUgKnRyZWUgPSBcPGJy Pi0gJmFtcDsoKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopaXRlcmF0b3ItJmd0O2luZGV4KS0m Z3Q7dHJlZTsgXDxicj4tIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICppdCA9IHRyZWVfaXRlcmF0b3Io aXRlcmF0b3IpOyBcPGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgKnRpID0gJmFtcDtp dC0mZ3Q7dHJlZV9pdGVyYXRvcjsgXDxicj4rIG1lbXR4X3RyZWVfdCZsdDtVU0VfSElOVCZndDsg KnRyZWUgPSBcPGJyPisgJmFtcDsoKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5U Jmd0OyAqKWl0ZXJhdG9yLSZndDtpbmRleCktJmd0O3RyZWU7IFw8YnI+KyBzdHJ1Y3QgdHJlZV9p dGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID0gXDxicj4rIGdldF90cmVlX2l0ZXJhdG9yJmx0 O1VTRV9ISU5UJmd0OyhpdGVyYXRvcik7IFw8YnI+KyBtZW10eF90cmVlX2l0ZXJhdG9yX3QmbHQ7 VVNFX0hJTlQmZ3Q7ICp0aSA9ICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3I7IFw8YnI+Jm5ic3A7 IHVpbnQzMl90IGlpZCA9IGl0ZXJhdG9yLSZndDtpbmRleC0mZ3Q7ZGVmLSZndDtpaWQ7IFw8YnI+ Jm5ic3A7IGJvb2wgaXNfbXVsdGlrZXkgPSBpdGVyYXRvci0mZ3Q7aW5kZXgtJmd0O2RlZi0mZ3Q7 a2V5X2RlZi0mZ3Q7aXNfbXVsdGlrZXk7IFw8YnI+Jm5ic3A7IHN0cnVjdCB0eG4gKnR4biA9IGlu X3R4bigpOyBcPGJyPiZuYnNwOyBzdHJ1Y3Qgc3BhY2UgKnNwYWNlID0gc3BhY2VfYnlfaWQoaXRl cmF0b3ItJmd0O3NwYWNlX2lkKTsgXDxicj4mbmJzcDsgYm9vbCBpc19ydyA9IHR4biAhPSBOVUxM OyBcPGJyPiZuYnNwOyBkbyB7IFw8YnI+LSBpbnQgcmMgPSBuYW1lIyNfYmFzZShpdGVyYXRvciwg cmV0KTsgXDxicj4rIGludCByYyA9IG5hbWUjI19iYXNlJmx0O1VTRV9ISU5UJmd0OyhpdGVyYXRv ciwgcmV0KTsgXDxicj4mbmJzcDsgaWYgKHJjICE9IDAgfHwgKnJldCA9PSBOVUxMKSBcPGJyPiZu YnNwOyByZXR1cm4gcmM7IFw8YnI+Jm5ic3A7IHVpbnQzMl90IG1rX2luZGV4ID0gMDsgXDxicj4m bmJzcDsgaWYgKGlzX211bHRpa2V5KSB7IFw8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpj aGVjayA9IFw8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqY2hl Y2sgPSBcPGJyPiZuYnNwOyBtZW10eF90cmVlX2l0ZXJhdG9yX2dldF9lbGVtKHRyZWUsIHRpKTsg XDxicj4mbmJzcDsgYXNzZXJ0KGNoZWNrICE9IE5VTEwpOyBcPGJyPi0gbWtfaW5kZXggPSBjaGVj ay0mZ3Q7aGludDsgXDxicj4rIG1rX2luZGV4ID0gKHVpbnQzMl90KWNoZWNrLSZndDtoaW50OyBc PGJyPiZuYnNwOyB9IFw8YnI+Jm5ic3A7ICpyZXQgPSBtZW10eF90eF90dXBsZV9jbGFyaWZ5KHR4 biwgc3BhY2UsICpyZXQsIFw8YnI+Jm5ic3A7IGlpZCwgbWtfaW5kZXgsIGlzX3J3KTsgXDxicj5A QCAtMzQ3LDI3ICs0NTAsMjggQEAgV1JBUF9JVEVSQVRPUl9NRVRIT0QodHJlZV9pdGVyYXRvcl9w cmV2X2VxdWFsKTs8YnI+Jm5ic3A7PGJyPiZuYnNwOyN1bmRlZiBXUkFQX0lURVJBVE9SX01FVEhP RDxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0 YXRpYyB2b2lkPGJyPi10cmVlX2l0ZXJhdG9yX3NldF9uZXh0X21ldGhvZChzdHJ1Y3QgdHJlZV9p dGVyYXRvciAqaXQpPGJyPit0cmVlX2l0ZXJhdG9yX3NldF9uZXh0X21ldGhvZChzdHJ1Y3QgdHJl ZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0KTxicj4mbmJzcDt7PGJyPiZuYnNwOyBhc3Nl cnQoaXQtJmd0O2N1cnJlbnQudHVwbGUgIT0gTlVMTCk7PGJyPiZuYnNwOyBzd2l0Y2ggKGl0LSZn dDt0eXBlKSB7PGJyPiZuYnNwOyBjYXNlIElURVJfRVE6PGJyPi0gaXQtJmd0O2Jhc2UubmV4dCA9 IHRyZWVfaXRlcmF0b3JfbmV4dF9lcXVhbDs8YnI+KyBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9p dGVyYXRvcl9uZXh0X2VxdWFsJmx0O1VTRV9ISU5UJmd0Ozs8YnI+Jm5ic3A7IGJyZWFrOzxicj4m bmJzcDsgY2FzZSBJVEVSX1JFUTo8YnI+LSBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRv cl9wcmV2X2VxdWFsOzxicj4rIGl0LSZndDtiYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX3ByZXZf ZXF1YWwmbHQ7VVNFX0hJTlQmZ3Q7Ozxicj4mbmJzcDsgYnJlYWs7PGJyPiZuYnNwOyBjYXNlIElU RVJfQUxMOjxicj4tIGl0LSZndDtiYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX25leHQ7PGJyPisg aXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3JfbmV4dCZsdDtVU0VfSElOVCZndDs7PGJy PiZuYnNwOyBicmVhazs8YnI+Jm5ic3A7IGNhc2UgSVRFUl9MVDo8YnI+Jm5ic3A7IGNhc2UgSVRF Ul9MRTo8YnI+LSBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9wcmV2Ozxicj4rIGl0 LSZndDtiYXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX3ByZXYmbHQ7VVNFX0hJTlQmZ3Q7Ozxicj4m bmJzcDsgYnJlYWs7PGJyPiZuYnNwOyBjYXNlIElURVJfR0U6PGJyPiZuYnNwOyBjYXNlIElURVJf R1Q6PGJyPi0gaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3JfbmV4dDs8YnI+KyBpdC0m Z3Q7YmFzZS5uZXh0ID0gdHJlZV9pdGVyYXRvcl9uZXh0Jmx0O1VTRV9ISU5UJmd0Ozs8YnI+Jm5i c3A7IGJyZWFrOzxicj4mbmJzcDsgZGVmYXVsdDo8YnI+Jm5ic3A7IC8qIFRoZSB0eXBlIHdhcyBj aGVja2VkIGluIGluaXRJdGVyYXRvciAqLzxicj5AQCAtMzc1LDE1ICs0NzksMTYgQEAgdHJlZV9p dGVyYXRvcl9zZXRfbmV4dF9tZXRob2Qoc3RydWN0IHRyZWVfaXRlcmF0b3IgKml0KTxicj4mbmJz cDsgfTxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZn dDs8YnI+Jm5ic3A7c3RhdGljIGludDxicj4mbmJzcDt0cmVlX2l0ZXJhdG9yX3N0YXJ0KHN0cnVj dCBpdGVyYXRvciAqaXRlcmF0b3IsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+Jm5ic3A7ezxicj4m bmJzcDsgKnJldCA9IE5VTEw7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID08 YnI+LSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKilpdGVyYXRvci0mZ3Q7aW5kZXg7PGJyPi0g c3RydWN0IHRyZWVfaXRlcmF0b3IgKml0ID0gdHJlZV9pdGVyYXRvcihpdGVyYXRvcik7PGJyPisg c3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPisgKHN0 cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWl0ZXJhdG9yLSZndDtpbmRl eDs8YnI+KyBzdHJ1Y3QgdHJlZV9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKml0ID0gZ2V0X3Ry ZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7KGl0ZXJhdG9yKTs8YnI+Jm5ic3A7IGl0LSZndDti YXNlLm5leHQgPSB0cmVlX2l0ZXJhdG9yX2R1bW1pZTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZSAq dHJlZSA9ICZhbXA7aW5kZXgtJmd0O3RyZWU7PGJyPisgbWVtdHhfdHJlZV90Jmx0O1VTRV9ISU5U Jmd0OyAqdHJlZSA9ICZhbXA7aW5kZXgtJmd0O3RyZWU7PGJyPiZuYnNwOyBlbnVtIGl0ZXJhdG9y X3R5cGUgdHlwZSA9IGl0LSZndDt0eXBlOzxicj4mbmJzcDsgYm9vbCBleGFjdCA9IGZhbHNlOzxi cj4mbmJzcDsgYXNzZXJ0KGl0LSZndDtjdXJyZW50LnR1cGxlID09IE5VTEwpOzxicj5AQCAtNDIz LDggKzUyOCw4IEBAIHRyZWVfaXRlcmF0b3Jfc3RhcnQoc3RydWN0IGl0ZXJhdG9yICppdGVyYXRv ciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mbmJzcDsgfTxicj4mbmJzcDsgfTxicj4mbmJzcDs8 YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPSBtZW10eF90cmVlX2l0ZXJhdG9yX2dl dF9lbGVtKHRyZWUsPGJyPi0gJmFtcDtpdC0mZ3Q7dHJlZV9pdGVyYXRvcik7PGJyPisgc3RydWN0 IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnJlcyA9PGJyPisgbWVtdHhfdHJlZV9p dGVyYXRvcl9nZXRfZWxlbSh0cmVlLCAmYW1wO2l0LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+Jm5i c3A7IGlmICghcmVzKTxicj4mbmJzcDsgcmV0dXJuIDA7PGJyPiZuYnNwOyAqcmV0ID0gcmVzLSZn dDt0dXBsZTs8YnI+QEAgLTQ1NCwxNCArNTU5LDE2IEBAIHRyZWVfaXRlcmF0b3Jfc3RhcnQoc3Ry dWN0IGl0ZXJhdG9yICppdGVyYXRvciwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mbmJzcDs8YnI+ Jm5ic3A7Lyoge3t7IE1lbXR4VHJlZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLzxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQg VVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0YXRpYyB2b2lkPGJyPi1tZW10eF90cmVlX2luZGV4X2Zy ZWUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4KTxicj4rbWVtdHhfdHJlZV9pbmRleF9m cmVlKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXgpPGJyPiZu YnNwO3s8YnI+Jm5ic3A7IG1lbXR4X3RyZWVfZGVzdHJveSgmYW1wO2luZGV4LSZndDt0cmVlKTs8 YnI+Jm5ic3A7IGZyZWUoaW5kZXgtJmd0O2J1aWxkX2FycmF5KTs8YnI+Jm5ic3A7IGZyZWUoaW5k ZXgpOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZn dDs8YnI+Jm5ic3A7c3RhdGljIHZvaWQ8YnI+Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9nY19ydW4o c3RydWN0IG1lbXR4X2djX3Rhc2sgKnRhc2ssIGJvb2wgKmRvbmUpPGJyPiZuYnNwO3s8YnI+QEAg LTQ3NSwxNCArNTgyLDE0IEBAIG1lbXR4X3RyZWVfaW5kZXhfZ2NfcnVuKHN0cnVjdCBtZW10eF9n Y190YXNrICp0YXNrLCBib29sICpkb25lKTxicj4mbmJzcDsgZW51bSB7IFlJRUxEX0xPT1BTID0g MTAgfTs8YnI+Jm5ic3A7I2VuZGlmPGJyPiZuYnNwOzxicj4tIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4ICppbmRleCA9IGNvbnRhaW5lcl9vZih0YXNrLDxicj4tIHN0cnVjdCBtZW10eF90cmVlX2lu ZGV4LCBnY190YXNrKTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZSAqdHJlZSA9ICZhbXA7aW5kZXgt Jmd0O3RyZWU7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaXRlcmF0b3IgKml0ciA9ICZhbXA7aW5k ZXgtJmd0O2djX2l0ZXJhdG9yOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9I SU5UJmd0OyAqaW5kZXggPSBjb250YWluZXJfb2YodGFzayw8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCZsdDtVU0VfSElOVCZndDssIGdjX3Rhc2spOzxicj4rIG1lbXR4X3RyZWVfdCZsdDtV U0VfSElOVCZndDsgKnRyZWUgPSAmYW1wO2luZGV4LSZndDt0cmVlOzxicj4rIG1lbXR4X3RyZWVf aXRlcmF0b3JfdCZsdDtVU0VfSElOVCZndDsgKml0ciA9ICZhbXA7aW5kZXgtJmd0O2djX2l0ZXJh dG9yOzxicj4mbmJzcDs8YnI+Jm5ic3A7IHVuc2lnbmVkIGludCBsb29wcyA9IDA7PGJyPiZuYnNw OyB3aGlsZSAoIW1lbXR4X3RyZWVfaXRlcmF0b3JfaXNfaW52YWxpZChpdHIpKSB7PGJyPi0gc3Ry dWN0IG1lbXR4X3RyZWVfZGF0YSAqcmVzID08YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0 O1VTRV9ISU5UJmd0OyAqcmVzID08YnI+Jm5ic3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfZ2V0X2Vs ZW0odHJlZSwgaXRyKTs8YnI+Jm5ic3A7IG1lbXR4X3RyZWVfaXRlcmF0b3JfbmV4dCh0cmVlLCBp dHIpOzxicj4mbmJzcDsgdHVwbGVfdW5yZWYocmVzLSZndDt0dXBsZSk7PGJyPkBAIC00OTQsMjMg KzYwMSwzMiBAQCBtZW10eF90cmVlX2luZGV4X2djX3J1bihzdHJ1Y3QgbWVtdHhfZ2NfdGFzayAq dGFzaywgYm9vbCAqZG9uZSk8YnI+Jm5ic3A7ICpkb25lID0gdHJ1ZTs8YnI+Jm5ic3A7fTxicj4m bmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0YXRpYyB2 b2lkPGJyPiZuYnNwO21lbXR4X3RyZWVfaW5kZXhfZ2NfZnJlZShzdHJ1Y3QgbWVtdHhfZ2NfdGFz ayAqdGFzayk8YnI+Jm5ic3A7ezxicj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9 IGNvbnRhaW5lcl9vZih0YXNrLDxicj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4LCBnY190YXNr KTs8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID0g Y29udGFpbmVyX29mKHRhc2ssPGJyPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJ TlQmZ3Q7LCBnY190YXNrKTs8YnI+Jm5ic3A7IG1lbXR4X3RyZWVfaW5kZXhfZnJlZShpbmRleCk7 PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPi1zdGF0aWMgY29uc3Qgc3RydWN0IG1lbXR4X2djX3Rh c2tfdnRhYiBtZW10eF90cmVlX2luZGV4X2djX3Z0YWIgPSB7PGJyPi0gLnJ1biA9IG1lbXR4X3Ry ZWVfaW5kZXhfZ2NfcnVuLDxicj4tIC5mcmVlID0gbWVtdHhfdHJlZV9pbmRleF9nY19mcmVlLDxi cj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+K3N0YXRpYyBzdHJ1Y3QgbWVtdHhf Z2NfdGFza192dGFiICogZ2V0X21lbXR4X3RyZWVfaW5kZXhfZ2NfdnRhYigpPGJyPit7PGJyPisg c3RhdGljIG1lbXR4X2djX3Rhc2tfdnRhYiB0YWIgPTxicj4rIHs8YnI+KyAucnVuID0gbWVtdHhf dHJlZV9pbmRleF9nY19ydW4mbHQ7VVNFX0hJTlQmZ3Q7LDxicj4rIC5mcmVlID0gbWVtdHhfdHJl ZV9pbmRleF9nY19mcmVlJmx0O1VTRV9ISU5UJmd0Oyw8YnI+KyB9Ozxicj4rIHJldHVybiAmYW1w O3RhYjs8YnI+Jm5ic3A7fTs8YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5U Jmd0Ozxicj4mbmJzcDtzdGF0aWMgdm9pZDxicj4mbmJzcDttZW10eF90cmVlX2luZGV4X2Rlc3Ry b3koc3RydWN0IGluZGV4ICpiYXNlKTxicj4mbmJzcDt7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVf aW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8YnI+KyBzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08YnI+KyAoc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopYmFzZTs8YnI+Jm5ic3A7IHN0cnVj dCBtZW10eF9lbmdpbmUgKm1lbXR4ID0gKHN0cnVjdCBtZW10eF9lbmdpbmUgKiliYXNlLSZndDtl bmdpbmU7PGJyPiZuYnNwOyBpZiAoYmFzZS0mZ3Q7ZGVmLSZndDtpaWQgPT0gMCkgezxicj4mbmJz cDsgLyo8YnI+QEAgLTUxOCw3ICs2MzQsNyBAQCBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3koc3Ry dWN0IGluZGV4ICpiYXNlKTxicj4mbmJzcDsgKiBpbiB0aGUgaW5kZXgsIHdoaWNoIG1heSB0YWtl IGEgd2hpbGUuIFNjaGVkdWxlIGE8YnI+Jm5ic3A7ICogYmFja2dyb3VuZCB0YXNrIGluIG9yZGVy IG5vdCB0byBibG9jayB0eCB0aHJlYWQuPGJyPiZuYnNwOyAqLzxicj4tIGluZGV4LSZndDtnY190 YXNrLnZ0YWIgPSAmYW1wO21lbXR4X3RyZWVfaW5kZXhfZ2NfdnRhYjs8YnI+KyBpbmRleC0mZ3Q7 Z2NfdGFzay52dGFiID0gZ2V0X21lbXR4X3RyZWVfaW5kZXhfZ2NfdnRhYiZsdDtVU0VfSElOVCZn dDsoKTs8YnI+Jm5ic3A7IGluZGV4LSZndDtnY19pdGVyYXRvciA9IG1lbXR4X3RyZWVfaXRlcmF0 b3JfZmlyc3QoJmFtcDtpbmRleC0mZ3Q7dHJlZSk7PGJyPiZuYnNwOyBtZW10eF9lbmdpbmVfc2No ZWR1bGVfZ2MobWVtdHgsICZhbXA7aW5kZXgtJmd0O2djX3Rhc2spOzxicj4mbmJzcDsgfSBlbHNl IHs8YnI+QEAgLTUzMCwxMCArNjQ2LDEyIEBAIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveShzdHJ1 Y3QgaW5kZXggKmJhc2UpPGJyPiZuYnNwOyB9PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPit0ZW1w bGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mbmJzcDtzdGF0aWMgdm9pZDxicj4mbmJzcDtt ZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYoc3RydWN0IGluZGV4ICpiYXNlKTxicj4mbmJzcDt7 PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVl X2luZGV4ICopYmFzZTs8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZn dDsgKmluZGV4ID08YnI+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7 ICopYmFzZTs8YnI+Jm5ic3A7IHN0cnVjdCBpbmRleF9kZWYgKmRlZiA9IGJhc2UtJmd0O2RlZjs8 YnI+Jm5ic3A7IC8qPGJyPiZuYnNwOyAqIFdlIHVzZSBleHRlbmRlZCBrZXkgZGVmIGZvciBub24t dW5pcXVlIGFuZCBudWxsYWJsZTxicj5AQCAtNTUzLDUxICs2NzEsNjIgQEAgbWVtdHhfdHJlZV9p bmRleF9kZXBlbmRzX29uX3BrKHN0cnVjdCBpbmRleCAqYmFzZSk8YnI+Jm5ic3A7IHJldHVybiAh ZGVmLSZndDtvcHRzLmlzX3VuaXF1ZSB8fCBkZWYtJmd0O2tleV9kZWYtJmd0O2lzX251bGxhYmxl Ozxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8 YnI+Jm5ic3A7c3RhdGljIHNzaXplX3Q8YnI+Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9zaXplKHN0 cnVjdCBpbmRleCAqYmFzZSk8YnI+Jm5ic3A7ezxicj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4 ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7PGJyPisgc3RydWN0IG1l bXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPisgKHN0cnVjdCBtZW10 eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWJhc2U7PGJyPiZuYnNwOyByZXR1cm4gbWVt dHhfdHJlZV9zaXplKCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxi cj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jm5ic3A7c3RhdGljIHNzaXplX3Q8 YnI+Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9ic2l6ZShzdHJ1Y3QgaW5kZXggKmJhc2UpPGJyPiZu YnNwO3s8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4 X3RyZWVfaW5kZXggKiliYXNlOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9I SU5UJmd0OyAqaW5kZXggPTxicj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElO VCZndDsgKiliYXNlOzxicj4mbmJzcDsgcmV0dXJuIG1lbXR4X3RyZWVfbWVtX3VzZWQoJmFtcDtp bmRleC0mZ3Q7dHJlZSk7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50 IFVTRV9ISU5UJmd0Ozxicj4mbmJzcDtzdGF0aWMgaW50PGJyPiZuYnNwO21lbXR4X3RyZWVfaW5k ZXhfcmFuZG9tKHN0cnVjdCBpbmRleCAqYmFzZSwgdWludDMyX3Qgcm5kLCBzdHJ1Y3QgdHVwbGUg KipyZXN1bHQpPGJyPiZuYnNwO3s8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgg PSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4tIHN0cnVjdCBtZW10eF90cmVl X2RhdGEgKnJlcyA9IG1lbXR4X3RyZWVfcmFuZG9tKCZhbXA7aW5kZXgtJmd0O3RyZWUsIHJuZCk7 PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJy PisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWJhc2U7PGJyPisg c3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnJlcyA9IG1lbXR4X3RyZWVf cmFuZG9tKCZhbXA7aW5kZXgtJmd0O3RyZWUsIHJuZCk7PGJyPiZuYnNwOyAqcmVzdWx0ID0gcmVz ICE9IE5VTEwgPyByZXMtJmd0O3R1cGxlIDogTlVMTDs8YnI+Jm5ic3A7IHJldHVybiAwOzxicj4m bmJzcDt9PGJyPiZuYnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jm5i c3A7c3RhdGljIHNzaXplX3Q8YnI+Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9jb3VudChzdHJ1Y3Qg aW5kZXggKmJhc2UsIGVudW0gaXRlcmF0b3JfdHlwZSB0eXBlLDxicj4mbmJzcDsgY29uc3QgY2hh ciAqa2V5LCB1aW50MzJfdCBwYXJ0X2NvdW50KTxicj4mbmJzcDt7PGJyPiZuYnNwOyBpZiAodHlw ZSA9PSBJVEVSX0FMTCk8YnI+LSByZXR1cm4gbWVtdHhfdHJlZV9pbmRleF9zaXplKGJhc2UpOyAv KiBvcHRpbWl6YXRpb24gKi88YnI+KyByZXR1cm4gbWVtdHhfdHJlZV9pbmRleF9zaXplJmx0O1VT RV9ISU5UJmd0OyhiYXNlKTsgLyogb3B0aW1pemF0aW9uICovPGJyPiZuYnNwOyByZXR1cm4gZ2Vu ZXJpY19pbmRleF9jb3VudChiYXNlLCB0eXBlLCBrZXksIHBhcnRfY291bnQpOzxicj4mbmJzcDt9 PGJyPiZuYnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jm5ic3A7c3Rh dGljIGludDxicj4mbmJzcDttZW10eF90cmVlX2luZGV4X2dldChzdHJ1Y3QgaW5kZXggKmJhc2Us IGNvbnN0IGNoYXIgKmtleSw8YnI+Jm5ic3A7IHVpbnQzMl90IHBhcnRfY291bnQsIHN0cnVjdCB0 dXBsZSAqKnJlc3VsdCk8YnI+Jm5ic3A7ezxicj4mbmJzcDsgYXNzZXJ0KGJhc2UtJmd0O2RlZi0m Z3Q7b3B0cy5pc191bmlxdWUgJmFtcDsmYW1wOzxicj4mbmJzcDsgcGFydF9jb3VudCA9PSBiYXNl LSZndDtkZWYtJmd0O2tleV9kZWYtJmd0O3BhcnRfY291bnQpOzxicj4tIHN0cnVjdCBtZW10eF90 cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7PGJyPisg c3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICppbmRleCA9PGJyPisgKHN0 cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqKWJhc2U7PGJyPiZuYnNwOyBz dHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmYW1wO2luZGV4LSZn dDt0cmVlKTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSBrZXlfZGF0YTs8YnI+KyBz dHJ1Y3QgbWVtdHhfdHJlZV9rZXlfZGF0YSZsdDtVU0VfSElOVCZndDsga2V5X2RhdGE7PGJyPiZu YnNwOyBrZXlfZGF0YS5rZXkgPSBrZXk7PGJyPiZuYnNwOyBrZXlfZGF0YS5wYXJ0X2NvdW50ID0g cGFydF9jb3VudDs8YnI+LSBrZXlfZGF0YS5oaW50ID0ga2V5X2hpbnQoa2V5LCBwYXJ0X2NvdW50 LCBjbXBfZGVmKTs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXMgPSBtZW10eF90cmVl X2ZpbmQoJmFtcDtpbmRleC0mZ3Q7dHJlZSwgJmFtcDtrZXlfZGF0YSk7PGJyPisgaWYgKFVTRV9I SU5UKTxicj4rIGtleV9kYXRhLnNldF9oaW50KGtleV9oaW50KGtleSwgcGFydF9jb3VudCwgY21w X2RlZikpOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICpyZXMg PTxicj4rIG1lbXR4X3RyZWVfZmluZCgmYW1wO2luZGV4LSZndDt0cmVlLCAmYW1wO2tleV9kYXRh KTs8YnI+Jm5ic3A7IGlmIChyZXMgPT0gTlVMTCkgezxicj4mbmJzcDsgKnJlc3VsdCA9IE5VTEw7 PGJyPiZuYnNwOyByZXR1cm4gMDs8YnI+QEAgLTYxMSwxOCArNzQwLDIxIEBAIG1lbXR4X3RyZWVf aW5kZXhfZ2V0KHN0cnVjdCBpbmRleCAqYmFzZSwgY29uc3QgY2hhciAqa2V5LDxicj4mbmJzcDsg cmV0dXJuIDA7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9I SU5UJmd0Ozxicj4mbmJzcDtzdGF0aWMgaW50PGJyPiZuYnNwO21lbXR4X3RyZWVfaW5kZXhfcmVw bGFjZShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLDxicj4mbmJz cDsgc3RydWN0IHR1cGxlICpuZXdfdHVwbGUsIGVudW0gZHVwX3JlcGxhY2VfbW9kZSBtb2RlLDxi cj4mbmJzcDsgc3RydWN0IHR1cGxlICoqcmVzdWx0KTxicj4mbmJzcDt7PGJyPi0gc3RydWN0IG1l bXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8 YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08YnI+ KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopYmFzZTs8YnI+Jm5i c3A7IHN0cnVjdCBrZXlfZGVmICpjbXBfZGVmID0gbWVtdHhfdHJlZV9jbXBfZGVmKCZhbXA7aW5k ZXgtJmd0O3RyZWUpOzxicj4mbmJzcDsgaWYgKG5ld190dXBsZSkgezxicj4tIHN0cnVjdCBtZW10 eF90cmVlX2RhdGEgbmV3X2RhdGE7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0Vf SElOVCZndDsgbmV3X2RhdGE7PGJyPiZuYnNwOyBuZXdfZGF0YS50dXBsZSA9IG5ld190dXBsZTs8 YnI+LSBuZXdfZGF0YS5oaW50ID0gdHVwbGVfaGludChuZXdfdHVwbGUsIGNtcF9kZWYpOzxicj4t IHN0cnVjdCBtZW10eF90cmVlX2RhdGEgZHVwX2RhdGE7PGJyPisgaWYgKFVTRV9ISU5UKTxicj4r IG5ld19kYXRhLnNldF9oaW50KHR1cGxlX2hpbnQobmV3X3R1cGxlLCBjbXBfZGVmKSk7PGJyPisg c3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgZHVwX2RhdGE7PGJyPiZuYnNw OyBkdXBfZGF0YS50dXBsZSA9IE5VTEw7PGJyPiZuYnNwOzxicj4mbmJzcDsgLyogVHJ5IHRvIG9w dGltaXN0aWNhbGx5IHJlcGxhY2UgdGhlIG5ld190dXBsZS4gKi88YnI+QEAgLTY1Miw5ICs3ODQs MTAgQEAgbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlKHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0 IHR1cGxlICpvbGRfdHVwbGUsPGJyPiZuYnNwOyB9PGJyPiZuYnNwOyB9PGJyPiZuYnNwOyBpZiAo b2xkX3R1cGxlKSB7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBvbGRfZGF0YTs8YnI+KyBz dHJ1Y3QgbWVtdHhfdHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyBvbGRfZGF0YTs8YnI+Jm5ic3A7 IG9sZF9kYXRhLnR1cGxlID0gb2xkX3R1cGxlOzxicj4tIG9sZF9kYXRhLmhpbnQgPSB0dXBsZV9o aW50KG9sZF90dXBsZSwgY21wX2RlZik7PGJyPisgaWYgKFVTRV9ISU5UKTxicj4rIG9sZF9kYXRh LnNldF9oaW50KHR1cGxlX2hpbnQob2xkX3R1cGxlLCBjbXBfZGVmKSk7PGJyPiZuYnNwOyBtZW10 eF90cmVlX2RlbGV0ZSgmYW1wO2luZGV4LSZndDt0cmVlLCBvbGRfZGF0YSk7PGJyPiZuYnNwOyB9 PGJyPiZuYnNwOyAqcmVzdWx0ID0gb2xkX3R1cGxlOzxicj5AQCAtNjY3LDEzICs4MDAsMTMgQEAg bWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlKHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxl ICpvbGRfdHVwbGUsPGJyPiZuYnNwOyZuYnNwOyogYnkgYWxsIGl0J3MgbXVsdGlrZXkgaW5kZXhl cy48YnI+Jm5ic3A7Jm5ic3A7Ki88YnI+Jm5ic3A7c3RhdGljIGludDxicj4tbWVtdHhfdHJlZV9p bmRleF9yZXBsYWNlX211bHRpa2V5X29uZShzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgs PGJyPittZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXlfb25lKHN0cnVjdCBtZW10eF90 cmVlX2luZGV4Jmx0OzEmZ3Q7ICppbmRleCw8YnI+Jm5ic3A7IHN0cnVjdCB0dXBsZSAqb2xkX3R1 cGxlLCBzdHJ1Y3QgdHVwbGUgKm5ld190dXBsZSw8YnI+Jm5ic3A7IGVudW0gZHVwX3JlcGxhY2Vf bW9kZSBtb2RlLCBoaW50X3QgaGludCw8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhICpyZXBs YWNlZF9kYXRhLDxicj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgKnJlcGxhY2Vk X2RhdGEsPGJyPiZuYnNwOyBib29sICppc19tdWx0aWtleV9jb25mbGljdCk8YnI+Jm5ic3A7ezxi cj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgbmV3X2RhdGEsIGR1cF9kYXRhOzxicj4rIHN0cnVj dCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgbmV3X2RhdGEsIGR1cF9kYXRhOzxicj4mbmJzcDsg bmV3X2RhdGEudHVwbGUgPSBuZXdfdHVwbGU7PGJyPiZuYnNwOyBuZXdfZGF0YS5oaW50ID0gaGlu dDs8YnI+Jm5ic3A7IGR1cF9kYXRhLnR1cGxlID0gTlVMTDs8YnI+QEAgLTcyMCwxMSArODUzLDEx IEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXggKmluZGV4LDxicj4mbmJzcDsmbmJzcDsqIGRlbGV0ZSBvcGVyYXRpb24gaXMgZmF1 bHQtdG9sZXJhbnQuPGJyPiZuYnNwOyZuYnNwOyovPGJyPiZuYnNwO3N0YXRpYyB2b2lkPGJyPi1t ZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXlfcm9sbGJhY2soc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXggKmluZGV4LDxicj4rbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlX211bHRpa2V5X3Jv bGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0OzEmZ3Q7ICppbmRleCw8YnI+Jm5ic3A7 IHN0cnVjdCB0dXBsZSAqbmV3X3R1cGxlLCBzdHJ1Y3QgdHVwbGUgKnJlcGxhY2VkX3R1cGxlLDxi cj4mbmJzcDsgaW50IGVycl9tdWx0aWtleV9pZHgpPGJyPiZuYnNwO3s8YnI+LSBzdHJ1Y3QgbWVt dHhfdHJlZV9kYXRhIGRhdGE7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDsxJmd0OyBk YXRhOzxicj4mbmJzcDsgaWYgKHJlcGxhY2VkX3R1cGxlICE9IE5VTEwpIHs8YnI+Jm5ic3A7IC8q IFJlc3RvcmUgcmVwbGFjZWQgdHVwbGUgaW5kZXggb2NjdXJyZW5jZXMuICovPGJyPiZuYnNwOyBz dHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21wX2RlZigmYW1wO2luZGV4LSZn dDt0cmVlKTs8YnI+QEAgLTc5OCw3ICs5MzEsNyBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2Vf bXVsdGlrZXkoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSw8YnI+ Jm5ic3A7IHN0cnVjdCB0dXBsZSAqbmV3X3R1cGxlLCBlbnVtIGR1cF9yZXBsYWNlX21vZGUgbW9k ZSw8YnI+Jm5ic3A7IHN0cnVjdCB0dXBsZSAqKnJlc3VsdCk8YnI+Jm5ic3A7ezxicj4tIHN0cnVj dCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJh c2U7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7MSZndDsgKmluZGV4ID0gKHN0cnVj dCBtZW10eF90cmVlX2luZGV4Jmx0OzEmZ3Q7ICopYmFzZTs8YnI+Jm5ic3A7IHN0cnVjdCBrZXlf ZGVmICpjbXBfZGVmID0gbWVtdHhfdHJlZV9jbXBfZGVmKCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxi cj4mbmJzcDsgKnJlc3VsdCA9IE5VTEw7PGJyPiZuYnNwOyBpZiAobmV3X3R1cGxlICE9IE5VTEwp IHs8YnI+QEAgLTgwOCw3ICs5NDEsNyBAQCBtZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlr ZXkoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKm9sZF90dXBsZSw8YnI+Jm5ic3A7 IGZvciAoOyAodWludDMyX3QpIG11bHRpa2V5X2lkeCAmbHQ7IG11bHRpa2V5X2NvdW50Ozxicj4m bmJzcDsgbXVsdGlrZXlfaWR4KyspIHs8YnI+Jm5ic3A7IGJvb2wgaXNfbXVsdGlrZXlfY29uZmxp Y3Q7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSByZXBsYWNlZF9kYXRhOzxicj4rIHN0cnVj dCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgcmVwbGFjZWRfZGF0YTs8YnI+Jm5ic3A7IGVyciA9 IG1lbXR4X3RyZWVfaW5kZXhfcmVwbGFjZV9tdWx0aWtleV9vbmUoaW5kZXgsPGJyPiZuYnNwOyBv bGRfdHVwbGUsIG5ld190dXBsZSwgbW9kZSw8YnI+Jm5ic3A7IG11bHRpa2V5X2lkeCwgJmFtcDty ZXBsYWNlZF9kYXRhLDxicj5AQCAtODMzLDcgKzk2Niw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfcmVw bGFjZV9tdWx0aWtleShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxl LDxicj4mbmJzcDsgfTxicj4mbmJzcDsgfTxicj4mbmJzcDsgaWYgKG9sZF90dXBsZSAhPSBOVUxM KSB7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSBkYXRhOzxicj4rIHN0cnVjdCBtZW10eF90 cmVlX2RhdGEmbHQ7MSZndDsgZGF0YTs8YnI+Jm5ic3A7IGRhdGEudHVwbGUgPSBvbGRfdHVwbGU7 PGJyPiZuYnNwOyB1aW50MzJfdCBtdWx0aWtleV9jb3VudCA9PGJyPiZuYnNwOyB0dXBsZV9tdWx0 aWtleV9jb3VudChvbGRfdHVwbGUsIGNtcF9kZWYpOzxicj5AQCAtODY1LDcgKzk5OCw3IEBAIHN0 cnVjdCBmdW5jX2tleV91bmRvIHs8YnI+Jm5ic3A7IC8qKiBBIGxpbmsgdG8gb3JnYW5pemUgZW50 cmllcyBpbiBsaXN0LiAqLzxicj4mbmJzcDsgc3RydWN0IHJsaXN0IGxpbms7PGJyPiZuYnNwOyAv KiogQW4gaW5zZXJ0ZWQgcmVjb3JkIGNvcHkuICovPGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0 YSBrZXk7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDsxJmd0OyBrZXk7PGJyPiZuYnNw O307PGJyPiZuYnNwOzxicj4mbmJzcDsvKiogQWxsb2NhdGUgYSBuZXcgZnVuY19rZXlfdW5kbyBv biBnaXZlbiByZWdpb24uICovPGJyPkBAIC04ODgsNyArMTAyMSw3IEBAIGZ1bmNfa2V5X3VuZG9f bmV3KHN0cnVjdCByZWdpb24gKnJlZ2lvbik8YnI+Jm5ic3A7Jm5ic3A7KiByZXR1cm4gYSBnaXZl biBpbmRleCBvYmplY3QgaW4gaXQncyBvcmlnaW5hbCBzdGF0ZS48YnI+Jm5ic3A7Jm5ic3A7Ki88 YnI+Jm5ic3A7c3RhdGljIHZvaWQ8YnI+LW1lbXR4X3RyZWVfZnVuY19pbmRleF9yZXBsYWNlX3Jv bGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCw8YnI+K21lbXR4X3RyZWVfZnVu Y19pbmRleF9yZXBsYWNlX3JvbGxiYWNrKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0OzEmZ3Q7 ICppbmRleCw8YnI+Jm5ic3A7IHN0cnVjdCBybGlzdCAqb2xkX2tleXMsPGJyPiZuYnNwOyBzdHJ1 Y3Qgcmxpc3QgKm5ld19rZXlzKTxicj4mbmJzcDt7PGJyPkBAIC05MTksNyArMTA1Miw3IEBAIG1l bXR4X3RyZWVfZnVuY19pbmRleF9yZXBsYWNlKHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1 cGxlICpvbGRfdHVwbGUsPGJyPiZuYnNwOyBzdHJ1Y3QgdHVwbGUgKm5ld190dXBsZSwgZW51bSBk dXBfcmVwbGFjZV9tb2RlIG1vZGUsPGJyPiZuYnNwOyBzdHJ1Y3QgdHVwbGUgKipyZXN1bHQpPGJy PiZuYnNwO3s8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1l bXR4X3RyZWVfaW5kZXggKiliYXNlOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0OzEm Z3Q7ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqKWJhc2U7PGJy PiZuYnNwOyBzdHJ1Y3QgaW5kZXhfZGVmICppbmRleF9kZWYgPSBpbmRleC0mZ3Q7YmFzZS5kZWY7 PGJyPiZuYnNwOyBhc3NlcnQoaW5kZXhfZGVmLSZndDtrZXlfZGVmLSZndDtmb3JfZnVuY19pbmRl eCk7PGJyPiZuYnNwOzxicj5AQCAtOTUyLDcgKzEwODUsNyBAQCBtZW10eF90cmVlX2Z1bmNfaW5k ZXhfcmVwbGFjZShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLDxi cj4mbmJzcDsgdW5kby0mZ3Q7a2V5LmhpbnQgPSAoaGludF90KWtleTs8YnI+Jm5ic3A7IHJsaXN0 X2FkZCgmYW1wO25ld19rZXlzLCAmYW1wO3VuZG8tJmd0O2xpbmspOzxicj4mbmJzcDsgYm9vbCBp c19tdWx0aWtleV9jb25mbGljdDs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9kYXRhIG9sZF9kYXRh Ozxicj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgb2xkX2RhdGE7PGJyPiZuYnNw OyBvbGRfZGF0YS50dXBsZSA9IE5VTEw7PGJyPiZuYnNwOyBlcnIgPSBtZW10eF90cmVlX2luZGV4 X3JlcGxhY2VfbXVsdGlrZXlfb25lKGluZGV4LDxicj4mbmJzcDsgb2xkX3R1cGxlLCBuZXdfdHVw bGUsPGJyPkBAIC0xMDE1LDcgKzExNDgsNyBAQCBtZW10eF90cmVlX2Z1bmNfaW5kZXhfcmVwbGFj ZShzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlLDxicj4mbmJzcDsg aWYgKGtleV9saXN0X2l0ZXJhdG9yX2NyZWF0ZSgmYW1wO2l0LCBvbGRfdHVwbGUsIGluZGV4X2Rl ZiwgZmFsc2UsPGJyPiZuYnNwOyBmdW5jX2luZGV4X2tleV9kdW1teV9hbGxvYykgIT0gMCk8YnI+ Jm5ic3A7IGdvdG8gZW5kOzxicj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgZGF0YSwgZGVsZXRl ZF9kYXRhOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2RhdGEmbHQ7MSZndDsgZGF0YSwgZGVsZXRl ZF9kYXRhOzxicj4mbmJzcDsgZGF0YS50dXBsZSA9IG9sZF90dXBsZTs8YnI+Jm5ic3A7IGNvbnN0 IGNoYXIgKmtleTs8YnI+Jm5ic3A7IHdoaWxlIChrZXlfbGlzdF9pdGVyYXRvcl9uZXh0KCZhbXA7 aXQsICZhbXA7a2V5KSA9PSAwICZhbXA7JmFtcDsga2V5ICE9IE5VTEwpIHs8YnI+QEAgLTEwNDAs MTEgKzExNzMsMTMgQEAgZW5kOjxicj4mbmJzcDsgcmV0dXJuIHJjOzxicj4mbmJzcDt9PGJyPiZu YnNwOzxicj4rdGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jm5ic3A7c3RhdGljIHN0 cnVjdCBpdGVyYXRvciAqPGJyPiZuYnNwO21lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9y KHN0cnVjdCBpbmRleCAqYmFzZSwgZW51bSBpdGVyYXRvcl90eXBlIHR5cGUsPGJyPiZuYnNwOyBj b25zdCBjaGFyICprZXksIHVpbnQzMl90IHBhcnRfY291bnQpPGJyPiZuYnNwO3s8YnI+LSBzdHJ1 Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKili YXNlOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXgg PTxicj4rIChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKiliYXNlOzxi cj4mbmJzcDsgc3RydWN0IG1lbXR4X2VuZ2luZSAqbWVtdHggPSAoc3RydWN0IG1lbXR4X2VuZ2lu ZSAqKWJhc2UtJmd0O2VuZ2luZTs8YnI+Jm5ic3A7IHN0cnVjdCBrZXlfZGVmICpjbXBfZGVmID0g bWVtdHhfdHJlZV9jbXBfZGVmKCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4mbmJzcDs8YnI+QEAg LTEwNjQsNDIgKzExOTksNDcgQEAgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3Ioc3Ry dWN0IGluZGV4ICpiYXNlLCBlbnVtIGl0ZXJhdG9yX3R5cGUgdHlwZSw8YnI+Jm5ic3A7IGtleSA9 IE5VTEw7PGJyPiZuYnNwOyB9PGJyPiZuYnNwOzxicj4tIHN0cnVjdCB0cmVlX2l0ZXJhdG9yICpp dCA9IChzdHJ1Y3QgdHJlZV9pdGVyYXRvciAqKTxicj4rIHN0cnVjdCB0cmVlX2l0ZXJhdG9yJmx0 O1VTRV9ISU5UJmd0OyAqaXQgPSAoc3RydWN0IHRyZWVfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7 ICopPGJyPiZuYnNwOyBtZW1wb29sX2FsbG9jKCZhbXA7bWVtdHgtJmd0O2l0ZXJhdG9yX3Bvb2wp Ozxicj4mbmJzcDsgaWYgKGl0ID09IE5VTEwpIHs8YnI+LSBkaWFnX3NldChPdXRPZk1lbW9yeSwg c2l6ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yKSw8YnI+KyBkaWFnX3NldChPdXRPZk1lbW9yeSwg c2l6ZW9mKHN0cnVjdCB0cmVlX2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyksPGJyPiZuYnNwOyAi bWVtdHhfdHJlZV9pbmRleCIsICJpdGVyYXRvciIpOzxicj4mbmJzcDsgcmV0dXJuIE5VTEw7PGJy PiZuYnNwOyB9PGJyPiZuYnNwOyBpdGVyYXRvcl9jcmVhdGUoJmFtcDtpdC0mZ3Q7YmFzZSwgYmFz ZSk7PGJyPiZuYnNwOyBpdC0mZ3Q7cG9vbCA9ICZhbXA7bWVtdHgtJmd0O2l0ZXJhdG9yX3Bvb2w7 PGJyPi0gaXQtJmd0O2Jhc2UubmV4dCA9IHRyZWVfaXRlcmF0b3Jfc3RhcnQ7PGJyPi0gaXQtJmd0 O2Jhc2UuZnJlZSA9IHRyZWVfaXRlcmF0b3JfZnJlZTs8YnI+KyBpdC0mZ3Q7YmFzZS5uZXh0ID0g dHJlZV9pdGVyYXRvcl9zdGFydCZsdDtVU0VfSElOVCZndDs7PGJyPisgaXQtJmd0O2Jhc2UuZnJl ZSA9IHRyZWVfaXRlcmF0b3JfZnJlZSZsdDtVU0VfSElOVCZndDs7PGJyPiZuYnNwOyBpdC0mZ3Q7 dHlwZSA9IHR5cGU7PGJyPiZuYnNwOyBpdC0mZ3Q7a2V5X2RhdGEua2V5ID0ga2V5Ozxicj4mbmJz cDsgaXQtJmd0O2tleV9kYXRhLnBhcnRfY291bnQgPSBwYXJ0X2NvdW50Ozxicj4tIGl0LSZndDtr ZXlfZGF0YS5oaW50ID0ga2V5X2hpbnQoa2V5LCBwYXJ0X2NvdW50LCBjbXBfZGVmKTs8YnI+LSBp dC0mZ3Q7dHJlZV9pdGVyYXRvciA9IG1lbXR4X3RyZWVfaW52YWxpZF9pdGVyYXRvcigpOzxicj4r IGlmIChVU0VfSElOVCk8YnI+KyBpdC0mZ3Q7a2V5X2RhdGEuc2V0X2hpbnQoa2V5X2hpbnQoa2V5 LCBwYXJ0X2NvdW50LCBjbXBfZGVmKSk7PGJyPisgaW52YWxpZGF0ZV90cmVlX2l0ZXJhdG9yKCZh bXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4mbmJzcDsgaXQtJmd0O2N1cnJlbnQudHVwbGUg PSBOVUxMOzxicj4mbmJzcDsgcmV0dXJuIChzdHJ1Y3QgaXRlcmF0b3IgKilpdDs8YnI+Jm5ic3A7 fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0 YXRpYyB2b2lkPGJyPiZuYnNwO21lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQoc3RydWN0IGlu ZGV4ICpiYXNlKTxicj4mbmJzcDt7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4 ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08YnI+KyAoc3RydWN0IG1lbXR4X3RyZWVf aW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopYmFzZTs8YnI+Jm5ic3A7IGFzc2VydChtZW10eF90cmVl X3NpemUoJmFtcDtpbmRleC0mZ3Q7dHJlZSkgPT0gMCk7PGJyPiZuYnNwOyAodm9pZClpbmRleDs8 YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJy PiZuYnNwO3N0YXRpYyBpbnQ8YnI+Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlKHN0cnVj dCBpbmRleCAqYmFzZSwgdWludDMyX3Qgc2l6ZV9oaW50KTxicj4mbmJzcDt7PGJyPi0gc3RydWN0 IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFz ZTs8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08 YnI+KyAoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopYmFzZTs8YnI+ Jm5ic3A7IGlmIChzaXplX2hpbnQgJmx0OyBpbmRleC0mZ3Q7YnVpbGRfYXJyYXlfYWxsb2Nfc2l6 ZSk8YnI+Jm5ic3A7IHJldHVybiAwOzxicj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnRtcCA9 PGJyPi0gKHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKik8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJlZV9k YXRhJmx0O1VTRV9ISU5UJmd0OyAqdG1wID08YnI+KyAoc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZs dDtVU0VfSElOVCZndDsgKik8YnI+Jm5ic3A7IHJlYWxsb2MoaW5kZXgtJmd0O2J1aWxkX2FycmF5 LCBzaXplX2hpbnQgKiBzaXplb2YoKnRtcCkpOzxicj4mbmJzcDsgaWYgKHRtcCA9PSBOVUxMKSB7 PGJyPiZuYnNwOyBkaWFnX3NldChPdXRPZk1lbW9yeSwgc2l6ZV9oaW50ICogc2l6ZW9mKCp0bXAp LDxicj5AQCAtMTExMSwxNCArMTI1MSwxNSBAQCBtZW10eF90cmVlX2luZGV4X3Jlc2VydmUoc3Ry dWN0IGluZGV4ICpiYXNlLCB1aW50MzJfdCBzaXplX2hpbnQpPGJyPiZuYnNwOyByZXR1cm4gMDs8 YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJy PiZuYnNwOy8qKiBJbml0aWFsaXplIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIGluZGV4IGJ1aWxk X2FycmF5LiAqLzxicj4mbmJzcDtzdGF0aWMgaW50PGJyPi1tZW10eF90cmVlX2luZGV4X2J1aWxk X2FycmF5X2FwcGVuZChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgsPGJyPittZW10eF90 cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVuZChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtV U0VfSElOVCZndDsgKmluZGV4LDxicj4mbmJzcDsgc3RydWN0IHR1cGxlICp0dXBsZSwgaGludF90 IGhpbnQpPGJyPiZuYnNwO3s8YnI+Jm5ic3A7IGlmIChpbmRleC0mZ3Q7YnVpbGRfYXJyYXkgPT0g TlVMTCkgezxicj4mbmJzcDsgaW5kZXgtJmd0O2J1aWxkX2FycmF5ID08YnI+LSAoc3RydWN0IG1l bXR4X3RyZWVfZGF0YSAqKW1hbGxvYyhNRU1UWF9FWFRFTlRfU0laRSk7PGJyPisgKHN0cnVjdCBt ZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICopbWFsbG9jKE1FTVRYX0VYVEVOVF9TSVpF KTs8YnI+Jm5ic3A7IGlmIChpbmRleC0mZ3Q7YnVpbGRfYXJyYXkgPT0gTlVMTCkgezxicj4mbmJz cDsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIE1FTVRYX0VYVEVOVF9TSVpFLDxicj4mbmJzcDsgIm1l bXR4X3RyZWVfaW5kZXgiLCAiYnVpbGRfbmV4dCIpOzxicj5AQCAtMTEzMSw4ICsxMjcyLDggQEAg bWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9hcHBlbmQoc3RydWN0IG1lbXR4X3RyZWVfaW5k ZXggKmluZGV4LDxicj4mbmJzcDsgaWYgKGluZGV4LSZndDtidWlsZF9hcnJheV9zaXplID09IGlu ZGV4LSZndDtidWlsZF9hcnJheV9hbGxvY19zaXplKSB7PGJyPiZuYnNwOyBpbmRleC0mZ3Q7YnVp bGRfYXJyYXlfYWxsb2Nfc2l6ZSA9IGluZGV4LSZndDtidWlsZF9hcnJheV9hbGxvY19zaXplICs8 YnI+Jm5ic3A7IERJVl9ST1VORF9VUChpbmRleC0mZ3Q7YnVpbGRfYXJyYXlfYWxsb2Nfc2l6ZSwg Mik7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0YSAqdG1wID08YnI+LSAoc3RydWN0IG1lbXR4 X3RyZWVfZGF0YSAqKXJlYWxsb2MoaW5kZXgtJmd0O2J1aWxkX2FycmF5LDxicj4rIHN0cnVjdCBt ZW10eF90cmVlX2RhdGEmbHQ7VVNFX0hJTlQmZ3Q7ICp0bXAgPTxicj4rIChzdHJ1Y3QgbWVtdHhf dHJlZV9kYXRhJmx0O1VTRV9ISU5UJmd0OyAqKXJlYWxsb2MoaW5kZXgtJmd0O2J1aWxkX2FycmF5 LDxicj4mbmJzcDsgaW5kZXgtJmd0O2J1aWxkX2FycmF5X2FsbG9jX3NpemUgKiBzaXplb2YoKnRt cCkpOzxicj4mbmJzcDsgaWYgKHRtcCA9PSBOVUxMKSB7PGJyPiZuYnNwOyBkaWFnX3NldChPdXRP Zk1lbW9yeSwgaW5kZXgtJmd0O2J1aWxkX2FycmF5X2FsbG9jX3NpemUgKjxicj5AQCAtMTE0MSwx NyArMTI4MiwyMCBAQCBtZW10eF90cmVlX2luZGV4X2J1aWxkX2FycmF5X2FwcGVuZChzdHJ1Y3Qg bWVtdHhfdHJlZV9pbmRleCAqaW5kZXgsPGJyPiZuYnNwOyB9PGJyPiZuYnNwOyBpbmRleC0mZ3Q7 YnVpbGRfYXJyYXkgPSB0bXA7PGJyPiZuYnNwOyB9PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfZGF0 YSAqZWxlbSA9PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKmVs ZW0gPTxicj4mbmJzcDsgJmFtcDtpbmRleC0mZ3Q7YnVpbGRfYXJyYXlbaW5kZXgtJmd0O2J1aWxk X2FycmF5X3NpemUrK107PGJyPiZuYnNwOyBlbGVtLSZndDt0dXBsZSA9IHR1cGxlOzxicj4tIGVs ZW0tJmd0O2hpbnQgPSBoaW50Ozxicj4rIGlmIChVU0VfSElOVCk8YnI+KyBlbGVtLSZndDtzZXRf aGludChoaW50KTs8YnI+Jm5ic3A7IHJldHVybiAwOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4r dGVtcGxhdGUgJmx0O2ludCBVU0VfSElOVCZndDs8YnI+Jm5ic3A7c3RhdGljIGludDxicj4mbmJz cDttZW10eF90cmVlX2luZGV4X2J1aWxkX25leHQoc3RydWN0IGluZGV4ICpiYXNlLCBzdHJ1Y3Qg dHVwbGUgKnR1cGxlKTxicj4mbmJzcDt7PGJyPi0gc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmlu ZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICopYmFzZTs8YnI+KyBzdHJ1Y3QgbWVtdHhf dHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08YnI+KyAoc3RydWN0IG1lbXR4X3Ry ZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopYmFzZTs8YnI+Jm5ic3A7IHN0cnVjdCBrZXlfZGVm ICpjbXBfZGVmID0gbWVtdHhfdHJlZV9jbXBfZGVmKCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4m bmJzcDsgcmV0dXJuIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfYXJyYXlfYXBwZW5kKGluZGV4LCB0 dXBsZSw8YnI+Jm5ic3A7IHR1cGxlX2hpbnQodHVwbGUsIGNtcF9kZWYpKTs8YnI+QEAgLTExNjAs NyArMTMwNCw3IEBAIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4dChzdHJ1Y3QgaW5kZXggKmJh c2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUpPGJyPiZuYnNwO3N0YXRpYyBpbnQ8YnI+Jm5ic3A7bWVt dHhfdHJlZV9pbmRleF9idWlsZF9uZXh0X211bHRpa2V5KHN0cnVjdCBpbmRleCAqYmFzZSwgc3Ry dWN0IHR1cGxlICp0dXBsZSk8YnI+Jm5ic3A7ezxicj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4 ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqKWJhc2U7PGJyPisgc3RydWN0IG1l bXR4X3RyZWVfaW5kZXgmbHQ7MSZndDsgKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4 Jmx0OzEmZ3Q7ICopYmFzZTs8YnI+Jm5ic3A7IHN0cnVjdCBrZXlfZGVmICpjbXBfZGVmID0gbWVt dHhfdHJlZV9jbXBfZGVmKCZhbXA7aW5kZXgtJmd0O3RyZWUpOzxicj4mbmJzcDsgdWludDMyX3Qg bXVsdGlrZXlfY291bnQgPSB0dXBsZV9tdWx0aWtleV9jb3VudCh0dXBsZSwgY21wX2RlZik7PGJy PiZuYnNwOyBmb3IgKHVpbnQzMl90IG11bHRpa2V5X2lkeCA9IDA7IG11bHRpa2V5X2lkeCAmbHQ7 IG11bHRpa2V5X2NvdW50Ozxicj5AQCAtMTE3NSw3ICsxMzE5LDcgQEAgbWVtdHhfdHJlZV9pbmRl eF9idWlsZF9uZXh0X211bHRpa2V5KHN0cnVjdCBpbmRleCAqYmFzZSwgc3RydWN0IHR1cGxlICp0 dXBsZSk8YnI+Jm5ic3A7c3RhdGljIGludDxicj4mbmJzcDttZW10eF90cmVlX2Z1bmNfaW5kZXhf YnVpbGRfbmV4dChzdHJ1Y3QgaW5kZXggKmJhc2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUpPGJyPiZu YnNwO3s8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXggPSAoc3RydWN0IG1lbXR4 X3RyZWVfaW5kZXggKiliYXNlOzxicj4rIHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0OzEmZ3Q7 ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDsxJmd0OyAqKWJhc2U7PGJyPiZu YnNwOyBzdHJ1Y3QgaW5kZXhfZGVmICppbmRleF9kZWYgPSBpbmRleC0mZ3Q7YmFzZS5kZWY7PGJy PiZuYnNwOyBhc3NlcnQoaW5kZXhfZGVmLSZndDtrZXlfZGVmLSZndDtmb3JfZnVuY19pbmRleCk7 PGJyPiZuYnNwOzxicj5AQCAtMTIxMSw4ICsxMzU1LDkgQEAgZXJyb3I6PGJyPiZuYnNwOyZuYnNw Oyogb2YgZXF1YWwgdHVwbGVzIChpbiB0ZXJtcyBvZiBpbmRleCdzIGNtcF9kZWYgYW5kIGhhdmUg c2FtZTxicj4mbmJzcDsmbmJzcDsqIHR1cGxlIHBvaW50ZXIpLiBUaGUgYnVpbGRfYXJyYXkgaXMg ZXhwZWN0ZWQgdG8gYmUgc29ydGVkLjxicj4mbmJzcDsmbmJzcDsqLzxicj4rdGVtcGxhdGUgJmx0 O2ludCBVU0VfSElOVCZndDs8YnI+Jm5ic3A7c3RhdGljIHZvaWQ8YnI+LW1lbXR4X3RyZWVfaW5k ZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUoc3RydWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4 LDxicj4rbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9kZWR1cGxpY2F0ZShzdHJ1Y3QgbWVt dHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4LDxicj4mbmJzcDsgdm9pZCAoKmRl c3Ryb3kpKHN0cnVjdCB0dXBsZSAqdHVwbGUsIGNvbnN0IGNoYXIgKmhpbnQpKTxicj4mbmJzcDt7 PGJyPiZuYnNwOyBpZiAoaW5kZXgtJmd0O2J1aWxkX2FycmF5X3NpemUgPT0gMCk8YnI+QEAgLTEy NDYsMTMgKzEzOTEsMTYgQEAgbWVtdHhfdHJlZV9pbmRleF9idWlsZF9hcnJheV9kZWR1cGxpY2F0 ZShzdHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCAqaW5kZXgsPGJyPiZuYnNwOyBpbmRleC0mZ3Q7YnVp bGRfYXJyYXlfc2l6ZSA9IHdfaWR4ICsgMTs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBs YXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0YXRpYyB2b2lkPGJyPiZuYnNwO21l bXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkKHN0cnVjdCBpbmRleCAqYmFzZSk8YnI+Jm5ic3A7ezxi cj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9IChzdHJ1Y3QgbWVtdHhfdHJlZV9p bmRleCAqKWJhc2U7PGJyPisgc3RydWN0IG1lbXR4X3RyZWVfaW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7 ICppbmRleCA9PGJyPisgKHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAq KWJhc2U7PGJyPiZuYnNwOyBzdHJ1Y3Qga2V5X2RlZiAqY21wX2RlZiA9IG1lbXR4X3RyZWVfY21w X2RlZigmYW1wO2luZGV4LSZndDt0cmVlKTs8YnI+Jm5ic3A7IHFzb3J0X2FyZyhpbmRleC0mZ3Q7 YnVpbGRfYXJyYXksIGluZGV4LSZndDtidWlsZF9hcnJheV9zaXplLDxicj4tIHNpemVvZihpbmRl eC0mZ3Q7YnVpbGRfYXJyYXlbMF0pLCBtZW10eF90cmVlX3Fjb21wYXJlLCBjbXBfZGVmKTs8YnI+ KyBzaXplb2YoaW5kZXgtJmd0O2J1aWxkX2FycmF5WzBdKSw8YnI+KyBtZW10eF90cmVlX3Fjb21w YXJlJmx0O1VTRV9ISU5UJmd0OywgY21wX2RlZik7PGJyPiZuYnNwOyBpZiAoY21wX2RlZi0mZ3Q7 aXNfbXVsdGlrZXkpIHs8YnI+Jm5ic3A7IC8qPGJyPiZuYnNwOyAqIE11bHRpa2V5IGluZGV4IG1h eSBoYXZlIGVxdWFsKGluIHRlcm1zIG9mPGJyPkBAIC0xMjYxLDkgKzE0MDksOSBAQCBtZW10eF90 cmVlX2luZGV4X2VuZF9idWlsZChzdHJ1Y3QgaW5kZXggKmJhc2UpPGJyPiZuYnNwOyAqIHRoZSBm b2xsb3dpbmcgbWVtdHhfdHJlZV9idWlsZCBhc3N1bWVzIHRoYXQ8YnI+Jm5ic3A7ICogYWxsIGtl eXMgYXJlIHVuaXF1ZS48YnI+Jm5ic3A7ICovPGJyPi0gbWVtdHhfdHJlZV9pbmRleF9idWlsZF9h cnJheV9kZWR1cGxpY2F0ZShpbmRleCwgTlVMTCk7PGJyPisgbWVtdHhfdHJlZV9pbmRleF9idWls ZF9hcnJheV9kZWR1cGxpY2F0ZSZsdDtVU0VfSElOVCZndDsoaW5kZXgsIE5VTEwpOzxicj4mbmJz cDsgfSBlbHNlIGlmIChjbXBfZGVmLSZndDtmb3JfZnVuY19pbmRleCkgezxicj4tIG1lbXR4X3Ry ZWVfaW5kZXhfYnVpbGRfYXJyYXlfZGVkdXBsaWNhdGUoaW5kZXgsPGJyPisgbWVtdHhfdHJlZV9p bmRleF9idWlsZF9hcnJheV9kZWR1cGxpY2F0ZSZsdDtVU0VfSElOVCZndDsoaW5kZXgsPGJyPiZu YnNwOyB0dXBsZV9jaHVua19kZWxldGUpOzxicj4mbmJzcDsgfTxicj4mbmJzcDsgbWVtdHhfdHJl ZV9idWlsZCgmYW1wO2luZGV4LSZndDt0cmVlLCBpbmRleC0mZ3Q7YnVpbGRfYXJyYXksPGJyPkBA IC0xMjc1LDE5ICsxNDIzLDIxIEBAIG1lbXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkKHN0cnVjdCBp bmRleCAqYmFzZSk8YnI+Jm5ic3A7IGluZGV4LSZndDtidWlsZF9hcnJheV9hbGxvY19zaXplID0g MDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRlICZsdDtpbnQgVVNFX0hJTlQmZ3Q7 PGJyPiZuYnNwO3N0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yIHs8YnI+Jm5ic3A7IHN0cnVj dCBzbmFwc2hvdF9pdGVyYXRvciBiYXNlOzxicj4tIHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICpp bmRleDs8YnI+LSBzdHJ1Y3QgbWVtdHhfdHJlZV9pdGVyYXRvciB0cmVlX2l0ZXJhdG9yOzxicj4r IHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXg7PGJyPisgbWVt dHhfdHJlZV9pdGVyYXRvcl90Jmx0O1VTRV9ISU5UJmd0OyB0cmVlX2l0ZXJhdG9yOzxicj4mbmJz cDsgc3RydWN0IG1lbXR4X3R4X3NuYXBzaG90X2NsZWFuZXIgY2xlYW5lcjs8YnI+Jm5ic3A7fTs8 YnI+Jm5ic3A7PGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mbmJzcDtzdGF0 aWMgdm9pZDxicj4mbmJzcDt0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX2ZyZWUoc3RydWN0IHNuYXBz aG90X2l0ZXJhdG9yICppdGVyYXRvcik8YnI+Jm5ic3A7ezxicj4tIGFzc2VydChpdGVyYXRvci0m Z3Q7ZnJlZSA9PSB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX2ZyZWUpOzxicj4tIHN0cnVjdCB0cmVl X3NuYXBzaG90X2l0ZXJhdG9yICppdCA9PGJyPi0gKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJh dG9yICopaXRlcmF0b3I7PGJyPisgYXNzZXJ0KGl0ZXJhdG9yLSZndDtmcmVlID09ICZhbXA7dHJl ZV9zbmFwc2hvdF9pdGVyYXRvcl9mcmVlJmx0O1VTRV9ISU5UJmd0Oyk7PGJyPisgc3RydWN0IHRy ZWVfc25hcHNob3RfaXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7ICppdCA9PGJyPisgKHN0cnVjdCB0 cmVlX3NuYXBzaG90X2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyAqKWl0ZXJhdG9yOzxicj4mbmJz cDsgbWVtdHhfbGVhdmVfZGVsYXllZF9mcmVlX21vZGUoKHN0cnVjdCBtZW10eF9lbmdpbmUgKik8 YnI+Jm5ic3A7IGl0LSZndDtpbmRleC0mZ3Q7YmFzZS5lbmdpbmUpOzxicj4mbmJzcDsgbWVtdHhf dHJlZV9pdGVyYXRvcl9kZXN0cm95KCZhbXA7aXQtJmd0O2luZGV4LSZndDt0cmVlLCAmYW1wO2l0 LSZndDt0cmVlX2l0ZXJhdG9yKTs8YnI+QEAgLTEyOTYsMTcgKzE0NDYsMTggQEAgdHJlZV9zbmFw c2hvdF9pdGVyYXRvcl9mcmVlKHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqaXRlcmF0b3IpPGJy PiZuYnNwOyBmcmVlKGl0ZXJhdG9yKTs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3RlbXBsYXRl ICZsdDtpbnQgVVNFX0hJTlQmZ3Q7PGJyPiZuYnNwO3N0YXRpYyBpbnQ8YnI+Jm5ic3A7dHJlZV9z bmFwc2hvdF9pdGVyYXRvcl9uZXh0KHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqaXRlcmF0b3Is PGJyPiZuYnNwOyBjb25zdCBjaGFyICoqZGF0YSwgdWludDMyX3QgKnNpemUpPGJyPiZuYnNwO3s8 YnI+LSBhc3NlcnQoaXRlcmF0b3ItJmd0O2ZyZWUgPT0gdHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9m cmVlKTs8YnI+LSBzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciAqaXQgPTxicj4tIChzdHJ1 Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciAqKWl0ZXJhdG9yOzxicj4tIHN0cnVjdCBtZW10eF90 cmVlICp0cmVlID0gJmFtcDtpdC0mZ3Q7aW5kZXgtJmd0O3RyZWU7PGJyPisgYXNzZXJ0KGl0ZXJh dG9yLSZndDtmcmVlID09ICZhbXA7dHJlZV9zbmFwc2hvdF9pdGVyYXRvcl9mcmVlJmx0O1VTRV9I SU5UJmd0Oyk7PGJyPisgc3RydWN0IHRyZWVfc25hcHNob3RfaXRlcmF0b3ImbHQ7VVNFX0hJTlQm Z3Q7ICppdCA9PGJyPisgKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yJmx0O1VTRV9ISU5U Jmd0OyAqKWl0ZXJhdG9yOzxicj4rIG1lbXR4X3RyZWVfdCZsdDtVU0VfSElOVCZndDsgKnRyZWUg PSAmYW1wO2l0LSZndDtpbmRleC0mZ3Q7dHJlZTs8YnI+Jm5ic3A7PGJyPiZuYnNwOyB3aGlsZSAo dHJ1ZSkgezxicj4tIHN0cnVjdCBtZW10eF90cmVlX2RhdGEgKnJlcyA9PGJyPisgc3RydWN0IG1l bXR4X3RyZWVfZGF0YSZsdDtVU0VfSElOVCZndDsgKnJlcyA9PGJyPiZuYnNwOyBtZW10eF90cmVl X2l0ZXJhdG9yX2dldF9lbGVtKHRyZWUsICZhbXA7aXQtJmd0O3RyZWVfaXRlcmF0b3IpOzxicj4m bmJzcDs8YnI+Jm5ic3A7IGlmIChyZXMgPT0gTlVMTCkgezxicj5AQCAtMTMzMywxNCArMTQ4NCwx OCBAQCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yX25leHQoc3RydWN0IHNuYXBzaG90X2l0ZXJhdG9y ICppdGVyYXRvciw8YnI+Jm5ic3A7Jm5ic3A7KiBpbmRleCBtb2RpZmljYXRpb25zIHdpbGwgbm90 IGFmZmVjdCB0aGUgaXRlcmF0aW9uIHJlc3VsdHMuPGJyPiZuYnNwOyZuYnNwOyogTXVzdCBiZSBk ZXN0cm95ZWQgYnkgaXRlcmF0b3ItJmd0O2ZyZWUgYWZ0ZXIgdXNhZ2UuPGJyPiZuYnNwOyZuYnNw OyovPGJyPit0ZW1wbGF0ZSAmbHQ7aW50IFVTRV9ISU5UJmd0Ozxicj4mbmJzcDtzdGF0aWMgc3Ry dWN0IHNuYXBzaG90X2l0ZXJhdG9yICo8YnI+Jm5ic3A7bWVtdHhfdHJlZV9pbmRleF9jcmVhdGVf c25hcHNob3RfaXRlcmF0b3Ioc3RydWN0IGluZGV4ICpiYXNlKTxicj4mbmJzcDt7PGJyPi0gc3Ry dWN0IG1lbXR4X3RyZWVfaW5kZXggKmluZGV4ID0gKHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICop YmFzZTs8YnI+LSBzdHJ1Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciAqaXQgPTxicj4tIChzdHJ1 Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciAqKSBjYWxsb2MoMSwgc2l6ZW9mKCppdCkpOzxicj4r IHN0cnVjdCBtZW10eF90cmVlX2luZGV4Jmx0O1VTRV9ISU5UJmd0OyAqaW5kZXggPTxicj4rIChz dHJ1Y3QgbWVtdHhfdHJlZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKiliYXNlOzxicj4rIHN0cnVj dCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yJmx0O1VTRV9ISU5UJmd0OyAqaXQgPTxicj4rIChzdHJ1 Y3QgdHJlZV9zbmFwc2hvdF9pdGVyYXRvciZsdDtVU0VfSElOVCZndDsgKik8YnI+KyBjYWxsb2Mo MSwgc2l6ZW9mKCppdCkpOzxicj4mbmJzcDsgaWYgKGl0ID09IE5VTEwpIHs8YnI+LSBkaWFnX3Nl dChPdXRPZk1lbW9yeSwgc2l6ZW9mKHN0cnVjdCB0cmVlX3NuYXBzaG90X2l0ZXJhdG9yKSw8YnI+ KyBkaWFnX3NldChPdXRPZk1lbW9yeSw8YnI+KyBzaXplb2Yoc3RydWN0IHRyZWVfc25hcHNob3Rf aXRlcmF0b3ImbHQ7VVNFX0hJTlQmZ3Q7KSw8YnI+Jm5ic3A7ICJtZW10eF90cmVlX2luZGV4Iiwg ImNyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciIpOzxicj4mbmJzcDsgcmV0dXJuIE5VTEw7PGJyPiZu YnNwOyB9PGJyPkBAIC0xMzUyLDggKzE1MDcsOCBAQCBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9z bmFwc2hvdF9pdGVyYXRvcihzdHJ1Y3QgaW5kZXggKmJhc2UpPGJyPiZuYnNwOyByZXR1cm4gTlVM TDs8YnI+Jm5ic3A7IH08YnI+Jm5ic3A7PGJyPi0gaXQtJmd0O2Jhc2UuZnJlZSA9IHRyZWVfc25h cHNob3RfaXRlcmF0b3JfZnJlZTs8YnI+LSBpdC0mZ3Q7YmFzZS5uZXh0ID0gdHJlZV9zbmFwc2hv dF9pdGVyYXRvcl9uZXh0Ozxicj4rIGl0LSZndDtiYXNlLmZyZWUgPSB0cmVlX3NuYXBzaG90X2l0 ZXJhdG9yX2ZyZWUmbHQ7VVNFX0hJTlQmZ3Q7Ozxicj4rIGl0LSZndDtiYXNlLm5leHQgPSB0cmVl X3NuYXBzaG90X2l0ZXJhdG9yX25leHQmbHQ7VVNFX0hJTlQmZ3Q7Ozxicj4mbmJzcDsgaXQtJmd0 O2luZGV4ID0gaW5kZXg7PGJyPiZuYnNwOyBpbmRleF9yZWYoYmFzZSk7PGJyPiZuYnNwOyBpdC0m Z3Q7dHJlZV9pdGVyYXRvciA9IG1lbXR4X3RyZWVfaXRlcmF0b3JfZmlyc3QoJmFtcDtpbmRleC0m Z3Q7dHJlZSk7PGJyPkBAIC0xMzYyLDk0ICsxNTE3LDEyNCBAQCBtZW10eF90cmVlX2luZGV4X2Ny ZWF0ZV9zbmFwc2hvdF9pdGVyYXRvcihzdHJ1Y3QgaW5kZXggKmJhc2UpPGJyPiZuYnNwOyByZXR1 cm4gKHN0cnVjdCBzbmFwc2hvdF9pdGVyYXRvciAqKSBpdDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8 YnI+LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiBtZW10eF90cmVlX2luZGV4X3Z0YWIg PSB7PGJyPi0gLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3ksPGJyPitz dGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9ub19oaW50X2luZGV4X3Z0 YWIgPSB7PGJyPisgLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3kmbHQ7 MCZndDssPGJyPiZuYnNwOyAvKiAuY29tbWl0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29t bWl0X2NyZWF0ZSw8YnI+Jm5ic3A7IC8qIC5hYm9ydF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4 X2Fib3J0X2NyZWF0ZSw8YnI+Jm5ic3A7IC8qIC5jb21taXRfbW9kaWZ5ID0gKi8gZ2VuZXJpY19p bmRleF9jb21taXRfbW9kaWZ5LDxicj4mbmJzcDsgLyogLmNvbW1pdF9kcm9wID0gKi8gZ2VuZXJp Y19pbmRleF9jb21taXRfZHJvcCw8YnI+LSAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVf aW5kZXhfdXBkYXRlX2RlZiw8YnI+KyAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfdXBkYXRlX2RlZiZsdDswJmd0Oyw8YnI+Jm5ic3A7IC8qIC5kZXBlbmRzX29uX3BrID0gKi8g bWVtdHhfdHJlZV9pbmRleF9kZXBlbmRzX29uX3BrLDxicj4mbmJzcDsgLyogLmRlZl9jaGFuZ2Vf cmVxdWlyZXNfcmVidWlsZCA9ICovPGJyPiZuYnNwOyBtZW10eF9pbmRleF9kZWZfY2hhbmdlX3Jl cXVpcmVzX3JlYnVpbGQsPGJyPi0gLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X3NpemUs PGJyPi0gLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9ic2l6ZSw8YnI+KyAvKiAuc2l6 ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZSZsdDswJmd0Oyw8YnI+KyAvKiAuYnNpemUgPSAq LyBtZW10eF90cmVlX2luZGV4X2JzaXplJmx0OzAmZ3Q7LDxicj4mbmJzcDsgLyogLm1pbiA9ICov IGdlbmVyaWNfaW5kZXhfbWluLDxicj4mbmJzcDsgLyogLm1heCA9ICovIGdlbmVyaWNfaW5kZXhf bWF4LDxicj4tIC8qIC5yYW5kb20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbSw8YnI+LSAv KiAuY291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50LDxicj4tIC8qIC5nZXQgPSAqLyBt ZW10eF90cmVlX2luZGV4X2dldCw8YnI+LSAvKiAucmVwbGFjZSA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfcmVwbGFjZSw8YnI+LSAvKiAuY3JlYXRlX2l0ZXJhdG9yID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9jcmVhdGVfaXRlcmF0b3IsPGJyPisgLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5kZXhf cmFuZG9tJmx0OzAmZ3Q7LDxicj4rIC8qIC5jb3VudCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY291 bnQmbHQ7MCZndDssPGJyPisgLyogLmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0Jmx0OzAm Z3Q7LDxicj4rIC8qIC5yZXBsYWNlID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXBsYWNlJmx0OzAm Z3Q7LDxicj4rIC8qIC5jcmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVlX2luZGV4X2NyZWF0 ZV9pdGVyYXRvciZsdDswJmd0Oyw8YnI+Jm5ic3A7IC8qIC5jcmVhdGVfc25hcHNob3RfaXRlcmF0 b3IgPSAqLzxicj4tIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yLDxi cj4rIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yJmx0OzAmZ3Q7LDxi cj4mbmJzcDsgLyogLnN0YXQgPSAqLyBnZW5lcmljX2luZGV4X3N0YXQsPGJyPiZuYnNwOyAvKiAu Y29tcGFjdCA9ICovIGdlbmVyaWNfaW5kZXhfY29tcGFjdCw8YnI+Jm5ic3A7IC8qIC5yZXNldF9z dGF0ID0gKi8gZ2VuZXJpY19pbmRleF9yZXNldF9zdGF0LDxicj4tIC8qIC5iZWdpbl9idWlsZCA9 ICovIG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQsPGJyPi0gLyogLnJlc2VydmUgPSAqLyBt ZW10eF90cmVlX2luZGV4X3Jlc2VydmUsPGJyPi0gLyogLmJ1aWxkX25leHQgPSAqLyBtZW10eF90 cmVlX2luZGV4X2J1aWxkX25leHQsPGJyPi0gLyogLmVuZF9idWlsZCA9ICovIG1lbXR4X3RyZWVf aW5kZXhfZW5kX2J1aWxkLDxicj4rIC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfYmVnaW5fYnVpbGQmbHQ7MCZndDssPGJyPisgLyogLnJlc2VydmUgPSAqLyBtZW10eF90cmVl X2luZGV4X3Jlc2VydmUmbHQ7MCZndDssPGJyPisgLyogLmJ1aWxkX25leHQgPSAqLyBtZW10eF90 cmVlX2luZGV4X2J1aWxkX25leHQmbHQ7MCZndDssPGJyPisgLyogLmVuZF9idWlsZCA9ICovIG1l bXR4X3RyZWVfaW5kZXhfZW5kX2J1aWxkJmx0OzAmZ3Q7LDxicj4rfTs8YnI+Kzxicj4rc3RhdGlj IGNvbnN0IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfdXNlX2hpbnRfaW5kZXhfdnRhYiA9 IHs8YnI+KyAvKiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSZsdDsxJmd0 Oyw8YnI+KyAvKiAuY29tbWl0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2NyZWF0 ZSw8YnI+KyAvKiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9hYm9ydF9jcmVhdGUs PGJyPisgLyogLmNvbW1pdF9tb2RpZnkgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9tb2RpZnks PGJyPisgLyogLmNvbW1pdF9kcm9wID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfZHJvcCw8YnI+ KyAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhfdXBkYXRlX2RlZiZsdDsxJmd0 Oyw8YnI+KyAvKiAuZGVwZW5kc19vbl9wayA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVwZW5kc19v bl9wayw8YnI+KyAvKiAuZGVmX2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxkID0gKi88YnI+KyBtZW10 eF9pbmRleF9kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVpbGQsPGJyPisgLyogLnNpemUgPSAqLyBt ZW10eF90cmVlX2luZGV4X3NpemUmbHQ7MSZndDssPGJyPisgLyogLmJzaXplID0gKi8gbWVtdHhf dHJlZV9pbmRleF9ic2l6ZSZsdDsxJmd0Oyw8YnI+KyAvKiAubWluID0gKi8gZ2VuZXJpY19pbmRl eF9taW4sPGJyPisgLyogLm1heCA9ICovIGdlbmVyaWNfaW5kZXhfbWF4LDxicj4rIC8qIC5yYW5k b20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbSZsdDsxJmd0Oyw8YnI+KyAvKiAuY291bnQg PSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50Jmx0OzEmZ3Q7LDxicj4rIC8qIC5nZXQgPSAqLyBt ZW10eF90cmVlX2luZGV4X2dldCZsdDsxJmd0Oyw8YnI+KyAvKiAucmVwbGFjZSA9ICovIG1lbXR4 X3RyZWVfaW5kZXhfcmVwbGFjZSZsdDsxJmd0Oyw8YnI+KyAvKiAuY3JlYXRlX2l0ZXJhdG9yID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVfaXRlcmF0b3ImbHQ7MSZndDssPGJyPisgLyogLmNy ZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciA9ICovPGJyPisgbWVtdHhfdHJlZV9pbmRleF9jcmVhdGVf c25hcHNob3RfaXRlcmF0b3ImbHQ7MSZndDssPGJyPisgLyogLnN0YXQgPSAqLyBnZW5lcmljX2lu ZGV4X3N0YXQsPGJyPisgLyogLmNvbXBhY3QgPSAqLyBnZW5lcmljX2luZGV4X2NvbXBhY3QsPGJy PisgLyogLnJlc2V0X3N0YXQgPSAqLyBnZW5lcmljX2luZGV4X3Jlc2V0X3N0YXQsPGJyPisgLyog LmJlZ2luX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRleF9iZWdpbl9idWlsZCZsdDsxJmd0Oyw8 YnI+KyAvKiAucmVzZXJ2ZSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmVzZXJ2ZSZsdDsxJmd0Oyw8 YnI+KyAvKiAuYnVpbGRfbmV4dCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfYnVpbGRfbmV4dCZsdDsx Jmd0Oyw8YnI+KyAvKiAuZW5kX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRleF9lbmRfYnVpbGQm bHQ7MSZndDssPGJyPiZuYnNwO307PGJyPiZuYnNwOzxicj4mbmJzcDtzdGF0aWMgY29uc3Qgc3Ry dWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9pbmRleF9tdWx0aWtleV92dGFiID0gezxicj4tIC8q IC5kZXN0cm95ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95LDxicj4rIC8qIC5kZXN0cm95 ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9kZXN0cm95Jmx0OzEmZ3Q7LDxicj4mbmJzcDsgLyogLmNv bW1pdF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9jcmVhdGUsPGJyPiZuYnNwOyAv KiAuYWJvcnRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9hYm9ydF9jcmVhdGUsPGJyPiZuYnNw OyAvKiAuY29tbWl0X21vZGlmeSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X21vZGlmeSw8YnI+ Jm5ic3A7IC8qIC5jb21taXRfZHJvcCA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0X2Ryb3AsPGJy Pi0gLyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYsPGJyPisg LyogLnVwZGF0ZV9kZWYgPSAqLyBtZW10eF90cmVlX2luZGV4X3VwZGF0ZV9kZWYmbHQ7MSZndDss PGJyPiZuYnNwOyAvKiAuZGVwZW5kc19vbl9wayA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVwZW5k c19vbl9wayw8YnI+Jm5ic3A7IC8qIC5kZWZfY2hhbmdlX3JlcXVpcmVzX3JlYnVpbGQgPSAqLzxi cj4mbmJzcDsgbWVtdHhfaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxkLDxicj4tIC8q IC5zaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9zaXplLDxicj4tIC8qIC5ic2l6ZSA9ICovIG1l bXR4X3RyZWVfaW5kZXhfYnNpemUsPGJyPisgLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4 X3NpemUmbHQ7MSZndDssPGJyPisgLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9ic2l6 ZSZsdDsxJmd0Oyw8YnI+Jm5ic3A7IC8qIC5taW4gPSAqLyBnZW5lcmljX2luZGV4X21pbiw8YnI+ Jm5ic3A7IC8qIC5tYXggPSAqLyBnZW5lcmljX2luZGV4X21heCw8YnI+LSAvKiAucmFuZG9tID0g Ki8gbWVtdHhfdHJlZV9pbmRleF9yYW5kb20sPGJyPi0gLyogLmNvdW50ID0gKi8gbWVtdHhfdHJl ZV9pbmRleF9jb3VudCw8YnI+LSAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQsPGJy PisgLyogLnJhbmRvbSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfcmFuZG9tJmx0OzEmZ3Q7LDxicj4r IC8qIC5jb3VudCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY291bnQmbHQ7MSZndDssPGJyPisgLyog LmdldCA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZ2V0Jmx0OzEmZ3Q7LDxicj4mbmJzcDsgLyogLnJl cGxhY2UgPSAqLyBtZW10eF90cmVlX2luZGV4X3JlcGxhY2VfbXVsdGlrZXksPGJyPi0gLyogLmNy ZWF0ZV9pdGVyYXRvciA9ICovIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX2l0ZXJhdG9yLDxicj4r IC8qIC5jcmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9pdGVyYXRv ciZsdDsxJmd0Oyw8YnI+Jm5ic3A7IC8qIC5jcmVhdGVfc25hcHNob3RfaXRlcmF0b3IgPSAqLzxi cj4tIG1lbXR4X3RyZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yLDxicj4rIG1lbXR4 X3RyZWVfaW5kZXhfY3JlYXRlX3NuYXBzaG90X2l0ZXJhdG9yJmx0OzEmZ3Q7LDxicj4mbmJzcDsg LyogLnN0YXQgPSAqLyBnZW5lcmljX2luZGV4X3N0YXQsPGJyPiZuYnNwOyAvKiAuY29tcGFjdCA9 ICovIGdlbmVyaWNfaW5kZXhfY29tcGFjdCw8YnI+Jm5ic3A7IC8qIC5yZXNldF9zdGF0ID0gKi8g Z2VuZXJpY19pbmRleF9yZXNldF9zdGF0LDxicj4tIC8qIC5iZWdpbl9idWlsZCA9ICovIG1lbXR4 X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQsPGJyPi0gLyogLnJlc2VydmUgPSAqLyBtZW10eF90cmVl X2luZGV4X3Jlc2VydmUsPGJyPisgLyogLmJlZ2luX2J1aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9iZWdpbl9idWlsZCZsdDsxJmd0Oyw8YnI+KyAvKiAucmVzZXJ2ZSA9ICovIG1lbXR4X3RyZWVf aW5kZXhfcmVzZXJ2ZSZsdDsxJmd0Oyw8YnI+Jm5ic3A7IC8qIC5idWlsZF9uZXh0ID0gKi8gbWVt dHhfdHJlZV9pbmRleF9idWlsZF9uZXh0X211bHRpa2V5LDxicj4tIC8qIC5lbmRfYnVpbGQgPSAq LyBtZW10eF90cmVlX2luZGV4X2VuZF9idWlsZCw8YnI+KyAvKiAuZW5kX2J1aWxkID0gKi8gbWVt dHhfdHJlZV9pbmRleF9lbmRfYnVpbGQmbHQ7MSZndDssPGJyPiZuYnNwO307PGJyPiZuYnNwOzxi cj4mbmJzcDtzdGF0aWMgY29uc3Qgc3RydWN0IGluZGV4X3Z0YWIgbWVtdHhfdHJlZV9mdW5jX2lu ZGV4X3Z0YWIgPSB7PGJyPi0gLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ry b3ksPGJyPisgLyogLmRlc3Ryb3kgPSAqLyBtZW10eF90cmVlX2luZGV4X2Rlc3Ryb3kmbHQ7MSZn dDssPGJyPiZuYnNwOyAvKiAuY29tbWl0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhfY29tbWl0 X2NyZWF0ZSw8YnI+Jm5ic3A7IC8qIC5hYm9ydF9jcmVhdGUgPSAqLyBnZW5lcmljX2luZGV4X2Fi b3J0X2NyZWF0ZSw8YnI+Jm5ic3A7IC8qIC5jb21taXRfbW9kaWZ5ID0gKi8gZ2VuZXJpY19pbmRl eF9jb21taXRfbW9kaWZ5LDxicj4mbmJzcDsgLyogLmNvbW1pdF9kcm9wID0gKi8gZ2VuZXJpY19p bmRleF9jb21taXRfZHJvcCw8YnI+LSAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5k ZXhfdXBkYXRlX2RlZiw8YnI+KyAvKiAudXBkYXRlX2RlZiA9ICovIG1lbXR4X3RyZWVfaW5kZXhf dXBkYXRlX2RlZiZsdDsxJmd0Oyw8YnI+Jm5ic3A7IC8qIC5kZXBlbmRzX29uX3BrID0gKi8gbWVt dHhfdHJlZV9pbmRleF9kZXBlbmRzX29uX3BrLDxicj4mbmJzcDsgLyogLmRlZl9jaGFuZ2VfcmVx dWlyZXNfcmVidWlsZCA9ICovPGJyPiZuYnNwOyBtZW10eF9pbmRleF9kZWZfY2hhbmdlX3JlcXVp cmVzX3JlYnVpbGQsPGJyPi0gLyogLnNpemUgPSAqLyBtZW10eF90cmVlX2luZGV4X3NpemUsPGJy Pi0gLyogLmJzaXplID0gKi8gbWVtdHhfdHJlZV9pbmRleF9ic2l6ZSw8YnI+KyAvKiAuc2l6ZSA9 ICovIG1lbXR4X3RyZWVfaW5kZXhfc2l6ZSZsdDsxJmd0Oyw8YnI+KyAvKiAuYnNpemUgPSAqLyBt ZW10eF90cmVlX2luZGV4X2JzaXplJmx0OzEmZ3Q7LDxicj4mbmJzcDsgLyogLm1pbiA9ICovIGdl bmVyaWNfaW5kZXhfbWluLDxicj4mbmJzcDsgLyogLm1heCA9ICovIGdlbmVyaWNfaW5kZXhfbWF4 LDxicj4tIC8qIC5yYW5kb20gPSAqLyBtZW10eF90cmVlX2luZGV4X3JhbmRvbSw8YnI+LSAvKiAu Y291bnQgPSAqLyBtZW10eF90cmVlX2luZGV4X2NvdW50LDxicj4tIC8qIC5nZXQgPSAqLyBtZW10 eF90cmVlX2luZGV4X2dldCw8YnI+KyAvKiAucmFuZG9tID0gKi8gbWVtdHhfdHJlZV9pbmRleF9y YW5kb20mbHQ7MSZndDssPGJyPisgLyogLmNvdW50ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9jb3Vu dCZsdDsxJmd0Oyw8YnI+KyAvKiAuZ2V0ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9nZXQmbHQ7MSZn dDssPGJyPiZuYnNwOyAvKiAucmVwbGFjZSA9ICovIG1lbXR4X3RyZWVfZnVuY19pbmRleF9yZXBs YWNlLDxicj4tIC8qIC5jcmVhdGVfaXRlcmF0b3IgPSAqLyBtZW10eF90cmVlX2luZGV4X2NyZWF0 ZV9pdGVyYXRvciw8YnI+KyAvKiAuY3JlYXRlX2l0ZXJhdG9yID0gKi8gbWVtdHhfdHJlZV9pbmRl eF9jcmVhdGVfaXRlcmF0b3ImbHQ7MSZndDssPGJyPiZuYnNwOyAvKiAuY3JlYXRlX3NuYXBzaG90 X2l0ZXJhdG9yID0gKi88YnI+LSBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVy YXRvciw8YnI+KyBtZW10eF90cmVlX2luZGV4X2NyZWF0ZV9zbmFwc2hvdF9pdGVyYXRvciZsdDsx Jmd0Oyw8YnI+Jm5ic3A7IC8qIC5zdGF0ID0gKi8gZ2VuZXJpY19pbmRleF9zdGF0LDxicj4mbmJz cDsgLyogLmNvbXBhY3QgPSAqLyBnZW5lcmljX2luZGV4X2NvbXBhY3QsPGJyPiZuYnNwOyAvKiAu cmVzZXRfc3RhdCA9ICovIGdlbmVyaWNfaW5kZXhfcmVzZXRfc3RhdCw8YnI+LSAvKiAuYmVnaW5f YnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2JlZ2luX2J1aWxkLDxicj4tIC8qIC5yZXNlcnZl ID0gKi8gbWVtdHhfdHJlZV9pbmRleF9yZXNlcnZlLDxicj4rIC8qIC5iZWdpbl9idWlsZCA9ICov IG1lbXR4X3RyZWVfaW5kZXhfYmVnaW5fYnVpbGQmbHQ7MSZndDssPGJyPisgLyogLnJlc2VydmUg PSAqLyBtZW10eF90cmVlX2luZGV4X3Jlc2VydmUmbHQ7MSZndDssPGJyPiZuYnNwOyAvKiAuYnVp bGRfbmV4dCA9ICovIG1lbXR4X3RyZWVfZnVuY19pbmRleF9idWlsZF9uZXh0LDxicj4tIC8qIC5l bmRfYnVpbGQgPSAqLyBtZW10eF90cmVlX2luZGV4X2VuZF9idWlsZCw8YnI+KyAvKiAuZW5kX2J1 aWxkID0gKi8gbWVtdHhfdHJlZV9pbmRleF9lbmRfYnVpbGQmbHQ7MSZndDssPGJyPiZuYnNwO307 PGJyPiZuYnNwOzxicj4mbmJzcDsvKio8YnI+QEAgLTE0NTksNyArMTY0NCw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiBtZW10eF90cmVlX2Z1bmNfaW5kZXhfdnRhYiA9IHs8YnI+ Jm5ic3A7Jm5ic3A7KiBrZXkgZGVmaW50aW9uIGlzIG5vdCBjb21wbGV0ZWx5IGluaXRpYWxpemVk IGF0IHRoYXQgbW9tZW50KS48YnI+Jm5ic3A7Jm5ic3A7Ki88YnI+Jm5ic3A7c3RhdGljIGNvbnN0 IHN0cnVjdCBpbmRleF92dGFiIG1lbXR4X3RyZWVfZGlzYWJsZWRfaW5kZXhfdnRhYiA9IHs8YnI+ LSAvKiAuZGVzdHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSw8YnI+KyAvKiAuZGVz dHJveSA9ICovIG1lbXR4X3RyZWVfaW5kZXhfZGVzdHJveSZsdDsxJmd0Oyw8YnI+Jm5ic3A7IC8q IC5jb21taXRfY3JlYXRlID0gKi8gZ2VuZXJpY19pbmRleF9jb21taXRfY3JlYXRlLDxicj4mbmJz cDsgLyogLmFib3J0X2NyZWF0ZSA9ICovIGdlbmVyaWNfaW5kZXhfYWJvcnRfY3JlYXRlLDxicj4m bmJzcDsgLyogLmNvbW1pdF9tb2RpZnkgPSAqLyBnZW5lcmljX2luZGV4X2NvbW1pdF9tb2RpZnks PGJyPkBAIC0xNDg4LDI3ICsxNjczLDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRh YiBtZW10eF90cmVlX2Rpc2FibGVkX2luZGV4X3Z0YWIgPSB7PGJyPiZuYnNwOyAvKiAuZW5kX2J1 aWxkID0gKi8gZ2VuZXJpY19pbmRleF9lbmRfYnVpbGQsPGJyPiZuYnNwO307PGJyPiZuYnNwOzxi cj4tc3RydWN0IGluZGV4ICo8YnI+LW1lbXR4X3RyZWVfaW5kZXhfbmV3KHN0cnVjdCBtZW10eF9l bmdpbmUgKm1lbXR4LCBzdHJ1Y3QgaW5kZXhfZGVmICpkZWYpPGJyPit0ZW1wbGF0ZSAmbHQ7aW50 IFVTRV9ISU5UJmd0Ozxicj4rc3RhdGljIHN0cnVjdCBpbmRleCAqPGJyPittZW10eF90cmVlX2lu ZGV4X25ld190cGwoc3RydWN0IG1lbXR4X2VuZ2luZSAqbWVtdHgsIHN0cnVjdCBpbmRleF9kZWYg KmRlZiw8YnI+KyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiAqdnRhYik8YnI+Jm5ic3A7ezxicj4t IHN0cnVjdCBtZW10eF90cmVlX2luZGV4ICppbmRleCA9PGJyPi0gKHN0cnVjdCBtZW10eF90cmVl X2luZGV4ICopY2FsbG9jKDEsIHNpemVvZigqaW5kZXgpKTs8YnI+KyBzdHJ1Y3QgbWVtdHhfdHJl ZV9pbmRleCZsdDtVU0VfSElOVCZndDsgKmluZGV4ID08YnI+KyAoc3RydWN0IG1lbXR4X3RyZWVf aW5kZXgmbHQ7VVNFX0hJTlQmZ3Q7ICopPGJyPisgY2FsbG9jKDEsIHNpemVvZigqaW5kZXgpKTs8 YnI+Jm5ic3A7IGlmIChpbmRleCA9PSBOVUxMKSB7PGJyPiZuYnNwOyBkaWFnX3NldChPdXRPZk1l bW9yeSwgc2l6ZW9mKCppbmRleCksPGJyPiZuYnNwOyAibWFsbG9jIiwgInN0cnVjdCBtZW10eF90 cmVlX2luZGV4Iik7PGJyPiZuYnNwOyByZXR1cm4gTlVMTDs8YnI+Jm5ic3A7IH08YnI+LSBjb25z dCBzdHJ1Y3QgaW5kZXhfdnRhYiAqdnRhYjs8YnI+LSBpZiAoZGVmLSZndDtrZXlfZGVmLSZndDtm b3JfZnVuY19pbmRleCkgezxicj4tIGlmIChkZWYtJmd0O2tleV9kZWYtJmd0O2Z1bmNfaW5kZXhf ZnVuYyA9PSBOVUxMKTxicj4tIHZ0YWIgPSAmYW1wO21lbXR4X3RyZWVfZGlzYWJsZWRfaW5kZXhf dnRhYjs8YnI+LSBlbHNlPGJyPi0gdnRhYiA9ICZhbXA7bWVtdHhfdHJlZV9mdW5jX2luZGV4X3Z0 YWI7PGJyPi0gfSBlbHNlIGlmIChkZWYtJmd0O2tleV9kZWYtJmd0O2lzX211bHRpa2V5KSB7PGJy Pi0gdnRhYiA9ICZhbXA7bWVtdHhfdHJlZV9pbmRleF9tdWx0aWtleV92dGFiOzxicj4tIH0gZWxz ZSB7PGJyPi0gdnRhYiA9ICZhbXA7bWVtdHhfdHJlZV9pbmRleF92dGFiOzxicj4tIH08YnI+Jm5i c3A7IGlmIChpbmRleF9jcmVhdGUoJmFtcDtpbmRleC0mZ3Q7YmFzZSwgKHN0cnVjdCBlbmdpbmUg KiltZW10eCw8YnI+Jm5ic3A7IHZ0YWIsIGRlZikgIT0gMCkgezxicj4mbmJzcDsgZnJlZShpbmRl eCk7PGJyPkBAIC0xNTI0LDMgKzE3MDEsMjMgQEAgbWVtdHhfdHJlZV9pbmRleF9uZXcoc3RydWN0 IG1lbXR4X2VuZ2luZSAqbWVtdHgsIHN0cnVjdCBpbmRleF9kZWYgKmRlZik8YnI+Jm5ic3A7IG1l bXR4X2luZGV4X2V4dGVudF9mcmVlLCBtZW10eCk7PGJyPiZuYnNwOyByZXR1cm4gJmFtcDtpbmRl eC0mZ3Q7YmFzZTs8YnI+Jm5ic3A7fTxicj4rPGJyPitzdHJ1Y3QgaW5kZXggKjxicj4rbWVtdHhf dHJlZV9pbmRleF9uZXcoc3RydWN0IG1lbXR4X2VuZ2luZSAqbWVtdHgsIHN0cnVjdCBpbmRleF9k ZWYgKmRlZik8YnI+K3s8YnI+KyBjb25zdCBzdHJ1Y3QgaW5kZXhfdnRhYiAqdnRhYjs8YnI+KyBp ZiAoZGVmLSZndDtrZXlfZGVmLSZndDtmb3JfZnVuY19pbmRleCkgezxicj4rIGlmIChkZWYtJmd0 O2tleV9kZWYtJmd0O2Z1bmNfaW5kZXhfZnVuYyA9PSBOVUxMKTxicj4rIHZ0YWIgPSAmYW1wO21l bXR4X3RyZWVfZGlzYWJsZWRfaW5kZXhfdnRhYjs8YnI+KyBlbHNlPGJyPisgdnRhYiA9ICZhbXA7 bWVtdHhfdHJlZV9mdW5jX2luZGV4X3Z0YWI7PGJyPisgfSBlbHNlIGlmIChkZWYtJmd0O2tleV9k ZWYtJmd0O2lzX211bHRpa2V5KSB7PGJyPisgdnRhYiA9ICZhbXA7bWVtdHhfdHJlZV9pbmRleF9t dWx0aWtleV92dGFiOzxicj4rIH0gZWxzZSBpZiAoZGVmLSZndDtvcHRzLmhpbnQpIHs8YnI+KyB2 dGFiID0gJmFtcDttZW10eF90cmVlX3VzZV9oaW50X2luZGV4X3Z0YWI7PGJyPisgfSBlbHNlIHs8 YnI+KyB2dGFiID0gJmFtcDttZW10eF90cmVlX25vX2hpbnRfaW5kZXhfdnRhYjs8YnI+KyByZXR1 cm4gbWVtdHhfdHJlZV9pbmRleF9uZXdfdHBsJmx0OzAmZ3Q7KG1lbXR4LCBkZWYsIHZ0YWIpOzxi cj4rIH08YnI+KyByZXR1cm4gbWVtdHhfdHJlZV9pbmRleF9uZXdfdHBsJmx0OzEmZ3Q7KG1lbXR4 LCBkZWYsIHZ0YWIpOzxicj4rfTxicj5kaWZmIC0tZ2l0IGEvc3JjL2xpYi9zYWxhZC9icHNfdHJl ZS5oIGIvc3JjL2xpYi9zYWxhZC9icHNfdHJlZS5oPGJyPmluZGV4IGVmNWFlM2QuLjBiYjgwM2Eg MTAwNjQ0PGJyPi0tLSBhL3NyYy9saWIvc2FsYWQvYnBzX3RyZWUuaDxicj4rKysgYi9zcmMvbGli L3NhbGFkL2Jwc190cmVlLmg8YnI+QEAgLTE2OCw2ICsxNjgsMTcgQEA8YnI+Jm5ic3A7PGJyPiZu YnNwOy8qIHt7eyBCUFMtdHJlZSBpbnRlcmZhY2Ugc2V0dGluZ3MgKi88YnI+Jm5ic3A7LyoqPGJy PisgKiBPcHRpb25hbCBuYW1lc3BhY2UgZm9yIHN0cnVjdHMgYW5kIGZ1bmN0aW9ucy48YnI+KyAq IElzIHNldCwgc3RydWN0IGFuZCBmdW5jdGlvbnMgd2lsbCBoYXZlIEJQU19UUkVFX05BTUVTUEFD RTo6IHByZWZpeC48YnI+KyAqIEZvciBleGFtcGxlIG9uZSBjYW4gI2RlZmluZSBCUFNfVFJFRV9O QU1FU1BBQ0UgbXkgYWxvbmcgd2l0aDxicj4rICogI2RlZmluZSBCUFNfVFJFRV9OQU1FIF90ZXN0 LCBhbmQgdXNlIHRoZW48YnI+KyAqIHN0cnVjdCBteTo6YnBzX3RyZWVfdGVzdCBteV90cmVlOzxi cj4rICogbXk6OmJwc190cmVlX3Rlc3RfY3JlYXRlKCZhbXA7bXlfdHJlZSwgLi4uKTs8YnI+KyAq PGJyPisgKiAjZGVmaW5lIEJQU19UUkVFX05BTUVTUEFDRTxicj4rICovPGJyPis8YnI+Ky8qKjxi cj4mbmJzcDsmbmJzcDsqIEN1c3RvbSBuYW1lIGZvciBzdHJ1Y3RzIGFuZCBmdW5jdGlvbnMuPGJy PiZuYnNwOyZuYnNwOyogU3RydWN0IGFuZCBmdW5jdGlvbnMgd2lsbCBoYXZlIGJwc190cmVlIyNC UFNfVFJFRV9OQU1FIG5hbWUgb3IgcHJlZml4Ljxicj4mbmJzcDsmbmJzcDsqIEZvciBleGFtcGxl IG9uZSBjYW4gI2RlZmluZSBCUFNfVFJFRV9OQU1FIF90ZXN0LCBhbmQgdXNlIHRoZW48YnI+QEAg LTMwMCw2ICszMTEsMTAgQEA8YnI+Jm5ic3A7PGJyPiZuYnNwOy8qIH19fSAqLzxicj4mbmJzcDs8 YnI+KyNpZmRlZiBCUFNfVFJFRV9OQU1FU1BBQ0U8YnI+K25hbWVzcGFjZSBCUFNfVFJFRV9OQU1F U1BBQ0Ugezxicj4rI2VuZGlmPGJyPis8YnI+Jm5ic3A7Lyoge3t7IEJQUy10cmVlIGludGVybmFs IHNldHRpbmdzICovPGJyPiZuYnNwO3R5cGVkZWYgaW50MTZfdCBicHNfdHJlZV9wb3NfdDs8YnI+ Jm5ic3A7dHlwZWRlZiB1aW50MzJfdCBicHNfdHJlZV9ibG9ja19pZF90Ozxicj5AQCAtNjE4OCwz ICs2MjAzLDcgQEAgYnBzX3RyZWVfZGVidWdfY2hlY2tfaW50ZXJuYWxfZnVuY3Rpb25zKGJvb2wg YXNzZXJ0bWUpPGJyPiZuYnNwOyN1bmRlZiBicHNfdHJlZV9kZWJ1Z19jaGVja19pbnNlcnRfYW5k X21vdmVfdG9fbGVmdF9pbm5lcjxicj4mbmJzcDs8YnI+Jm5ic3A7LyogfX19ICovPGJyPis8YnI+ KyNpZmRlZiBCUFNfVFJFRV9OQU1FU1BBQ0U8YnI+K30gLyogbmFtZXNwYWNlIEJQU19UUkVFX05B TUVTUEFDRSB7ICovPGJyPisjZW5kaWY8YnI+ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L2FsdGVyLnJl c3VsdCBiL3Rlc3QvYm94L2FsdGVyLnJlc3VsdDxicj5pbmRleCAyMzdjMmQ4Li41YjQxMmE3IDEw MDY0NDxicj4tLS0gYS90ZXN0L2JveC9hbHRlci5yZXN1bHQ8YnI+KysrIGIvdGVzdC9ib3gvYWx0 ZXIucmVzdWx0PGJyPkBAIC02ODAsOCArNjgwLDkgQEAgcy5pbmRleC5wazxicj4mbmJzcDsmbmJz cDsmbmJzcDstIHR5cGU6IHVuc2lnbmVkPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O2lzX251bGxhYmxlOiBmYWxzZTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtmaWVs ZG5vOiAyPGJyPi0gdHlwZTogVFJFRTxicj4rIGhpbnQ6IHRydWU8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7aWQ6IDA8YnI+KyB0eXBlOiBUUkVFPGJyPiZuYnNwOyZuYnNwOyZuYnNwO3NwYWNlX2lkOiA3 MzE8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bmFtZTogcGs8YnI+Jm5ic3A7Li4uPGJyPkBAIC03MTAs OSArNzExLDEwIEBAIHMuaW5kZXgucGs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7LSB0eXBlOiB1bnNp Z25lZDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpc19udWxsYWJsZTogZmFsc2U8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZmllbGRubzogMTxicj4tIHNwYWNlX2lk OiA3MzE8YnI+KyBoaW50OiB0cnVlPGJyPiZuYnNwOyZuYnNwOyZuYnNwO2lkOiAwPGJyPiZuYnNw OyZuYnNwOyZuYnNwO3R5cGU6IFRSRUU8YnI+KyBzcGFjZV9pZDogNzMxPGJyPiZuYnNwOyZuYnNw OyZuYnNwO25hbWU6IHBrPGJyPiZuYnNwOy4uLjxicj4mbmJzcDtzLmluZGV4LnNlY29uZGFyeTxi cj5AQCAtNzIyLDggKzcyNCw5IEBAIHMuaW5kZXguc2Vjb25kYXJ5PGJyPiZuYnNwOyZuYnNwOyZu YnNwOy0gdHlwZTogdW5zaWduZWQ8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aXNf bnVsbGFibGU6IGZhbHNlPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2ZpZWxkbm86 IDI8YnI+LSB0eXBlOiBUUkVFPGJyPisgaGludDogdHJ1ZTxicj4mbmJzcDsmbmJzcDsmbmJzcDtp ZDogMTxicj4rIHR5cGU6IFRSRUU8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7c3BhY2VfaWQ6IDczMTxi cj4mbmJzcDsmbmJzcDsmbmJzcDtuYW1lOiBzZWNvbmRhcnk8YnI+Jm5ic3A7Li4uPGJyPkBAIC0x NTU5LDMgKzE1NjIsOTcgQEAgYXNzZXJ0KGVycjptYXRjaCgnZG9lcyBub3QgZXhpc3QnKSB+PSBu aWwpPGJyPiZuYnNwOy0tLTxicj4mbmJzcDstIHRydWU8YnI+Jm5ic3A7Li4uPGJyPistLSBoaW50 PGJyPitzID0gYm94LnNjaGVtYS5jcmVhdGVfc3BhY2UoJ3Rlc3QnKTs8YnI+Ky0tLTxicj4rLi4u PGJyPitzOmNyZWF0ZV9pbmRleCgndGVzdDEnLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7MSwgJ3Vp bnQnfX19KS5oaW50PGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitzOmNyZWF0ZV9pbmRl eCgndGVzdDInLCB7dHlwZT0ndHJlZScsIHBhcnRzPXt7MiwgJ3VpbnQnfX0sIGhpbnQgPSB0cnVl fSkuaGludDxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rczpjcmVhdGVfaW5kZXgoJ3Rl c3QzJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezMsICd1aW50J319LCBoaW50ID0gZmFsc2V9KS5o aW50PGJyPistLS08YnI+Ky0gZmFsc2U8YnI+Ky4uLjxicj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3Q0 Jywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezQsICdzdHJpbmcnfX0sIGhpbnQgPSBmYWxzZX0pLmhp bnQ8YnI+Ky0tLTxicj4rLSBmYWxzZTxicj4rLi4uPGJyPitzLmluZGV4LnRlc3QxLmhpbnQ8YnI+ Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MuaW5kZXgudGVzdDIuaGludDxicj4rLS0tPGJy PistIHRydWU8YnI+Ky4uLjxicj4rcy5pbmRleC50ZXN0My5oaW50PGJyPistLS08YnI+Ky0gZmFs c2U8YnI+Ky4uLjxicj4rcy5pbmRleC50ZXN0NC5oaW50PGJyPistLS08YnI+Ky0gZmFsc2U8YnI+ Ky4uLjxicj4rTiA9IDEwMDAgYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4gZG8gczpyZXBsYWNle2ks IGksIGksICcnIC4uIGl9IGVuZCBib3guY29tbWl0KCk8YnI+Ky0tLTxicj4rLi4uPGJyPitzLmlu ZGV4LnRlc3QxOmJzaXplKCkgPT0gcy5pbmRleC50ZXN0Mjpic2l6ZSgpPGJyPistLS08YnI+Ky0g dHJ1ZTxicj4rLi4uPGJyPitzLmluZGV4LnRlc3QxOmJzaXplKCkgJmd0OyBzLmluZGV4LnRlc3Qz OmJzaXplKCk8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MuaW5kZXgudGVzdDE6YnNp emUoKSAmZ3Q7IHMuaW5kZXgudGVzdDQ6YnNpemUoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4u Ljxicj4rcy5pbmRleC50ZXN0MTphbHRlcntoaW50PWZhbHNlfTxicj4rLS0tPGJyPisuLi48YnI+ K3MuaW5kZXgudGVzdDI6YWx0ZXJ7aGludD10cnVlfTxicj4rLS0tPGJyPisuLi48YnI+K3MuaW5k ZXgudGVzdDM6YWx0ZXJ7bmFtZT0ndGVzdDMzJywgaGludD1mYWxzZX08YnI+Ky0tLTxicj4rLi4u PGJyPitzLmluZGV4LnRlc3Q0OmFsdGVye2hpbnQ9dHJ1ZX08YnI+Ky0tLTxicj4rLi4uPGJyPitz LmluZGV4LnRlc3QxLmhpbnQ8YnI+Ky0tLTxicj4rLSBmYWxzZTxicj4rLi4uPGJyPitzLmluZGV4 LnRlc3QyLmhpbnQ8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MuaW5kZXgudGVzdDMz LmhpbnQ8YnI+Ky0tLTxicj4rLSBmYWxzZTxicj4rLi4uPGJyPitzLmluZGV4LnRlc3Q0LmhpbnQ8 YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MuaW5kZXgudGVzdDE6YnNpemUoKSAmbHQ7 IHMuaW5kZXgudGVzdDI6YnNpemUoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rcy5p bmRleC50ZXN0MTpic2l6ZSgpID09IHMuaW5kZXgudGVzdDMzOmJzaXplKCk8YnI+Ky0tLTxicj4r LSB0cnVlPGJyPisuLi48YnI+K3MuaW5kZXgudGVzdDE6YnNpemUoKSAmbHQ7IHMuaW5kZXgudGVz dDQ6YnNpemUoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rczpkcm9wKCk8YnI+Ky0t LTxicj4rLi4uPGJyPmRpZmYgLS1naXQgYS90ZXN0L2JveC9hbHRlci50ZXN0Lmx1YSBiL3Rlc3Qv Ym94L2FsdGVyLnRlc3QubHVhPGJyPmluZGV4IGFiZDA4ZTIuLjIxMTQxODYgMTAwNjQ0PGJyPi0t LSBhL3Rlc3QvYm94L2FsdGVyLnRlc3QubHVhPGJyPisrKyBiL3Rlc3QvYm94L2FsdGVyLnRlc3Qu bHVhPGJyPkBAIC02MjAsMyArNjIwLDM3IEBAIHM6ZHJvcCgpPGJyPiZuYnNwO3M6YWx0ZXIoe30p PGJyPiZuYnNwO29rLCBlcnIgPSBwY2FsbChib3guc2NoZW1hLnNwYWNlLmFsdGVyLCBzLmlkLCB7 fSk8YnI+Jm5ic3A7YXNzZXJ0KGVycjptYXRjaCgnZG9lcyBub3QgZXhpc3QnKSB+PSBuaWwpPGJy Pis8YnI+Ky0tIGhpbnQ8YnI+K3MgPSBib3guc2NoZW1hLmNyZWF0ZV9zcGFjZSgndGVzdCcpOzxi cj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QxJywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezEsICd1aW50 J319fSkuaGludDxicj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QyJywge3R5cGU9J3RyZWUnLCBwYXJ0 cz17ezIsICd1aW50J319LCBoaW50ID0gdHJ1ZX0pLmhpbnQ8YnI+K3M6Y3JlYXRlX2luZGV4KCd0 ZXN0MycsIHt0eXBlPSd0cmVlJywgcGFydHM9e3szLCAndWludCd9fSwgaGludCA9IGZhbHNlfSku aGludDxicj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3Q0Jywge3R5cGU9J3RyZWUnLCBwYXJ0cz17ezQs ICdzdHJpbmcnfX0sIGhpbnQgPSBmYWxzZX0pLmhpbnQ8YnI+Kzxicj4rcy5pbmRleC50ZXN0MS5o aW50PGJyPitzLmluZGV4LnRlc3QyLmhpbnQ8YnI+K3MuaW5kZXgudGVzdDMuaGludDxicj4rcy5p bmRleC50ZXN0NC5oaW50PGJyPis8YnI+K04gPSAxMDAwIGJveC5iZWdpbigpIGZvciBpID0gMSxO IGRvIHM6cmVwbGFjZXtpLCBpLCBpLCAnJyAuLiBpfSBlbmQgYm94LmNvbW1pdCgpPGJyPis8YnI+ K3MuaW5kZXgudGVzdDE6YnNpemUoKSA9PSBzLmluZGV4LnRlc3QyOmJzaXplKCk8YnI+K3MuaW5k ZXgudGVzdDE6YnNpemUoKSAmZ3Q7IHMuaW5kZXgudGVzdDM6YnNpemUoKTxicj4rcy5pbmRleC50 ZXN0MTpic2l6ZSgpICZndDsgcy5pbmRleC50ZXN0NDpic2l6ZSgpPGJyPis8YnI+K3MuaW5kZXgu dGVzdDE6YWx0ZXJ7aGludD1mYWxzZX08YnI+K3MuaW5kZXgudGVzdDI6YWx0ZXJ7aGludD10cnVl fTxicj4rcy5pbmRleC50ZXN0MzphbHRlcntuYW1lPSd0ZXN0MzMnLCBoaW50PWZhbHNlfTxicj4r cy5pbmRleC50ZXN0NDphbHRlcntoaW50PXRydWV9PGJyPis8YnI+K3MuaW5kZXgudGVzdDEuaGlu dDxicj4rcy5pbmRleC50ZXN0Mi5oaW50PGJyPitzLmluZGV4LnRlc3QzMy5oaW50PGJyPitzLmlu ZGV4LnRlc3Q0LmhpbnQ8YnI+Kzxicj4rcy5pbmRleC50ZXN0MTpic2l6ZSgpICZsdDsgcy5pbmRl eC50ZXN0Mjpic2l6ZSgpPGJyPitzLmluZGV4LnRlc3QxOmJzaXplKCkgPT0gcy5pbmRleC50ZXN0 MzM6YnNpemUoKTxicj4rcy5pbmRleC50ZXN0MTpic2l6ZSgpICZsdDsgcy5pbmRleC50ZXN0NDpi c2l6ZSgpPGJyPis8YnI+K3M6ZHJvcCgpPGJyPlwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZTxi cj5kaWZmIC0tZ2l0IGEvdGVzdC9ib3gvZXJyaW5qLnJlc3VsdCBiL3Rlc3QvYm94L2Vycmluai5y ZXN1bHQ8YnI+aW5kZXggNjEzZDIyYy4uYjhjMjQ3NiAxMDA2NDQ8YnI+LS0tIGEvdGVzdC9ib3gv ZXJyaW5qLnJlc3VsdDxicj4rKysgYi90ZXN0L2JveC9lcnJpbmoucmVzdWx0PGJyPkBAIC0xNzc0 LDkgKzE3NzQsMTAgQEAgcnRyZWVzcGFjZTpjcmVhdGVfaW5kZXgoJ3BrJywge2lmX25vdF9leGlz dHMgPSB0cnVlfSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7LSB0eXBlOiB1bnNpZ25lZDxicj4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpc19udWxsYWJsZTogZmFsc2U8YnI+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZmllbGRubzogMTxicj4rIGhpbnQ6IHRydWU8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7aWQ6IDA8YnI+LSBzcGFjZV9pZDogNTEyPGJyPiZuYnNwOyZuYnNwOyZuYnNw O3R5cGU6IFRSRUU8YnI+KyBzcGFjZV9pZDogNTEyPGJyPiZuYnNwOyZuYnNwOyZuYnNwO25hbWU6 IHBrPGJyPiZuYnNwOy4uLjxicj4mbmJzcDtydHJlZXNwYWNlOmNyZWF0ZV9pbmRleCgndGFyZ2V0 Jywge3R5cGU9J3J0cmVlJywgZGltZW5zaW9uID0gMywgcGFydHM9ezIsICdhcnJheSd9LHVuaXF1 ZSA9IGZhbHNlLCBpZl9ub3RfZXhpc3RzID0gdHJ1ZSx9KTxicj5kaWZmIC0tZ2l0IGEvdGVzdC9i b3gvdHJlZV9way5yZXN1bHQgYi90ZXN0L2JveC90cmVlX3BrLnJlc3VsdDxicj5pbmRleCBkZjNj NzhiLi4xOGNiNjA3IDEwMDY0NDxicj4tLS0gYS90ZXN0L2JveC90cmVlX3BrLnJlc3VsdDxicj4r KysgYi90ZXN0L2JveC90cmVlX3BrLnJlc3VsdDxicj5AQCAtODUyLDMgKzg1MiwzMTcgQEAgYm94 LmludGVybmFsLmNvbGxhdGlvbi5kcm9wKCd0ZXN0Jyk8YnI+Jm5ic3A7Ym94LmludGVybmFsLmNv bGxhdGlvbi5kcm9wKCd0ZXN0LWNpJyk8YnI+Jm5ic3A7LS0tPGJyPiZuYnNwOy4uLjxicj4rLS0g aGludHM8YnI+K3MgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdCcpPGJyPistLS08YnI+ Ky4uLjxicj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9ICd0 cnVlJ30gKTxicj4rLS0tPGJyPistIGVycm9yOiBJbGxlZ2FsIHBhcmFtZXRlcnMsIG9wdGlvbnMg cGFyYW1ldGVyICdoaW50JyBzaG91bGQgYmUgb2YgdHlwZSBib29sZWFuPGJyPisuLi48YnI+K3M6 Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAnaGFzaCcsIGhpbnQgPSB0cnVlfSApPGJyPist LS08YnI+Ky0gZXJyb3I6ICdDYW4nJ3QgY3JlYXRlIG9yIG1vZGlmeSBpbmRleCAnJ3Rlc3QnJyBp biBzcGFjZSAnJ3Rlc3QnJzogaGludCBpcyBvbmx5IHJlYXNvbmFibGU8YnI+KyB3aXRoIG1lbXR4 IHRyZWUgaW5kZXgnPGJyPisuLi48YnI+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAn aGFzaCd9KTphbHRlcih7aGludCA9IHRydWV9KTxicj4rLS0tPGJyPistIGVycm9yOiAnQ2FuJyd0 IGNyZWF0ZSBvciBtb2RpZnkgaW5kZXggJyd0ZXN0JycgaW4gc3BhY2UgJyd0ZXN0Jyc6IGhpbnQg aXMgb25seSByZWFzb25hYmxlPGJyPisgd2l0aCBtZW10eCB0cmVlIGluZGV4Jzxicj4rLi4uPGJy PitzOmNyZWF0ZV9pbmRleCgnbXVsdGlrZXknLCB7aGludCA9IHRydWUsIHBhcnRzID0ge3syLCAn aW50JywgcGF0aCA9ICdbKl0nfX19KTxicj4rLS0tPGJyPistIGVycm9yOiAnQ2FuJyd0IGNyZWF0 ZSBvciBtb2RpZnkgaW5kZXggJydtdWx0aWtleScnIGluIHNwYWNlICcndGVzdCcnOiBtdWx0aWtl eSBpbmRleDxicj4rIGNhbicndCB1c2UgaGludHMnPGJyPisuLi48YnI+K3M6Y3JlYXRlX2luZGV4 KCdtdWx0aWtleScsIHtwYXJ0cyA9IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSk6YWx0ZXIo e2hpbnQgPSB0cnVlfSk8YnI+Ky0tLTxicj4rLSBlcnJvcjogJ0NhbicndCBjcmVhdGUgb3IgbW9k aWZ5IGluZGV4ICcnbXVsdGlrZXknJyBpbiBzcGFjZSAnJ3Rlc3QnJzogbXVsdGlrZXkgaW5kZXg8 YnI+KyBjYW4nJ3QgdXNlIGhpbnRzJzxicj4rLi4uPGJyPitsdWFfY29kZSA9IFtbZnVuY3Rpb24o dHVwbGUpIHJldHVybiB7dHVwbGVbMV0gKyB0dXBsZVsyXX0gZW5kXV08YnI+Ky0tLTxicj4rLi4u PGJyPitib3guc2NoZW1hLmZ1bmMuY3JlYXRlKCdzJywge2JvZHkgPSBsdWFfY29kZSwgaXNfZGV0 ZXJtaW5pc3RpYyA9IHRydWUsIGlzX3NhbmRib3hlZCA9IHRydWV9KTxicj4rLS0tPGJyPisuLi48 YnI+K3M6Y3JlYXRlX2luZGV4KCdmdW5jJywge2hpbnQgPSB0cnVlLCBmdW5jID0gYm94LmZ1bmMu cy5pZCwgcGFydHMgPSB7ezEsICd1bnNpZ25lZCd9fX0pPGJyPistLS08YnI+Ky0gZXJyb3I6ICdD YW4nJ3QgY3JlYXRlIG9yIG1vZGlmeSBpbmRleCAnJ2Z1bmMnJyBpbiBzcGFjZSAnJ3Rlc3QnJzog ZnVuY3Rpb25hbCBpbmRleDxicj4rIGNhbicndCB1c2UgaGludHMnPGJyPisuLi48YnI+K3M6ZHJv cCgpPGJyPistLS08YnI+Ky4uLjxicj4rcyA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0 Jywge2VuZ2luZSA9ICd2aW55bCd9KTxicj4rLS0tPGJyPisuLi48YnI+K3M6Y3JlYXRlX2luZGV4 KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIGhpbnQgPSB0cnVlfSApPGJyPistLS08YnI+Ky0gZXJy b3I6ICdDYW4nJ3QgY3JlYXRlIG9yIG1vZGlmeSBpbmRleCAnJ3Rlc3QnJyBpbiBzcGFjZSAnJ3Rl c3QnJzogaGludCBpcyBvbmx5IHJlYXNvbmFibGU8YnI+KyB3aXRoIG1lbXR4IHRyZWUgaW5kZXgn PGJyPisuLi48YnI+K3M6ZHJvcCgpPGJyPistLS08YnI+Ky4uLjxicj4rLS0gbnVtZXJpYyBoaW50 czxicj4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKTxicj4rLS0tPGJyPisu Li48YnI+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50ID0gZmFs c2V9KS5oaW50PGJyPistLS08YnI+Ky0gZmFsc2U8YnI+Ky4uLjxicj4rczIgPSBib3guc2NoZW1h LnNwYWNlLmNyZWF0ZSgndGVzdDInKTxicj4rLS0tPGJyPisuLi48YnI+K3MyOmNyZWF0ZV9pbmRl eCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnfSkuaGludDxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4u Ljxicj4rTiA9IDIwMDA8YnI+Ky0tLTxicj4rLi4uPGJyPitib3guYmVnaW4oKSBmb3IgaSA9IDEs TiBkbyBsb2NhbCB2ID0gbWF0aC5yYW5kb20oMTAgKiBOKSBzMTpyZXBsYWNle3Z9IHMyOnJlcGxh Y2V7dn0gZW5kIGJveC5jb21taXQoKTxicj4rLS0tPGJyPisuLi48YnI+K3MxOmNvdW50KCkgPT0g czI6Y291bnQoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rZ29vZCA9IHRydWUgcjEg PSBzMTpzZWxlY3R7fSByMiA9IHMyOnNlbGVjdHt9PGJyPistLS08YnI+Ky4uLjxicj4raWYgI3Ix IH49ICNyMiB0aGVuIGdvb2QgPSBmYWxzZSBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitmb3Igayx2 IGluIHBhaXJzKHIxKSBkbyBpZiByMltrXVsxXSB+PSB2WzFdIHRoZW4gZ29vZCA9IGZhbHNlIGVu ZCBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitnb29kPGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4u PGJyPityMSA9IG5pbCByMiA9IG5pbDxicj4rLS0tPGJyPisuLi48YnI+K2Z1bmN0aW9uIGRpZmYo dDEsIHQyKSBpZiB0MSB0aGVuIHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNlIHJldHVybiB0MiB+ PSBuaWwgZW5kIGVuZDxicj4rLS0tPGJyPisuLi48YnI+K2ZvciBpID0gMSwgTiAqIDEwIGRvIGlm IGRpZmYoczE6Z2V0e2l9LCBzMjpnZXR7aX0pIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQ8YnI+ Ky0tLTxicj4rLi4uPGJyPitnb29kPGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitzMS5p bmRleFswXTpic2l6ZSgpICZsdDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4rLS0tPGJyPistIHRy dWU8YnI+Ky4uLjxicj4rczEuaW5kZXhbMF06YWx0ZXJ7aGludD10cnVlfTxicj4rLS0tPGJyPisu Li48YnI+K3MxLmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKTxicj4rLS0t PGJyPistIHRydWU8YnI+Ky4uLjxicj4rczIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX08YnI+ Ky0tLTxicj4rLi4uPGJyPitzMS5pbmRleFswXTpic2l6ZSgpICZndDsgczIuaW5kZXhbMF06YnNp emUoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rczEuaW5kZXhbMF06YWx0ZXJ7aGlu dD1mYWxzZX08YnI+Ky0tLTxicj4rLi4uPGJyPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmlu ZGV4WzBdOmJzaXplKCk8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MxOmRyb3AoKTxi cj4rLS0tPGJyPisuLi48YnI+K3MyOmRyb3AoKTxicj4rLS0tPGJyPisuLi48YnI+Ky0tIHN0cmlu ZyBoaW50czxicj4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKTxicj4rLS0t PGJyPisuLi48YnI+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0 cyA9IHsxLCAnc3RyJ30sIGhpbnQgPSBmYWxzZX0pLmhpbnQ8YnI+Ky0tLTxicj4rLSBmYWxzZTxi cj4rLi4uPGJyPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpPGJyPistLS08 YnI+Ky4uLjxicj4rczI6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRz ID0gezEsICdzdHInfX0pLmhpbnQ8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K04gPSAx MDAwPGJyPistLS08YnI+Ky4uLjxicj4rYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4gZG8gbG9jYWwg diA9ICcnLi5tYXRoLnJhbmRvbSgxMCAqIE4pIHMxOnJlcGxhY2V7dn0gczI6cmVwbGFjZXt2fSBl bmQgYm94LmNvbW1pdCgpPGJyPistLS08YnI+Ky4uLjxicj4rczE6Y291bnQoKSA9PSBzMjpjb3Vu dCgpPGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitnb29kID0gdHJ1ZSByMSA9IHMxOnNl bGVjdHt9IHIyID0gczI6c2VsZWN0e308YnI+Ky0tLTxicj4rLi4uPGJyPitpZiAjcjEgfj0gI3Iy IHRoZW4gZ29vZCA9IGZhbHNlIGVuZDxicj4rLS0tPGJyPisuLi48YnI+K2ZvciBrLHYgaW4gcGFp cnMocjEpIGRvIGlmIHIyW2tdWzFdIH49IHZbMV0gdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZDxi cj4rLS0tPGJyPisuLi48YnI+K2dvb2Q8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3Ix ID0gbmlsIHIyID0gbmlsPGJyPistLS08YnI+Ky4uLjxicj4rZnVuY3Rpb24gZGlmZih0MSwgdDIp IGlmIHQxIHRoZW4gcmV0dXJuIHQxWzFdIH49IHQyWzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBl bmQgZW5kPGJyPistLS08YnI+Ky4uLjxicj4rZm9yIGkgPSAxLCBOICogMTAgZG8gdiA9ICcnLi5p IGlmIGRpZmYoczE6Z2V0e3Z9LCBzMjpnZXR7dn0pIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQ8 YnI+Ky0tLTxicj4rLi4uPGJyPitnb29kPGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitz MS5pbmRleFswXTpic2l6ZSgpICZsdDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4rLS0tPGJyPist IHRydWU8YnI+Ky4uLjxicj4rczEuaW5kZXhbMF06YWx0ZXJ7aGludD10cnVlfTxicj4rLS0tPGJy PisuLi48YnI+K3MxLmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKTxicj4r LS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rczIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX08 YnI+Ky0tLTxicj4rLi4uPGJyPitzMS5pbmRleFswXTpic2l6ZSgpICZndDsgczIuaW5kZXhbMF06 YnNpemUoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rczEuaW5kZXhbMF06YWx0ZXJ7 aGludD1mYWxzZX08YnI+Ky0tLTxicj4rLi4uPGJyPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMy LmluZGV4WzBdOmJzaXplKCk8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MxOmRyb3Ao KTxicj4rLS0tPGJyPisuLi48YnI+K3MyOmRyb3AoKTxicj4rLS0tPGJyPisuLi48YnI+Ky0tIHN0 cmluZyB3aXRoIGNvbGxhdGlvbiBoaW50czxicj4rczEgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0 ZSgndGVzdDEnKTxicj4rLS0tPGJyPisuLi48YnI+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0 eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0cicsIGNvbGxhdGlvbiA9ICdVbmljb2RlJ319 LCBoaW50ID0gZmFsc2V9KS5oaW50PGJyPistLS08YnI+Ky0gZmFsc2U8YnI+Ky4uLjxicj4rczIg PSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKTxicj4rLS0tPGJyPisuLi48YnI+K3My OmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0cics IGNvbGxhdGlvbiA9ICdVbmljb2RlJ319fSkuaGludDxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4u Ljxicj4rTiA9IDEwMDA8YnI+Ky0tLTxicj4rLi4uPGJyPitzeW1zID0geydhJywgJ0InLCAnYycs ICdEJywgJ9C2JywgJ9CBJywgJ34nLCAnMScsICclJywgJzInfTxicj4rLS0tPGJyPisuLi48YnI+ K3N5bXNfc2l6ZSA9ICNzeW1zPGJyPistLS08YnI+Ky4uLjxicj4rbGVuID0gMjA8YnI+Ky0tLTxi cj4rLi4uPGJyPit2YWxzID0ge308YnI+Ky0tLTxicj4rLi4uPGJyPitmb3IgaSA9IDEsMipOIGRv IHN0ciA9ICcnIGZvciBqPTEsbGVuIGRvIHN0ciA9IHN0ciAuLiBzeW1zW21hdGgucmFuZG9tKHN5 bXNfc2l6ZSldIGVuZCB2YWxzW2ldID0gc3RyIGVuZDxicj4rLS0tPGJyPisuLi48YnI+K2ZvciBp ID0gMSxOIGRvIGxvY2FsIHYgPSB2YWxzW2ldIHMxOnJlcGxhY2V7dn0gczI6cmVwbGFjZXt2fSBl bmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitzMTpjb3VudCgpID09IHMyOmNvdW50KCk8YnI+Ky0tLTxi cj4rLSB0cnVlPGJyPisuLi48YnI+K2dvb2QgPSB0cnVlIHIxID0gczE6c2VsZWN0e30gcjIgPSBz MjpzZWxlY3R7fTxicj4rLS0tPGJyPisuLi48YnI+K2lmICNyMSB+PSAjcjIgdGhlbiBnb29kID0g ZmFsc2UgZW5kPGJyPistLS08YnI+Ky4uLjxicj4rZm9yIGssdiBpbiBwYWlycyhyMSkgZG8gaWYg cjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPistLS08YnI+Ky4u Ljxicj4rZ29vZDxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rcjEgPSBuaWwgcjIgPSBu aWw8YnI+Ky0tLTxicj4rLi4uPGJyPitmdW5jdGlvbiBkaWZmKHQxLCB0MikgaWYgdDEgdGhlbiBy ZXR1cm4gdDFbMV0gfj0gdDJbMV0gZWxzZSByZXR1cm4gdDIgfj0gbmlsIGVuZCBlbmQ8YnI+Ky0t LTxicj4rLi4uPGJyPitmb3IgaSA9IDEsIE4gKiAyIGRvIHYgPSB2YWxzW2ldIGlmIGRpZmYoczE6 Z2V0e3Z9LCBzMjpnZXR7dn0pIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQ8YnI+Ky0tLTxicj4r Li4uPGJyPitnb29kPGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitzMS5pbmRleFswXTpi c2l6ZSgpICZsdDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4u Ljxicj4rczEuaW5kZXhbMF06YWx0ZXJ7aGludD10cnVlfTxicj4rLS0tPGJyPisuLi48YnI+K3Mx LmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKTxicj4rLS0tPGJyPistIHRy dWU8YnI+Ky4uLjxicj4rczIuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX08YnI+Ky0tLTxicj4r Li4uPGJyPitzMS5pbmRleFswXTpic2l6ZSgpICZndDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4r LS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rczEuaW5kZXhbMF06YWx0ZXJ7aGludD1mYWxzZX08 YnI+Ky0tLTxicj4rLi4uPGJyPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJz aXplKCk8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K3MxOmRyb3AoKTxicj4rLS0tPGJy PisuLi48YnI+K3MyOmRyb3AoKTxicj4rLS0tPGJyPisuLi48YnI+ZGlmZiAtLWdpdCBhL3Rlc3Qv Ym94L3RyZWVfcGsudGVzdC5sdWEgYi90ZXN0L2JveC90cmVlX3BrLnRlc3QubHVhPGJyPmluZGV4 IDExOTBhYjQuLjJmMjJlZDkgMTAwNjQ0PGJyPi0tLSBhL3Rlc3QvYm94L3RyZWVfcGsudGVzdC5s dWE8YnI+KysrIGIvdGVzdC9ib3gvdHJlZV9way50ZXN0Lmx1YTxicj5AQCAtMzAxLDMgKzMwMSwx MTggQEAgczpkcm9wKCk8YnI+Jm5ic3A7PGJyPiZuYnNwO2JveC5pbnRlcm5hbC5jb2xsYXRpb24u ZHJvcCgndGVzdCcpPGJyPiZuYnNwO2JveC5pbnRlcm5hbC5jb2xsYXRpb24uZHJvcCgndGVzdC1j aScpPGJyPis8YnI+Ky0tIGhpbnRzPGJyPitzID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rl c3QnKTxicj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgaGludCA9ICd0 cnVlJ30gKTxicj4rczpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICdoYXNoJywgaGludCA9 IHRydWV9ICk8YnI+K3M6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAnaGFzaCd9KTphbHRl cih7aGludCA9IHRydWV9KTxicj4rczpjcmVhdGVfaW5kZXgoJ211bHRpa2V5Jywge2hpbnQgPSB0 cnVlLCBwYXJ0cyA9IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSk8YnI+K3M6Y3JlYXRlX2lu ZGV4KCdtdWx0aWtleScsIHtwYXJ0cyA9IHt7MiwgJ2ludCcsIHBhdGggPSAnWypdJ319fSk6YWx0 ZXIoe2hpbnQgPSB0cnVlfSk8YnI+K2x1YV9jb2RlID0gW1tmdW5jdGlvbih0dXBsZSkgcmV0dXJu IHt0dXBsZVsxXSArIHR1cGxlWzJdfSBlbmRdXTxicj4rYm94LnNjaGVtYS5mdW5jLmNyZWF0ZSgn cycsIHtib2R5ID0gbHVhX2NvZGUsIGlzX2RldGVybWluaXN0aWMgPSB0cnVlLCBpc19zYW5kYm94 ZWQgPSB0cnVlfSk8YnI+K3M6Y3JlYXRlX2luZGV4KCdmdW5jJywge2hpbnQgPSB0cnVlLCBmdW5j ID0gYm94LmZ1bmMucy5pZCwgcGFydHMgPSB7ezEsICd1bnNpZ25lZCd9fX0pPGJyPitzOmRyb3Ao KTxicj4rPGJyPitzID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QnLCB7ZW5naW5lID0g J3ZpbnlsJ30pPGJyPitzOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBoaW50 ID0gdHJ1ZX0gKTxicj4rczpkcm9wKCk8YnI+Kzxicj4rLS0gbnVtZXJpYyBoaW50czxicj4rczEg PSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDEnKTxicj4rczE6Y3JlYXRlX2luZGV4KCd0 ZXN0Jywge3R5cGUgPSAndHJlZScsIGhpbnQgPSBmYWxzZX0pLmhpbnQ8YnI+K3MyID0gYm94LnNj aGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QyJyk8YnI+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0 eXBlID0gJ3RyZWUnfSkuaGludDxicj4rPGJyPitOID0gMjAwMDxicj4rYm94LmJlZ2luKCkgZm9y IGkgPSAxLE4gZG8gbG9jYWwgdiA9IG1hdGgucmFuZG9tKDEwICogTikgczE6cmVwbGFjZXt2fSBz MjpyZXBsYWNle3Z9IGVuZCBib3guY29tbWl0KCk8YnI+K3MxOmNvdW50KCkgPT0gczI6Y291bnQo KTxicj4rPGJyPitnb29kID0gdHJ1ZSByMSA9IHMxOnNlbGVjdHt9IHIyID0gczI6c2VsZWN0e308 YnI+K2lmICNyMSB+PSAjcjIgdGhlbiBnb29kID0gZmFsc2UgZW5kPGJyPitmb3Igayx2IGluIHBh aXJzKHIxKSBkbyBpZiByMltrXVsxXSB+PSB2WzFdIHRoZW4gZ29vZCA9IGZhbHNlIGVuZCBlbmQ8 YnI+K2dvb2Q8YnI+K3IxID0gbmlsIHIyID0gbmlsPGJyPis8YnI+K2Z1bmN0aW9uIGRpZmYodDEs IHQyKSBpZiB0MSB0aGVuIHJldHVybiB0MVsxXSB+PSB0MlsxXSBlbHNlIHJldHVybiB0MiB+PSBu aWwgZW5kIGVuZDxicj4rZm9yIGkgPSAxLCBOICogMTAgZG8gaWYgZGlmZihzMTpnZXR7aX0sIHMy OmdldHtpfSkgdGhlbiBnb29kID0gZmFsc2UgZW5kIGVuZDxicj4rZ29vZDxicj4rPGJyPitzMS5p bmRleFswXTpic2l6ZSgpICZsdDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4rczEuaW5kZXhbMF06 YWx0ZXJ7aGludD10cnVlfTxicj4rczEuaW5kZXhbMF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpi c2l6ZSgpPGJyPitzMi5pbmRleFswXTphbHRlcntoaW50PWZhbHNlfTxicj4rczEuaW5kZXhbMF06 YnNpemUoKSAmZ3Q7IHMyLmluZGV4WzBdOmJzaXplKCk8YnI+K3MxLmluZGV4WzBdOmFsdGVye2hp bnQ9ZmFsc2V9PGJyPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4WzBdOmJzaXplKCk8 YnI+Kzxicj4rczE6ZHJvcCgpPGJyPitzMjpkcm9wKCk8YnI+Kzxicj4rLS0gc3RyaW5nIGhpbnRz PGJyPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpPGJyPitzMTpjcmVhdGVf aW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7MSwgJ3N0cid9LCBoaW50ID0g ZmFsc2V9KS5oaW50PGJyPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpPGJy PitzMjpjcmVhdGVfaW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7MSwgJ3N0 cid9fSkuaGludDxicj4rPGJyPitOID0gMTAwMDxicj4rYm94LmJlZ2luKCkgZm9yIGkgPSAxLE4g ZG8gbG9jYWwgdiA9ICcnLi5tYXRoLnJhbmRvbSgxMCAqIE4pIHMxOnJlcGxhY2V7dn0gczI6cmVw bGFjZXt2fSBlbmQgYm94LmNvbW1pdCgpPGJyPitzMTpjb3VudCgpID09IHMyOmNvdW50KCk8YnI+ Kzxicj4rZ29vZCA9IHRydWUgcjEgPSBzMTpzZWxlY3R7fSByMiA9IHMyOnNlbGVjdHt9PGJyPitp ZiAjcjEgfj0gI3IyIHRoZW4gZ29vZCA9IGZhbHNlIGVuZDxicj4rZm9yIGssdiBpbiBwYWlycyhy MSkgZG8gaWYgcjJba11bMV0gfj0gdlsxXSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPitn b29kPGJyPityMSA9IG5pbCByMiA9IG5pbDxicj4rPGJyPitmdW5jdGlvbiBkaWZmKHQxLCB0Mikg aWYgdDEgdGhlbiByZXR1cm4gdDFbMV0gfj0gdDJbMV0gZWxzZSByZXR1cm4gdDIgfj0gbmlsIGVu ZCBlbmQ8YnI+K2ZvciBpID0gMSwgTiAqIDEwIGRvIHYgPSAnJy4uaSBpZiBkaWZmKHMxOmdldHt2 fSwgczI6Z2V0e3Z9KSB0aGVuIGdvb2QgPSBmYWxzZSBlbmQgZW5kPGJyPitnb29kPGJyPis8YnI+ K3MxLmluZGV4WzBdOmJzaXplKCkgJmx0OyBzMi5pbmRleFswXTpic2l6ZSgpPGJyPitzMS5pbmRl eFswXTphbHRlcntoaW50PXRydWV9PGJyPitzMS5pbmRleFswXTpic2l6ZSgpID09IHMyLmluZGV4 WzBdOmJzaXplKCk8YnI+K3MyLmluZGV4WzBdOmFsdGVye2hpbnQ9ZmFsc2V9PGJyPitzMS5pbmRl eFswXTpic2l6ZSgpICZndDsgczIuaW5kZXhbMF06YnNpemUoKTxicj4rczEuaW5kZXhbMF06YWx0 ZXJ7aGludD1mYWxzZX08YnI+K3MxLmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNp emUoKTxicj4rPGJyPitzMTpkcm9wKCk8YnI+K3MyOmRyb3AoKTxicj4rPGJyPistLSBzdHJpbmcg d2l0aCBjb2xsYXRpb24gaGludHM8YnI+K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rl c3QxJyk8YnI+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9 IHt7MSwgJ3N0cicsIGNvbGxhdGlvbiA9ICdVbmljb2RlJ319LCBoaW50ID0gZmFsc2V9KS5oaW50 PGJyPitzMiA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MicpPGJyPitzMjpjcmVhdGVf aW5kZXgoJ3Rlc3QnLCB7dHlwZSA9ICd0cmVlJywgcGFydHMgPSB7ezEsICdzdHInLCBjb2xsYXRp b24gPSAnVW5pY29kZSd9fX0pLmhpbnQ8YnI+Kzxicj4rTiA9IDEwMDA8YnI+K3N5bXMgPSB7J2En LCAnQicsICdjJywgJ0QnLCAn0LYnLCAn0IEnLCAnficsICcxJywgJyUnLCAnMid9PGJyPitzeW1z X3NpemUgPSAjc3ltczxicj4rbGVuID0gMjA8YnI+K3ZhbHMgPSB7fTxicj4rZm9yIGkgPSAxLDIq TiBkbyBzdHIgPSAnJyBmb3Igaj0xLGxlbiBkbyBzdHIgPSBzdHIgLi4gc3ltc1ttYXRoLnJhbmRv bShzeW1zX3NpemUpXSBlbmQgdmFsc1tpXSA9IHN0ciBlbmQ8YnI+Kzxicj4rZm9yIGkgPSAxLE4g ZG8gbG9jYWwgdiA9IHZhbHNbaV0gczE6cmVwbGFjZXt2fSBzMjpyZXBsYWNle3Z9IGVuZDxicj4r czE6Y291bnQoKSA9PSBzMjpjb3VudCgpPGJyPis8YnI+K2dvb2QgPSB0cnVlIHIxID0gczE6c2Vs ZWN0e30gcjIgPSBzMjpzZWxlY3R7fTxicj4raWYgI3IxIH49ICNyMiB0aGVuIGdvb2QgPSBmYWxz ZSBlbmQ8YnI+K2ZvciBrLHYgaW4gcGFpcnMocjEpIGRvIGlmIHIyW2tdWzFdIH49IHZbMV0gdGhl biBnb29kID0gZmFsc2UgZW5kIGVuZDxicj4rZ29vZDxicj4rcjEgPSBuaWwgcjIgPSBuaWw8YnI+ Kzxicj4rZnVuY3Rpb24gZGlmZih0MSwgdDIpIGlmIHQxIHRoZW4gcmV0dXJuIHQxWzFdIH49IHQy WzFdIGVsc2UgcmV0dXJuIHQyIH49IG5pbCBlbmQgZW5kPGJyPitmb3IgaSA9IDEsIE4gKiAyIGRv IHYgPSB2YWxzW2ldIGlmIGRpZmYoczE6Z2V0e3Z9LCBzMjpnZXR7dn0pIHRoZW4gZ29vZCA9IGZh bHNlIGVuZCBlbmQ8YnI+K2dvb2Q8YnI+Kzxicj4rczEuaW5kZXhbMF06YnNpemUoKSAmbHQ7IHMy LmluZGV4WzBdOmJzaXplKCk8YnI+K3MxLmluZGV4WzBdOmFsdGVye2hpbnQ9dHJ1ZX08YnI+K3Mx LmluZGV4WzBdOmJzaXplKCkgPT0gczIuaW5kZXhbMF06YnNpemUoKTxicj4rczIuaW5kZXhbMF06 YWx0ZXJ7aGludD1mYWxzZX08YnI+K3MxLmluZGV4WzBdOmJzaXplKCkgJmd0OyBzMi5pbmRleFsw XTpic2l6ZSgpPGJyPitzMS5pbmRleFswXTphbHRlcntoaW50PWZhbHNlfTxicj4rczEuaW5kZXhb MF06YnNpemUoKSA9PSBzMi5pbmRleFswXTpic2l6ZSgpPGJyPis8YnI+K3MxOmRyb3AoKTxicj4r czI6ZHJvcCgpPGJyPmRpZmYgLS1naXQgYS90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC5yZXN1 bHQgYi90ZXN0L2JveC90cmVlX3BrX211bHRpcGFydC5yZXN1bHQ8YnI+aW5kZXggOTMyMTlmNi4u M2Y2YmI5NCAxMDA2NDQ8YnI+LS0tIGEvdGVzdC9ib3gvdHJlZV9wa19tdWx0aXBhcnQucmVzdWx0 PGJyPisrKyBiL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlwYXJ0LnJlc3VsdDxicj5AQCAtNTQyLDMg KzU0MiwxNTYgQEAgc3BhY2U6ZHJvcCgpPGJyPiZuYnNwO3NwYWNlID0gbmlsPGJyPiZuYnNwOy0t LTxicj4mbmJzcDsuLi48YnI+Ky0tIGhpbnRzPGJyPit0ZXN0X3J1bjpjbWQoInNldG9wdCBkZWxp bWl0ZXIgJzsnIik8YnI+Ky0tLTxicj4rLSB0cnVlPGJyPisuLi48YnI+K2Z1bmN0aW9uIGVxdWFs KHJlczEsIHJlczIpPGJyPisgaWYgI3JlczEgfj0gI3JlczIgdGhlbjxicj4rIHJldHVybiBmYWxz ZTxicj4rIGVuZDxicj4rIGZvciBrLHYgaW4gcGFpcnMocmVzMSkgZG88YnI+KyBpZiByZXMyW2td WzFdIH49IHZbMV0gb3IgcmVzMltrXVsyXSB+PSB2WzJdIHRoZW48YnI+KyByZXR1cm4gZmFsc2U8 YnI+KyBlbmQ8YnI+KyBlbmQ8YnI+KyByZXR1cm4gdHJ1ZTxicj4rZW5kPGJyPit0ZXN0X3J1bjpj bWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTs8YnI+Ky0tLTxicj4rLi4uPGJyPistLSBudW0gbnVt PGJyPitOMSA9IDEwMDxicj4rLS0tPGJyPisuLi48YnI+K3QxID0ge308YnI+Ky0tLTxicj4rLi4u PGJyPitmb3IgaSA9IDEsTjEqMiBkbyB0MVtpXSA9IG1hdGgucmFuZG9tKDEwMDAwKSAqIDEwMDAw ICsgaSBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitOMiA9IDU8YnI+Ky0tLTxicj4rLi4uPGJyPit0 MiA9IHt9PGJyPistLS08YnI+Ky4uLjxicj4rZm9yIGkgPSAxLE4yKjIgZG8gdDJbaV0gPSBtYXRo LnJhbmRvbSgxMDAwMDAwKSBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitzMSA9IGJveC5zY2hlbWEu c3BhY2UuY3JlYXRlKCd0ZXN0MScpPGJyPistLS08YnI+Ky4uLjxicj4rczE6Y3JlYXRlX2luZGV4 KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0ge3sxLCAnbnVtJ30sIHsyLCAnbnVtJ319 LCBoaW50ID0gZmFsc2V9KS5oaW50PGJyPistLS08YnI+Ky0gZmFsc2U8YnI+Ky4uLjxicj4rczIg PSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKTxicj4rLS0tPGJyPisuLi48YnI+K3My OmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0cyA9IHt7MSwgJ251bSd9 LCB7MiwgJ251bSd9fSwgaGludCA9IHRydWV9KS5oaW50PGJyPistLS08YnI+Ky0gdHJ1ZTxicj4r Li4uPGJyPitmb3IgaiA9IDEsTjIgZG8gZm9yIGkgPSAxLE4xIGRvIHMxOnJlcGxhY2V7dDFbaV0s IHQyW2pdfSBzMjpyZXBsYWNle3QxW2ldLCB0MltqXX0gZW5kIGVuZDxicj4rLS0tPGJyPisuLi48 YnI+K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxi cj4rZXF1YWwoczE6c2VsZWN0e30sIHMyOnNlbGVjdHt9KTxicj4rLS0tPGJyPistIHRydWU8YnI+ Ky4uLjxicj4rZ29vZCA9IHRydWU8YnI+Ky0tLTxicj4rLi4uPGJyPitmb3IgaSA9IDEsTjEqMiBk byBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldfSwgczI6c2VsZWN0e3QxW2ld fSkgZW5kPGJyPistLS08YnI+Ky4uLjxicj4rZ29vZDxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4u Ljxicj4rZm9yIGkgPSAxLE4xKjIgZG8gZm9yIGo9MSxOMioyIGRvIGdvb2QgPSBnb29kIGFuZCBl cXVhbChzMTpzZWxlY3R7dDFbaV0sIHQyW2pdfSwgczI6c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVu ZCBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitnb29kPGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4u PGJyPitzMTpkcm9wKCk8YnI+Ky0tLTxicj4rLi4uPGJyPitzMjpkcm9wKCk8YnI+Ky0tLTxicj4r Li4uPGJyPistLSBzdHIgbnVtPGJyPitOMSA9IDEwMDxicj4rLS0tPGJyPisuLi48YnI+K3QxID0g e308YnI+Ky0tLTxicj4rLi4uPGJyPitmb3IgaSA9IDEsTjEqMiBkbyB0MVtpXSA9ICcnLi4obWF0 aC5yYW5kb20oMTAwMDApICogMTAwMDAgKyBpKSBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitOMiA9 IDU8YnI+Ky0tLTxicj4rLi4uPGJyPit0MiA9IHt9PGJyPistLS08YnI+Ky4uLjxicj4rZm9yIGkg PSAxLE4yKjIgZG8gdDJbaV0gPSBtYXRoLnJhbmRvbSgxMDAwMDAwKSBlbmQ8YnI+Ky0tLTxicj4r Li4uPGJyPitzMSA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCd0ZXN0MScpPGJyPistLS08YnI+ Ky4uLjxicj4rczE6Y3JlYXRlX2luZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0g e3sxLCAnc3RyJ30sIHsyLCAnbnVtJ319LCBoaW50ID0gZmFsc2V9KS5oaW50PGJyPistLS08YnI+ Ky0gZmFsc2U8YnI+Ky4uLjxicj4rczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDIn KTxicj4rLS0tPGJyPisuLi48YnI+K3MyOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3Ry ZWUnLCBwYXJ0cyA9IHt7MSwgJ3N0cid9LCB7MiwgJ251bSd9fSwgaGludCA9IHRydWV9KS5oaW50 PGJyPistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitmb3IgaiA9IDEsTjIgZG8gZm9yIGkgPSAx LE4xIGRvIHMxOnJlcGxhY2V7dDFbaV0sIHQyW2pdfSBzMjpyZXBsYWNle3QxW2ldLCB0MltqXX0g ZW5kIGVuZDxicj4rLS0tPGJyPisuLi48YnI+K3MxOmNvdW50KCkgPT0gczI6Y291bnQoKTxicj4r LS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rZXF1YWwoczE6c2VsZWN0e30sIHMyOnNlbGVjdHt9 KTxicj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rZ29vZCA9IHRydWU8YnI+Ky0tLTxicj4r Li4uPGJyPitmb3IgaSA9IDEsTjEqMiBkbyBnb29kID0gZ29vZCBhbmQgZXF1YWwoczE6c2VsZWN0 e3QxW2ldfSwgczI6c2VsZWN0e3QxW2ldfSkgZW5kPGJyPistLS08YnI+Ky4uLjxicj4rZ29vZDxi cj4rLS0tPGJyPistIHRydWU8YnI+Ky4uLjxicj4rZm9yIGkgPSAxLE4xKjIgZG8gZm9yIGo9MSxO MioyIGRvIGdvb2QgPSBnb29kIGFuZCBlcXVhbChzMTpzZWxlY3R7dDFbaV0sIHQyW2pdfSwgczI6 c2VsZWN0e3QxW2ldLCB0MltqXX0pIGVuZCBlbmQ8YnI+Ky0tLTxicj4rLi4uPGJyPitnb29kPGJy PistLS08YnI+Ky0gdHJ1ZTxicj4rLi4uPGJyPitzMTpkcm9wKCk8YnI+Ky0tLTxicj4rLi4uPGJy PitzMjpkcm9wKCk8YnI+Ky0tLTxicj4rLi4uPGJyPmRpZmYgLS1naXQgYS90ZXN0L2JveC90cmVl X3BrX211bHRpcGFydC50ZXN0Lmx1YSBiL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlwYXJ0LnRlc3Qu bHVhPGJyPmluZGV4IDdkMzQwNWYuLmNiYTNhOTggMTAwNjQ0PGJyPi0tLSBhL3Rlc3QvYm94L3Ry ZWVfcGtfbXVsdGlwYXJ0LnRlc3QubHVhPGJyPisrKyBiL3Rlc3QvYm94L3RyZWVfcGtfbXVsdGlw YXJ0LnRlc3QubHVhPGJyPkBAIC0xOTQsMyArMTk0LDY3IEBAIHRlc3RfcnVuOmNtZCgic2V0b3B0 IGRlbGltaXRlciAnJyIpOzxicj4mbmJzcDtzcGFjZTpkcm9wKCk8YnI+Jm5ic3A7PGJyPiZuYnNw O3NwYWNlID0gbmlsPGJyPis8YnI+Kzxicj4rLS0gaGludHM8YnI+K3Rlc3RfcnVuOmNtZCgic2V0 b3B0IGRlbGltaXRlciAnOyciKTxicj4rZnVuY3Rpb24gZXF1YWwocmVzMSwgcmVzMik8YnI+KyBp ZiAjcmVzMSB+PSAjcmVzMiB0aGVuPGJyPisgcmV0dXJuIGZhbHNlPGJyPisgZW5kPGJyPisgZm9y IGssdiBpbiBwYWlycyhyZXMxKSBkbzxicj4rIGlmIHJlczJba11bMV0gfj0gdlsxXSBvciByZXMy W2tdWzJdIH49IHZbMl0gdGhlbjxicj4rIHJldHVybiBmYWxzZTxicj4rIGVuZDxicj4rIGVuZDxi cj4rIHJldHVybiB0cnVlPGJyPitlbmQ8YnI+K3Rlc3RfcnVuOmNtZCgic2V0b3B0IGRlbGltaXRl ciAnJyIpOzxicj4rPGJyPistLSBudW0gbnVtPGJyPitOMSA9IDEwMDxicj4rdDEgPSB7fTxicj4r Zm9yIGkgPSAxLE4xKjIgZG8gdDFbaV0gPSBtYXRoLnJhbmRvbSgxMDAwMCkgKiAxMDAwMCArIGkg ZW5kPGJyPitOMiA9IDU8YnI+K3QyID0ge308YnI+K2ZvciBpID0gMSxOMioyIGRvIHQyW2ldID0g bWF0aC5yYW5kb20oMTAwMDAwMCkgZW5kPGJyPis8YnI+K3MxID0gYm94LnNjaGVtYS5zcGFjZS5j cmVhdGUoJ3Rlc3QxJyk8YnI+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUn LCBwYXJ0cyA9IHt7MSwgJ251bSd9LCB7MiwgJ251bSd9fSwgaGludCA9IGZhbHNlfSkuaGludDxi cj4rczIgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKTxicj4rczI6Y3JlYXRlX2lu ZGV4KCd0ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0ge3sxLCAnbnVtJ30sIHsyLCAnbnVt J319LCBoaW50ID0gdHJ1ZX0pLmhpbnQ8YnI+K2ZvciBqID0gMSxOMiBkbyBmb3IgaSA9IDEsTjEg ZG8gczE6cmVwbGFjZXt0MVtpXSwgdDJbal19IHMyOnJlcGxhY2V7dDFbaV0sIHQyW2pdfSBlbmQg ZW5kPGJyPitzMTpjb3VudCgpID09IHMyOmNvdW50KCk8YnI+K2VxdWFsKHMxOnNlbGVjdHt9LCBz MjpzZWxlY3R7fSk8YnI+K2dvb2QgPSB0cnVlPGJyPitmb3IgaSA9IDEsTjEqMiBkbyBnb29kID0g Z29vZCBhbmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldfSwgczI6c2VsZWN0e3QxW2ldfSkgZW5kPGJy Pitnb29kPGJyPitmb3IgaSA9IDEsTjEqMiBkbyBmb3Igaj0xLE4yKjIgZG8gZ29vZCA9IGdvb2Qg YW5kIGVxdWFsKHMxOnNlbGVjdHt0MVtpXSwgdDJbal19LCBzMjpzZWxlY3R7dDFbaV0sIHQyW2pd fSkgZW5kIGVuZDxicj4rZ29vZDxicj4rPGJyPitzMTpkcm9wKCk8YnI+K3MyOmRyb3AoKTxicj4r PGJyPistLSBzdHIgbnVtPGJyPitOMSA9IDEwMDxicj4rdDEgPSB7fTxicj4rZm9yIGkgPSAxLE4x KjIgZG8gdDFbaV0gPSAnJy4uKG1hdGgucmFuZG9tKDEwMDAwKSAqIDEwMDAwICsgaSkgZW5kPGJy PitOMiA9IDU8YnI+K3QyID0ge308YnI+K2ZvciBpID0gMSxOMioyIGRvIHQyW2ldID0gbWF0aC5y YW5kb20oMTAwMDAwMCkgZW5kPGJyPis8YnI+K3MxID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUo J3Rlc3QxJyk8YnI+K3MxOmNyZWF0ZV9pbmRleCgndGVzdCcsIHt0eXBlID0gJ3RyZWUnLCBwYXJ0 cyA9IHt7MSwgJ3N0cid9LCB7MiwgJ251bSd9fSwgaGludCA9IGZhbHNlfSkuaGludDxicj4rczIg PSBib3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgndGVzdDInKTxicj4rczI6Y3JlYXRlX2luZGV4KCd0 ZXN0Jywge3R5cGUgPSAndHJlZScsIHBhcnRzID0ge3sxLCAnc3RyJ30sIHsyLCAnbnVtJ319LCBo aW50ID0gdHJ1ZX0pLmhpbnQ8YnI+K2ZvciBqID0gMSxOMiBkbyBmb3IgaSA9IDEsTjEgZG8gczE6 cmVwbGFjZXt0MVtpXSwgdDJbal19IHMyOnJlcGxhY2V7dDFbaV0sIHQyW2pdfSBlbmQgZW5kPGJy PitzMTpjb3VudCgpID09IHMyOmNvdW50KCk8YnI+K2VxdWFsKHMxOnNlbGVjdHt9LCBzMjpzZWxl Y3R7fSk8YnI+K2dvb2QgPSB0cnVlPGJyPitmb3IgaSA9IDEsTjEqMiBkbyBnb29kID0gZ29vZCBh bmQgZXF1YWwoczE6c2VsZWN0e3QxW2ldfSwgczI6c2VsZWN0e3QxW2ldfSkgZW5kPGJyPitnb29k PGJyPitmb3IgaSA9IDEsTjEqMiBkbyBmb3Igaj0xLE4yKjIgZG8gZ29vZCA9IGdvb2QgYW5kIGVx dWFsKHMxOnNlbGVjdHt0MVtpXSwgdDJbal19LCBzMjpzZWxlY3R7dDFbaV0sIHQyW2pdfSkgZW5k IGVuZDxicj4rZ29vZDxicj4rPGJyPitzMTpkcm9wKCk8YnI+K3MyOmRyb3AoKTxicj4tLTxicj4y LjcuNDxicj4mbmJzcDs8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGJyPjxk aXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250YWluZXIiPjxkaXYgZGF0YS1zaWduYXR1cmUt d2lkZ2V0PSJjb250ZW50Ij48ZGl2Pi0tPGJyPklseWEgS29zYXJldjwvZGl2PjwvZGl2PjwvZGl2 PjwvZGl2PjwvQk9EWT48L0hUTUw+Cg== ----ALT--c35683257aE3672DAeC7F9eC44154a401603197242--