From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Mon, 14 Jun 2021 16:49:05 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lsnth-0006TP-MA for lore@lore.pengutronix.de; Mon, 14 Jun 2021 16:49:05 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lsnth-0005L3-8c; Mon, 14 Jun 2021 16:49:05 +0200 Received: from mail.thorsis.com ([92.198.35.195]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lsnsi-00057B-W3 for ptxdist@pengutronix.de; Mon, 14 Jun 2021 16:48:18 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.thorsis.com (Postfix) with ESMTP id 1F13B1108 for ; Mon, 14 Jun 2021 16:48:04 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.thorsis.com Received: from mail.thorsis.com ([127.0.0.1]) by localhost (mail.thorsis.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vSNJgMUfUOfc for ; Mon, 14 Jun 2021 16:48:03 +0200 (CEST) Received: by mail.thorsis.com (Postfix, from userid 109) id DF4A21A42; Mon, 14 Jun 2021 16:48:03 +0200 (CEST) Received: from adahl by ada.ifak-system.com with local (Exim 4.92) (envelope-from ) id 1lsnsZ-0005kE-Dz for ptxdist@pengutronix.de; Mon, 14 Jun 2021 16:47:55 +0200 From: Alexander Dahl To: ptxdist@pengutronix.de Date: Mon, 14 Jun 2021 16:47:55 +0200 Message-Id: <20210614144755.22035-2-ada@thorsis.com> In-Reply-To: <20210614144755.22035-1-ada@thorsis.com> References: <20210614144755.22035-1-ada@thorsis.com> X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-1.5 required=4.0 tests=AWL,BAYES_00, PDS_OTHER_BAD_TLD,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 Subject: [ptxdist] [RFC PATCH 1/1] ppp: version bump 2.4.7 -> 2.4.9 X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false LSBpbXBvcnRlZCB0d28gcG9zdCAyLjQuOSB1cHN0cmVhbSBwYXRjaGVzCi0gaW1wb3J0ZWQgRGVi aWFuIHBhdGNoZXMgZnJvbSBwYWNrYWdlIHBwcCAoMi40LjktMSsxKQotIGFkYXB0ZWQgcHR4IHBh dGNoZXMKClNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+Ci0t LQogLi4uMDAxLWFib3J0LW9uLWVycm9ycy1pbi1zdWJkaXItYnVpbGRzLnBhdGNoIHwgICA0OCAt CiAuLi4wMDItc2NyaXB0cy1Bdm9pZC1raWxsaW5nLXdyb25nLXBwcGQucGF0Y2ggfCAgIDI5IC0K IC4uLnRlbnNpb24td2hlbi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9jdC5wYXRjaCB8ICAgMzAgLQog Li4uc2UtZXJyb3ItbWVzc2FnZS1vbi1QUFBvRS1kaXNjb25uZWN0LnBhdGNoIHwgICAzMyAtCiAu Li4vMDAwNS1TZW5kLVBBRFQtb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaCAgfCAgIDM2IC0KIC4u Lm50LWJ1ZmZlci1vdmVycnVuLW9uLXJlbW90ZS1yb3V0ZXItbi5wYXRjaCB8ICAgMzAgLQogLi4u LzAwMDctcHBwZC1GaXgtY2NwX29wdGlvbnMubXBwZS10eXBlLnBhdGNoIHwgICAzMCAtCiAuLi5l bi1jYWxjdWxhdGVkLXNpemUtaWYtYm90aC1kZWZsYXRlX2MucGF0Y2ggfCAgIDMzIC0KIC4uLmlu LWNvbW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hpLVNvbWV5YS5wYXRjaCB8ICAgMjQgLQogLi4ub3Vu dC1vbmx5LXJlbGV2YW50LWxpbmVzLWZyb20tc3lzbG9nLnBhdGNoIHwgICAyNCAtCiAuLi4taW5j bHVkZS1mcm9tLXN5cy1lcnJuby5oLXRvLWVycm5vLmgucGF0Y2ggfCAgIDMzIC0KIC4uLmxvdy11 c2Utb2YtYXJiaXRyYXJ5LWludGVyZmFjZS1uYW1lcy5wYXRjaCB8ICAyMTQgLS0KIC4uLlJlbW92 ZS11bnVzZWQtZGVjbGFyYXRpb24tb2YtdHR5bmFtZS5wYXRjaCB8ICAgMjUgLQogLi4ub3ItaW1w bGVtZW50YXRpb24taW4tcHBwb2UtZGlzY292ZXJ5LnBhdGNoIHwgICA1MiAtCiAuLi5jbHVkZS1u ZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2ggfCAgIDQ5IC0KIHBhdGNoZXMvcHBw LTIuNC43LzAwMTYtYWRhcHRpdmVfZWNob3MucGF0Y2ggICB8ICAgNzIgLQogLi4uL3BwcC0yLjQu Ny8wMDE3LU1ha2VmaWxlcy1jbGVhbnVwLnBhdGNoICAgIHwgIDI5NiAtLQogLi4uZG9lcy1ub3Qt cHJvcGVybHktY2xvc2UtZGV2LXBwcC1vbi1wLnBhdGNoIHwgICA0NCAtCiAuLi5pbmtwaWRmaWxl LWlzLW5vdC1jcmVhdGVkLXVwb24tZGV0YWMucGF0Y2ggfCAgIDQ4IC0KIC4uLnNtZXRpYy1jbGVh bnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaCB8ICAgOTAgLQogcGF0Y2hlcy9wcHAtMi40 LjcvMDAyMy1wcHBvZV9ub2Fkcy5wYXRjaCAgICAgIHwgICAyNSAtCiAuLi40LW1ha2UtX1BBVEhf Q09OTkVSUlMtd29ybGQtcmVhZGFibGUucGF0Y2ggfCAgIDI3IC0KIC4uLi8wMDI1LUNvcnJlY3Qt dW5rb3duLXVua25vd24tdHlwby5wYXRjaCAgICB8ICAgNDYgLQogLi4uLzAwMjYtcHBwb2UtY3Vz dG9tLWhvc3QtdW5pcS10YWcucGF0Y2ggICAgIHwgIDMwMiAtLQogLi4uLzAwMjctQWRkLXJlcGxh Y2VkZWZhdWx0cm91dGUtb3B0aW9uLnBhdGNoIHwgIDMyNCAtLQogLi4uLWZvci10aGUtRnJhbWVk LU1UVS1SYWRpdXMtYXR0cmlidXRlLnBhdGNoIHwgICA0MiAtCiBwYXRjaGVzL3BwcC0yLjQuNy8w MDMwLTAxOF9pcC11cF9vcHRpb24ucGF0Y2ggfCAgMTA2IC0KIC4uLi8wMDMxLXBwcC0yLjQuMi1z dHJpcE1TZG9tYWluLnBhdGNoICAgICAgICB8ICAgNDcgLQogLi4uZXhwb3J0LUNBTExfRklMRS10 by10aGUtbGluay1zY3JpcHRzLnBhdGNoIHwgICAzOCAtCiAuLi4vcHBwLTIuNC43LzAwMzMtaXB2 Ni1hY2NlcHQtcmVtb3RlLnBhdGNoICAgfCAgIDczIC0KIC4uLmJ1ZmZlci1vdmVyZmxvdy1pbi1j bGllbnRpZC5jLXJjX21hcC5wYXRjaCB8ICAgNDMgLQogLi4uMDAzNy1GaXgtYnVmZmVyLW92ZXJm bG93LWluLXJjX21rc2lkLnBhdGNoIHwgICAzNiAtCiAuLi5QLVRMUy1hdXRoZW50aWNhdGlvbi1z dXBwb3J0LWZvci1QUFAucGF0Y2ggfCAzMzgzIC0tLS0tLS0tLS0tLS0tLS0tCiAuLi4tZm9yLXRo ZS1ERVMtaW5zdGVhZC1vZi10aGUtbGliY3J5cHQucGF0Y2ggfCAgMTE1IC0KIHBhdGNoZXMvcHBw LTIuNC43L3NlcmllcyAgICAgICAgICAgICAgICAgICAgICB8ICAgNDYgLQogLi4uaWd1cmUtQWxs b3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIwLnBhdGNoIHwgICAyOCArCiAuLi50aW9uLXdpdGgt b2xkZXItZ2xpYmMtb3Ita2VybmVsLWhlYWQucGF0Y2ggfCAgIDU1ICsKIHBhdGNoZXMvcHBwLTIu NC45LzAxMDAtY2hhdF9tYW4ucGF0Y2ggICAgICAgICB8ICAgMzEgKwogLi4uLzAxMDEtcHBwZHVt cF91c2VfemxpYi5wYXRjaH0gICAgICAgICAgICAgIHwgICAyNiArLQogLi4uLzAxMDItcHBwb2F0 bV9yZXNvbHZlcl9saWdodC5wYXRjaH0gICAgICAgIHwgICAyMiArLQogcGF0Y2hlcy9wcHAtMi40 LjkvMDEwMy1wcHBvZV9ub2Fkcy5wYXRjaCAgICAgIHwgICAyMSArCiAuLi4vMDEwNC0wMTFfc2Ny aXB0c19yZWRpYWxlci5kaWZmLnBhdGNoICAgICAgfCAgMTYyICsKIC4uLi8wMTA1LXBwcC0yLjMu MTEtb2Vkb2QuZGlmLnBhdGNofSAgICAgICAgICB8ICAgNjIgKy0KIC4uLi8wMTA2LTAxMF9zY3Jp cHRzX1JFQURNRS5kaWZmLnBhdGNoICAgICAgICB8ICAgMzAgKwogcGF0Y2hlcy9wcHAtMi40Ljkv MDEwNy1ub19jcnlwdF9oYWNrLnBhdGNoICAgIHwgICA2MiArCiAuLi4vMDEwOC1yZXNvbHYuY29u Zl9ub19sb2cucGF0Y2h9ICAgICAgICAgICAgfCAgIDExICstCiAuLi4vMDEwOS16enpfY29uZmln LnBhdGNofSAgICAgICAgICAgICAgICAgICAgfCAgIDUyICstCiBwYXRjaGVzL3BwcC0yLjQuOS8w MTEwLXBwcGQtc29uYW1lLWhhY2sucGF0Y2ggfCAgIDMxICsKIC4uLjExMS1yZXBsYWNlLXZlbmRv cmVkLWhhc2gtZnVuY3Rpb25zLnBhdGNofSB8ICAyMTcgKy0KIC4uLjAwLXBwcGQtbWFrZS1tYWtl ZmlsZS1zeXNyb290LWF3YXJlLnBhdGNofSB8ICAgMzQgKy0KIC4uLnRoZS1zZWxmLW1hZGUtY29u ZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNofSB8ICAgMTAgKy0KIHBhdGNoZXMvcHBwLTIuNC45L3Nl cmllcyAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKwogcnVsZXMvcHBwLm1ha2UgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogNTMgZmlsZXMgY2hhbmdlZCwgNjM4 IGluc2VydGlvbnMoKyksIDYxMzcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0 Y2hlcy9wcHAtMi40LjcvMDAwMS1hYm9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMDItc2NyaXB0cy1Bdm9p ZC1raWxsaW5nLXdyb25nLXBwcGQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3Bw cC0yLjQuNy8wMDAzLXBwcGQtRml4LXNpZ24tZXh0ZW5zaW9uLXdoZW4tZGlzcGxheWluZy1ieXRl cy1pbi1vY3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDA0 LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMDUtU2VuZC1QQURULW9uLVBQ UG9FLWRpc2Nvbm5lY3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQu Ny8wMDA2LXBwcGQtaXB4Y3AtUHJldmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1vdGUtcm91dGVy LW4ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDA3LXBwcGQt Rml4LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNo ZXMvcHBwLTIuNC43LzAwMDgtcHBwZC1GaXgtY2NwX2NpbGVuLWNhbGN1bGF0ZWQtc2l6ZS1pZi1i b3RoLWRlZmxhdGVfYy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43 LzAwMDktRml4LWEtdHlwby1pbi1jb21tZW50Li1EaWZmLWZyb20tWXV1aWNoaS1Tb21leWEucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDEwLXBsb2ctY291bnQt b25seS1yZWxldmFudC1saW5lcy1mcm9tLXN5c2xvZy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHBhdGNoZXMvcHBwLTIuNC43LzAwMTEtQ2hhbmdlLWluY2x1ZGUtZnJvbS1zeXMtZXJybm8uaC10 by1lcnJuby5oLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAx Mi1wcHBkLWFsbG93LXVzZS1vZi1hcmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAxMy1wcHBkLVJlbW92ZS11bnVzZWQt ZGVjbGFyYXRpb24tb2YtdHR5bmFtZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMv cHBwLTIuNC43LzAwMTQtcHBwZC1Qcm92aWRlLWVycm9yLWltcGxlbWVudGF0aW9uLWluLXBwcG9l LWRpc2NvdmVyeS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAw MTUtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9zLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAxNy1NYWtlZmlsZXMt Y2xlYW51cC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMTgt QnVnLTMwNjI2MS1wcHBkLWRvZXMtbm90LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24tcC5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMTktQnVnLTI4NDM4Mi1w cHAtbGlua3BpZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMjItY29zbWV0aWMtY2xlYW51cC1vZi10aGUt cHBwb2F0bS1wbHVnaW4ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQu Ny8wMDIzLXBwcG9lX25vYWRzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAt Mi40LjcvMDAyNC1tYWtlLV9QQVRIX0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxlLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAyNS1Db3JyZWN0LXVua293bi11bmtu b3duLXR5cG8ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDI2 LXBwcG9lLWN1c3RvbS1ob3N0LXVuaXEtdGFnLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0 Y2hlcy9wcHAtMi40LjcvMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDI5LWFkZC1zdXBwb3J0LWZv ci10aGUtRnJhbWVkLU1UVS1SYWRpdXMtYXR0cmlidXRlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAzMC0wMThfaXAtdXBfb3B0aW9uLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAzMS1wcHAtMi40LjItc3RyaXBNU2RvbWFp bi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMzItZXhwb3J0 LUNBTExfRklMRS10by10aGUtbGluay1zY3JpcHRzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg cGF0Y2hlcy9wcHAtMi40LjcvMDAzMy1pcHY2LWFjY2VwdC1yZW1vdGUucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXIt b3ZlcmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBw YXRjaGVzL3BwcC0yLjQuNy8wMDM3LUZpeC1idWZmZXItb3ZlcmZsb3ctaW4tcmNfbWtzaWQucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDM4LUVBUC1UTFMtYXV0 aGVudGljYXRpb24tc3VwcG9ydC1mb3ItUFBQLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0 Y2hlcy9wcHAtMi40LjcvMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQt b2YtdGhlLWxpYmNyeXB0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40 Ljcvc2VyaWVzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjkvMDAwMS1jb25m aWd1cmUtQWxsb3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIwLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgcGF0Y2hlcy9wcHAtMi40LjkvMDAwMi1wcHBkLUZpeC1jb21waWxhdGlvbi13aXRoLW9s ZGVyLWdsaWJjLW9yLWtlcm5lbC1oZWFkLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hl cy9wcHAtMi40LjkvMDEwMC1jaGF0X21hbi5wYXRjaAogcmVuYW1lIHBhdGNoZXMve3BwcC0yLjQu Ny8wMDIwLXN1cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRj aCA9PiBwcHAtMi40LjkvMDEwMS1wcHBkdW1wX3VzZV96bGliLnBhdGNofSAoNjIlKQogcmVuYW1l IHBhdGNoZXMve3BwcC0yLjQuNy8wMDIxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBw b2F0bS1wbHVnaW4ucGF0Y2ggPT4gcHBwLTIuNC45LzAxMDItcHBwb2F0bV9yZXNvbHZlcl9saWdo dC5wYXRjaH0gKDg3JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuOS8wMTAz LXBwcG9lX25vYWRzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40Ljkv MDEwNC0wMTFfc2NyaXB0c19yZWRpYWxlci5kaWZmLnBhdGNoCiByZW5hbWUgcGF0Y2hlcy97cHBw LTIuNC43LzAwMjgtcHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2ggPT4gcHBwLTIuNC45LzAxMDUt cHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2h9ICg3NCUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0 Y2hlcy9wcHAtMi40LjkvMDEwNi0wMTBfc2NyaXB0c19SRUFETUUuZGlmZi5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC45LzAxMDctbm9fY3J5cHRfaGFjay5wYXRjaAog cmVuYW1lIHBhdGNoZXMve3BwcC0yLjQuNy8wMDM1LXJlc29sdi5jb25mX25vX2xvZy5wYXRjaCA9 PiBwcHAtMi40LjkvMDEwOC1yZXNvbHYuY29uZl9ub19sb2cucGF0Y2h9ICg1NiUpCiByZW5hbWUg cGF0Y2hlcy97cHBwLTIuNC43LzAwMzYtRGViaWFuLXNwZWNpZmljLWNoYW5nZXMucGF0Y2ggPT4g cHBwLTIuNC45LzAxMDktenp6X2NvbmZpZy5wYXRjaH0gKDYwJSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBwYXRjaGVzL3BwcC0yLjQuOS8wMTEwLXBwcGQtc29uYW1lLWhhY2sucGF0Y2gKIHJlbmFtZSBw YXRjaGVzL3twcHAtMi40LjcvMDAzOS1SZXBsYWNlLXZlbmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdp dGgtbGliY3J5cHRvLnBhdGNoID0+IHBwcC0yLjQuOS8wMTExLXJlcGxhY2UtdmVuZG9yZWQtaGFz aC1mdW5jdGlvbnMucGF0Y2h9ICg5MiUpCiByZW5hbWUgcGF0Y2hlcy97cHBwLTIuNC43LzAxMDAt cHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2ggPT4gcHBwLTIuNC45LzAyMDAt cHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2h9ICg2MyUpCiByZW5hbWUgcGF0 Y2hlcy97cHBwLTIuNC43LzAxMDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNy b3NzLWF3YXJlLnBhdGNoID0+IHBwcC0yLjQuOS8wMjAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRl LWNvbmZpZ3VyZS1jcm9zcy1hd2FyZS5wYXRjaH0gKDg3JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBw YXRjaGVzL3BwcC0yLjQuOS9zZXJpZXMKCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8w MDAxLWFib3J0LW9uLWVycm9ycy1pbi1zdWJkaXItYnVpbGRzLnBhdGNoIGIvcGF0Y2hlcy9wcHAt Mi40LjcvMDAwMS1hYm9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhNzZjZTY1Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hl cy9wcHAtMi40LjcvMDAwMS1hYm9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb206IE1hcnRpbiB2b24gR2FnZXJuIDxN YXJ0aW4udkdhZ2VybkBnbXgubmV0PgotRGF0ZTogU2F0LCA5IEF1ZyAyMDE0IDIyOjQ0OjQ1IC0w NDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFib3J0IG9uIGVycm9ycyBpbiBzdWJkaXIgYnVpbGRzCi0K LVRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBsb29wcyBkbyBub3QgY2hlY2sgdGhlIGV4aXQgc3RhdHVz IG9mIG1ha2UKLWluIHN1YmRpcnMgd2hpY2ggbGVhZHMgdG8gYG1ha2VgIHBhc3NpbmcgZXZlbiB3 aGVuIGEgc3ViZGlyIGZhaWxlZAotdG8gY29tcGlsZSBvciBpbnN0YWxsLgotCi1VUkw6IGh0dHBz Oi8vYnVncy5nZW50b28ub3JnLzMzNDcyNwotU2lnbmVkLW9mZi1ieTogTWFydGluIHZvbiBHYWdl cm4gPE1hcnRpbi52R2FnZXJuQGdteC5uZXQ+Ci1TaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdl ciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRl Ymlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hA cGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXggfCA4ICsr KystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK LQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eCBiL3BwcGQvcGx1Z2lu cy9NYWtlZmlsZS5saW51eAotaW5kZXggYWI4Y2Y1MGQ5NDcyLi44YTkwZTM5M2EwNTcgMTAwNjQ0 Ci0tLS0gYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgKLSsrKyBiL3BwcGQvcGx1Z2lucy9N YWtlZmlsZS5saW51eAotQEAgLTI3LDcgKzI3LDcgQEAgaW5jbHVkZSAuZGVwZW5kCi0gZW5kaWYK LSAKLSBhbGw6CSQoUExVR0lOUykKLS0JZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAk KE1GTEFHUykgLUMgJCRkIGFsbDsgZG9uZQotKwlmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1B S0UpICQoTUZMQUdTKSAtQyAkJGQgYWxsIHx8IGV4aXQgJCQ/OyBkb25lCi0gCi0gJS5zbzogJS5j Ci0gCSQoQ0MpIC1vICRAICQoTERGTEFHUykgJChDRkxBR1MpICReCi1AQCAtMzcsMTIgKzM3LDEy IEBAIFZFUlNJT04gPSAkKHNoZWxsIGF3ayAtRiAnIicgJy9WRVJTSU9OLyB7IHByaW50ICQkMjsg fScgLi4vcGF0Y2hsZXZlbC5oKQotIGluc3RhbGw6ICQoUExVR0lOUykKLSAJJChJTlNUQUxMKSAt ZCAkKExJQkRJUikKLSAJJChJTlNUQUxMKSAkPyAkKExJQkRJUikKLS0JZm9yIGQgaW4gJChTVUJE SVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGluc3RhbGw7IGRvbmUKLSsJZm9yIGQg aW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGluc3RhbGwgfHwgZXhp dCAkJD87IGRvbmUKLSAKLSBjbGVhbjoKLSAJcm0gLWYgKi5vICouc28gKi5hCi0tCWZvciBkIGlu ICQoU1VCRElSUyk7IGRvICQoTUFLRSkgJChNRkxBR1MpIC1DICQkZCBjbGVhbjsgZG9uZQotKwlm b3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpICQoTUZMQUdTKSAtQyAkJGQgY2xlYW4gfHwg ZXhpdCAkJD87IGRvbmUKLSAKLSBkZXBlbmQ6Ci0gCSQoQ1BQKSAtTSAkKENGTEFHUykgKi5jID4u ZGVwZW5kCi0tCWZvciBkIGluICQoU1VCRElSUyk7IGRvICQoTUFLRSkgJChNRkxBR1MpIC1DICQk ZCBkZXBlbmQ7IGRvbmUKLSsJZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAkKE1GTEFH UykgLUMgJCRkIGRlcGVuZCB8fCBleGl0ICQkPzsgZG9uZQpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9w cHAtMi40LjcvMDAwMi1zY3JpcHRzLUF2b2lkLWtpbGxpbmctd3JvbmctcHBwZC5wYXRjaCBiL3Bh dGNoZXMvcHBwLTIuNC43LzAwMDItc2NyaXB0cy1Bdm9pZC1raWxsaW5nLXdyb25nLXBwcGQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjRjMjI4ZS4uMDAwMDAwMDAwCi0t LSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMDItc2NyaXB0cy1Bdm9pZC1raWxsaW5nLXdyb25nLXBw cGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tOiByYWRhaW1pbmcg PHJhZGFpbWluZ0BnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDEzIERlYyAyMDE0IDE0OjQyOjM0ICsw ODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNjcmlwdHM6IEF2b2lkIGtpbGxpbmcgd3JvbmcgcHBwZAot Ci0gcG9mZiBjb3VsZCBraWxsIG90aGVyIHBwcGQgcHJvY2Vzc2VzIHdoZW4gdGhlcmUgYXJlIG1h bnkgcHBwZAotIHJ1bm5pbmcgb24gZGlmZmVyZW50IHNlcmlhbCBwb3J0LgotCi0gU2lnbmVkLW9m Zi1ieTogTWluZyBEYWkgPHJhZGFpbWluZ0BnbWFpbC5jb20+Ci0KLUltcG9ydGVkIGZyb20gcHBw XzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJy aWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBzY3JpcHRzL3BvZmYgfCAyICst Ci0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYg LS1naXQgYS9zY3JpcHRzL3BvZmYgYi9zY3JpcHRzL3BvZmYKLWluZGV4IDNmNTVhN2Y0MDAxMC4u NWI0NWQ5OGEyYjZhIDEwMDY0NAotLS0tIGEvc2NyaXB0cy9wb2ZmCi0rKysgYi9zY3JpcHRzL3Bv ZmYKLUBAIC05MSw3ICs5MSw3IEBAIGlmIHRlc3QgIiQjIiAtZXEgMCAtbyAiJE1PREUiID0gImFs bCIgOyB0aGVuCi0gZmkKLSAKLSAjIFRoZXJlIGlzIGFuIGFyZ3VtZW50LCBzbyBraWxsIHRoZSBw cHBkIHN0YXJ0ZWQgb24gdGhhdCBwcm92aWRlci4KLS1QSUQ9YHBzIGF4dyB8IGdyZXAgIlsgL11w cHBkIGNhbGwgJDEiIHwgYXdrICd7cHJpbnQgJDF9J2AKLStQSUQ9YHBzIGF4dyB8IGdyZXAgIlsg L11wcHBkIGNhbGwgJDEiIHwgZ3JlcCAtdyAiJDEiIHwgYXdrICd7cHJpbnQgJDF9J2AKLSBpZiB0 ZXN0IC1uICIkUElEIiA7IHRoZW4KLSAgICAgJEtJTEwgLSRTSUcgJFBJRCB8fCB7Ci0gICAgICAg ICBlY2hvICIkMDogJEtJTEwgZmFpbGVkLiAgTm9uZSAke0RPTkV9LiIKZGlmZiAtLWdpdCBhL3Bh dGNoZXMvcHBwLTIuNC43LzAwMDMtcHBwZC1GaXgtc2lnbi1leHRlbnNpb24td2hlbi1kaXNwbGF5 aW5nLWJ5dGVzLWluLW9jdC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDMtcHBwZC1GaXgt c2lnbi1leHRlbnNpb24td2hlbi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9jdC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJkMjNiOTIxLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hl cy9wcHAtMi40LjcvMDAwMy1wcHBkLUZpeC1zaWduLWV4dGVuc2lvbi13aGVuLWRpc3BsYXlpbmct Ynl0ZXMtaW4tb2N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbTog IlBoaWxpcCBBLiBQcmluZGV2aWxsZSIgPHBoaWxpcHBAcmVkZmlzaC1zb2x1dGlvbnMuY29tPgot RGF0ZTogRnJpLCAxOSBEZWMgMjAxNCAxNzo1Mjo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBw cHBkOiBGaXggc2lnbi1leHRlbnNpb24gd2hlbiBkaXNwbGF5aW5nIGJ5dGVzIGluIG9jdGFsCi0K LXByaW50X3N0cmluZygpIGRpc3BsYXlzIGNoYXJhY3RlcnMgYXMgXFwlLjAzbyBidXQgd2l0aG91 dCBmaXJzdAotY2FzdGluZyBpdCBmcm9tICJjaGFyIiB0byAidW5zaWduZWQgY2hhciIgc28gaXQg Z2V0cyBzaWduLWV4dGVuZGVkCi10byBhbiBpbnQuIFRoaXMgY2F1c2VzIG91dHB1dCBsaWtlIFwz Nzc3Nzc3NzYzMCBpbnN0ZWFkIG9mIFwyMzAuCi0KLVNpZ25lZC1vZmYtYnk6IFBoaWxpcCBBLiBQ cmluZGV2aWxsZSA8cGhpbGlwcEByZWRmaXNoLXNvbHV0aW9ucy5jb20+Ci0KLUltcG9ydGVkIGZy b20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFl bCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3V0aWxzLmMg fCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0K LWRpZmYgLS1naXQgYS9wcHBkL3V0aWxzLmMgYi9wcHBkL3V0aWxzLmMKLWluZGV4IDI5YmY5NzA5 MDVkNS4uM2FjMWI2MDkyNmQyIDEwMDY0NAotLS0tIGEvcHBwZC91dGlscy5jCi0rKysgYi9wcHBk L3V0aWxzLmMKLUBAIC02MjUsNyArNjI1LDcgQEAgcHJpbnRfc3RyaW5nKHAsIGxlbiwgcHJpbnRl ciwgYXJnKQotIAkJcHJpbnRlcihhcmcsICJcXHQiKTsKLSAJCWJyZWFrOwotIAkgICAgZGVmYXVs dDoKLS0JCXByaW50ZXIoYXJnLCAiXFwlLjNvIiwgYyk7Ci0rCQlwcmludGVyKGFyZywgIlxcJS4z byIsICh1bnNpZ25lZCBjaGFyKSBjKTsKLSAJICAgIH0KLSAJfQotICAgICB9CmRpZmYgLS1naXQg YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24t UFBQb0UtZGlzY29ubmVjdC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDQtU3VwcHJlc3Mt ZmFsc2UtZXJyb3ItbWVzc2FnZS1vbi1QUFBvRS1kaXNjb25uZWN0LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA2ZDRiZDVjMTAuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3Bw cC0yLjQuNy8wMDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29u bmVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb206IFNpbW9uIEZh cm5zd29ydGggPHNpbW9uQGZhcm56Lm9yZy51az4KLURhdGU6IFN1biwgMSBNYXIgMjAxNSAxMTo0 OTowNiArMDAwMAotU3ViamVjdDogW1BBVENIXSBTdXBwcmVzcyBmYWxzZSBlcnJvciBtZXNzYWdl IG9uIFBQUG9FIGRpc2Nvbm5lY3QKLQotT25jZSB0aGUga2VybmVsIGhhbmRsZXMgUFBQb0UgUEFE VHMgY29ycmVjdGx5WzFdLCBhIFBBRFQgdHJpZ2dlcmVkCi1kaXNjb25uZWN0IHdpbGwgcmVzdWx0 IGluIEVBTFJFQURZIHdoZW4gcHBwZCB0cmllcyB0byBjbGVhciB0aGUgc2Vzc2lvbiBJRC4KLQot U2ltcGx5IGlnbm9yZSB0aGUgZXJyb3IgaWYsIGFuZCBvbmx5IGlmLCB0aGUgZXJyb3IgaXMgRUFM UkVBRFkKLQotWzFdIGh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNDQ0NzE3Lwot Ci1TaWduZWQtb2ZmLWJ5OiBTaW1vbiBGYXJuc3dvcnRoIDxzaW1vbkBmYXJuei5vcmcudWs+Ci0K LUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9m Zi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBw cHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMv cnAtcHBwb2UvcGx1Z2luLmMgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKLWluZGV4 IGE4YzJiYjRmNGE2YS4uZGE1MGNkZjJiOWQzIDEwMDY0NAotLS0tIGEvcHBwZC9wbHVnaW5zL3Jw LXBwcG9lL3BsdWdpbi5jCi0rKysgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKLUBA IC0yNzAsNyArMjcwLDcgQEAgUFBQT0VEaXNjb25uZWN0RGV2aWNlKHZvaWQpCi0gICAgIG1lbWNw eShzcC5zYV9hZGRyLnBwcG9lLmRldiwgY29ubi0+aWZOYW1lLCBJRk5BTVNJWik7Ci0gICAgIG1l bWNweShzcC5zYV9hZGRyLnBwcG9lLnJlbW90ZSwgY29ubi0+cGVlckV0aCwgRVRIX0FMRU4pOwot ICAgICBpZiAoY29ubmVjdChjb25uLT5zZXNzaW9uU29ja2V0LCAoc3RydWN0IHNvY2thZGRyICop ICZzcCwKLS0JCXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfcHBwb3gpKSA8IDApCi0rCQlzaXplb2Yo c3RydWN0IHNvY2thZGRyX3BwcG94KSkgPCAwICYmIGVycm5vICE9IEVBTFJFQURZKQotIAllcnJv cigiRmFpbGVkIHRvIGRpc2Nvbm5lY3QgUFBQb0Ugc29ja2V0OiAlZCAlbSIsIGVycm5vKTsKLSAg ICAgY2xvc2UoY29ubi0+c2Vzc2lvblNvY2tldCk7Ci0gICAgIC8qIGRvbid0IHNlbmQgUEFEVD8/ ICovCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA1LVNlbmQtUEFEVC1vbi1QUFBv RS1kaXNjb25uZWN0LnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwNS1TZW5kLVBBRFQtb24t UFBQb0UtZGlzY29ubmVjdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhl ZmRmYzcxLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwNS1TZW5kLVBBRFQt b24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK LUZyb206IFNpbW9uIEZhcm5zd29ydGggPHNpbW9uQGZhcm56Lm9yZy51az4KLURhdGU6IFN1biwg MSBNYXIgMjAxNSAxMTo1Mzo1OCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTZW5kIFBBRFQgb24g UFBQb0UgZGlzY29ubmVjdAotCi1PbmNlIHdlJ3ZlIHRlcm1pbmF0ZWQgdGhlIFBQUCBzZXNzaW9u LCB0aGVyZSBpcyBubyBjaGFuY2Ugb2YgYSBQUFAgbGF5ZXIKLWRpc2Nvbm5lY3QuIFNvbWUgUFBQ b0UgcmVsYXlzIGRvbid0IGRldGVjdCB0aGUgUFBQIHNlc3Npb24gZ29pbmcgZG93biwgYW5kCi1k ZXBlbmQgb24gYSBsb25nIHRpbWVvdXQgb3IgYSBQUFBvRSBQQURUIHRvIHRlcm1pbmF0ZSB0aGUg c2Vzc2lvbi4KLQotU2VuZCBhIFBBRFQgb24gZGlzY29ubmVjdCB0byB3b3JrIGFyb3VuZCB0aGVz ZSBidWdneSByZWxheXMuCi0KLVNpZ25lZC1vZmYtYnk6IFNpbW9uIEZhcm5zd29ydGggPHNpbW9u QGZhcm56Lm9yZy51az4KLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRh ci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KLS0tLQotIHBwcGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYyB8IDUgKysrLS0K LSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jIGIvcHBwZC9wbHVnaW5zL3Jw LXBwcG9lL3BsdWdpbi5jCi1pbmRleCBkYTUwY2RmMmI5ZDMuLmM4OWJlOTQyNTBiYyAxMDA2NDQK LS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYwotKysrIGIvcHBwZC9wbHVnaW5z L3JwLXBwcG9lL3BsdWdpbi5jCi1AQCAtMjczLDkgKzI3MywxMCBAQCBQUFBPRURpc2Nvbm5lY3RE ZXZpY2Uodm9pZCkKLSAJCXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfcHBwb3gpKSA8IDAgJiYgZXJy bm8gIT0gRUFMUkVBRFkpCi0gCWVycm9yKCJGYWlsZWQgdG8gZGlzY29ubmVjdCBQUFBvRSBzb2Nr ZXQ6ICVkICVtIiwgZXJybm8pOwotICAgICBjbG9zZShjb25uLT5zZXNzaW9uU29ja2V0KTsKLS0g ICAgLyogZG9uJ3Qgc2VuZCBQQURUPz8gKi8KLS0gICAgaWYgKGNvbm4tPmRpc2NvdmVyeVNvY2tl dCA+PSAwKQotKyAgICBpZiAoY29ubi0+ZGlzY292ZXJ5U29ja2V0ID49IDApIHsKLSsgICAgICAg IHNlbmRQQURUKGNvbm4sIE5VTEwpOwotIAljbG9zZShjb25uLT5kaXNjb3ZlcnlTb2NrZXQpOwot KyAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDA2LXBwcGQtaXB4Y3AtUHJldmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1vdGUtcm91dGVy LW4ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDA2LXBwcGQtaXB4Y3AtUHJldmVudC1idWZm ZXItb3ZlcnJ1bi1vbi1yZW1vdGUtcm91dGVyLW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDdkOTgxMjdjMi4uMDAwMDAwMDAwCi0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAw MDYtcHBwZC1pcHhjcC1QcmV2ZW50LWJ1ZmZlci1vdmVycnVuLW9uLXJlbW90ZS1yb3V0ZXItbi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb206IFBhdWwgTWFja2VycmFz IDxwYXVsdXNAc2FtYmEub3JnPgotRGF0ZTogRnJpLCAxNCBBdWcgMjAxNSAxNzo1NjoyNiArMTAw MAotU3ViamVjdDogW1BBVENIXSBwcHBkOiBpcHhjcDogUHJldmVudCBidWZmZXIgb3ZlcnJ1biBv biByZW1vdGUgcm91dGVyIG5hbWUKLQotVGhpcyBmaXhlcyBhbiBpZiBjb25kaXRpb24gdG8gcHJl dmVudCBhIHBvc3NpYmxlIDEtYnl0ZSBvdmVycnVuCi1vbiBpcHhjcF9oaXNvcHRpb25zWzBdLm5h bWUuCi0KLVJlcG9ydGVkLWJ5OiAiU2FiYXMgUm9zYWxlcywgQmxhbmNhIEUiIDxibGFuY2EuZS5z YWJhcy5yb3NhbGVzQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxw YXVsdXNAb3psYWJzLm9yZz4KLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFu LnRhci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5n dXRyb25peC5kZT4KLS0tLQotIHBwcGQvaXB4Y3AuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvaXB4Y3Au YyBiL3BwcGQvaXB4Y3AuYwotaW5kZXggN2IyMzQzZTE1NTM3Li5hYWZmMTBmNzYyMDAgMTAwNjQ0 Ci0tLS0gYS9wcHBkL2lweGNwLmMKLSsrKyBiL3BwcGQvaXB4Y3AuYwotQEAgLTExOTQsNyArMTE5 NCw3IEBAIGlweGNwX3JlcWNpKGYsIGlucCwgbGVuLCByZWplY3RfaWZfZGlzYWdyZWUpCi0gCWNh c2UgSVBYX1JPVVRFUl9OQU1FOgotIAkgICAgaWYgKGNpbGVuID49IENJTEVOX05BTUUpIHsKLSAJ CWludCBuYW1lX3NpemUgPSBjaWxlbiAtIENJTEVOX05BTUU7Ci0tCQlpZiAobmFtZV9zaXplID4g c2l6ZW9mIChoby0+bmFtZSkpCi0rCQlpZiAobmFtZV9zaXplID49IHNpemVvZiAoaG8tPm5hbWUp KQotIAkJICAgIG5hbWVfc2l6ZSA9IHNpemVvZiAoaG8tPm5hbWUpIC0gMTsKLSAJCW1lbXNldCAo aG8tPm5hbWUsIDAsIHNpemVvZiAoaG8tPm5hbWUpKTsKLSAJCW1lbWNweSAoaG8tPm5hbWUsIHAs IG5hbWVfc2l6ZSk7CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA3LXBwcGQtRml4 LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDctcHBw ZC1GaXgtY2NwX29wdGlvbnMubXBwZS10eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA0NzVlZGFlMjQuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA3 LXBwcGQtRml4LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDMwICswLDAgQEAKLUZyb206IFN5bHZhaW4gUm9jaGV0IDxncmFkYXRvckBncmFkYXRvci5uZXQ+ Ci1EYXRlOiBXZWQsIDI1IE1hciAyMDE1IDAwOjI1OjE4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hd IHBwcGQ6IEZpeCBjY3Bfb3B0aW9ucy5tcHBlIHR5cGUKLQotVGhpcyBjb3JyZWN0cyB0aGUgdHlw ZSBvZiBjY3Bfb3B0aW9ucy5tcHBlOyBpdCBpcyBhY3R1YWxseSBhIGJpdGZpZWxkIG9mCi1NUFBF X09QVF8qIGFuZCBub3QgYSBib29sZWFuLgotCi1TaWduZWQtb2ZmLWJ5OiBTeWx2YWluIFJvY2hl dCA8Z3JhZGF0b3JAZ3JhZGF0b3IubmV0PgotU2lnbmVkLW9mZi1ieTogUGF1bCBNYWNrZXJyYXMg PHBhdWx1c0BzYW1iYS5vcmc+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlh bi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL2NjcC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9jY3AuaCBi L3BwcGQvY2NwLmgKLWluZGV4IDZmNGEyZmVlMGEyYy4uNzY0NDZkYjAwN2MwIDEwMDY0NAotLS0t IGEvcHBwZC9jY3AuaAotKysrIGIvcHBwZC9jY3AuaAotQEAgLTM3LDcgKzM3LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgY2NwX29wdGlvbnMgewotICAgICBib29sIHByZWRpY3Rvcl8yOwkJLyogZG8gUHJl ZGljdG9yLTI/ICovCi0gICAgIGJvb2wgZGVmbGF0ZV9jb3JyZWN0OwkvKiB1c2UgY29ycmVjdCBj b2RlIGZvciBkZWZsYXRlPyAqLwotICAgICBib29sIGRlZmxhdGVfZHJhZnQ7CQkvKiB1c2UgZHJh ZnQgUkZDIGNvZGUgZm9yIGRlZmxhdGU/ICovCi0tICAgIGJvb2wgbXBwZTsJCQkvKiBkbyBNUFBF PyAqLwotKyAgICB1X2NoYXIgbXBwZTsJCS8qIE1QUEUgYml0ZmllbGQgKi8KLSAgICAgdV9zaG9y dCBic2RfYml0czsJCS8qICMgYml0cy9jb2RlIGZvciBCU0QgQ29tcHJlc3MgKi8KLSAgICAgdV9z aG9ydCBkZWZsYXRlX3NpemU7CS8qIGxnKHdpbmRvdyBzaXplKSBmb3IgRGVmbGF0ZSAqLwotICAg ICBzaG9ydCBtZXRob2Q7CQkvKiBjb2RlIGZvciBjaG9zZW4gY29tcHJlc3Npb24gbWV0aG9kICov CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA4LXBwcGQtRml4LWNjcF9jaWxlbi1j YWxjdWxhdGVkLXNpemUtaWYtYm90aC1kZWZsYXRlX2MucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQu Ny8wMDA4LXBwcGQtRml4LWNjcF9jaWxlbi1jYWxjdWxhdGVkLXNpemUtaWYtYm90aC1kZWZsYXRl X2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3M2I0ZGUzMi4uMDAwMDAw MDAwCi0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMDgtcHBwZC1GaXgtY2NwX2NpbGVuLWNhbGN1 bGF0ZWQtc2l6ZS1pZi1ib3RoLWRlZmxhdGVfYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMz ICswLDAgQEAKLUZyb206IFN5bHZhaW4gUm9jaGV0IDxncmFkYXRvckBncmFkYXRvci5uZXQ+Ci1E YXRlOiBUdWUsIDI0IE1hciAyMDE1IDIxOjIxOjQwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBw cGQ6IEZpeCBjY3BfY2lsZW4gY2FsY3VsYXRlZCBzaXplIGlmIGJvdGggZGVmbGF0ZV9jb3JyZWN0 Ci0gYW5kIGRlZmxhdGVfZHJhZnQgYXJlIGVuYWJsZWQKLQotVGhpcyBmaXhlcyBhIGJ1ZyB3aGVy ZSBjY3BfY2lsZW4oKSB3aWxsIHJldHVybiA0IGJ5dGVzIGxlc3MgdGhhbgotbmVjZXNzYXJ5IGZv ciB0aGUgYWRkY2kgYnVmZmVyIGlmIGJvdGggZGVmbGF0ZV9jb3JyZWN0IGFuZAotZGVmbGF0ZV9k cmFmdCBhcmUgZW5hYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogU3lsdmFpbiBSb2NoZXQgPGdyYWRh dG9yQGdyYWRhdG9yLm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxwYXVsdXNA c2FtYmEub3JnPgotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6 Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4 LmRlPgotLS0tCi0gcHBwZC9jY3AuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9jY3AuYyBiL3BwcGQv Y2NwLmMKLWluZGV4IDU4MTRmMzU4ZWI0NC4uN2Q3OTIyYWZjZmMwIDEwMDY0NAotLS0tIGEvcHBw ZC9jY3AuYwotKysrIGIvcHBwZC9jY3AuYwotQEAgLTY3Niw3ICs2NzYsOCBAQCBjY3BfY2lsZW4o ZikKLSAgICAgY2NwX29wdGlvbnMgKmdvID0gJmNjcF9nb3RvcHRpb25zW2YtPnVuaXRdOwotIAot ICAgICByZXR1cm4gKGdvLT5ic2RfY29tcHJlc3M/IENJTEVOX0JTRF9DT01QUkVTUzogMCkKLS0J KyAoZ28tPmRlZmxhdGU/IENJTEVOX0RFRkxBVEU6IDApCi0rCSsgKGdvLT5kZWZsYXRlICYmIGdv LT5kZWZsYXRlX2NvcnJlY3Q/IENJTEVOX0RFRkxBVEU6IDApCi0rCSsgKGdvLT5kZWZsYXRlICYm IGdvLT5kZWZsYXRlX2RyYWZ0PyBDSUxFTl9ERUZMQVRFOiAwKQotIAkrIChnby0+cHJlZGljdG9y XzE/IENJTEVOX1BSRURJQ1RPUl8xOiAwKQotIAkrIChnby0+cHJlZGljdG9yXzI/IENJTEVOX1BS RURJQ1RPUl8yOiAwKQotIAkrIChnby0+bXBwZT8gQ0lMRU5fTVBQRTogMCk7CmRpZmYgLS1naXQg YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA5LUZpeC1hLXR5cG8taW4tY29tbWVudC4tRGlmZi1mcm9t LVl1dWljaGktU29tZXlhLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwOS1GaXgtYS10eXBv LWluLWNvbW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hpLVNvbWV5YS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMzlhZjhjZjMzLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAt Mi40LjcvMDAwOS1GaXgtYS10eXBvLWluLWNvbW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hpLVNvbWV5 YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb206IFlBU1VPS0EgTWFz YWhpa28gPHlhc3Vva2FAeWFzdW9rYS5uZXQ+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDEzOjM5 OjE5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIHR5cG8gaW4gY29tbWVudC4gRGlmZiBm cm9tIFl1dWljaGkgU29tZXlhLgotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJp YW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBl bmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9mc20uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvZnNtLmMg Yi9wcHBkL2ZzbS5jCi1pbmRleCBjMjAwY2MzYTg0MzguLmU5YmQzNGYwZThmNCAxMDA2NDQKLS0t LSBhL3BwcGQvZnNtLmMKLSsrKyBiL3BwcGQvZnNtLmMKLUBAIC00NjgsNyArNDY4LDcgQEAgZnNt X3Jjb25mcmVxKGYsIGlkLCBpbnAsIGxlbikKLSAJZi0+bmFrbG9vcHMgPSAwOwotIAotICAgICB9 IGVsc2UgewotLQkvKiB3ZSBzZW50IENPTkZBQ0sgb3IgQ09ORlJFSiAqLwotKwkvKiB3ZSBzZW50 IENPTkZOQUsgb3IgQ09ORlJFSiAqLwotIAlpZiAoZi0+c3RhdGUgIT0gQUNLUkNWRCkKLSAJICAg IGYtPnN0YXRlID0gUkVRU0VOVDsKLSAJaWYoIGNvZGUgPT0gQ09ORk5BSyApCmRpZmYgLS1naXQg YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5lcy1m cm9tLXN5c2xvZy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMTAtcGxvZy1jb3VudC1vbmx5 LXJlbGV2YW50LWxpbmVzLWZyb20tc3lzbG9nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjOWQ1NmNkYmIuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEw LXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5lcy1mcm9tLXN5c2xvZy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb206IERtaXRyeSBEZXNoZXZveSA8bWl0eWFkYUBn bWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIE1hciAyMDE2IDIzOjM5OjMyICswNDAwCi1TdWJqZWN0 OiBbUEFUQ0hdIHBsb2c6IGNvdW50IG9ubHkgcmVsZXZhbnQgbGluZXMgZnJvbSBzeXNsb2cKLQot Q2xvc2VzIHBhdWx1c21hY2svcHBwIzQyCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4x LmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBzY3JpcHRzL3Bsb2cgfCAyICstCi0gMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zY3Jp cHRzL3Bsb2cgYi9zY3JpcHRzL3Bsb2cKLWluZGV4IDg0ZDJjNzM0MGNjNi4uN2NiNTMzNDY0MTNk IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9wbG9nCi0rKysgYi9zY3JpcHRzL3Bsb2cKLUBAIC0zLDUg KzMsNSBAQAotIGlmIFsgLXMgL3Zhci9sb2cvcHBwLmxvZyBdOyB0aGVuCi0gICBleGVjIHRhaWwg IiRAIiAvdmFyL2xvZy9wcHAubG9nCi0gZWxzZQotLSAgZXhlYyB0YWlsICIkQCIgL3Zhci9sb2cv c3lzbG9nIHwgZ3JlcCAnIFwocHBwZFx8Y2hhdFwpXFsnCi0rICBleGVjIGdyZXAgJyBcKHBwcGRc fGNoYXRcKVxbJyAvdmFyL2xvZy9zeXNsb2cgfCB0YWlsICIkQCIKLSBmaQpkaWZmIC0tZ2l0IGEv cGF0Y2hlcy9wcHAtMi40LjcvMDAxMS1DaGFuZ2UtaW5jbHVkZS1mcm9tLXN5cy1lcnJuby5oLXRv LWVycm5vLmgucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDExLUNoYW5nZS1pbmNsdWRlLWZy b20tc3lzLWVycm5vLmgtdG8tZXJybm8uaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZWQzMTNlZWFhLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMS1D aGFuZ2UtaW5jbHVkZS1mcm9tLXN5cy1lcnJuby5oLXRvLWVycm5vLmgucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tOiBTdGVmYW4gTmlja2wgPFN0ZWZhbi5OaWNrbEBn bWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEwIEF1ZyAyMDE2IDIxOjMyOjIxICswMjAwCi1TdWJqZWN0 OiBbUEFUQ0hdIENoYW5nZSBpbmNsdWRlIGZyb20gc3lzL2Vycm5vLmggdG8gZXJybm8uaAotCi1B Y2NvcmRpbmcgdG8gUE9TSVgsIHRoZSBjYW5vbmljYWwgbG9jYXRpb24gZm9yIGVycm5vLmggaXMg b24gdGhlIHRvcCBsZXZlbC4KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIE5pY2tsIDxTdGVmYW4u Tmlja2xAZ21haWwuY29tPgotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4u dGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1 dHJvbml4LmRlPgotLS0tCi0gcHBwZC9zeXMtbGludXguYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvc3lz LWxpbnV4LmMgYi9wcHBkL3N5cy1saW51eC5jCi1pbmRleCBlNWU5YmFmODgyMWYuLjkwOGFhNGYy MjI5NyAxMDA2NDQKLS0tLSBhL3BwcGQvc3lzLWxpbnV4LmMKLSsrKyBiL3BwcGQvc3lzLWxpbnV4 LmMKLUBAIC03MywxMiArNzMsMTIgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1 ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLS0jaW5jbHVkZSA8c3lz L2Vycm5vLmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ Ci0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4K LSAKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8 c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5c2xvZy5oPgpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAt Mi40LjcvMDAxMi1wcHBkLWFsbG93LXVzZS1vZi1hcmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBh dGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMi1wcHBkLWFsbG93LXVzZS1vZi1hcmJpdHJhcnkt aW50ZXJmYWNlLW5hbWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmQ1 NmRlMWQuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEyLXBwcGQtYWxsb3ct dXNlLW9mLWFyYml0cmFyeS1pbnRlcmZhY2UtbmFtZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwyMTQgKzAsMCBAQAotRnJvbTogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BzYW1iYS5vcmc+Ci1E YXRlOiBUdWUsIDIzIEF1ZyAyMDE2IDE2OjEwOjIxICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBw cGQ6IGFsbG93IHVzZSBvZiBhcmJpdHJhcnkgaW50ZXJmYWNlIG5hbWVzCi0KLVRoaXMgaXMgYSBt b2RpZmllZCB2ZXJzaW9uIG9mIGEgcGF0Y2ggZnJvbSBvcGVuU1VTRSB0aGF0IGVuYWJsZXMgUFBQ IGludGVyZmFjZXMKLXRvIGJlIGNhbGxlZCBhcmJpdHJhcnkgbmFtZXMsIHJhdGhlciB0aGFuIHNp bXBseSBwcHBYIHdoZXJlIFggaXMgdGhlIHVuaXQKLW51bWJlci4KLQotVGhlIG1vZGlmaWNhdGlv bnMgZnJvbSB0aGUgc3RvY2sgb3BlblNVU0UgcGF0Y2ggYXJlOgotICByZWZyZXNoIHBhdGNoIG9u IHRvcCBvZiAwMThfaXAgdXBfb3B0aW9uLmRpZmYKLS0gZml4IGEgcHJpbnRmIGZvcm1hdC1zdHJp bmcgdnVsbmVyYWJpbGl0eSBpbiBwcHBkL21haW4uYzpzZXRfaWZ1bml0KCkKLS0gY2xhcmlmeSB0 aGUgcHBwZC44IG1hbnBhZ2UgYWRkaXRpb25zCi0tIHBhdGNoIHBwcHN0YXRzL3BwcHN0YXRzLmMg dG8gcXVlcnkgcmVuYW1lZCBpbnRlcmZhY2VzIHdpdGhvdXQgY29tcGxhaW50Ci0KLU9yaWdpbjog U1VTRQotQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9y dC5jZ2k/YnVnPTQ1ODY0NgotRm9yd2FyZGVkOiBubwotUmV2aWV3ZWQtYnk6IENocmlzIEJvb3Qg PGJvb3RjQGRlYmlhbi5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVz QG96bGFicy5vcmc+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIu eHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9u aXguZGU+Ci0tLS0KLSBwcHBkL21haW4uYyAgICAgICAgIHwgMTYgKysrKysrLS0tLS0tLS0tLQot IHBwcGQvb3B0aW9ucy5jICAgICAgfCAgNSArKysrKwotIHBwcGQvcHBwZC44ICAgICAgICAgfCAg OCArKysrKysrLQotIHBwcGQvcHBwZC5oICAgICAgICAgfCAxMSArKysrKysrKysrKwotIHBwcGQv c3lzLWxpbnV4LmMgICAgfCAxNSArKysrKysrKysrKysrKysKLSBwcHBzdGF0cy9wcHBzdGF0cy5j IHwgMTIgKysrKysrLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAx NyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMK LWluZGV4IDZkNTBkMWJhYzFkOS4uZjE5ODZlZDY4ZDBiIDEwMDY0NAotLS0tIGEvcHBwZC9tYWlu LmMKLSsrKyBiL3BwcGQvbWFpbi5jCi1AQCAtMTI0LDcgKzEyNCw3IEBACi0gc3RhdGljIGNvbnN0 IGNoYXIgcmNzaWRbXSA9IFJDU0lEOwotIAotIC8qIGludGVyZmFjZSB2YXJzICovCi0tY2hhciBp Zm5hbWVbMzJdOwkJLyogSW50ZXJmYWNlIG5hbWUgKi8KLStjaGFyIGlmbmFtZVtNQVhJRk5BTUVM RU5dOwkvKiBJbnRlcmZhY2UgbmFtZSAqLwotIGludCBpZnVuaXQ7CQkJLyogSW50ZXJmYWNlIHVu aXQgbnVtYmVyICovCi0gCi0gc3RydWN0IGNoYW5uZWwgKnRoZV9jaGFubmVsOwotQEAgLTI5OCwx MyArMjk4LDYgQEAgc3RydWN0IHByb3RlbnQgKnByb3RvY29sc1tdID0gewotICAgICBOVUxMCi0g fTsKLSAKLS0vKgotLSAqIElmIFBQUF9EUlZfTkFNRSBpcyBub3QgZGVmaW5lZCwgdXNlIHRoZSBk ZWZhdWx0ICJwcHAiIGFzIHRoZSBkZXZpY2UgbmFtZS4KLS0gKi8KLS0jaWYgIWRlZmluZWQoUFBQ X0RSVl9OQU1FKQotLSNkZWZpbmUgUFBQX0RSVl9OQU1FCSJwcHAiCi0tI2VuZGlmIC8qICFkZWZp bmVkKFBQUF9EUlZfTkFNRSkgKi8KLS0KLSBpbnQKLSBtYWluKGFyZ2MsIGFyZ3YpCi0gICAgIGlu dCBhcmdjOwotQEAgLTczNyw4ICs3MzAsMTEgQEAgdm9pZAotIHNldF9pZnVuaXQoaXNrZXkpCi0g ICAgIGludCBpc2tleTsKLSB7Ci0tICAgIGluZm8oIlVzaW5nIGludGVyZmFjZSAlcyVkIiwgUFBQ X0RSVl9OQU1FLCBpZnVuaXQpOwotLSAgICBzbHByaW50ZihpZm5hbWUsIHNpemVvZihpZm5hbWUp LCAiJXMlZCIsIFBQUF9EUlZfTkFNRSwgaWZ1bml0KTsKLSsgICAgaWYgKHJlcV9pZm5hbWVbMF0g IT0gJ1wwJykKLSsJc2xwcmludGYoaWZuYW1lLCBzaXplb2YoaWZuYW1lKSwgIiVzIiwgcmVxX2lm bmFtZSk7Ci0rICAgIGVsc2UKLSsJc2xwcmludGYoaWZuYW1lLCBzaXplb2YoaWZuYW1lKSwgIiVz JWQiLCBQUFBfRFJWX05BTUUsIGlmdW5pdCk7Ci0rICAgIGluZm8oIlVzaW5nIGludGVyZmFjZSAl cyIsIGlmbmFtZSk7Ci0gICAgIHNjcmlwdF9zZXRlbnYoIklGTkFNRSIsIGlmbmFtZSwgaXNrZXkp OwotICAgICBpZiAoaXNrZXkpIHsKLSAJY3JlYXRlX3BpZGZpbGUoZ2V0cGlkKCkpOwkvKiB3cml0 ZSBwaWQgdG8gZmlsZSAqLwotZGlmZiAtLWdpdCBhL3BwcGQvb3B0aW9ucy5jIGIvcHBwZC9vcHRp b25zLmMKLWluZGV4IGY2NmI3NjU3YmMzMS4uOTFkYTUxNWFjNTMzIDEwMDY0NAotLS0tIGEvcHBw ZC9vcHRpb25zLmMKLSsrKyBiL3BwcGQvb3B0aW9ucy5jCi1AQCAtMTE0LDYgKzExNCw3IEBAIGNo YXIJbGlua25hbWVbTUFYUEFUSExFTl07CS8qIGxvZ2ljYWwgbmFtZSBmb3IgbGluayAqLwotIGJv b2wJdHVuZV9rZXJuZWw7CQkvKiBtYXkgYWx0ZXIga2VybmVsIHNldHRpbmdzICovCi0gaW50CWNv bm5lY3RfZGVsYXkgPSAxMDAwOwkvKiB3YWl0IHRoaXMgbWFueSBtcyBhZnRlciBjb25uZWN0IHNj cmlwdCAqLwotIGludAlyZXFfdW5pdCA9IC0xOwkJLyogcmVxdWVzdGVkIGludGVyZmFjZSB1bml0 ICovCi0rY2hhcglyZXFfaWZuYW1lW01BWElGTkFNRUxFTl07CS8qIHJlcXVlc3RlZCBpbnRlcmZh Y2UgbmFtZSAqLwotIGJvb2wJbXVsdGlsaW5rID0gMDsJCS8qIEVuYWJsZSBtdWx0aWxpbmsgb3Bl cmF0aW9uICovCi0gY2hhcgkqYnVuZGxlX25hbWUgPSBOVUxMOwkvKiBidW5kbGUgbmFtZSBmb3Ig bXVsdGlsaW5rICovCi0gYm9vbAlkdW1wX29wdGlvbnM7CQkvKiBwcmludCBvdXQgb3B0aW9uIHZh bHVlcyAqLwotQEAgLTI4Myw2ICsyODQsMTAgQEAgb3B0aW9uX3QgZ2VuZXJhbF9vcHRpb25zW10g PSB7Ci0gICAgICAgIlBQUCBpbnRlcmZhY2UgdW5pdCBudW1iZXIgdG8gdXNlIGlmIHBvc3NpYmxl IiwKLSAgICAgICBPUFRfUFJJTyB8IE9QVF9MTElNSVQsIDAsIDAgfSwKLSAKLSsgICAgeyAiaWZu YW1lIiwgb19zdHJpbmcsIHJlcV9pZm5hbWUsCi0rICAgICAgIlNldCBQUFAgaW50ZXJmYWNlIG5h bWUiLAotKyAgICAgIE9QVF9QUklPIHwgT1BUX1BSSVYgfCBPUFRfU1RBVElDLCBOVUxMLCBNQVhJ Rk5BTUVMRU4gfSwKLSsKLSAgICAgeyAiZHVtcCIsIG9fYm9vbCwgJmR1bXBfb3B0aW9ucywKLSAg ICAgICAiUHJpbnQgb3V0IG9wdGlvbiB2YWx1ZXMgYWZ0ZXIgcGFyc2luZyBhbGwgb3B0aW9ucyIs IDEgfSwKLSAgICAgeyAiZHJ5cnVuIiwgb19ib29sLCAmZHJ5cnVuLAotZGlmZiAtLWdpdCBhL3Bw cGQvcHBwZC44IGIvcHBwZC9wcHBkLjgKLWluZGV4IGUyNzY4YjEzNTI3My4uNjQ2NTljZjg2N2Iy IDEwMDY0NAotLS0tIGEvcHBwZC9wcHBkLjgKLSsrKyBiL3BwcGQvcHBwZC44Ci1AQCAtMTA3Myw3 ICsxMDczLDEzIEBAIHVuZGVyIExpbnV4IGFuZCBGcmVlQlNEIDIuMi44IGFuZCBsYXRlci4KLSAu VFAKLSAuQiB1bml0IFxmSW51bQotIFNldHMgdGhlIHBwcCB1bml0IG51bWJlciAoZm9yIGEgcHBw MCBvciBwcHAxIGV0YyBpbnRlcmZhY2UgbmFtZSkgZm9yIG91dGJvdW5kCi0tY29ubmVjdGlvbnMu Ci0rY29ubmVjdGlvbnMuICBJZiB0aGUgdW5pdCBpcyBhbHJlYWR5IGluIHVzZSBhIGR5bmFtaWNh bGx5IGFsbG9jYXRlZCBudW1iZXIgd2lsbAotK2JlIHVzZWQuCi0rLlRQCi0rLkIgaWZuYW1lIFxm SXN0cmluZwotK1NldCB0aGUgcHBwIGludGVyZmFjZSBuYW1lIGZvciBvdXRib3VuZCBjb25uZWN0 aW9ucy4gIElmIHRoZSBpbnRlcmZhY2UgbmFtZSBpcwotK2FscmVhZHkgaW4gdXNlLCBvciBpZiB0 aGUgbmFtZSBjYW5ub3QgYmUgdXNlZCBmb3IgYW55IG90aGVyIHJlYXNvbiwgcHBwZCB3aWxsCi0r dGVybWluYXRlLgotIC5UUAotIC5CIHVuc2V0IFxmSW5hbWUKLSBSZW1vdmUgYSB2YXJpYWJsZSBm cm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc2NyaXB0cyB0aGF0IGFyZQotZGlmZiAt LWdpdCBhL3BwcGQvcHBwZC5oIGIvcHBwZC9wcHBkLmgKLWluZGV4IDI0N2ZhMTUzNzM5Yi4uMWEx YmYwYjk5NTgyIDEwMDY0NAotLS0tIGEvcHBwZC9wcHBkLmgKLSsrKyBiL3BwcGQvcHBwZC5oCi1A QCAtODAsNiArODAsMTYgQEAKLSAjZGVmaW5lIE1BWEFSR1MJCTEJLyogbWF4ICMgYXJncyB0byBh IGNvbW1hbmQgKi8KLSAjZGVmaW5lIE1BWE5BTUVMRU4JMjU2CS8qIG1heCBsZW5ndGggb2YgaG9z dG5hbWUgb3IgbmFtZSBmb3IgYXV0aCAqLwotICNkZWZpbmUgTUFYU0VDUkVUTEVOCTI1NgkvKiBt YXggbGVuZ3RoIG9mIHBhc3N3b3JkIG9yIHNlY3JldCAqLwotKyNkZWZpbmUgTUFYSUZOQU1FTEVO CTMyCS8qIG1heCBsZW5ndGggb2YgaW50ZXJmYWNlIG5hbWU7IG9yIHVzZSBJRk5BTVNJWiwgY2Fu IHdlCi0rCQkJCSAgIGFsd2F5cyBpbmNsdWRlIG5ldC9pZi5oPyAqLwotKwotKy8qCi0rICogSWYg UFBQX0RSVl9OQU1FIGlzIG5vdCBkZWZpbmVkLCB1c2UgdGhlIGRlZmF1bHQgInBwcCIgYXMgdGhl IGRldmljZSBuYW1lLgotKyAqIFdoZXJlIHNob3VsZCBQUFBfRFJWX05BTUUgY29tZSBmcm9tPyBE byB3ZSBpbmNsdWRlIGl0IGhlcmU/Ci0rICovCi0rI2lmICFkZWZpbmVkKFBQUF9EUlZfTkFNRSkK LSsjZGVmaW5lIFBQUF9EUlZfTkFNRQkicHBwIgotKyNlbmRpZiAvKiAhZGVmaW5lZChQUFBfRFJW X05BTUUpICovCi0gCi0gLyoKLSAgKiBPcHRpb24gZGVzY3JpcHRvciBzdHJ1Y3R1cmUuCi1AQCAt MzE4LDYgKzMyOCw3IEBAIGV4dGVybiBib29sCXR1bmVfa2VybmVsOwkvKiBNYXkgYWx0ZXIga2Vy bmVsIHNldHRpbmdzIGFzIG5lY2Vzc2FyeSAqLwotIGV4dGVybiBpbnQJY29ubmVjdF9kZWxheTsJ LyogVGltZSB0byBkZWxheSBhZnRlciBjb25uZWN0IHNjcmlwdCAqLwotIGV4dGVybiBpbnQJbWF4 X2RhdGFfcmF0ZTsJLyogbWF4IGJ5dGVzL3NlYyB0aHJvdWdoIGNoYXJzaHVudCAqLwotIGV4dGVy biBpbnQJcmVxX3VuaXQ7CS8qIGludGVyZmFjZSB1bml0IG51bWJlciB0byB1c2UgKi8KLStleHRl cm4gY2hhcglyZXFfaWZuYW1lW01BWElGTkFNRUxFTl07IC8qIGludGVyZmFjZSBuYW1lIHRvIHVz ZSAqLwotIGV4dGVybiBib29sCW11bHRpbGluazsJLyogZW5hYmxlIG11bHRpbGluayBvcGVyYXRp b24gKi8KLSBleHRlcm4gYm9vbAlub2VuZHBvaW50OwkvKiBkb24ndCBzZW5kIG9yIGFjY2VwdCBl bmRwdC4gZGlzY3JpbS4gKi8KLSBleHRlcm4gY2hhcgkqYnVuZGxlX25hbWU7CS8qIGJ1bmRsZSBu YW1lIGZvciBtdWx0aWxpbmsgKi8KLWRpZmYgLS1naXQgYS9wcHBkL3N5cy1saW51eC5jIGIvcHBw ZC9zeXMtbGludXguYwotaW5kZXggOTA4YWE0ZjIyMjk3Li45YjJmMjkzMDI0YWMgMTAwNjQ0Ci0t LS0gYS9wcHBkL3N5cy1saW51eC5jCi0rKysgYi9wcHBkL3N5cy1saW51eC5jCi1AQCAtNjQxLDYg KzY0MSwyMSBAQCBzdGF0aWMgaW50IG1ha2VfcHBwX3VuaXQoKQotIAl9Ci0gCWlmICh4IDwgMCkK LSAJCWVycm9yKCJDb3VsZG4ndCBjcmVhdGUgbmV3IHBwcCB1bml0OiAlbSIpOwotKwotKwlpZiAo eCA9PSAwICYmIHJlcV9pZm5hbWVbMF0gIT0gJ1wwJykgewotKwkJc3RydWN0IGlmcmVxIGlmcjsK LSsJCWNoYXIgdFtNQVhJRk5BTUVMRU5dOwotKwkJbWVtc2V0KCZpZnIsIDAsIHNpemVvZihzdHJ1 Y3QgaWZyZXEpKTsKLSsJCXNscHJpbnRmKHQsIHNpemVvZih0KSwgIiVzJWQiLCBQUFBfRFJWX05B TUUsIGlmdW5pdCk7Ci0rCQlzdHJuY3B5KGlmci5pZnJfbmFtZSwgdCwgSUZfTkFNRVNJWkUpOwot KwkJc3RybmNweShpZnIuaWZyX25ld25hbWUsIHJlcV9pZm5hbWUsIElGX05BTUVTSVpFKTsKLSsJ CXggPSBpb2N0bChzb2NrX2ZkLCBTSU9DU0lGTkFNRSwgJmlmcik7Ci0rCQlpZiAoeCA8IDApCi0r CQkgICAgZXJyb3IoIkNvdWxkbid0IHJlbmFtZSBpbnRlcmZhY2UgJXMgdG8gJXM6ICVtIiwgdCwg cmVxX2lmbmFtZSk7Ci0rCQllbHNlCi0rCQkgICAgaW5mbygiUmVuYW1lZCBpbnRlcmZhY2UgJXMg dG8gJXMiLCB0LCByZXFfaWZuYW1lKTsKLSsJfQotKwotIAlyZXR1cm4geDsKLSB9Ci0gCi1kaWZm IC0tZ2l0IGEvcHBwc3RhdHMvcHBwc3RhdHMuYyBiL3BwcHN0YXRzL3BwcHN0YXRzLmMKLWluZGV4 IDYzNjc5ODhlYjk2Yi4uNDZjYjljMjQ5NDJiIDEwMDY0NAotLS0tIGEvcHBwc3RhdHMvcHBwc3Rh dHMuYwotKysrIGIvcHBwc3RhdHMvcHBwc3RhdHMuYwotQEAgLTg4LDcgKzg4LDYgQEAgaW50CWFm bGFnOwkJCS8qIHByaW50IGFic29sdXRlIHZhbHVlcywgbm90IGRlbHRhcyAqLwotIGludAlkZmxh ZzsJCQkvKiBwcmludCBkYXRhIHJhdGVzLCBub3QgYnl0ZXMgKi8KLSBpbnQJaW50ZXJ2YWwsIGNv dW50OwotIGludAlpbmZpbml0ZTsKLS1pbnQJdW5pdDsKLSBpbnQJczsJCQkvKiBzb2NrZXQgb3Ig L2Rldi9wcHAgZmlsZSBkZXNjcmlwdG9yICovCi0gaW50CXNpZ25hbGxlZDsJCS8qIHNldCBpZiBh bGFybSBnb2VzIG9mZiAiZWFybHkiICovCi0gY2hhcgkqcHJvZ25hbWU7Ci1AQCAtNDQ5LDYgKzQ0 OCw3IEBAIG1haW4oYXJnYywgYXJndikKLSB7Ci0gICAgIGludCBjOwotICNpZmRlZiBTVFJFQU1T Ci0rICAgIGludCB1bml0OwotICAgICBjaGFyICpkZXY7Ci0gI2VuZGlmCi0gCi1AQCAtNTA2LDEx ICs1MDYsNiBAQCBtYWluKGFyZ2MsIGFyZ3YpCi0gICAgIGlmIChhcmdjID4gMCkKLSAJaW50ZXJm YWNlID0gYXJndlswXTsKLSAKLS0gICAgaWYgKHNzY2FuZihpbnRlcmZhY2UsIFBQUF9EUlZfTkFN RSAiJWQiLCAmdW5pdCkgIT0gMSkgewotLQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIGlu dGVyZmFjZSAnJXMnIHNwZWNpZmllZFxuIiwKLS0JCXByb2duYW1lLCBpbnRlcmZhY2UpOwotLSAg ICB9Ci0tCi0gI2lmbmRlZiBTVFJFQU1TCi0gICAgIHsKLSAJc3RydWN0IGlmcmVxIGlmcjsKLUBA IC01MzUsNiArNTMwLDExIEBAIG1haW4oYXJnYywgYXJndikKLSAgICAgfQotIAotICNlbHNlCS8q IFNUUkVBTVMgKi8KLSsgICAgaWYgKHNzY2FuZihpbnRlcmZhY2UsIFBQUF9EUlZfTkFNRSAiJWQi LCAmdW5pdCkgIT0gMSkgewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIGludGVyZmFj ZSAnJXMnIHNwZWNpZmllZFxuIiwKLSsJCXByb2duYW1lLCBpbnRlcmZhY2UpOwotKyAgICB9Ci0r Ci0gI2lmZGVmIF9fb3NmX18KLSAgICAgZGV2ID0gIi9kZXYvc3RyZWFtcy9wcHAiOwotICNlbHNl CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEzLXBwcGQtUmVtb3ZlLXVudXNlZC1k ZWNsYXJhdGlvbi1vZi10dHluYW1lLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMy1wcHBk LVJlbW92ZS11bnVzZWQtZGVjbGFyYXRpb24tb2YtdHR5bmFtZS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMjE5OWU3ZjdkLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAt Mi40LjcvMDAxMy1wcHBkLVJlbW92ZS11bnVzZWQtZGVjbGFyYXRpb24tb2YtdHR5bmFtZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb206IEdlb3JnZSBCdXJnZXNzIElW IDxnZW9yZ2VAZ2Jpdi5uZXQ+Ci1EYXRlOiBGcmksIDkgU2VwIDIwMTYgMTc6MzY6NTQgLTA3MDAK LVN1YmplY3Q6IFtQQVRDSF0gcHBwZDogUmVtb3ZlIHVudXNlZCBkZWNsYXJhdGlvbiBvZiB0dHlu YW1lLgotCi1TaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgQnVyZ2VzcyBJViA8Z2VvcmdlQGdiaXYubmV0 PgotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25l ZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0t Ci0gcHBwZC9tYWluLmMgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1k aWZmIC0tZ2l0IGEvcHBwZC9tYWluLmMgYi9wcHBkL21haW4uYwotaW5kZXggZjE5ODZlZDY4ZDBi Li43NmI2N2QyNDg1YjcgMTAwNjQ0Ci0tLS0gYS9wcHBkL21haW4uYwotKysrIGIvcHBwZC9tYWlu LmMKLUBAIC0yNTcsNyArMjU3LDYgQEAgc3RhdGljIHZvaWQgY2xlYW51cF9kYiBfX1AoKHZvaWQp KTsKLSBzdGF0aWMgdm9pZCBoYW5kbGVfZXZlbnRzIF9fUCgodm9pZCkpOwotIHZvaWQgcHJpbnRf bGlua19zdGF0cyBfX1AoKHZvaWQpKTsKLSAKLS1leHRlcm4JY2hhcgkqdHR5bmFtZSBfX1AoKGlu dCkpOwotIGV4dGVybgljaGFyCSpnZXRsb2dpbiBfX1AoKHZvaWQpKTsKLSBpbnQgbWFpbiBfX1Ao KGludCwgY2hhciAqW10pKTsKLSAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTQt cHBwZC1Qcm92aWRlLWVycm9yLWltcGxlbWVudGF0aW9uLWluLXBwcG9lLWRpc2NvdmVyeS5wYXRj aCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMTQtcHBwZC1Qcm92aWRlLWVycm9yLWltcGxlbWVudGF0 aW9uLWluLXBwcG9lLWRpc2NvdmVyeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMzlmYzNkNGY2Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNC1wcHBk LVByb3ZpZGUtZXJyb3ItaW1wbGVtZW50YXRpb24taW4tcHBwb2UtZGlzY292ZXJ5LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbTogU3RlZmFuIE5pY2tsIDxTdGVmYW4u Tmlja2xAZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxNjo1MjoxMiArMDIwMAot U3ViamVjdDogW1BBVENIXSBwcHBkOiBQcm92aWRlIGVycm9yKCkgaW1wbGVtZW50YXRpb24gaW4g cHBwb2UtZGlzY292ZXJ5Ci0KLVRoZSBwcHBvZS1kaXNjb3ZlcnkgcHJvZ3JhbSBjYWxscyBlcnJv cigpIGZyb20gdGhlIENIRUNLX1JPT00gbWFjcm8KLWRlZmluZWQgaW4gcHBwb2UuaC4gU2luY2Ug cHBwb2UtZGlzY292ZXJ5IGlzIGEgc3RhbmRhbG9uZSBwcm9ncmFtIG5vdAotbGlua2VkIHdpdGgg dGhlIHJlc3Qgb2YgcHBwZCwgdGhlIG9ubHkgd2F5IHRoaXMgY291bGQgYnVpbGQgaXMgYnkKLWxp bmtpbmcgdG8gZ2xpYmMncyBwcm9wcmlldGFyeSBlcnJvcigzKSBmdW5jdGlvbiBpbnN0ZWFkIG9m IHRoZSBmdW5jdGlvbgotb2YgdGhlIHNhbWUgbmFtZSAoYnV0IHdpdGggZGlmZmVyZW50IGFyZ3Vt ZW50cykgZGVmaW5lZCBpbiBwcHBkL3V0aWxzLmMuCi0KLVNvIHdpdGggZ2xpYmMgdGhpcyBidWls ZHMsIGJ1dCB3aWxsIHByb2JhYmx5IGNyYXNoIHdoZW4gdGhlIGFzc2VydGlvbiBpcwotdHJpZ2dl cmVkLiBBcyB0aGUgYXNzZXJ0aW9uIGlzIHVubGlrZWx5IHRvIGZhaWwsIG5vYm9keSBoYXMgbm90 aWNlZC4KLQotVGhlIGJ1aWxkIGhvd2V2ZXIgZmFpbHMgd2l0aCBtdXNsIGxpYmMgb3IgdUNsaWJj IHNpbmNlIHRoZXkgZG9uJ3QKLXByb3ZpZGUgdGhlIGRvcHBlbGdhbmdlci4KLQotU2lnbmVkLW9m Zi1ieTogU3RlZmFuIE5pY2tsIDxTdGVmYW4uTmlja2xAZ21haWwuY29tPgotCi1JbXBvcnRlZCBm cm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hh ZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVnaW5z L3JwLXBwcG9lL3BwcG9lLWRpc2NvdmVyeS5jIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdl ZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2Uv cHBwb2UtZGlzY292ZXJ5LmMgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UtZGlzY292ZXJ5 LmMKLWluZGV4IDNkM2JmNGVlY2M4MS4uNTUwMzdkZmZiMDIzIDEwMDY0NAotLS0tIGEvcHBwZC9w bHVnaW5zL3JwLXBwcG9lL3BwcG9lLWRpc2NvdmVyeS5jCi0rKysgYi9wcHBkL3BsdWdpbnMvcnAt cHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMKLUBAIC05LDYgKzksNyBAQAotICAqCi0gICovCi0gCi0r I2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRs aWIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1AQCAtNTUsNiArNTYsMTQgQEAgdm9pZCBkaWUo aW50IHN0YXR1cykKLSAJZXhpdChzdGF0dXMpOwotIH0KLSAKLSt2b2lkIGVycm9yKGNoYXIgKmZt dCwgLi4uKQotK3sKLSsgICAgdmFfbGlzdCBwdmFyOwotKyAgICB2YV9zdGFydChwdmFyLCBmbXQp OwotKyAgICB2ZnByaW50ZihzdGRlcnIsIGZtdCwgcHZhcik7Ci0rICAgIHZhX2VuZChwdmFyKTsK LSt9Ci0rCi0gLyogSW5pdGlhbGl6ZSBmcmFtZSB0eXBlcyB0byBSRkMgMjUxNiB2YWx1ZXMuICBT b21lIGJyb2tlbiBwZWVycyBhcHBhcmVudGx5Ci0gICAgdXNlIGRpZmZlcmVudCBmcmFtZSB0eXBl cy4uLiBzaWdoLi4uICovCi0gCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE1LXBw cG9lLWluY2x1ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoIGIvcGF0Y2hl cy9wcHAtMi40LjcvMDAxNS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgt aW4uaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI0ZTVlZjU4Li4wMDAw MDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNS1wcHBvZS1pbmNsdWRlLW5ldGluZXQt aW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAg QEAKLUZyb206IEx1Ym9taXIgUmludGVsIDxsa3VuZHJha0B2My5zaz4KLURhdGU6IE1vbiwgOSBK YW4gMjAxNyAxMzozNDoyMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBwcHBvZTogaW5jbHVkZSBu ZXRpbmV0L2luLmggYmVmb3JlIGxpbnV4L2luLmgKLQotVGhpcyBmaXhlcyBidWlsZHMgd2l0aCBu ZXdlciBrZXJuZWxzLiBCYXNpY2FsbHksIDxuZXRpbmV0L2luLmg+IG5lZWRzIHRvIGJlCi1pbmNs dWRlZCBiZWZvcmUgPGxpbnV4L2luLmg+IG90aGVyd2lzZSB0aGUgZWFybGllciwgdW5hd2FyZSBv ZiB0aGUgbGF0dGVyLAotdHJpZXMgdG8gcmVkZWZpbmUgc3ltYm9scyBhbmQgc3RydWN0dXJlcy4g QWxzbywgPGxpbnV4L2lmX3BwcG94Lmg+IGRvZXNuJ3Qgd29yawotYWxvbmUgYW55bW9yZSwgc2lu Y2UgaXQgcHVsbHMgdGhlIGhlYWRlcnMgaW4gdGhlIHdyb25nIG9yZGVyLCBzbyB3ZSBiZXR0ZXIK LWluY2x1ZGUgPG5ldGluZXQvaW4uaD4gZWFybHkuCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43 LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxt Lm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBw b2UuaCB8IDcgKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCBi L3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCi1pbmRleCA5YWIyZWVlMzkxNGMuLmM0YWFh NmU2ODg1NiAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCi0rKysg Yi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAotQEAgLTQ3LDYgKzQ3LDEwIEBACi0gI2lu Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjZW5kaWYKLSAKLSsvKiBUaGlzIGhhcyB0byBiZSBpbmNs dWRlZCBiZWZvcmUgTGludXggNC44J3MgbGludXgvaW4uaAotKyAqIGdldHMgZHJhZ2dlZCBpbi4g Ki8KLSsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKwotIC8qIFVnbHkgaGVhZGVyIGZpbGVzIG9u IHNvbWUgTGludXggYm94ZXMuLi4gKi8KLSAjaWYgZGVmaW5lZChIQVZFX0xJTlVYX0lGX0gpCi0g I2luY2x1ZGUgPGxpbnV4L2lmLmg+Ci1AQCAtODQsOCArODgsNiBAQCB0eXBlZGVmIHVuc2lnbmVk IGxvbmcgVUlOVDMyX3Q7Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0gI2VuZGlmCi0g Ci0tI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLS0KLSAjaWZkZWYgSEFWRV9ORVRJTkVUX0lGX0VU SEVSX0gKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi1AQCAtOTgsNyArMTAwLDYgQEAgdHlw ZWRlZiB1bnNpZ25lZCBsb25nIFVJTlQzMl90OwotICNlbmRpZgotIAotIAotLQotIC8qIEV0aGVy bmV0IGZyYW1lIHR5cGVzIGFjY29yZGluZyB0byBSRkMgMjUxNiAqLwotICNkZWZpbmUgRVRIX1BQ UE9FX0RJU0NPVkVSWSAweDg4NjMKLSAjZGVmaW5lIEVUSF9QUFBPRV9TRVNTSU9OICAgMHg4ODY0 CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNo IGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNi1hZGFwdGl2ZV9lY2hvcy5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYzBmMjIyODI0Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9w cHAtMi40LjcvMDAxNi1hZGFwdGl2ZV9lY2hvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcy ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRl PgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSArMDIwMAotU3ViamVjdDogW1BBVENI XSBhZGFwdGl2ZV9lY2hvcwotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4u dGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1 dHJvbml4LmRlPgotLS0tCi0gcHBwZC9sY3AuYyAgfCAxOSArKysrKysrKysrKysrKysrKysrCi0g cHBwZC9wcHBkLjggfCAgNSArKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygr KQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9sY3AuYyBiL3BwcGQvbGNwLmMKLWluZGV4IDhlZDI3Nzhi ZmI2Ny4uYzk3YTY0Yjc3NzRmIDEwMDY0NAotLS0tIGEvcHBwZC9sY3AuYwotKysrIGIvcHBwZC9s Y3AuYwotQEAgLTczLDYgKzczLDcgQEAgc3RhdGljIHZvaWQgbGNwX2RlbGF5ZWRfdXAgX19QKCh2 b2lkICopKTsKLSAgKi8KLSBpbnQJbGNwX2VjaG9faW50ZXJ2YWwgPSAwOyAJLyogSW50ZXJ2YWwg YmV0d2VlbiBMQ1AgZWNoby1yZXF1ZXN0cyAqLwotIGludAlsY3BfZWNob19mYWlscyA9IDA7CS8q IFRvbGVyYW5jZSB0byB1bmFuc3dlcmVkIGVjaG8tcmVxdWVzdHMgKi8KLStib29sCWxjcF9lY2hv X2FkYXB0aXZlID0gMDsJLyogcmVxdWVzdCBlY2hvIG9ubHkgaWYgdGhlIGxpbmsgd2FzIGlkbGUg Ki8KLSBib29sCWxheF9yZWN2ID0gMDsJCS8qIGFjY2VwdCBjb250cm9sIGNoYXJzIGluIGFzeW5j bWFwICovCi0gYm9vbAlub2VuZHBvaW50ID0gMDsJCS8qIGRvbid0IHNlbmQvYWNjZXB0IGVuZHBv aW50IGRpc2NyaW1pbmF0b3IgKi8KLSAKLUBAIC0xNTEsNiArMTUyLDggQEAgc3RhdGljIG9wdGlv bl90IGxjcF9vcHRpb25fbGlzdFtdID0gewotICAgICAgIE9QVF9QUklPIH0sCi0gICAgIHsgImxj cC1lY2hvLWludGVydmFsIiwgb19pbnQsICZsY3BfZWNob19pbnRlcnZhbCwKLSAgICAgICAiU2V0 IHRpbWUgaW4gc2Vjb25kcyBiZXR3ZWVuIExDUCBlY2hvIHJlcXVlc3RzIiwgT1BUX1BSSU8gfSwK LSsgICAgeyAibGNwLWVjaG8tYWRhcHRpdmUiLCBvX2Jvb2wsICZsY3BfZWNob19hZGFwdGl2ZSwK LSsgICAgICAiU3VwcHJlc3MgTENQIGVjaG8gcmVxdWVzdHMgaWYgdHJhZmZpYyB3YXMgcmVjZWl2 ZWQiLCAxIH0sCi0gICAgIHsgImxjcC1yZXN0YXJ0Iiwgb19pbnQsICZsY3BfZnNtWzBdLnRpbWVv dXR0aW1lLAotICAgICAgICJTZXQgdGltZSBpbiBzZWNvbmRzIGJldHdlZW4gTENQIHJldHJhbnNt aXNzaW9ucyIsIE9QVF9QUklPIH0sCi0gICAgIHsgImxjcC1tYXgtdGVybWluYXRlIiwgb19pbnQs ICZsY3BfZnNtWzBdLm1heHRlcm10cmFuc21pdHMsCi1AQCAtMjMzMSw2ICsyMzM0LDIyIEBAIExj cFNlbmRFY2hvUmVxdWVzdCAoZikKLSAJfQotICAgICB9Ci0gCi0rICAgIC8qCi0rICAgICAqIElm IGFkYXB0aXZlIGVjaG9zIGhhdmUgYmVlbiBlbmFibGVkLCBvbmx5IHNlbmQgdGhlIGVjaG8gcmVx dWVzdCBpZgotKyAgICAgKiBubyB0cmFmZmljIHdhcyByZWNlaXZlZCBzaW5jZSB0aGUgbGFzdCBv bmUuCi0rICAgICAqLwotKyAgICBpZiAobGNwX2VjaG9fYWRhcHRpdmUpIHsKLSsJc3RhdGljIHVu c2lnbmVkIGludCBsYXN0X3BrdHNfaW4gPSAwOwotKwotKwl1cGRhdGVfbGlua19zdGF0cyhmLT51 bml0KTsKLSsJbGlua19zdGF0c192YWxpZCA9IDA7Ci0rCi0rCWlmIChsaW5rX3N0YXRzLnBrdHNf aW4gIT0gbGFzdF9wa3RzX2luKSB7Ci0rCSAgICBsYXN0X3BrdHNfaW4gPSBsaW5rX3N0YXRzLnBr dHNfaW47Ci0rCSAgICByZXR1cm47Ci0rCX0KLSsgICAgfQotKwotICAgICAvKgotICAgICAgKiBN YWtlIGFuZCBzZW5kIHRoZSBlY2hvIHJlcXVlc3QgZnJhbWUuCi0gICAgICAqLwotZGlmZiAtLWdp dCBhL3BwcGQvcHBwZC44IGIvcHBwZC9wcHBkLjgKLWluZGV4IDY0NjU5Y2Y4NjdiMi4uZWM4YmZk NWMwNjE3IDEwMDY0NAotLS0tIGEvcHBwZC9wcHBkLjgKLSsrKyBiL3BwcGQvcHBwZC44Ci1AQCAt NTU4LDYgKzU1OCwxMSBAQCB0byAxKSBpZiB0aGUgXGZJcHJveHlhcnBcZlIgb3B0aW9uIGlzIHVz ZWQsIGFuZCB3aWxsIGVuYWJsZSB0aGUKLSBkeW5hbWljIElQIGFkZHJlc3Mgb3B0aW9uIChpLmUu IHNldCAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZHluYWRkciB0bwotIDEpIGluIGRlbWFuZCBtb2Rl IGlmIHRoZSBsb2NhbCBhZGRyZXNzIGNoYW5nZXMuCi0gLlRQCi0rLkIgbGNwXC1lY2hvXC1hZGFw dGl2ZQotK0lmIHRoaXMgb3B0aW9uIGlzIHVzZWQgd2l0aCB0aGUgXGZJbGNwXC1lY2hvXC1mYWls dXJlXGZSIG9wdGlvbiB0aGVuCi0rcHBwZCB3aWxsIHNlbmQgTENQIGVjaG9cLXJlcXVlc3QgZnJh bWVzIG9ubHkgaWYgbm8gdHJhZmZpYyB3YXMgcmVjZWl2ZWQKLStmcm9tIHRoZSBwZWVyIHNpbmNl IHRoZSBsYXN0IGVjaG9cLXJlcXVlc3Qgd2FzIHNlbnQuCi0rLlRQCi0gLkIgbGNwXC1lY2hvXC1m YWlsdXJlIFxmSW4KLSBJZiB0aGlzIG9wdGlvbiBpcyBnaXZlbiwgcHBwZCB3aWxsIHByZXN1bWUg dGhlIHBlZXIgdG8gYmUgZGVhZAotIGlmIFxmSW5cZlIgTENQIGVjaG9cLXJlcXVlc3RzIGFyZSBz ZW50IHdpdGhvdXQgcmVjZWl2aW5nIGEgdmFsaWQgTENQCmRpZmYgLS1naXQgYS9wYXRjaGVzL3Bw cC0yLjQuNy8wMDE3LU1ha2VmaWxlcy1jbGVhbnVwLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40Ljcv MDAxNy1NYWtlZmlsZXMtY2xlYW51cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZmY5MDk2ZjcwLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNy1NYWtl ZmlsZXMtY2xlYW51cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi1Gcm9t OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNhdCwg MjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGVzIGNs ZWFudXAKLQotRmFjdG9yLW91dCAkQ09QVFMgYW5kICRMRE9QVFMgdG8gYWxsb3cgZGlzdHJpYnV0 aW9ucyB0byBlYXNpbHkgb3ZlcnJpZGUKLXRoZW0uIFByb3Blcmx5IHVzZSAkTERGTEFHUyB3aGVu IGxpbmtpbmcgYW5kICRDRkxBR1Mgd2hlbiBjb21waWxpbmcuCi1EbyBub3Qgc3RyaXAgdGhlIGlu c3RhbGxlZCBiaW5hcmllczogdGhpcyBzaG91bGQgYmUgZG9uZSBieSB0aGUKLXBhY2thZ2luZyBz eXN0ZW0gaWYgcmVxdWlyZWQuCi0KLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGVi aWFuLnRhci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBw ZW5ndXRyb25peC5kZT4KLS0tLQotIGNoYXQvTWFrZWZpbGUubGludXggICAgICAgICAgICAgICAg ICB8ICA1ICsrKy0tCi0gcHBwZC9NYWtlZmlsZS5saW51eCAgICAgICAgICAgICAgICAgIHwgIDcg KysrKy0tLQotIHBwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eCAgICAgICAgICB8ICA0ICsrLS0K LSBwcHBkL3BsdWdpbnMvcHBwb2F0bS9NYWtlZmlsZS5saW51eCAgfCAgNCArKy0tCi0gcHBwZC9w bHVnaW5zL3BwcG9sMnRwL01ha2VmaWxlLmxpbnV4IHwgIDQgKystLQotIHBwcGQvcGx1Z2lucy9y YWRpdXMvTWFrZWZpbGUubGludXggICB8IDE2ICsrKysrKysrKy0tLS0tLS0KLSBwcHBkL3BsdWdp bnMvcnAtcHBwb2UvTWFrZWZpbGUubGludXggfCAxMCArKysrKystLS0tCi0gcHBwZHVtcC9NYWtl ZmlsZS5saW51eCAgICAgICAgICAgICAgIHwgIDkgKysrKysrLS0tCi0gcHBwc3RhdHMvTWFrZWZp bGUubGludXggICAgICAgICAgICAgIHwgIDcgKysrKy0tLQotIDkgZmlsZXMgY2hhbmdlZCwgMzgg aW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jaGF0L01ha2Vm aWxlLmxpbnV4IGIvY2hhdC9NYWtlZmlsZS5saW51eAotaW5kZXggMTA2NWFjNTE5NTc2Li5hNDFk NDg1YjQxNjggMTAwNjQ0Ci0tLS0gYS9jaGF0L01ha2VmaWxlLmxpbnV4Ci0rKysgYi9jaGF0L01h a2VmaWxlLmxpbnV4Ci1AQCAtMTIsMjAgKzEyLDIxIEBAIENERUZTPQkkKENERUYxKSAkKENERUYy KSAkKENERUYzKSAkKENERUY0KQotIAotIENPUFRTPQktTzIgLWcgLXBpcGUKLSBDRkxBR1M9CSQo Q09QVFMpICQoQ0RFRlMpCi0rTERGTEFHUz0kKExET1BUUykKLSAKLSBJTlNUQUxMPSBpbnN0YWxs Ci0gCi0gYWxsOgljaGF0Ci0gCi0gY2hhdDoJY2hhdC5vCi0tCSQoQ0MpIC1vIGNoYXQgY2hhdC5v Ci0rCSQoQ0MpICQoTERGTEFHUykgLW8gY2hhdCBjaGF0Lm8KLSAKLSBjaGF0Lm86CWNoYXQuYwot IAkkKENDKSAtYyAkKENGTEFHUykgLW8gY2hhdC5vIGNoYXQuYwotIAotIGluc3RhbGw6IGNoYXQK LSAJbWtkaXIgLXAgJChCSU5ESVIpICQoTUFORElSKQotLQkkKElOU1RBTEwpIC1zIC1jIGNoYXQg JChCSU5ESVIpCi0rCSQoSU5TVEFMTCkgLWMgY2hhdCAkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAt YyAtbSA2NDQgY2hhdC44ICQoTUFORElSKQotIAotIGNsZWFuOgotZGlmZiAtLWdpdCBhL3BwcGQv TWFrZWZpbGUubGludXggYi9wcHBkL01ha2VmaWxlLmxpbnV4Ci1pbmRleCBhNzRjOTE0ZmQzYWMu LjE2YjNlZTg3OTc5MSAxMDA2NDQKLS0tLSBhL3BwcGQvTWFrZWZpbGUubGludXgKLSsrKyBiL3Bw cGQvTWFrZWZpbGUubGludXgKLUBAIC04Myw2ICs4Myw3IEBAIElOQ0xVREVfRElSUz0gLUkuLi9p bmNsdWRlCi0gQ09NUElMRV9GTEFHUz0gLURIQVZFX1BBVEhTX0ggLURJUFhfQ0hBTkdFIC1ESEFW RV9NTUFQCi0gCi0gQ0ZMQUdTPSAkKENPUFRTKSAkKENPTVBJTEVfRkxBR1MpICQoSU5DTFVERV9E SVJTKSAnLURERVNURElSPSJAREVTVERJUkAiJwotK0xERkxBR1M9JChMRE9QVFMpCi0gCi0gaWZk ZWYgQ0hBUE1TCi0gQ0ZMQUdTICAgKz0gLURDSEFQTVM9MQotQEAgLTEwMiw3ICsxMDMsNyBAQCBp ZmRlZiBVU0VfU1JQCi0gQ0ZMQUdTCSs9IC1EVVNFX1NSUCAtRE9QRU5TU0wgLUkvdXNyL2xvY2Fs L3NzbC9pbmNsdWRlCi0gTElCUwkrPSAtbHNycCAtTC91c3IvbG9jYWwvc3NsL2xpYiAtbGNyeXB0 bwotIFRBUkdFVFMJKz0gc3JwLWVudHJ5Ci0tRVhUUkFJTlNUQUxMID0gJChJTlNUQUxMKSAtcyAt YyAtbSA1NTUgc3JwLWVudHJ5ICQoQklORElSKS9zcnAtZW50cnkKLStFWFRSQUlOU1RBTEwgPSAk KElOU1RBTEwpIC1jIC1tIDU1NSBzcnAtZW50cnkgJChCSU5ESVIpL3NycC1lbnRyeQotIE1BTlBB R0VTICs9IHNycC1lbnRyeS44Ci0gRVhUUkFDTEVBTiArPSBzcnAtZW50cnkubwotIE5FRURERVM9 eQotQEAgLTIwOCwxMyArMjA5LDEzIEBAIGFsbDogJChUQVJHRVRTKQotIGluc3RhbGw6IHBwcGQK LSAJbWtkaXIgLXAgJChCSU5ESVIpICQoTUFORElSKQotIAkkKEVYVFJBSU5TVEFMTCkKLS0JJChJ TlNUQUxMKSAtcyAtYyAtbSA1NTUgcHBwZCAkKEJJTkRJUikvcHBwZAotKwkkKElOU1RBTEwpIC1j IC1tIDU1NSBwcHBkICQoQklORElSKS9wcHBkCi0gCWlmIGNoZ3JwIHBwcHVzZXJzICQoQklORElS KS9wcHBkIDI+L2Rldi9udWxsOyB0aGVuIFwKLSAJICBjaG1vZCBvLXJ4LHUrcyAkKEJJTkRJUikv cHBwZDsgZmkKLSAJJChJTlNUQUxMKSAtYyAtbSA0NDQgcHBwZC44ICQoTUFORElSKQotIAotIHBw cGQ6ICQoUFBQRE9CSlMpCi0tCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1vIHBwcGQgJChQ UFBET0JKUykgJChMSUJTKQotKwkkKENDKSAkKExERkxBR1MpIC1vIHBwcGQgJChQUFBET0JKUykg JChMSUJTKQotIAotIHNycC1lbnRyeToJc3JwLWVudHJ5LmMKLSAJJChDQykgJChDRkxBR1MpICQo TERGTEFHUykgLW8gJEAgc3JwLWVudHJ5LmMgJChMSUJTKQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1 Z2lucy9NYWtlZmlsZS5saW51eCBiL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAotaW5kZXgg OGE5MGUzOTNhMDU3Li4wZjlkMzdkMjk1M2IgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvTWFr ZWZpbGUubGludXgKLSsrKyBiL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAotQEAgLTEsNyAr MSw3IEBACi0gI0NDCT0gZ2NjCi0gQ09QVFMJPSAtTzIgLWcKLSBDRkxBR1MJPSAkKENPUFRTKSAt SS4uIC1JLi4vLi4vaW5jbHVkZSAtZlBJQwotLUxERkxBR1MJPSAtc2hhcmVkCi0rTERGTEFHUwk9 ICQoTERPUFRTKQotIElOU1RBTEwJPSBpbnN0YWxsCi0gCi0gREVTVERJUiA9ICQoSU5TVFJPT1Qp QERFU1RESVJACi1AQCAtMzAsNyArMzAsNyBAQCBhbGw6CSQoUExVR0lOUykKLSAJZm9yIGQgaW4g JChTVUJESVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGFsbCB8fCBleGl0ICQkPzsg ZG9uZQotIAotICUuc286ICUuYwotLQkkKENDKSAtbyAkQCAkKExERkxBR1MpICQoQ0ZMQUdTKSAk XgotKwkkKENDKSAtbyAkQCAkKExERkxBR1MpIC1zaGFyZWQgJChDRkxBR1MpICReCi0gCi0gVkVS U0lPTiA9ICQoc2hlbGwgYXdrIC1GICciJyAnL1ZFUlNJT04vIHsgcHJpbnQgJCQyOyB9JyAuLi9w YXRjaGxldmVsLmgpCi0gCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZp bGUubGludXggYi9wcHBkL3BsdWdpbnMvcHBwb2F0bS9NYWtlZmlsZS5saW51eAotaW5kZXggMjBm NjJlNjMxZDIzLi4wMDI2MDNjNmNiZWYgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcHBwb2F0 bS9NYWtlZmlsZS5saW51eAotKysrIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGlu dXgKLUBAIC0xLDcgKzEsNyBAQAotICNDQwk9IGdjYwotIENPUFRTCT0gLU8yIC1nCi0gQ0ZMQUdT CT0gJChDT1BUUykgLUkuLi8uLiAtSS4uLy4uLy4uL2luY2x1ZGUgLWZQSUMKLS1MREZMQUdTCT0g LXNoYXJlZAotK0xERkxBR1MJPSAkKExET1BUUykKLSBJTlNUQUxMCT0gaW5zdGFsbAotIAotICMq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotQEAgLTMzLDcgKzMzLDcgQEAgZW5kaWYKLSBhbGw6ICQoUExVR0lOKQot IAotICQoUExVR0lOKTogJChQTFVHSU5fT0JKUykKLS0JJChDQykgJChDRkxBR1MpIC1vICRAIC1z aGFyZWQgJF4gJChMSUJTKQotKwkkKENDKSAkKExERkxBR1MpIC1vICRAIC1zaGFyZWQgJF4gJChM SUJTKQotIAotIGluc3RhbGw6IGFsbAotIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKExJQkRJUikK LWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXggYi9wcHBk L3BsdWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXgKLWluZGV4IGVhMzUzOGUyMmQ1Ni4uZGU1 Y2MxMmU3OWMzIDEwMDY0NAotLS0tIGEvcHBwZC9wbHVnaW5zL3BwcG9sMnRwL01ha2VmaWxlLmxp bnV4Ci0rKysgYi9wcHBkL3BsdWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXgKLUBAIC0xLDcg KzEsNyBAQAotICNDQwk9IGdjYwotIENPUFRTCT0gLU8yIC1nCi0gQ0ZMQUdTCT0gJChDT1BUUykg LUkuIC1JLi4vLi4gLUkuLi8uLi8uLi9pbmNsdWRlIC1mUElDCi0tTERGTEFHUwk9IC1zaGFyZWQK LStMREZMQUdTCT0gJChMRE9QVFMpCi0gSU5TVEFMTAk9IGluc3RhbGwKLSAKLSAjKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLUBAIC0xNiw3ICsxNiw3IEBAIFBMVUdJTlMgOj0gcHBwb2wydHAuc28gb3BlbmwydHAu c28KLSBhbGw6ICQoUExVR0lOUykKLSAKLSAlLnNvOiAlLm8KLS0JJChDQykgJChDRkxBR1MpIC1v ICRAIC1zaGFyZWQgJF4gJChMSUJTKQotKwkkKENDKSAkKExERkxBR1MpIC1vICRAIC1zaGFyZWQg JF4gJChMSUJTKQotIAotIGluc3RhbGw6IGFsbAotIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKExJ QkRJUikKLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4IGIv cHBwZC9wbHVnaW5zL3JhZGl1cy9NYWtlZmlsZS5saW51eAotaW5kZXggMjRlZDNlNTgwYzRkLi40 MzZmZjJmZDBjMjMgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxp bnV4Ci0rKysgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4Ci1AQCAtMTIsNyAr MTIsOSBAQCBWRVJTSU9OID0gJChzaGVsbCBhd2sgLUYgJyInICcvVkVSU0lPTi8geyBwcmludCAk JDI7IH0nIC4uLy4uL3BhdGNobGV2ZWwuaCkKLSBJTlNUQUxMCT0gaW5zdGFsbAotIAotIFBMVUdJ Tj1yYWRpdXMuc28gcmFkYXR0ci5zbyByYWRyZWFsbXMuc28KLS1DRkxBR1M9LUkuIC1JLi4vLi4g LUkuLi8uLi8uLi9pbmNsdWRlIC1PMiAtZlBJQyAtRFJDX0xPR19GQUNJTElUWT1MT0dfREFFTU9O Ci0rQ09QVFM9LWcgLU8yCi0rQ0ZMQUdTID0gJChDT1BUUykgLUkuIC1JLi4vLi4gLUkuLi8uLi8u Li9pbmNsdWRlIC1mUElDIC1EUkNfTE9HX0ZBQ0lMSVRZPUxPR19EQUVNT04KLStMREZMQUdTPSAk KExET1BUUykKLSAKLSAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGluY2x1ZGUgc3VwcG9y dCBmb3IgTWljcm9zb2Z0J3MKLSAjIE1TLUNIQVAgYXV0aGVudGljYXRpb24gcHJvdG9jb2wuCi1A QCAtMzYsMjAgKzM4LDIwIEBAIGFsbDogJChQTFVHSU4pCi0gCi0gaW5zdGFsbDogYWxsCi0gCSQo SU5TVEFMTCkgLWQgLW0gNzU1ICQoTElCRElSKQotLQkkKElOU1RBTEwpIC1zIC1jIC1tIDc1NSBy YWRpdXMuc28gJChMSUJESVIpCi0tCSQoSU5TVEFMTCkgLXMgLWMgLW0gNzU1IHJhZGF0dHIuc28g JChMSUJESVIpCi0tCSQoSU5TVEFMTCkgLXMgLWMgLW0gNzU1IHJhZHJlYWxtcy5zbyAkKExJQkRJ UikKLSsJJChJTlNUQUxMKSAtYyAtbSA3NTUgcmFkaXVzLnNvICQoTElCRElSKQotKwkkKElOU1RB TEwpIC1jIC1tIDc1NSByYWRhdHRyLnNvICQoTElCRElSKQotKwkkKElOU1RBTEwpIC1jIC1tIDc1 NSByYWRyZWFsbXMuc28gJChMSUJESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0gNDQ0IHBwcGQtcmFk aXVzLjggJChNQU5ESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0gNDQ0IHBwcGQtcmFkYXR0ci44ICQo TUFORElSKQotIAotIHJhZGl1cy5zbzogcmFkaXVzLm8gbGlicmFkaXVzY2xpZW50LmEKLS0JJChD QykgLW8gcmFkaXVzLnNvIC1zaGFyZWQgcmFkaXVzLm8gbGlicmFkaXVzY2xpZW50LmEKLSsJJChD QykgJChMREZMQUdTKSAtbyByYWRpdXMuc28gLXNoYXJlZCByYWRpdXMubyBsaWJyYWRpdXNjbGll bnQuYQotIAotIHJhZGF0dHIuc286IHJhZGF0dHIubwotLQkkKENDKSAtbyByYWRhdHRyLnNvIC1z aGFyZWQgcmFkYXR0ci5vCi0rCSQoQ0MpICQoTERGTEFHUykgLW8gcmFkYXR0ci5zbyAtc2hhcmVk IHJhZGF0dHIubwotIAotIHJhZHJlYWxtcy5zbzogcmFkcmVhbG1zLm8KLS0JJChDQykgLW8gcmFk cmVhbG1zLnNvIC1zaGFyZWQgcmFkcmVhbG1zLm8KLSsJJChDQykgJChMREZMQUdTKSAtbyByYWRy ZWFsbXMuc28gLXNoYXJlZCByYWRyZWFsbXMubwotIAotIENMSUVOVE9CSlMgPSBhdnBhaXIubyBi dWlsZHJlcS5vIGNvbmZpZy5vIGRpY3QubyBpcF91dGlsLm8gXAotIAljbGllbnRpZC5vIHNlbmRz ZXJ2ZXIubyBsb2NrLm8gdXRpbC5vIG1kNS5vCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3Jw LXBwcG9lL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL01ha2VmaWxlLmxp bnV4Ci1pbmRleCA1ZDdhMjcxOTU0NWQuLjAwZTBhZjZkYTIwYyAxMDA2NDQKLS0tLSBhL3BwcGQv cGx1Z2lucy9ycC1wcHBvZS9NYWtlZmlsZS5saW51eAotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBw cG9lL01ha2VmaWxlLmxpbnV4Ci1AQCAtMjcsMTAgKzI3LDEyIEBAIFJQX1ZFUlNJT049My44cAot IAotIENPUFRTPS1PMiAtZwotIENGTEFHUz0kKENPUFRTKSAtSS4uLy4uLy4uL2luY2x1ZGUgJy1E UlBfVkVSU0lPTj0iJChSUF9WRVJTSU9OKSInCi0rTERGTEFHUz0kKExET1BUUykKLSsKLSBhbGw6 IHJwLXBwcG9lLnNvIHBwcG9lLWRpc2NvdmVyeQotIAotIHBwcG9lLWRpc2NvdmVyeTogcHBwb2Ut ZGlzY292ZXJ5Lm8gZGVidWcubwotLQkkKENDKSAtbyBwcHBvZS1kaXNjb3ZlcnkgcHBwb2UtZGlz Y292ZXJ5Lm8gZGVidWcubwotKwkkKENDKSAkKExERkxBR1MpIC1vIHBwcG9lLWRpc2NvdmVyeSBw cHBvZS1kaXNjb3ZlcnkubyBkZWJ1Zy5vCi0gCi0gcHBwb2UtZGlzY292ZXJ5Lm86IHBwcG9lLWRp c2NvdmVyeS5jCi0gCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyBwcHBvZS1kaXNjb3ZlcnkubyBwcHBv ZS1kaXNjb3ZlcnkuYwotQEAgLTM5LDEzICs0MSwxMyBAQCBkZWJ1Zy5vOiBkZWJ1Zy5jCi0gCSQo Q0MpICQoQ0ZMQUdTKSAtYyAtbyBkZWJ1Zy5vIGRlYnVnLmMKLSAKLSBycC1wcHBvZS5zbzogcGx1 Z2luLm8gZGlzY292ZXJ5Lm8gaWYubyBjb21tb24ubwotLQkkKENDKSAtbyBycC1wcHBvZS5zbyAt c2hhcmVkIHBsdWdpbi5vIGRpc2NvdmVyeS5vIGlmLm8gY29tbW9uLm8KLSsJJChDQykgJChMREZM QUdTKSAtbyBycC1wcHBvZS5zbyAtc2hhcmVkICReCi0gCi0gaW5zdGFsbDogYWxsCi0gCSQoSU5T VEFMTCkgLWQgLW0gNzU1ICQoTElCRElSKQotLQkkKElOU1RBTEwpIC1zIC1jIC1tIDQ1NTAgcnAt cHBwb2Uuc28gJChMSUJESVIpCi0rCSQoSU5TVEFMTCkgLWMgLW0gNDU1MCBycC1wcHBvZS5zbyAk KExJQkRJUikKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChCSU5ESVIpCi0tCSQoSU5TVEFMTCkg LXMgLWMgLW0gNTU1IHBwcG9lLWRpc2NvdmVyeSAkKEJJTkRJUikKLSsJJChJTlNUQUxMKSAtYyAt bSA1NTUgcHBwb2UtZGlzY292ZXJ5ICQoQklORElSKQotIAotIGNsZWFuOgotIAlybSAtZiAqLm8g Ki5zbyBwcHBvZS1kaXNjb3ZlcnkKLWRpZmYgLS1naXQgYS9wcHBkdW1wL01ha2VmaWxlLmxpbnV4 IGIvcHBwZHVtcC9NYWtlZmlsZS5saW51eAotaW5kZXggYWMwMjhmNmJmNGYwLi42NWU1YzE0OTE0 ZmIgMTAwNjQ0Ci0tLS0gYS9wcHBkdW1wL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkdW1wL01h a2VmaWxlLmxpbnV4Ci1AQCAtMiw3ICsyLDEwIEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNU RElSQAotIEJJTkRJUiA9ICQoREVTVERJUikvc2JpbgotIE1BTkRJUiA9ICQoREVTVERJUikvc2hh cmUvbWFuL21hbjgKLSAKLS1DRkxBR1M9IC1PIC1JLi4vaW5jbHVkZS9uZXQKLStDT1BUUz0tTzIg LWcKLStDRkxBR1M9ICQoQ09QVFMpIC1JLi4vaW5jbHVkZS9uZXQKLStMREZMQUdTPSQoTERPUFRT KQotKwotIE9CSlMgPSBwcHBkdW1wLm8gYnNkLWNvbXAubyBkZWZsYXRlLm8gemxpYi5vCi0gCi0g SU5TVEFMTD0gaW5zdGFsbAotQEAgLTEwLDEyICsxMywxMiBAQCBJTlNUQUxMPSBpbnN0YWxsCi0g YWxsOglwcHBkdW1wCi0gCi0gcHBwZHVtcDogJChPQkpTKQotLQkkKENDKSAtbyBwcHBkdW1wICQo T0JKUykKLSsJJChDQykgJChMREZMQUdTKSAtbyBwcHBkdW1wICQoT0JKUykKLSAKLSBjbGVhbjoK LSAJcm0gLWYgcHBwZHVtcCAkKE9CSlMpICp+Ci0gCi0gaW5zdGFsbDoKLSAJbWtkaXIgLXAgJChC SU5ESVIpICQoTUFORElSKQotLQkkKElOU1RBTEwpIC1zIC1jIHBwcGR1bXAgJChCSU5ESVIpCi0r CSQoSU5TVEFMTCkgLWMgcHBwZHVtcCAkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAtYyAtbSA0NDQg cHBwZHVtcC44ICQoTUFORElSKQotZGlmZiAtLWdpdCBhL3BwcHN0YXRzL01ha2VmaWxlLmxpbnV4 IGIvcHBwc3RhdHMvTWFrZWZpbGUubGludXgKLWluZGV4IGNjYTZmMGY2MWQ4Ny4uOWVjOGU4MDM2 NjVhIDEwMDY0NAotLS0tIGEvcHBwc3RhdHMvTWFrZWZpbGUubGludXgKLSsrKyBiL3BwcHN0YXRz L01ha2VmaWxlLmxpbnV4Ci1AQCAtMTAsMjMgKzEwLDI0IEBAIFBQUFNUQVRTUkNTID0gcHBwc3Rh dHMuYwotIFBQUFNUQVRPQkpTID0gcHBwc3RhdHMubwotIAotICNDQyA9IGdjYwotLUNPUFRTID0g LU8KLStDT1BUUyA9IC1PMiAtZwotIENPTVBJTEVfRkxBR1MgPSAtSS4uL2luY2x1ZGUKLSBMSUJT ID0KLSAKLSBJTlNUQUxMPSBpbnN0YWxsCi0gCi0gQ0ZMQUdTID0gJChDT1BUUykgJChDT01QSUxF X0ZMQUdTKQotK0xERkxBR1M9ICQoTERPUFRTKQotIAotIGFsbDogcHBwc3RhdHMKLSAKLSBpbnN0 YWxsOiBwcHBzdGF0cwotIAktbWtkaXIgLXAgJChNQU5ESVIpCi0tCSQoSU5TVEFMTCkgLXMgLWMg cHBwc3RhdHMgJChCSU5ESVIpCi0rCSQoSU5TVEFMTCkgLWMgcHBwc3RhdHMgJChCSU5ESVIpCi0g CSQoSU5TVEFMTCkgLWMgLW0gNDQ0IHBwcHN0YXRzLjggJChNQU5ESVIpCi0gCi0gcHBwc3RhdHM6 ICQoUFBQU1RBVFNSQ1MpCi0tCSQoQ0MpICQoQ0ZMQUdTKSAtbyBwcHBzdGF0cyBwcHBzdGF0cy5j ICQoTElCUykKLSsJJChDQykgJChMREZMQUdTKSAkKENGTEFHUykgLW8gcHBwc3RhdHMgcHBwc3Rh dHMuYyAkKExJQlMpCi0gCi0gY2xlYW46Ci0gCXJtIC1mIHBwcHN0YXRzICp+ICMqIGNvcmUKZGlm ZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTgtQnVnLTMwNjI2MS1wcHBkLWRvZXMtbm90 LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24tcC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAw MTgtQnVnLTMwNjI2MS1wcHBkLWRvZXMtbm90LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24tcC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE2NjlkMTJhLi4wMDAwMDAwMDAK LS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxOC1CdWctMzA2MjYxLXBwcGQtZG9lcy1ub3QtcHJv cGVybHktY2xvc2UtZGV2LXBwcC1vbi1wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAs MCBAQAotRnJvbTogU2ltb24gUGV0ZXIgPGRuLnRscEBnbXgubmV0PgotRGF0ZTogU2F0LCAyOCBT ZXAgMjAxOSAwODoxMTo0OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBCdWcjMzA2MjYxOiBwcHBk IGRvZXMgbm90IHByb3Blcmx5IGNsb3NlIC9kZXYvcHBwIG9uIHBlcnNpc3QKLQotV2hlbiB1c2lu ZyB0aGUga2VybmVsIFBQUG9FIGRyaXZlciwgcHBwZCBuZXZlcgotY2xvc2VzIC9kZXYvcHBwIHdo ZW4gdGhlIGxpbmsgaGFzIGNvbWUgZG93bi4KLQotSXQgb3BlbnMgc3VwZXJmbHVvdXMgZmRzIHRv IHRoZSBkZXZpY2UgZWFjaCB0aW1lIGl0IHJlLW9wZW5zIHRoZQotY29ubmVjdGlvbiwgd2l0aCB0 aGUgdW5jbG9zZWQgb25lcyBmYWxzZWx5IHJlcG9ydGVkIGFsd2F5cyByZWFkeSBmb3IKLWRhdGEg Ynkgc2VsZWN0KCkuCi0KLVRoaXMgbWFrZXMgcHBwZCBlYXQgdXAgMTAwJSBDUFUgdGltZSBhZnRl ciB0aGUgZmlyc3QgcGVyc2lzdCBiZWNhdXNlIG9mCi10aGUgYWx3YXlzIGluc3RhbnRseSByZXR1 cm5pbmcgc2VsZWN0KCkgb24gdGhlIHVuY2xvc2VkIGZkcy4KLQotVGhlIHByb2JsZW0gYWxzbyBv Y2N1cnMgd2l0aCB0aGUgdXBzdHJlYW0gdmVyc2lvbiwgYnV0IGRvZXMgbm90IG9jY3VyCi13aGVu IGEgcHR5L3R0eSBkZXZpY2UgaXMgdXNlZCBmb3IgdGhlIHBwcCBjb25uZWN0aW9uLgotCi0KLQot SW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2Zm LWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQotIHBw cGQvc3lzLWxpbnV4LmMgfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspCi0KLWRpZmYgLS1naXQgYS9wcHBkL3N5cy1saW51eC5jIGIvcHBwZC9zeXMtbGludXguYwot aW5kZXggOWIyZjI5MzAyNGFjLi42ZDI5ZGM4ZTg1OTQgMTAwNjQ0Ci0tLS0gYS9wcHBkL3N5cy1s aW51eC5jCi0rKysgYi9wcHBkL3N5cy1saW51eC5jCi1AQCAtNDU4LDYgKzQ1OCwxMyBAQCBpbnQg Z2VuZXJpY19lc3RhYmxpc2hfcHBwIChpbnQgZmQpCi0gICAgIGlmIChuZXdfc3R5bGVfZHJpdmVy KSB7Ci0gCWludCBmbGFnczsKLSAKLSsgICAgICAgIC8qIGlmIGEgcHBwX2ZkIGlzIGFscmVhZHkg b3BlbiwgY2xvc2UgaXQgZmlyc3QgKi8KLSsgICAgICAgIGlmKHBwcF9mZCA+IDApIHsKLSsgICAg ICAgICAgY2xvc2UocHBwX2ZkKTsKLSsgICAgICAgICAgcmVtb3ZlX2ZkKHBwcF9mZCk7Ci0rICAg ICAgICAgIHBwcF9mZCA9IC0xOwotKyAgICAgICAgfQotKwotIAkvKiBPcGVuIGFuIGluc3RhbmNl IG9mIC9kZXYvcHBwIGFuZCBjb25uZWN0IHRoZSBjaGFubmVsIHRvIGl0ICovCi0gCWlmIChpb2N0 bChmZCwgUFBQSU9DR0NIQU4sICZjaGluZGV4KSA9PSAtMSkgewotIAkgICAgZXJyb3IoIkNvdWxk bid0IGdldCBjaGFubmVsIG51bWJlcjogJW0iKTsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIu NC43LzAwMTktQnVnLTI4NDM4Mi1wcHAtbGlua3BpZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1k ZXRhYy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMTktQnVnLTI4NDM4Mi1wcHAtbGlua3Bp ZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZjc4NWM3NWQ4Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40Ljcv MDAxOS1CdWctMjg0MzgyLXBwcC1saW5rcGlkZmlsZS1pcy1ub3QtY3JlYXRlZC11cG9uLWRldGFj LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbTogImhlcmJlcnRAZ29u ZG9yLmFwYW5hLm9yZy5hdSIgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KLURhdGU6IFNh dCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIzI4NDM4 MjogcHBwOiBsaW5rcGlkZmlsZSBpcyBub3QgY3JlYXRlZCB1cG9uIGRldGFjaG1lbnQKLQotUGFj a2FnZTogcHBwCi1WZXJzaW9uOiAyLjQuMisyMDA0MDQyOC0yCi1TZXZlcml0eTogd2lzaGxpc3QK LQotV2hlbiBwcHBkIGRldGFjaGVzIGZyb20gdGhlIHBhcmVudCBub3JtYWxseSwgdGhhdCBpcywg d2l0aG91dCBub2RldGFjaAotb3IgdXBkZXRhY2ggc2V0LCB0aGUgbGlua3BpZGZpbGUgaXMgbm90 IGNyZWF0ZWQgZXZlbiB3aGVuIGxpbmtuYW1lIGlzCi1zZXQuCi0KLVRoaXMgaXMgYmVjYXVzZSB0 aGUgY3JlYXRlX2xpbmtwaWRmaWxlIGNhbGwgaW4gZGV0YWNoKCkgaXMgb25seSBtYWRlCi1pZiB0 aGUgbGlua3BpZGZpbGUgaXMgZmlsbGVkIGluLiAgSG93ZXZlciwgbGlua3BpZGZpbGUgaXMgbmV2 ZXIgZmlsbGVkCi1pbiB1bnRpbCBjcmVhdGVfbGlua3BpZGZpbGUgaGFzIGJlZW4gY2FsbGVkLgot Ci1JTUhPIHRoZSBjYWxsIHNob3VsZCBiZSBtYWRlIHVuY29uZHRpb25hbGx5IGluIGRldGFjaCgp IHNpbmNlCi1jcmVhdGVfbGlua3BpZGZpbGUgZG9lcyBpdHMgb3duIGNoZWNrIG9uIGxpbmtuYW1l IGFueXdheS4KLQotUGxlYXNlIG5vdGUgdGhhdCB0aGUgdmVyc2lvbiBvZiBwcHBkIGluIHdvb2R5 IGFsd2F5cyB3cm90ZSB0aGUKLWxpbmtwaWRmaWxlIGFmdGVyIGRldGFjaGluZy4gIEl0IGRpZCBz byBpbiBtYWluKCkgaG93ZXZlci4gIFRoYXQKLWNhbGwgaGFzIG5vdyBiZWVuIHJlbW92ZWQgd2hp Y2ggaXMgd2h5IEknbSBzZWVpbmcgdGhpcyBwcm9ibGVtLgotCi1bLi4uXQotCi0tLQotCi1JbXBv cnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6 IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9t YWluLmMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKLWluZGV4IDc2 YjY3ZDI0ODViNy4uOGUzMTM2NWYwYzU4IDEwMDY0NAotLS0tIGEvcHBwZC9tYWluLmMKLSsrKyBi L3BwcGQvbWFpbi5jCi1AQCAtNzY1LDggKzc2NSw3IEBAIGRldGFjaCgpCi0gCS8qIHVwZGF0ZSBw aWQgZmlsZXMgaWYgdGhleSBoYXZlIGJlZW4gd3JpdHRlbiBhbHJlYWR5ICovCi0gCWlmIChwaWRm aWxlbmFtZVswXSkKLSAJICAgIGNyZWF0ZV9waWRmaWxlKHBpZCk7Ci0tCWlmIChsaW5rcGlkZmls ZVswXSkKLS0JICAgIGNyZWF0ZV9saW5rcGlkZmlsZShwaWQpOwotKwljcmVhdGVfbGlua3BpZGZp bGUocGlkKTsKLSAJZXhpdCgwKTsJCS8qIHBhcmVudCBkaWVzICovCi0gICAgIH0KLSAgICAgc2V0 c2lkKCk7CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDIyLWNvc21ldGljLWNsZWFu dXAtb2YtdGhlLXBwcG9hdG0tcGx1Z2luLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMi1j b3NtZXRpYy1jbGVhbnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZWUyMmM3NGI2Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAt Mi40LjcvMDAyMi1jb3NtZXRpYy1jbGVhbnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5v bGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSAr MDIwMAotU3ViamVjdDogW1BBVENIXSBjb3NtZXRpYyBjbGVhbnVwIG9mIHRoZSBwcHBvYXRtIHBs dWdpbgotCi1SZW1vdmVkIHNvbWUgZGVidWdnaW5nIG1lc3NhZ2VzIGFuZCBnZW5lcmFsbHkgY2xl YW5lZCB1cCB0aGUgc291cmNlLgotCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRl Ymlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hA cGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcHBwb2F0bS9wcHBvYXRtLmMgfCAy MyArKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25z KCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9wcHBvYXRt L3BwcG9hdG0uYyBiL3BwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYwotaW5kZXggYTc1NjBl OWZiMGM2Li45MGQwYzlhODVkOWYgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcHBwb2F0bS9w cHBvYXRtLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYwotQEAgLTcwLDE4 ICs3MCwyMCBAQCBzdGF0aWMgaW50IHNldGRldm5hbWVfcHBwb2F0bShjb25zdCBjaGFyICpjcCwg Y29uc3QgY2hhciAqKmFyZ3YsIGludCBkb2l0KQotIHsKLSAJc3RydWN0IHNvY2thZGRyX2F0bXB2 YyBhZGRyOwotIAlleHRlcm4gc3RydWN0IHN0YXQgZGV2c3RhdDsKLSsKLSAJaWYgKGRldmljZV9n b3Rfc2V0KQotIAkJcmV0dXJuIDA7Ci0tCS8vaW5mbygiUFBQb0FUTSBzZXRkZXZuYW1lX3BwcG9h dG06ICclcyciLCBjcCk7Ci0rCi0gCW1lbXNldCgmYWRkciwgMCwgc2l6ZW9mIGFkZHIpOwotIAlp ZiAodGV4dDJhdG0oY3AsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsIHNpemVvZihhZGRyKSwK LS0JICAgIFQyQV9QVkMgfCBUMkFfTkFNRSkgPCAwKSB7Ci0tICAgICAgICAgICAgICAgaWYoZG9p dCkKLS0gICAgICAgICAgICAgICAgICAgaW5mbygiYXRtIGRvZXMgbm90IHJlY29nbml6ZTogJXMi LCBjcCk7Ci0rCSAgICBUMkFfUFZDIHwgVDJBX05BTUUgfCBUMkFfV0lMRENBUkQpIDwgMCkgewot KwkJaWYgKGRvaXQpCi0rCQkJaW5mbygiY2Fubm90IHBhcnNlIHRoZSBBVE0gYWRkcmVzczogJXMi LCBjcCk7Ci0gCQlyZXR1cm4gMDsKLS0gICAgICAgICAgIH0KLS0JaWYgKCFkb2l0KSByZXR1cm4g MTsKLS0JLy9pZiAoIWRldl9zZXRfb2soKSkgcmV0dXJuIC0xOwotKwl9Ci0rCWlmICghZG9pdCkK LSsJCXJldHVybiAxOwotKwotIAltZW1jcHkoJnB2Y2FkZHIsICZhZGRyLCBzaXplb2YgcHZjYWRk cik7Ci0gCXN0cmxjcHkoZGV2bmFtLCBjcCwgc2l6ZW9mIGRldm5hbSk7Ci0gCWRldnN0YXQuc3Rf bW9kZSA9IFNfSUZTT0NLOwotQEAgLTkzLDcgKzk1LDYgQEAgc3RhdGljIGludCBzZXRkZXZuYW1l X3BwcG9hdG0oY29uc3QgY2hhciAqY3AsIGNvbnN0IGNoYXIgKiphcmd2LCBpbnQgZG9pdCkKLSAJ CWxjcF9hbGxvd29wdGlvbnNbMF0ubmVnX2FzeW5jbWFwID0gMDsKLSAJCWxjcF93YW50b3B0aW9u c1swXS5uZWdfcGNvbXByZXNzaW9uID0gMDsKLSAJfQotLQlpbmZvKCJQUFBvQVRNIHNldGRldm5h bWVfcHBwb2F0bSAtIFNVQ0NFU1M6JXMiLCBjcCk7Ci0gCWRldmljZV9nb3Rfc2V0ID0gMTsKLSAJ cmV0dXJuIDE7Ci0gfQotQEAgLTEwOCw2ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBub19kZXZpY2Vf Z2l2ZW5fcHBwb2F0bSh2b2lkKQotIHN0YXRpYyB2b2lkIHNldF9saW5lX2Rpc2NpcGxpbmVfcHBw b2F0bShpbnQgZmQpCi0gewotIAlzdHJ1Y3QgYXRtX2JhY2tlbmRfcHBwIGJlOwotKwotIAliZS5i YWNrZW5kX251bSA9IEFUTV9CQUNLRU5EX1BQUDsKLSAJaWYgKCFsbGNfZW5jYXBzKQotIAkJYmUu ZW5jYXBzID0gUFBQT0FUTV9FTkNBUFNfVkM7Ci1AQCAtMTE1LDYgKzExNyw3IEBAIHN0YXRpYyB2 b2lkIHNldF9saW5lX2Rpc2NpcGxpbmVfcHBwb2F0bShpbnQgZmQpCi0gCQliZS5lbmNhcHMgPSBQ UFBPQVRNX0VOQ0FQU19MTEM7Ci0gCWVsc2UKLSAJCWJlLmVuY2FwcyA9IFBQUE9BVE1fRU5DQVBT X0FVVE9ERVRFQ1Q7Ci0rCi0gCWlmIChpb2N0bChmZCwgQVRNX1NFVEJBQ0tFTkQsICZiZSkgPCAw KQotIAkJZmF0YWwoImlvY3RsKEFUTV9TRVRCQUNLRU5EKTogJW0iKTsKLSB9Ci1AQCAtMTcyLDcg KzE3NSw3IEBAIHN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RfcHBwb2F0bSh2b2lkKQotIAotIHZvaWQg cGx1Z2luX2luaXQodm9pZCkKLSB7Ci0tI2lmIGRlZmluZWQoX19saW51eF9fKQotKyNpZmRlZiBs aW51eAotIAlleHRlcm4gaW50IG5ld19zdHlsZV9kcml2ZXI7CS8qIEZyb20gc3lzLWxpbnV4LmMg Ki8KLSAJaWYgKCFwcHBfYXZhaWxhYmxlKCkgJiYgIW5ld19zdHlsZV9kcml2ZXIpCi0gCQlmYXRh bCgiS2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCBwcHBfZ2VuZXJpYyAtICIKLUBAIC0xODAsOSArMTgz LDkgQEAgdm9pZCBwbHVnaW5faW5pdCh2b2lkKQotICNlbHNlCi0gCWZhdGFsKCJObyBQUFBvQVRN IHN1cHBvcnQgb24gdGhpcyBPUyIpOwotICNlbmRpZgotLQlpbmZvKCJQUFBvQVRNIHBsdWdpbl9p bml0Iik7Ci0gCWFkZF9vcHRpb25zKHBwcG9hX29wdGlvbnMpOwotIH0KLSsKLSBzdHJ1Y3QgY2hh bm5lbCBwcHBvYV9jaGFubmVsID0gewotICAgICBvcHRpb25zOiBwcHBvYV9vcHRpb25zLAotICAg ICBwcm9jZXNzX2V4dHJhX29wdGlvbnM6IE5VTEwsCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDIzLXBwcG9lX25vYWRzLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMy1wcHBv ZV9ub2Fkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ3MTJkZTE3Li4w MDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMy1wcHBvZV9ub2Fkcy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5v bGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSAr MDIwMAotU3ViamVjdDogW1BBVENIXSBwcHBvZV9ub2FkcwotCi1JbXBvcnRlZCBmcm9tIHBwcF8y LjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmlj aCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVnaW5zL3JwLXBwcG9l L3BsdWdpbi5jIHwgMyAtLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYyBiL3BwcGQvcGx1Z2lucy9y cC1wcHBvZS9wbHVnaW4uYwotaW5kZXggYzg5YmU5NDI1MGJjLi43ODA0YjE4NGYwY2IgMTAwNjQ0 Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKLSsrKyBiL3BwcGQvcGx1Z2lu cy9ycC1wcHBvZS9wbHVnaW4uYwotQEAgLTM3Nyw5ICszNzcsNiBAQCBwbHVnaW5faW5pdCh2b2lk KQotICAgICB9Ci0gCi0gICAgIGFkZF9vcHRpb25zKE9wdGlvbnMpOwotLQotLSAgICBpbmZvKCJS UC1QUFBvRSBwbHVnaW4gdmVyc2lvbiAlcyBjb21waWxlZCBhZ2FpbnN0IHBwcGQgJXMiLAotLQkg UlBfVkVSU0lPTiwgVkVSU0lPTik7Ci0gfQotIAotIHZvaWQgcHBwb2VfY2hlY2tfb3B0aW9ucyh2 b2lkKQpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9QQVRIX0NPTk5F UlJTLXdvcmxkLXJlYWRhYmxlLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9Q QVRIX0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA1NTdiMTY5MDEuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI0 LW1ha2UtX1BBVEhfQ09OTkVSUlMtd29ybGQtcmVhZGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyNyArMCwwIEBACi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKLVN1YmplY3Q6 IFtQQVRDSF0gbWFrZSBfUEFUSF9DT05ORVJSUyB3b3JsZCByZWFkYWJsZQotCi1UaGVyZSBpcyBu b3RoaW5nIHNlY3VyaXR5LXNlbnNpdGl2ZSB0aGVyZS4KLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8y LjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmlj aCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9tYWluLmMgfCAyICstCi0g MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1n aXQgYS9wcHBkL21haW4uYyBiL3BwcGQvbWFpbi5jCi1pbmRleCA4ZTMxMzY1ZjBjNTguLmVkNTQ0 MzE1YzFkZiAxMDA2NDQKLS0tLSBhL3BwcGQvbWFpbi5jCi0rKysgYi9wcHBkL21haW4uYwotQEAg LTE2NzMsNyArMTY3Myw3IEBAIGRldmljZV9zY3JpcHQocHJvZ3JhbSwgaW4sIG91dCwgZG9udF93 YWl0KQotICAgICBpZiAobG9nX3RvX2ZkID49IDApCi0gCWVycmZkID0gbG9nX3RvX2ZkOwotICAg ICBlbHNlCi0tCWVycmZkID0gb3BlbihfUEFUSF9DT05ORVJSUywgT19XUk9OTFkgfCBPX0FQUEVO RCB8IE9fQ1JFQVQsIDA2MDApOwotKwllcnJmZCA9IG9wZW4oX1BBVEhfQ09OTkVSUlMsIE9fV1JP TkxZIHwgT19BUFBFTkQgfCBPX0NSRUFULCAwNjQ0KTsKLSAKLSAgICAgKytjb25uX3J1bm5pbmc7 Ci0gICAgIHBpZCA9IHNhZmVfZm9yayhpbiwgb3V0LCBlcnJmZCk7CmRpZmYgLS1naXQgYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDI1LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaCBiL3Bh dGNoZXMvcHBwLTIuNC43LzAwMjUtQ29ycmVjdC11bmtvd24tdW5rbm93bi10eXBvLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWJmYWY4NjkuLjAwMDAwMDAwMAotLS0gYS9w YXRjaGVzL3BwcC0yLjQuNy8wMDI1LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5v bGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSAr MDIwMAotU3ViamVjdDogW1BBVENIXSBDb3JyZWN0IHVua293biA9PiB1bmtub3duIHR5cG8KLQot QXV0aG9yOiBDaHJpcyBCb290IDxib290Y0BkZWJpYW4ub3JnPgotTGFzdC1VcGRhdGU6IDIwMTMt MDktMDkKLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0K LVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRl PgotLS0tCi0gcHBwZC9wbHVnaW5zL3JhZGl1cy9jb25maWcuYyB8IDYgKysrLS0tCi0gMSBmaWxl IGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3BwcGQvcGx1Z2lucy9yYWRpdXMvY29uZmlnLmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL2NvbmZp Zy5jCi1pbmRleCBhMjllNWU4ZGE5MDkuLmY4OTJjYTdiMWJmNSAxMDA2NDQKLS0tLSBhL3BwcGQv cGx1Z2lucy9yYWRpdXMvY29uZmlnLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvY29uZmln LmMKLUBAIC0yNzEsNyArMjcxLDcgQEAgY2hhciAqcmNfY29uZl9zdHIoY2hhciAqb3B0bmFtZSkK LSAJb3B0aW9uID0gZmluZF9vcHRpb24ob3B0bmFtZSwgT1RfU1RSKTsKLSAKLSAJaWYgKG9wdGlv biA9PSBOVUxMKQotLQkJZmF0YWwoInJjX2NvbmZfc3RyOiB1bmtvd24gY29uZmlnIG9wdGlvbiBy ZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Ci0rCQlmYXRhbCgicmNfY29uZl9zdHI6IHVua25vd24g Y29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Ci0gCQlyZXR1cm4gKGNoYXIg KilvcHRpb24tPnZhbDsKLSB9Ci0gCi1AQCAtMjgyLDcgKzI4Miw3IEBAIGludCByY19jb25mX2lu dChjaGFyICpvcHRuYW1lKQotIAlvcHRpb24gPSBmaW5kX29wdGlvbihvcHRuYW1lLCBPVF9JTlR8 T1RfQVVPKTsKLSAKLSAJaWYgKG9wdGlvbiA9PSBOVUxMKQotLQkJZmF0YWwoInJjX2NvbmZfaW50 OiB1bmtvd24gY29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Ci0rCQlmYXRh bCgicmNfY29uZl9pbnQ6IHVua25vd24gY29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0 bmFtZSk7Ci0gCXJldHVybiAqKChpbnQgKilvcHRpb24tPnZhbCk7Ci0gfQotIAotQEAgLTI5Myw3 ICsyOTMsNyBAQCBTRVJWRVIgKnJjX2NvbmZfc3J2KGNoYXIgKm9wdG5hbWUpCi0gCW9wdGlvbiA9 IGZpbmRfb3B0aW9uKG9wdG5hbWUsIE9UX1NSVik7Ci0gCi0gCWlmIChvcHRpb24gPT0gTlVMTCkK LS0JCWZhdGFsKCJyY19jb25mX3NydjogdW5rb3duIGNvbmZpZyBvcHRpb24gcmVxdWVzdGVkOiAl cyIsIG9wdG5hbWUpOwotKwkJZmF0YWwoInJjX2NvbmZfc3J2OiB1bmtub3duIGNvbmZpZyBvcHRp b24gcmVxdWVzdGVkOiAlcyIsIG9wdG5hbWUpOwotIAlyZXR1cm4gKFNFUlZFUiAqKW9wdGlvbi0+ dmFsOwotIH0KLSAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjYtcHBwb2UtY3Vz dG9tLWhvc3QtdW5pcS10YWcucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDI2LXBwcG9lLWN1 c3RvbS1ob3N0LXVuaXEtdGFnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1 Y2YyNjZkMTAuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI2LXBwcG9lLWN1 c3RvbS1ob3N0LXVuaXEtdGFnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAyICswLDAgQEAK LUZyb206IE1hdHRlbyBDcm9jZSA8bWF0dGVvQG9wZW53cnQub3JnPgotRGF0ZTogU2F0LCAyMSBO b3YgMjAxNSAxODo0NTo0MyArMDEwMAotU3ViamVjdDogW1BBVENIXSBwcHBvZTogY3VzdG9tIGhv c3QtdW5pcSB0YWcKLQotQWRkIHBwcG9lICdob3N0LXVuaXEnIG9wdGlvbiB0byBzZXQgYW4gYXJi aXRyYXJ5Ci1ob3N0LXVuaXEgdGFnIGluc3RlYWQgb2YgdGhlIHBwcGQgcGlkLgotU29tZSBJU1Bz IHVzZSBzdWNoIHRhZyB0byBhdXRoZW50aWNhdGUgdGhlIENQRSwKLXNvIGl0IG11c3QgYmUgc2V0 IHRvIGEgcHJvcGVyIHZhbHVlIHRvIGNvbm5lY3QuCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHRlbyBD cm9jZSA8bWF0dGVvQG9wZW53cnQub3JnPgotU2lnbmVkLW9mZi1ieTogSm8tUGhpbGlwcCBXaWNo IDxqb3dAb3BlbndydC5vcmc+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlh bi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvY29tbW9uLmMgICAgICAg ICAgfCAxNCArKysrLS0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvZGlzY292ZXJ5LmMgICAg ICAgfCA1MSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBwcHBkL3BsdWdpbnMv cnAtcHBwb2UvcGx1Z2luLmMgICAgICAgICAgfCAgNyArKysrLQotIHBwcGQvcGx1Z2lucy9ycC1w cHBvZS9wcHBvZS1kaXNjb3ZlcnkuYyB8IDM4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLQotIHBw cGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysr KysrKystCi0gNSBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9jb21tb24uYyBiL3BwcGQv cGx1Z2lucy9ycC1wcHBvZS9jb21tb24uYwotaW5kZXggODljNjMzYzc3M2Y5Li44ZjE3NWVjZTM0 NWIgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvY29tbW9uLmMKLSsrKyBiL3Bw cGQvcGx1Z2lucy9ycC1wcHBvZS9jb21tb24uYwotQEAgLTExOSwxNSArMTE5LDExIEBAIHNlbmRQ QURUKFBQUG9FQ29ubmVjdGlvbiAqY29ubiwgY2hhciBjb25zdCAqbXNnKQotICAgICBjb25uLT5z ZXNzaW9uID0gMDsKLSAKLSAgICAgLyogSWYgd2UncmUgdXNpbmcgSG9zdC1VbmlxLCBjb3B5IGl0 IG92ZXIgKi8KLS0gICAgaWYgKGNvbm4tPnVzZUhvc3RVbmlxKSB7Ci0tCVBQUG9FVGFnIGhvc3RV bmlxOwotLQlwaWRfdCBwaWQgPSBnZXRwaWQoKTsKLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRB R19IT1NUX1VOSVEpOwotLQlob3N0VW5pcS5sZW5ndGggPSBodG9ucyhzaXplb2YocGlkKSk7Ci0t CW1lbWNweShob3N0VW5pcS5wYXlsb2FkLCAmcGlkLCBzaXplb2YocGlkKSk7Ci0tCW1lbWNweShj dXJzb3IsICZob3N0VW5pcSwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwotLQljdXJzb3Ig Kz0gc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkU7Ci0tCXBsZW4gKz0gc2l6ZW9mKHBpZCkgKyBU QUdfSERSX1NJWkU7Ci0rICAgIGlmIChjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHsKLSsJaW50IGxl biA9IG50b2hzKGNvbm4tPmhvc3RVbmlxLmxlbmd0aCk7Ci0rCW1lbWNweShjdXJzb3IsICZjb25u LT5ob3N0VW5pcSwgbGVuICsgVEFHX0hEUl9TSVpFKTsKLSsJY3Vyc29yICs9IGxlbiArIFRBR19I RFJfU0laRTsKLSsJcGxlbiArPSBsZW4gKyBUQUdfSERSX1NJWkU7Ci0gICAgIH0KLSAKLSAgICAg LyogQ29weSBlcnJvciBtZXNzYWdlICovCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBw cG9lL2Rpc2NvdmVyeS5jIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL2Rpc2NvdmVyeS5jCi1pbmRl eCAwNDg3N2NiODI5NWYuLjVkYjhkMGRlZmMzNyAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9y cC1wcHBvZS9kaXNjb3ZlcnkuYwotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL2Rpc2NvdmVy eS5jCi1AQCAtODAsMTMgKzgwLDEwIEBAIHN0YXRpYyB2b2lkCi0gcGFyc2VGb3JIb3N0VW5pcShV SU5UMTZfdCB0eXBlLCBVSU5UMTZfdCBsZW4sIHVuc2lnbmVkIGNoYXIgKmRhdGEsCi0gCQkgdm9p ZCAqZXh0cmEpCi0gewotLSAgICBpbnQgKnZhbCA9IChpbnQgKikgZXh0cmE7Ci0tICAgIGlmICh0 eXBlID09IFRBR19IT1NUX1VOSVEgJiYgbGVuID09IHNpemVvZihwaWRfdCkpIHsKLS0JcGlkX3Qg dG1wOwotLQltZW1jcHkoJnRtcCwgZGF0YSwgbGVuKTsKLS0JaWYgKHRtcCA9PSBnZXRwaWQoKSkg ewotLQkgICAgKnZhbCA9IDE7Ci0tCX0KLSsgICAgUFBQb0VUYWcgKnRhZyA9IGV4dHJhOwotKwot KyAgICBpZiAodHlwZSA9PSBUQUdfSE9TVF9VTklRICYmIGxlbiA9PSBudG9ocyh0YWctPmxlbmd0 aCkpIHsKLSsJdGFnLT5sZW5ndGggPSBtZW1jbXAoZGF0YSwgdGFnLT5wYXlsb2FkLCBsZW4pOwot ICAgICB9Ci0gfQotIAotQEAgLTEwNCwxNiArMTAxLDE2IEBAIHBhcnNlRm9ySG9zdFVuaXEoVUlO VDE2X3QgdHlwZSwgVUlOVDE2X3QgbGVuLCB1bnNpZ25lZCBjaGFyICpkYXRhLAotIHN0YXRpYyBp bnQKLSBwYWNrZXRJc0Zvck1lKFBQUG9FQ29ubmVjdGlvbiAqY29ubiwgUFBQb0VQYWNrZXQgKnBh Y2tldCkKLSB7Ci0tICAgIGludCBmb3JNZSA9IDA7Ci0rICAgIFBQUG9FVGFnIGhvc3RVbmlxID0g Y29ubi0+aG9zdFVuaXE7Ci0gCi0gICAgIC8qIElmIHBhY2tldCBpcyBub3QgZGlyZWN0ZWQgdG8g b3VyIE1BQyBhZGRyZXNzLCBmb3JnZXQgaXQgKi8KLSAgICAgaWYgKG1lbWNtcChwYWNrZXQtPmV0 aEhkci5oX2Rlc3QsIGNvbm4tPm15RXRoLCBFVEhfQUxFTikpIHJldHVybiAwOwotIAotICAgICAv KiBJZiB3ZSdyZSBub3QgdXNpbmcgdGhlIEhvc3QtVW5pcXVlIHRhZywgdGhlbiBhY2NlcHQgdGhl IHBhY2tldCAqLwotLSAgICBpZiAoIWNvbm4tPnVzZUhvc3RVbmlxKSByZXR1cm4gMTsKLSsgICAg aWYgKCFjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHJldHVybiAxOwotIAotLSAgICBwYXJzZVBhY2tl dChwYWNrZXQsIHBhcnNlRm9ySG9zdFVuaXEsICZmb3JNZSk7Ci0tICAgIHJldHVybiBmb3JNZTsK LSsgICAgcGFyc2VQYWNrZXQocGFja2V0LCBwYXJzZUZvckhvc3RVbmlxLCAmaG9zdFVuaXEpOwot KyAgICByZXR1cm4gIWhvc3RVbmlxLmxlbmd0aDsKLSB9Ci0gCi0gLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUBA IC0zMDEsMTYgKzI5OCwxMiBAQCBzZW5kUEFESShQUFBvRUNvbm5lY3Rpb24gKmNvbm4pCi0gICAg IH0KLSAKLSAgICAgLyogSWYgd2UncmUgdXNpbmcgSG9zdC1VbmlxLCBjb3B5IGl0IG92ZXIgKi8K LS0gICAgaWYgKGNvbm4tPnVzZUhvc3RVbmlxKSB7Ci0tCVBQUG9FVGFnIGhvc3RVbmlxOwotLQlw aWRfdCBwaWQgPSBnZXRwaWQoKTsKLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRBR19IT1NUX1VO SVEpOwotLQlob3N0VW5pcS5sZW5ndGggPSBodG9ucyhzaXplb2YocGlkKSk7Ci0tCW1lbWNweSho b3N0VW5pcS5wYXlsb2FkLCAmcGlkLCBzaXplb2YocGlkKSk7Ci0tCUNIRUNLX1JPT00oY3Vyc29y LCBwYWNrZXQucGF5bG9hZCwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwotLQltZW1jcHko Y3Vyc29yLCAmaG9zdFVuaXEsIHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFKTsKLS0JY3Vyc29y ICs9IHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFOwotLQlwbGVuICs9IHNpemVvZihwaWQpICsg VEFHX0hEUl9TSVpFOwotKyAgICBpZiAoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7Ci0rCWludCBs ZW4gPSBudG9ocyhjb25uLT5ob3N0VW5pcS5sZW5ndGgpOwotKwlDSEVDS19ST09NKGN1cnNvciwg cGFja2V0LnBheWxvYWQsIGxlbiArIFRBR19IRFJfU0laRSk7Ci0rCW1lbWNweShjdXJzb3IsICZj b25uLT5ob3N0VW5pcSwgbGVuICsgVEFHX0hEUl9TSVpFKTsKLSsJY3Vyc29yICs9IGxlbiArIFRB R19IRFJfU0laRTsKLSsJcGxlbiArPSBsZW4gKyBUQUdfSERSX1NJWkU7Ci0gICAgIH0KLSAKLSAg ICAgLyogQWRkIG91ciBtYXhpbXVtIE1UVS9NUlUgKi8KLUBAIC00NzgsMTYgKzQ3MSwxMiBAQCBz ZW5kUEFEUihQUFBvRUNvbm5lY3Rpb24gKmNvbm4pCi0gICAgIGN1cnNvciArPSBuYW1lbGVuICsg VEFHX0hEUl9TSVpFOwotIAotICAgICAvKiBJZiB3ZSdyZSB1c2luZyBIb3N0LVVuaXEsIGNvcHkg aXQgb3ZlciAqLwotLSAgICBpZiAoY29ubi0+dXNlSG9zdFVuaXEpIHsKLS0JUFBQb0VUYWcgaG9z dFVuaXE7Ci0tCXBpZF90IHBpZCA9IGdldHBpZCgpOwotLQlob3N0VW5pcS50eXBlID0gaHRvbnMo VEFHX0hPU1RfVU5JUSk7Ci0tCWhvc3RVbmlxLmxlbmd0aCA9IGh0b25zKHNpemVvZihwaWQpKTsK LS0JbWVtY3B5KGhvc3RVbmlxLnBheWxvYWQsICZwaWQsIHNpemVvZihwaWQpKTsKLS0JQ0hFQ0tf Uk9PTShjdXJzb3IsIHBhY2tldC5wYXlsb2FkLCBzaXplb2YocGlkKStUQUdfSERSX1NJWkUpOwot LQltZW1jcHkoY3Vyc29yLCAmaG9zdFVuaXEsIHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFKTsK LS0JY3Vyc29yICs9IHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFOwotLQlwbGVuICs9IHNpemVv ZihwaWQpICsgVEFHX0hEUl9TSVpFOwotKyAgICBpZiAoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7 Ci0rCWludCBsZW4gPSBudG9ocyhjb25uLT5ob3N0VW5pcS5sZW5ndGgpOwotKwlDSEVDS19ST09N KGN1cnNvciwgcGFja2V0LnBheWxvYWQsIGxlbitUQUdfSERSX1NJWkUpOwotKwltZW1jcHkoY3Vy c29yLCAmY29ubi0+aG9zdFVuaXEsIGxlbiArIFRBR19IRFJfU0laRSk7Ci0rCWN1cnNvciArPSBs ZW4gKyBUQUdfSERSX1NJWkU7Ci0rCXBsZW4gKz0gbGVuICsgVEFHX0hEUl9TSVpFOwotICAgICB9 Ci0gCi0gICAgIC8qIEFkZCBvdXIgbWF4aW11bSBNVFUvTVJVICovCi1kaWZmIC0tZ2l0IGEvcHBw ZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdp bi5jCi1pbmRleCA3ODA0YjE4NGYwY2IuLjEyNzc4ZDBkOTk5MSAxMDA2NDQKLS0tLSBhL3BwcGQv cGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYwotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3Bs dWdpbi5jCi1AQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgY2hhciAqZXhpc3RpbmdTZXNzaW9uID0g TlVMTDsKLSBzdGF0aWMgaW50IHByaW50QUNOYW1lcyA9IDA7Ci0gc3RhdGljIGNoYXIgKnBwcG9l X3JlcWRfbWFjID0gTlVMTDsKLSB1bnNpZ25lZCBjaGFyIHBwcG9lX3JlcWRfbWFjX2FkZHJbNl07 Ci0rc3RhdGljIGNoYXIgKmhvc3RfdW5pcSA9IE5VTEw7Ci0gCi0gc3RhdGljIGludCBQUFBvRURl dm5hbWVIb29rKGNoYXIgKmNtZCwgY2hhciAqKmFyZ3YsIGludCBkb2l0KTsKLSBzdGF0aWMgb3B0 aW9uX3QgT3B0aW9uc1tdID0gewotQEAgLTg1LDYgKzg2LDggQEAgc3RhdGljIG9wdGlvbl90IE9w dGlvbnNbXSA9IHsKLSAgICAgICAiQmUgdmVyYm9zZSBhYm91dCBkaXNjb3ZlcmVkIGFjY2VzcyBj b25jZW50cmF0b3JzIn0sCi0gICAgIHsgInBwcG9lLW1hYyIsIG9fc3RyaW5nLCAmcHBwb2VfcmVx ZF9tYWMsCi0gICAgICAgIk9ubHkgY29ubmVjdCB0byBzcGVjaWZpZWQgTUFDIGFkZHJlc3MiIH0s Ci0rICAgIHsgImhvc3QtdW5pcSIsIG9fc3RyaW5nLCAmaG9zdF91bmlxLAotKyAgICAgICJTcGVj aWZ5IGN1c3RvbSBIb3N0LVVuaXEiIH0sCi0gICAgIHsgTlVMTCB9Ci0gfTsKLSBpbnQgKCpPbGRE ZXZuYW1lSG9vaykoY2hhciAqY21kLCBjaGFyICoqYXJndiwgaW50IGRvaXQpID0gTlVMTDsKLUBA IC0xMTAsNyArMTEzLDYgQEAgUFBQT0VJbml0RGV2aWNlKHZvaWQpCi0gICAgIGNvbm4tPmlmTmFt ZSA9IGRldm5hbTsKLSAgICAgY29ubi0+ZGlzY292ZXJ5U29ja2V0ID0gLTE7Ci0gICAgIGNvbm4t PnNlc3Npb25Tb2NrZXQgPSAtMTsKLS0gICAgY29ubi0+dXNlSG9zdFVuaXEgPSAxOwotICAgICBj b25uLT5wcmludEFDTmFtZXMgPSBwcmludEFDTmFtZXM7Ci0gICAgIGNvbm4tPmRpc2NvdmVyeVRp bWVvdXQgPSBQQURJX1RJTUVPVVQ7Ci0gICAgIHJldHVybiAxOwotQEAgLTE2Niw2ICsxNjgsOSBA QCBQUFBPRUNvbm5lY3REZXZpY2Uodm9pZCkKLSAgICAgaWYgKGxjcF93YW50b3B0aW9uc1swXS5t cnUgPiBpZnIuaWZyX210dSAtIFRPVEFMX09WRVJIRUFEKQotIAlsY3Bfd2FudG9wdGlvbnNbMF0u bXJ1ID0gaWZyLmlmcl9tdHUgLSBUT1RBTF9PVkVSSEVBRDsKLSAKLSsgICAgaWYgKGhvc3RfdW5p cSAmJiAhcGFyc2VIb3N0VW5pcShob3N0X3VuaXEsICZjb25uLT5ob3N0VW5pcSkpCi0rCWZhdGFs KCJJbGxlZ2FsIHZhbHVlIGZvciBob3N0LXVuaXEgb3B0aW9uIik7Ci0rCi0gICAgIGNvbm4tPmFj TmFtZSA9IGFjTmFtZTsKLSAgICAgY29ubi0+c2VydmljZU5hbWUgPSBwcHBkX3BwcG9lX3NlcnZp Y2U7Ci0gICAgIHN0cmxjcHkocHBwX2Rldm5hbSwgZGV2bmFtLCBzaXplb2YocHBwX2Rldm5hbSkp OwotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYyBi L3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYwotaW5kZXggNTUwMzdkZmZi MDIzLi5mZjRjNDg3ZmZhYTkgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBw b2UtZGlzY292ZXJ5LmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3Zl cnkuYwotQEAgLTM1Niw3ICszNTYsNyBAQCBwYWNrZXRJc0Zvck1lKFBQUG9FQ29ubmVjdGlvbiAq Y29ubiwgUFBQb0VQYWNrZXQgKnBhY2tldCkKLSAgICAgaWYgKG1lbWNtcChwYWNrZXQtPmV0aEhk ci5oX2Rlc3QsIGNvbm4tPm15RXRoLCBFVEhfQUxFTikpIHJldHVybiAwOwotIAotICAgICAvKiBJ ZiB3ZSdyZSBub3QgdXNpbmcgdGhlIEhvc3QtVW5pcXVlIHRhZywgdGhlbiBhY2NlcHQgdGhlIHBh Y2tldCAqLwotLSAgICBpZiAoIWNvbm4tPnVzZUhvc3RVbmlxKSByZXR1cm4gMTsKLSsgICAgaWYg KCFjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHJldHVybiAxOwotIAotICAgICBwYXJzZVBhY2tldChw YWNrZXQsIHBhcnNlRm9ySG9zdFVuaXEsICZmb3JNZSk7Ci0gICAgIHJldHVybiBmb3JNZTsKLUBA IC00ODIsMTYgKzQ4MiwxMiBAQCBzZW5kUEFESShQUFBvRUNvbm5lY3Rpb24gKmNvbm4pCi0gICAg IGN1cnNvciArPSBuYW1lbGVuICsgVEFHX0hEUl9TSVpFOwotIAotICAgICAvKiBJZiB3ZSdyZSB1 c2luZyBIb3N0LVVuaXEsIGNvcHkgaXQgb3ZlciAqLwotLSAgICBpZiAoY29ubi0+dXNlSG9zdFVu aXEpIHsKLS0JUFBQb0VUYWcgaG9zdFVuaXE7Ci0tCXBpZF90IHBpZCA9IGdldHBpZCgpOwotLQlo b3N0VW5pcS50eXBlID0gaHRvbnMoVEFHX0hPU1RfVU5JUSk7Ci0tCWhvc3RVbmlxLmxlbmd0aCA9 IGh0b25zKHNpemVvZihwaWQpKTsKLS0JbWVtY3B5KGhvc3RVbmlxLnBheWxvYWQsICZwaWQsIHNp emVvZihwaWQpKTsKLS0JQ0hFQ0tfUk9PTShjdXJzb3IsIHBhY2tldC5wYXlsb2FkLCBzaXplb2Yo cGlkKSArIFRBR19IRFJfU0laRSk7Ci0tCW1lbWNweShjdXJzb3IsICZob3N0VW5pcSwgc2l6ZW9m KHBpZCkgKyBUQUdfSERSX1NJWkUpOwotLQljdXJzb3IgKz0gc2l6ZW9mKHBpZCkgKyBUQUdfSERS X1NJWkU7Ci0tCXBsZW4gKz0gc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkU7Ci0rICAgIGlmIChj b25uLT5ob3N0VW5pcS5sZW5ndGgpIHsKLSsJaW50IGxlbiA9IG50b2hzKGNvbm4tPmhvc3RVbmlx Lmxlbmd0aCk7Ci0rCUNIRUNLX1JPT00oY3Vyc29yLCBwYWNrZXQucGF5bG9hZCwgbGVuICsgVEFH X0hEUl9TSVpFKTsKLSsJbWVtY3B5KGN1cnNvciwgJmNvbm4tPmhvc3RVbmlxLCBsZW4gKyBUQUdf SERSX1NJWkUpOwotKwljdXJzb3IgKz0gbGVuICsgVEFHX0hEUl9TSVpFOwotKwlwbGVuICs9IGxl biArIFRBR19IRFJfU0laRTsKLSAgICAgfQotIAotICAgICBwYWNrZXQubGVuZ3RoID0gaHRvbnMo cGxlbik7Ci1AQCAtNjUzLDcgKzY0OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCi0gCi0gICAgIG1lbXNldChjb25uLCAwLCBzaXplb2YoUFBQb0VDb25uZWN0aW9uKSk7Ci0g Ci0tICAgIHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJJOkQ6VlVBUzpDOmgiKSkg PiAwKSB7Ci0rICAgIHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJJOkQ6VlVXOkFT OkM6aCIpKSA+IDApIHsKLSAJc3dpdGNoKG9wdCkgewotIAljYXNlICdTJzoKLSAJICAgIGNvbm4t PnNlcnZpY2VOYW1lID0geHN0cmR1cChvcHRhcmcpOwotQEAgLTY2Miw3ICs2NTgsMjMgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgIGNvbm4tPmFjTmFtZSA9IHhzdHJk dXAob3B0YXJnKTsKLSAJICAgIGJyZWFrOwotIAljYXNlICdVJzoKLS0JICAgIGNvbm4tPnVzZUhv c3RVbmlxID0gMTsKLSsJICAgIGlmKGNvbm4tPmhvc3RVbmlxLmxlbmd0aCkgewotKwkJZnByaW50 ZihzdGRlcnIsICItVSBhbmQgLVcgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVxuIik7Ci0rCQlleGl0 KEVYSVRfRkFJTFVSRSk7Ci0rCSAgICB9Ci0rICAgICAgICAgICAgY2hhciBwaWRidWZbNV07Ci0r ICAgICAgICAgICAgc25wcmludGYocGlkYnVmLCBzaXplb2YocGlkYnVmKSwgIiUwNHgiLCBnZXRw aWQoKSk7Ci0rICAgICAgICAgICAgcGFyc2VIb3N0VW5pcShwaWRidWYsICZjb25uLT5ob3N0VW5p cSk7Ci0rCSAgICBicmVhazsKLSsJY2FzZSAnVyc6Ci0rCSAgICBpZihjb25uLT5ob3N0VW5pcS5s ZW5ndGgpIHsKLSsJCWZwcmludGYoc3RkZXJyLCAiLVUgYW5kIC1XIGFyZSBtdXR1YWxseSBleGNs dXNpdmVcbiIpOwotKwkJZXhpdChFWElUX0ZBSUxVUkUpOwotKwkgICAgfQotKwkgICAgaWYgKCFw YXJzZUhvc3RVbmlxKG9wdGFyZywgJmNvbm4tPmhvc3RVbmlxKSkgewotKyAgICAgICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgaG9zdC11bmlxIGFyZ3VtZW50OiAlc1xuIiwgb3B0 YXJnKTsKLSsgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotKyAgICAgICAgICAg IH0KLSAJICAgIGJyZWFrOwotIAljYXNlICdEJzoKLSAJICAgIGNvbm4tPmRlYnVnRmlsZSA9IGZv cGVuKG9wdGFyZywgInciKTsKLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBw b2UuaCBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCi1pbmRleCBjNGFhYTZlNjg4NTYu LjA4MDI2ZjU3NzAyOCAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5o Ci0rKysgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAotQEAgLTIxLDYgKzIxLDggQEAK LSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4JCS8qIEZvciBGSUxFICovCi0gI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgkJLyogRm9yIHBpZF90ICovCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUg PHN0cmluZy5oPgotIAotIC8qIEhvdyBkbyB3ZSBhY2Nlc3MgcmF3IEV0aGVybmV0IGRldmljZXM/ ICovCi0gI3VuZGVmIFVTRV9MSU5VWF9QQUNLRVQKLUBAIC0yMzYsNyArMjM4LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUFBQb0VDb25uZWN0aW9uU3RydWN0IHsKLSAgICAgY2hhciAqc2VydmljZU5hbWU7 CQkvKiBEZXNpcmVkIHNlcnZpY2UgbmFtZSwgaWYgYW55ICovCi0gICAgIGNoYXIgKmFjTmFtZTsJ CS8qIERlc2lyZWQgQUMgbmFtZSwgaWYgYW55ICovCi0gICAgIGludCBzeW5jaHJvbm91czsJCS8q IFVzZSBzeW5jaHJvbm91cyBQUFAgKi8KLS0gICAgaW50IHVzZUhvc3RVbmlxOwkJLyogVXNlIEhv c3QtVW5pcSB0YWcgKi8KLSsgICAgUFBQb0VUYWcgaG9zdFVuaXE7CQkvKiBVc2UgSG9zdC1Vbmlx IHRhZyAqLwotICAgICBpbnQgcHJpbnRBQ05hbWVzOwkJLyogSnVzdCBwcmludCBBQyBuYW1lcyAq LwotICAgICBGSUxFICpkZWJ1Z0ZpbGU7CQkvKiBEZWJ1ZyBmaWxlIGZvciBkdW1waW5nIHBhY2tl dHMgKi8KLSAgICAgaW50IG51bVBBRE9zOwkJLyogTnVtYmVyIG9mIFBBRE8gcGFja2V0cyByZWNl aXZlZCAqLwotQEAgLTI5Miw2ICsyOTQsMzMgQEAgdm9pZCBwcHBvZV9wcmludHBrdChQUFBvRVBh Y2tldCAqcGFja2V0LAotIAkJICAgIHZvaWQgKCpwcmludGVyKSh2b2lkICosIGNoYXIgKiwgLi4u KSwgdm9pZCAqYXJnKTsKLSB2b2lkIHBwcG9lX2xvZ19wYWNrZXQoY29uc3QgY2hhciAqcHJlZml4 LCBQUFBvRVBhY2tldCAqcGFja2V0KTsKLSAKLStzdGF0aWMgaW5saW5lIGludCBwYXJzZUhvc3RV bmlxKGNvbnN0IGNoYXIgKnVuaXEsIFBQUG9FVGFnICp0YWcpCi0rewotKyAgICBpbnQgaSwgbGVu ID0gc3RybGVuKHVuaXEpOwotKwotKyNkZWZpbmUgaGV4KHgpIFwKLSsgICAgKCgoeCkgPD0gJzkn KSA/ICgoeCkgLSAnMCcpIDogXAotKyAgICAgICAgKCgoeCkgPD0gJ0YnKSA/ICgoeCkgLSAnQScg KyAxMCkgOiBcCi0rICAgICAgICAgICAgKCh4KSAtICdhJyArIDEwKSkpCi0rCi0rICAgIGlmIChs ZW4gJSAyKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBsZW47 IGkgKz0gMikKLSsgICAgewotKyAgICAgICAgaWYgKCFpc3hkaWdpdCh1bmlxW2ldKSB8fCAhaXN4 ZGlnaXQodW5pcVtpKzFdKSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgICAgIHRh Zy0+cGF5bG9hZFtpIC8gMl0gPSAoY2hhcikoMTYgKiBoZXgodW5pcVtpXSkgKyBoZXgodW5pcVtp KzFdKSk7Ci0rICAgIH0KLSsKLSsjdW5kZWYgaGV4Ci0rCi0rICAgIHRhZy0+dHlwZSA9IGh0b25z KFRBR19IT1NUX1VOSVEpOwotKyAgICB0YWctPmxlbmd0aCA9IGh0b25zKGxlbiAvIDIpOwotKyAg ICByZXR1cm4gMTsKLSt9Ci0rCi0gI2RlZmluZSBTRVRfU1RSSU5HKHZhciwgdmFsKSBkbyB7IGlm ICh2YXIpIGZyZWUodmFyKTsgdmFyID0gc3RyRHVwKHZhbCk7IH0gd2hpbGUoMCk7Ci0gCi0gI2Rl ZmluZSBDSEVDS19ST09NKGN1cnNvciwgc3RhcnQsIGxlbikgXApkaWZmIC0tZ2l0IGEvcGF0Y2hl cy9wcHAtMi40LjcvMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuNy8wMDI3LUFkZC1yZXBsYWNlZGVmYXVsdHJvdXRlLW9wdGlvbi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlmOTMxYjEyLi4wMDAwMDAwMDAKLS0t IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24u cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjQgKzAsMCBAQAotRnJvbTogTWljaGFlbCBPbGJy aWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4 OjExOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCByZXBsYWNlZGVmYXVsdHJvdXRlIG9w dGlvbgotCi1BZGRzIGFuIG9wdGlvbiB0byBwcHBkIHRvIGNvbnRyb2wgd2hldGhlciB0byByZXBs YWNlIGV4aXN0aW5nIGRlZmF1bHQgcm91dGVzCi13aGVuIHVzaW5nIHRoZSAnZGVmYXVsdHJvdXRl JyBvcHRpb24uCi0KLUlmIGRlZmF1bHRyb3V0ZSBhbmQgcmVwbGFjZWRlZmF1bHRyb3V0ZSBhcmUg Ym90aCBzZXQsIHBwcGQgcmVwbGFjZXMgYW4gZXhpc3RpbmcKLWRlZmF1bHQgcm91dGUgd2l0aCB0 aGUgbmV3IGRlZmF1bHQgcm91dGUuIFRoZSBvbGQgZGVmYXVsdCByb3V0ZSBpcyByZXN0b3JlZCB3 aGVuCi10aGUgY29ubmVjdGlvbiBpcyB0YWtlbiBkb3duLgotCi1PcmlnaW46IHZlbmRvciwgaHR0 cHM6Ly9idWlsZC5vcGVuc3VzZS5vcmcvc291cmNlL25ldHdvcmsvcHBwL3BwcC0yLjQuMi1jaWZk ZWZyb3V0ZS5kaWZmP3Jldj03YTBmZGVmZjBiMjk0MzdkZDdmNDU4MWM5NWM3MjU1YQotRm9yd2Fy ZGVkOiBubwotUmV2aWV3ZWQtYnk6IENocmlzIEJvb3QgPGJvb3RjQGRlYmlhbi5vcmc+Ci1MYXN0 LVVwZGF0ZTogMjAxNC0wMS0yNgotCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRl Ymlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hA cGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL2lwY3AuYyAgICAgIHwgNDUgKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLQotIHBwcGQvaXBjcC5oICAgICAgfCAgMSArCi0gcHBwZC9wcHBk LjggICAgICB8IDEyICsrKysrKysrLQotIHBwcGQvcHBwZC5oICAgICAgfCAgNCArKysKLSBwcHBk L3N5cy1saW51eC5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCAy MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvaXBjcC5jIGIvcHBwZC9pcGNwLmMK LWluZGV4IGU5NzM4ZmU0ZDg5NC4uYzhmZTI3OWQ0ZWRlIDEwMDY0NAotLS0tIGEvcHBwZC9pcGNw LmMKLSsrKyBiL3BwcGQvaXBjcC5jCi1AQCAtMTk4LDYgKzE5OCwxNiBAQCBzdGF0aWMgb3B0aW9u X3QgaXBjcF9vcHRpb25fbGlzdFtdID0gewotICAgICAgICJkaXNhYmxlIGRlZmF1bHRyb3V0ZSBv cHRpb24iLCBPUFRfQUxJQVMgfCBPUFRfQTJDTFIsCi0gICAgICAgJmlwY3Bfd2FudG9wdGlvbnNb MF0uZGVmYXVsdF9yb3V0ZSB9LAotIAotKyNpZmRlZiBfX2xpbnV4X18KLSsgICAgeyAicmVwbGFj ZWRlZmF1bHRyb3V0ZSIsIG9fYm9vbCwKLSsJCQkJJmlwY3Bfd2FudG9wdGlvbnNbMF0ucmVwbGFj ZV9kZWZhdWx0X3JvdXRlLAotKyAgICAgICJSZXBsYWNlIGRlZmF1bHQgcm91dGUiLCAxCi0rICAg IH0sCi0rICAgIHsgIm5vcmVwbGFjZWRlZmF1bHRyb3V0ZSIsIG9fYm9vbCwKLSsJCQkJJmlwY3Bf YWxsb3dvcHRpb25zWzBdLnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSwKLSsgICAgICAiTmV2ZXIgcmVw bGFjZSBkZWZhdWx0IHJvdXRlIiwgT1BUX0EyQ09QWSwKLSsJCQkJJmlwY3Bfd2FudG9wdGlvbnNb MF0ucmVwbGFjZV9kZWZhdWx0X3JvdXRlIH0sCi0rI2VuZGlmCi0gICAgIHsgInByb3h5YXJwIiwg b19ib29sLCAmaXBjcF93YW50b3B0aW9uc1swXS5wcm94eV9hcnAsCi0gICAgICAgIkFkZCBwcm94 eSBBUlAgZW50cnkiLCBPUFRfRU5BQkxFfDEsICZpcGNwX2FsbG93b3B0aW9uc1swXS5wcm94eV9h cnAgfSwKLSAgICAgeyAibm9wcm94eWFycCIsIG9fYm9vbCwgJmlwY3BfYWxsb3dvcHRpb25zWzBd LnByb3h5X2FycCwKLUBAIC0yNzEsNyArMjgxLDcgQEAgc3RydWN0IHByb3RlbnQgaXBjcF9wcm90 ZW50ID0gewotICAgICBpcF9hY3RpdmVfcGt0Ci0gfTsKLSAKLS1zdGF0aWMgdm9pZCBpcGNwX2Ns ZWFyX2FkZHJzIF9fUCgoaW50LCB1X2ludDMyX3QsIHVfaW50MzJfdCkpOwotK3N0YXRpYyB2b2lk IGlwY3BfY2xlYXJfYWRkcnMgX19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQzMl90LCBib29sKSk7 Ci0gc3RhdGljIHZvaWQgaXBjcF9zY3JpcHQgX19QKChjaGFyICosIGludCkpOwkvKiBSdW4gYW4g dXAvZG93biBzY3JpcHQgKi8KLSBzdGF0aWMgdm9pZCBpcGNwX3NjcmlwdF9kb25lIF9fUCgodm9p ZCAqKSk7Ci0gCi1AQCAtMTc2MSw3ICsxNzcxLDEyIEBAIGlwX2RlbWFuZF9jb25mKHUpCi0gICAg IGlmICghc2lmbnBtb2RlKHUsIFBQUF9JUCwgTlBNT0RFX1FVRVVFKSkKLSAJcmV0dXJuIDA7Ci0g ICAgIGlmICh3by0+ZGVmYXVsdF9yb3V0ZSkKLSsjaWZuZGVmIF9fbGludXhfXwotIAlpZiAoc2lm ZGVmYXVsdHJvdXRlKHUsIHdvLT5vdXJhZGRyLCB3by0+aGlzYWRkcikpCi0rI2Vsc2UKLSsJaWYg KHNpZmRlZmF1bHRyb3V0ZSh1LCB3by0+b3VyYWRkciwgd28tPmhpc2FkZHIsCi0rCQkJCQkgICAg d28tPnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSkpCi0rI2VuZGlmCi0gCSAgICBkZWZhdWx0X3JvdXRl X3NldFt1XSA9IDE7Ci0gICAgIGlmICh3by0+cHJveHlfYXJwKQotIAlpZiAoc2lmcHJveHlhcnAo dSwgd28tPmhpc2FkZHIpKQotQEAgLTE4NDksNyArMTg2NCw4IEBAIGlwY3BfdXAoZikKLSAgICAg ICovCi0gICAgIGlmIChkZW1hbmQpIHsKLSAJaWYgKGdvLT5vdXJhZGRyICE9IHdvLT5vdXJhZGRy IHx8IGhvLT5oaXNhZGRyICE9IHdvLT5oaXNhZGRyKSB7Ci0tCSAgICBpcGNwX2NsZWFyX2FkZHJz KGYtPnVuaXQsIHdvLT5vdXJhZGRyLCB3by0+aGlzYWRkcik7Ci0rCSAgICBpcGNwX2NsZWFyX2Fk ZHJzKGYtPnVuaXQsIHdvLT5vdXJhZGRyLCB3by0+aGlzYWRkciwKLSsJCQkJICAgICAgd28tPnJl cGxhY2VfZGVmYXVsdF9yb3V0ZSk7Ci0gCSAgICBpZiAoZ28tPm91cmFkZHIgIT0gd28tPm91cmFk ZHIpIHsKLSAJCXdhcm4oIkxvY2FsIElQIGFkZHJlc3MgY2hhbmdlZCB0byAlSSIsIGdvLT5vdXJh ZGRyKTsKLSAJCXNjcmlwdF9zZXRlbnYoIk9MRElQTE9DQUwiLCBpcF9udG9hKHdvLT5vdXJhZGRy KSwgMCk7Ci1AQCAtMTg3NCw3ICsxODkwLDEyIEBAIGlwY3BfdXAoZikKLSAKLSAJICAgIC8qIGFz c2lnbiBhIGRlZmF1bHQgcm91dGUgdGhyb3VnaCB0aGUgaW50ZXJmYWNlIGlmIHJlcXVpcmVkICov Ci0gCSAgICBpZiAoaXBjcF93YW50b3B0aW9uc1tmLT51bml0XS5kZWZhdWx0X3JvdXRlKSAKLSsj aWZuZGVmIF9fbGludXhfXwotIAkJaWYgKHNpZmRlZmF1bHRyb3V0ZShmLT51bml0LCBnby0+b3Vy YWRkciwgaG8tPmhpc2FkZHIpKQotKyNlbHNlCi0rCQlpZiAoc2lmZGVmYXVsdHJvdXRlKGYtPnVu aXQsIGdvLT5vdXJhZGRyLCBoby0+aGlzYWRkciwKLSsJCQkJCSAgICAgd28tPnJlcGxhY2VfZGVm YXVsdF9yb3V0ZSkpCi0rI2VuZGlmCi0gCQkgICAgZGVmYXVsdF9yb3V0ZV9zZXRbZi0+dW5pdF0g PSAxOwotIAotIAkgICAgLyogTWFrZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICov Ci1AQCAtMTkyNCw3ICsxOTQ1LDEyIEBAIGlwY3BfdXAoZikKLSAKLSAJLyogYXNzaWduIGEgZGVm YXVsdCByb3V0ZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2UgaWYgcmVxdWlyZWQgKi8KLSAJaWYgKGlw Y3Bfd2FudG9wdGlvbnNbZi0+dW5pdF0uZGVmYXVsdF9yb3V0ZSkgCi0rI2lmbmRlZiBfX2xpbnV4 X18KLSAJICAgIGlmIChzaWZkZWZhdWx0cm91dGUoZi0+dW5pdCwgZ28tPm91cmFkZHIsIGhvLT5o aXNhZGRyKSkKLSsjZWxzZQotKwkgICAgaWYgKHNpZmRlZmF1bHRyb3V0ZShmLT51bml0LCBnby0+ b3VyYWRkciwgaG8tPmhpc2FkZHIsCi0rCQkJCQkgd28tPnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSkp Ci0rI2VuZGlmCi0gCQlkZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7Ci0gCi0gCS8qIE1h a2UgYSBwcm94eSBBUlAgZW50cnkgaWYgcmVxdWVzdGVkLiAqLwotQEAgLTIwMDIsNyArMjAyOCw3 IEBAIGlwY3BfZG93bihmKQotIAlzaWZucG1vZGUoZi0+dW5pdCwgUFBQX0lQLCBOUE1PREVfRFJP UCk7Ci0gCXNpZmRvd24oZi0+dW5pdCk7Ci0gCWlwY3BfY2xlYXJfYWRkcnMoZi0+dW5pdCwgaXBj cF9nb3RvcHRpb25zW2YtPnVuaXRdLm91cmFkZHIsCi0tCQkJIGlwY3BfaGlzb3B0aW9uc1tmLT51 bml0XS5oaXNhZGRyKTsKLSsJCQkgaXBjcF9oaXNvcHRpb25zW2YtPnVuaXRdLmhpc2FkZHIsIDAp OwotICAgICB9Ci0gCi0gICAgIC8qIEV4ZWN1dGUgdGhlIGlwLWRvd24gc2NyaXB0ICovCi1AQCAt MjAxOCwxNiArMjA0NCwyNSBAQCBpcGNwX2Rvd24oZikKLSAgKiBwcm94eSBhcnAgZW50cmllcywg ZXRjLgotICAqLwotIHN0YXRpYyB2b2lkCi0taXBjcF9jbGVhcl9hZGRycyh1bml0LCBvdXJhZGRy LCBoaXNhZGRyKQotK2lwY3BfY2xlYXJfYWRkcnModW5pdCwgb3VyYWRkciwgaGlzYWRkciwgcmVw bGFjZWRlZmF1bHRyb3V0ZSkKLSAgICAgaW50IHVuaXQ7Ci0gICAgIHVfaW50MzJfdCBvdXJhZGRy OyAgLyogbG9jYWwgYWRkcmVzcyAqLwotICAgICB1X2ludDMyX3QgaGlzYWRkcjsgIC8qIHJlbW90 ZSBhZGRyZXNzICovCi0rICAgIGJvb2wgcmVwbGFjZWRlZmF1bHRyb3V0ZTsKLSB7Ci0gICAgIGlm IChwcm94eV9hcnBfc2V0W3VuaXRdKSB7Ci0gCWNpZnByb3h5YXJwKHVuaXQsIGhpc2FkZHIpOwot IAlwcm94eV9hcnBfc2V0W3VuaXRdID0gMDsKLSAgICAgfQotLSAgICBpZiAoZGVmYXVsdF9yb3V0 ZV9zZXRbdW5pdF0pIHsKLSsgICAgLyogSWYgcmVwbGFjZWRlZmF1bHRyb3V0ZSwgc2lmZGVmYXVs dHJvdXRlIHdpbGwgYmUgY2FsbGVkIHNvb24KLSsgICAgICogd2l0aCByZXBsYWNlZGVmYXVsdHJv dXRlIHNldCBhbmQgdGhhdCB3aWxsIG92ZXJ3cml0ZSB0aGUgY3VycmVudAotKyAgICAgKiBkZWZh dWx0IHJvdXRlLiBUaGlzIGlzIHRoZSBjYXNlIG9ubHkgd2hlbiBkb2luZyBkZW1hbmQsIG90aGVy d2lzZQotKyAgICAgKiBkdXJpbmcgZGVtYW5kLCB0aGlzIGNpZmRlZmF1bHRyb3V0ZSB3b3VsZCBy ZXN0b3JlIHRoZSBvbGQgZGVmYXVsdAotKyAgICAgKiByb3V0ZSB3aGljaCBpcyBub3Qgd2hhdCB3 ZSB3YW50IGluIHRoaXMgY2FzZS4gSW4gdGhlIG5vbi1kZW1hbmQKLSsgICAgICogY2FzZSwgd2Un bGwgZGVsZXRlIHRoZSBkZWZhdWx0IHJvdXRlIGFuZCByZXN0b3JlIHRoZSBvbGQgaWYgdGhlcmUK LSsgICAgICogaXMgb25lIHNhdmVkIGJ5IGFuIHNpZmRlZmF1bHRyb3V0ZSB3aXRoIHJlcGxhY2Vk ZWZhdWx0cm91dGUuCi0rICAgICAqLwotKyAgICBpZiAoIXJlcGxhY2VkZWZhdWx0cm91dGUgJiYg ZGVmYXVsdF9yb3V0ZV9zZXRbdW5pdF0pIHsKLSAJY2lmZGVmYXVsdHJvdXRlKHVuaXQsIG91cmFk ZHIsIGhpc2FkZHIpOwotIAlkZWZhdWx0X3JvdXRlX3NldFt1bml0XSA9IDA7Ci0gICAgIH0KLWRp ZmYgLS1naXQgYS9wcHBkL2lwY3AuaCBiL3BwcGQvaXBjcC5oCi1pbmRleCA2Y2YxNGM5OTA1Nzgu LjdlY2ZhNzlkODY2OCAxMDA2NDQKLS0tLSBhL3BwcGQvaXBjcC5oCi0rKysgYi9wcHBkL2lwY3Au aAotQEAgLTcwLDYgKzcwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgaXBjcF9vcHRpb25zIHsKLSAgICAg Ym9vbCBvbGRfYWRkcnM7CQkvKiBVc2Ugb2xkIChJUC1BZGRyZXNzZXMpIG9wdGlvbj8gKi8KLSAg ICAgYm9vbCByZXFfYWRkcjsJCS8qIEFzayBwZWVyIHRvIHNlbmQgSVAgYWRkcmVzcz8gKi8KLSAg ICAgYm9vbCBkZWZhdWx0X3JvdXRlOwkJLyogQXNzaWduIGRlZmF1bHQgcm91dGUgdGhyb3VnaCBp bnRlcmZhY2U/ICovCi0rICAgIGJvb2wgcmVwbGFjZV9kZWZhdWx0X3JvdXRlOwkvKiBSZXBsYWNl IGRlZmF1bHQgcm91dGUgdGhyb3VnaCBpbnRlcmZhY2U/ICovCi0gICAgIGJvb2wgcHJveHlfYXJw OwkJLyogTWFrZSBwcm94eSBBUlAgZW50cnkgZm9yIHBlZXI/ICovCi0gICAgIGJvb2wgbmVnX3Zq OwkJLyogVmFuIEphY29ic29uIENvbXByZXNzaW9uPyAqLwotICAgICBib29sIG9sZF92ajsJCS8q IHVzZSBvbGQgKHNob3J0KSBmb3JtIG9mIFZKIG9wdGlvbj8gKi8KLWRpZmYgLS1naXQgYS9wcHBk L3BwcGQuOCBiL3BwcGQvcHBwZC44Ci1pbmRleCBlYzhiZmQ1YzA2MTcuLjQ4MWFhOGJlNjcyYiAx MDA2NDQKLS0tLSBhL3BwcGQvcHBwZC44Ci0rKysgYi9wcHBkL3BwcGQuOAotQEAgLTEyMSw2ICsx MjEsMTEgQEAgdGhlIGdhdGV3YXksIHdoZW4gSVBDUCBuZWdvdGlhdGlvbiBpcyBzdWNjZXNzZnVs bHkgY29tcGxldGVkLgotIFRoaXMgZW50cnkgaXMgcmVtb3ZlZCB3aGVuIHRoZSBQUFAgY29ubmVj dGlvbiBpcyBicm9rZW4uICBUaGlzIG9wdGlvbgotIGlzIHByaXZpbGVnZWQgaWYgdGhlIFxmSW5v ZGVmYXVsdHJvdXRlXGZSIG9wdGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0gLlRQCi0rLkIgcmVw bGFjZWRlZmF1bHRyb3V0ZQotK1RoaXMgb3B0aW9uIGlzIGEgZmxhZyB0byB0aGUgZGVmYXVsdHJv dXRlIG9wdGlvbi4gSWYgZGVmYXVsdHJvdXRlIGlzCi0rc2V0IGFuZCB0aGlzIGZsYWcgaXMgYWxz byBzZXQsIHBwcGQgcmVwbGFjZXMgYW4gZXhpc3RpbmcgZGVmYXVsdCByb3V0ZQotK3dpdGggdGhl IG5ldyBkZWZhdWx0IHJvdXRlLgotKy5UUAotIC5CIGRpc2Nvbm5lY3QgXGZJc2NyaXB0Ci0gRXhl Y3V0ZSB0aGUgY29tbWFuZCBzcGVjaWZpZWQgYnkgXGZJc2NyaXB0XGZSLCBieSBwYXNzaW5nIGl0 IHRvIGEKLSBzaGVsbCwgYWZ0ZXIKLUBAIC03MzksNyArNzQ0LDEyIEBAIGRpc2FibGUgYm90aCBm b3JtcyBvZiBoYXJkd2FyZSBmbG93IGNvbnRyb2wuCi0gLlRQCi0gLkIgbm9kZWZhdWx0cm91dGUK LSBEaXNhYmxlIHRoZSBcZklkZWZhdWx0cm91dGVcZlIgb3B0aW9uLiAgVGhlIHN5c3RlbSBhZG1p bmlzdHJhdG9yIHdobwotLXdpc2hlcyB0byBwcmV2ZW50IHVzZXJzIGZyb20gY3JlYXRpbmcgZGVm YXVsdCByb3V0ZXMgd2l0aCBwcHBkCi0rd2lzaGVzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSBhZGRp bmcgYSBkZWZhdWx0IHJvdXRlIHdpdGggcHBwZAotK2NhbiBkbyBzbyBieSBwbGFjaW5nIHRoaXMg b3B0aW9uIGluIHRoZSAvZXRjL3BwcC9vcHRpb25zIGZpbGUuCi0rLlRQCi0rLkIgbm9yZXBsYWNl ZGVmYXVsdHJvdXRlCi0rRGlzYWJsZSB0aGUgXGZJcmVwbGFjZWRlZmF1bHRyb3V0ZVxmUiBvcHRp b24uIFRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB3aG8KLSt3aXNoZXMgdG8gcHJldmVudCB1c2Vy cyBmcm9tIHJlcGxhY2luZyBhIGRlZmF1bHQgcm91dGUgd2l0aCBwcHBkCi0gY2FuIGRvIHNvIGJ5 IHBsYWNpbmcgdGhpcyBvcHRpb24gaW4gdGhlIC9ldGMvcHBwL29wdGlvbnMgZmlsZS4KLSAuVFAK LSAuQiBub2RlZmxhdGUKLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCi1p bmRleCAxYTFiZjBiOTk1ODIuLjc0OTVkZjY1N2ZlOSAxMDA2NDQKLS0tLSBhL3BwcGQvcHBwZC5o Ci0rKysgYi9wcHBkL3BwcGQuaAotQEAgLTY3Niw3ICs2NzYsMTEgQEAgaW50ICBzaWY2YWRkciBf X1AoKGludCwgZXVpNjRfdCwgZXVpNjRfdCkpOwotIGludCAgY2lmNmFkZHIgX19QKChpbnQsIGV1 aTY0X3QsIGV1aTY0X3QpKTsKLSAJCQkJLyogUmVtb3ZlIGFuIElQdjYgYWRkcmVzcyBmcm9tIGkv ZiAqLwotICNlbmRpZgotKyNpZm5kZWYgX19saW51eF9fCi0gaW50ICBzaWZkZWZhdWx0cm91dGUg X19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQzMl90KSk7Ci0rI2Vsc2UKLStpbnQgIHNpZmRlZmF1 bHRyb3V0ZSBfX1AoKGludCwgdV9pbnQzMl90LCB1X2ludDMyX3QsIGJvb2wgcmVwbGFjZV9kZWZh dWx0X3J0KSk7Ci0rI2VuZGlmCi0gCQkJCS8qIENyZWF0ZSBkZWZhdWx0IHJvdXRlIHRocm91Z2gg aS9mICovCi0gaW50ICBjaWZkZWZhdWx0cm91dGUgX19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQz Ml90KSk7Ci0gCQkJCS8qIERlbGV0ZSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggaS9mICovCi1kaWZm IC0tZ2l0IGEvcHBwZC9zeXMtbGludXguYyBiL3BwcGQvc3lzLWxpbnV4LmMKLWluZGV4IDZkMjlk YzhlODU5NC4uM2YwYmJjMzNjNjA1IDEwMDY0NAotLS0tIGEvcHBwZC9zeXMtbGludXguYwotKysr IGIvcHBwZC9zeXMtbGludXguYwotQEAgLTIwNyw2ICsyMDcsOCBAQCBzdGF0aWMgdW5zaWduZWQg Y2hhciBpbmJ1Zls1MTJdOyAvKiBidWZmZXIgZm9yIGNoYXJzIHJlYWQgZnJvbSBsb29wYmFjayAq LwotIHN0YXRpYyBpbnQJaWZfaXNfdXA7CS8qIEludGVyZmFjZSBoYXMgYmVlbiBtYXJrZWQgdXAg Ki8KLSBzdGF0aWMgaW50CWlmNl9pc191cDsJLyogSW50ZXJmYWNlIGhhcyBiZWVuIG1hcmtlZCB1 cCBmb3IgSVB2NiwgdG8gaGVscCBkaWZmZXJlbnRpYXRlICovCi0gc3RhdGljIGludAloYXZlX2Rl ZmF1bHRfcm91dGU7CS8qIEdhdGV3YXkgZm9yIGRlZmF1bHQgcm91dGUgYWRkZWQgKi8KLStzdGF0 aWMgc3RydWN0IHJ0ZW50cnkgb2xkX2RlZl9ydDsgICAgICAgLyogT2xkIGRlZmF1bHQgcm91dGUg Ki8KLStzdGF0aWMgaW50ICAgICAgIGRlZmF1bHRfcnRfcmVwbF9yZXN0OyAgLyogcmVwbGFjZSBh bmQgcmVzdG9yZSBvbGQgZGVmYXVsdCBydCAqLwotIHN0YXRpYyB1X2ludDMyX3QgcHJveHlfYXJw X2FkZHI7CS8qIEFkZHIgZm9yIHByb3h5IGFycCBlbnRyeSBhZGRlZCAqLwotIHN0YXRpYyBjaGFy IHByb3h5X2FycF9kZXZbMTZdOwkJLyogRGV2aWNlIGZvciBwcm94eSBhcnAgZW50cnkgKi8KLSBz dGF0aWMgdV9pbnQzMl90IG91cl9vbGRfYWRkcjsJCS8qIGZvciBkZXRlY3RpbmcgYWRkcmVzcyBj aGFuZ2VzICovCi1AQCAtMTU2Nyw2ICsxNTY5LDkgQEAgc3RhdGljIGludCByZWFkX3JvdXRlX3Rh YmxlKHN0cnVjdCBydGVudHJ5ICpydCkKLSAJcCA9IE5VTEw7Ci0gICAgIH0KLSAKLSsgICAgU0VU X1NBX0ZBTUlMWSAocnQtPnJ0X2RzdCwgICAgIEFGX0lORVQpOwotKyAgICBTRVRfU0FfRkFNSUxZ IChydC0+cnRfZ2F0ZXdheSwgQUZfSU5FVCk7Ci0rCi0gICAgIFNJTl9BRERSKHJ0LT5ydF9kc3Qp ID0gc3RydG91bChjb2xzW3JvdXRlX2Rlc3RfY29sXSwgTlVMTCwgMTYpOwotICAgICBTSU5fQURE UihydC0+cnRfZ2F0ZXdheSkgPSBzdHJ0b3VsKGNvbHNbcm91dGVfZ3dfY29sXSwgTlVMTCwgMTYp OwotICAgICBTSU5fQUREUihydC0+cnRfZ2VubWFzaykgPSBzdHJ0b3VsKGNvbHNbcm91dGVfbWFz a19jb2xdLCBOVUxMLCAxNik7Ci1AQCAtMTYzNiwyMiArMTY0MSw1MyBAQCBpbnQgaGF2ZV9yb3V0 ZV90byh1X2ludDMyX3QgYWRkcikKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKgotICAqIHNpZmRlZmF1bHRy b3V0ZSAtIGFzc2lnbiBhIGRlZmF1bHQgcm91dGUgdGhyb3VnaCB0aGUgYWRkcmVzcyBnaXZlbi4K LS0gKi8KLS0KLS1pbnQgc2lmZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9pbnQzMl90IG91cmFk ZHIsIHVfaW50MzJfdCBnYXRld2F5KQotLXsKLS0gICAgc3RydWN0IHJ0ZW50cnkgcnQ7Ci0tCi0t ICAgIGlmIChkZWZhdWx0cm91dGVfZXhpc3RzKCZydCkgJiYgc3RyY21wKHJ0LnJ0X2RldiwgaWZu YW1lKSAhPSAwKSB7Ci0tCWlmIChydC5ydF9mbGFncyAmIFJURl9HQVRFV0FZKQotLQkgICAgZXJy b3IoIm5vdCByZXBsYWNpbmcgZXhpc3RpbmcgZGVmYXVsdCByb3V0ZSB2aWEgJUkiLAotLQkJICBT SU5fQUREUihydC5ydF9nYXRld2F5KSk7Ci0tCWVsc2UKLS0JICAgIGVycm9yKCJub3QgcmVwbGFj aW5nIGV4aXN0aW5nIGRlZmF1bHQgcm91dGUgdGhyb3VnaCAlcyIsCi0tCQkgIHJ0LnJ0X2Rldik7 Ci0tCXJldHVybiAwOwotKyAqCi0rICogSWYgdGhlIGdsb2JhbCBkZWZhdWx0X3J0X3JlcGxfcmVz dCBmbGFnIGlzIHNldCwgdGhlbiB0aGlzIGZ1bmN0aW9uCi0rICogYWxyZWFkeSByZXBsYWNlZCB0 aGUgb3JpZ2luYWwgc3lzdGVtIGRlZmF1bHRyb3V0ZSB3aXRoIHNvbWUgb3RoZXIKLSsgKiByb3V0 ZSBhbmQgaXQgc2hvdWxkIGp1c3QgcmVwbGFjZSB0aGUgY3VycmVudCBkZWZhdWx0cm91dGUgd2l0 aAotKyAqIGFub3RoZXIgb25lLCB3aXRob3V0IHNhdmluZyB0aGUgY3VycmVudCByb3V0ZS4gVXNl OiBkZW1hbmQgbW9kZSwKLSsgKiB3aGVuIHBwcGQgc2V0cyBmaXJzdCBhIGRlZmF1bHRyb3V0ZSBp dCBpdCdzIHRlbXBvcmFyeSBwcHAwIGFkZHJlc3NlcwotKyAqIGFuZCB0aGVuIGNoYW5nZXMgdGhl IHRlbXBvcmFyeSBhZGRyZXNzZXMgdG8gdGhlIGFkZHJlc3NlcyBmb3IgdGhlIHJlYWwKLSsgKiBw cHAgY29ubmVjdGlvbiB3aGVuIGl0IGhhcyBjb21lIHVwLgotKyAqLwotKwotK2ludCBzaWZkZWZh dWx0cm91dGUgKGludCB1bml0LCB1X2ludDMyX3Qgb3VyYWRkciwgdV9pbnQzMl90IGdhdGV3YXks IGJvb2wgcmVwbGFjZSkKLSt7Ci0rICAgIHN0cnVjdCBydGVudHJ5IHJ0LCB0bXBfcnQ7Ci0rICAg IHN0cnVjdCBydGVudHJ5ICpkZWxfcnQgPSBOVUxMOwotKwotKyAgICBpZiAoZGVmYXVsdF9ydF9y ZXBsX3Jlc3QpIHsKLSsgICAgICAgLyogV2UgaGF2ZSBhbHJlYWR5IHJlY2xhY2VkIHRoZSBvcmln aW5hbCBkZWZhdWx0cm91dGUsIGlmIHdlCi0rICAgICAgICAgKiBhcmUgY2FsbGVkIGFnYWluLCB3 ZSB3aWxsIGRlbGV0ZSB0aGUgY3VycmVudCBkZWZhdWx0IHJvdXRlCi0rICAgICAgICAgKiBhbmQg c2V0IHRoZSBuZXcgZGVmYXVsdCByb3V0ZSBpbiB0aGlzIGZ1bmN0aW9uLgotKyAgICAgICAgICog LSB0aGlzIGlzIG5vcm1hbGx5IG9ubHkgdGhlIGNhc2UgdGhlIGRvaW5nIGRlbWFuZDogKi8KLSsg ICAgICAgaWYgKGRlZmF1bHRyb3V0ZV9leGlzdHMoICZ0bXBfcnQgKSkKLSsgICAgICAgICAgICAg ICBkZWxfcnQgPSAmdG1wX3J0OwotKyAgICB9IGVsc2UgaWYgKCBkZWZhdWx0cm91dGVfZXhpc3Rz KCAmb2xkX2RlZl9ydCAgICAgICAgICAgICAgICApICYmCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmNtcCggIG9sZF9kZWZfcnQucnRfZGV2LCBpZm5hbWUgKSAhPSAwKSB7Ci0rICAg ICAgIC8qIFdlIGRpZCBub3QgeWV0IHJlcGxhY2UgYW4gZXhpc3RpbmcgZGVmYXVsdCByb3V0ZSwg bGV0J3MKLSsgICAgICAgICogY2hlY2sgaWYgd2Ugc2hvdWxkIHNhdmUgYW5kIHJlcGxhY2UgYSBk ZWZhdWx0IHJvdXRlOgotKyAgICAgICAgICovCi0rICAgICAgIHVfaW50MzJfdCBvbGRfZ2F0ZXdh eSA9IFNJTl9BRERSKG9sZF9kZWZfcnQucnRfZ2F0ZXdheSk7Ci0rCi0rICAgICAgIGlmIChvbGRf Z2F0ZXdheSAhPSBnYXRld2F5KSB7Ci0rICAgICAgICAgICBpZiAoIXJlcGxhY2UpIHsKLSsgICAg ICAgICAgICAgICBlcnJvcigibm90IHJlcGxhY2luZyBkZWZhdWx0IHJvdXRlIHRvICVzIFslSV0i LAotKyAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RlZl9ydC5ydF9kZXYsIG9sZF9nYXRld2F5 KTsKLSsgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgIH0gZWxzZSB7Ci0rICAg ICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjb3B5IHJ0X2RldiBiZWNhdXNlIHdlIG5lZWQgaXQg cGVybWFuZW50IHRvbzoKLSsgICAgICAgICAgICAgICBjaGFyICogdG1wX2RldiA9IG1hbGxvYyhz dHJsZW4ob2xkX2RlZl9ydC5ydF9kZXYpKzEpOwotKyAgICAgICAgICAgICAgIHN0cmNweSh0bXBf ZGV2LCBvbGRfZGVmX3J0LnJ0X2Rldik7Ci0rICAgICAgICAgICAgICAgb2xkX2RlZl9ydC5ydF9k ZXYgPSB0bXBfZGV2OwotKwotKyAgICAgICAgICAgICAgIG5vdGljZSgicmVwbGFjaW5nIG9sZCBk ZWZhdWx0IHJvdXRlIHRvICVzIFslSV0iLAotKyAgICAgICAgICAgICAgICAgICAgICAgb2xkX2Rl Zl9ydC5ydF9kZXYsIG9sZF9nYXRld2F5KTsKLSsgICAgICAgICAgICAgICBkZWZhdWx0X3J0X3Jl cGxfcmVzdCA9IDE7Ci0rICAgICAgICAgICAgICAgZGVsX3J0ID0gJm9sZF9kZWZfcnQ7Ci0rICAg ICAgICAgICB9Ci0rICAgICAgIH0KLSAgICAgfQotLQotICAgICBtZW1zZXQgKCZydCwgMCwgc2l6 ZW9mIChydCkpOwotICAgICBTRVRfU0FfRkFNSUxZIChydC5ydF9kc3QsIEFGX0lORVQpOwotIAot QEAgLTE2NjgsNiArMTcwNCwxMiBAQCBpbnQgc2lmZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9p bnQzMl90IG91cmFkZHIsIHVfaW50MzJfdCBnYXRld2F5KQotIAkgICAgZXJyb3IoImRlZmF1bHQg cm91dGUgaW9jdGwoU0lPQ0FERFJUKTogJW0iKTsKLSAJcmV0dXJuIDA7Ci0gICAgIH0KLSsgICAg aWYgKGRlZmF1bHRfcnRfcmVwbF9yZXN0ICYmIGRlbF9ydCkKLSsgICAgICAgIGlmIChpb2N0bChz b2NrX2ZkLCBTSU9DREVMUlQsIGRlbF9ydCkgPCAwKSB7Ci0rCSAgICBpZiAoICEgb2tfZXJyb3Ig KCBlcnJubyApKQotKwkgICAgICAgIGVycm9yKCJkZWwgb2xkIGRlZmF1bHQgcm91dGUgaW9jdGwo U0lPQ0RFTFJUKTogJW0oJWQpIiwgZXJybm8pOwotKwkgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9 Ci0gCi0gICAgIGhhdmVfZGVmYXVsdF9yb3V0ZSA9IDE7Ci0gICAgIHJldHVybiAxOwotQEAgLTE3 MDMsNiArMTc0NSwxNiBAQCBpbnQgY2lmZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9pbnQzMl90 IG91cmFkZHIsIHVfaW50MzJfdCBnYXRld2F5KQotIAkgICAgcmV0dXJuIDA7Ci0gCX0KLSAgICAg fQotKyAgICBpZiAoZGVmYXVsdF9ydF9yZXBsX3Jlc3QpIHsKLSsJbm90aWNlKCJyZXN0b3Jpbmcg b2xkIGRlZmF1bHQgcm91dGUgdG8gJXMgWyVJXSIsCi0rCQkJb2xkX2RlZl9ydC5ydF9kZXYsIFNJ Tl9BRERSKG9sZF9kZWZfcnQucnRfZ2F0ZXdheSkpOwotKyAgICAgICAgaWYgKGlvY3RsKHNvY2tf ZmQsIFNJT0NBRERSVCwgJm9sZF9kZWZfcnQpIDwgMCkgewotKwkgICAgaWYgKCAhIG9rX2Vycm9y ICggZXJybm8gKSkKLSsJICAgICAgICBlcnJvcigicmVzdG9yZSBkZWZhdWx0IHJvdXRlIGlvY3Rs KFNJT0NBRERSVCk6ICVtKCVkKSIsIGVycm5vKTsKLSsJICAgIHJldHVybiAwOwotKyAgICAgICAg fQotKyAgICAgICAgZGVmYXVsdF9ydF9yZXBsX3Jlc3QgPSAwOwotKyAgICB9Ci0gCi0gICAgIHJl dHVybiAxOwotIH0KZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjktYWRkLXN1cHBv cnQtZm9yLXRoZS1GcmFtZWQtTVRVLVJhZGl1cy1hdHRyaWJ1dGUucGF0Y2ggYi9wYXRjaGVzL3Bw cC0yLjQuNy8wMDI5LWFkZC1zdXBwb3J0LWZvci10aGUtRnJhbWVkLU1UVS1SYWRpdXMtYXR0cmli dXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2QxYjc4ZTcuLjAwMDAw MDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI5LWFkZC1zdXBwb3J0LWZvci10aGUtRnJh bWVkLU1UVS1SYWRpdXMtYXR0cmlidXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAs MCBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1E YXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFk ZCBzdXBwb3J0IGZvciB0aGUgRnJhbWVkLU1UVSBSYWRpdXMgYXR0cmlidXRlCi0KLWh0dHA6Ly9w cHAuc2FtYmEub3JnL2NnaS1iaW4vcHBwLWJ1Z3MvaW5jb21pbmc/aWQ9MTUzMgotCi1Gcm9tOiBr bGVwaWtvdl9hQHVwLnVhCi1UbzogcHBwLWJ1Z3NAcHBwLnNhbWJhLm9yZwotU3ViamVjdDogUmFk aXVzIHBsdWdpbiBkb2VzIG5vdCBzZXQgTVRVIG9uIHBwcCBpbnRlcmZhY2UKLURhdGU6IE1vbiwg MjIgSmFuIDIwMDcgMTI6MzY6NTkgKzAwMDAgKEdNVCkKLQotRnVsbF9OYW1lOiBBbGV4YW5kZXIg S2xlcGlrb3YKLVZlcnNpb246IDIuNC4zCi1PUzogcmhsIDcuMyAoMi40LjIwLTI4LjdiaWdtZW0p Ci1TdWJtaXNzaW9uIGZyb206IChOVUxMKSAoMjEzLjEzMC4yMS43MykKLQotCi1UaGlzIHBhdGNo IGFsbG93cyByYWRpdXMgcGx1Z2luIHRvIGRlYWwgd2l0aCBGcmFtZWQtTVRVIFJhZGl1cyBhdHRy aWJ1dGUgYW5kIHRvCi1zZXQgTVRVIG9uIGludGVyZmFjZS4KLQotCi1JbXBvcnRlZCBmcm9tIHBw cF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xi cmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVnaW5zL3JhZGl1 cy9yYWRpdXMuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1k aWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMuYyBiL3BwcGQvcGx1Z2lucy9y YWRpdXMvcmFkaXVzLmMKLWluZGV4IDRiYTVmNTIzZWEwNy4uMDZlMDA1OTBiNjM1IDEwMDY0NAot LS0tIGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMuYwotKysrIGIvcHBwZC9wbHVnaW5zL3Jh ZGl1cy9yYWRpdXMuYwotQEAgLTY1MSw2ICs2NTEsOSBAQCByYWRpdXNfc2V0cGFyYW1zKFZBTFVF X1BBSVIgKnZwLCBjaGFyICptc2csIFJFUVVFU1RfSU5GTyAqcmVxX2luZm8sCi0gCQkgICAgbWVt Y3B5KHJzdGF0ZS5jbGFzcywgdnAtPnN0cnZhbHVlLCByc3RhdGUuY2xhc3NfbGVuKTsKLSAJCX0g LyogZWxzZSB0b28gYmlnIGZvciBvdXIgYnVmZmVyIC0gaWdub3JlIGl0ICovCi0gCQlicmVhazsK LSsJICAgIGNhc2UgUFdfRlJBTUVEX01UVToKLSsJCW5ldGlmX3NldF9tdHUocnN0YXRlLmNsaWVu dF9wb3J0LE1JTihuZXRpZl9nZXRfbXR1KHJzdGF0ZS5jbGllbnRfcG9ydCksdnAtPmx2YWx1ZSkp OwotKwkJYnJlYWs7Ci0gCSAgICB9Ci0gCi0gCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDMwLTAxOF9pcC11cF9vcHRpb24ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDMwLTAx OF9pcC11cF9vcHRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2Y2Iy ZTViYi4uMDAwMDAwMDAwCi0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzAtMDE4X2lwLXVwX29w dGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1Gcm9tOiBNaWNoYWVs IE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIw MTkgMDg6MTE6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gMDE4X2lwIHVwX29wdGlvbgotCi1J bXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYt Ynk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBw ZC9pcGNwLmMgICAgfCA4ICsrKystLS0tCi0gcHBwZC9tYWluLmMgICAgfCAzICsrKwotIHBwcGQv b3B0aW9ucy5jIHwgOSArKysrKysrKysKLSBwcHBkL3BwcGQuaCAgICB8IDIgKysKLSA0IGZpbGVz IGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQg YS9wcHBkL2lwY3AuYyBiL3BwcGQvaXBjcC5jCi1pbmRleCBkY2VjYTgwNzU0MmEuLmQ2ZTBlMmE2 OTlmZSAxMDA2NDQKLS0tLSBhL3BwcGQvaXBjcC5jCi0rKysgYi9wcHBkL2lwY3AuYwotQEAgLTE5 ODQsNyArMTk4NCw3IEBAIGlwY3BfdXAoZikKLSAgICAgICovCi0gICAgIGlmIChpcGNwX3Njcmlw dF9zdGF0ZSA9PSBzX2Rvd24gJiYgaXBjcF9zY3JpcHRfcGlkID09IDApIHsKLSAJaXBjcF9zY3Jp cHRfc3RhdGUgPSBzX3VwOwotLQlpcGNwX3NjcmlwdChfUEFUSF9JUFVQLCAwKTsKLSsJaXBjcF9z Y3JpcHQocGF0aF9pcHVwLCAwKTsKLSAgICAgfQotIH0KLSAKLUBAIC0yMDM0LDcgKzIwMzQsNyBA QCBpcGNwX2Rvd24oZikKLSAgICAgLyogRXhlY3V0ZSB0aGUgaXAtZG93biBzY3JpcHQgKi8KLSAg ICAgaWYgKGlwY3Bfc2NyaXB0X3N0YXRlID09IHNfdXAgJiYgaXBjcF9zY3JpcHRfcGlkID09IDAp IHsKLSAJaXBjcF9zY3JpcHRfc3RhdGUgPSBzX2Rvd247Ci0tCWlwY3Bfc2NyaXB0KF9QQVRIX0lQ RE9XTiwgMCk7Ci0rCWlwY3Bfc2NyaXB0KHBhdGhfaXBkb3duLCAwKTsKLSAgICAgfQotIH0KLSAK LUBAIC0yMDk3LDEzICsyMDk3LDEzIEBAIGlwY3Bfc2NyaXB0X2RvbmUoYXJnKQotICAgICBjYXNl IHNfdXA6Ci0gCWlmIChpcGNwX2ZzbVswXS5zdGF0ZSAhPSBPUEVORUQpIHsKLSAJICAgIGlwY3Bf c2NyaXB0X3N0YXRlID0gc19kb3duOwotLQkgICAgaXBjcF9zY3JpcHQoX1BBVEhfSVBET1dOLCAw KTsKLSsJICAgIGlwY3Bfc2NyaXB0KHBhdGhfaXBkb3duLCAwKTsKLSAJfQotIAlicmVhazsKLSAg ICAgY2FzZSBzX2Rvd246Ci0gCWlmIChpcGNwX2ZzbVswXS5zdGF0ZSA9PSBPUEVORUQpIHsKLSAJ ICAgIGlwY3Bfc2NyaXB0X3N0YXRlID0gc191cDsKLS0JICAgIGlwY3Bfc2NyaXB0KF9QQVRIX0lQ VVAsIDApOwotKwkgICAgaXBjcF9zY3JpcHQocGF0aF9pcHVwLCAwKTsKLSAJfQotIAlicmVhazsK LSAgICAgfQotZGlmZiAtLWdpdCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKLWluZGV4IGVk NTQ0MzE1YzFkZi4uOTE2NGExZWIwZjk1IDEwMDY0NAotLS0tIGEvcHBwZC9tYWluLmMKLSsrKyBi L3BwcGQvbWFpbi5jCi1AQCAtMzA4LDYgKzMwOCw5IEBAIG1haW4oYXJnYywgYXJndikKLSAgICAg c3RydWN0IHByb3RlbnQgKnByb3RwOwotICAgICBjaGFyIG51bWJ1ZlsxNl07Ci0gCi0rICAgIHN0 cmxjcHkocGF0aF9pcHVwLCBfUEFUSF9JUFVQLCBzaXplb2YocGF0aF9pcHVwKSk7Ci0rICAgIHN0 cmxjcHkocGF0aF9pcGRvd24sIF9QQVRIX0lQRE9XTiwgc2l6ZW9mKHBhdGhfaXBkb3duKSk7Ci0r Ci0gICAgIGxpbmtfc3RhdHNfdmFsaWQgPSAwOwotICAgICBuZXdfcGhhc2UoUEhBU0VfSU5JVElB TElaRSk7Ci0gCi1kaWZmIC0tZ2l0IGEvcHBwZC9vcHRpb25zLmMgYi9wcHBkL29wdGlvbnMuYwot aW5kZXggOTFkYTUxNWFjNTMzLi5hOGYzYWE0NTkwYTMgMTAwNjQ0Ci0tLS0gYS9wcHBkL29wdGlv bnMuYwotKysrIGIvcHBwZC9vcHRpb25zLmMKLUBAIC0xMTQsNiArMTE0LDggQEAgY2hhcglsaW5r bmFtZVtNQVhQQVRITEVOXTsJLyogbG9naWNhbCBuYW1lIGZvciBsaW5rICovCi0gYm9vbAl0dW5l X2tlcm5lbDsJCS8qIG1heSBhbHRlciBrZXJuZWwgc2V0dGluZ3MgKi8KLSBpbnQJY29ubmVjdF9k ZWxheSA9IDEwMDA7CS8qIHdhaXQgdGhpcyBtYW55IG1zIGFmdGVyIGNvbm5lY3Qgc2NyaXB0ICov Ci0gaW50CXJlcV91bml0ID0gLTE7CQkvKiByZXF1ZXN0ZWQgaW50ZXJmYWNlIHVuaXQgKi8KLStj aGFyCXBhdGhfaXB1cFtNQVhQQVRITEVOXTsJLyogcGF0aG5hbWUgb2YgaXAtdXAgc2NyaXB0ICov Ci0rY2hhcglwYXRoX2lwZG93bltNQVhQQVRITEVOXTsvKiBwYXRobmFtZSBvZiBpcC1kb3duIHNj cmlwdCAqLwotIGNoYXIJcmVxX2lmbmFtZVtNQVhJRk5BTUVMRU5dOwkvKiByZXF1ZXN0ZWQgaW50 ZXJmYWNlIG5hbWUgKi8KLSBib29sCW11bHRpbGluayA9IDA7CQkvKiBFbmFibGUgbXVsdGlsaW5r IG9wZXJhdGlvbiAqLwotIGNoYXIJKmJ1bmRsZV9uYW1lID0gTlVMTDsJLyogYnVuZGxlIG5hbWUg Zm9yIG11bHRpbGluayAqLwotQEAgLTMwNCw2ICszMDYsMTMgQEAgb3B0aW9uX3QgZ2VuZXJhbF9v cHRpb25zW10gPSB7Ci0gICAgICAgIlVuc2V0IHVzZXIgZW52aXJvbm1lbnQgdmFyaWFibGUiLAot ICAgICAgIE9QVF9BMlBSSU5URVIgfCBPUFRfTk9QUklOVCwgKHZvaWQgKil1c2VyX3Vuc2V0cHJp bnQgfSwKLSAKLSsgICAgeyAiaXAtdXAtc2NyaXB0Iiwgb19zdHJpbmcsIHBhdGhfaXB1cCwKLSsg ICAgICAiU2V0IHBhdGhuYW1lIG9mIGlwLXVwIHNjcmlwdCIsCi0rICAgICAgT1BUX1BSSVZ8T1BU X1NUQVRJQywgTlVMTCwgTUFYUEFUSExFTiB9LAotKyAgICB7ICJpcC1kb3duLXNjcmlwdCIsIG9f c3RyaW5nLCBwYXRoX2lwZG93biwKLSsgICAgICAiU2V0IHBhdGhuYW1lIG9mIGlwLWRvd24gc2Ny aXB0IiwKLSsgICAgICBPUFRfUFJJVnxPUFRfU1RBVElDLCBOVUxMLCBNQVhQQVRITEVOIH0sCi0r Ci0gI2lmZGVmIEhBVkVfTVVMVElMSU5LCi0gICAgIHsgIm11bHRpbGluayIsIG9fYm9vbCwgJm11 bHRpbGluaywKLSAgICAgICAiRW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24iLCBPUFRfUFJJTyB8 IDEgfSwKLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCi1pbmRleCBlNjUx MDZkNGMxMjYuLmIxMTY3MDU4NjI0NCAxMDA2NDQKLS0tLSBhL3BwcGQvcHBwZC5oCi0rKysgYi9w cHBkL3BwcGQuaAotQEAgLTMyOCw2ICszMjgsOCBAQCBleHRlcm4gYm9vbAl0dW5lX2tlcm5lbDsJ LyogTWF5IGFsdGVyIGtlcm5lbCBzZXR0aW5ncyBhcyBuZWNlc3NhcnkgKi8KLSBleHRlcm4gaW50 CWNvbm5lY3RfZGVsYXk7CS8qIFRpbWUgdG8gZGVsYXkgYWZ0ZXIgY29ubmVjdCBzY3JpcHQgKi8K LSBleHRlcm4gaW50CW1heF9kYXRhX3JhdGU7CS8qIG1heCBieXRlcy9zZWMgdGhyb3VnaCBjaGFy c2h1bnQgKi8KLSBleHRlcm4gaW50CXJlcV91bml0OwkvKiBpbnRlcmZhY2UgdW5pdCBudW1iZXIg dG8gdXNlICovCi0rZXh0ZXJuIGNoYXIJcGF0aF9pcHVwW01BWFBBVEhMRU5dOyAvKiBwYXRobmFt ZSBvZiBpcC11cCBzY3JpcHQgKi8KLStleHRlcm4gY2hhcglwYXRoX2lwZG93bltNQVhQQVRITEVO XTsgLyogcGF0aG5hbWUgb2YgaXAtZG93biBzY3JpcHQgKi8KLSBleHRlcm4gY2hhcglyZXFfaWZu YW1lW01BWElGTkFNRUxFTl07IC8qIGludGVyZmFjZSBuYW1lIHRvIHVzZSAqLwotIGV4dGVybiBi b29sCW11bHRpbGluazsJLyogZW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24gKi8KLSBleHRlcm4g Ym9vbAlub2VuZHBvaW50OwkvKiBkb24ndCBzZW5kIG9yIGFjY2VwdCBlbmRwdC4gZGlzY3JpbS4g Ki8KZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzEtcHBwLTIuNC4yLXN0cmlwTVNk b21haW4ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDMxLXBwcC0yLjQuMi1zdHJpcE1TZG9t YWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjYyOTAyNmMuLjAwMDAw MDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMxLXBwcC0yLjQuMi1zdHJpcE1TZG9tYWlu LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbTogTWljaGFlbCBPbGJy aWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4 OjExOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcC0yLjQuMi1zdHJpcE1TZG9tYWluCi0K LUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9m Zi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBw cHBkL2NoYXAtbmV3LmMgfCAxMSArKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNl cnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wcHBkL2NoYXAtbmV3LmMgYi9wcHBkL2NoYXAtbmV3 LmMKLWluZGV4IDI3MTRiZmY2NDc4NS4uN2ZkNzA4N2E1ZTJjIDEwMDY0NAotLS0tIGEvcHBwZC9j aGFwLW5ldy5jCi0rKysgYi9wcHBkL2NoYXAtbmV3LmMKLUBAIC01OCw2ICs1OCw3IEBAIGludCAo KmNoYXBfdmVyaWZ5X2hvb2spKGNoYXIgKm5hbWUsIGNoYXIgKm91cm5hbWUsIGludCBpZCwKLSBp bnQgY2hhcF90aW1lb3V0X3RpbWUgPSAzOwotIGludCBjaGFwX21heF90cmFuc21pdHMgPSAxMDsK LSBpbnQgY2hhcF9yZWNoYWxsZW5nZV90aW1lID0gMDsKLStpbnQgY2hhcG1zX3N0cmlwX2RvbWFp biA9IDA7Ci0gCi0gLyoKLSAgKiBDb21tYW5kLWxpbmUgb3B0aW9ucy4KLUBAIC02OSw2ICs3MCw4 IEBAIHN0YXRpYyBvcHRpb25fdCBjaGFwX29wdGlvbl9saXN0W10gPSB7Ci0gCSAgIlNldCBtYXgg I3htaXRzIGZvciBjaGFsbGVuZ2UiLCBPUFRfUFJJTyB9LAotIAl7ICJjaGFwLWludGVydmFsIiwg b19pbnQsICZjaGFwX3JlY2hhbGxlbmdlX3RpbWUsCi0gCSAgIlNldCBpbnRlcnZhbCBmb3IgcmVj aGFsbGVuZ2UiLCBPUFRfUFJJTyB9LAotKwl7ICJjaGFwbXMtc3RyaXAtZG9tYWluIiwgb19ib29s LCAmY2hhcG1zX3N0cmlwX2RvbWFpbiwKLSsJICAiU3RyaXAgdGhlIGRvbWFpbiBwcmVmaXggYmVm b3JlIHRoZSBVc2VybmFtZSIsIDEgfSwKLSAJeyBOVUxMIH0KLSB9OwotIAotQEAgLTMzNiw2ICsz MzksMTQgQEAgY2hhcF9oYW5kbGVfcmVzcG9uc2Uoc3RydWN0IGNoYXBfc2VydmVyX3N0YXRlICpz cywgaW50IGlkLAotIAkJCS8qIE51bGwgdGVybWluYXRlIGFuZCBjbGVhbiByZW1vdGUgbmFtZS4g Ki8KLSAJCQlzbHByaW50ZihybmFtZSwgc2l6ZW9mKHJuYW1lKSwgIiUuKnYiLCBsZW4sIG5hbWUp OwotIAkJCW5hbWUgPSBybmFtZTsKLSsKLSsJCQkvKiBzdHJpcCB0aGUgTVMgZG9tYWluIG5hbWUg Ki8KLSsJCQlpZiAoY2hhcG1zX3N0cmlwX2RvbWFpbiAmJiBzdHJyY2hyKHJuYW1lLCAnXFwnKSkg ewotKwkJCQljaGFyIHRtcFtNQVhOQU1FTEVOKzFdOwotKwotKwkJCQlzdHJjcHkodG1wLCBzdHJy Y2hyKHJuYW1lLCAnXFwnKSArIDEpOwotKwkJCQlzdHJjcHkocm5hbWUsIHRtcCk7Ci0rCQkJfQot IAkJfQotIAotIAkJaWYgKGNoYXBfdmVyaWZ5X2hvb2spCmRpZmYgLS1naXQgYS9wYXRjaGVzL3Bw cC0yLjQuNy8wMDMyLWV4cG9ydC1DQUxMX0ZJTEUtdG8tdGhlLWxpbmstc2NyaXB0cy5wYXRjaCBi L3BhdGNoZXMvcHBwLTIuNC43LzAwMzItZXhwb3J0LUNBTExfRklMRS10by10aGUtbGluay1zY3Jp cHRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTJlMTcwODguLjAwMDAw MDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMyLWV4cG9ydC1DQUxMX0ZJTEUtdG8tdGhl LWxpbmstc2NyaXB0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb206 IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAy OCBTZXAgMjAxOSAwODoxMTo1MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBleHBvcnQgJENBTExf RklMRSB0byB0aGUgbGluayBzY3JpcHRzCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4x LmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL29wdGlvbnMuYyB8IDEgKwotIHBwcGQvcHBw ZC44ICAgIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZm IC0tZ2l0IGEvcHBwZC9vcHRpb25zLmMgYi9wcHBkL29wdGlvbnMuYwotaW5kZXggYThmM2FhNDU5 MGEzLi4zNDA3OTczODZkZDYgMTAwNjQ0Ci0tLS0gYS9wcHBkL29wdGlvbnMuYwotKysrIGIvcHBw ZC9vcHRpb25zLmMKLUBAIC0xNDgyLDYgKzE0ODIsNyBAQCBjYWxsZmlsZShhcmd2KQotICAgICBp ZiAoKGZuYW1lID0gKGNoYXIgKikgbWFsbG9jKGwpKSA9PSBOVUxMKQotIAlub3ZtKCJjYWxsIGZp bGUgbmFtZSIpOwotICAgICBzbHByaW50ZihmbmFtZSwgbCwgIiVzJXMiLCBfUEFUSF9QRUVSRklM RVMsIGFyZyk7Ci0rICAgIHNjcmlwdF9zZXRlbnYoIkNBTExfRklMRSIsIGFyZywgMCk7Ci0gCi0g ICAgIG9rID0gb3B0aW9uc19mcm9tX2ZpbGUoZm5hbWUsIDEsIDEsIDEpOwotIAotZGlmZiAtLWdp dCBhL3BwcGQvcHBwZC44IGIvcHBwZC9wcHBkLjgKLWluZGV4IDQ4MWFhOGJlNjcyYi4uODQ4Y2E4 YTE2Yjc3IDEwMDY0NAotLS0tIGEvcHBwZC9wcHBkLjgKLSsrKyBiL3BwcGQvcHBwZC44Ci1AQCAt MTY2Miw2ICsxNjYyLDkgQEAgdGhlIGNvbm5lY3Rpb24uCi0gLkIgTElOS05BTUUKLSBUaGUgbG9n aWNhbCBuYW1lIG9mIHRoZSBsaW5rLCBzZXQgd2l0aCB0aGUgXGZJbGlua25hbWVcZlIgb3B0aW9u LgotIC5UUAotKy5CIENBTExfRklMRQotK1RoZSB2YWx1ZSBvZiB0aGUgXGZJY2FsbFxmUiBvcHRp b24uCi0rLlRQCi0gLkIgRE5TMQotIElmIHRoZSBwZWVyIHN1cHBsaWVzIEROUyBzZXJ2ZXIgYWRk cmVzc2VzLCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUKLSBmaXJzdCBETlMgc2VydmVyIGFk ZHJlc3Mgc3VwcGxpZWQgKHdoZXRoZXIgb3Igbm90IHRoZSB1c2VwZWVyZG5zCmRpZmYgLS1naXQg YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMzLWlwdjYtYWNjZXB0LXJlbW90ZS5wYXRjaCBiL3BhdGNo ZXMvcHBwLTIuNC43LzAwMzMtaXB2Ni1hY2NlcHQtcmVtb3RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMTM3NmNmMTQuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDMzLWlwdjYtYWNjZXB0LXJlbW90ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcz ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRl PgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo1MCArMDIwMAotU3ViamVjdDogW1BBVENI XSBpcHY2LWFjY2VwdC1yZW1vdGUKLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGVi aWFuLnRhci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBw ZW5ndXRyb25peC5kZT4KLS0tLQotIHBwcGQvaXB2NmNwLmMgfCA1ICsrKystCi0gcHBwZC9pcHY2 Y3AuaCB8IDMgKystCi0gcHBwZC9wcHBkLjggICB8IDUgKysrKysKLSAzIGZpbGVzIGNoYW5nZWQs IDExIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL2lw djZjcC5jIGIvcHBwZC9pcHY2Y3AuYwotaW5kZXggYzE2MDJmNDFjMjA2Li40MzIxNzA0NjIxOTYg MTAwNjQ0Ci0tLS0gYS9wcHBkL2lwdjZjcC5jCi0rKysgYi9wcHBkL2lwdjZjcC5jCi1AQCAtMjQ1 LDYgKzI0NSw4IEBAIHN0YXRpYyBvcHRpb25fdCBpcHY2Y3Bfb3B0aW9uX2xpc3RbXSA9IHsKLSAK LSAgICAgeyAiaXB2NmNwLWFjY2VwdC1sb2NhbCIsIG9fYm9vbCwgJmlwdjZjcF9hbGxvd29wdGlv bnNbMF0uYWNjZXB0X2xvY2FsLAotICAgICAgICJBY2NlcHQgcGVlcidzIGludGVyZmFjZSBpZGVu dGlmaWVyIGZvciB1cyIsIDEgfSwKLSsgICAgeyAiaXB2NmNwLWFjY2VwdC1yZW1vdGUiLCBvX2Jv b2wsICZpcHY2Y3BfYWxsb3dvcHRpb25zWzBdLmFjY2VwdF9yZW1vdGUsCi0rICAgICAgIkFjY2Vw dCBwZWVyJ3MgaW50ZXJmYWNlIGlkZW50aWZpZXIgZm9yIGl0c2VsZiIsIDEgfSwKLSAKLSAgICAg eyAiaXB2NmNwLXVzZS1pcGFkZHIiLCBvX2Jvb2wsICZpcHY2Y3BfYWxsb3dvcHRpb25zWzBdLnVz ZV9pcCwKLSAgICAgICAiVXNlIChkZWZhdWx0KSBJUHY0IGFkZHJlc3MgYXMgaW50ZXJmYWNlIGlk ZW50aWZpZXIiLCAxIH0sCi1AQCAtNDM1LDYgKzQzNyw3IEBAIGlwdjZjcF9pbml0KHVuaXQpCi0g ICAgIG1lbXNldChhbywgMCwgc2l6ZW9mKCphbykpOwotIAotICAgICB3by0+YWNjZXB0X2xvY2Fs ID0gMTsKLSsgICAgd28tPmFjY2VwdF9yZW1vdGUgPSAxOwotICAgICB3by0+bmVnX2lmYWNlaWQg PSAxOwotICAgICBhby0+bmVnX2lmYWNlaWQgPSAxOwotIAotQEAgLTk2MCw3ICs5NjMsNyBAQCBp cHY2Y3BfcmVxY2koZiwgaW5wLCBsZW4sIHJlamVjdF9pZl9kaXNhZ3JlZSkKLSAJCW9yYyA9IENP TkZSRUo7CQkvKiBSZWplY3QgQ0kgKi8KLSAJCWJyZWFrOwotIAkgICAgfQotLQkgICAgaWYgKCFl dWk2NF9pc3plcm8od28tPmhpc2lkKSAmJiAKLSsJICAgIGlmICghZXVpNjRfaXN6ZXJvKHdvLT5o aXNpZCkgJiYgIXdvLT5hY2NlcHRfcmVtb3RlICYmCi0gCQkhZXVpNjRfZXF1YWxzKGlmYWNlaWQs IHdvLT5oaXNpZCkgJiYgCi0gCQlldWk2NF9pc3plcm8oZ28tPmhpc2lkKSkgewotIAkJICAgIAot ZGlmZiAtLWdpdCBhL3BwcGQvaXB2NmNwLmggYi9wcHBkL2lwdjZjcC5oCi1pbmRleCAyZjRjMDZk ZGMxODkuLjE2MTc3MDdlYmJkZSAxMDA2NDQKLS0tLSBhL3BwcGQvaXB2NmNwLmgKLSsrKyBiL3Bw cGQvaXB2NmNwLmgKLUBAIC0xNTAsNyArMTUwLDggQEAKLSB0eXBlZGVmIHN0cnVjdCBpcHY2Y3Bf b3B0aW9ucyB7Ci0gICAgIGludCBuZWdfaWZhY2VpZDsJCS8qIE5lZ290aWF0ZSBpbnRlcmZhY2Ug aWRlbnRpZmllcj8gKi8KLSAgICAgaW50IHJlcV9pZmFjZWlkOwkJLyogQXNrIHBlZXIgdG8gc2Vu ZCBpbnRlcmZhY2UgaWRlbnRpZmllcj8gKi8KLS0gICAgaW50IGFjY2VwdF9sb2NhbDsJCS8qIGFj Y2VwdCBwZWVyJ3MgdmFsdWUgZm9yIGlmYWNlIGlkPyAqLwotKyAgICBpbnQgYWNjZXB0X2xvY2Fs OwkJLyogYWNjZXB0IHBlZXIncyB2YWx1ZSBmb3Igb3VyIGlmYWNlIGlkPyAqLwotKyAgICBpbnQg YWNjZXB0X3JlbW90ZTsJCS8qIGFjY2VwdCBwZWVyJ3MgdmFsdWUgZm9yIGhpcyBpZmFjZSBpZD8g Ki8KLSAgICAgaW50IG9wdF9sb2NhbDsJCS8qIG91cnRva2VuIHNldCBieSBvcHRpb24gKi8KLSAg ICAgaW50IG9wdF9yZW1vdGU7CQkvKiBoaXN0b2tlbiBzZXQgYnkgb3B0aW9uICovCi0gICAgIGlu dCB1c2VfaXA7CQkJLyogdXNlIElQIGFzIGludGVyZmFjZSBpZGVudGlmaWVyICovCi1kaWZmIC0t Z2l0IGEvcHBwZC9wcHBkLjggYi9wcHBkL3BwcGQuOAotaW5kZXggODQ4Y2E4YTE2Yjc3Li42NWJi ZTcyMWY3NjEgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BwcGQuOAotKysrIGIvcHBwZC9wcHBkLjgKLUBA IC00NjMsNiArNDYzLDExIEBAIFdpdGggdGhpcyBvcHRpb24sIHBwcGQgd2lsbCBhY2NlcHQgdGhl IHBlZXIncyBpZGVhIG9mIG91ciBsb2NhbCBJUHY2Ci0gaW50ZXJmYWNlIGlkZW50aWZpZXIsIGV2 ZW4gaWYgdGhlIGxvY2FsIElQdjYgaW50ZXJmYWNlIGlkZW50aWZpZXIKLSB3YXMgc3BlY2lmaWVk IGluIGFuIG9wdGlvbi4KLSAuVFAKLSsuQiBpcHY2Y3BcLWFjY2VwdFwtcmVtb3RlCi0rV2l0aCB0 aGlzIG9wdGlvbiwgcHBwZCB3aWxsIGFjY2VwdCB0aGUgcGVlcidzIGlkZWEgb2YgaXRzIChyZW1v dGUpCi0rSVB2NiBpbnRlcmZhY2UgaWRlbnRpZmllciwgZXZlbiBpZiB0aGUgcmVtb3RlIElQdjYg aW50ZXJmYWNlCi0raWRlbnRpZmllciB3YXMgc3BlY2lmaWVkIGluIGFuIG9wdGlvbi4KLSsuVFAK LSAuQiBpcHY2Y3BcLW1heFwtY29uZmlndXJlIFxmSW4KLSBTZXQgdGhlIG1heGltdW0gbnVtYmVy IG9mIElQdjZDUCBjb25maWd1cmUtcmVxdWVzdCB0cmFuc21pc3Npb25zIHRvCi0gXGZJblxmUiAo ZGVmYXVsdCAxMCkuCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM0LWZpeC1hLXBv dGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2ggYi9wYXRj aGVzL3BwcC0yLjQuNy8wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xp ZW50aWQuYy1yY19tYXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOGEw MjlkZi4uMDAwMDAwMDAwCi0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzQtZml4LWEtcG90ZW50 aWFsLWJ1ZmZlci1vdmVyZmxvdy1pbi1jbGllbnRpZC5jLXJjX21hcC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBl bmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo1MCArMDIwMAotU3Vi amVjdDogW1BBVENIXSBmaXggYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGluIGNsaWVudGlk LmM6cmNfbWFwMmlkKCkKLQotVGhpcyBmaXhlcyB0aGUgZm9sbG93aW5nIGNvbXBpbGUtdGltZSB3 YXJuaW5nIHdoZW4gYnVpbGRpbmcgd2l0aAotLURfRk9SVElGWV9TT1VSQ0U9MjoKLQotSW4gZmls ZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9zdHJpbmcuaDo2Mzg6MCwKLSAgICAgICAgICAg ICAgICAgZnJvbSAuL2luY2x1ZGVzLmg6MjYsCi0gICAgICAgICAgICAgICAgIGZyb20gY2xpZW50 aWQuYzoxMjoKLUluIGZ1bmN0aW9uICdzdHJuY2F0JywKLSAgICBpbmxpbmVkIGZyb20gJ3JjX21h cDJpZCcgYXQgY2xpZW50aWQuYzoxMTM6OToKLS91c3IvaW5jbHVkZS9pMzg2LWxpbnV4LWdudS9i aXRzL3N0cmluZzMuaDoxNTA6Mzogd2FybmluZzogY2FsbCB0bwotX19idWlsdGluX19fc3RybmNh dF9jaGsgbWlnaHQgb3ZlcmZsb3cgZGVzdGluYXRpb24gYnVmZmVyIFtlbmFibGVkIGJ5IGRlZmF1 bHRdCi0gICByZXR1cm4gX19idWlsdGluX19fc3RybmNhdF9jaGsgKF9fZGVzdCwgX19zcmMsIF9f bGVuLCBfX2JvcyAoX19kZXN0KSk7Ci0gICBeCi0KLU9yaWdpbjogdmVuZG9yLCBodHRwczovL2J1 aWxkLm9wZW5zdXNlLm9yZy9zb3VyY2UvbmV0d29yay9wcHAvcHBwLTIuNC40LXN0cm5jYXRmaXgu cGF0Y2g/cmV2PTdhMGZkZWZmMGIyOTQzN2RkN2Y0NTgxYzk1YzcyNTVhCi1Gb3J3YXJkZWQ6IG5v Ci1SZXZpZXdlZC1ieTogQ2hyaXMgQm9vdCA8Ym9vdGNAZGViaWFuLm9yZz4KLUxhc3QtVXBkYXRl OiAyMDE0LTAxLTEyCi0KLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRh ci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KLS0tLQotIHBwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYyB8IDIgKy0KLSAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdp dCBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMv Y2xpZW50aWQuYwotaW5kZXggZDQ5NTc5YzQzY2MzLi43ZGUwMjExMzliNTYgMTAwNjQ0Ci0tLS0g YS9wcHBkL3BsdWdpbnMvcmFkaXVzL2NsaWVudGlkLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9yYWRp dXMvY2xpZW50aWQuYwotQEAgLTExMCw3ICsxMTAsNyBAQCBVSU5UNCByY19tYXAyaWQoY2hhciAq bmFtZSkKLSAJaWYgKCpuYW1lICE9ICcvJykKLSAJCXN0cmNweSh0dHluYW1lLCAiL2Rldi8iKTsK LSAKLS0Jc3RybmNhdCh0dHluYW1lLCBuYW1lLCBzaXplb2YodHR5bmFtZSkpOwotKwlzdHJuY2F0 KHR0eW5hbWUsIG5hbWUsIHNpemVvZih0dHluYW1lKS1zdHJsZW4odHR5bmFtZSktMSk7Ci0gCi0g CWZvcihwID0gbWFwMmlkX2xpc3Q7IHA7IHAgPSBwLT5uZXh0KQotIAkJaWYgKCFzdHJjbXAodHR5 bmFtZSwgcC0+bmFtZSkpIHJldHVybiBwLT5pZDsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIu NC43LzAwMzctRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1yY19ta3NpZC5wYXRjaCBiL3BhdGNoZXMv cHBwLTIuNC43LzAwMzctRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1yY19ta3NpZC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIxZjEyOWFkLi4wMDAwMDAwMDAKLS0tIGEvcGF0 Y2hlcy9wcHAtMi40LjcvMDAzNy1GaXgtYnVmZmVyLW92ZXJmbG93LWluLXJjX21rc2lkLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxt Lm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUw ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gcmNfbWtzaWQo KQotCi0gcmNfbWtzaWQgY29udmVydHMgdGhlIFBJRCBvZiBwcHBkIHRvIGhleCB0byBnZW5lcmF0 ZSBhIHBzZXVkby11bmlxdWUgc3RyaW5nLgotIC4KLSBJZiB0aGUgcHJvY2VzcyBpZCBpcyBiaWdn ZXIgdGhhbiA2NTUzNSAoRkZGRiksIGl0cyBoZXggcmVwcmVzZW50YXRpb24gd2lsbCBiZQotIGxv bmdlciB0aGFuIDQgY2hhcmFjdGVycywgcmVzdWx0aW5nIGluIGEgYnVmZmVyIG92ZXJmbG93Lgot IC4KLSBUaGUgYnVnIGNhbiBiZSBleHBsb2l0ZWQgdG8gY2F1c2UgYSByZW1vdGUgRG9TLgotIC4K LUF1dGhvcjogRW1hbnVlbGUgUm9jY2EgPGVtYUBkZWJpYW4ub3JnPgotQnVnLURlYmlhbjogaHR0 cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgyNDUwCi1MYXN0LVVwZGF0ZTogPDIwMTUtMDQtMTQ+Ci0K LQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQt b2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQot IHBwcGQvcGx1Z2lucy9yYWRpdXMvdXRpbC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3Jh ZGl1cy91dGlsLmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL3V0aWwuYwotaW5kZXggNmY5NzZhNzEy OTUxLi4xNjZiZDVmMzFkN2EgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcmFkaXVzL3V0aWwu YwotKysrIGIvcHBwZC9wbHVnaW5zL3JhZGl1cy91dGlsLmMKLUBAIC03Nyw3ICs3Nyw3IEBAIHJj X21rc2lkICh2b2lkKQotICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGludCBjbnQgPSAwOwotICAg c3ByaW50ZiAoYnVmLCAiJTA4bFglMDRYJTAyaFgiLAotIAkgICAodW5zaWduZWQgbG9uZyBpbnQp IHRpbWUgKE5VTEwpLAotLQkgICAodW5zaWduZWQgaW50KSBnZXRwaWQgKCksCi0rCSAgICh1bnNp Z25lZCBpbnQpIGdldHBpZCAoKSAlIDY1NTM1LAotIAkgICBjbnQgJiAweEZGKTsKLSAgIGNudCsr OwotICAgcmV0dXJuIGJ1ZjsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzgtRUFQ LVRMUy1hdXRoZW50aWNhdGlvbi1zdXBwb3J0LWZvci1QUFAucGF0Y2ggYi9wYXRjaGVzL3BwcC0y LjQuNy8wMDM4LUVBUC1UTFMtYXV0aGVudGljYXRpb24tc3VwcG9ydC1mb3ItUFBQLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDQ2MmQ0ZjguLjAwMDAwMDAwMAotLS0gYS9w YXRjaGVzL3BwcC0yLjQuNy8wMDM4LUVBUC1UTFMtYXV0aGVudGljYXRpb24tc3VwcG9ydC1mb3It UFBQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzM4MyArMCwwIEBACi1Gcm9tOiBNaWNoYWVs IE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIw MTkgMDg6MTE6NTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRUFQLVRMUyBhdXRoZW50aWNhdGlv biBzdXBwb3J0IGZvciBQUFAKLQotT3JpZ2luOiBodHRwczovL3d3dy5uaWtoZWYubmwvfmphbmp1 c3QvcHBwL2Rvd25sb2FkLmh0bWwKLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3Jn LzYwMjUwMwotQnVnLVVidW50dTogaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2J1Z3MvNjQzNDE3Ci1G b3J3YXJkZWQ6IG5vdC1uZWVkZWQKLUF1dGhvcjogSmFuIEp1c3QgS2VpanNlciA8amFuanVzdEBu aWtoZWYubmw+Ci1MYXN0LVVwZGF0ZTogMjAxOC0xMS0wNAotCi1UaGlzIHBhdGNoIGlzIGJhc2Vk IG9uIHBwcC0yLjQuNy1lYXB0bHMtbXBwZS0xLjEwMi5wYXRjaCwgd2l0aCB0aGUgZm9sbG93aW5n Ci1jaGFuZ2VzOgotCi0gLSBQYXRjaCByZWZyZXNoZWQgdG8gcmVtb3ZlIGZ1enouCi0gLSBUcmFp bGluZyBzcGFjZXMgcmVtb3ZlZC4KLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5k ZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNo QHBlbmd1dHJvbml4LmRlPgotLS0tCi0gUkVBRE1FLmVhcC10bHMgICAgICAgICAgICAgIHwgIDI5 MSArKysrKysrKysKLSBldGMucHBwL2VhcHRscy1jbGllbnQgICAgICAgfCAgIDEwICsKLSBldGMu cHBwL2VhcHRscy1zZXJ2ZXIgICAgICAgfCAgIDExICsKLSBldGMucHBwL29wZW5zc2wuY25mICAg ICAgICAgfCAgIDE0ICsKLSBsaW51eC9NYWtlZmlsZS50b3AgICAgICAgICAgfCAgICA2ICstCi0g cHBwZC9NYWtlZmlsZS5saW51eCAgICAgICAgIHwgICAxMiArCi0gcHBwZC9hdXRoLmMgICAgICAg ICAgICAgICAgIHwgIDQxMyArKysrKysrKysrKystCi0gcHBwZC9jY3AuYyAgICAgICAgICAgICAg ICAgIHwgICAyMCArLQotIHBwcGQvY2hhcC1tZDUuYyAgICAgICAgICAgICB8ICAgIDQgKwotIHBw cGQvZWFwLXRscy5jICAgICAgICAgICAgICB8IDEzODMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwotIHBwcGQvZWFwLXRscy5oICAgICAgICAgICAgICB8ICAxMDcg KysrKwotIHBwcGQvZWFwLmMgICAgICAgICAgICAgICAgICB8ICA0NjMgKysrKysrKysrKysrKyst Ci0gcHBwZC9lYXAuaCAgICAgICAgICAgICAgICAgIHwgICAzMiArLQotIHBwcGQvbWQ1LmMgICAg ICAgICAgICAgICAgICB8ICAgIDQgKwotIHBwcGQvbWQ1LmggICAgICAgICAgICAgICAgICB8ICAg IDMgKwotIHBwcGQvcGF0aG5hbWVzLmggICAgICAgICAgICB8ICAgIDcgKwotIHBwcGQvcGx1Z2lu cy9NYWtlZmlsZS5saW51eCB8ICAgIDMgKwotIHBwcGQvcGx1Z2lucy9wYXNzcHJvbXB0LmMgICB8 ICAgIDMgKwotIHBwcGQvcGx1Z2lucy9wYXNzd29yZGZkLmMgICB8ICAgIDQgKwotIHBwcGQvcHBw ZC44ICAgICAgICAgICAgICAgICB8ICAgMzMgKysKLSBwcHBkL3BwcGQuaCAgICAgICAgICAgICAg ICAgfCAgICA5ICsKLSAyMSBmaWxlcyBjaGFuZ2VkLCAyODI1IGluc2VydGlvbnMoKyksIDcgZGVs ZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5lYXAtdGxzCi0gY3JlYXRlIG1v ZGUgMTAwNjQ0IGV0Yy5wcHAvZWFwdGxzLWNsaWVudAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBldGMu cHBwL2VhcHRscy1zZXJ2ZXIKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXRjLnBwcC9vcGVuc3NsLmNu ZgotIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcHBkL2VhcC10bHMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0 NCBwcHBkL2VhcC10bHMuaAotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLmVhcC10bHMgYi9SRUFETUUu ZWFwLXRscwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uMTA3ZTg0 ZGI1ZTgxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9SRUFETUUuZWFwLXRscwotQEAgLTAsMCArMSwy OTEgQEAKLStFQVAtVExTIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgZm9yIFBQUAotKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rCi0rMS4gSW50cm8KLSsKLSsgICAgVGhl IEV4dGVuc2libGUgQXV0aGVudGljYXRpb24gUHJvdG9jb2wgKEVBUDsgUkZDIDM3NDgpIGlzIGEK LSsgICAgc2VjdXJpdHkgcHJvdG9jb2wgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBQUC4gIEl0IHBy b3ZpZGVzIGEgbWVhbnMKLSsgICAgdG8gcGx1ZyBpbiBtdWx0aXBsZSBvcHRpb25hbCBhdXRoZW50 aWNhdGlvbiBtZXRob2RzLgotKwotKyAgICBUcmFuc3BvcnQgTGV2ZWwgU2VjdXJpdHkgKFRMUzsg UkZDIDUyMTYpIHByb3ZpZGVzIGZvciBtdXR1YWwKLSsgICAgYXV0aGVudGljYXRpb24sIGludGVn cml0eS1wcm90ZWN0ZWQgY2lwaGVyc3VpdGUgbmVnb3RpYXRpb24gYW5kCi0rICAgIGtleSBleGNo YW5nZSBiZXR3ZWVuIHR3byBlbmRwb2ludHMuICBJdCBhbHNvIHByb3ZpZGVzIGZvciBvcHRpb25h bAotKyAgICBNUFBFIGVuY3J5cHRpb24uCi0rCi0rICAgIEVBUC1UTFMgKFJGQyAyNzE2KSBpbmNh cHN1bGF0ZXMgdGhlIFRMUyBtZXNzYWdlcyBpbiBFQVAgcGFja2V0cywKLSsgICAgYWxsb3dpbmcg VExTIG11dHVhbCBhdXRoZW50aWNhdGlvbiB0byBiZSB1c2VkIGFzIGEgZ2VuZXJpYyBFQVAKLSsg ICAgbWVjaGFuaXNtLiBJdCBhbHNvIHByb3ZpZGVzIG9wdGlvbmFsIGVuY3J5cHRpb24gdXNpbmcg dGhlIE1QUEUKLSsgICAgcHJvdG9jb2wuCi0rCi0rICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSBFQVAt VExTIHN1cHBvcnQgdG8gcHBwZC4KLSsgICAgVGhpcyBhdXRoZW50aWNhdGlvbiBtZXRob2QgY2Fu IGJlIHVzZWQgaW4gYm90aCBjbGllbnQgb3Igc2VydmVyCi0rICAgIG1vZGUuCi0rCi0rMi4gQnVp bGRpbmcKLSsKLSsgICAgVG8gYnVpbGQgcHBwZCB3aXRoIEVBUC1UTFMgc3VwcG9ydCwgT3BlblNT TCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZykKLSsgICAgaXMgcmVxdWlyZWQuIEFueSB2ZXJzaW9u IGZyb20gMC45Ljcgc2hvdWxkIHdvcmsuCi0rCi0rICAgIENvbmZpZ3VyZSwgY29tcGlsZSwgYW5k IGluc3RhbGwgYXMgdXN1YWwuCi0rCi0rMy4gQ29uZmlndXJhdGlvbgotKwotKyAgICBPbiB0aGUg Y2xpZW50IHNpZGUgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGNvbmZpZ3VyZSBFQVAtVExTOgotKwot KyAgICAxLiBzdXBwbHkgdGhlIGFwcHJvcHJpYXRlICdjYScsICdjZXJ0JyBhbmQgJ2tleScgY29t bWFuZC1saW5lIHBhcmFtZXRlcnMKLSsKLSsgICAgMi4gZWRpdCB0aGUgL2V0Yy9wcHAvZWFwdGxz LWNsaWVudCBmaWxlLgotKyAgICBJbnNlcnQgYSBsaW5lIGZvciBlYWNoIHN5c3RlbSB3aXRoIHdo aWNoIHlvdSB1c2UgRUFQLVRMUy4KLSsgICAgVGhlIGxpbmUgaXMgY29tcG9zZWQgb2YgdGhpcyBm aWVsZHMgc2VwYXJhdGVkIGJ5IHRhYjoKLSsKLSsgICAgICAtIENsaWVudCBuYW1lCi0rICAgICAg ICBUaGUgbmFtZSB1c2VkIGJ5IHRoZSBjbGllbnQgZm9yIGF1dGhlbnRpY2F0aW9uLCBjYW4gYmUg KgotKyAgICAgIC0gU2VydmVyIG5hbWUKLSsgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXIs IGNhbiBiZSAqCi0rICAgICAgLSBDbGllbnQgY2VydGlmaWNhdGUgZmlsZQotKyAgICAgICAgVGhl IGZpbGUgY29udGFpbmluZyB0aGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHRoZQotKyAgICAgICAg Y2xpZW50IGluIFBFTSBmb3JtYXQKLSsgICAgICAtIFNlcnZlciBjZXJ0aWZpY2F0ZSBmaWxlCi0r ICAgICAgICBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZSBjZXJ0aWZpY2F0ZSB0aGF0IHRoZQot KyAgICAgICAgc2VydmVyIGlzIGFsbG93ZWQgdG8gdXNlLCBwdXQgdGhlIGNlcnRpZmljYXRlIGZp bGUgbmFtZS4KLSsgICAgICAgIEVsc2UgcHV0IGEgZGFzaCAnLScuCi0rICAgICAgLSBDQSBjZXJ0 aWZpY2F0ZSBmaWxlCi0rICAgICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSB0cnVzdGVkIENB IGNlcnRpZmljYXRlcyBpbiBQRU0KLSsgICAgICAgIGZvcm1hdC4KLSsgICAgICAtIENsaWVudCBw cml2YXRlIGtleSBmaWxlCi0rICAgICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGllbnQg cHJpdmF0ZSBrZXkgaW4gUEVNIGZvcm1hdC4KLSsKLSsKLSsgICAgT24gdGhlIHNlcnZlciBzaWRl IGVkaXQgdGhlIC9ldGMvcHBwL2VhcHRscy1zZXJ2ZXIgZmlsZS4KLSsgICAgSW5zZXJ0IGEgbGlu ZSBmb3IgZWFjaCBzeXN0ZW0gd2l0aCB3aGljaCB5b3UgdXNlIEVBUC1UTFMuCi0rICAgIFRoZSBs aW5lIGlzIGNvbXBvc2VkIG9mIHRoaXMgZmllbGRzIHNlcGFyYXRlZCBieSB0YWI6Ci0rCi0rICAg ICAgLSBDbGllbnQgbmFtZQotKyAgICAgICAgVGhlIG5hbWUgdXNlZCBieSB0aGUgY2xpZW50IGZv ciBhdXRoZW50aWNhdGlvbiwgY2FuIGJlICoKLSsgICAgICAtIFNlcnZlciBuYW1lCi0rICAgICAg ICBUaGUgbmFtZSBvZiB0aGUgc2VydmVyLCBjYW4gYmUgKgotKyAgICAgIC0gQ2xpZW50IGNlcnRp ZmljYXRlIGZpbGUKLSsgICAgICAgIElmIHlvdSB3YW50IHRvIHNwZWNpZnkgdGhlIGNlcnRpZmlj YXRlIHRoYXQgdGhlCi0rICAgICAgICBjbGllbnQgaXMgYWxsb3dlZCB0byB1c2UsIHB1dCB0aGUg Y2VydGlmaWNhdGUgZmlsZSBuYW1lLgotKyAgICAgICAgRWxzZSBwdXQgYSBkYXNoICctJy4KLSsg ICAgICAtIFNlcnZlciBjZXJ0aWZpY2F0ZSBmaWxlCi0rICAgICAgICBUaGUgZmlsZSBjb250YWlu aW5nIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3IgdGhlCi0rICAgICAgICBzZXJ2ZXIgaW4gUEVN IGZvcm1hdAotKyAgICAgIC0gQ0EgY2VydGlmaWNhdGUgZmlsZQotKyAgICAgICAgVGhlIGZpbGUg Y29udGFpbmluZyB0aGUgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0ZXMgaW4gUEVNIGZvcm1hdC4KLSsg ICAgICAtIENsaWVudCBwcml2YXRlIGtleSBmaWxlCi0rICAgICAgICBUaGUgZmlsZSBjb250YWlu aW5nIHRoZSBzZXJ2ZXIgcHJpdmF0ZSBrZXkgaW4gUEVNIGZvcm1hdC4KLSsgICAgICAtIGFkZHJl c3NlcwotKyAgICAgICAgQSBsaXN0IG9mIElQIGFkZHJlc3NlcyB0aGUgY2xpZW50IGlzIGFsbG93 ZWQgdG8gdXNlLgotKwotKwotKyAgICBPcGVuU1NMIGVuZ2luZSBzdXBwb3J0IGlzIGluY2x1ZGVk IHN0YXJ0aW5nIHdpdGggdjAuOTUgb2YgdGhpcyBwYXRjaC4KLSsgICAgQ3VycmVudGx5IHRoZSBv bmx5IGVuZ2luZSB0ZXN0ZWQgaXMgdGhlICdwa2NzMTEnIGVuZ2luZSAoaGFyZHdhcmUgdG9rZW4K LSsgICAgc3VwcG9ydCkuIFRvIHVzZSB0aGUgJ3Brc2MxMScgZW5naW5lOgotKyAgICAgIC0gVXNl IGEgc3BlY2lhbCBwcml2YXRlIGtleSBmaWxlaW5hbWUgaW4gdGhlIC9ldGMvcHBwL2VhcHRscy1j bGllbnQgZmlsZToKLSsgICAgICAgICAgPGVuZ2luZT46PGlkZW50aWZpZXI+Ci0rICAgICAgICBl LmcuCi0rICAgICAgICAgIHBrY3MxMToxMjM0NTYKLSsKLSsgICAgICAtIFRoZSBjZXJ0aWZpY2F0 ZSBjYW4gYWxzbyBiZSBsb2FkZWQgZnJvbSB0aGUgJ3BrY3MxMScgZW5naW5lIHVzaW5nCi0rICAg ICAgICBhIHNwZWNpYWwgY2xpZW50IGNlcnRpZmljYXRlIGZpbGVuYW1lIGluIHRoZSAvZXRjL3Bw cC9lYXB0bHMtY2xpZW50IGZpbGU6Ci0rICAgICAgICAgIDxlbmdpbmU+OjxpZGVudGlmaWVyPgot KyAgICAgICAgZS5nLgotKyAgICAgICAgICBwa2NzMTE6MTIzNDU2Ci0rCi0rICAgICAgLSBDcmVh dGUgYW4gL2V0Yy9wcHAvb3BlbnNzbC5jbmYgZmlsZSB0byBsb2FkIHRoZSByaWdodCBPcGVuU1NM IGVuZ2luZSBwcmlvcgotKyAgICAgICAgdG8gc3RhcnRpbmcgJ3BwcGQnLiBBIHNhbXBsZSBvcGVu c3NsLmNuZiBmaWxlIGlzCi0rCi0rICAgICAgICBvcGVuc3NsX2NvbmYgPSBvcGVuc3NsX2RlZgot KwotKyAgICAgICAgWyBvcGVuc3NsX2RlZiBdCi0rICAgICAgICBlbmdpbmVzID0gZW5naW5lX3Nl Y3Rpb24KLSsKLSsgICAgICAgIFsgZW5naW5lX3NlY3Rpb24gXQotKyAgICAgICAgcGtjczExID0g cGtjczExX3NlY3Rpb24KLSsKLSsgICAgICAgIFsgcGtjczExX3NlY3Rpb24gXQotKyAgICAgICAg ZW5naW5lX2lkID0gcGtjczExCi0rICAgICAgICBkeW5hbWljX3BhdGggPSAvdXNyL2xpYjY0L29w ZW5zc2wvZW5naW5lcy9lbmdpbmVfcGtjczExLnNvCi0rICAgICAgICBNT0RVTEVfUEFUSCA9IC91 c3IvbGliNjQvbGliZVRQa2NzMTEuc28KLSsgICAgICAgIGluaXQgPSAwCi0rCi0rICAgICAgLSBU aGVyZSBhcmUgdHdvIHdheXMgdG8gc3BlY2lmeSBhIHBhc3N3b3JkL1BJTiBmb3IgdGhlIFBLQ1Mx MSBlbmdpbmU6Ci0rICAgICAgICAgIC0gaW5zaWRlIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHVzaW5n Ci0rICAgICAgICAgICAgICBQSU4gPSB5b3VyLXNlY3JldC1waW4KLSsgICAgICAgICAgICBOb3Rl IFRoZSBrZXl3b3JkICdQSU4nIGlzIGNhc2Ugc2Vuc2l0aXZlIQotKyAgICAgICAgICAtIFVzaW5n IHRoZSAncGFzc3dvcmQnIGluIHRoZSBwcHAgb3B0aW9ucyBmaWxlLgotKyAgICAgICAgRnJvbSB2 MC45NyBvZiB0aGUgZWFwLXRscyBwYXRjaCB0aGUgcGFzc3dvcmQgY2FuIGFsc28gYmUgc3VwcGxp ZWQKLSsgICAgICAgIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSAnZWFwdGxzX3Bhc3N3ZF9ob29rJyAo c2VlIHBsdWdpbnMvcGFzc3Byb21wdC5jCi0rICAgICAgICBmb3IgYW4gZXhhbXBsZSkuCi0rCi0r Ci0rNC4gT3B0aW9ucwotKwotKyAgICBUaGVzZSBwcHBkIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToK LSsKLSsgICAgICBjYSA8Y2EtZmlsZT4KLSsgICAgICAgIFVzZSB0aGUgQ0EgcHVibGljIGNlcnRp ZmljYXRlIGZvdW5kIGluIDxjYS1maWxlPiBpbiBQRU0gZm9ybWF0Ci0rICAgICAgY2VydCA8Y2Vy dC1maWxlPgotKyAgICAgICAgVXNlIHRoZSBjbGllbnQgcHVibGljIGNlcnRpZmljYXRlIGZvdW5k IGluIDxjZXJ0LWZpbGU+IGluIFBFTSBmb3JtYXQKLSsgICAgICAgIG9yIGluIGVuZ2luZTplbmdp bmVfaWQgZm9ybWF0Ci0rICAgICAga2V5IDxrZXktZmlsZT4KLSsgICAgICAgIFVzZSB0aGUgY2xp ZW50IHByaXZhdGUga2V5IGZvdW5kIGluIDxrZXktZmlsZT4gaW4gUEVNIGZvcm1hdAotKyAgICAg ICAgb3IgaW4gZW5naW5lOmVuZ2luZV9pZCBmb3JtYXQKLSsgICAgICBjcmwgPGNybC1maWxlPgot KyAgICAgICAgVXNlIHRoZSBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QgKENSTCkgZmlsZSA8 Y3JsLWZpbGU+IGluIFBFTSBmb3JtYXQuCi0rICAgICAgY3JsLWRpciA8ZGlyPgotKyAgICAgICAg VXNlIENSTCBmaWxlcyBmcm9tIGRpcmVjdG9yeSA8ZGlyPi4gSXQgY29udGFpbnMgQ1JMIGZpbGVz IGluIFBFTQotKyAgICAgICAgZm9ybWF0IGFuZCBlYWNoIGZpbGUgY29udGFpbnMgYSBDUkwuIFRo ZSBmaWxlcyBhcmUgbG9va2VkIHVwCi0rICAgICAgICBieSB0aGUgaXNzdWVyIG5hbWUgaGFzaCB2 YWx1ZS4gVXNlIHRoZSBjX3JlaGFzaCB1dGlsaXR5Ci0rICAgICAgICB0byBjcmVhdGUgbmVjZXNz YXJ5IGxpbmtzLgotKyAgICAgIG5lZWQtcGVlci1lYXAKLSsgICAgICAgIElmIHRoZSBwZWVyIGRv ZXNuJ3QgYXNrIHVzIHRvIGF1dGhlbnRpY2F0ZSBvciBkb2Vzbid0IHVzZSBlYXAKLSsgICAgICAg IHRvIGF1dGhlbnRpY2F0ZSB1cywgZGlzY29ubmVjdC4KLSsKLSsgICAgTm90ZToKLSsgICAgICBw YXNzd29yZC1lbmNyeXB0ZWQgY2VydGlmaWNhdGVzIGNhbiBiZSB1c2VkIGFzIG9mIHYwLjk0IG9m IHRoaXMKLSsgICAgICBwYXRjaC4gVGhlIHBhc3N3b3JkIGZvciB0aGUgZWFwLXRscy5rZXkgZmls ZSBpcyBzcGVjaWZpZWQgdXNpbmcKLSsgICAgICB0aGUgcmVndWxhcgotKyAgICAgICAgICBwYXNz d29yZCAuLi4uCi0rICAgICAgc3RhdGVtZW50IGluIHRoZSBwcHAgb3B0aW9ucyBmaWxlLCBvciBi eSB1c2luZyB0aGUgYXBwcm9wcmlhdGUKLSsgICAgICBwbHVnaW4gd2hpY2ggc3VwcGxpZXMgYSAn ZWFwdGxzX3Bhc3N3ZF9ob29rJyByb3V0aW5lLgotKwotKzUuIENvbm5lY3RpbmcKLSsKLSsgICAg SWYgeW91J3JlIHNldHRpbmcgdXAgYSBwcHBkIHNlcnZlciwgZWRpdCB0aGUgRUFQLVRMUyBjb25m aWd1cmF0aW9uIGZpbGUKLSsgICAgYXMgd3JpdHRlbiBhYm92ZSBhbmQgdGhlbiBydW4gcHBwZCB3 aXRoIHRoZSAnYXV0aCcgb3B0aW9uIHRvIGF1dGhlbnRpY2F0ZQotKyAgICB0aGUgY2xpZW50LiBU aGUgRUFQLVRMUyBtZXRob2Qgd2lsbCBiZSB1c2VkIGlmIHRoZSBvdGhlciBlYXAgbWV0aG9kcyBj YW4ndAotKyAgICBiZSB1c2VkIChubyBzZWNyZXRzKS4KLSsKLSsgICAgSWYgeW91J3JlIHNldHRp bmcgdXAgYSBjbGllbnQsIGVkaXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgdGhlbiBydW4K LSsgICAgcHBwZCB3aXRoICdyZW1vdGVuYW1lJyBvcHRpb24gdG8gc3BlY2lmeSB0aGUgc2VydmVy IG5hbWUuIEFkZCB0aGUKLSsgICAgJ25lZWQtcGVlci1lYXAnIG9wdGlvbiBpZiB5b3Ugd2FudCB0 byBiZSBzdXJlIHRoZSBwZWVyIGFzayB5b3UgdG8KLSsgICAgYXV0aGVudGljYXRlIChhbmQgdG8g dXNlIGVhcCkgYW5kIHRvIGRpc2Nvbm5lY3QgaWYgaXQgZG9lc24ndC4KLSsKLSs2LiBFeGFtcGxl Ci0rCi0rICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjYW4gYmUgdXNlZCB0byBjb25uZWN0IGEg TGludXggY2xpZW50IHdpdGggdGhlICdwcHRwJwotKyAgICBwYWNrYWdlIHRvIGEgTGludXggc2Vy dmVyIHJ1bm5pbmcgdGhlICdwcHRwZCcgKFBvUFRvUCkgcGFja2FnZS4gVGhlIHNlcnZlcgotKyAg ICB3YXMgY29uZmlndXJlZCB3aXRoIGEgY2VydGlmaWNhdGUgd2l0aCBuYW1lIChDTikgJ3BwdHAt c2VydmVyJywgdGhlIGNsaWVudAotKyAgICB3YXMgY29uZmlndXJlZCB3aXRoIGEgY2VydGlmaWNh dGUgd2l0aCBuYW1lIChDTikgJ3BwdHAtY2xpZW50JywgYm90aAotKyAgICBzaWduZWQgYnkgdGhl IHNhbWUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChDQSkuCi0rCi0rICAgIFNlcnZlciBzaWRlOgot KyAgICAgIC0gL2V0Yy9wcHRwZC5jb25mIGZpbGU6Ci0rICAgICAgICAgIG9wdGlvbiAvZXRjL3Bw cC9vcHRpb25zLXBwdHBkLWVhcHRscwotKyAgICAgICAgICBsb2NhbGlwIDE3Mi4xNi4xLjEKLSsg ICAgICAgICAgcmVtb3RlaXAgMTcyLjE2LjEuMTAtMjAKLSsgICAgICAtIC9ldGMvcHBwL29wdGlv bnMtcHB0cGQtZWFwdGxzIGZpbGU6Ci0rICAgICAgICAgIG5hbWUgcHB0cC1zZXJ2ZXIKLSsgICAg ICAgICAgbG9jawotKyAgICAgICAgICBtdHUgMTUwMAotKyAgICAgICAgICBtcnUgMTQ1MAotKyAg ICAgICAgICBhdXRoCi0rICAgICAgICAgIGxjcC1lY2hvLWZhaWx1cmUgMwotKyAgICAgICAgICBs Y3AtZWNoby1pbnRlcnZhbCA1Ci0rICAgICAgICAgIG5vZGVmbGF0ZQotKyAgICAgICAgICBub2Jz ZGNvbXAKLSsgICAgICAgICAgbm9wcmVkaWN0b3IxCi0rICAgICAgICAgIG5vcGNvbXAKLSsgICAg ICAgICAgbm9hY2NvbXAKLSsKLSsgICAgICAgICAgcmVxdWlyZS1lYXAKLSsgICAgICAgICAgcmVx dWlyZS1tcHBlLTEyOAotKwotKyAgICAgICAgICBjcmwgL2hvbWUvamFuanVzdC9wcHAva2V5cy9j cmwucGVtCi0rCi0rICAgICAgICAgIGRlYnVnCi0rICAgICAgICAgIGxvZ2ZpbGUgL3RtcC9wcHBk LmxvZwotKwotKyAgICAgIC0gL2V0Yy9wcHAvZWFwdGxzLXNlcnZlciBmaWxlOgotKyAgICAgICAg ICAgKiBwcHRwLXNlcnZlciAtIC9ldGMvcHBwL3BwdHAtc2VydmVyLmNydCAvZXRjL3BwcC9jYS5j cnQgL2V0Yy9wcHAvcHB0cC1zZXJ2ZXIua2V5ICoKLSsKLSsgICAgICAtIE9uIHRoZSBzZXJ2ZXIs IHJ1bgotKyAgICAgICAgICBwcHRkcCAtLWNvbmYgL2V0Yy9wcHRwZC5jb25mCi0rCi0rICAgIENs aWVudCBzaWRlOgotKyAgICAgIC0gUnVuCi0rICAgICAgICAgIHBwcGQgbm9hdXRoIHJlcXVpcmUt ZWFwIHJlcXVpcmUtbXBwZS0xMjggXAotKyAgICAgICAgICAgIGlwY3AtYWNjZXB0LWxvY2FsIGlw Y3AtYWNjZXB0LXJlbW90ZSBub2lwZGVmYXVsdCBcCi0rICAgICAgICAgICAgY2VydCAgL2V0Yy9w cHAva2V5cy9wcHRwLWNsaWVudC5jcnQgXAotKyAgICAgICAgICAgIGtleSAgIC9ldGMvcHBwL2tl eXMvcHB0cC1jbGllbnQua2V5IFwKLSsgICAgICAgICAgICBjYSAgICAvZXRjL3BwcC9rZXlzL2Nh LmNydCBcCi0rICAgICAgICAgICAgbmFtZSBwcHRwLWNsaWVudCByZW1vdGVuYW1lIHBwdHAtc2Vy dmVyIFwKLSsgICAgICAgICAgICBkZWJ1ZyBsb2dmaWxlIC90bXAvcHBwZC5sb2cKLSsgICAgICAg ICAgICBwdHkgInBwdHAgcHB0cC1zZXJ2ZXIuZXhhbXBsZS5jb20gLS1ub2xhdW5jaHBwcGQiCi0r Ci0rICAgIENoZWNrIC92YXIvbG9nL21lc3NhZ2VzIGFuZCB0aGUgZmlsZXMgL3RtcC9wcHBkLmxv ZyBvbiBib3RoIHNpZGVzIGZvciBkZWJ1Z2dpbmcgaW5mby4KLSsKLSs3LiBOb3RlcwotKwotKyAg ICBUaGlzIGlzIGV4cGVyaW1lbnRhbCBjb2RlLgotKyAgICBTZW5kIHN1Z2dlc3Rpb25zIGFuZCBj b21tZW50cyB0byBKYW4gSnVzdCBLZWlqc2VyIDxqYW5qdXN0QG5pa2hlZi5ubD4KLSsKLSs4LiBD aGFuZ2Vsb2cgb2YgcHBwLTw+LWVhcHRscy1tcHBlLSogcGF0Y2hlcwotKwotK3YwLjcgICAgICgy Mi1Ob3YtMjAwNSkKLSsgLSBGaXJzdCB2ZXJzaW9uIG9mIHRoZSBwYXRjaCB0byBpbmNsdWRlIE1Q UEUgc3VwcG9ydAotKyAtIHBwcC0yLjQuMyBvbmx5Ci0rdjAuOSAgICAgKDI1LUp1bC0yMDA2KQot KyAtIEJ1ZyBmaXhlcwotKyAtIEZpcnN0IHZlcnNpb24gZm9yIHBwcC0yLjQuNAotK3YwLjkxICAg ICgwMy1TZXAtMjAwNikKLSsgLSBBZGRlZCBtaXNzaW5nICNpbmNsdWRlIGZvciBtZDUuaAotKyAt IExhc3QgdmVyc2lvbiBmb3IgcHBwLTIuNC4zCi0rdjAuOTIgICAgKDIyLUFwci0yMDA4KQotKyAt IEZpeCBmb3Igb3BlbnNzbCAwLjkuOCBpc3N1ZSB3aXRoIG1kNSBmdW5jdGlvbiBvdmVybG9hZC4K LSt2MC45MyAgICAoMTQtQXVnLTIwMDgpCi0rIC0gTWFrZSBzdXJlICdub2F1dGgnIG9wdGlvbiBj YW4gYmUgdXNlZCB0byBieXBhc3Mgc2VydmVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi4KLSt2 MC45NCAgICAoMTUtT2N0LTIwMDgpCi0rIC0gQWRkZWQgc3VwcG9ydCBmb3IgcGFzc3dvcmQtcHJv dGVjdGVkIHByaXZhdGUga2V5cyBieSAoYWIpdXNpbmcgdGhlICdwYXNzd29yZCcgZmllbGQuCi0r djAuOTUgICAgKDIzLURlYy0yMDA5KQotKyAtIEZpcnN0IHZlcnNpb24gd2l0aCBPcGVuU1NMIGVu Z2luZSBzdXBwb3J0LgotK3YwLjk2ICAgICgyNy1KYW4tMjAxMCkKLSsgLSBBZGRlZCBmdWxseSBm dW5jdGlvbmFsIHN1cHBvcnQgZm9yIE9wZW5TU0wgZW5naW5lcyAoUEtDUyMxMSkKLSsgLSBGaXJz dCB2ZXJzaW9uIGZvciBwcHAtMi40LjUKLSt2MC45NyAgICAoMjAtQXByLTIwMTApCi0rIC0gU29t ZSBidWcgZml4ZXMgZm9yIHYwLjk2Ci0rIC0gQWRkZWQgc3VwcG9ydCBmb3IgZW50ZXJpbmcgdGhl IHBhc3N3b3JkIHZpYSBhIHBsdWdpbi4gVGhlIHNhbXBsZSBwbHVnaW4KLSsgICAgIC4uLi9wcHBk L3BsdWdpbnMvcGFzc3Byb21wdC5jIGhhcyBiZWVuIGV4dGVuZGVkIHdpdGggRUFQLVRMUyBzdXBw b3J0LgotKyAgIFRoZSAib2xkIiBtZXRob2RzIHVzaW5nIHRoZSBwYXNzd29yZCBvcHRpb24gb3Ig dGhlIC9ldGMvcHBwL29wZW5zc2wuY25mIGZpbGUgc3RpbGwgd29yay4KLSsgLSBBZGRlZCBzdXBw b3J0IGZvciBzcGVjaWZ5aW5nIHRoZSBjbGllbnQgQ0EsIGNlcnRpZmljYXRlIGFuZCBwcml2YXRl IGtleSBvbiB0aGUgY29tbWFuZC1saW5lCi0rICAgb3IgdmlhIHRoZSBwcHAgY29uZmlnIGZpbGUu Ci0rdjAuOTggICAgKDIwLUFwci0yMDEwKQotKyAtIEZpeCBpbml0aWFsaXNhdGlvbiBidWcgd2hl biB1c2luZyBjYS9jZXJ0L2tleSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KLSsgLSBMYXN0IHZlcnNp b24gZm9yIHBwcC0yLjQuNAotK3YwLjk5ICAgICgwNS1PY3QtMjAxMCkKLSsgLSBGaXggY29yZWR1 bXAgd2hlbiB1c2luZyBtdWx0aWxpbmsgb3B0aW9uLgotK3YwLjk5MSAgICgwOC1BdWctMjAxMSkK LSsgLSBGaXggY29tcGlsYXRpb24gaXNzdWUgd2l0aCBvcGVuc3NsIDEuMC4KLSt2MC45OTIgICAo MDEtRGVjLTIwMTEpCi0rIC0gRml4IGNvbXBpbGF0aW9uIGlzc3VlIHdpdGggZWFwdGxzX2NoZWNr X2hvb2sgYW5kIHBhc3N3b3JkZmQgcGx1Z2luLgotK3YwLjk5MyAgICgyNC1BcHItMjAxMikKLSsg LSBGaXggY29tcGlsYXRpb24gaXNzdWUgd2hlbiBFQVBfVExTPW4gaW4gcHBwZC9NYWtlZmlsZS4K LSt2MC45OTQgICAoMTEtSnVuLTIwMTIpCi0rIC0gRml4IGNvbXBpbGF0aW9uIGlzc3VlIG9uIFVi dW50dSAxMS4xMC4KLSt2MC45OTUgICAoMjctTWF5LTIwMTQpCi0rIC0gQWRkIHN1cHBvcnQgZm9y IGEgQ1JMIGZpbGUgdXNpbmcgdGhlIGNvbW1hbmQtbGluZSBvcHRpb24gJ2NybCcKLSsgICAocHJp b3Igb25seSAnY3JsLWRpcicgd2FzIHN1cHBvcnRlZCkuCi0rIC0gRml4IHNlZ2ZhdWx0IHdoZW4g cGtjczExIGVuZ2luZW5hbWUgd2FzIG5vdCBzcGVjaWZpZWQgY29ycmVjdGx5LgotKyAtIEZpeCBz ZWdmYXVsdCB3aGVuIGNsaWVudCB3YXMgbWlzY29uZmlndXJlZC4KLSsgLSBEaXNhYmxlIFNTTCBT ZXNzaW9uIFRpY2tldCBzdXBwb3J0IGFzIFdpbmRvd3MgOCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMu Ci0rdjAuOTk2ICAgKDI4LU1heS0yMDE0KQotKyAtIEZpeCBtaW5vciBidWcgd2hlcmUgU2Vzc2lv blRpY2tldCBtZXNzYWdlIHdhcyBwcmludGVkIGFzICdVbmtub3duIFNTTDMgY29kZSA0JwotKyAt IEFkZCBFQVAtVExTLXNwZWNpZmljIG9wdGlvbnMgdG8gcHBwZC44IG1hbnVhbCBwYWdlLgotKyAt IFVwZGF0ZWQgUkVBRE1FLmVhcC10bHMgZmlsZSB3aXRoIG5ldyBvcHRpb25zIGFuZCBwcm92aWRl IGFuIGV4YW1wbGUuCi0rdjAuOTk3ICAgKDE5LUp1bi0yMDE0KQotKyAtIENoYW5nZSBTU0xfT1Bf Tk9fVElDS0VUUyB0byBTU0xfT1BfTk9fVElDS0VUCi0rIC0gRml4IGJ1ZyBpbiBpbml0aWFsaXNh dGlvbiBjb2RlIHdpdGggZnJhZ21lbnRlZCBwYWNrZXRzLgotK3YwLjk5OCAgICgxMy1NYXItMjAx NSkKLSsgLSBBZGQgZml4IGZvciBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcu Y2dpP2lkPTEwMjM2MjAKLSt2MC45OTkgICAoMTEtTWF5LTIwMTcpCi0rIC0gQWRkIHN1cHBvcnQg Zm9yIE9wZW5TU0wgMS4xOiB0aGUgY29kZSB3aWxsIG5vdyBjb21waWxlIGFnYWluc3QgT3BlblNT TCAxLjAueCBvciAxLjEueC4KLSt2MS4xMDEgKDEtSnVuLTIwMTgpCi0rIC0gRml4IHZ1bG5lcmFi aWxpdGllcyBDVkUtMjAxOC0xMTU3NC4KLSt2MS4xMDIgKDItTm92LTIwMTgpCi0rIC0gQWRkIFRM UyAxLjIgc3VwcG9ydC4gV2luZG93cyA3Lzggd2lsbCBjb25uZWN0IHVzaW5nIFRMUyAxLjAsIFdp bmRvd3MgMTAgY2xpZW50cyB1c2luZyBUTFMgMS4yLgotKyAgIFRoaXMgd29ya3MgYm90aCB3aGVu IGNvbXBpbGluZyBhZ2FpbnN0IE9wZW5TU0wgMS4wLjErIGFuZCAxLjErLgotKyAtIFByaW50IHdh cm5pbmcgd2hlbiBjZXJ0aWZpY2F0ZSBpcyBlaXRoZXIgbm90IHlldCB2YWxpZCBvciBoYXMgZXhw aXJlZC4KLSsgLSBQZXJmb3JtIGJldHRlciBwZWVyIGNlcnRpZmljYXRlIGNoZWNrcy4KLSsgLSBB bGxvdyBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlcyB0byBiZSB1c2VkLgotZGlmZiAtLWdpdCBhL2V0 Yy5wcHAvZWFwdGxzLWNsaWVudCBiL2V0Yy5wcHAvZWFwdGxzLWNsaWVudAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uNzc4MmYwZTJhMDY1Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9ldGMucHBwL2VhcHRscy1jbGllbnQKLUBAIC0wLDAgKzEsMTAgQEAKLSsjIFBhcmFt ZXRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uIHVzaW5nIEVBUC1UTFMgKGNsaWVudCkKLSsKLSsjIGNs aWVudCBuYW1lIChjYW4gYmUgKikKLSsjIHNlcnZlciBuYW1lIChjYW4gYmUgKikKLSsjIGNsaWVu dCBjZXJ0aWZpY2F0ZSBmaWxlIChyZXF1aXJlZCkKLSsjIHNlcnZlciBjZXJ0aWZpY2F0ZSBmaWxl IChvcHRpb25hbCwgaWYgdW51c2VkIHB1dCAnLScpCi0rIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChy ZXF1aXJlZCkKLSsjIGNsaWVudCBwcml2YXRlIGtleSBmaWxlIChyZXF1aXJlZCkKLSsKLSsjY2xp ZW50CXNlcnZlcgkvcm9vdC9jZXJ0L2NsaWVudC5jcnQJLQkvcm9vdC9jZXJ0L2NhLmNydAkvcm9v dC9jZXJ0L2NsaWVudC5rZXkKLWRpZmYgLS1naXQgYS9ldGMucHBwL2VhcHRscy1zZXJ2ZXIgYi9l dGMucHBwL2VhcHRscy1zZXJ2ZXIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw MDAwMDAuLmZhNTNjYmQxOTdjZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZXRjLnBwcC9lYXB0bHMt c2VydmVyCi1AQCAtMCwwICsxLDExIEBACi0rIyBQYXJhbWV0ZXJzIGZvciBhdXRoZW50aWNhdGlv biB1c2luZyBFQVAtVExTIChzZXJ2ZXIpCi0rCi0rIyBjbGllbnQgbmFtZSAoY2FuIGJlICopCi0r IyBzZXJ2ZXIgbmFtZSAoY2FuIGJlICopCi0rIyBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSAob3B0 aW9uYWwsIGlmIHVudXNlZCBwdXQgJy0nKQotKyMgc2VydmVyIGNlcnRpZmljYXRlIGZpbGUgKHJl cXVpcmVkKQotKyMgQ0EgY2VydGlmaWNhdGUgZmlsZSAocmVxdWlyZWQpCi0rIyBzZXJ2ZXIgcHJp dmF0ZSBrZXkgZmlsZSAocmVxdWlyZWQpCi0rIyBhbGxvd2VkIGFkZHJlc3NlcyAocmVxdWlyZWQs IGNhbiBiZSAqKQotKwotKyNjbGllbnQJc2VydmVyCS0JL3Jvb3QvY2VydC9zZXJ2ZXIuY3J0CS9y b290L2NlcnQvY2EuY3J0CS9yb290L2NlcnQvc2VydmVyLmtleQkxOTIuMTY4LjEuMC8yNAotZGlm ZiAtLWdpdCBhL2V0Yy5wcHAvb3BlbnNzbC5jbmYgYi9ldGMucHBwL29wZW5zc2wuY25mCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi5kZDMyZjMwNWQ2ODAKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2V0Yy5wcHAvb3BlbnNzbC5jbmYKLUBAIC0wLDAgKzEsMTQgQEAKLStv cGVuc3NsX2NvbmYgPSBvcGVuc3NsX2RlZgotKwotK1sgb3BlbnNzbF9kZWYgXQotK2VuZ2luZXMg PSBlbmdpbmVfc2VjdGlvbgotKwotK1sgZW5naW5lX3NlY3Rpb24gXQotK3BrY3MxMSA9IHBrY3Mx MV9zZWN0aW9uCi0rCi0rWyBwa2NzMTFfc2VjdGlvbiBdCi0rZW5naW5lX2lkID0gcGtjczExCi0r ZHluYW1pY19wYXRoID0gL3Vzci9saWI2NC9vcGVuc3NsL2VuZ2luZXMvZW5naW5lX3BrY3MxMS5z bwotK01PRFVMRV9QQVRIID0gL3Vzci9saWI2NC9saWJlVFBrY3MxMS5zbwotK2luaXQgPSAwCi0r Ci1kaWZmIC0tZ2l0IGEvbGludXgvTWFrZWZpbGUudG9wIGIvbGludXgvTWFrZWZpbGUudG9wCi1p bmRleCBmNjNkNDVlNThhNzguLjg5NGY4ZjMyYzllNCAxMDA2NDQKLS0tLSBhL2xpbnV4L01ha2Vm aWxlLnRvcAotKysrIGIvbGludXgvTWFrZWZpbGUudG9wCi1AQCAtMjYsNyArMjYsNyBAQCBpbnN0 YWxsLXByb2dzOgotIAljZCBwcHBkdW1wOyAkKE1BS0UpICQoTUZMQUdTKSBpbnN0YWxsCi0gCi0g aW5zdGFsbC1ldGNwcHA6ICQoRVRDRElSKSAkKEVUQ0RJUikvb3B0aW9ucyAkKEVUQ0RJUikvcGFw LXNlY3JldHMgXAotLQkkKEVUQ0RJUikvY2hhcC1zZWNyZXRzCi0rCSQoRVRDRElSKS9jaGFwLXNl Y3JldHMgJChFVENESVIpL2VhcHRscy1zZXJ2ZXIgJChFVENESVIpL2VhcHRscy1jbGllbnQKLSAK LSBpbnN0YWxsLWRldmVsOgotIAljZCBwcHBkOyAkKE1BS0UpICQoTUZMQUdTKSBpbnN0YWxsLWRl dmVsCi1AQCAtMzcsNiArMzcsMTAgQEAgJChFVENESVIpL3BhcC1zZWNyZXRzOgotIAkkKElOU1RB TEwpIC1jIC1tIDYwMCBldGMucHBwL3BhcC1zZWNyZXRzICRACi0gJChFVENESVIpL2NoYXAtc2Vj cmV0czoKLSAJJChJTlNUQUxMKSAtYyAtbSA2MDAgZXRjLnBwcC9jaGFwLXNlY3JldHMgJEAKLSsk KEVUQ0RJUikvZWFwdGxzLXNlcnZlcjoKLSsJJChJTlNUQUxMKSAtYyAtbSA2MDAgZXRjLnBwcC9l YXB0bHMtc2VydmVyICRACi0rJChFVENESVIpL2VhcHRscy1jbGllbnQ6Ci0rCSQoSU5TVEFMTCkg LWMgLW0gNjAwIGV0Yy5wcHAvZWFwdGxzLWNsaWVudCAkQAotIAotICQoQklORElSKToKLSAJJChJ TlNUQUxMKSAtZCAtbSA3NTUgJEAKLWRpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlLmxpbnV4IGIv cHBwZC9NYWtlZmlsZS5saW51eAotaW5kZXggNTU0OTE0NWU1NzkxLi40YTExZDVmZWE3NDggMTAw NjQ0Ci0tLS0gYS9wcHBkL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkL01ha2VmaWxlLmxpbnV4 Ci1AQCAtNzYsNiArNzYsOSBAQCBDQkNQPXkKLSAjIFVzZSBsaWJ1dGlsCi0gVVNFX0xJQlVUSUw9 eQotIAotKyMgRW5hYmxlIEVBUC1UTFMgYXV0aGVudGljYXRpb24gKHJlcXVpcmVzIGxpYnNzbCBh bmQgbGliY3J5cHRvKQotK1VTRV9FQVBUTFM9eQotKwotIE1BWE9DVEVUUz15Ci0gCi0gSU5DTFVE RV9ESVJTPSAtSS4uL2luY2x1ZGUKLUBAIC0xMTYsNiArMTE5LDE1IEBAIEhFQURFUlMgKz0gc2hh MS5oCi0gUFBQRE9CSlMgKz0gc2hhMS5vCi0gZW5kaWYKLSAKLSsjIEVBUC1UTFMKLStpZmRlZiBV U0VfRUFQVExTCi0rQ0ZMQUdTICs9IC1EVVNFX0VBUFRMUz0xIC1JL3Vzci9rZXJiZXJvcy9pbmNs dWRlCi0rTElCUyArPSAtbHNzbCAtbGNyeXB0bwotK1BQUERTUkMgKz0gZWFwLXRscy5jCi0rSEVB REVSUyArPSBlYXAtdGxzLmgKLStQUFBET0JKUyArPSBlYXAtdGxzLm8KLStlbmRpZgotKwotIGlm ZGVmIEhBU19TSEFET1cKLSBDRkxBR1MgICArPSAtREhBU19TSEFET1cKLSAjTElCUyAgICAgKz0g LWxzaGFkb3cgJChMSUJTKQotZGlmZiAtLWdpdCBhL3BwcGQvYXV0aC5jIGIvcHBwZC9hdXRoLmMK LWluZGV4IDQyNzFhZjY4NzEwMi4uNDUwNjVjNThiZmNjIDEwMDY0NAotLS0tIGEvcHBwZC9hdXRo LmMKLSsrKyBiL3BwcGQvYXV0aC5jCi1AQCAtMTA5LDYgKzEwOSw5IEBACi0gI2luY2x1ZGUgInVw YXAuaCIKLSAjaW5jbHVkZSAiY2hhcC1uZXcuaCIKLSAjaW5jbHVkZSAiZWFwLmgiCi0rI2lmZGVm IFVTRV9FQVBUTFMKLSsjaW5jbHVkZSAiZWFwLXRscy5oIgotKyNlbmRpZgotICNpZmRlZiBDQkNQ X1NVUFBPUlQKLSAjaW5jbHVkZSAiY2JjcC5oIgotICNlbmRpZgotQEAgLTE4Myw2ICsxODYsMTEg QEAgaW50ICgqY2hhcF9jaGVja19ob29rKSBfX1AoKHZvaWQpKSA9IE5VTEw7Ci0gLyogSG9vayBm b3IgYSBwbHVnaW4gdG8gZ2V0IHRoZSBDSEFQIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGluZyB1 cyAqLwotIGludCAoKmNoYXBfcGFzc3dkX2hvb2spIF9fUCgoY2hhciAqdXNlciwgY2hhciAqcGFz c3dkKSkgPSBOVUxMOwotIAotKyNpZmRlZiBVU0VfRUFQVExTCi0rLyogSG9vayBmb3IgYSBwbHVn aW4gdG8gZ2V0IHRoZSBFQVAtVExTIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGluZyB1cyAqLwot K2ludCAoKmVhcHRsc19wYXNzd2RfaG9vaykgX19QKChjaGFyICp1c2VyLCBjaGFyICpwYXNzd2Qp KSA9IE5VTEw7Ci0rI2VuZGlmCi0rCi0gLyogSG9vayBmb3IgYSBwbHVnaW4gdG8gc2F5IHdoZXRo ZXIgaXQgaXMgT0sgaWYgdGhlIHBlZXIKLSAgICByZWZ1c2VzIHRvIGF1dGhlbnRpY2F0ZS4gKi8K LSBpbnQgKCpudWxsX2F1dGhfaG9vaykgX19QKChzdHJ1Y3Qgd29yZGxpc3QgKipwYWRkcnMsCi1A QCAtMjM4LDYgKzI0NiwxNCBAQCBib29sIGV4cGxpY2l0X3JlbW90ZSA9IDA7CS8qIFVzZXIgc3Bl Y2lmaWVkIGV4cGxpY2l0IHJlbW90ZSBuYW1lICovCi0gYm9vbCBleHBsaWNpdF91c2VyID0gMDsJ CS8qIFNldCBpZiAidXNlciIgb3B0aW9uIHN1cHBsaWVkICovCi0gYm9vbCBleHBsaWNpdF9wYXNz d2QgPSAwOwkvKiBTZXQgaWYgInBhc3N3b3JkIiBvcHRpb24gc3VwcGxpZWQgKi8KLSBjaGFyIHJl bW90ZV9uYW1lW01BWE5BTUVMRU5dOwkvKiBQZWVyJ3MgbmFtZSBmb3IgYXV0aGVudGljYXRpb24g Ki8KLSsjaWZkZWYgVVNFX0VBUFRMUwotK2NoYXIgKmNhY2VydF9maWxlICA9IE5VTEw7CS8qIENB IGNlcnRpZmljYXRlIGZpbGUgKHBlbSBmb3JtYXQpICovCi0rY2hhciAqY2VydF9maWxlICAgID0g TlVMTDsJLyogY2xpZW50IGNlcnRpZmljYXRlIGZpbGUgKHBlbSBmb3JtYXQpICovCi0rY2hhciAq cHJpdmtleV9maWxlID0gTlVMTDsJLyogY2xpZW50IHByaXZhdGUga2V5IGZpbGUgKHBlbSBmb3Jt YXQpICovCi0rY2hhciAqY3JsX2RpciAgICAgID0gTlVMTDsJLyogZGlyZWN0b3J5IGNvbnRhaW5p bmcgQ1JMIGZpbGVzICovCi0rY2hhciAqY3JsX2ZpbGUgICAgID0gTlVMTDsJLyogQ2VydGlmaWNh dGUgUmV2b2NhdGlvbiBMaXN0IChDUkwpIGZpbGUgKHBlbSBmb3JtYXQpICovCi0rYm9vbCBuZWVk X3BlZXJfZWFwID0gMDsJCQkvKiBSZXF1aXJlIHBlZXIgdG8gYXV0aGVudGljYXRlIHVzICovCi0r I2VuZGlmCi0gCi0gc3RhdGljIGNoYXIgKnVhZm5hbWU7CQkvKiBuYW1lIG9mIG1vc3QgcmVjZW50 ICt1YSBmaWxlICovCi0gCi1AQCAtMjU0LDYgKzI3MCwxOSBAQCBzdGF0aWMgaW50ICBoYXZlX3Bh cF9zZWNyZXQgX19QKChpbnQgKikpOwotIHN0YXRpYyBpbnQgIGhhdmVfY2hhcF9zZWNyZXQgX19Q KChjaGFyICosIGNoYXIgKiwgaW50LCBpbnQgKikpOwotIHN0YXRpYyBpbnQgIGhhdmVfc3JwX3Nl Y3JldCBfX1AoKGNoYXIgKmNsaWVudCwgY2hhciAqc2VydmVyLCBpbnQgbmVlZF9pcCwKLSAgICAg aW50ICpsYWNrc19pcHApKTsKLSsKLSsjaWZkZWYgVVNFX0VBUFRMUwotK3N0YXRpYyBpbnQgIGhh dmVfZWFwdGxzX3NlY3JldF9zZXJ2ZXIKLStfX1AoKGNoYXIgKmNsaWVudCwgY2hhciAqc2VydmVy LCBpbnQgbmVlZF9pcCwgaW50ICpsYWNrc19pcHApKTsKLStzdGF0aWMgaW50ICBoYXZlX2VhcHRs c19zZWNyZXRfY2xpZW50IF9fUCgoY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIpKTsKLStzdGF0 aWMgaW50ICBzY2FuX2F1dGhmaWxlX2VhcHRscyBfX1AoKEZJTEUgKiBmLCBjaGFyICpjbGllbnQs IGNoYXIgKnNlcnZlciwKLSsJCQkgICAgICAgY2hhciAqY2xpX2NlcnQsIGNoYXIgKnNlcnZfY2Vy dCwKLSsJCQkgICAgICAgY2hhciAqY2FfY2VydCwgY2hhciAqcGssCi0rCQkJICAgICAgIHN0cnVj dCB3b3JkbGlzdCAqKiBhZGRycywKLSsJCQkgICAgICAgc3RydWN0IHdvcmRsaXN0ICoqIG9wdHMs Ci0rCQkJICAgICAgIGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MpKTsKLSsjZW5kaWYKLSsKLSBz dGF0aWMgaW50ICBpcF9hZGRyX2NoZWNrIF9fUCgodV9pbnQzMl90LCBzdHJ1Y3QgcGVybWl0dGVk X2lwICopKTsKLSBzdGF0aWMgaW50ICBzY2FuX2F1dGhmaWxlIF9fUCgoRklMRSAqLCBjaGFyICos IGNoYXIgKiwgY2hhciAqLAotIAkJCSAgICAgICBzdHJ1Y3Qgd29yZGxpc3QgKiosIHN0cnVjdCB3 b3JkbGlzdCAqKiwKLUBAIC00MDEsNiArNDMwLDE1IEBAIG9wdGlvbl90IGF1dGhfb3B0aW9uc1td ID0gewotICAgICAgICJTZXQgdGVsZXBob25lIG51bWJlcihzKSB3aGljaCBhcmUgYWxsb3dlZCB0 byBjb25uZWN0IiwKLSAgICAgICBPUFRfUFJJViB8IE9QVF9BMkxJU1QgfSwKLSAKLSsjaWZkZWYg VVNFX0VBUFRMUwotKyAgICB7ICJjYSIsIG9fc3RyaW5nLCAmY2FjZXJ0X2ZpbGUsICAgIkVBUC1U TFMgQ0EgY2VydGlmaWNhdGUgaW4gUEVNIGZvcm1hdCIgfSwKLSsgICAgeyAiY2VydCIsIG9fc3Ry aW5nLCAmY2VydF9maWxlLCAgICJFQVAtVExTIGNsaWVudCBjZXJ0aWZpY2F0ZSBpbiBQRU0gZm9y bWF0IiB9LAotKyAgICB7ICJrZXkiLCBvX3N0cmluZywgJnByaXZrZXlfZmlsZSwgIkVBUC1UTFMg Y2xpZW50IHByaXZhdGUga2V5IGluIFBFTSBmb3JtYXQiIH0sCi0rICAgIHsgImNybC1kaXIiLCBv X3N0cmluZywgJmNybF9kaXIsICAiVXNlIENSTHMgaW4gZGlyZWN0b3J5IiB9LAotKyAgICB7ICJj cmwiLCBvX3N0cmluZywgJmNybF9maWxlLCAgICAgIlVzZSBzcGVjaWZpYyBDUkwgZmlsZSIgfSwK LSsgICAgeyAibmVlZC1wZWVyLWVhcCIsIG9fYm9vbCwgJm5lZWRfcGVlcl9lYXAsCi0rICAgICAg IlJlcXVpcmUgdGhlIHBlZXIgdG8gYXV0aGVudGljYXRlIHVzIiwgMSB9LAotKyNlbmRpZiAvKiBV U0VfRUFQVExTICovCi0gICAgIHsgTlVMTCB9Ci0gfTsKLSAKLUBAIC03MzAsNiArNzY4LDkgQEAg bGlua19lc3RhYmxpc2hlZCh1bml0KQotICAgICBsY3Bfb3B0aW9ucyAqd28gPSAmbGNwX3dhbnRv cHRpb25zW3VuaXRdOwotICAgICBsY3Bfb3B0aW9ucyAqZ28gPSAmbGNwX2dvdG9wdGlvbnNbdW5p dF07Ci0gICAgIGxjcF9vcHRpb25zICpobyA9ICZsY3BfaGlzb3B0aW9uc1t1bml0XTsKLSsjaWZk ZWYgVVNFX0VBUFRMUwotKyAgICBsY3Bfb3B0aW9ucyAqYW8gPSAmbGNwX2FsbG93b3B0aW9uc1t1 bml0XTsKLSsjZW5kaWYKLSAgICAgaW50IGk7Ci0gICAgIHN0cnVjdCBwcm90ZW50ICpwcm90cDsK LSAKLUBAIC03NjQsNiArODA1LDIyIEBAIGxpbmtfZXN0YWJsaXNoZWQodW5pdCkKLSAJfQotICAg ICB9Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsgICAgaWYgKG5lZWRfcGVlcl9lYXAgJiYgIWFv LT5uZWdfZWFwKSB7Ci0rCXdhcm4oImVhcCByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgdXMgYnV0 IG5vIHN1aXRhYmxlIHNlY3JldHMiKTsKLSsJbGNwX2Nsb3NlKHVuaXQsICJjb3VsZG4ndCBuZWdv dGlhdGUgZWFwIik7Ci0rCXN0YXR1cyA9IEVYSVRfQVVUSF9UT1BFRVJfRkFJTEVEOwotKwlyZXR1 cm47Ci0rICAgIH0KLSsKLSsgICAgaWYgKG5lZWRfcGVlcl9lYXAgJiYgIWhvLT5uZWdfZWFwKSB7 Ci0rCXdhcm4oInBlZXIgZG9lc24ndCB3YW50IHRvIGF1dGhlbnRpY2F0ZSB1cyB3aXRoIGVhcCIp OwotKwlsY3BfY2xvc2UodW5pdCwgImNvdWxkbid0IG5lZ290aWF0ZSBlYXAiKTsKLSsJc3RhdHVz ID0gRVhJVF9QRUVSX0FVVEhfRkFJTEVEOwotKwlyZXR1cm47Ci0rICAgIH0KLSsjZW5kaWYKLSsK LSAgICAgbmV3X3BoYXNlKFBIQVNFX0FVVEhFTlRJQ0FURSk7Ci0gICAgIGF1dGggPSAwOwotICAg ICBpZiAoZ28tPm5lZ19lYXApIHsKLUBAIC0xMjc3LDYgKzEzMzQsMTUgQEAgYXV0aF9jaGVja19v cHRpb25zKCkKLSAJCQkJICAgIG91cl9uYW1lLCAxLCAmbGFja3NfaXApOwotICAgICB9Ci0gCi0r I2lmZGVmIFVTRV9FQVBUTFMKLSsgICAgaWYgKCFjYW5fYXV0aCAmJiB3by0+bmVnX2VhcCkgewot KwljYW5fYXV0aCA9Ci0rCSAgICBoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyKChleHBsaWNpdF9y ZW1vdGUgPyByZW1vdGVfbmFtZSA6Ci0rCQkJCSAgICAgICBOVUxMKSwgb3VyX25hbWUsIDEsICZs YWNrc19pcCk7Ci0rCi0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgaWYgKGF1dGhfcmVxdWlyZWQg JiYgIWNhbl9hdXRoICYmIG5vYXV0aF9hZGRycyA9PSBOVUxMKSB7Ci0gCWlmIChkZWZhdWx0X2F1 dGgpIHsKLSAJICAgIG9wdGlvbl9lcnJvcigKLUBAIC0xMzMxLDcgKzEzOTcsMTEgQEAgYXV0aF9y ZXNldCh1bml0KQotIAlwYXNzd2RbMF0gIT0gMCB8fAotIAkoaGFkY2hhcCA9PSAxIHx8IChoYWRj aGFwID09IC0xICYmIGhhdmVfY2hhcF9zZWNyZXQodXNlciwKLSAJICAgIChleHBsaWNpdF9yZW1v dGU/IHJlbW90ZV9uYW1lOiBOVUxMKSwgMCwgTlVMTCkpKSB8fAotLQloYXZlX3NycF9zZWNyZXQo dXNlciwgKGV4cGxpY2l0X3JlbW90ZT8gcmVtb3RlX25hbWU6IE5VTEwpLCAwLCBOVUxMKSk7Ci0r CWhhdmVfc3JwX3NlY3JldCh1c2VyLCAoZXhwbGljaXRfcmVtb3RlPyByZW1vdGVfbmFtZTogTlVM TCksIDAsIE5VTEwpCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJCXx8IGhhdmVfZWFwdGxzX3NlY3Jl dF9jbGllbnQodXNlciwgKGV4cGxpY2l0X3JlbW90ZT8gcmVtb3RlX25hbWU6IE5VTEwpKQotKyNl bmRpZgotKwkpOwotIAotICAgICBoYWRjaGFwID0gLTE7Ci0gICAgIGlmIChnby0+bmVnX3VwYXAg JiYgIXVzZWxvZ2luICYmICFoYXZlX3BhcF9zZWNyZXQoTlVMTCkpCi1AQCAtMTM0Niw4ICsxNDE2 LDE0IEBAIGF1dGhfcmVzZXQodW5pdCkKLSAJICAgICFoYXZlX2NoYXBfc2VjcmV0KChleHBsaWNp dF9yZW1vdGU/IHJlbW90ZV9uYW1lOiBOVUxMKSwgb3VyX25hbWUsCi0gCQkxLCBOVUxMKSkpICYm Ci0gCSFoYXZlX3NycF9zZWNyZXQoKGV4cGxpY2l0X3JlbW90ZT8gcmVtb3RlX25hbWU6IE5VTEwp LCBvdXJfbmFtZSwgMSwKLS0JICAgIE5VTEwpKQotKwkgICAgTlVMTCkKLSsjaWZkZWYgVVNFX0VB UFRMUwotKwkgJiYgIWhhdmVfZWFwdGxzX3NlY3JldF9zZXJ2ZXIoKGV4cGxpY2l0X3JlbW90ZT8g cmVtb3RlX25hbWU6IE5VTEwpLAotKwkJCQkgICBvdXJfbmFtZSwgMSwgTlVMTCkKLSsjZW5kaWYK LSsJCSkKLSAJZ28tPm5lZ19lYXAgPSAwOwotKwotIH0KLSAKLSAKLUBAIC0xNzA3LDYgKzE3ODMs NyBAQCBoYXZlX3NycF9zZWNyZXQoY2xpZW50LCBzZXJ2ZXIsIG5lZWRfaXAsIGxhY2tzX2lwcCkK LSB9Ci0gCi0gCi0rCi0gLyoKLSAgKiBnZXRfc2VjcmV0IC0gb3BlbiB0aGUgQ0hBUCBzZWNyZXQg ZmlsZSBhbmQgcmV0dXJuIHRoZSBzZWNyZXQKLSAgKiBmb3IgYXV0aGVudGljYXRpbmcgdGhlIGdp dmVuIGNsaWVudCBvbiB0aGUgZ2l2ZW4gc2VydmVyLgotQEAgLTIzNTksMyArMjQzNiwzMzUgQEAg YXV0aF9zY3JpcHQoc2NyaXB0KQotIAotICAgICBhdXRoX3NjcmlwdF9waWQgPSBydW5fcHJvZ3Jh bShzY3JpcHQsIGFyZ3YsIDAsIGF1dGhfc2NyaXB0X2RvbmUsIE5VTEwsIDApOwotIH0KLSsKLSsK LSsjaWZkZWYgVVNFX0VBUFRMUwotK3N0YXRpYyBpbnQKLStoYXZlX2VhcHRsc19zZWNyZXRfc2Vy dmVyKGNsaWVudCwgc2VydmVyLCBuZWVkX2lwLCBsYWNrc19pcHApCi0rICAgIGNoYXIgKmNsaWVu dDsKLSsgICAgY2hhciAqc2VydmVyOwotKyAgICBpbnQgbmVlZF9pcDsKLSsgICAgaW50ICpsYWNr c19pcHA7Ci0rewotKyAgICBGSUxFICpmOwotKyAgICBpbnQgcmV0OwotKyAgICBjaGFyICpmaWxl bmFtZTsKLSsgICAgc3RydWN0IHdvcmRsaXN0ICphZGRyczsKLSsgICAgY2hhciBzZXJ2Y2VydGZp bGVbTUFYV09SRExFTl07Ci0rICAgIGNoYXIgY2xpY2VydGZpbGVbTUFYV09SRExFTl07Ci0rICAg IGNoYXIgY2FjZXJ0ZmlsZVtNQVhXT1JETEVOXTsKLSsgICAgY2hhciBwa2ZpbGVbTUFYV09SRExF Tl07Ci0rCi0rICAgIGZpbGVuYW1lID0gX1BBVEhfRUFQVExTU0VSVkZJTEU7Ci0rICAgIGYgPSBm b3BlbihmaWxlbmFtZSwgInIiKTsKLSsgICAgaWYgKGYgPT0gTlVMTCkKLSsJCXJldHVybiAwOwot KwotKyAgICBpZiAoY2xpZW50ICE9IE5VTEwgJiYgY2xpZW50WzBdID09IDApCi0rCQljbGllbnQg PSBOVUxMOwotKyAgICBlbHNlIGlmIChzZXJ2ZXIgIT0gTlVMTCAmJiBzZXJ2ZXJbMF0gPT0gMCkK LSsJCXNlcnZlciA9IE5VTEw7Ci0rCi0rICAgIHJldCA9Ci0rCXNjYW5fYXV0aGZpbGVfZWFwdGxz KGYsIGNsaWVudCwgc2VydmVyLCBjbGljZXJ0ZmlsZSwgc2VydmNlcnRmaWxlLAotKwkJCSAgICAg Y2FjZXJ0ZmlsZSwgcGtmaWxlLCAmYWRkcnMsIE5VTEwsIGZpbGVuYW1lLAotKwkJCSAgICAgMCk7 Ci0rCi0rICAgIGZjbG9zZShmKTsKLSsKLSsvKgotKyAgICBpZiAocmV0ID49IDAgJiYgIWVhcHRs c19pbml0X3NzbCgxLCBjYWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUsCi0rCQkJCWNsaWNlcnRmaWxl LCBwa2ZpbGUpKQotKwkJcmV0ID0gLTE7Ci0rKi8KLSsKLSsJaWYgKHJldCA+PSAwICYmIG5lZWRf aXAgJiYgIXNvbWVfaXBfb2soYWRkcnMpKSB7Ci0rCQlpZiAobGFja3NfaXBwICE9IDApCi0rCQkJ KmxhY2tzX2lwcCA9IDE7Ci0rCQlyZXQgPSAtMTsKLSsgICAgfQotKyAgICBpZiAoYWRkcnMgIT0g MCkKLSsJCWZyZWVfd29yZGxpc3QoYWRkcnMpOwotKwotKyAgICByZXR1cm4gcmV0ID49IDA7Ci0r fQotKwotKwotK3N0YXRpYyBpbnQKLStoYXZlX2VhcHRsc19zZWNyZXRfY2xpZW50KGNsaWVudCwg c2VydmVyKQotKyAgICBjaGFyICpjbGllbnQ7Ci0rICAgIGNoYXIgKnNlcnZlcjsKLSt7Ci0rICAg IEZJTEUgKmY7Ci0rICAgIGludCByZXQ7Ci0rICAgIGNoYXIgKmZpbGVuYW1lOwotKyAgICBzdHJ1 Y3Qgd29yZGxpc3QgKmFkZHJzID0gTlVMTDsKLSsgICAgY2hhciBzZXJ2Y2VydGZpbGVbTUFYV09S RExFTl07Ci0rICAgIGNoYXIgY2xpY2VydGZpbGVbTUFYV09SRExFTl07Ci0rICAgIGNoYXIgY2Fj ZXJ0ZmlsZVtNQVhXT1JETEVOXTsKLSsgICAgY2hhciBwa2ZpbGVbTUFYV09SRExFTl07Ci0rCi0r ICAgIGlmIChjbGllbnQgIT0gTlVMTCAmJiBjbGllbnRbMF0gPT0gMCkKLSsJCWNsaWVudCA9IE5V TEw7Ci0rICAgIGVsc2UgaWYgKHNlcnZlciAhPSBOVUxMICYmIHNlcnZlclswXSA9PSAwKQotKwkJ c2VydmVyID0gTlVMTDsKLSsKLSsJaWYgKGNhY2VydF9maWxlICYmIGNlcnRfZmlsZSAmJiBwcml2 a2V5X2ZpbGUpCi0rCQlyZXR1cm4gMTsKLSsKLSsgICAgZmlsZW5hbWUgPSBfUEFUSF9FQVBUTFND TElGSUxFOwotKyAgICBmID0gZm9wZW4oZmlsZW5hbWUsICJyIik7Ci0rICAgIGlmIChmID09IE5V TEwpCi0rCQlyZXR1cm4gMDsKLSsKLSsgICAgcmV0ID0KLSsJc2Nhbl9hdXRoZmlsZV9lYXB0bHMo ZiwgY2xpZW50LCBzZXJ2ZXIsIGNsaWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUsCi0rCQkJICAgICBj YWNlcnRmaWxlLCBwa2ZpbGUsICZhZGRycywgTlVMTCwgZmlsZW5hbWUsCi0rCQkJICAgICAwKTsK LSsgICAgZmNsb3NlKGYpOwotKwotKy8qCi0rICAgIGlmIChyZXQgPj0gMCAmJiAhZWFwdGxzX2lu aXRfc3NsKDAsIGNhY2VydGZpbGUsIGNsaWNlcnRmaWxlLAotKwkJCQlzZXJ2Y2VydGZpbGUsIHBr ZmlsZSkpCi0rCQlyZXQgPSAtMTsKLSsqLwotKwotKyAgICBpZiAoYWRkcnMgIT0gMCkKLSsJCWZy ZWVfd29yZGxpc3QoYWRkcnMpOwotKwotKyAgICByZXR1cm4gcmV0ID49IDA7Ci0rfQotKwotKwot K3N0YXRpYyBpbnQKLStzY2FuX2F1dGhmaWxlX2VhcHRscyhmLCBjbGllbnQsIHNlcnZlciwgY2xp X2NlcnQsIHNlcnZfY2VydCwgY2FfY2VydCwgcGssCi0rCQkgICAgIGFkZHJzLCBvcHRzLCBmaWxl bmFtZSwgZmxhZ3MpCi0rICAgIEZJTEUgKmY7Ci0rICAgIGNoYXIgKmNsaWVudDsKLSsgICAgY2hh ciAqc2VydmVyOwotKyAgICBjaGFyICpjbGlfY2VydDsKLSsgICAgY2hhciAqc2Vydl9jZXJ0Owot KyAgICBjaGFyICpjYV9jZXJ0OwotKyAgICBjaGFyICpwazsKLSsgICAgc3RydWN0IHdvcmRsaXN0 ICoqYWRkcnM7Ci0rICAgIHN0cnVjdCB3b3JkbGlzdCAqKm9wdHM7Ci0rICAgIGNoYXIgKmZpbGVu YW1lOwotKyAgICBpbnQgZmxhZ3M7Ci0rewotKyAgICBpbnQgbmV3bGluZTsKLSsgICAgaW50IGdv dF9mbGFnLCBiZXN0X2ZsYWc7Ci0rICAgIHN0cnVjdCB3b3JkbGlzdCAqYXAsICphZGRyX2xpc3Qs ICphbGlzdCwgKiphcHA7Ci0rICAgIGNoYXIgd29yZFtNQVhXT1JETEVOXTsKLSsKLSsgICAgaWYg KGFkZHJzICE9IE5VTEwpCi0rCSphZGRycyA9IE5VTEw7Ci0rICAgIGlmIChvcHRzICE9IE5VTEwp Ci0rCSpvcHRzID0gTlVMTDsKLSsgICAgYWRkcl9saXN0ID0gTlVMTDsKLSsgICAgaWYgKCFnZXR3 b3JkKGYsIHdvcmQsICZuZXdsaW5lLCBmaWxlbmFtZSkpCi0rCXJldHVybiAtMTsJCS8qIGZpbGUg aXMgZW1wdHk/Pz8gKi8KLSsgICAgbmV3bGluZSA9IDE7Ci0rICAgIGJlc3RfZmxhZyA9IC0xOwot KyAgICBmb3IgKDs7KSB7Ci0rCS8qCi0rCSAqIFNraXAgdW50aWwgd2UgZmluZCBhIHdvcmQgYXQg dGhlIHN0YXJ0IG9mIGEgbGluZS4KLSsJICovCi0rCXdoaWxlICghbmV3bGluZSAmJiBnZXR3b3Jk KGYsIHdvcmQsICZuZXdsaW5lLCBmaWxlbmFtZSkpOwotKwlpZiAoIW5ld2xpbmUpCi0rCSAgICBi cmVhazsJCS8qIGdvdCB0byBlbmQgb2YgZmlsZSAqLwotKwotKwkvKgotKwkgKiBHb3QgYSBjbGll bnQgLSBjaGVjayBpZiBpdCdzIGEgbWF0Y2ggb3IgYSB3aWxkY2FyZC4KLSsJICovCi0rCWdvdF9m bGFnID0gMDsKLSsJaWYgKGNsaWVudCAhPSBOVUxMICYmIHN0cmNtcCh3b3JkLCBjbGllbnQpICE9 IDAgJiYgIUlTV0lMRCh3b3JkKSkgewotKwkgICAgbmV3bGluZSA9IDA7Ci0rCSAgICBjb250aW51 ZTsKLSsJfQotKwlpZiAoIUlTV0lMRCh3b3JkKSkKLSsJICAgIGdvdF9mbGFnID0gTk9OV0lMRF9D TElFTlQ7Ci0rCi0rCS8qCi0rCSAqIE5vdyBnZXQgYSBzZXJ2ZXIgYW5kIGNoZWNrIGlmIGl0IG1h dGNoZXMuCi0rCSAqLwotKwlpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1l KSkKLSsJICAgIGJyZWFrOwotKwlpZiAobmV3bGluZSkKLSsJICAgIGNvbnRpbnVlOwotKwlpZiAo IUlTV0lMRCh3b3JkKSkgewotKwkgICAgaWYgKHNlcnZlciAhPSBOVUxMICYmIHN0cmNtcCh3b3Jk LCBzZXJ2ZXIpICE9IDApCi0rCQljb250aW51ZTsKLSsJICAgIGdvdF9mbGFnIHw9IE5PTldJTERf U0VSVkVSOwotKwl9Ci0rCi0rCS8qCi0rCSAqIEdvdCBzb21lIHNvcnQgb2YgYSBtYXRjaCAtIHNl ZSBpZiBpdCdzIGJldHRlciB0aGFuIHdoYXQKLSsJICogd2UgaGF2ZSBhbHJlYWR5LgotKwkgKi8K LSsJaWYgKGdvdF9mbGFnIDw9IGJlc3RfZmxhZykKLSsJICAgIGNvbnRpbnVlOwotKwotKwkvKgot KwkgKiBHZXQgdGhlIGNsaV9jZXJ0Ci0rCSAqLwotKwlpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5l d2xpbmUsIGZpbGVuYW1lKSkKLSsJICAgIGJyZWFrOwotKwlpZiAobmV3bGluZSkKLSsJICAgIGNv bnRpbnVlOwotKwlpZiAoc3RyY21wKHdvcmQsICItIikgIT0gMCkgewotKwkgICAgc3RybGNweShj bGlfY2VydCwgd29yZCwgTUFYV09SRExFTik7Ci0rCX0gZWxzZQotKwkgICAgY2xpX2NlcnRbMF0g PSAwOwotKwotKwkvKgotKwkgKiBHZXQgc2Vydl9jZXJ0Ci0rCSAqLwotKwlpZiAoIWdldHdvcmQo Ziwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkKLSsJICAgIGJyZWFrOwotKwlpZiAobmV3bGlu ZSkKLSsJICAgIGNvbnRpbnVlOwotKwlpZiAoc3RyY21wKHdvcmQsICItIikgIT0gMCkgewotKwkg ICAgc3RybGNweShzZXJ2X2NlcnQsIHdvcmQsIE1BWFdPUkRMRU4pOwotKwl9IGVsc2UKLSsJICAg IHNlcnZfY2VydFswXSA9IDA7Ci0rCi0rCS8qCi0rCSAqIEdldCBjYV9jZXJ0Ci0rCSAqLwotKwlp ZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkKLSsJICAgIGJyZWFrOwot KwlpZiAobmV3bGluZSkKLSsJICAgIGNvbnRpbnVlOwotKwlzdHJsY3B5KGNhX2NlcnQsIHdvcmQs IE1BWFdPUkRMRU4pOwotKwotKwkvKgotKwkgKiBHZXQgcGsKLSsJICovCi0rCWlmICghZ2V0d29y ZChmLCB3b3JkLCAmbmV3bGluZSwgZmlsZW5hbWUpKQotKwkgICAgYnJlYWs7Ci0rCWlmIChuZXds aW5lKQotKwkgICAgY29udGludWU7Ci0rCXN0cmxjcHkocGssIHdvcmQsIE1BWFdPUkRMRU4pOwot KwotKwotKwkvKgotKwkgKiBOb3cgcmVhZCBhZGRyZXNzIGF1dGhvcml6YXRpb24gaW5mbyBhbmQg bWFrZSBhIHdvcmRsaXN0LgotKwkgKi8KLSsJYXBwID0gJmFsaXN0OwotKwlmb3IgKDs7KSB7Ci0r CSAgICBpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSB8fCBuZXdsaW5l KQotKwkJYnJlYWs7Ci0rCSAgICBhcCA9IChzdHJ1Y3Qgd29yZGxpc3QgKikKLSsJCW1hbGxvYyhz aXplb2Yoc3RydWN0IHdvcmRsaXN0KSArIHN0cmxlbih3b3JkKSArIDEpOwotKwkgICAgaWYgKGFw ID09IE5VTEwpCi0rCQlub3ZtKCJhdXRob3JpemVkIGFkZHJlc3NlcyIpOwotKwkgICAgYXAtPndv cmQgPSAoY2hhciAqKSAoYXAgKyAxKTsKLSsJICAgIHN0cmNweShhcC0+d29yZCwgd29yZCk7Ci0r CSAgICAqYXBwID0gYXA7Ci0rCSAgICBhcHAgPSAmYXAtPm5leHQ7Ci0rCX0KLSsJKmFwcCA9IE5V TEw7Ci0rCS8qCi0rCSAqIFRoaXMgaXMgdGhlIGJlc3Qgc28gZmFyOyByZW1lbWJlciBpdC4KLSsJ ICovCi0rCWJlc3RfZmxhZyA9IGdvdF9mbGFnOwotKwlpZiAoYWRkcl9saXN0KQotKwkgICAgZnJl ZV93b3JkbGlzdChhZGRyX2xpc3QpOwotKwlhZGRyX2xpc3QgPSBhbGlzdDsKLSsKLSsJaWYgKCFu ZXdsaW5lKQotKwkgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgLyogc2NhbiBmb3IgYSAtLSB3 b3JkIGluZGljYXRpbmcgdGhlIHN0YXJ0IG9mIG9wdGlvbnMgKi8KLSsgICAgZm9yIChhcHAgPSAm YWRkcl9saXN0OyAoYXAgPSAqYXBwKSAhPSBOVUxMOyBhcHAgPSAmYXAtPm5leHQpCi0rCWlmIChz dHJjbXAoYXAtPndvcmQsICItLSIpID09IDApCi0rCSAgICBicmVhazsKLSsgICAgLyogYXAgPSBz dGFydCBvZiBvcHRpb25zICovCi0rICAgIGlmIChhcCAhPSBOVUxMKSB7Ci0rCWFwID0gYXAtPm5l eHQ7CQkvKiBmaXJzdCBvcHRpb24gKi8KLSsJZnJlZSgqYXBwKTsJCS8qIGZyZWUgdGhlICItLSIg d29yZCAqLwotKwkqYXBwID0gTlVMTDsJCS8qIHRlcm1pbmF0ZSBhZGRyIGxpc3QgKi8KLSsgICAg fQotKyAgICBpZiAob3B0cyAhPSBOVUxMKQotKwkqb3B0cyA9IGFwOwotKyAgICBlbHNlIGlmIChh cCAhPSBOVUxMKQotKwlmcmVlX3dvcmRsaXN0KGFwKTsKLSsgICAgaWYgKGFkZHJzICE9IE5VTEwp Ci0rCSphZGRycyA9IGFkZHJfbGlzdDsKLSsgICAgZWxzZSBpZiAoYWRkcl9saXN0ICE9IE5VTEwp Ci0rCWZyZWVfd29yZGxpc3QoYWRkcl9saXN0KTsKLSsKLSsgICAgcmV0dXJuIGJlc3RfZmxhZzsK LSt9Ci0rCi0rCi0raW50Ci0rZ2V0X2VhcHRsc19zZWNyZXQodW5pdCwgY2xpZW50LCBzZXJ2ZXIs IGNsaWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUsCi0rCQkgIGNhY2VydGZpbGUsIHBrZmlsZSwgYW1f c2VydmVyKQotKyAgICBpbnQgdW5pdDsKLSsgICAgY2hhciAqY2xpZW50OwotKyAgICBjaGFyICpz ZXJ2ZXI7Ci0rICAgIGNoYXIgKmNsaWNlcnRmaWxlOwotKyAgICBjaGFyICpzZXJ2Y2VydGZpbGU7 Ci0rICAgIGNoYXIgKmNhY2VydGZpbGU7Ci0rICAgIGNoYXIgKnBrZmlsZTsKLSsgICAgaW50IGFt X3NlcnZlcjsKLSt7Ci0rICAgIEZJTEUgKmZwOwotKyAgICBpbnQgcmV0OwotKyAgICBjaGFyICpm aWxlbmFtZSAgICAgICAgID0gTlVMTDsKLSsgICAgc3RydWN0IHdvcmRsaXN0ICphZGRycyA9IE5V TEw7Ci0rICAgIHN0cnVjdCB3b3JkbGlzdCAqb3B0cyAgPSBOVUxMOwotKwotKwkvKiBpbiBjbGll bnQgbW9kZSB0aGUgY2ErY2VydCtwcml2a2V5IGNhbiBhbHNvIGJlIHNwZWNpZmllZCBhcyBvcHRp b25zICovCi0rCWlmICghYW1fc2VydmVyICYmIGNhY2VydF9maWxlICYmIGNlcnRfZmlsZSAmJiBw cml2a2V5X2ZpbGUgKQotKwl7Ci0rCQlzdHJsY3B5KCBjbGljZXJ0ZmlsZSwgY2VydF9maWxlLCBN QVhXT1JETEVOICk7Ci0rCQlzdHJsY3B5KCBjYWNlcnRmaWxlLCBjYWNlcnRfZmlsZSwgTUFYV09S RExFTiApOwotKwkJc3RybGNweSggcGtmaWxlLCBwcml2a2V5X2ZpbGUsIE1BWFdPUkRMRU4gKTsK LSsJCXNlcnZjZXJ0ZmlsZVswXSA9ICdcMCc7Ci0rCX0KLSsJZWxzZQotKwl7Ci0rCQlmaWxlbmFt ZSA9IChhbV9zZXJ2ZXIgPyBfUEFUSF9FQVBUTFNTRVJWRklMRSA6IF9QQVRIX0VBUFRMU0NMSUZJ TEUpOwotKwkJYWRkcnMgPSBOVUxMOwotKwotKwkJZnAgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsK LSsJCWlmIChmcCA9PSBOVUxMKQotKwkJewotKwkJCWVycm9yKCJDYW4ndCBvcGVuIGVhcC10bHMg c2VjcmV0IGZpbGUgJXM6ICVtIiwgZmlsZW5hbWUpOwotKwkJCXJldHVybiAwOwotKyAgIAkgCX0K LSsKLSsJCWNoZWNrX2FjY2VzcyhmcCwgZmlsZW5hbWUpOwotKwotKwkJcmV0ID0gc2Nhbl9hdXRo ZmlsZV9lYXB0bHMoZnAsIGNsaWVudCwgc2VydmVyLCBjbGljZXJ0ZmlsZSwgc2VydmNlcnRmaWxl LAotKwkJCQljYWNlcnRmaWxlLCBwa2ZpbGUsICZhZGRycywgJm9wdHMsIGZpbGVuYW1lLCAwKTsK LSsKLSsJCWZjbG9zZShmcCk7Ci0rCi0rCQlpZiAocmV0IDwgMCkgcmV0dXJuIDA7Ci0rCX0KLSsK LSsgICAgaWYgKGVhcHRsc19wYXNzd2RfaG9vaykKLSsgICAgewotKwkJZGJnbG9nKCAiQ2FsbGlu ZyBlYXB0bHMgcGFzc3dvcmQgaG9vayIgKTsKLSsJCWlmICggKCplYXB0bHNfcGFzc3dkX2hvb2sp KHBrZmlsZSwgcGFzc3dkKSA8IDApCi0rCQl7Ci0rCSAgIAkJIGVycm9yKCJVbmFibGUgdG8gb2J0 YWluIEVBUC1UTFMgcGFzc3dvcmQgZm9yICVzICglcykgZnJvbSBwbHVnaW4iLAotKwkJCQljbGll bnQsIHBrZmlsZSk7Ci0rCQkgICAgcmV0dXJuIDA7Ci0rCQl9Ci0rCX0KLSsgICAgaWYgKGFtX3Nl cnZlcikKLSsJCXNldF9hbGxvd2VkX2FkZHJzKHVuaXQsIGFkZHJzLCBvcHRzKTsKLSsgICAgZWxz ZSBpZiAob3B0cyAhPSBOVUxMKQotKwkJZnJlZV93b3JkbGlzdChvcHRzKTsKLSsgICAgaWYgKGFk ZHJzICE9IE5VTEwpCi0rCQlmcmVlX3dvcmRsaXN0KGFkZHJzKTsKLSsKLSsgICAgcmV0dXJuIDE7 Ci0rfQotKyNlbmRpZgotKwotZGlmZiAtLWdpdCBhL3BwcGQvY2NwLmMgYi9wcHBkL2NjcC5jCi1p bmRleCA3ZDc5MjJhZmNmYzAuLjBhOTNiMTVhZWVmMyAxMDA2NDQKLS0tLSBhL3BwcGQvY2NwLmMK LSsrKyBiL3BwcGQvY2NwLmMKLUBAIC01NDAsNiArNTQwLDkgQEAgY2NwX3Jlc2V0Y2koZikKLSAg ICAgaWYgKGdvLT5tcHBlKSB7Ci0gCWNjcF9vcHRpb25zICphbyA9ICZjY3BfYWxsb3dvcHRpb25z W2YtPnVuaXRdOwotIAlpbnQgYXV0aF9tc2NoYXBfYml0cyA9IGF1dGhfZG9uZVtmLT51bml0XTsK LSsjaWZkZWYgVVNFX0VBUFRMUwotKwlpbnQgYXV0aF9lYXBfYml0cyA9IGF1dGhfZG9uZVtmLT51 bml0XTsKLSsjZW5kaWYKLSAJaW50IG51bWJpdHM7Ci0gCi0gCS8qCi1AQCAtNTY3LDggKzU3MCwy MyBAQCBjY3BfcmVzZXRjaShmKQotIAkgICAgbGNwX2Nsb3NlKGYtPnVuaXQsICJNUFBFIHJlcXVp cmVkIGJ1dCBub3QgYXZhaWxhYmxlIik7Ci0gCSAgICByZXR1cm47Ci0gCX0KLSsKLSsjaWZkZWYg VVNFX0VBUFRMUwotKyAgICAvKgotKyAgICAgKiBNUFBFIGlzIGFsc28gcG9zc2libGUgaW4gY29t YmluYXRpb24gd2l0aCBFQVAtVExTLgotKyAgICAgKiBJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0 ZWN0IGlmIHdlJ3JlIGRvaW5nIEVBUCBvciBFQVAtVExTCi0rICAgICAqIGF0IHRoaXMgc3RhZ2Us IGhlbmNlIHdlIGFjY2VwdCBhbGwgZm9ybXMgb2YgRUFQLiBJZiBUTFMgaXMKLSsgICAgICogbm90 IHVzZWQgdGhlbiB0aGUgTVBQRSBrZXlzIHdpbGwgbm90IGJlIGRlcml2ZWQgYW55d2F5LgotKyAg ICAgKi8KLSsJLyogTGVhdmUgb25seSB0aGUgZWFwIGF1dGggYml0cyBzZXQgKi8KLSsJYXV0aF9l YXBfYml0cyAmPSAoRUFQX1dJVEhQRUVSIHwgRUFQX1BFRVIgKTsKLSsKLSsJaWYgKChudW1iaXRz ID09IDApICYmIChhdXRoX2VhcF9iaXRzID09IDApKSB7Ci0rCSAgICBlcnJvcigiTVBQRSByZXF1 aXJlZCwgYnV0IE1TLUNIQVBbdjJdIG5vciBFQVAtVExTIGF1dGggYXJlIHBlcmZvcm1lZC4iKTsK LSsjZWxzZQotIAlpZiAoIW51bWJpdHMpIHsKLS0JICAgIGVycm9yKCJNUFBFIHJlcXVpcmVkLCBi dXQgTVMtQ0hBUFt2Ml0gYXV0aCBub3QgcGVyZm9ybWVkLiIpOwotKwkJZXJyb3IoIk1QUEUgcmVx dWlyZWQsIGJ1dCBNUy1DSEFQW3YyXSBhdXRoIG5vdCBwZXJmb3JtZWQuIik7Ci0rI2VuZGlmCi0g CSAgICBsY3BfY2xvc2UoZi0+dW5pdCwgIk1QUEUgcmVxdWlyZWQgYnV0IG5vdCBhdmFpbGFibGUi KTsKLSAJICAgIHJldHVybjsKLSAJfQotZGlmZiAtLWdpdCBhL3BwcGQvY2hhcC1tZDUuYyBiL3Bw cGQvY2hhcC1tZDUuYwotaW5kZXggNzdkZDRlY2M3MDU5Li4yNjliNTJjYjIwNDEgMTAwNjQ0Ci0t LS0gYS9wcHBkL2NoYXAtbWQ1LmMKLSsrKyBiL3BwcGQvY2hhcC1tZDUuYwotQEAgLTM2LDcgKzM2 LDExIEBACi0gI2luY2x1ZGUgImNoYXAtbmV3LmgiCi0gI2luY2x1ZGUgImNoYXAtbWQ1LmgiCi0g I2luY2x1ZGUgIm1hZ2ljLmgiCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsjaW5jbHVkZSAiZWFwLXRs cy5oIgotKyNlbHNlCi0gI2luY2x1ZGUgIm1kNS5oIgotKyNlbmRpZiAvKiBVU0VfRUFQVExTICov Ci0gCi0gI2RlZmluZSBNRDVfSEFTSF9TSVpFCQkxNgotICNkZWZpbmUgTUQ1X01JTl9DSEFMTEVO R0UJMTYKLWRpZmYgLS1naXQgYS9wcHBkL2VhcC10bHMuYyBiL3BwcGQvZWFwLXRscy5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi5kZjRiYzFiOTk2YzkKLS0tLSAv ZGV2L251bGwKLSsrKyBiL3BwcGQvZWFwLXRscy5jCi1AQCAtMCwwICsxLDEzODMgQEAKLSsvKiAq IGVhcC10bHMuYyAtIEVBUC1UTFMgaW1wbGVtZW50YXRpb24gZm9yIFBQUAotKyAqCi0rICogQ29w eXJpZ2h0IChjKSBCZW5pYW1pbm8gR2FsdmFuaSAyMDA1IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0r ICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICog MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBUaGUgbmFtZShz KSBvZiB0aGUgYXV0aG9ycyBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsg KiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSsgKgotKyAqIFRI RSBBVVRIT1JTIE9GIFRISVMgU09GVFdBUkUgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBS RUdBUkQgVE8KLSsgKiBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKLSsgKiBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSsgKiBTUEVDSUFMLCBJTkRJUkVDVCBP UiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJF U1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KLSsg KiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNU SU9OLCBBUklTSU5HCi0rICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9S IFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K LSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsKLSsjaW5jbHVk ZSA8b3BlbnNzbC9jb25mLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+Ci0rI2luY2x1 ZGUgPG9wZW5zc2wvaG1hYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL3g1MDl2My5oPgotKwotKyNpbmNsdWRlICJwcHBkLmgiCi0rI2luY2x1ZGUgImVh cC5oIgotKyNpbmNsdWRlICJlYXAtdGxzLmgiCi0rI2luY2x1ZGUgImZzbS5oIgotKyNpbmNsdWRl ICJsY3AuaCIKLSsjaW5jbHVkZSAicGF0aG5hbWVzLmgiCi0rCi0rLyogVGhlIG9wZW5zc2wgY29u ZmlndXJhdGlvbiBmaWxlIGFuZCBlbmdpbmVzIGNhbiBiZSBsb2FkZWQgb25seSBvbmNlICovCi0r c3RhdGljIENPTkYgICAqc3NsX2NvbmZpZyAgPSBOVUxMOwotK3N0YXRpYyBFTkdJTkUgKmNlcnRf ZW5naW5lID0gTlVMTDsKLStzdGF0aWMgRU5HSU5FICpwa2V5X2VuZ2luZSA9IE5VTEw7Ci0rCi0r I2lmZGVmIE1QUEUKLSsKLSsjZGVmaW5lIEVBUFRMU19NUFBFX0tFWV9MRU4gICAgIDMyCi0rCi0r LyoKLSsgKiBUaGUgZm9sbG93aW5nIHN0dWZmIGlzIG9ubHkgbmVlZGVkIGlmIFNTTF9leHBvcnRf a2V5aW5nX21hdGVyaWFsKCkgaXMgbm90IGF2YWlsYWJsZQotKyAqLwotKwotKyNpZiBPUEVOU1NM X1ZFUlNJT05fTlVNQkVSIDwgMHgxMDAwMTAwMEwKLSsKLSsvKgotKyAqIGh0dHBzOi8vd2lraS5v cGVuc3NsLm9yZy9pbmRleC5waHAvMS4xX0FQSV9DaGFuZ2VzCi0rICogdHJpZXMgdG8gcHJvdmlk ZSBzb21lIGd1aWRhbmNlIGJ1dCB1bHRpbWF0ZWx5IGZhbGxzIHNob3J0LgotKyAqCi0rICovCi0r Ci0rc3RhdGljIHZvaWQgSE1BQ19DVFhfZnJlZShITUFDX0NUWCAqY3R4KQotK3sKLSsJaWYgKGN0 eCAhPSBOVUxMKSB7Ci0rCQlITUFDX0NUWF9jbGVhbnVwKGN0eCk7Ci0rCQlPUEVOU1NMX2ZyZWUo Y3R4KTsKLSsJfQotK30KLSsKLStzdGF0aWMgSE1BQ19DVFggKkhNQUNfQ1RYX25ldyh2b2lkKQot K3sKLSsJSE1BQ19DVFggKmN0eCA9IE9QRU5TU0xfbWFsbG9jKHNpemVvZigqY3R4KSk7Ci0rCWlm IChjdHggIT0gTlVMTCkKLSsJCUhNQUNfQ1RYX2luaXQoY3R4KTsKLSsJcmV0dXJuIGN0eDsKLSt9 Ci0rCi0rc3RhdGljIHNpemVfdCBTU0xfZ2V0X2NsaWVudF9yYW5kb20oY29uc3QgU1NMICpzc2ws IHVuc2lnbmVkIGNoYXIgKm91dCwKLSsJCQkJICAgIHNpemVfdCBvdXRsZW4pCi0rewotKwlpZiAo b3V0bGVuID09IDApCi0rCQlyZXR1cm4gc2l6ZW9mKHNzbC0+czMtPmNsaWVudF9yYW5kb20pOwot KwlpZiAob3V0bGVuID4gc2l6ZW9mKHNzbC0+czMtPmNsaWVudF9yYW5kb20pKQotKwkJb3V0bGVu ID0gc2l6ZW9mKHNzbC0+czMtPmNsaWVudF9yYW5kb20pOwotKwltZW1jcHkob3V0LCBzc2wtPnMz LT5jbGllbnRfcmFuZG9tLCBvdXRsZW4pOwotKwlyZXR1cm4gb3V0bGVuOwotK30KLSsKLStzdGF0 aWMgc2l6ZV90IFNTTF9nZXRfc2VydmVyX3JhbmRvbShjb25zdCBTU0wgKnNzbCwgdW5zaWduZWQg Y2hhciAqb3V0LAotKwkJCQkgICAgc2l6ZV90IG91dGxlbikKLSt7Ci0rCWlmIChvdXRsZW4gPT0g MCkKLSsJCXJldHVybiBzaXplb2Yoc3NsLT5zMy0+c2VydmVyX3JhbmRvbSk7Ci0rCWlmIChvdXRs ZW4gPiBzaXplb2Yoc3NsLT5zMy0+c2VydmVyX3JhbmRvbSkpCi0rCQlvdXRsZW4gPSBzaXplb2Yo c3NsLT5zMy0+c2VydmVyX3JhbmRvbSk7Ci0rCW1lbWNweShvdXQsIHNzbC0+czMtPnNlcnZlcl9y YW5kb20sIG91dGxlbik7Ci0rCXJldHVybiBvdXRsZW47Ci0rfQotKwotK3N0YXRpYyBzaXplX3Qg U1NMX1NFU1NJT05fZ2V0X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24sCi0r CQkJCSAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbikKLSt7Ci0rCWlm IChvdXRsZW4gPT0gMCkKLSsJCXJldHVybiBzZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aDsKLSsJ aWYgKG91dGxlbiA+IHNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoKQotKwkJb3V0bGVuID0gc2Vz c2lvbi0+bWFzdGVyX2tleV9sZW5ndGg7Ci0rCW1lbWNweShvdXQsIHNlc3Npb24tPm1hc3Rlcl9r ZXksIG91dGxlbik7Ci0rCXJldHVybiBvdXRsZW47Ci0rfQotKwotKwotKy8qCi0rICogVExTIFBS RiBmcm9tIFJGQyAyMjQ2Ci0rICovCi0rc3RhdGljIHZvaWQgUF9oYXNoKGNvbnN0IEVWUF9NRCAq ZXZwX21kLAotKwkJICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LCB1bnNpZ25lZCBpbnQg c2VjcmV0X2xlbiwKLSsJCSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWQsICAgdW5zaWduZWQg aW50IHNlZWRfbGVuLAotKwkJICAgdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBpbnQgb3V0 X2xlbikKLSt7Ci0rCUhNQUNfQ1RYICpjdHhfYSwgKmN0eF9vdXQ7Ci0rCXVuc2lnbmVkIGNoYXIg YVtITUFDX01BWF9NRF9DQkxPQ0tdOwotKwl1bnNpZ25lZCBpbnQgc2l6ZTsKLSsKLSsJY3R4X2Eg PSBITUFDX0NUWF9uZXcoKTsKLSsJY3R4X291dCA9IEhNQUNfQ1RYX25ldygpOwotKwlITUFDX0lu aXRfZXgoY3R4X2EsIHNlY3JldCwgc2VjcmV0X2xlbiwgZXZwX21kLCBOVUxMKTsKLSsJSE1BQ19J bml0X2V4KGN0eF9vdXQsIHNlY3JldCwgc2VjcmV0X2xlbiwgZXZwX21kLCBOVUxMKTsKLSsKLSsJ c2l6ZSA9IEhNQUNfc2l6ZShjdHhfb3V0KTsKLSsKLSsJLyogQ2FsY3VsYXRlIEEoMSkgKi8KLSsJ SE1BQ19VcGRhdGUoY3R4X2EsIHNlZWQsIHNlZWRfbGVuKTsKLSsJSE1BQ19GaW5hbChjdHhfYSwg YSwgTlVMTCk7Ci0rCi0rCXdoaWxlICgxKSB7Ci0rCQkvKiBDYWxjdWxhdGUgbmV4dCBwYXJ0IG9m IG91dHB1dCAqLwotKwkJSE1BQ19VcGRhdGUoY3R4X291dCwgYSwgc2l6ZSk7Ci0rCQlITUFDX1Vw ZGF0ZShjdHhfb3V0LCBzZWVkLCBzZWVkX2xlbik7Ci0rCi0rCQkvKiBDaGVjayBpZiBsYXN0IHBh cnQgKi8KLSsJCWlmIChvdXRfbGVuIDwgc2l6ZSkgewotKwkJCUhNQUNfRmluYWwoY3R4X291dCwg YSwgTlVMTCk7Ci0rCQkJbWVtY3B5KG91dCwgYSwgb3V0X2xlbik7Ci0rCQkJYnJlYWs7Ci0rCQl9 Ci0rCi0rCQkvKiBQbGFjZSBkaWdlc3QgaW4gb3V0cHV0IGJ1ZmZlciAqLwotKwkJSE1BQ19GaW5h bChjdHhfb3V0LCBvdXQsIE5VTEwpOwotKwkJSE1BQ19Jbml0X2V4KGN0eF9vdXQsIE5VTEwsIDAs IE5VTEwsIE5VTEwpOwotKwkJb3V0ICs9IHNpemU7Ci0rCQlvdXRfbGVuIC09IHNpemU7Ci0rCi0r CQkvKiBDYWxjdWxhdGUgbmV4dCBBKGkpICovCi0rCQlITUFDX0luaXRfZXgoY3R4X2EsIE5VTEws IDAsIE5VTEwsIE5VTEwpOwotKwkJSE1BQ19VcGRhdGUoY3R4X2EsIGEsIHNpemUpOwotKwkJSE1B Q19GaW5hbChjdHhfYSwgYSwgTlVMTCk7Ci0rCX0KLSsKLSsJSE1BQ19DVFhfZnJlZShjdHhfYSk7 Ci0rCUhNQUNfQ1RYX2ZyZWUoY3R4X291dCk7Ci0rCW1lbXNldChhLCAwLCBzaXplb2YoYSkpOwot K30KLSsKLStzdGF0aWMgdm9pZCBQUkYoY29uc3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LCB1bnNp Z25lZCBpbnQgc2VjcmV0X2xlbiwKLSsJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWQsICAgdW5z aWduZWQgaW50IHNlZWRfbGVuLAotKwkJdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFy ICpidWYsIHVuc2lnbmVkIGludCBvdXRfbGVuKQotK3sKLSsJICAgIHVuc2lnbmVkIGludCBpOwot KwkgICAgdW5zaWduZWQgaW50IGxlbiA9IChzZWNyZXRfbGVuICsgMSkgLyAyOwotKwljb25zdCB1 bnNpZ25lZCBjaGFyICpzMSA9IHNlY3JldDsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqczIgPSBz ZWNyZXQgKyAoc2VjcmV0X2xlbiAtIGxlbik7Ci0rCi0rCVBfaGFzaChFVlBfbWQ1KCksICBzMSwg bGVuLCBzZWVkLCBzZWVkX2xlbiwgb3V0LCBvdXRfbGVuKTsKLSsJUF9oYXNoKEVWUF9zaGExKCks IHMyLCBsZW4sIHNlZWQsIHNlZWRfbGVuLCBidWYsIG91dF9sZW4pOwotKwotKwlmb3IgKGk9MDsg aSA8IG91dF9sZW47IGkrKykgewotKwkgICAgICAgIG91dFtpXSBePSBidWZbaV07Ci0rCX0KLSt9 Ci0rCi0rc3RhdGljIGludCBTU0xfZXhwb3J0X2tleWluZ19tYXRlcmlhbChTU0wgKnMsIHVuc2ln bmVkIGNoYXIgKm91dCwgc2l6ZV90IG9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmxhYmVsLCBzaXplX3QgbGxlbiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCwgc2l6ZV90IHBsZW4sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2VfY29udGV4dCkKLSt7Ci0rCXVuc2lnbmVk IGNoYXIgc2VlZFs2NCArIDIqU1NMM19SQU5ET01fU0laRV07Ci0rCXVuc2lnbmVkIGNoYXIgYnVm WzQqRUFQVExTX01QUEVfS0VZX0xFTl07Ci0rCXVuc2lnbmVkIGNoYXIgbWFzdGVyX2tleVtTU0xf TUFYX01BU1RFUl9LRVlfTEVOR1RIXTsKLSsJc2l6ZV90IG1hc3Rlcl9rZXlfbGVuZ3RoOwotKwl1 bnNpZ25lZCBjaGFyICpwcDsKLSsKLSsJcHAgPSBzZWVkOwotKwotKwltZW1jcHkocHAsIGxhYmVs LCBsbGVuKTsKLSsJcHAgKz0gbGxlbjsKLSsKLSsJbGxlbiArPSBTU0xfZ2V0X2NsaWVudF9yYW5k b20ocywgcHAsIFNTTDNfUkFORE9NX1NJWkUpOwotKwlwcCArPSBTU0wzX1JBTkRPTV9TSVpFOwot KwotKwlsbGVuICs9IFNTTF9nZXRfc2VydmVyX3JhbmRvbShzLCBwcCwgU1NMM19SQU5ET01fU0la RSk7Ci0rCi0rCW1hc3Rlcl9rZXlfbGVuZ3RoID0gU1NMX1NFU1NJT05fZ2V0X21hc3Rlcl9rZXko U1NMX2dldF9zZXNzaW9uKHMpLCBtYXN0ZXJfa2V5LAotKwkJCQkJCSAgIHNpemVvZihtYXN0ZXJf a2V5KSk7Ci0rCVBSRihtYXN0ZXJfa2V5LCBtYXN0ZXJfa2V5X2xlbmd0aCwgc2VlZCwgbGxlbiwg b3V0LCBidWYsIG9sZW4pOwotKwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rI2VuZGlmIC8qIE9QRU5T U0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMDAxMDAwTCAqLwotKwotKwotKy8qCi0rICogIE9wZW5T U0wgMS4xKyBpbnRyb2R1Y2VkIGEgZ2VuZXJpYyBUTFNfbWV0aG9kKCkKLSsgKiAgRm9yIG9sZGVy IHJlbGVhc2VzIHdlIHN1YnN0aXR1dGUgdGhlIGFwcHJvcHJpYXRlIG1ldGhvZAotKyAqLwotKwot KyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKLSsKLSsjZGVmaW5lIFRM U19tZXRob2QgU1NMdjIzX21ldGhvZAotKwotKyNkZWZpbmUgU1NMM19SVF9IRUFERVIJMHgxMDAK LSsKLSsjZW5kaWYgLyogT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDBMICovCi0r Ci0rCi0rLyoKLSsgKiAgR2VuZXJhdGUga2V5cyBhY2NvcmRpbmcgdG8gUkZDIDI3MTYgYW5kIGFk ZCB0byByZXBseQotKyAqLwotK3ZvaWQgZWFwdGxzX2dlbl9tcHBlX2tleXMoc3RydWN0IGVhcHRs c19zZXNzaW9uICpldHMsIGNvbnN0IGNoYXIgKnByZl9sYWJlbCwKLSsJICAgICAgICAgICAgICAg ICAgICAgIGludCBjbGllbnQpCi0rewotKwl1bnNpZ25lZCBjaGFyICBvdXRbNCpFQVBUTFNfTVBQ RV9LRVlfTEVOXTsKLSsJc2l6ZV90ICAgICAgICAgcHJmX3NpemUgPSBzdHJsZW4ocHJmX2xhYmVs KTsKLSsJdW5zaWduZWQgY2hhciAqcDsKLSsKLSsJaWYgKFNTTF9leHBvcnRfa2V5aW5nX21hdGVy aWFsKGV0cy0+c3NsLCBvdXQsIHNpemVvZihvdXQpLCBwcmZfbGFiZWwsIHByZl9zaXplLCBOVUxM LCAwLCAwKSAhPSAxKQotKwl7Ci0rCSAgICB3YXJuKCAiRUFQLVRMUzogRmFpbGVkIGdlbmVyYXRp bmcga2V5aW5nIG1hdGVyaWFsIiApOwotKwkgICAgcmV0dXJuOwotKwl9Ci0rCi0rCS8qCi0rCSAq IFdlIG5vdyBoYXZlIHRoZSBtYXN0ZXIgc2VuZCBhbmQgcmVjZWl2ZSBrZXlzLgotKwkgKiBGcm9t IHRoZXNlLCBnZW5lcmF0ZSB0aGUgc2Vzc2lvbiBzZW5kIGFuZCByZWNlaXZlIGtleXMuCi0rCSAq IChzZWUgUkZDMzA3OSAvIGRyYWZ0LWlldGYtcHBwZXh0LW1wcGUta2V5cy0wMy50eHQgZm9yIGRl dGFpbHMpCi0rCSAqLwotKwlpZiAoY2xpZW50KQotKwl7Ci0rCSAgICBwID0gb3V0OwotKwkJQkNP UFkoIHAsIG1wcGVfc2VuZF9rZXksIHNpemVvZihtcHBlX3NlbmRfa2V5KSApOwotKwkJcCArPSBF QVBUTFNfTVBQRV9LRVlfTEVOOwotKwkJQkNPUFkoIHAsIG1wcGVfcmVjdl9rZXksIHNpemVvZiht cHBlX3JlY3Zfa2V5KSApOwotKwl9Ci0rCWVsc2UKLSsJewotKwkJcCA9IG91dDsKLSsJCUJDT1BZ KCBwLCBtcHBlX3JlY3Zfa2V5LCBzaXplb2YobXBwZV9yZWN2X2tleSkgKTsKLSsJCXAgKz0gRUFQ VExTX01QUEVfS0VZX0xFTjsKLSsJCUJDT1BZKCBwLCBtcHBlX3NlbmRfa2V5LCBzaXplb2YobXBw ZV9zZW5kX2tleSkgKTsKLSsJfQotKwotKwltcHBlX2tleXNfc2V0ID0gMTsKLSt9Ci0rCi0rI2Vu ZGlmCi0rCi0rdm9pZCBsb2dfc3NsX2Vycm9ycyggdm9pZCApCi0rewotKwl1bnNpZ25lZCBsb25n IHNzbF9lcnIgPSBFUlJfZ2V0X2Vycm9yKCk7Ci0rCi0rCWlmIChzc2xfZXJyICE9IDApCi0rCQlk Ymdsb2coIkVBUC1UTFMgU1NMIGVycm9yIHN0YWNrOiIpOwotKwl3aGlsZSAoc3NsX2VyciAhPSAw KSB7Ci0rCQlkYmdsb2coIEVSUl9lcnJvcl9zdHJpbmcoIHNzbF9lcnIsIE5VTEwgKSApOwotKwkJ c3NsX2VyciA9IEVSUl9nZXRfZXJyb3IoKTsKLSsJfQotK30KLSsKLSsKLStpbnQgcGFzc3dvcmRf Y2FsbGJhY2sgKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCByd2ZsYWcsIHZvaWQgKnUpCi0rewot KwlpZiAoYnVmKQotKwl7Ci0rCQlzdHJuY3B5IChidWYsIHBhc3N3ZCwgc2l6ZSk7Ci0rCQlyZXR1 cm4gc3RybGVuIChidWYpOwotKwl9Ci0rCXJldHVybiAwOwotK30KLSsKLSsKLStDT05GICplYXB0 bHNfc3NsX2xvYWRfY29uZmlnKCB2b2lkICkKLSt7Ci0rCUNPTkYgICAgICAgICpjb25maWc7Ci0r CWludCAgICAgICAgICByZXRfY29kZTsKLSsJbG9uZyAgICAgICAgIGVycm9yX2xpbmUgPSAzMzsK LSsKLSsJY29uZmlnID0gTkNPTkZfbmV3KCBOVUxMICk7Ci0rCWRiZ2xvZyggIkxvYWRpbmcgT3Bl blNTTCBjb25maWcgZmlsZSIgKTsKLSsJcmV0X2NvZGUgPSBOQ09ORl9sb2FkKCBjb25maWcsIF9Q QVRIX09QRU5TU0xDT05GRklMRSwgJmVycm9yX2xpbmUgKTsKLSsJaWYgKHJldF9jb2RlID09IDAp Ci0rCXsKLSsJICAgIHdhcm4oICJFQVAtVExTOiBFcnJvciBpbiBPcGVuU1NMIGNvbmZpZyBmaWxl ICVzIGF0IGxpbmUgJWQiLCBfUEFUSF9PUEVOU1NMQ09ORkZJTEUsIGVycm9yX2xpbmUgKTsKLSsJ ICAgIE5DT05GX2ZyZWUoIGNvbmZpZyApOwotKwkgICAgY29uZmlnID0gTlVMTDsKLSsJICAgIEVS Ul9jbGVhcl9lcnJvcigpOwotKwl9Ci0rCi0rCWRiZ2xvZyggIkxvYWRpbmcgT3BlblNTTCBidWls dC1pbnMiICk7Ci0rCUVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcygpOwotKwlPUEVOU1NMX2xv YWRfYnVpbHRpbl9tb2R1bGVzKCk7Ci0rCi0rCWRiZ2xvZyggIkxvYWRpbmcgT3BlblNTTCBjb25m aWd1cmVkIG1vZHVsZXMiICk7Ci0rCWlmIChDT05GX21vZHVsZXNfbG9hZCggY29uZmlnLCBOVUxM LCAwICkgPD0gMCApCi0rCXsKLSsJICAgIHdhcm4oICJFQVAtVExTOiBFcnJvciBsb2FkaW5nIE9w ZW5TU0wgbW9kdWxlcyIgKTsKLSsJICAgIGxvZ19zc2xfZXJyb3JzKCk7Ci0rCSAgICBjb25maWcg PSBOVUxMOwotKwl9Ci0rCi0rCXJldHVybiBjb25maWc7Ci0rfQotKwotK0VOR0lORSAqZWFwdGxz X3NzbF9sb2FkX2VuZ2luZSggY2hhciAqZW5naW5lX25hbWUgKQotK3sKLSsJRU5HSU5FICAgICAg KmUgPSBOVUxMOwotKwotKwlkYmdsb2coICJFbmFibGluZyBPcGVuU1NMIGF1dG8gZW5naW5lcyIg KTsKLSsJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jb21wbGV0ZSgpOwotKwotKwlkYmdsb2coICJMb2Fk aW5nIE9wZW5TU0wgJyVzJyBlbmdpbmUgc3VwcG9ydCIsIGVuZ2luZV9uYW1lICk7Ci0rCWUgPSBF TkdJTkVfYnlfaWQoIGVuZ2luZV9uYW1lICk7Ci0rCWlmICghZSkKLSsJewotKwkJZGJnbG9nKCAi RUFQLVRMUzogQ2Fubm90IGxvYWQgJyVzJyBlbmdpbmUgc3VwcG9ydCwgdHJ5aW5nICdkeW5hbWlj JyIsIGVuZ2luZV9uYW1lICk7Ci0rCQllID0gRU5HSU5FX2J5X2lkKCAiZHluYW1pYyIgKTsKLSsJ CWlmIChlKQotKwkJewotKwkJCWlmICghRU5HSU5FX2N0cmxfY21kX3N0cmluZyhlLCAiU09fUEFU SCIsIGVuZ2luZV9uYW1lLCAwKQotKyAgIAkgICAgICAgICB8fCAhRU5HSU5FX2N0cmxfY21kX3N0 cmluZyhlLCAiTE9BRCIsIE5VTEwsIDApKQotKwkJCXsKLSsJCQkJd2FybiggIkVBUC1UTFM6IEVy cm9yIGxvYWRpbmcgZHluYW1pYyBlbmdpbmUgJyVzJyIsIGVuZ2luZV9uYW1lICk7Ci0rCQkgICAg ICAgIGxvZ19zc2xfZXJyb3JzKCk7Ci0rCQkJCUVOR0lORV9mcmVlKGUpOwotKwkJCQllID0gTlVM TDsKLSsJCQl9Ci0rCQl9Ci0rCQllbHNlCi0rCQl7Ci0rCQkJd2FybiggIkVBUC1UTFM6IENhbm5v dCBsb2FkIGR5bmFtaWMgZW5naW5lIHN1cHBvcnQiICk7Ci0rCQl9Ci0rCX0KLSsKLSsJaWYgKGUp Ci0rCXsKLSsJCWRiZ2xvZyggIkluaXRpYWxpc2luZyBlbmdpbmUiICk7Ci0rCQlpZighRU5HSU5F X3NldF9kZWZhdWx0KGUsIEVOR0lORV9NRVRIT0RfQUxMKSkKLSsJCXsKLSsJCQl3YXJuKCAiRUFQ LVRMUzogQ2Fubm90IHVzZSB0aGF0IGVuZ2luZSIgKTsKLSsJCQlsb2dfc3NsX2Vycm9ycygpOwot KwkJCUVOR0lORV9mcmVlKGUpOwotKwkJCWUgPSBOVUxMOwotKwkJfQotKwl9Ci0rCi0rCXJldHVy biBlOwotK30KLSsKLSsvKgotKyAqIEluaXRpYWxpemUgdGhlIFNTTCBzdGFja3MgYW5kIHRlc3Rz IGlmIGNlcnRpZmljYXRlcywga2V5IGFuZCBjcmwKLSsgKiBmb3IgY2xpZW50IG9yIHNlcnZlciB1 c2UgY2FuIGJlIGxvYWRlZC4KLSsgKi8KLStTU0xfQ1RYICplYXB0bHNfaW5pdF9zc2woaW50IGlu aXRfc2VydmVyLCBjaGFyICpjYWNlcnRmaWxlLAotKwkJCWNoYXIgKmNlcnRmaWxlLCBjaGFyICpw ZWVyX2NlcnRmaWxlLCBjaGFyICpwcml2a2V5ZmlsZSkKLSt7Ci0rCWNoYXIJCSpjZXJ0X2VuZ2lu ZV9uYW1lID0gTlVMTDsKLSsJY2hhcgkJKmNlcnRfaWRlbnRpZmllciA9IE5VTEw7Ci0rCWNoYXIJ CSpwa2V5X2VuZ2luZV9uYW1lID0gTlVMTDsKLSsJY2hhcgkJKnBrZXlfaWRlbnRpZmllciA9IE5V TEw7Ci0rCVNTTF9DVFgJCSpjdHg7Ci0rCVNTTAkJCSpzc2w7Ci0rCVg1MDlfU1RPUkUJKmNlcnRz dG9yZTsKLSsJWDUwOV9MT09LVVAJKmxvb2t1cDsKLSsJWDUwOQkJKnRtcDsKLSsJaW50CQkJcmV0 OwotKwotKwkvKgotKwkgKiBXaXRob3V0IHRoZXNlIGNhbid0IGNvbnRpbnVlCi0rCSAqLwotKwlp ZiAoIWNhY2VydGZpbGVbMF0pCi0rCXsKLSsJCWVycm9yKCJFQVAtVExTOiBDQSBjZXJ0aWZpY2F0 ZSBtaXNzaW5nIik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwlpZiAoIWNlcnRmaWxlWzBd KQotKwl7Ci0rCQllcnJvcigiRUFQLVRMUzogVXNlciBjZXJ0aWZpY2F0ZSBtaXNzaW5nIik7Ci0r CQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwlpZiAoIXByaXZrZXlmaWxlWzBdKQotKwl7Ci0rCQll cnJvcigiRUFQLVRMUzogVXNlciBwcml2YXRlIGtleSBtaXNzaW5nIik7Ci0rCQlyZXR1cm4gTlVM TDsKLSsJfQotKwotKwlTU0xfbGlicmFyeV9pbml0KCk7Ci0rCVNTTF9sb2FkX2Vycm9yX3N0cmlu Z3MoKTsKLSsKLSsJY3R4ID0gU1NMX0NUWF9uZXcoVExTX21ldGhvZCgpKTsKLSsKLSsJaWYgKCFj dHgpIHsKLSsJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgaW5pdGlhbGl6ZSBTU0wgQ1RYIGNvbnRl eHQiKTsKLSsJCWdvdG8gZmFpbDsKLSsJfQotKwotKwkvKiBpZiB0aGUgY2VydGlmaWNhdGUgZmls ZW5hbWUgaXMgb2YgdGhlIGZvcm0gZW5naW5lOmlkLiBlLmcuCi0rCQlwa2NzMTE6MTIzNDUKLSsJ ICAgdGhlbiB3ZSB0cnkgdG8gbG9hZCBhbmQgdXNlIHRoaXMgZW5naW5lLgotKwkgICBJZiB0aGUg Y2VydGlmaWNhdGUgZmlsZW5hbWUgc3RhcnRzIHdpdGggYSAvIG9yIC4gdGhlbiB3ZQotKwkgICBB TFdBWVMgYXNzdW1lIGl0IGlzIGEgZmlsZSBhbmQgbm90IGFuIGVuZ2luZS9wa2NzMTEgaWRlbnRp ZmllcgotKwkgKi8KLSsJaWYgKCBpbmRleCggY2VydGZpbGUsICcvJyApID09IE5VTEwgJiYgaW5k ZXgoIGNlcnRmaWxlLCAnLicpID09IE5VTEwgKQotKwl7Ci0rCQljZXJ0X2lkZW50aWZpZXIgPSBp bmRleCggY2VydGZpbGUsICc6JyApOwotKwotKwkJaWYgKGNlcnRfaWRlbnRpZmllcikKLSsJCXsK LSsJCQljZXJ0X2VuZ2luZV9uYW1lID0gY2VydGZpbGU7Ci0rCQkJKmNlcnRfaWRlbnRpZmllciA9 ICdcMCc7Ci0rCQkJY2VydF9pZGVudGlmaWVyKys7Ci0rCi0rCQkJZGJnbG9nKCAiRm91bmQgY2Vy dGlmaWNhdGUgZW5naW5lICclcyciLCBjZXJ0X2VuZ2luZV9uYW1lICk7Ci0rCQkJZGJnbG9nKCAi Rm91bmQgY2VydGlmaWNhdGUgaWRlbnRpZmllciAnJXMnIiwgY2VydF9pZGVudGlmaWVyICk7Ci0r CQl9Ci0rCX0KLSsKLSsJLyogaWYgdGhlIHByaXZhdGVrZXkgZmlsZW5hbWUgaXMgb2YgdGhlIGZv cm0gZW5naW5lOmlkLiBlLmcuCi0rCQlwa2NzMTE6MTIzNDUKLSsJICAgdGhlbiB3ZSB0cnkgdG8g bG9hZCBhbmQgdXNlIHRoaXMgZW5naW5lLgotKwkgICBJZiB0aGUgcHJpdmF0ZWtleSBmaWxlbmFt ZSBzdGFydHMgd2l0aCBhIC8gb3IgLiB0aGVuIHdlCi0rCSAgIEFMV0FZUyBhc3N1bWUgaXQgaXMg YSBmaWxlIGFuZCBub3QgYW4gZW5naW5lL3BrY3MxMSBpZGVudGlmaWVyCi0rCSAqLwotKwlpZiAo IGluZGV4KCBwcml2a2V5ZmlsZSwgJy8nICkgPT0gTlVMTCAmJiBpbmRleCggcHJpdmtleWZpbGUs ICcuJykgPT0gTlVMTCApCi0rCXsKLSsJCXBrZXlfaWRlbnRpZmllciA9IGluZGV4KCBwcml2a2V5 ZmlsZSwgJzonICk7Ci0rCi0rCQlpZiAocGtleV9pZGVudGlmaWVyKQotKwkJewotKwkJCXBrZXlf ZW5naW5lX25hbWUgPSBwcml2a2V5ZmlsZTsKLSsJCQkqcGtleV9pZGVudGlmaWVyID0gJ1wwJzsK LSsJCQlwa2V5X2lkZW50aWZpZXIrKzsKLSsKLSsJCQlkYmdsb2coICJGb3VuZCBwcml2YXRla2V5 IGVuZ2luZSAnJXMnIiwgcGtleV9lbmdpbmVfbmFtZSApOwotKwkJCWRiZ2xvZyggIkZvdW5kIHBy aXZhdGVrZXkgaWRlbnRpZmllciAnJXMnIiwgcGtleV9pZGVudGlmaWVyICk7Ci0rCQl9Ci0rCX0K LSsKLSsJaWYgKGNlcnRfaWRlbnRpZmllciAmJiBwa2V5X2lkZW50aWZpZXIpCi0rCXsKLSsJCWlm IChzdHJsZW4oIGNlcnRfaWRlbnRpZmllciApID09IDApCi0rCQl7Ci0rCQkJaWYgKHN0cmxlbigg cGtleV9pZGVudGlmaWVyICkgPT0gMCkKLSsJCQkJZXJyb3IoICJFQVAtVExTOiBib3RoIHRoZSBj ZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZWtleSBpZGVudGlmaWVycyBhcmUgbWlzc2luZyEiICk7Ci0r CQkJZWxzZQotKwkJCXsKLSsJCQkJZGJnbG9nKCAiU3Vic3RpdHV0aW5nIHByaXZhdGVrZXkgaWRl bnRpZmllciBmb3IgY2VydGlmaWNhdGUgaWRlbnRpZmllciIgKTsKLSsJCQkJY2VydF9pZGVudGlm aWVyID0gcGtleV9pZGVudGlmaWVyOwotKwkJCX0KLSsJCX0KLSsJCWVsc2UKLSsJCXsKLSsJCQlp ZiAoc3RybGVuKCBwa2V5X2lkZW50aWZpZXIgKSA9PSAwKQotKwkJCXsKLSsJCQkJZGJnbG9nKCAi U3Vic3RpdHV0aW5nIGNlcnRpZmljYXRlIGlkZW50aWZpZXIgZm9yIHByaXZhdGVrZXkgaWRlbnRp ZmllciIgKTsKLSsJCQkJcGtleV9pZGVudGlmaWVyID0gY2VydF9pZGVudGlmaWVyOwotKwkJCX0K LSsJCX0KLSsKLSsJfQotKwotKwkvKiBsb2FkIHRoZSBvcGVuc3NsIGNvbmZpZyBmaWxlIG9ubHkg b25jZSAqLwotKwlpZiAoIXNzbF9jb25maWcpCi0rCXsKLSsJCWlmIChjZXJ0X2VuZ2luZV9uYW1l IHx8IHBrZXlfZW5naW5lX25hbWUpCi0rCQkJc3NsX2NvbmZpZyA9IGVhcHRsc19zc2xfbG9hZF9j b25maWcoKTsKLSsKLSsJCWlmIChzc2xfY29uZmlnICYmIGNlcnRfZW5naW5lX25hbWUpCi0rCQkJ Y2VydF9lbmdpbmUgPSBlYXB0bHNfc3NsX2xvYWRfZW5naW5lKCBjZXJ0X2VuZ2luZV9uYW1lICk7 Ci0rCi0rCQlpZiAoc3NsX2NvbmZpZyAmJiBwa2V5X2VuZ2luZV9uYW1lKQotKwkJewotKwkJCS8q IGRvbid0IGxvYWQgdGhlIHNhbWUgZW5naW5lIHR3aWNlICovCi0rCQkJaWYgKCBjZXJ0X2VuZ2lu ZSAmJiBzdHJjbXAoIGNlcnRfZW5naW5lX25hbWUsIHBrZXlfZW5naW5lX25hbWUpID09IDAgKQot KwkJCQlwa2V5X2VuZ2luZSA9IGNlcnRfZW5naW5lOwotKwkJCWVsc2UKLSsJCQkJcGtleV9lbmdp bmUgPSBlYXB0bHNfc3NsX2xvYWRfZW5naW5lKCBwa2V5X2VuZ2luZV9uYW1lICk7Ci0rCQl9Ci0r CX0KLSsKLSsJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2IgKGN0eCwgcGFzc3dvcmRfY2Fs bGJhY2spOwotKwotKwlpZiAoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eCwgY2Fj ZXJ0ZmlsZSwgTlVMTCkpCi0rCXsKLSsJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgbG9hZCBvciB2 ZXJpZnkgQ0EgZmlsZSAlcyIsIGNhY2VydGZpbGUpOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0r CWlmIChpbml0X3NlcnZlcikKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9DQV9saXN0KGN0eCwgU1NM X2xvYWRfY2xpZW50X0NBX2ZpbGUoY2FjZXJ0ZmlsZSkpOwotKwotKwlpZiAoY2VydF9lbmdpbmUp Ci0rCXsKLSsJCXN0cnVjdAotKwkJewotKwkJCWNvbnN0IGNoYXIgKnNfc2xvdF9jZXJ0X2lkOwot KwkJCVg1MDkgKmNlcnQ7Ci0rCQl9IGNlcnRfaW5mbzsKLSsKLSsJCWNlcnRfaW5mby5zX3Nsb3Rf Y2VydF9pZCA9IGNlcnRfaWRlbnRpZmllcjsKLSsJCWNlcnRfaW5mby5jZXJ0ID0gTlVMTDsKLSsK LSsJCWlmICghRU5HSU5FX2N0cmxfY21kKCBjZXJ0X2VuZ2luZSwgIkxPQURfQ0VSVF9DVFJMIiwg MCwgJmNlcnRfaW5mbywgTlVMTCwgMCApICkKLSsJCXsKLSsJCQllcnJvciggIkVBUC1UTFM6IEVy cm9yIGxvYWRpbmcgY2VydGlmaWNhdGUgd2l0aCBpZCAnJXMnIGZyb20gZW5naW5lIiwgY2VydF9p ZGVudGlmaWVyICk7Ci0rCQkJZ290byBmYWlsOwotKwkJfQotKwotKwkJaWYgKGNlcnRfaW5mby5j ZXJ0KQotKwkJewotKwkJICAgIGRiZ2xvZyggIkdvdCB0aGUgY2VydGlmaWNhdGUsIGFkZGluZyBp dCB0byBTU0wgY29udGV4dCIgKTsKLSsJCQlkYmdsb2coICJzdWJqZWN0ID0gJXMiLCBYNTA5X05B TUVfb25lbGluZSggWDUwOV9nZXRfc3ViamVjdF9uYW1lKCBjZXJ0X2luZm8uY2VydCApLCBOVUxM LCAwICkgKTsKLSsJCQlpZiAoU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY3R4LCBjZXJ0X2luZm8u Y2VydCkgPD0gMCkKLSsJCQl7Ci0rCQkJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgdXNlIFBLQ1Mx MSBjZXJ0aWZpY2F0ZSAlcyIsIGNlcnRfaWRlbnRpZmllcik7Ci0rCQkJCWdvdG8gZmFpbDsKLSsJ CQl9Ci0rCQl9Ci0rCQllbHNlCi0rCQl7Ci0rCQkJd2FybigiRUFQLVRMUzogQ2Fubm90IGxvYWQg UEtDUzExIGtleSAlcyIsIGNlcnRfaWRlbnRpZmllcik7Ci0rCQkJbG9nX3NzbF9lcnJvcnMoKTsK LSsJCX0KLSsJfQotKwllbHNlCi0rCXsKLSsJCWlmICghU1NMX0NUWF91c2VfY2VydGlmaWNhdGVf Y2hhaW5fZmlsZShjdHgsIGNlcnRmaWxlKSkKLSsJCXsKLSsJCQllcnJvciggIkVBUC1UTFM6IENh bm5vdCB1c2UgcHVibGljIGNlcnRpZmljYXRlICVzIiwgY2VydGZpbGUgKTsKLSsJCQlnb3RvIGZh aWw7Ci0rCQl9Ci0rCX0KLSsKLSsKLSsJLyoKLSsJICogIENoZWNrIHRoZSBCZWZvcmUgYW5kIEFm dGVyIGRhdGVzIG9mIHRoZSBjZXJ0aWZpY2F0ZQotKwkgKi8KLSsJc3NsID0gU1NMX25ldyhjdHgp OwotKwl0bXAgPSBTU0xfZ2V0X2NlcnRpZmljYXRlKHNzbCk7Ci0rCi0rCXJldCA9IFg1MDlfY21w X3RpbWUoWDUwOV9nZXRfbm90QmVmb3JlKHRtcCksIE5VTEwpOwotKwlpZiAocmV0ID09IDApCi0r CXsKLSsJCXdhcm4oICJFQVAtVExTOiBGYWlsZWQgdG8gcmVhZCBjZXJ0aWZpY2F0ZSBub3RCZWZv cmUgZmllbGQuIik7Ci0rCX0KLSsJaWYgKHJldCA+IDApCi0rCXsKLSsJCXdhcm4oICJFQVAtVExT OiBZb3VyIGNlcnRpZmljYXRlIGlzIG5vdCB5ZXQgdmFsaWQhIik7Ci0rCX0KLSsKLSsJcmV0ID0g WDUwOV9jbXBfdGltZShYNTA5X2dldF9ub3RBZnRlcih0bXApLCBOVUxMKTsKLSsJaWYgKHJldCA9 PSAwKQotKwl7Ci0rCQl3YXJuKCAiRUFQLVRMUzogRmFpbGVkIHRvIHJlYWQgY2VydGlmaWNhdGUg bm90QWZ0ZXIgZmllbGQuIik7Ci0rCX0KLSsJaWYgKHJldCA8IDApCi0rCXsKLSsJCXdhcm4oICJF QVAtVExTOiBZb3VyIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkISIpOwotKwl9Ci0rCVNTTF9mcmVl KHNzbCk7Ci0rCi0rCWlmIChwa2V5X2VuZ2luZSkKLSsJewotKwkJRVZQX1BLRVkgICAqcGtleSA9 IE5VTEw7Ci0rCQlQV19DQl9EQVRBICBjYl9kYXRhOwotKwotKwkJY2JfZGF0YS5wYXNzd29yZCA9 IHBhc3N3ZDsKLSsJCWNiX2RhdGEucHJvbXB0X2luZm8gPSBwa2V5X2lkZW50aWZpZXI7Ci0rCi0r CQlkYmdsb2coICJMb2FkaW5nIHByaXZhdGUga2V5ICclcycgZnJvbSBlbmdpbmUiLCBwa2V5X2lk ZW50aWZpZXIgKTsKLSsJCXBrZXkgPSBFTkdJTkVfbG9hZF9wcml2YXRlX2tleShwa2V5X2VuZ2lu ZSwgcGtleV9pZGVudGlmaWVyLCBOVUxMLCAmY2JfZGF0YSk7Ci0rCQlpZiAocGtleSkKLSsJCXsK LSsJCSAgICBkYmdsb2coICJHb3QgdGhlIHByaXZhdGUga2V5LCBhZGRpbmcgaXQgdG8gU1NMIGNv bnRleHQiICk7Ci0rCQkJaWYgKFNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LCBwa2V5KSA8PSAw KQotKwkJCXsKLSsJCQkJZXJyb3IoIkVBUC1UTFM6IENhbm5vdCB1c2UgUEtDUzExIGtleSAlcyIs IHBrZXlfaWRlbnRpZmllcik7Ci0rCQkJCWdvdG8gZmFpbDsKLSsJCQl9Ci0rCQl9Ci0rCQllbHNl Ci0rCQl7Ci0rCQkJd2FybigiRUFQLVRMUzogQ2Fubm90IGxvYWQgUEtDUzExIGtleSAlcyIsIHBr ZXlfaWRlbnRpZmllcik7Ci0rCQkJbG9nX3NzbF9lcnJvcnMoKTsKLSsJCX0KLSsJfQotKwllbHNl Ci0rCXsKLSsJCWlmICghU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlKGN0eCwgcHJpdmtleWZp bGUsIFNTTF9GSUxFVFlQRV9QRU0pKQotKwkJewotKwkJCWVycm9yKCJFQVAtVExTOiBDYW5ub3Qg dXNlIHByaXZhdGUga2V5ICVzIiwgcHJpdmtleWZpbGUpOwotKwkJCWdvdG8gZmFpbDsKLSsJCX0K LSsJfQotKwotKwlpZiAoU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShjdHgpICE9IDEpIHsKLSsJ CWVycm9yKCJFQVAtVExTOiBQcml2YXRlIGtleSAlcyBmYWlscyBzZWN1cml0eSBjaGVjayIsIHBy aXZrZXlmaWxlKTsKLSsJCWdvdG8gZmFpbDsKLSsJfQotKwotKyAgICAvKiBFeHBsaWNpdGx5IHNl dCB0aGUgTk9fVElDS0VUUyBmbGFnIHRvIHN1cHBvcnQgV2luNy9XaW44IGNsaWVudHMgKi8KLSsJ U1NMX0NUWF9zZXRfb3B0aW9ucyhjdHgsIFNTTF9PUF9OT19TU0x2MiB8IFNTTF9PUF9OT19TU0x2 MwotKyNpZmRlZiBTU0xfT1BfTk9fVElDS0VUCi0rCXwgU1NMX09QX05PX1RJQ0tFVAotKyNlbmRp ZgotKwkpOwotKwotKwlTU0xfQ1RYX3NldF92ZXJpZnlfZGVwdGgoY3R4LCA1KTsKLSsJU1NMX0NU WF9zZXRfdmVyaWZ5KGN0eCwKLSsJCQkgICBTU0xfVkVSSUZZX1BFRVIgfAotKwkJCSAgIFNTTF9W RVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQsCi0rCQkJICAgJnNzbF92ZXJpZnlfY2FsbGJhY2sp OwotKwotKwlpZiAoY3JsX2RpcikgewotKwkJaWYgKCEoY2VydHN0b3JlID0gU1NMX0NUWF9nZXRf Y2VydF9zdG9yZShjdHgpKSkgewotKwkJCWVycm9yKCJFQVAtVExTOiBGYWlsZWQgdG8gZ2V0IGNl cnRpZmljYXRlIHN0b3JlIik7Ci0rCQkJZ290byBmYWlsOwotKwkJfQotKwotKwkJaWYgKCEobG9v a3VwID0KLSsJCSAgICAgWDUwOV9TVE9SRV9hZGRfbG9va3VwKGNlcnRzdG9yZSwgWDUwOV9MT09L VVBfaGFzaF9kaXIoKSkpKSB7Ci0rCQkJZXJyb3IoIkVBUC1UTFM6IFN0b3JlIGxvb2t1cCBmb3Ig Q1JMIGZhaWxlZCIpOwotKwotKwkJCWdvdG8gZmFpbDsKLSsJCX0KLSsKLSsJCVg1MDlfTE9PS1VQ X2FkZF9kaXIobG9va3VwLCBjcmxfZGlyLCBYNTA5X0ZJTEVUWVBFX1BFTSk7Ci0rCQlYNTA5X1NU T1JFX3NldF9mbGFncyhjZXJ0c3RvcmUsIFg1MDlfVl9GTEFHX0NSTF9DSEVDSyk7Ci0rCX0KLSsK LSsJaWYgKGNybF9maWxlKSB7Ci0rCSAgICBGSUxFICAgICAqZnAgID0gTlVMTDsKLSsJICAgIFg1 MDlfQ1JMICpjcmwgPSBOVUxMOwotKwotKwkgICAgZnAgPSBmb3BlbihjcmxfZmlsZSwgInIiKTsK LSsJICAgIGlmICghZnApIHsKLSsJICAgICAgICBlcnJvcigiRUFQLVRMUzogQ2Fubm90IG9wZW4g Q1JMIGZpbGUgJyVzJyIsIGNybF9maWxlKTsKLSsJICAgICAgICBnb3RvIGZhaWw7Ci0rCSAgICB9 Ci0rCi0rCSAgICBjcmwgPSBQRU1fcmVhZF9YNTA5X0NSTChmcCwgTlVMTCwgTlVMTCwgTlVMTCk7 Ci0rCSAgICBpZiAoIWNybCkgewotKwkgICAgICAgIGVycm9yKCJFQVAtVExTOiBDYW5ub3QgcmVh ZCBDUkwgZmlsZSAnJXMnIiwgY3JsX2ZpbGUpOwotKwkgICAgICAgIGdvdG8gZmFpbDsKLSsJICAg IH0KLSsKLSsJCWlmICghKGNlcnRzdG9yZSA9IFNTTF9DVFhfZ2V0X2NlcnRfc3RvcmUoY3R4KSkp IHsKLSsJCQllcnJvcigiRUFQLVRMUzogRmFpbGVkIHRvIGdldCBjZXJ0aWZpY2F0ZSBzdG9yZSIp OwotKwkJCWdvdG8gZmFpbDsKLSsJCX0KLSsJICAgIGlmICghWDUwOV9TVE9SRV9hZGRfY3JsKGNl cnRzdG9yZSwgY3JsKSkgewotKwkgICAgICAgIGVycm9yKCJFQVAtVExTOiBDYW5ub3QgYWRkIENS TCB0byBjZXJ0aWZpY2F0ZSBzdG9yZSIpOwotKwkgICAgICAgIGdvdG8gZmFpbDsKLSsJICAgIH0K LSsJCVg1MDlfU1RPUkVfc2V0X2ZsYWdzKGNlcnRzdG9yZSwgWDUwOV9WX0ZMQUdfQ1JMX0NIRUNL KTsKLSsKLSsJfQotKwotKwkvKgotKwkgKiBJZiBhIHBlZXIgY2VydGlmaWNhdGUgZmlsZSB3YXMg c3BlY2lmaWVkLCBpdCBtdXN0IGJlIHZhbGlkLCBlbHNlIGZhaWwKLSsJICovCi0rCWlmIChwZWVy X2NlcnRmaWxlWzBdKSB7Ci0rCQlpZiAoISh0bXAgPSBnZXRfWDUwOV9mcm9tX2ZpbGUocGVlcl9j ZXJ0ZmlsZSkpKSB7Ci0rCQkJZXJyb3IoIkVBUC1UTFM6IEVycm9yIGxvYWRpbmcgY2xpZW50IGNl cnRpZmljYXRlIGZyb20gZmlsZSAlcyIsCi0rCQkJICAgICBwZWVyX2NlcnRmaWxlKTsKLSsJCQln b3RvIGZhaWw7Ci0rCQl9Ci0rCQlYNTA5X2ZyZWUodG1wKTsKLSsJfQotKwotKwlyZXR1cm4gY3R4 OwotKwotK2ZhaWw6Ci0rCWxvZ19zc2xfZXJyb3JzKCk7Ci0rCVNTTF9DVFhfZnJlZShjdHgpOwot KwlyZXR1cm4gTlVMTDsKLSt9Ci0rCi0rLyoKLSsgKiBEZXRlcm1pbmUgdGhlIG1heGltdW0gcGFj a2V0IHNpemUgYnkgbG9va2luZyBhdCB0aGUgTENQIGhhbmRzaGFrZQotKyAqLwotKwotK2ludCBl YXB0bHNfZ2V0X210dShpbnQgdW5pdCkKLSt7Ci0rCWludCBtdHUsIG1ydTsKLSsKLSsJbGNwX29w dGlvbnMgKndvID0gJmxjcF93YW50b3B0aW9uc1t1bml0XTsKLSsJbGNwX29wdGlvbnMgKmdvID0g JmxjcF9nb3RvcHRpb25zW3VuaXRdOwotKwlsY3Bfb3B0aW9ucyAqaG8gPSAmbGNwX2hpc29wdGlv bnNbdW5pdF07Ci0rCWxjcF9vcHRpb25zICphbyA9ICZsY3BfYWxsb3dvcHRpb25zW3VuaXRdOwot KwotKwltdHUgPSBoby0+bmVnX21ydT8gaG8tPm1ydTogUFBQX01SVTsKLSsJbXJ1ID0gZ28tPm5l Z19tcnU/IE1BWCh3by0+bXJ1LCBnby0+bXJ1KTogUFBQX01SVTsKLSsJbXR1ID0gTUlOKE1JTiht dHUsIG1ydSksIGFvLT5tcnUpLSBQUFBfSERSTEVOIC0gMTA7Ci0rCi0rCWRiZ2xvZygiTVRVID0g JWQiLCBtdHUpOwotKwlyZXR1cm4gbXR1OwotK30KLSsKLSsKLSsvKgotKyAqIEluaXQgdGhlIHNz bCBoYW5kc2hha2UgKHNlcnZlciBtb2RlKQotKyAqLwotK2ludCBlYXB0bHNfaW5pdF9zc2xfc2Vy dmVyKGVhcF9zdGF0ZSAqIGVzcCkKLSt7Ci0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwot KwljaGFyIHNlcnZjZXJ0ZmlsZVtNQVhXT1JETEVOXTsKLSsJY2hhciBjbGljZXJ0ZmlsZVtNQVhX T1JETEVOXTsKLSsJY2hhciBjYWNlcnRmaWxlW01BWFdPUkRMRU5dOwotKwljaGFyIHBrZmlsZVtN QVhXT1JETEVOXTsKLSsJLyoKLSsJICogQWxsb2NhdGUgbmV3IGVhcHRscyBzZXNzaW9uCi0rCSAq LwotKwllc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZWFw dGxzX3Nlc3Npb24pKTsKLSsJaWYgKCFlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uKQotKwkJZmF0 YWwoIkFsbG9jYXRpb24gZXJyb3IiKTsKLSsJZXRzID0gZXNwLT5lc19zZXJ2ZXIuZWFfc2Vzc2lv bjsKLSsKLSsJaWYgKCFlc3AtPmVzX3NlcnZlci5lYV9wZWVyKSB7Ci0rCQllcnJvcigiRUFQLVRM UzogRXJyb3I6IGNsaWVudCBuYW1lIG5vdCBzZXQgKEJVRykiKTsKLSsJCXJldHVybiAwOwotKwl9 Ci0rCi0rCXN0cm5jcHkoZXRzLT5wZWVyLCBlc3AtPmVzX3NlcnZlci5lYV9wZWVyLCBNQVhXT1JE TEVOKTsKLSsKLSsJZGJnbG9nKCAiZ2V0dGluZyBlYXB0bHMgc2VjcmV0IiApOwotKwlpZiAoIWdl dF9lYXB0bHNfc2VjcmV0KGVzcC0+ZXNfdW5pdCwgZXNwLT5lc19zZXJ2ZXIuZWFfcGVlciwKLSsJ CQkgICAgICAgZXNwLT5lc19zZXJ2ZXIuZWFfbmFtZSwgY2xpY2VydGZpbGUsCi0rCQkJICAgICAg IHNlcnZjZXJ0ZmlsZSwgY2FjZXJ0ZmlsZSwgcGtmaWxlLCAxKSkgewotKwkJZXJyb3IoICJFQVAt VExTOiBDYW5ub3QgZ2V0IHNlY3JldC9wYXNzd29yZCBmb3IgY2xpZW50IFwiJXNcIiwgc2VydmVy IFwiJXNcIiIsCi0rCQkJCWVzcC0+ZXNfc2VydmVyLmVhX3BlZXIsIGVzcC0+ZXNfc2VydmVyLmVh X25hbWUgKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0rCWV0cy0+bXR1ID0gZWFwdGxzX2dldF9t dHUoZXNwLT5lc191bml0KTsKLSsKLSsJZXRzLT5jdHggPSBlYXB0bHNfaW5pdF9zc2woMSwgY2Fj ZXJ0ZmlsZSwgc2VydmNlcnRmaWxlLCBjbGljZXJ0ZmlsZSwgcGtmaWxlKTsKLSsJaWYgKCFldHMt PmN0eCkKLSsJCWdvdG8gZmFpbDsKLSsKLSsJaWYgKCEoZXRzLT5zc2wgPSBTU0xfbmV3KGV0cy0+ Y3R4KSkpCi0rCQlnb3RvIGZhaWw7Ci0rCi0rCS8qCi0rCSAqIFNldCBhdXRvLXJldHJ5IHRvIGF2 b2lkIHRpbWVvdXRzIG9uIEJJT19yZWFkCi0rCSAqLwotKwlTU0xfc2V0X21vZGUoZXRzLT5zc2ws IFNTTF9NT0RFX0FVVE9fUkVUUlkpOwotKwotKwkvKgotKwkgKiBJbml0aWFsaXplIHRoZSBCSU9z IHdlIHVzZSB0byByZWFkL3dyaXRlIHRvIHNzbCBlbmdpbmUKLSsJICovCi0rCWV0cy0+aW50b19z c2wgPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKLSsJZXRzLT5mcm9tX3NzbCA9IEJJT19uZXcoQklP X3NfbWVtKCkpOwotKwlTU0xfc2V0X2JpbyhldHMtPnNzbCwgZXRzLT5pbnRvX3NzbCwgZXRzLT5m cm9tX3NzbCk7Ci0rCi0rCVNTTF9zZXRfbXNnX2NhbGxiYWNrKGV0cy0+c3NsLCBzc2xfbXNnX2Nh bGxiYWNrKTsKLSsJU1NMX3NldF9tc2dfY2FsbGJhY2tfYXJnKGV0cy0+c3NsLCBldHMpOwotKwot KwkvKgotKwkgKiBBdHRhY2ggdGhlIHNlc3Npb24gc3RydWN0IHRvIHRoZSBjb25uZWN0aW9uLCBz byB3ZSBjYW4gbGF0ZXIKLSsJICogcmV0cmlldmUgaXQgd2hlbiBkb2luZyBjZXJ0aWZpY2F0ZSB2 ZXJpZmljYXRpb24KLSsJICovCi0rCVNTTF9zZXRfZXhfZGF0YShldHMtPnNzbCwgMCwgZXRzKTsK LSsKLSsJU1NMX3NldF9hY2NlcHRfc3RhdGUoZXRzLT5zc2wpOwotKwotKwlldHMtPmRhdGEgPSBO VUxMOwotKwlldHMtPmRhdGFsZW4gPSAwOwotKwlldHMtPmFsZXJ0X3NlbnQgPSAwOwotKwlldHMt PmFsZXJ0X3JlY3YgPSAwOwotKwotKwkvKgotKwkgKiBJZiB3ZSBzcGVjaWZpZWQgdGhlIGNsaWVu dCBjZXJ0aWZpY2F0ZSBmaWxlLCBzdG9yZSBpdCBpbiBldHMtPnBlZXJjZXJ0ZmlsZSwKLSsJICog c28gd2UgY2FuIGNoZWNrIGl0IGxhdGVyIGluIHNzbF92ZXJpZnlfY2FsbGJhY2soKQotKwkgKi8K LSsJaWYgKGNsaWNlcnRmaWxlWzBdKQotKwkJc3RybmNweSgmZXRzLT5wZWVyY2VydGZpbGVbMF0s IGNsaWNlcnRmaWxlLCBNQVhXT1JETEVOKTsKLSsJZWxzZQotKwkJZXRzLT5wZWVyY2VydGZpbGVb MF0gPSAwOwotKwotKwlyZXR1cm4gMTsKLSsKLStmYWlsOgotKwlTU0xfQ1RYX2ZyZWUoZXRzLT5j dHgpOwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoKLSsgKiBJbml0IHRoZSBzc2wgaGFuZHNoYWtl IChjbGllbnQgbW9kZSkKLSsgKi8KLStpbnQgZWFwdGxzX2luaXRfc3NsX2NsaWVudChlYXBfc3Rh dGUgKiBlc3ApCi0rewotKwlzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0czsKLSsJY2hhciBzZXJ2 Y2VydGZpbGVbTUFYV09SRExFTl07Ci0rCWNoYXIgY2xpY2VydGZpbGVbTUFYV09SRExFTl07Ci0r CWNoYXIgY2FjZXJ0ZmlsZVtNQVhXT1JETEVOXTsKLSsJY2hhciBwa2ZpbGVbTUFYV09SRExFTl07 Ci0rCi0rCS8qCi0rCSAqIEFsbG9jYXRlIG5ldyBlYXB0bHMgc2Vzc2lvbgotKwkgKi8KLSsJZXNw LT5lc19jbGllbnQuZWFfc2Vzc2lvbiA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGVhcHRsc19zZXNz aW9uKSk7Ci0rCWlmICghZXNwLT5lc19jbGllbnQuZWFfc2Vzc2lvbikKLSsJCWZhdGFsKCJBbGxv Y2F0aW9uIGVycm9yIik7Ci0rCWV0cyA9IGVzcC0+ZXNfY2xpZW50LmVhX3Nlc3Npb247Ci0rCi0r CS8qCi0rCSAqIElmIGF2YWlsYWJsZSwgY29weSBzZXJ2ZXIgbmFtZSBpbiBldHM7IGl0IHdpbGwg YmUgdXNlZCBpbiBjZXJ0Ci0rCSAqIHZlcmlmeQotKwkgKi8KLSsJaWYgKGVzcC0+ZXNfY2xpZW50 LmVhX3BlZXIpCi0rCQlzdHJuY3B5KGV0cy0+cGVlciwgZXNwLT5lc19jbGllbnQuZWFfcGVlciwg TUFYV09SRExFTik7Ci0rCWVsc2UKLSsJCWV0cy0+cGVlclswXSA9IDA7Ci0rCi0rCWV0cy0+bXR1 ID0gZWFwdGxzX2dldF9tdHUoZXNwLT5lc191bml0KTsKLSsKLSsJZGJnbG9nKCAiY2FsbGluZyBn ZXRfZWFwdGxzX3NlY3JldCIgKTsKLSsJaWYgKCFnZXRfZWFwdGxzX3NlY3JldChlc3AtPmVzX3Vu aXQsIGVzcC0+ZXNfY2xpZW50LmVhX25hbWUsCi0rCQkJICAgICAgIGV0cy0+cGVlciwgY2xpY2Vy dGZpbGUsCi0rCQkJICAgICAgIHNlcnZjZXJ0ZmlsZSwgY2FjZXJ0ZmlsZSwgcGtmaWxlLCAwKSkg ewotKwkJZXJyb3IoICJFQVAtVExTOiBDYW5ub3QgZ2V0IHNlY3JldC9wYXNzd29yZCBmb3IgY2xp ZW50IFwiJXNcIiwgc2VydmVyIFwiJXNcIiIsCi0rCQkJCWVzcC0+ZXNfY2xpZW50LmVhX25hbWUs IGV0cy0+cGVlciApOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJZGJnbG9nKCAiY2FsbGluZyBl YXB0bHNfaW5pdF9zc2wiICk7Ci0rCWV0cy0+Y3R4ID0gZWFwdGxzX2luaXRfc3NsKDAsIGNhY2Vy dGZpbGUsIGNsaWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUsIHBrZmlsZSk7Ci0rCWlmICghZXRzLT5j dHgpCi0rCQlnb3RvIGZhaWw7Ci0rCi0rCWV0cy0+c3NsID0gU1NMX25ldyhldHMtPmN0eCk7Ci0r Ci0rCWlmICghZXRzLT5zc2wpCi0rCQlnb3RvIGZhaWw7Ci0rCi0rCS8qCi0rCSAqIEluaXRpYWxp emUgdGhlIEJJT3Mgd2UgdXNlIHRvIHJlYWQvd3JpdGUgdG8gc3NsIGVuZ2luZQotKwkgKi8KLSsJ ZGJnbG9nKCAiSW5pdGlhbGl6aW5nIFNTTCBCSU9zIiApOwotKwlldHMtPmludG9fc3NsID0gQklP X25ldyhCSU9fc19tZW0oKSk7Ci0rCWV0cy0+ZnJvbV9zc2wgPSBCSU9fbmV3KEJJT19zX21lbSgp KTsKLSsJU1NMX3NldF9iaW8oZXRzLT5zc2wsIGV0cy0+aW50b19zc2wsIGV0cy0+ZnJvbV9zc2wp OwotKwotKwlTU0xfc2V0X21zZ19jYWxsYmFjayhldHMtPnNzbCwgc3NsX21zZ19jYWxsYmFjayk7 Ci0rCVNTTF9zZXRfbXNnX2NhbGxiYWNrX2FyZyhldHMtPnNzbCwgZXRzKTsKLSsKLSsJLyoKLSsJ ICogQXR0YWNoIHRoZSBzZXNzaW9uIHN0cnVjdCB0byB0aGUgY29ubmVjdGlvbiwgc28gd2UgY2Fu IGxhdGVyCi0rCSAqIHJldHJpZXZlIGl0IHdoZW4gZG9pbmcgY2VydGlmaWNhdGUgdmVyaWZpY2F0 aW9uCi0rCSAqLwotKwlTU0xfc2V0X2V4X2RhdGEoZXRzLT5zc2wsIDAsIGV0cyk7Ci0rCi0rCVNT TF9zZXRfY29ubmVjdF9zdGF0ZShldHMtPnNzbCk7Ci0rCi0rCWV0cy0+ZGF0YSA9IE5VTEw7Ci0r CWV0cy0+ZGF0YWxlbiA9IDA7Ci0rCWV0cy0+YWxlcnRfc2VudCA9IDA7Ci0rCWV0cy0+YWxlcnRf cmVjdiA9IDA7Ci0rCi0rCS8qCi0rCSAqIElmIHdlIHNwZWNpZmllZCB0aGUgc2VydmVyIGNlcnRp ZmljYXRlIGZpbGUsIHN0b3JlIGl0IGluCi0rCSAqIGV0cy0+cGVlcmNlcnRmaWxlLCBzbyB3ZSBj YW4gY2hlY2sgaXQgbGF0ZXIgaW4KLSsJICogc3NsX3ZlcmlmeV9jYWxsYmFjaygpCi0rCSAqLwot KwlpZiAoc2VydmNlcnRmaWxlWzBdKQotKwkJc3RybmNweShldHMtPnBlZXJjZXJ0ZmlsZSwgc2Vy dmNlcnRmaWxlLCBNQVhXT1JETEVOKTsKLSsJZWxzZQotKwkJZXRzLT5wZWVyY2VydGZpbGVbMF0g PSAwOwotKwotKwlyZXR1cm4gMTsKLSsKLStmYWlsOgotKwlkYmdsb2coICJlYXB0bHNfaW5pdF9z c2xfY2xpZW50OiBmYWlsIiApOwotKwlTU0xfQ1RYX2ZyZWUoZXRzLT5jdHgpOwotKwlyZXR1cm4g MDsKLSsKLSt9Ci0rCi0rdm9pZCBlYXB0bHNfZnJlZV9zZXNzaW9uKHN0cnVjdCBlYXB0bHNfc2Vz c2lvbiAqZXRzKQotK3sKLSsJaWYgKGV0cy0+c3NsKQotKwkJU1NMX2ZyZWUoZXRzLT5zc2wpOwot KwotKwlpZiAoZXRzLT5jdHgpCi0rCQlTU0xfQ1RYX2ZyZWUoZXRzLT5jdHgpOwotKwotKwlmcmVl KGV0cyk7Ci0rfQotKwotKy8qCi0rICogSGFuZGxlIGEgcmVjZWl2ZWQgcGFja2V0LCByZWFzc2Vt YmxpbmcgZnJhZ21lbnRlZCBtZXNzYWdlcyBhbmQKLSsgKiBwYXNzaW5nIHRoZW0gdG8gdGhlIHNz bCBlbmdpbmUKLSsgKi8KLStpbnQgZWFwdGxzX3JlY2VpdmUoc3RydWN0IGVhcHRsc19zZXNzaW9u ICpldHMsIHVfY2hhciAqIGlucCwgaW50IGxlbikKLSt7Ci0rCXVfY2hhciBmbGFnczsKLSsJdV9p bnQgdGxzbGVuID0gMDsKLSsJdV9jaGFyIGR1bW15WzY1NTM2XTsKLSsKLSsJaWYgKGxlbiA8IDEp IHsKLSsJCXdhcm4oIkVBUC1UTFM6IHJlY2VpdmVkIG5vIG9yIGludmFsaWQgZGF0YSIpOwotKwkJ cmV0dXJuIDE7Ci0rCX0KLSsKLSsJR0VUQ0hBUihmbGFncywgaW5wKTsKLSsJbGVuLS07Ci0rCi0r CWlmIChmbGFncyAmIEVBUF9UTFNfRkxBR1NfTEkgJiYgbGVuID4gNCkgewotKwkJLyoKLSsJCSAq IExlbmdodEluY2x1ZGVkIGZsYWcgc2V0IC0+IHRoaXMgaXMgdGhlIGZpcnN0IHBhY2tldCBvZiBh IG1lc3NhZ2UKLSsJCSovCi0rCi0rCQkvKgotKwkJICogdGhlIGZpcnN0IDQgb2N0ZXRzIGFyZSB0 aGUgbGVuZ3RoIG9mIHRoZSBFQVAtVExTIG1lc3NhZ2UKLSsJCSAqLwotKwkJR0VUTE9ORyh0bHNs ZW4sIGlucCk7Ci0rCQlsZW4gLT0gNDsKLSsKLSsJCWlmICghZXRzLT5kYXRhKSB7Ci0rCi0rCQkJ aWYgKHRsc2xlbiA+IEVBUF9UTFNfTUFYX0xFTikgewotKwkJCQllcnJvcigiRUFQLVRMUzogVExT IG1lc3NhZ2UgbGVuZ3RoID4gJWQsIHRydW5jYXRlZCIsIEVBUF9UTFNfTUFYX0xFTik7Ci0rCQkJ CXRsc2xlbiA9IEVBUF9UTFNfTUFYX0xFTjsKLSsJCQl9Ci0rCi0rCQkJLyoKLSsJCQkgKiBBbGxv Y2F0ZSBtZW1vcnkgZm9yIHRoZSB3aG9sZSBtZXNzYWdlCi0rCQkJKi8KLSsJCQlldHMtPmRhdGEg PSBtYWxsb2ModGxzbGVuKTsKLSsJCQlpZiAoIWV0cy0+ZGF0YSkKLSsJCQkJZmF0YWwoIkVBUC1U TFM6IGFsbG9jYXRpb24gZXJyb3JcbiIpOwotKwotKwkJCWV0cy0+ZGF0YWxlbiA9IDA7Ci0rCQkJ ZXRzLT50bHNsZW4gPSB0bHNsZW47Ci0rCQl9Ci0rCQllbHNlCi0rCQkJd2FybigiRUFQLVRMUzog bm9uLWZpcnN0IExJIHBhY2tldD8gdGhhdCdzIG9kZC4uLiIpOwotKwl9Ci0rCWVsc2UgaWYgKCFl dHMtPmRhdGEpIHsKLSsJCS8qCi0rCQkgKiBBIG5vbiBmcmFnbWVudGVkIG1lc3NhZ2Ugd2l0aG91 dCBMSSBmbGFnCi0rCQkqLwotKwotKwkJZXRzLT5kYXRhID0gbWFsbG9jKGxlbik7Ci0rCQlpZiAo IWV0cy0+ZGF0YSkKLSsJCQlmYXRhbCgiRUFQLVRMUzogYWxsb2NhdGlvbiBlcnJvclxuIik7Ci0r Ci0rCQlldHMtPmRhdGFsZW4gPSAwOwotKwkJZXRzLT50bHNsZW4gPSBsZW47Ci0rCX0KLSsKLSsJ aWYgKGZsYWdzICYgRUFQX1RMU19GTEFHU19NRikKLSsJCWV0cy0+ZnJhZyA9IDE7Ci0rCWVsc2UK LSsJCWV0cy0+ZnJhZyA9IDA7Ci0rCi0rCWlmIChsZW4gPCAwKSB7Ci0rCQl3YXJuKCJFQVAtVExT OiByZWNlaXZlZCBtYWxmb3JtZWQgZGF0YSIpOwotKwkJcmV0dXJuIDE7Ci0rCX0KLSsKLSsJaWYg KGxlbiArIGV0cy0+ZGF0YWxlbiA+IGV0cy0+dGxzbGVuKSB7Ci0rCQl3YXJuKCJFQVAtVExTOiBy ZWNlaXZlZCBkYXRhID4gVExTIG1lc3NhZ2UgbGVuZ3RoIik7Ci0rCQlyZXR1cm4gMTsKLSsJfQot KwotKwlCQ09QWShpbnAsIGV0cy0+ZGF0YSArIGV0cy0+ZGF0YWxlbiwgbGVuKTsKLSsJZXRzLT5k YXRhbGVuICs9IGxlbjsKLSsKLSsJaWYgKCFldHMtPmZyYWcpIHsKLSsKLSsJCS8qCi0rCQkgKiBJ ZiB3ZSBoYXZlIHRoZSB3aG9sZSBtZXNzYWdlLCBwYXNzIGl0IHRvIHNzbAotKwkJICovCi0rCi0r CQlpZiAoZXRzLT5kYXRhbGVuICE9IGV0cy0+dGxzbGVuKSB7Ci0rCQkJd2FybigiRUFQLVRMUzog cmVjZWl2ZWQgZGF0YSAhPSBUTFMgbWVzc2FnZSBsZW5ndGgiKTsKLSsJCQlyZXR1cm4gMTsKLSsJ CX0KLSsKLSsJCWlmIChCSU9fd3JpdGUoZXRzLT5pbnRvX3NzbCwgZXRzLT5kYXRhLCBldHMtPmRh dGFsZW4pID09IC0xKQotKwkJCWxvZ19zc2xfZXJyb3JzKCk7Ci0rCi0rCQlTU0xfcmVhZChldHMt PnNzbCwgZHVtbXksIDY1NTM2KTsKLSsKLSsJCWZyZWUoZXRzLT5kYXRhKTsKLSsJCWV0cy0+ZGF0 YSA9IE5VTEw7Ci0rCQlldHMtPmRhdGFsZW4gPSAwOwotKwl9Ci0rCi0rCXJldHVybiAwOwotK30K LSsKLSsvKgotKyAqIFJldHVybiBhbiBlYXAtdGxzIHBhY2tldCBpbiBvdXRwLgotKyAqIEEgVExT IG1lc3NhZ2UgcmVhZCBmcm9tIHRoZSBzc2wgZW5naW5lIGlzIGJ1ZmZlcmVkIGluIGV0cy0+ZGF0 YS4KLSsgKiBBdCBlYWNoIGNhbGwgd2UgY29udHJvbCBpZiB0aGVyZSBpcyBidWZmZXJlZCBkYXRh IGFuZCBzZW5kIGEKLSsgKiBwYWNrZXQgb2YgbXR1IGJ5dGVzLgotKyAqLwotK2ludCBlYXB0bHNf c2VuZChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cywgdV9jaGFyICoqIG91dHApCi0rewotKwli b29sIGZpcnN0ID0gMDsKLSsJaW50IHNpemU7Ci0rCXVfY2hhciBmcm9tdGxzWzY1NTM2XTsKLSsJ aW50IHJlczsKLSsJdV9jaGFyICpzdGFydDsKLSsKLSsJc3RhcnQgPSAqb3V0cDsKLSsKLSsJaWYg KCFldHMtPmRhdGEpIHsKLSsKLSsJCWlmKCFldHMtPmFsZXJ0X3NlbnQpCi0rCQkJU1NMX3JlYWQo ZXRzLT5zc2wsIGZyb210bHMsIDY1NTM2KTsKLSsKLSsJCS8qCi0rCQkgKiBSZWFkIGZyb20gc3Ns Ci0rCQkgKi8KLSsJCWlmICgocmVzID0gQklPX3JlYWQoZXRzLT5mcm9tX3NzbCwgZnJvbXRscywg NjU1MzYpKSA9PSAtMSkKLSsJCXsKLSsJCQl3YXJuKCJFQVAtVExTIHNlbmQ6IE5vIGRhdGEgZnJv bSBCSU9fcmVhZCIpOwotKwkJCXJldHVybiAxOwotKwkJfQotKwotKwkJZXRzLT5kYXRhbGVuID0g cmVzOwotKwotKwkJZXRzLT5kYXRhID0gbWFsbG9jKGV0cy0+ZGF0YWxlbik7Ci0rCQlCQ09QWShm cm9tdGxzLCBldHMtPmRhdGEsIGV0cy0+ZGF0YWxlbik7Ci0rCi0rCQlldHMtPm9mZnNldCA9IDA7 Ci0rCQlmaXJzdCA9IDE7Ci0rCi0rCX0KLSsKLSsJc2l6ZSA9IGV0cy0+ZGF0YWxlbiAtIGV0cy0+ b2Zmc2V0OwotKwotKwlpZiAoc2l6ZSA+IGV0cy0+bXR1KSB7Ci0rCQlzaXplID0gZXRzLT5tdHU7 Ci0rCQlldHMtPmZyYWcgPSAxOwotKwl9IGVsc2UKLSsJCWV0cy0+ZnJhZyA9IDA7Ci0rCi0rCVBV VENIQVIoRUFQVF9UTFMsICpvdXRwKTsKLSsKLSsJLyoKLSsJICogU2V0IHJpZ2h0IGZsYWdzIGFu ZCBsZW5ndGggaWYgbmVjZXNzYXJ5Ci0rCSAqLwotKwlpZiAoZXRzLT5mcmFnICYmIGZpcnN0KSB7 Ci0rCQlQVVRDSEFSKEVBUF9UTFNfRkxBR1NfTEkgfCBFQVBfVExTX0ZMQUdTX01GLCAqb3V0cCk7 Ci0rCQlQVVRMT05HKGV0cy0+ZGF0YWxlbiwgKm91dHApOwotKwl9IGVsc2UgaWYgKGV0cy0+ZnJh ZykgewotKwkJUFVUQ0hBUihFQVBfVExTX0ZMQUdTX01GLCAqb3V0cCk7Ci0rCX0gZWxzZQotKwkJ UFVUQ0hBUigwLCAqb3V0cCk7Ci0rCi0rCS8qCi0rCSAqIENvcHkgdGhlIGRhdGEgaW4gb3V0cAot KwkgKi8KLSsJQkNPUFkoZXRzLT5kYXRhICsgZXRzLT5vZmZzZXQsICpvdXRwLCBzaXplKTsKLSsJ SU5DUFRSKHNpemUsICpvdXRwKTsKLSsKLSsJLyoKLSsJICogQ29weSB0aGUgcGFja2V0IGluIHJl dHJhbnNtaXNzaW9uIGJ1ZmZlcgotKwkgKi8KLSsJQkNPUFkoc3RhcnQsICZldHMtPnJ0eFswXSwg Km91dHAgLSBzdGFydCk7Ci0rCWV0cy0+cnR4X2xlbiA9ICpvdXRwIC0gc3RhcnQ7Ci0rCi0rCWV0 cy0+b2Zmc2V0ICs9IHNpemU7Ci0rCi0rCWlmIChldHMtPm9mZnNldCA+PSBldHMtPmRhdGFsZW4p IHsKLSsKLSsJCS8qCi0rCQkgKiBUaGUgd2hvbGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50Ci0rCQkg Ki8KLSsKLSsJCWZyZWUoZXRzLT5kYXRhKTsKLSsJCWV0cy0+ZGF0YSA9IE5VTEw7Ci0rCQlldHMt PmRhdGFsZW4gPSAwOwotKwkJZXRzLT5vZmZzZXQgPSAwOwotKwl9Ci0rCi0rCXJldHVybiAwOwot K30KLSsKLSsvKgotKyAqIEdldCB0aGUgc2VudCBwYWNrZXQgZnJvbSB0aGUgcmV0cmFuc21pc3Np b24gYnVmZmVyCi0rICovCi0rdm9pZCBlYXB0bHNfcmV0cmFuc21pdChzdHJ1Y3QgZWFwdGxzX3Nl c3Npb24gKmV0cywgdV9jaGFyICoqIG91dHApCi0rewotKwlCQ09QWShldHMtPnJ0eCwgKm91dHAs IGV0cy0+cnR4X2xlbik7Ci0rCUlOQ1BUUihldHMtPnJ0eF9sZW4sICpvdXRwKTsKLSt9Ci0rCi0r LyoKLSsgKiBWZXJpZnkgYSBjZXJ0aWZpY2F0ZS4KLSsgKiBNb3N0IG9mIHRoZSB3b3JrIChzaWdu YXR1cmVzIGFuZCBpc3N1ZXIgYXR0cmlidXRlcyBjaGVja2luZykKLSsgKiBpcyBkb25lIGJ5IHNz bDsgd2UgY2hlY2sgdGhlIENOIGluIHRoZSBwZWVyIGNlcnRpZmljYXRlCi0rICogYWdhaW5zdCB0 aGUgcGVlciBuYW1lLgotKyAqLwotK2ludCBzc2xfdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgWDUw OV9TVE9SRV9DVFggKiBjdHgpCi0rewotKwljaGFyIHN1YmplY3RbMjU2XTsKLSsJY2hhciBjbl9z dHJbMjU2XTsKLSsJWDUwOSAqcGVlcl9jZXJ0OwotKwlpbnQgZXJyLCBkZXB0aDsKLSsJU1NMICpz c2w7Ci0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwotKwotKwlwZWVyX2NlcnQgPSBYNTA5 X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0KGN0eCk7Ci0rCWVyciA9IFg1MDlfU1RPUkVfQ1RY X2dldF9lcnJvcihjdHgpOwotKwlkZXB0aCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0 aChjdHgpOwotKwotKwlkYmdsb2coImNlcnRpZmljYXRlIHZlcmlmeSBkZXB0aDogJWQiLCBkZXB0 aCk7Ci0rCi0rCWlmIChhdXRoX3JlcXVpcmVkICYmICFvaykgewotKwkJWDUwOV9OQU1FX29uZWxp bmUoWDUwOV9nZXRfc3ViamVjdF9uYW1lKHBlZXJfY2VydCksCi0rCQkJCSAgc3ViamVjdCwgMjU2 KTsKLSsKLSsJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQoWDUwOV9nZXRfc3ViamVjdF9uYW1l KHBlZXJfY2VydCksCi0rCQkJCQkgIE5JRF9jb21tb25OYW1lLCBjbl9zdHIsIDI1Nik7Ci0rCi0r CQlkYmdsb2coIkNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBlcnJvcjpcbiBkZXB0aDogJWQgQ046 ICVzIgotKwkJICAgICAgICJcbiBlcnI6ICVkICglcylcbiIsIGRlcHRoLCBjbl9zdHIsIGVyciwK LSsJCSAgICAgICBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhlcnIpKTsKLSsKLSsJCXJl dHVybiAwOwotKwl9Ci0rCi0rCXNzbCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKGN0eCwK LSsJCQkJICAgICAgIFNTTF9nZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHgoKSk7Ci0rCi0r CWV0cyA9IChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKilTU0xfZ2V0X2V4X2RhdGEoc3NsLCAwKTsK LSsKLSsJaWYgKGV0cyA9PSBOVUxMKSB7Ci0rCQllcnJvcigiRXJyb3I6IFNTTF9nZXRfZXhfZGF0 YSByZXR1cm5lZCBOVUxMIik7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlsb2dfc3NsX2Vycm9y cygpOwotKwotKwlpZiAoIWRlcHRoKSB7CQkvKiBUaGlzIGlzIHRoZSBwZWVyIGNlcnRpZmljYXRl ICovCi0rCi0rCQlYNTA5X05BTUVfb25lbGluZShYNTA5X2dldF9zdWJqZWN0X25hbWUocGVlcl9j ZXJ0KSwKLSsJCQkJICBzdWJqZWN0LCAyNTYpOwotKwotKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5 X05JRChYNTA5X2dldF9zdWJqZWN0X25hbWUocGVlcl9jZXJ0KSwKLSsJCQkJCSAgTklEX2NvbW1v bk5hbWUsIGNuX3N0ciwgMjU2KTsKLSsKLSsJCS8qCi0rCQkgKiBJZiBhY3RpbmcgYXMgY2xpZW50 IGFuZCB0aGUgbmFtZSBvZiB0aGUgc2VydmVyIHdhc24ndCBzcGVjaWZpZWQKLSsJCSAqIGV4cGxp Y2l0ZWx5LCB3ZSBjYW4ndCB2ZXJpZnkgdGhlIHNlcnZlciBhdXRoZW50aWNpdHkKLSsJCSAqLwot KwkJaWYgKCFldHMtPnBlZXJbMF0pIHsKLSsJCQl3YXJuKCJQZWVyIG5hbWUgbm90IHNwZWNpZmll ZDogbm8gY2hlY2siKTsKLSsJCQlyZXR1cm4gb2s7Ci0rCQl9Ci0rCi0rCQkvKgotKwkJICogQ2hl Y2sgdGhlIENOCi0rCQkgKi8KLSsJCWlmIChzdHJjbXAoY25fc3RyLCBldHMtPnBlZXIpKSB7Ci0r CQkJZXJyb3IKLSsJCQkgICAgKCJDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZXJyb3I6IENOICgl cykgIT0gcGVlcl9uYW1lICglcykiLAotKwkJCSAgICAgY25fc3RyLCBldHMtPnBlZXIpOwotKwkJ CXJldHVybiAwOwotKwkJfQotKwotKwkJd2FybigiQ2VydGlmaWNhdGUgQ046ICVzICwgcGVlciBu YW1lICVzIiwgY25fc3RyLCBldHMtPnBlZXIpOwotKwotKwkJLyoKLSsJCSAqIElmIGEgcGVlciBj ZXJ0aWZpY2F0ZSBmaWxlIHdhcyBzcGVjaWZpZWQsIGhlcmUgd2UgY2hlY2sgaXQKLSsJCSAqLwot KwkJaWYgKGV0cy0+cGVlcmNlcnRmaWxlWzBdKSB7Ci0rCQkJaWYgKHNzbF9jbXBfY2VydHMoJmV0 cy0+cGVlcmNlcnRmaWxlWzBdLCBwZWVyX2NlcnQpCi0rCQkJICAgICE9IDApIHsKLSsJCQkJZXJy b3IKLSsJCQkJICAgICgiUGVlciBjZXJ0aWZpY2F0ZSBkb2Vzbid0IG1hdGNoIHN0b3JlZCBjZXJ0 aWZpY2F0ZSIpOwotKwkJCQlyZXR1cm4gMDsKLSsJCQl9Ci0rCQl9Ci0rCX0KLSsKLSsJcmV0dXJu IG9rOwotK30KLSsKLSsvKgotKyAqIENvbXBhcmUgYSBjZXJ0aWZpY2F0ZSB3aXRoIHRoZSBvbmUg c3RvcmVkIGluIGEgZmlsZQotKyAqLwotK2ludCBzc2xfY21wX2NlcnRzKGNoYXIgKmZpbGVuYW1l LCBYNTA5ICogYSkKLSt7Ci0rCVg1MDkgKmI7Ci0rCWludCByZXQ7Ci0rCi0rCWlmICghKGIgPSBn ZXRfWDUwOV9mcm9tX2ZpbGUoZmlsZW5hbWUpKSkKLSsJCXJldHVybiAxOwotKwotKwlyZXQgPSBY NTA5X2NtcChhLCBiKTsKLSsJWDUwOV9mcmVlKGIpOwotKwotKwlyZXR1cm4gcmV0OwotKwotK30K LSsKLStYNTA5ICpnZXRfWDUwOV9mcm9tX2ZpbGUoY2hhciAqZmlsZW5hbWUpCi0rewotKwlGSUxF ICpmcDsKLSsJWDUwOSAqcmV0OwotKwotKwlpZiAoIShmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIp KSkKLSsJCXJldHVybiBOVUxMOwotKwotKwlyZXQgPSBQRU1fcmVhZF9YNTA5KGZwLCBOVUxMLCBO VUxMLCBOVUxMKTsKLSsKLSsJZmNsb3NlKGZwKTsKLSsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0r LyoKLSsgKiBFdmVyeSBzZW50ICYgcmVjZWl2ZWQgbWVzc2FnZSB0aGlzIGNhbGxiYWNrIGZ1bmN0 aW9uIGlzIGludm9rZWQsCi0rICogc28gd2Uga25vdyB3aGVuIGFsZXJ0IG1lc3NhZ2VzIGhhdmUg YXJyaXZlZCBvciBhcmUgc2VudCBhbmQKLSsgKiB3ZSBjYW4gcHJpbnQgZGVidWcgaW5mb3JtYXRp b24gYWJvdXQgVExTIGhhbmRzaGFrZS4KLSsgKi8KLSt2b2lkCi0rc3NsX21zZ19jYWxsYmFjayhp bnQgd3JpdGVfcCwgaW50IHZlcnNpb24sIGludCBjb250ZW50X3R5cGUsCi0rCQkgY29uc3Qgdm9p ZCAqYnVmLCBzaXplX3QgbGVuLCBTU0wgKiBzc2wsIHZvaWQgKmFyZykKLSt7Ci0rCWNoYXIgc3Ry aW5nWzI1Nl07Ci0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzID0gKHN0cnVjdCBlYXB0bHNf c2Vzc2lvbiAqKWFyZzsKLSsJdW5zaWduZWQgY2hhciBjb2RlOwotKwljb25zdCB1bnNpZ25lZCBj aGFyKm1zZyA9IGJ1ZjsKLSsJaW50IGh2ZXJzID0gbXNnWzFdIDw8IDggfCBtc2dbMl07Ci0rCi0r CWlmKHdyaXRlX3ApCi0rCQlzdHJjcHkoc3RyaW5nLCAiIC0+ICIpOwotKwllbHNlCi0rCQlzdHJj cHkoc3RyaW5nLCAiIDwtICIpOwotKwotKwlzd2l0Y2goY29udGVudF90eXBlKSB7Ci0rCi0rCWNh c2UgU1NMM19SVF9IRUFERVI6Ci0rCQlzdHJjYXQoc3RyaW5nLCAiU1NML1RMUyBIZWFkZXI6ICIp OwotKwkJc3dpdGNoKGh2ZXJzKSB7Ci0rCQljYXNlIFNTTDNfVkVSU0lPTjoKLSsJCQkJc3RyY2F0 KHN0cmluZywgIlNTTCAzLjAiKTsKLSsJCQkJYnJlYWs7Ci0rCQljYXNlIFRMUzFfVkVSU0lPTjoK LSsJCQkJc3RyY2F0KHN0cmluZywgIlRMUyAxLjAiKTsKLSsJCQkJYnJlYWs7Ci0rCQljYXNlIFRM UzFfMV9WRVJTSU9OOgotKwkJCQlzdHJjYXQoc3RyaW5nLCAiVExTIDEuMSIpOwotKwkJCQlicmVh azsKLSsJCWNhc2UgVExTMV8yX1ZFUlNJT046Ci0rCQkJCXN0cmNhdChzdHJpbmcsICJUTFMgMS4y Iik7Ci0rCQkJCWJyZWFrOwotKwkJZGVmYXVsdDoKLSsJCQlzdHJjYXQoc3RyaW5nLCAiVW5rbm93 biB2ZXJzaW9uIik7Ci0rCQl9Ci0rCQlicmVhazsKLSsKLSsJY2FzZSBTU0wzX1JUX0FMRVJUOgot KwkJc3RyY2F0KHN0cmluZywgIkFsZXJ0OiAiKTsKLSsJCWNvZGUgPSBtc2dbMV07Ci0rCi0rCQlp ZiAod3JpdGVfcCkgewotKwkJCWV0cy0+YWxlcnRfc2VudCA9IDE7Ci0rCQkJZXRzLT5hbGVydF9z ZW50X2Rlc2MgPSBjb2RlOwotKwkJfSBlbHNlIHsKLSsJCQlldHMtPmFsZXJ0X3JlY3YgPSAxOwot KwkJCWV0cy0+YWxlcnRfcmVjdl9kZXNjID0gY29kZTsKLSsJCX0KLSsKLSsJCXN0cmNhdChzdHJp bmcsIFNTTF9hbGVydF9kZXNjX3N0cmluZ19sb25nKGNvZGUpKTsKLSsJCWJyZWFrOwotKwotKwlj YXNlIFNTTDNfUlRfQ0hBTkdFX0NJUEhFUl9TUEVDOgotKwkJc3RyY2F0KHN0cmluZywgIkNoYW5n ZUNpcGhlclNwZWMiKTsKLSsJCWJyZWFrOwotKwotKwljYXNlIFNTTDNfUlRfSEFORFNIQUtFOgot KwotKwkJc3RyY2F0KHN0cmluZywgIkhhbmRzaGFrZTogIik7Ci0rCQljb2RlID0gbXNnWzBdOwot KwotKwkJc3dpdGNoKGNvZGUpIHsKLSsJCQljYXNlIFNTTDNfTVRfSEVMTE9fUkVRVUVTVDoKLSsJ CQkJc3RyY2F0KHN0cmluZywiSGVsbG8gUmVxdWVzdCIpOwotKwkJCQlicmVhazsKLSsJCQljYXNl IFNTTDNfTVRfQ0xJRU5UX0hFTExPOgotKwkJCQlzdHJjYXQoc3RyaW5nLCJDbGllbnQgSGVsbG8i KTsKLSsJCQkJYnJlYWs7Ci0rCQkJY2FzZSBTU0wzX01UX1NFUlZFUl9IRUxMTzoKLSsJCQkJc3Ry Y2F0KHN0cmluZywiU2VydmVyIEhlbGxvIik7Ci0rCQkJCWJyZWFrOwotKyNpZmRlZiBTU0wzX01U X05FV1NFU1NJT05fVElDS0VUCi0rCQkJY2FzZSBTU0wzX01UX05FV1NFU1NJT05fVElDS0VUOgot KwkJCQlzdHJjYXQoc3RyaW5nLCJOZXcgU2Vzc2lvbiBUaWNrZXQiKTsKLSsJCQkJYnJlYWs7Ci0r I2VuZGlmCi0rCQkJY2FzZSBTU0wzX01UX0NFUlRJRklDQVRFOgotKwkJCQlzdHJjYXQoc3RyaW5n LCJDZXJ0aWZpY2F0ZSIpOwotKwkJCQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfU0VSVkVSX0tF WV9FWENIQU5HRToKLSsJCQkJc3RyY2F0KHN0cmluZywiU2VydmVyIEtleSBFeGNoYW5nZSIpOwot KwkJCQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfQ0VSVElGSUNBVEVfUkVRVUVTVDoKLSsJCQkJ c3RyY2F0KHN0cmluZywiQ2VydGlmaWNhdGUgUmVxdWVzdCIpOwotKwkJCQlicmVhazsKLSsJCQlj YXNlIFNTTDNfTVRfU0VSVkVSX0RPTkU6Ci0rCQkJCXN0cmNhdChzdHJpbmcsIlNlcnZlciBIZWxs byBEb25lIik7Ci0rCQkJCQkJCQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfQ0VSVElGSUNBVEVf VkVSSUZZOgotKwkJCQlzdHJjYXQoc3RyaW5nLCJDZXJ0aWZpY2F0ZSBWZXJpZnkiKTsKLSsJCQkJ YnJlYWs7Ci0rCQkJY2FzZSBTU0wzX01UX0NMSUVOVF9LRVlfRVhDSEFOR0U6Ci0rCQkJCXN0cmNh dChzdHJpbmcsIkNsaWVudCBLZXkgRXhjaGFuZ2UiKTsKLSsJCQkJYnJlYWs7Ci0rCQkJY2FzZSBT U0wzX01UX0ZJTklTSEVEOgotKwkJCQlzdHJjYXQoc3RyaW5nLCJGaW5pc2hlZDogIik7Ci0rCQkJ CWh2ZXJzID0gU1NMX3ZlcnNpb24oc3NsKTsKLSsJCQkJc3dpdGNoKGh2ZXJzKSB7Ci0rCQkJCWNh c2UgU1NMM19WRVJTSU9OOgotKwkJCQkJCXN0cmNhdChzdHJpbmcsICJTU0wgMy4wIik7Ci0rCQkJ CQkJYnJlYWs7Ci0rCQkJCWNhc2UgVExTMV9WRVJTSU9OOgotKwkJCQkJCXN0cmNhdChzdHJpbmcs ICJUTFMgMS4wIik7Ci0rCQkJCQkJYnJlYWs7Ci0rCQkJCWNhc2UgVExTMV8xX1ZFUlNJT046Ci0r CQkJCQkJc3RyY2F0KHN0cmluZywgIlRMUyAxLjEiKTsKLSsJCQkJCQlicmVhazsKLSsJCQkJY2Fz ZSBUTFMxXzJfVkVSU0lPTjoKLSsJCQkJCQlzdHJjYXQoc3RyaW5nLCAiVExTIDEuMiIpOwotKwkJ CQkJCWJyZWFrOwotKwkJCQlkZWZhdWx0OgotKwkJCQkJc3RyY2F0KHN0cmluZywgIlVua25vd24g dmVyc2lvbiIpOwotKwkJCQl9Ci0rCQkJCWJyZWFrOwotKwkJCWRlZmF1bHQ6Ci0rCQkJCXNwcmlu dGYoIHN0cmluZywgIkhhbmRzaGFrZTogVW5rbm93biBTU0wzIGNvZGUgcmVjZWl2ZWQ6ICVkIiwg Y29kZSApOwotKwkJfQotKwkJYnJlYWs7Ci0rCi0rCWRlZmF1bHQ6Ci0rCQlzcHJpbnRmKCBzdHJp bmcsICJTU0wgbWVzc2FnZSBjb250YWlucyB1bmtub3duIGNvbnRlbnQgdHlwZTogJWQiLCBjb250 ZW50X3R5cGUgKTsKLSsKLSsJfQotKwotKwkvKiBBbGVydCBtZXNzYWdlcyBtdXN0IGFsd2F5cyBi ZSBkaXNwbGF5ZWQgKi8KLSsJaWYoY29udGVudF90eXBlID09IFNTTDNfUlRfQUxFUlQpCi0rCQll cnJvcigiJXMiLCBzdHJpbmcpOwotKwllbHNlCi0rCQlkYmdsb2coIiVzIiwgc3RyaW5nKTsKLSt9 Ci0rCi1kaWZmIC0tZ2l0IGEvcHBwZC9lYXAtdGxzLmggYi9wcHBkL2VhcC10bHMuaAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uMmQ0NWEwYjgzYTBjCi0tLS0gL2Rl di9udWxsCi0rKysgYi9wcHBkL2VhcC10bHMuaAotQEAgLTAsMCArMSwxMDcgQEAKLSsvKgotKyAq IGVhcC10bHMuaAotKyAqCi0rICogQ29weXJpZ2h0IChjKSBCZW5pYW1pbm8gR2FsdmFuaSAyMDA1 IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK LSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICoKLSsgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24u Ci0rICoKLSsgKiAzLiBUaGUgbmFtZShzKSBvZiB0aGUgYXV0aG9ycyBvZiB0aGlzIHNvZnR3YXJl IG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4g cGVybWlzc2lvbi4KLSsgKgotKyAqIFRIRSBBVVRIT1JTIE9GIFRISVMgU09GVFdBUkUgRElTQ0xB SU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8KLSsgKiBUSElTIFNPRlRXQVJFLCBJTkNM VURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKLSsgKiBBTkQg RklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkK LSsgKiBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERB TUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9S IFBST0ZJVFMsIFdIRVRIRVIgSU4KLSsgKiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VO Q0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HCi0rICogT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0r ICoKLSsgKi8KLSsKLSsjaWZuZGVmIF9fRUFQX1RMU19IX18KLSsjZGVmaW5lIF9fRUFQX1RMU19I X18KLSsKLSsjaW5jbHVkZSAiZWFwLmgiCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvbWQ1Lmg+Ci0rCi0r I2RlZmluZSBFQVBfVExTX0ZMQUdTX0xJICAgICAgICAxMjgJLyogbGVuZ3RoIGluY2x1ZGVkIGZs YWcgKi8KLSsjZGVmaW5lIEVBUF9UTFNfRkxBR1NfTUYgICAgICAgIDY0CS8qIG1vcmUgZnJhZ21l bnRzIGZsYWcgKi8KLSsjZGVmaW5lIEVBUF9UTFNfRkxBR1NfU1RBUlQgICAgIDMyCS8qIHN0YXJ0 IGZsYWcgKi8KLSsKLSsjZGVmaW5lIEVBUF9UTFNfTUFYX0xFTiAgICAgICAgIDY1NTM2CS8qIG1h eCBlYXAgdGxzIHBhY2tldCBzaXplICovCi0rCi0rc3RydWN0IGVhcHRsc19zZXNzaW9uCi0rewot Kwl1X2NoYXIgKmRhdGE7CQkvKiBidWZmZXJlZCBkYXRhICovCi0rCWludCBkYXRhbGVuOwkJLyog YnVmZmVyZWQgZGF0YSBsZW4gKi8KLSsJaW50IG9mZnNldDsJCS8qIGZyb20gd2hlcmUgdG8gc2Vu ZCAqLwotKwlpbnQgdGxzbGVuOwkJLyogdG90YWwgbGVuZ3RoIG9mIHRscyBkYXRhICovCi0rCWJv b2wgZnJhZzsJCS8qIHBhY2tldCBpcyBmcmFnbWVudGVkICovCi0rCVNTTF9DVFggKmN0eDsKLSsJ U1NMICpzc2w7CQkvKiBzc2wgY29ubmVjdGlvbiAqLwotKwlCSU8gKmZyb21fc3NsOwotKwlCSU8g KmludG9fc3NsOwotKwljaGFyIHBlZXJbTUFYV09SRExFTl07CS8qIHBlZXIgbmFtZSAqLwotKwlj aGFyIHBlZXJjZXJ0ZmlsZVtNQVhXT1JETEVOXTsKLSsJYm9vbCBhbGVydF9zZW50OwotKwl1X2No YXIgYWxlcnRfc2VudF9kZXNjOwotKwlib29sIGFsZXJ0X3JlY3Y7Ci0rCXVfY2hhciBhbGVydF9y ZWN2X2Rlc2M7Ci0rCWNoYXIgcnR4WzY1NTM2XTsJLyogcmV0cmFuc21pc3Npb24gYnVmZmVyICov Ci0rCWludCBydHhfbGVuOwotKwlpbnQgbXR1OwkJLyogdW5pdCBtdHUgKi8KLSt9OwotKwotK3R5 cGVkZWYgc3RydWN0IHB3X2NiX2RhdGEKLSt7Ci0rCWNvbnN0IHZvaWQgKnBhc3N3b3JkOwotKwlj b25zdCBjaGFyICpwcm9tcHRfaW5mbzsKLSt9IFBXX0NCX0RBVEE7Ci0rCi0rCi0raW50IHNzbF92 ZXJpZnlfY2FsbGJhY2soaW50LCBYNTA5X1NUT1JFX0NUWCAqKTsKLSt2b2lkIHNzbF9tc2dfY2Fs bGJhY2soaW50IHdyaXRlX3AsIGludCB2ZXJzaW9uLCBpbnQgY3QsIGNvbnN0IHZvaWQgKmJ1ZiwK LSsJCSAgICAgIHNpemVfdCBsZW4sIFNTTCAqIHNzbCwgdm9pZCAqYXJnKTsKLSsKLStYNTA5ICpn ZXRfWDUwOV9mcm9tX2ZpbGUoY2hhciAqZmlsZW5hbWUpOwotK2ludCBzc2xfY21wX2NlcnRzKGNo YXIgKmZpbGVuYW1lLCBYNTA5ICogYSk7Ci0rCi0rU1NMX0NUWCAqZWFwdGxzX2luaXRfc3NsKGlu dCBpbml0X3NlcnZlciwgY2hhciAqY2FjZXJ0ZmlsZSwKLSsgICAgICAgICAgICBjaGFyICpjZXJ0 ZmlsZSwgY2hhciAqcGVlcl9jZXJ0ZmlsZSwgY2hhciAqcHJpdmtleWZpbGUpOwotK2ludCBlYXB0 bHNfaW5pdF9zc2xfc2VydmVyKGVhcF9zdGF0ZSAqIGVzcCk7Ci0raW50IGVhcHRsc19pbml0X3Nz bF9jbGllbnQoZWFwX3N0YXRlICogZXNwKTsKLSt2b2lkIGVhcHRsc19mcmVlX3Nlc3Npb24oc3Ry dWN0IGVhcHRsc19zZXNzaW9uICpldHMpOwotKwotK2ludCBlYXB0bHNfcmVjZWl2ZShzdHJ1Y3Qg ZWFwdGxzX3Nlc3Npb24gKmV0cywgdV9jaGFyICogaW5wLCBpbnQgbGVuKTsKLStpbnQgZWFwdGxz X3NlbmQoc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHMsIHVfY2hhciAqKiBvdXRwKTsKLSt2b2lk IGVhcHRsc19yZXRyYW5zbWl0KHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzLCB1X2NoYXIgKiog b3V0cCk7Ci0rCi0raW50IGdldF9lYXB0bHNfc2VjcmV0KGludCB1bml0LCBjaGFyICpjbGllbnQs IGNoYXIgKnNlcnZlciwKLSsJCSAgICAgIGNoYXIgKmNsaWNlcnRmaWxlLCBjaGFyICpzZXJ2Y2Vy dGZpbGUsIGNoYXIgKmNhY2VydGZpbGUsCi0rCQkgICAgICBjaGFyICpwa2ZpbGUsIGludCBhbV9z ZXJ2ZXIpOwotKwotKyNpZmRlZiBNUFBFCi0rI2luY2x1ZGUgIm1wcGUuaCIgICAvKiBNUFBFX01B WF9LRVlfTEVOICovCi0rZXh0ZXJuIHVfY2hhciBtcHBlX3NlbmRfa2V5W01QUEVfTUFYX0tFWV9M RU5dOwotK2V4dGVybiB1X2NoYXIgbXBwZV9yZWN2X2tleVtNUFBFX01BWF9LRVlfTEVOXTsKLStl eHRlcm4gaW50IG1wcGVfa2V5c19zZXQ7Ci0rCi0rdm9pZCBlYXB0bHNfZ2VuX21wcGVfa2V5cyhz dHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cywgY29uc3QgY2hhciAqcHJmX2xhYmVsLCBpbnQgY2xp ZW50KTsKLSsKLSsjZW5kaWYKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9wcHBkL2VhcC5jIGIv cHBwZC9lYXAuYwotaW5kZXggNmVhNmMxZjhiZmY2Li4wMzI0MDdjM2RiYjIgMTAwNjQ0Ci0tLS0g YS9wcHBkL2VhcC5jCi0rKysgYi9wcHBkL2VhcC5jCi1AQCAtNDMsNiArNDMsMTEgQEAKLSAgKiBC YXNlZCBvbiBkcmFmdC1pZXRmLXBwcGV4dC1lYXAtc3JwLTAzLnR4dC4KLSAgKi8KLSAKLSsvKgot KyAqIE1vZGlmaWNhdGlvbiBieSBCZW5pYW1pbm8gR2FsdmFuaSwgTWFyIDIwMDUKLSsgKiBJbXBs ZW1lbnRlZCBFQVAtVExTIGF1dGhlbnRpY2F0aW9uCi0rICovCi0rCi0gI2RlZmluZSBSQ1NJRAki JElkOiBlYXAuYyx2IDEuNCAyMDA0LzExLzA5IDIyOjM5OjI1IHBhdWx1cyBFeHAgJCIKLSAKLSAv KgotQEAgLTYyLDggKzY3LDEyIEBACi0gCi0gI2luY2x1ZGUgInBwcGQuaCIKLSAjaW5jbHVkZSAi cGF0aG5hbWVzLmgiCi0tI2luY2x1ZGUgIm1kNS5oIgotICNpbmNsdWRlICJlYXAuaCIKLSsjaWZk ZWYgVVNFX0VBUFRMUwotKyNpbmNsdWRlICJlYXAtdGxzLmgiCi0rI2Vsc2UKLSsjaW5jbHVkZSAi bWQ1LmgiCi0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSAKLSAjaWZkZWYgVVNFX1NSUAotICNp bmNsdWRlIDx0X3B3ZC5oPgotQEAgLTIwOSw2ICsyMTgsOSBAQCBpbnQgdW5pdDsKLSAJZXNwLT5l c19zZXJ2ZXIuZWFfaWQgPSAodV9jaGFyKShkcmFuZDQ4KCkgKiAweDEwMCk7Ci0gCWVzcC0+ZXNf Y2xpZW50LmVhX3RpbWVvdXQgPSBFQVBfREVGUkVRVElNRTsKLSAJZXNwLT5lc19jbGllbnQuZWFf bWF4cmVxdWVzdHMgPSBFQVBfREVGQUxMT1dSRVE7Ci0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJZXNw LT5lc19jbGllbnQuZWFfdXNpbmdfZWFwdGxzID0gMDsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAq LwotIH0KLSAKLSAvKgotQEAgLTQzNiw4ICs0NDgsMTYgQEAgaW50IHN0YXR1czsKLSAJdV9jaGFy IHZhbHNbMl07Ci0gCXN0cnVjdCBiNjRzdGF0ZSBiczsKLSAjZW5kaWYgLyogVVNFX1NSUCAqLwot KyNpZmRlZiBVU0VfRUFQVExTCi0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwotKwlpbnQg c2VjcmV0X2xlbjsKLSsJY2hhciBzZWNyZXRbTUFYV09SRExFTl07Ci0rI2VuZGlmIC8qIFVTRV9F QVBUTFMgKi8KLSAKLSAJZXNwLT5lc19zZXJ2ZXIuZWFfdGltZW91dCA9IGVzcC0+ZXNfc2F2ZWR0 aW1lOwotKyNpZmRlZiBVU0VfRUFQVExTCi0rCWVzcC0+ZXNfc2VydmVyLmVhX3ByZXZfc3RhdGUg PSBlc3AtPmVzX3NlcnZlci5lYV9zdGF0ZTsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotIAlz d2l0Y2ggKGVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlKSB7Ci0gCWNhc2UgZWFwQmFkQXV0aDoKLSAJ CXJldHVybjsKLUBAIC01NjIsOSArNTgyLDc5IEBAIGludCBzdGF0dXM7Ci0gCQkJYnJlYWs7Ci0g CQl9Ci0gI2VuZGlmIC8qIFVTRV9TUlAgKi8KLSsjaWZkZWYgVVNFX0VBUFRMUwotKyAgICAgICAg ICAgICAgICBpZiAoIWdldF9zZWNyZXQoZXNwLT5lc191bml0LCBlc3AtPmVzX3NlcnZlci5lYV9w ZWVyLAotKyAgICAgICAgICAgICAgICAgICAgZXNwLT5lc19zZXJ2ZXIuZWFfbmFtZSwgc2VjcmV0 LCAmc2VjcmV0X2xlbiwgMSkpIHsKLSsKLSsJCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVh cFRsc1N0YXJ0OwotKwkJCWJyZWFrOwotKwkJfQotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0r Ci0gCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVhcE1ENUNoYWxsOwotIAkJYnJlYWs7Ci0g Ci0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJY2FzZSBlYXBUbHNTdGFydDoKLSsJCS8qIEluaXRpYWxp emUgc3NsIHNlc3Npb24gKi8KLSsJCWlmKCFlYXB0bHNfaW5pdF9zc2xfc2VydmVyKGVzcCkpIHsK LSsJCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVhcEJhZEF1dGg7Ci0rCQkJYnJlYWs7Ci0r CQl9Ci0rCi0rCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVhcFRsc1JlY3Y7Ci0rCQlicmVh azsKLSsKLSsJY2FzZSBlYXBUbHNSZWN2OgotKwkJZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lv biAqKSBlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uOwotKwotKwkJaWYoZXRzLT5hbGVydF9zZW50 KSB7Ci0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNTZW5kQWxlcnQ7Ci0rCQkJ YnJlYWs7Ci0rCQl9Ci0rCi0rCQlpZiAoc3RhdHVzKSB7Ci0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFf c3RhdGUgPSBlYXBCYWRBdXRoOwotKwkJCWJyZWFrOwotKwkJfQotKwkJZXRzID0gKHN0cnVjdCBl YXB0bHNfc2Vzc2lvbiAqKSBlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uOwotKwotKwkJaWYoZXRz LT5mcmFnKQotKwkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzU2VuZEFjazsKLSsJ CWVsc2UKLSsJCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVhcFRsc1NlbmQ7Ci0rCQlicmVh azsKLSsKLSsJY2FzZSBlYXBUbHNTZW5kOgotKwkJZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lv biAqKSBlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uOwotKwotKwkJaWYoZXRzLT5mcmFnKQotKwkJ CWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzUmVjdkFjazsKLSsJCWVsc2UKLSsJCQlp ZihTU0xfaXNfaW5pdF9maW5pc2hlZChldHMtPnNzbCkpCi0rCQkJCWVzcC0+ZXNfc2VydmVyLmVh X3N0YXRlID0gZWFwVGxzUmVjdkNsaWVudDsKLSsJCQllbHNlCi0rCQkJCWVzcC0+ZXNfc2VydmVy LmVhX3N0YXRlID0gZWFwVGxzUmVjdjsKLSsJCWJyZWFrOwotKwotKwljYXNlIGVhcFRsc1NlbmRB Y2s6Ci0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNSZWN2OwotKwkJYnJlYWs7 Ci0rCi0rCWNhc2UgZWFwVGxzUmVjdkFjazoKLSsgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykg ewotKyAgICAgICAgICAgICAgICAgICAgICAgIGVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFw QmFkQXV0aDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAg ICAgfQotKwotKwkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNTZW5kOwotKwkJYnJl YWs7Ci0rCi0rCWNhc2UgZWFwVGxzU2VuZEFsZXJ0OgotKwkJZXNwLT5lc19zZXJ2ZXIuZWFfc3Rh dGUgPSBlYXBUbHNSZWN2QWxlcnRBY2s7Ci0rCQlicmVhazsKLSsjZW5kaWYgLyogVVNFX0VBUFRM UyAqLwotKwotIAljYXNlIGVhcFNSUDE6Ci0gI2lmZGVmIFVTRV9TUlAKLSAJCXRzID0gKHN0cnVj dCB0X3NlcnZlciAqKWVzcC0+ZXNfc2VydmVyLmVhX3Nlc3Npb247Ci1AQCAtNzE4LDYgKzgwOCwz MCBAQCBlYXBfc3RhdGUgKmVzcDsKLSAJCUlOQ1BUUihlc3AtPmVzX3NlcnZlci5lYV9uYW1lbGVu LCBvdXRwKTsKLSAJCWJyZWFrOwotIAotKyNpZmRlZiBVU0VfRUFQVExTCi0rCWNhc2UgZWFwVGxz U3RhcnQ6Ci0rCQlQVVRDSEFSKEVBUFRfVExTLCBvdXRwKTsKLSsJCVBVVENIQVIoRUFQX1RMU19G TEFHU19TVEFSVCwgb3V0cCk7Ci0rCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAwKTsKLSsJ CWJyZWFrOwotKwotKwljYXNlIGVhcFRsc1NlbmQ6Ci0rCQllYXB0bHNfc2VuZChlc3AtPmVzX3Nl cnZlci5lYV9zZXNzaW9uLCAmb3V0cCk7Ci0rCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAw KTsKLSsJCWJyZWFrOwotKwotKwljYXNlIGVhcFRsc1NlbmRBY2s6Ci0rCQlQVVRDSEFSKEVBUFRf VExTLCBvdXRwKTsKLSsJCVBVVENIQVIoMCwgb3V0cCk7Ci0rCQllYXBfZmlndXJlX25leHRfc3Rh dGUoZXNwLCAwKTsKLSsJCWJyZWFrOwotKwotKwljYXNlIGVhcFRsc1NlbmRBbGVydDoKLSsJCWVh cHRsc19zZW5kKGVzcC0+ZXNfc2VydmVyLmVhX3Nlc3Npb24sICZvdXRwKTsKLSsJCWVhcF9maWd1 cmVfbmV4dF9zdGF0ZShlc3AsIDApOwotKwkJYnJlYWs7Ci0rI2VuZGlmIC8qIFVTRV9FQVBUTFMg Ki8KLSsKLSAjaWZkZWYgVVNFX1NSUAotIAljYXNlIGVhcFNSUDE6Ci0gCQlQVVRDSEFSKEVBUFRf U1JQLCBvdXRwKTsKLUBAIC05MDQsMTEgKzEwMTgsNTcgQEAgc3RhdGljIHZvaWQKLSBlYXBfc2Vy dmVyX3RpbWVvdXQoYXJnKQotIHZvaWQgKmFyZzsKLSB7Ci0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJ dV9jaGFyICpvdXRwOwotKwl1X2NoYXIgKmxlbmxvYzsKLSsJaW50IG91dGxlbjsKLSsjZW5kaWYg LyogVVNFX0VBUFRMUyAqLwotKwotIAllYXBfc3RhdGUgKmVzcCA9IChlYXBfc3RhdGUgKikgYXJn OwotIAotIAlpZiAoIWVhcF9zZXJ2ZXJfYWN0aXZlKGVzcCkpCi0gCQlyZXR1cm47Ci0gCi0rI2lm ZGVmIFVTRV9FQVBUTFMKLSsJc3dpdGNoKGVzcC0+ZXNfc2VydmVyLmVhX3ByZXZfc3RhdGUpIHsK LSsKLSsJLyoKLSsJICogIEluIGVhcC10bHMgdGhlIHN0YXRlIGNoYW5nZXMgYWZ0ZXIgYSByZXF1 ZXN0LCBzbyB3ZSByZXR1cm4gdG8KLSsJICogIHByZXZpb3VzIHN0YXRlIC4uLgotKwkgKi8KLSsJ Y2FzZShlYXBUbHNTdGFydCk6Ci0rCWNhc2UoZWFwVGxzU2VuZEFjayk6Ci0rCQllc3AtPmVzX3Nl cnZlci5lYV9zdGF0ZSA9IGVzcC0+ZXNfc2VydmVyLmVhX3ByZXZfc3RhdGU7Ci0rCQlicmVhazsK LSsKLSsJLyoKLSsJICogIC4uLiBvciByZXNlbmQgdGhlIHN0b3JlZCBkYXRhCi0rCSAqLwotKwlj YXNlKGVhcFRsc1NlbmQpOgotKwljYXNlKGVhcFRsc1NlbmRBbGVydCk6Ci0rCQlvdXRwID0gb3V0 cGFja2V0X2J1ZjsKLSsJCU1BS0VIRUFERVIob3V0cCwgUFBQX0VBUCk7Ci0rCQlQVVRDSEFSKEVB UF9SRVFVRVNULCBvdXRwKTsKLSsJCVBVVENIQVIoZXNwLT5lc19zZXJ2ZXIuZWFfaWQsIG91dHAp OwotKwkJbGVubG9jID0gb3V0cDsKLSsJCUlOQ1BUUigyLCBvdXRwKTsKLSsKLSsJCWVhcHRsc19y ZXRyYW5zbWl0KGVzcC0+ZXNfc2VydmVyLmVhX3Nlc3Npb24sICZvdXRwKTsKLSsKLSsJCW91dGxl biA9IChvdXRwIC0gb3V0cGFja2V0X2J1ZikgLSBQUFBfSERSTEVOOwotKwkJUFVUU0hPUlQob3V0 bGVuLCBsZW5sb2MpOwotKwkJb3V0cHV0KGVzcC0+ZXNfdW5pdCwgb3V0cGFja2V0X2J1Ziwgb3V0 bGVuICsgUFBQX0hEUkxFTik7Ci0rCQllc3AtPmVzX3NlcnZlci5lYV9yZXF1ZXN0cysrOwotKwot KwkJaWYgKGVzcC0+ZXNfc2VydmVyLmVhX3RpbWVvdXQgPiAwKQotKwkJCVRJTUVPVVQoZWFwX3Nl cnZlcl90aW1lb3V0LCBlc3AsIGVzcC0+ZXNfc2VydmVyLmVhX3RpbWVvdXQpOwotKwotKwkJcmV0 dXJuOwotKwlkZWZhdWx0OgotKwkJYnJlYWs7Ci0rCX0KLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAq LwotKwotIAkvKiBFQVAgSUQgbnVtYmVyIG11c3Qgbm90IGNoYW5nZSBvbiB0aW1lb3V0LiAqLwot IAllYXBfc2VuZF9yZXF1ZXN0KGVzcCk7Ci0gfQotQEAgLTExNjYsNiArMTMyNiw4MSBAQCB1X2No YXIgKnN0cjsKLSB9Ci0gI2VuZGlmIC8qIFVTRV9TUlAgKi8KLSAKLSsjaWZkZWYgVVNFX0VBUFRM UwotKy8qCi0rICogU2VuZCBhbiBFQVAtVExTIHJlc3BvbnNlIG1lc3NhZ2Ugd2l0aCB0bHMgZGF0 YQotKyAqLwotK3N0YXRpYyB2b2lkCi0rZWFwX3Rsc19yZXNwb25zZShlc3AsIGlkKQotK2VhcF9z dGF0ZSAqZXNwOwotK3VfY2hhciBpZDsKLSt7Ci0rICAgICAgICB1X2NoYXIgKm91dHA7Ci0rICAg ICAgICBpbnQgb3V0bGVuOwotKwl1X2NoYXIgKmxlbmxvYzsKLSsKLSsgICAgICAgIG91dHAgPSBv dXRwYWNrZXRfYnVmOwotKwotKyAgICAgICAgTUFLRUhFQURFUihvdXRwLCBQUFBfRUFQKTsKLSsK LSsgICAgICAgIFBVVENIQVIoRUFQX1JFU1BPTlNFLCBvdXRwKTsKLSsgICAgICAgIFBVVENIQVIo aWQsIG91dHApOwotKwotKwlsZW5sb2MgPSBvdXRwOwotKwlJTkNQVFIoMiwgb3V0cCk7Ci0rCi0r CS8qCi0rCSAgIElmIHRoZSBpZCBpbiB0aGUgcmVxdWVzdCBpcyB1bmNoYW5nZWQsIHdlIG11c3Qg cmV0cmFuc21pdAotKwkgICB0aGUgb2xkIGRhdGEKLSsJKi8KLSsJaWYoaWQgPT0gZXNwLT5lc19j bGllbnQuZWFfaWQpCi0rCQllYXB0bHNfcmV0cmFuc21pdChlc3AtPmVzX2NsaWVudC5lYV9zZXNz aW9uLCAmb3V0cCk7Ci0rCWVsc2UKLSsJCWVhcHRsc19zZW5kKGVzcC0+ZXNfY2xpZW50LmVhX3Nl c3Npb24sICZvdXRwKTsKLSsKLSsJb3V0bGVuID0gKG91dHAgLSBvdXRwYWNrZXRfYnVmKSAtIFBQ UF9IRFJMRU47Ci0rCVBVVFNIT1JUKG91dGxlbiwgbGVubG9jKTsKLSsKLSsJb3V0cHV0KGVzcC0+ ZXNfdW5pdCwgb3V0cGFja2V0X2J1ZiwgUFBQX0hEUkxFTiArIG91dGxlbik7Ci0rCi0rCWVzcC0+ ZXNfY2xpZW50LmVhX2lkID0gaWQ7Ci0rCi0rfQotKwotKy8qCi0rICogU2VuZCBhbiBFQVAtVExT IGFjawotKyAqLwotK3N0YXRpYyB2b2lkCi0rZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpCi0rZWFw X3N0YXRlICplc3A7Ci0rdV9jaGFyIGlkOwotK3sKLSsJdV9jaGFyICpvdXRwOwotKwlpbnQgb3V0 bGVuOwotKwl1X2NoYXIgKmxlbmxvYzsKLSsKLSsJb3V0cCA9IG91dHBhY2tldF9idWY7Ci0rCi0r CU1BS0VIRUFERVIob3V0cCwgUFBQX0VBUCk7Ci0rCi0rCVBVVENIQVIoRUFQX1JFU1BPTlNFLCBv dXRwKTsKLSsJUFVUQ0hBUihpZCwgb3V0cCk7Ci0rCWVzcC0+ZXNfY2xpZW50LmVhX2lkID0gaWQ7 Ci0rCi0rCWxlbmxvYyA9IG91dHA7Ci0rCUlOQ1BUUigyLCBvdXRwKTsKLSsKLSsJUFVUQ0hBUihF QVBUX1RMUywgb3V0cCk7Ci0rCVBVVENIQVIoMCwgb3V0cCk7Ci0rCi0rCW91dGxlbiA9IChvdXRw IC0gb3V0cGFja2V0X2J1ZikgLSBQUFBfSERSTEVOOwotKwlQVVRTSE9SVChvdXRsZW4sIGxlbmxv Yyk7Ci0rCi0rCW91dHB1dChlc3AtPmVzX3VuaXQsIG91dHBhY2tldF9idWYsIFBQUF9IRFJMRU4g KyBvdXRsZW4pOwotKwotK30KLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIHN0YXRpYyB2 b2lkCi0gZWFwX3NlbmRfbmFrKGVzcCwgaWQsIHR5cGUpCi0gZWFwX3N0YXRlICplc3A7Ci1AQCAt MTMyMCw2ICsxNTU1LDExIEBAIGludCBsZW47Ci0gCWNoYXIgcmhvc3RuYW1lWzI1Nl07Ci0gCU1E NV9DVFggbWRDb250ZXh0OwotIAl1X2NoYXIgaGFzaFtNRDVfU0lHTkFUVVJFX1NJWkVdOwotKyNp ZmRlZiBVU0VfRUFQVExTCi0rCXVfY2hhciBmbGFnczsKLSsJc3RydWN0IGVhcHRsc19zZXNzaW9u ICpldHMgPSBlc3AtPmVzX2NsaWVudC5lYV9zZXNzaW9uOwotKyNlbmRpZiAvKiBVU0VfRUFQVExT ICovCi0rCi0gI2lmZGVmIFVTRV9TUlAKLSAJc3RydWN0IHRfY2xpZW50ICp0YzsKLSAJc3RydWN0 IHRfbnVtIHN2YWwsIGd2YWwsIE52YWwsICpBcCwgQnZhbDsKLUBAIC0xNDU2LDYgKzE2OTYsMTAw IEBAIGludCBsZW47Ci0gCQkgICAgZXNwLT5lc19jbGllbnQuZWFfbmFtZWxlbik7Ci0gCQlicmVh azsKLSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotKwljYXNlIEVBUFRfVExTOgotKwotKwkJc3dpdGNo KGVzcC0+ZXNfY2xpZW50LmVhX3N0YXRlKSB7Ci0rCi0rCQljYXNlIGVhcExpc3RlbjoKLSsKLSsJ CQlpZiAobGVuIDwgMSkgewotKwkJCQllcnJvcigiRUFQOiByZWNlaXZlZCBFQVAtVExTIExpc3Rl biBwYWNrZXQgd2l0aCBubyBkYXRhIik7Ci0rCQkJCS8qIEJvZ3VzIHJlcXVlc3Q7IHdhaXQgZm9y IHNvbWV0aGluZyByZWFsLiAqLwotKwkJCQlyZXR1cm47Ci0rCQkJfQotKwkJCUdFVENIQVIoZmxh Z3MsIGlucCk7Ci0rCQkJaWYoZmxhZ3MgJiBFQVBfVExTX0ZMQUdTX1NUQVJUKXsKLSsKLSsJCQkJ ZXNwLT5lc19jbGllbnQuZWFfdXNpbmdfZWFwdGxzID0gMTsKLSsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChleHBsaWNpdF9yZW1vdGUpewotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlc3AtPmVzX2NsaWVudC5lYV9wZWVyID0gc3RyZHVwKHJl bW90ZV9uYW1lKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNw LT5lc19jbGllbnQuZWFfcGVlcmxlbiA9IHN0cmxlbihyZW1vdGVfbmFtZSk7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXNwLT5lc19jbGllbnQuZWFfcGVlciA9IE5VTEw7Ci0rCi0rCQkJCS8q IEluaXQgc3NsIHNlc3Npb24gKi8KLSsJCQkJaWYoIWVhcHRsc19pbml0X3NzbF9jbGllbnQoZXNw KSkgewotKwkJCQkJZGJnbG9nKCJjYW5ub3QgaW5pdCBzc2wiKTsKLSsJCQkJCWVhcF9zZW5kX25h ayhlc3AsIGlkLCBFQVBUX1RMUyk7Ci0rCQkJCQllc3AtPmVzX2NsaWVudC5lYV91c2luZ19lYXB0 bHMgPSAwOwotKwkJCQkJYnJlYWs7Ci0rCQkJCX0KLSsKLSsJCQkJZXRzID0gZXNwLT5lc19jbGll bnQuZWFfc2Vzc2lvbjsKLSsJCQkJZWFwX3Rsc19yZXNwb25zZShlc3AsIGlkKTsKLSsJCQkJZXNw LT5lc19jbGllbnQuZWFfc3RhdGUgPSAoZXRzLT5mcmFnID8gZWFwVGxzUmVjdkFjayA6Ci0rCQkJ CQkJCQllYXBUbHNSZWN2KTsKLSsJCQkJYnJlYWs7Ci0rCQkJfQotKwotKwkJCS8qIFRoZSBzZXJ2 ZXIgaGFzIHNlbnQgYSBiYWQgc3RhcnQgcGFja2V0LiAqLwotKwkJCWVhcF9zZW5kX25hayhlc3As IGlkLCBFQVBUX1RMUyk7Ci0rCQkJYnJlYWs7Ci0rCi0rCQljYXNlIGVhcFRsc1JlY3ZBY2s6Ci0r CQkJZWFwX3Rsc19yZXNwb25zZShlc3AsIGlkKTsKLSsJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0 ZSA9IChldHMtPmZyYWcgPyBlYXBUbHNSZWN2QWNrIDoKLSsJCQkJCQkJZWFwVGxzUmVjdik7Ci0r CQkJYnJlYWs7Ci0rCi0rCQljYXNlIGVhcFRsc1JlY3Y6Ci0rCQkJaWYgKGxlbiA8IDEpIHsKLSsJ CQkJZXJyb3IoIkVBUDogZGlzY2FyZGluZyBFQVAtVExTIFJlY2VpdmUgcGFja2V0IHdpdGggbm8g ZGF0YSIpOwotKwkJCQkvKiBCb2d1cyByZXF1ZXN0OyB3YWl0IGZvciBzb21ldGhpbmcgcmVhbC4g Ki8KLSsJCQkJcmV0dXJuOwotKwkJCX0KLSsJCQllYXB0bHNfcmVjZWl2ZShldHMsIGlucCwgbGVu KTsKLSsKLSsJCQlpZihldHMtPmZyYWcpIHsKLSsJCQkJZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQp OwotKwkJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IGVhcFRsc1JlY3Y7Ci0rCQkJCWJyZWFr OwotKwkJCX0KLSsKLSsJCQlpZihldHMtPmFsZXJ0X3JlY3YpIHsKLSsJCQkJZWFwX3Rsc19zZW5k YWNrKGVzcCwgaWQpOwotKwkJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IGVhcFRsc1JlY3ZG YWlsdXJlOwotKwkJCQlicmVhazsKLSsJCQl9Ci0rCi0rCQkJLyogQ2hlY2sgaWYgVExTIGhhbmRz aGFrZSBpcyBmaW5pc2hlZCAqLwotKwkJCWlmKFNTTF9pc19pbml0X2ZpbmlzaGVkKGV0cy0+c3Ns KSl7Ci0rI2lmZGVmIE1QUEUKLSsgCQkJCWVhcHRsc19nZW5fbXBwZV9rZXlzKCBldHMsICJjbGll bnQgRUFQIGVuY3J5cHRpb24iLCAxICk7Ci0rI2VuZGlmCi0rCQkJCWVhcHRsc19mcmVlX3Nlc3Np b24oZXRzKTsKLSsJCQkJZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpOwotKwkJCQllc3AtPmVzX2Ns aWVudC5lYV9zdGF0ZSA9IGVhcFRsc1JlY3ZTdWNjZXNzOwotKwkJCQlicmVhazsKLSsJCQl9Ci0r Ci0rCQkJZWFwX3Rsc19yZXNwb25zZShlc3AsaWQpOwotKyAgICAgICAgICAgICAgICAgICAgICAg IGVzcC0+ZXNfY2xpZW50LmVhX3N0YXRlID0gKGV0cy0+ZnJhZyA/IGVhcFRsc1JlY3ZBY2sgOgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWFwVGxzUmVjdik7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rCi0rCQlk ZWZhdWx0OgotKwkJCWVhcF9zZW5kX25hayhlc3AsIGlkLCBFQVBUX1RMUyk7Ci0rCQkJZXNwLT5l c19jbGllbnQuZWFfdXNpbmdfZWFwdGxzID0gMDsKLSsJCQlicmVhazsKLSsJCX0KLSsKLSsJCWJy ZWFrOwotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0rCi0gI2lmZGVmIFVTRV9TUlAKLSAJY2Fz ZSBFQVBUX1NSUDoKLSAJCWlmIChsZW4gPCAxKSB7Ci1AQCAtMTczNyw2ICsyMDcxLDExIEBAIGlu dCBsZW47Ci0gCXVfY2hhciBkaWdbU0hBX0RJR0VTVFNJWkVdOwotICNlbmRpZiAvKiBVU0VfU1JQ ICovCi0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHM7 Ci0rCXVfY2hhciBmbGFnczsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAlpZiAoZXNw LT5lc19zZXJ2ZXIuZWFfaWQgIT0gaWQpIHsKLSAJCWRiZ2xvZygiRUFQOiBkaXNjYXJkaW5nIFJl c3BvbnNlICVkOyBleHBlY3RlZCBJRCAlZCIsIGlkLAotIAkJICAgIGVzcC0+ZXNfc2VydmVyLmVh X2lkKTsKLUBAIC0xNzc2LDYgKzIxMTUsNjQgQEAgaW50IGxlbjsKLSAJCWVhcF9maWd1cmVfbmV4 dF9zdGF0ZShlc3AsIDApOwotIAkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJY2Fz ZSBFQVBUX1RMUzoKLSsJCXN3aXRjaChlc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSkgewotKwotKwkJ Y2FzZSBlYXBUbHNSZWN2OgotKwotKwkJCWV0cyA9IChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKikg ZXNwLT5lc19zZXJ2ZXIuZWFfc2Vzc2lvbjsKLSsJCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNw LAotKwkJCQllYXB0bHNfcmVjZWl2ZShlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uLCBpbnAsIGxl bikpOwotKwotKwkJCWlmKGV0cy0+YWxlcnRfcmVjdikgewotKwkJCQllYXBfc2VuZF9mYWlsdXJl KGVzcCk7Ci0rCQkJCWJyZWFrOwotKwkJCX0KLSsJCQlicmVhazsKLSsKLSsJCWNhc2UgZWFwVGxz UmVjdkFjazoKLSsJCQlpZihsZW4gPiAxKSB7Ci0rCQkJCWRiZ2xvZygiRUFQLVRMUyBBQ0sgd2l0 aCBleHRyYSBkYXRhIik7Ci0rCQkJfQotKwkJCWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3AsIDAp OwotKwkJCWJyZWFrOwotKwotKwkJY2FzZSBlYXBUbHNSZWN2Q2xpZW50OgotKwkJCS8qIFJlY2Vp dmUgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgZnJvbSBjbGllbnQgKi8KLSsKLSsJCQlpZiAobGVu ID4gMCkgewotKwkJCQlHRVRDSEFSKGZsYWdzLCBpbnApOwotKwotKwkJCQlpZihsZW4gPT0gMSAm JiAhZmxhZ3MpIHsJLyogQWNrID0gb2sgKi8KLSsjaWZkZWYgTVBQRQotKyAJCQkJCWVhcHRsc19n ZW5fbXBwZV9rZXlzKCBlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uLCAiY2xpZW50IEVBUCBlbmNy eXB0aW9uIiwgMCApOwotKyNlbmRpZgotKwkJCQkJZWFwX3NlbmRfc3VjY2Vzcyhlc3ApOwotKwkJ CQl9Ci0rCQkJCWVsc2UgewkJCS8qIGZhaWx1cmUgKi8KLSsJCQkJCXdhcm4oIlNlcnZlciBhdXRo ZW50aWNhdGlvbiBmYWlsZWQiKTsKLSsJCQkJCWVhcF9zZW5kX2ZhaWx1cmUoZXNwKTsKLSsJCQkJ fQotKwkJCX0KLSsJCQllbHNlCi0rCQkJCXdhcm4oIkJvZ3VzIEVBUC1UTFMgcGFja2V0IHJlY2Vp dmVkIGZyb20gY2xpZW50Iik7Ci0rCi0rCQkJZWFwdGxzX2ZyZWVfc2Vzc2lvbihlc3AtPmVzX3Nl cnZlci5lYV9zZXNzaW9uKTsKLSsKLSsJCQlicmVhazsKLSsKLSsJCWNhc2UgZWFwVGxzUmVjdkFs ZXJ0QWNrOgotKwkJCWVhcF9zZW5kX2ZhaWx1cmUoZXNwKTsKLSsJCQlicmVhazsKLSsKLSsJCWRl ZmF1bHQ6Ci0rCQkJZWFwX2ZpZ3VyZV9uZXh0X3N0YXRlKGVzcCwgMSk7Ci0rCQkJYnJlYWs7Ci0r CQl9Ci0rCQlicmVhazsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAljYXNlIEVBUFRf Tk9USUZJQ0FUSU9OOgotIAkJZGJnbG9nKCJFQVAgdW5leHBlY3RlZCBOb3RpZmljYXRpb247IHJl c3BvbnNlIGRpc2NhcmRlZCIpOwotIAkJYnJlYWs7Ci1AQCAtMTgwNyw2ICsyMjA0LDEzIEBAIGlu dCBsZW47Ci0gCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBNRDVDaGFsbDsKLSAJCQli cmVhazsKLSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotKwkJCS8qIFNlbmQgRUFQLVRMUyBzdGFydCBw YWNrZXQgKi8KLSsJCWNhc2UgRUFQVF9UTFM6Ci0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUg PSBlYXBUbHNTdGFydDsKLSsJCQlicmVhazsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwot IAkJZGVmYXVsdDoKLSAJCQlkYmdsb2coIkVBUDogcGVlciByZXF1ZXN0aW5nIHVua25vd24gVHlw ZSAlZCIsIHZhbGxlbik7Ci0gCQkJc3dpdGNoIChlc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSkgewot QEAgLTIwMTgsMTMgKzI0MjIsMjcgQEAgdV9jaGFyICppbnA7Ci0gaW50IGlkOwotIGludCBsZW47 Ci0gewotLQlpZiAoZXNwLT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFwT3BlbiAmJiAhZWFwX2Ns aWVudF9hY3RpdmUoZXNwKSkgewotKwlpZiAoZXNwLT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFw T3BlbiAmJiAhZWFwX2NsaWVudF9hY3RpdmUoZXNwKQotKyNpZmRlZiBVU0VfRUFQVExTCi0rCQkm JiBlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSAhPSBlYXBUbHNSZWN2U3VjY2VzcwotKyNlbmRpZiAv KiBVU0VfRUFQVExTICovCi0rCQkpIHsKLSAJCWRiZ2xvZygiRUFQIHVuZXhwZWN0ZWQgc3VjY2Vz cyBtZXNzYWdlIGluIHN0YXRlICVzICglZCkiLAotIAkJICAgIGVhcF9zdGF0ZV9uYW1lKGVzcC0+ ZXNfY2xpZW50LmVhX3N0YXRlKSwKLSAJCSAgICBlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSk7Ci0g CQlyZXR1cm47Ci0gCX0KLSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotKwlpZihlc3AtPmVzX2NsaWVu dC5lYV91c2luZ19lYXB0bHMgJiYgZXNwLT5lc19jbGllbnQuZWFfc3RhdGUgIT0KLSsJCWVhcFRs c1JlY3ZTdWNjZXNzKSB7Ci0rCQlkYmdsb2coIkVBUC1UTFMgdW5leHBlY3RlZCBzdWNjZXNzIG1l c3NhZ2UgaW4gc3RhdGUgJXMgKCVkKSIsCi0rICAgICAgICAgICAgICAgICAgICBlYXBfc3RhdGVf bmFtZShlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSksCi0rICAgICAgICAgICAgICAgICAgICBlc3At PmVzX2NsaWVudC5lYV9zdGF0ZSk7Ci0rCQlyZXR1cm47Ci0rCX0KLSsjZW5kaWYgLyogVVNFX0VB UFRMUyAqLwotKwotIAlpZiAoZXNwLT5lc19jbGllbnQuZWFfdGltZW91dCA+IDApIHsKLSAJCVVO VElNRU9VVChlYXBfY2xpZW50X3RpbWVvdXQsICh2b2lkICopZXNwKTsKLSAJfQotQEAgLTIxNTAs NiArMjU2OCw5IEBAIHZvaWQgKmFyZzsKLSAJaW50IGNvZGUsIGlkLCBsZW4sIHJ0eXBlLCB2YWxs ZW47Ci0gCXVfY2hhciAqcHN0YXJ0OwotIAl1X2ludDMyX3QgdXZhbDsKLSsjaWZkZWYgVVNFX0VB UFRMUwotKwl1X2NoYXIgZmxhZ3M7Ci0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSAKLSAJaWYg KGlubGVuIDwgRUFQX0hFQURFUkxFTikKLSAJCXJldHVybiAoMCk7Ci1AQCAtMjIxNCw2ICsyNjM1 LDI0IEBAIHZvaWQgKmFyZzsKLSAJCQl9Ci0gCQkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBU TFMKLSsJCWNhc2UgRUFQVF9UTFM6Ci0rCQkJaWYgKGxlbiA8IDEpCi0rCQkJCWJyZWFrOwotKwkJ CUdFVENIQVIoZmxhZ3MsIGlucCk7Ci0rCQkJbGVuLS07Ci0rCi0rICAgICAgICAgICAgICAgICAg ICAgICAgaWYoZmxhZ3MgPT0gMCAmJiBsZW4gPT0gMCl7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcmludGVyKGFyZywgIiBBY2siKTsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsKLSsJCQlwcmlu dGVyKGFyZywgZmxhZ3MgJiBFQVBfVExTX0ZMQUdTX0xJID8gIiBMIjoiIC0iKTsKLSsJCQlwcmlu dGVyKGFyZywgZmxhZ3MgJiBFQVBfVExTX0ZMQUdTX01GID8gIk0iOiItIik7Ci0rCQkJcHJpbnRl cihhcmcsIGZsYWdzICYgRUFQX1RMU19GTEFHU19TVEFSVCA/ICJTIjoiLSAiKTsKLSsJCQlicmVh azsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAkJY2FzZSBFQVBUX1NSUDoKLSAJCQlp ZiAobGVuIDwgMykKLSAJCQkJZ290byB0cnVuY2F0ZWQ7Ci1AQCAtMjMyNSw2ICsyNzY0LDI1IEBA IHZvaWQgKmFyZzsKLSAJCQl9Ci0gCQkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJ CWNhc2UgRUFQVF9UTFM6Ci0rCQkJaWYgKGxlbiA8IDEpCi0rCQkJCWJyZWFrOwotKwkJCUdFVENI QVIoZmxhZ3MsIGlucCk7Ci0rCQkJbGVuLS07Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAg aWYoZmxhZ3MgPT0gMCAmJiBsZW4gPT0gMCl7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcmludGVyKGFyZywgIiBBY2siKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsKLSsJCQlwcmludGVyKGFy ZywgZmxhZ3MgJiBFQVBfVExTX0ZMQUdTX0xJID8gIiBMIjoiIC0iKTsKLSsJCQlwcmludGVyKGFy ZywgZmxhZ3MgJiBFQVBfVExTX0ZMQUdTX01GID8gIk0iOiItIik7Ci0rCQkJcHJpbnRlcihhcmcs IGZsYWdzICYgRUFQX1RMU19GTEFHU19TVEFSVCA/ICJTIjoiLSAiKTsKLSsKLSsJCQlicmVhazsK LSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAkJY2FzZSBFQVBUX05BSzoKLSAJCQlpZiAo bGVuIDw9IDApIHsKLSAJCQkJcHJpbnRlcihhcmcsICIgPG1pc3NpbmcgaGludD4iKTsKLUBAIC0y NDI2LDMgKzI4ODQsNCBAQCB2b2lkICphcmc7Ci0gCi0gCXJldHVybiAoaW5wIC0gcHN0YXJ0KTsK LSB9Ci0rCi1kaWZmIC0tZ2l0IGEvcHBwZC9lYXAuaCBiL3BwcGQvZWFwLmgKLWluZGV4IDE5OWQx ODQ5YjgyNi4uMDg3YmFhZDgzZWVkIDEwMDY0NAotLS0tIGEvcHBwZC9lYXAuaAotKysrIGIvcHBw ZC9lYXAuaAotQEAgLTg0LDYgKzg0LDE2IEBAIGVudW0gZWFwX3N0YXRlX2NvZGUgewotIAllYXBD bG9zZWQsCS8qIEF1dGhlbnRpY2F0aW9uIG5vdCBpbiB1c2UgKi8KLSAJZWFwTGlzdGVuLAkvKiBD bGllbnQgcmVhZHkgKGFuZCB0aW1lciBydW5uaW5nKSAqLwotIAllYXBJZGVudGlmeSwJLyogRUFQ IElkZW50aWZ5IHNlbnQgKi8KLSsJZWFwVGxzU3RhcnQsCS8qIFNlbmQgRUFQLVRMUyBzdGFydCBw YWNrZXQgKi8KLSsJZWFwVGxzUmVjdiwJLyogUmVjZWl2ZSBFQVAtVExTIHRscyBkYXRhICovCi0r CWVhcFRsc1NlbmRBY2ssCS8qIFNlbmQgRUFQLVRMUyBhY2sgKi8KLSsJZWFwVGxzU2VuZCwJLyog U2VuZCBFQVAtVExTIHRscyBkYXRhICovCi0rCWVhcFRsc1JlY3ZBY2ssCS8qIFJlY2VpdmUgRUFQ LVRMUyBhY2sgKi8KLSsJZWFwVGxzUmVjdkNsaWVudCwgCS8qIFJlY2VpdmUgRUFQLVRMUyBhdXRo IHJlc3BvbnNlIGZyb20gY2xpZW50Ki8KLSsJZWFwVGxzU2VuZEFsZXJ0LAkvKiBTZW5kIEVBUC1U TFMgdGxzIGFsZXJ0IChzZXJ2ZXIpKi8KLSsJZWFwVGxzUmVjdkFsZXJ0QWNrLAkvKiBSZWNlaXZl IEVBUC1UTFMgYWNrIGFmdGVyIHNlbmRpbmcgYWxlcnQgKi8KLSsJZWFwVGxzUmVjdlN1Y2Nlc3Ms CS8qIFJlY2VpdmUgRUFQIHN1Y2Nlc3MgKi8KLSsJZWFwVGxzUmVjdkZhaWx1cmUsCS8qIFJlY2Vp dmUgRUFQIGZhaWx1cmUgKi8KLSAJZWFwU1JQMSwJLyogU2VudCBFQVAgU1JQLVNIQTEgU3VidHlw ZSAxICovCi0gCWVhcFNSUDIsCS8qIFNlbnQgRUFQIFNSUC1TSEExIFN1YnR5cGUgMiAqLwotIAll YXBTUlAzLAkvKiBTZW50IEVBUCBTUlAtU0hBMSBTdWJ0eXBlIDMgKi8KLUBAIC05NSw5ICsxMDUs MTggQEAgZW51bSBlYXBfc3RhdGVfY29kZSB7Ci0gCi0gI2RlZmluZQlFQVBfU1RBVEVTCVwKLSAJ IkluaXRpYWwiLCAiUGVuZGluZyIsICJDbG9zZWQiLCAiTGlzdGVuIiwgIklkZW50aWZ5IiwgXAot KwkiVGxzU3RhcnQiLCAiVGxzUmVjdiIsICJUbHNTZW5kQWNrIiwgIlRsc1NlbmQiLCAiVGxzUmVj dkFjayIsICJUbHNSZWN2Q2xpZW50IixcCi0rCSJUbHNTZW5kQWxlcnQiLCAiVGxzUmVjdkFsZXJ0 QWNrIiAsICJUbHNSZWN2U3VjY2VzcyIsICJUbHNSZWN2RmFpbHVyZSIsIFwKLSAJIlNSUDEiLCAi U1JQMiIsICJTUlAzIiwgIk1ENUNoYWxsIiwgIk9wZW4iLCAiU1JQNCIsICJCYWRBdXRoIgotIAot LSNkZWZpbmUJZWFwX2NsaWVudF9hY3RpdmUoZXNwKQkoKGVzcCktPmVzX2NsaWVudC5lYV9zdGF0 ZSA9PSBlYXBMaXN0ZW4pCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsjZGVmaW5lCWVhcF9jbGllbnRf YWN0aXZlKGVzcCkJKChlc3ApLT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFwSW5pdGlhbCAmJlwK LSsJCQkJIChlc3ApLT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFwUGVuZGluZyAmJlwKLSsJCQkJ IChlc3ApLT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFwQ2xvc2VkKQotKyNlbHNlCi0rI2RlZmlu ZSBlYXBfY2xpZW50X2FjdGl2ZShlc3ApCSgoZXNwKS0+ZXNfY2xpZW50LmVhX3N0YXRlID09IGVh cExpc3RlbikKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotICNkZWZpbmUJZWFwX3NlcnZl cl9hY3RpdmUoZXNwKQlcCi0gCSgoZXNwKS0+ZXNfc2VydmVyLmVhX3N0YXRlID49IGVhcElkZW50 aWZ5ICYmIFwKLSAJIChlc3ApLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPD0gZWFwTUQ1Q2hhbGwpCi1A QCAtMTEyLDExICsxMzEsMTcgQEAgc3RydWN0IGVhcF9hdXRoIHsKLSAJdV9zaG9ydCBlYV9uYW1l bGVuOwkvKiBMZW5ndGggb2Ygb3VyIG5hbWUgKi8KLSAJdV9zaG9ydCBlYV9wZWVybGVuOwkvKiBM ZW5ndGggb2YgcGVlcidzIG5hbWUgKi8KLSAJZW51bSBlYXBfc3RhdGVfY29kZSBlYV9zdGF0ZTsK LSsjaWZkZWYgVVNFX0VBUFRMUwotKwllbnVtIGVhcF9zdGF0ZV9jb2RlIGVhX3ByZXZfc3RhdGU7 Ci0rI2VuZGlmCi0gCXVfY2hhciBlYV9pZDsJCS8qIEN1cnJlbnQgaWQgKi8KLSAJdV9jaGFyIGVh X3JlcXVlc3RzOwkvKiBOdW1iZXIgb2YgUmVxdWVzdHMgc2VudC9yZWNlaXZlZCAqLwotIAl1X2No YXIgZWFfcmVzcG9uc2VzOwkvKiBOdW1iZXIgb2YgUmVzcG9uc2VzICovCi0gCXVfY2hhciBlYV90 eXBlOwkJLyogT25lIG9mIEVBUFRfKiAqLwotIAl1X2ludDMyX3QgZWFfa2V5ZmxhZ3M7CS8qIFNS UCBzaGFyZWQga2V5IHVzYWdlIGZsYWdzICovCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJYm9vbCBl YV91c2luZ19lYXB0bHM7Ci0rI2VuZGlmCi0gfTsKLSAKLSAvKgotQEAgLTEzOSw3ICsxNjQsMTIg QEAgdHlwZWRlZiBzdHJ1Y3QgZWFwX3N0YXRlIHsKLSAgKiBUaW1lb3V0cy4KLSAgKi8KLSAjZGVm aW5lCUVBUF9ERUZUSU1FT1VUCQkzCS8qIFRpbWVvdXQgKHNlY29uZHMpIGZvciByZXhtaXQgKi8K LSsjaWZkZWYgVVNFX0VBUFRMUwotKyNkZWZpbmUJRUFQX0RFRlRSQU5TTUlUUwkzMAkvKiBtYXgg IyB0aW1lcyB0byB0cmFuc21pdCAqLwotKwkJCQkJLyogY2VydGlmaWNhdGVzIGNhbiBiZSBsb25n IC4uLiAqLwotKyNlbHNlCi0gI2RlZmluZQlFQVBfREVGVFJBTlNNSVRTCTEwCS8qIG1heCAjIHRp bWVzIHRvIHRyYW5zbWl0ICovCi0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSAjZGVmaW5lCUVB UF9ERUZSRVFUSU1FCQkyMAkvKiBUaW1lIHRvIHdhaXQgZm9yIHBlZXIgcmVxdWVzdCAqLwotICNk ZWZpbmUJRUFQX0RFRkFMTE9XUkVRCQkyMAkvKiBtYXggIyB0aW1lcyB0byBhY2NlcHQgcmVxdWVz dHMgKi8KLSAKLWRpZmYgLS1naXQgYS9wcHBkL21kNS5jIGIvcHBwZC9tZDUuYwotaW5kZXggZjEy OTFjZTFiZDcyLi42ZjhmNzIwN2M1OTIgMTAwNjQ0Ci0tLS0gYS9wcHBkL21kNS5jCi0rKysgYi9w cHBkL21kNS5jCi1AQCAtMzMsNiArMzMsOCBAQAotICAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLwotIAot KyNpZm5kZWYgVVNFX0VBUFRMUwotKwotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAi bWQ1LmgiCi0gCi1AQCAtMzA1LDMgKzMwNyw1IEBAIFVJTlQ0ICppbjsKLSAgKiogRW5kIG9mIG1k NS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KioKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKGN1dCkgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAgKi8KLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwot ZGlmZiAtLWdpdCBhL3BwcGQvbWQ1LmggYi9wcHBkL21kNS5oCi1pbmRleCA3MWU4YjAwZTJkZGUu LjE0ZDcxMjE3MWM1ZSAxMDA2NDQKLS0tLSBhL3BwcGQvbWQ1LmgKLSsrKyBiL3BwcGQvbWQ1LmgK LUBAIC0zNiw2ICszNiw3IEBACi0gICoqIGRvY3VtZW50YXRpb24gYW5kL29yIHNvZnR3YXJlLiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCi0gICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0g ICovCi0rI2lmbmRlZiBVU0VfRUFQVExTCi0gCi0gI2lmbmRlZiBfX01ENV9JTkNMVURFX18KLSAK LUBAIC02MywzICs2NCw1IEBAIHZvaWQgTUQ1X0ZpbmFsICh1bnNpZ25lZCBjaGFyIGhhc2hbXSwg TUQ1X0NUWCAqbWRDb250ZXh0KTsKLSAKLSAjZGVmaW5lIF9fTUQ1X0lOQ0xVREVfXwotICNlbmRp ZiAvKiBfX01ENV9JTkNMVURFX18gKi8KLSsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotZGlm ZiAtLWdpdCBhL3BwcGQvcGF0aG5hbWVzLmggYi9wcHBkL3BhdGhuYW1lcy5oCi1pbmRleCA0Njk3 MjYwMWZjOTIuLjcyYzJmNWIxOTFlZSAxMDA2NDQKLS0tLSBhL3BwcGQvcGF0aG5hbWVzLmgKLSsr KyBiL3BwcGQvcGF0aG5hbWVzLmgKLUBAIC0yMSw2ICsyMSwxMyBAQAotICNkZWZpbmUgX1BBVEhf VVBBUEZJTEUgCSBfUk9PVF9QQVRIICIvZXRjL3BwcC9wYXAtc2VjcmV0cyIKLSAjZGVmaW5lIF9Q QVRIX0NIQVBGSUxFIAkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAvY2hhcC1zZWNyZXRzIgotICNkZWZp bmUgX1BBVEhfU1JQRklMRSAJIF9ST09UX1BBVEggIi9ldGMvcHBwL3NycC1zZWNyZXRzIgotKwot KyNpZmRlZiBVU0VfRUFQVExTCi0rI2RlZmluZSBfUEFUSF9FQVBUTFNDTElGSUxFCV9ST09UX1BB VEggIi9ldGMvcHBwL2VhcHRscy1jbGllbnQiCi0rI2RlZmluZSBfUEFUSF9FQVBUTFNTRVJWRklM RQlfUk9PVF9QQVRIICIvZXRjL3BwcC9lYXB0bHMtc2VydmVyIgotKyNkZWZpbmUgX1BBVEhfT1BF TlNTTENPTkZGSUxFCV9ST09UX1BBVEggIi9ldGMvcHBwL29wZW5zc2wuY25mIgotKyNlbmRpZiAv KiBVU0VfRUFQVExTICovCi0rCi0gI2RlZmluZSBfUEFUSF9TWVNPUFRJT05TIF9ST09UX1BBVEgg Ii9ldGMvcHBwL29wdGlvbnMiCi0gI2RlZmluZSBfUEFUSF9JUFVQCSBfUk9PVF9QQVRIICIvZXRj L3BwcC9pcC11cCIKLSAjZGVmaW5lIF9QQVRIX0lQRE9XTgkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAv aXAtZG93biIKLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXggYi9wcHBk L3BsdWdpbnMvTWFrZWZpbGUubGludXgKLWluZGV4IDBmOWQzN2QyOTUzYi4uYmMyOTk2OGQ0NGM5 IDEwMDY0NAotLS0tIGEvcHBwZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkL3Bs dWdpbnMvTWFrZWZpbGUubGludXgKLUBAIC00LDYgKzQsOSBAQCBDRkxBR1MJPSAkKENPUFRTKSAt SS4uIC1JLi4vLi4vaW5jbHVkZSAtZlBJQwotIExERkxBR1MJPSAkKExET1BUUykKLSBJTlNUQUxM CT0gaW5zdGFsbAotIAotKyMgRUFQLVRMUwotK0NGTEFHUyArPSAtRFVTRV9FQVBUTFM9MQotKwot IERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAotIEJJTkRJUiA9ICQoREVTVERJUikvc2Jp bgotIE1BTkRJUiA9ICQoREVTVERJUikvc2hhcmUvbWFuL21hbjgKLWRpZmYgLS1naXQgYS9wcHBk L3BsdWdpbnMvcGFzc3Byb21wdC5jIGIvcHBwZC9wbHVnaW5zL3Bhc3Nwcm9tcHQuYwotaW5kZXgg YmFiYjZkYzMxYmFiLi42YmE3M2NhZTI3OTUgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcGFz c3Byb21wdC5jCi0rKysgYi9wcHBkL3BsdWdpbnMvcGFzc3Byb21wdC5jCi1AQCAtMTA3LDQgKzEw Nyw3IEBAIHZvaWQgcGx1Z2luX2luaXQodm9pZCkKLSB7Ci0gICAgIGFkZF9vcHRpb25zKG9wdGlv bnMpOwotICAgICBwYXBfcGFzc3dkX2hvb2sgPSBwcm9tcHRwYXNzOwotKyNpZmRlZiBVU0VfRUFQ VExTCi0rICAgIGVhcHRsc19wYXNzd2RfaG9vayA9IHByb21wdHBhc3M7Ci0rI2VuZGlmCi0gfQot ZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9wYXNzd29yZGZkLmMgYi9wcHBkL3BsdWdpbnMvcGFz c3dvcmRmZC5jCi1pbmRleCBkNzE4ZjNiZGY4MWQuLmMzZjk3OTNlNDFhMCAxMDA2NDQKLS0tLSBh L3BwcGQvcGx1Z2lucy9wYXNzd29yZGZkLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9wYXNzd29yZGZk LmMKLUBAIC03OSw0ICs3OSw4IEBAIHZvaWQgcGx1Z2luX2luaXQgKHZvaWQpCi0gCi0gICAgIGNo YXBfY2hlY2tfaG9vayA9IHB3ZmRfY2hlY2s7Ci0gICAgIGNoYXBfcGFzc3dkX2hvb2sgPSBwd2Zk X3Bhc3N3ZDsKLSsKLSsjaWZkZWYgVVNFX0VBUFRMUwotKyAgICBlYXB0bHNfcGFzc3dkX2hvb2sg PSBwd2ZkX3Bhc3N3ZDsKLSsjZW5kaWYKLSB9Ci1kaWZmIC0tZ2l0IGEvcHBwZC9wcHBkLjggYi9w cHBkL3BwcGQuOAotaW5kZXggNjViYmU3MjFmNzYxLi44YWZhMmQxMTg2ZTIgMTAwNjQ0Ci0tLS0g YS9wcHBkL3BwcGQuOAotKysrIGIvcHBwZC9wcHBkLjgKLUBAIC0yNTMsNiArMjUzLDEyIEBAIEFs dGVybmF0aXZlbHksIGEgdmFsdWUgb2YgMCBmb3IgXGZJbnJcZlIgb3IgXGZJbnRcZlIgZGlzYWJs ZXMKLSBjb21wcmVzc2lvbiBpbiB0aGUgY29ycmVzcG9uZGluZyBkaXJlY3Rpb24uICBVc2UgXGZJ bm9ic2Rjb21wXGZSIG9yCi0gXGZJYnNkY29tcCAwXGZSIHRvIGRpc2FibGUgQlNELUNvbXByZXNz IGNvbXByZXNzaW9uIGVudGlyZWx5LgotIC5UUAotKy5CIGNhIFxmSWNhLWZpbGUKLSsoRUFQLVRM UykgVXNlIHRoZSBmaWxlIFxmSWNhLWZpbGVcZlIgYXMgdGhlIFguNTA5IENlcnRpZmljYXRlIEF1 dGhvcml0eQotKyhDQSkgZmlsZSAoaW4gUEVNIGZvcm1hdCksIG5lZWRlZCBmb3Igc2V0dGluZyB1 cCBhbiBFQVAtVExTIGNvbm5lY3Rpb24uCi0rVGhpcyBvcHRpb24gaXMgdXNlZCBvbiB0aGUgY2xp ZW50LXNpZGUgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgXGZCY2VydFxmUgotK2FuZCBcZkJrZXlc ZlIgb3B0aW9ucy4KLSsuVFAKLSAuQiBjZHRyY3RzCi0gVXNlIGEgbm9uLXN0YW5kYXJkIGhhcmR3 YXJlIGZsb3cgY29udHJvbCAoaS5lLiBEVFIvQ1RTKSB0byBjb250cm9sCi0gdGhlIGZsb3cgb2Yg ZGF0YSBvbiB0aGUgc2VyaWFsIHBvcnQuICBJZiBuZWl0aGVyIHRoZSBcZkljcnRzY3RzXGZSLAot QEAgLTI2NCw2ICsyNzAsMTIgQEAgUlRTIG91dHB1dC4gU3VjaCBzZXJpYWwgcG9ydHMgdXNlIHRo aXMgbW9kZSB0byBpbXBsZW1lbnQgdHJ1ZQotIGJpLWRpcmVjdGlvbmFsIGZsb3cgY29udHJvbC4g VGhlIHNhY3JpZmljZSBpcyB0aGF0IHRoaXMgZmxvdwotIGNvbnRyb2wgbW9kZSBkb2VzIG5vdCBw ZXJtaXQgdXNpbmcgRFRSIGFzIGEgbW9kZW0gY29udHJvbCBsaW5lLgotIC5UUAotKy5CIGNlcnQg XGZJY2VydGZpbGUKLSsoRUFQLVRMUykgVXNlIHRoZSBmaWxlIFxmSWNlcnRmaWxlXGZSIGFzIHRo ZSBYLjUwOSBjZXJ0aWZpY2F0ZSAoaW4gUEVNCi0rZm9ybWF0KSwgbmVlZGVkIGZvciBzZXR0aW5n IHVwIGFuIEVBUC1UTFMgY29ubmVjdGlvbi4gVGhpcyBvcHRpb24gaXMKLSt1c2VkIG9uIHRoZSBj bGllbnQtc2lkZSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBcZkJjYVxmUiBhbmQKLStcZkJrZXlc ZlIgb3B0aW9ucy4KLSsuVFAKLSAuQiBjaGFwXC1pbnRlcnZhbCBcZkluCi0gSWYgdGhpcyBvcHRp b24gaXMgZ2l2ZW4sIHBwcGQgd2lsbCByZWNoYWxsZW5nZSB0aGUgcGVlciBldmVyeSBcZkluXGZS Ci0gc2Vjb25kcy4KLUBAIC0yOTIsNiArMzA0LDE4IEBAIG5lZ290aWF0aW9uIGJ5IHNlbmRpbmcg aXRzIGZpcnN0IExDUCBwYWNrZXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcwotIDEwMDAgKDEgc2Vj b25kKS4gIFRoaXMgd2FpdCBwZXJpb2Qgb25seSBhcHBsaWVzIGlmIHRoZSBcZkJjb25uZWN0XGZS Ci0gb3IgXGZCcHR5XGZSIG9wdGlvbiBpcyB1c2VkLgotIC5UUAotKy5CIGNybCBcZklmaWxlbmFt ZQotKyhFQVAtVExTKSBVc2UgdGhlIGZpbGUgXGZJZmlsZW5hbWVcZlIgYXMgdGhlIENlcnRpZmlj YXRlIFJldm9jYXRpb24gTGlzdAotK3RvIGNoZWNrIGZvciB0aGUgdmFsaWRpdHkgb2YgdGhlIHBl ZXIncyBjZXJ0aWZpY2F0ZS4gVGhpcyBvcHRpb24gaXMgbm90Ci0rbWFuZGF0b3J5IGZvciBzZXR0 aW5nIHVwIGFuIEVBUC1UTFMgY29ubmVjdGlvbi4gQWxzbyBzZWUgdGhlIFxmQmNybC1kaXJcZlIK LStvcHRpb24uCi0rLlRQCi0rLkIgY3JsLWRpciBcZklkaXJlY3RvcnkKLSsoRUFQLVRMUykgVXNl IHRoZSBkaXJlY3RvcnkgXGZJZGlyZWN0b3J5XGZSIHRvIHNjYW4gZm9yIENSTCBmaWxlcyBpbgot K2hhcyBmb3JtYXQgKCRoYXNoLnIwKSB0byBjaGVjayBmb3IgdGhlIHZhbGlkaXR5IG9mIHRoZSBw ZWVyJ3MgY2VydGlmaWNhdGUuCi0rVGhpcyBvcHRpb24gaXMgbm90IG1hbmRhdG9yeSBmb3Igc2V0 dGluZyB1cCBhbiBFQVAtVExTIGNvbm5lY3Rpb24uCi0rQWxzbyBzZWUgdGhlIFxmQmNybFxmUiBv cHRpb24uCi0rLlRQCi0gLkIgZGVidWcKLSBFbmFibGVzIGNvbm5lY3Rpb24gZGVidWdnaW5nIGZh Y2lsaXRpZXMuCi0gSWYgdGhpcyBvcHRpb24gaXMgZ2l2ZW4sIHBwcGQgd2lsbCBsb2cgdGhlIGNv bnRlbnRzIG9mIGFsbAotQEAgLTU2MSw2ICs1ODUsMTIgQEAgdHJhbnNtaXR0ZWQgcGFja2V0cyBi ZSBwcmludGVkLiAgT24gbW9zdCBzeXN0ZW1zLCBtZXNzYWdlcyBwcmludGVkIGJ5Ci0gdGhlIGtl cm5lbCBhcmUgbG9nZ2VkIGJ5IHN5c2xvZygxKSB0byBhIGZpbGUgYXMgZGlyZWN0ZWQgaW4gdGhl Ci0gL2V0Yy9zeXNsb2cuY29uZiBjb25maWd1cmF0aW9uIGZpbGUuCi0gLlRQCi0rLkIga2V5IFxm SWtleWZpbGUKLSsoRUFQLVRMUykgVXNlIHRoZSBmaWxlIFxmSWtleWZpbGVcZlIgYXMgdGhlIHBy aXZhdGUga2V5IGZpbGUgKGluIFBFTQotK2Zvcm1hdCksIG5lZWRlZCBmb3Igc2V0dGluZyB1cCBh biBFQVAtVExTIGNvbm5lY3Rpb24uIFRoaXMgb3B0aW9uIGlzCi0rdXNlZCBvbiB0aGUgY2xpZW50 LXNpZGUgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgXGZCY2FcZlIgYW5kCi0rXGZCY2VydFxmUiBv cHRpb25zLgotKy5UUAotIC5CIGt0dW5lCi0gRW5hYmxlcyBwcHBkIHRvIGFsdGVyIGtlcm5lbCBz ZXR0aW5ncyBhcyBhcHByb3ByaWF0ZS4gIFVuZGVyIExpbnV4LAotIHBwcGQgd2lsbCBlbmFibGUg SVAgZm9yd2FyZGluZyAoaS5lLiBzZXQgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2ZvcndhcmQKLUBA IC03MjQsNiArNzU0LDkgQEAgbmFtZSB0byBcZkluYW1lXGZSLikKLSBEaXNhYmxlIEFkZHJlc3Mv Q29udHJvbCBjb21wcmVzc2lvbiBpbiBib3RoIGRpcmVjdGlvbnMgKHNlbmQgYW5kCi0gcmVjZWl2 ZSkuCi0gLlRQCi0rLkIgbmVlZC1wZWVyLWVhcAotKyhFQVAtVExTKSBSZXF1aXJlIHRoZSBwZWVy IHRvIHZlcmlmeSBvdXIgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCi0rLlRQCi0gLkIgbm9h dXRoCi0gRG8gbm90IHJlcXVpcmUgdGhlIHBlZXIgdG8gYXV0aGVudGljYXRlIGl0c2VsZi4gIFRo aXMgb3B0aW9uIGlzCi0gcHJpdmlsZWdlZC4KLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3Bw cGQvcHBwZC5oCi1pbmRleCA1NjdkNzAyMTgxY2EuLjE5NWNiZTNjNmZmYiAxMDA2NDQKLS0tLSBh L3BwcGQvcHBwZC5oCi0rKysgYi9wcHBkL3BwcGQuaAotQEAgLTMzOCw2ICszMzgsMTEgQEAgZXh0 ZXJuIGJvb2wJZHVtcF9vcHRpb25zOwkvKiBwcmludCBvdXQgb3B0aW9uIHZhbHVlcyAqLwotIGV4 dGVybiBib29sCWRyeXJ1bjsJCS8qIGNoZWNrIGV2ZXJ5dGhpbmcsIHByaW50IG9wdGlvbnMsIGV4 aXQgKi8KLSBleHRlcm4gaW50CWNoaWxkX3dhaXQ7CS8qICMgc2Vjb25kcyB0byB3YWl0IGZvciBj aGlsZHJlbiBhdCBlbmQgKi8KLSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotK2V4dGVybiBjaGFyCSpj cmxfZGlyOwotK2V4dGVybiBjaGFyCSpjcmxfZmlsZTsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAq LwotKwotICNpZmRlZiBNQVhPQ1RFVFMKLSBleHRlcm4gdW5zaWduZWQgaW50IG1heG9jdGV0czsJ ICAgICAvKiBNYXhpbXVtIG9jdGV0ZXMgcGVyIHNlc3Npb24gKGluIGJ5dGVzKSAqLwotIGV4dGVy biBpbnQgICAgICAgbWF4b2N0ZXRzX2RpcjsgICAgICAvKiBEaXJlY3Rpb24gOgotQEAgLTc1OCw2 ICs3NjMsMTAgQEAgZXh0ZXJuIGludCAoKmNoYXBfY2hlY2tfaG9vaykgX19QKCh2b2lkKSk7Ci0g ZXh0ZXJuIGludCAoKmNoYXBfcGFzc3dkX2hvb2spIF9fUCgoY2hhciAqdXNlciwgY2hhciAqcGFz c3dkKSk7Ci0gZXh0ZXJuIHZvaWQgKCptdWx0aWxpbmtfam9pbl9ob29rKSBfX1AoKHZvaWQpKTsK LSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotK2V4dGVybiBpbnQgKCplYXB0bHNfcGFzc3dkX2hvb2sp IF9fUCgoY2hhciAqdXNlciwgY2hhciAqcGFzc3dkKSk7Ci0rI2VuZGlmCi0rCi0gLyogTGV0IGEg cGx1Z2luIHNub29wIHNlbnQgYW5kIHJlY2VpdmVkIHBhY2tldHMuICBVc2VmdWwgZm9yIEwyVFAg Ki8KLSBleHRlcm4gdm9pZCAoKnNub29wX3JlY3ZfaG9vaykgX19QKCh1bnNpZ25lZCBjaGFyICpw LCBpbnQgbGVuKSk7Ci0gZXh0ZXJuIHZvaWQgKCpzbm9vcF9zZW5kX2hvb2spIF9fUCgodW5zaWdu ZWQgY2hhciAqcCwgaW50IGxlbikpOwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDA0 MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBh dGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVT LWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBiZjgzMjc4YTkuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDQwLXBw cGQtVXNlLW9wZW5zc2wtZm9yLXRoZS1ERVMtaW5zdGVhZC1vZi10aGUtbGliY3J5cHQucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotRnJvbTogPT9VVEYtOD9xP0phcm9zbGF2 PTIwPUM1PUEwa2FydmFkYT89IDxqc2thcnZhZEByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA2IEFw ciAyMDE4IDE0OjI3OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IFVzZSBvcGVuc3Ns IGZvciB0aGUgREVTIGluc3RlYWQgb2YgdGhlIGxpYmNyeXB0IC8gZ2xpYmMKLU1JTUUtVmVyc2lv bjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotW2h0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNr L3BwcC9jb21taXQvM2M3Yjg2MjI5ZjdiZDI2MDBkNzRkYjE0YjFmZTViMzg5NmJlMzg3NV0KLQot SXQgc2VlbXMgdGhlIGxhdGVzdCBnbGliYyAoaW4gRmVkb3JhIGdsaWJjLTIuMjcuOTAwMC0xMi5m YzI5KSBkcm9wcGVkCi1saWJjcnlwdC4gIFRoZSBsaWJ4Y3J5cHQgc3RhbmRhbG9uZSBwYWNrYWdl IGNhbiBiZSB1c2VkIGluc3RlYWQsIGJ1dAotaXQgZHJvcHBlZCB0aGUgb2xkIHNldGtleS9lbmNy eXB0IEFQSSB3aGljaCBwcHAgdXNlcyBmb3IgREVTLiAgVGhlcmUKLWlzIHN1cHBvcnQgZm9yIHVz aW5nIG9wZW5zc2wgaW4gcHBwY3J5cHQuYywgYnV0IGl0IGNvbnRhaW5zIHR5cG9zCi1wcmV2ZW50 aW5nIGl0IGZyb20gY29tcGlsaW5nIGFuZCBzZWVtcyB0byBiZSB3cml0dGVuIGZvciBhbiBhbmNp ZW50Ci1vcGVuc3NsIHZlcnNpb24uCi0KLVRoaXMgdXBkYXRlcyB0aGUgY29kZSB0byB1c2UgY3Vy cmVudCBvcGVuc3NsLgotCi1bcGF1bHVzQG96bGFicy5vcmcgLSB3cm90ZSB0aGUgY29tbWl0IGRl c2NyaXB0aW9uLCBmaXhlZCBjb21tZW50IGluCi0gTWFrZWZpbGUubGludXguXQotCi1TaWduZWQt b2ZmLWJ5OiBKYXJvc2xhdiDFoGthcnZhZGEgPGpza2FydmFkQHJlZGhhdC5jb20+Ci1TaWduZWQt b2ZmLWJ5OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+Ci0KLUltcG9ydGVkIGZy b20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFl bCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL01ha2VmaWxl LmxpbnV4IHwgIDcgKysrKy0tLQotIHBwcGQvcHBwY3J5cHQuYyAgICAgfCAxOCArKysrKysrKyst LS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9NYWtlZmlsZS5saW51eCBiL3BwcGQvTWFrZWZpbGUu bGludXgKLWluZGV4IDU4YTYzNGNlOGMzYi4uY2I5ZDRmOWRjZjIyIDEwMDY0NAotLS0tIGEvcHBw ZC9NYWtlZmlsZS5saW51eAotKysrIGIvcHBwZC9NYWtlZmlsZS5saW51eAotQEAgLTM1LDEwICsz NSwxMCBAQCBlbmRpZgotIENPUFRTID0gLU8yIC1waXBlIC1XYWxsIC1nCi0gTElCUyA9IC1sY3J5 cHRvCi0gCi0tIyBVbmNvbW1lbnQgdGhlIG5leHQgMiBsaW5lcyB0byBpbmNsdWRlIHN1cHBvcnQg Zm9yIE1pY3Jvc29mdCdzCi0rIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBpbmNsdWRlIHN1 cHBvcnQgZm9yIE1pY3Jvc29mdCdzCi0gIyBNUy1DSEFQIGF1dGhlbnRpY2F0aW9uIHByb3RvY29s LiAgQWxzbywgZWRpdCBwbHVnaW5zL3JhZGl1cy9NYWtlZmlsZS5saW51eC4KLSBDSEFQTVM9eQot LVVTRV9DUllQVD15Ci0rI1VTRV9DUllQVD15Ci0gIyBEb24ndCB1c2UgTVNMQU5NQU4gdW5sZXNz IHlvdSByZWFsbHkga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KLSAjTVNMQU5NQU49eQotICMgVW5j b21tZW50IHRoZSBuZXh0IGxpbmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNUFBFLiAgQ0hBUE1T IChhYm92ZSkgbXVzdAotQEAgLTEzOCw3ICsxMzgsOCBAQCBlbmRpZgotIAotIGlmZGVmIE5FRURE RVMKLSBpZm5kZWYgVVNFX0NSWVBUCi0tTElCUyAgICAgKz0gLWxkZXMgJChMSUJTKQotK0NGTEFH UyAgICs9IC1JL3Vzci9pbmNsdWRlL29wZW5zc2wKLStMSUJTICAgICArPSAtbGNyeXB0bwotIGVs c2UKLSBDRkxBR1MgICArPSAtRFVTRV9DUllQVD0xCi0gZW5kaWYKLWRpZmYgLS1naXQgYS9wcHBk L3BwcGNyeXB0LmMgYi9wcHBkL3BwcGNyeXB0LmMKLWluZGV4IDhiODViMTMyNzZhYi4uNmIzNTM3 NWVkYzVlIDEwMDY0NAotLS0tIGEvcHBwZC9wcHBjcnlwdC5jCi0rKysgYi9wcHBkL3BwcGNyeXB0 LmMKLUBAIC02NCw3ICs2NCw3IEBAIHVfY2hhciAqZGVzX2tleTsJLyogT1VUIDY0IGJpdCBERVMg a2V5IHdpdGggcGFyaXR5IGJpdHMgYWRkZWQgKi8KLSAJZGVzX2tleVs3XSA9IEdldDdCaXRzKGtl eSwgNDkpOwotIAotICNpZm5kZWYgVVNFX0NSWVBUCi0tCWRlc19zZXRfb2RkX3Bhcml0eSgoZGVz X2NibG9jayAqKWRlc19rZXkpOwotKwlERVNfc2V0X29kZF9wYXJpdHkoKERFU19jYmxvY2sgKilk ZXNfa2V5KTsKLSAjZW5kaWYKLSB9Ci0gCi1AQCAtMTU4LDI1ICsxNTgsMjUgQEAgdV9jaGFyICpj bGVhcjsJLyogT1VUIDggb2N0ZXRzICovCi0gfQotIAotICNlbHNlIC8qIFVTRV9DUllQVCAqLwot LXN0YXRpYyBkZXNfa2V5X3NjaGVkdWxlCWtleV9zY2hlZHVsZTsKLStzdGF0aWMgREVTX2tleV9z Y2hlZHVsZQlrZXlfc2NoZWR1bGU7Ci0gCi0gYm9vbAotIERlc1NldGtleShrZXkpCi0gdV9jaGFy ICprZXk7Ci0gewotLQlkZXNfY2Jsb2NrIGRlc19rZXk7Ci0rCURFU19jYmxvY2sgZGVzX2tleTsK LSAJTWFrZUtleShrZXksIGRlc19rZXkpOwotLQlkZXNfc2V0X2tleSgmZGVzX2tleSwga2V5X3Nj aGVkdWxlKTsKLSsJREVTX3NldF9rZXkoJmRlc19rZXksICZrZXlfc2NoZWR1bGUpOwotIAlyZXR1 cm4gKDEpOwotIH0KLSAKLSBib29sCi0tRGVzRW5jcnlwdChjbGVhciwga2V5LCBjaXBoZXIpCi0r RGVzRW5jcnlwdChjbGVhciwgY2lwaGVyKQotIHVfY2hhciAqY2xlYXI7CS8qIElOICA4IG9jdGV0 cyAqLwotIHVfY2hhciAqY2lwaGVyOwkvKiBPVVQgOCBvY3RldHMgKi8KLSB7Ci0tCWRlc19lY2Jf ZW5jcnlwdCgoZGVzX2NibG9jayAqKWNsZWFyLCAoZGVzX2NibG9jayAqKWNpcGhlciwKLS0JICAg IGtleV9zY2hlZHVsZSwgMSk7Ci0rCURFU19lY2JfZW5jcnlwdCgoREVTX2NibG9jayAqKWNsZWFy LCAoREVTX2NibG9jayAqKWNpcGhlciwKLSsJICAgICZrZXlfc2NoZWR1bGUsIDEpOwotIAlyZXR1 cm4gKDEpOwotIH0KLSAKLUBAIC0xODUsOCArMTg1LDggQEAgRGVzRGVjcnlwdChjaXBoZXIsIGNs ZWFyKQotIHVfY2hhciAqY2lwaGVyOwkvKiBJTiAgOCBvY3RldHMgKi8KLSB1X2NoYXIgKmNsZWFy OwkvKiBPVVQgOCBvY3RldHMgKi8KLSB7Ci0tCWRlc19lY2JfZW5jcnlwdCgoZGVzX2NibG9jayAq KWNpcGhlciwgKGRlc19jYmxvY2sgKiljbGVhciwKLS0JICAgIGtleV9zY2hlZHVsZSwgMCk7Ci0r CURFU19lY2JfZW5jcnlwdCgoREVTX2NibG9jayAqKWNpcGhlciwgKERFU19jYmxvY2sgKiljbGVh ciwKLSsJICAgICZrZXlfc2NoZWR1bGUsIDApOwotIAlyZXR1cm4gKDEpOwotIH0KLSAKZGlmZiAt LWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43L3NlcmllcyBiL3BhdGNoZXMvcHBwLTIuNC43L3Nlcmll cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFlYWYxOTg0Li4wMDAwMDAwMDAKLS0t IGEvcGF0Y2hlcy9wcHAtMi40Ljcvc2VyaWVzCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA QAotIyBnZW5lcmF0ZWQgYnkgZ2l0LXB0eC1wYXRjaGVzCi0jdGFnOmJhc2UgLS1zdGFydC1udW1i ZXIgMQotMDAwMS1hYm9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaAotMDAwMi1z Y3JpcHRzLUF2b2lkLWtpbGxpbmctd3JvbmctcHBwZC5wYXRjaAotMDAwMy1wcHBkLUZpeC1zaWdu LWV4dGVuc2lvbi13aGVuLWRpc3BsYXlpbmctYnl0ZXMtaW4tb2N0LnBhdGNoCi0wMDA0LVN1cHBy ZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAotMDAwNS1T ZW5kLVBBRFQtb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAotMDAwNi1wcHBkLWlweGNwLVByZXZl bnQtYnVmZmVyLW92ZXJydW4tb24tcmVtb3RlLXJvdXRlci1uLnBhdGNoCi0wMDA3LXBwcGQtRml4 LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaAotMDAwOC1wcHBkLUZpeC1jY3BfY2lsZW4tY2Fs Y3VsYXRlZC1zaXplLWlmLWJvdGgtZGVmbGF0ZV9jLnBhdGNoCi0wMDA5LUZpeC1hLXR5cG8taW4t Y29tbWVudC4tRGlmZi1mcm9tLVl1dWljaGktU29tZXlhLnBhdGNoCi0wMDEwLXBsb2ctY291bnQt b25seS1yZWxldmFudC1saW5lcy1mcm9tLXN5c2xvZy5wYXRjaAotMDAxMS1DaGFuZ2UtaW5jbHVk ZS1mcm9tLXN5cy1lcnJuby5oLXRvLWVycm5vLmgucGF0Y2gKLTAwMTItcHBwZC1hbGxvdy11c2Ut b2YtYXJiaXRyYXJ5LWludGVyZmFjZS1uYW1lcy5wYXRjaAotMDAxMy1wcHBkLVJlbW92ZS11bnVz ZWQtZGVjbGFyYXRpb24tb2YtdHR5bmFtZS5wYXRjaAotMDAxNC1wcHBkLVByb3ZpZGUtZXJyb3It aW1wbGVtZW50YXRpb24taW4tcHBwb2UtZGlzY292ZXJ5LnBhdGNoCi0wMDE1LXBwcG9lLWluY2x1 ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoCi0wMDE2LWFkYXB0aXZlX2Vj aG9zLnBhdGNoCi0wMDE3LU1ha2VmaWxlcy1jbGVhbnVwLnBhdGNoCi0wMDE4LUJ1Zy0zMDYyNjEt cHBwZC1kb2VzLW5vdC1wcm9wZXJseS1jbG9zZS1kZXYtcHBwLW9uLXAucGF0Y2gKLTAwMTktQnVn LTI4NDM4Mi1wcHAtbGlua3BpZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaAot MDAyMC1zdXBwb3J0LWJ1aWxkaW5nLXBwcGR1bXAtd2l0aC10aGUtc3lzdGVtLXpsaWIucGF0Y2gK LTAwMjEtZGlzYWJsZS11bm5lZWRlZC1jb2RlLWluLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAot MDAyMi1jb3NtZXRpYy1jbGVhbnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAotMDAyMy1w cHBvZV9ub2Fkcy5wYXRjaAotMDAyNC1tYWtlLV9QQVRIX0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxl LnBhdGNoCi0wMDI1LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaAotMDAyNi1wcHBv ZS1jdXN0b20taG9zdC11bmlxLXRhZy5wYXRjaAotMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0 ZS1vcHRpb24ucGF0Y2gKLTAwMjgtcHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2gKLTAwMjktYWRk LXN1cHBvcnQtZm9yLXRoZS1GcmFtZWQtTVRVLVJhZGl1cy1hdHRyaWJ1dGUucGF0Y2gKLTAwMzAt MDE4X2lwLXVwX29wdGlvbi5wYXRjaAotMDAzMS1wcHAtMi40LjItc3RyaXBNU2RvbWFpbi5wYXRj aAotMDAzMi1leHBvcnQtQ0FMTF9GSUxFLXRvLXRoZS1saW5rLXNjcmlwdHMucGF0Y2gKLTAwMzMt aXB2Ni1hY2NlcHQtcmVtb3RlLnBhdGNoCi0wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3Zl cmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2gKLTAwMzUtcmVzb2x2LmNvbmZfbm9fbG9n LnBhdGNoCi0wMDM2LURlYmlhbi1zcGVjaWZpYy1jaGFuZ2VzLnBhdGNoCi0wMDM3LUZpeC1idWZm ZXItb3ZlcmZsb3ctaW4tcmNfbWtzaWQucGF0Y2gKLTAwMzgtRUFQLVRMUy1hdXRoZW50aWNhdGlv bi1zdXBwb3J0LWZvci1QUFAucGF0Y2gKLTAwMzktUmVwbGFjZS12ZW5kb3JlZC1oYXNoLWZ1bmN0 aW9ucy13aXRoLWxpYmNyeXB0by5wYXRjaAotMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUt REVTLWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBhdGNoCi0jdGFnOnB0eCAtLXN0YXJ0LW51bWJl ciAxMDAKLTAxMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2gKLTAxMDEt cHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoCi0jIGIw ZTM0OWZkMzRiMmFhYzFhOWJhNGZmYjM4ZjQzYmUwICAtIGdpdC1wdHgtcGF0Y2hlcyBtYWdpYwpk aWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjkvMDAwMS1jb25maWd1cmUtQWxsb3ctY29tbWFz LWluLXRoZS1DRkxBR1MtMjIwLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDAwMS1jb25maWd1 cmUtQWxsb3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMC4uYzgzYjY0YjFjCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hl cy9wcHAtMi40LjkvMDAwMS1jb25maWd1cmUtQWxsb3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIw LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb206ID0/VVRGLTg/cT9KYXJvc2xhdj0yMD1DNT1B MGthcnZhZGE/PSA8anNrYXJ2YWRAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgOCBKYW4gMjAyMSAw Mjo0Mzo0NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFsbG93IGNvbW1hcyBp biB0aGUgQ0ZMQUdTICgjMjIwKQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAor CitJdCBhbGxvd3MgZS5nLiB0aGUgZm9sbG93aW5nOgorLi9jb25maWd1cmUgLS1jZmxhZ3M9Jy1X cCwtRF9GT1JUSUZZX1NPVVJDRT0yJworCitTaWduZWQtb2ZmLWJ5OiBKYXJvc2xhdiDFoGthcnZh ZGEgPGpza2FydmFkQHJlZGhhdC5jb20+CistLS0KKyBjb25maWd1cmUgfCAyICstCisgMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9j b25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGY5Nzc2NjNmZDhkYi4uYjBjM2QyYjQ5MTIyIDEw MDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0xMjMsNyArMTIzLDcg QEAgbWtta2YoKSB7CisgCWVjaG8gIiAgJDIgPD0gJDEiCisgCXNlZCAtZSAicyxAREVTVERJUkAs JERFU1RESVIsZyIgLWUgInMsQFNZU0NPTkZALCRTWVNDT05GLGciIFwKKyAJICAgIC1lICJzLEBD Uk9TU19DT01QSUxFQCwkQ1JPU1NfQ09NUElMRSxnIiAtZSAicyxAQ0NALCRDQyxnIiBcCistCSAg ICAtZSAicyxAQ0ZMQUdTQCwkQ0ZMQUdTLGciICQxID4kMgorKwkgICAgLWUgInN8QENGTEFHU0B8 JENGTEFHU3xnIiAkMSA+JDIKKyAgICAgZmkKKyB9CisgCmRpZmYgLS1naXQgYS9wYXRjaGVzL3Bw cC0yLjQuOS8wMDAyLXBwcGQtRml4LWNvbXBpbGF0aW9uLXdpdGgtb2xkZXItZ2xpYmMtb3Ita2Vy bmVsLWhlYWQucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMDAyLXBwcGQtRml4LWNvbXBpbGF0 aW9uLXdpdGgtb2xkZXItZ2xpYmMtb3Ita2VybmVsLWhlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwLi4zM2NmMDAyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRj aGVzL3BwcC0yLjQuOS8wMDAyLXBwcGQtRml4LWNvbXBpbGF0aW9uLXdpdGgtb2xkZXItZ2xpYmMt b3Ita2VybmVsLWhlYWQucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbTogcGFsaSA8NzE0MTg3 MStwYWxpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IE1vbiwgMTUgRmViIDIwMjEg MDc6NTQ6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwZDogRml4IGNvbXBpbGF0aW9uIHdp dGggb2xkZXIgZ2xpYmMgb3Iga2VybmVsIGhlYWRlcnMKKyAoIzI0OCkKK01JTUUtVmVyc2lvbjog MS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDhiaXQKKworZ2xpYmMgdmVyc2lvbnMgcHJpb3IgdG8gMi4yNCBkbyBu b3QgZGVmaW5lIFNPTF9ORVRMSU5LIGFuZCBsaW51eCBrZXJuZWwKK3ZlcnNpb25zIHByaW9yIHRv IDQuMyBkbyBub3QgZGVmaW5lIE5FVExJTktfQ0FQX0FDSy4gU28gYWRkIGZhbGxiYWNrCitkZWZp bml0aW9ucyBmb3IgdGhlc2UgbWFjcm9zIGludG8gcHBwZC9zeXMtbGludXguYyBmaWxlLgorCitB bHNvIGV4dGVuZCBkZXNjcmlwdGlvbiB3aHkgd2UgY2FsbCBTT0xfTkVUTElOSy9ORVRMSU5LX0NB UF9BQ0sgb3B0aW9uLgorCitTaWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwu b3JnPgorLS0tCisgcHBwZC9zeXMtbGludXguYyB8IDE4ICsrKysrKysrKysrKysrKysrLQorIDEg ZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1n aXQgYS9wcHBkL3N5cy1saW51eC5jIGIvcHBwZC9zeXMtbGludXguYworaW5kZXggODUwMzNkOTcx MjRmLi41MGM0ZjJkYWI0MDMgMTAwNjQ0CistLS0gYS9wcHBkL3N5cy1saW51eC5jCisrKysgYi9w cHBkL3N5cy1saW51eC5jCitAQCAtMTI1LDYgKzEyNSwxNCBAQAorICNpbmNsdWRlIDxsaW51eC9u ZXRsaW5rLmg+CisgI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51 eC9pZl9hZGRyLmg+CisrLyogZ2xpYmMgdmVyc2lvbnMgcHJpb3IgdG8gMi4yNCBkbyBub3QgZGVm aW5lIFNPTF9ORVRMSU5LICovCisrI2lmbmRlZiBTT0xfTkVUTElOSworKyNkZWZpbmUgU09MX05F VExJTksgMjcwCisrI2VuZGlmCisrLyogbGludXgga2VybmVsIHZlcnNpb25zIHByaW9yIHRvIDQu MyBkbyBub3QgZGVmaW5lL3N1cHBvcnQgTkVUTElOS19DQVBfQUNLICovCisrI2lmbmRlZiBORVRM SU5LX0NBUF9BQ0sKKysjZGVmaW5lIE5FVExJTktfQ0FQX0FDSyAxMAorKyNlbmRpZgorICNlbmRp ZgorIAorICNpbmNsdWRlICJwcHBkLmgiCitAQCAtMjg0Myw3ICsyODUxLDE1IEBAIHN0YXRpYyBp bnQgYXBwZW5kX3BlZXJfaXB2Nl9hZGRyZXNzKHVuc2lnbmVkIGludCBpZmFjZSwgc3RydWN0IGlu Nl9hZGRyICpsb2NhbF9hCisgICAgIGlmIChmZCA8IDApCisgICAgICAgICByZXR1cm4gMDsKKyAK Ky0gICAgLyogZG8gbm90IGFzayBmb3IgZXJyb3IgbWVzc2FnZSBjb250ZW50ICovCisrICAgIC8q CisrICAgICAqIFRlbGwga2VybmVsIHRvIG5vdCBzZW5kIHRvIHVzIHBheWxvYWQgb2YgYWNrbm93 bGVkZ21lbnQgZXJyb3IgbWVzc2FnZS4KKysgICAgICogTkVUTElOS19DQVBfQUNLIG9wdGlvbiBp cyBzdXBwb3J0ZWQgc2luY2UgTGludXgga2VybmVsIHZlcnNpb24gNC4zIGFuZAorKyAgICAgKiBv bGRlciBrZXJuZWwgdmVyc2lvbnMgYWx3YXlzIHNlbmQgZnVsbCBwYXlsb2FkIGluIGFja25vd2xl ZGdtZW50IG5ldGxpbmsKKysgICAgICogbWVzc2FnZS4gV2UgaWdub3JlIHBheWxvYWQgb2YgdGhp cyBtZXNzYWdlIGFzIHdlIG5lZWQgb25seSBlcnJvciBjb2RlLAorKyAgICAgKiB0byBjaGVjayBp ZiBvdXIgc2V0IHJlbW90ZSBwZWVyIGFkZHJlc3MgcmVxdWVzdCBzdWNjZWVkZWQgb3IgZmFpbGVk LgorKyAgICAgKiBTbyBpZ25vcmUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGZvbGxvd2luZyBzZXRz b2Nrb3B0KCkgY2FsbCBhcyBzZXR0aW5nCisrICAgICAqIG9wdGlvbiBORVRMSU5LX0NBUF9BQ0sg bWVhbnMgZm9yIHVzIGp1c3QgYSBrZXJuZWwgaGludCAvIG9wdGltaXphdGlvbi4KKysgICAgICov CisgICAgIG9uZSA9IDE7CisgICAgIHNldHNvY2tvcHQoZmQsIFNPTF9ORVRMSU5LLCBORVRMSU5L X0NBUF9BQ0ssICZvbmUsIHNpemVvZihvbmUpKTsKKyAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBw LTIuNC45LzAxMDAtY2hhdF9tYW4ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAwLWNoYXRf bWFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZGYxY2QzMTFi Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwMC1jaGF0X21hbi5wYXRj aApAQCAtMCwwICsxLDMxIEBACitGcm9tOiB1bmtub3duIGF1dGhvciA8dW5rbm93bi5hdXRob3JA ZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDE0IEp1biAyMDIxIDEzOjI0OjQxICswMjAwCitTdWJq ZWN0OiBbUEFUQ0hdIGNoYXRfbWFuCisKKy0tLQorIGNoYXQvY2hhdC44IHwgNSArKystLQorIDEg ZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9jaGF0L2NoYXQuOCBiL2NoYXQvY2hhdC44CitpbmRleCA2ZDEwODM2YzQyNDAuLjIyNzNh MTJkNmRjZiAxMDA2NDQKKy0tLSBhL2NoYXQvY2hhdC44CisrKysgYi9jaGF0L2NoYXQuOAorQEAg LTM1LDcgKzM1LDggQEAgU2V0IHRoZSB0aW1lb3V0IGZvciB0aGUgZXhwZWN0ZWQgc3RyaW5nIHRv IGJlIHJlY2VpdmVkLiBJZiB0aGUgc3RyaW5nCisgaXMgbm90IHJlY2VpdmVkIHdpdGhpbiB0aGUg dGltZSBsaW1pdCB0aGVuIHRoZSByZXBseSBzdHJpbmcgaXMgbm90Cisgc2VudC4gQW4gYWx0ZXJu YXRlIHJlcGx5IG1heSBiZSBzZW50IG9yIHRoZSBzY3JpcHQgd2lsbCBmYWlsIGlmIHRoZXJlCisg aXMgbm8gYWx0ZXJuYXRlIHJlcGx5IHN0cmluZy4gQSBmYWlsZWQgc2NyaXB0IHdpbGwgY2F1c2Ug dGhlCistXGZJY2hhdFxmUiBwcm9ncmFtIHRvIHRlcm1pbmF0ZSB3aXRoIGEgbm9uLXplcm8gZXJy b3IgY29kZS4KKytcZkljaGF0XGZSIHByb2dyYW0gdG8gdGVybWluYXRlIHdpdGggYSBub24temVy byBlcnJvciBjb2RlLiBZb3UgY2FuCisrYWxzbyB1c2UgdGhlIFRJTUVPVVQgc3RyaW5nIGluIG9y ZGVyIHRvIHNwZWNpZnkgdGhlIHRpbWVvdXQuCisgLlRQCisgLkIgXC1yIFxmSTxyZXBvcnQgZmls ZT4KKyBTZXQgdGhlIGZpbGUgZm9yIG91dHB1dCBvZiB0aGUgcmVwb3J0IHN0cmluZ3MuIElmIHlv dSB1c2UgdGhlIGtleXdvcmQKK0BAIC0zNDksNyArMzUwLDcgQEAgb2dpbjpcLVwtQlJFQUtcLVwt b2dpbjogcmVhbF9hY2NvdW50CisgLkxQCisgLlNIIFRJTUVPVVQKKyBUaGUgaW5pdGlhbCB0aW1l b3V0IHZhbHVlIGlzIDQ1IHNlY29uZHMuIFRoaXMgbWF5IGJlIGNoYW5nZWQgdXNpbmcgdGhlIFxm QlwtdFxmUgorLXBhcmFtZXRlci4KKytwYXJhbWV0ZXIuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5ICJU SU1FT1VUIDAiLgorIC5MUAorIFRvIGNoYW5nZSB0aGUgdGltZW91dCB2YWx1ZSBmb3IgdGhlIG5l eHQgZXhwZWN0IHN0cmluZywgdGhlIGZvbGxvd2luZworIGV4YW1wbGUgbWF5IGJlIHVzZWQ6CmRp ZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDIwLXN1cHBvcnQtYnVpbGRpbmctcHBwZHVt cC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC45LzAxMDEtcHBw ZHVtcF91c2VfemxpYi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDYyJQpyZW5hbWUgZnJvbSBwYXRj aGVzL3BwcC0yLjQuNy8wMDIwLXN1cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0 ZW0temxpYi5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDEwMS1wcHBkdW1wX3Vz ZV96bGliLnBhdGNoCmluZGV4IGVmODI2NWQ0My4uNWUwNDcwM2I5IDEwMDY0NAotLS0gYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDIwLXN1cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0 ZW0temxpYi5wYXRjaAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAxLXBwcGR1bXBfdXNlX3ps aWIucGF0Y2gKQEAgLTEsMTkgKzEsMjIgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJy aWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSArMDIw MAotU3ViamVjdDogW1BBVENIXSBzdXBwb3J0IGJ1aWxkaW5nIHBwcGR1bXAgd2l0aCB0aGUgc3lz dGVtIHpsaWIKK0Zyb206IHVua25vd24gYXV0aG9yIDx1bmtub3duLmF1dGhvckBleGFtcGxlLmNv bT4KK0RhdGU6IE1vbiwgMTQgSnVuIDIwMjEgMTM6MjQ6NDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRD SF0gcHBwZHVtcF91c2VfemxpYgogCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJp YW4udGFyLnh6CitzdXBwb3J0IGJ1aWxkaW5nIHBwcGR1bXAgd2l0aCB0aGUgc3lzdGVtIHpsaWIK IAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXgu ZGU+CitGb3J3YXJkZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9wdWxsLzE4 OQorYnV0IG5hY2tlZDogIml0IGNhdXNlZCBjb21waWxlIGZhaWx1cmVzIChvbiBGZWRvcmEgYXQg bGVhc3QpLCB3aGljaAorcmVtaW5kZWQgbWUgdGhhdCB0aGUgemxpYi5jIGhlcmUgaXMgbm90IHRo ZSBzYW1lIGFzIHVwc3RyZWFtOyBpdCBoYXMKK2V4dHJhIGZ1bmN0aW9ucyB0aGF0IEkgYWRkZWQg YSBsb25nIHRpbWUgYWdvLiIKIC0tLQogIHBwcGR1bXAvTWFrZWZpbGUubGludXggfCAyOCArKysr KysrKysrKysrKysrKysrKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9wcHBkdW1wL01ha2VmaWxlLmxpbnV4 IGIvcHBwZHVtcC9NYWtlZmlsZS5saW51eAotaW5kZXggNjVlNWMxNDkxNGZiLi44Nzc3N2ZhYjVl OTQgMTAwNjQ0CitpbmRleCBhOTQxODdmYTllMjkuLmRlN2U1NzRkMTBlMSAxMDA2NDQKIC0tLSBh L3BwcGR1bXAvTWFrZWZpbGUubGludXgKICsrKyBiL3BwcGR1bXAvTWFrZWZpbGUubGludXgKLUBA IC0yLDE4ICsyLDQyIEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAorQEAgLTYsMTUg KzYsMzkgQEAgREVTVERJUiA9ICQoSU5TVFJPT1QpQERFU1RESVJACiAgQklORElSID0gJChERVNU RElSKS9zYmluCiAgTUFORElSID0gJChERVNURElSKS9zaGFyZS9tYW4vbWFuOAogIApAQCAtMjEs MTAgKzI0LDcgQEAgaW5kZXggNjVlNWMxNDkxNGZiLi44Nzc3N2ZhYjVlOTQgMTAwNjQ0CiArRE9f QlNEX0NPTVBSRVNTPXkKICtIQVZFX1pMSUI9bgogKwotIENPUFRTPS1PMiAtZwotIENGTEFHUz0g JChDT1BUUykgLUkuLi9pbmNsdWRlL25ldAotIExERkxBR1M9JChMRE9QVFMpCi0gCisgQ0ZMQUdT ID0gJChDT1BUUykgLUkuLi9pbmNsdWRlL25ldAogLU9CSlMgPSBwcHBkdW1wLm8gYnNkLWNvbXAu byBkZWZsYXRlLm8gemxpYi5vCiArT0JKUyA9IHBwcGR1bXAubwogK0xJQlMgPQpAQCAtNDAsMTQg KzQwLDE0IEBAIGluZGV4IDY1ZTVjMTQ5MTRmYi4uODc3NzdmYWI1ZTk0IDEwMDY0NAogK2Vsc2UK ICtDRkxBR1MgKz0gLURET19ERUZMQVRFPTAKICtlbmRpZgotKworIAogK2lmZGVmIERPX0JTRF9D T01QUkVTUwogK0NGTEFHUyArPSAtRERPX0JTRF9DT01QUkVTUz0xCiArT0JKUyArPSBic2QtY29t cC5vCiArZWxzZQogK0NGTEFHUyArPSAtRERPX0JTRF9DT01QUkVTUz0wCiArZW5kaWYKLSAKKysg CiAgSU5TVEFMTD0gaW5zdGFsbAogIAogIGFsbDoJcHBwZHVtcApkaWZmIC0tZ2l0IGEvcGF0Y2hl cy9wcHAtMi40LjcvMDAyMS1kaXNhYmxlLXVubmVlZGVkLWNvZGUtaW4tdGhlLXBwcG9hdG0tcGx1 Z2luLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwMi1wcHBvYXRtX3Jlc29sdmVyX2xpZ2h0 LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIHBhdGNoZXMvcHBwLTIuNC43 LzAwMjEtZGlzYWJsZS11bm5lZWRlZC1jb2RlLWluLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaApy ZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDEwMi1wcHBvYXRtX3Jlc29sdmVyX2xpZ2h0LnBh dGNoCmluZGV4IDJmYjljNTU3My4uMWJkNzgyYTA0IDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDIxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0 Y2gKKysrIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwMi1wcHBvYXRtX3Jlc29sdmVyX2xpZ2h0LnBh dGNoCkBAIC0xLDYgKzEsOCBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCi1TdWJq ZWN0OiBbUEFUQ0hdIGRpc2FibGUgdW5uZWVkZWQgY29kZSBpbiB0aGUgcHBwb2F0bSBwbHVnaW4K K0Zyb206IHVua25vd24gYXV0aG9yIDx1bmtub3duLmF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6 IE1vbiwgMTQgSnVuIDIwMjEgMTM6MjQ6NDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwb2F0 bV9yZXNvbHZlcl9saWdodAorCitkaXNhYmxlIHVubmVlZGVkIGNvZGUgaW4gdGhlIHBwcG9hdG0g cGx1Z2luCiAKIFRoaXMgcGF0Y2ggaGFsdmVzIHRoZSBzaXplIG9mIHRoZSBQUFBvQSBwbHVnaW4g YnkgZGlzYWJsaW5nIGZlYXR1cmVzCiB3aGljaCBhcmUgbmV2ZXIgdXNlZCB3aXRoIG5vcm1hbCBE U0wgY29ubmVjdGlvbnMgKGkuZS4gcGFyc2luZyBvZiBRb1MKQEAgLTEwLDEyICsxMiw2IEBAIEl0 IGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBpbnN0YWxsIGltYWdlcyBhbmQgZW1iZWRkZWQgc3lz dGVtcy4KIEEgbmV4dCBzdGVwIGNvdWxkIGJlIHJlbW92aW5nIHRleHQycW9zLmMsIHRleHQyYXRt LmMsIG1pc2MuYyBhbmQgYW5zLmMKIGFuZCBlbmNvdXJhZ2UgdXNlcnMgaW50ZXJlc3RlZCBpbiB0 aGUgY29tcGxldGUgZmVhdHVyZXMgdG8gbGluayB0aGUKIHBsdWdpbiB3aXRoIHRoZSByZWFsIGxp YmF0bS4gSSByZWFsbHkgZG91YnQgYW55Ym9keSBjYXJlcywgYW55d2F5LgotCi0KLQotSW1wb3J0 ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2ZmLWJ5OiBN aWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KIC0tLQogIHBwcGQvcGx1 Z2lucy9wcHBvYXRtL01ha2VmaWxlLmxpbnV4IHwgNCArKysrCiAgcHBwZC9wbHVnaW5zL3BwcG9h dG0vcHBwb2F0bS5jICAgICAgfCA0ICsrKysKQEAgLTIzLDEwICsxOSwxMCBAQCBTaWduZWQtb2Zm LWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KICAzIGZpbGVz IGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9w cHBvYXRtL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGlu dXgKLWluZGV4IDAwMjYwM2M2Y2JlZi4uNzZkODFhY2VkNzBhIDEwMDY0NAoraW5kZXggZDNhODA4 NmI2OWVhLi4wMzZiMTkzNjM3ZGYgMTAwNjQ0CiAtLS0gYS9wcHBkL3BsdWdpbnMvcHBwb2F0bS9N YWtlZmlsZS5saW51eAogKysrIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGludXgK LUBAIC0yNSw5ICsyNSwxMyBAQCBpZmRlZiBIQVZFX0xJQkFUTQorQEAgLTI2LDkgKzI2LDEzIEBA IGlmZGVmIEhBVkVfTElCQVRNCiAgTElCUyA6PSAtbGF0bQogIGVsc2UKICBDRkxBR1MgKz0gLUku CkBAIC00MSwxMCArMzcsMTAgQEAgaW5kZXggMDAyNjAzYzZjYmVmLi43NmQ4MWFjZWQ3MGEgMTAw NjQ0CiAgIyoqKioqKioqKgogIGFsbDogJChQTFVHSU4pCiBkaWZmIC0tZ2l0IGEvcHBwZC9wbHVn aW5zL3BwcG9hdG0vcHBwb2F0bS5jIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0bS5jCi1p bmRleCBkNjkzMzUwYmM0NzMuLmE3NTYwZTlmYjBjNiAxMDA2NDQKK2luZGV4IDVhM2VjZDYxYjZh Mi4uOTBkMGM5YTg1ZDlmIDEwMDY0NAogLS0tIGEvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0 bS5jCiArKysgYi9wcHBkL3BsdWdpbnMvcHBwb2F0bS9wcHBvYXRtLmMKLUBAIC0xNDIsOCArMTQy LDEyIEBAIHN0YXRpYyBpbnQgY29ubmVjdF9wcHBvYXRtKHZvaWQpCitAQCAtMTQ1LDggKzE0NSwx MiBAQCBzdGF0aWMgaW50IGNvbm5lY3RfcHBwb2F0bSh2b2lkKQogIAlxb3MudHh0cC50cmFmZmlj X2NsYXNzID0gcW9zLnJ4dHAudHJhZmZpY19jbGFzcyA9IEFUTV9VQlI7CiAgCS8qIFRPRE86IHN1 cHBvcnQgc2ltcGxpZmllZCBRb1Mgc2V0dGluZyAqLwogIAlpZiAocW9zc3RyICE9IE5VTEwpCmRp ZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuOS8wMTAzLXBwcG9lX25vYWRzLnBhdGNoIGIvcGF0 Y2hlcy9wcHAtMi40LjkvMDEwMy1wcHBvZV9ub2Fkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLjY3NzU4MGJhNwotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMv cHBwLTIuNC45LzAxMDMtcHBwb2Vfbm9hZHMucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorRnJvbTog dW5rbm93biBhdXRob3IgPHVua25vd24uYXV0aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogTW9uLCAx NCBKdW4gMjAyMSAxMzoyNDo0MSArMDIwMAorU3ViamVjdDogW1BBVENIXSBwcHBvZV9ub2Fkcwor CistLS0KKyBwcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2luLmMgfCAyIC0tCisgMSBmaWxlIGNoYW5n ZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcHBwb2UvcGx1 Z2luLmMgYi9wcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2luLmMKK2luZGV4IGRlOWI4MTY2Y2U3Yi4u NThmYmRmOTViZTNmIDEwMDY0NAorLS0tIGEvcHBwZC9wbHVnaW5zL3BwcG9lL3BsdWdpbi5jCisr KysgYi9wcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2luLmMKK0BAIC00MTIsOCArNDEyLDYgQEAgcGx1 Z2luX2luaXQodm9pZCkKKyAgICAgfQorIAorICAgICBhZGRfb3B0aW9ucyhPcHRpb25zKTsKKy0K Ky0gICAgaW5mbygiUFBQb0UgcGx1Z2luIGZyb20gcHBwZCAlcyIsIFZFUlNJT04pOworIH0KKyAK KyB2b2lkIHBwcG9lX2NoZWNrX29wdGlvbnModm9pZCkKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBw LTIuNC45LzAxMDQtMDExX3NjcmlwdHNfcmVkaWFsZXIuZGlmZi5wYXRjaCBiL3BhdGNoZXMvcHBw LTIuNC45LzAxMDQtMDExX3NjcmlwdHNfcmVkaWFsZXIuZGlmZi5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmZmODQyNjQ5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bh dGNoZXMvcHBwLTIuNC45LzAxMDQtMDExX3NjcmlwdHNfcmVkaWFsZXIuZGlmZi5wYXRjaApAQCAt MCwwICsxLDE2MiBAQAorRnJvbTogdW5rbm93biBhdXRob3IgPHVua25vd24uYXV0aG9yQGV4YW1w bGUuY29tPgorRGF0ZTogTW9uLCAxNCBKdW4gMjAyMSAxMzoyNDo0MSArMDIwMAorU3ViamVjdDog W1BBVENIXSAwMTFfc2NyaXB0c19yZWRpYWxlci5kaWZmCisKKy0tLQorIHNjcmlwdHMvcmVkaWFs ZXIgfCAxMzMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMo LSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvcmVkaWFsZXIgYi9zY3JpcHRzL3JlZGlhbGVyCitp bmRleCA1YmJkZTRlOWRhNGUuLmMwYjc0OGFkMGU1MyAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvcmVk aWFsZXIKKysrKyBiL3NjcmlwdHMvcmVkaWFsZXIKK0BAIC0xLDk2ICsxLDY5IEBACisgIyEvYmlu L3NoCistIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworICMKKy0jIFRoZXNlIHBhcmFtZXRlcnMgY29udHJvbCB0aGUgYXR0 YWNrIGRpYWxpbmcgc2VxdWVuY2UuCisrIyBBIGNoYXRzY3JpcHQgdGhhdCB3aWxsIGF0dGVtcHQg dG8gZGlhbCBtdWx0aXBsZSBudW1iZXJzIGluIHNlcXVlbmNlLCB1bnRpbAorKyMgeW91IGdldCBj b25uZWN0ZWQuCisgIworLSMgTWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gcmVhY2ggdGhl IHRlbGVwaG9uZSBudW1iZXIocykKKy1NQVhfQVRURU1QVFM9MTAKKy0KKy0jIERlbGF5IGJldHdl ZW4gZWFjaCBvZiB0aGUgYXR0ZW1wdHMuIFRoaXMgaXMgYSBwYXJhbWV0ZXIgdG8gc2xlZXAKKy0j IHNvIHVzZSAiMTVzIiBmb3IgMTUgc2Vjb25kcywgIjFtIiBmb3IgMSBtaW51dGUsIGV0Yy4KKy1T TEVFUF9ERUxBWT0xNXMKKy0KKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBUbyB1c2U6IGVkaXQgL2V0Yy9wZWVy cy9wcm92aWRlciwgYW5kIGNoYW5nZSB0aGUgY29ubmVjdCBsaW5lIHRvIHJlYWQ6CisrIyBjb25u ZWN0ICIvdXNyL2xvY2FsL2Jpbi9yZWRpYWxlciIKKyAjCistIyBUaGlzIGlzIGEgbGlzdCBvZiB0 ZWxlcGhvbmUgbnVtYmVycy4gQWRkIG5ldyBudW1iZXJzIGlmIHlvdSB3aXNoCistIyBhbmQgc2Vl IHRoZSBmdW5jdGlvbiAnY2FsbGFsbCcgYmVsb3cgZm9yIHRoZSBkaWFsIHByb2Nlc3MuCistUEhP TkUxPTU1NS0xMjEyCistUEhPTkUyPTQxMQorKyMgU2VlIGJlbG93IGZvciBjb25maWd1cmF0aW9u LgorIAorLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKysjIFRoaXMgaXMgYSBsaXN0IG9mIGNoYXRzY3JpcHRzIHRvIHVz ZSB0byBnZXQgY29ubmVjdGVkLCBhbmQgKG9wdGlvbmFsKQorKyMgdGVsZXBob25lIG51bWJlcnMg dG8gY2FsbCBmb3IgZWFjaCBvZiB0aG9zZSBjaGF0c2NyaXB0cy4KKyAjCistIyBJZiB5b3UgdXNl IHRoZSBwcHAtb24gc2NyaXB0LCB0aGVuIHRoZXNlIGFyZSBwYXNzZWQgdG8gdGhpcyByb3V0aW5l CistIyBhdXRvbWF0aWNhbGx5LiBUaGVyZSBpcyBubyBuZWVkIHRvIGRlZmluZSB0aGVtIGhlcmUu IElmIG5vdCwgdGhlbgorLSMgeW91IHdpbGwgbmVlZCB0byBzZXQgdGhlIHZhbHVlcy4KKy0jCist QUNDT1VOVD1teV9hY2NvdW50X25hbWUKKy1QQVNTV09SRD1teV9wYXNzd29yZAorKyMgTm90ZSB0 aGF0IGluIHRoZSBjaGF0c2NyaXB0cywgeW91IG1heSB1c2UgI05VTUJFUiMsIHRoaXMgd2lsbCBi ZSByZXBsYWNlZAorKyMgd2l0aCB0aGUgbnVtYmVyIGl0IGlzIGNhbGxpbmcuIFlvdSBtaWdodCB3 YW50IHRvIHVzZSB0aGlzIHRvIG9ubHkgaGF2ZSBvbmUKKysjIGNoYXRzY3JpcHQgdGhhdCBpcyB1 c2VkIGZvciBhbGwgbnVtYmVycywgb3IgeW91IG1pZ2h0IG5lZWQgbXVsdGlwbGUKKysjIGNoYXRz Y3JpcHRzLgorIAorLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKy0jCistIyBGdW5jdGlvbiB0byBpbml0aWFsaXplIHRo ZSBtb2RlbSBhbmQgZW5zdXJlIHRoYXQgaXQgaXMgaW4gY29tbWFuZAorLSMgc3RhdGUuIFRoaXMg bWF5IG5vdCBiZSBuZWVkZWQsIGJ1dCBpdCBkb2Vzbid0IGh1cnQuCistIworLWZ1bmN0aW9uIGlu aXRpYWxpemUKKy17CistICAgIGNoYXQgLXYgVElNRU9VVCAzICcnIEFUICdPSy0rKytcYy1PSycK Ky0gICAgcmV0dXJuCistfQorK1BIT05FMT0xMjM0NTY3ODkKKytDSEFUMT0vZXRjL2NoYXRzY3Jp cHRzL3Byb3ZpZGVyCisgCistIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMKKy0jIFNjcmlwdCB0byBkaWFsIGEgdGVs ZXBob25lCistIworLWZ1bmN0aW9uIGNhbGxudW1iZXIKKy17CistY2hhdCAtdgkJCQkJCQlcCist CUFCT1JUCQknXG5CVVNZXHInCQkJXAorLQlBQk9SVAkJJ1xuTk8gQU5TV0VSXHInCQkJXAorLQlB Qk9SVAkJJ1xuUklOR0lOR1xyXG5cclxuUklOR0lOR1xyJwlcCistCScnCQlBVERUJDEJCQkJXAor LQlDT05ORUNUCQknJwkJCQlcCistCW9naW46LS1vZ2luOgkkQUNDT1VOVAkJCVwKKy0JYXNzd29y ZDoJJFBBU1NXT1JECistIworLSMgSWYgdGhlIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWwgdGhl biBlbmQgdGhlIHdob2xlIHNjcmlwdCB3aXRoIGEKKy0jIHN1Y2Nlc3MuCistIworLSAgICBpZiBb ICIkPyIgPSAiMCIgXTsgdGhlbgorLSAgICAgICBleGl0IDAKKy0gICAgZmkKKytQSE9ORTI9OTEy MzQ1Njc4CisrQ0hBVDI9L2V0Yy9jaGF0c2NyaXB0cy9wcm92aWRlcgorIAorLSAgICByZXR1cm4K Ky19CisrUEhPTkUzPTg5MTIzNDU2NworK0NIQVQzPS9ldGMvY2hhdHNjcmlwdHMvcHJvdmlkZXIK KyAKKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCistIworLSMgU2NyaXB0IHRvIGRpYWwgYW55IHRlbGVwaG9uZSBudW1i ZXIKKy0jCistZnVuY3Rpb24gY2FsbGFsbAorLXsKKy0jICAgZWNobyAiZGlhbGluZyBhdHRlbXB0 IG51bWJlcjogJDEiID4vZGV2L2NvbnNvbGUKKy0gICAgY2FsbG51bWJlciAkUEhPTkUxCistIyAg ICBjYWxsbnVtYmVyICRQSE9ORTIKKy19CisrUEhPTkU0PTc4OTEyMzQ1NgorK0NIQVQ0PS9ldGMv Y2hhdHNjcmlwdHMvcHJvdmlkZXIKKyAKKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistIworLSMgSW5pdGlhbGl6ZSB0 aGUgbW9kZW0gdG8gZW5zdXJlIHRoYXQgaXQgaXMgaW4gdGhlIGNvbW1hbmQgc3RhdGUKKy0jCist aW5pdGlhbGl6ZQorLWlmIFsgISAiJD8iID0gIjAiIF07IHRoZW4KKy0gICBleGl0IDEKKy1maQor K1BIT05FNT0wMDEyMzQ1NjcKKytDSEFUNT0vZXRjL2NoYXRzY3JpcHRzL3Byb3ZpZGVyCisgCisr IyBIb3cgbG9uZyB0byBzbGVlcCBiZXR3ZWVuIHJldHJpZXM6CisgIworLSMgRGlhbCB0ZWxlcGhv bmUgbnVtYmVycyB1bnRpbCBvbmUgYW5zd2VycworLSMKKysjIE5vdGUgdGhhdCB0aGlzIGlzIGEg cGFyYW1ldGVyIHRvIHNsZWVwIHNvIHVzZSAiMTVzIiBmb3IgMTUgc2Vjb25kcywKKysjICIxbSIg Zm9yIDEgbWludXRlLCBldGMKKytTTEVFUF9ERUxBWT0xcworKworKyMgVGhlIGNvZGUgYmVsb3cg ZG9lcyB0aGUgZGlhbGluZy4KKysKKyBhdHRlbXB0PTAKKyB3aGlsZSA6IDsgZG8KKy0gICAgYXR0 ZW1wdD1gZXhwciAkYXR0ZW1wdCArIDFgCistICAgIGNhbGxhbGwgJGF0dGVtcHQKKy0gICAgaWYg WyAiJGF0dGVtcHQiID0gIiRNQVhfQVRURU1QVFMiIF07IHRoZW4KKy0JZXhpdCAxCistICAgIGZp CQorLSAgICBzbGVlcCAiJFNMRUVQX0RFTEFZIgorKyAgICAgICAgYXR0ZW1wdD1gZXhwciAkYXR0 ZW1wdCArIDFgCisrICAgICAgICBOVU1CRVI9YGV2YWwgZWNobyAnJFBIT05FJyRhdHRlbXB0YAor KyAgICAgICAgQ0hBVD1gZXZhbCBlY2hvICckQ0hBVCckYXR0ZW1wdGAKKysgICAgICAgIGlmIFsg ISAiJENIQVQiIF07IHRoZW4KKysgICAgICAgICAgICAgICAgYXR0ZW1wdD0wCisrICAgICAgICBl bHNlCisrICAgICAgICAgICAgICAgIGxvZ2dlciAiRGlhbGluZyBhdHRlbXB0IG51bWJlcjogJGF0 dGVtcHQiCisrICAgICAgICAgICAgICAgIHNlZCBzLyNOVU1CRVIjLyROVU1CRVIvICRDSEFUID4v ZXRjL2NoYXRzY3JpcHRzL3RtcGNoYXQKKysgICAgICAgICAgICAgICAgL3Vzci9zYmluL2NoYXQg LXYgLWYgL2V0Yy9jaGF0c2NyaXB0cy90bXBjaGF0CisrICAgICAgICAgICAgICAgIHJtIC1mIC9l dGMvY2hhdHNjcmlwdHMvdG1wY2hhdAorKyAgICAgICAgICAgICAgICBjYXNlICQ/IGluCisrICAg ICAgICAgICAgICAgICAgICAgICAgMCkgbG9nZ2VyIENvbm5lY3Rpb24gZXN0YWJsaXNoZWQgOyBl eGl0IDA7OworKyAgICAgICAgICAgICAgICAgICAgICAgIDEpIGxvZ2dlciBjaGF0OiBleGl0IDEs IHNlZSBtYW5wYWdlIGZvciBkZXRhaWxzLiA7IGV4aXQgMTs7CisrICAgICAgICAgICAgICAgICAg ICAgICAgMikgbG9nZ2VyIGNoYXQ6IGV4aXQgMiwgc2VlIG1hbnBhZ2UgZm9yIGRldGFpbHMuIDsg ZXhpdCAyOzsKKysgICAgICAgICAgICAgICAgICAgICAgICAzKSBsb2dnZXIgY2hhdDogZXhpdCAz LCBzZWUgbWFucGFnZSBmb3IgZGV0YWlscy4gOzsKKysgICAgICAgICAgICAgICAgICAgICAgICA0 KSBsb2dnZXIgTGluZSBidXN5LiA7OworKyAgICAgICAgICAgICAgICAgICAgICAgIDUpIGxvZ2dl ciBObyBDYXJyaWVyLiA7OworKyAgICAgICAgICAgICAgICAgICAgICAgIDYpIGxvZ2dlciBBIGNh bGwgaXMgY29taW5nLiBFeGl0aW5nISA7IGV4aXQgMTs7CisrICAgICAgICAgICAgICAgICAgICAg ICAgNykgbG9nZ2VyIE5vIGRpYWx0b25lLiA7OworKyAgICAgICAgICAgICAgICAgICAgICAgIDgp IGxvZ2dlciBBbiBlcnJvciBvY2N1cmVkLiBFeGl0aW5nISA7IGV4aXQgMTs7CisrICAgICAgICAg ICAgICAgICAgICAgICAgKikgbG9nZ2VyIGNoYXQ6IGV4aXQgJD8sIHNlZSBtYW5wYWdlIGZvciBk ZXRhaWxzLiA7OworKyAgICAgICAgICAgICAgICBlc2FjCisrICAgICAgICAgICAgICAgIGxvZ2dl ciAiV2FpdGluZyAkU0xFRVBfREVMQVkgc2Vjb25kcyBiZWZvcmUgbmV4dCB0cnkuIgorKyAgICAg ICAgICAgICAgICBzbGVlcCAkU0xFRVBfREVMQVkKKysgICAgICAgIGZpCisgZG9uZQpkaWZmIC0t Z2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyOC1wcHAtMi4zLjExLW9lZG9kLmRpZi5wYXRjaCBi L3BhdGNoZXMvcHBwLTIuNC45LzAxMDUtcHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2gKc2ltaWxh cml0eSBpbmRleCA3NCUKcmVuYW1lIGZyb20gcGF0Y2hlcy9wcHAtMi40LjcvMDAyOC1wcHAtMi4z LjExLW9lZG9kLmRpZi5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDEwNS1wcHAt Mi4zLjExLW9lZG9kLmRpZi5wYXRjaAppbmRleCA4MTUxYzNiZTIuLjliNGNkYTBmMCAxMDA2NDQK LS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyOC1wcHAtMi4zLjExLW9lZG9kLmRpZi5wYXRjaAor KysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTA1LXBwcC0yLjMuMTEtb2Vkb2QuZGlmLnBhdGNoCkBA IC0xLDEwICsxLDE3IEBACi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKK0Zyb206IHVu a25vd24gYXV0aG9yIDx1bmtub3duLmF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMTQg SnVuIDIwMjEgMTM6MjQ6NDEgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gcHBwLTIuMy4xMS1vZWRv ZC5kaWYKIAotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egorVXBz dHJlYW0gc2FpZDoKIAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hA cGVuZ3V0cm9uaXguZGU+CisiCitIbW1tLCBkaWFsLW9uLWRlbWFuZCB3YXMgbmV2ZXIgdGVzdGVk IHdpdGggdGhlIHN5bmMgb3B0aW9uLCBhbmQgaW4gZmFjdCBJIGRvbid0Citrbm93IHdoYXQgZGV2 aWNlcyB3b3VsZCB1c2UgdGhhdCBvcHRpb24uCisKK1RvIGJlIGFjY2VwdGVkLCB0aGUgcGF0Y2gg d291bGQgbmVlZCBhIHNpZ24tb2ZmIGFuZCBhIGRlc2NyaXB0aW9uIHRoYXQKK2V4cGxhaW5lZCB0 aGUgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggLSBpbiBwYXJ0aWN1bGFyLCB3aGF0IHRoZSBsYXJnZSBs dW1wIG9mIGNvZGUKK2FkZGVkIHRvIGRlbWFuZF9yZXhtaXQoKSBpcyBkb2luZy4KKyIKIC0tLQog IHBwcGQvZGVtYW5kLmMgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogIHBwcGQvaXBjcC5jICAgfCAgMiArLQpAQCAtMTMsNyAr MjAsNyBAQCBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KICA0IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQogCiBkaWZmIC0tZ2l0IGEvcHBwZC9kZW1hbmQuYyBiL3BwcGQvZGVtYW5kLmMKLWluZGV4 IDVlNTc2NThlYTgzMS4uM2VkZGYzMDE2ZDk4IDEwMDY0NAoraW5kZXggMjg5YzlmOGZkZDU3Li40 YzYxNDQ0ZDM5NjggMTAwNjQ0CiAtLS0gYS9wcHBkL2RlbWFuZC5jCiArKysgYi9wcHBkL2RlbWFu ZC5jCiBAQCAtMzYsNiArMzYsOCBAQApAQCAtMzQsNyArNDEsNyBAQCBpbmRleCA1ZTU3NjU4ZWE4 MzEuLjNlZGRmMzAxNmQ5OCAxMDA2NDQKICAjaWZkZWYgUFBQX0ZJTFRFUgogICNpbmNsdWRlIDxw Y2FwLWJwZi5oPgogICNlbmRpZgotQEAgLTIyMSw2ICsyMjUsMTQgQEAgbG9vcF9jaGFycyhwLCBu KQorQEAgLTIxOCw2ICsyMjIsMTQgQEAgbG9vcF9jaGFycyh1bnNpZ25lZCBjaGFyICpwLCBpbnQg bikKICAgICAgaW50IGMsIHJ2OwogIAogICAgICBydiA9IDA7CkBAIC00OSwxNCArNTYsMTIgQEAg aW5kZXggNWU1NzY1OGVhODMxLi4zZWRkZjMwMTZkOTggMTAwNjQ0CiAgICAgIGZvciAoOyBuID4g MDsgLS1uKSB7CiAgCWMgPSAqcCsrOwogIAlpZiAoYyA9PSBQUFBfRkxBRykgewotQEAgLTI5OSwx NyArMzExLDEwMiBAQCBsb29wX2ZyYW1lKGZyYW1lLCBsZW4pCitAQCAtMjk0LDE2ICszMDYsMTAx IEBAIGxvb3BfZnJhbWUodW5zaWduZWQgY2hhciAqZnJhbWUsIGludCBsZW4pCiAgICogbG9vcGJh Y2ssIG5vdyB0aGF0IHRoZSByZWFsIHNlcmlhbCBsaW5rIGlzIHVwLgogICAqLwogIHZvaWQKLS1k ZW1hbmRfcmV4bWl0KHByb3RvKQotK2RlbWFuZF9yZXhtaXQocHJvdG8sIG5ld2lwKQotICAgICBp bnQgcHJvdG87Ci0rICAgIHVfaW50MzJfdCBuZXdpcDsKKy1kZW1hbmRfcmV4bWl0KGludCBwcm90 bykKKytkZW1hbmRfcmV4bWl0KGludCBwcm90bywgdV9pbnQzMl90IG5ld2lwKQogIHsKICAgICAg c3RydWN0IHBhY2tldCAqcGt0LCAqcHJldiwgKm5leHRwa3Q7CiArICAgIHVuc2lnbmVkIHNob3J0 IGNoZWNrc3VtOwpAQCAtNjksOSArNzQsMTEgQEAgaW5kZXggNWU1NzY1OGVhODMxLi4zZWRkZjMw MTZkOTggMTAwNjQ0CiAgICAgIHByZXYgPSBOVUxMOwogICAgICBwa3QgPSBwZW5kX3E7CiAgICAg IHBlbmRfcSA9IE5VTEw7CisrCiArICAgIHR2LnR2X3NlYyA9IDE7CiArICAgIHR2LnR2X3VzZWMg PSAwOwotKyAgICBzZWxlY3QoMCxOVUxMLE5VTEwsTlVMTCwmdHYpOwkvKiBTbGVlcCBmb3IgMSBT ZWNvbmRzICovCisrICAgIHNlbGVjdCgwLE5VTEwsTlVMTCxOVUxMLCZ0dik7CS8qIFNsZWVwIGZv ciAxIFNlY29uZCAqLworKwogICAgICBmb3IgKDsgcGt0ICE9IE5VTEw7IHBrdCA9IG5leHRwa3Qp IHsKICAJbmV4dHBrdCA9IHBrdC0+bmV4dDsKICAJaWYgKFBQUF9QUk9UT0NPTChwa3QtPmRhdGEp ID09IHByb3RvKSB7CkBAIC04Myw3ICs5MCw2IEBAIGluZGV4IDVlNTc2NThlYTgzMS4uM2VkZGYz MDE2ZDk4IDEwMDY0NAogKyAgICAgICAgICAgICAgICBpZiAoY2hlY2tzdW0gPT0gMHhGRkZGKSB7 CiArICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSA9IDA7CiArICAgICAgICAgICAgICAgIH0K LSsKICsgCiArICAgICAgICAgICAgICAgIGlmIChwa3QtPmRhdGFbMTNdID09IDE3KSB7CiArICAg ICAgICAgICAgICAgICAgICBwa3RfY2hlY2tzdW0gPSAgKigodW5zaWduZWQgc2hvcnQgKikgKHBr dC0+ZGF0YSsxMCtpcGhkcikpOwpAQCAtMTU0LDEwICsxNjAsMTAgQEAgaW5kZXggNWU1NzY1OGVh ODMxLi4zZWRkZjMwMTZkOTggMTAwNjQ0CiAgCSAgICBmcmVlKHBrdCk7CiAgCX0gZWxzZSB7CiBk aWZmIC0tZ2l0IGEvcHBwZC9pcGNwLmMgYi9wcHBkL2lwY3AuYwotaW5kZXggYzhmZTI3OWQ0ZWRl Li5kY2VjYTgwNzU0MmEgMTAwNjQ0CitpbmRleCAzMDJjYTQwYjRjODMuLjNhYzI2YTA4MDMyYSAx MDA2NDQKIC0tLSBhL3BwcGQvaXBjcC5jCiArKysgYi9wcHBkL2lwY3AuYwotQEAgLTE5MDQsNyAr MTkwNCw3IEBAIGlwY3BfdXAoZikKK0BAIC0xODUwLDcgKzE4NTAsNyBAQCBpcGNwX3VwKGZzbSAq ZikKICAJCSAgICBwcm94eV9hcnBfc2V0W2YtPnVuaXRdID0gMTsKICAKICAJfQpAQCAtMTY3LDEy ICsxNzMsMTIgQEAgaW5kZXggYzhmZTI3OWQ0ZWRlLi5kY2VjYTgwNzU0MmEgMTAwNjQ0CiAgCiAg ICAgIH0gZWxzZSB7CiBkaWZmIC0tZ2l0IGEvcHBwZC9pcHY2Y3AuYyBiL3BwcGQvaXB2NmNwLmMK LWluZGV4IDM1NmZmODRlYWQ0MS4uYzE2MDJmNDFjMjA2IDEwMDY0NAoraW5kZXggNDMxY2I2MjIx MWJmLi5hMzJiMDAwMmUxMGQgMTAwNjQ0CiAtLS0gYS9wcHBkL2lwdjZjcC5jCiArKysgYi9wcHBk L2lwdjZjcC5jCi1AQCAtMTIzMiw3ICsxMjMyLDcgQEAgaXB2NmNwX3VwKGYpCi0gCSAgICB9Ci0g CitAQCAtMTI1Myw3ICsxMjUzLDcgQEAgaXB2NmNwX3VwKGZzbSAqZikKKyAJCWlmIChzaWY2ZGVm YXVsdHJvdXRlKGYtPnVuaXQsIGdvLT5vdXJpZCwgaG8tPmhpc2lkKSkKKyAJCSAgICBkZWZhdWx0 X3JvdXRlX3NldFtmLT51bml0XSA9IDE7CiAgCX0KIC0JZGVtYW5kX3JleG1pdChQUFBfSVBWNik7 CiArCWRlbWFuZF9yZXhtaXQoUFBQX0lQVjYsMCk7CkBAIC0xODAsMTUgKzE4NiwxNSBAQCBpbmRl eCAzNTZmZjg0ZWFkNDEuLmMxNjAyZjQxYzIwNiAxMDA2NDQKICAKICAgICAgfSBlbHNlIHsKIGRp ZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCi1pbmRleCA3NDk1ZGY2NTdmZTku LmU2NTEwNmQ0YzEyNiAxMDA2NDQKK2luZGV4IDYxMjkwMmY1NWQwZC4uMTBhOTk3NzU5OGFhIDEw MDY0NAogLS0tIGEvcHBwZC9wcHBkLmgKICsrKyBiL3BwcGQvcHBwZC5oCi1AQCAtNTk0LDcgKzU5 NCw3IEBAIHZvaWQgZGVtYW5kX2NvbmYgX19QKCh2b2lkKSk7CS8qIGNvbmZpZyBpbnRlcmZhY2Uo cykgZm9yIGRlbWFuZC1kaWFsICovCi0gdm9pZCBkZW1hbmRfYmxvY2sgX19QKCh2b2lkKSk7CS8q IHNldCBhbGwgTlBzIHRvIHF1ZXVlIHVwIHBhY2tldHMgKi8KLSB2b2lkIGRlbWFuZF91bmJsb2Nr IF9fUCgodm9pZCkpOyAvKiBzZXQgYWxsIE5QcyB0byBwYXNzIHBhY2tldHMgKi8KLSB2b2lkIGRl bWFuZF9kaXNjYXJkIF9fUCgodm9pZCkpOyAvKiBzZXQgYWxsIE5QcyB0byBkaXNjYXJkIHBhY2tl dHMgKi8KLS12b2lkIGRlbWFuZF9yZXhtaXQgX19QKChpbnQpKTsJLyogcmV0cmFuc21pdCBzYXZl ZCBmcmFtZXMgZm9yIGFuIE5QICovCi0rdm9pZCBkZW1hbmRfcmV4bWl0IF9fUCgoaW50LCB1X2lu dDMyX3QpKTsgLyogcmV0cmFuc21pdCBzYXZlZCBmcmFtZXMgZm9yIGFuIE5QKi8KLSBpbnQgIGxv b3BfY2hhcnMgX19QKCh1bnNpZ25lZCBjaGFyICosIGludCkpOyAvKiBwcm9jZXNzIGNoYXJzIGZy b20gbG9vcGJhY2sgKi8KLSBpbnQgIGxvb3BfZnJhbWUgX19QKCh1bnNpZ25lZCBjaGFyICosIGlu dCkpOyAvKiBzaG91bGQgd2UgYnJpbmcgbGluayB1cD8gKi8KK0BAIC01OTgsNyArNTk4LDcgQEAg dm9pZCBkZW1hbmRfY29uZih2b2lkKTsJLyogY29uZmlnIGludGVyZmFjZShzKSBmb3IgZGVtYW5k LWRpYWwgKi8KKyB2b2lkIGRlbWFuZF9ibG9jayh2b2lkKTsJLyogc2V0IGFsbCBOUHMgdG8gcXVl dWUgdXAgcGFja2V0cyAqLworIHZvaWQgZGVtYW5kX3VuYmxvY2sodm9pZCk7IC8qIHNldCBhbGwg TlBzIHRvIHBhc3MgcGFja2V0cyAqLworIHZvaWQgZGVtYW5kX2Rpc2NhcmQodm9pZCk7IC8qIHNl dCBhbGwgTlBzIHRvIGRpc2NhcmQgcGFja2V0cyAqLworLXZvaWQgZGVtYW5kX3JleG1pdChpbnQp OwkvKiByZXRyYW5zbWl0IHNhdmVkIGZyYW1lcyBmb3IgYW4gTlAgKi8KKyt2b2lkIGRlbWFuZF9y ZXhtaXQoaW50LCB1X2ludDMyX3QpOwkvKiByZXRyYW5zbWl0IHNhdmVkIGZyYW1lcyBmb3IgYW4g TlAgKi8KKyBpbnQgIGxvb3BfY2hhcnModW5zaWduZWQgY2hhciAqLCBpbnQpOyAvKiBwcm9jZXNz IGNoYXJzIGZyb20gbG9vcGJhY2sgKi8KKyBpbnQgIGxvb3BfZnJhbWUodW5zaWduZWQgY2hhciAq LCBpbnQpOyAvKiBzaG91bGQgd2UgYnJpbmcgbGluayB1cD8gKi8KICAKZGlmZiAtLWdpdCBhL3Bh dGNoZXMvcHBwLTIuNC45LzAxMDYtMDEwX3NjcmlwdHNfUkVBRE1FLmRpZmYucGF0Y2ggYi9wYXRj aGVzL3BwcC0yLjQuOS8wMTA2LTAxMF9zY3JpcHRzX1JFQURNRS5kaWZmLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDk2ZjdkNjBiCi0tLSAvZGV2L251bGwKKysr IGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwNi0wMTBfc2NyaXB0c19SRUFETUUuZGlmZi5wYXRjaApA QCAtMCwwICsxLDMwIEBACitGcm9tOiB1bmtub3duIGF1dGhvciA8dW5rbm93bi5hdXRob3JAZXhh bXBsZS5jb20+CitEYXRlOiBNb24sIDE0IEp1biAyMDIxIDEzOjI0OjQxICswMjAwCitTdWJqZWN0 OiBbUEFUQ0hdIDAxMF9zY3JpcHRzX1JFQURNRS5kaWZmCisKKy0tLQorIHNjcmlwdHMvUkVBRE1F IHwgMTQgKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQor CitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9SRUFETUUgYi9zY3JpcHRzL1JFQURNRQoraW5kZXggMDBl MDMyY2E2YWQ0Li40MzljOTAwZDY1N2EgMTAwNjQ0CistLS0gYS9zY3JpcHRzL1JFQURNRQorKysr IGIvc2NyaXB0cy9SRUFETUUKK0BAIC0xNDEsMyArMTQxLDE3IEBAIG9wdGlvbi4gSW4gYWRkaXRp b24sIGFsbCBBU0NJSSBjb250cm9sIGNoYXJhY3RlcnMgWzB4MDAgdG8gMHgxZl0sIHBsdXMgMHhm ZiwKKyBhcmUgZXNjYXBlZC4gVGhpcyBtYXkgbmVlZCB0byBiZSBtb2RpZmllZCBkZXBlbmRpbmcg b24gdGhlIHNzaCAob3IgCisgcHNldWRvLXR0eSkgaW1wbGVtZW50YXRpb24gd2hpY2ggbWF5IGRp ZmZlciBhY3Jvc3MgcGxhdGZvcm1zLCBmb3IgZnVydGhlciAKKyBvcHRpbWl6YXRpb25zLgorKwor Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorKworKzEyLiBwb24sIHBvZmYgYW5kIGlwLXVwCisrCisrVGhlc2Ug YXJlIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIHBvbi9wb2ZmL2lwLXVwIHNjcmlwdHMgY29udHJp YnV0ZWQgYnkgWWFubgorK0RpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+LiBUaGV5IGFsbG93IHlv dSB0byBjYWxsICJwb24gcXVpY2siIHJlc3BlY3RpdmVseSAKKysicG9uIHF1aWNrIG15LWlzcCIg dG8ganVzdCBjYWxsIHRoZSBwcm92aWRlciBmb3IgcnVubmluZyB5b3UgaXAtdXAgc2NyaXB0cyBp bgorKy9ldGMvcHBwL2lwLXVwLmQuIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBjaGVjayBmb3IgaW5j b21pbmcvZmx1c2ggb3V0Z29pbmcgICAgCisrbWFpbCwgd2l0aG91dCB0aGUgbmVjZXNzYXJ5IGRl bGF5IGJlZm9yZSBoYW5ndXAgaW50cm9kdWNlZCBieSBkaWFsZCBvciBzdWNoLgorKworK1RoZXNl IHNjcmlwdHMgYnJlYWsgdGhlIHBvc3NpYmlsaXR5IHRvIGNvbm5lY3QgdG8gbXVsdGlwbGUgSVNQ cyBhdCBvbmNlLCBzbworK3RoZXkgYXJlIGluY2x1ZGVkIG9ubHkgaGVyZS4KKysKZGlmZiAtLWdp dCBhL3BhdGNoZXMvcHBwLTIuNC45LzAxMDctbm9fY3J5cHRfaGFjay5wYXRjaCBiL3BhdGNoZXMv cHBwLTIuNC45LzAxMDctbm9fY3J5cHRfaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLjQ0MTY3NWVkZAotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvcHBw LTIuNC45LzAxMDctbm9fY3J5cHRfaGFjay5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tOiB1 bmtub3duIGF1dGhvciA8dW5rbm93bi5hdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDE0 IEp1biAyMDIxIDEzOjI0OjQxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG5vX2NyeXB0X2hhY2sK KworVGhlIHVkZWIgcGFja2FnZSBkb2VzIG5vdCBoYXZlIGNyeXB0KDMpLgorVGhpcyBwYXRjaCBt YWtlcyBhdXRoZW50aWNhdGlvbiBhbHdheXMgZmFpbCwgc2luY2UgaXQgaXMgbm90IG5lZWRlZCBh bnl3YXkKK2ZvciBkaWFsb3V0LgorLS0tCisgcHBwZC9NYWtlZmlsZS5saW51eCB8IDQgKysrKwor IHBwcGQvYXV0aC5jICAgICAgICAgfCAyICsrCisgcHBwZC9zZXNzaW9uLmMgICAgICB8IDIgKysK KyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcHBwZC9N YWtlZmlsZS5saW51eCBiL3BwcGQvTWFrZWZpbGUubGludXgKK2luZGV4IDIyODM3YzUwNDE1ZS4u ZTUxN2Q1ZDNjMWRkIDEwMDY0NAorLS0tIGEvcHBwZC9NYWtlZmlsZS5saW51eAorKysrIGIvcHBw ZC9NYWtlZmlsZS5saW51eAorQEAgLTE0MywxMCArMTQzLDE0IEBAIENGTEFHUyAgICs9IC1ESEFT X1NIQURPVworICNMSUJTICAgICArPSAtbHNoYWRvdyAkKExJQlMpCisgZW5kaWYKKyAKKytpZmRl ZiBOT19DUllQVF9IQUNLCisrQ0ZMQUdTICs9IC1ETk9fQ1JZUFRfSEFDSworK2Vsc2UKKyBpZmVx ICgkKHNoZWxsIGVjaG8gJ1wjaW5jbHVkZSA8Y3J5cHQuaD4nIHwgJChDQykgLUUgLSA+L2Rldi9u dWxsIDI+JjEgJiYgZWNobyB5ZXMpLHllcykKKyBDRkxBR1MgICs9IC1ESEFWRV9DUllQVF9IPTEK KyBMSUJTCSs9IC1sY3J5cHQKKyBlbmRpZgorK2VuZGlmCisgCisgaWZkZWYgVVNFX0xJQlVUSUwK KyBDRkxBR1MJKz0gLURIQVZFX0xPR1dUTVA9MQorZGlmZiAtLWdpdCBhL3BwcGQvYXV0aC5jIGIv cHBwZC9hdXRoLmMKK2luZGV4IGIxMjcxYzRmODczOS4uNGZiNDA0ZTZiMGE5IDEwMDY0NAorLS0t IGEvcHBwZC9hdXRoLmMKKysrKyBiL3BwcGQvYXV0aC5jCitAQCAtMTUwOSw4ICsxNTA5LDEwIEBA IGNoZWNrX3Bhc3N3ZChpbnQgdW5pdCwKKyAJICAgIGlmIChzZWNyZXRbMF0gIT0gMCAmJiAhbG9n aW5fc2VjcmV0KSB7CisgCQkvKiBwYXNzd29yZCBnaXZlbiBpbiBwYXAtc2VjcmV0cyAtIG11c3Qg bWF0Y2ggKi8KKyAJCWlmIChjcnlwdHBhcCB8fCBzdHJjbXAocGFzc3dkLCBzZWNyZXQpICE9IDAp IHsKKysjaWZuZGVmIE5PX0NSWVBUX0hBQ0sKKyAJCSAgICBjaGFyICpjYnVmID0gY3J5cHQocGFz c3dkLCBzZWNyZXQpOworIAkJICAgIGlmICghY2J1ZiB8fCBzdHJjbXAoY2J1Ziwgc2VjcmV0KSAh PSAwKQorKyNlbmRpZgorIAkJCXJldCA9IFVQQVBfQVVUSE5BSzsKKyAJCX0KKyAJICAgIH0KK2Rp ZmYgLS1naXQgYS9wcHBkL3Nlc3Npb24uYyBiL3BwcGQvc2Vzc2lvbi5jCitpbmRleCAyZjFjODNl NTU1MmMuLjU3YzQyZDU2NjQ1MCAxMDA2NDQKKy0tLSBhL3BwcGQvc2Vzc2lvbi5jCisrKysgYi9w cHBkL3Nlc3Npb24uYworQEAgLTM0Myw4ICszNDMsMTAgQEAgc2Vzc2lvbl9zdGFydChjb25zdCBp bnQgZmxhZ3MsIGNvbnN0IGNoYXIgKnVzZXIsIGNvbnN0IGNoYXIgKnBhc3N3ZCwgY29uc3QgY2hh cgorIAkgKi8KKyAgICAgICAgIGlmIChwdy0+cHdfcGFzc3dkID09IE5VTEwgfHwgc3RybGVuKHB3 LT5wd19wYXNzd2QpIDwgMikKKyAgICAgICAgICAgICByZXR1cm4gU0VTU0lPTl9GQUlMRUQ7Cisr I2lmbmRlZiBOT19DUllQVF9IQUNLCisgCWNidWYgPSBjcnlwdChwYXNzd2QsIHB3LT5wd19wYXNz d2QpOworIAlpZiAoIWNidWYgfHwgc3RyY21wKGNidWYsIHB3LT5wd19wYXNzd2QpICE9IDApCisr I2VuZGlmCisgICAgICAgICAgICAgcmV0dXJuIFNFU1NJT05fRkFJTEVEOworICAgICB9CisgCmRp ZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM1LXJlc29sdi5jb25mX25vX2xvZy5wYXRj aCBiL3BhdGNoZXMvcHBwLTIuNC45LzAxMDgtcmVzb2x2LmNvbmZfbm9fbG9nLnBhdGNoCnNpbWls YXJpdHkgaW5kZXggNTYlCnJlbmFtZSBmcm9tIHBhdGNoZXMvcHBwLTIuNC43LzAwMzUtcmVzb2x2 LmNvbmZfbm9fbG9nLnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzL3BwcC0yLjQuOS8wMTA4LXJlc29s di5jb25mX25vX2xvZy5wYXRjaAppbmRleCBhZWE2YjIwODIuLjU2ZDQ0ZDg0YSAxMDA2NDQKLS0t IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAzNS1yZXNvbHYuY29uZl9ub19sb2cucGF0Y2gKKysrIGIv cGF0Y2hlcy9wcHAtMi40LjkvMDEwOC1yZXNvbHYuY29uZl9ub19sb2cucGF0Y2gKQEAgLTEsMTkg KzEsMTYgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRl PgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo1MCArMDIwMAorRnJvbTogdW5rbm93biBh dXRob3IgPHVua25vd24uYXV0aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogTW9uLCAxNCBKdW4gMjAy MSAxMzoyNDo0MSArMDIwMAogU3ViamVjdDogW1BBVENIXSByZXNvbHYuY29uZl9ub19sb2cKIAot SW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2Zm LWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KIC0tLQogIHBw cGQvaXBjcC5jIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvcHBwZC9pcGNwLmMgYi9wcHBkL2lwY3AuYwotaW5kZXgg ZDZlMGUyYTY5OWZlLi5iODFiMmZkMGEyOWYgMTAwNjQ0CitpbmRleCAzYWMyNmEwODAzMmEuLmNl MDAyMjYyYmIzNCAxMDA2NDQKIC0tLSBhL3BwcGQvaXBjcC5jCiArKysgYi9wcHBkL2lwY3AuYwot QEAgLTIxNTIsNyArMjE1Miw3IEBAIGNyZWF0ZV9yZXNvbHYocGVlcmRuczEsIHBlZXJkbnMyKQor QEAgLTIwOTMsNyArMjA5Myw3IEBAIGNyZWF0ZV9yZXNvbHYodV9pbnQzMl90IHBlZXJkbnMxLCB1 X2ludDMyX3QgcGVlcmRuczIpCiAgCiAgICAgIGYgPSBmb3BlbihfUEFUSF9SRVNPTFYsICJ3Iik7 CiAgICAgIGlmIChmID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAw MzYtRGViaWFuLXNwZWNpZmljLWNoYW5nZXMucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTA5 LXp6el9jb25maWcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gcGF0Y2hl cy9wcHAtMi40LjcvMDAzNi1EZWJpYW4tc3BlY2lmaWMtY2hhbmdlcy5wYXRjaApyZW5hbWUgdG8g cGF0Y2hlcy9wcHAtMi40LjkvMDEwOS16enpfY29uZmlnLnBhdGNoCmluZGV4IDk1NzZhZjExOC4u MjdlNzgxOGMwIDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM2LURlYmlhbi1zcGVj aWZpYy1jaGFuZ2VzLnBhdGNoCisrKyBiL3BhdGNoZXMvcHBwLTIuNC45LzAxMDktenp6X2NvbmZp Zy5wYXRjaApAQCAtMSwyMyArMSwyNSBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUwICswMjAw Ci1TdWJqZWN0OiBbUEFUQ0hdIERlYmlhbi1zcGVjaWZpYyBjaGFuZ2VzLgorRnJvbTogdW5rbm93 biBhdXRob3IgPHVua25vd24uYXV0aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogTW9uLCAxNCBKdW4g MjAyMSAxMzoyNDo0MSArMDIwMAorU3ViamVjdDogW1BBVENIXSB6enpfY29uZmlnCiAKLUltcG9y dGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTog TWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+CitEZWJpYW4tc3BlY2lm aWMgY2hhbmdlcy4KIC0tLQotIHBwcGQvTWFrZWZpbGUubGludXggICAgfCA2ICsrLS0tLQorIHBw cGQvTWFrZWZpbGUubGludXggICAgfCA2ICsrKy0tLQogIHBwcGQvcGF0aG5hbWVzLmggICAgICAg fCAyICstCiAgcHBwZC9wcHBkLmggICAgICAgICAgICB8IDIgKy0KICBwcHBkdW1wL01ha2VmaWxl LmxpbnV4IHwgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25z KC0pCiAKIGRpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9NYWtlZmlsZS5s aW51eAotaW5kZXggMTZiM2VlODc5NzkxLi41NTQ5MTQ1ZTU3OTEgMTAwNjQ0CitpbmRleCBlNTE3 ZDVkM2MxZGQuLmFiNTJjMWIyMDdmMyAxMDA2NDQKIC0tLSBhL3BwcGQvTWFrZWZpbGUubGludXgK ICsrKyBiL3BwcGQvTWFrZWZpbGUubGludXgKLUBAIC02MSwxNCArNjEsMTQgQEAgSEFWRV9NVUxU SUxJTks9eQotIFVTRV9UREI9eQorQEAgLTY0LDE3ICs2NCwxNyBAQCBVU0VfVERCPXkKKyAjIFVu Y29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSBUeXBlPW5vdGlmeSBzZXJ2aWNlcyBpbiBz eXN0ZW1kCisgIyBJZiBlbmFibGVkLCBhbmQgdGhlIHVzZXIgc2V0cyB0aGUgdXBfc2Rub3RpZnkg b3B0aW9uLCB0aGVuCisgIyBwcHBkIHdpbGwgbm90IGRldGFjaCBhbmQgd2lsbCBub3RpZnkgc3lz dGVtZCB3aGVuIHVwLgorLSNTWVNURU1EPXkKKytTWVNURU1EPXkKICAKICBIQVNfU0hBRE9XPXkK IC0jVVNFX1BBTT15CkBAIC0zMywyMyArMzUsMTEgQEAgaW5kZXggMTZiM2VlODc5NzkxLi41NTQ5 MTQ1ZTU3OTEgMTAwNjQ0CiAgCiAgIyBFbmFibGUgRUFQIFNSUC1TSEExIGF1dGhlbnRpY2F0aW9u IChyZXF1aXJlcyBsaWJzcnApCiAgI1VTRV9TUlA9eQotQEAgLTE3OCwxMSArMTc4LDkgQEAgTElC UwkrPSAtbGRsCi0gZW5kaWYKLSAKLSBpZmRlZiBGSUxURVIKLS1pZm5lcSAoJCh3aWxkY2FyZCAv dXNyL2luY2x1ZGUvcGNhcC1icGYuaCksKQotIExJQlMgICAgKz0gLWxwY2FwCi0gQ0ZMQUdTICAr PSAtRFBQUF9GSUxURVIKLSBlbmRpZgotLWVuZGlmCi0gCi0gaWZkZWYgSEFWRV9JTkVUNgotICAg ICAgUFBQRFNSQ1MgKz0gaXB2NmNwLmMgZXVpNjQuYwogZGlmZiAtLWdpdCBhL3BwcGQvcGF0aG5h bWVzLmggYi9wcHBkL3BhdGhuYW1lcy5oCi1pbmRleCBhMzNmMDQ2NmM5ZDYuLjQ2OTcyNjAxZmM5 MiAxMDA2NDQKK2luZGV4IDUyNGQ2MDhjZTEyYy4uMmRmNjEzNTRmNDBlIDEwMDY0NAogLS0tIGEv cHBwZC9wYXRobmFtZXMuaAogKysrIGIvcHBwZC9wYXRobmFtZXMuaAotQEAgLTI4LDcgKzI4LDcg QEAKK0BAIC0zMyw3ICszMyw3IEBACiAgI2RlZmluZSBfUEFUSF9BVVRIVVAJIF9ST09UX1BBVEgg Ii9ldGMvcHBwL2F1dGgtdXAiCiAgI2RlZmluZSBfUEFUSF9BVVRIRE9XTgkgX1JPT1RfUEFUSCAi L2V0Yy9wcHAvYXV0aC1kb3duIgogICNkZWZpbmUgX1BBVEhfVFRZT1BUCSBfUk9PVF9QQVRIICIv ZXRjL3BwcC9vcHRpb25zLiIKQEAgLTU5LDEwICs0OSwxMCBAQCBpbmRleCBhMzNmMDQ2NmM5ZDYu LjQ2OTcyNjAxZmM5MiAxMDA2NDQKICAjZGVmaW5lIF9QQVRIX1JFU09MVgkgX1JPT1RfUEFUSCAi L2V0Yy9wcHAvcmVzb2x2LmNvbmYiCiAgCiBkaWZmIC0tZ2l0IGEvcHBwZC9wcHBkLmggYi9wcHBk L3BwcGQuaAotaW5kZXggYjExNjcwNTg2MjQ0Li41NjdkNzAyMTgxY2EgMTAwNjQ0CitpbmRleCAx MGE5OTc3NTk4YWEuLmExNDQ4M2I3NmFjYyAxMDA2NDQKIC0tLSBhL3BwcGQvcHBwZC5oCiArKysg Yi9wcHBkL3BwcGQuaAotQEAgLTg3MCw3ICs4NzAsNyBAQCBleHRlcm4gdm9pZCAoKnNub29wX3Nl bmRfaG9vaykgX19QKCh1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGVuKSk7CitAQCAtODc5LDcgKzg3 OSw3IEBAIGV4dGVybiB2b2lkICgqc25vb3Bfc2VuZF9ob29rKSh1bnNpZ25lZCBjaGFyICpwLCBp bnQgbGVuKTsKICAgIHx8IGRlZmluZWQoREVCVUdDSEFQKSB8fCBkZWZpbmVkKERFQlVHKSB8fCBk ZWZpbmVkKERFQlVHSVBWNkNQKQogICNkZWZpbmUgTE9HX1BQUCBMT0dfTE9DQUwyCiAgI2Vsc2UK QEAgLTcyLDEwICs2MiwxMCBAQCBpbmRleCBiMTE2NzA1ODYyNDQuLjU2N2Q3MDIxODFjYSAxMDA2 NDQKICAjZW5kaWYgLyogTE9HX1BQUCAqLwogIAogZGlmZiAtLWdpdCBhL3BwcGR1bXAvTWFrZWZp bGUubGludXggYi9wcHBkdW1wL01ha2VmaWxlLmxpbnV4Ci1pbmRleCA4Nzc3N2ZhYjVlOTQuLjFl ZWVhZmUyMDExMSAxMDA2NDQKK2luZGV4IGRlN2U1NzRkMTBlMS4uMDRiMWMxMGIzNGM3IDEwMDY0 NAogLS0tIGEvcHBwZHVtcC9NYWtlZmlsZS5saW51eAogKysrIGIvcHBwZHVtcC9NYWtlZmlsZS5s aW51eAotQEAgLTIsOSArMiw5IEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAorQEAg LTYsOSArNiw5IEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAogIEJJTkRJUiA9ICQo REVTVERJUikvc2JpbgogIE1BTkRJUiA9ICQoREVTVERJUikvc2hhcmUvbWFuL21hbjgKICAKQEAg LTg1LDUgKzc1LDUgQEAgaW5kZXggODc3NzdmYWI1ZTk0Li4xZWVlYWZlMjAxMTEgMTAwNjQ0CiAt SEFWRV9aTElCPW4KICtIQVZFX1pMSUI9eQogIAotIENPUFRTPS1PMiAtZwotIENGTEFHUz0gJChD T1BUUykgLUkuLi9pbmNsdWRlL25ldAorIENGTEFHUyA9ICQoQ09QVFMpIC1JLi4vaW5jbHVkZS9u ZXQKKyBPQkpTID0gcHBwZHVtcC5vCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuOS8wMTEw LXBwcGQtc29uYW1lLWhhY2sucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTEwLXBwcGQtc29u YW1lLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5lYjcy MjEwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTEwLXBwcGQtc29u YW1lLWhhY2sucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbTogdW5rbm93biBhdXRob3IgPHVu a25vd24uYXV0aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogTW9uLCAxNCBKdW4gMjAyMSAxMzoyNDo0 MSArMDIwMAorU3ViamVjdDogW1BBVENIXSBwcHBkLXNvbmFtZS1oYWNrCisKKy0tLQorIHBwcGQv TWFrZWZpbGUubGludXggfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHBwZC9NYWtlZmlsZS5saW51eCBiL3Bw cGQvTWFrZWZpbGUubGludXgKK2luZGV4IGFiNTJjMWIyMDdmMy4uYjdmM2NkNzE3MjllIDEwMDY0 NAorLS0tIGEvcHBwZC9NYWtlZmlsZS5saW51eAorKysrIGIvcHBwZC9NYWtlZmlsZS5saW51eAor QEAgLTIzOCw2ICsyMzgsOCBAQCBlbmRpZgorIAorIElOU1RBTEw9IGluc3RhbGwKKyAKKytWRVJT SU9OID0gJChzaGVsbCBhd2sgLUYgJyInICcvVkVSU0lPTi8geyBwcmludCAkJDI7IH0nIHBhdGNo bGV2ZWwuaCkKKysKKyBhbGw6ICQoVEFSR0VUUykKKyAKKyBpbnN0YWxsOiBwcHBkCitAQCAtMjQ5 LDcgKzI1MSw4IEBAIGluc3RhbGw6IHBwcGQKKyAJJChJTlNUQUxMKSAtYyAtbSA0NDQgcHBwZC44 ICQoTUFORElSKQorIAorIHBwcGQ6ICQoUFBQRE9CSlMpCistCSQoQ0MpICQoQ0ZMQUdTKSAkKExE RkxBR1MpICQoTERGTEFHU19QTFVHSU4pIC1vIHBwcGQgJChQUFBET0JKUykgJChMSUJTKQorKwkk KENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKExERkxBR1NfUExVR0lOKSAtbyBwcHBkICQoUFBQ RE9CSlMpICQoTElCUykgXAorKwkJLVdsLC1zb25hbWUscHBwZC5zby4kKFZFUlNJT04pCisgCisg c3JwLWVudHJ5OglzcnAtZW50cnkuYworIAkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtbyAk QCBzcnAtZW50cnkuYyAkKExJQlMpCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM5 LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuOS8wMTExLXJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMucGF0 Y2gKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gcGF0Y2hlcy9wcHAtMi40LjcvMDAz OS1SZXBsYWNlLXZlbmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgtbGliY3J5cHRvLnBhdGNoCnJl bmFtZSB0byBwYXRjaGVzL3BwcC0yLjQuOS8wMTExLXJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5j dGlvbnMucGF0Y2gKaW5kZXggYTA4YWY1NDRhLi40YzAyMzQ1NTIgMTAwNjQ0Ci0tLSBhL3BhdGNo ZXMvcHBwLTIuNC43LzAwMzktUmVwbGFjZS12ZW5kb3JlZC1oYXNoLWZ1bmN0aW9ucy13aXRoLWxp YmNyeXB0by5wYXRjaAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTExLXJlcGxhY2UtdmVuZG9y ZWQtaGFzaC1mdW5jdGlvbnMucGF0Y2gKQEAgLTEsMzcgKzEsMjcgQEAKLUZyb206IE1pY2hhZWwg T2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAx OSAwODoxMTo1MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZXBsYWNlIHZlbmRvcmVkIGhhc2gg ZnVuY3Rpb25zIHdpdGggbGliY3J5cHRvCi0KLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJp YW4ub3JnLzgyNjYyNQotRm9yd2FyZGVkOiBubwotQXV0aG9yOiBDaHJpcyBCb290IDxib290Y0Bk ZWJpYW4ub3JnPgotTGFzdC1VcGRhdGU6IDIwMTctMTItMTcKK0Zyb206IHVua25vd24gYXV0aG9y IDx1bmtub3duLmF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMTQgSnVuIDIwMjEgMTM6 MjQ6NDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVwbGFjZS12ZW5kb3JlZC1oYXNoLWZ1bmN0 aW9ucwogCiBUaGlzIHBhdGNoIHN3aXRjaGVzIHBwcCdzIHVzZSBvZiB0aGUgZW1iZWRkZWQgaW1w bGVtZW50YXRpb25zIG9mIE1ENCwgTUQ1IGFuZAogU0hBMSBmb3IgdGhvc2UgZm91bmQgaW4gT3Bl blNTTCdzIGxpYmNyeXB0by4gVGhpcyBpcyBpbnNwaXJlZCBieSB0aGUgcGF0Y2ggdG8KIHN3aXRj aCB0byB0aGUgbGlibWQgdmVyc2lvbnMgb2YgdGhlc2UgZnVuY3Rpb25zLCBidXQgdXNpbmcgbGli Y3J5cHRvIGlzCiBwcmVmZXJhYmxlIGJvdGggZHVlIHRvIHRoZSBwYXRjaCBiZWluZyBzbGlnaHRs eSBsZXNzIGludmFzaXZlIGFuZCBhbHNvIGJlY2F1c2UKIG9mIG91ciB1c2Ugb2YgdGhlIEVBUC1U TFMgcGF0Y2ggd2hpY2ggcmVxdWlyZXMgT3BlblNTTC4KLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8y LjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmlj aCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgogLS0tCi0gcHBwZC9NYWtlZmlsZS5saW51eCAg ICAgICAgICB8ICAyNSArKy0tCisgcHBwZC9NYWtlZmlsZS5saW51eCAgICAgICAgICB8ICAyOCAr LS0tCiAgcHBwZC9jaGFwLW1kNS5jICAgICAgICAgICAgICB8ICAgMiArLQogIHBwcGQvY2hhcF9t cy5jICAgICAgICAgICAgICAgfCAgNDAgKystLS0tCi0gcHBwZC9lYXAuYyAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQotIHBwcGQvbWQ0LmMgICAgICAgICAgICAgICAgICAgfCAyOTkgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBwcHBkL21kNC5oICAgICAgICAg ICAgICAgICAgIHwgIDY0IC0tLS0tLS0tLQotIHBwcGQvbWQ1LmMgICAgICAgICAgICAgICAgICAg fCAzMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHBwcGQv bWQ1LmggICAgICAgICAgICAgICAgICAgfCAgNjggLS0tLS0tLS0tLQorIHBwcGQvZWFwLmMgICAg ICAgICAgICAgICAgICAgfCAgIDMgKy0KKyBwcHBkL21kNC5jICAgICAgICAgICAgICAgICAgIHwg MjkwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcHBwZC9tZDQu aCAgICAgICAgICAgICAgICAgICB8ICA1NSAtLS0tLS0tLQorIHBwcGQvbWQ1LmMgICAgICAgICAg ICAgICAgICAgfCAyOTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHBwcGQvbWQ1LmggICAgICAgICAgICAgICAgICAgfCAgNjUgLS0tLS0tLS0tLQogIHBwcGQv cGx1Z2lucy9yYWRpdXMvbWQ1LmMgICAgfCAgIDIgKy0KICBwcHBkL3BsdWdpbnMvcmFkaXVzL3Jh ZGl1cy5jIHwgICAyICstCiAgcHBwZC9wbHVnaW5zL3dpbmJpbmQuYyAgICAgICB8ICAgMiArLQot IHBwcGQvc2hhMS5jICAgICAgICAgICAgICAgICAgfCAxNzAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBwcHBkL3NoYTEuYyAgICAgICAgICAgICAgICAgIHwgMTcxIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBwcHBkL3NoYTEuaCAgICAgICAgICAgICAgICAgIHwgIDMxIC0tLS0tCi0gMTMg ZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgOTkwIGRlbGV0aW9ucygtKQorIDEzIGZp bGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDk2MyBkZWxldGlvbnMoLSkKICBkZWxldGUg bW9kZSAxMDA2NDQgcHBwZC9tZDQuYwogIGRlbGV0ZSBtb2RlIDEwMDY0NCBwcHBkL21kNC5oCiAg ZGVsZXRlIG1vZGUgMTAwNjQ0IHBwcGQvbWQ1LmMKQEAgLTQwLDEwICszMCwxMCBAQCBTaWduZWQt b2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KICBkZWxl dGUgbW9kZSAxMDA2NDQgcHBwZC9zaGExLmgKIAogZGlmZiAtLWdpdCBhL3BwcGQvTWFrZWZpbGUu bGludXggYi9wcHBkL01ha2VmaWxlLmxpbnV4Ci1pbmRleCA0YTExZDVmZWE3NDguLjU4YTYzNGNl OGMzYiAxMDA2NDQKK2luZGV4IGI3ZjNjZDcxNzI5ZS4uOTA2NDZkYzMxZTcwIDEwMDY0NAogLS0t IGEvcHBwZC9NYWtlZmlsZS5saW51eAogKysrIGIvcHBwZC9NYWtlZmlsZS5saW51eAotQEAgLTEx LDE2ICsxMSwxNiBAQCBJTkNESVIgPSAkKERFU1RESVIpL2luY2x1ZGUKK0BAIC0xNSwxNiArMTUs MTYgQEAgSU5DRElSID0gJChERVNURElSKS9pbmNsdWRlCiAgCiAgVEFSR0VUUyA9IHBwcGQKICAK QEAgLTY0LDE2ICs1NCwxNiBAQCBpbmRleCA0YTExZDVmZWE3NDguLjU4YTYzNGNlOGMzYiAxMDA2 NDQKICAJICAgZWNwLm8gYXV0aC5vIG9wdGlvbnMubyBkZW1hbmQubyB1dGlscy5vIHN5cy1saW51 eC5vIGlweGNwLm8gdHR5Lm8gXAogIAkgICBlYXAubyBjaGFwLW1kNS5vIHNlc3Npb24ubwogIAot QEAgLTMzLDcgKzMzLDcgQEAgZW5kaWYKLSAjIENDID0gZ2NjCi0gIwotIENPUFRTID0gLU8yIC1w aXBlIC1XYWxsIC1nCi0tTElCUyA9Ci0rTElCUyA9IC1sY3J5cHRvCitAQCAtMzQsNyArMzQsNyBA QCBpZmVxICguZGVwZW5kLCQod2lsZGNhcmQgLmRlcGVuZCkpCisgaW5jbHVkZSAuZGVwZW5kCisg ZW5kaWYKKyAKKy1MSUJTID0gLWxydAorK0xJQlMgPSAtbHJ0IC1sY3J5cHRvCiAgCi0gIyBVbmNv bW1lbnQgdGhlIG5leHQgMiBsaW5lcyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1pY3Jvc29mdCdz CisgIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1pY3Jv c29mdCdzCiAgIyBNUy1DSEFQIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sLiAgQWxzbywgZWRpdCBw bHVnaW5zL3JhZGl1cy9NYWtlZmlsZS5saW51eC4KLUBAIC05MSw4ICs5MSw4IEBAIExERkxBR1M9 JChMRE9QVFMpCitAQCAtOTgsOCArOTgsOCBAQCBDRkxBR1M9ICQoQ09QVFMpICQoQ09NUElMRV9G TEFHUykgJChJTkNMVURFX0RJUlMpICctRERFU1RESVI9IkBERVNURElSQCInCiAgaWZkZWYgQ0hB UE1TCiAgQ0ZMQUdTICAgKz0gLURDSEFQTVM9MQogIE5FRURERVM9eQpAQCAtODQsMTIgKzc0LDEx IEBAIGluZGV4IDRhMTFkNWZlYTc0OC4uNThhNjM0Y2U4YzNiIDEwMDY0NAogIGlmZGVmIE1TTEFO TUFOCiAgQ0ZMQUdTICAgKz0gLURNU0xBTk1BTj0xCiAgZW5kaWYKLUBAIC0xMDQsMjUgKzEwNCwx OCBAQCBlbmRpZgotICMgRUFQIFNSUC1TSEExCitAQCAtMTEzLDI2ICsxMTMsMTcgQEAgZW5kaWYK ICBpZmRlZiBVU0VfU1JQCiAgQ0ZMQUdTCSs9IC1EVVNFX1NSUCAtRE9QRU5TU0wgLUkvdXNyL2xv Y2FsL3NzbC9pbmNsdWRlCi0tTElCUwkrPSAtbHNycCAtTC91c3IvbG9jYWwvc3NsL2xpYiAtbGNy eXB0bwotK0xJQlMJKz0gLWxzcnAgLUwvdXNyL2xvY2FsL3NzbC9saWIKKyBMSUJTCSs9IC1sc3Jw IC1ML3Vzci9sb2NhbC9zc2wvbGliCistTkVFRENSWVBUT0xJQiA9IHkKICBUQVJHRVRTCSs9IHNy cC1lbnRyeQogIEVYVFJBSU5TVEFMTCA9ICQoSU5TVEFMTCkgLWMgLW0gNTU1IHNycC1lbnRyeSAk KEJJTkRJUikvc3JwLWVudHJ5CiAgTUFOUEFHRVMgKz0gc3JwLWVudHJ5LjgKQEAgLTEwNiwyNyAr OTUsNTAgQEAgaW5kZXggNGExMWQ1ZmVhNzQ4Li41OGE2MzRjZThjM2IgMTAwNjQ0CiAgCiAgIyBF QVAtVExTCiAgaWZkZWYgVVNFX0VBUFRMUwotIENGTEFHUyArPSAtRFVTRV9FQVBUTFM9MSAtSS91 c3Iva2VyYmVyb3MvaW5jbHVkZQotLUxJQlMgKz0gLWxzc2wgLWxjcnlwdG8KLStMSUJTICs9IC1s c3NsCisgQ0ZMQUdTICs9IC1EVVNFX0VBUFRMUz0xCisgTElCUyArPSAtbHNzbAorLU5FRURDUllQ VE9MSUIgPSB5CiAgUFBQRFNSQyArPSBlYXAtdGxzLmMKICBIRUFERVJTICs9IGVhcC10bHMuaAog IFBQUERPQkpTICs9IGVhcC10bHMubworQEAgLTE2MCw3ICsxNTEsNiBAQCBlbmRpZgorIGlmZGVm IE5FRURERVMKKyBpZm5kZWYgVVNFX0NSWVBUCisgQ0ZMQUdTICAgKz0gLUkkKHNoZWxsICQoQ0Mp IC0tcHJpbnQtc3lzcm9vdCkvdXNyL2luY2x1ZGUvb3BlbnNzbAorLU5FRURDUllQVE9MSUIgPSB5 CisgZWxzZQorIENGTEFHUyAgICs9IC1EVVNFX0NSWVBUPTEKKyBlbmRpZgorQEAgLTE2OCwxMCAr MTU4LDYgQEAgUFBQRE9CSlMgKz0gcHBwY3J5cHQubworIEhFQURFUlMgKz0gcHBwY3J5cHQuaAor IGVuZGlmCisgCistaWZkZWYgTkVFRENSWVBUT0xJQgorLUxJQlMgICAgICs9IC1sY3J5cHRvCist ZW5kaWYKKy0KKyAjIEZvciAiUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMiLCBzZWUg ZnRwLnJlZGhhdC5jb206L3B1Yi9wYW0vLgorIGlmZGVmIFVTRV9QQU0KKyBDRkxBR1MgICArPSAt RFVTRV9QQU0KIGRpZmYgLS1naXQgYS9wcHBkL2NoYXAtbWQ1LmMgYi9wcHBkL2NoYXAtbWQ1LmMK LWluZGV4IDI2OWI1MmNiMjA0MS4uN2Y3OTY3YTU2ODQyIDEwMDY0NAoraW5kZXggNzdkZDRlY2M3 MDU5Li5kODY1NjRhYTg2NWEgMTAwNjQ0CiAtLS0gYS9wcHBkL2NoYXAtbWQ1LmMKICsrKyBiL3Bw cGQvY2hhcC1tZDUuYwotQEAgLTM5LDcgKzM5LDcgQEAKLSAjaWZkZWYgVVNFX0VBUFRMUwotICNp bmNsdWRlICJlYXAtdGxzLmgiCi0gI2Vsc2UKLS0jaW5jbHVkZSAibWQ1LmgiCitAQCAtMzIsMTEg KzMyLDExIEBACisgCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4K ICsjaW5jbHVkZSA8b3BlbnNzbC9tZDUuaD4KLSAjZW5kaWYgLyogVVNFX0VBUFRMUyAqLworICNp bmNsdWRlICJwcHBkLmgiCisgI2luY2x1ZGUgImNoYXAtbmV3LmgiCisgI2luY2x1ZGUgImNoYXAt bWQ1LmgiCisgI2luY2x1ZGUgIm1hZ2ljLmgiCistI2luY2x1ZGUgIm1kNS5oIgogIAogICNkZWZp bmUgTUQ1X0hBU0hfU0laRQkJMTYKKyAjZGVmaW5lIE1ENV9NSU5fQ0hBTExFTkdFCTE2CiBkaWZm IC0tZ2l0IGEvcHBwZC9jaGFwX21zLmMgYi9wcHBkL2NoYXBfbXMuYwotaW5kZXggYzJiZDAwZjlj NmY3Li4xOWVkYjg1ZDI3YTggMTAwNjQ0CitpbmRleCBlNmI4NGYyMDNmYzMuLjY0ODQ4ZjIwZjY2 MCAxMDA2NDQKIC0tLSBhL3BwcGQvY2hhcF9tcy5jCiArKysgYi9wcHBkL2NoYXBfbXMuYwogQEAg LTg5LDggKzg5LDggQEAKQEAgLTE0MCw3ICsxNTIsNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5 ZWRiODVkMjdhOCAxMDA2NDQKICAjaW5jbHVkZSAicHBwY3J5cHQuaCIKICAjaW5jbHVkZSAibWFn aWMuaCIKICAKLUBAIC01MzUsOCArNTM1LDggQEAgQ2hhbGxlbmdlSGFzaCh1X2NoYXIgUGVlckNo YWxsZW5nZVsxNl0sIHVfY2hhciAqcmNoYWxsZW5nZSwKK0BAIC01MzYsOCArNTM2LDggQEAgQ2hh bGxlbmdlSGFzaCh1X2NoYXIgUGVlckNoYWxsZW5nZVsxNl0sIHVfY2hhciAqcmNoYWxsZW5nZSwK ICAJICAgICAgY2hhciAqdXNlcm5hbWUsIHVfY2hhciBDaGFsbGVuZ2VbOF0pCiAgICAgIAogIHsK QEAgLTE1MSw3ICsxNjMsNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2 NDQKICAgICAgY2hhcgkqdXNlcjsKICAKICAgICAgLyogcmVtb3ZlIGRvbWFpbiBmcm9tICJkb21h aW5cdXNlcm5hbWUiICovCi1AQCAtNTc0LDIzICs1NzQsMTEgQEAgYXNjaWkydW5pY29kZShjaGFy IGFzY2lpW10sIGludCBhc2NpaV9sZW4sIHVfY2hhciB1bmljb2RlW10pCitAQCAtNTc1LDIzICs1 NzUsMTEgQEAgYXNjaWkydW5pY29kZShjaGFyIGFzY2lpW10sIGludCBhc2NpaV9sZW4sIHVfY2hh ciB1bmljb2RlW10pCiAgc3RhdGljIHZvaWQKICBOVFBhc3N3b3JkSGFzaCh1X2NoYXIgKnNlY3Jl dCwgaW50IHNlY3JldF9sZW4sIHVfY2hhciBoYXNoW01ENF9TSUdOQVRVUkVfU0laRV0pCiAgewpA QCAtMTc4LDcgKzE5MCw3IEBAIGluZGV4IGMyYmQwMGY5YzZmNy4uMTllZGI4NWQyN2E4IDEwMDY0 NAogIAogIH0KICAKLUBAIC02NzEsOCArNjU5LDggQEAgR2VuZXJhdGVBdXRoZW50aWNhdG9yUmVz cG9uc2UodV9jaGFyIFBhc3N3b3JkSGFzaEhhc2hbTUQ0X1NJR05BVFVSRV9TSVpFXSwKK0BAIC02 NzIsOCArNjYwLDggQEAgR2VuZXJhdGVBdXRoZW50aWNhdG9yUmVzcG9uc2UodV9jaGFyIFBhc3N3 b3JkSGFzaEhhc2hbTUQ0X1NJR05BVFVSRV9TSVpFXSwKICAJICAweDZFIH07CiAgCiAgICAgIGlu dAkJaTsKQEAgLTE4OSw3ICsyMDEsNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdh OCAxMDA2NDQKICAgICAgdV9jaGFyCUNoYWxsZW5nZVs4XTsKICAKICAgICAgU0hBMV9Jbml0KCZz aGExQ29udGV4dCk7Ci1AQCAtNzI1LDggKzcxMyw4IEBAIEdlbmVyYXRlQXV0aGVudGljYXRvclJl c3BvbnNlUGxhaW4KK0BAIC03MjYsOCArNzE0LDggQEAgR2VuZXJhdGVBdXRoZW50aWNhdG9yUmVz cG9uc2VQbGFpbgogIHZvaWQKICBtcHBlX3NldF9rZXlzKHVfY2hhciAqcmNoYWxsZW5nZSwgdV9j aGFyIFBhc3N3b3JkSGFzaEhhc2hbTUQ0X1NJR05BVFVSRV9TSVpFXSkKICB7CkBAIC0yMDAsNyAr MjEyLDcgQEAgaW5kZXggYzJiZDAwZjljNmY3Li4xOWVkYjg1ZDI3YTggMTAwNjQ0CiAgCiAgICAg IFNIQTFfSW5pdCgmc2hhMUNvbnRleHQpOwogICAgICBTSEExX1VwZGF0ZSgmc2hhMUNvbnRleHQs IFBhc3N3b3JkSGFzaEhhc2gsIE1ENF9TSUdOQVRVUkVfU0laRSk7Ci1AQCAtNzY5LDkgKzc1Nyw5 IEBAIHZvaWQKK0BAIC03NzAsOSArNzU4LDkgQEAgdm9pZAogIG1wcGVfc2V0X2tleXMyKHVfY2hh ciBQYXNzd29yZEhhc2hIYXNoW01ENF9TSUdOQVRVUkVfU0laRV0sCiAgCSAgICAgICB1X2NoYXIg TlRSZXNwb25zZVsyNF0sIGludCBJc1NlcnZlcikKICB7CkBAIC0yMTQsMjQgKzIyNiwyNyBAQCBp bmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKICAgICAgdV9jaGFyIFNIQXBh ZDFbNDBdID0KICAJeyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLAogZGlmZiAtLWdpdCBhL3BwcGQvZWFwLmMgYi9wcHBkL2VhcC5jCi1p bmRleCAwMzI0MDdjM2RiYjIuLjM1ZDExMTAxNWZmMyAxMDA2NDQKK2luZGV4IDc5MTQ2NTU3YmQz Mi4uZDk4Nzg4OGQ5ZjIwIDEwMDY0NAogLS0tIGEvcHBwZC9lYXAuYwogKysrIGIvcHBwZC9lYXAu YwotQEAgLTcxLDcgKzcxLDcgQEAKLSAjaWZkZWYgVVNFX0VBUFRMUwotICNpbmNsdWRlICJlYXAt dGxzLmgiCi0gI2Vsc2UKLS0jaW5jbHVkZSAibWQ1LmgiCitAQCAtNTksOSArNTksMTAgQEAKKyAj aW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgCiArI2luY2x1ZGUgPG9w ZW5zc2wvbWQ1Lmg+Ci0gI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KKysKKyAjaW5jbHVkZSAicHBw ZC5oIgorICNpbmNsdWRlICJwYXRobmFtZXMuaCIKKy0jaW5jbHVkZSAibWQ1LmgiCisgI2luY2x1 ZGUgImVhcC5oIgogIAotICNpZmRlZiBVU0VfU1JQCisgI2lmZGVmIENIQVBNUwogZGlmZiAtLWdp dCBhL3BwcGQvbWQ0LmMgYi9wcHBkL21kNC5jCiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCitpbmRleCA0MmE5YjJlNzVkNmUuLjAwMDAw MDAwMDAwMAogLS0tIGEvcHBwZC9tZDQuYwogKysrIC9kZXYvbnVsbAotQEAgLTEsMjk5ICswLDAg QEAKK0BAIC0xLDI5MCArMCwwIEBACiAtLyoKIC0qKiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLSoqIG1kNC5jIC0t IEltcGxlbWVudGF0aW9uIG9mIE1ENCBNZXNzYWdlIERpZ2VzdCBBbGdvcml0aG0gICAgICAgICAg ICoqCkBAIC0zMjEsOCArMzM2LDcgQEAgaW5kZXggZDk0M2U4ODg1ZjJkLi4wMDAwMDAwMDAwMDAK IC0qKiBUaGlzIGlzIGEgdXNlci1jYWxsYWJsZSByb3V0aW5lLgogLSovCiAtdm9pZAotLU1ENFBy aW50KE1EcCkKLS1NRDRfQ1RYICpNRHA7CistTUQ0UHJpbnQoTUQ0X0NUWCAqTURwKQogLXsKIC0g IGludCBpLGo7CiAtICBmb3IgKGk9MDtpPDQ7aSsrKQpAQCAtMzM1LDggKzM0OSw3IEBAIGluZGV4 IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCiAtKiogVGhpcyBpcyBhIHVzZXItY2FsbGFibGUg cm91dGluZS4KIC0qLwogLXZvaWQKLS1NRDRJbml0KE1EcCkKLS1NRDRfQ1RYICpNRHA7CistTUQ0 SW5pdChNRDRfQ1RYICpNRHApCiAtewogLSAgaW50IGk7CiAtICBNRHAtPmJ1ZmZlclswXSA9IEkw OwpAQCAtMzU0LDkgKzM2Nyw3IEBAIGluZGV4IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCiAt KiogVGhpcyByb3V0aW5lIGlzIG5vdCB1c2VyLWNhbGxhYmxlLgogLSovCiAtc3RhdGljIHZvaWQK LS1NRGJsb2NrKE1EcCxYYikKLS1NRDRfQ1RYICpNRHA7Ci0tdW5zaWduZWQgY2hhciAqWGI7Cist TURibG9jayhNRDRfQ1RYICpNRHAsIHVuc2lnbmVkIGNoYXIgKlhiKQogLXsKIC0gIHJlZ2lzdGVy IHVuc2lnbmVkIGludCB0bXAsIEEsIEIsIEMsIEQ7CiAtICB1bnNpZ25lZCBpbnQgWFsxNl07CkBA IC00NDAsMTAgKzQ1MSw3IEBAIGluZGV4IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCiAtKiog aWYgZGVzaXJlZC4KIC0qLwogLXZvaWQKLS1NRDRVcGRhdGUoTURwLFgsY291bnQpCi0tTUQ0X0NU WCAqTURwOwotLXVuc2lnbmVkIGNoYXIgKlg7Ci0tdW5zaWduZWQgaW50IGNvdW50OworLU1ENFVw ZGF0ZShNRDRfQ1RYICpNRHAsIHVuc2lnbmVkIGNoYXIgKlgsIHVuc2lnbmVkIGludCBjb3VudCkK IC17CiAtICB1bnNpZ25lZCBpbnQgaSwgdG1wLCBiaXQsIGJ5dGUsIG1hc2s7CiAtICB1bnNpZ25l ZCBjaGFyIFhYWzY0XTsKQEAgLTUxMSw5ICs1MTksNyBAQCBpbmRleCBkOTQzZTg4ODVmMmQuLjAw MDAwMDAwMDAwMAogLSoqIEZpbmlzaCB1cCBNRDQgY29tcHV0YXRpb24gYW5kIHJldHVybiBtZXNz YWdlIGRpZ2VzdC4KIC0qLwogLXZvaWQKLS1NRDRGaW5hbChidWYsIE1EKQotLXVuc2lnbmVkIGNo YXIgKmJ1ZjsKLS1NRDRfQ1RYICpNRDsKKy1NRDRGaW5hbCh1bnNpZ25lZCBjaGFyICpidWYsIE1E NF9DVFggKk1EKQogLXsKIC0gIGludCBpLCBqOwogLSAgdW5zaWduZWQgaW50IHc7CkBAIC01MzMs MTAgKzUzOSwxMCBAQCBpbmRleCBkOTQzZTg4ODVmMmQuLjAwMDAwMDAwMDAwMAogLSoqKioqKioq KioqKioqKioqKioqKioqKioqKiooY3V0KSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogZGlmZiAtLWdpdCBhL3BwcGQvbWQ0LmggYi9wcHBkL21kNC5oCiBkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDgwZThmOWEyYWNjYS4uMDAwMDAwMDAwMDAwCitpbmRleCBiNmZj M2Y1NjFmYWEuLjAwMDAwMDAwMDAwMAogLS0tIGEvcHBwZC9tZDQuaAogKysrIC9kZXYvbnVsbAot QEAgLTEsNjQgKzAsMCBAQAorQEAgLTEsNTUgKzAsMCBAQAogLQogLS8qCiAtKiogKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKQEAgLTU0NywxNSArNTUzLDYgQEAgaW5kZXggODBlOGY5YTJhY2NhLi4wMDAwMDAwMDAwMDAK IC0qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgogLSovCiAtCi0tI2lmbmRlZiBfX1AKLS0jIGlmIGRlZmluZWQoX19T VERDX18pIHx8IGRlZmluZWQoX19HTlVDX18pCi0tIyAgZGVmaW5lIF9fUCh4KSB4Ci0tIyBlbHNl Ci0tIyAgZGVmaW5lIF9fUCh4KSAoKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0KIC0vKiBNRHN0 cnVjdCBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgbWVzc2FnZSBkaWdlc3QgY29tcHV0YXRp b24uCiAtKi8KIC10eXBlZGVmIHN0cnVjdCB7CkBAIC01NjgsNyArNTY1LDcgQEAgaW5kZXggODBl OGY5YTJhY2NhLi4wMDAwMDAwMDAwMDAKIC0qKiBJbml0aWFsaXplIHRoZSBNRDRfQ1RYIHByZXBh dG9yeSB0byBkb2luZyBhIG1lc3NhZ2UgZGlnZXN0CiAtKiogY29tcHV0YXRpb24uCiAtKi8KLS1l eHRlcm4gdm9pZCBNRDRJbml0IF9fUCgoTUQ0X0NUWCAqTUQpKTsKKy1leHRlcm4gdm9pZCBNRDRJ bml0KE1ENF9DVFggKk1EKTsKIC0KIC0vKiBNRDRVcGRhdGUoTUQsWCxjb3VudCkKIC0qKiBJbnB1 dDogWCAtLSBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgdW5zaWduZWQgY2hhcmFjdGVycy4KQEAg LTU4Miw3ICs1NzksNyBAQCBpbmRleCA4MGU4ZjlhMmFjY2EuLjAwMDAwMDAwMDAwMAogLSoqIGV2 ZXJ5IE1EIGNvbXB1dGF0aW9uIHNob3VsZCBlbmQgd2l0aCBvbmUgY2FsbCB0byBNRDRVcGRhdGUg d2l0aCBhCiAtKiogY291bnQgbGVzcyB0aGFuIDUxMi4gIFplcm8gaXMgT0sgZm9yIGEgY291bnQu CiAtKi8KLS1leHRlcm4gdm9pZCBNRDRVcGRhdGUgX19QKChNRDRfQ1RYICpNRCwgdW5zaWduZWQg Y2hhciAqWCwgdW5zaWduZWQgaW50IGNvdW50KSk7CistZXh0ZXJuIHZvaWQgTUQ0VXBkYXRlKE1E NF9DVFggKk1ELCB1bnNpZ25lZCBjaGFyICpYLCB1bnNpZ25lZCBpbnQgY291bnQpOwogLQogLS8q IE1ENFByaW50KE1EKQogLSoqIFByaW50cyBtZXNzYWdlIGRpZ2VzdCBidWZmZXIgTUQgYXMgMzIg aGV4YWRlY2ltYWwgZGlnaXRzLgpAQCAtNTkwLDIzICs1ODcsMjMgQEAgaW5kZXggODBlOGY5YTJh Y2NhLi4wMDAwMDAwMDAwMDAKIC0qKiBvZiBidWZmZXJbM10uCiAtKiogRWFjaCBieXRlIGlzIHBy aW50ZWQgd2l0aCBoaWdoLW9yZGVyIGhleGFkZWNpbWFsIGRpZ2l0IGZpcnN0LgogLSovCi0tZXh0 ZXJuIHZvaWQgTUQ0UHJpbnQgX19QKChNRDRfQ1RYICopKTsKKy1leHRlcm4gdm9pZCBNRDRQcmlu dChNRDRfQ1RYICopOwogLQogLS8qIE1ENEZpbmFsKGJ1ZiwgTUQpCiAtKiogUmV0dXJucyBtZXNz YWdlIGRpZ2VzdCBmcm9tIE1EIGFuZCB0ZXJtaW5hdGVzIHRoZSBtZXNzYWdlCiAtKiogZGlnZXN0 IGNvbXB1dGF0aW9uLgogLSovCi0tZXh0ZXJuIHZvaWQgTUQ0RmluYWwgX19QKCh1bnNpZ25lZCBj aGFyICosIE1ENF9DVFggKikpOworLWV4dGVybiB2b2lkIE1ENEZpbmFsKHVuc2lnbmVkIGNoYXIg KiwgTUQ0X0NUWCAqKTsKIC0KIC0vKgogLSoqIEVuZCBvZiBtZDQuaAogLSoqKioqKioqKioqKioq KioqKioqKioqKioqKiooY3V0KSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwog ZGlmZiAtLWdpdCBhL3BwcGQvbWQ1LmMgYi9wcHBkL21kNS5jCiBkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDZmOGY3MjA3YzU5Mi4uMDAwMDAwMDAwMDAwCitpbmRleCBmNzk4OGU2NDE0 MWEuLjAwMDAwMDAwMDAwMAogLS0tIGEvcHBwZC9tZDUuYwogKysrIC9kZXYvbnVsbAotQEAgLTEs MzExICswLDAgQEAKK0BAIC0xLDI5OSArMCwwIEBACiAtCiAtCiAtLyoKQEAgLTY0Miw4ICs2Mzks NiBAQCBpbmRleCA2ZjhmNzIwN2M1OTIuLjAwMDAwMDAwMDAwMAogLSAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog LSAqLwogLQotLSNpZm5kZWYgVVNFX0VBUFRMUwotLQogLSNpbmNsdWRlIDxzdHJpbmcuaD4KIC0j aW5jbHVkZSAibWQ1LmgiCiAtCkBAIC03MTMsOCArNzA4LDcgQEAgaW5kZXggNmY4ZjcyMDdjNTky Li4wMDAwMDAwMDAwMDAKIC0vKiBUaGUgcm91dGluZSBNRDVfSW5pdCBpbml0aWFsaXplcyB0aGUg bWVzc2FnZS1kaWdlc3QgY29udGV4dAogLSAgIG1kQ29udGV4dC4gQWxsIGZpZWxkcyBhcmUgc2V0 IHRvIHplcm8uCiAtICovCi0tdm9pZCBNRDVfSW5pdCAobWRDb250ZXh0KQotLU1ENV9DVFggKm1k Q29udGV4dDsKKy12b2lkIE1ENV9Jbml0IChNRDVfQ1RYICptZENvbnRleHQpCiAtewogLSAgbWRD b250ZXh0LT5pWzBdID0gbWRDb250ZXh0LT5pWzFdID0gKFVJTlQ0KTA7CiAtCkBAIC03MzAsMTAg KzcyNCw3IEBAIGluZGV4IDZmOGY3MjA3YzU5Mi4uMDAwMDAwMDAwMDAwCiAtICAgYWNjb3VudCBm b3IgdGhlIHByZXNlbmNlIG9mIGVhY2ggb2YgdGhlIGNoYXJhY3RlcnMgaW5CdWZbMC4uaW5MZW4t MV0KIC0gICBpbiB0aGUgbWVzc2FnZSB3aG9zZSBkaWdlc3QgaXMgYmVpbmcgY29tcHV0ZWQuCiAt ICovCi0tdm9pZCBNRDVfVXBkYXRlIChtZENvbnRleHQsIGluQnVmLCBpbkxlbikKLS1NRDVfQ1RY ICptZENvbnRleHQ7Ci0tdW5zaWduZWQgY2hhciAqaW5CdWY7Ci0tdW5zaWduZWQgaW50IGluTGVu OworLXZvaWQgTUQ1X1VwZGF0ZSAoTUQ1X0NUWCAqbWRDb250ZXh0LCB1bnNpZ25lZCBjaGFyICpp bkJ1ZiwgdW5zaWduZWQgaW50IGluTGVuKQogLXsKIC0gIFVJTlQ0IGluWzE2XTsKIC0gIGludCBt ZGk7CkBAIC03NjgsOSArNzU5LDcgQEAgaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAwMDAwMDAK IC0vKiBUaGUgcm91dGluZSBNRDVGaW5hbCB0ZXJtaW5hdGVzIHRoZSBtZXNzYWdlLWRpZ2VzdCBj b21wdXRhdGlvbiBhbmQKIC0gICBlbmRzIHdpdGggdGhlIGRlc2lyZWQgbWVzc2FnZSBkaWdlc3Qg aW4gbWRDb250ZXh0LT5kaWdlc3RbMC4uLjE1XS4KIC0gKi8KLS12b2lkIE1ENV9GaW5hbCAoaGFz aCwgbWRDb250ZXh0KQotLXVuc2lnbmVkIGNoYXIgaGFzaFtdOwotLU1ENV9DVFggKm1kQ29udGV4 dDsKKy12b2lkIE1ENV9GaW5hbCAodW5zaWduZWQgY2hhciBoYXNoW10sIE1ENV9DVFggKm1kQ29u dGV4dCkKIC17CiAtICBVSU5UNCBpblsxNl07CiAtICBpbnQgbWRpOwpAQCAtODExLDkgKzgwMCw3 IEBAIGluZGV4IDZmOGY3MjA3YzU5Mi4uMDAwMDAwMDAwMDAwCiAtCiAtLyogQmFzaWMgTUQ1IHN0 ZXAuIFRyYW5zZm9ybXMgYnVmIGJhc2VkIG9uIGluLgogLSAqLwotLXN0YXRpYyB2b2lkIFRyYW5z Zm9ybSAoYnVmLCBpbikKLS1VSU5UNCAqYnVmOwotLVVJTlQ0ICppbjsKKy1zdGF0aWMgdm9pZCBU cmFuc2Zvcm0gKFVJTlQ0ICpidWYsIFVJTlQ0ICppbikKIC17CiAtICBVSU5UNCBhID0gYnVmWzBd LCBiID0gYnVmWzFdLCBjID0gYnVmWzJdLCBkID0gYnVmWzNdOwogLQpAQCAtOTE2LDE0ICs5MDMs MTIgQEAgaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAwMDAwMDAKIC0gKiogRW5kIG9mIG1kNS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioK IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKGN1dCkgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKIC0gKi8KLS0jZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotLQogZGlm ZiAtLWdpdCBhL3BwcGQvbWQ1LmggYi9wcHBkL21kNS5oCiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDE0ZDcxMjE3MWM1ZS4uMDAwMDAwMDAwMDAwCitpbmRleCA3MWU4YjAwZTJkZGUu LjAwMDAwMDAwMDAwMAogLS0tIGEvcHBwZC9tZDUuaAogKysrIC9kZXYvbnVsbAotQEAgLTEsNjgg KzAsMCBAQAorQEAgLTEsNjUgKzAsMCBAQAogLS8qCiAtICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAtICoqIG1k NS5oIC0tIGhlYWRlciBmaWxlIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBNRDUgICAgICAgICAgICAg ICAgICAgICoqCkBAIC05NjIsNyArOTQ3LDYgQEAgaW5kZXggMTRkNzEyMTcxYzVlLi4wMDAwMDAw MDAwMDAKIC0gKiogZG9jdW1lbnRhdGlvbiBhbmQvb3Igc29mdHdhcmUuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKioKIC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC0gKi8KLS0jaWZuZGVm IFVTRV9FQVBUTFMKIC0KIC0jaWZuZGVmIF9fTUQ1X0lOQ0xVREVfXwogLQpAQCAtOTkwLDggKzk3 NCw2IEBAIGluZGV4IDE0ZDcxMjE3MWM1ZS4uMDAwMDAwMDAwMDAwCiAtCiAtI2RlZmluZSBfX01E NV9JTkNMVURFX18KIC0jZW5kaWYgLyogX19NRDVfSU5DTFVERV9fICovCi0tCi0tI2VuZGlmIC8q IFVTRV9FQVBUTFMgKi8KIGRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcmFkaXVzL21kNS5jIGIv cHBwZC9wbHVnaW5zL3JhZGl1cy9tZDUuYwogaW5kZXggOGFmMDNhYTM3MTNlLi45MGQ5YjAyNWQy MTEgMTAwNjQ0CiAtLS0gYS9wcHBkL3BsdWdpbnMvcmFkaXVzL21kNS5jCkBAIC0xMDA2LDcgKzk4 OCw3IEBAIGluZGV4IDhhZjAzYWEzNzEzZS4uOTBkOWIwMjVkMjExIDEwMDY0NAogIHZvaWQgcmNf bWQ1X2NhbGMgKHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVu c2lnbmVkIGludCBpbmxlbikKICB7CiBkaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9y YWRpdXMuYyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvcmFkaXVzLmMKLWluZGV4IDA2ZTAwNTkwYjYz NS4uNjAyODJkOWIyYjljIDEwMDY0NAoraW5kZXggYzU3OTgzMTY3MTlhLi5kNWQ2MzY5OGE2ZGMg MTAwNjQ0CiAtLS0gYS9wcHBkL3BsdWdpbnMvcmFkaXVzL3JhZGl1cy5jCiArKysgYi9wcHBkL3Bs dWdpbnMvcmFkaXVzL3JhZGl1cy5jCiBAQCAtMzEsNyArMzEsNyBAQCBzdGF0aWMgY2hhciBjb25z dCBSQ1NJRFtdID0KQEAgLTEwMTksNyArMTAwMSw3IEBAIGluZGV4IDA2ZTAwNTkwYjYzNS4uNjAy ODJkOWIyYjljIDEwMDY0NAogICNlbmRpZgogICNpbmNsdWRlICJyYWRpdXNjbGllbnQuaCIKIGRp ZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvd2luYmluZC5jIGIvcHBwZC9wbHVnaW5zL3dpbmJpbmQu YwotaW5kZXggYmIwNWFjZDg3ZGNlLi41Zjg3YTMxN2I2NzcgMTAwNjQ0CitpbmRleCAwYzM5NWMz NDcxMWEuLjYzMjA2NDVhYzk5NCAxMDA2NDQKIC0tLSBhL3BwcGQvcGx1Z2lucy93aW5iaW5kLmMK ICsrKyBiL3BwcGQvcGx1Z2lucy93aW5iaW5kLmMKIEBAIC0zOCw3ICszOCw3IEBACkBAIC0xMDMz LDEwICsxMDE1LDEwIEBAIGluZGV4IGJiMDVhY2Q4N2RjZS4uNWY4N2EzMTdiNjc3IDEwMDY0NAog ICNpbmNsdWRlICJpcGNwLmgiCiBkaWZmIC0tZ2l0IGEvcHBwZC9zaGExLmMgYi9wcHBkL3NoYTEu YwogZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBmNGY5NzVjZjUxNmYuLjAwMDAwMDAw MDAwMAoraW5kZXggNGU1MWNlZTUwNmMyLi4wMDAwMDAwMDAwMDAKIC0tLSBhL3BwcGQvc2hhMS5j CiArKysgL2Rldi9udWxsCi1AQCAtMSwxNzAgKzAsMCBAQAorQEAgLTEsMTcxICswLDAgQEAKIC0v KgogLSAqIGZ0cDovL2Z0cC5mdW5ldC5maS9wdWIvY3J5cHQvaGFzaC9zaGEvc2hhMS5jCiAtICog CkBAIC0xMDU2LDYgKzEwMzgsNyBAQCBpbmRleCBmNGY5NzVjZjUxNmYuLjAwMDAwMDAwMDAwMAog LS8qICNkZWZpbmUgU0hBMUhBTkRTT0ZGICogQ29waWVzIGRhdGEgYmVmb3JlIG1lc3Npbmcgd2l0 aCBpdC4gKi8KIC0KIC0jaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHRpbWUuaD4KIC0j aW5jbHVkZSA8bmV0aW5ldC9pbi5oPgkvKiBodG9ubCgpICovCiAtI2luY2x1ZGUgPG5ldC9wcHBf ZGVmcy5oPgogLSNpbmNsdWRlICJzaGExLmgiCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMTAwLXBwcGQtbWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoIGIvcGF0Y2hlcy9w cHAtMi40LjkvMDIwMC1wcHBkLW1ha2UtbWFrZWZpbGUtc3lzcm9vdC1hd2FyZS5wYXRjaApzaW1p bGFyaXR5IGluZGV4IDYzJQpyZW5hbWUgZnJvbSBwYXRjaGVzL3BwcC0yLjQuNy8wMTAwLXBwcGQt bWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzL3BwcC0y LjQuOS8wMjAwLXBwcGQtbWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoCmluZGV4IGMy MDViMTVlZC4uNDhmNDUxNzg4IDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMTAwLXBw cGQtbWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoCisrKyBiL3BhdGNoZXMvcHBwLTIu NC45LzAyMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2gKQEAgLTEzLDE0 ICsxMywxNCBAQCBTaWduZWQtb2ZmLWJ5OiBNYXJjIEtsZWluZS1CdWRkZSA8bS5rbGVpbmUtYnVk ZGVAcGVuZ3V0cm9uaXguZGU+CiBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJA cGVuZ3V0cm9uaXguZGU+CiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KIC0tLQotIHBwcGQvTWFrZWZpbGUubGludXggfCAxMCArKysrLS0t LS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyBw cHBkL01ha2VmaWxlLmxpbnV4IHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcHBwZC9NYWtlZmlsZS5saW51 eCBiL3BwcGQvTWFrZWZpbGUubGludXgKLWluZGV4IGNiOWQ0ZjlkY2YyMi4uZWEwYTdmMDI3NjZi IDEwMDY0NAoraW5kZXggOTA2NDZkYzMxZTcwLi5jMWRhMjkwOGNjYzcgMTAwNjQ0CiAtLS0gYS9w cHBkL01ha2VmaWxlLmxpbnV4CiArKysgYi9wcHBkL01ha2VmaWxlLmxpbnV4Ci1AQCAtMTAzLDgg KzEwMyw4IEBAIGVuZGlmCitAQCAtMTExLDggKzExMSw4IEBAIGVuZGlmCiAgCiAgIyBFQVAgU1JQ LVNIQTEKICBpZmRlZiBVU0VfU1JQCkBAIC0zMSwzMiArMzEsMTIgQEAgaW5kZXggY2I5ZDRmOWRj ZjIyLi5lYTBhN2YwMjc2NmIgMTAwNjQ0CiAgVEFSR0VUUwkrPSBzcnAtZW50cnkKICBFWFRSQUlO U1RBTEwgPSAkKElOU1RBTEwpIC1jIC1tIDU1NSBzcnAtZW50cnkgJChCSU5ESVIpL3NycC1lbnRy eQogIE1BTlBBR0VTICs9IHNycC1lbnRyeS44Ci1AQCAtMTE0LDcgKzExNCw3IEBAIGVuZGlmCi0g Ci0gIyBFQVAtVExTCi0gaWZkZWYgVVNFX0VBUFRMUwotLUNGTEFHUyArPSAtRFVTRV9FQVBUTFM9 MSAtSS91c3Iva2VyYmVyb3MvaW5jbHVkZQotK0NGTEFHUyArPSAtRFVTRV9FQVBUTFM9MQotIExJ QlMgKz0gLWxzc2wKLSBQUFBEU1JDICs9IGVhcC10bHMuYwotIEhFQURFUlMgKz0gZWFwLXRscy5o Ci1AQCAtMTI2LDEwICsxMjYsOCBAQCBDRkxBR1MgICArPSAtREhBU19TSEFET1cKLSAjTElCUyAg ICAgKz0gLWxzaGFkb3cgJChMSUJTKQotIGVuZGlmCi0gCi0taWZuZXEgKCQod2lsZGNhcmQgL3Vz ci9pbmNsdWRlL2NyeXB0LmgpLCkKLSBDRkxBR1MgICs9IC1ESEFWRV9DUllQVF9IPTEKLSBMSUJT CSs9IC1sY3J5cHQKLS1lbmRpZgotIAotIGlmZGVmIFVTRV9MSUJVVElMCi0gQ0ZMQUdTCSs9IC1E SEFWRV9MT0dXVE1QPTEKLUBAIC0xMzgsNyArMTM2LDcgQEAgZW5kaWYKK0BAIC0xNTAsNyArMTUw LDcgQEAgZW5kaWYKICAKICBpZmRlZiBORUVEREVTCiAgaWZuZGVmIFVTRV9DUllQVAotLUNGTEFH UyAgICs9IC1JL3Vzci9pbmNsdWRlL29wZW5zc2wKKy1DRkxBR1MgICArPSAtSSQoc2hlbGwgJChD QykgLS1wcmludC1zeXNyb290KS91c3IvaW5jbHVkZS9vcGVuc3NsCiArQ0ZMQUdTICAgKz0gLUkk KFNZU1JPT1QpL3Vzci9pbmNsdWRlL29wZW5zc2wKLSBMSUJTICAgICArPSAtbGNyeXB0bwogIGVs c2UKICBDRkxBR1MgICArPSAtRFVTRV9DUllQVD0xCisgZW5kaWYKZGlmZiAtLWdpdCBhL3BhdGNo ZXMvcHBwLTIuNC43LzAxMDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3Nz LWF3YXJlLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDIwMS1wcHBkLW1ha2UtdGhlLXNlbGYt bWFkZS1jb25maWd1cmUtY3Jvc3MtYXdhcmUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVu YW1lIGZyb20gcGF0Y2hlcy9wcHAtMi40LjcvMDEwMS1wcHBkLW1ha2UtdGhlLXNlbGYtbWFkZS1j b25maWd1cmUtY3Jvc3MtYXdhcmUucGF0Y2gKcmVuYW1lIHRvIHBhdGNoZXMvcHBwLTIuNC45LzAy MDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoCmlu ZGV4IGY1NzM2MWE0Yy4uNTkwY2YzYWU0IDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8w MTAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRlLWNvbmZpZ3VyZS1jcm9zcy1hd2FyZS5wYXRjaAor KysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMjAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRlLWNvbmZp Z3VyZS1jcm9zcy1hd2FyZS5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBAIFNpZ25lZC1vZmYtYnk6 IEp1ZXJnZW4gQmVpc2VydCA8anVlcmdlbkBrcmV1emhvbHplbi5kZT4KICAyIGZpbGVzIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZp Z3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggNmE1NWUwZjA4YmU0Li4zODg2NTY0ZmE0OTUgMTAwNzU1 CitpbmRleCBiMGMzZDJiNDkxMjIuLjRiYzZhMThmYWQzMiAxMDA3NTUKIC0tLSBhL2NvbmZpZ3Vy ZQogKysrIGIvY29uZmlndXJlCi1AQCAtMTQsNiArMTQsMTYgQEAgU1lTQ09ORj0vZXRjCi0gIyAg ZmkKK0BAIC0xNSw2ICsxNSwxNiBAQCByZWxlYXNlPWB1bmFtZSAtcmAKKyBhcmNoPWB1bmFtZSAt bWAKICBzdGF0ZT0idW5rbm93biIKICAKICtpZiBbIC1uICRUQVJHRVRfT1MgXTsgdGhlbgpAQCAt MzIsMTAgKzMyLDEwIEBAIGluZGV4IDZhNTVlMGYwOGJlNC4uMzg4NjU2NGZhNDk1IDEwMDc1NQog ICAgTGludXgpCiAgICAgIG1ha2V4dD0ibGludXgiOwogZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lu cy9NYWtlZmlsZS5saW51eCBiL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAotaW5kZXggYmMy OTk2OGQ0NGM5Li5lMDEwYWQyMTU5ODEgMTAwNjQ0CitpbmRleCA2NDAzZTNkNDc3ZTMuLjM3NWJl NzY0ZTE5YSAxMDA2NDQKIC0tLSBhL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAogKysrIGIv cHBwZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4Ci1AQCAtNDcsNSArNDcsNSBAQCBjbGVhbjoKK0BA IC00OSw1ICs0OSw1IEBAIGNsZWFuOgogIAlmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0Up ICQoTUZMQUdTKSAtQyAkJGQgY2xlYW4gfHwgZXhpdCAkJD87IGRvbmUKICAKICBkZXBlbmQ6CmRp ZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuOS9zZXJpZXMgYi9wYXRjaGVzL3BwcC0yLjQuOS9z ZXJpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi40NTFiNzhjMzkKLS0t IC9kZXYvbnVsbAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS9zZXJpZXMKQEAgLTAsMCArMSwyMiBA QAorIyBnZW5lcmF0ZWQgYnkgZ2l0LXB0eC1wYXRjaGVzCisjdGFnOmJhc2UgLS1zdGFydC1udW1i ZXIgMQorI3RhZzp1cHN0cmVhbSAtLXN0YXJ0LW51bWJlciAxCiswMDAxLWNvbmZpZ3VyZS1BbGxv dy1jb21tYXMtaW4tdGhlLUNGTEFHUy0yMjAucGF0Y2gKKzAwMDItcHBwZC1GaXgtY29tcGlsYXRp b24td2l0aC1vbGRlci1nbGliYy1vci1rZXJuZWwtaGVhZC5wYXRjaAorI3RhZzpkZWJpYW4gLS1z dGFydC1udW1iZXIgMTAwCiswMTAwLWNoYXRfbWFuLnBhdGNoCiswMTAxLXBwcGR1bXBfdXNlX3ps aWIucGF0Y2gKKzAxMDItcHBwb2F0bV9yZXNvbHZlcl9saWdodC5wYXRjaAorMDEwMy1wcHBvZV9u b2Fkcy5wYXRjaAorMDEwNC0wMTFfc2NyaXB0c19yZWRpYWxlci5kaWZmLnBhdGNoCiswMTA1LXBw cC0yLjMuMTEtb2Vkb2QuZGlmLnBhdGNoCiswMTA2LTAxMF9zY3JpcHRzX1JFQURNRS5kaWZmLnBh dGNoCiswMTA3LW5vX2NyeXB0X2hhY2sucGF0Y2gKKzAxMDgtcmVzb2x2LmNvbmZfbm9fbG9nLnBh dGNoCiswMTA5LXp6el9jb25maWcucGF0Y2gKKzAxMTAtcHBwZC1zb25hbWUtaGFjay5wYXRjaAor MDExMS1yZXBsYWNlLXZlbmRvcmVkLWhhc2gtZnVuY3Rpb25zLnBhdGNoCisjdGFnOnB0eCAtLXN0 YXJ0LW51bWJlciAyMDAKKzAyMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0 Y2gKKzAyMDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBh dGNoCisjIGUzOGM1NmQ3NGRlNDJhM2FjY2RjMmJjZDQxMjVmZDZlICAtIGdpdC1wdHgtcGF0Y2hl cyBtYWdpYwpkaWZmIC0tZ2l0IGEvcnVsZXMvcHBwLm1ha2UgYi9ydWxlcy9wcHAubWFrZQppbmRl eCA4YmZiODhiNTUuLjkzMjkxMGM5OCAxMDA2NDQKLS0tIGEvcnVsZXMvcHBwLm1ha2UKKysrIGIv cnVsZXMvcHBwLm1ha2UKQEAgLTE2LDggKzE2LDggQEAgUEFDS0FHRVMtJChQVFhDT05GX1BQUCkg Kz0gcHBwCiAjCiAjIFBhdGhzIGFuZCBuYW1lcwogIwotUFBQX1ZFUlNJT04JOj0gMi40LjcKLVBQ UF9NRDUJCTo9IDc4ODE4ZjQwZTZkMzNhMWQxZGU2OGExNTUxZjY1OTVhCitQUFBfVkVSU0lPTgk6 PSAyLjQuOQorUFBQX01ENQkJOj0gYzg4MTUzYWUzZDE2YWUxMTQxNTJjZDNjMTVjNzMwMWQKIFBQ UAkJOj0gcHBwLSQoUFBQX1ZFUlNJT04pCiBQUFBfU1VGRklYCTo9IHRhci5negogUFBQX1VSTAkJ Oj0gaHR0cDovL2Z0cC5zYW1iYS5vcmcvcHViL3BwcC8kKFBQUCkuJChQUFBfU1VGRklYKQpAQCAt NTUsNyArNTUsNyBAQCBQUFBfU0hBUkVEX0lOU1RfUEFUSCA6PSAvdXNyL2xpYi9wcHBkLyQoUFBQ X1ZFUlNJT04pCiAkKFNUQVRFRElSKS9wcHAucHJlcGFyZToKIAlAJChjYWxsIHRhcmdldGluZm8p CiAJQGNkICQoUFBQX0RJUikgJiYgJChQUFBfUEFUSCkgJChQUFBfQ09ORl9FTlYpIFwKLQkJLi9j b25maWd1cmUgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YworCQkuL2NvbmZpZ3VyZSAt LXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjIC0tY2M9JChDUk9TU19DQykKIAogCUAkKGNh bGwgZGlzYWJsZV9zaCwkKFBQUF9ESVIpL3BwcGQvTWFrZWZpbGUsVVNFX1BBTT15KQogCi0tIAoy LjI5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpw dHhkaXN0IG1haWxpbmcgbGlzdApwdHhkaXN0QHBlbmd1dHJvbml4LmRlClRvIHVuc3Vic2NyaWJl LCBzZW5kIGEgbWFpbCB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIiB0byBwdHhkaXN0LXJlcXVl c3RAcGVuZ3V0cm9uaXguZGUK