From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id D6D84AC19CF for ; Mon, 3 Jun 2024 21:20:41 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=B5EOSGZ3Thold8LgaM8p7ftlL1bMYLaibxUFdXFttY8=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20240206; t=1717449641; v=1; b=UJ1OwNTBeoJnN5SkXDTRfGz+Mpvw24Mt7xQRR2wtVPWHqU/WjjiX0eTb6+Q+Vto6KfBkOW5w HJRCfrZ0hi5tmEOe/Cyr/KVL9255A580HHtnqLhWlWxXLqyU8ieILmEZTFbjDEBI6pklcqIBCm1 AIj/qzolI8AXkJjbTxn5T5Iv5wdUQqeMedyNmfbh50JrNhiZmh0/DvUBSMy4QjWuxKCvhaVt9pT FewzceUTIdjk0/JVAqMC/7AE6VooUIcIXDBZxiyEC2684R+Ig3bDcjDUKCLrki2m+lKJWon4nEQ kIHstLD6p4WZ2vn8abcL27fSu861CUzO+t7l1Tx1/d7bg== X-Received: by 127.0.0.2 with SMTP id fyO1YY7687511xwuNp3Y7slt; Mon, 03 Jun 2024 14:20:40 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.2493.1717443977276913888 for ; Mon, 03 Jun 2024 12:46:17 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 36C101063; Mon, 3 Jun 2024 12:46:40 -0700 (PDT) X-Received: from R90WJ7WC.arm.com (R90WJ7WC.arm.com [10.118.108.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E22C03FBCB; Mon, 3 Jun 2024 11:27:49 -0700 (PDT) From: "Prachotan Bathi" To: devel@edk2.groups.io Cc: G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH v1 1/1] EDK2-Test: Bug 4244 - SCT improvement - Print out the PCIe device path fo.. Date: Mon, 3 Jun 2024 13:27:49 -0500 Message-Id: <20240603182749.246451-2-prachotan.bathi@arm.com> In-Reply-To: <20240603182749.246451-1-prachotan.bathi@arm.com> References: <20240603182749.246451-1-prachotan.bathi@arm.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Mon, 03 Jun 2024 14:20:34 -0700 Resent-From: prachotan.bathi@arm.com Reply-To: devel@edk2.groups.io,prachotan.bathi@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: KTydEvABAEKBLsmOsAlOlEsfx7686176AA= Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=UJ1OwNTB; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io VGVzdHMgTW9kaWZpZWQ6CgpBZGFwdGVySW5mb0JCVGVzdENvbmZvcm1hbmNlCkNvbXBvbmVudE5h bWUyQkJUZXN0Q29uZm9ybWFuY2UKSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2UKUHhl QmFzZUNvZGVCQlRlc3RDb25mb3JtYW5jZQpTaW1wbGVOZXR3b3JrQkJUZXN0Q29uZm9ybWFuY2UK ClVFRkktU0NUCkNjOiBHIEVkaGF5YSBDaGFuZHJhbiA8RWRoYXlhLkNoYW5kcmFuQGFybS5jb20+ CkNjOiBCYXJ0b24gR2FvIDxnYW9qaWVAYnlvc29mdC5jb20uY24+CkNjOiBDYXJvbHluIEdqZXJ0 c2VuIDxDYXJvbHluLkdqZXJ0c2VuQGFtZC5jb20+CkNjOiBTYW1lciBFbC1IYWotTWFobW91ZCA8 U2FtZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNvbT4KQ2M6IEVyaWMgSmluIDxlcmljLmppbkBpbnRl bC5jb20+CkNjOiBBcnZpbiBDaGVuIDxhcnZpbnguY2hlbkBpbnRlbC5jb20+CkNjOiBTdXByZWV0 aCBWZW5rYXRlc2ggPFN1cHJlZXRoLlZlbmthdGVzaEBhbWQuY29tPgoKU2lnbmVkLW9mZi1ieTog UHJhY2hvdGFuIEJhdGhpIDxwcmFjaG90YW4uYmF0aGlAYXJtLmNvbT4KLS0tCiB1ZWZpLXNjdC9T Y3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hUZXN0 L0FkYXB0ZXJJbmZvUHJvdG9jb2xCQlRlc3QuaW5mICAgICAgICAgIHwgICAgMiArCiB1ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hU ZXN0L1B4ZUJCVGVzdC5pbmYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogdWVm aS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZU5ldHdvcmsvQmxh Y2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3QuaW5mICAgICAgICAgICAgICB8ICAgIDQgKy0K IHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9C bGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWluLmggICAgICAgICAgICAgICAgfCAgIDE3 ICstCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvSElJQ29uZmln QWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmggICAgICAgIHwg ICAgNiArCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFz ZUNvZGUvQmxhY2tCb3hUZXN0L1B4ZUJhc2VDb2RlQkJUZXN0TWFpbi5oICAgICAgICAgICAgICAg IHwgICAgNiArCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2lt cGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVzdE1haW4uaCAgICAgICAg ICAgIHwgICAgNiArCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wv QWRhcHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvQkJUZXN0Q29uZm9ybWFuY2UuYyAg ICAgICAgIHwgICA2MyArLQogdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3Rv Y29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFwdGVySW5mb0JCVGVzdE1haW4uYyAgICAg ICAgICAgICAgICB8ICAgOTYgKysKIHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Q cm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVz dENvbmZvcm1hbmNlLmMgfCAgIDQ4ICstCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9F RkkvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NC QlRlc3RNYWluLmMgICAgICAgIHwgICA2NyArLQogdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VF RkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVz dENvbmZvcm1hbmNlLmMgICAgICAgICB8ICAzMDUgKysrKystCiB1ZWZpLXNjdC9TY3RQa2cvVGVz dENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0L1B4ZUJhc2VD b2RlQkJUZXN0TWFpbi5jICAgICAgICAgICAgICAgIHwgMTE1OCArKysrKysrKystLS0tLS0tLS0t LQogdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZU5ldHdv cmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3RDb25mb3JtYW5jZS5jICAgICB8ICAy NTggKysrKy0KIHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1w bGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0TWFpbi5jICAgICAgICAg ICAgfCAgIDk2ICsrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxNDUxIGluc2VydGlvbnMoKyksIDY4NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9F RkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvUHJvdG9jb2xC QlRlc3QuaW5mIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0Fk YXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFwdGVySW5mb1Byb3RvY29sQkJUZXN0LmluZgppbmRl eCBiM2JmOTk0NDA3MDUuLjQ2NDAyOWVjMTBjZSAxMDA2NDQKLS0tIGEvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFw dGVySW5mb1Byb3RvY29sQkJUZXN0LmluZgorKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvUHJv dG9jb2xCQlRlc3QuaW5mCkBAIC00OSwzICs0OSw1IEBAIFtMaWJyYXJ5Q2xhc3Nlc10KICAgRWZp VGVzdExpYg0KIA0KIFtQcm90b2NvbHNdDQorICBnRWZpQWRhcHRlckluZm9ybWF0aW9uUHJvdG9j b2xHdWlkDQorICBnQmxhY2tCb3hFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VF RkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCQlRlc3QuaW5mIGIv dWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0Js YWNrQm94VGVzdC9QeGVCQlRlc3QuaW5mCmluZGV4IDQxMzY3Y2U0OTZiMy4uMjkzOTJjYTgzZGNh IDEwMDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wv UHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0L1B4ZUJCVGVzdC5pbmYKKysrIGIvdWVmaS1zY3QvU2N0 UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9Q eGVCQlRlc3QuaW5mCkBAIC01Nyw0ICs1Nyw1IEBAIFtQcm90b2NvbHNdCiAgIGdFZmlUZXN0TG9n Z2luZ0xpYnJhcnlHdWlkDQogICBnQmxhY2tCb3hFZmlTaW1wbGVOZXR3b3JrUHJvdG9jb2xHdWlk DQogICBnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZVByb3RvY29sR3VpZA0KLSAgZ0JsYWNrQm94RWZp UHhlQmFzZUNvZGVDYWxsYmFja1Byb3RvY29sR3VpZAorICBnQmxhY2tCb3hFZmlQeGVCYXNlQ29k ZUNhbGxiYWNrUHJvdG9jb2xHdWlkDQorICBnQmxhY2tCb3hFZmlEZXZpY2VQYXRoUHJvdG9jb2xH dWlkDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3Rv Y29sL1NpbXBsZU5ldHdvcmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3QuaW5mIGIv dWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZU5ldHdvcmsv QmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3QuaW5mCmluZGV4IDFkMmQxZDM5NWZiYi4u MTRiMjQxNzNmMzExIDEwMDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9F RkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVz dC5pbmYKKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1Np bXBsZU5ldHdvcmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3QuaW5mCkBAIC01MSw0 ICs1MSw2IEBAIFtMaWJyYXJ5Q2xhc3Nlc10KICAgRWZpVGVzdExpYg0KIA0KIFtQcm90b2NvbHNd DQotICBnRWZpVGVzdExvZ2dpbmdMaWJyYXJ5R3VpZAorICBnRWZpVGVzdExvZ2dpbmdMaWJyYXJ5 R3VpZA0KKyAgZ0JsYWNrQm94RWZpU2ltcGxlTmV0d29ya1Byb3RvY29sR3VpZA0KKyAgZ0JsYWNr Qm94RWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9B ZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWluLmggYi91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hU ZXN0L0FkYXB0ZXJJbmZvQkJUZXN0TWFpbi5oCmluZGV4IDk5NTJmYmNhYjgzMy4uYTFlZjlkYjNi MTI3IDEwMDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvQWRhcHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvQkJUZXN0TWFpbi5oCisrKyBi L3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9C bGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWluLmgKQEAgLTI4LDkgKzI4LDExIEBAIEFi c3RyYWN0OgogI2RlZmluZSBfQURBUFRFUl9JTkZPUk1BVElPTl9CQl9URVNUX01BSU4NCiANCiAj aW5jbHVkZSAiRWZpLmgiDQorI2luY2x1ZGUgPEJhc2UuaD4NCisjaW5jbHVkZSAiU2N0TGliLmgi DQorI2luY2x1ZGUgIkd1aWQuaCINCiAjaW5jbHVkZSA8TGlicmFyeS9FZmlUZXN0TGliLmg+DQog I2luY2x1ZGUgPFVFRkkvUHJvdG9jb2wvQWRhcHRlckluZm8uaD4NCi0jaW5jbHVkZSAiR3VpZC5o Ig0KIA0KIA0KICNkZWZpbmUgRUZJX0FEQVBURVJfSU5GT1JNQVRJT05fUFJPVE9DT0xfVEVTVF9S RVZJU0lPTiAgICAweDAwMDEwMDAwDQpAQCAtMTYwLDEyICsxNjIsOSBAQCBCQlRlc3RHZXRTdXBw b3J0ZWRUeXBlc0Z1bmN0aW9uVGVzdCAoCiAgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg IFN1cHBvcnRIYW5kbGUNCiAgICk7DQogDQotDQotVk9JRA0KLVNjdEluaXRpYWxpemVMaWIgKA0K LSAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQotICBJTiBFRklf U1lTVEVNX1RBQkxFICAgICAgICAgICAqU3lzdGVtVGFibGUNCi0gICk7DQotDQotDQorRUZJX1NU QVRVUw0KK0xvY2F0ZURldmljZVBhdGhGcm9tQWRhcHRlckluZm8oDQorICBJTiBFRklfQURBUFRF Ul9JTkZPUk1BVElPTl9QUk9UT0NPTCAqQWRhcHRlckluZm8yLA0KKyAgSU4gRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICoqRGV2aWNlUGF0aCwNCisgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJB UllfUFJPVE9DT0wgKlN0YW5kYXJkTGliKTsNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNr Qm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmggYi91ZWZpLXNjdC9TY3RQa2cvVGVz dENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlD b25maWdBY2Nlc3NCQlRlc3RNYWluLmgKaW5kZXggMGUxNzk1NGQ3NzYyLi44MTI2OTg3NzlmMTIg MTAwNjQ0Ci0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9I SUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdE1haW4uaAor KysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvSElJQ29uZmln QWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmgKQEAgLTE0OCw2 ICsxNDgsMTIgQEAgR2V0RGV2aWNlUGF0aCAoCiAgIE9VVCBFRklfU1RSSU5HICAgICAgICAgICAg ICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHINCiAgICk7DQogDQorRUZJX1NUQVRVUw0KK0dl dERldmljZVBhdGhQcm90b2NvbCAoDQorICBJTiAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RP Q09MICAgICpDb25maWdBY2Nlc3MsDQorICBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKipE ZXZpY2VQYXRoDQorICApOw0KKw0KIEVGSV9TVEFUVVMNCiBHZXRDb3JyZXNwb25kaW5nUmVxdWVz dCAoDQogICBJTiAgICAgRUZJX1NUUklORyAgICBNdWx0aUNvbmZpZ0FsdFJlc3AsDQpkaWZmIC0t Z2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VD b2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uaCBiL3VlZmktc2N0L1NjdFBr Zy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhl QmFzZUNvZGVCQlRlc3RNYWluLmgKaW5kZXggYjk0ZjIwMGZmN2FhLi5kZmVmNjcxODI0ZjIgMTAw NjQ0Ci0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVC YXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQmFzZUNvZGVCQlRlc3RNYWluLmgKKysrIGIvdWVmaS1z Y3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94 VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uaApAQCAtNTc4LDYgKzU3OCwxMiBAQCBMb2dDaGFy OFN0cmluZygKICAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW4NCiAg ICk7DQogDQorRUZJX1NUQVRVUw0KK0xvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UgKA0K KyAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAgKkJjSW50ZXJmYWNl MiwNCisgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICAgKipEZXZp Y2VQYXRoLCAgICAgIC8vcmV1c2UgdGhlIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCBhcyBFRklf TE9BREVEX0lNQUdFX0RFVklDRV9QQVRIX1BST1RPQ09MDQorICBJTiBFRklfU1RBTkRBUkRfVEVT VF9MSUJSQVJZX1BST1RPQ09MICAgICAgICpTdGFuZGFyZExpYg0KKyAgKTsNCiAvLw0KIC8vIEVu dHJ5IEdVSURzDQogLy8NCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JC VGVzdE1haW4uaCBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9T aW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0TWFpbi5oCmluZGV4 IGVhMTRhYWE3Nzk2My4uNjBmZmFiZTI1N2VlIDEwMDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cv VGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2lt cGxlTmV0d29ya0JCVGVzdE1haW4uaAorKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JC VGVzdE1haW4uaApAQCAtMzU3LDYgKzM1NywxMiBAQCBCQlRlc3RSZWNlaXZlQ29uZm9ybWFuY2VU ZXN0ICgKICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KICAg KTsNCiANCitFRklfU1RBVFVTDQorTG9jYXRlRGV2aWNlUGF0aEZyb21TbnBJbnRlcmZhY2UgKA0K KyAgSU4gRUZJX1NJTVBMRV9ORVRXT1JLX1BST1RPQ09MICAgICAgICAgICAgICpTbnBJbnRlcmZh Y2UyLA0KKyAgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgICAgICAqKkRl dmljZVBhdGgsICAgICAgLy9yZXVzZSB0aGUgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MIGFzIEVG SV9MT0FERURfSU1BR0VfREVWSUNFX1BBVEhfUFJPVE9DT0wNCisgIElOIEVGSV9TVEFOREFSRF9U RVNUX0xJQlJBUllfUFJPVE9DT0wgICAgICAgKlN0YW5kYXJkTGliDQorICApOw0KIA0KIC8vDQog Ly8gUHJvdG90eXBlcyBvZiBJbnRlcm5hbCBGdW5jdGlvbnMNCmRpZmYgLS1naXQgYS91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hU ZXN0L0FkYXB0ZXJJbmZvQkJUZXN0Q29uZm9ybWFuY2UuYyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0 Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlcklu Zm9CQlRlc3RDb25mb3JtYW5jZS5jCmluZGV4IDE5Y2NhYzkzYzdjNy4uNzMxN2U1M2ZmMWZjIDEw MDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRh cHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvQkJUZXN0Q29uZm9ybWFuY2UuYworKysg Yi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8v QmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvQkJUZXN0Q29uZm9ybWFuY2UuYwpAQCAtOTMsNyArOTMs OCBAQCBCQlRlc3RHZXRJbmZvcm1hdGlvbkNvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TVEFOREFS RF9URVNUX0xJQlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliOw0KICAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfQURBUFRFUl9JTkZPUk1B VElPTl9QUk9UT0NPTCAgICAgICpBZGFwdGVySW5mbzsNCi0NCisgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBpbml0DQogICAv Lw0KQEAgLTExMSw2ICsxMTIsMjUgQEAgQkJUZXN0R2V0SW5mb3JtYXRpb25Db25mb3JtYW5jZVRl c3QgKAogICAgIHJldHVybiBTdGF0dXM7DQogICB9DQogDQorICBTdGF0dXM9TG9jYXRlRGV2aWNl UGF0aEZyb21BZGFwdGVySW5mbyhBZGFwdGVySW5mbywmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7 DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBO VUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRo KTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGli LT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisg ICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAg ICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAg ICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVz ID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1Io U3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1O VUxMOw0KKyAgICB9DQorICB9DQorDQorDQogICAvLw0KICAgLy9DYWxsIGNoZWNrIHBvaW50cw0K ICAgLy8NCkBAIC0xMzcsNyArMTU3LDggQEAgQkJUZXN0U2V0SW5mb3JtYXRpb25Db25mb3JtYW5j ZVRlc3QgKAogICBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFy ZExpYjsNCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K ICAgRUZJX0FEQVBURVJfSU5GT1JNQVRJT05fUFJPVE9DT0wgICAgICAqQWRhcHRlckluZm87DQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCiAgIC8vDQogICAvLyBpbml0DQogICAvLw0KQEAgLTE1NSw2 ICsxNzYsMjMgQEAgQkJUZXN0U2V0SW5mb3JtYXRpb25Db25mb3JtYW5jZVRlc3QgKAogICAgIHJl dHVybiBTdGF0dXM7DQogICB9DQogDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZyb21BZGFw dGVySW5mbyhBZGFwdGVySW5mbywmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3Rh dHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBE ZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYg KERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNz YWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAg ICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAg IEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0 aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJl ZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisg ICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9 DQorICB9DQogICAvLw0KICAgLy9DYWxsIGNoZWNrIHBvaW50cw0KICAgLy8NCkBAIC0xNzgsNyAr MjE2LDggQEAgQkJUZXN0R2V0U3VwcG9ydGVkVHlwZXNDb25mb3JtYW5jZVRlc3QgKAogICBFRklf U1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYjsNCiAgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX0FEQVBURVJf SU5GT1JNQVRJT05fUFJPVE9DT0wgICAgICAqQWRhcHRlckluZm87DQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAg ICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpEZXZpY2VQYXRoU3RyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICANCiAgIC8vDQogICAvLyBpbml0DQogICAvLw0KQEAgLTE5NSw3ICsyMzQsMjMgQEAgQkJU ZXN0R2V0U3VwcG9ydGVkVHlwZXNDb25mb3JtYW5jZVRlc3QgKAogICBpZiAoIEVGSV9FUlJPUihT dGF0dXMpICkgew0KICAgICByZXR1cm4gU3RhdHVzOw0KICAgfQ0KLQ0KKyAgU3RhdHVzPUxvY2F0 ZURldmljZVBhdGhGcm9tQWRhcHRlckluZm8oQWRhcHRlckluZm8sJkRldmljZVBhdGgsU3RhbmRh cmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRo U3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2 aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFu ZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRM aWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisg ICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAg ICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAg IFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJ X0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBh dGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vQ2FsbCBjaGVjayBwb2ludHMN CiAgIC8vDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1By b3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFwdGVySW5mb0JCVGVzdE1haW4uYyBi L3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9C bGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWluLmMKaW5kZXggY2MzN2E0OTc2MTRlLi44 ZTg4NGI0Mzc0ZTcgMTAwNjQ0Ci0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWlu LmMKKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0 ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFwdGVySW5mb0JCVGVzdE1haW4uYwpAQCAtMjA3LDMgKzIw Nyw5OSBAQCBVbmxvYWRBZGFwdGVySW5mb0JCVGVzdCAoCiAgICAgICAgICAgICAgZ0JCVGVzdFBy b3RvY29sSW50ZXJmYWNlDQogICAgICAgICAgICAgICk7DQogfQ0KKw0KK0VGSV9TVEFUVVMgTG9j YXRlRGV2aWNlUGF0aEZyb21BZGFwdGVySW5mbyhJTiBFRklfQURBUFRFUl9JTkZPUk1BVElPTl9Q Uk9UT0NPTCAqQWRhcHRlckluZm8yLCBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKipEZXZp Y2VQYXRoLCBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICpTdGFuZGFyZExp YikNCit7DQorICBFRklfU1RBVFVTIFN0YXR1czsNCisNCisgIFVJTlROIE5vSGFuZGxlcywgSW5k ZXg7DQorICBFRklfSEFORExFICpIYW5kbGVCdWZmZXI7DQorICBFRklfQURBUFRFUl9JTkZPUk1B VElPTl9QUk9UT0NPTCAqT3RoZXJBZGFwdGVySW5mbzI7DQorDQorICAvLw0KKyAgLy8gTG9jYXRl IHRoZSBIYW5kbGUgdGhhdCB0aGUgQWRhcHRlckluZm8gaXMgYm91bmQgdG8NCisgIC8vDQorICBT dGF0dXMgPSBndEJTLT5Mb2NhdGVIYW5kbGVCdWZmZXIoDQorICAgICAgQnlQcm90b2NvbCwNCisg ICAgICAmZ0VmaUFkYXB0ZXJJbmZvcm1hdGlvblByb3RvY29sR3VpZCwNCisgICAgICBOVUxMLA0K KyAgICAgICZOb0hhbmRsZXMsDQorICAgICAgJkhhbmRsZUJ1ZmZlcik7DQorICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpDQorICB7DQorICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24oDQor ICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQs DQorICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwNCisgICAgICAgIEwiQlMuTG9jYXRl SGFuZGxlIC0gTG9jYXRlSGFuZGxlIiwNCisgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0K KyAgICAgICAgX19GSUxFX18sDQorICAgICAgICAoVUlOVE4pX19MSU5FX18sDQorICAgICAgICBT dGF0dXMpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgaWYgKE5vSGFuZGxlcyA8 PSAwKQ0KKyAgew0KKyAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uKA0KKyAgICAgICAg U3RhbmRhcmRMaWIsDQorICAgICAgICBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVELA0KKyAgICAg ICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICBMIkJTLkxvY2F0ZUhhbmRsZSAt IExvY2F0ZUhhbmRsZSIsDQorICAgICAgICBMIiVhOiVkOkRldmljZSBFcnJvciIsDQorICAgICAg ICBfX0ZJTEVfXywNCisgICAgICAgIChVSU5UTilfX0xJTkVfXyk7DQorICAgIHJldHVybiBFRklf REVWSUNFX0VSUk9SOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIEZpbmQgdGhlIGV4YWN0IGhhbmRs ZSB0aGF0IEFkYXB0ZXJJbmZvIGJvdW5kIHRvDQorICAvLw0KKyAgZm9yIChJbmRleCA9IDA7IElu ZGV4IDwgTm9IYW5kbGVzOyBJbmRleCsrKQ0KKyAgew0KKyAgICBTdGF0dXMgPSBndEJTLT5IYW5k bGVQcm90b2NvbCgNCisgICAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sDQorICAgICAgICAmZ0Vm aUFkYXB0ZXJJbmZvcm1hdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgIChWT0lEICoqKSAmT3Ro ZXJBZGFwdGVySW5mbzIpOw0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgIHsNCisg ICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uKA0KKyAgICAgICAgICBTdGFuZGFyZExp YiwNCisgICAgICAgICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisgICAgICAgICAgZ1Rl c3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICAgIEwiQlMuSGFuZGxlUHJvdG9jb2wgLSBI YW5kbGVQcm90b2NvbCIsDQorICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KKyAgICAg ICAgICBfX0ZJTEVfXywNCisgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgICBT dGF0dXMpOw0KKw0KKyAgICAgIGd0QlMtPkZyZWVQb29sKEhhbmRsZUJ1ZmZlcik7DQorICAgICAg cmV0dXJuIFN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBpZiAoT3RoZXJBZGFwdGVySW5mbzIgPT0g QWRhcHRlckluZm8yKQ0KKyAgICB7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIH0NCisNCisg IC8vDQorICAvLyBMb2NhdGUgdGhlIExvYWRlZCBEZXZpY2VQYXRoIFByb3RvY29sIGJvdW5kIHRv IEFEQVBURVJfSU5GT1JNQVRJT04gUHJvdG9jb2wNCisgIC8vDQorICBpZiAoSW5kZXggPj0gTm9I YW5kbGVzKQ0KKyAgew0KKyAgICAvLw0KKyAgICAvLyBObyBIYW5kbGUgRm91bmQhIQ0KKyAgICAv Lw0KKyAgICBndEJTLT5GcmVlUG9vbChIYW5kbGVCdWZmZXIpOw0KKyAgICByZXR1cm4gRUZJX0RF VklDRV9FUlJPUjsNCisgIH0NCisNCisgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKA0K KyAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sDQorICAgICAgJmdCbGFja0JveEVmaURldmljZVBh dGhQcm90b2NvbEd1aWQsDQorICAgICAgKFZPSUQgKiopIERldmljZVBhdGgpOw0KKw0KKyAgZ3RC Uy0+RnJlZVBvb2woSGFuZGxlQnVmZmVyKTsNCisgIHJldHVybiBTdGF0dXM7DQorfQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2Fz ZS9VRUZJL0VGSS9Qcm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZp Z0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlLmMgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nl c3NCQlRlc3RDb25mb3JtYW5jZS5jCmluZGV4IDk2NGE2NGNkMWQzNC4uMTZjYTBiMzIzOTE0IDEw MDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvSElJ Q29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5j ZS5jCisrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9ISUlD b25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNl LmMKQEAgLTEyMCw3ICsxMjAsOCBAQCBCQlRlc3RFeHRyYWN0Q29uZmlnQ29uZm9ybWFuY2VUZXN0 ICgKICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBF RklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3M7DQog ICBFRklfSElJX0NPTkZJR19ST1VUSU5HX1BST1RPQ09MICAgICAgICpISUlDb25maWdSb3V0aW5n Ow0KLSAgDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBh dGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhT dHI7DQogICAvLw0KICAgLy8gaW5pdA0KICAgLy8NCkBAIC0xMzcsNiArMTM4LDI4IEBAIEJCVGVz dEV4dHJhY3RDb25maWdDb25mb3JtYW5jZVRlc3QgKAogICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp IHsNCiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCisgIC8vDQorICAvLyBHZXQgTG9hZGVkIERl dmljZSBQYXRoIG9mIGN1cnJlbnQgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MDQorICAv LyBBbmQgb3V0IHB1dCBkZXZpY2UgcGF0aCBvciBkZXZpY2UgbmFtZQ0KKyAgLy8NCisgIA0KKyAg U3RhdHVzID0gR2V0RGV2aWNlUGF0aFByb3RvY29sKEhJSUNvbmZpZ0FjY2VzcywmRGV2aWNlUGF0 aCk7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIg PSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQ YXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJk TGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwN CisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAg ICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAg ICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3Rh dHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJS T1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0 cj1OVUxMOw0KKyAgICB9DQorICB9DQogDQogICAvLw0KICAgLy8gR2V0IHRoZSBDb25maWcgUm91 dGluZyBQcm90b2NvbCBJbnRlcmZhY2UNCkBAIC0xNzAsNyArMTkzLDggQEAgQkJUZXN0Um91dGVD b25maWdDb25mb3JtYW5jZVRlc3QgKAogICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCiAgIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAg KkhJSUNvbmZpZ0FjY2VzczsNCiAgIEVGSV9ISUlfQ09ORklHX1JPVVRJTkdfUFJPVE9DT0wgICAg ICAgKkhJSUNvbmZpZ1JvdXRpbmc7DQotICANCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg ICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBpbml0DQogICAvLw0KQEAgLTE4 Nyw3ICsyMTEsMjMgQEAgQkJUZXN0Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3QgKAogICBpZiAo RUZJX0VSUk9SKFN0YXR1cykpIHsNCiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCi0NCisgIFN0 YXR1cyA9IEdldERldmljZVBhdGhQcm90b2NvbChISUlDb25maWdBY2Nlc3MsJkRldmljZVBhdGgp Ow0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0g TlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0 aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExp Yi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQor ICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAg ICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAg ICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1 cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9S KFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9 TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIEdldCB0aGUgQ29uZmlnIFJvdXRpbmcg UHJvdG9jb2wgSW50ZXJmYWNlDQogICAvLw0KQEAgLTE5NSw3ICsyMzUsNyBAQCBCQlRlc3RSb3V0 ZUNvbmZpZ0NvbmZvcm1hbmNlVGVzdCAoCiAgIGlmICggRUZJX0VSUk9SKFN0YXR1cykgKSB7DQog ICAgIHJldHVybiBTdGF0dXM7DQogICB9DQotICANCisNCiAgIC8vDQogICAvL0NhbGwgY2hlY2sg cG9pbnRzDQogICAvLw0KZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJ L0VGSS9Qcm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vz c0JCVGVzdE1haW4uYyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2Nv bC9ISUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdE1haW4u YwppbmRleCAwOTliMTBmN2EzOGEuLjI5MjlkOGYwNGMyNiAxMDA2NDQKLS0tIGEvdWVmaS1zY3Qv U2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0Jv eFRlc3QvSElJQ29uZmlnQWNjZXNzQkJUZXN0TWFpbi5jCisrKyBiL3VlZmktc2N0L1NjdFBrZy9U ZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJ SUNvbmZpZ0FjY2Vzc0JCVGVzdE1haW4uYwpAQCAtMzgxLDYgKzM4MSw3MSBAQCBHZXREZXZpY2VQ YXRoICgKICAgcmV0dXJuIFN0YXR1czsNCiB9DQogDQorRUZJX1NUQVRVUw0KK0dldERldmljZVBh dGhQcm90b2NvbCAoDQorICBJTiAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICpD b25maWdBY2Nlc3MsDQorICBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKipEZXZpY2VQYXRo DQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN CisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCisgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOb0hhbmRsZXM7DQorICBFRklfSEFORExFICAgICAg ICAgICAgICAgICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCisgIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgICAgICAgICBDb25maWdBY2Nlc3NIYW5kbGUgPSBOVUxMOw0KKyAgRUZJX0hJSV9DT05G SUdfQUNDRVNTX1BST1RPQ09MICAgICpUZXN0ZWRDb25maWdBY2Nlc3M7DQorICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBhdGhIZHJTaXplOw0KKw0KKyAgLy8NCisgIC8vIGxvY2F0ZSBhbGwgSGlp IENvbmZpZ3VyYXRpb24gQWNjZXNzIFByb3RvY29sIEluc3RhbmNlcw0KKyAgLy8NCisgIFN0YXR1 cyA9IGd0QlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlciAoDQorICAgICAgICAgICAgICAgICAgIEJ5UHJv dG9jb2wsDQorICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hFZmlISUlDb25maWdBY2Nlc3NQ cm90b2NvbEd1aWQsDQorICAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICAg ICAgICZOb0hhbmRsZXMsDQorICAgICAgICAgICAgICAgICAgICZIYW5kbGVCdWZmZXINCisgICAg ICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IoU3RhdHVzKSB8fCAoTm9IYW5kbGVz ID09IDApKSB7DQorICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KKyAgfQ0KKw0KKyAgLy8NCisg IC8vIHNjYW4gZm9yIHRoZSBoYW5kbGUgdGhhdCBtYXRjaGVkIHdpdGggdGhlIEhpaSBDb25maWd1 cmF0aW9uIEFjY2VzcyBQcm90b2NvbCB0aGF0DQorICAvLyBwYXNzZWQgaW4gYnkgdGhlIHRlc3Qg ZnJhbWV3b3JrDQorICAvLw0KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTm9IYW5kbGVzOyBJ bmRleCsrKSB7DQorICAgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sICgNCisgICAgICAg ICAgICAgICAgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhdLA0KKyAgICAgICAgICAgICAgICAgICAg ICZnQmxhY2tCb3hFZmlISUlDb25maWdBY2Nlc3NQcm90b2NvbEd1aWQsDQorICAgICAgICAgICAg ICAgICAgICAgKFZPSUQgKiopICZUZXN0ZWRDb25maWdBY2Nlc3MNCisgICAgICAgICAgICAgICAg ICAgICApOw0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCisgICAgICBjb250aW51ZTsN CisgICAgfQ0KKw0KKyAgICBpZiAoVGVzdGVkQ29uZmlnQWNjZXNzID09IENvbmZpZ0FjY2Vzcykg ew0KKyAgICAgIENvbmZpZ0FjY2Vzc0hhbmRsZSA9IEhhbmRsZUJ1ZmZlcltJbmRleF07DQorICAg ICAgYnJlYWs7DQorICAgIH0NCisgIH0NCisNCisgIGd0QlMtPkZyZWVQb29sIChIYW5kbGVCdWZm ZXIpOw0KKw0KKyAgaWYgKENvbmZpZ0FjY2Vzc0hhbmRsZSA9PSBOVUxMKSB7DQorICAgIHJldHVy biBFRklfTk9UX0ZPVU5EOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIGZpbmQgY29udHJvbGxlciBo YW5kbGVzIG1hbmFnZWQgYnkgdGhlIGNvbXBvbmVudCBuYW1lIGhhbmRsZS4NCisgIC8vDQorICBT dGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQorICAgICAgICAgICAgICAgICAgIENvbmZp Z0FjY2Vzc0hhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgJmdCbGFja0JveEVmaURldmljZVBh dGhQcm90b2NvbEd1aWQsDQorICAgICAgICAgICAgICAgICAgICh2b2lkICoqKURldmljZVBhdGgN CisgICAgICAgICAgICAgICAgICAgKTsNCisgIHJldHVybiBTdGF0dXM7DQorfQ0KIA0KIEVGSV9T VEFUVVMNCiBHZXRDb3JyZXNwb25kaW5nUmVxdWVzdCAoDQpAQCAtNjU0LDQgKzcxOSw0IEBAIE11 bHRpQWx0UmVzcFRvTXVsdGlSZXEgKAogICBTY3RGcmVlUG9vbCAoRnJlZVB0cik7DQogICANCiAg IHJldHVybiBFRklfU1VDQ0VTUzsNCi19DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9Q eGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQmFzZUNvZGVCQlRlc3RDb25mb3JtYW5jZS5jIGIv dWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0Js YWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdENvbmZvcm1hbmNlLmMKaW5kZXggZDAzZWI4NTBj NWFkLi43N2I1YWZlMzg4YTMgMTAwNjQ0Ci0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9V RUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQmFzZUNvZGVCQlRl c3RDb25mb3JtYW5jZS5jCisrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Q cm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQmFzZUNvZGVCQlRlc3RDb25mb3Jt YW5jZS5jCkBAIC01MCw2ICs1MCw4IEBAIEJCVGVzdE5ld1N0YXJ0Q29uZm9ybWFuY2VUZXN0ICgK ICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklf VEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklf UFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiANCiAgIC8vDQog ICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAtNjgsNyArNzAsMjMg QEAgQkJUZXN0TmV3U3RhcnRDb25mb3JtYW5jZVRlc3QgKAogICAvLyBHZXQgdGhlIEVGSV9QWEVf QkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8v DQogICBCY0ludGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudElu dGVyZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJj SW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJ X1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhT dHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0 aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAg ICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVG SV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2Ug UGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAg ICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2 aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0 dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAg IC8vDQogICAvLyBEaXNhYmxlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGlu dGVyZmFjZQ0KICAgLy8NCkBAIC0yMzcsNiArMjU1LDggQEAgQkJUZXN0TmV3U3RvcENvbmZvcm1h bmNlVGVzdCAoCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBl Ow0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAqQmNJbnRlcmZhY2U7 DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQor ICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQog DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZQ0KQEAgLTI1 NSw3ICsyNzUsMjMgQEAgQkJUZXN0TmV3U3RvcENvbmZvcm1hbmNlVGVzdCAoCiAgIC8vIEdldCB0 aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRl c3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09M ICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQmNJ bnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0 YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAg RGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlm IChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVz c2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAg ICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAg ICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBh dGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZy ZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQor ICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAg fQ0KKyAgfQ0KICAgLy8NCiAgIC8vIERpc2FibGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wg UHJvdG9jb2wgaW50ZXJmYWNlDQogICAvLw0KQEAgLTQxOCw2ICs0NTQsOCBAQCBCQlRlc3RTdGFy dENvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3Nl cnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAqQmNJ bnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmlj ZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBh dGhTdHI7DQogDQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFj ZQ0KQEAgLTQzNiw3ICs0NzQsMjMgQEAgQkJUZXN0U3RhcnRDb25mb3JtYW5jZVRlc3QgKAogICAv LyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0 byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0ludGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9Q Uk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRo RnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisg IGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7 DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0K KyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJl Y29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAg ICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAg ICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBE ZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBn dEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7 DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGFuZ2UgRUZJX1BYRV9CQVNFX0NPREVfUFJP VE9DT0wgUHJvdG9jb2wgc3RhdGUgdG8gZW5hYmxlZA0KICAgLy8NCkBAIC01MjIsNiArNTc2LDgg QEAgQkJUZXN0U3RvcENvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAg ICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAg ICAgICAgICAqQmNJbnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAg ICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKkRldmljZVBhdGhTdHI7DQogDQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJy YXJ5IEludGVyZmFjZQ0KQEAgLTU0MCw3ICs1OTYsMjMgQEAgQkJUZXN0U3RvcENvbmZvcm1hbmNl VGVzdCAoCiAgIC8vIEdldCB0aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wg aW50ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVf QkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0 ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRh cmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRo U3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2 aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFu ZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRM aWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisg ICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAg ICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAg IFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJ X0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBh dGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIE1ha2Ugc3VyZSB0aGUgRUZJ X1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaXMgZGlzYWJsZWQNCiAgIC8vDQpAQCAt NjA2LDYgKzY3OCw4IEBAIEJCVGVzdERoY3BDb25mb3JtYW5jZVRlc3QgKAogICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCiAgIEVGSV9URVNUX0FTU0VSVElP TiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9QWEVfQkFTRV9DT0RF X1BST1RPQ09MICAgICAgICAgICAgKkJjSW50ZXJmYWNlOw0KKyAgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KIA0KICAgLy8NCiAgIC8vIEdldCB0aGUg U3RhbmRhcmQgTGlicmFyeSBJbnRlcmZhY2UNCkBAIC02MjQsNyArNjk4LDIzIEBAIEJCVGVzdERo Y3BDb25mb3JtYW5jZVRlc3QgKAogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RP Q09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0ludGVyZmFj ZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCi0NCisg IFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZp Y2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisg ICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQ YXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7 DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAg ICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVM X0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwN CisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAg ICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQor ICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisg ICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGFu Z2UgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgdG8gZGlzYWJsZWQNCiAgIC8v DQpAQCAtNzkxLDYgKzg4MSw4IEBAIEJCVGVzdERpc2NvdmVyQ29uZm9ybWFuY2VUZXN0ICgKICAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfVEVT VF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfUFhF X0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiANCiAgIC8vDQogICAv LyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAtODA5LDcgKzkwMSwyMyBA QCBCQlRlc3REaXNjb3ZlckNvbmZvcm1hbmNlVGVzdCAoCiAgIC8vIEdldCB0aGUgRUZJX1BYRV9C QVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAgLy8N CiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50 ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJ bnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklf U1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0 ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRo U3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAg ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJ X1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQ YXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAg ICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZp Y2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1 cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAg Ly8NCiAgIC8vIENoYW5nZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90b2NvbCB0byBk aXNhYmxlZA0KICAgLy8NCkBAIC05ODgsNiArMTA5Niw4IEBAIEJCVGVzdE10ZnRwQ29uZm9ybWFu Y2VUZXN0ICgKICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7 DQogICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsN CisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAg IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tTaXplPTUxMjsNCiAg IEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVySXA7DQogICBDSEFS OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpGaWxlTmFtZTsNCkBAIC0xMDEzLDcg KzExMjMsMjMgQEAgQkJUZXN0TXRmdHBDb25mb3JtYW5jZVRlc3QgKAogICAvLyBHZXQgdGhlIEVG SV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQN CiAgIC8vDQogICBCY0ludGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNs aWVudEludGVyZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJm YWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMg PT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmlj ZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2 aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2Ug KA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAg ICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJE ZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3Ry DQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9v bCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAg ICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisg IH0NCiAgIC8vDQogICAvLyBGaWxsIFBhcmFtZXRlcnMgKFNlcnZlcklwLCBGaWxlTmFtZSwgQnVm ZmVyUHRyKQ0KICAgLy8gR2V0IHBhcmFtZXRlciBmcm9tIGluaSBmaWxlLg0KQEAgLTE0NzMsNiAr MTU5OSw4IEBAIEJCVGVzdFVkcFdyaXRlQ29uZm9ybWFuY2VUZXN0ICgKICAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfVEVTVF9BU1NFUlRJT04g ICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfUFhFX0JBU0VfQ09ERV9Q Uk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIEVGSV9JUF9BRERSRVNTICAgICAgICAg ICAgICAgICAgICAgICAgRGVzdElwOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfVURQX1BPUlQgICAg ICAgICAgICBEZXN0UG9ydDsNCiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQnVmZmVyU2l6ZTsNCkBAIC0xNTAxLDcgKzE2MjksMjMgQEAgQkJUZXN0VWRwV3JpdGVDb25m b3JtYW5jZVRlc3QgKAogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFBy b3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0ludGVyZmFjZSA9IChF RklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCi0NCisgIFN0YXR1 cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRo LFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2 aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9T dHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAg ICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0 YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFV TFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAg ICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsN CisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBE ZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vIERpc2FibGUgRUZJX1BYRV9C QVNFX0NPREVfUFJPVE9DT0wgcHJvdG9jb2wgaWYgbmVlZGVkDQogICBTdGF0dXMgPSBDaGFuZ2VQ eGVTdGF0ZSAoQmNJbnRlcmZhY2UsIEZBTFNFLCBCY0ludGVyZmFjZS0+TW9kZS0+U3RhcnRlZCwg RkFMU0UpOw0KICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQpAQCAtMTY4OSw2ICsxODMzLDgg QEAgQkJUZXN0VWRwUmVhZENvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAg ICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wg ICAgICAgICAgICAqQmNJbnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAg ICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKkRldmljZVBhdGhTdHI7DQogICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9wRmxhZ3M7DQogICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEJ1ZmZlclNpemU7DQogICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpC dWZmZXJQdHI7DQpAQCAtMTcxMyw3ICsxODU5LDIzIEBAIEJCVGVzdFVkcFJlYWRDb25mb3JtYW5j ZVRlc3QgKAogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29s IGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0ludGVyZmFjZSA9IChFRklfUFhF X0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2Nh dGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5k YXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0 aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERl dmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3Rh bmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJk TGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQor ICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAg ICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAg ICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVG SV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQ YXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vIE1hbGxvYyBmb3IgZGF0YQ0KICAgQnVm ZmVyU2l6ZSA9IE1BWF9VRFBfU0laRTsNCiAgIFN0YXR1cyA9IGd0QlMtPkFsbG9jYXRlUG9vbCAo RWZpQm9vdFNlcnZpY2VzRGF0YSwgQnVmZmVyU2l6ZSwgKFZPSUQgKiopICZCdWZmZXJQdHIpOw0K QEAgLTIwMDQsNiArMjE2Niw4IEBAIEJCVGVzdFNldElwRmlsdGVyQ29uZm9ybWFuY2VUZXN0ICgK ICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklf VEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklf UFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIEVGSV9QWEVf QkFTRV9DT0RFX0lQX0ZJTFRFUiAgICAgICAgICAgQmNJcEZpbHRlcjsNCiANCiAgIC8vDQpAQCAt MjAyMyw3ICsyMTg3LDIzIEBAIEJCVGVzdFNldElwRmlsdGVyQ29uZm9ybWFuY2VUZXN0ICgKICAg Ly8gR2V0IHRoZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90b2NvbCBpbnRlcmZhY2Ug dG8gYmUgdGVzdGVkDQogICAvLw0KICAgQmNJbnRlcmZhY2UgPSAoRUZJX1BYRV9CQVNFX0NPREVf UFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQotDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0 aEZyb21CY0ludGVyZmFjZShCY0ludGVyZmFjZSwmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7DQor ICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBOVUxM Ow0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRoKTsN CisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5S ZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAg ICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAgICAg ICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAg RGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVzID0g Z3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1IoU3Rh dHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1OVUxM Ow0KKyAgICB9DQorICB9DQogICAvLyBEaXNhYmxlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09M IHByb3RvY29sIGlmIG5lZWRlZA0KICAgU3RhdHVzID0gQ2hhbmdlUHhlU3RhdGUgKEJjSW50ZXJm YWNlLCBGQUxTRSwgQmNJbnRlcmZhY2UtPk1vZGUtPlN0YXJ0ZWQsIEZBTFNFKTsNCiAgIGlmIChF RklfRVJST1IoU3RhdHVzKSkgew0KQEAgLTIwODMsMTEgKzIyNjMsMTIgQEAgQkJUZXN0QXJwQ29u Zm9ybWFuY2VBdXRvVGVzdCAoCiAgIEVGSV9URVNUX0xPR0dJTkdfTElCUkFSWV9QUk9UT0NPTCAg ICAgKkxvZ2dpbmdMaWI7DQogICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0 aW9uVHlwZTsNCi0gIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICAgICAgICAgICAgKkJjSW50 ZXJmYWNlOw0KICAgRUZJX0lQX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgICBJcEFkZHI7 DQorICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsN CisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAN CiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50 ZXJmYWNlOw0KLQ0KICAgLy8NCiAgIC8vIEdldCBzdXBwb3J0IGxpYnJhcnkgKFN0YW5kYXJkIExp YiwgUHJvZmlsZSBMaWIsIExvZ2dpbmcgTGliKQ0KICAgLy8NCkBAIC0yMTEwLDcgKzIyOTEsMjMg QEAgQkJUZXN0QXJwQ29uZm9ybWFuY2VBdXRvVGVzdCAoCiAgICAgICAgICAgICAgICAgICAgKTsN CiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRo RnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisg IGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7 DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0K KyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJl Y29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAg ICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAg ICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBE ZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBn dEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7 DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBEaXNhYmxlIEVGSV9QWEVfQkFTRV9DT0RFX1BS T1RPQ09MIFByb3RvY29sIGludGVyZmFjZQ0KICAgLy8NCkBAIC0yMTMwLDcgKzIzMjcsNyBAQCBC QlRlc3RBcnBDb25mb3JtYW5jZUF1dG9UZXN0ICgKICAgICAgIHJldHVybiBTdGF0dXM7DQogICAg IH0NCiAgIH0NCi0NCisgIA0KICAgLy8NCiAgIC8vIEVuYWJsZSBFRklfUFhFX0JBU0VfQ09ERV9Q Uk9UT0NPTCBQcm90b2NvbCBpbnRlcmZhY2UgaW4gSXB2NA0KICAgLy8NCkBAIC0yMjMyLDYgKzI0 MjksOCBAQCBCQlRlc3RBcnBDb25mb3JtYW5jZU1hbnVhbFRlc3QgKAogICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCiAgIEVGSV9URVNUX0FTU0VSVElPTiAg ICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9QWEVfQkFTRV9DT0RFX1BS T1RPQ09MICAgICAgICAgICAgKkJjSW50ZXJmYWNlOw0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KICAgRUZJX0lQX0FERFJFU1MgICAgICAgICAg ICAgICAgICAgICAgICBJcEFkZHI7DQogICBFRklfTUFDX0FERFJFU1MgICAgICAgICAgICAgICAg ICAgICAgIE1hY0FkZHI7DQogICBFRklfSU5JX0ZJTEVfSEFORExFICAgICAgICAgICAgICAgICAg IEZpbGVIYW5kbGU7DQpAQCAtMjI2Myw3ICsyNDYyLDIzIEBAIEJCVGVzdEFycENvbmZvcm1hbmNl TWFudWFsVGVzdCAoCiAgIC8vIEdldCB0aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJv dG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVG SV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVz PUxvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgs U3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZp Y2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0 ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAg ICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3Rh bmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVM VCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAg ICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0K KyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBp ZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERl dmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8gRGlzYWJsZSBFRklfUFhFX0JB U0VfQ09ERV9QUk9UT0NPTCBwcm90b2NvbCBpZiBuZWVkZWQNCiAgIFN0YXR1cyA9IENoYW5nZVB4 ZVN0YXRlIChCY0ludGVyZmFjZSwgRkFMU0UsIEJjSW50ZXJmYWNlLT5Nb2RlLT5TdGFydGVkLCBG QUxTRSk7DQogICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCkBAIC0yNDUyLDYgKzI2NjcsOCBA QCBCQlRlc3RTZXRQYXJhbWV0ZXJzQ29uZm9ybWFuY2VUZXN0ICgKICAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfVEVTVF9BU1NFUlRJT04gICAg ICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfUFhFX0JBU0VfQ09ERV9QUk9U T0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiANCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5k YXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAtMjQ3MCw3ICsyNjg3LDIzIEBAIEJCVGVzdFNldFBh cmFtZXRlcnNDb25mb3JtYW5jZVRlc3QgKAogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RF X1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0lu dGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsN Ci0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNl LCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1Mp IHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3RE ZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBO VUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAg ICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NF X0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNc clxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAg ICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0 cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1 czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vIERpc2Fi bGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgcHJvdG9jb2wgaWYgbmVlZGVkDQogICBTdGF0 dXMgPSBDaGFuZ2VQeGVTdGF0ZSAoQmNJbnRlcmZhY2UsIEZBTFNFLCBCY0ludGVyZmFjZS0+TW9k ZS0+U3RhcnRlZCwgRkFMU0UpOw0KICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQpAQCAtMjUz MSw2ICsyNzY0LDggQEAgQkJUZXN0U2V0U3RhdGlvbklwQ29uZm9ybWFuY2VUZXN0ICgKICAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfVEVTVF9B U1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfUFhFX0JB U0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiANCiAgIC8vDQogICAvLyBH ZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAtMjU0OSw3ICsyNzg0LDIzIEBA IEJCVGVzdFNldFN0YXRpb25JcENvbmZvcm1hbmNlVGVzdCAoCiAgIC8vIEdldCB0aGUgRUZJX1BY RV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAg Ly8NCiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50 SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2Uo QmNJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBF RklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0 aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQ YXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQor ICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAg RUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmlj ZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisg ICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChE ZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICBy ZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0K ICAgLy8gRGlzYWJsZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBwcm90b2NvbCBpZiBuZWVk ZWQNCiAgIFN0YXR1cyA9IENoYW5nZVB4ZVN0YXRlIChCY0ludGVyZmFjZSwgRkFMU0UsIEJjSW50 ZXJmYWNlLT5Nb2RlLT5TdGFydGVkLCBGQUxTRSk7DQogICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp IHsNCkBAIC0yNjAzLDYgKzI4NTQsOCBAQCBCQlRlc3RTZXRQYWNrZXRzQ29uZm9ybWFuY2VUZXN0 ICgKICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBF RklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBF RklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIx NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiANCiAgIC8v DQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAtMjYyMSw3ICsy ODc0LDIzIEBAIEJCVGVzdFNldFBhY2tldHNDb25mb3JtYW5jZVRlc3QgKAogICAvLyBHZXQgdGhl IEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0 ZWQNCiAgIC8vDQogICBCY0ludGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAq KUNsaWVudEludGVyZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50 ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0 dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERl dmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAo RGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3Nh Z2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAg ICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAg TCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRo U3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVl UG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAg ICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0N CisgIH0NCiAgIC8vIERpc2FibGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgcHJvdG9jb2wg aWYgbmVlZGVkDQogICBTdGF0dXMgPSBDaGFuZ2VQeGVTdGF0ZSAoQmNJbnRlcmZhY2UsIEZBTFNF LCBCY0ludGVyZmFjZS0+TW9kZS0+U3RhcnRlZCwgRkFMU0UpOw0KICAgaWYgKEVGSV9FUlJPUihT dGF0dXMpKSB7DQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJ L1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4u YyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29k ZS9CbGFja0JveFRlc3QvUHhlQmFzZUNvZGVCQlRlc3RNYWluLmMKaW5kZXggYTJkYjFmYjc3ZTUx Li4xOTFmNDYwMDIyMzAgMTAwNjQ0Ci0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJ L0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQmFzZUNvZGVCQlRlc3RN YWluLmMKKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4 ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uYwpAQCAtNSwxMiAr NSwxMiBAQAogCiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMK ICAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlCi0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQg CisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQKICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocAotIAorCiAgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLAogICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELgotIAorCiAqKi8KIC8qKysKIApAQCAtMjgsMzE2ICsyOCw5NCBAQCBBYnN0cmFj dDoKICNpbmNsdWRlICJQeGVCYXNlQ29kZUJCVGVzdE1haW4uaCIKICNpbmNsdWRlICJQeGVCYXNl Q29kZUJCVGVzdFN1cHBvcnQuaCIKIAotRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICBU aW1lckV2ZW50OwotVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBnQ2FsbEJhY2tJbnZv a2VkOwotRUZJX1BYRV9CQVNFX0NPREVfRlVOQ1RJT04gICAgICBnRnVuY3Rpb247Ci1FRklfUFhF X0NBTExCQUNLICAgICAgICAgICAgICAgIGdPbGRDYWxsQmFjazsKLUVGSV9IQU5ETEUgICAgICAg ICAgICAgICAgICAgICAgZ0hhbmRsZTsKK0VGSV9FVkVOVCBUaW1lckV2ZW50OworVUlOVE4gZ0Nh bGxCYWNrSW52b2tlZDsKK0VGSV9QWEVfQkFTRV9DT0RFX0ZVTkNUSU9OIGdGdW5jdGlvbjsKK0VG SV9QWEVfQ0FMTEJBQ0sgZ09sZENhbGxCYWNrOworRUZJX0hBTkRMRSBnSGFuZGxlOwogCiBFRklf UFhFX0JBU0VfQ09ERV9DQUxMQkFDS19QUk9UT0NPTCBOZXdDYWxsQmFja1Byb3RvY29sID0gewot ICBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFDS19JTlRFUkZBQ0VfUkVWSVNJT04sCi0gIE5ld0Nh bGxCYWNrCi19OworICAgIEVGSV9QWEVfQkFTRV9DT0RFX0NBTExCQUNLX0lOVEVSRkFDRV9SRVZJ U0lPTiwKKyAgICBOZXdDYWxsQmFja307CiAKIEVGSV9CQl9URVNUX1BST1RPQ09MX0ZJRUxEIGdF ZmlQeGVCY1Rlc3RQcm90RmllbGQgPSB7Ci0gIFBYRV9CQVNFX0NPREVfVEVTVF9SRVZJU0lPTiwK LSAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0xfR1VJRCwKLSAgTCJQWEUgQmFzZSBDb2RlIFBy b3RvY29sIFRlc3QiLAotICBMIlRlc3QgUFhFIEJhc2UgQ29kZSBQcm90b2NvbCIKLX07CisgICAg UFhFX0JBU0VfQ09ERV9URVNUX1JFVklTSU9OLAorICAgIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RP Q09MX0dVSUQsCisgICAgTCJQWEUgQmFzZSBDb2RlIFByb3RvY29sIFRlc3QiLAorICAgIEwiVGVz dCBQWEUgQmFzZSBDb2RlIFByb3RvY29sIn07CiAKIEVGSV9HVUlEIGdTdXBwb3J0UHJvdG9jb2xH dWlkMVtdID0gewotICBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX0dVSUQsCi0gIEVGSV9OVUxM X0dVSUQKLX07CisgICAgRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9HVUlELAorICAgIEVGSV9O VUxMX0dVSUR9OwogCiBFRklfQkJfVEVTVF9FTlRSWV9GSUVMRCBnUHhlVGVzdEVudHJ5RmllbGRb XSA9IHsKLSAgewotICAgIFBYRV9TVEFSVF9GVU5DVElPTl9URVNUX0dVSUQsCi0gICAgTCJTdGFy dF9GdW5jIiwKLSAgICBMIkZ1bmN0aW9uIFRlc3Qgb2YgU3RhcnQiLAotICAgIEVGSV9URVNUX0xF VkVMX0RFRkFVTFQsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLAotICAgIEVGSV9URVNUX0NB U0VfQVVUTywKLSAgICBCQlRlc3ROZXdTdGFydEZ1bmN0aW9uVGVzdAotICB9LAotICB7Ci0gICAg UFhFX1NUT1BfRlVOQ1RJT05fVEVTVF9HVUlELAotICAgIEwiU3RvcF9GdW5jIiwKLSAgICBMIkZ1 bmN0aW9uIFRlc3Qgb2YgU3RvcCIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwKLSAgICBn U3VwcG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9BVVRPLAotICAgIEJCVGVz dE5ld1N0b3BGdW5jdGlvblRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9TRVRJUEZJTFRFUl9GVU5D VElPTl9URVNUX0dVSUQsCi0gICAgTCJTZXRJcEZpbHRlcl9GdW5jIiwKLSAgICBMIkZ1bmN0aW9u IFRlc3Qgb2YgU2V0SXBGaWx0ZXIiLAotICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsCi0gICAg Z1N1cHBvcnRQcm90b2NvbEd1aWQxLAotICAgIEVGSV9URVNUX0NBU0VfQVVUTywKLSAgICBCQlRl c3RTZXRJcEZpbHRlckZ1bmN0aW9uVGVzdAotICB9LAotICB7Ci0gICAgUFhFX1NUQVJUX0NPTkZP Uk1BTkNFX1RFU1RfR1VJRCwKLSAgICBMIlN0YXJ0X0NvbmYiLAotICAgIEwiQ29uZm9ybWFuY2Ug VGVzdCBmb3IgU3RhcnQiLAotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsCi0gICAgZ1N1cHBv cnRQcm90b2NvbEd1aWQxLAotICAgIEVGSV9URVNUX0NBU0VfQVVUTywKLSAgICBCQlRlc3ROZXdT dGFydENvbmZvcm1hbmNlVGVzdAotICB9LAotICB7Ci0gICAgUFhFX1NUT1BfQ09ORk9STUFOQ0Vf VEVTVF9HVUlELAotICAgIEwiU3RvcF9Db25mIiwKLSAgICBMIkNvbmZvcm1hbmNlIFRlc3QgZm9y IFN0b3AiLAotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsCi0gICAgZ1N1cHBvcnRQcm90b2Nv bEd1aWQxLAotICAgIEVGSV9URVNUX0NBU0VfQVVUTywKLSAgICBCQlRlc3ROZXdTdG9wQ29uZm9y bWFuY2VUZXN0Ci0gIH0sCi0gIHsKLSAgICBQWEVfQVJQX0NPTkZPUk1BTkNFX0FVVE9fVEVTVF9H VUlELAotICAgIEwiQXJwX0NvbmYiLAotICAgIEwiQXV0byBDb25mb3JtYW5jZSBUZXN0IGZvciBB cnAiLAotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1 aWQxLAotICAgIEVGSV9URVNUX0NBU0VfQVVUTywKLSAgICBCQlRlc3RBcnBDb25mb3JtYW5jZUF1 dG9UZXN0Ci0gIH0sCi0gIAotI2lmZGVmIEVGSV9URVNUX0VYSEFVU1RJVkUgIAkgICAgIC8vU3dp dGNoIG9mZiB0aGUgNSBvbGQgdGVzdCBjYXNlCisgICAge1BYRV9TVEFSVF9GVU5DVElPTl9URVNU X0dVSUQsCisgICAgIEwiU3RhcnRfRnVuYyIsCisgICAgIEwiRnVuY3Rpb24gVGVzdCBvZiBTdGFy dCIsCisgICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsCisgICAgIGdTdXBwb3J0UHJvdG9jb2xH dWlkMSwKKyAgICAgRUZJX1RFU1RfQ0FTRV9BVVRPLAorICAgICBCQlRlc3ROZXdTdGFydEZ1bmN0 aW9uVGVzdH0sCisgICAge1BYRV9TVE9QX0ZVTkNUSU9OX1RFU1RfR1VJRCwKKyAgICAgTCJTdG9w X0Z1bmMiLAorICAgICBMIkZ1bmN0aW9uIFRlc3Qgb2YgU3RvcCIsCisgICAgIEVGSV9URVNUX0xF VkVMX0RFRkFVTFQsCisgICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwKKyAgICAgRUZJX1RFU1Rf Q0FTRV9BVVRPLAorICAgICBCQlRlc3ROZXdTdG9wRnVuY3Rpb25UZXN0fSwKKyAgICB7UFhFX1NF VElQRklMVEVSX0ZVTkNUSU9OX1RFU1RfR1VJRCwKKyAgICAgTCJTZXRJcEZpbHRlcl9GdW5jIiwK KyAgICAgTCJGdW5jdGlvbiBUZXN0IG9mIFNldElwRmlsdGVyIiwKKyAgICAgRUZJX1RFU1RfTEVW RUxfREVGQVVMVCwKKyAgICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLAorICAgICBFRklfVEVTVF9D QVNFX0FVVE8sCisgICAgIEJCVGVzdFNldElwRmlsdGVyRnVuY3Rpb25UZXN0fSwKKyAgICB7UFhF X1NUQVJUX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwKKyAgICAgTCJTdGFydF9Db25mIiwKKyAgICAg TCJDb25mb3JtYW5jZSBUZXN0IGZvciBTdGFydCIsCisgICAgIEVGSV9URVNUX0xFVkVMX01JTklN QUwsCisgICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwKKyAgICAgRUZJX1RFU1RfQ0FTRV9BVVRP LAorICAgICBCQlRlc3ROZXdTdGFydENvbmZvcm1hbmNlVGVzdH0sCisgICAge1BYRV9TVE9QX0NP TkZPUk1BTkNFX1RFU1RfR1VJRCwKKyAgICAgTCJTdG9wX0NvbmYiLAorICAgICBMIkNvbmZvcm1h bmNlIFRlc3QgZm9yIFN0b3AiLAorICAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLAorICAgICBn U3VwcG9ydFByb3RvY29sR3VpZDEsCisgICAgIEVGSV9URVNUX0NBU0VfQVVUTywKKyAgICAgQkJU ZXN0TmV3U3RvcENvbmZvcm1hbmNlVGVzdH0sCisgICAge1BYRV9BUlBfQ09ORk9STUFOQ0VfQVVU T19URVNUX0dVSUQsCisgICAgIEwiQXJwX0NvbmYiLAorICAgICBMIkF1dG8gQ29uZm9ybWFuY2Ug VGVzdCBmb3IgQXJwIiwKKyAgICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwKKyAgICAgZ1N1cHBv cnRQcm90b2NvbEd1aWQxLAorICAgICBFRklfVEVTVF9DQVNFX0FVVE8sCisgICAgIEJCVGVzdEFy cENvbmZvcm1hbmNlQXV0b1Rlc3R9LAorCisjaWZkZWYgRUZJX1RFU1RfRVhIQVVTVElWRSAvLyBT d2l0Y2ggb2ZmIHRoZSA1IG9sZCB0ZXN0IGNhc2UKICAgICBQWEVfU1RBUlRfRlVOQ1RJT05fVEVT VF9HVUlELAogICAgIEwiU3RhcnRfRnVuYyIsCiAgICAgTCJGdW5jdGlvbiBUZXN0IG9mIFN0YXJ0 IiwKICAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULAogICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlk MSwKICAgICBFRklfVEVTVF9DQVNFX0FVVE8sCi0gICAgQkJUZXN0U3RhcnRGdW5jdGlvblRlc3QK LSAgfSwKLSAgewotICAgIFBYRV9TVE9QX0ZVTkNUSU9OX1RFU1RfR1VJRCwKLSAgICBMIlN0b3Bf RnVuYyIsCi0gICAgTCJGdW5jdGlvbiBUZXN0IG9mIFN0b3AiLAotICAgIEVGSV9URVNUX0xFVkVM X0RFRkFVTFQsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLAotICAgIEVGSV9URVNUX0NBU0Vf QVVUTywKLSAgICBCQlRlc3RTdG9wRnVuY3Rpb25UZXN0Ci0gIH0sCi0gIHsKLSAgICBQWEVfU0VU SVBGSUxURVJfRlVOQ1RJT05fVEVTVF9HVUlELAotICAgIEwiU2V0SXBGaWx0ZXJfRnVuYyIsCi0g ICAgTCJGdW5jdGlvbiBUZXN0IG9mIFNldElwRmlsdGVyIiwKLSAgICBFRklfVEVTVF9MRVZFTF9E RUZBVUxULAotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwKLSAgICBFRklfVEVTVF9DQVNFX0FV VE8sCi0gICAgQkJUZXN0U2V0SXBGaWx0ZXJGdW5jdGlvblRlc3QKLSAgfSwKLSAgewotICAgIFBY RV9TVEFSVF9DT05GT1JNQU5DRV9URVNUX0dVSUQsCi0gICAgTCJTdGFydF9Db25mIiwKLSAgICBM IkNvbmZvcm1hbmNlIFRlc3QgZm9yIFN0YXJ0IiwKLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFM LAotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwKLSAgICBFRklfVEVTVF9DQVNFX0FVVE8sCi0g ICAgQkJUZXN0U3RhcnRDb25mb3JtYW5jZVRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9TVE9QX0NP TkZPUk1BTkNFX1RFU1RfR1VJRCwKLSAgICBMIlN0b3BfQ29uZiIsCi0gICAgTCJDb25mb3JtYW5j ZSBUZXN0IGZvciBTdG9wIiwKLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLAotICAgIGdTdXBw b3J0UHJvdG9jb2xHdWlkMSwKLSAgICBFRklfVEVTVF9DQVNFX0FVVE8sCi0gICAgQkJUZXN0U3Rv cENvbmZvcm1hbmNlVGVzdAotICB9LAorICAgIEJCVGVzdFN0YXJ0RnVuY3Rpb25UZXN0fSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHtQWEVfU1RPUF9GVU5DVElPTl9URVNUX0dVSUQsIEwiU3Rv cF9GdW5jIiwgTCJGdW5jdGlvbiBUZXN0IG9mIFN0b3AiLCBFRklfVEVTVF9MRVZFTF9ERUZBVUxU LCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfQVVUTywgQkJUZXN0U3RvcEZ1 bmN0aW9uVGVzdH0sIHtQWEVfU0VUSVBGSUxURVJfRlVOQ1RJT05fVEVTVF9HVUlELCBMIlNldElw RmlsdGVyX0Z1bmMiLCBMIkZ1bmN0aW9uIFRlc3Qgb2YgU2V0SXBGaWx0ZXIiLCBFRklfVEVTVF9M RVZFTF9ERUZBVUxULCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfQVVUTywg QkJUZXN0U2V0SXBGaWx0ZXJGdW5jdGlvblRlc3R9LCB7UFhFX1NUQVJUX0NPTkZPUk1BTkNFX1RF U1RfR1VJRCwgTCJTdGFydF9Db25mIiwgTCJDb25mb3JtYW5jZSBUZXN0IGZvciBTdGFydCIsIEVG SV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FT RV9BVVRPLCBCQlRlc3RTdGFydENvbmZvcm1hbmNlVGVzdH0sIHtQWEVfU1RPUF9DT05GT1JNQU5D RV9URVNUX0dVSUQsIEwiU3RvcF9Db25mIiwgTCJDb25mb3JtYW5jZSBUZXN0IGZvciBTdG9wIiwg RUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9D QVNFX0FVVE8sIEJCVGVzdFN0b3BDb25mb3JtYW5jZVRlc3R9LAogCi0vLyNpZmRlZiBFRklfVEVT VF9FWEhBVVNUSVZFCi0gIHsKLSAgICBQWEVfREhDUF9GVU5DVElPTl9URVNUX0dVSUQsCi0gICAg TCJEaGNwX0Z1bmNfTWFudWFsIiwKLSAgICBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0IG9mIERoY3Ai LAotICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQx LAotICAgIEVGSV9URVNUX0NBU0VfTUFOVUFMLAotICAgIEJCVGVzdERoY3BGdW5jdGlvblRlc3QK LSAgfSwKLSAgewotICAgIFBYRV9ESVNDT1ZFUl9GVU5DVElPTl9URVNUX0dVSUQsCi0gICAgTCJE aXNjb3Zlcl9GdW5jX01hbnVhbCIsCi0gICAgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBvZiBEaXNj b3ZlciIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwKLSAgICBnU3VwcG9ydFByb3RvY29s R3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAgQkJUZXN0RGlzY292ZXJGdW5j dGlvblRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9NVEZUUF9GVU5DVElPTl9URVNUX0dVSUQsCi0g ICAgTCJNdGZ0cF9GdW5jX01hbnVhbCIsCi0gICAgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBvZiBN dGZ0cCIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwKLSAgICBnU3VwcG9ydFByb3RvY29s R3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAgQkJUZXN0TXRmdHBGdW5jdGlv blRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9VRFBXUklURV9GVU5DVElPTl9URVNUX0dVSUQsCi0g ICAgTCJVZHBXcml0ZV9GdW5jX01hbnVhbCIsCi0gICAgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBv ZiBVZHBXcml0ZSIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwKLSAgICBnU3VwcG9ydFBy b3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAgQkJUZXN0VWRwV3Jp dGVGdW5jdGlvblRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9VRFBSRUFEX0ZVTkNUSU9OX1RFU1Rf R1VJRCwKLSAgICBMIlVkcFJlYWRfRnVuY19NYW51YWwiLAotICAgIEwiTWFudWFsIEZ1bmN0aW9u IFRlc3Qgb2YgVWRwUmVhZCIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwKLSAgICBnU3Vw cG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAgQkJUZXN0 VWRwUmVhZEZ1bmN0aW9uVGVzdAotICB9LAotICB7Ci0gICAgUFhFX0FSUF9GVU5DVElPTl9URVNU X0dVSUQsCi0gICAgTCJBcnBfRnVuY19NYW51YWwiLAotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRl c3Qgb2YgQXJwIiwKLSAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULAotICAgIGdTdXBwb3J0UHJv dG9jb2xHdWlkMSwKLSAgICBFRklfVEVTVF9DQVNFX01BTlVBTCwKLSAgICBCQlRlc3RBcnBGdW5j dGlvblRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9TRVRQQVJBTUVURVJTX0ZVTkNUSU9OX1RFU1Rf R1VJRCwKLSAgICBMIlNldFBhcmFtZXRlcnNfRnVuY19NYW51YWwiLAotICAgIEwiTWFudWFsIEZ1 bmN0aW9uIFRlc3Qgb2YgU2V0UGFyYW1ldGVycyIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVM VCwKLSAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUws Ci0gICAgQkJUZXN0U2V0UGFyYW1ldGVyc0Z1bmN0aW9uVGVzdAotICB9LAotICB7Ci0gICAgUFhF X1NFVFNUQVRJT05JUF9GVU5DVElPTl9URVNUX0dVSUQsCi0gICAgTCJTZXRTdGF0aW9uSXBfRnVu Y19NYW51YWwiLAotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgU2V0U3RhdGlvbklwIiwK LSAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULAotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwK LSAgICBFRklfVEVTVF9DQVNFX01BTlVBTCwKLSAgICBCQlRlc3RTZXRTdGF0aW9uSXBGdW5jdGlv blRlc3QKLSAgfSwKLSAgewotICAgIFBYRV9TRVRQQUNLRVRTX0ZVTkNUSU9OX1RFU1RfR1VJRCwK LSAgICBMIlNldFBhY2tldHNfRnVuY19NYW51YWwiLAotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRl c3Qgb2YgU2V0UGFja2V0cyIsCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwKLSAgICBnU3Vw cG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAgQkJUZXN0 U2V0UGFja2V0c0Z1bmN0aW9uVGVzdAotICB9LAotICB7Ci0gICAgUFhFX0RIQ1BfQ09ORk9STUFO Q0VfVEVTVF9HVUlELAotICAgIEwiRGhjcF9Db25mX01hbnVhbCIsCi0gICAgTCJNYW51YWwgQ29u Zm9ybWFuY2UgVGVzdCBmb3IgRGhjcCIsCi0gICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwKLSAg ICBnU3VwcG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAg QkJUZXN0RGhjcENvbmZvcm1hbmNlVGVzdAotICB9LAotICB7Ci0gICAgUFhFX0RJU0NPVkVSX0NP TkZPUk1BTkNFX1RFU1RfR1VJRCwKLSAgICBMIkRpc2NvdmVyX0NvbmZfTWFudWFsIiwKLSAgICBM Ik1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBEaXNjb3ZlciIsCi0gICAgRUZJX1RFU1RfTEVW RUxfTUlOSU1BTCwKLSAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FT RV9NQU5VQUwsCi0gICAgQkJUZXN0RGlzY292ZXJDb25mb3JtYW5jZVRlc3QKLSAgfSwKLSAgewot ICAgIFBYRV9NdGZ0cF9DT05GT1JNQU5DRV9URVNUX0dVSUQsCi0gICAgTCJNdGZ0cF9Db25mX01h bnVhbCIsCi0gICAgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgTXRmdHAiLAotICAgIEVG SV9URVNUX0xFVkVMX01JTklNQUwsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLAotICAgIEVG SV9URVNUX0NBU0VfTUFOVUFMLAotICAgIEJCVGVzdE10ZnRwQ29uZm9ybWFuY2VUZXN0Ci0gIH0s Ci0gIHsKLSAgICBQWEVfVURQV1JJVEVfQ09ORk9STUFOQ0VfVEVTVF9HVUlELAotICAgIEwiRGhj cF9Db25mX01hbnVhbCIsCi0gICAgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgVWRwV3Jp dGUiLAotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1 aWQxLAotICAgIEVGSV9URVNUX0NBU0VfTUFOVUFMLAotICAgIEJCVGVzdFVkcFdyaXRlQ29uZm9y bWFuY2VUZXN0Ci0gIH0sCi0gIHsKLSAgICBQWEVfVURQUkVBRF9DT05GT1JNQU5DRV9URVNUX0dV SUQsCi0gICAgTCJVZHBSZWFkX0NvbmZfTWFudWFsIiwKLSAgICBMIk1hbnVhbCBDb25mb3JtYW5j ZSBUZXN0IGZvciBVZHBSZWFkIiwKLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLAotICAgIGdT dXBwb3J0UHJvdG9jb2xHdWlkMSwKLSAgICBFRklfVEVTVF9DQVNFX01BTlVBTCwKLSAgICBCQlRl c3RVZHBSZWFkQ29uZm9ybWFuY2VUZXN0Ci0gIH0sCi0gIHsKLSAgICBQWEVfU0VUSVBGSUxURVJf Q09ORk9STUFOQ0VfVEVTVF9HVUlELAotICAgIEwiU2V0SXBGaWx0ZXJfQ29uZl9NYW51YWwiLAot ICAgIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIFNldElwRmlsdGVyIiwKLSAgICBFRklf VEVTVF9MRVZFTF9NSU5JTUFMLAotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwKLSAgICBFRklf VEVTVF9DQVNFX01BTlVBTCwKLSAgICBCQlRlc3RTZXRJcEZpbHRlckNvbmZvcm1hbmNlVGVzdAot ICB9LAotICB7Ci0gICAgUFhFX0FSUF9DT05GT1JNQU5DRV9NQU5VQUxfVEVTVF9HVUlELAotICAg IEwiQVJQX0NvbmZfTWFudWFsIiwKLSAgICBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBB UlAiLAotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1 aWQxLAotICAgIEVGSV9URVNUX0NBU0VfTUFOVUFMLAotICAgIEJCVGVzdEFycENvbmZvcm1hbmNl TWFudWFsVGVzdAotICB9LAotICB7Ci0gICAgUFhFX1NFVFBBUkFNRVRFUlNfQ09ORk9STUFOQ0Vf VEVTVF9HVUlELAotICAgIEwiU2V0UGFyYW1ldGVyc19Db25mX01hbnVhbCIsCi0gICAgTCJNYW51 YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgU2V0UGFyYW1ldGVycyIsCi0gICAgRUZJX1RFU1RfTEVW RUxfTUlOSU1BTCwKLSAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FT RV9NQU5VQUwsCi0gICAgQkJUZXN0U2V0UGFyYW1ldGVyc0NvbmZvcm1hbmNlVGVzdAotICB9LAot ICB7Ci0gICAgUFhFX1NFVFNUQVRJT05JUF9DT05GT1JNQU5DRV9URVNUX0dVSUQsCi0gICAgTCJT ZXRTdGF0aW9uSXBfQ29uZl9NYW51YWwiLAotICAgIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3Qg Zm9yIFNldFN0YXRpb25JcCIsCi0gICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwKLSAgICBnU3Vw cG9ydFByb3RvY29sR3VpZDEsCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsCi0gICAgQkJUZXN0 U2V0U3RhdGlvbklwQ29uZm9ybWFuY2VUZXN0Ci0gIH0sCi0gIHsKLSAgICBQWEVfU0VUUEFDS0VU U19DT05GT1JNQU5DRV9URVNUX0dVSUQsCi0gICAgTCJTZXRQYWNrZXRzX0NvbmZfTWFudWFsIiwK LSAgICBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBTZXRQYWNrZXRzIiwKLSAgICBFRklf VEVTVF9MRVZFTF9NSU5JTUFMLAotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwKLSAgICBFRklf VEVTVF9DQVNFX01BTlVBTCwKLSAgICBCQlRlc3RTZXRQYWNrZXRzQ29uZm9ybWFuY2VUZXN0Ci0g IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAjaWZkZWYgRUZJX1RFU1RfRVhIQVVTVElW RQorICAgIHtQWEVfREhDUF9GVU5DVElPTl9URVNUX0dVSUQsIEwiRGhjcF9GdW5jX01hbnVhbCIs IEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgRGhjcCIsIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQs IGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdERoY3BG dW5jdGlvblRlc3R9LCB7UFhFX0RJU0NPVkVSX0ZVTkNUSU9OX1RFU1RfR1VJRCwgTCJEaXNjb3Zl cl9GdW5jX01hbnVhbCIsIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgRGlzY292ZXIiLCBFRklf VEVTVF9MRVZFTF9ERUZBVUxULCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0Vf TUFOVUFMLCBCQlRlc3REaXNjb3ZlckZ1bmN0aW9uVGVzdH0sIHtQWEVfTVRGVFBfRlVOQ1RJT05f VEVTVF9HVUlELCBMIk10ZnRwX0Z1bmNfTWFudWFsIiwgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBv ZiBNdGZ0cCIsIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwg RUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdE10ZnRwRnVuY3Rpb25UZXN0fSwge1BYRV9VRFBX UklURV9GVU5DVElPTl9URVNUX0dVSUQsIEwiVWRwV3JpdGVfRnVuY19NYW51YWwiLCBMIk1hbnVh bCBGdW5jdGlvbiBUZXN0IG9mIFVkcFdyaXRlIiwgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwgZ1N1 cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNFX01BTlVBTCwgQkJUZXN0VWRwV3JpdGVG dW5jdGlvblRlc3R9LCB7UFhFX1VEUFJFQURfRlVOQ1RJT05fVEVTVF9HVUlELCBMIlVkcFJlYWRf RnVuY19NYW51YWwiLCBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0IG9mIFVkcFJlYWQiLCBFRklfVEVT VF9MRVZFTF9ERUZBVUxULCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFO VUFMLCBCQlRlc3RVZHBSZWFkRnVuY3Rpb25UZXN0fSwge1BYRV9BUlBfRlVOQ1RJT05fVEVTVF9H VUlELCBMIkFycF9GdW5jX01hbnVhbCIsIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgQXJwIiwg RUZJX1RFU1RfTEVWRUxfREVGQVVMVCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9D QVNFX01BTlVBTCwgQkJUZXN0QXJwRnVuY3Rpb25UZXN0fSwge1BYRV9TRVRQQVJBTUVURVJTX0ZV TkNUSU9OX1RFU1RfR1VJRCwgTCJTZXRQYXJhbWV0ZXJzX0Z1bmNfTWFudWFsIiwgTCJNYW51YWwg RnVuY3Rpb24gVGVzdCBvZiBTZXRQYXJhbWV0ZXJzIiwgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwg Z1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNFX01BTlVBTCwgQkJUZXN0U2V0UGFy YW1ldGVyc0Z1bmN0aW9uVGVzdH0sIHtQWEVfU0VUU1RBVElPTklQX0ZVTkNUSU9OX1RFU1RfR1VJ RCwgTCJTZXRTdGF0aW9uSXBfRnVuY19NYW51YWwiLCBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0IG9m IFNldFN0YXRpb25JcCIsIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsIGdTdXBwb3J0UHJvdG9jb2xH dWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdFNldFN0YXRpb25JcEZ1bmN0aW9uVGVz dH0sIHtQWEVfU0VUUEFDS0VUU19GVU5DVElPTl9URVNUX0dVSUQsIEwiU2V0UGFja2V0c19GdW5j X01hbnVhbCIsIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgU2V0UGFja2V0cyIsIEVGSV9URVNU X0xFVkVMX0RFRkFVTFQsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5V QUwsIEJCVGVzdFNldFBhY2tldHNGdW5jdGlvblRlc3R9LCB7UFhFX0RIQ1BfQ09ORk9STUFOQ0Vf VEVTVF9HVUlELCBMIkRoY3BfQ29uZl9NYW51YWwiLCBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0 IGZvciBEaGNwIiwgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQx LCBFRklfVEVTVF9DQVNFX01BTlVBTCwgQkJUZXN0RGhjcENvbmZvcm1hbmNlVGVzdH0sIHtQWEVf RElTQ09WRVJfQ09ORk9STUFOQ0VfVEVTVF9HVUlELCBMIkRpc2NvdmVyX0NvbmZfTWFudWFsIiwg TCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgRGlzY292ZXIiLCBFRklfVEVTVF9MRVZFTF9N SU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRl c3REaXNjb3ZlckNvbmZvcm1hbmNlVGVzdH0sIHtQWEVfTXRmdHBfQ09ORk9STUFOQ0VfVEVTVF9H VUlELCBMIk10ZnRwX0NvbmZfTWFudWFsIiwgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3Ig TXRmdHAiLCBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVG SV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RNdGZ0cENvbmZvcm1hbmNlVGVzdH0sIHtQWEVfVURQ V1JJVEVfQ09ORk9STUFOQ0VfVEVTVF9HVUlELCBMIkRoY3BfQ29uZl9NYW51YWwiLCBMIk1hbnVh bCBDb25mb3JtYW5jZSBUZXN0IGZvciBVZHBXcml0ZSIsIEVGSV9URVNUX0xFVkVMX01JTklNQUws IGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdFVkcFdy aXRlQ29uZm9ybWFuY2VUZXN0fSwge1BYRV9VRFBSRUFEX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwg TCJVZHBSZWFkX0NvbmZfTWFudWFsIiwgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgVWRw UmVhZCIsIEVGSV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJ X1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdFVkcFJlYWRDb25mb3JtYW5jZVRlc3R9LCB7UFhFX1NF VElQRklMVEVSX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwgTCJTZXRJcEZpbHRlcl9Db25mX01hbnVh bCIsIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIFNldElwRmlsdGVyIiwgRUZJX1RFU1Rf TEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNFX01BTlVB TCwgQkJUZXN0U2V0SXBGaWx0ZXJDb25mb3JtYW5jZVRlc3R9LCB7UFhFX0FSUF9DT05GT1JNQU5D RV9NQU5VQUxfVEVTVF9HVUlELCBMIkFSUF9Db25mX01hbnVhbCIsIEwiTWFudWFsIENvbmZvcm1h bmNlIFRlc3QgZm9yIEFSUCIsIEVGSV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJvdG9j b2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdEFycENvbmZvcm1hbmNlTWFudWFs VGVzdH0sIHtQWEVfU0VUUEFSQU1FVEVSU19DT05GT1JNQU5DRV9URVNUX0dVSUQsIEwiU2V0UGFy YW1ldGVyc19Db25mX01hbnVhbCIsIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIFNldFBh cmFtZXRlcnMiLCBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3VpZDEs IEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RTZXRQYXJhbWV0ZXJzQ29uZm9ybWFuY2VUZXN0 fSwge1BYRV9TRVRTVEFUSU9OSVBfQ09ORk9STUFOQ0VfVEVTVF9HVUlELCBMIlNldFN0YXRpb25J cF9Db25mX01hbnVhbCIsIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIFNldFN0YXRpb25J cCIsIEVGSV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RF U1RfQ0FTRV9NQU5VQUwsIEJCVGVzdFNldFN0YXRpb25JcENvbmZvcm1hbmNlVGVzdH0sIHtQWEVf U0VUUEFDS0VUU19DT05GT1JNQU5DRV9URVNUX0dVSUQsIEwiU2V0UGFja2V0c19Db25mX01hbnVh bCIsIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIFNldFBhY2tldHMiLCBFRklfVEVTVF9M RVZFTF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFM LCBCQlRlc3RTZXRQYWNrZXRzQ29uZm9ybWFuY2VUZXN0fSwKICNlbmRpZgogCi0gIEVGSV9OVUxM X0dVSUQKLX07Ci0KKyAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9OVUxMX0dVSUQKK30KKzsK IAogRUZJX0JCX1RFU1RfUFJPVE9DT0wgKmdCQlRlc3RQcm90b2NvbEludGVyZmFjZTsKIAogRUZJ X1NUQVRVUwogRUZJQVBJCi1CQlRlc3RQeGVCY1VubG9hZCAoCi0gIElOIEVGSV9IQU5ETEUgICAg ICAgSW1hZ2VIYW5kbGUKLSAgKTsKK0JCVGVzdFB4ZUJjVW5sb2FkKAorICAgIElOIEVGSV9IQU5E TEUgSW1hZ2VIYW5kbGUpOwogCiAvKioKICAqICBDcmVhdGVzL2luc3RhbGxzIHRoZSBCbGFja0Jv eCBJbnRlcmZhY2UgYW5kIGVtaW5hdGluZyBFbnRyeSBQb2ludCBub2RlIGxpc3QuCkBAIC0zNDks MzQgKzEyNywzNCBAQCBCQlRlc3RQeGVCY1VubG9hZCAoCiAgKi8KIEVGSV9TVEFUVVMKIEVGSUFQ SQotSW5pdGlhbGl6ZUJCVGVzdFB4ZUJDUHJvdG9jb2wgKAotICBJTiBFRklfSEFORExFICAgICAg ICAgICBJbWFnZUhhbmRsZSwKLSAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgKlN5c3RlbVRhYmxl Ci0gICkKK0luaXRpYWxpemVCQlRlc3RQeGVCQ1Byb3RvY29sKAorICAgIElOIEVGSV9IQU5ETEUg SW1hZ2VIYW5kbGUsCisgICAgSU4gRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUpCiB7CiAg IEVGSV9TVEFUVVMgU3RhdHVzOwogCi0gIEVmaUluaXRpYWxpemVUZXN0TGliIChJbWFnZUhhbmRs ZSwgU3lzdGVtVGFibGUpOwotICBTY3RJbml0aWFsaXplTGliIChJbWFnZUhhbmRsZSwgU3lzdGVt VGFibGUpOwotICBTY3RJbml0aWFsaXplRHJpdmVyIChJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUp OworICBFZmlJbml0aWFsaXplVGVzdExpYihJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUpOworICBT Y3RJbml0aWFsaXplTGliKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7CisgIFNjdEluaXRpYWxp emVEcml2ZXIoSW1hZ2VIYW5kbGUsIFN5c3RlbVRhYmxlKTsKIAotICBTdGF0dXMgPSBndEJTLT5D cmVhdGVFdmVudCAoRVZUX1RJTUVSLCAwLCAoRUZJX0VWRU5UX05PVElGWSkgTlVMTCwgTlVMTCwg JlRpbWVyRXZlbnQpOwotICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsKKyAgU3RhdHVzID0gZ3RC Uy0+Q3JlYXRlRXZlbnQoRVZUX1RJTUVSLCAwLCAoRUZJX0VWRU5UX05PVElGWSlOVUxMLCBOVUxM LCAmVGltZXJFdmVudCk7CisgIGlmIChFRklfRVJST1IoU3RhdHVzKSkKKyAgewogICAgIHJldHVy biBTdGF0dXM7CiAgIH0KIAotICBTdGF0dXMgPSBHZXRTeXN0ZW1EZXZpY2VQYXRoQW5kRmlsZVBh dGggKEltYWdlSGFuZGxlKTsKLSAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7CisgIFN0YXR1cyA9 IEdldFN5c3RlbURldmljZVBhdGhBbmRGaWxlUGF0aChJbWFnZUhhbmRsZSk7CisgIGlmIChFRklf RVJST1IoU3RhdHVzKSkKKyAgewogICAgIHJldHVybiBTdGF0dXM7CiAgIH0KIAotICByZXR1cm4g RWZpSW5pdEFuZEluc3RhbGxCQlRlc3RJbnRlcmZhY2UgKAotICAgICAgICAgICAmSW1hZ2VIYW5k bGUsCi0gICAgICAgICAgICZnRWZpUHhlQmNUZXN0UHJvdEZpZWxkLAotICAgICAgICAgICBnUHhl VGVzdEVudHJ5RmllbGQsCi0gICAgICAgICAgIEJCVGVzdFB4ZUJjVW5sb2FkLAotICAgICAgICAg ICAmZ0JCVGVzdFByb3RvY29sSW50ZXJmYWNlCi0gICAgICAgICAgICk7CisgIHJldHVybiBFZmlJ bml0QW5kSW5zdGFsbEJCVGVzdEludGVyZmFjZSgKKyAgICAgICZJbWFnZUhhbmRsZSwKKyAgICAg ICZnRWZpUHhlQmNUZXN0UHJvdEZpZWxkLAorICAgICAgZ1B4ZVRlc3RFbnRyeUZpZWxkLAorICAg ICAgQkJUZXN0UHhlQmNVbmxvYWQsCisgICAgICAmZ0JCVGVzdFByb3RvY29sSW50ZXJmYWNlKTsK IH0KIAogLyoqCkBAIC0zODYsMjkgKzE2NCwyOSBAQCBJbml0aWFsaXplQkJUZXN0UHhlQkNQcm90 b2NvbCAoCiAgKi8KIEVGSV9TVEFUVVMKIEVGSUFQSQotQkJUZXN0UHhlQmNVbmxvYWQgKAotICBJ TiBFRklfSEFORExFICAgICAgIEltYWdlSGFuZGxlCi0gICkKK0JCVGVzdFB4ZUJjVW5sb2FkKAor ICAgIElOIEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUpCiB7CiAgIEVGSV9TVEFUVVMgU3RhdHVzOwog Ci0gIGlmIChnRGV2aWNlUGF0aCAhPSBOVUxMKSB7Ci0gICAgZ3RCUy0+RnJlZVBvb2wgKGdEZXZp Y2VQYXRoKTsKKyAgaWYgKGdEZXZpY2VQYXRoICE9IE5VTEwpCisgIHsKKyAgICBndEJTLT5GcmVl UG9vbChnRGV2aWNlUGF0aCk7CiAgIH0KIAotICBpZiAoZ0ZpbGVQYXRoICE9IE5VTEwpIHsKLSAg ICBndEJTLT5GcmVlUG9vbCAoZ0ZpbGVQYXRoKTsKKyAgaWYgKGdGaWxlUGF0aCAhPSBOVUxMKQor ICB7CisgICAgZ3RCUy0+RnJlZVBvb2woZ0ZpbGVQYXRoKTsKICAgfQogCi0gIFN0YXR1cyA9IGd0 QlMtPkNsb3NlRXZlbnQgKFRpbWVyRXZlbnQpOwotICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsK LQorICBTdGF0dXMgPSBndEJTLT5DbG9zZUV2ZW50KFRpbWVyRXZlbnQpOworICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpCisgIHsKICAgfQogCi0gIHJldHVybiBFZmlVbmluc3RhbGxBbmRGcmVlQkJU ZXN0SW50ZXJmYWNlICgKLSAgICAgICAgICAgSW1hZ2VIYW5kbGUsCi0gICAgICAgICAgIGdCQlRl c3RQcm90b2NvbEludGVyZmFjZQotICAgICAgICAgICApOworICByZXR1cm4gRWZpVW5pbnN0YWxs QW5kRnJlZUJCVGVzdEludGVyZmFjZSgKKyAgICAgIEltYWdlSGFuZGxlLAorICAgICAgZ0JCVGVz dFByb3RvY29sSW50ZXJmYWNlKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiogSW50ZXJuYWwgRnVuY3Rpb24gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwpAQCAtNDIyLDQyICsyMDAsNDQgQEAgQkJUZXN0UHhlQmNVbmxvYWQgKAogICogIEByZXR1cm4g RUZJX1NVQ0NFU1MgRmluaXNoIHRoZSB0ZXN0IHN1Y2Nlc3NmdWxseS4KICAqLwogRUZJX1NUQVRV UwotQ2hhbmdlUHhlU3RhdGUgKAotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAg KlB4ZUludGVyZmFjZSwKLSAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5n SXB2NiwKLSAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgIEN1ciwKLSAgSU4gQk9P TEVBTiAgICAgICAgICAgICAgICAgICAgICAgIE54dAotICApCitDaGFuZ2VQeGVTdGF0ZSgKKyAg ICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqUHhlSW50ZXJmYWNlLAorICAgIElOIEJP T0xFQU4gVXNpbmdJcHY2LAorICAgIElOIEJPT0xFQU4gQ3VyLAorICAgIElOIEJPT0xFQU4gTnh0 KQogewotICBpZiAoQ3VyPT1OeHQpIHsKKyAgaWYgKEN1ciA9PSBOeHQpCisgIHsKICAgICByZXR1 cm4gRUZJX1NVQ0NFU1M7CiAgIH0KIAotICBpZiAoQ3VyID09IFRSVUUpIHsKLSAgICByZXR1cm4g UHhlSW50ZXJmYWNlLT5TdG9wIChQeGVJbnRlcmZhY2UpOworICBpZiAoQ3VyID09IFRSVUUpCisg IHsKKyAgICByZXR1cm4gUHhlSW50ZXJmYWNlLT5TdG9wKFB4ZUludGVyZmFjZSk7CiAgIH0KIAot ICByZXR1cm4gUHhlSW50ZXJmYWNlLT5TdGFydCAoUHhlSW50ZXJmYWNlLCBVc2luZ0lwdjYpOwor ICByZXR1cm4gUHhlSW50ZXJmYWNlLT5TdGFydChQeGVJbnRlcmZhY2UsIFVzaW5nSXB2Nik7CiB9 CiAKIEVGSV9TVEFUVVMKLVJlSW5pdFB4ZUJhc2VDb2RlICgKLSAgSU4gRUZJX1BYRV9CQVNFX0NP REVfUFJPVE9DT0wgICAgKkJjSW50ZXJmYWNlCi0pCitSZUluaXRQeGVCYXNlQ29kZSgKKyAgICBJ TiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqQmNJbnRlcmZhY2UpCiB7Ci0gIEVGSV9TVEFU VVMgICAgIFN0YXR1czsKKyAgRUZJX1NUQVRVUyBTdGF0dXM7CiAKICAgLy8gUmUtaW5pdGlhbGl6 ZSB0aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wKICAgaWYgKEJjSW50ZXJmYWNlLT5Nb2Rl LT5TdGFydGVkID09IFRSVUUpCiAgIHsKLSAgICBTdGF0dXMgPSBCY0ludGVyZmFjZS0+U3RvcCAo QmNJbnRlcmZhY2UpOwotICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSl7CisgICAgU3RhdHVzID0g QmNJbnRlcmZhY2UtPlN0b3AoQmNJbnRlcmZhY2UpOworICAgIGlmIChFRklfRVJST1IoU3RhdHVz KSkKKyAgICB7CiAgICAgICByZXR1cm4gU3RhdHVzOwogICAgIH0KICAgfQogCi0gIFN0YXR1cyA9 IEJjSW50ZXJmYWNlLT5TdGFydCAoQmNJbnRlcmZhY2UsIEZBTFNFKTsKLSAgaWYgKEVGSV9FUlJP UihTdGF0dXMpKXsKKyAgU3RhdHVzID0gQmNJbnRlcmZhY2UtPlN0YXJ0KEJjSW50ZXJmYWNlLCBG QUxTRSk7CisgIGlmIChFRklfRVJST1IoU3RhdHVzKSkKKyAgewogICAgIHJldHVybiBTdGF0dXM7 CiAgIH0KIApAQCAtNDY5LDE5ICsyNDksMTkgQEAgUmVJbml0UHhlQmFzZUNvZGUgKAogICogIEBy ZXR1cm4gVFJVRSB0byBpbmRpY2F0ZSB1c2VyIG9wZXJhdGlvbiBjb21wbGV0ZS4KICAqLwogQk9P TEVBTgotV2FpdEZvckFueUlucHV0ICgpCitXYWl0Rm9yQW55SW5wdXQoKQogewotICBVSU5UTiAg ICAgICAgICAgICAgICAgICBOb1dhaXQgPSAxLCBXYWl0SW5kZXg7Ci0gIEVGSV9FVkVOVCAgICAg ICAgICAgICAgIFdhaXRMaXN0WzFdOwotICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7 Ci0gIEVGSV9JTlBVVF9LRVkgICAgICAgICAgIEtleTsKKyAgVUlOVE4gTm9XYWl0ID0gMSwgV2Fp dEluZGV4OworICBFRklfRVZFTlQgV2FpdExpc3RbMV07CisgIEVGSV9TVEFUVVMgU3RhdHVzOwor ICBFRklfSU5QVVRfS0VZIEtleTsKIAotICBTY3RQcmludCAoTCJQcmVzcyBhbnkga2V5IHRvIGNv bnRpbnVlLi4uIik7CisgIFNjdFByaW50KEwiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS4uLiIp OwogCiAgIC8vCiAgIC8vIFNldCAxIHNlY29uZCBwZXJpb2RpYyB0aW1lcgogICAvLwotICBTdGF0 dXMgPSBndEJTLT5TZXRUaW1lciAoVGltZXJFdmVudCwgVGltZXJQZXJpb2RpYywgMTAwMDAwMDAp OworICBTdGF0dXMgPSBndEJTLT5TZXRUaW1lcihUaW1lckV2ZW50LCBUaW1lclBlcmlvZGljLCAx MDAwMDAwMCk7CiAKICAgLy8KICAgLy8gU2V0IHVwIGEgd2FpdCBsaXN0IGZvciBhIGtleSBhbmQg dGhlIHRpbWVyCkBAIC00OTIsNTAgKzI3Miw1MCBAQCBXYWl0Rm9yQW55SW5wdXQgKCkKICAgLy8K ICAgLy8gV2FpdCBmb3IgZWl0aGVyCiAgIC8vCi0gIHdoaWxlIChOb1dhaXQpIHsKLSAgICBTdGF0 dXMgPSBndEJTLT5XYWl0Rm9yRXZlbnQgKE5vV2FpdCwgV2FpdExpc3QsICZXYWl0SW5kZXgpOwor ICB3aGlsZSAoTm9XYWl0KQorICB7CisgICAgU3RhdHVzID0gZ3RCUy0+V2FpdEZvckV2ZW50KE5v V2FpdCwgV2FpdExpc3QsICZXYWl0SW5kZXgpOwogCi0gICAgc3dpdGNoIChXYWl0SW5kZXgpIHsK LSAgICAgIGNhc2UgMDoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gUmVhZCB0aGUga2V5Ci0gICAg ICAgIC8vCi0gICAgICAgIFN0YXR1cyA9IGd0U1QtPkNvbkluLT5SZWFkS2V5U3Ryb2tlIChndFNU LT5Db25JbiwgJktleSk7Ci0gICAgICAgIGlmIChFRklfU1VDQ0VTUyA9PSBTdGF0dXMpCi0gICAg ICAgICAgTm9XYWl0ID0gMDsKLSAgICAgICAgYnJlYWs7CisgICAgc3dpdGNoIChXYWl0SW5kZXgp CisgICAgeworICAgIGNhc2UgMDoKKyAgICAgIC8vCisgICAgICAvLyBSZWFkIHRoZSBrZXkKKyAg ICAgIC8vCisgICAgICBTdGF0dXMgPSBndFNULT5Db25Jbi0+UmVhZEtleVN0cm9rZShndFNULT5D b25JbiwgJktleSk7CisgICAgICBpZiAoRUZJX1NVQ0NFU1MgPT0gU3RhdHVzKQorICAgICAgICBO b1dhaXQgPSAwOworICAgICAgYnJlYWs7CiAKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgU2N0UHJpbnQgKEwi XHJcbiIpOworICBTY3RQcmludChMIlxyXG4iKTsKIAogICAvLwogICAvLyBEb25lLCBjYW5jbGUg cGVyaW9kaWMgdGltZXIKICAgLy8KLSAgU3RhdHVzID0gZ3RCUy0+U2V0VGltZXIgKFRpbWVyRXZl bnQsIFRpbWVyQ2FuY2VsLCAwKTsKKyAgU3RhdHVzID0gZ3RCUy0+U2V0VGltZXIoVGltZXJFdmVu dCwgVGltZXJDYW5jZWwsIDApOwogCiAgIHJldHVybiBUUlVFOwotCiB9CiAKLQogQk9PTEVBTgot V2FpdEZvclVzZXJDaGVjayAoKQorV2FpdEZvclVzZXJDaGVjaygpCiB7Ci0gIFVJTlROICAgICAg ICAgICAgICAgICAgIE5vV2FpdCA9IDEsIFdhaXRJbmRleDsKLSAgRUZJX0VWRU5UICAgICAgICAg ICAgICAgV2FpdExpc3RbMV07Ci0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsKLSAg RUZJX0lOUFVUX0tFWSAgICAgICAgICAgS2V5OwotICBCT09MRUFOICAgICAgICAgICAgICAgICBQ cmVzc1llcz1GQUxTRTsKKyAgVUlOVE4gTm9XYWl0ID0gMSwgV2FpdEluZGV4OworICBFRklfRVZF TlQgV2FpdExpc3RbMV07CisgIEVGSV9TVEFUVVMgU3RhdHVzOworICBFRklfSU5QVVRfS0VZIEtl eTsKKyAgQk9PTEVBTiBQcmVzc1llcyA9IEZBTFNFOwogCi0gIFNjdFByaW50IChMIlxyXG5QcmVz cyBcIllcIiBvciBcIk5cIi4uLiIpOworICBTY3RQcmludChMIlxyXG5QcmVzcyBcIllcIiBvciBc Ik5cIi4uLiIpOwogCiAgIC8vCiAgIC8vIFNldCAxIHNlY29uZCBwZXJpb2RpYyB0aW1lcgogICAv LwotICBTdGF0dXMgPSBndEJTLT5TZXRUaW1lciAoVGltZXJFdmVudCwgVGltZXJQZXJpb2RpYywg MTAwMDAwMDApOworICBTdGF0dXMgPSBndEJTLT5TZXRUaW1lcihUaW1lckV2ZW50LCBUaW1lclBl cmlvZGljLCAxMDAwMDAwMCk7CiAKICAgLy8KICAgLy8gU2V0IHVwIGEgd2FpdCBsaXN0IGZvciBh IGtleSBhbmQgdGhlIHRpbWVyCkBAIC01NDYsODMgKzMyNiw4OCBAQCBXYWl0Rm9yVXNlckNoZWNr ICgpCiAgIC8vCiAgIC8vIFdhaXQgZm9yIGVpdGhlcgogICAvLwotICB3aGlsZSAoTm9XYWl0KSB7 Ci0gICAgU3RhdHVzID0gZ3RCUy0+V2FpdEZvckV2ZW50IChOb1dhaXQsIFdhaXRMaXN0LCAmV2Fp dEluZGV4KTsKKyAgd2hpbGUgKE5vV2FpdCkKKyAgeworICAgIFN0YXR1cyA9IGd0QlMtPldhaXRG b3JFdmVudChOb1dhaXQsIFdhaXRMaXN0LCAmV2FpdEluZGV4KTsKIAotICAgIHN3aXRjaCAoV2Fp dEluZGV4KSB7Ci0gICAgICBjYXNlIDA6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIFJlYWQgdGhl IGtleQotICAgICAgICAvLwotICAgICAgICBTdGF0dXMgPSBndFNULT5Db25Jbi0+UmVhZEtleVN0 cm9rZSAoZ3RTVC0+Q29uSW4sICZLZXkpOwotICAgICAgICBTY3RBUHJpbnQgKChjaGFyICopKCZL ZXkuVW5pY29kZUNoYXIpKTsKLSAgICAgICAgc3dpdGNoIChLZXkuVW5pY29kZUNoYXIpIHsKLSAg ICAgICAgICBjYXNlICdZJzoKLSAgICAgICAgICBjYXNlICd5JzoKLSAgICAgICAgICAgIE5vV2Fp dCA9IDA7Ci0gICAgICAgICAgICBQcmVzc1llcyA9IFRSVUU7Ci0gICAgICAgICAgICBicmVhazsK KyAgICBzd2l0Y2ggKFdhaXRJbmRleCkKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgLy8KKyAg ICAgIC8vIFJlYWQgdGhlIGtleQorICAgICAgLy8KKyAgICAgIFN0YXR1cyA9IGd0U1QtPkNvbklu LT5SZWFkS2V5U3Ryb2tlKGd0U1QtPkNvbkluLCAmS2V5KTsKKyAgICAgIFNjdEFQcmludCgoY2hh ciAqKSgmS2V5LlVuaWNvZGVDaGFyKSk7CisgICAgICBzd2l0Y2ggKEtleS5Vbmljb2RlQ2hhcikK KyAgICAgIHsKKyAgICAgIGNhc2UgJ1knOgorICAgICAgY2FzZSAneSc6CisgICAgICAgIE5vV2Fp dCA9IDA7CisgICAgICAgIFByZXNzWWVzID0gVFJVRTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAg ICAgICBjYXNlICdOJzoKLSAgICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgIE5vV2FpdCA9 IDA7Ci0gICAgICAgICAgICBQcmVzc1llcyA9IEZBTFNFOwotICAgICAgICAgICAgYnJlYWs7Ci0K LSAgICAgICAgICBkZWZhdWx0IDoKLSAgICAgICAgICAgIFNjdFByaW50IChMIlxuIik7Ci0gICAg ICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgY2FzZSAnTic6CisgICAgICBjYXNlICdu JzoKKyAgICAgICAgTm9XYWl0ID0gMDsKKyAgICAgICAgUHJlc3NZZXMgPSBGQUxTRTsKICAgICAg ICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQ6CisgICAgICAgIFNjdFByaW50KEwiXG4iKTsKICAg ICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAg ICBicmVhazsKICAgICB9CiAgIH0KLSAgU2N0UHJpbnQgKEwiXHJcbiIpOworICBTY3RQcmludChM IlxyXG4iKTsKIAogICAvLwogICAvLyBEb25lLCBjYW5jbGUgcGVyaW9kaWMgdGltZXIKICAgLy8K LSAgU3RhdHVzID0gZ3RCUy0+U2V0VGltZXIgKFRpbWVyRXZlbnQsIFRpbWVyQ2FuY2VsLCAwKTsK KyAgU3RhdHVzID0gZ3RCUy0+U2V0VGltZXIoVGltZXJFdmVudCwgVGltZXJDYW5jZWwsIDApOwog CiAgIHJldHVybiBQcmVzc1llczsKLQogfQogCiBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFDS19T VEFUVVMKIEVGSUFQSQotTmV3Q2FsbEJhY2sgKAotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9DQUxM QkFDS19QUk9UT0NPTCAgKlRoaXMsCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX0ZVTkNUSU9OICAg ICAgICAgICBGdW5jdGlvbiwKLSAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlY2VpdmVkLAotICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UGFja2V0TGVuLAotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QQUNLRVQgICAgICAgICAgICAgKlBh Y2tldCBPUFRJT05BTAotICApCitOZXdDYWxsQmFjaygKKyAgICBJTiBFRklfUFhFX0JBU0VfQ09E RV9DQUxMQkFDS19QUk9UT0NPTCAqVGhpcywKKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9GVU5D VElPTiBGdW5jdGlvbiwKKyAgICBJTiBCT09MRUFOIFJlY2VpdmVkLAorICAgIElOIFVJTlQzMiBQ YWNrZXRMZW4sCisgICAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VUICpQYWNrZXQgT1BUSU9O QUwpCiB7Ci0gIGlmIChGdW5jdGlvbiA9PSBnRnVuY3Rpb24pIHsKLSAgICBnQ2FsbEJhY2tJbnZv a2VkICsrOworICBpZiAoRnVuY3Rpb24gPT0gZ0Z1bmN0aW9uKQorICB7CisgICAgZ0NhbGxCYWNr SW52b2tlZCsrOwogICAgIHJldHVybiBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFDS19TVEFUVVNf QUJPUlQ7Ci0gIH0gZWxzZSBpZiAoZ09sZENhbGxCYWNrICE9IE5VTEwpIHsKLSAgICByZXR1cm4g Z09sZENhbGxCYWNrIChUaGlzLCBGdW5jdGlvbiwgUmVjZWl2ZWQsIFBhY2tldExlbiwgUGFja2V0 KTsKLSAgfSBlbHNlIHsKKyAgfQorICBlbHNlIGlmIChnT2xkQ2FsbEJhY2sgIT0gTlVMTCkKKyAg eworICAgIHJldHVybiBnT2xkQ2FsbEJhY2soVGhpcywgRnVuY3Rpb24sIFJlY2VpdmVkLCBQYWNr ZXRMZW4sIFBhY2tldCk7CisgIH0KKyAgZWxzZQorICB7CiAgICAgcmV0dXJuIEVGSV9QWEVfQkFT RV9DT0RFX0NBTExCQUNLX1NUQVRVU19DT05USU5VRTsKICAgfQogfQogCiBFRklfU1RBVFVTCi1I b29rUmV0dXJuQWJvcnRDYWxsQmFjayAoCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX0ZVTkNUSU9O ICAgICAgICAgRnVuY051bSwKLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAg ICAqQmNJbnRlcmZhY2UKLSAgKQorSG9va1JldHVybkFib3J0Q2FsbEJhY2soCisgICAgSU4gRUZJ X1BYRV9CQVNFX0NPREVfRlVOQ1RJT04gRnVuY051bSwKKyAgICBJTiBFRklfUFhFX0JBU0VfQ09E RV9QUk9UT0NPTCAqQmNJbnRlcmZhY2UpCiB7Ci0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsKLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAg KkhhbmRsZUJ1ZmZlcjsKLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFu ZGxlQ291bnQ7Ci0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Owot ICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAqSW50ZXJmYWNlOworICBFRklf U1RBVFVTIFN0YXR1czsKKyAgRUZJX0hBTkRMRSAqSGFuZGxlQnVmZmVyOworICBVSU5UTiBIYW5k bGVDb3VudDsKKyAgVUlOVE4gSW5kZXg7CisgIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICpJ bnRlcmZhY2U7CiAgIEVGSV9QWEVfQkFTRV9DT0RFX0NBTExCQUNLX1BST1RPQ09MICpCY0NhbGxC YWNrOwotICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdNYWtlQ2FsbGJh Y2s7CisgIEJPT0xFQU4gTmV3TWFrZUNhbGxiYWNrOwogCiAgIC8vCiAgIC8vIGluaXQgZ2xvYmFs IHZhcmlhYmxlcwpAQCAtNjM0LDE0ICs0MTksMTQgQEAgSG9va1JldHVybkFib3J0Q2FsbEJhY2sg KAogICAvLwogICAvLyBMb2NhdGUgYWxsIGhhbmRsZXMgb2YgUHhlIHByb3RvY29sCiAgIC8vCi0g IFN0YXR1cyA9IGd0QlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlciAoCi0gICAgICAgICAgICAgICAgICAg QnlQcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAmZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVQ cm90b2NvbEd1aWQsCi0gICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAg ICAmSGFuZGxlQ291bnQsCi0gICAgICAgICAgICAgICAgICAgJkhhbmRsZUJ1ZmZlcgotICAgICAg ICAgICAgICAgICAgICk7Ci0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsKKyAgU3RhdHVzID0g Z3RCUy0+TG9jYXRlSGFuZGxlQnVmZmVyKAorICAgICAgQnlQcm90b2NvbCwKKyAgICAgICZnQmxh Y2tCb3hFZmlQeGVCYXNlQ29kZVByb3RvY29sR3VpZCwKKyAgICAgIE5VTEwsCisgICAgICAmSGFu ZGxlQ291bnQsCisgICAgICAmSGFuZGxlQnVmZmVyKTsKKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMp KQorICB7CiAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7CiAgIH0KIApAQCAtNjQ5LDY3ICs0MzQs NzAgQEAgSG9va1JldHVybkFib3J0Q2FsbEJhY2sgKAogICAvLyBMb29raW5nIGZvciB0aGUgaGFu ZGxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEJjSW50ZXJmYWNlCiAgIC8vCiAgIGdIYW5kbGUgPSBO VUxMOwotICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBIYW5kbGVDb3VudDsgSW5kZXggKz0gMSkg ewotICAgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sICgKLSAgICAgICAgICAgICAgICAg ICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sCi0gICAgICAgICAgICAgICAgICAgICAmZ0JsYWNrQm94 RWZpUHhlQmFzZUNvZGVQcm90b2NvbEd1aWQsCi0gICAgICAgICAgICAgICAgICAgICAoVk9JRCAq KikmSW50ZXJmYWNlCi0gICAgICAgICAgICAgICAgICAgKTsKLSAgICBpZiAoQmNJbnRlcmZhY2Ug PT0gSW50ZXJmYWNlKSB7CisgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEhhbmRsZUNvdW50OyBJ bmRleCArPSAxKQorICB7CisgICAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2woCisgICAg ICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sCisgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29k ZVByb3RvY29sR3VpZCwKKyAgICAgICAgKFZPSUQgKiopJkludGVyZmFjZSk7CisgICAgaWYgKEJj SW50ZXJmYWNlID09IEludGVyZmFjZSkKKyAgICB7CiAgICAgICBnSGFuZGxlID0gSGFuZGxlQnVm ZmVyW0luZGV4XTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogCi0gIGd0QlMtPkZyZWVQb29s IChIYW5kbGVCdWZmZXIpOworICBndEJTLT5GcmVlUG9vbChIYW5kbGVCdWZmZXIpOwogCi0gIGlm IChnSGFuZGxlID09IE5VTEwpIHsKKyAgaWYgKGdIYW5kbGUgPT0gTlVMTCkKKyAgewogICAgIHJl dHVybiBFRklfTk9UX0ZPVU5EOwogICB9CiAKICAgLy8KICAgLy8gSXMgUHhlIENhbGxiYWNrIHBy b2JvY29sIGluc3RhbGxlZD8KICAgLy8KLSAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2wg KAotICAgICAgICAgICAgICAgICAgIGdIYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgJmdCbGFj a0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJhY2tQcm90b2NvbEd1aWQsCi0gICAgICAgICAgICAgICAg ICAgKFZPSUQgKiopJkJjQ2FsbEJhY2sKLSAgICAgICAgICAgICAgICAgICApOwotICBpZiAoU3Rh dHVzID09IEVGSV9TVUNDRVNTKSB7CisgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKAor ICAgICAgZ0hhbmRsZSwKKyAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZUNhbGxiYWNrUHJv dG9jb2xHdWlkLAorICAgICAgKFZPSUQgKiopJkJjQ2FsbEJhY2spOworICBpZiAoU3RhdHVzID09 IEVGSV9TVUNDRVNTKQorICB7CiAgICAgLy8gUmVwbGFjZSB0aGUgcHJldmlvdXMgY2FsbCBiYWNr IGZ1bmN0aW9uCiAgICAgZ09sZENhbGxCYWNrID0gQmNDYWxsQmFjay0+Q2FsbGJhY2s7CiAgICAg QmNDYWxsQmFjay0+Q2FsbGJhY2sgPSBOZXdDYWxsQmFjazsKLSAgfSBlbHNlIHsKKyAgfQorICBl bHNlCisgIHsKICAgICAvLwogICAgIC8vIEluc3RhbGwgYSBjYWxsIGJhY2sgcHJvdG9jb2wKICAg ICAvLwotICAgIFN0YXR1cyA9IGd0QlMtPkluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoCi0gICAg ICAgICAgICAgICAgICAgICAmZ0hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICZnQmxhY2tC b3hFZmlQeGVCYXNlQ29kZUNhbGxiYWNrUHJvdG9jb2xHdWlkLAotICAgICAgICAgICAgICAgICAg ICAgRUZJX05BVElWRV9JTlRFUkZBQ0UsCi0gICAgICAgICAgICAgICAgICAgICAmTmV3Q2FsbEJh Y2tQcm90b2NvbAotICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBpZiAoRUZJX0VSUk9SKFN0 YXR1cykpIHsKKyAgICBTdGF0dXMgPSBndEJTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UoCisg ICAgICAgICZnSGFuZGxlLAorICAgICAgICAmZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVDYWxsYmFj a1Byb3RvY29sR3VpZCwKKyAgICAgICAgRUZJX05BVElWRV9JTlRFUkZBQ0UsCisgICAgICAgICZO ZXdDYWxsQmFja1Byb3RvY29sKTsKKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpCisgICAgewog ICAgICAgcmV0dXJuIFN0YXR1czsKICAgICB9CiAgICAgLy8KICAgICAvLyBFbmFibGUgUFhFIHRv IHVzZSBjYWxsIGJhY2sKICAgICAvLwogICAgIE5ld01ha2VDYWxsYmFjayA9IFRSVUU7Ci0gICAg U3RhdHVzID0gQmNJbnRlcmZhY2UtPlNldFBhcmFtZXRlcnMgKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEJjSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgJk5ld01ha2VDYWxsYmFjawotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7Ci0gICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7Ci0gICAgICBndEJTLT5V bmluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoCi0gICAgICAgICAgICAgIGdIYW5kbGUsCi0gICAg ICAgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZUNhbGxiYWNrUHJvdG9jb2xHdWlkLAot ICAgICAgICAgICAgICAmTmV3Q2FsbEJhY2tQcm90b2NvbAotICAgICAgICAgICAgICApOworICAg IFN0YXR1cyA9IEJjSW50ZXJmYWNlLT5TZXRQYXJhbWV0ZXJzKAorICAgICAgICBCY0ludGVyZmFj ZSwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAg TlVMTCwKKyAgICAgICAgJk5ld01ha2VDYWxsYmFjayk7CisgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQorICAgIHsKKyAgICAgIGd0QlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlKAorICAg ICAgICAgIGdIYW5kbGUsCisgICAgICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJh Y2tQcm90b2NvbEd1aWQsCisgICAgICAgICAgJk5ld0NhbGxCYWNrUHJvdG9jb2wpOwogICAgICAg cmV0dXJuIFN0YXR1czsKICAgICB9CiAgIH0KQEAgLTcxOCw0OCArNTA2LDUwIEBAIEhvb2tSZXR1 cm5BYm9ydENhbGxCYWNrICgKIH0KIAogRUZJX1NUQVRVUwotVW5Ib29rUmV0dXJuQWJvcnRDYWxs QmFjayAoCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICAgICAgICAgICAgKkJjSW50 ZXJmYWNlCi0gICkKK1VuSG9va1JldHVybkFib3J0Q2FsbEJhY2soCisgICAgSU4gRUZJX1BYRV9C QVNFX0NPREVfUFJPVE9DT0wgKkJjSW50ZXJmYWNlKQogewotICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7CisgIEVGSV9TVEFUVVMgU3RhdHVzOwogICBFRklfUFhF X0JBU0VfQ09ERV9DQUxMQkFDS19QUk9UT0NPTCAqQmNDYWxsQmFjazsKLSAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTmV3TWFrZUNhbGxiYWNrOworICBCT09MRUFOIE5ld01h a2VDYWxsYmFjazsKIAotICBpZiAoZ09sZENhbGxCYWNrICE9IE5VTEwpIHsKLSAgICBTdGF0dXMg PSBndEJTLT5IYW5kbGVQcm90b2NvbCAoCi0gICAgICAgICAgICAgICAgICAgICBnSGFuZGxlLAot ICAgICAgICAgICAgICAgICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJhY2tQcm90 b2NvbEd1aWQsCi0gICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmQmNDYWxsQmFjawotICAg ICAgICAgICAgICAgICAgICAgKTsKLSAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsKKyAgaWYg KGdPbGRDYWxsQmFjayAhPSBOVUxMKQorICB7CisgICAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJv dG9jb2woCisgICAgICAgIGdIYW5kbGUsCisgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29k ZUNhbGxiYWNrUHJvdG9jb2xHdWlkLAorICAgICAgICAoVk9JRCAqKikmQmNDYWxsQmFjayk7Cisg ICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQorICAgIHsKICAgICAgIHJldHVybiBTdGF0dXM7CiAg ICAgfQogICAgIC8vIHJlc3RvcmUgdGhlIHByZXZpb3VzIGNhbGwgYmFjayBmdW5jdGlvbgogICAg IEJjQ2FsbEJhY2stPkNhbGxiYWNrID0gZ09sZENhbGxCYWNrOwogICAgIGdPbGRDYWxsQmFjayA9 IE5VTEw7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZQorICB7CiAgICAgLy8KICAgICAvLyBEaXNh YmxlIFBYRSB0byB1c2UgY2FsbCBiYWNrCiAgICAgLy8KICAgICBOZXdNYWtlQ2FsbGJhY2sgPSBG QUxTRTsKLSAgICBTdGF0dXMgPSBCY0ludGVyZmFjZS0+U2V0UGFyYW1ldGVycyAoCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgQmNJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTmV3TWFrZUNhbGxiYWNrCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsKKyAg ICBTdGF0dXMgPSBCY0ludGVyZmFjZS0+U2V0UGFyYW1ldGVycygKKyAgICAgICAgQmNJbnRlcmZh Y2UsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAg IE5VTEwsCisgICAgICAgICZOZXdNYWtlQ2FsbGJhY2spOworICAgIGlmIChFRklfRVJST1IoU3Rh dHVzKSkKKyAgICB7CiAgICAgICByZXR1cm4gU3RhdHVzOwogICAgIH0KLSAgICBTdGF0dXMgPSBn dEJTLT5Vbmluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoCi0gICAgICAgICAgICAgICAgICAgICBn SGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlQ2Fs bGJhY2tQcm90b2NvbEd1aWQsCi0gICAgICAgICAgICAgICAgICAgICAmTmV3Q2FsbEJhY2tQcm90 b2NvbAotICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp IHsKKyAgICBTdGF0dXMgPSBndEJTLT5Vbmluc3RhbGxQcm90b2NvbEludGVyZmFjZSgKKyAgICAg ICAgZ0hhbmRsZSwKKyAgICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJhY2tQcm90 b2NvbEd1aWQsCisgICAgICAgICZOZXdDYWxsQmFja1Byb3RvY29sKTsKKyAgICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpCisgICAgewogICAgICAgcmV0dXJuIFN0YXR1czsKICAgICB9CiAgIH0KQEAg LTc2OCw0NCArNTU4LDQ0IEBAIFVuSG9va1JldHVybkFib3J0Q2FsbEJhY2sgKAogfQogCiBCT09M RUFOCi1Jc1B4ZVBhY2tldFZhbGlkICgKLSAgSU4gRUZJX1BYRV9QQUNLRVRfVFlQRSAgICAgICAg IFBhY2tldFR5cGUsCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX1BBQ0tFVCAgICAqUGFja2V0Ci0g ICkKK0lzUHhlUGFja2V0VmFsaWQoCisgICAgSU4gRUZJX1BYRV9QQUNLRVRfVFlQRSBQYWNrZXRU eXBlLAorICAgIElOIEVGSV9QWEVfQkFTRV9DT0RFX1BBQ0tFVCAqUGFja2V0KQogewotICAvL0Jv b3RwT3BDb2RlCisgIC8vIEJvb3RwT3BDb2RlCiAgIHN3aXRjaCAoUGFja2V0VHlwZSkKICAgewot ICAgIGNhc2UgRUZJX1BYRV9QQUNLRVRfVFlQRV9ESENQX0RJU0NPVkVSOgotICAgICAgcmV0dXJu IFRSVUU7CisgIGNhc2UgRUZJX1BYRV9QQUNLRVRfVFlQRV9ESENQX0RJU0NPVkVSOgorICAgIHJl dHVybiBUUlVFOwogCi0gICAgY2FzZSBFRklfUFhFX1BBQ0tFVF9UWVBFX0RIQ1BfQUNLOgotICAg ICAgcmV0dXJuIFRSVUU7CisgIGNhc2UgRUZJX1BYRV9QQUNLRVRfVFlQRV9ESENQX0FDSzoKKyAg ICByZXR1cm4gVFJVRTsKIAotICAgIGNhc2UgRUZJX1BYRV9QQUNLRVRfVFlQRV9QUk9YWV9PRkZF UjoKLSAgICAgIHJldHVybiBUUlVFOworICBjYXNlIEVGSV9QWEVfUEFDS0VUX1RZUEVfUFJPWFlf T0ZGRVI6CisgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBjYXNlIEVGSV9QWEVfUEFDS0VUX1RZUEVf UFhFX0RJU0NPVkVSOgotICAgICAgcmV0dXJuIFRSVUU7CisgIGNhc2UgRUZJX1BYRV9QQUNLRVRf VFlQRV9QWEVfRElTQ09WRVI6CisgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBjYXNlIEVGSV9QWEVf UEFDS0VUX1RZUEVfUFhFX09GRkVSOgotICAgICAgcmV0dXJuIFRSVUU7CisgIGNhc2UgRUZJX1BY RV9QQUNLRVRfVFlQRV9QWEVfT0ZGRVI6CisgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBkZWZhdWx0 OgotICAgICAgcmV0dXJuIEZBTFNFOworICBkZWZhdWx0OgorICAgIHJldHVybiBGQUxTRTsKICAg fQogfQogCiBCT09MRUFOCi1Jc0J1Zlplcm9lZCAoCi0gIElOIENIQVI4ICAgICAgICAgICAgICAg ICpCdWYsCi0gIElOIFVJTlROICAgICAgICAgICAgICAgICBMZW4KLSAgKQorSXNCdWZaZXJvZWQo CisgICAgSU4gQ0hBUjggKkJ1ZiwKKyAgICBJTiBVSU5UTiBMZW4pCiB7CiAgIFVJTlROIGk7CiAK LSAgZm9yIChpPTA7IGk8TGVuOyBpKyspIHsKLSAgICBpZiAoMCAhPSAqKEJ1ZiArIGkpKSB7Cisg IGZvciAoaSA9IDA7IGkgPCBMZW47IGkrKykKKyAgeworICAgIGlmICgwICE9ICooQnVmICsgaSkp CisgICAgewogICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KICAgfQpAQCAtODEzLDEyNiArNjAz LDEyMiBAQCBJc0J1Zlplcm9lZCAoCiAgIHJldHVybiBUUlVFOwogfQogCi0KIEVGSV9TVEFUVVMK LVByaW50UHhlUGFja2V0ICgKLSAgSU4gRUZJX1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09M ICpMb2dnaW5nTGliLAotICBJTiBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRp dGxlLAotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QQUNLRVQgICAgICAgICAgKlBhY2tldAotICAp CitQcmludFB4ZVBhY2tldCgKKyAgICBJTiBFRklfVEVTVF9MT0dHSU5HX0xJQlJBUllfUFJPVE9D T0wgKkxvZ2dpbmdMaWIsCisgICAgSU4gQ0hBUjE2ICpUaXRsZSwKKyAgICBJTiBFRklfUFhFX0JB U0VfQ09ERV9QQUNLRVQgKlBhY2tldCkKIHsKLSAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUZW1wVWludDE2OworICBVSU5UMTYgVGVtcFVpbnQxNjsKIAogICBpZiAoTlVM TCA9PSBQYWNrZXQgfHwgTlVMTCA9PSBMb2dnaW5nTGliKQogICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7CiAKICAgLy8gcHJpbnQgdGhlIHBhY2tldCB0eXBlCi0gIExPR19DSEFSMTZf QVNDSUlfREZMVChMb2dnaW5nTGliLCBUaXRsZSwgU2N0U3RyTGVuIChUaXRsZSkpOworICBMT0df Q0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgVGl0bGUsIFNjdFN0ckxlbihUaXRsZSkpOwog CiAgIC8vIHByaW50IHRoZSByYXcgcGFja2V0Ci0gIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dn aW5nTGliLCBMIltSYXcgUGFja2V0XSIsIFNjdFN0ckxlbiAoTCJbUmF3IFBhY2tldF0iKSk7Ci0g IExPR19CVUZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgKENIQVIxNiopIChQYWNrZXQtPlJhdyksMTQ3 Mi8yKTsKKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW1JhdyBQYWNrZXRd IiwgU2N0U3RyTGVuKEwiW1JhdyBQYWNrZXRdIikpOworICBMT0dfQlVGX0hFWF9ERkxUKExvZ2dp bmdMaWIsIChDSEFSMTYgKikoUGFja2V0LT5SYXcpLCAxNDcyIC8gMik7CiAKICAgVGVtcFVpbnQx NiA9IChVSU5UMTYpUGFja2V0LT5EaGNwdjQuQm9vdHBPcGNvZGU7Ci0gIExPR19DSEFSMTZfQVND SUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBPcGNvZGVdIiwgU2N0U3RyTGVuIChMIltCb290 cCBPcGNvZGVdIikpOworICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9v dHAgT3Bjb2RlXSIsIFNjdFN0ckxlbihMIltCb290cCBPcGNvZGVdIikpOwogICBMT0dfVUlOVDE2 X0hFWF9ERkxUKExvZ2dpbmdMaWIsIFRlbXBVaW50MTYpOwogCiAgIFRlbXBVaW50MTYgPSAoVUlO VDE2KVBhY2tldC0+RGhjcHY0LkJvb3RwSHdUeXBlOwotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQo TG9nZ2luZ0xpYiwgTCJbQm9vdHAgSHcgVHlwZV0iLCBTY3RTdHJMZW4gKEwiW0Jvb3RwIEh3IFR5 cGVdIikpOworICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgSHcg VHlwZV0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgSHcgVHlwZV0iKSk7CiAgIExPR19VSU5UMTZfSEVY X0RGTFQoTG9nZ2luZ0xpYiwgVGVtcFVpbnQxNik7CiAKICAgVGVtcFVpbnQxNiA9IChVSU5UMTYp UGFja2V0LT5EaGNwdjQuQm9vdHBId0FkZHJMZW47Ci0gIExPR19DSEFSMTZfQVNDSUlfREZMVChM b2dnaW5nTGliLCBMIltCb290cCBIdyBBZGRyIExlbl0iLCBTY3RTdHJMZW4gKEwiW0Jvb3RwIEh3 IEFkZHIgTGVuXSIpKTsKKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jv b3RwIEh3IEFkZHIgTGVuXSIsIFNjdFN0ckxlbihMIltCb290cCBIdyBBZGRyIExlbl0iKSk7CiAg IExPR19VSU5UMTZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgVGVtcFVpbnQxNik7CiAKICAgVGVtcFVp bnQxNiA9IChVSU5UMTYpUGFja2V0LT5EaGNwdjQuQm9vdHBHYXRlSG9wczsKLSAgTE9HX0NIQVIx Nl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEdhdGUgSG9wXSIsIFNjdFN0ckxlbiAo TCJbQm9vdHAgR2F0ZSBIb3BdIikpOworICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xp YiwgTCJbQm9vdHAgR2F0ZSBIb3BdIiwgU2N0U3RyTGVuKEwiW0Jvb3RwIEdhdGUgSG9wXSIpKTsK ICAgTE9HX1VJTlQxNl9IRVhfREZMVChMb2dnaW5nTGliLCBUZW1wVWludDE2KTsKIAotICBMT0df Q0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgSWRlbl0iLCBTY3RTdHJMZW4g KEwiW0Jvb3RwIElkZW5dIikpOworICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwg TCJbQm9vdHAgSWRlbl0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgSWRlbl0iKSk7CiAgIExPR19VSU5U MzJfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgKFBhY2tldC0+RGhjcHY0LkJvb3RwSWRlbnQpKTsKIAot ICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgU2Vjb25kc10iLCBT Y3RTdHJMZW4gKEwiW0Jvb3RwIFNlY29uZHNdIikpOwotICBMT0dfVUlOVDE2X0hFWF9ERkxUKExv Z2dpbmdMaWIsUGFja2V0LT5EaGNwdjQuQm9vdHBTZWNvbmRzKTsKKyAgTE9HX0NIQVIxNl9BU0NJ SV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIFNlY29uZHNdIiwgU2N0U3RyTGVuKEwiW0Jvb3Rw IFNlY29uZHNdIikpOworICBMT0dfVUlOVDE2X0hFWF9ERkxUKExvZ2dpbmdMaWIsIFBhY2tldC0+ RGhjcHY0LkJvb3RwU2Vjb25kcyk7CiAKLSAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdM aWIsIEwiW0Jvb3RwIEZsYWdzXSIsIFNjdFN0ckxlbiAoTCJbQm9vdHAgRmxhZ3NdIikpOwotICBM T0dfVUlOVDE2X0hFWF9ERkxUKExvZ2dpbmdMaWIsKFBhY2tldC0+RGhjcHY0LkJvb3RwRmxhZ3Mp KTsKKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEZsYWdzXSIs IFNjdFN0ckxlbihMIltCb290cCBGbGFnc10iKSk7CisgIExPR19VSU5UMTZfSEVYX0RGTFQoTG9n Z2luZ0xpYiwgKFBhY2tldC0+RGhjcHY0LkJvb3RwRmxhZ3MpKTsKIAotICBMT0dfQ0hBUjE2X0FT Q0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgQ2lBZGRyXSIsIFNjdFN0ckxlbiAoTCJbQm9v dHAgQ2lBZGRyXSIpKTsKKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jv b3RwIENpQWRkcl0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgQ2lBZGRyXSIpKTsKICAgTE9HX0lQX0hF WF9ERkxUKExvZ2dpbmdMaWIsIFBhY2tldC0+RGhjcHY0LkJvb3RwQ2lBZGRyKTsKIAotICBMT0df Q0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgWWlBZGRyXSIsIFNjdFN0ckxl biAoTCJbQm9vdHAgWWlBZGRyXSIpKTsKKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdM aWIsIEwiW0Jvb3RwIFlpQWRkcl0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgWWlBZGRyXSIpKTsKICAg TE9HX0lQX0hFWF9ERkxUKExvZ2dpbmdMaWIsIFBhY2tldC0+RGhjcHY0LkJvb3RwWWlBZGRyKTsK IAotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgU2lBZGRyXSIs IFNjdFN0ckxlbiAoTCJbQm9vdHAgU2lBZGRyXSIpKTsKKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxU KExvZ2dpbmdMaWIsIEwiW0Jvb3RwIFNpQWRkcl0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgU2lBZGRy XSIpKTsKICAgTE9HX0lQX0hFWF9ERkxUKExvZ2dpbmdMaWIsIFBhY2tldC0+RGhjcHY0LkJvb3Rw U2lBZGRyKTsKIAotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAg R2lBZGRyXSIsIFNjdFN0ckxlbiAoTCJbQm9vdHAgR2lBZGRyXSIpKTsKKyAgTE9HX0NIQVIxNl9B U0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEdpQWRkcl0iLCBTY3RTdHJMZW4oTCJbQm9v dHAgR2lBZGRyXSIpKTsKICAgTE9HX0lQX0hFWF9ERkxUKExvZ2dpbmdMaWIsIFBhY2tldC0+RGhj cHY0LkJvb3RwR2lBZGRyKTsKIAotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwg TCJbQm9vdHAgSHdBZGRyXSIsIFNjdFN0ckxlbiAoTCJbQm9vdHAgSHdBZGRyXSIpKTsKLSAgTE9H X0JVRl9IRVhfREZMVChMb2dnaW5nTGliLCAoQ0hBUjE2KikoUGFja2V0LT5EaGNwdjQuQm9vdHBT cnZOYW1lKSwgMzIpOworICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9v dHAgSHdBZGRyXSIsIFNjdFN0ckxlbihMIltCb290cCBId0FkZHJdIikpOworICBMT0dfQlVGX0hF WF9ERkxUKExvZ2dpbmdMaWIsIChDSEFSMTYgKikoUGFja2V0LT5EaGNwdjQuQm9vdHBTcnZOYW1l KSwgMzIpOwogCi0gIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBT cnZOYW1lXSIsIFNjdFN0ckxlbiAoTCJbQm9vdHAgU3J2TmFtZV0iKSk7Ci0gIExPR19CVUZfSEVY X0RGTFQoTG9nZ2luZ0xpYiwgKENIQVIxNiopKFBhY2tldC0+RGhjcHY0LkJvb3RwSHdBZGRyKSwg OCk7CisgIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBTcnZOYW1l XSIsIFNjdFN0ckxlbihMIltCb290cCBTcnZOYW1lXSIpKTsKKyAgTE9HX0JVRl9IRVhfREZMVChM b2dnaW5nTGliLCAoQ0hBUjE2ICopKFBhY2tldC0+RGhjcHY0LkJvb3RwSHdBZGRyKSwgOCk7CiAK LSAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEJvb3RGaWxlXSIs IFNjdFN0ckxlbiAoTCJbQm9vdHAgQm9vdEZpbGVdIikpOwotICBMT0dfQlVGX0hFWF9ERkxUKExv Z2dpbmdMaWIsIChDSEFSMTYqKShQYWNrZXQtPkRoY3B2NC5Cb290cEJvb3RGaWxlKSwgNjQpOwor ICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgQm9vdEZpbGVdIiwg U2N0U3RyTGVuKEwiW0Jvb3RwIEJvb3RGaWxlXSIpKTsKKyAgTE9HX0JVRl9IRVhfREZMVChMb2dn aW5nTGliLCAoQ0hBUjE2ICopKFBhY2tldC0+RGhjcHY0LkJvb3RwQm9vdEZpbGUpLCA2NCk7CiAK LSAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIE1hZ2lrXSIsIFNj dFN0ckxlbiAoTCJbQm9vdHAgTWFnaWtdIikpOworICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9n Z2luZ0xpYiwgTCJbQm9vdHAgTWFnaWtdIiwgU2N0U3RyTGVuKEwiW0Jvb3RwIE1hZ2lrXSIpKTsK ICAgTE9HX1VJTlQzMl9IRVhfREZMVChMb2dnaW5nTGliLCBQYWNrZXQtPkRoY3B2NC5EaGNwTWFn aWspOwogCiAgIHJldHVybiBFRklfU1VDQ0VTUzsKIH0KIAogRUZJX1NUQVRVUwotUHJpbnRBcnBU YWJsZSAoCi0gIElOIEVGSV9URVNUX0xPR0dJTkdfTElCUkFSWV9QUk9UT0NPTCAqTG9nZ2luZ0xp YiwKLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfTU9ERSAgICAgICAgICAgICpNb2RlCi0gICkKK1By aW50QXJwVGFibGUoCisgICAgSU4gRUZJX1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09MICpM b2dnaW5nTGliLAorICAgIElOIEVGSV9QWEVfQkFTRV9DT0RFX01PREUgKk1vZGUpCiB7Ci0gIFVJ TlROICAgICAgICAgICAgICAgICAgaSwgY250OwotICBDSEFSMTYgICAgICAgICAgICAgICAgKkJ1 ZmZlcjsKKyAgVUlOVE4gaSwgY250OworICBDSEFSMTYgKkJ1ZmZlcjsKIAotICBMb2dnaW5nTGli LT5EdW1wQnVmIChMb2dnaW5nTGliLCBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULCBMIkFycCBF bnRyeSBpcyIsIChVSU5UMzIpU2N0U3RyTGVuIChMIkFycCBFbnRyeSBpcyIpLCBFRklfRFVNUF9B U0NJSSk7CisgIExvZ2dpbmdMaWItPkR1bXBCdWYoTG9nZ2luZ0xpYiwgRUZJX1ZFUkJPU0VfTEVW RUxfREVGQVVMVCwgTCJBcnAgRW50cnkgaXMiLCAoVUlOVDMyKVNjdFN0ckxlbihMIkFycCBFbnRy eSBpcyIpLCBFRklfRFVNUF9BU0NJSSk7CiAgIGNudCA9IDA7CiAgIGZvciAoaSA9IDA7IGkgPCBF RklfUFhFX0JBU0VfQ09ERV9NQVhfQVJQX0VOVFJJRVM7IGkrKykKICAgewotICAgIGlmIChGQUxT RSA9PSBJc0J1Zlplcm9lZCAoKENIQVI4ICopKCZNb2RlLT5BcnBDYWNoZVtpXSksIHNpemVvZiAo RUZJX1BYRV9CQVNFX0NPREVfQVJQX0VOVFJZKSkpCisgICAgaWYgKEZBTFNFID09IElzQnVmWmVy b2VkKChDSEFSOCAqKSgmTW9kZS0+QXJwQ2FjaGVbaV0pLCBzaXplb2YoRUZJX1BYRV9CQVNFX0NP REVfQVJQX0VOVFJZKSkpCiAgICAgewotICAgICAgY250ICsrOworICAgICAgY250Kys7CiAgICAg ICBCdWZmZXIgPSAoQ0hBUjE2ICopKCZNb2RlLT5BcnBDYWNoZVtpXSk7Ci0gICAgICBMb2dnaW5n TGliLT5EdW1wQnVmIChMb2dnaW5nTGliLCBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULCBCdWZm ZXIsIChVSU5UMzIpU2N0U3RyTGVuIChCdWZmZXIpLCBFRklfRFVNUF9IRVgpOworICAgICAgTG9n Z2luZ0xpYi0+RHVtcEJ1ZihMb2dnaW5nTGliLCBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULCBC dWZmZXIsIChVSU5UMzIpU2N0U3RyTGVuKEJ1ZmZlciksIEVGSV9EVU1QX0hFWCk7CiAgICAgfQog ICB9CiAKICAgaWYgKGNudCA9PSBNb2RlLT5BcnBDYWNoZUVudHJpZXMpCiAgICAgcmV0dXJuIEVG SV9TVUNDRVNTOwogCi0gIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIkFycCBD YWNoZSBVbm1hdGNoZWQiLCBTY3RTdHJMZW4gKEwiQXJwIENhY2hlIFVubWF0Y2hlZCIpKTsKKyAg TE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiQXJwIENhY2hlIFVubWF0Y2hlZCIs IFNjdFN0ckxlbihMIkFycCBDYWNoZSBVbm1hdGNoZWQiKSk7CiAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7CiB9CiAKIEVGSV9TVEFUVVMKIFNldElwQW5kTWFzaygKLSAgSU4gRUZJX0lQ X0FERFJFU1MgICAgICAgKkVmaUlwLAotICBJTiBFRklfSVBfQUREUkVTUyAgICAgICAqRWZpTWFz aywKLSAgSU4gVUlOVDMyICAgICAgICAgICAgICAgTnVtSXB2NCwKLSAgSU4gVUlOVDMyICAgICAg ICAgICAgICAgTnVtTWFzawotICApCisgICAgSU4gRUZJX0lQX0FERFJFU1MgKkVmaUlwLAorICAg IElOIEVGSV9JUF9BRERSRVNTICpFZmlNYXNrLAorICAgIElOIFVJTlQzMiBOdW1JcHY0LAorICAg IElOIFVJTlQzMiBOdW1NYXNrKQogewotICBFRklfU1RBVFVTICAgICAgICAgICAgIFN0YXR1czsK KyAgRUZJX1NUQVRVUyBTdGF0dXM7CiAKICAgaWYgKE5VTEwgIT0gRWZpSXApCiAgIHsKLSAgICBT dGF0dXMgPSBTZXRJcEFkZHJlc3MgKEVmaUlwLCBOdW1JcHY0KTsKKyAgICBTdGF0dXMgPSBTZXRJ cEFkZHJlc3MoRWZpSXAsIE51bUlwdjQpOwogICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkKICAg ICAgIHJldHVybiBTdGF0dXM7CiAgIH0KIAogICBpZiAoTlVMTCAhPSBFZmlNYXNrKQogICB7Ci0g ICAgU3RhdHVzID0gU2V0SXBBZGRyZXNzIChFZmlNYXNrLCBOdW1NYXNrKTsKKyAgICBTdGF0dXMg PSBTZXRJcEFkZHJlc3MoRWZpTWFzaywgTnVtTWFzayk7CiAgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQogICAgICAgcmV0dXJuIFN0YXR1czsKICAgfQpAQCAtOTQwLDEwICs3MjYsOSBAQCBTZXRJ cEFuZE1hc2soCiB9CiAKIEVGSV9TVEFUVVMKLVNldElwQWRkcmVzcyAoCi0gIElOIE9VVCBFRklf SVBfQUREUkVTUyAqRWZpSXAsCi0gIElOICAgICBVSU5UMzIgICAgICAgICBOdW1JcHY0Ci0gICkK K1NldElwQWRkcmVzcygKKyAgICBJTiBPVVQgRUZJX0lQX0FERFJFU1MgKkVmaUlwLAorICAgIElO IFVJTlQzMiBOdW1JcHY0KQogewogICBpZiAoTlVMTCA9PSBFZmlJcCkKICAgICByZXR1cm4gRUZJ X0lOVkFMSURfUEFSQU1FVEVSOwpAQCAtOTU3LDIxICs3NDIsMjQgQEAgU2V0SXBBZGRyZXNzICgK IH0KIAogQk9PTEVBTgotSXNJcE1hc2tFcXVhbCAoCi0gIElOIEVGSV9JUF9BRERSRVNTICpOZXdT dGF0aW9uSXAsCi0gIElOIEVGSV9JUF9BRERSRVNTICpOZXdTdWJuZXRNYXNrLAotICBJTiBFRklf SVBfQUREUkVTUyAqT2xkU3RhdGlvbklwLAotICBJTiBFRklfSVBfQUREUkVTUyAqT2xkU3VibmV0 TWFzawotICApCitJc0lwTWFza0VxdWFsKAorICAgIElOIEVGSV9JUF9BRERSRVNTICpOZXdTdGF0 aW9uSXAsCisgICAgSU4gRUZJX0lQX0FERFJFU1MgKk5ld1N1Ym5ldE1hc2ssCisgICAgSU4gRUZJ X0lQX0FERFJFU1MgKk9sZFN0YXRpb25JcCwKKyAgICBJTiBFRklfSVBfQUREUkVTUyAqT2xkU3Vi bmV0TWFzaykKIHsKLSAgaWYgKE5VTEwgIT0gTmV3U3RhdGlvbklwKXsKLSAgICBpZiAoRkFMU0Ug PT0gKDAgPT0gU2N0Q29tcGFyZU1lbSAoTmV3U3RhdGlvbklwLCBPbGRTdGF0aW9uSXAsIHNpemVv ZiAoRUZJX0lQX0FERFJFU1MpKSkpIHsKKyAgaWYgKE5VTEwgIT0gTmV3U3RhdGlvbklwKQorICB7 CisgICAgaWYgKEZBTFNFID09ICgwID09IFNjdENvbXBhcmVNZW0oTmV3U3RhdGlvbklwLCBPbGRT dGF0aW9uSXAsIHNpemVvZihFRklfSVBfQUREUkVTUykpKSkKKyAgICB7CiAgICAgICByZXR1cm4g RkFMU0U7CiAgICAgfQogICB9CiAKLSAgaWYgKE5VTEwgIT0gTmV3U3VibmV0TWFzayl7Ci0gICAg aWYgKEZBTFNFID09ICgwID09IFNjdENvbXBhcmVNZW0gKE5ld1N1Ym5ldE1hc2ssIE9sZFN1Ym5l dE1hc2ssIHNpemVvZiAoRUZJX0lQX0FERFJFU1MpKSkpeworICBpZiAoTlVMTCAhPSBOZXdTdWJu ZXRNYXNrKQorICB7CisgICAgaWYgKEZBTFNFID09ICgwID09IFNjdENvbXBhcmVNZW0oTmV3U3Vi bmV0TWFzaywgT2xkU3VibmV0TWFzaywgc2l6ZW9mKEVGSV9JUF9BRERSRVNTKSkpKQorICAgIHsK ICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAgIH0KQEAgLTk3OSw1NSArNzY3LDU5IEBAIElz SXBNYXNrRXF1YWwgKAogfQogCiBFRklfU1RBVFVTCi1Db3B5UHhlUGFja2V0ICgKLSAgSU4gRUZJ X1BYRV9CQVNFX0NPREVfUEFDS0VUICpEZXN0UGFja2V0LAotICBJTiBFRklfUFhFX0JBU0VfQ09E RV9QQUNLRVQgKlNyY1BhY2tldAotICApCitDb3B5UHhlUGFja2V0KAorICAgIElOIEVGSV9QWEVf QkFTRV9DT0RFX1BBQ0tFVCAqRGVzdFBhY2tldCwKKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9Q QUNLRVQgKlNyY1BhY2tldCkKIHsKLSAgaWYgKE5VTEwgPT0gRGVzdFBhY2tldCkgeworICBpZiAo TlVMTCA9PSBEZXN0UGFja2V0KQorICB7CiAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOwogICB9CiAK LSAgaWYgKE5VTEwgPT0gU3JjUGFja2V0KSB7CisgIGlmIChOVUxMID09IFNyY1BhY2tldCkKKyAg ewogICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7CiAgIH0KIAotICBTY3RDb3B5TWVt IChEZXN0UGFja2V0LCBTcmNQYWNrZXQsIHNpemVvZiAoRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VU KSk7CisgIFNjdENvcHlNZW0oRGVzdFBhY2tldCwgU3JjUGFja2V0LCBzaXplb2YoRUZJX1BYRV9C QVNFX0NPREVfUEFDS0VUKSk7CiAgIHJldHVybiBFRklfU1VDQ0VTUzsKIH0KIAogQk9PTEVBTgot SXNQeGVQYWNrZXRFcXVhbCAoCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX1BBQ0tFVCAqRGVzdFBh Y2tldCwKLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VUICpTcmNQYWNrZXQKLSAgKQorSXNQ eGVQYWNrZXRFcXVhbCgKKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QQUNLRVQgKkRlc3RQYWNr ZXQsCisgICAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VUICpTcmNQYWNrZXQpCiB7Ci0gIGlm IChOVUxMID09IERlc3RQYWNrZXQgJiYgTlVMTCA9PSBTcmNQYWNrZXQpIHsKKyAgaWYgKE5VTEwg PT0gRGVzdFBhY2tldCAmJiBOVUxMID09IFNyY1BhY2tldCkKKyAgewogICAgIHJldHVybiBUUlVF OwogICB9Ci0gIGlmICgwPT1TY3RDb21wYXJlTWVtIChEZXN0UGFja2V0LCBTcmNQYWNrZXQsIHNp emVvZiAoRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VUKSkpeworICBpZiAoMCA9PSBTY3RDb21wYXJl TWVtKERlc3RQYWNrZXQsIFNyY1BhY2tldCwgc2l6ZW9mKEVGSV9QWEVfQkFTRV9DT0RFX1BBQ0tF VCkpKQorICB7CiAgICAgcmV0dXJuIFRSVUU7CiAgIH0KICAgcmV0dXJuIEZBTFNFOwogfQogCiBC T09MRUFOCi1Jc0lwRmlsdGVyRXF1YWwgKAotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9JUF9GSUxU RVIgKlNyY0lwRmlsdGVyLAotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9JUF9GSUxURVIgKkRzdElw RmlsdGVyCi0gICkKK0lzSXBGaWx0ZXJFcXVhbCgKKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9J UF9GSUxURVIgKlNyY0lwRmlsdGVyLAorICAgIElOIEVGSV9QWEVfQkFTRV9DT0RFX0lQX0ZJTFRF UiAqRHN0SXBGaWx0ZXIpCiB7Ci0gIGlmIChOVUxMID09IFNyY0lwRmlsdGVyICYmIE5VTEwgPT0g RHN0SXBGaWx0ZXIpIHsKKyAgaWYgKE5VTEwgPT0gU3JjSXBGaWx0ZXIgJiYgTlVMTCA9PSBEc3RJ cEZpbHRlcikKKyAgewogICAgIHJldHVybiBUUlVFOwogICB9CiAKICAgaWYgKE5VTEwgIT0gU3Jj SXBGaWx0ZXIgJiYgTlVMTCAhPSBEc3RJcEZpbHRlcikKICAgewotICAgIGlmIChTcmNJcEZpbHRl ci0+SXBDbnQgIT0gRHN0SXBGaWx0ZXItPklwQ250KSB7CisgICAgaWYgKFNyY0lwRmlsdGVyLT5J cENudCAhPSBEc3RJcEZpbHRlci0+SXBDbnQpCisgICAgewogICAgICAgcmV0dXJuIEZBTFNFOwog ICAgIH0KIAotICAgIGlmICgwPT1TY3RDb21wYXJlTWVtIChTcmNJcEZpbHRlci0+SXBMaXN0LCBE c3RJcEZpbHRlci0+SXBMaXN0LCBzaXplb2YgKEVGSV9JUF9BRERSRVNTKSAqIFNyY0lwRmlsdGVy LT5JcENudCkpeworICAgIGlmICgwID09IFNjdENvbXBhcmVNZW0oU3JjSXBGaWx0ZXItPklwTGlz dCwgRHN0SXBGaWx0ZXItPklwTGlzdCwgc2l6ZW9mKEVGSV9JUF9BRERSRVNTKSAqIFNyY0lwRmls dGVyLT5JcENudCkpCisgICAgewogICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogICB9CkBAIC0x MDM1LDcxICs4MjcsMTY3IEBAIElzSXBGaWx0ZXJFcXVhbCAoCiB9CiAKIEVGSV9TVEFUVVMKLUxv Z1VkcFBhY2tldCAoCi0gIElOIEVGSV9URVNUX0xPR0dJTkdfTElCUkFSWV9QUk9UT0NPTCAqTG9n Z2luZ0xpYiwKLSAgSU4gRUZJX0lQX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICpEZXN0SXAs Ci0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX1VEUF9QT1JUICAgICAgICAqRGVzdFBvcnQsCi0gIElO IEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAqU3JjSXAsCi0gIElOIEVGSV9QWEVf QkFTRV9DT0RFX1VEUF9QT1JUICAgICAgICAqU3JjUG9ydCwKLSAgSU4gVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCdWZmZXJTaXplLAotICBJTiBWT0lEICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKkJ1ZmZlclB0cgotICApCitMb2dVZHBQYWNrZXQoCisgICAgSU4gRUZJ X1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09MICpMb2dnaW5nTGliLAorICAgIElOIEVGSV9J UF9BRERSRVNTICpEZXN0SXAsCisgICAgSU4gRUZJX1BYRV9CQVNFX0NPREVfVURQX1BPUlQgKkRl c3RQb3J0LAorICAgIElOIEVGSV9JUF9BRERSRVNTICpTcmNJcCwKKyAgICBJTiBFRklfUFhFX0JB U0VfQ09ERV9VRFBfUE9SVCAqU3JjUG9ydCwKKyAgICBJTiBVSU5UTiBCdWZmZXJTaXplLAorICAg IElOIFZPSUQgKkJ1ZmZlclB0cikKIHsKLSAgaWYgKE5VTEwhPURlc3RJcCkKKyAgaWYgKE5VTEwg IT0gRGVzdElwKQogICB7Ci0gICAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwi W0Rlc3QgSVBdIiwgU2N0U3RyTGVuIChMIltEZXN0IElQXSIpKTsKLSAgICAvL0xPR19JUF9IRVhf REZMVCAoTG9nZ2luZ0xpYiwgRGVzdElwLT52NC5BZGRyKTsKLSAgICBMT0dfQlVGX0hFWF9ERkxU KExvZ2dpbmdMaWIsIChDSEFSMTYqKSZEZXN0SXAsIHNpemVvZiAoRUZJX0lQX0FERFJFU1MpLzIp OworICAgIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltEZXN0IElQXSIsIFNj dFN0ckxlbihMIltEZXN0IElQXSIpKTsKKyAgICAvLyBMT0dfSVBfSEVYX0RGTFQgKExvZ2dpbmdM aWIsIERlc3RJcC0+djQuQWRkcik7CisgICAgTE9HX0JVRl9IRVhfREZMVChMb2dnaW5nTGliLCAo Q0hBUjE2ICopJkRlc3RJcCwgc2l6ZW9mKEVGSV9JUF9BRERSRVNTKSAvIDIpOwogICB9CiAKICAg aWYgKE5VTEwgIT0gRGVzdFBvcnQpCiAgIHsKLSAgICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9n Z2luZ0xpYiwgTCJbRGVzdCBQb3J0XSIsIFNjdFN0ckxlbiAoTCJbRGVzdCBQb3J0XSIpKTsKKyAg ICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbRGVzdCBQb3J0XSIsIFNjdFN0 ckxlbihMIltEZXN0IFBvcnRdIikpOwogICAgIExPR19VSU5UMTZfSEVYX0RGTFQoTG9nZ2luZ0xp YiwgKkRlc3RQb3J0KTsKICAgfQogCiAgIGlmIChOVUxMICE9IFNyY0lwKQogICB7Ci0gICAgTE9H X0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW1NyYyBJUF0iLCBTY3RTdHJMZW4gKEwi W1NyYyBJUF0iKSk7Ci0gICAgLy9MT0dfSVBfSEVYX0RGTFQgKExvZ2dpbmdMaWIsIFNyY0lwLT52 NC5BZGRyKTsKLSAgICBMT0dfQlVGX0hFWF9ERkxUKExvZ2dpbmdMaWIsIChDSEFSMTYqKSZTcmNJ cCwgc2l6ZW9mIChFRklfSVBfQUREUkVTUykvMik7CisgICAgTE9HX0NIQVIxNl9BU0NJSV9ERkxU KExvZ2dpbmdMaWIsIEwiW1NyYyBJUF0iLCBTY3RTdHJMZW4oTCJbU3JjIElQXSIpKTsKKyAgICAv LyBMT0dfSVBfSEVYX0RGTFQgKExvZ2dpbmdMaWIsIFNyY0lwLT52NC5BZGRyKTsKKyAgICBMT0df QlVGX0hFWF9ERkxUKExvZ2dpbmdMaWIsIChDSEFSMTYgKikmU3JjSXAsIHNpemVvZihFRklfSVBf QUREUkVTUykgLyAyKTsKICAgfQogCiAgIGlmIChOVUxMICE9IFNyY1BvcnQpCiAgIHsKLSAgICBM T0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbU3JjIFBvcnRdIiwgU2N0U3RyTGVu IChMIltTcmMgUG9ydF0iKSk7CisgICAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIs IEwiW1NyYyBQb3J0XSIsIFNjdFN0ckxlbihMIltTcmMgUG9ydF0iKSk7CiAgICAgTE9HX1VJTlQx Nl9IRVhfREZMVChMb2dnaW5nTGliLCAqU3JjUG9ydCk7CiAgIH0KLSAgaWYgKDAhPUJ1ZmZlclNp emUpCisgIGlmICgwICE9IEJ1ZmZlclNpemUpCiAgIHsKLSAgICBMT0dfQ0hBUjE2X0FTQ0lJX0RG TFQoTG9nZ2luZ0xpYiwgTCJSZWNlaXZlZCBVRFAgUGFja2V0IiwgU2N0U3RyTGVuIChMIlJlY2Vp dmVkIFVEUCBQYWNrZXQiKSk7CisgICAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIs IEwiUmVjZWl2ZWQgVURQIFBhY2tldCIsIFNjdFN0ckxlbihMIlJlY2VpdmVkIFVEUCBQYWNrZXQi KSk7CiAgICAgTE9HX0JVRl9IRVhfREZMVChMb2dnaW5nTGliLCBCdWZmZXJQdHIsIEJ1ZmZlclNp emUpOwogICB9CiAgIHJldHVybiBFRklfU1VDQ0VTUzsKIH0KIAogRUZJX1NUQVRVUwotTG9nQ2hh cjhTdHJpbmcgKAotICBJTiBFRklfVEVTVF9MT0dHSU5HX0xJQlJBUllfUFJPVE9DT0wgICAgICAg ICAgICpMb2dnaW5nTGliLAotICBJTiBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpCdWZmZXIsCi0gIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExlbgotICApCitMb2dDaGFyOFN0cmluZygKKyAgICBJTiBFRklfVEVTVF9M T0dHSU5HX0xJQlJBUllfUFJPVE9DT0wgKkxvZ2dpbmdMaWIsCisgICAgSU4gQ0hBUjggKkJ1ZmZl ciwKKyAgICBJTiBVSU5UTiBMZW4pCiB7Ci0gIEVGSV9TVEFUVVMgICAgICAgICAgIFN0YXR1czsK LSAgQ0hBUjE2ICAgICAgICAgICAgICAqVGVtcEJ1ZmZlcjsKKyAgRUZJX1NUQVRVUyBTdGF0dXM7 CisgIENIQVIxNiAqVGVtcEJ1ZmZlcjsKIAotICBpZiAoTlVMTCA9PSBCdWZmZXIpIHsKKyAgaWYg KE5VTEwgPT0gQnVmZmVyKQorICB7CiAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsK ICAgfQogCi0gIFN0YXR1cyA9IGd0QlMtPkFsbG9jYXRlUG9vbCAoRWZpUnVudGltZVNlcnZpY2Vz RGF0YSwgTGVuICogc2l6ZW9mIChDSEFSMTYpLCAoVk9JRCAqKikgJlRlbXBCdWZmZXIpOwotICBp ZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsKKyAgU3RhdHVzID0gZ3RCUy0+QWxsb2NhdGVQb29sKEVm aVJ1bnRpbWVTZXJ2aWNlc0RhdGEsIExlbiAqIHNpemVvZihDSEFSMTYpLCAoVk9JRCAqKikmVGVt cEJ1ZmZlcik7CisgIGlmIChFRklfRVJST1IoU3RhdHVzKSkKKyAgewogICAgIHJldHVybiBTdGF0 dXM7CiAgIH0KLSAgU2N0WmVyb01lbSAoJlRlbXBCdWZmZXIsIExlbiAqIHNpemVvZiAoQ0hBUjE2 KSk7CisgIFNjdFplcm9NZW0oJlRlbXBCdWZmZXIsIExlbiAqIHNpemVvZihDSEFSMTYpKTsKIAot ICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQgKExvZ2dpbmdMaWIsIFRlbXBCdWZmZXIsIExlbik7Cisg IExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBUZW1wQnVmZmVyLCBMZW4pOwogCi0g IGd0QlMtPkZyZWVQb29sIChUZW1wQnVmZmVyKTsKKyAgZ3RCUy0+RnJlZVBvb2woVGVtcEJ1ZmZl cik7CiAgIHJldHVybiBFRklfU1VDQ0VTUzsKIH0KKworRUZJX1NUQVRVUyBMb2NhdGVEZXZpY2VQ YXRoRnJvbUJjSW50ZXJmYWNlKElOIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICpCY0ludGVy ZmFjZTIsIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKkRldmljZVBhdGgsIElOIEVGSV9T VEFOREFSRF9URVNUX0xJQlJBUllfUFJPVE9DT0wgKlN0YW5kYXJkTGliKQoreworICBFRklfU1RB VFVTIFN0YXR1czsKKworICBVSU5UTiBOb0hhbmRsZXMsIEluZGV4OworICBFRklfSEFORExFICpI YW5kbGVCdWZmZXI7CisgIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICpPdGhlckJjSW50ZXJm YWNlMjsKKworICAvLworICAvLyBMb2NhdGUgdGhlIEhhbmRsZSB0aGF0IHRoZSBCY0ludGVyZmFj ZSBpcyBib3VuZCB0bworICAvLworICBTdGF0dXMgPSBndEJTLT5Mb2NhdGVIYW5kbGVCdWZmZXIo CisgICAgICBCeVByb3RvY29sLAorICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlUHJvdG9j b2xHdWlkLAorICAgICAgTlVMTCwKKyAgICAgICZOb0hhbmRsZXMsCisgICAgICAmSGFuZGxlQnVm ZmVyKTsKKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQorICB7CisgICAgU3RhbmRhcmRMaWItPlJl Y29yZEFzc2VydGlvbigKKyAgICAgICAgU3RhbmRhcmRMaWIsCisgICAgICAgIEVGSV9URVNUX0FT U0VSVElPTl9GQUlMRUQsCisgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLAorICAgICAg ICBMIkJTLkxvY2F0ZUhhbmRsZSAtIExvY2F0ZUhhbmRsZSIsCisgICAgICAgIEwiJWE6JWQ6U3Rh dHVzIC0gJXIiLAorICAgICAgICBfX0ZJTEVfXywKKyAgICAgICAgKFVJTlROKV9fTElORV9fLAor ICAgICAgICBTdGF0dXMpOworICAgIHJldHVybiBTdGF0dXM7CisgIH0KKworICBpZiAoTm9IYW5k bGVzIDw9IDApCisgIHsKKyAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uKAorICAgICAg ICBTdGFuZGFyZExpYiwKKyAgICAgICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwKKyAgICAg ICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsCisgICAgICAgIEwiQlMuTG9jYXRlSGFuZGxlIC0g TG9jYXRlSGFuZGxlIiwKKyAgICAgICAgTCIlYTolZDpEZXZpY2UgRXJyb3IiLAorICAgICAgICBf X0ZJTEVfXywKKyAgICAgICAgKFVJTlROKV9fTElORV9fKTsKKyAgICByZXR1cm4gRUZJX0RFVklD RV9FUlJPUjsKKyAgfQorCisgIC8vCisgIC8vIEZpbmQgdGhlIGV4YWN0IGhhbmRsZSB0aGF0IEJj SW50ZXJmYWNlIGJvdW5kIHRvCisgIC8vCisgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IE5vSGFu ZGxlczsgSW5kZXgrKykKKyAgeworICAgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKAor ICAgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhdLAorICAgICAgICAmZ0JsYWNrQm94RWZpUHhlQmFz ZUNvZGVQcm90b2NvbEd1aWQsCisgICAgICAgIChWT0lEICoqKSAmT3RoZXJCY0ludGVyZmFjZTIp OworICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkKKyAgICB7CisgICAgICBTdGFuZGFyZExpYi0+ UmVjb3JkQXNzZXJ0aW9uKAorICAgICAgICAgIFN0YW5kYXJkTGliLAorICAgICAgICAgIEVGSV9U RVNUX0FTU0VSVElPTl9GQUlMRUQsCisgICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQs CisgICAgICAgICAgTCJCUy5IYW5kbGVQcm90b2NvbCAtIEhhbmRsZVByb3RvY29sIiwKKyAgICAg ICAgICBMIiVhOiVkOlN0YXR1cyAtICVyIiwKKyAgICAgICAgICBfX0ZJTEVfXywKKyAgICAgICAg ICAoVUlOVE4pX19MSU5FX18sCisgICAgICAgICAgU3RhdHVzKTsKKworICAgICAgZ3RCUy0+RnJl ZVBvb2woSGFuZGxlQnVmZmVyKTsKKyAgICAgIHJldHVybiBTdGF0dXM7CisgICAgfQorCisgICAg aWYgKE90aGVyQmNJbnRlcmZhY2UyID09IEJjSW50ZXJmYWNlMikKKyAgICB7CisgICAgICBicmVh azsKKyAgICB9CisgIH0KKworICAvLworICAvLyBMb2NhdGUgdGhlIExvYWRlZCBJbWFnZSBEZXZp Y2VQYXRoIFByb3RvY29sIGJvdW5kIHRvIFBYRV9CQVNFX0NPREUgUHJvdG9jb2wKKyAgLy8KKyAg aWYgKEluZGV4ID49IE5vSGFuZGxlcykKKyAgeworICAgIC8vCisgICAgLy8gTm8gSGFuZGxlIEZv dW5kISEKKyAgICAvLworICAgIGd0QlMtPkZyZWVQb29sKEhhbmRsZUJ1ZmZlcik7CisgICAgcmV0 dXJuIEVGSV9ERVZJQ0VfRVJST1I7CisgIH0KKworICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90 b2NvbCgKKyAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sCisgICAgICAmZ0JsYWNrQm94RWZpRGV2 aWNlUGF0aFByb3RvY29sR3VpZCwKKyAgICAgIChWT0lEICoqKSBEZXZpY2VQYXRoKTsKKworICBn dEJTLT5GcmVlUG9vbChIYW5kbGVCdWZmZXIpOworICByZXR1cm4gU3RhdHVzOworfQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2Fz ZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3 b3JrQkJUZXN0Q29uZm9ybWFuY2UuYyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0 Q29uZm9ybWFuY2UuYwppbmRleCBlNzNjN2NlYmNiY2YuLmIxYjkwMDUwNTliYiAxMDA2NDQKLS0t IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZU5ldHdv cmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3RDb25mb3JtYW5jZS5jCisrKyBiL3Vl Zmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0Js YWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0Q29uZm9ybWFuY2UuYwpAQCAtNTQsNiArNTQs OCBAQCBCQlRlc3RTdGFydENvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TSU1QTEVfTkVUV09SS19Q Uk9UT0NPTCAgICAgICAgICAgKlNucEludGVyZmFjZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19T VEFURSAgICAgICAgICAgICAgU3RhdGUxLCBTdGF0ZTI7DQogDQorICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBT dGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZQ0KICAgLy8NCkBAIC03Miw2ICs3NCwyMyBAQCBCQlRl c3RTdGFydENvbmZvcm1hbmNlVGVzdCAoCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJ TVBMRV9ORVRXT1JLX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KIA0KKyAgU3RhdHVzPUxv Y2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucEludGVyZmFjZSwmRGV2aWNlUGF0aCxT dGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmlj ZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3Ry IChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFu ZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxU LA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2 aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gQ2hlY2sgd2hldGhl ciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMgRWZpU2ltcGxlTmV0d29ya1N0YXJ0 ZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUgdG8gRWZpU2ltcGxlTmV0d29ya1N0 YXJ0ZWQuDQpAQCAtMTYwLDcgKzE3OSw4IEBAIEJCVGVzdFN0b3BDb25mb3JtYW5jZVRlc3QgKAog ICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQog ICBFRklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgICAgICAgICAgICpTbnBJbnRlcmZhY2U7DQog ICBFRklfU0lNUExFX05FVFdPUktfU1RBVEUgICAgICAgICAgICAgIFN0YXRlMSwgU3RhdGUyOw0K LQ0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0K KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0K ICAgLy8NCiAgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRlcmZhY2UNCiAgIC8vDQpA QCAtMTc5LDYgKzE5OSwyMyBAQCBCQlRlc3RTdG9wQ29uZm9ybWFuY2VUZXN0ICgKICAgLy8NCiAg IFNucEludGVyZmFjZSA9IChFRklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgKilDbGllbnRJbnRl cmZhY2U7DQogDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZyb21TbnBJbnRlcmZhY2UoU25w SW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJ X1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhT dHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0 aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAg ICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVG SV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2Ug UGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAg ICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2 aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0 dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAg IC8vDQogICAvLyBDaGVjayB3aGV0aGVyIHRoZSBzdGF0ZSBvZiBuZXR3b3JrIGludGVyZmFjZSBp cyBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCiAgIC8vIElmIG5vdCwgY2hhbmdlIHRoZSBzdGF0 ZSB0byBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCkBAIC0yNjYsNyArMzAzLDggQEAgQkJUZXN0 SW5pdGlhbGl6ZUNvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAg ICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NP TCAgICAgICAgICAgKlNucEludGVyZmFjZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAg ICAgICAgICAgICAgU3RhdGUxLCBTdGF0ZTI7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFy ZCBMaWJyYXJ5IEludGVyZmFjZQ0KICAgLy8NCkBAIC0yODUsNiArMzIzLDIzIEBAIEJCVGVzdElu aXRpYWxpemVDb25mb3JtYW5jZVRlc3QgKAogICAvLw0KICAgU25wSW50ZXJmYWNlID0gKEVGSV9T SU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCiANCisgIFN0YXR1cz1M b2NhdGVEZXZpY2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgs U3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZp Y2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0 ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAg ICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3Rh bmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVM VCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAg ICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0K KyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBp ZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERl dmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRo ZXIgdGhlIHN0YXRlIG9mIG5ldHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtTdG9w cGVkLg0KICAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdvcmtT dG9wcGVkLg0KQEAgLTM3Nyw3ICs0MzIsOCBAQCBCQlRlc3RSZXNldENvbmZvcm1hbmNlVGVzdCAo CiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsN CiAgIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAgICAgICAgICAgKlNucEludGVyZmFjZTsN CiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAgICAgICAgICAgICAgU3RhdGUxLCBTdGF0ZTI7 DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7 DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7 DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZQ0KICAgLy8N CkBAIC0zOTYsNiArNDUyLDIzIEBAIEJCVGVzdFJlc2V0Q29uZm9ybWFuY2VUZXN0ICgKICAgLy8N CiAgIFNucEludGVyZmFjZSA9IChFRklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgKilDbGllbnRJ bnRlcmZhY2U7DQogDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZyb21TbnBJbnRlcmZhY2Uo U25wSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0g RUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBh dGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNl UGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0K KyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAg IEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZp Y2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQor ICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAo RGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAg cmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0N CiAgIC8vDQogICAvLyBDaGVjayB3aGV0aGVyIHRoZSBzdGF0ZSBvZiBuZXR3b3JrIGludGVyZmFj ZSBpcyBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCiAgIC8vIElmIG5vdCwgY2hhbmdlIHRoZSBz dGF0ZSB0byBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCkBAIC00ODgsNyArNTYxLDggQEAgQkJU ZXN0U2h1dGRvd25Db25mb3JtYW5jZVRlc3QgKAogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAg ICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfU0lNUExFX05FVFdPUktfUFJPVE9D T0wgICAgICAgICAgICpTbnBJbnRlcmZhY2U7DQogICBFRklfU0lNUExFX05FVFdPUktfU1RBVEUg ICAgICAgICAgICAgIFN0YXRlMSwgU3RhdGUyOw0KLQ0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KICAgLy8NCiAgIC8vIEdldCB0aGUgU3RhbmRh cmQgTGlicmFyeSBJbnRlcmZhY2UNCiAgIC8vDQpAQCAtNTA3LDYgKzU4MSwyMyBAQCBCQlRlc3RT aHV0ZG93bkNvbmZvcm1hbmNlVGVzdCAoCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJ TVBMRV9ORVRXT1JLX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KIA0KKyAgU3RhdHVzPUxv Y2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucEludGVyZmFjZSwmRGV2aWNlUGF0aCxT dGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmlj ZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3Ry IChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFu ZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxU LA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2 aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gQ2hlY2sgd2hldGhl ciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMgRWZpU2ltcGxlTmV0d29ya1N0b3Bw ZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUgdG8gRWZpU2ltcGxlTmV0d29ya1N0 b3BwZWQuDQpAQCAtNTk0LDcgKzY4NSw4IEBAIEJCVGVzdFJlY2VpdmVGaWx0ZXJDb25mb3JtYW5j ZVRlc3QgKAogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlv blR5cGU7DQogICBFRklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgICAgICAgICAgICpTbnBJbnRl cmZhY2U7DQogICBFRklfTUFDX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgIE1BQzsNCi0N CisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAg IC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAg LTYxMyw2ICs3MDUsMjMgQEAgQkJUZXN0UmVjZWl2ZUZpbHRlckNvbmZvcm1hbmNlVGVzdCAoCiAg IC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJTVBMRV9ORVRXT1JLX1BST1RPQ09MICopQ2xp ZW50SW50ZXJmYWNlOw0KIA0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJm YWNlKFNucEludGVyZmFjZSwmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVz ID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZp Y2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERl dmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdl ICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAg ICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgIEwi RGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0 cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBv b2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisgICAg ICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQor ICB9DQogICAvLw0KICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRl cmZhY2UgaXMgRWZpU2ltcGxlTmV0d29ya1N0b3BwZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0 aGUgc3RhdGUgdG8gRWZpU2ltcGxlTmV0d29ya1N0b3BwZWQuDQpAQCAtODQwLDcgKzk0OSw4IEBA IEJCVGVzdFN0YXRpb25BZGRyZXNzQ29uZm9ybWFuY2VUZXN0ICgKICAgRUZJX1RFU1RfQVNTRVJU SU9OICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgRUZJX1NJTVBMRV9ORVRX T1JLX1BST1RPQ09MICAgICAgICAgICAqU25wSW50ZXJmYWNlOw0KICAgRUZJX1NJTVBMRV9ORVRX T1JLX1NUQVRFICAgICAgICAgICAgICBTdGF0ZTEsIFN0YXRlMjsNCi0NCisgIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBHZXQg dGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAgLTg1OSw2ICs5NjksMjMg QEAgQkJUZXN0U3RhdGlvbkFkZHJlc3NDb25mb3JtYW5jZVRlc3QgKAogICAvLw0KICAgU25wSW50 ZXJmYWNlID0gKEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsN CiANCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJbnRlcmZh Y2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VT Uykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNj dERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9 IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAg ICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJP U0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAl c1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAg ICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRo U3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3Rh dHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAg IC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5ldHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNp bXBsZU5ldHdvcmtTdG9wcGVkLg0KICAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVm aVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KQEAgLTk4OCw3ICsxMTE1LDggQEAgQkJUZXN0U3RhdGlz dGljc0NvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAgICAgICAg ICAgICAgU3RhdGUxLCBTdGF0ZTI7DQogICBFRklfTkVUV09SS19TVEFUSVNUSUNTICAgICAgICAg ICAgICAgIFN0YXRpc3RpY3NUYWJsZTsNCiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdGlzdGljc1NpemU7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBM aWJyYXJ5IEludGVyZmFjZQ0KICAgLy8NCkBAIC0xMDA3LDYgKzExMzUsMjMgQEAgQkJUZXN0U3Rh dGlzdGljc0NvbmZvcm1hbmNlVGVzdCAoCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJ TVBMRV9ORVRXT1JLX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KIA0KKyAgU3RhdHVzPUxv Y2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucEludGVyZmFjZSwmRGV2aWNlUGF0aCxT dGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmlj ZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3Ry IChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFu ZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxU LA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2 aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gQ2hlY2sgd2hldGhl ciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMgRWZpU2ltcGxlTmV0d29ya1N0b3Bw ZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUgdG8gRWZpU2ltcGxlTmV0d29ya1N0 b3BwZWQuDQpAQCAtMTE2NCw3ICsxMzA5LDggQEAgQkJUZXN0TUNhc3RJcFRvTWFjQ29uZm9ybWFu Y2VUZXN0ICgKICAgRUZJX1NJTVBMRV9ORVRXT1JLX1NUQVRFICAgICAgICAgICAgICBTdGF0ZTEs IFN0YXRlMjsNCiAgIEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAgICAgSVA7DQog ICBFRklfTUFDX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgIE1BQzsNCi0NCisgIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAv LyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAgLTExODMsNiAr MTMyOSwyMyBAQCBCQlRlc3RNQ2FzdElwVG9NYWNDb25mb3JtYW5jZVRlc3QgKAogICAvLw0KICAg U25wSW50ZXJmYWNlID0gKEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVy ZmFjZTsNCiANCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJ bnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklf U1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0 ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRo U3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAg ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJ X1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQ YXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAg ICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZp Y2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1 cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAg Ly8NCiAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5ldHdvcmsgaW50ZXJmYWNlIGlz IEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KICAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHN0YXRl IHRvIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KQEAgLTEyNzksNiArMTQ0Miw4IEBAIEJCVGVz dE5WRGF0YUNvbmZvcm1hbmNlVGVzdCAoCiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAgICAg ICAgICAgICAgU3RhdGUxLCBTdGF0ZTIsIFN0YXRlMzsNCiAgIFZPSUQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKkJ1ZmZlcjsNCiAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ2hlY2tQb2ludDFTdGF0ZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJk IExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAgLTEyOTcsNiArMTQ2MiwyMyBAQCBCQlRlc3RO VkRhdGFDb25mb3JtYW5jZVRlc3QgKAogICAvLw0KICAgU25wSW50ZXJmYWNlID0gKEVGSV9TSU1Q TEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCiANCisgIFN0YXR1cz1Mb2Nh dGVEZXZpY2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgsU3Rh bmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQ YXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAo RGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBT dGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRh cmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwN CisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAg ICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAg ICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAo RUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmlj ZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRoZXIg dGhlIG5ldHdvcmsgaW50ZXJmYWNlIHN1cHBvcnQgTnZEYXRhIGlmIG5vdCByZXR1cm4NCiAgIC8v DQpAQCAtMTUyNiw3ICsxNzA4LDggQEAgQkJUZXN0R2V0U3RhdHVzQ29uZm9ybWFuY2VUZXN0ICgK ICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVHhCdWY7DQogICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVycnVwdFN0YXR1czsNCiAgIC8v VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcEludGVycnVwdFN0YXR1czsN Ci0NCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsN CisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsN CiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0K QEAgLTE1NDUsNiArMTcyOCwyMyBAQCBCQlRlc3RHZXRTdGF0dXNDb25mb3JtYW5jZVRlc3QgKAog ICAvLw0KICAgU25wSW50ZXJmYWNlID0gKEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNs aWVudEludGVyZmFjZTsNCiANCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbVNucEludGVy ZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1 cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2 aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChE ZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2Fn ZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAg ICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBM IkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhT dHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQ b29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAg ICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0K KyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5ldHdvcmsgaW50 ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KICAgLy8gSWYgbm90LCBjaGFuZ2Ug dGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KQEAgLTE3MTcsNyArMTkxNyw4 IEBAIEJCVGVzdFRyYW5zbWl0Q29uZm9ybWFuY2VUZXN0ICgKICAgRUZJX01BQ19BRERSRVNTICAg ICAgICAgICAgICAgICAgICAgICBTcmNBZGRyOw0KICAgRUZJX01BQ19BRERSRVNTICAgICAgICAg ICAgICAgICAgICAgICBEZXN0QWRkcjsNCiAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHJvdG9jb2w7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAg ICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5 IEludGVyZmFjZQ0KICAgLy8NCkBAIC0xNzM2LDYgKzE5MzcsMjMgQEAgQkJUZXN0VHJhbnNtaXRD b25mb3JtYW5jZVRlc3QgKAogICAvLw0KICAgU25wSW50ZXJmYWNlID0gKEVGSV9TSU1QTEVfTkVU V09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCiANCisgIFN0YXR1cz1Mb2NhdGVEZXZp Y2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRM aWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3Ry ID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNl UGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFy ZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIs DQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAg ICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAg ICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0 YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhT dHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0 YXRlIG9mIG5ldHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KICAg Ly8gSWYgbm90LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0K QEAgLTE5OTMsNyArMjIxMSw4IEBAIEJCVGVzdFJlY2VpdmVDb25mb3JtYW5jZVRlc3QgKAogICBF RklfTUFDX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgIFNyY0FkZHI7DQogICBFRklfTUFD X0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgIERlc3RBZGRyOw0KICAgVUlOVDE2ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbDsNCi0NCisgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBHZXQgdGhl IFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAgLTIwMTIsNiArMjIzMSwyMyBA QCBCQlRlc3RSZWNlaXZlQ29uZm9ybWFuY2VUZXN0ICgKICAgLy8NCiAgIFNucEludGVyZmFjZSA9 IChFRklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQogDQorICBT dGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZyb21TbnBJbnRlcmZhY2UoU25wSW50ZXJmYWNlLCZEZXZp Y2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisg ICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQ YXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7 DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAg ICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVM X0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwN CisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAg ICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQor ICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisg ICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGVj ayB3aGV0aGVyIHRoZSBzdGF0ZSBvZiBuZXR3b3JrIGludGVyZmFjZSBpcyBFZmlTaW1wbGVOZXR3 b3JrU3RvcHBlZC4NCiAgIC8vIElmIG5vdCwgY2hhbmdlIHRoZSBzdGF0ZSB0byBFZmlTaW1wbGVO ZXR3b3JrU3RvcHBlZC4NCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JC VGVzdE1haW4uYyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9T aW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0TWFpbi5jCmluZGV4 IDkxOGZhYzdkYmQ3Zi4uMjFkMjBiODJiMDI1IDEwMDY0NAotLS0gYS91ZWZpLXNjdC9TY3RQa2cv VGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2lt cGxlTmV0d29ya0JCVGVzdE1haW4uYworKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JC VGVzdE1haW4uYwpAQCAtMzM2LDMgKzMzNiw5OSBAQCBCQlRlc3RTaW1wbGVOZXR3b3JrVW5sb2Fk ICgKICAgICAgICAgICAgKTsKIH0KIAorCitFRklfU1RBVFVTIExvY2F0ZURldmljZVBhdGhGcm9t U25wSW50ZXJmYWNlKElOIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqU25wSW50ZXJmYWNl MiwgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoqRGV2aWNlUGF0aCwgSU4gRUZJX1NUQU5E QVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAqU3RhbmRhcmRMaWIpCit7CisgIEVGSV9TVEFUVVMg U3RhdHVzOworCisgIFVJTlROIE5vSGFuZGxlcywgSW5kZXg7CisgIEVGSV9IQU5ETEUgKkhhbmRs ZUJ1ZmZlcjsKKyAgRUZJX1NJTVBMRV9ORVRXT1JLX1BST1RPQ09MICpPdGhlclNucEludGVyZmFj ZTI7CisKKyAgLy8KKyAgLy8gTG9jYXRlIHRoZSBIYW5kbGUgdGhhdCB0aGUgU25wSW50ZXJmYWNl IGlzIGJvdW5kIHRvCisgIC8vCisgIFN0YXR1cyA9IGd0QlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlcigK KyAgICAgIEJ5UHJvdG9jb2wsCisgICAgICAmZ0JsYWNrQm94RWZpU2ltcGxlTmV0d29ya1Byb3Rv Y29sR3VpZCwKKyAgICAgIE5VTEwsCisgICAgICAmTm9IYW5kbGVzLAorICAgICAgJkhhbmRsZUJ1 ZmZlcik7CisgIGlmIChFRklfRVJST1IoU3RhdHVzKSkKKyAgeworICAgIFN0YW5kYXJkTGliLT5S ZWNvcmRBc3NlcnRpb24oCisgICAgICAgIFN0YW5kYXJkTGliLAorICAgICAgICBFRklfVEVTVF9B U1NFUlRJT05fRkFJTEVELAorICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwKKyAgICAg ICAgTCJCUy5Mb2NhdGVIYW5kbGUgLSBMb2NhdGVIYW5kbGUiLAorICAgICAgICBMIiVhOiVkOlN0 YXR1cyAtICVyIiwKKyAgICAgICAgX19GSUxFX18sCisgICAgICAgIChVSU5UTilfX0xJTkVfXywK KyAgICAgICAgU3RhdHVzKTsKKyAgICByZXR1cm4gU3RhdHVzOworICB9CisKKyAgaWYgKE5vSGFu ZGxlcyA8PSAwKQorICB7CisgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbigKKyAgICAg ICAgU3RhbmRhcmRMaWIsCisgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQsCisgICAg ICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLAorICAgICAgICBMIkJTLkxvY2F0ZUhhbmRsZSAt IExvY2F0ZUhhbmRsZSIsCisgICAgICAgIEwiJWE6JWQ6RGV2aWNlIEVycm9yIiwKKyAgICAgICAg X19GSUxFX18sCisgICAgICAgIChVSU5UTilfX0xJTkVfXyk7CisgICAgcmV0dXJuIEVGSV9ERVZJ Q0VfRVJST1I7CisgIH0KKworICAvLworICAvLyBGaW5kIHRoZSBleGFjdCBoYW5kbGUgdGhhdCBT bnBJbnRlcmZhY2UgYm91bmQgdG8KKyAgLy8KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTm9I YW5kbGVzOyBJbmRleCsrKQorICB7CisgICAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2wo CisgICAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sCisgICAgICAgICZnQmxhY2tCb3hFZmlTaW1w bGVOZXR3b3JrUHJvdG9jb2xHdWlkLAorICAgICAgICAoVk9JRCAqKikgJk90aGVyU25wSW50ZXJm YWNlMik7CisgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQorICAgIHsKKyAgICAgIFN0YW5kYXJk TGliLT5SZWNvcmRBc3NlcnRpb24oCisgICAgICAgICAgU3RhbmRhcmRMaWIsCisgICAgICAgICAg RUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwKKyAgICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJl R3VpZCwKKyAgICAgICAgICBMIkJTLkhhbmRsZVByb3RvY29sIC0gSGFuZGxlUHJvdG9jb2wiLAor ICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLAorICAgICAgICAgIF9fRklMRV9fLAorICAg ICAgICAgIChVSU5UTilfX0xJTkVfXywKKyAgICAgICAgICBTdGF0dXMpOworCisgICAgICBndEJT LT5GcmVlUG9vbChIYW5kbGVCdWZmZXIpOworICAgICAgcmV0dXJuIFN0YXR1czsKKyAgICB9CisK KyAgICBpZiAoT3RoZXJTbnBJbnRlcmZhY2UyID09IFNucEludGVyZmFjZTIpCisgICAgeworICAg ICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgLy8KKyAgLy8gTG9jYXRlIHRoZSBMb2FkZWQgRGV2 aWNlUGF0aCBQcm90b2NvbCBib3VuZCB0byBTSU1QTEVfTkVUV09SSyBQcm90b2NvbAorICAvLwor ICBpZiAoSW5kZXggPj0gTm9IYW5kbGVzKQorICB7CisgICAgLy8KKyAgICAvLyBObyBIYW5kbGUg Rm91bmQhIQorICAgIC8vCisgICAgZ3RCUy0+RnJlZVBvb2woSGFuZGxlQnVmZmVyKTsKKyAgICBy ZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsKKyAgfQorCisgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVBy b3RvY29sKAorICAgICAgSGFuZGxlQnVmZmVyW0luZGV4XSwKKyAgICAgICZnQmxhY2tCb3hFZmlE ZXZpY2VQYXRoUHJvdG9jb2xHdWlkLAorICAgICAgKFZPSUQgKiopIERldmljZVBhdGgpOworCisg IGd0QlMtPkZyZWVQb29sKEhhbmRsZUJ1ZmZlcik7CisgIHJldHVybiBTdGF0dXM7Cit9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi4zNC4xCgo= -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#119437): https://edk2.groups.io/g/devel/message/119437 Mute This Topic: https://groups.io/mt/106471264/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-