From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.2 Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id fe9a387c for ; Thu, 10 Oct 2019 23:27:09 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============2691171185013168344==" MIME-Version: 1.0 Subject: [PR PATCH] [WIP] qt5 uptade to 5.14.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org Message-ID: Date: Fri, 11 Oct 2019 01:27:09 +0200 GitHub notification mails are now in MIME to allow UTF8. --===============2691171185013168344== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IEpvaG5ueW5hdG9yIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9Kb2hu bnluYXRvci92b2lkLXBhY2thZ2VzIHF0NS4xNApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvMTUzMTAKCltXSVBdIHF0NSB1cHRhZGUgdG8gNS4xNC4wCiMg VGVzdGVkIG9uDQotIFt4XSB4ODZfNjQNCi0gWyBdIHg4Nl82NC1tdXNsDQotIFsgXSBpNjg2DQot IFsgXSBhcm12N2wtbXVzbA0KLSBbIF0gYXJtdjdsDQotIFsgXSBhcm12NmwtbXVzbA0KLSBbIF0g YXJtdjZsDQotIFsgXSBhYXJjaDY0LW11c2wNCi0gWyBdIGFhcmNoNjQNCg0KIyBUT0RPOg0KDQot IGZpeCBjcm9zcw0KLSBzcGxpdCBxdDUtd2ViZW5naW5lDQotIHJlYmFzZSB3ZWJlbmdpbmUgcHBj IHBhdGNoZXMgQHE2NiANCi0gbXVzbCB0aGluZ3MgKD8pDQotIG1vcmUgdGhpbmdzDQoKCkEgcGF0 Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMv cHVsbC8xNTMxMC5wYXRjaCBpcyBhdHRhY2hlZA== --===============2691171185013168344== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.14-15310.patch" RnJvbSBmMmU4MzBhNzY0N2FhOTgxNmU0YzQ4ZGVjN2M4YzQwNTQyYTZlNzY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDEx IE9jdCAyMDE5IDAwOjU5OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIHF0NTogdXBkYXRl IHRvIDUuMTQuMGJldGExLgoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAzICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDI3LXJlbW92ZS1nbGliYy1j aGVjay5wYXRjaCB8ICAgMTMgLQogLi4uLzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJvaWQucGF0 Y2ggICAgICAgIHwgICAxOCArLQogLi4uL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVjaW5m by5wYXRjaCAgIHwgICAxMyAtCiBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAtcHVsc2Utc3R1YnMu cGF0Y2ggICAgfCAgIDQ5IC0KIC4uLi9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5w YXRjaCAgICB8ICAgMjAgLQogLi4uL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21pdW0tcHBjNjRsZS5w YXRjaCAgIHwgNDI2NyAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMvMDA5MS1jaHJvbWl1 bS1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDE0MSAtCiAuLi4vcXQ1L3BhdGNoZXMvMDA5Mi1jaHJv bWl1bS1wcGM2NC1iZS5wYXRjaCAgfCAyOTcwIC0tLS0tLS0tLS0tLQogLi4uL3F0NS9wYXRjaGVz LzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0Y2ggIHwgICA0MyAtCiAuLi4vMDA5NC1iaWctZW5k aWFuLXNraWEtcG9ydGFibGUucGF0Y2ggICAgICAgfCAgIDE3IC0KIC4uLi8wMTAwLXF0NS13ZWJl bmdpbmUtbGludXgtNS4yLnBhdGNoICAgICAgICB8ICAgNDIgKwogc3JjcGtncy9xdDUvcGF0Y2hl cy8wMTAwLXF0YnVnLTc3MzY0LnBhdGNoICAgIHwgICAyNiAtCiAuLi4vMDEwMS1xdDUtd2ViZW5n aW5lLXN5c3RlbS1pY3UucGF0Y2ggICAgICAgfCAgIDMyICsKIHNyY3BrZ3MvcXQ1L3RlbXBsYXRl ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDk2 IGluc2VydGlvbnMoKyksIDc1NjcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1wdWxzZS1zdHVicy5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21p dW0tcHBjNjRsZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tp YS1wb3J0YWJsZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMv MDEwMC1xdDUtd2ViZW5naW5lLWxpbnV4LTUuMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1xdGJ1Zy03NzM2NC5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMS1xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0 Y2gKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCA2ODgy NzViN2Q5ZS4uODljNzhkMmQwNmEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29t bW9uL3NobGlicwpAQCAtMTg0OSw2ICsxODQ5LDcgQEAgbGliUXQ1M0RRdWlja1NjZW5lMkQuc28u NSBxdDUtM2QtNS4xMC4xXzEKIGxpYlF0NTNERXh0cmFzLnNvLjUgcXQ1LTNkLTUuNi4wXzEKIGxp YlF0NTNEUXVpY2tFeHRyYXMuc28uNSBxdDUtM2QtNS42LjBfMQogbGliUXQ1M0RRdWlja0FuaW1h dGlvbi5zby41IHF0NS0zZC01LjEwLjFfMQorbGliUXQ1M0RRdWlja0lucHV0LnNvLjUgcXQ1LTNk LTUuMTMuMF8xCiBsaWJRdDVDaGFydHMuc28uNSBxdDUtY2hhcnRzLTUuNy4xXzEKIGxpYlF0NURh dGFWaXN1YWxpemF0aW9uLnNvLjUgcXQ1LWRhdGF2aXMzZC01LjcuMV8xCiBsaWJRdDVHYW1lcGFk LnNvLjUgcXQ1LWdhbWVwYWQtNS43LjFfMQpAQCAtMTg2MSw2ICsxODYyLDggQEAgbGliUXQ1UXVp Y2tUZXN0LnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuNi4wXzEKIGxpYlF0NVF1aWNrV2lkZ2V0cy5z by41IHF0NS1kZWNsYXJhdGl2ZS01LjYuMF8xCiBsaWJRdDVRdWlja1BhcnRpY2xlcy5zby41IHF0 NS1kZWNsYXJhdGl2ZS01LjYuMF8xCiBsaWJRdDVRdWlja1NoYXBlcy5zby41IHF0NS1kZWNsYXJh dGl2ZS01LjEyLjFfMQorbGliUXQ1UW1sTW9kZWxzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTQu MF8xCitsaWJRdDVRbWxXb3JrZXJTY3JpcHQuc28uNSBxdDUtZGVjbGFyYXRpdmUtNS4xNC4wXzEK IGxpYlF0NVF1aWNrQ29udHJvbHMyLnNvLjUgcXQ1LXF1aWNrY29udHJvbHMyLTUuNy4xXzEKIGxp YlF0NVF1aWNrVGVtcGxhdGVzMi5zby41IHF0NS1xdWlja2NvbnRyb2xzMi01LjcuMV8xCiBsaWJR dDVQb3NpdGlvbmluZy5zby41IHF0NS1sb2NhdGlvbi01LjYuMF8xCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwMjctcmVtb3ZlLWdsaWJjLWNoZWNrLnBhdGNoIGIvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZmQwYWI4NDljMDEuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAyNy1yZW1vdmUtZ2xpYmMtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMyArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvY29uZmlnLnRlc3RzL2dsaWJjL2dsaWJjLmNw cAotKysrIHF0d2ViZW5naW5lL2NvbmZpZy50ZXN0cy9nbGliYy9nbGliYy5jcHAKLUBAIC0yOCwx MCArMjgsNiBAQAotIAotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotIAotLSNpZiBfX0dMSUJDX18g PCAyIHx8IF9fR0xJQkNfTUlOT1JfXyA8IDE3Ci0tI2Vycm9yIGdsaWJjIHZlcnNpb25zIGJlbG93 IDIuMTcgYXJlIG5vdCBzdXBwb3J0ZWQKLS0jZW5kaWYKLS0KLSBpbnQgbWFpbihpbnQgLCBjaGFy ICoqKSB7Ci0gICByZXR1cm4gMDsKLSB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJvaWQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJvaWQucGF0Y2gKaW5kZXggYjEzMjkwZDNjY2QuLjc2 ZGUzZGQ1ODMyIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQt aXMtbm90LWFuZHJvaWQucGF0Y2gKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12 b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoCkBAIC0xLDEzICsxLDIzIEBACi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0eS9vcGVubWF4X2RsL2RsL0JVSUxE LmduCTIwMTktMDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgLQkyMDE5LTA1LTA2 IDIzOjA4OjA5LjUzNzM0NjU0NiArMDIwMAotQEAgLTIwNiwxOCArMjA2LDYgQEAKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvb3Blbm1heF9kbC9kbC9C VUlMRC5nbgkyMDE5LTA5LTIzIDE0OjI0OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIC0JMjAxOS0x MC0xMCAxODoxNjowNS45MTA2OTAwNTYgKzAyMDAKK0BAIC0xNiw5ICsxNiw2IEBACisgICAgIGlm IChhcm1fdXNlX25lb24pIHsKKyAgICAgICAjIEVuYWJsZSBidWlsZC10aW1lIE5FT04gc2VsZWN0 aW9uLgorICAgICAgIGRlZmluZXMgPSBbICJETF9BUk1fTkVPTiIgXQorLSAgICB9IGVsc2UgaWYg KGFybV9vcHRpb25hbGx5X3VzZV9uZW9uKSB7CistICAgICAgIyBFbmFibGUgcnVuLXRpbWUgTkVP TiBzZWxlY3Rpb24uCistICAgICAgZGVmaW5lcyA9IFsgIkRMX0FSTV9ORU9OX09QVElPTkFMIiBd CisgICAgIH0KKyAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFybTY0IikgeworICAgICAj IEVuYWJsZSBidWlsZC10aW1lIE5FT04gc2VsZWN0aW9uLgorQEAgLTIwNiwxOCArMjAzLDYgQEAK ICAgICAgICAic3Avc3JjL2FybS9hcm12Ny9vbXhTUF9GRlRGd2RfUlRvQ0NTX0YzMl9TZnNfcy5T IiwKICAgICAgICAic3Avc3JjL2FybS9hcm12Ny9vbXhTUF9GRlRJbnZfQ0NTVG9SX0YzMl9TZnNf cy5TIiwKICAgICAgXQogLSAgICBpZiAoYXJtX29wdGlvbmFsbHlfdXNlX25lb24pIHsKIC0gICAg ICAjIFJ1bi10aW1lIE5FT04gZGV0ZWN0aW9uLgogLSAgICAgIGRlcHMgPSBbCi0tICAgICAgICAi Ly90aGlyZF9wYXJ0eS9hbmRyb2lkX3Rvb2xzOmNwdV9mZWF0dXJlcyIsCistICAgICAgICAiLy90 aGlyZF9wYXJ0eS9hbmRyb2lkX3NkazpjcHVfZmVhdHVyZXMiLAogLSAgICAgIF0KIC0KIC0gICAg ICAjIFRvIGdldCB0aGUgX19hbmRyb2lkX2xvZ19wcmludCByb3V0aW5lCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoCmluZGV4IDk4ZjNhMzg3NDVh Li5jMWNkYjUzNzIxMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0LW11 c2wtZXhlY2luZm8ucGF0Y2gKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0LW11c2wt ZXhlY2luZm8ucGF0Y2gKQEAgLTkyLDE2ICs5MiwzIEBACiAgICAgICFkZWZpbmVkKE9TX0FJWCkK ICAgIGlmIChzZXZlcml0eV8gPT0gTE9HX0ZBVEFMICYmICFiYXNlOjpkZWJ1Zzo6QmVpbmdEZWJ1 Z2dlZCgpKSB7CiAgICAgIC8vIEluY2x1ZGUgYSBzdGFjayB0cmFjZSBvbiBhIGZhdGFsLCB1bmxl c3MgYSBkZWJ1Z2dlciBpcyBhdHRhY2hlZC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2Fzc2VydGlv bnMuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDUt MDYgMjM6MTI6MDcuMDQwOTc3MjU4ICswMjAwCi1AQCAtNTEsOCArNTEsMTAgQEAKLSAjaWYgZGVm aW5lZChPU19NQUNPU1gpIHx8IChkZWZpbmVkKE9TX0xJTlVYKSAmJiAhZGVmaW5lZChfX1VDTElC Q19fKSkKLSAjaW5jbHVkZSA8Y3h4YWJpLmg+Ci0gI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2lmIGRl ZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxleGVjaW5mby5oPgotICNlbmRpZgotKyNlbmRp ZgotIAotICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gI2luY2x1ZGUgPGFuZHJvaWQvbG9nLmg+ CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAtcHVsc2Utc3R1YnMucGF0Y2gg Yi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAtcHVsc2Utc3R1YnMucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGM0ZjBmYWU4NmVlLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwNTAtcHVsc2Utc3R1YnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0 OSArMCwwIEBACi1QdWxzZSBjaGFuZ2VkIEFQSSBpbiBhIHJlY2VudCB1cGRhdGUgYW5kIHRoZXNl IG5lZWQgdG8gYmUgZml4ZWQKLWluIG9yZGVyIHRvIGF2b2lkIGJ1aWxkIGVycm9ycy4KLQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9hdWRpby9wdWxzZS9wdWxz ZS5zaWdzCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2F1ZGlv L3B1bHNlL3B1bHNlLnNpZ3MKLUBAIC0yNCwxMSArMjQsMTEgQEAgcGFfb3BlcmF0aW9uKiBwYV9j b250ZXh0X2dldF9zb3VyY2VfaW5mb19ieV9pbmRleChwYV9jb250ZXh0KiBjLCB1aW50MzJfdCBp ZHgsIHAKLSBwYV9vcGVyYXRpb24qIHBhX2NvbnRleHRfZ2V0X3NvdXJjZV9pbmZvX2J5X25hbWUo cGFfY29udGV4dCogYywgY29uc3QgY2hhciogbmFtZSwgcGFfc291cmNlX2luZm9fY2JfdCBjYiwg dm9pZCAqdXNlcmRhdGEpOwotIHBhX29wZXJhdGlvbiogcGFfY29udGV4dF9nZXRfc291cmNlX2lu Zm9fbGlzdChwYV9jb250ZXh0KiBjLCBwYV9zb3VyY2VfaW5mb19jYl90IGNiLCB2b2lkKiB1c2Vy ZGF0YSk7Ci0gcGFfb3BlcmF0aW9uKiBwYV9jb250ZXh0X2dldF9zaW5rX2luZm9fbGlzdChwYV9j b250ZXh0KiBjLCBwYV9zaW5rX2luZm9fY2JfdCBjYiwgdm9pZCogdXNlcmRhdGEpOwotLXBhX2Nv bnRleHRfc3RhdGVfdCBwYV9jb250ZXh0X2dldF9zdGF0ZShwYV9jb250ZXh0KiBjKTsKLStwYV9j b250ZXh0X3N0YXRlX3QgcGFfY29udGV4dF9nZXRfc3RhdGUoY29uc3QgcGFfY29udGV4dCogYyk7 Ci0gcGFfY29udGV4dCogcGFfY29udGV4dF9uZXcocGFfbWFpbmxvb3BfYXBpKiBtYWlubG9vcCwg Y29uc3QgY2hhciogbmFtZSk7Ci0gcGFfb3BlcmF0aW9uKiBwYV9jb250ZXh0X3NldF9zb3VyY2Vf dm9sdW1lX2J5X2luZGV4KHBhX2NvbnRleHQqIGMsIHVpbnQzMl90IGlkeCwgY29uc3QgcGFfY3Zv bHVtZSogdm9sdW1lLCBwYV9jb250ZXh0X3N1Y2Nlc3NfY2JfdCBjYiwgdm9pZCogdXNlcmRhdGEp OwotIHZvaWQgcGFfY29udGV4dF9zZXRfc3RhdGVfY2FsbGJhY2socGFfY29udGV4dCogYywgcGFf Y29udGV4dF9ub3RpZnlfY2JfdCBjYiwgdm9pZCogdXNlcmRhdGEpOwotLXBhX29wZXJhdGlvbl9z dGF0ZV90IHBhX29wZXJhdGlvbl9nZXRfc3RhdGUocGFfb3BlcmF0aW9uKiBvKTsKLStwYV9vcGVy YXRpb25fc3RhdGVfdCBwYV9vcGVyYXRpb25fZ2V0X3N0YXRlKGNvbnN0IHBhX29wZXJhdGlvbiog byk7Ci0gdm9pZCBwYV9jb250ZXh0X3VucmVmKHBhX2NvbnRleHQqIGMpOwotIHZvaWQgcGFfb3Bl cmF0aW9uX3VucmVmKHBhX29wZXJhdGlvbiogbyk7Ci0gaW50IHBhX3N0cmVhbV9iZWdpbl93cml0 ZShwYV9zdHJlYW0qIHAsIHZvaWQqKiBkYXRhLCBzaXplX3QqIG5ieXRlcyk7Ci1AQCAtMzgsMjMg KzM4LDIzIEBAIHBhX29wZXJhdGlvbiogcGFfc3RyZWFtX2NvcmsocGFfc3RyZWFtKiBzLCBpbnQg YiwgcGFfc3RyZWFtX3N1Y2Nlc3NfY2JfdCBjYiwgdm9pCi0gaW50IHBhX3N0cmVhbV9kaXNjb25u ZWN0KHBhX3N0cmVhbSogcyk7Ci0gaW50IHBhX3N0cmVhbV9kcm9wKHBhX3N0cmVhbSAqcCk7Ci0g cGFfb3BlcmF0aW9uKiBwYV9zdHJlYW1fZmx1c2gocGFfc3RyZWFtKiBzLCBwYV9zdHJlYW1fc3Vj Y2Vzc19jYl90IGNiLCB2b2lkKiB1c2VyZGF0YSk7Ci0tdWludDMyX3QgcGFfc3RyZWFtX2dldF9k ZXZpY2VfaW5kZXgocGFfc3RyZWFtKiBzKTsKLSt1aW50MzJfdCBwYV9zdHJlYW1fZ2V0X2Rldmlj ZV9pbmRleChjb25zdCBwYV9zdHJlYW0qIHMpOwotIGludCBwYV9zdHJlYW1fZ2V0X2xhdGVuY3ko cGFfc3RyZWFtKiBzLCBwYV91c2VjX3QqIHJfdXNlYywgaW50KiBuZWdhdGl2ZSk7Ci0tcGFfc3Ry ZWFtX3N0YXRlX3QgcGFfc3RyZWFtX2dldF9zdGF0ZShwYV9zdHJlYW0qIHApOwotK3BhX3N0cmVh bV9zdGF0ZV90IHBhX3N0cmVhbV9nZXRfc3RhdGUoY29uc3QgcGFfc3RyZWFtKiBwKTsKLSBwYV9z dHJlYW0qIHBhX3N0cmVhbV9uZXcocGFfY29udGV4dCogIGMsIGNvbnN0IGNoYXIqICBuYW1lLCBj b25zdCBwYV9zYW1wbGVfc3BlYyogIHNzLCBjb25zdCBwYV9jaGFubmVsX21hcCAqICBtYXApOwot IHBhX3N0cmVhbSogcGFfc3RyZWFtX25ld193aXRoX3Byb3BsaXN0KHBhX2NvbnRleHQqIGMsIGNv bnN0IGNoYXIqIG5hbWUsIGNvbnN0IHBhX3NhbXBsZV9zcGVjKiBzcywgY29uc3QgcGFfY2hhbm5l bF9tYXAqIG1hcCwgcGFfcHJvcGxpc3QqIHApOwotIHBhX3Byb3BsaXN0KiBwYV9wcm9wbGlzdF9u ZXcodm9pZCk7Ci0taW50IHBhX3Byb3BsaXN0X2NvbnRhaW5zKHBhX3Byb3BsaXN0KiBwLCBjb25z dCBjaGFyKiBrZXkpOwotK2ludCBwYV9wcm9wbGlzdF9jb250YWlucyhjb25zdCBwYV9wcm9wbGlz dCogcCwgY29uc3QgY2hhcioga2V5KTsKLSB2b2lkIHBhX3Byb3BsaXN0X2ZyZWUocGFfcHJvcGxp c3QqIHApOwotLWNvbnN0IGNoYXIqIHBhX3Byb3BsaXN0X2dldHMocGFfcHJvcGxpc3QqIHAsIGNv bnN0IGNoYXIqIGtleSk7Ci0rY29uc3QgY2hhciogcGFfcHJvcGxpc3RfZ2V0cyhjb25zdCBwYV9w cm9wbGlzdCogcCwgY29uc3QgY2hhcioga2V5KTsKLSBpbnQgcGFfcHJvcGxpc3Rfc2V0cyhwYV9w cm9wbGlzdCogcCwgY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Ci0tc2l6ZV90 IHBhX3N0cmVhbV9yZWFkYWJsZV9zaXplKHBhX3N0cmVhbSAqcCk7Ci0rc2l6ZV90IHBhX3N0cmVh bV9yZWFkYWJsZV9zaXplKGNvbnN0IHBhX3N0cmVhbSAqcCk7Ci0gaW50IHBhX3N0cmVhbV9wZWVr KHBhX3N0cmVhbSogcCwgY29uc3Qgdm9pZCoqIGRhdGEsIHNpemVfdCogbmJ5dGVzKTsKLSB2b2lk IHBhX3N0cmVhbV9zZXRfcmVhZF9jYWxsYmFjayhwYV9zdHJlYW0qIHAsIHBhX3N0cmVhbV9yZXF1 ZXN0X2NiX3QgY2IsIHZvaWQqIHVzZXJkYXRhKTsKLSB2b2lkIHBhX3N0cmVhbV9zZXRfc3RhdGVf Y2FsbGJhY2socGFfc3RyZWFtKiBzLCBwYV9zdHJlYW1fbm90aWZ5X2NiX3QgY2IsIHZvaWQqIHVz ZXJkYXRhKTsKLSBpbnQgcGFfc3RyZWFtX3dyaXRlKHBhX3N0cmVhbSogcCwgY29uc3Qgdm9pZCog ZGF0YSwgc2l6ZV90IG5ieXRlcywgcGFfZnJlZV9jYl90IGZyZWVfY2IsIGludDY0X3Qgb2Zmc2V0 LCBwYV9zZWVrX21vZGVfdCBzZWVrKTsKLSB2b2lkIHBhX3N0cmVhbV9zZXRfd3JpdGVfY2FsbGJh Y2socGFfc3RyZWFtICpwLCBwYV9zdHJlYW1fcmVxdWVzdF9jYl90IGNiLCB2b2lkICp1c2VyZGF0 YSk7Ci0gdm9pZCBwYV9zdHJlYW1fdW5yZWYocGFfc3RyZWFtKiBzKTsKLS1pbnQgcGFfY29udGV4 dF9lcnJubyhwYV9jb250ZXh0ICpjKTsKLStpbnQgcGFfY29udGV4dF9lcnJubyhjb25zdCBwYV9j b250ZXh0ICpjKTsKLSBjb25zdCBjaGFyKiBwYV9zdHJlcnJvcihpbnQgZXJyb3IpOwotIHBhX2N2 b2x1bWUqIHBhX2N2b2x1bWVfc2V0KHBhX2N2b2x1bWUqIGEsIHVuc2lnbmVkICBjaGFubmVscywg cGFfdm9sdW1lX3Qgdik7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwODktd2Vi ZW5naW5lLXBwYzY0LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1w cGM2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAyZDdlMmQ2MjIuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvbWtz cGVjcy9mZWF0dXJlcy9mdW5jdGlvbnMucHJmCi0rKysgcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0 dXJlcy9mdW5jdGlvbnMucHJmCi1AQCAtOTUsNiArOTUsNyBAQAotICAgICBjb250YWlucyhxdEFy Y2gsICJhcm02NCIpOiByZXR1cm4oYXJtNjQpCi0gICAgIGNvbnRhaW5zKHF0QXJjaCwgIm1pcHMi KTogcmV0dXJuKG1pcHNlbCkKLSAgICAgY29udGFpbnMocXRBcmNoLCAibWlwczY0Iik6IHJldHVy bihtaXBzNjRlbCkKLSsgICAgY29udGFpbnMocXRBcmNoLCAicG93ZXI2NCIpOiByZXR1cm4ocHBj NjQpCi0gICAgIHJldHVybih1bmtub3duKQotIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9ta3NwZWNz L2ZlYXR1cmVzL3BsYXRmb3JtLnByZgotKysrIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMv cGxhdGZvcm0ucHJmCi1AQCAtODIsNiArODIsNyBAQAotICAgICBjb250YWlucyhRVF9BUkNILCAi YXJtIil8Y29udGFpbnMoUVRfQVJDSCwgImFybTY0Iik6IHJldHVybih0cnVlKQotICAgICBjb250 YWlucyhRVF9BUkNILCAibWlwcyIpOiByZXR1cm4odHJ1ZSkKLSAjICAgICBjb250YWlucyhRVF9B UkNILCAibWlwczY0Iik6IHJldHVybih0cnVlKQotKyAgICBjb250YWlucyhRVF9BUkNILCAicG93 ZXI2NCIpOiByZXR1cm4odHJ1ZSkKLSAKLSAgICAgc2tpcEJ1aWxkKCJRdFdlYkVuZ2luZSBjYW4g b25seSBiZSBidWlsdCBmb3IgeDg2LCB4ODYtNjQsIEFSTSwgQWFyY2g2NCwgYW5kIE1JUFNlbCBh cmNoaXRlY3R1cmVzLiIpCi0gICAgIHJldHVybihmYWxzZSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDA0ZDhkM2VmYWFjLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwOTAtY2hyb21pdW0tcHBjNjRsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyNjcgKzAs MCBAQAotVGhpcyBpcyBhIGJhc2UgcGF0Y2ggdGhhdCBhZGRzIHN1cHBvcnQgZm9yIHBwYzY0bGUg Z2xpYmMuIEJpZyBlbmRpYW4gYW5kIG11c2wKLXN1cHBvcnQgaXMgYWRkZWQgaW4gZXh0cmEgcGF0 Y2hlcyBhZnRlcndhcmRzLgotCi1QaW5nIHE2NiBpZiB5b3UncmUgdXBkYXRpbmcgcXQ1IGFuZCB0 aGUgcGF0Y2ggZG9lcyBub3QgYXBwbHkgYW55bW9yZS4KLQotU291cmNlOiBodHRwczovL3dpa2ku cmFwdG9yY3MuY29tL3cvaW5kZXgucGhwP3RpdGxlPVBvcnRpbmcvQ2hyb21pdW0KLVVwc3RyZWFt OiBDdXJyZW50bHkgYmVpbmcgc3VibWl0dGVkCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9j YXRvcl9jb25zdGFudHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50 cy5oCi1AQCAtMTAsNyArMTAsNyBAQAotICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIK LSAKLSBuYW1lc3BhY2UgYmFzZSB7Ci0tI2lmIGRlZmluZWQoT1NfV0lOKQotKyNpZiBkZWZpbmVk KE9TX1dJTikgfHwgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSBzdGF0aWMgY29uc3RleHByIHNp emVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNoaWZ0ID0gMTY7ICAvLyA2NEtCCi0gI2Vs aWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90 IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQgPSAxNDsgIC8vIDE2S0IKLUBAIC0yNiw2 ICsyNiwxMCBAQCBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxh cml0eUJhc2VNYXNrID0KLSAKLSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQotIHN0 YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDE2Mzg0OwotKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rLy8gVE9ETzogbW9kZXJuIHBwYzY0IGNhbiBkbyA0ayBh bmQgNjRrIHBhZ2Ugc2l6ZXMKLSsvLyBmb3Igbm93LCA2NGsgaXMgYXNzdW1lZAotK3N0YXRpYyBj b25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDY1NTM2OwotICNlbHNlCi0gc3RhdGlj IGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNDA5NjsKLSAjZW5kaWYKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NfY29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9w YXJ0aXRpb25fYWxsb2NfY29uc3RhbnRzLmgKLUBAIC0zNSw2ICszNSw4IEBAIHN0YXRpYyBjb25z dCBzaXplX3Qga0J1Y2tldFNoaWZ0ID0gKGtBbGxvY2F0aW9uR3JhbnVsYXJpdHkgPT0gOCkgPyAz IDogMjsKLSAKLSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQotIHN0YXRpYyBjb25z dCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE2OyAgLy8gNjQgS2lCCi0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NCkKLStzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdl U2hpZnQgPSAxODsgIC8vIDI1NiBLaUIKLSAjZWxzZQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1Bh cnRpdGlvblBhZ2VTaGlmdCA9IDE0OyAgLy8gMTYgS2lCCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlucy5w eQotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9kb3dubG9hZF9u YWNsX3Rvb2xjaGFpbnMucHkKLUBAIC0xMSw2ICsxMSwxMCBAQCBpbXBvcnQgc3lzCi0gCi0gCi0g ZGVmIE1haW4oYXJncyk6Ci0rICAjIElmIGBkaXNhYmxlX25hY2w9MWAgaXMgaW4gR1lQX0RFRklO RVMsIGV4aXQKLSsgIGlmICdkaXNhYmxlX25hY2w9MScgaW4gb3MuZW52aXJvbi5nZXQoJ0dZUF9E RUZJTkVTJywgJycpOgotKyAgICByZXR1cm4gMAotKwotICAgc2NyaXB0X2RpciA9IG9zLnBhdGgu ZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgc3JjX2RpciA9IG9zLnBhdGgu ZGlybmFtZShzY3JpcHRfZGlyKQotICAgbmFjbF9kaXIgPSBvcy5wYXRoLmpvaW4oc3JjX2Rpciwg J25hdGl2ZV9jbGllbnQnKQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i dWlsZC90b29sY2hhaW4vbGludXgvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYnVpbGQvdG9vbGNoYWluL2xpbnV4L0JVSUxELmduCi1AQCAtNSw2ICs1LDE0 IEBACi0gaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9zeXNyb290LmduaSIpCi0gaW1wb3J0KCIvL2J1 aWxkL3Rvb2xjaGFpbi9nY2NfdG9vbGNoYWluLmduaSIpCi0gCi0rY2xhbmdfdG9vbGNoYWluKCJj bGFuZ19wcGM2NCIpIHsKLSsgIGVuYWJsZV9saW5rZXJfbWFwID0gdHJ1ZQotKyAgdG9vbGNoYWlu X2FyZ3MgPSB7Ci0rICAgIGN1cnJlbnRfY3B1ID0gInBwYzY0IgotKyAgICBjdXJyZW50X29zID0g ImxpbnV4IgotKyAgfQotK30KLSsKLSBjbGFuZ190b29sY2hhaW4oImNsYW5nX2FybSIpIHsKLSAg IHRvb2xwcmVmaXggPSAiYXJtLWxpbnV4LWdudWVhYmloZi0iCi0gICB0b29sY2hhaW5fYXJncyA9 IHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRh dGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJh bXMuY2MKLUBAIC01NSw2ICs1NSw4IEBAIGNvbnN0IGNoYXIga0FyY2hbXSA9Ci0gICAgICJtaXBz NjRlbCI7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgICAgIm1pcHNlbCI7Ci0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAicHBjNjQiOwotICNlbHNlCi0gI2Vycm9yICJ1 bmtub3duIGFyY2giCi0gI2VuZGlmCi1AQCAtMTI3LDYgKzEyOSw4IEBAIGNvbnN0IGNoYXIqIFVw ZGF0ZVF1ZXJ5UGFyYW1zOjpHZXROYWNsQXJjaCgpIHsKLSAgIHJldHVybiAibWlwczMyIjsKLSAj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQotICAgcmV0dXJuICJtaXBzNjQiOwotKyNl bGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rICByZXR1cm4gInBwYzY0IjsKLSAjZWxzZQot IC8vIE5PVEU6IHdoZW4gYWRkaW5nIG5ldyB2YWx1ZXMgaGVyZSwgcGxlYXNlIHJlbWVtYmVyIHRv IHVwZGF0ZSB0aGUKLSAvLyBjb21tZW50IGluIHRoZSAuaCBmaWxlIGFib3V0IHBvc3NpYmxlIHJl dHVybiB2YWx1ZXMgZnJvbSB0aGlzIGZ1bmN0aW9uLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFt cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBk YXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmgKLUBAIC00NSw3ICs0NSw3IEBAIGNsYXNz IFVwZGF0ZVF1ZXJ5UGFyYW1zIHsKLSAgIC8vIFJldHVybnMgdGhlIHZhbHVlIHdlIHVzZSBmb3Ig dGhlICJuYWNsX2FyY2giIHBhcmFtZXRlci4gTm90ZSB0aGF0IHRoaXMgbWF5Ci0gICAvLyBiZSBk aWZmZXJlbnQgZnJvbSB0aGUgImFyY2giIHBhcmFtZXRlciBhYm92ZSAoZS5nLiBvbmUgbWF5IGJl IDMyLWJpdCBhbmQKLSAgIC8vIHRoZSBvdGhlciA2NC1iaXQpLiBQb3NzaWJsZSByZXR1cm4gdmFs dWVzIGluY2x1ZGU6ICJ4ODYtMzIiLCAieDg2LTY0IiwKLS0gIC8vICJhcm0iLCBhbmQgIm1pcHMz MiIuCi0rICAvLyAiYXJtIiwgIm1pcHMzMiIsIGFuZCAicHBjNjQiLgotICAgc3RhdGljIGNvbnN0 IGNoYXIqIEdldE5hY2xBcmNoKCk7Ci0gCi0gICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHZlcnNp b24gb2YgQ2hyb21lL0Nocm9taXVtLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2ZlYXR1cmVzLmduaQotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2ZlYXR1cmVzLmduaQotQEAgLTEyLDYgKzEyLDYgQEAgdXNlX3NlY2Nv bXBfYnBmID0KLSAgICAgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpICYmCi0gICAgIChjdXJyZW50 X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IiB8fCBjdXJyZW50X2NwdSA9PSAi YXJtIiB8fAotICAgICAgY3VycmVudF9jcHUgPT0gImFybTY0IiB8fCBjdXJyZW50X2NwdSA9PSAi bWlwc2VsIiB8fAotLSAgICAgY3VycmVudF9jcHUgPT0gIm1pcHM2NGVsIikKLSsgICAgIGN1cnJl bnRfY3B1ID09ICJtaXBzNjRlbCIgfHwgY3VycmVudF9jcHUgPT0gInBwYzY0IikKLSAKLSB1c2Vf c2VjY29tcF9icGYgPSB1c2Vfc2VjY29tcF9icGYgfHwgaXNfbmFjbF9ub25zZmkKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmdu Ci1AQCAtNDE2LDYgKzQxNiw4IEBAIGNvbXBvbmVudCgic2FuZGJveF9zZXJ2aWNlcyIpIHsKLSAK LSBzb3VyY2Vfc2V0KCJzYW5kYm94X3NlcnZpY2VzX2hlYWRlcnMiKSB7Ci0gICBzb3VyY2VzID0g WwotKyAgICAic3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaCIsCi0rICAgICJz eXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oIiwKLSAgICAgInN5c3RlbV9oZWFk ZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgiLAotICAgICAic3lzdGVtX2hlYWRlcnMvYXJtX2xp bnV4X3N5c2NhbGxzLmgiLAotICAgICAic3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3Vjb250ZXh0 LmgiLAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L2JwZl9kc2wvbGludXhfc3lzY2FsbF9yYW5nZXMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvbGludXhfc3lzY2FsbF9yYW5nZXMu aAotQEAgLTU1LDYgKzU1LDEzIEBACi0gI2RlZmluZSBNQVhfUFVCTElDX1NZU0NBTEwgMjc5dQot ICNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BVQkxJQ19TWVNDQUxMCi0gCi0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKwotKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0rI2RlZmluZSBN SU5fU1lTQ0FMTCAwdQotKyNkZWZpbmUgTUFYX1BVQkxJQ19TWVNDQUxMIDM4NnUKLSsjZGVmaW5l IE1BWF9TWVNDQUxMIE1BWF9QVUJMSUNfU1lTQ0FMTAotKwotICNlbHNlCi0gI2Vycm9yICJVbnN1 cHBvcnRlZCBhcmNoaXRlY3R1cmUiCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9z ZWNjb21wX21hY3Jvcy5oCi1AQCAtMTYsNiArMTYsOSBAQAotICNpZiBkZWZpbmVkKF9fbWlwc19f KQotIC8vIHN5cy91c2VyLmggaW4gZWdsaWJjIG1pc3NlcyBzaXplX3QgZGVmaW5pdGlvbgotICNp bmNsdWRlIDxzdGRkZWYuaD4KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rLy8gTWFu dWFsbHkgZGVmaW5lIGdyZWdfdCBvbiBwcGM2NAotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n IGdyZWdfdDsKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLUBAIC0zNDYsNiArMzQ5LDUxIEBAIHN0cnVj dCByZWdzX3N0cnVjdCB7Ci0gI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9yZWdzKSAoX3JlZ3Mp LnJlZ3NbM10KLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTUoX3JlZ3MpIChfcmVncykucmVnc1s0 XQotICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNihfcmVncykgKF9yZWdzKS5yZWdzWzVdCi0rCi0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0r Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKLSsKLSsjaWZkZWYgQVJDSF9D UFVfTElUVExFX0VORElBTgotKyNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjRM RQotKyNlbHNlCi0rI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2NAotKyNlbmRp ZgotKwotKyNkZWZpbmUgU0VDQ09NUF9SRUcoX2N0eCwgX3JlZykgKChfY3R4KS0+dWNfbWNvbnRl eHQucmVncy0+Z3ByW19yZWddKQotKwotKyNkZWZpbmUgU0VDQ09NUF9SRVNVTFQoX2N0eCkgU0VD Q09NUF9SRUcoX2N0eCwgMykKLSsjZGVmaW5lIFNFQ0NPTVBfU1lTQ0FMTChfY3R4KSBTRUNDT01Q X1JFRyhfY3R4LCAwKQotKyNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoX2N0eCktPnVjX21jb250 ZXh0LnJlZ3MtPm5pcAotKyNkZWZpbmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhf Y3R4LCAzKQotKyNkZWZpbmUgU0VDQ09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0 KQotKyNkZWZpbmUgU0VDQ09NUF9QQVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQotKyNk ZWZpbmUgU0VDQ09NUF9QQVJNNChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA2KQotKyNkZWZpbmUg U0VDQ09NUF9QQVJNNShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA3KQotKyNkZWZpbmUgU0VDQ09N UF9QQVJNNihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA4KQotKwotKyNkZWZpbmUgU0VDQ09NUF9O Ul9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgbnIpKQotKyNkZWZpbmUg U0VDQ09NUF9BUkNIX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmNo KSkKLSsjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFy Y2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCi0rI2RlZmluZSBTRUND T01QX0lQX0xTQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwg aW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyAwKQotKyNkZWZpbmUgU0VDQ09NUF9BUkdfTVNCX0lEWChu cikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICog KG5yKSArIDQpCi0rI2RlZmluZSBTRUNDT01QX0FSR19MU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0 b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgMCkKLSsKLSsj ZGVmaW5lIFNFQ0NPTVBfUFRfUkVTVUxUKF9yZWdzKSAoX3JlZ3MpLmdwclszXQotKyNkZWZpbmUg U0VDQ09NUF9QVF9TWVNDQUxMKF9yZWdzKSAoX3JlZ3MpLmdwclswXQotKyNkZWZpbmUgU0VDQ09N UF9QVF9JUChfcmVncykgKF9yZWdzKS5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTEoX3Jl Z3MpIChfcmVncykuZ3ByWzNdCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0yKF9yZWdzKSAoX3Jl Z3MpLmdwcls0XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMyhfcmVncykgKF9yZWdzKS5ncHJb NV0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTQoX3JlZ3MpIChfcmVncykuZ3ByWzZdCi0rI2Rl ZmluZSBTRUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLmdwcls3XQotKyNkZWZpbmUgU0VD Q09NUF9QVF9QQVJNNihfcmVncykgKF9yZWdzKS5ncHJbOF0KLSsKLSAjZWxzZQotICNlcnJvciBV bnN1cHBvcnRlZCB0YXJnZXQgcGxhdGZvcm0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3Bv bGljeS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCi1AQCAtODcsNyArODcs OCBAQCBib29sIElzQmFzZWxpbmVQb2xpY3lXYXRjaGVkKGludCBzeXNubykgewotICAgICAgICAg IFN5c2NhbGxTZXRzOjpJc1ByY3RsKHN5c25vKSB8fAotICAgICAgICAgIFN5c2NhbGxTZXRzOjpJ c1Byb2Nlc3NHcm91cE9yU2Vzc2lvbihzeXNubykgfHwKLSAjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICAgICAgIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoc3lzbm8pIHx8Ci0gI2VuZGlm Ci0gI2lmIGRlZmluZWQoX19hcm1fXykKLUBAIC0xOTAsNyArMTkxLDcgQEAgUmVzdWx0RXhwciBF dmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCi0gICB9Ci0gCi0gI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNf XykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBpZiAoc3lzbm8gPT0gX19OUl9tbWFw KQotICAgICByZXR1cm4gUmVzdHJpY3RNbWFwRmxhZ3MoKTsKLSAjZW5kaWYKLUBAIC0yMDgsNyAr MjA5LDcgQEAgUmVzdWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJy bm8sCi0gICAgIHJldHVybiBSZXN0cmljdFByY3RsKCk7Ci0gCi0gI2lmIGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAg IGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChzeXNubyA9PSBfX05SX3NvY2tldHBhaXIpIHsKLSAg ICAgLy8gT25seSBhbGxvdyBBRl9VTklYLCBQRl9VTklYLiBDcmFzaCBpZiBhbnl0aGluZyBlbHNl IGlzIHNlZW4uCi0gICAgIHN0YXRpY19hc3NlcnQoQUZfVU5JWCA9PSBQRl9VTklYLAotQEAgLTI0 OCw3ICsyNDksOCBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2Rlbmll ZF9lcnJubywKLSAgIH0KLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK LSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgaWYgKFN5c2Nh bGxTZXRzOjpJc1NvY2tldENhbGwoc3lzbm8pKQotICAgICByZXR1cm4gUmVzdHJpY3RTb2NrZXRj YWxsQ29tbWFuZCgpOwotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5X3Vu aXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3lfdW5pdHRlc3QuY2MKLUBA IC0yNTcsNyArMjU3LDcgQEAgVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9zeXNpbmZvKTsKLSBU RVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3N5c2xvZyk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMo X19OUl90aW1lcl9jcmVhdGUpOwotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYg IWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gVEVTVF9C QVNFTElORV9TSUdTWVMoX19OUl9ldmVudGZkKTsKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05S X2lub3RpZnlfaW5pdCk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl92c2VydmVyKTsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKLUBAIC0zNSw3ICszNSw4 IEBACi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0g I2lmIGRlZmluZWQoT1NfTElOVVgpICYmICFkZWZpbmVkKE9TX0NIUk9NRU9TKSAmJiAhZGVmaW5l ZChfX2FybV9fKSAmJiBcCi0tICAgICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChQ VFJBQ0VfR0VUX1RIUkVBRF9BUkVBKQotKyAgICAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRl ZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAgICAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVB RF9BUkVBKQotIC8vIEFsc28gaW5jbHVkZSBhc20vcHRyYWNlLWFiaS5oIHNpbmNlIHB0cmFjZS5o IGluIG9sZGVyIGxpYmMgKGZvciBpbnN0YW5jZQotIC8vIHRoZSBvbmUgaW4gVWJ1bnR1IDE2LjA0 IExUUykgaXMgbWlzc2luZyBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLgotIC8vIGFzbS9wdHJhY2Ut YWJpLmggZG9lc24ndCBleGlzdCBvbiBhcm0zMiBhbmQgUFRSQUNFX0dFVF9USFJFQURfQVJFQSBp c24ndAotQEAgLTQ0LDYgKzQ0LDExIEBACi0gI2VuZGlmCi0gI2VuZGlmICAvLyAhT1NfTkFDTF9O T05TRkkKLSAKLSsvLyBPbiBQUEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Ygc3Ry dWN0IHRlcm1pb3MsIHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKLSsjaWZkZWYgX19wb3dl cnBjNjRfXwotKyNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQo T1NfQU5EUk9JRCkKLSAKLSAjaWYgIWRlZmluZWQoRl9EVVBGRF9DTE9FWEVDKQotQEAgLTEwNiw2 ICsxMTEsMTUgQEAgaW5saW5lIGJvb2wgSXNBcmNoaXRlY3R1cmVNaXBzKCkgewotICNlbmRpZgot IH0KLSAKLStpbmxpbmUgYm9vbCBJc0FyY2hpdGVjdHVyZVBQQzY0KCkgewotKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICByZXR1cm4gdHJ1ZTsKLSsjZWxzZQotKyAgcmV0dXJuIGZhbHNl OwotKyNlbmRpZgotK30KLSsKLSsKLSAvLyBVYnVudHUncyB2ZXJzaW9uIG9mIGdsaWJjIGhhcyBh IHJhY2UgY29uZGl0aW9uIGluIHNlbV9wb3N0IHRoYXQgY2FuIGNhdXNlCi0gLy8gaXQgdG8gY2Fs bCBmdXRleCgyKSB3aXRoIGJvZ3VzIG9wIGFyZ3VtZW50cy4gVG8gd29ya2Fyb3VuZCB0aGlzLCB3 ZSBuZWVkCi0gLy8gdG8gYWxsb3cgdGhvc2UgZnV0ZXgoMikgY2FsbHMgdG8gZmFpbCB3aXRoIEVJ TlZBTCwgaW5zdGVhZCBvZiBjcmFzaGluZyB0aGUKLUBAIC0yNDcsNyArMjYxLDggQEAgUmVzdWx0 RXhwciBSZXN0cmljdEZjbnRsQ29tbWFuZHMoKSB7Ci0gICAvLyBvcGVyYXRvci4KLSAgIC8vIEds aWJjIG92ZXJyaWRlcyB0aGUga2VybmVsJ3MgT19MQVJHRUZJTEUgdmFsdWUuIEFjY291bnQgZm9y IHRoaXMuCi0gICB1aW50NjRfdCBrT0xhcmdlRmlsZUZsYWcgPSBPX0xBUkdFRklMRTsKLS0gIGlm IChJc0FyY2hpdGVjdHVyZVg4Nl82NCgpIHx8IElzQXJjaGl0ZWN0dXJlSTM4NigpIHx8IElzQXJj aGl0ZWN0dXJlTWlwcygpKQotKyAgaWYgKElzQXJjaGl0ZWN0dXJlWDg2XzY0KCkgfHwgSXNBcmNo aXRlY3R1cmVJMzg2KCkgfHwgSXNBcmNoaXRlY3R1cmVNaXBzKCkgXAotKyAgICAgIHx8IElzQXJj aGl0ZWN0dXJlUFBDNjQoKSkKLSAgICAga09MYXJnZUZpbGVGbGFnID0gMDEwMDAwMDsKLSAKLSAg IGNvbnN0IEFyZzxpbnQ+IGNtZCgxKTsKLUBAIC0yNzAsNyArMjg1LDcgQEAgUmVzdWx0RXhwciBS ZXN0cmljdEZjbnRsQ29tbWFuZHMoKSB7Ci0gICAgICAgLkRlZmF1bHQoQ3Jhc2hTSUdTWVMoKSk7 Ci0gfQotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gUmVzdWx0RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCkgewotICAg Ly8gVW5mb3J0dW5hdGVseSwgd2UgYXJlIHVuYWJsZSB0byByZXN0cmljdCB0aGUgZmlyc3QgcGFy YW1ldGVyIHRvCi0gICAvLyBzb2NrZXRwYWlyKDIpLiBXaGlsc3QgaW5pdGlhbGx5IHNvdW5kaW5n IGJhZCwgaXQncyBub3Rld29ydGh5IHRoYXQgdmVyeQotQEAgLTQyMSw3ICs0MjIsNyBAQCBSZXN1 bHRFeHByIFJlc3RyaWN0UHJsaW1pdChwaWRfdCB0YXJnZXRfcGlkKSB7Ci0gUmVzdWx0RXhwciBS ZXN0cmljdFB0cmFjZSgpIHsKLSAgIGNvbnN0IEFyZzxpbnQ+IHJlcXVlc3QoMCk7Ci0gICByZXR1 cm4gU3dpdGNoKHJlcXVlc3QpLkNBU0VTKCgKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi0r I2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAg ICAgICAgUFRSQUNFX0dFVFJFR1MsCi0gICAgICAgICBQVFJBQ0VfR0VURlBSRUdTLAotICAgICAg ICAgUFRSQUNFX0dFVF9USFJFQURfQVJFQSwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1l dGVyc19yZXN0cmljdGlvbnMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jl c3RyaWN0aW9ucy5oCi1AQCAtNDgsNyArNDgsNyBAQCBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpS ZXN1bHRFeHByIFJlc3RyaWN0TXByb3RlY3RGbGFncygpOwotIC8vIE9fTk9OQkxPQ0sgfCBPX1NZ TkMgfCBPX0xBUkdFRklMRSB8IE9fQ0xPRVhFQyB8IE9fTk9BVElNRS4KLSBTQU5EQk9YX0VYUE9S VCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygpOwotIAotLSNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gLy8g UmVzdHJpY3Qgc29ja2V0Y2FsbCgyKSB0byBvbmx5IGFsbG93IHNvY2tldHBhaXIoMiksIHNlbmQo MiksIHJlY3YoMiksCi0gLy8gc2VuZHRvKDIpLCByZWN2ZnJvbSgyKSwgc2h1dGRvd24oMiksIHNl bmRtc2coMikgYW5kIHJlY3Ztc2coMikuCi0gU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0 RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwotQEAgLTI5LDcgKzI5LDgg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKLSAgIHN3 aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldHRpbWVvZmRheToKLSAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl90aW1l OgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTQ1LDcgKzQ2LDggQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAg Y2FzZSBfX05SX3NldHRpbWVvZmRheTogIC8vIFByaXZpbGVnZWQuCi0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3N0aW1lOgotICNlbmRpZgotICAgICBkZWZhdWx0Ogot QEAgLTExMSw3ICsxMTMsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50IHN5 c25vKSB7Ci0gICAgIGNhc2UgX19OUl9mYWNjZXNzYXQ6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBl cnJuby4KLSAgICAgY2FzZSBfX05SX2ZjaG1vZGF0OgotICAgICBjYXNlIF9fTlJfZmNob3duYXQ6 ICAvLyBTaG91bGQgYmUgY2FsbGVkIGNob3duYXQgPwotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19hYXJjaDY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfbmV3ZnN0YXRhdDogIC8vIGZzdGF0YXQoKS4gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0g I2VsaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0gICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KQotQEAgLTEzMCw3ICsxMzIsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50 IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9tZW1mZF9jcmVhdGU6Ci0gICAgIGNhc2UgX19OUl9t a2RpcmF0OgotICAgICBjYXNlIF9fTlJfbWtub2RhdDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykK LSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBj YXNlIF9fTlJfb2xkbHN0YXQ6Ci0gICAgIGNhc2UgX19OUl9vbGRzdGF0OgotICNlbmRpZgotQEAg LTE1NCw3ICsxNTYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50IHN5c25v KSB7Ci0gICAgIGNhc2UgX19OUl90cnVuY2F0ZTY0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJf dW5saW5rYXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3V0aW1lOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJf dXRpbWVuc2F0OiAgLy8gTmV3LgotQEAgLTE3Myw3ICsxNzYsOCBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0g ICAgICAgcmV0dXJuIHRydWU7Ci0gLy8gVE9ETyhqbG4pOiB0aGVzZSBzaG91bGQgYmUgZGVuaWVk IGdyYWNlZnVsbHkgYXMgd2VsbCAobW92ZWQgYmVsb3cpLgotLSNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9mYWR2aXNl NjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChf X2kzODZfXykKLUBAIC0xODYsNyArMTkwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk RmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfZmxvY2s6 ICAgICAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19OUl9mc3RhdGZz OiAgICAvLyBHaXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3aG9sZSBmaWxlc3lzdGVtLgotICNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0r ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X2ZzdGF0ZnM2NDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX2ZzeW5jOiAgLy8gRVBFUk0gbm90 IGEgdmFsaWQgZXJybm8uCi1AQCAtMTk4LDYgKzIwMyw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz QWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05S X3N5bmNfZmlsZV9yYW5nZTogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbGlmIGRl ZmluZWQoX19hcm1fXykKLSAgICAgY2FzZSBfX05SX2FybV9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBF UEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0r ICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2UyOiAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJu by4KLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gZmFsc2U7Ci1AQCAtMjIz LDcgKzIzMCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkRmlsZVN5c3RlbUFjY2Vzc1Zp YUZkKGludCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZ2V0ZGVudHM2NDogIC8v IEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0t ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAg IGNhc2UgX19OUl9yZWFkZGlyOgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTI2 NCw3ICsyNzIsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dldFNpbXBsZUlkKGludCBzeXNubykg ewotIGJvb2wgU3lzY2FsbFNldHM6OklzUHJvY2Vzc1ByaXZpbGVnZUNoYW5nZShpbnQgc3lzbm8p IHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2NhcHNldDoKLS0jaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAg ICAgY2FzZSBfX05SX2lvcGVybTogIC8vIEludGVsIHByaXZpbGVnZS4KLSAgICAgY2FzZSBfX05S X2lvcGw6ICAgIC8vIEludGVsIHByaXZpbGVnZS4KLSAjZW5kaWYKLUBAIC0zMTQsNyArMzIyLDgg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkU2lnbmFsSGFuZGxpbmcoaW50IHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9ydF9zaWdwcm9jbWFzazoKLSAgICAgY2FzZSBfX05SX3J0X3NpZ3Jl dHVybjoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0t ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAg IGNhc2UgX19OUl9zaWdhY3Rpb246Ci0gICAgIGNhc2UgX19OUl9zaWdwcm9jbWFzazoKLSAgICAg Y2FzZSBfX05SX3NpZ3JldHVybjoKLUBAIC0zMzEsNyArMzQwLDggQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNBbGxvd2VkU2lnbmFsSGFuZGxpbmcoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNh c2UgX19OUl9zaWduYWxmZDQ6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19h cm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2lncGVuZGluZzoKLSAgICAgY2FzZSBfX05SX3NpZ3N1 c3BlbmQ6Ci0gI2VuZGlmCi1AQCAtMzU1LDcgKzM2NSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz QWxsb3dlZE9wZXJhdGlvbk9uRmQoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19O Ul9kdXAzOgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9zaHV0ZG93bjoKLSAjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0zODksNyAr Mzk5LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JEZWF0aChp bnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX21lbWJhcnJpZXI6Ci0gICAgIGNhc2UgX19OUl93 YWl0NDoKLSAgICAgY2FzZSBfX05SX3dhaXRpZDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykKLSsj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNl IF9fTlJfd2FpdHBpZDoKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoX19HTElCQ19fKQotQEAgLTQx MSw3ICs0MjEsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRl YXRoKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRyZXNzOgotICNlbmRp ZgotICAgICBjYXNlIF9fTlJfdW5zaGFyZToKLS0jaWYgIWRlZmluZWQoX19taXBzX18pICYmICFk ZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3Zm b3JrOgotICNlbmRpZgotICAgICBkZWZhdWx0OgotQEAgLTQ2MCw3ICs0NzAsNyBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgZGVmYXVsdDoKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5l ZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc29ja2V0cGFpcjogIC8vIFdlIHdpbGwgd2FudCB0 byBpbnNwZWN0IGl0cyBhcmd1bWVudC4KLSAjZW5kaWYKLSAgICAgICByZXR1cm4gZmFsc2U7Ci1A QCAtNDcwLDcgKzQ4MCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldE9yTW9kaWZ5 U29ja2V0KGludCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JNb2Rp ZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gI2lmIGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc Ci0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2FjY2VwdDoKLSAgICAgY2Fz ZSBfX05SX2FjY2VwdDQ6Ci0gICAgIGNhc2UgX19OUl9iaW5kOgotQEAgLTQ4NSw3ICs0OTUsOCBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykg ewotIH0KLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp IHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIEJpZyBtdWx0aXBsZXhpbmcg c3lzdGVtIGNhbGwgZm9yIHNvY2tldHMuCi0gYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxs KGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotQEAgLTQ5OSw3ICs1MTAsOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7Ci0gfQotICNlbmRpZgot IAotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot IGJvb2wgU3lzY2FsbFNldHM6OklzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubykg ewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfZ2V0cGVlcm5hbWU6Ci1AQCAt NTI3LDcgKzUzOSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEFkZHJlc3NTcGFjZUFj Y2VzcyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX21pbmNvcmU6Ci0gICAgIGNhc2UgX19O Ul9tbG9ja2FsbDoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0r ICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAg Y2FzZSBfX05SX21tYXA6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgXAotQEAgLTU1OSw3ICs1NzEsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRHZW5lcmFsSW8oaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl9sc2VlazoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl9fbGxzZWVrOgotICNlbmRpZgotICNpZiAhZGVmaW5lZChf X2FhcmNoNjRfXykKLUBAIC01NzEsMjYgKzU4NCwyOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Fs bG93ZWRHZW5lcmFsSW8oaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9yZWFkdjoKLSAgICAg Y2FzZSBfX05SX3ByZWFkNjQ6Ci0gI2lmIGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK LSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfcmVjdjoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfcmVjdmZyb206ICAvLyBDb3VsZCBzcGVjaWZ5IHNvdXJjZS4KLSAgICAg Y2FzZSBfX05SX3JlY3Ztc2c6ICAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCi0gI2VuZGlmCi0t I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9zZWxlY3Q6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9fbmV3c2VsZWN0OgotICNlbmRp ZgotICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0r ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NlbmQ6Ci0gI2VuZGlm Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3Nl bmRtc2c6ICAvLyBDb3VsZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgotICAgICBjYXNlIF9fTlJfc2Vu ZHRvOiAgIC8vIENvdWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCi0gI2VuZGlmCi1AQCAtNjQ3LDcg KzY2Miw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEJhc2ljU2NoZWR1bGVyKGludCBz eXNubykgewotICAgICAgIHJldHVybiB0cnVlOwotICAgICBjYXNlIF9fTlJfZ2V0cHJpb3JpdHk6 Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNl IF9fTlJfbmljZToKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3NldHByaW9yaXR5OgotQEAgLTY1 OSw3ICs2NzUsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihp bnQgc3lzbm8pIHsKLSBib29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBzeXNu bykgewotICAgc3dpdGNoIChzeXNubykgewotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2JkZmx1c2g6Ci0gI2VuZGlmCi0gICAgIGNh c2UgX19OUl9rZXhlY19sb2FkOgotQEAgLTY3NSw3ICs2OTIsOCBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FkbWluT3BlcmF0aW9uKGludCBzeXNubykgewotIAotIGJvb2wgU3lzY2FsbFNldHM6Oklz S2VybmVsTW9kdWxlKGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotLSNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p Ci0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9jcmVhdGVfbW9kdWxlOgotICAgICBjYXNlIF9fTlJfZ2V0X2tlcm5lbF9zeW1zOiAgLy8g U2hvdWxkIEVOT1NZUy4KLSAgICAgY2FzZSBfX05SX3F1ZXJ5X21vZHVsZToKLUBAIC03MDgsNyAr NzI2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGc0NvbnRyb2woaW50IHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl9zd2Fwb2ZmOgotICAgICBjYXNlIF9fTlJfc3dhcG9uOgotICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl91bW91bnQ6Ci0gI2VuZGlmCi0gICAgIGNhc2Ug X19OUl91bW91bnQyOgotQEAgLTcyNCw3ICs3NDMsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc051 bWEoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9nZXRjcHU6Ci0gICAgIGNhc2UgX19OUl9t YmluZDoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX21pZ3JhdGVfcGFnZXM6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9tb3ZlX3BhZ2VzOgot QEAgLTc1MywxNCArNzcyLDE1IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsUHJvY2Vzc0Vu dmlyb25tZW50KGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9f TlJfYWNjdDogIC8vIFByaXZpbGVnZWQuCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9f YWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl9nZXRybGltaXQ6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul91Z2V0cmxpbWl0OgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl91bGltaXQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9nZXRydXNhZ2U6Ci1AQCAt Nzk0LDcgKzgxNCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsU3lzdGVtU3RhdHVzKGlu dCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKLSAgICAgY2FzZSBf X05SX3VuYW1lOgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9vbGR1bmFtZToKLSAg ICAgY2FzZSBfX05SX29sZG9sZHVuYW1lOgotICNlbmRpZgotQEAgLTg4OCw3ICs5MDgsOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZNZXNzYWdlUXVldWUoaW50IHN5c25vKSB7Ci0gI2Vu ZGlmCi0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAvLyBCaWcgc3lzdGVtIFYgbXVsdGlw bGV4aW5nIHN5c3RlbSBjYWxsLgotIGJvb2wgU3lzY2FsbFNldHM6OklzU3lzdGVtVklwYyhpbnQg c3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLUBAIC05MDgsNyArOTI5LDggQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbnlTeXN0ZW1WKGludCBzeXNubykgewotICAgcmV0dXJuIElzU3lzdGVt Vk1lc3NhZ2VRdWV1ZShzeXNubykgfHwgSXNTeXN0ZW1WU2VtYXBob3JlcyhzeXNubykgfHwKLSAg ICAgICAgICBJc1N5c3RlbVZTaGFyZWRNZW1vcnkoc3lzbm8pOwotICNlbGlmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgIHJldHVybiBJc1N5c3RlbVZJcGMoc3lzbm8pOwotICNlbmRpZgotIH0KLUBA IC05NjEsNyArOTgzLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGYU5vdGlmeShpbnQgc3lzbm8p IHsKLSBib29sIFN5c2NhbGxTZXRzOjpJc1RpbWVyKGludCBzeXNubykgewotICAgc3dpdGNoIChz eXNubykgewotICAgICBjYXNlIF9fTlJfZ2V0aXRpbWVyOgotLSNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9hbGFybToK LSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3NldGl0aW1lcjoKLUBAIC0xMDIwLDE4ICsxMDQzLDIy IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzTWlzYyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05S X3N5bmNmczoKLSAgICAgY2FzZSBfX05SX3ZoYW5ndXA6Ci0gLy8gVGhlIHN5c3RlbSBjYWxscyBi ZWxvdyBhcmUgbm90IGltcGxlbWVudGVkLgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9hZnNfc3lzY2FsbDoKLSAj ZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYnJlYWs6Ci0g I2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgICAgY2FzZSBfX05SX2dldHBtc2c6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2d0dHk6Ci0gICAgIGNhc2UgX19OUl9pZGxlOgotICAg ICBjYXNlIF9fTlJfbG9jazoKLUBAIC0xMDM5LDIwICsxMDY2LDIyIEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzTWlzYyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3Byb2Y6Ci0gICAgIGNhc2Ug X19OUl9wcm9maWw6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3B1dHBtc2c6Ci0gI2VuZGlmCi0g I2lmIGRlZmluZWQoX194ODZfNjRfXykKLSAgICAgY2FzZSBfX05SX3NlY3VyaXR5OgotICNlbmRp ZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAot KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zdHR5OgotICNlbmRp ZgotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdHV4Y2FsbDoKLSAjZW5kaWYK LS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAm JiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdnNlcnZlcjoKLSAjZW5k aWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAotQEAgLTQzLDEzICs0MywxNCBAQCBjbGFzcyBT QU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7Ci0gICBzdGF0aWMgYm9vbCBJc0RlbmllZEdldE9y TW9kaWZ5U29ja2V0KGludCBzeXNubyk7Ci0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwK LS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAg IC8vIEJpZyBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwgZm9yIHNvY2tldHMuCi0gICBzdGF0aWMg Ym9vbCBJc1NvY2tldENhbGwoaW50IHN5c25vKTsKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK LS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgc3RhdGljIGJvb2wgSXNOZXR3b3JrU29ja2V0SW5m b3JtYXRpb24oaW50IHN5c25vKTsKLSAjZW5kaWYKLSAKLUBAIC04Nyw3ICs4OCw4IEBAIGNsYXNz IFNBTkRCT1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4K LSAgIHN0YXRpYyBib29sIElzU3lzdGVtVklwYyhpbnQgc3lzbm8pOwotICNlbmRpZgotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm L3N5c2NhbGwuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi1AQCAtMTYsNyArMTYsNyBAQCBuYW1lc3Bh Y2Ugc2FuZGJveCB7Ci0gbmFtZXNwYWNlIHsKLSAKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZf RkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTV9GQU1JTFkpIHx8IFwKLS0gICAgZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSsgICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgfHwgZGVmaW5lZCAoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotIC8vIE51bWJlciB0aGF0J3Mg bm90IGN1cnJlbnRseSB1c2VkIGJ5IGFueSBMaW51eCBrZXJuZWwgQUJJcy4KLSBjb25zdCBpbnQg a0ludmFsaWRTeXNjYWxsTnVtYmVyID0gMHgzNTFkMzsKLSAjZWxzZQotQEAgLTMwOCwxMiArMzA4 LDU2IEBAIGFzbSgvLyBXZSBuZWVkIHRvIGJlIGFibGUgdG8gdGVsbCB0aGUga2VybmVsIGV4YWN0 bHkgd2hlcmUgd2UgbWFkZSBhCi0gICAgIC8vIEVudGVyIHRoZSBrZXJuZWwKLSAgICAgInN2YyAw XG4iCi0gICAgICIyOnJldFxuIgotKyAgICAiLmNmaV9lbmRwcm9jXG4iCi0rICAgICIuc2l6ZSBT eXNjYWxsQXNtLCAuLVN5c2NhbGxBc21cbiIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICAgICIudGV4dFxuIgotKyAgICAiLmFsaWduIDRcbiIKLSsgICAgIi50eXBlIFN5c2NhbGxB c20gQGZ1bmN0aW9uXG4iCi0rICAgICJTeXNjYWxsQXNtOlxuIgotKyAgICAiLmNmaV9zdGFydHBy b2NcbiIKLSsKLSsgICAgLy8gQ2hlY2sgaWYgcjMgaXMgbmVnYXRpdmUKLSsgICAgImNtcGRpIDMs IDBcbiIKLSsgICAgImJndCAyZlxuIgotKwotKyAgICAvLyBMb2FkIGFkZHJlc3Mgb2YgM2YgaW50 byByMyBhbmQgcmV0dXJuCi0rICAgICJtZmxyIDEwXG4iCi0rICAgICJibCAxZlxuIgotKyAgICAi MTogbWZsciAzXG4iCi0rICAgICJtdGxyIDEwXG4iCi0rICAgICJhZGRpIDMsIDMsIDQqMTNcbiIK LSsgICAgImJsclxuIgotKwotKyAgICAvLyBMb2FkIGFyZ3VtZW50cyBmcm9tIGFycmF5IGludG8g cjMtOAotKyAgICAvLyBzYXZlIHBhcmFtIDMgaW4gcjEwCi0rICAgICIyOlxuIgotKyAgICAibXIg MCwgM1xuIgotKyAgICAibGQgMywgMCg0KVxuIgotKyAgICAibGQgNSwgMTYoNClcbiIKLSsgICAg ImxkIDYsIDI0KDQpXG4iCi0rICAgICJsZCA3LCAzMig0KVxuIgotKyAgICAibGQgOCwgNDAoNClc biIKLSsgICAgImxkIDQsIDgoNClcbiIKLSsgICAgImxpIDksIDBcbiIKLSsKLSsgICAgLy8gRW50 ZXIga2VybmVsCi0rICAgICJzY1xuIgotKwotKyAgICAvLyBNYWdpYyByZXR1cm4gYWRkcmVzcwot KyAgICAiMzpcbiIKLSsgICAgLy8gTGlrZSBNSVBTLCBwcGM2NCByZXR1cm4gdmFsdWVzIGFyZSBh bHdheXMgcG9zaXRpdmUuCi0rICAgIC8vIENoZWNrIGZvciBlcnJvciBpbiBjcjAuU08gYW5kIG5l Z2F0ZSB1cG9uIGVycm9yCi0rICAgICJiYyA0LCAzLCA0ZlxuIgotKyAgICAibmVnIDMsIDNcbiIK LSsgICAgIjQ6IGJsclxuIgotKwotICAgICAiLmNmaV9lbmRwcm9jXG4iCi0gICAgICIuc2l6ZSBT eXNjYWxsQXNtLCAuLVN5c2NhbGxBc21cbiIKLSAjZW5kaWYKLSAgICAgKTsgIC8vIGFzbQotIAot LSNpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotIGV4dGVybiAiQyIgewotIGludHB0cl90IFN5c2NhbGxBc20o aW50cHRyX3QgbnIsIGNvbnN0IGludHB0cl90IGFyZ3NbNl0pOwotIH0KLUBAIC00MjcsNiArNDcx LDggQEAgaW50cHRyX3QgU3lzY2FsbDo6Q2FsbChpbnQgbnIsCi0gICAgIHJldCA9IGlub3V0Owot ICAgfQotIAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGludHB0cl90IHJldCA9 IFN5c2NhbGxBc20obnIsIGFyZ3MpOwotICNlbHNlCi0gI2Vycm9yICJVbmltcGxlbWVudGVkIGFy Y2hpdGVjdHVyZSIKLSAjZW5kaWYKLUBAIC00NDMsOCArNDg5LDE4IEBAIHZvaWQgU3lzY2FsbDo6 UHV0VmFsdWVJblVjb250ZXh0KGludHB0cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkgewot ICAgICAvLyBuZWVkcyB0byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgIHJldF92YWwgPSAtcmV0X3Zh bDsKLSAgICAgU0VDQ09NUF9QQVJNNChjdHgpID0gMTsKLS0gIH0gZWxzZQotKyAgfSBlbHNlIHsK LSAgICAgU0VDQ09NUF9QQVJNNChjdHgpID0gMDsKLSsgIH0KLSsjZW5kaWYKLSsjaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gU2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQg YW5kIHNldCBlcnJvciByZWdpc3RlciAoY3IwLlNPKQotKyAgaWYgKHJldF92YWwgPD0gLTEgJiYg cmV0X3ZhbCA+PSAtNDA5NSkgewotKyAgICByZXRfdmFsID0gLXJldF92YWw7Ci0rICAgIGN0eC0+ dWNfbWNvbnRleHQucmVncy0+Y2NyIHw9ICgxIDw8IDI4KTsKLSsgIH0gZWxzZSB7Ci0rICAgIGN0 eC0+dWNfbWNvbnRleHQucmVncy0+Y2NyICY9IH4oMSA8PCAyOCk7Ci0rICB9Ci0gI2VuZGlmCi0g ICBTRUNDT01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsKLSB9 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYvdHJhcC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKLUBAIC0yMzAsNiArMjMwLDIwIEBAIHZv aWQgVHJhcDo6U2lnU3lzKGludCBuciwgTGludXhTaWdJbmZvKiBpbmZvLCB1Y29udGV4dF90KiBj dHgpIHsKLSAgICAgICBTZXRJc0luU2lnSGFuZGxlcigpOwotICAgICB9Ci0gCi0rI2lmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgICAgLy8gT24gcHBjNjQrZ2xpYmMsIHNvbWUgc3lzY2FsbHMg c2VlbSB0byBhY2NpZGVudGFsbHkgbmVnYXRlIHRoZSBmaXJzdAotKyAgICAvLyBwYXJhbWV0ZXIg d2hpY2ggY2F1c2VzIGNoZWNrcyBhZ2FpbnN0IGl0IHRvIGZhaWwuIEZvciBub3csIG1hbnVhbGx5 Ci0rICAgIC8vIG5lZ2F0ZSB0aGVtIGJhY2suCi0rICAgIC8vIFRPRE8oc2hhd25AYW5hc3Rhcy5p byk6IGludmVzdGlnYXRlIHRoaXMgaXNzdWUgZnVydGhlcgotKyAgICBhdXRvIG5yID0gU0VDQ09N UF9TWVNDQUxMKGN0eCk7Ci0rICAgIGlmIChuciA9PSBfX05SX29wZW5hdCB8fCBuciA9PSBfX05S X21rZGlyYXQgfHwgbnIgPT0gX19OUl9mYWNjZXNzYXQgfHwgbnIgPT0gX19OUl9yZWFkbGlua2F0 IHx8Ci0rICAgICAgICBuciA9PSBfX05SX3JlbmFtZWF0IHx8IG5yID09IF9fTlJfcmVuYW1lYXQy IHx8IG5yID09IF9fTlJfbmV3ZnN0YXRhdCB8fCBuciA9PSBfX05SX3VubGlua2F0KSB7Ci0rICAg ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihTRUNDT01QX1BBUk0xKGN0eCkpID4gMCkgewotKyAg ICAgICAgICAgIFNFQ0NPTVBfUEFSTTEoY3R4KSA9IC1TRUNDT01QX1BBUk0xKGN0eCk7Ci0rICAg ICAgICB9Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgLy8gQ29weSB0aGUgc2VjY29tcC1zcGVj aWZpYyBkYXRhIGludG8gYSBhcmNoX3NlY2NvbXBfZGF0YSBzdHJ1Y3R1cmUuIFRoaXMKLSAgICAg Ly8gaXMgd2hhdCB3ZSBhcmUgc2hvd2luZyB0byBUcmFwRm5jIGNhbGxiYWNrcyB0aGF0IHRoZSBz eXN0ZW0gY2FsbAotICAgICAvLyBldmFsdWF0b3IgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzYW5kYm94 LgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl cnZpY2VzL2NyZWRlbnRpYWxzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMuY2MKLUBAIC03OSw3ICs3OSw3 IEBAIGJvb2wgQ2hyb290VG9TYWZlRW1wdHlEaXIoKSB7Ci0gICBwaWRfdCBwaWQgPSAtMTsKLSAg IGFsaWduYXMoMTYpIGNoYXIgc3RhY2tfYnVmW1BUSFJFQURfU1RBQ0tfTUlOXTsKLSAjaWYgZGVm aW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTV9GQU1JTFkp IHx8IFwKLS0gICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSsgICAgZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0g ICAvLyBUaGUgc3RhY2sgZ3Jvd3MgZG93bndhcmQuCi0gICB2b2lkKiBzdGFjayA9IHN0YWNrX2J1 ZiArIHNpemVvZihzdGFja19idWYpOwotICNlbHNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3Mu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z eXNjYWxsX2Jyb2tlci9icm9rZXJfcHJvY2Vzcy5jYwotQEAgLTE1MSw3ICsxNTEsNyBAQCBib29s IEJyb2tlclByb2Nlc3M6OklzU3lzY2FsbEFsbG93ZWQoaW50IHN5c25vKSBjb25zdCB7Ci0gI2lm IGRlZmluZWQoX19OUl9mc3RhdGF0KQotICAgICBjYXNlIF9fTlJfZnN0YXRhdDoKLSAjZW5kaWYK LS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6Ci0gI2VuZGlmCi0gICAgICAg cmV0dXJuICFmYXN0X2NoZWNrX2luX2NsaWVudF8gfHwgYWxsb3dlZF9jb21tYW5kX3NldF8udGVz dChDT01NQU5EX1NUQVQpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaAotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3NlY2NvbXAuaAotQEAgLTI5LDYgKzI5LDkgQEAKLSAjaWZuZGVmIEVNX0FBUkNINjQKLSAj ZGVmaW5lIEVNX0FBUkNINjQgMTgzCi0gI2VuZGlmCi0rI2lmbmRlZiBFTV9QUEM2NAotKyNkZWZp bmUgRU1fUFBDNjQgMjEKLSsjZW5kaWYKLSAKLSAjaWZuZGVmIF9fQVVESVRfQVJDSF82NEJJVAot ICNkZWZpbmUgX19BVURJVF9BUkNIXzY0QklUIDB4ODAwMDAwMDAKLUBAIC01NCw2ICs1NywxMiBA QAotICNpZm5kZWYgQVVESVRfQVJDSF9BQVJDSDY0Ci0gI2RlZmluZSBBVURJVF9BUkNIX0FBUkNI NjQgKEVNX0FBUkNINjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBfX0FVRElUX0FSQ0hfTEUpCi0g I2VuZGlmCi0rI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0Ci0rI2RlZmluZSBBVURJVF9BUkNIX1BQ QzY0IChFTV9QUEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCkKLSsjZW5kaWYKLSsjaWZuZGVmIEFV RElUX0FSQ0hfUFBDNjRMRQotKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2NExFIChFTV9QUEM2NCB8 IF9fQVVESVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKLSsjZW5kaWYKLSAKLSAvLyBG b3IgcHJjdGwuaAotICNpZm5kZWYgUFJfU0VUX1NFQ0NPTVAKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWdu YWwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCi1AQCAtMTMsNyArMTMsNyBAQAotIC8vIChu b3QgdW5kZWZpbmVkLCBidXQgZGVmaW5lZCBkaWZmZXJlbnQgdmFsdWVzIGFuZCBpbiBkaWZmZXJl bnQgbWVtb3J5Ci0gLy8gbGF5b3V0cykuIFNvLCBmaWxsIHRoZSBnYXAgaGVyZS4KLSAjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIAotICNkZWZpbmUgTElOVVhfU0lHSFVQIDEK LSAjZGVmaW5lIExJTlVYX1NJR0lOVCAyCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKLUBAIC0zNSw1ICszNSw5IEBACi0gI2luY2x1ZGUgInNh bmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaCIKLSAjZW5k aWYKLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNpbmNsdWRlICJzYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiCi0rI2VuZGlmCi0rCi0g I2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX0xJTlVYX1NZU0NBTExTX0hf Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vjb250ZXh0 LmgKLUBAIC0xMSw2ICsxMSw4IEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hl YWRlcnMvYXJtX2xpbnV4X3Vjb250ZXh0LmgiCi0gI2VsaWYgZGVmaW5lZChfX2kzODZfXykKLSAj aW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9pMzg2X2xpbnV4X3Vjb250ZXh0 LmgiCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNpbmNsdWRlICJzYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgiCi0gI2Vsc2UKLSAjZXJy b3IgIk5vIHN1cHBvcnQgZm9yIHlvdXIgYXJjaGl0ZWN0dXJlIGluIFBOYUNsIGhlYWRlciIKLSAj ZW5kaWYKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBj NjRfbGludXhfc3lzY2FsbHMuaAotQEAgLTAsMCArMSwxMiBAQAotKy8vIENvcHlyaWdodCAyMDE0 IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKy8vIFVzZSBvZiB0 aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj YW4gYmUKLSsvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotKwotKyNpZm5kZWYgU0FOREJP WF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXwotKyNkZWZpbmUg U0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXwotKwot KyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0rCi0rLy9UT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8g cmVkZWZpbmUgc3lzY2FsbCBudW1iZXJzIGZvciBQUEM2ND8KLSsKLSsjZW5kaWYgIC8vIFNBTkRC T1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRl eHQuaAotQEAgLTAsMCArMSwxMiBAQAotKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBB dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSsvLyBmb3Vu ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotKwotKyNpZm5kZWYgU0FOREJPWF9MSU5VWF9TWVNURU1f SEVBREVSU19QUEM2NF9MSU5VWF9VQ09OVEVYVF9IXwotKyNkZWZpbmUgU0FOREJPWF9MSU5VWF9T WVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9VQ09OVEVYVF9IXwotKwotKyNpbmNsdWRlIDxzeXMv dWNvbnRleHQuaD4KLSsKLSsvL1RPRE86IGlzIGl0IG5lY2Vzc2FyeSB0byByZWRlZmluZSB1Y29u dGV4dCBvbiBQUEM2ND8KLSsKLSsjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURF UlNfUFBDNjRfTElOVVhfVUNPTlRFWFRfSF8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRl cmVyX3BvbGljeV9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9s aWN5X2xpbnV4LmNjCi1AQCAtMTUsNiArMTUsMTEgQEAKLSAjaW5jbHVkZSAic2FuZGJveC9saW51 eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oIgotICNpbmNsdWRlICJzZXJ2aWNlcy9z ZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9zYW5kYm94X2xpbnV4LmgiCi0gCi0rLy8gT24g UFBDNjQsIFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBzbyB3 ZSBtdXN0IGluY2x1ZGUgdGVybWlvcy5oCi0rI2lmZGVmIF9fcG93ZXJwYzY0X18KLSsjaW5jbHVk ZSA8dGVybWlvcy5oPgotKyNlbmRpZgotKwotIC8vIFRPRE8odmlnbmF0dGkpOiByZXBsYWNlIHRo ZSBsb2NhbCBkZWZpbml0aW9ucyBiZWxvdyB3aXRoICNpbmNsdWRlCi0gLy8gPGxpbnV4L2RtYS1i dWYuaD4gb25jZSBrZXJuZWwgdmVyc2lvbiA0LjYgYmVjb21lcyB3aWRlbHkgdXNlZC4KLSAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdM RS9Db25zdGFudHMuaAotQEAgLTksNiArOSw3IEBACi0gI2lmbmRlZiBMSUJBTkdMRV9DT05TVEFO VFNfSF8KLSAjZGVmaW5lIExJQkFOR0xFX0NPTlNUQU5UU19IXwotIAotKyNpbmNsdWRlIDxjc3Rk ZGVmPgotICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKLSAKLSBuYW1lc3BhY2UgZ2wKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vaGVhcC9hc20vQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaGVhcC9h c20vQlVJTEQuZ24KLUBAIC00Niw2ICs0NiwxMCBAQCBpZiAoY3VycmVudF9jcHUgPT0gIng4NiIg fHwgY3VycmVudF9jcHUgPT0gIng2NCIpIHsKLSAgICAgICBzb3VyY2VzID0gWwotICAgICAgICAg IlNhdmVSZWdpc3RlcnNfbWlwczY0LlMiLAotICAgICAgIF0KLSsgICAgfSBlbHNlIGlmIChjdXJy ZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgICAgc291cmNlcyA9IFsKLSsgICAgICAgICJTYXZl UmVnaXN0ZXJzX3BwYzY0LlMiLAotKyAgICAgIF0KLSAgICAgfQotIAotICAgICBpZiAoY3VycmVu dF9jcHUgPT0gImFybSIpIHsKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNtL1NhdmVSZWdpc3RlcnNfcHBjNjQuUwotQEAgLTAsMCAr MSw2MCBAQAotKy8qCi0rICogdHlwZWRlZiB2b2lkICgqUHVzaEFsbFJlZ2lzdGVyc0NhbGxiYWNr KShTYWZlUG9pbnRCYXJyaWVyKiwgVGhyZWFkU3RhdGUqLCBpbnRwdHJfdCopOwotKyAqIGV4dGVy biAiQyIgdm9pZCBQdXNoQWxsUmVnaXN0ZXJzKFNhZmVQb2ludEJhcnJpZXIqLCBUaHJlYWRTdGF0 ZSosIFB1c2hBbGxSZWdpc3RlcnNDYWxsYmFjaykKLSsgKi8KLSsKLSsudHlwZSBQdXNoQWxsUmVn aXN0ZXJzLCAlZnVuY3Rpb24KLSsuZ2xvYmFsIFB1c2hBbGxSZWdpc3RlcnMKLSsuaGlkZGVuIFB1 c2hBbGxSZWdpc3RlcnMKLStQdXNoQWxsUmVnaXN0ZXJzOgotKyAgICAgICAgLy8gUHVzaCBhbGwg Y2FsbGVlLXNhdmVzIHJlZ2lzdGVycyB0byBnZXQgdGhlbQotKyAgICAgICAgLy8gb24gdGhlIHN0 YWNrIGZvciBjb25zZXJ2YXRpdmUgc3RhY2sgc2Nhbm5pbmcuCi0rICAgICAgICAvLyBSZXNlcnZl IHNwYWNlIGZvciBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzIGFuZCBtaW5pbWFsIHN0YWNrIGZyYW1l LgotKyAgICAgICAgbWZsciAwICAgICAgICAgIyByMCA9IExSCi0rICAgICAgICBzdGQgMCwxNigx KSAgICAjIHN0b3JlIExSIGF0IGFkZHIgc3ArMTYKLSsgICAgICAgIHN0ZHUgMSwtMTc2KDEpICMg Z3JvdyBzdGFjayBieSAxNzYgYnl0ZXMgYW5kIHN0b3JlIG5ldyBzdGFjayB0b3AgcHRyIHRvIHIx Ci0rICAgICAgICAgICAgIyAzMjE4KjggPSBtaW4gc3RhY2sgIG5vbi12b2xhdGlsZSByZWdpc3Rl cnMKLSsKLSsgICAgICAgIC8vIFNhdmUgdGhlIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMKLSsgICAg ICAgIHN0ZCAzMSwxNjgoMSkgICMgc3RvcmUgcjMxIHRvIGFkZHIgc3ArMTY4IAotKyAgICAgICAg c3RkIDMwLDE2MCgxKSAgIyBldGMuLi4KLSsgICAgICAgIHN0ZCAyOSwxNTIoMSkKLSsgICAgICAg IHN0ZCAyOCwxNDQoMSkKLSsgICAgICAgIHN0ZCAyNywxMzYoMSkKLSsgICAgICAgIHN0ZCAyNiwx MjgoMSkKLSsgICAgICAgIHN0ZCAyNSwxMjAoMSkKLSsgICAgICAgIHN0ZCAyNCwxMTIoMSkKLSsg ICAgICAgIHN0ZCAyMywxMDQoMSkKLSsgICAgICAgIHN0ZCAyMiw5NigxKQotKyAgICAgICAgc3Rk IDIxLDg4KDEpCi0rICAgICAgICBzdGQgMjAsODAoMSkKLSsgICAgICAgIHN0ZCAxOSw3MigxKQot KyAgICAgICAgc3RkIDE4LDY0KDEpCi0rICAgICAgICBzdGQgMTcsNTYoMSkKLSsgICAgICAgIHN0 ZCAxNiw0OCgxKQotKyAgICAgICAgc3RkIDE1LDQwKDEpCi0rICAgICAgICBzdGQgMTQsMzIoMSkK LSsgICAgICAgIAotKyAgICAgICAgLy8gTm90ZTogdGhlIGNhbGxlZS1zYXZlZCBmbG9hdGluZyBw b2ludCByZWdpc3RlcnMgZG8gbm90IG5lZWQgdG8gYmUKLSsgICAgICAgIC8vIGNvcGllZCB0byB0 aGUgc3RhY2ssIGJlY2F1c2UgZnAgcmVnaXN0ZXJzIG5ldmVyIGhvbGQgaGVhcCBwb2ludGVycwot KyAgICAgICAgLy8gYW5kIHNvIGRvIG5vdCBuZWVkIHRvIGJlIGtlcHQgdmlzaWJsZSB0byB0aGUg Z2FyYmFnZSBjb2xsZWN0b3IuCi0rICAgICAgICAKLSsgICAgICAgIC8vIFBhc3MgdGhlIHR3byBm aXJzdCBhcmd1bWVudHMgdW50b3VjaGVkIGluIHIzIGFuZCByNCBhbmQgdGhlCi0rICAgICAgICAv LyBzdGFjayBwb2ludGVyIHRvIHRoZSBjYWxsYmFjay4KLSsKLSsgICAgICAgIHN0ZCAyLCAyNCgx KSAgICMgc2F2ZSByMiB0byBzcCsyNCBhZGRyCi0rICAgICAgICBtdGN0ciA1ICAgICAgICAjIGNv cHkgM3JkIGZ1bmN0aW9uIGFyZyAoY2FsbGJhY2sgZm4gcG9pbnRlcikgdG8gQ1RSCi0rICAgICAg ICBtciAxMiwgNSAgICAgICAjIHIxMiBtdXN0IGhvbGQgYWRkcmVzcyBvZiBjYWxsYmFjayB3ZSBh cmUgZ29pbmcgdG8gY2FsbCAKLSsgICAgICAgICAgICAgICAgICAgICAgICMgIGZvciBwb3NpdGlv bi1pZGVwZW5kZW50IGZ1bmN0aW9ucyBpbnNpZGUgdGhlIGNhbGxiYWNrIHRvIHdvcmsKLSsgICAg ICAgIG1yIDUsIDEgICAgICAgICMgc2V0IGN1cnJlbnQgc3AgKHN0YWNrIHRvcCkgYXMgM3JkIGFy Z3VtZW50IGZvciB0aGUgY2FsbGJhY2sKLSsgICAgICAgIGJjdHJsICAgICAgICAgICMgc2V0IExS IHRvIFBDKzQgYW5kIGNhbGwgdGhlIGNhbGxiYWNrCi0rICAgICAgICBsZCAyLCAyNCgxKSAgICAj IHJlc3RvcmUgcjIgZnJvbSBzcCsyNCBhZGRyCi0rCi0rICAgICAgICAvLyBBZGp1c3Qgc3RhY2ss IHJlc3RvcmUgcmV0dXJuIGFkZHJlc3MgYW5kIHJldHVybi4KLSsgICAgICAgIC8vIE5vdGU6IHRo ZSBjb3BpZWQgcmVnaXN0ZXJzIGRvIG5vdCBuZWVkIHRvIGJlIHJlbG9hZGVkIGhlcmUsCi0rICAg ICAgICAvLyBiZWNhdXNlIHRoZXkgd2VyZSBwcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlZCByb3V0aW5l LgotKyAgICAgICAgYWRkaSAxLDEsMTc2ICAgIyByZXN0b3JlIG9yaWdpbmFsIFNQIGJ5IGRvaW5n IHNwICs9IDE3NgotKyAgICAgICAgbGQgMCwxNigxKSAgICAgIyByZXN0b3JlIG9yaWdpbmFsIExS IGZyb20gYWRkciBzcCsxNgotKyAgICAgICAgbXRsciAwICAgICAgICAgIyAuLi4gY29weSBpdCB0 byB0aGUgYWN0dWFsIExSCi0rICAgICAgICBibHIgICAgICAgICAgICAjIHJldHVybiB0byBMUiBh ZGRyCi0rCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvaGVhcF9wYWdlLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZv cm0vaGVhcC9oZWFwX3BhZ2UuaAotQEAgLTY3LDExICs2NywxMiBAQCBjb25zdGV4cHIgc2l6ZV90 IGtCbGlua1BhZ2VCYXNlTWFzayA9IH5rQmxpbmtQYWdlT2Zmc2V0TWFzazsKLSBjb25zdGV4cHIg c2l6ZV90IGtCbGlua1BhZ2VzUGVyUmVnaW9uID0gMTA7Ci0gCi0gLy8gVE9ETyhueWEpOiBSZXBs YWNlIHRoaXMgd2l0aCBzb21ldGhpbmcgbGlrZSAjaWYgRU5BQkxFX05BQ0wuCi0tI2lmIDAKLSsj aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAvLyBOYUNsJ3Mgc3lzdGVtIHBhZ2Ugc2l6ZSBp cyA2NCBLaUIuIFRoaXMgY2F1c2VzIGEgcHJvYmxlbSBpbiBPaWxwYW4ncyBoZWFwCi0gLy8gbGF5 b3V0IGJlY2F1c2UgT2lscGFuIGFsbG9jYXRlcyB0d28gZ3VhcmQgcGFnZXMgZm9yIGVhY2ggQmxp bmsgcGFnZSAod2hvc2UKLSAvLyBzaXplIGlzIGtCbGlua1BhZ2VTaXplID0gMl4xNyA9IDEyOCBL aUIpLiBTbyB3ZSBkb24ndCB1c2UgZ3VhcmQgcGFnZXMgaW4KLSAvLyBOYUNsLgotKy8vIFRoZSBz YW1lIGlzc3VlIGhvbGRzIGZvciBwcGM2NCBzeXN0ZW1zLCB3aGljaCB1c2UgYSA2NGsgcGFnZSBz aXplLgotIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rR3VhcmRQYWdlU2l6ZSA9IDA7Ci0gI2Vsc2UK LSBjb25zdGV4cHIgc2l6ZV90IGtCbGlua0d1YXJkUGFnZVNpemUgPSBiYXNlOjprU3lzdGVtUGFn ZVNpemU7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9kdG9hL3V0aWxzLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZv cm0vd3RmL2R0b2EvdXRpbHMuaAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAvLyBkaXNhYmxlZC4pCi0g Ly8gT24gTGludXgseDg2IDg5MjU1ZS0yMiAhPSBEaXZfZG91YmxlKDg5MjU1LjAvMWUyMikKLSAj aWYgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX0FS TUVMX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX01JUFNF TF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMX18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAjZGVmaW5lIERPVUJMRV9DT05WRVJTSU9OX0NPUlJF Q1RfRE9VQkxFX09QRVJBVElPTlMgMQotICNlbGlmIGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5l ZChfX2kzODZfXykKLSAjaWYgZGVmaW5lZChfV0lOMzIpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9CVUlMRC5nbgotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQu Z24KLUBAIC0xMDAsNiArMTAwLDEzIEBAIGlmIChpc193aW4gJiYgIWlzX21zYW4gJiYgY3VycmVu dF9jcHUgIT0gImFybTY0IikgewotICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICBwdWJsaWNfY29u ZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCi0gICAgICAgfQotKyAgICB9IGVsc2UgaWYgKGN1 cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKLSsgICAgICBpZiAoaXNfbGludXgpIHsKLSsgICAgICAg ICMgVE9ETzogcHBjNjQgKGJlKSBjaGVjawotKyAgICAgICAgc291cmNlcyArPSBjcnlwdG9fc291 cmNlc19saW51eF9wcGM2NGxlCi0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIHB1YmxpY19jb25m aWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KLSsgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAg ICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZpZyIgXQotICAgICB9Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Jhd19jb250ZXh0X2NwdS5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Jhd19jb250 ZXh0X2NwdS5oCi1AQCAtNDQsNiArNDQsOCBAQCB0eXBlZGVmIE1EUmF3Q29udGV4dEFSTSBSYXdD b250ZXh0Q1BVOwotIHR5cGVkZWYgTURSYXdDb250ZXh0QVJNNjRfT2xkIFJhd0NvbnRleHRDUFU7 Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIE1EUmF3Q29udGV4dE1JUFMgUmF3 Q29udGV4dENQVTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdHlwZWRlZiBNRFJh d0NvbnRleHRQUEM2NCBSYXdDb250ZXh0Q1BVOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUg aGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9p bmZvLmNjCi1AQCAtMjcwLDcgKzI3MCw0MiBAQCB2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250 ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotICAgb3V0LT5mbG9hdF9zYXZlLmZpciA9 IG1jb250ZXh0LmZwY19laXI7Ci0gI2VuZGlmCi0gfQotLSNlbmRpZiAgLy8gX19taXBzX18KLSsK LSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rdWludHB0cl90IFRocmVhZEluZm86 OkdldEluc3RydWN0aW9uUG9pbnRlcigpIGNvbnN0IHsKLSsgICAgcmV0dXJuIG1jb250ZXh0Lmdw X3JlZ3NbUFRfTklQXTsKLSt9Ci0rCi0rdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChS YXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsKLSsgICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURf Q09OVEVYVF9QUEM2NF9GVUxMOwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRf UFBDNjRfR1BSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmdwcltpXSA9IG1jb250ZXh0Lmdw X3JlZ3NbaV07Ci0rCi0rICAgIG91dC0+bHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0xOS107Ci0r ICAgIG91dC0+c3JyMCA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSsgICAgb3V0LT5zcnIx ID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdOwotKyAgICBvdXQtPmNyID0gbWNvbnRleHQuZ3Bf cmVnc1tQVF9DQ1JdOwotKyAgICBvdXQtPnhlciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXTsK LSsgICAgb3V0LT5jdHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NUUl07Ci0rICAgIAotKyAgICBm b3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsr KQotKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IG1jb250ZXh0LmZwX3JlZ3Nb aV07Ci0rCi0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IG1jb250ZXh0LmZwX3JlZ3NbTkZQ UkVHLTFdOwotKwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQ Q19WUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0g XAotKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy52cnJlZ3NbaV1bMF0pIDw8IDMyKSAK LSsgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzFdLCAKLSsgICAg ICAgICAgICAoKCh1aW50NjRfdCl2cmVncy52cnJlZ3NbaV1bMl0pIDw8IDMyKQotKyAgICAgICAg ICAgICAgICAgICAgICAgICB8IHZyZWdzLnZycmVnc1tpXVszXX07Ci0rCi0rICAgIG91dC0+dnJz YXZlID0gdnJlZ3MudnJzYXZlOwotKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnNjciA9IHsw LCB2cmVncy52c2NyLnZzY3Jfd29yZH07Ci0rICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cnZh bGlkID0gMHhGRkZGRkZGRjsgCi0rfQotKyNlbmRpZiAgLy8gX19wb3dlcnBjNjRfXwotIAotIHZv aWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoqIGdwX3JlZ3Ms IHNpemVfdCogc2l6ZSkgewotICAgYXNzZXJ0KGdwX3JlZ3MgfHwgc2l6ZSk7Ci1AQCAtMjc5LDYg KzMxNCwxMSBAQCB2b2lkIFRocmVhZEluZm86OkdldEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJzKHZv aWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgICAgKmdwX3JlZ3MgPSBtY29udGV4dC5n cmVnczsKLSAgIGlmIChzaXplKQotICAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5ncmVncyk7 Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaWYgKGdwX3JlZ3MpCi0rICAgICpn cF9yZWdzID0gbWNvbnRleHQuZ3BfcmVnczsKLSsgIGlmIChzaXplKQotKyAgICAqc2l6ZSA9IHNp emVvZihtY29udGV4dC5ncF9yZWdzKTsKLSAjZWxzZQotICAgaWYgKGdwX3JlZ3MpCi0gICAgICpn cF9yZWdzID0gJnJlZ3M7Ci1AQCAtMjk0LDYgKzMzNCwxMSBAQCB2b2lkIFRocmVhZEluZm86Okdl dEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSkgewot ICAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcHJlZ3M7Ci0gICBpZiAoc2l6ZSkKLSAgICAgKnNp emUgPSBzaXplb2YobWNvbnRleHQuZnByZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0rICBpZiAoZnBfcmVncykKLSsgICAgKmZwX3JlZ3MgPSAmbWNvbnRleHQuZnBfcmVnczsK LSsgIGlmIChzaXplKQotKyAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5mcF9yZWdzKTsKLSAj ZWxzZQotICAgaWYgKGZwX3JlZ3MpCi0gICAgICpmcF9yZWdzID0gJmZwcmVnczsKLUBAIC0zMDIs NCArMzQ3LDEzIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2 b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0gI2VuZGlmCi0gfQotIAotKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rdm9pZCBUaHJlYWRJbmZvOjpHZXRWZWN0b3JSZWdpc3RlcnMo dm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0rICAgIGlmICh2X3JlZ3MpCi0rICAgICAg ICAqdl9yZWdzID0gJnZyZWdzOwotKyAgICBpZiAoc2l6ZSkKLSsgICAgICAgICpzaXplID0gc2l6 ZW9mKHZyZWdzKTsKLSt9Ci0rI2VuZGlmCi0rCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVh a3BhZAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJl YWRfaW5mby5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9u L3RocmVhZF9pbmZvLmgKLUBAIC02OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0g ICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8c3lzL3VzZXIuaD4KLSAgIHN0cnVj dCB1c2VyX3JlZ3Nfc3RydWN0IHJlZ3M7Ci0gICBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RydWN0IGZw cmVnczsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBVc2UgdGhlIHN0cnVj dHVyZXMgZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+LgotKyAgbWNvbnRleHRfdCBtY29udGV4 dDsKLSsgIHZycmVnc2V0X3QgdnJlZ3M7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8v IFVzZSB0aGUgc3RydWN0dXJlIGRlZmluZWQgaW4gPHN5cy91Y29udGV4dC5oPi4KLSAgIG1jb250 ZXh0X3QgbWNvbnRleHQ7Ci1AQCAtODQsNiArODgsMTEgQEAgc3RydWN0IFRocmVhZEluZm8gewot IAotICAgLy8gUmV0dXJucyB0aGUgcG9pbnRlciBhbmQgc2l6ZSBvZiBmbG9hdCBwb2ludCByZWdp c3RlciBhcmVhLgotICAgdm9pZCBHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9y ZWdzLCBzaXplX3QqIHNpemUpOwotKwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAv LyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9mIHRoZSB2ZWN0b3IgcmVnaXN0ZXIgYXJl YS4gKFBQQzY0IG9ubHkpCi0rICB2b2lkIEdldFZlY3RvclJlZ2lzdGVycyh2b2lkKiogdl9yZWdz LCBzaXplX3QqIHNpemUpOwotKyNlbmRpZgotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2ds ZV9icmVha3BhZAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1v bi91Y29udGV4dF9yZWFkZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dy aXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi1AQCAtMjU0LDYgKzI1NCw0OCBAQCB2b2lk IFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0 IHVjb250ZXh0X3QgKnVjKSB7Ci0gICBvdXQtPmZsb2F0X3NhdmUuZmlyID0gdWMtPnVjX21jb250 ZXh0LmZwY19laXI7ICAvLyBVbnVzZWQuCi0gI2VuZGlmCi0gfQotKwotKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSsKLSt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9p bnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgewotKyAgICByZXR1cm4gdWMtPnVjX21jb250ZXh0 LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdOwotK30KLSsKLSt1aW50cHRyX3QgVUNv bnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1Yykg ewotKyAgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSt9Ci0rCi0r dm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0LCBj b25zdCB1Y29udGV4dF90KiB1YywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB2cnJlZ3NldF90KiB2cmVncykgewotKyAgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBN RF9DT05URVhUX1BQQzY0X0ZVTEw7Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09O VEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+Z3ByW2ldID0gdWMtPnVj X21jb250ZXh0LmdwX3JlZ3NbaV07Ci0rCi0rICAgIG91dC0+bHIgPSB1Yy0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9MTktdOyAgICAKLSsgICAgb3V0LT5zcnIwID0gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfTklQXTsKLSsgICAgb3V0LT5zcnIxID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfTVNSXTsKLSsgICAgb3V0LT5jciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NDUl07 Ci0rICAgIG91dC0+eGVyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXTsKLSsgICAg b3V0LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOwotKyAgICAKLSsgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkr KykKLSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQu ZnBfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gdWMtPnVjX21jb250 ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOwotKwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZF Q1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT52ZWN0b3Jfc2F2 ZS5zYXZlX3ZyW2ldID0KLSsgICAgICAgICAgICB7KCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tp XVswXSkgPDwgMzIpIAotKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLT52cnJlZ3Nb aV1bMV0sIAotKyAgICAgICAgICAgICAoKCh1aW50NjRfdCl2cmVncy0+dnJyZWdzW2ldWzJdKSA8 PCAzMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzNdfTsK LSsKLSsgICAgb3V0LT52cnNhdmUgPSB2cmVncy0+dnJzYXZlOwotKyAgICBvdXQtPnZlY3Rvcl9z YXZlLnNhdmVfdnNjciA9IHswLCB2cmVncy0+dnNjci52c2NyX3dvcmR9OwotKyAgICBvdXQtPnZl Y3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7IAotK30KLSsKLSAjZW5kaWYKLSAK LSB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCi1AQCAt NTQsNiArNTQsOSBAQCBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIgewotICNlbGlmIGRlZmluZWQoX19h YXJjaDY0X18pCi0gICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpv dXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUg Km91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB2cnJlZ3NldF90KiB2cmVncyk7Ci0gI2Vsc2UKLSAgIHN0YXRpYyB2b2lkIEZpbGxD UFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpOwotICNl bmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRs ZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5k bGVyLmNjCi1AQCAtNDY3LDkgKzQ2NywxNiBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OkhhbmRs ZVNpZ25hbChpbnQgLypzaWcqLywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1YykgewotICAgICBt ZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8uZmxvYXRfc3RhdGUsIGZwX3B0ciwKLSAgICAgICAgICAg IHNpemVvZihnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlKSk7Ci0gICB9Ci0rI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gT24gUFBDNjQsIHdlIG11c3QgY29weSBWUiBzdGF0 ZQotKyAgdWNvbnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0X3QqKXVjOwotKyAgaWYgKHVjX3B0 ci0+dWNfbWNvbnRleHQudl9yZWdzKSB7Ci0rICAgIG1lbWNweSgmZ19jcmFzaF9jb250ZXh0Xy52 ZWN0b3Jfc3RhdGUsIHVjX3B0ci0+dWNfbWNvbnRleHQudl9yZWdzLAotKyAgICAgICAgICAgc2l6 ZW9mKGdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlKSk7Ci0rICB9Ci0gI2VsaWYgIWRlZmlu ZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgIC8vIEZQIHN0YXRlIGlz IG5vdCBwYXJ0IG9mIHVzZXIgQUJJIG9uIEFSTSBMaW51eC4KLS0gIC8vIEluIGNhc2Ugb2YgTUlQ UyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdWNvbnRleHRfdAotKyAgLy8gSW4g Y2FzZSBvZiBNSVBTLCBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdWNvbnRleHRf dAotICAgLy8gYW5kICdmbG9hdF9zdGF0ZScgaXMgbm90IGEgbWVtYmVyIG9mIENyYXNoQ29udGV4 dC4KLSAgIHVjb250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKLSAgIGlmICh1Y19w dHItPnVjX21jb250ZXh0LmZwcmVncykgewotQEAgLTcwNywxMSArNzE0LDE5IEBAIGJvb2wgRXhj ZXB0aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgpIHsKLSAgIH0KLSAjZW5kaWYKLSAKLS0jaWYg IWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCi0rI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19h YXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKSBcCi0rICAgICYmICFkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gICAvLyBGUFUgc3RhdGUgaXMgbm90IHBhcnQgb2YgQVJNIEVBQkkgdWNvbnRl eHRfdC4KLSAgIG1lbWNweSgmY29udGV4dC5mbG9hdF9zdGF0ZSwgY29udGV4dC5jb250ZXh0LnVj X21jb250ZXh0LmZwcmVncywKLSAgICAgICAgICBzaXplb2YoY29udGV4dC5mbG9hdF9zdGF0ZSkp OwotICNlbmRpZgotKwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBWZWN0b3Ig cmVnaXN0ZXJzIG11c3QgYmUgY29waWVkIG9uIFBQQzY0Ci0rICBtZW1jcHkoJmNvbnRleHQudmVj dG9yX3N0YXRlLCBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQudl9yZWdzLAotKyAgICAgICAg IHNpemVvZihjb250ZXh0LnZlY3Rvcl9zdGF0ZSkpOwotKyNlbmRpZgotKwotICAgY29udGV4dC50 aWQgPSBzeXNfZ2V0dGlkKCk7Ci0gCi0gICAvLyBBZGQgYW4gZXhjZXB0aW9uIHN0cmVhbSB0byB0 aGUgbWluaWR1bXAgZm9yIGJldHRlciByZXBvcnRpbmcuCi1AQCAtNzMyLDYgKzc0Nyw5IEBAIGJv b2wgRXhjZXB0aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgpIHsKLSAjZWxpZiBkZWZpbmVkKF9f bWlwc19fKQotICAgY29udGV4dC5zaWdpbmZvLnNpX2FkZHIgPQotICAgICAgIHJlaW50ZXJwcmV0 X2Nhc3Q8dm9pZCo+KGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5wYyk7Ci0rI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29udGV4dC5zaWdpbmZvLnNpX2FkZHIgPQotKyAgICAg IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5ncF9y ZWdzW1BUX05JUF0pOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBv cnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCi1AQCAtMTkyLDcgKzE5MiwxMSBA QCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyIHsKLSAgICAgc2lnaW5mb190IHNpZ2luZm87Ci0gICAg IHBpZF90IHRpZDsgIC8vIHRoZSBjcmFzaGluZyB0aHJlYWQuCi0gICAgIHVjb250ZXh0X3QgY29u dGV4dDsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK LSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAvLyBQUEM2NCdzIEZQIHN0YXRlIGlz IGEgcGFydCBvZiB1Y29udGV4dF90IGxpa2UgTUlQUyBidXQgdGhlIHZlY3RvcgotKyAgICAvLyBz dGF0ZSBpcyBub3QsIHNvIGEgc3RydWN0IGlzIG5lZWRlZC4KLSsgICAgdnN0YXRlX3QgdmVjdG9y X3N0YXRlOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBz X18pCi0gICAgIC8vICNpZmRlZiB0aGlzIG91dCBiZWNhdXNlIEZQIHN0YXRlIGlzIG5vdCBwYXJ0 IG9mIHVzZXIgQUJJIGZvciBMaW51eCBBUk0uCi0gICAgIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51 eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdWNvbnRleHRfdCBzbwotICAgICAvLyAnZmxv YXRfc3RhdGUnIGlzIG5vdCByZXF1aXJlZC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9o YW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlcl91bml0dGVzdC5jYwotQEAgLTMwNyw3 ICszMDcsNyBAQCBURVNUKEV4Y2VwdGlvbkhhbmRsZXJUZXN0LCBQYXJhbGxlbENoaWxkQ3Jhc2hl c0RvbnRIYW5nKSB7Ci0gICB9Ci0gCi0gICAvLyBXYWl0IGEgd2hpbGUgdW50aWwgdGhlIGNoaWxk IHNob3VsZCBoYXZlIGNyYXNoZWQuCi0tICB1c2xlZXAoMTAwMDAwMCk7Ci0rICB1c2xlZXAoMjAw MDAwMCk7Ci0gICAvLyBLaWxsIHRoZSBjaGlsZCBpZiBpdCBpcyBzdGlsbCBydW5uaW5nLgotICAg a2lsbChjaGlsZCwgU0lHS0lMTCk7Ci0gCi1AQCAtNTc2LDYgKzU3Niw4IEBAIGNvbnN0IHVuc2ln bmVkIGNoYXIga0lsbGVnYWxJbnN0cnVjdGlvbltdID0gewotICNpZiBkZWZpbmVkKF9fbWlwc19f KQotICAgLy8gbWZjMiB6ZXJvLEltcGwgLSB1c3VhbGx5IGlsbGVnYWwgaW4gdXNlcnNwYWNlLgot ICAgMHg0OCwgMHgwMCwgMHgwMCwgMHg0OAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEgLy8gQ3Jhc2hlcyBvbiBhIHRlc3RlZCBQT1dFUjkg Y3B1Ci0gI2Vsc2UKLSAgIC8vIFRoaXMgY3Jhc2hlcyB3aXRoIFNJR0lMTCBvbiB4ODYveDg2LTY0 L2FybS4KLSAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYKLUBAIC03NzEsMTAgKzc3MywxMCBAQCBU RVNUKEV4Y2VwdGlvbkhhbmRsZXJUZXN0LCBJbnN0cnVjdGlvblBvaW50ZXJNZW1vcnlNYXhCb3Vu ZCkgewotIAotICAgLy8gVGhlc2UgYXJlIGRlZmluZWQgaGVyZSBzbyB0aGUgcGFyZW50IGNhbiB1 c2UgdGhlbSB0byBjaGVjayB0aGUKLSAgIC8vIGRhdGEgZnJvbSB0aGUgbWluaWR1bXAgYWZ0ZXJ3 YXJkcy4KLS0gIC8vIFVzZSA0ayBoZXJlIGJlY2F1c2UgdGhlIE9TIHdpbGwgaGFuZCBvdXQgYSBz aW5nbGUgcGFnZSBldmVuCi0rICAvLyBVc2UgdGhlIHBhZ2Ugc2l6ZSBoZXJlIGJlY2F1c2UgdGhl IE9TIHdpbGwgaGFuZCBvdXQgYSBzaW5nbGUgcGFnZSBldmVuCi0gICAvLyBpZiBhIHNtYWxsZXIg c2l6ZSBpcyByZXF1ZXN0ZWQsIGFuZCB0aGlzIHRlc3Qgd2FudHMgdG8KLSAgIC8vIHRlc3QgdGhl IHVwcGVyIGJvdW5kIG9mIHRoZSBtZW1vcnkgcmFuZ2UuCi0tICBjb25zdCB1aW50MzJfdCBrTWVt b3J5U2l6ZSA9IDQwOTY7ICAvLyBieXRlcwotKyAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUg PSBnZXRwYWdlc2l6ZSgpOyAgLy8gYnl0ZXMKLSAgIGNvbnN0IGludCBrT2Zmc2V0ID0ga01lbW9y eVNpemUgLSBzaXplb2Yoa0lsbGVnYWxJbnN0cnVjdGlvbik7Ci0gCi0gICBjb25zdCBwaWRfdCBj aGlsZCA9IGZvcmsoKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3Jp dGVyL21pY3JvZHVtcF93cml0ZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNy b2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKLUBAIC0xMzgsNyArMTM4LDkgQEAgY2xh c3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgICAgICAgICAgICAgICAgICBjb25zdCBNaWNyb2R1bXBF eHRyYUluZm8mIG1pY3JvZHVtcF9leHRyYV9pbmZvLAotICAgICAgICAgICAgICAgICAgIExpbnV4 RHVtcGVyKiBkdW1wZXIpCi0gICAgICAgOiB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0LT5j b250ZXh0IDogTlVMTCksCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIHZlY3Rvcl9z dGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKLSsjZWxpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAgICAgZmxv YXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKLSAjZW5k aWYKLSAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKLUBAIC0zMzcsNiArMzM5LDggQEAgY2xhc3Mg TWljcm9kdW1wV3JpdGVyIHsKLSAjIGVsc2UKLSAjICBlcnJvciAiVGhpcyBtaXBzIEFCSSBpcyBj dXJyZW50bHkgbm90IHN1cHBvcnRlZCAobjMyKSIKLSAjZW5kaWYKLSsjZWxpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0rICAgIGNvbnN0IGNoYXIga0FyY2hbXSA9ICJwcGM2NCI7Ci0gI2Vsc2UK LSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0g eWV0IgotICNlbmRpZgotQEAgLTQwOSw3ICs0MTMsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIg ewotICAgdm9pZCBEdW1wQ1BVU3RhdGUoKSB7Ci0gICAgIFJhd0NvbnRleHRDUFUgY3B1OwotICAg ICBteV9tZW1zZXQoJmNwdSwgMCwgc2l6ZW9mKFJhd0NvbnRleHRDUFUpKTsKLS0jaWYgIWRlZmlu ZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotKyAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNv bnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQotICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQo JmNwdSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOwotICNlbHNlCi0gICAgIFVDb250ZXh0UmVh ZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8pOwotQEAgLTYwNSw3ICs2MTEsOSBA QCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgewotICAgdm9pZCogQWxsb2ModW5zaWduZWQgYnl0ZXMp IHsgcmV0dXJuIGR1bXBlcl8tPmFsbG9jYXRvcigpLT5BbGxvYyhieXRlcyk7IH0KLSAKLSAgIGNv bnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFC SV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsK LSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAg Y29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsKLSAj ZW5kaWYKLSAgIExpbnV4RHVtcGVyKiBkdW1wZXJfOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91 bml0dGVzdC5jYwotQEAgLTI3OCwxMCArMjc4LDE5IEBAIFRFU1QoTWljcm9kdW1wV3JpdGVyVGVz dCwgQmFzaWNXaXRoTWFwcGluZ3MpIHsKLSAgIENyYXNoQW5kR2V0TWljcm9kdW1wKG1hcHBpbmdz LCBNaWNyb2R1bXBFeHRyYUluZm8oKSwgJmJ1Zik7Ci0gICBBU1NFUlRfVFJVRShDb250YWluc01p Y3JvZHVtcChidWYpKTsKLSAKLSsgIGludCBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOwotICNp ZmRlZiBfX0xQNjRfXwotLSAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAotLSAgICAgICAg ICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMDEwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAw MDAwMDAxMDAwICIKLS0gICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlB QUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKLSsgIC8vIFRoaXMgdGVzdCBpcyBvbmx5IGF2YWls YWJsZSBmb3IgdGhlIGZvbGxvd2luZyBwYWdlIHNpemVzCi0rICBBU1NFUlRfVFJVRSgocGFnZV9z aXplID09IDQwOTYpIHx8IChwYWdlX3NpemUgPT0gNjU1MzYpKTsKLSsgIGlmIChwYWdlX3NpemUg PT0gNDA5NikgeyAKLSsgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAotKyAgICAgICAg ICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAw MDAwMDAwMDEwMDAgIgotKyAgICAgICAgICAgICAgICAgICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4 ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Ci0rICB9IGVsc2UgewotKyAgICBBU1NFUlRf TkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0rICAgICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAw MDAwMDEwMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAxMDAwMCAiCi0rICAgICAgICAg ICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5z byIpKTsKLSsgIH0KLSAjZWxzZQotICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAotICAg ICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAxMDAwIDAwMDAwMDJBIDAwMDAxMDAwICIKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29y ZV9kdW1wZXIuY2MKLUBAIC0xMTYsNiArMTE2LDkgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6Okdl dFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykgewotICNl bGlmIGRlZmluZWQoX19taXBzX18pCi0gICBzdGFja19wb2ludGVyID0KLSAgICAgICByZWludGVy cHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNf UkVHX1NQXSk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgc3RhY2tfcG9pbnRl ciA9Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3Bf cmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNv ZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLUBA IC0yMDAsNyArMjAzLDEwIEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpFbnVtZXJhdGVUaHJlYWRz KCkgewotICAgICAgICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoVGhyZWFkSW5mbykpOwotICAg ICAgICAgaW5mby50Z2lkID0gc3RhdHVzLT5wcl9wZ3JwOwotICAgICAgICAgaW5mby5wcGlkID0g c3RhdHVzLT5wcl9wcGlkOwotLSNpZiBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0rICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDMxOyBpKyspCi0rICAg ICAgICAgICAgaW5mby5tY29udGV4dC5ncF9yZWdzW2ldID0gc3RhdHVzLT5wcl9yZWdbaV07Ci0r I2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjaWYgZGVmaW5lZChfX0FORFJPSURfXykKLSAgICAg ICAgIGZvciAoaW50IGkgPSBFRl9SMDsgaSA8PSBFRl9SMzE7IGkrKykKLSAgICAgICAgICAgaW5m by5tY29udGV4dC5ncmVnc1tpIC0gRUZfUjBdID0gc3RhdHVzLT5wcl9yZWdbaV07Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MK LUBAIC03OTgsNyArNzk4LDkgQEAgYm9vbCBMaW51eER1bXBlcjo6R2V0U3RhY2tJbmZvKGNvbnN0 IHZvaWQqKiBzdGFjaywgc2l6ZV90KiBzdGFja19sZW4sCi0gICAgICAgcmVpbnRlcnByZXRfY2Fz dDx1aW50OF90Kj4oaW50X3N0YWNrX3BvaW50ZXIgJiB+KHBhZ2Vfc2l6ZSAtIDEpKTsKLSAKLSAg IC8vIFRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygc3RhY2sgd2hpY2ggd2UgdHJ5IHRvIGNhcHR1cmUu Ci0tICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9IDMyICogMTAyNDsK LSsgIC8vIFRoaXMgbm93IGRlcGVuZHMgb24gcGFnZV9zaXplIHRvIGF2b2lkIG1pc3NpbmcgZGF0 YQotKyAgLy8gb24gc3lzdGVtcyB3aXRoIGxhcmdlciBwYWdlIHNpemVzLgotKyAgc3RhdGljIGNv bnN0IHB0cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSA4ICogcGFnZV9zaXplOwotIAotICAgY29u c3QgTWFwcGluZ0luZm8qIG1hcHBpbmcgPSBGaW5kTWFwcGluZyhzdGFja19wb2ludGVyKTsKLSAg IGlmICghbWFwcGluZykKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0 ZXIvbGludXhfZHVtcGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbGludXhfZHVtcGVyLmgKLUBAIC02MCw3ICs2MCw4IEBAIG5hbWVzcGFjZSBnb29nbGVf YnJlYWtwYWQgewotICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQklPMzIp Ci0gdHlwZWRlZiBFbGYzMl9hdXh2X3QgZWxmX2F1eF9lbnRyeTsKLSAjZWxpZiBkZWZpbmVkKF9f eDg2XzY0KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCi0tICAgICAoZGVmaW5lZChfX21p cHNfXykgJiYgX01JUFNfU0lNICE9IF9BQklPMzIpCi0rICAgICAoZGVmaW5lZChfX21pcHNfXykg JiYgX01JUFNfU0lNICE9IF9BQklPMzIpIHx8IFwKLSsgICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSB0eXBlZGVmIEVsZjY0X2F1eHZfdCBlbGZfYXV4X2VudHJ5OwotICNlbmRpZgotIAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5p dHRlc3RfaGVscGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIuY2MKLUBAIC01MSw2ICs1MSw4IEBACi0g I2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICJyY3giCi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykK LSAjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgIiQxIgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgInI4IgotICNlbHNlCi0gI2Vycm9yIFRo aXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCi0gI2VuZGlmCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9k dW1wZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfcHRyYWNlX2R1bXBlci5jYwotQEAgLTE1NCwxOSArMTU0LDI3IEBAIGJvb2wgTGludXhQdHJh Y2VEdW1wZXI6OkNvcHlGcm9tUHJvY2Vzcyh2b2lkKiBkZXN0LCBwaWRfdCBjaGlsZCwKLSAgIHJl dHVybiB0cnVlOwotIH0KLSAKLS1ib29sIExpbnV4UHRyYWNlRHVtcGVyOjpSZWFkUmVnaXN0ZXJT ZXQoVGhyZWFkSW5mbyogaW5mbywgcGlkX3QgdGlkKQotLXsKLStib29sIExpbnV4UHRyYWNlRHVt cGVyOjpSZWFkUmVnaXN0ZXJTZXQoVGhyZWFkSW5mbyogaW5mbywgcGlkX3QgdGlkKSB7Ci0gI2lm ZGVmIFBUUkFDRV9HRVRSRUdTRVQKLSAgIHN0cnVjdCBpb3ZlYyBpbzsKLSAgIGluZm8tPkdldEdl bmVyYWxQdXJwb3NlUmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOwotLSAgaWYg KHN5c19wdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFJTVEFUVVMsICh2 b2lkKikmaW8pID09IC0xKSB7Ci0rICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwg KHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgewotICAgICByZXR1cm4gZmFs c2U7Ci0gICB9Ci0gCi0gICBpbmZvLT5HZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKCZpby5pb3Zf YmFzZSwgJmlvLmlvdl9sZW4pOwotLSAgaWYgKHN5c19wdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwg dGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikmaW8pID09IC0xKSB7Ci0rICBpZiAocHRy YWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCopJmlv KSA9PSAtMSkgewotICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0rCi0rI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIC8vIEdyYWIgdGhlIHZlY3RvciByZWdpc3RlcnMgb24gUFBDNjQgdG9v Ci0rICBpbmZvLT5HZXRWZWN0b3JSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7 Ci0rICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BQQ19WTVgs ICh2b2lkKikmaW8pID09IC0xKSB7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsjZW5kaWYg Ly8gZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKwotICAgcmV0dXJuIHRydWU7Ci0gI2Vsc2UKLSAg IHJldHVybiBmYWxzZTsKLUBAIC0zMDMsNiArMzExLDkgQEAgYm9vbCBMaW51eFB0cmFjZUR1bXBl cjo6R2V0VGhyZWFkSW5mb0J5SW5kZXgoc2l6ZV90IGluZGV4LCBUaHJlYWRJbmZvKiBpbmZvKSB7 Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIHN0YWNrX3BvaW50ZXIgPQotICAgICAgIHJl aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRf TUlQU19SRUdfU1BdKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBzdGFja19w b2ludGVyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4 dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRo aXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRp ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJh Y2VfZHVtcGVyX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRlc3QuY2MKLUBAIC00NTcsNiArNDU3 LDkgQEAgVEVTVChMaW51eFB0cmFjZUR1bXBlclRlc3QsIFZlcmlmeVN0YWNrUmVhZFdpdGhNdWx0 aXBsZVRocmVhZHMpIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgICBwaWRfdCogcHJv Y2Vzc190aWRfbG9jYXRpb24gPQotICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxwaWRfdCo+KG9u ZV90aHJlYWQubWNvbnRleHQuZ3JlZ3NbMV0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0KLSsgICAgICAgIHJlaW50ZXJw cmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0LmdwX3JlZ3NbOF0pOwotICNlbHNl Ci0gI2Vycm9yIFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0u Ci0gI2VuZGlmCi1AQCAtNTUzLDYgKzU1Niw4IEBAIFRFU1RfRihMaW51eFB0cmFjZUR1bXBlclRl c3QsIFNhbml0aXplU3RhY2tDb3B5KSB7Ci0gICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFk X2luZm8ucmVncy5yY3g7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIHVpbnRwdHJfdCBo ZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5tY29udGV4dC5ncmVnc1sxXTsKLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2luZm8ubWNv bnRleHQuZ3BfcmVnc1s4XTsKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVu IHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjCi1AQCAtMTM2 LDcgKzEzNiw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgICAgICA6IGZkXyhtaW5pZHVt cF9mZCksCi0gICAgICAgICBwYXRoXyhtaW5pZHVtcF9wYXRoKSwKLSAgICAgICAgIHVjb250ZXh0 Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBOVUxMKSwKLS0jaWYgIWRlZmluZWQoX19B Uk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotKyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPnZlY3Rvcl9z dGF0ZSA6IE5VTEwpLAotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCi0gICAgICAgICBmbG9hdF9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT5mbG9h dF9zdGF0ZSA6IE5VTEwpLAotICNlbmRpZgotICAgICAgICAgZHVtcGVyXyhkdW1wZXIpLAotQEAg LTQ2OCw3ICs0NzAsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gICAgICAgICBpZiAoIWNw dS5BbGxvY2F0ZSgpKQotICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBteV9tZW1z ZXQoY3B1LmdldCgpLCAwLCBzaXplb2YoUmF3Q29udGV4dENQVSkpOwotLSNpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rICAgICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgp LCB1Y29udGV4dF8sIHZlY3Rvcl9zdGF0ZV8pOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICAgICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQ VUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8sIGZsb2F0X3N0YXRlXyk7Ci0gI2Vsc2UKLSAg ICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCksIHVjb250ZXh0 Xyk7Ci1AQCAtODkxLDcgKzg5NSw3IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgICAgZGly ZW50LT5sb2NhdGlvbi5ydmEgPSAwOwotICAgfQotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgYm9vbCBXcml0ZUNQVUluZm9ybWF0aW9uKE1EUmF3 U3lzdGVtSW5mbyogc3lzX2luZm8pIHsKLSAgICAgY2hhciB2ZW5kb3JfaWRbc2l6ZW9mKHN5c19p bmZvLT5jcHUueDg2X2NwdV9pbmZvLnZlbmRvcl9pZCkgKyAxXSA9IHswfTsKLSAgICAgc3RhdGlj IGNvbnN0IGNoYXIgdmVuZG9yX2lkX25hbWVbXSA9ICJ2ZW5kb3JfaWQiOwotQEAgLTkxMSw3ICs5 MTUsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gCi0gICAgIC8vIHByb2Nlc3Nvcl9hcmNo aXRlY3R1cmUgc2hvdWxkIGFsd2F5cyBiZSBzZXQsIGRvIHRoaXMgZmlyc3QKLSAgICAgc3lzX2lu Zm8tPnByb2Nlc3Nvcl9hcmNoaXRlY3R1cmUgPQotLSNpZiBkZWZpbmVkKF9fbWlwc19fKQotKyNp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICAgICBNRF9DUFVfQVJDSElURUNUVVJFX1BQ QzY0OwotKyNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gIyBpZiBfTUlQU19TSU0gPT0gX0FCSU8z MgotICAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9NSVBTOwotICMgZWxpZiBfTUlQU19TSU0g PT0gX0FCSTY0Ci1AQCAtMTMyNyw3ICsxMzMzLDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewot ICAgY29uc3QgY2hhciogcGF0aF87ICAvLyBQYXRoIHRvIHRoZSBmaWxlIHdoZXJlIHRoZSBtaW5p ZHVtIHNob3VsZCBiZSB3cml0dGVuLgotIAotICAgY29uc3QgdWNvbnRleHRfdCogY29uc3QgdWNv bnRleHRfOyAgLy8gYWxzbyBmcm9tIHRoZSBzaWduYWwgaGFuZGxlcgotLSNpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OnZzdGF0ZV90KiBjb25zdCB2ZWN0b3Jf c3RhdGVfOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBz X18pCi0gICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3Rh dGVfOyAgLy8gZGl0dG8KLSAjZW5kaWYKLSAgIExpbnV4RHVtcGVyKiBkdW1wZXJfOwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuaAotQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlcjsKLSAKLSAjaWYg ZGVmaW5lZChfX2FhcmNoNjRfXykKLSB0eXBlZGVmIHN0cnVjdCBmcHNpbWRfY29udGV4dCBmcHN0 YXRlX3Q7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgdnJyZWdzZXRf dCB2c3RhdGVfdDsKLSAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9f bWlwc19fKQotIHR5cGVkZWYgc3RydWN0IF9mcHN0YXRlIGZwc3RhdGVfdDsKLSAjZW5kaWYKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVy X3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYwotQEAgLTcxMCw2ICs3MTAsOSBAQCBURVNUKE1p bmlkdW1wV3JpdGVyVGVzdCwgSW52YWxpZFN0YWNrUG9pbnRlcikgewotICNlbGlmIGRlZmluZWQo X19taXBzX18pCi0gICBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVY VF9NSVBTX1JFR19TUF0gPQotICAgICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKLSsjZWxpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3Bf cmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0gPQotKyAgICAgIGludmFsaWRfc3RhY2tfcG9p bnRlcjsKLSAjZWxzZQotICMgZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRv IHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51 eC9tZW1vcnlfbWFwcGVkX2ZpbGUuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1v cnlfbWFwcGVkX2ZpbGUuY2MKLUBAIC02NSw4ICs2NSw3IEBAIGJvb2wgTWVtb3J5TWFwcGVkRmls ZTo6TWFwKGNvbnN0IGNoYXIqIHBhdGgsIHNpemVfdCBvZmZzZXQpIHsKLSAgIH0KLSAKLSAjaWYg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCi0tICAgKGRl ZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJNjQpCi0tCi0rICAgKGRlZmluZWQo X19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJNjQpIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgIHN0cnVjdCBrZXJuZWxfc3RhdCBzdDsKLSAgIGlmIChzeXNfZnN0YXQoZmQsICZzdCkg PT0gLTEgfHwgc3Quc3Rfc2l6ZSA8IDApIHsKLSAjZWxzZQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9u L2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29t bW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYwotQEAgLTE3Niw5ICsxNzYs MTAgQEAgVEVTVF9GKE1lbW9yeU1hcHBlZEZpbGVUZXN0LCBSZW1hcEFmdGVyTWFwKSB7Ci0gVEVT VF9GKE1lbW9yeU1hcHBlZEZpbGVUZXN0LCBNYXBXaXRoT2Zmc2V0KSB7Ci0gICAvLyBQdXQgbW9y ZSBkYXRhIGluIHRoZSB0ZXN0IGZpbGUgdGhpcyB0aW1lLiBPZmZzZXRzIGNhbiBvbmx5IGJlCi0g ICAvLyBkb25lIG9uIHBhZ2UgYm91bmRhcmllcywgc28gd2UgbmVlZCBhIHR3byBwYWdlIGZpbGUg dG8gdGVzdCB0aGlzLgotLSAgY29uc3QgaW50IHBhZ2Vfc2l6ZSA9IDQwOTY7Ci0tICBjaGFyIGRh dGExWzIgKiBwYWdlX3NpemVdOwotLSAgc2l6ZV90IGRhdGExX3NpemUgPSBzaXplb2YoZGF0YTEp OwotKyAgY29uc3QgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7Ci0rICBjaGFyICpkYXRh MSA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MoMiAqIHBhZ2Vfc2l6ZSkpOwotKyAgRVhQRUNU X1RSVUUoZGF0YTEgIT0gTlVMTCk7Ci0rICBzaXplX3QgZGF0YTFfc2l6ZSA9ICgyICogcGFnZV9z aXplKTsKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YTFfc2l6ZTsgKytpKSB7Ci0gICAg IGRhdGExW2ldID0gaSAmIDB4N2Y7Ci0gICB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5 X2FsbG9jYXRvcl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxv Y2F0b3JfdW5pdHRlc3QuY2MKLUBAIC01Nyw4ICs1Nyw5IEBAIFRFU1QoUGFnZUFsbG9jYXRvclRl c3QsIExhcmdlT2JqZWN0KSB7Ci0gCi0gICBFWFBFQ1RfRVEoMFUsIGFsbG9jYXRvci5wYWdlc19h bGxvY2F0ZWQoKSk7Ci0gICB1aW50OF90ICpwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o YWxsb2NhdG9yLkFsbG9jKDEwMDAwKSk7Ci0rICB1aW50NjRfdCBleHBlY3RlZF9wYWdlcyA9IDEg KyAoKDEwMDAwIC0gMSkgLyBnZXRwYWdlc2l6ZSgpKTsKLSAgIEFTU0VSVF9GQUxTRShwID09IE5V TEwpOwotLSAgRVhQRUNUX0VRKDNVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOwotKyAg RVhQRUNUX0VRKGV4cGVjdGVkX3BhZ2VzLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOwot ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IDEwOyArK2kpIHsKLSAgICAgdWludDhfdCAqcCA9 IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYyhpKSk7Ci0gICAgIEFT U0VSVF9GQUxTRShwID09IE5VTEwpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRh YmlsaXR5X2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlf bGludXguY2MKLUBAIC0yMDIsMTIgKzIwMiwxNCBAQCBib29sIEV4cGxvaXRhYmlsaXR5TGludXg6 OkVuZGVkT25JbGxlZ2FsV3JpdGUodWludDY0X3QgaW5zdHJ1Y3Rpb25fcHRyKSB7Ci0gICAvLyBD aGVjayBhcmNoaXRlY3R1cmUgYW5kIHNldCBhcmNoaXRlY3R1cmUgdmFyaWFibGUgdG8gY29ycmVz cG9uZGluZyBmbGFnCi0gICAvLyBpbiBvYmpkdW1wLgotICAgc3dpdGNoIChjb250ZXh0LT5HZXRD b250ZXh0Q1BVKCkpIHsKLSsjaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQp Ci0gICAgIGNhc2UgTURfQ09OVEVYVF9YODY6Ci0gICAgICAgYXJjaGl0ZWN0dXJlID0gImkzODYi OwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIE1EX0NPTlRFWFRfQU1ENjQ6Ci0gICAgICAgYXJj aGl0ZWN0dXJlID0gImkzODY6eDg2LTY0IjsKLSAgICAgICBicmVhazsKLSsjZW5kaWYKLSAgICAg ZGVmYXVsdDoKLSAgICAgICAvLyBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUuIE5vdGUgdGhhdCBB Uk0gYXJjaGl0ZWN0dXJlcyBhcmUgbm90Ci0gICAgICAgLy8gc3VwcG9ydGVkIGJlY2F1c2Ugb2Jq ZHVtcCBkb2VzIG5vdCBzdXBwb3J0IEFSTS4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBs b2l0YWJpbGl0eV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRh YmlsaXR5X3VuaXR0ZXN0LmNjCi1AQCAtMTA0LDYgKzEwNCw4IEBAIEV4cGxvaXRhYmlsaXR5Rm9y KGNvbnN0IHN0cmluZyYgZmlsZW5hbWUpIHsKLSB9Ci0gCi0gVEVTVChFeHBsb2l0YWJpbGl0eVRl c3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7Ci0rLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgb25s eSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5lLgotKyNpZiAhZGVmaW5l ZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCi0gICBB U1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAotICAgICAgICAg ICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJhc2NpaV9yZWFkX2F2LmRtcCIpKTsKLSAgIEFTU0VSVF9F UShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi1AQCAtMTM2LDkgKzEzOCwx MiBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdFdpbmRvd3NFbmdpbmUpIHsKLSAgICAg ICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigicmVhZF9hdl9jbG9iYmVyX3dyaXRlLmRtcCIpKTsK LSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0xPVywKLSAgICAg ICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigicmVhZF9hdl9jb25kaXRpb25hbC5kbXAiKSk7Ci0r I2VuZGlmCi0gfQotIAotIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUp IHsKLSsvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24gYW4geDg2 LWNsYXNzIGxpbnV4IG1hY2hpbmUuCi0rI2lmIGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9f eDg2XzY0KQotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSU5U RVJFU1RJTkcsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X251bGxfcmVh ZF9hdi5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElU WV9ISUdILAotQEAgLTE3MSw3ICsxNzYsOCBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVz dExpbnV4RW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X2V4 ZWN1dGFibGVfaGVhcC5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBM T0lUQUJJTElUWV9ISUdILAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9q bXBfdG9fbW9kdWxlX25vdF9leGVfcmVnaW9uLmRtcCIpKTsKLS0jaWZuZGVmIF9XSU4zMgotKyNl bmRpZgotKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5l ZChfX3g4Nl82NCkpCi0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElU WV9ISUdILAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b19u b253cml0YWJsZV9tb2R1bGUuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6 RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0xODIsMTAgKzE4OCwxMCBAQCBURVNUKEV4cGxvaXRh YmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxp dHlGb3IoImxpbnV4X3dyaXRlX3RvX291dHNpZGVfbW9kdWxlX3ZpYV9tYXRoLmRtcCIpKTsKLSAg IEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAot ICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b191bmRlcl80ay5k bXAiKSk7Ci0tI2VuZGlmICAvLyBfV0lOMzIKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9XSU4zMikg JiYgKCFkZWZpbmVkKF9faTM4NikgJiYgIWRlZmluZWQoX194ODZfNjQpKQotIH0KLSAKLS0jaWZu ZGVmIF9XSU4zMgotKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwg ZGVmaW5lZChfX3g4Nl82NCkpCi0gVEVTVChFeHBsb2l0YWJpbGl0eUxpbnV4VXRpbHNUZXN0LCBE aXNhc3NlbWJsZUJ5dGVzVGVzdCkgewotICAgQVNTRVJUX0ZBTFNFKEV4cGxvaXRhYmlsaXR5TGlu dXhUZXN0OjpEaXNhc3NlbWJsZUJ5dGVzKCIiLCBOVUxMLCA1LCBOVUxMKSk7Ci0gICB1aW50OF90 IGJ5dGVzWzZdID0gezB4YzcsIDB4MCwgMHg1LCAweDAsIDB4MCwgMHgwfTsKLUBAIC0zMDEsNiAr MzA3LDcgQEAgVEVTVChFeHBsb2l0YWJpbGl0eUxpbnV4VXRpbHNUZXN0LCBDYWxjdWxhdGVBZGRy ZXNzVGVzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlX2FkZHJlc3MpKTsKLSB9Ci0tI2VuZGlmICAv LyBfV0lOMzIKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2 KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSsKLSAKLSB9ICAvLyBuYW1lc3BhY2UKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYwotQEAgLTc2LDYgKzc2 LDggQEAKLSAgICNkZWZpbmUgRUxGX0FSQ0ggIEVNX01JUFMKLSAjZWxpZiBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotICAgI2RlZmluZSBFTEZfQVJDSCAgRU1fQUFSQ0g2NAotKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSsgICNkZWZpbmUgRUxGX0FSQ0ggIEVNX1BQQzY0Ci0gI2VuZGlmCi0g Ci0gI2lmIGRlZmluZWQoX19hcm1fXykKLUBAIC04Niw2ICs4OCw4IEBAIHR5cGVkZWYgdXNlcl9y ZWdzIHVzZXJfcmVnc19zdHJ1Y3Q7Ci0gI2VsaWYgZGVmaW5lZCAoX19taXBzX18pCi0gLy8gVGhp cyBmaWxlLWxvY2FsIHR5cGVkZWYgc2ltcGxpZmllcyB0aGUgc291cmNlIGNvZGUuCi0gdHlwZWRl ZiBncmVnc2V0X3QgdXNlcl9yZWdzX3N0cnVjdDsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0rdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OwotICNlbmRpZgot IAotIHVzaW5nIGdvb2dsZV9icmVha3BhZDo6TURUeXBlSGVscGVyOwotQEAgLTMyMCw2ICszMjQs OSBAQCBzdHJ1Y3QgQ3Jhc2hlZFByb2Nlc3MgewotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotICAgICB1c2VyX2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOwotKyNlbmRpZgotKyNpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0gI2VuZGlm Ci0gICAgIHVpbnRwdHJfdCBzdGFja19hZGRyOwotICAgICBjb25zdCB1aW50OF90KiBzdGFjazsK LUBAIC01MzQsNiArNTQxLDM4IEBAIFBhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNz OjpUaHJlYWQqIHRocmVhZCwKLSAgIHRocmVhZC0+bWNvbnRleHQuZnBjX2VpciA9IHJhd3JlZ3Mt PmZsb2F0X3NhdmUuZmlyOwotICNlbmRpZgotIH0KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0rc3RhdGljIHZvaWQKLStQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6 VGhyZWFkKiB0aHJlYWQsCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWluaWR1bXBNZW1v cnlSYW5nZSYgcmFuZ2UpIHsKLSsgIGNvbnN0IE1EUmF3Q29udGV4dFBQQzY0KiByYXdyZWdzID0g cmFuZ2UuR2V0RGF0YTxNRFJhd0NvbnRleHRQUEM2ND4oMCk7Ci0rCi0rICBmb3IgKGludCBpID0g MDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCi0rICAgIHRocmVhZC0+bWNv bnRleHQuZ3BfcmVnc1tpXSA9IHJhd3JlZ3MtPmdwcltpXTsKLSsKLSsgIHRocmVhZC0+bWNvbnRl eHQuZ3BfcmVnc1tQVF9MTktdID0gcmF3cmVncy0+bHI7Ci0rICB0aHJlYWQtPm1jb250ZXh0Lmdw X3JlZ3NbUFRfTklQXSA9IHJhd3JlZ3MtPnNycjA7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3Jl Z3NbUFRfTVNSXSA9IHJhd3JlZ3MtPnNycjE7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3Nb UFRfQ0NSXSA9IHJhd3JlZ3MtPmNyOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX1hF Ul0gPSByYXdyZWdzLT54ZXI7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXSA9 IHJhd3JlZ3MtPmN0cjsKLSsgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnNhdmUgPSByYXdy ZWdzLT52cnNhdmU7Ci0rCi0rICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFS RUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQotKyAgICAgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tp XSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnByZWdzW2ldOwotKwotKyAgdGhyZWFkLT5tY29udGV4 dC5mcF9yZWdzW05GUFJFRy0xXSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnBzY3I7Ci0rCi0rICBm b3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKSB7 Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVswXSA9IHJhd3JlZ3Mt PnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaCA+PiAzMjsKLSsgICAgICB0aHJlYWQtPm1jb250 ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzFdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltp XS5oaWdoOwotKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMl0gPSBy YXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmxvdyA+PiAzMjsKLSsgICAgICB0aHJlYWQt Pm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzNdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2 ZV92cltpXS5sb3c7Ci0rICB9Ci0rCi0rICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnNjci52 c2NyX3dvcmQgPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IubG93ICYgMHhGRkZGRkZG RjsKLSt9Ci0rCi0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVk IHRvIHlvdXIgcGxhdGZvcm0geWV0IgotICNlbmRpZgotQEAgLTYyMiw2ICs2NjEsMTIgQEAgUGFy c2VTeXN0ZW1JbmZvKGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMsIENyYXNoZWRQcm9jZXNzKiBjcmFz aGluZm8sCi0gIyBlbHNlCi0gIyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5v dCBzdXBwb3J0ZWQgKG4zMikiCi0gIyBlbmRpZgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgIGlmIChzeXNpbmZvLT5wcm9jZXNzb3JfYXJjaGl0ZWN0dXJlICE9IE1EX0NQVV9BUkNI SVRFQ1RVUkVfUFBDNjQpIHsKLSsgICAgZnByaW50ZihzdGRlcnIsCi0rICAgICAgICAgICAgIlRo aXMgdmVyc2lvbiBvZiBtaW5pZHVtcC0yLWNvcmUgb25seSBzdXBwb3J0cyBQUEM2NC5cbiIpOwot KyAgICBleGl0KDEpOwotKyAgfQotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBi ZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvQ09O VFJJQlVUT1JTCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUwotQEAgLTEzLDMgKzEzLDQgQEAgTWFy ayBNZW50b3ZhaSA8bWFya0BjaHJvbWl1bS5vcmc+Ci0gUm9iZXJ0IFNlc2VrIDxyc2VzZWtAY2hy b21pdW0ub3JnPgotIFNjb3R0IEdyYWhhbSA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+Ci0gSm9zaHVh IFBlcmF6YSA8anBlcmF6YUBjaHJvbWl1bS5vcmc+Ci0rU2hhd24gQW5hc3Rhc2lvIDxzaGF3bkBh bmFzdGFzLmlvPgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAotQEAgLTE1LDYgKzE1LDcgQEAKLSAjaWZuZGVmIENS QVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXwotICNkZWZpbmUgQ1JBU0hQQURfQ09NUEFU X0xJTlVYX1NZU19VU0VSX0hfCi0gCi0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gI2luY2x1ZGVfbmV4 dCA8c3lzL3VzZXIuaD4KLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWlu aWR1bXAvbWluaWR1bXBfY29udGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2Nv bnRleHQuaAotQEAgLTU5Miw2ICs1OTIsNzAgQEAgc3RydWN0IE1pbmlkdW1wQ29udGV4dE1JUFM2 NCB7Ci0gICB1aW50NjRfdCBmaXI7Ci0gfTsKLSAKLSsvLyEgXGJyaWVmIHBwYzY0LXNwZWNpZmlj IGZsYWdzIGZvciBNaW5pZHVtcFBQQzY0Ojpjb250ZXh0X2ZsYWdzCi0rLy8hIEJhc2VkIG9uIG1p bmlkdW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtwYWQKLStlbnVtIE1pbmlkdW1wQ29udGV4dFBQ QzY0RmxhZ3MgOiB1aW50MzJfdCB7Ci0rICAvLyEgXGJyaWVmIElkZW50aWZpZXMgdGhlIGNvbnRl eHQgYXMgUFBDNjQuCi0rICBrTWluaWR1bXBDb250ZXh0UFBDNjQgPSAweDAxMDAwMDAwLAotKwot KyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGdlbmVyYWwgcHVycG9zZSBy ZWdpc3RlcnMuCi0rICAvLyEKLSsgIC8vISBSZWdpc3RlcnMgYHIwYC1gcjMxYCwgYG5pcGAsIGBt c3JgLCBgbHJgLCBldGMuIGFyZSB2YWxpZC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NEJhc2Ug PSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAweDAwMDAwMDAxLAotKwotKyAgLy8hIFxicmllZiBJ bmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4KLSsgIC8v IQotKyAgLy8hIFJlZ2lzdGVycyBgZnAwYC1gZnAzMWAsIGBmcHNjcmAgYXJlIHZhbGlkLgotKyAg a01pbmlkdW1wQ29udGV4dFBQQzY0RmxvYXRpbmcgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAw eDAwMDAwMDA4LAotKwotKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIEFs dGl2ZWMvVk1YIHJlZ2lzdGVycy4KLSsgIC8vIQotKyAgLy8hIFJlZ2lzdGVycyBgdjBgLWB2MzFg LCBgdnNjcmAsIGB2cnNhdmVgLgotKyAga01pbmlkdW1wQ29udGV4dFBQQzY0VmVjdG9yID0ga01p bmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAyMCwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNh dGVzIHRoZSB2YWxpZGl0eSBvZiBhbGwgcmVnaXN0ZXJzCi0rICBrTWluaWR1bXBDb250ZXh0UFBD NjRBbGwgPSBrTWluaWR1bXBDb250ZXh0UFBDNjRCYXNlICAgICB8Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrTWluaWR1bXBDb250ZXh0UFBDNjRGbG9hdGluZyB8Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrTWluaWR1bXBDb250ZXh0UFBDNjRWZWN0b3IKLSt9OwotKwot Ky8vISBcYnJpZWYgQSBQUEM2NCBDUFUgY29udGV4dCBjYXJyaWVkIGluIGEgbWluaWR1bXAgZmls ZS4KLSsvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3BwYzY0LmggZnJvbSBicmVha3BhZC4KLStz dHJ1Y3QgTWluaWR1bXBDb250ZXh0UFBDNjQgewotKyAgdWludDY0X3QgY29udGV4dF9mbGFnczsK LSsKLSsgIC8vISBcYnJpZWYgR2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KLSsgIHVpbnQ2NF90 IG5pcDsKLSsgIHVpbnQ2NF90IG1zcjsKLSsgIHVpbnQ2NF90IHJlZ3NbMzJdOwotKyAgdWludDY0 X3QgY2NyOwotKyAgdWludDY0X3QgeGVyOwotKyAgdWludDY0X3QgbG5rOwotKyAgdWludDY0X3Qg Y3RyOwotKwotKyAgLy8hIFxicmllZiBGbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCi0rICBkb3Vi bGUgZnByZWdzWzMyXTsKLSsKLSsgIC8vISBcYnJpZWYgRlBVIHN0YXR1cyByZWdpc3Rlci4KLSsg IGRvdWJsZSBmcHNjcjsKLSsKLSsgIC8vISBcYnJpZWYgQWx0aXZlYy9WTVggdmVjdG9yIHJlZ2lz dGVycy4KLSsgIHN0cnVjdCB7Ci0rICAgICAgLy8hIFxicmllZiBWZWN0b3IgcmVnaXN0ZXJzIGFy ZSAxMjhiaXRzLgotKyAgICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnJbMzJdOwotKyAgICAgIHVp bnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKLSsKLSsgICAgICAvLyEgXGJyaWVmIFBhZGRpbmcgaW5j bHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGliaWx0aXkuCi0rICAgICAgdWludDMyX3Qgc2F2ZV9w YWQ1WzRdOwotKwotKyAgICAgIC8vISBcYnJpZWYgVlJTQVZFIHJlZ2lzdGVyLgotKyAgICAgIHVp bnQzMl90IHNhdmVfdnJzYXZlOwotKwotKyAgICAgIC8vISBcYnJpZWYgUGFkZGluZyBpbmNsdWRl ZCBmb3IgYnJlYWtwYWQgY29tcGF0aWJpbHRpeS4KLSsgICAgICB1aW50MzJfdCBzYXZlX3BhZDZb N107Ci0rICB9IHZyZWdzOwotK307Ci0rCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0g I2VuZGlmICAvLyBDUkFTSFBBRF9NSU5JRFVNUF9NSU5JRFVNUF9DT05URVhUX0hfCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlk dW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCi1AQCAtMTAxLDYgKzEwMSwxMyBAQCBNaW5p ZHVtcENvbnRleHRXcml0ZXI6OkNyZWF0ZUZyb21TbmFwc2hvdChjb25zdCBDUFVDb250ZXh0KiBj b250ZXh0X3NuYXBzaG90KSB7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSsgICAgY2FzZSBr Q1BVQXJjaGl0ZWN0dXJlUFBDNjQ6IHsKLSsgICAgICBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1 ZTxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcj4oKTsKLSsgICAgICByZWludGVycHJldF9jYXN0 PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKj4oY29udGV4dC5nZXQoKSkKLSsgICAgICAgICAg LT5Jbml0YWxpemVGcm9tU25hcHNob3QoY29udGV4dF9zbmFwc2hvdC0+cHBjNjQpOwotKyAgICAg IGJyZWFrOwotKyAgICB9Ci0rCi0gICAgIGRlZmF1bHQ6IHsKLSAgICAgICBMT0coRVJST1IpIDw8 ICJ1bmtub3duIGNvbnRleHQgYXJjaGl0ZWN0dXJlICIKLSAgICAgICAgICAgICAgICAgIDw8IGNv bnRleHRfc25hcHNob3QtPmFyY2hpdGVjdHVyZTsKLUBAIC00NTMsNCArNDYwLDQ3IEBAIHNpemVf dCBNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXI6OkNvbnRleHRTaXplKCkgY29uc3QgewotICAg cmV0dXJuIHNpemVvZihjb250ZXh0Xyk7Ci0gfQotIAotK01pbmlkdW1wQ29udGV4dFBQQzY0V3Jp dGVyOjpNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpCi0rICA6IE1pbmlkdW1wQ29udGV4dFdy aXRlcigpLCBjb250ZXh0XygpIHsKLSsgICAgY29udGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5p ZHVtcENvbnRleHRQUEM2NDsKLSt9Ci0rCi0rTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6On5N aW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpID0gZGVmYXVsdDsKLSsKLSt2b2lkIE1pbmlkdW1w Q29udGV4dFBQQzY0V3JpdGVyOjpJbml0YWxpemVGcm9tU25hcHNob3QoCi0rICAgIGNvbnN0IENQ VUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCkgewotKyAgRENIRUNLX0VRKHN0YXRlKCks IGtTdGF0ZU11dGFibGUpOwotKyAgRENIRUNLX0VRKGNvbnRleHRfLmNvbnRleHRfZmxhZ3MsIGtN aW5pZHVtcENvbnRleHRQUEM2NCk7Ci0rCi0rICBjb250ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01p bmlkdW1wQ29udGV4dFBQQzY0QWxsOwotKwotKyAgbWVtY3B5KGNvbnRleHRfLnJlZ3MsIGNvbnRl eHRfc25hcHNob3QtPnJlZ3MsIHNpemVvZihjb250ZXh0Xy5yZWdzKSk7Ci0rICBjb250ZXh0Xy5u aXAgPSBjb250ZXh0X3NuYXBzaG90LT5uaXA7Ci0rICBjb250ZXh0Xy5tc3IgPSBjb250ZXh0X3Nu YXBzaG90LT5tc3I7Ci0rICBjb250ZXh0Xy5jY3IgPSBjb250ZXh0X3NuYXBzaG90LT5jY3I7Ci0r ICBjb250ZXh0Xy54ZXIgPSBjb250ZXh0X3NuYXBzaG90LT54ZXI7Ci0rICBjb250ZXh0Xy5sbmsg PSBjb250ZXh0X3NuYXBzaG90LT5sbms7Ci0rICBjb250ZXh0Xy5jdHIgPSBjb250ZXh0X3NuYXBz aG90LT5jdHI7Ci0rCi0rICBtZW1jcHkoY29udGV4dF8uZnByZWdzLCBjb250ZXh0X3NuYXBzaG90 LT5mcHJlZ3MsIHNpemVvZihjb250ZXh0Xy5mcHJlZ3MpKTsKLSsgIGNvbnRleHRfLmZwc2NyID0g Y29udGV4dF9zbmFwc2hvdC0+ZnBzY3I7Ci0rCi0rICBtZW1jcHkoY29udGV4dF8udnJlZ3Muc2F2 ZV92ciwgY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Muc2F2ZV92ciwKLSsgICAgICAgICBzaXplb2Yo Y29udGV4dF8udnJlZ3Muc2F2ZV92cikpOwotKyAgbWVtY3B5KCZjb250ZXh0Xy52cmVncy5zYXZl X3ZzY3IsICZjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZlX3ZzY3IsCi0rICAgICAgICAgc2l6 ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVfdnNjcikpOwotKyAgY29udGV4dF8udnJlZ3Muc2F2ZV92 cnNhdmUgPSBjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZlX3Zyc2F2ZTsKLSt9Ci0rCi0rYm9v bCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6V3JpdGVPYmplY3QoCi0rICAgIEZpbGVXcml0 ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSB7Ci0rICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRl V3JpdGFibGUpOwotKyAgcmV0dXJuIGZpbGVfd3JpdGVyLT5Xcml0ZSgmY29udGV4dF8sIHNpemVv Zihjb250ZXh0XykpOwotK30KLSsKLStzaXplX3QgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6 OkNvbnRleHRTaXplKCkgY29uc3QgewotKyAgRENIRUNLX0dFKHN0YXRlKCksIGtTdGF0ZUZyb3pl bik7Ci0rICByZXR1cm4gc2l6ZW9mKGNvbnRleHRfKTsKLSt9Ci0rCi0gfSAgLy8gbmFtZXNwYWNl IGNyYXNocGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaAotQEAgLTMxNSw2 ICszMTUsNDUgQEAgY2xhc3MgTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyIGZpbmFsIDogcHVi bGljIE1pbmlkdW1wQ29udGV4dFdyaXRlciB7Ci0gICBESVNBTExPV19DT1BZX0FORF9BU1NJR04o TWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyKTsKLSB9OwotIAotK2NsYXNzIE1pbmlkdW1wQ29u dGV4dFBQQzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlkdW1wQ29udGV4dFdyaXRlciB7Ci0r IHB1YmxpYzoKLSsgIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCk7Ci0rICB+TWluaWR1bXBD b250ZXh0UFBDNjRXcml0ZXIoKSBvdmVycmlkZTsKLSsKLSsgIC8vISBcYnJpZWYgSW5pdGFsaXpl cyB0aGUgTWluaWR1bXBDb250ZXh0UFBDNjQgYmFzZWQgb24gXGEgY29udGV4dF9zbmFwc2hvdC4K LSsgIC8vIQotKyAgLy8hIFxwYXJhbVtpbl0gY29udGV4dF9zbmFwc2hvdCBUaGUgY29udGV4dCBz bmFwc2hvdCB0byB1c2UgYXMgc291cmNlIGRhdGEuCi0rICAvLyEKLSsgIC8vISBcbm90ZSBWYWxp ZCBpbiAja1N0YXRlTXV0YWJsZS4gTm8gbXV0YXRpb24gb2YgY29udGV4dCgpIG1heSBiZSBkb25l IGJlZm9yZQotKyAgLy8hICAgICBjYWxsaW5nIHRoaXMgbWV0aG9kLCBhbmQgaXQgaXMgbm90IG5v cm1hbGx5IG5lY2Vzc2FyeSB0byBhbHRlcgotKyAgLy8hICAgICBjb250ZXh0KCkgYWZ0ZXIgY2Fs bGluZyB0aGlzIG1ldGhvZC4KLSsgIHZvaWQgSW5pdGFsaXplRnJvbVNuYXBzaG90KGNvbnN0IENQ VUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCk7Ci0rCi0rICAvLyEgXGJyaWVmIFJldHVy bnMgYSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHN0cnVjdHVyZSB0aGF0IHRoaXMgb2JqZWN0IHdp bGwKLSsgIC8vISAgICAgd3JpdGUuCi0rICAvLyEKLSsgIC8vISBcYXR0ZW50aW9uIFRoaXMgcmV0 dXJucyBhIG5vbi1gY29uc3RgIHBvaW50ZXIgdG8gdGhpcyBvYmplY3TigJlzIHByaXZhdGUKLSsg IC8vISAgICAgZGF0YSBzbyB0aGF0IGEgY2FsbGVyIGNhbiBwb3B1bGF0ZSB0aGUgY29udGV4dCBz dHJ1Y3R1cmUgZGlyZWN0bHkuCi0rICAvLyEgICAgIFRoaXMgaXMgZG9uZSBiZWNhdXNlIHByb3Zp ZGluZyBzZXR0ZXIgaW50ZXJmYWNlcyB0byBlYWNoIGZpZWxkIGluIHRoZQotKyAgLy8hICAgICBj b250ZXh0IHN0cnVjdHVyZSB3b3VsZCBiZSB1bndpZWxkeSBhbmQgY3VtYmVyc29tZS4gQ2FyZSBt dXN0IGJlIHRha2VuCi0rICAvLyEgICAgIHRvIHBvcHVsYXRlIHRoZSBjb250ZXh0IHN0cnVjdHVy ZSBjb3JyZWN0bHkuIFRoZSBjb250ZXh0IHN0cnVjdHVyZQotKyAgLy8hICAgICBtdXN0IG9ubHkg YmUgbW9kaWZpZWQgd2hpbGUgdGhpcyBvYmplY3QgaXMgaW4gdGhlICNrU3RhdGVNdXRhYmxlCi0r ICAvLyEgICAgIHN0YXRlLgotKyAgTWluaWR1bXBDb250ZXh0UFBDNjQqIGNvbnRleHQoKSB7IHJl dHVybiAmY29udGV4dF87IH0KLSsKLSsgcHJvdGVjdGVkOgotKyAgLy8gTWluaWR1bXBXcml0YWJs ZToKLSsgIGJvb2wgV3JpdGVPYmplY3QoRmlsZVdyaXRlckludGVyZmFjZSogZmlsZV93cml0ZXIp IG92ZXJyaWRlOwotKwotKyAgLy8gTWluaWR1bXBDb250ZXh0V3JpdGVyOgotKyAgc2l6ZV90IENv bnRleHRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rIHByaXZhdGU6Ci0rICBNaW5pZHVtcENv bnRleHRQUEM2NCBjb250ZXh0XzsKLSsKLSsgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNaW5p ZHVtcENvbnRleHRQUEM2NFdyaXRlcik7Ci0rfTsKLSsKLSB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hw YWQKLSAKLSAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfV1JJ VEVSX0hfCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyX3Rlc3Qu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYwot QEAgLTIxMyw2ICsyMTMsMjEgQEAgVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIE1JUFM2NF9G cm9tU25hcHNob3QpIHsKLSAgICAgICBjb250ZXh0LCBFeHBlY3RNaW5pZHVtcENvbnRleHRNSVBT NjQsIGtTZWVkKTsKLSB9Ci0gCi0rVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIFBQQzY0X1pl cm9zKSB7Ci0rICBFbXB0eUNvbnRleHRUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBN aW5pZHVtcENvbnRleHRQUEM2ND4oCi0rICAgIEV4cGVjdE1pbmlkdW1wQ29udGV4dFBQQzY0KTsK LSt9Ci0rCi0rVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIFBQQzY0X0Zyb21TbmFwc2hvdCkg ewotKyAgY29uc3RleHByIHVpbnQzMl90IGtTZWVkID0gNjQ7Ci0rICBDUFVDb250ZXh0UFBDNjQg Y29udGV4dF9wcGM2NDsKLSsgIENQVUNvbnRleHQgY29udGV4dDsKLSsgIGNvbnRleHQucHBjNjQg PSAmY29udGV4dF9wcGM2NDsKLSsgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoJmNvbnRleHQs IGtTZWVkKTsKLSsgIEZyb21TbmFwc2hvdFRlc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIs IE1pbmlkdW1wQ29udGV4dFBQQzY0PigKLSsgICAgICBjb250ZXh0LCBFeHBlY3RNaW5pZHVtcENv bnRleHRQUEM2NCwga1NlZWQpOwotK30KLSsKLSB9ICAvLyBuYW1lc3BhY2UKLSB9ICAvLyBuYW1l c3BhY2UgdGVzdAotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVt cC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlk dW1wX21pc2NfaW5mb193cml0ZXIuY2MKLUBAIC0xMjYsNiArMTI2LDggQEAgc3RkOjpzdHJpbmcg TWluaWR1bXBNaXNjSW5mb0RlYnVnQnVpbGRTdHJpbmcoKSB7Ci0gICBzdGF0aWMgY29uc3RleHBy IGNoYXIga0NQVVtdID0gIm1pcHMiOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0RUwp Ci0gICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gIm1pcHM2NCI7Ci0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NCkKLSsgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAi cHBjNjQiOwotICNlbHNlCi0gI2Vycm9yIGRlZmluZSBrQ1BVIGZvciB0aGlzIENQVQotICNlbmRp ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9yeS5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9jYXB0dXJlX21lbW9yeS5jYwotQEAgLTExMSw2ICsxMTEsMTEgQEAgdm9pZCBDYXB0dXJl TWVtb3J5OjpQb2ludGVkVG9CeUNvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgY29udGV4dCwKLSAg IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmFzZTo6c2l6ZShjb250ZXh0Lm1pcHNlbC0+cmVncyk7 ICsraSkgewotICAgICBNYXliZUNhcHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQu bWlwc2VsLT5yZWdzW2ldKTsKLSAgIH0KLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKLSsgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5wcGM2 NC0+bmlwKTsKLSsgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmFzZTo6c2l6ZShjb250ZXh0LnBw YzY0LT5yZWdzKTsgKytpKSB7Ci0rICAgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0 ZSwgY29udGV4dC5wcGM2NC0+cmVnc1tpXSk7Ci0rICB9Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4K LSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2FyY2hpdGVjdHVyZS5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAotQEAgLTQzLDcgKzQzLDEwIEBAIGVudW0g Q1BVQXJjaGl0ZWN0dXJlIHsKLSAgIGtDUFVBcmNoaXRlY3R1cmVNSVBTRUwsCi0gCi0gICAvLyEg XGJyaWVmIDY0LWJpdCBNSVBTRUwuCi0tICBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwKLSsgIGtD UFVBcmNoaXRlY3R1cmVNSVBTNjRFTCwKLSsKLSsgIC8vISBcYnJpZWYgNjQtYml0IFBQQzY0Lgot KyAga0NQVUFyY2hpdGVjdHVyZVBQQzY0Ci0gfTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hw YWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvY3B1X2NvbnRleHQuY2MKLUBAIC0xNjksNiArMTY5LDggQEAgdWludDY0X3QgQ1BVQ29udGV4 dDo6SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgewotICAgICAgIHJldHVybiBhcm0tPnBjOwot ICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKLSAgICAgICByZXR1cm4gYXJtNjQtPnBj OwotKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKLSsgICAgICByZXR1cm4gcHBjNjQt Pm5pcDsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBOT1RSRUFDSEVEKCk7Ci0gICAgICAgcmV0dXJu IH4wdWxsOwotQEAgLTE4NSw2ICsxODcsOCBAQCB1aW50NjRfdCBDUFVDb250ZXh0OjpTdGFja1Bv aW50ZXIoKSBjb25zdCB7Ci0gICAgICAgcmV0dXJuIGFybS0+c3A7Ci0gICAgIGNhc2Uga0NQVUFy Y2hpdGVjdHVyZUFSTTY0OgotICAgICAgIHJldHVybiBhcm02NC0+c3A7Ci0rICAgIGNhc2Uga0NQ VUFyY2hpdGVjdHVyZVBQQzY0OgotKyAgICAgIHJldHVybiBwcGM2NC0+cmVnc1sxXTsKLSAgICAg ZGVmYXVsdDoKLSAgICAgICBOT1RSRUFDSEVEKCk7Ci0gICAgICAgcmV0dXJuIH4wdWxsOwotQEAg LTE5Niw2ICsyMDAsNyBAQCBib29sIENQVUNvbnRleHQ6OklzNjRCaXQoKSBjb25zdCB7Ci0gICAg IGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4Nl82NDoKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJl QVJNNjQ6Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMOgotKyAgICBjYXNlIGtD UFVBcmNoaXRlY3R1cmVQUEM2NDoKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2FzZSBrQ1BV QXJjaGl0ZWN0dXJlWDg2OgotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk06Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRl eHQuaAotQEAgLTM1Miw2ICszNTIsMjQgQEAgc3RydWN0IENQVUNvbnRleHRNSVBTNjQgewotICAg dWludDY0X3QgZmlyOwotIH07Ci0gCi0rLy8hIFxicmllZiBBIGNvbnRleHQgc3RydWN0dXJlIGNh cnJ5aW5nIFBQQzY0IENQVSBzdGF0ZS4KLStzdHJ1Y3QgQ1BVQ29udGV4dFBQQzY0IHsKLSsgIHVp bnQ2NF90IG5pcDsKLSsgIHVpbnQ2NF90IG1zcjsKLSsgIHVpbnQ2NF90IHJlZ3NbMzJdOwotKyAg dWludDY0X3QgY2NyOwotKyAgdWludDY0X3QgeGVyOwotKyAgdWludDY0X3QgbG5rOwotKyAgdWlu dDY0X3QgY3RyOwotKyAgZG91YmxlIGZwcmVnc1szMl07Ci0rICBkb3VibGUgZnBzY3I7Ci0rICBz dHJ1Y3QgewotKyAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZyWzMyXTsKLSsgICAgdWludDEyOF9z dHJ1Y3Qgc2F2ZV92c2NyOwotKyAgICB1aW50MzJfdCBzYXZlX3Zyc2F2ZTsKLSsgIH0gdnJlZ3M7 Ci0rfTsKLSsKLSAvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1cmUgY2FwYWJsZSBvZiBjYXJy eWluZyB0aGUgY29udGV4dCBvZiBhbnkgc3VwcG9ydGVkCi0gLy8hICAgICBDUFUgYXJjaGl0ZWN0 dXJlLgotIHN0cnVjdCBDUFVDb250ZXh0IHsKLUBAIC0zODIsNiArNDAwLDcgQEAgc3RydWN0IENQ VUNvbnRleHQgewotICAgICBDUFVDb250ZXh0QVJNNjQqIGFybTY0OwotICAgICBDUFVDb250ZXh0 TUlQUyogbWlwc2VsOwotICAgICBDUFVDb250ZXh0TUlQUzY0KiBtaXBzNjQ7Ci0rICAgIENQVUNv bnRleHRQUEM2NCogcHBjNjQ7Ci0gICB9OwotIH07Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2Nv bnRleHRfbGludXguaAotQEAgLTE1LDYgKzE1LDcgQEAKLSAjaWZuZGVmIENSQVNIUEFEX1NOQVBT SE9UX0xJTlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCi0gI2RlZmluZSBDUkFTSFBBRF9TTkFQU0hP VF9MSU5VWF9DUFVfQ09OVEVYVF9MSU5VWF9IXwotIAotKyNpbmNsdWRlIDxjc3RyaW5nPgotICNp bmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKLSAjaW5jbHVkZSAic25hcHNob3QvY3B1X2Nv bnRleHQuaCIKLSAjaW5jbHVkZSAic25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaCIKLUBA IC0xNzQsNiArMTc1LDc4IEBAIHZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRNSVBTKAotIAotICNl bmRpZiAgLy8gQVJDSF9DUFVfTUlQU19GQU1JTFkgfHwgRE9YWUdFTgotIAotKyNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkgfHwgRE9YWUdFTgotKwotKy8vISBcYnJpZWYgSW5pdGFs aXplcyBhIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUgZnJvbSBuYXRpdmUgY29udGV4dAotKy8v ISAgICAgc3RydWN0dXJlcyBvbiBMaW51eC4KLSsvLyEKLSsvLyEgXHBhcmFtW2luXSB0aHJlYWRf Y29udGV4dCBUaGUgbmF0aXZlIHRocmVhZCBjb250ZXh0LgotKy8vISBccGFyYW1baW5dIGZsb2F0 X2NvbnRleHQgVGhlIG5hdGl2ZSBmbG9hdCBjb250ZXh0LgotKy8vISBccGFyYW1baW5dIHZlY3Rv cl9jb250ZXh0IFRoZSBuYXRpdmUgdmVjdG9yIGNvbnRleHQuCi0rLy8hIFxwYXJhbVtvdXRdIGNv bnRleHQgVGhlIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUgdG8gaW5pdGFsaXplLgotK3RlbXBs YXRlIDx0eXBlbmFtZSBUcmFpdHM+Ci0rdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KAot KyAgICBjb25zdCBUaHJlYWRDb250ZXh0Ojp0NjRfdCYgdGhyZWFkX2NvbnRleHQsCi0rICAgIGNv bnN0IEZsb2F0Q29udGV4dDo6ZjY0X3QmIGZsb2F0X2NvbnRleHQsCi0rICAgIGNvbnN0IFZlY3Rv ckNvbnRleHQ6OnY2NF90JiB2ZWN0b3JfY29udGV4dCwKLSsgICAgdHlwZW5hbWUgVHJhaXRzOjpD UFVDb250ZXh0KiBjb250ZXh0KSB7Ci0rCi0rICBtZW1jcHkoY29udGV4dC0+cmVncywgdGhyZWFk X2NvbnRleHQuZ3ByLCBzaXplb2YoY29udGV4dC0+cmVncykpOwotKyAgY29udGV4dC0+bmlwID0g dGhyZWFkX2NvbnRleHQubmlwOwotKyAgY29udGV4dC0+bXNyID0gdGhyZWFkX2NvbnRleHQubXNy OwotKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOwotKyAgY29udGV4dC0+eGVy ID0gdGhyZWFkX2NvbnRleHQueGVyOwotKyAgY29udGV4dC0+bG5rID0gdGhyZWFkX2NvbnRleHQu bG5rOwotKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3RyOwotKwotKyAgbWVtY3B5 KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5mcHJlZ3MsIHNpemVvZihjb250ZXh0LT5m cHJlZ3MpKTsKLSsgIGNvbnRleHQtPmZwc2NyID0gZmxvYXRfY29udGV4dC5mcHNjcjsKLSsKLSsg IGZvciAodWludDhfdCBpID0gMDsgaSA8IDMyOyBpKyspIHsKLSsgICAgY29udGV4dC0+dnJlZ3Mu c2F2ZV92cltpXSA9IHsKLSsgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3Nb aV1bMF0pIDw8IDMyKSB8Ci0rICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCi0r ICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAot KyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzNdCi0rICAgIH07Ci0rICB9Ci0rICBj b250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKLSsgIGNv bnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNj ci52c2NyX3dvcmR9OwotK30KLSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgotK3ZvaWQg SW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKLSsgICAgY29uc3QgU2lnbmFsVGhyZWFkQ29udGV4 dDY0ICZ0aHJlYWRfY29udGV4dCwKLSsgICAgY29uc3QgU2lnbmFsRmxvYXRDb250ZXh0NjQgJmZs b2F0X2NvbnRleHQsCi0rICAgIGNvbnN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCAmdmVjdG9yX2Nv bnRleHQsCi0rICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4dCkgewotKwot KyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0LnJlZ3MsIHNpemVvZihjb250 ZXh0LT5yZWdzKSk7Ci0rICBjb250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4dC5uaXA7Ci0rICBj b250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7Ci0rICBjb250ZXh0LT5jY3IgPSB0aHJl YWRfY29udGV4dC5jY3I7Ci0rICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29udGV4dC54ZXI7Ci0r ICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5sbms7Ci0rICBjb250ZXh0LT5jdHIgPSB0 aHJlYWRfY29udGV4dC5jdHI7Ci0rCi0rICBtZW1jcHkoY29udGV4dC0+ZnByZWdzLCBmbG9hdF9j b250ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5mcHJlZ3MpKTsKLSsgIGNvbnRleHQtPmZwc2Ny ID0gZmxvYXRfY29udGV4dC5mcHNjcjsKLSsKLSsgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDMy OyBpKyspIHsKLSsgICAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cltpXSA9IHsKLSsgICAgICAoKCh1 aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMF0pIDw8IDMyKSB8Ci0rICAgICAgICB2 ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCi0rICAgICAgKCgodWludDY0X3QpdmVjdG9yX2Nv bnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAotKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJy ZWdzW2ldWzNdCi0rICAgIH07Ci0rICB9Ci0rICBjb250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9 IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKLSsgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHsw LCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNjci52c2NyX3dvcmR9OwotK30KLSsKLSsKLSsj ZW5kaWYKLSsKLSB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLSB9ICAvLyBuYW1lc3BhY2UgY3Jh c2hwYWQKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0 LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYwot QEAgLTE1OSw5ICsxNTksMTEgQEAgdm9pZCBUZXN0QWdhaW5zdFRhcmdldChQdHJhY2VDb25uZWN0 aW9uKiBjb25uZWN0aW9uKSB7Ci0gICAgICAgICAgIGNvbnN0IGJvb2wgaXNfdmRzb19tYXBwaW5n ID0KLSAgICAgICAgICAgICAgIGRldmljZSA9PSAwICYmIGlub2RlID09IDAgJiYgbWFwcGluZ19u YW1lID09ICJbdmRzb10iOwotICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIga1ByZWZp eFtdID0gImxpbnV4LXZkc28uc28uIjsKLSsgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFy IGtQcmVmaXg2NFtdID0gImxpbnV4LXZkc282NC5zby4iOwotICAgICAgICAgICByZXR1cm4gaXNf dmRzb19tYXBwaW5nID09Ci0gICAgICAgICAgICAgICAgICAobW9kdWxlX25hbWUuZW1wdHkoKSB8 fAotLSAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLmNvbXBhcmUoMCwgc3RybGVuKGtQcmVm aXgpLCBrUHJlZml4KSA9PSAwKTsKLSsgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZS5jb21w YXJlKDAsIHN0cmxlbihrUHJlZml4KSwga1ByZWZpeCkgPT0gMCB8fAotKyAgICAgICAgICAgICAg ICAgIG1vZHVsZV9uYW1lLmNvbXBhcmUoMCwgc3RybGVuKGtQcmVmaXg2NCksIGtQcmVmaXg2NCkg PT0gMCk7Ci0gICAgICAgICB9LAotICAgICAgICAgbW9kdWxlX21hcHBpbmctPm5hbWUsCi0gICAg ICAgICBtb2R1bGVfbWFwcGluZy0+ZGV2aWNlLAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9l eGNlcHRpb25fc25hcHNob3RfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhj ZXB0aW9uX3NuYXBzaG90X2xpbnV4LmNjCi1AQCAtMzIzLDYgKzMyMyw2OSBAQCBib29sIEV4Y2Vw dGlvblNuYXBzaG90TGludXg6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHM2ND4oCi0gICAgICAg cmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLm1pcHM2NCk7Ci0gfQotIAotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBU cmFpdHM+Ci0rc3RhdGljIGJvb2wgUmVhZENvbnRleHQoUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFk ZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgTGludXhWTUFkZHJlc3MgY29udGV4dF9hZGRy ZXNzLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4 dCogZGVzdF9jb250ZXh0KSB7Ci0rICBjb25zdCBQcm9jZXNzTWVtb3J5KiBtZW1vcnkgPSByZWFk ZXItPk1lbW9yeSgpOwotKwotKyAgTGludXhWTUFkZHJlc3MgZ3BfcmVnc19hZGRyZXNzID0gY29u dGV4dF9hZGRyZXNzICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dG9mKFVDb250ZXh0LCBtY29udGV4dCkgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgZ3BfcmVncyk7Ci0rCi0r ICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFRocmVhZENvbnRleHQgdGhyZWFkX2NvbnRleHQ7Ci0r ICBpZiAoIW1lbW9yeS0+UmVhZChncF9yZWdzX2FkZHJlc3MsIHNpemVvZih0aHJlYWRfY29udGV4 dCksICZ0aHJlYWRfY29udGV4dCkpIHsKLSsgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVh ZCBncF9yZWdzISI7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsKLSsgIExpbnV4Vk1BZGRy ZXNzIGZwX3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0czo6 TUNvbnRleHQsIGZwX3JlZ3MpOwotKwotKyAgdHlwZW5hbWUgVHJhaXRzOjpTaWduYWxGbG9hdENv bnRleHQgZnBfY29udGV4dDsKLSsgIGlmICghbWVtb3J5LT5SZWFkKGZwX3JlZ3NfYWRkcmVzcywg c2l6ZW9mKGZwX2NvbnRleHQpLCAmZnBfY29udGV4dCkpIHsKLSsgICAgTE9HKEVSUk9SKSA8PCAi Q291bGRuJ3QgcmVhZCBmcF9yZWdzISI7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsKLSsg IExpbnV4Vk1BZGRyZXNzIHZfcmVnc19wdHJfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBtY29u dGV4dCkgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBl bmFtZSBUcmFpdHM6Ok1Db250ZXh0LCB2bXhfcmVzZXJ2ZSkgKyA4OwotKwotKyAgdHlwZW5hbWUg VHJhaXRzOjpTaWduYWxWZWN0b3JDb250ZXh0IHZfY29udGV4dDsKLSsgIGlmICghbWVtb3J5LT5S ZWFkKHZfcmVnc19wdHJfYWRkcmVzcywgc2l6ZW9mKHZfY29udGV4dCksICZ2X2NvbnRleHQpKSB7 Ci0rICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgdl9yZWdzISI7Ci0rICAgIHJldHVy biBmYWxzZTsKLSsgIH0KLSsKLSsgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQ8Q29udGV4dFRy YWl0czY0Pih0aHJlYWRfY29udGV4dCwgZnBfY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdl9jb250ZXh0LCBkZXN0X2NvbnRleHQpOwotKwotKyAgcmV0dXJuIHRydWU7Ci0r fQotKwotK3RlbXBsYXRlPD4KLStib29sIEV4Y2VwdGlvblNuYXBzaG90TGludXg6OlJlYWRDb250 ZXh0PENvbnRleHRUcmFpdHM2ND4oCi0rICAgIFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyLAot KyAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3MpIHsKLSsgIGNvbnRleHRfLmFyY2hp dGVjdHVyZSA9IGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKLSsgIGNvbnRleHRfLnBwYzY0ID0gJmNv bnRleHRfdW5pb25fLnBwYzY0OwotKwotKyAgcmV0dXJuIGludGVybmFsOjpSZWFkQ29udGV4dDxD b250ZXh0VHJhaXRzNjQ+KAotKyAgICAgIHJlYWRlciwgY29udGV4dF9hZGRyZXNzLCBjb250ZXh0 Xy5wcGM2NCk7Ci0rfQotKwotK3RlbXBsYXRlPD4KLStib29sIEV4Y2VwdGlvblNuYXBzaG90TGlu dXg6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHMzMj4oCi0rICAgIFByb2Nlc3NSZWFkZXJMaW51 eCogcmVhZGVyLAotKyAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3MpIHsKLSsgIC8v IFBQQzY0IGlzIDY0LWJpdAotKyAgcmV0dXJuIGZhbHNlOwotK30KLSsKLSAjZW5kaWYgIC8vIEFS Q0hfQ1BVX1g4Nl9GQU1JTFkKLSAKLSBib29sIEV4Y2VwdGlvblNuYXBzaG90TGludXg6OkluaXRp YWxpemUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9jZXNzX3JlYWRlciwKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKLUBAIC04NCw2ICs4NCw4IEBAIGNs YXNzIEV4Y2VwdGlvblNuYXBzaG90TGludXggZmluYWwgOiBwdWJsaWMgRXhjZXB0aW9uU25hcHNo b3QgewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAgIENQVUNvbnRl eHRNSVBTIG1pcHNlbDsKLSAgICAgQ1BVQ29udGV4dE1JUFM2NCBtaXBzNjQ7Ci0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIENQVUNvbnRleHRQUEM2NCBwcGM2NDsK LSAjZW5kaWYKLSAgIH0gY29udGV4dF91bmlvbl87Ci0gICBDUFVDb250ZXh0IGNvbnRleHRfOwot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXhfdGVzdC5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXhfdGVz dC5jYwotQEAgLTI5Niw3ICsyOTYsMjggQEAgdm9pZCBFeHBlY3RDb250ZXh0KGNvbnN0IENQVUNv bnRleHQmIGFjdHVhbCwgY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgZXhwZWN0ZWQpIHsKLSAgICAg ICAgICAgICAwKTsKLSAjdW5kZWYgQ1BVX0FSQ0hfTkFNRQotIH0KLSsjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSt1c2luZyBOYXRpdmVDUFVDb250ZXh0ID0gdWNvbnRleHRf dDsKLSsKLSt2b2lkIEluaXRpYWxpemVDb250ZXh0KE5hdGl2ZUNQVUNvbnRleHQqIGNvbnRleHQp IHsKLSsgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8IDMyOyArK3JlZykgewotKyAgICBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10gPSByZWc7Ci0rICB9Ci0rCi0rICBtZW1zZXQo JmNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3MsIDQ0LAotKyAgICAgIHNpemVvZihjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzKSk7Ci0rfQotIAotK3ZvaWQgRXhwZWN0Q29udGV4dChjb25z dCBDUFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7 Ci0rICBFWFBFQ1RfRVEoYWN0dWFsLmFyY2hpdGVjdHVyZSwga0NQVUFyY2hpdGVjdHVyZVBQQzY0 KTsKLSsKLSsgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8IDMyOyArK3JlZykgewotKyAgICBF WFBFQ1RfRVEoYWN0dWFsLnBwYzY0LT5yZWdzW3JlZ10sIGV4cGVjdGVkLnVjX21jb250ZXh0Lmdw X3JlZ3NbcmVnXSk7Ci0rICB9Ci0rCi0rICBFWFBFQ1RfRVEobWVtY21wKGFjdHVhbC5wcGM2NC0+ ZnByZWdzLCBleHBlY3RlZC51Y19tY29udGV4dC5mcF9yZWdzLAotKyAgICAgICAgICAgIHNpemVv ZihhY3R1YWwucHBjNjQtPmZwcmVncykpLCAwKTsKLSt9Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4K LSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXgu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXguY2MKLUBA IC0xMDgsNiArMTA4LDggQEAgdm9pZCBQcm9jZXNzUmVhZGVyTGludXg6OlRocmVhZDo6SW5pdGlh bGl6ZVN0YWNrKFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyKSB7Ci0gI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgIHN0YWNrX3BvaW50ZXIgPSByZWFkZXItPklzNjRCaXQo KSA/IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NC5yZWdzWzI5XQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDMy LnJlZ3NbMjldOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgc3Rh Y2tfcG9pbnRlciA9IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NC5ncHJbMV07Ci0gI2Vs c2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJv Y2Vzc19yZWFkZXJfbGludXhfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9j ZXNzX3JlYWRlcl9saW51eF90ZXN0LmNjCi1AQCAtNTkxLDYgKzU5MSw4IEBAIGJvb2wgV3JpdGVU ZXN0TW9kdWxlKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBtb2R1bGVfcGF0aCkgewotICAgbW9kdWxl LmVoZHIuZV9tYWNoaW5lID0gRU1fQUFSQ0g2NDsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNFTCkgfHwgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkKLSAgIG1vZHVsZS5laGRyLmVfbWFj aGluZSA9IEVNX01JUFM7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsgIG1vZHVs ZS5laGRyLmVfbWFjaGluZSA9IEVNX1BQQzY0OwotICNlbmRpZgotIAotICAgbW9kdWxlLmVoZHIu ZV92ZXJzaW9uID0gRVZfQ1VSUkVOVDsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc2lnbmFs X2NvbnRleHQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCi1A QCAtNDIyLDYgKzQyMiw4OSBAQCBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKFVDb250ZXh0PENvbnRl eHRUcmFpdHM2ND4sIG1jb250ZXh0LmZwcmVncykgPT0KLSAgICAgICAgICAgICAgICJjb250ZXh0 IG9mZnNldCBtaXNtYXRjaCIpOwotICNlbmRpZgotIAotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQotKwotK3N0cnVjdCBTaWduYWxUaHJlYWRDb250ZXh0NjQgewotKyAgdWlu dDY0X3QgcmVnc1szMl07Ci0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRfdCBtc3I7Ci0rICB1 aW50NjRfdCBvcmlnX3IzOwotKyAgdWludDY0X3QgY3RyOwotKyAgdWludDY0X3QgbG5rOwotKyAg dWludDY0X3QgeGVyOwotKyAgdWludDY0X3QgY2NyOwotKyAgdWludDY0X3Qgc29mdGU7Ci0rICB1 aW50NjRfdCB0cmFwOwotKyAgdWludDY0X3QgZGFyOwotKyAgdWludDY0X3QgZHNpc3I7Ci0rICB1 aW50NjRfdCByZXN1bHQ7Ci0rICB1aW50NjRfdCBkc2NyOwotKyAgdWludDY0X3QgZnByMFszXTsK LSt9OwotKwotK3N0cnVjdCBTaWduYWxGbG9hdENvbnRleHQ2NCB7Ci0rICBkb3VibGUgcmVnc1sz Ml07Ci0rICBkb3VibGUgZnBzY3I7Ci0rfTsKLSsKLStzdHJ1Y3QgU2lnbmFsVmVjdG9yQ29udGV4 dDY0IHsKLSsgIGludDMyX3QgdnJyZWdzWzMyXVs0XTsKLSsgIHN0cnVjdCB7Ci0rICAgIGludDMy X3QgX19wYWRbM107Ci0rICAgIGludDMyX3QgdnNjcl93b3JkOwotKyAgfSB2c2NyOwotKyAgaW50 MzJfdCB2cnNhdmU7Ci0rICBpbnQzMl90IF9fcGFkWzNdOwotK30gX19hdHRyaWJ1dGVfXygoX19h bGlnbmVkX18oMTYpKSk7Ci0rCi0rCi0rI3ByYWdtYSBwYWNrKHBvcCkKLStzdHJ1Y3QgTUNvbnRl eHQ2NCB7Ci0rICB1aW50NjRfdCByZXNlcnZlZFs0XTsKLSsgIGludDMyX3Qgc2lnbmFsOwotKyAg aW50MzJfdCBfX3BhZDA7Ci0rICB1aW50NjRfdCBoYW5kbGVyOwotKyAgdWludDY0X3Qgb2xkbWFz azsKLSsgIHVpbnQ2NF90IHB0X3JlZ3NfcHRyOwotKyAgU2lnbmFsVGhyZWFkQ29udGV4dDY0IGdw X3JlZ3M7Ci0rICBTaWduYWxGbG9hdENvbnRleHQ2NCAgZnBfcmVnczsKLSsgIFNpZ25hbFZlY3Rv ckNvbnRleHQ2NCAqdl9yZWdzOwotKyAgaW50NjRfdCB2bXhfcmVzZXJ2ZVs2OV07Ci0rfTsKLSsK LStzdHJ1Y3QgQ29udGV4dFRyYWl0czY0IDogcHVibGljIFRyYWl0czY0IHsKLSsgIHVzaW5nIE1D b250ZXh0ID0gTUNvbnRleHQ2NDsKLSsgIHVzaW5nIFNpZ25hbFRocmVhZENvbnRleHQgPSBTaWdu YWxUaHJlYWRDb250ZXh0NjQ7Ci0rICB1c2luZyBTaWduYWxGbG9hdENvbnRleHQgPSBTaWduYWxG bG9hdENvbnRleHQ2NDsKLSsgIHVzaW5nIFNpZ25hbFZlY3RvckNvbnRleHQgPSBTaWduYWxWZWN0 b3JDb250ZXh0NjQ7Ci0rICB1c2luZyBDUFVDb250ZXh0ID0gQ1BVQ29udGV4dFBQQzY0OwotK307 Ci0rCi0rc3RydWN0IENvbnRleHRUcmFpdHMzMiA6IHB1YmxpYyBUcmFpdHMzMiB7fTsKLSsKLStz dHJ1Y3QgVUNvbnRleHQgewotKyAgdWludDY0X3QgZmxhZ3M7Ci0rICB1aW50NjRfdCBsaW5rOwot KyAgU2lnbmFsU3RhY2s8Q29udGV4dFRyYWl0czY0PiBzdGFjazsKLSsgIFNpZ3NldDxDb250ZXh0 VHJhaXRzNjQ+IHNpZ21hc2s7Ci0rICBNQ29udGV4dDY0IG1jb250ZXh0OwotK307Ci0rI3ByYWdt YSBwYWNrKHB1c2gsIDEpCi0rCi0rc3RhdGljX2Fzc2VydChzaXplb2YoVUNvbnRleHQpID09IHNp emVvZih1Y29udGV4dF90KSwKLSsgICAgICAgICAgICAgICJ1Y29udGV4dF90IHNpemUgbWlzbWF0 Y2giKTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihNQ29udGV4dDY0KSA9PSBzaXplb2YobWNvbnRl eHRfdCksCi0rICAgICAgICAgICAgICAibWNvbnRleHRfdCBzaXplIG1pc21hdGNoIik7Ci0rc3Rh dGljX2Fzc2VydChzaXplb2YoU2lnbmFsVGhyZWFkQ29udGV4dDY0KSA9PSBzaXplb2YoZ3JlZ3Nl dF90KSwKLSsgICAgICAgICAgICAgICJncmVnc2V0X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRp Y19hc3NlcnQoc2l6ZW9mKFNpZ25hbEZsb2F0Q29udGV4dDY0KSA9PSBzaXplb2YoZnByZWdzZXRf dCksCi0rICAgICAgICAgICAgICAiZnByZWdzZXRfdCBzaXplIG1pc21hdGNoIik7Ci0rc3RhdGlj X2Fzc2VydChzaXplb2YoU2lnbmFsVmVjdG9yQ29udGV4dDY0KSA9PSBzaXplb2YoX2xpYmNfdnJz dGF0ZSksCi0rICAgICAgICAgICAgICAidnJzdGF0ZSBzaXplIG1pc21hdGNoIik7Ci0rc3RhdGlj X2Fzc2VydChvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpID09Ci0rICAgICAgICAgICAgICBv ZmZzZXRvZih1Y29udGV4dF90LCB1Y19tY29udGV4dCksICJtY29udGV4dCBvZmZzZXQgbWlzbWF0 Y2giKTsKLStzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKE1Db250ZXh0NjQsIGdwX3JlZ3MpID09Ci0r ICAgICAgICAgICAgICBvZmZzZXRvZihtY29udGV4dF90LCBncF9yZWdzKSwgImdwX3JlZ3Mgb2Zm c2V0IG1pc21hdGNoIik7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hf Q1BVX1g4Nl9GQU1JTFkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90 X2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9saW51 eC5jYwotQEAgLTIwMyw2ICsyMDMsOCBAQCBDUFVBcmNoaXRlY3R1cmUgU3lzdGVtU25hcHNob3RM aW51eDo6R2V0Q1BVQXJjaGl0ZWN0dXJlKCkgY29uc3QgewotICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gcHJvY2Vzc19yZWFkZXJfLT5JczY0Qml0KCkgPyBr Q1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6IGtDUFVBcmNoaXRlY3R1cmVNSVBTRUw7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9Q UEM2NF9GQU1JTFkpCi0rICByZXR1cm4ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OwotICNlbHNlCi0g I2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKLSAjZW5kaWYKLUBAIC0yMTgsNiArMjIw LDkgQEAgdWludDMyX3QgU3lzdGVtU25hcHNob3RMaW51eDo6Q1BVUmV2aXNpb24oKSBjb25zdCB7 Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgIC8vIE5vdCBpbXBsZW1l bnRhYmxlIG9uIE1JUFMKLSAgIHJldHVybiAwOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKQotKyAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBvbiBQUEM2NAotKyAgcmV0dXJu IDA7Ci0gI2Vsc2UKLSAjZXJyb3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQotICNlbmRpZgot QEAgLTIzOCw2ICsyNDMsOSBAQCBzdGQ6OnN0cmluZyBTeXN0ZW1TbmFwc2hvdExpbnV4OjpDUFVW ZW5kb3IoKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAg IC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKLSAgIHJldHVybiBzdGQ6OnN0cmluZygpOwot KyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgLy8gTm90IHlldCBpbXBs ZW1lbnRlZCBvbiBQUEM2NAotKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Ci0gI2Vsc2UKLSAjZXJy b3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQotICNlbmRpZgotQEAgLTM3MSw2ICszNzksOSBA QCBib29sIFN5c3RlbVNuYXBzaG90TGludXg6Ok5YRW5hYmxlZCgpIGNvbnN0IHsKLSAjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgLy8gTm90IGltcGxlbWVudGFibGUgb24g TUlQUwotICAgcmV0dXJuIGZhbHNlOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKQotKyAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBvbiBQUEM2NAotKyAgcmV0dXJuIGZhbHNl OwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZ Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguY2MKLUBAIC0xODYs NiArMTg2LDE0IEBAIGJvb2wgVGhyZWFkU25hcHNob3RMaW51eDo6SW5pdGlhbGl6ZShQcm9jZXNz UmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVyLAotICAgICAgICAgdGhyZWFkLnRocmVhZF9pbmZv LmZsb2F0X2NvbnRleHQuZjMyLAotICAgICAgICAgY29udGV4dF8ubWlwc2VsKTsKLSAgIH0KLSsj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIGNvbnRleHRfLmFyY2hpdGVj dHVyZSA9IGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKLSsgIGNvbnRleHRfLnBwYzY0ID0gJmNvbnRl eHRfdW5pb25fLnBwYzY0OwotKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxDb250ZXh0VHJh aXRzNjQ+KAotKyAgICAgIHRocmVhZC50aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQsCi0r ICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLmZsb2F0X2NvbnRleHQuZjY0LAotKyAgICAgIHRocmVh ZC50aHJlYWRfaW5mby52ZWN0b3JfY29udGV4dC52NjQsCi0rICAgICAgY29udGV4dF8ucHBjNjQp OwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Ro cmVhZF9zbmFwc2hvdF9saW51eC5oCi1AQCAtNjgsNiArNjgsOCBAQCBjbGFzcyBUaHJlYWRTbmFw c2hvdExpbnV4IGZpbmFsIDogcHVibGljIFRocmVhZFNuYXBzaG90IHsKLSAjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7Ci0gICAg IENQVUNvbnRleHRNSVBTNjQgbWlwczY0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRf RkFNSUxZKQotKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9y dC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51 eC9hdXhpbGlhcnlfdmVjdG9yLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3Zl Y3Rvci5jYwotQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgQXV4aWxpYXJ5VmVjdG9yOjpSZWFkKFB0 cmFjZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pIHsKLSAgICAgaWYgKHR5cGUgPT0gQVRfSUdOT1JF KSB7Ci0gICAgICAgY29udGludWU7Ci0gICAgIH0KLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCi0rICAgIGlmICh0eXBlID09IEFUX0lHTk9SRVBQQykgewotKyAgICAgIGNvbnRp bnVlOwotKyAgICB9Ci0rI2VuZGlmCi0gICAgIGlmICghTWFwSW5zZXJ0T3JSZXBsYWNlKCZ2YWx1 ZXNfLCB0eXBlLCB2YWx1ZSwgbnVsbHB0cikpIHsKLSAgICAgICBMT0coRVJST1IpIDw8ICJkdXBs aWNhdGUgYXV4diBlbnRyeSI7Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L2xpbnV4L3B0cmFjZV9icm9rZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VfYnJv a2VyLmNjCi1AQCAtOTMsOCArOTMsOCBAQCBpbnQgUHRyYWNlQnJva2VyOjpSdW4oKSB7Ci0gfQot IAotIGJvb2wgUHRyYWNlQnJva2VyOjpBbGxvY2F0ZUF0dGFjaG1lbnRzKCkgewotLSAgY29uc3Rl eHByIHNpemVfdCBwYWdlX3NpemUgPSA0MDk2OwotLSAgY29uc3RleHByIHNpemVfdCBhbGxvY19z aXplID0KLSsgIHN0YXRpYyBzaXplX3QgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKLSsgIHNp emVfdCBhbGxvY19zaXplID0KLSAgICAgICAoc2l6ZW9mKFNjb3BlZFB0cmFjZUF0dGFjaCkgKyBw YWdlX3NpemUgLSAxKSAmIH4ocGFnZV9zaXplIC0gMSk7Ci0gICB2b2lkKiBhbGxvYyA9IHNicmso YWxsb2Nfc2l6ZSk7Ci0gICBpZiAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYWxsb2MpID09 IC0xKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlci5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L2xpbnV4L3B0cmFjZXIuY2MKLUBAIC0zOTQsNiArMzk0LDY0IEBAIGJvb2wgR2V0VGhyZWFkQXJl YTY0KHBpZF90IHRpZCwKLSAgIHJldHVybiB0cnVlOwotIH0KLSAKLSsjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsvLyBQUEM2NCBoYXMgaGFkIEhBVkVfQVJDSF9UUkFDRUhP T0sgc2V0IHNpbmNlIDIuNi4yNyAoZXZlbiBiZWZvcmUgeDg2IGhhZCBpdCkuCi0rLy8gVGhhdCBt ZWFucyB3ZSBjYW4gc2ltcGx5IHVzZSBQVFJBQ0VfR0VUUkVHRVNFVC4KLSsKLSt0ZW1wbGF0ZSA8 dHlwZW5hbWUgRGVzdGluYXRpb24+Ci0rYm9vbCBHZXRSZWdpc3RlclNldChwaWRfdCB0aWQsIGlu dCBzZXQsIERlc3RpbmF0aW9uKiBkZXN0LCBib29sIGNhbl9sb2cpIHsKLSsgIGlvdmVjIGlvdjsK LSsgIGlvdi5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGRlc3QpOwotKyAgaW92 Lmlvdl9sZW4gPSBzaXplb2YoKmRlc3QpOwotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VU LCB0aWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNldCksICZpb3YpICE9IDApIHsKLSsgICAg UExPR19JRihFUlJPUiwgY2FuX2xvZykgPDwgInB0cmFjZSI7Ci0rICAgIHJldHVybiBmYWxzZTsK LSsgIH0KLSsgIGlmIChpb3YuaW92X2xlbiAhPSBzaXplb2YoKmRlc3QpKSB7Ci0rICAgIExPR19J RihFUlJPUiwgY2FuX2xvZykgPDwgIlVuZXhwZWN0ZWQgcmVnaXN0ZXJzIHNpemUiOwotKyAgICBy ZXR1cm4gZmFsc2U7Ci0rICB9Ci0rICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rYm9vbCBHZXRWZWN0 b3JSZWdpc3RlcnM2NChwaWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0 b3JDb250ZXh0KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5f bG9nKSB7Ci0rICByZXR1cm4gR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUENfVk1YLCAmY29udGV4 dC0+djY0LCBjYW5fbG9nKTsKLSt9Ci0rCi0rYm9vbCBHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJz NjQocGlkX3QgdGlkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0Q29u dGV4dCogY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNh bl9sb2cpIHsKLSsgIHJldHVybiBHZXRSZWdpc3RlclNldCh0aWQsIE5UX1BSRlBSRUcsICZjb250 ZXh0LT5mNjQsIGNhbl9sb2cpOwotK30KLSsKLStib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0 aWQsCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGhyZWFkQ29udGV4dCYgY29udGV4dCwK LSsgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyogYWRkcmVzcywKLSsgICAgICAg ICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsKLSsgIC8vIFBQQzY0IGRvZXNuJ3QgaGF2ZSBQ VFJBQ0VfR0VUX1RIUkVBRF9BUkVBIHNpbmNlIHRoZSB0aHJlYWQgcG9pbnRlcgotKyAgLy8gaXMg c3RvcmVkIGluIEdQUiAxMy4KLSsgIFRocmVhZENvbnRleHQ6OnQ2NF90IHRjOwotKyAgaWYgKCFH ZXRSZWdpc3RlclNldCh0aWQsIE5UX1BSU1RBVFVTLCAmdGMsIGNhbl9sb2cpKSB7Ci0rICAgIExP R19JRihFUlJPUiwgY2FuX2xvZykgPDwgIlVuYWJsZSB0byBnZXQgdGhyZWFkIHBvaW50ZXIhIjsK LSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKwotKyAgKmFkZHJlc3MgPSB0Yy5ncHJbMTNdOwot KwotKyAgcmV0dXJuIHRydWU7Ci0rfQotKwotKy8vIFN0dWJzIGZvciAzMi1iaXQgZnVuY3Rpb25z IG5vdCBhcHBsaWNhYmxlIG9uIFBQQzY0Ci0rYm9vbCBHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJz MzIocGlkX3QgdGlkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0Q29u dGV4dCogY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNh bl9sb2cpIHsgcmV0dXJuIGZhbHNlOyB9Ci0rYm9vbCBHZXRUaHJlYWRBcmVhMzIocGlkX3QgdGlk LAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRocmVhZENvbnRleHQgJmNvbnRleHQsCi0r ICAgICAgICAgICAgICAgICAgICAgTGludXhWTUFkZHJlc3MgKmFkZHJlc3MsCi0rICAgICAgICAg ICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxzZTsgfQotKwotICNlbHNlCi0g I2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi1AQCAtNDg2LDYg KzU0NCw5IEBAIGJvb2wgUHRyYWNlcjo6R2V0VGhyZWFkSW5mbyhwaWRfdCB0aWQsIFRocmVhZElu Zm8qIGluZm8pIHsKLSAgIGlmIChpc182NF9iaXRfKSB7Ci0gICAgIHJldHVybiBHZXRHZW5lcmFs UHVycG9zZVJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPnRocmVhZF9jb250ZXh0LCBjYW5fbG9nXykg JiYKLSAgICAgICAgICAgIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnM2NCh0aWQsICZpbmZvLT5m bG9hdF9jb250ZXh0LCBjYW5fbG9nXykgJiYKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9G QU1JTFkpCi0rICAgICAgICAgICBHZXRWZWN0b3JSZWdpc3RlcnM2NCh0aWQsICZpbmZvLT52ZWN0 b3JfY29udGV4dCwgY2FuX2xvZ18pICYmCi0rI2VuZGlmCi0gICAgICAgICAgICBHZXRUaHJlYWRB cmVhNjQodGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnRocmVhZF9jb250 ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLT50aHJlYWRfc3BlY2lmaWNf ZGF0YV9hZGRyZXNzLAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9pbmZvLmgKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCi1AQCAtMjgsNiArMjgsMTAgQEAKLSAjaW5j bHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KLSAjZW5kaWYKLSAKLSsjaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCi0rI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgotKyNlbmRpZgot KwotIG5hbWVzcGFjZSBjcmFzaHBhZCB7Ci0gCi0gLy8hIFxicmllZiBUaGUgc2V0IG9mIGdlbmVy YWwgcHVycG9zZSByZWdpc3RlcnMgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkuCi1AQCAtNzks NiArODMsOCBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKLSAgICAgdWludDMyX3QgY3AwX3N0YXR1 czsKLSAgICAgdWludDMyX3QgY3AwX2NhdXNlOwotICAgICB1aW50MzJfdCBwYWRkaW5nMV87Ci0r I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFBQQzY0IGlzIDY0 LWJpdAotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFN SUxZCi1AQCAtMTMyLDYgKzEzOCwyMSBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKLSAgICAgdWlu dDY0X3QgY3AwX2JhZHZhZGRyOwotICAgICB1aW50NjRfdCBjcDBfc3RhdHVzOwotICAgICB1aW50 NjRfdCBjcDBfY2F1c2U7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0r ICAgIC8vIFJlZmxlY3RzIHN0cnVjdCBwdF9yZWdzIGluIGFzbS9wdHJhY2UuaC4KLSsgICAgdWlu dDY0X3QgZ3ByWzMyXTsKLSsgICAgdWludDY0X3QgbmlwOwotKyAgICB1aW50NjRfdCBtc3I7Ci0r ICAgIHVpbnQ2NF90IG9yaWdfZ3ByMzsKLSsgICAgdWludDY0X3QgY3RyOwotKyAgICB1aW50NjRf dCBsbms7Ci0rICAgIHVpbnQ2NF90IHhlcjsKLSsgICAgdWludDY0X3QgY2NyOwotKyAgICB1aW50 NjRfdCBzb2Z0ZTsKLSsgICAgdWludDY0X3QgdHJhcDsKLSsgICAgdWludDY0X3QgZGFyOwotKyAg ICB1aW50NjRfdCBkc2lzcjsKLSsgICAgdWludDY0X3QgcmVzdWx0OwotICNlbHNlCi0gI2Vycm9y IFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi1AQCAtMTQzLDYgKzE2NCw4 IEBAIHVuaW9uIFRocmVhZENvbnRleHQgewotICAgdXNpbmcgTmF0aXZlVGhyZWFkQ29udGV4dCA9 IHVzZXJfcmVnczsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotIC8vIE5v IGFwcHJvcHJpYXRlIE5hdGl2ZVRocmVhZHNDb250ZXh0IHR5cGUgYXZhaWxhYmxlIGZvciBNSVBT Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICB1c2luZyBOYXRpdmVU aHJlYWRDb250ZXh0ID0gc3RydWN0IHB0X3JlZ3M7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAj ZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkgfHwgQVJDSF9DUFVfQVJNNjQKLUBAIC0yMTgs NiArMjQxLDkgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSAgICAgfSBmcHJlZ3NbMzJdOwotICAg ICB1aW50MzJfdCBmcGNzcjsKLSAgICAgdWludDMyX3QgZnB1X2lkOwotKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAvLyBDcmFzaHBhZCdzIFBQQyBzdXBwb3J0IGlz IDY0LWJpdCBvbmx5LCBzbyB0aGlzCi0rICAgIC8vIDMyYml0LW9ubHkgc3RydWN0IGlzIGRlY2xh cmVkIGFzIGVtcHR5LgotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQ VV9YODZfRkFNSUxZCi1AQCAtMjUyLDYgKzI3OCwxMCBAQCB1bmlvbiBGbG9hdENvbnRleHQgewot ICAgICBkb3VibGUgZnByZWdzWzMyXTsKLSAgICAgdWludDMyX3QgZnBjc3I7Ci0gICAgIHVpbnQz Ml90IGZwdV9pZDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAg Ly8gUmVmbGVjdHMgZnByZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAotKyAgICBkb3VibGUgZnBy ZWdzWzMyXTsKLSsgICAgZG91YmxlIGZwc2NyOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2Vu ZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi1AQCAtMjgwLDYgKzMxMCw4IEBAIHVuaW9uIEZs b2F0Q29udGV4dCB7Ci0gICBzdGF0aWNfYXNzZXJ0KHNpemVvZihmNjQpID09IHNpemVvZih1c2Vy X2Zwc2ltZF9zdHJ1Y3QpLCAiU2l6ZSBtaXNtYXRjaCIpOwotICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpCi0gLy8gTm8gYXBwcm9wcmlhdGUgZmxvYXRpbmcgcG9pbnQgY29udGV4 dCBuYXRpdmUgdHlwZSBmb3IgYXZhaWxhYmxlIE1JUFMuCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NF9GQU1JTFkpCi0rICBzdGF0aWNfYXNzZXJ0KHNpemVvZihmNjQpID09IHNpemVvZihm cHJlZ3NldF90KSwgIlNpemUgbWlzbWF0Y2giKTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNl bmRpZiAgLy8gQVJDSF9DUFVfWDg2Ci1AQCAtMjg3LDYgKzMxOSwyNiBAQCB1bmlvbiBGbG9hdENv bnRleHQgewotIHN0YXRpY19hc3NlcnQoc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8RmxvYXRDb250 ZXh0Pjo6dmFsdWUsCi0gICAgICAgICAgICAgICAiTm90IHN0YW5kYXJkIGxheW91dCIpOwotIAot Ky8vISBcYnJpZWYgVGhlIHZlY3RvciByZWdpc3RlcnMgdXNlZCBmb3IgYW4gYXJjaGl0ZWN0dXJl IGZhbWlseQotK3VuaW9uIFZlY3RvckNvbnRleHQgewotKyAgc3RydWN0IHYzMl90IHt9IHYzMjsK LSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXygxNikpKSAvLyBWZWN0b3IgY29udGV4dCBtdXN0IGJlIGRvdWJsZXdvcmQgYWxp Z25lZC4KLSsjZW5kaWYKLSsgIHN0cnVjdCB2NjRfdCB7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQotKyAgICAvLyBSZWZsZWN0cyB2cnJlZ3NldF90IGluIHN5cy91Y29udGV4 dC5oCi0rICAgIHVpbnQzMl90IHZycmVnc1szMl1bNF07Ci0rICAgIHN0cnVjdCB7Ci0rICAgICAg dWludDMyX3QgX19wYWRbM107Ci0rICAgICAgdWludDMyX3QgdnNjcl93b3JkOwotKyAgICB9IHZz Y3I7Ci0rICAgIHVpbnQzMl90IHZyc2F2ZTsKLSsgICAgdWludDMyX3QgX19wYWRbM107Ci0rI2Vu ZGlmCi0rICB9IHY2NDsKLSt9OwotKwotIC8vISBcYnJpZWYgQSBjb2xsZWN0aW9uIG9mIGBwdHJh Y2VgLWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYSB0aHJlYWQuCi0gc3RydWN0IFRocmVhZEluZm8g ewotICAgVGhyZWFkSW5mbygpOwotQEAgLTI5OCw2ICszNTAsOSBAQCBzdHJ1Y3QgVGhyZWFkSW5m byB7Ci0gICAvLyEgXGJyaWVmIFRoZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgZm9yIHRoZSB0 aHJlYWQuCi0gICBGbG9hdENvbnRleHQgZmxvYXRfY29udGV4dDsKLSAKLSsgIC8vISBcYnJpZWYg KE9wdGlvbmFsKSBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2VkIGZvciB0aGUgdGhyZWFkLgotKyAg VmVjdG9yQ29udGV4dCB2ZWN0b3JfY29udGV4dDsKLSsKLSAgIC8vISBcYnJpZWYgVGhlIHRocmVh ZC1sb2NhbCBzdG9yYWdlIGFkZHJlc3MgZm9yIHRoZSB0aHJlYWQuCi0gICBMaW51eFZNQWRkcmVz cyB0aHJlYWRfc3BlY2lmaWNfZGF0YV9hZGRyZXNzOwotIH07Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlz Yy9jYXB0dXJlX2NvbnRleHQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0 LmgKLUBAIC02Niw2ICs2Niw3IEBAIHVzaW5nIE5hdGl2ZUNQVUNvbnRleHQgPSB1Y29udGV4dF90 OwotIC8vISAgICAgbWFjT1MvTGludXgvRnVjaHNpYSB8IHg4Nl82NCAgICAgICB8IGAlJXJkaWAK LSAvLyEgICAgIExpbnV4ICAgICAgICAgICAgICAgfCBBUk0vQVJNNjQgICAgfCBgcjBgL2B4MGAK LSAvLyEgICAgIExpbnV4ICAgICAgICAgICAgICAgfCBNSVBTL01JUFM2NCAgfCBgJGEwYAotKy8v ISAgICAgTGludXggICAgICAgICAgICAgICB8IFBQQzY0ICAgICAgICB8IGByM2AKLSAvLyEKLSAv LyEgICAgIEFkZGl0aW9uYWxseSwgdGhlIHZhbHVlIGBMUmAgb24gQVJNL0FSTTY0IHdpbGwgYmUg dGhlIHJldHVybiBhZGRyZXNzIG9mCi0gLy8hICAgICB0aGlzIGZ1bmN0aW9uLgotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4LlMKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNj L2NhcHR1cmVfY29udGV4dF9saW51eC5TCi1AQCAtMjgsNyArMjgsNyBAQAotICAgLmdsb2JsIENB UFRVUkVDT05URVhUX1NZTUJPTDIKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKQotICAgLmJhbGlnbiAxNiwgMHg5MAotLSNlbGlmIGRlZmluZWQoX19hcm1fXykg fHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjZWxpZiBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC5iYWxpZ24gNCwgMHgwCi0gI2VuZGlmCi0g Ci1AQCAtNDE5LDQgKzQxOSwyMTQgQEAgQ0FQVFVSRUNPTlRFWFRfU1lNQk9MMjoKLSAgIGpyICRy YQotIAotICAgLnNldCBhdAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFN0 b3JlIHIwLXIzMQotKyAgc3RkIDAsIDB4ZTgoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzBdCi0rICBzdGQgMSwgMHhmMCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMV0KLSsgIHN0ZCAyLCAweGY4KDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1syXQotKyAgLy8gbm90ZSB0aGF0IHIzJ3Mgb3JpZ2luYWwgdmFsdWUgd2FzIGxvc3QKLSsg IHN0ZCAzLCAweDEwMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szXQotKyAg c3RkIDQsIDB4MTA4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzRdCi0rICBz dGQgNSwgMHgxMTAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNV0KLSsgIHN0 ZCA2LCAweDExOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s2XQotKyAgc3Rk IDcsIDB4MTIwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzddCi0rICBzdGQg OCwgMHgxMjgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbOF0KLSsgIHN0ZCA5 LCAweDEzMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s5XQotKyAgc3RkIDEw LCAweDEzOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzEwXQotKyAgc3RkIDEx LCAweDE0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzExXQotKyAgc3RkIDEy LCAweDE0OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzEyXQotKyAgc3RkIDEz LCAweDE1MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzEzXQotKyAgc3RkIDE0 LCAweDE1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE0XQotKyAgc3RkIDE1 LCAweDE2MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE1XQotKyAgc3RkIDE2 LCAweDE2OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE2XQotKyAgc3RkIDE3 LCAweDE3MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE3XQotKyAgc3RkIDE4 LCAweDE3OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE4XQotKyAgc3RkIDE5 LCAweDE4MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE5XQotKyAgc3RkIDIw LCAweDE4OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIwXQotKyAgc3RkIDIx LCAweDE5MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIxXQotKyAgc3RkIDIy LCAweDE5OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIyXQotKyAgc3RkIDIz LCAweDFhMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIzXQotKyAgc3RkIDI0 LCAweDFhOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI0XQotKyAgc3RkIDI1 LCAweDFiMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI1XQotKyAgc3RkIDI2 LCAweDFiOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI2XQotKyAgc3RkIDI3 LCAweDFjMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI3XQotKyAgc3RkIDI4 LCAweDFjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI4XQotKyAgc3RkIDI5 LCAweDFkMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI5XQotKyAgc3RkIDMw LCAweDFkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzMwXQotKyAgc3RkIDMx LCAweDFlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzMxXQotKwotKyAgLy8g Rm9yIE5JUCwgd2UgY2FuIHVzZSB0aGUgdmFsdWUgaW4gdGhlIGxpbmsgcmVnaXN0ZXIKLSsgIG1m bHIgMAotKyAgc3RkIDAsIDB4MWU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfTklQXQotKwotKyAgLy8gQ1RSCi0rICBtZmN0ciAwCi0rICBzdGQgMCwgMHgyMDAoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdCi0rCi0rICAvLyBGb3IgTE5LLCB3 ZSdsbCB1c2UgdGhlIGNhbGxlcidzIExSIHNhdmUgYXJlYSAoMiBzdGFjayBmcmFtZXMgdXApLgot KyAgLy8gcjQgY2FuIGJlIHVzZWQgYXMgYSBzY3JhdGNoIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBh bHJlYWR5IGJlZW4gc2F2ZWQuCi0rICBsZCA0LCAwKDEpCi0rICBsZCA0LCAxNig0KQotKyAgc3Rk IDQsIDB4MjA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXQotKwot KyAgLy8gWEVSCi0rICBtZnhlciAwCi0rICBzdGQgMCwgMHgyMTAoMykgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdCi0rCi0rICAvLyBDQ1IKLSsgIG1mY3IgMAotKyAgc3Rk IDAsIDB4MjE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXQotKwot KyAgLy8gTVNSLCBvcmlnX3IzLCBNUSwgVFJBUCwgREFSLCBEU0lTUiwgUkVTVUxULCBEU0NSLAot KyAgLy8gbm90IHVzZWQgb3Igbm90IHJlbGV2YW50LCAgemVybyB0aGVtIG91dC4KLSsgIGxpIDQs IDAKLSsgIHN0ZCA0LCAweDFmMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BU X01TUl0KLSsgIHN0ZCA0LCAweDFmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdz W1BUX09SSUdfUjNdCi0rICBzdGQgNCwgMHgyMjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9NUV0KLSsgIHN0ZCA0LCAweDIyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX1RSQVBdCi0rICBzdGQgNCwgMHgyMzAoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZ3BfcmVnc1tQVF9EQVJdCi0rICBzdGQgNCwgMHgyMzgoMykgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1tQVF9EU0lTUl0KLSsgIHN0ZCA0LCAweDI0MCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1JFU1VMVF0KLSsgIHN0ZCA0LCAweDI0OCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RTQ1JdCi0rCi0rICAvLyBVcGRhdGUgY29u dGV4dC0+dWNfbWNvbnRleHQucmVncyB0byBwb2ludCB0byBncF9yZWdzCi0rICBhZGRpIDAsIDMs IDB4ZTgKLSsgIHN0ZCAwLCAweGUwKDMpCi0rCi0rICAvLyBTYXZlIGZsb2F0aW5nIHBvaW50IHJl Z2lzdGVycyAwLTMxCi0rICBzdGZkIDAsIDB4MjY4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzBdCi0rICBzdGZkIDEsIDB4MjcwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzFdCi0rICBzdGZkIDIsIDB4Mjc4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzJdCi0rICBzdGZkIDMsIDB4MjgwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzNdCi0rICBzdGZkIDQsIDB4Mjg4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzRdCi0rICBzdGZkIDUsIDB4MjkwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzVdCi0rICBzdGZkIDYsIDB4Mjk4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzZdCi0rICBzdGZkIDcsIDB4MmEwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzddCi0rICBzdGZkIDgsIDB4MmE4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzhdCi0rICBzdGZkIDksIDB4MmIwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzldCi0rICBzdGZkIDEwLCAweDJiOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzEwXQotKyAgc3RmZCAxMSwgMHgyYzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1sxMV0KLSsgIHN0ZmQgMTIsIDB4MmM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmZwX3JlZ3NbMTJdCi0rICBzdGZkIDEzLCAweDJkMCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5mcF9yZWdzWzEzXQotKyAgc3RmZCAxNCwgMHgyZDgoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZnBfcmVnc1sxNF0KLSsgIHN0ZmQgMTUsIDB4MmUwKDMpIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmZwX3JlZ3NbMTVdCi0rICBzdGZkIDE2LCAweDJlOCgzKSAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5mcF9yZWdzWzE2XQotKyAgc3RmZCAxNywgMHgyZjAoMykgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZnBfcmVnc1sxN10KLSsgIHN0ZmQgMTgsIDB4MmY4KDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMThdCi0rICBzdGZkIDE5LCAweDMwMCgzKSAvLyBjb250ZXh0LT51 Y19tY29udGV4dC5mcF9yZWdzWzE5XQotKyAgc3RmZCAyMCwgMHgzMDgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1syMF0KLSsgIHN0ZmQgMjEsIDB4MzEwKDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmZwX3JlZ3NbMjFdCi0rICBzdGZkIDIyLCAweDMxOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzWzIyXQotKyAgc3RmZCAyMywgMHgzMjAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syM10KLSsgIHN0ZmQgMjQsIDB4MzI4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjRdCi0rICBzdGZkIDI1LCAweDMzMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI1XQotKyAgc3RmZCAyNiwgMHgzMzgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNl0KLSsgIHN0ZmQgMjcsIDB4MzQwKDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjddCi0rICBzdGZkIDI4LCAweDM0OCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI4XQotKyAgc3RmZCAyOSwgMHgzNTAoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syOV0KLSsgIHN0ZmQgMzAsIDB4MzU4KDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzBdCi0rICBzdGZkIDMxLCAweDM2MCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzMxXQotKwotKyAgLy8gRlBTQ1IKLSsgIG1m ZnMgMAotKyAgc3RmZCAwLCAweDM2OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdz WzMyXQotKwotKyAgLy8gU2F2ZSBWTVggVmVjdG9yIHJlZ2lzdGVycwotKyAgLy8gVXBkYXRlIHI0 IHRvIGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBvZiB2bXhfcmVzZXJ2ZQotKyAgYWRkaSA0LCAz LCAweDM3OAotKyAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgcXVhZHdvcmQgYWxpZ25lZAotKyAgYW5k aS4gNSwgNCwgMHhGCi0rICBiZXEgMWYgLy8gTm8gYWxpZ25tZW50IGlzIG5lY2Vzc2FyeQotKyAg Ly8gQWRkcmVzcyBpcyBkb3VibGV3b3JkIGFsaWduZWQgYW5kIG5vdCBxdWFkd29yZCBhbGlnbmVk LCBhZGQgOAotKyAgYWRkaSA0LCA0LCA4Ci0rCi0rMToKLSsgIC8vIFN0b3JlIFZNWCByZWdpc3Rl cnMgMC0zMQotKyAgLy8gcjQgd2lsbCBjb250YWluIHRoZSBiYXNlIGFkZHJlc3MKLSsgIC8vIHI1 IHdpbGwgY29udGFpbiB0aGUgaW5kZXgKLSsgIGxpIDUsIDAKLSsgIHN0dnggMCwgNCwgNSAgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAwXQotKyAgYWRkaSA1 LCA1LCAxNgotKyAgc3R2eCAxLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDFdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIsIDQsIDUgICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMl0KLSsgIGFkZGkg NSwgNSwgMTYKLSsgIHN0dnggMywgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAzXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA0LCA0LCA1ICAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDRdCi0rICBhZGRp IDUsIDUsIDE2Ci0rICBzdHZ4IDUsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgNV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNiwgNCwgNSAg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA2XQotKyAgYWRk aSA1LCA1LCAxNgotKyAgc3R2eCA3LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14 X3Jlc2VydmVbKGFsaWduKSArIDddCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDgsIDQsIDUg ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgOF0KLSsgIGFk ZGkgNSwgNSwgMTYKLSsgIHN0dnggOSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyA5XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxMCwgNCwg NSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDEwXQotKyAg YWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxMSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu dm14X3Jlc2VydmVbKGFsaWduKSArIDExXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxMiwg NCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDEyXQot KyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxMywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDEzXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAx NCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE0 XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxNSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE1XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2 eCAxNiwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDE2XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxNywgNCwgNSAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE3XQotKyAgYWRkaSA1LCA1LCAxNgotKyAg c3R2eCAxOCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWdu KSArIDE4XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAxOSwgNCwgNSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE5XQotKyAgYWRkaSA1LCA1LCAxNgot KyAgc3R2eCAyMCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFs aWduKSArIDIwXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyMSwgNCwgNSAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDIxXQotKyAgYWRkaSA1LCA1LCAx NgotKyAgc3R2eCAyMiwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVb KGFsaWduKSArIDIyXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyMywgNCwgNSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDIzXQotKyAgYWRkaSA1LCA1 LCAxNgotKyAgc3R2eCAyNCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDI0XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyNSwgNCwgNSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI1XQotKyAgYWRkaSA1 LCA1LCAxNgotKyAgc3R2eCAyNiwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDI2XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyNywgNCwgNSAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI3XQotKyAgYWRk aSA1LCA1LCAxNgotKyAgc3R2eCAyOCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14 X3Jlc2VydmVbKGFsaWduKSArIDI4XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyOSwgNCwg NSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI5XQotKyAg YWRkaSA1LCA1LCAxNgotKyAgc3R2eCAzMCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu dm14X3Jlc2VydmVbKGFsaWduKSArIDMwXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAzMSwg NCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDMxXQot KyAgYWRkaSA1LCA1LCAxNgotKwotKyAgLy8gVlNDUgotKyAgbWZ2c2NyIDAKLSsgIHN0dnggMCwg NCwgNQotKyAgYWRkaSA1LCA1LCAxNgotKwotKyAgLy8gVlJTQVZFCi0rICBtZnZyc2F2ZSAwCi0r ICBzdHd4IDAsIDQsIDUKLSsKLSsgIC8vIFVwZGF0ZSBjb250ZXh0LT51Y19tY29udGV4dC52X3Jl Z3MgdG8gcG9pbnQgdG8gdm14X3Jlc2VydmUgKyBhbGlnbm1lbnQuCi0rICBzdGQgNCwgMHgzNzAo MykKLSsKLSsgIC8vIFplcm8gb3V0IGFsbCB1bnVzZWQgZmllbGRzCi0rICBsaSA0LCAwCi0rICBz dGQgNCwgMHhjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5zaWduYWwKLSsgIHN0ZCA0LCAw eGQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmhhbmRsZXIKLSsgIHN0ZCA0LCAweGQ4KDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lm9sZG1hc2sKLSsKLSsgIGJscgotICNlbmRpZiAgLy8g X19pMzg2X18KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYwotQEAgLTQ5LDcgKzQ5 LDggQEAgdm9pZCBUZXN0Q2FwdHVyZUNvbnRleHQoKSB7Ci0gICAvLyByZWZlcmVuY2UgcHJvZ3Jh bSBjb3VudGVyLgotICAgdWludHB0cl90IHBjID0gUHJvZ3JhbUNvdW50ZXJGcm9tQ29udGV4dChj b250ZXh0XzEpOwotIAotLSNpZiAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0rI2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVS KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgXAotKyAgICAhZGVmaW5lZChB UkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0gICAvLyBBZGRyZXNzU2FuaXRpemVyIGNhbiBjYXVzZSBl bm91Z2ggY29kZSBibG9hdCB0aGF0IHRoZSDigJxuZWFyYnnigJ0gY2hlY2sgd291bGQKLSAgIC8v IGxpa2VseSBmYWlsLgotICAgY29uc3QgdWludHB0cl90IGtSZWZlcmVuY2VQQyA9Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCi1AQCAtMzYs NiArMzYsOCBAQCB2b2lkIFNhbml0eUNoZWNrQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0 JiBjb250ZXh0KSB7Ci0gICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5yZWdzWzBdLCBG cm9tUG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOwotICNlbGlmIGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpCi0gICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncmVn c1s0XSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsKLSsjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250 ZXh0LmdwX3JlZ3NbM10sIEZyb21Qb2ludGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7Ci0g I2VuZGlmCi0gfQotIAotQEAgLTUwLDYgKzUyLDggQEAgdWludHB0cl90IFByb2dyYW1Db3VudGVy RnJvbUNvbnRleHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgcmV0dXJu IGNvbnRleHQudWNfbWNvbnRleHQucGM7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkKLSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LnBjOwotKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9OSVBdOwotICNlbmRpZgotIH0KLSAKLUBAIC02NCw2ICs2OCw4IEBAIHVpbnRwdHJf dCBTdGFja1BvaW50ZXJGcm9tQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0 KSB7Ci0gICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5zcDsKLSAjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKQotICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3Nb MjldOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgcmV0dXJuIGNv bnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1sxXTsKLSAjZW5kaWYKLSB9Ci0gCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFs c190ZXN0LmNjCi1AQCAtNDYsMTIgKzQ2LDEyIEBAIGJvb2wgQ2FuQ2F1c2VTaWduYWwoaW50IHNp ZykgewotICAgcmV0dXJuIHNpZyA9PSBTSUdBQlJUIHx8Ci0gICAgICAgICAgc2lnID09IFNJR0FM Uk0gfHwKLSAgICAgICAgICBzaWcgPT0gU0lHQlVTIHx8Ci0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BV X0FSTTY0KQotKyNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9D UFVfUFBDNjQpCi0gICAgICAgICAgc2lnID09IFNJR0ZQRSB8fAotLSNlbmRpZiAgLy8gIWRlZmlu ZWQoQVJDSF9DUFVfQVJNNjQpCi0rI2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkg JiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZB TUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTCkKLSAgICAgICAgICBzaWcgPT0gU0lHSUxM IHx8Ci0tI2VuZGlmICAvLyBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQo QVJDSF9DUFVfQVJNRUwKLSsjZW5kaWYgIC8vIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkg fHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTCkKLSAgICAgICAgICBzaWcgPT0gU0lHUElQRSB8fAot ICAgICAgICAgIHNpZyA9PSBTSUdTRUdWIHx8Ci0gI2lmIGRlZmluZWQoT1NfTUFDT1NYKQotQEAg LTExNyw5ICsxMTcsMTEgQEAgdm9pZCBDYXVzZVNpZ25hbChpbnQgc2lnKSB7Ci0gICAgICAgYnJl YWs7Ci0gICAgIH0KLSAKLS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCi0rI2lmICFkZWZp bmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAgICAgLy8g QVJNNjQgaGFzIGhhcmR3YXJlIGludGVnZXIgZGl2aXNpb24gaW5zdHJ1Y3Rpb25zIHRoYXQgZG9u 4oCZdCBnZW5lcmF0ZSBhCi0gICAgIC8vIHRyYXAgZm9yIGRpdmlkZS1ieS16ZXJvLCBzbyB0aGlz IGRvZXNu4oCZdCBwcm9kdWNlIFNJR0ZQRS4KLSsgICAgLy8KLSsgICAgLy8gUFBDNjQgZml4ZWQt cG9pbnQgZGl2aXNpb24gYnkgemVybyBhbHNvIGRvZXNuJ3QgcHJvZHVjZSBhIFNJR0ZQRS4KLSAg ICAgY2FzZSBTSUdGUEU6IHsKLSAgICAgICAvLyBPcHRpbWl6YXRpb24gbWFrZXMgdGhpcyB0cmlj a3ksIHNvIGdldCB6ZXJvIGZyb20gYSBzeXN0ZW0gY2FsbCBsaWtlbHkKLSAgICAgICAvLyB0byBz dWNjZWVkLCBhbmQgdHJ5IHRvIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXN1bHQuCi1AQCAtMTM3 LDcgKzEzOSw3IEBAIHZvaWQgQ2F1c2VTaWduYWwoaW50IHNpZykgewotICAgICAgIGZzdGF0KHF1 b3RpZW50LCAmc3RhdF9idWYpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0tI2VuZGlmICAvLyBB UkNIX0NQVV9BUk02NAotKyNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIAotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1J TFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwpCi0gICAgIGNhc2UgU0lHSUxMOiB7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlM RC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9s aWJwbmcvQlVJTEQuZ24KLUBAIC05Myw2ICs5MywxMSBAQCBzb3VyY2Vfc2V0KCJsaWJwbmdfc291 cmNlcyIpIHsKLSAgICAgICAibWlwcy9maWx0ZXJfbXNhX2ludHJpbnNpY3MuYyIsCi0gICAgICAg Im1pcHMvbWlwc19pbml0LmMiLAotICAgICBdCi0rICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09 ICJwcGM2NCIpIHsKLSsgICAgc291cmNlcyArPSBbCi0rICAgICAgInBvd2VycGMvZmlsdGVyX3Zz eF9pbnRyaW5zaWNzLmMiLAotKyAgICAgICJwb3dlcnBjL3Bvd2VycGNfaW5pdC5jIiwKLSsgICAg XQotICAgfQotIAotICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv bWl1bV9jb2RlIiBdCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvcG93ZXJw Yy9maWx0ZXJfdnN4X2ludHJpbnNpY3MuYwotQEAgLTAsMCArMSw3NjcgQEAKLSsvKiBmaWx0ZXJf dnN4X2ludHJpbnNpY3MuYyAtIFBvd2VyUEMgb3B0aW1pc2VkIGZpbHRlciBmdW5jdGlvbnMKLSsg KgotKyAqIENvcHlyaWdodCAoYykgMjAxNyBHbGVubiBSYW5kZXJzLVBlaHJzb24KLSsgKiBXcml0 dGVuIGJ5IFZhZGltIEJhcmtvdiwgMjAxNy4KLSsgKiBMYXN0IGNoYW5nZWQgaW4gbGlicG5nIDEu Ni4yOSBbTWFyY2ggMTYsIDIwMTddCi0rICoKLSsgKiBUaGlzIGNvZGUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIGxpYnBuZyBsaWNlbnNlLgotKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlv biBhbmQgdXNlLCBzZWUgdGhlIGRpc2NsYWltZXIKLSsgKiBhbmQgbGljZW5zZSBpbiBwbmcuaAot KyAqLwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVk ZSAiLi4vcG5ncHJpdi5oIgotKwotKyNpZmRlZiBQTkdfUkVBRF9TVVBQT1JURUQKLSsKLSsvKiBU aGlzIGNvZGUgcmVxdWlyZXMgLW1hbHRpdmVjIGFuZCAtbXZzeCBvbiB0aGUgY29tbWFuZCBsaW5l OiAqLwotKyNpZiBQTkdfUE9XRVJQQ19WU1hfSU1QTEVNRU5UQVRJT04gPT0gMSAvKiBpbnRyaW5z aWNzIGNvZGUgZnJvbSBwbmdwcml2LmggKi8KLSsKLSsjaW5jbHVkZSA8YWx0aXZlYy5oPgotKwot KyNpZiBQTkdfUE9XRVJQQ19WU1hfT1BUID4gMAotKwotKyNpZm5kZWYgX19WU1hfXwotKyMgIGVy cm9yICJUaGlzIGNvZGUgcmVxdWlyZXMgVlNYIHN1cHBvcnQgKFBPV0VSNyBhbmQgbGF0ZXIpLiBQ bGVhc2UgcHJvdmlkZSAtbXZzeCBjb21waWxlciBmbGFnLiIKLSsjZW5kaWYKLSsKLSsjZGVmaW5l IHZlY19sZF91bmFsaWduZWQodmVjLGRhdGEpIHZlYyA9IHZlY192c3hfbGQoMCxkYXRhKQotKyNk ZWZpbmUgdmVjX3N0X3VuYWxpZ25lZCh2ZWMsZGF0YSkgdmVjX3ZzeF9zdCh2ZWMsMCxkYXRhKQot KwotKwotKy8qIEZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgbG9vayBhdCBtb3N0IDMgcGl4ZWxzIChh LGIsYykgdG8gcHJlZGljdCB0aGUgNHRoIChkKS4KLSsgKiBUaGV5J3JlIHBvc2l0aW9uZWQgbGlr ZSB0aGlzOgotKyAqICAgIHByZXY6ICBjIGIKLSsgKiAgICByb3c6ICAgYSBkCi0rICogVGhlIFN1 YiBmaWx0ZXIgcHJlZGljdHMgZD1hLCBBdmcgZD0oYStiKS8yLCBhbmQgUGFldGggcHJlZGljdHMg ZCB0byBiZQotKyAqIHdoaWNoZXZlciBvZiBhLCBiLCBvciBjIGlzIGNsb3Nlc3QgdG8gcD1hK2It Yy4KLSsgKiAoIHRoaXMgaXMgdGFrZW4gZnJvbSAuLi9pbnRlbC9maWx0ZXJfc3NlMl9pbnRyaW5z aWNzLmMgKQotKyAqLwotKwotKyNkZWZpbmUgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2lu Zm8scm93LHByZXZfcm93LG9mZnNldCkgXAotKyAgIHBuZ19ieXRlIGk7XAotKyAgIHBuZ19ieXRl cCBycCA9IHJvdyArIG9mZnNldDtcCi0rICAgcG5nX2NvbnN0X2J5dGVwIHBwID0gcHJldl9yb3c7 XAotKyAgIHBuZ19zaXplX3QgdW5hbGlnbmVkX3RvcCA9IDE2IC0gKCgocG5nX3NpemVfdClycCAl IDE2KSk7XAotKyAgIHBuZ19zaXplX3QgaXN0b3A7XAotKyAgIGlmKHVuYWxpZ25lZF90b3AgPT0g MTYpXAotKyAgICAgIHVuYWxpZ25lZF90b3AgPSAwO1wKLSsgICBpc3RvcCA9IHJvd19pbmZvLT5y b3dieXRlcztcCi0rICAgaWYoKHVuYWxpZ25lZF90b3AgPCBpc3RvcCkpXAotKyAgICAgIGlzdG9w IC09IHVuYWxpZ25lZF90b3A7XAotKyAgIGVsc2V7XAotKyAgICAgIHVuYWxpZ25lZF90b3AgPSBp c3RvcDtcCi0rICAgICAgaXN0b3AgPSAwO1wKLSsgICB9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0 ZXJfcm93X3VwX3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQot K3sKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVk IGNoYXIgcHBfdmVjOwotKyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxw cmV2X3JvdywwKQotKwotKyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUg YWxpZ25lZCBkYXRhCi0rICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNh bGN1bGF0ZQotKyAgICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgotKyAgICAqLwotKyAgIGZv ciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wOyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChw bmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqcHArKykpICYgMHhmZik7Ci0rICAgICAgcnAr KzsKLSsgICB9Ci0rCi0rICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KLSsgICB3aGls ZSggaXN0b3AgPj0gMTYgKQotKyAgIHsKLSsgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0r ICAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOwotKwotKyAgICAgIHJwX3ZlYyA9IHZl Y19hZGQocnBfdmVjLHBwX3ZlYyk7Ci0rCi0rICAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsK LSsgICAgICBwcCArPSAxNjsKLSsgICAgICBycCArPSAxNjsKLSsgICAgICBpc3RvcCAtPSAxNjsK LSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgIHsKLSsgICAgICAvKiBJZiBieXRlIGNv dW50IG9mIHJvdyBpcyBub3QgZGl2aXNpYmxlIGJ5IDE2Ci0rICAgICAgICogd2Ugd2lsbCBwcm9j ZXNzIHJlbWFpbmluZyBwYXJ0IGFzIHVzdWFsCi0rICAgICAgICovCi0rICAgICAgZm9yIChpID0g MDsgaSA8IGlzdG9wOyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSko KChpbnQpKCpycCkgKyAoaW50KSgqcHArKykpICYgMHhmZik7Ci0rICAgICAgICAgcnArKzsKLSsg ICAgICB9Ci0rfQotKwotK30KLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX0xFRlRTSElGVEVEMV80ID0gezE2LDE2LDE2LDE2LCAwLCAxLCAyLCAzLDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xF RlRTSElGVEVEMl80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA0LCA1LCA2LCA3LDE2LDE2 LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElG VEVEM180ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA4LCA5LDEwLDEx fTsKLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVE MV8zID0gezE2LDE2LDE2LCAwLCAxLCAyLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsK LStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEMl8zID0g ezE2LDE2LDE2LDE2LDE2LDE2LCAzLCA0LCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0 aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEM18zID0gezE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA2LCA3LCA4LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29u c3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVENF8zID0gezE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA5LDEwLDExLDE2fTsKLSsKLStzdGF0aWMgY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVEMV80ID0gezE2LDE2LDE2LDE2LCA0 LCA1LCA2LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9y IHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVEMl80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LCA4LCA5LDEwLDExLDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgVlNYX05PVF9TSElGVEVEM180ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDEyLDEzLDE0LDE1fTsKLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX05PVF9TSElGVEVEMV8zID0gezE2LDE2LDE2LCAzLCA0LCA1LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX05PVF9TSElGVEVEMl8zID0gezE2LDE2LDE2LDE2LDE2LDE2LCA2LCA3LCA4LDE2LDE2LDE2 LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05P VF9TSElGVEVEM18zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA5LDEwLDExLDE2LDE2 LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElG VEVENF8zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDEyLDEzLDE0LDE2 fTsKLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfWkVSTyA9 IHswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfTsKLSsjaWZkZWYgX19MSVRUTEVfRU5E SUFOX18KLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9f U0hPUlQxXzQgPSB7IDQsMTYsIDUsMTYsIDYsMTYsIDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9S VDJfNCA9IHsgOCwxNiwgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07 Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUM180 ID0gezEyLDE2LDEzLDE2LDE0LDE2LDE1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLSsK LStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIxXzQg PSB7MTYsMTYsMTYsMTYsIDAsIDIsIDQsIDYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJfNCA9IHsx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwgNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM180ID0gezE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LCA2fTsKLSsKLStzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQxXzMgPSB7IDMsMTYs IDQsMTYsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDJfMyA9IHsgNiwxNiwgNywx NiwgOCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUM18zID0geyA5LDE2LDEwLDE2LDEx LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9y IHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQ0XzMgPSB7MTIsMTYsMTMsMTYsMTQsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3Ig dW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFfMyA9IHsxNiwxNiwxNiwgMCwgMiwgNCwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMl8zID0gezE2LDE2LDE2LDE2LDE2LDE2LCAwLCAy LCA0LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIzXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs IDAsIDIsIDQsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfU0hPUlRfVE9fQ0hBUjRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwgMCwgMiwgNCwxNn07Ci0rCi0rI2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykKLSsK LStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQxXzQg PSB7MTYsIDQsMTYsIDUsMTYsIDYsMTYsIDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDJfNCA9IHsx NiwgOCwxNiwgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUM180ID0gezE2LDEy LDE2LDEzLDE2LDE0LDE2LDE1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLSsKLStzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIxXzQgPSB7MTYsMTYs MTYsMTYsIDEsIDMsIDUsIDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJfNCA9IHsxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwgMSwgMywgNSwgNywxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM180ID0gezE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LCA3fTsKLSsKLStzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQxXzMgPSB7MTYsIDMsMTYsIDQsMTYs IDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3Ig dW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDJfMyA9IHsxNiwgNiwxNiwgNywxNiwgOCwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUM18zID0gezE2LCA5LDE2LDEwLDE2LDExLDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQ0XzMgPSB7MTYsMTIsMTYsMTMsMTYsMTQsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFfMyA9IHsxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy IFZTWF9TSE9SVF9UT19DSEFSMl8zID0gezE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2 LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNY X1NIT1JUX1RPX0NIQVIzXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUs MTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hP UlRfVE9fQ0hBUjRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMSwg MywgNSwxNn07Ci0rCi0rI2VuZGlmCi0rCi0rI2RlZmluZSB2c3hfY2hhcl90b19zaG9ydCh2ZWMs b2Zmc2V0LGJwcCkgKHZlY3RvciB1bnNpZ25lZCBzaG9ydCl2ZWNfcGVybSgodmVjKSxWU1hfQ0hB Ul9aRVJPLFZTWF9DSEFSX1RPX1NIT1JUIyNvZmZzZXQjI18jI2JwcCkKLSsjZGVmaW5lIHZzeF9z aG9ydF90b19jaGFyKHZlYyxvZmZzZXQsYnBwKSB2ZWNfcGVybSgoKHZlY3RvciB1bnNpZ25lZCBj aGFyKSh2ZWMpKSxWU1hfQ0hBUl9aRVJPLFZTWF9TSE9SVF9UT19DSEFSIyNvZmZzZXQjI18jI2Jw cCkKLSsKLSsjaWZkZWYgUE5HX1VTRV9BQlMKLSsjICBkZWZpbmUgdnN4X2FicyhudW1iZXIpIGFi cyhudW1iZXIpCi0rI2Vsc2UKLSsjICBkZWZpbmUgdnN4X2FicyhudW1iZXIpIChudW1iZXIgPiAw KSA/IChudW1iZXIpIDogLShudW1iZXIpCi0rI2VuZGlmCi0rCi0rdm9pZCBwbmdfcmVhZF9maWx0 ZXJfcm93X3N1YjRfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3Jv dykKLSt7Ci0rICAgY29uc3QgcG5nX2J5dGUgYnBwID0gNDsKLSsKLSsgICB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBycF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcGFydF92ZWM7Ci0rCi0r ICAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsK LSsgICBQTkdfVU5VU0VEKHBwKQotKwotKyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJl IDE2LWJ5dGUgYWxpZ25lZCBkYXRhCi0rICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQu IFNvIHdlIGNhbGN1bGF0ZQotKyAgICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgotKyAgICAq LwotKyAgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wOyBpKyspCi0rICAgewotKyAgICAg ICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYp OwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2Fu ICovCi0rICAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsgICB7Ci0rICAgICAgZm9yKGk9MDtpIDwg YnBwIDsgaSsrKQotKyAgICAgIHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgq cnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAg IH0KLSsgICAgICBycCAtPSBicHA7Ci0rCi0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwot KyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRT SElGVEVEMV80KTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0r Ci0rICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVG VFNISUZURUQyXzQpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsK LSsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9M RUZUU0hJRlRFRDNfNCk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMp OwotKwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcnAgKz0gMTY7Ci0r ICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wID4gMCkKLSsgICAgICBm b3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAgICAgIHsKLSsgICAgICAgICAqcnAg PSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycCAtIGJwcCkpKSAmIDB4ZmYpOwot KyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotKwotK30KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRl cl9yb3dfc3ViM192c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93 KQotK3sKLSsgICBjb25zdCBwbmdfYnl0ZSBicHAgPSAzOwotKwotKyAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwYXJ0X3ZlYzsKLSsKLSsg ICB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKwot KyAgIFBOR19VTlVTRUQocHApCi0rCi0rICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUg MTYtYnl0ZSBhbGlnbmVkIGRhdGEKLSsgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4g U28gd2UgY2FsY3VsYXRlCi0rICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCi0rICAgICov Ci0rICAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykKLSsgICB7Ci0rICAgICAg KnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7 Ci0rICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4g Ki8KLSsgICB3aGlsZSggaXN0b3AgPj0gMTYgKQotKyAgIHsKLSsgICAgICBmb3IoaT0wO2kgPCBi cHAgOyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpy cCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgICAgIHJwKys7Ci0rICAgICAg fQotKyAgICAgIHJwIC09IGJwcDsKLSsKLSsgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0r ICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNI SUZURUQxXzMpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsK LSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZU U0hJRlRFRDJfMyk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwot KwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xF RlRTSElGVEVEM18zKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7 Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hf TEVGVFNISUZURUQ0XzMpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVj KTsKLSsKLSsgICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKyAgICAgIHJwICs9IDE1OwotKyAg ICAgIGlzdG9wIC09IDE2OwotKwotKyAgICAgIC8qIFNpbmNlIDE2ICUgYnBwID0gMTYgJSAzID0g MSwgbGFzdCBlbGVtZW50IG9mIGFycmF5IG11c3QKLSsgICAgICAgKiBiZSBwcm9jZWVkZWQgbWFu dWFsbHkKLSsgICAgICAgKi8KLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsg KGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICBp Zihpc3RvcCA+IDApCi0rICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKLSsg ICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoo cnAtYnBwKSkpICYgMHhmZik7Ci0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rfQotKwotK3Zv aWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmc0X3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBw bmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfY29u c3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDQ7Ci0rCi0r ICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFy IHBwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF9wYXJ0X3ZlYzsKLSsgICB2ZWN0 b3IgdW5zaWduZWQgY2hhciBycF9wYXJ0X3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBh dmdfdmVjOwotKwotKyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2 X3JvdyxicHApCi0rICAgcnAgLT0gYnBwOwotKyAgIGlmKGlzdG9wID49IGJwcCkKLSsgICAgICBp c3RvcCAtPSBicHA7Ci0rCi0rICAgZm9yIChpID0gMDsgaSA8IGJwcDsgaSsrKQotKyAgIHsKLSsg ICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAoKGludCkoKnBw KyspIC8gMiApKSAmIDB4ZmYpOwotKwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8qIEFs dGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRhCi0rICAgICogYnV0 IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAgICAqIHVuYWxpZ25l ZCBwYXJ0IGFzIHVzdWFsLgotKyAgICAqLwotKyAgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRf dG9wOyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwot KyAgICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAg ICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0r ICAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsgICB7Ci0rICAgICAgZm9yKGk9MDtpIDwgYnBwIDsg aSsrKQotKyAgICAgIHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsK LSsgICAgICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsK LSsgICAgICAgICBycCsrOwotKyAgICAgIH0KLSsgICAgICBycCAtPSBicHA7Ci0rICAgICAgcHAg LT0gYnBwOwotKwotKyAgICAgIHZlY19sZF91bmFsaWduZWQocHBfdmVjLHBwKTsKLSsgICAgICBy cF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0rCi0rICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShy cF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQxXzQpOwotKyAgICAgIHBwX3BhcnRf dmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMV80KTsK LSsgICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAg ICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVj LHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRk KHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsgICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3Zl YyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDJfNCk7Ci0rICAgICAgcHBfcGFydF92ZWMg PSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQyXzQpOwotKyAg ICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgICBh dmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBf cGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBf dmVjLGF2Z192ZWMpOwotKwotKyAgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZT WF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEM180KTsKLSsgICAgICBwcF9wYXJ0X3ZlYyA9IHZl Y19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDNfNCk7Ci0rICAgICAg YXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgIGF2Z192 ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0 X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMs YXZnX3ZlYyk7Ci0rCi0rICAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgICBycCAr PSAxNjsKLSsgICAgICBwcCArPSAxNjsKLSsgICAgICBpc3RvcCAtPSAxNjsKLSsgICB9Ci0rCi0r ICAgaWYoaXN0b3AgID4gMCkKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsr KQotKyAgICAgIHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsg ICAgICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsg ICAgICAgICBycCsrOwotKyAgICAgIH0KLSt9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93 X2F2ZzNfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7 Ci0rICBjb25zdCBwbmdfYnl0ZSBicHAgPSAzOwotKwotKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIg cnBfdmVjOwotKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOwotKyAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgcHBfcGFydF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF9wYXJ0X3Zl YzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGF2Z192ZWM7Ci0rCi0rICB2c3hfZGVjbGFyZV9j b21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKyAgcnAgLT0gYnBwOwotKyAg aWYoaXN0b3AgPj0gYnBwKQotKyAgICAgaXN0b3AgLT0gYnBwOwotKwotKyAgZm9yIChpID0gMDsg aSA8IGJwcDsgaSsrKQotKyAgewotKyAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSAr Ci0rICAgICAgICAoKGludCkoKnBwKyspIC8gMiApKSAmIDB4ZmYpOwotKwotKyAgICAgcnArKzsK LSsgIH0KLSsKLSsgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25l ZCBkYXRhCi0rICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRl Ci0rICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAqLwotKyAgZm9yIChpID0gMDsg aSA8IHVuYWxpZ25lZF90b3A7IGkrKykKLSsgIHsKLSsgICAgICpycCA9IChwbmdfYnl0ZSkoKChp bnQpKCpycCkgKwotKyAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhm Zik7Ci0rCi0rICAgICBycCsrOwotKyAgfQotKwotKyAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBj YW4gKi8KLSsgIHdoaWxlKCBpc3RvcCA+PSAxNiApCi0rICB7Ci0rICAgICBmb3IoaT0wO2kgPCBi cHAgOyBpKyspCi0rICAgICB7Ci0rICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnAp ICsKLSsgICAgICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwot KwotKyAgICAgICAgcnArKzsKLSsgICAgIH0KLSsgICAgIHJwIC09IGJwcDsKLSsgICAgIHBwIC09 IGJwcDsKLSsKLSsgICAgIHZlY19sZF91bmFsaWduZWQocHBfdmVjLHBwKTsKLSsgICAgIHJwX3Zl YyA9IHZlY19sZCgwLHJwKTsKLSsKLSsgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVj LFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMV8zKTsKLSsgICAgIHBwX3BhcnRfdmVjID0g dmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMV8zKTsKLSsgICAg IGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgIGF2Z192 ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0 X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxh dmdfdmVjKTsKLSsKLSsgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFS X1pFUk8sVlNYX0xFRlRTSElGVEVEMl8zKTsKLSsgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0o cHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMl8zKTsKLSsgICAgIGF2Z192ZWMg PSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgIGF2Z192ZWMgPSB2ZWNf c3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVj X3NwbGF0X3U4KDEpKSk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsK LSsKLSsgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNY X0xFRlRTSElGVEVEM18zKTsKLSsgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZT WF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEM18zKTsKLSsgICAgIGF2Z192ZWMgPSB2ZWNfYXZn KHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192 ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4 KDEpKSk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsgICAg IHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElG VEVENF8zKTsKLSsgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pF Uk8sVlNYX05PVF9TSElGVEVENF8zKTsKLSsgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRf dmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19h bmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7Ci0r ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsgICAgIHZlY19zdChy cF92ZWMsMCxycCk7Ci0rCi0rICAgICBycCArPSAxNTsKLSsgICAgIHBwICs9IDE1OwotKyAgICAg aXN0b3AgLT0gMTY7Ci0rCi0rICAgICAvKiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxh c3QgZWxlbWVudCBvZiBhcnJheSBtdXN0Ci0rICAgICAgKiBiZSBwcm9jZWVkZWQgbWFudWFsbHkK LSsgICAgICAqLwotKyAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAg ICAoaW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsgICAgIHJwKys7Ci0r ICB9Ci0rCi0rICBpZihpc3RvcCAgPiAwKQotKyAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUg MTY7IGkrKykKLSsgICAgIHsKLSsgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkg KwotKyAgICAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0r Ci0rICAgICAgICBycCsrOwotKyAgICAgfQotK30KLSsKLSsvKiBCeXRld2lzZSBjID8gdCA6IGUu ICovCi0rI2RlZmluZSBpZl90aGVuX2Vsc2UoYyx0LGUpIHZlY19zZWwoZSx0LGMpCi0rCi0rI2Rl ZmluZSB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApIHtcCi0rICAg ICAgYyA9ICoocHAgLSBicHApO1wKLSsgICAgICBhID0gKihycCAtIGJwcCk7XAotKyAgICAgIGIg PSAqcHArKztcCi0rICAgICAgcCA9IGIgLSBjO1wKLSsgICAgICBwYyA9IGEgLSBjO1wKLSsgICAg ICBwYSA9IHZzeF9hYnMocCk7XAotKyAgICAgIHBiID0gdnN4X2FicyhwYyk7XAotKyAgICAgIHBj ID0gdnN4X2FicyhwICsgcGMpO1wKLSsgICAgICBpZiAocGIgPCBwYSkgcGEgPSBwYiwgYSA9IGI7 XAotKyAgICAgIGlmIChwYyA8IHBhKSBhID0gYztcCi0rICAgICAgYSArPSAqcnA7XAotKyAgICAg ICpycCsrID0gKHBuZ19ieXRlKWE7XAotKyAgICAgIH0KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRl cl9yb3dfcGFldGg0X3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAot KyAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgY29uc3QgcG5nX2J5dGUgYnBw ID0gNDsKLSsKLSsgICBpbnQgYSwgYiwgYywgcGEsIHBiLCBwYywgcDsKLSsgICB2ZWN0b3IgdW5z aWduZWQgY2hhciBycF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOwotKyAg IHZlY3RvciB1bnNpZ25lZCBzaG9ydCBhX3ZlYyxiX3ZlYyxjX3ZlYyxuZWFyZXN0X3ZlYzsKLSsg ICB2ZWN0b3Igc2lnbmVkIHNob3J0IHBhX3ZlYyxwYl92ZWMscGNfdmVjLHNtYWxsZXN0X3ZlYzsK LSsKLSsgICB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBw KQotKyAgIHJwIC09IGJwcDsKLSsgICBpZihpc3RvcCA+PSBicHApCi0rICAgICAgaXN0b3AgLT0g YnBwOwotKwotKyAgIC8qIFByb2Nlc3MgdGhlIGZpcnN0IHBpeGVsIGluIHRoZSByb3cgY29tcGxl dGVseSAodGhpcyBpcyB0aGUgc2FtZSBhcyAndXAnCi0rICAgICogYmVjYXVzZSB0aGVyZSBpcyBv bmx5IG9uZSBjYW5kaWRhdGUgcHJlZGljdG9yIGZvciB0aGUgZmlyc3Qgcm93KS4KLSsgICAgKi8K LSsgICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChwbmdf Ynl0ZSkoICpycCArICpwcCk7Ci0rICAgICAgcnArKzsKLSsgICAgICBwcCsrOwotKyAgIH0KLSsK LSsgICBmb3IoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wIDsgaSsrKQotKyAgIHsKLSsgICAgICB2 c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCi0rICAgfQotKwotKyAg IHdoaWxlKCBpc3RvcCA+PSAxNikKLSsgICB7Ci0rICAgICAgZm9yKGkgPSAwOyBpIDwgYnBwIDsg aSsrKQotKyAgICAgIHsKLSsgICAgICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxw YSxwYixwYyxicHApCi0rICAgICAgfQotKwotKyAgICAgIHJwIC09IGJwcDsKLSsgICAgICBwcCAt PSBicHA7Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHZlY19sZF91bmFs aWduZWQocHBfdmVjLHBwKTsKLSsKLSsgICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZl Y19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzQpLDEsNCk7 Ci0rICAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hf Q0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMV80KSwxLDQpOwotKyAgICAgIGNfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZU U0hJRlRFRDFfNCksMSw0KTsKLSsgICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkg dmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hv cnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92 ZWMscGJfdmVjKTsKLSsgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7Ci0rICAgICAgcGJf dmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsK LSsgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJf dmVjKSk7Ci0rICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAg IHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICBhX3ZlYywKLSsg ICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVj LHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgICBiX3ZlYywKLSsgICAgICAgICAgICAgIGNf dmVjCi0rICAgICAgICAgICAgICApCi0rICAgICAgICAgICAgKTsKLSsgICAgICBycF92ZWMgPSB2 ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMSw0KSkpOwotKwot KyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NI QVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJfNCksMiw0KTsKLSsgICAgICBiX3ZlYyA9IHZzeF9j aGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NI SUZURUQyXzQpLDIsNCk7Ci0rICAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMl80KSwyLDQpOwotKyAg ICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsK LSsgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNf dmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgIHBh X3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7 Ci0rICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgIHNtYWxsZXN0X3ZlYyA9 IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgICBuZWFyZXN0 X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFs bGVzdF92ZWMpLAotKyAgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgIGlmX3RoZW5fZWxz ZSgKLSsgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAg ICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICAgY192ZWMKLSsgICAgICAgICAgICAgICkK LSsgICAgICAgICAgICApOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hv cnRfdG9fY2hhcihuZWFyZXN0X3ZlYywyLDQpKSk7Ci0rCi0rICAgICAgYV92ZWMgPSB2c3hfY2hh cl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElG VEVEM180KSwzLDQpOwotKyAgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0o cHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDNfNCksMyw0KTsKLSsgICAg ICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pF Uk8gLCBWU1hfTEVGVFNISUZURUQzXzQpLDMsNCk7Ci0rICAgICAgcGFfdmVjID0gKHZlY3RvciBz aWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgIHBiX3ZlYyA9ICh2ZWN0 b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgIHBjX3ZlYyA9 IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMp OwotKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNf YWJzKHBjX3ZlYyk7Ci0rICAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19t aW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgK LSsgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAg ICAgYV92ZWMsCi0rICAgICAgICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICAgdmVj X2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgICAgYl92ZWMsCi0rICAg ICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICAgKQotKyAgICAgICAgICAgICk7Ci0rICAg ICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVj LDMsNCkpKTsKLSsKLSsgICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKwotKyAgICAgIHJwICs9 IDE2OwotKyAgICAgIHBwICs9IDE2OwotKyAgICAgIGlzdG9wIC09IDE2OwotKyAgIH0KLSsKLSsg ICBpZihpc3RvcCA+IDApCi0rICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykK LSsgICAgICB7Ci0rICAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIs cGMsYnBwKQotKyAgICAgIH0KLSt9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRo M192c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICBwbmdfY29u c3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgY29uc3QgcG5nX2J5dGUgYnBwID0gMzsKLSsKLSsg IGludCBhLCBiLCBjLCBwYSwgcGIsIHBjLCBwOwotKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBf dmVjOwotKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOwotKyAgdmVjdG9yIHVuc2lnbmVk IHNob3J0IGFfdmVjLGJfdmVjLGNfdmVjLG5lYXJlc3RfdmVjOwotKyAgdmVjdG9yIHNpZ25lZCBz aG9ydCBwYV92ZWMscGJfdmVjLHBjX3ZlYyxzbWFsbGVzdF92ZWM7Ci0rCi0rICB2c3hfZGVjbGFy ZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKyAgcnAgLT0gYnBwOwot KyAgaWYoaXN0b3AgPj0gYnBwKQotKyAgICAgaXN0b3AgLT0gYnBwOwotKwotKyAgLyogUHJvY2Vz cyB0aGUgZmlyc3QgcGl4ZWwgaW4gdGhlIHJvdyBjb21wbGV0ZWx5ICh0aGlzIGlzIHRoZSBzYW1l IGFzICd1cCcKLSsgICAqIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgY2FuZGlkYXRlIHByZWRp Y3RvciBmb3IgdGhlIGZpcnN0IHJvdykuCi0rICAgKi8KLSsgIGZvcihpID0gMDsgaSA8IGJwcCA7 IGkrKykKLSsgIHsKLSsgICAgICpycCA9IChwbmdfYnl0ZSkoICpycCArICpwcCk7Ci0rICAgICBy cCsrOwotKyAgICAgcHArKzsKLSsgIH0KLSsKLSsgIGZvcihpID0gMDsgaSA8IHVuYWxpZ25lZF90 b3AgOyBpKyspCi0rICB7Ci0rICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxw YixwYyxicHApCi0rICB9Ci0rCi0rICB3aGlsZSggaXN0b3AgPj0gMTYpCi0rICB7Ci0rICAgICBm b3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCi0rICAgICB7Ci0rICAgICAgICB2c3hfcGFldGhfcHJv Y2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCi0rICAgICB9Ci0rCi0rICAgICBycCAtPSBi cHA7Ci0rICAgICBwcCAtPSBicHA7Ci0rICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0rICAg ICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rCi0rICAgICBhX3ZlYyA9IHZzeF9jaGFy X3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZU RUQxXzMpLDEsMyk7Ci0rICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBw X3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQxXzMpLDEsMyk7Ci0rICAgICBj X3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8g LCBWU1hfTEVGVFNISUZURUQxXzMpLDEsMyk7Ci0rICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25l ZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICBwYl92ZWMgPSAodmVjdG9yIHNp Z25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19h ZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7Ci0rICAg ICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3Zl Yyk7Ci0rICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMs cGJfdmVjKSk7Ci0rICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAg ICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICBhX3ZlYywKLSsg ICAgICAgICAgIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxz bWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgICBiX3ZlYywKLSsgICAgICAgICAgICAgY192ZWMK LSsgICAgICAgICAgICAgKQotKyAgICAgICAgICAgKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQo cnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywxLDMpKSk7Ci0rCi0rICAgICBh X3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8g LCBWU1hfTEVGVFNISUZURUQyXzMpLDIsMyk7Ci0rICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3No b3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQyXzMp LDIsMyk7Ci0rICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAs IFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQyXzMpLDIsMyk7Ci0rICAgICBwYV92ZWMg PSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICBwYl92 ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAg IHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICBwYV92ZWMgPSB2ZWNfYWJz KHBhX3ZlYyk7Ci0rICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7Ci0rICAgICBwY192ZWMg PSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywg dmVjX21pbihwYV92ZWMscGJfdmVjKSk7Ci0rICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vs c2UoCi0rICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAg ICAgICBhX3ZlYywKLSsgICAgICAgICAgIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAgdmVj X2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgICBiX3ZlYywKLSsgICAg ICAgICAgICAgY192ZWMKLSsgICAgICAgICAgICAgKQotKyAgICAgICAgICAgKTsKLSsgICAgIHJw X3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywyLDMp KSk7Ci0rCi0rICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAs IFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQzXzMpLDMsMyk7Ci0rICAgICBiX3ZlYyA9 IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hf Tk9UX1NISUZURUQzXzMpLDMsMyk7Ci0rICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZl Y19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQzXzMpLDMsMyk7 Ci0rICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3Zl Yyk7Ci0rICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAs IGNfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICBw YV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7Ci0rICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7 Ci0rICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICBzbWFsbGVzdF92ZWMgPSB2 ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7Ci0rICAgICBuZWFyZXN0X3Zl YyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0 X3ZlYyksCi0rICAgICAgICAgICBhX3ZlYywKLSsgICAgICAgICAgIGlmX3RoZW5fZWxzZSgKLSsg ICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAg ICBiX3ZlYywKLSsgICAgICAgICAgICAgY192ZWMKLSsgICAgICAgICAgICAgKQotKyAgICAgICAg ICAgKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihu ZWFyZXN0X3ZlYywzLDMpKSk7Ci0rCi0rICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZl Y19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQ0XzMpLDQsMyk7 Ci0rICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9D SEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQ0XzMpLDQsMyk7Ci0rICAgICBjX3ZlYyA9IHZzeF9j aGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNI SUZURUQ0XzMpLDQsMyk7Ci0rICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVj X3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkg dmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBi X3ZlYyk7Ci0rICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7Ci0rICAgICBwYl92ZWMgPSB2 ZWNfYWJzKHBiX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICBz bWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7Ci0r ICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICB2ZWNfY21wZXEo cGFfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICBhX3ZlYywKLSsgICAgICAgICAgIGlm X3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMp LAotKyAgICAgICAgICAgICBiX3ZlYywKLSsgICAgICAgICAgICAgY192ZWMKLSsgICAgICAgICAg ICAgKQotKyAgICAgICAgICAgKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hf c2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYyw0LDMpKSk7Ci0rCi0rICAgICB2ZWNfc3QocnBfdmVj LDAscnApOwotKwotKyAgICAgcnAgKz0gMTU7Ci0rICAgICBwcCArPSAxNTsKLSsgICAgIGlzdG9w IC09IDE2OwotKwotKyAgICAgLyogU2luY2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVs ZW1lbnQgb2YgYXJyYXkgbXVzdAotKyAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAg ICAgKi8KLSsgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkK LSsgIH0KLSsKLSsgIGlmKGlzdG9wID4gMCkKLSsgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAl IDE2OyBpKyspCi0rICAgICB7Ci0rICAgICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIs YyxwYSxwYixwYyxicHApCi0rICAgICB9Ci0rfQotKwotKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19W U1hfT1BUID4gMCAqLwotKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfSU1QTEVNRU5UQVRJT04g PT0gMSAoaW50cmluc2ljcykgKi8KLSsjZW5kaWYgLyogUkVBRCAqLwotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvbGlicG5nL3Bvd2VycGMvcG93ZXJwY19pbml0LmMKLUBAIC0wLDAgKzEs MTI1IEBACi0rCi0rLyogcG93ZXJwY19pbml0LmMgLSBQT1dFUlBDIG9wdGltaXNlZCBmaWx0ZXIg ZnVuY3Rpb25zCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTcgR2xlbm4gUmFuZGVycy1QZWhy c29uCi0rICogV3JpdHRlbiBieSBWYWRpbSBCYXJrb3YsIDIwMTcuCi0rICogTGFzdCBjaGFuZ2Vk IGluIGxpYnBuZyAxLjYuMjkgW01hcmNoIDE2LCAyMDE3XQotKyAqCi0rICogVGhpcyBjb2RlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBsaWJwbmcgbGljZW5zZS4KLSsgKiBGb3IgY29uZGl0aW9ucyBv ZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBkaXNjbGFpbWVyCi0rICogYW5kIGxpY2Vu c2UgaW4gcG5nLmgKLSsgKi8KLSsvKiBCZWxvdywgYWZ0ZXIgY2hlY2tpbmcgX19saW51eF9fLCB2 YXJpb3VzIG5vbi1DOTAgUE9TSVggMTAwMy4xIGZ1bmN0aW9ucyBhcmUKLSsgKiBjYWxsZWQuCi0r ICovCi0rI2RlZmluZSBfUE9TSVhfU09VUkNFIDEKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsj aW5jbHVkZSAiLi4vcG5ncHJpdi5oIgotKwotKyNpZmRlZiBQTkdfUkVBRF9TVVBQT1JURUQKLSsK LSsjaWYgUE5HX1BPV0VSUENfVlNYX09QVCA+IDAKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0NI RUNLX1NVUFBPUlRFRCAvKiBEbyBydW4tdGltZSBjaGVja3MgKi8KLSsvKiBXQVJOSU5HOiBpdCBp cyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBkbyBub3QgYnVpbGQgbGlicG5nIHdpdGgK LSsgKiBydW4tdGltZSBjaGVja3MgZm9yIENQVSBmZWF0dXJlcyBpZiBhdCBhbGwgcG9zc2libGUu ICBJbiB0aGUgY2FzZSBvZiB0aGUgUG93ZXJQQwotKyAqIFZTWCBpbnN0cnVjdGlvbnMgdGhlcmUg aXMgbm8gcHJvY2Vzc29yLXNwZWNpZmljIHdheSBvZiBkZXRlY3RpbmcgdGhlCi0rICogcHJlc2Vu Y2Ugb2YgdGhlIHJlcXVpcmVkIHN1cHBvcnQsIHRoZXJlZm9yZSBydW4tdGltZSBkZXRlY3Rpb24g aXMgZXh0cmVtZWx5Ci0rICogT1Mgc3BlY2lmaWMuCi0rICoKLSsgKiBZb3UgbWF5IHNldCB0aGUg bWFjcm8gUE5HX1BPV0VSUENfVlNYX0ZJTEUgdG8gdGhlIGZpbGUgbmFtZSBvZiBmaWxlIGNvbnRh aW5pbmcKLSsgKiBhIGZyYWdtZW50IG9mIEMgc291cmNlIGNvZGUgd2hpY2ggZGVmaW5lcyB0aGUg cG5nX2hhdmVfdnN4IGZ1bmN0aW9uLiAgVGhlcmUKLSsgKiBhcmUgYSBudW1iZXIgb2YgaW1wbGVt ZW50YXRpb25zIGluIGNvbnRyaWIvcG93ZXJwYy12c3gsIGJ1dCB0aGUgb25seSBvbmUgdGhhdAot KyAqIGhhcyBwYXJ0aWFsIHN1cHBvcnQgaXMgY29udHJpYi9wb3dlcnBjLXZzeC9saW51eC5jIC0g YSBnZW5lcmljIExpbnV4Ci0rICogaW1wbGVtZW50YXRpb24gd2hpY2ggcmVhZHMgL3Byb2MvY3B1 Zmluby4KLSsgKi8KLSsjaWZuZGVmIFBOR19QT1dFUlBDX1ZTWF9GSUxFCi0rIyAgaWZkZWYgX19s aW51eF9fCi0rIyAgICAgZGVmaW5lICBQTkdfUE9XRVJQQ19WU1hfRklMRSAiY29udHJpYi9wb3dl cnBjLXZzeC9saW51eF9hdXguYyIKLSsjICBlbmRpZgotKyNlbmRpZgotKwotKyNpZmRlZiBQTkdf UE9XRVJQQ19WU1hfRklMRQotKwotKyNpbmNsdWRlIDxzaWduYWwuaD4gLyogZm9yIHNpZ19hdG9t aWNfdCAqLwotK3N0YXRpYyBpbnQgcG5nX2hhdmVfdnN4KHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwot KyNpbmNsdWRlIFBOR19QT1dFUlBDX1ZTWF9GSUxFCi0rCi0rI2Vsc2UgIC8qIFBOR19QT1dFUlBD X1ZTWF9GSUxFICovCi0rIyAgZXJyb3IgIlBOR19QT1dFUlBDX1ZTWF9GSUxFIHVuZGVmaW5lZDog bm8gc3VwcG9ydCBmb3IgcnVuLXRpbWUgUE9XRVJQQyBWU1ggY2hlY2tzIgotKyNlbmRpZiAvKiBQ TkdfUE9XRVJQQ19WU1hfRklMRSAqLwotKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfQ0hFQ0tf U1VQUE9SVEVEICovCi0rCi0rdm9pZAotK3BuZ19pbml0X2ZpbHRlcl9mdW5jdGlvbnNfdnN4KHBu Z19zdHJ1Y3RwIHBwLCB1bnNpZ25lZCBpbnQgYnBwKQotK3sKLSsgICAvKiBUaGUgc3dpdGNoIHN0 YXRlbWVudCBpcyBjb21waWxlZCBpbiBmb3IgUE9XRVJQQ19WU1hfQVBJLCB0aGUgY2FsbCB0bwot KyAgICAqIHBuZ19oYXZlX3ZzeCBpcyBjb21waWxlZCBpbiBmb3IgUE9XRVJQQ19WU1hfQ0hFQ0su IElmIGJvdGggYXJlIGRlZmluZWQKLSsgICAgKiB0aGUgY2hlY2sgaXMgb25seSBwZXJmb3JtZWQg aWYgdGhlIEFQSSBoYXMgbm90IHNldCB0aGUgUG93ZXJQQyBvcHRpb24gb24KLSsgICAgKiBvciBv ZmYgZXhwbGljaXRseS4gSW4gdGhpcyBjYXNlIHRoZSBjaGVjayBjb250cm9scyB3aGF0IGhhcHBl bnMuCi0rICAgICovCi0rCi0rI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVECi0r ICAgc3dpdGNoICgocHAtPm9wdGlvbnMgPj4gUE5HX1BPV0VSUENfVlNYKSAmIDMpCi0rICAgewot KyAgICAgIGNhc2UgUE5HX09QVElPTl9VTlNFVDoKLSsgICAgICAgICAvKiBBbGxvdyB0aGUgcnVu LXRpbWUgY2hlY2sgdG8gZXhlY3V0ZSBpZiBpdCBoYXMgYmVlbiBlbmFibGVkIC0KLSsgICAgICAg ICAgKiB0aHVzIGJvdGggQVBJIGFuZCBDSEVDSyBjYW4gYmUgdHVybmVkIG9uLiAgSWYgaXQgaXNu J3Qgc3VwcG9ydGVkCi0rICAgICAgICAgICogdGhpcyBjYXNlIHdpbGwgZmFsbCB0aHJvdWdoIHRv IHRoZSAnZGVmYXVsdCcgYmVsb3csIHdoaWNoIGp1c3QKLSsgICAgICAgICAgKiByZXR1cm5zLgot KyAgICAgICAgICAqLwotKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRCAq LwotKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQ0hFQ0tfU1VQUE9SVEVECi0rICAgICAgICAgewot KyAgICAgICAgICAgIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgbm9fdnN4ID0gLTE7IC8q IG5vdCBjaGVja2VkICovCi0rCi0rICAgICAgICAgICAgaWYgKG5vX3ZzeCA8IDApCi0rICAgICAg ICAgICAgICAgbm9fdnN4ID0gIXBuZ19oYXZlX3ZzeChwcCk7Ci0rCi0rICAgICAgICAgICAgaWYg KG5vX3ZzeCkKLSsgICAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgfQotKyNpZmRlZiBQ TkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRAotKyAgICAgICAgIGJyZWFrOwotKyNlbmRpZgot KyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfQ0hFQ0tfU1VQUE9SVEVEICovCi0rCi0rI2lmZGVm IFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVECi0rICAgICAgZGVmYXVsdDogLyogT0ZGIG9y IElOVkFMSUQgKi8KLSsgICAgICAgICByZXR1cm47Ci0rCi0rICAgICAgY2FzZSBQTkdfT1BUSU9O X09OOgotKyAgICAgICAgIC8qIE9wdGlvbiB0dXJuZWQgb24gKi8KLSsgICAgICAgICBicmVhazsK LSsgICB9Ci0rI2VuZGlmCi0rCi0rICAgLyogSU1QT1JUQU5UOiBhbnkgbmV3IGludGVybmFsIGZ1 bmN0aW9ucyB1c2VkIGhlcmUgbXVzdCBiZSBkZWNsYXJlZCB1c2luZwotKyAgICAqIFBOR19JTlRF Uk5BTF9GVU5DVElPTiBpbiAuLi9wbmdwcml2LmguICBUaGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQg dGhlCi0rICAgICogJ3ByZWZpeCcgb3B0aW9uIHRvIGNvbmZpZ3VyZSB3b3JrczoKLSsgICAgKgot KyAgICAqICAgIC4vY29uZmlndXJlIC0td2l0aC1saWJwbmctcHJlZml4PWZvb2Jhcl8KLSsgICAg KgotKyAgICAqIFZlcmlmeSB5b3UgaGF2ZSBnb3QgdGhpcyByaWdodCBieSBydW5uaW5nIHRoZSBh Ym92ZSBjb21tYW5kLCBkb2luZyBhIGJ1aWxkCi0rICAgICogYW5kIGV4YW1pbmluZyBwbmdwcmVm aXguaDsgaXQgbXVzdCBjb250YWluIGEgI2RlZmluZSBmb3IgZXZlcnkgZXh0ZXJuYWwKLSsgICAg KiBmdW5jdGlvbiB5b3UgYWRkLiAgKE5vdGljZSB0aGF0IHRoaXMgaGFwcGVucyBhdXRvbWF0aWNh bGx5IGZvciB0aGUKLSsgICAgKiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4pCi0rICAgICovCi0r ICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfVVAtMV0gPSBwbmdfcmVhZF9maWx0 ZXJfcm93X3VwX3ZzeDsKLSsKLSsgICBpZiAoYnBwID09IDMpCi0rICAgewotKyAgICAgIHBwLT5y ZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX1NVQi0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3df c3ViM192c3g7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfQVZHLTFd ID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmczX3ZzeDsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJb UE5HX0ZJTFRFUl9WQUxVRV9QQUVUSC0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGgzX3Zz eDsKLSsgICB9Ci0rCi0rICAgZWxzZSBpZiAoYnBwID09IDQpCi0rICAgewotKyAgICAgIHBwLT5y ZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX1NVQi0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3df c3ViNF92c3g7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfQVZHLTFd ID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmc0X3ZzeDsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJb UE5HX0ZJTFRFUl9WQUxVRV9QQUVUSC0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGg0X3Zz eDsKLSsgICB9Ci0rfQotKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfT1BUID4gMCAqLwotKyNl bmRpZiAvKiBSRUFEICovCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0 LmgKLUBAIC0zOTE0LDcgKzM5MTQsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7Ci0gICAgICAg TFNTX1JFRygyLCBidWYpOwotICAgICAgIExTU19CT0RZKHZvaWQqLCBtbWFwMiwgIjAiKF9fcjIp KTsKLSAgICAgfQotLSNlbHNlCi0rI2VsaWYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykgLyogcHBj NjQgZG9lc24ndCBoYXZlIG1tYXAyICovCi0gICAgICNkZWZpbmUgX19OUl9fbW1hcDIgX19OUl9t bWFwMgotICAgICBMU1NfSU5MSU5FIF9zeXNjYWxsNih2b2lkKiwgX21tYXAyLCAgICAgICAgICAg IHZvaWQqLCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsICAgICAgICAgICAg ICAgICAgIGwsIGludCwgICAgICAgICAgICAgICBwLAotQEAgLTQwNDUsNyArNDA0NSw3IEBAIHN0 cnVjdCBrZXJuZWxfc3RhdGZzIHsKLSAgICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgZGVm aW5lZChfX0FSTV9BUkNIXzNfXykgfHwgZGVmaW5lZChfX0FSTV9FQUJJX18pIHx8ICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBf TUlQU19TSU1fQUJJMzIpIHx8ICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBkZWZpbmVkKF9f UFBDX18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAoZGVmaW5lZChfX1BQQ19fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9f KSkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgIChkZWZpbmVkKF9fczM5MF9fKSAmJiAhZGVmaW5lZChfX3MzOTB4X18pKQotICAg ICAvKiBPbiB0aGVzZSBhcmNoaXRlY3R1cmVzLCBpbXBsZW1lbnQgbW1hcCgpIHdpdGggbW1hcDIo KS4gKi8KLSAgICAgTFNTX0lOTElORSB2b2lkKiBMU1NfTkFNRShtbWFwKSh2b2lkICpzLCBzaXpl X3QgbCwgaW50IHAsIGludCBmLCBpbnQgZCwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L25vZGUvbm9kZS5weQotQEAgLTEwLDExICsxMCwx MiBAQCBpbXBvcnQgc3lzCi0gCi0gCi0gZGVmIEdldEJpbmFyeVBhdGgoKToKLS0gIHJldHVybiBv c19wYXRoLmpvaW4ob3NfcGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgKnsKLS0gICAgJ0Rhcndpbic6 ICgnbWFjJywgJ25vZGUtZGFyd2luLXg2NCcsICdiaW4nLCAnbm9kZScpLAotLSAgICAnTGludXgn OiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0JywgJ2JpbicsICdub2RlJyksCi0tICAgICdXaW5k b3dzJzogKCd3aW4nLCAnbm9kZS5leGUnKSwKLS0gIH1bcGxhdGZvcm0uc3lzdGVtKCldKQotKyAg cmV0dXJuICIvdXNyL2Jpbi9ub2RlIgotKyAgI3JldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5k aXJuYW1lKF9fZmlsZV9fKSwgKnsKLSsgICMgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndp bi14NjQnLCAnYmluJywgJ25vZGUnKSwKLSsgICMgICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1s aW51eC14NjQnLCAnYmluJywgJ25vZGUnKSwKLSsgICMgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9k ZS5leGUnKSwKLSsgICN9W3BsYXRmb3JtLnN5c3RlbSgpXSkKLSAKLSAKLSBkZWYgUnVuTm9kZShj bWRfcGFydHMsIHN0ZG91dD1Ob25lKToKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jh c2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRz LmgKLUBAIC0xMSw3ICsxMSw3IEBACi0gCi0gbmFtZXNwYWNlIHBkZml1bSB7Ci0gbmFtZXNwYWNl IGJhc2UgewotLSNpZiBkZWZpbmVkKE9TX1dJTikKLSsjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRl ZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxv Y2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE2OyAgLy8gNjRLQgotICNlbGlmIGRlZmluZWQoX01J UFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRp b25HcmFudWxhcml0eVNoaWZ0ID0gMTQ7ICAvLyAxNktCCi1AQCAtMjcsNiArMjcsMTAgQEAgc3Rh dGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9 Ci0gCi0gI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3RleHBy IHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSAxNjM4NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQotKy8vIFRPRE86IG1vZGVybiBwcGM2NCBjYW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNp emVzCi0rLy8gZm9yIG5vdywgNjRrIGlzIGFzc3VtZWQKLStzdGF0aWMgY29uc3RleHByIHNpemVf dCBrU3lzdGVtUGFnZVNpemUgPSA2NTUzNjsKLSAjZWxzZQotIHN0YXRpYyBjb25zdGV4cHIgc2l6 ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDQwOTY7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25zdGFudHMuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0v dGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NfY29uc3RhbnRzLmgKLUBAIC0zMyw2ICszMyw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qg a0J1Y2tldFNoaWZ0ID0gKGtBbGxvY2F0aW9uR3JhbnVsYXJpdHkgPT0gOCkgPyAzIDogMjsKLSAv LyB1cCBhZ2FpbnN0IHRoZSBlbmQgb2YgYSBzeXN0ZW0gcGFnZS4KLSAjaWYgZGVmaW5lZChfTUlQ U19BUkNIX0xPT05HU09OKQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlm dCA9IDE2OyAgLy8gNjRLQgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rc3RhdGlj IGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAyNTZLQgotICNlbHNl Ci0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTQ7ICAvLyAxNktC Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NxbGl0ZS9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9hbWFsZ2FtYXRpb24vc3FsaXRlMy5j Ci1AQCAtMTM5MzcsNyArMTM5MzcsOCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0OwotICMg aWYgZGVmaW5lZChpMzg2KSAgICAgfHwgZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9N X0lYODYpIHx8ICAgIFwKLSAgICAgIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9NX0FNRDY0 KSB8fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAotLSAg ICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVmaW5lZChfTV9BUk02NCkKLSsgICAgIGRlZmluZWQo X19hcm1fXykgIHx8IGRlZmluZWQoX01fQVJNNjQpICAgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KSAmJiBcCi0rICAgICAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18p Ci0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKLSAjIGVsaWYgZGVmaW5lZChz cGFyYykgICAgfHwgZGVmaW5lZChfX3BwY19fKQotICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRF UiAgICA0MzIxCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCi1AQCAt ODMzLDcgKzgzMyw4IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7Ci0gIyBpZiBkZWZpbmVk KGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwg ICAgXAotICAgICAgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKLSAgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmlu ZWQoX01fQVJNKSAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCi0tICAgICBkZWZpbmVk KF9fYXJtX18pICB8fCBkZWZpbmVkKF9NX0FSTTY0KQotKyAgICAgZGVmaW5lZChfX2FybV9fKSAg fHwgZGVmaW5lZChfTV9BUk02NCkgICB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIFwKLSsg ICAgIChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKLSAjICAgZGVm aW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAotICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8 fCBkZWZpbmVkKF9fcHBjX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRj L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9jay5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w X2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNjCi1AQCAtMzAsMTEgKzMwLDcgQEAgYm9vbCBWZWN0b3JE aWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29uc3QgdWludDhfdCogaW1hZ2UyKSB7 Ci0gICBzdGF0aWMgYm9vbCAoKmRpZmZfcHJvYykoY29uc3QgdWludDhfdCosIGNvbnN0IHVpbnQ4 X3QqKSA9IG51bGxwdHI7Ci0gCi0gICBpZiAoIWRpZmZfcHJvYykgewotLSNpZiBkZWZpbmVkKFdF QlJUQ19BUkNIX0FSTV9GQU1JTFkpIHx8IGRlZmluZWQoV0VCUlRDX0FSQ0hfTUlQU19GQU1JTFkp Ci0tICAgIC8vIEZvciBBUk0gYW5kIE1JUFMgcHJvY2Vzc29ycywgYWx3YXlzIHVzZSBDIHZlcnNp b24uCi0tICAgIC8vIFRPRE8oaGNsYW0pOiBJbXBsZW1lbnQgYSBORU9OIHZlcnNpb24uCi0tICAg IGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7Ci0tI2Vsc2UKLSsjaWYgZGVmaW5lZChX RUJSVENfQVJDSF9YODZfRkFNSUxZKQotICAgICBib29sIGhhdmVfc3NlMiA9IFdlYlJ0Y19HZXRD UFVJbmZvKGtTU0UyKSAhPSAwOwotICAgICAvLyBGb3IgeDg2IHByb2Nlc3NvcnMsIGNoZWNrIGlm IFNTRTIgaXMgc3VwcG9ydGVkLgotICAgICBpZiAoaGF2ZV9zc2UyICYmIGtCbG9ja1NpemUgPT0g MzIpIHsKLUBAIC00NCw2ICs0MCwxMCBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWlu dDhfdCogaW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKLSAgICAgfSBlbHNlIHsKLSAg ICAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlmZmVyZW5jZV9DOwotICAgICB9Ci0rI2Vsc2UKLSsg ICAgLy8gRm9yIG90aGVyIHByb2Nlc3NvcnMsIGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgotKyAgICAv LyBUT0RPKGhjbGFtKTogSW1wbGVtZW50IGEgTkVPTiB2ZXJzaW9uLgotKyAgICBkaWZmX3Byb2Mg PSAmVmVjdG9yRGlmZmVyZW5jZV9DOwotICNlbmRpZgotICAgfQotIAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVt L2FyY2guaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaAotQEAgLTQ3LDYgKzQ3LDE4IEBACi0gI2Vs aWYgZGVmaW5lZChfX3BuYWNsX18pCi0gI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCi0gI2Rl ZmluZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0rI2VsaWYgZGVmaW5lZChfX1BQQ19fKQot KyNkZWZpbmUgV0VCUlRDX0FSQ0hfUFBDX0ZBTUlMWQotKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBf X09SREVSX0xJVFRMRV9FTkRJQU5fXwotKyNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElB TgotKyNlbHNlCi0rI2RlZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCi0rI2VuZGlmCi0rI2lm IGRlZmluZWQoX19MUDY0X18pCi0rI2RlZmluZSBXRUJSVENfQVJDSF82NF9CSVRTCi0rI2Vsc2UK LSsjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKLSsjZW5kaWYKLSAjZWxzZQotICNlcnJvciBQ bGVhc2UgYWRkIHN1cHBvcnQgZm9yIHlvdXIgYXJjaGl0ZWN0dXJlIGluIHR5cGVkZWZzLmgKLSAj ZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvQlVJTEQuZ24K LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvQlVJTEQuZ24KLUBAIC01 NDQsNiArNTQ0LDEyIEBAIGNvbmZpZygidG9vbGNoYWluIikgewotICAgICB9Ci0gICAgIGlmICho b3N0X2J5dGVvcmRlciA9PSAibGl0dGxlIikgewotICAgICAgIGRlZmluZXMgKz0gWyAiVjhfVEFS R0VUX0FSQ0hfUFBDX0xFIiBdCi0rICAgICAgICBjZmxhZ3MgKz0gWwotKyAgICAgICAgIyBFbmFi bGUgdXNhZ2Ugb2YgQWx0aVZlYywgVlNYLCBhbmQgb3RoZXIgUE9XRVI4IGFuZCBoaWdoZXIgZmVh dHVyZXMKLSsgICAgICAgICItbWNwdT1wb3dlcjgiLAotKyAgICAgICAgIi1tYWx0aXZlYyIsCi0r ICAgICAgICAiLW12c3giLAotKyAgICAgIF0KLSAgICAgfSBlbHNlIGlmIChob3N0X2J5dGVvcmRl ciA9PSAiYmlnIikgewotICAgICAgIGRlZmluZXMgKz0gWyAiVjhfVEFSR0VUX0FSQ0hfUFBDX0JF IiBdCi0gICAgICAgaWYgKGN1cnJlbnRfb3MgPT0gImFpeCIpIHsKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdjgvdGVzdC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS92OC90ZXN0L0JVSUxELmduCi1AQCAtMzEsNyArMzEsNyBAQCBn cm91cCgiZ25fYWxsIikgewotICAgICBkZXBzICs9IFsKLSAgICAgICAiY2N0ZXN0OmNjdGVzdCIs Ci0gICAgICAgImNjdGVzdDpnZW5lcmF0ZS1ieXRlY29kZS1leHBlY3RhdGlvbnMiLAotLSAgICAg ICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSsgICAgICAjInVuaXR0ZXN0czp1bml0dGVzdHMiLAot ICAgICBdCi0gICB9Ci0gfQotQEAgLTgwLDkgKzgwLDkgQEAgZ3JvdXAoInY4X2JvdF9kZWZhdWx0 IikgewotICAgICAibWpzdW5pdDp2OF9tanN1bml0IiwKLSAgICAgIm1rZ3Jva2R1bXA6bWtncm9r ZHVtcCIsCi0gICAgICJwcmVwYXJzZXI6djhfcHJlcGFyc2VyIiwKLS0gICAgInVuaXR0ZXN0czp1 bml0dGVzdHMiLAotKyAgICAjInVuaXR0ZXN0czp1bml0dGVzdHMiLAotICAgICAid2FzbS1qczp2 OF93YXNtX2pzIiwKLS0gICAgIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3NwZWNfdGVzdHMiLAot KyAgICAjIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3NwZWNfdGVzdHMiLAotICAgICAid2Via2l0 OnY4X3dlYmtpdCIsCi0gICBdCi0gfQotQEAgLTEwMCw5ICsxMDAsOSBAQCBncm91cCgidjhfZGVm YXVsdCIpIHsKLSAgICAgIm1qc3VuaXQ6djhfbWpzdW5pdCIsCi0gICAgICJta2dyb2tkdW1wOm1r Z3Jva2R1bXAiLAotICAgICAicHJlcGFyc2VyOnY4X3ByZXBhcnNlciIsCi0tICAgICJ1bml0dGVz dHM6dW5pdHRlc3RzIiwKLS0gICAgIndhc20tanM6djhfd2FzbV9qcyIsCi0tICAgICJ3YXNtLXNw ZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSsgICAgIyJ1bml0dGVzdHM6dW5pdHRlc3Rz IiwKLSsgICAgIyJ3YXNtLWpzOnY4X3dhc21fanMiLAotKyAgICAjIndhc20tc3BlYy10ZXN0czp2 OF93YXNtX3NwZWNfdGVzdHMiLAotICAgXQotIH0KLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGRmMDE0ZDhiNTk4Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwOTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0 MSArMCwwIEBACi1UaGlzIGluY2x1ZGVzIGFkZGl0aW9uYWwgYnVpbGQgZml4ZXMgZm9yIHRoZSBt dXNsIGxpYmMuCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLUBA IC0xMSwxMiArMTEsMTQgQEAKLSAvLyBBbGwgeDg2XzY0IGJ1aWxkcyB1c2UgYSBuZXcgZW5vdWdo IGJpb25pYyB0byBoYXZlIHN5cy91c2VyLmguCi0gI2lmICFkZWZpbmVkKF9fQklPTklDX18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykKLSAjaWYgIWRlZmluZWQoX19uYXRpdmVfY2xpZW50X25vbnNm aV9fKQotKyNpZiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykK LSAjaW5jbHVkZSA8c3lzL3VzZXIuaD4KLSAjZW5kaWYKLSsjZW5kaWYKLSAjaWYgZGVmaW5lZChf X21pcHNfXykKLSAvLyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRp b24KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0tI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0gLy8g TWFudWFsbHkgZGVmaW5lIGdyZWdfdCBvbiBwcGM2NAotIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBs b25nIGdyZWdfdDsKLSAjZW5kaWYKLUBAIC0zNjEsMTEgKzM2MywxMSBAQCB0eXBlZGVmIHN0cnVj dCBwdF9yZWdzIHJlZ3Nfc3RydWN0OwotICNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hf UFBDNjQKLSAjZW5kaWYKLSAKLS0jZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9yZWcpICgoX2N0 eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkKLSsjZGVmaW5lIFNFQ0NPTVBfUkVHKF9j dHgsIF9yZWcpICgoKHN0cnVjdCBwdF9yZWdzICopKF9jdHgpLT51Y19tY29udGV4dC5yZWdzKS0+ Z3ByW19yZWddKQotIAotICNkZWZpbmUgU0VDQ09NUF9SRVNVTFQoX2N0eCkgU0VDQ09NUF9SRUco X2N0eCwgMykKLSAjZGVmaW5lIFNFQ0NPTVBfU1lTQ0FMTChfY3R4KSBTRUNDT01QX1JFRyhfY3R4 LCAwKQotLSNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoX2N0eCktPnVjX21jb250ZXh0LnJlZ3Mt Pm5pcAotKyNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoKHN0cnVjdCBwdF9yZWdzICopKF9jdHgp LT51Y19tY29udGV4dC5yZWdzKS0+bmlwCi0gI2RlZmluZSBTRUNDT01QX1BBUk0xKF9jdHgpIFNF Q0NPTVBfUkVHKF9jdHgsIDMpCi0gI2RlZmluZSBTRUNDT01QX1BBUk0yKF9jdHgpIFNFQ0NPTVBf UkVHKF9jdHgsIDQpCi0gI2RlZmluZSBTRUNDT01QX1BBUk0zKF9jdHgpIFNFQ0NPTVBfUkVHKF9j dHgsIDUpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKLUBAIC00OTcsOSAr NDk3LDkgQEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNvbnRleHQoaW50cHRyX3QgcmV0X3Zh bCwgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0 IHJldCBhbmQgc2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08pCi0gICBpZiAocmV0X3ZhbCA8PSAt MSAmJiByZXRfdmFsID49IC00MDk1KSB7Ci0gICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKLS0gICAg Y3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwgMjgpOwotKyAgICAoKHN0cnVjdCBw dF9yZWdzICopY3R4LT51Y19tY29udGV4dC5yZWdzKS0+Y2NyIHw9ICgxIDw8IDI4KTsKLSAgIH0g ZWxzZSB7Ci0tICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+Y2NyICY9IH4oMSA8PCAyOCk7Ci0r ICAgICgoc3RydWN0IHB0X3JlZ3MgKiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5jY3IgJj0gfigx IDw8IDI4KTsKLSAgIH0KLSAjZW5kaWYKLSAgIFNFQ0NPTVBfUkVTVUxUKGN0eCkgPSBzdGF0aWNf Y2FzdDxncmVnX3Q+KHJldF92YWwpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5 Y2xlY2xvY2suY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNj Ci1AQCAtMjAsNyArMjAsNyBAQAotICNpbmNsdWRlIDxpbnRyaW4uaD4KLSAjZW5kaWYKLSAKLS0j aWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKQotKyNpZiAoZGVmaW5l ZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSkgJiYgZGVmaW5lZChfX0dMSUJDX18p Ci0gI2luY2x1ZGUgPHN5cy9wbGF0Zm9ybS9wcGMuaD4KLSAjZW5kaWYKLSAKLUBAIC01Myw3ICs1 Myw3IEBAIGRvdWJsZSBVbnNjYWxlZEN5Y2xlQ2xvY2s6OkZyZXF1ZW5jeSgpIHsKLSAgIHJldHVy biBiYXNlX2ludGVybmFsOjpOb21pbmFsQ1BVRnJlcXVlbmN5KCk7Ci0gfQotIAotLSNlbGlmIGRl ZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykKLSsjZWxpZiAoZGVmaW5lZChf X3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0g Ci0gaW50NjRfdCBVbnNjYWxlZEN5Y2xlQ2xvY2s6Ok5vdygpIHsKLSAgIHJldHVybiBfX3BwY19n ZXRfdGltZWJhc2UoKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2Nr LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJz ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKLUBAIC00Niw3 ICs0Niw3IEBACi0gCi0gLy8gVGhlIGZvbGxvd2luZyBwbGF0Zm9ybXMgaGF2ZSBhbiBpbXBsZW1l bnRhdGlvbiBvZiBhIGhhcmR3YXJlIGNvdW50ZXIuCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotLSAgZGVm aW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBcCi0rICAoKGRlZmluZWQo X19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKSkg fHwgXAotICAgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkKLSAjZGVmaW5lIEFC U0xfSEFWRV9VTlNDQUxFRF9DWUNMRUNMT0NLX0lNUExFTUVOVEFUSU9OIDEKLSAjZWxzZQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRf aW5mby5jYwotQEAgLTI3Myw2ICsyNzMsOSBAQCB2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250 ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotIAotICNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAKLSsjaW5jbHVkZSA8YXNtL2VsZi5oPgotKyNpbmNsdWRlIDxhc20vcHRyYWNl Lmg+Ci0rCi0gdWludHB0cl90IFRocmVhZEluZm86OkdldEluc3RydWN0aW9uUG9pbnRlcigpIGNv bnN0IHsKLSAgICAgcmV0dXJuIG1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSB9Ci1AQCAtMjkw LDkgKzI5Myw5IEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQ VSogb3V0KSBjb25zdCB7Ci0gICAgIG91dC0+Y3RyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJd OwotICAgICAKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQ Q19GUFJfQ09VTlQ7IGkrKykKLS0gICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSBt Y29udGV4dC5mcF9yZWdzW2ldOwotKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9 ICgodWludDY0X3QgKikmbWNvbnRleHQuZnBfcmVncylbaV07Ci0gCi0tICAgIG91dC0+ZmxvYXRf c2F2ZS5mcHNjciA9IG1jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOwotKyAgICBvdXQtPmZsb2F0 X3NhdmUuZnBzY3IgPSAoKHVpbnQ2NF90ICopJm1jb250ZXh0LmZwX3JlZ3MpW0VMRl9ORlBSRUct MV07Ci0gCi0gICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZS X0NPVU5UOyBpKyspCi0gICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPSBcCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3Jl YWRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91 Y29udGV4dF9yZWFkZXIuY2MKLUBAIC0yNTcsNiArMjU3LDkgQEAgdm9pZCBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1 YykgewotIAotICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAKLSsjaW5jbHVkZSA8YXNt L2VsZi5oPgotKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0rCi0gdWludHB0cl90IFVDb250ZXh0 UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSAgICAgcmV0 dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXTsKLSB9 Ci1AQCAtMjgwLDkgKzI4Myw5IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0 KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMsCi0gICAgIG91dC0+Y3Ry ID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSAgICAgCi0gICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0tICAg ICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3Nb aV07Ci0rICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gKCh1aW50NjRfdCAqKSZ1 Yy0+dWNfbWNvbnRleHQuZnBfcmVncylbaV07Ci0gCi0tICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNj ciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsgICAgb3V0LT5mbG9hdF9z YXZlLmZwc2NyID0gKCh1aW50NjRfdCAqKSZ1Yy0+dWNfbWNvbnRleHQuZnBfcmVncylbRUxGX05G UFJFRy0xXTsKLSAKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9Q UENfVlJfQ09VTlQ7IGkrKykKLSAgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIu Y2MKLUBAIC0xMDUsNiArMTA1LDExIEBACi0gI2RlZmluZSBQUl9TRVRfUFRSQUNFUiAweDU5NjE2 ZDYxCi0gI2VuZGlmCi0gCi0rLyogbXVzbCBoYWNrLCBjYW4ndCBpbmNsdWRlIGFzbS9wdHJhY2Uu aCBhcyB0aGF0IGNhdXNlcyBjb25mbGljdHMgKi8KLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KSAmJiAhZGVmaW5lZChQVF9OSVApCi0rI2RlZmluZSBQVF9OSVAgMzIKLSsjZW5kaWYKLSsKLSBu YW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAKLSBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoIGIvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBjZTgzMTFjOWJhMi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMjk3MCArMCwwIEBACi1UaGlzIGFkZHMgYmlnIGVuZGlhbiBzdXBwb3J0L2ZpeGVzIGluIGFk ZGl0aW9uIHRvIHRoZSBiYXNlIHBwYzY0bGUgcGF0Y2guCi0KLVBpbmcgcTY2IGlmIHlvdSdyZSB1 cGRhdGluZyBxdDUgYW5kIHRoZSBwYXRjaCBkb2VzIG5vdCBhcHBseSBhbnltb3JlLgotCi1Tb3Vy Y2U6IGh0dHBzOi8vd2lraS5yYXB0b3Jjcy5jb20vdy9pbmRleC5waHA/dGl0bGU9UG9ydGluZy9D aHJvbWl1bS9CRQotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jLmNjCi1AQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyBz aXplX3QgUGFydGl0aW9uUHVyZ2VQYWdlKGludGVybmFsOjpQYXJ0aXRpb25QYWdlKiBwYWdlLCBi b29sIGRpc2NhcmQpIHsKLSAjZW5kaWYKLSAgICAgICB9Ci0gICAgICAgLy8gVGVybWluYXRlIHRo ZSBmcmVlbGlzdCBjaGFpbi4KLS0gICAgICAqZW50cnlfcHRyID0gbnVsbHB0cjsKLSsgICAgICAq ZW50cnlfcHRyID0gaW50ZXJuYWw6OlBhcnRpdGlvbkZyZWVsaXN0RW50cnk6OlRyYW5zZm9ybShu dWxscHRyKTsKLSAgICAgICAvLyBUaGUgZnJlZWxpc3QgaGVhZCBpcyBzdG9yZWQgdW5tYXNrZWQu Ci0gICAgICAgcGFnZS0+ZnJlZWxpc3RfaGVhZCA9Ci0gICAgICAgICAgIGludGVybmFsOjpQYXJ0 aXRpb25GcmVlbGlzdEVudHJ5OjpUcmFuc2Zvcm0ocGFnZS0+ZnJlZWxpc3RfaGVhZCk7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvaTE4bi9pY3VfdXRpbC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2kxOG4vaWN1X3V0aWwu Y2MKLUBAIC03NSw3ICs3NSwxMSBAQCB3Y2hhcl90IGdfZGVidWdfaWN1X3BmX2ZpbGVuYW1lW19N QVhfUEFUSF07Ci0gLy8gTm8gbmVlZCB0byBjaGFuZ2UgdGhlIGZpbGVuYW1lIGluIG11bHRpcGxl IHBsYWNlcyAoZ3lwIGZpbGVzLCB3aW5kb3dzCi0gLy8gYnVpbGQgcGtnIGNvbmZpZ3VyYXRpb25z LCBldGMpLiAnbCcgc3RhbmRzIGZvciBMaXR0bGUgRW5kaWFuLgotIC8vIFRoaXMgdmFyaWFibGUg aXMgZXhwb3J0ZWQgdGhyb3VnaCB0aGUgaGVhZGVyIGZpbGUuCi0rI2lmIGRlZmluZWQoQVJDSF9D UFVfTElUVExFX0VORElBTikKLSBjb25zdCBjaGFyIGtJY3VEYXRhRmlsZU5hbWVbXSA9ICJpY3Vk dGwuZGF0IjsKLSsjZWxzZQotK2NvbnN0IGNoYXIga0ljdURhdGFGaWxlTmFtZVtdID0gImljdWR0 Yi5kYXQiOwotKyNlbmRpZgotICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gY29uc3QgY2hhciBr QW5kcm9pZEFzc2V0c0ljdURhdGFGaWxlTmFtZVtdID0gImFzc2V0cy9pY3VkdGwuZGF0IjsKLSAj ZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZW1vcnkv c2hhcmVkX21lbW9yeV9tYXBwaW5nX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWVtb3J5L3NoYXJlZF9tZW1vcnlfbWFwcGluZ191bml0dGVz dC5jYwotQEAgLTEyLDYgKzEyLDcgQEAKLSAjaW5jbHVkZSAiYmFzZS9jb250YWluZXJzL3NwYW4u aCIKLSAjaW5jbHVkZSAiYmFzZS9tZW1vcnkvcmVhZF9vbmx5X3NoYXJlZF9tZW1vcnlfcmVnaW9u LmgiCi0gI2luY2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIgotKyNp bmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAKLSBuYW1lc3BhY2UgYmFzZSB7Ci0gCi1A QCAtNjksOCArNzAsOCBAQCBURVNUX0YoU2hhcmVkTWVtb3J5TWFwcGluZ1Rlc3QsIFNwYW5XaXRo QXV0b0RlZHVjZWRFbGVtZW50Q291bnQpIHsKLSAKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg d3JpdGVfc3Bhbi5zaXplKCk7ICsraSkKLSAgICAgd3JpdGVfc3BhbltpXSA9IGkgKyAxOwotLSAg RVhQRUNUX0VRKDB4MDQwMzAyMDF1LCByZWFkX3NwYW5bMF0pOwotLSAgRVhQRUNUX0VRKDB4MDgw NzA2MDV1LCByZWFkX3NwYW5bMV0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEwMjAz MDR1KSwgcmVhZF9zcGFuWzBdKTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDA1MDYwNzA4 dSksIHJlYWRfc3BhblsxXSk7Ci0gfQotIAotIFRFU1RfRihTaGFyZWRNZW1vcnlNYXBwaW5nVGVz dCwgU3BhbldpdGhFeHBsaWNpdEVsZW1lbnRDb3VudCkgewotQEAgLTk1LDEzICs5NiwxMyBAQCBU RVNUX0YoU2hhcmVkTWVtb3J5TWFwcGluZ1Rlc3QsIFNwYW5XaXRoRXhwbGljaXRFbGVtZW50Q291 bnQpIHsKLSAKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd3JpdGVfc3Bhbi5zaXplKCk7ICsr aSkKLSAgICAgd3JpdGVfc3BhbltpXSA9IGkgKyAxOwotLSAgRVhQRUNUX0VRKDB4MDQwMzAyMDF1 LCByZWFkX3NwYW5bMF0pOwotLSAgRVhQRUNUX0VRKDB4MDgwNzA2MDV1LCByZWFkX3NwYW5bMV0p OwotLSAgRVhQRUNUX0VRKDB4MDQwMzAyMDF1LCByZWFkX3NwYW5fMlswXSk7Ci0rICBFWFBFQ1Rf RVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMwNHUpLCByZWFkX3NwYW5bMF0pOwotKyAgRVhQRUNUX0VR KEhvc3RUb05ldDMyKDB4MDUwNjA3MDh1KSwgcmVhZF9zcGFuWzFdKTsKLSsgIEVYUEVDVF9FUShI b3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJlYWRfc3Bhbl8yWzBdKTsKLSAKLSAgIHN0ZDo6Zmls bCh3cml0ZV9zcGFuXzIuYmVnaW4oKSwgd3JpdGVfc3Bhbl8yLmVuZCgpLCAwKTsKLSAgIEVYUEVD VF9FUSgwdSwgcmVhZF9zcGFuWzBdKTsKLS0gIEVYUEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9z cGFuWzFdKTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDA1MDYwNzA4dSksIHJlYWRfc3Bh blsxXSk7Ci0gICBFWFBFQ1RfRVEoMHUsIHJlYWRfc3Bhbl8yWzBdKTsKLSB9Ci0gCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWV0cmljcy9idWNrZXRfcmFuZ2Vz X3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv bWV0cmljcy9idWNrZXRfcmFuZ2VzX3VuaXR0ZXN0LmNjCi1AQCAtNyw2ICs3LDcgQEAKLSAjaW5j bHVkZSA8c3RkaW50Lmg+Ci0gCi0gI2luY2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9ndGVz dC9ndGVzdC5oIgotKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAKLSBuYW1lc3Bh Y2UgYmFzZSB7Ci0gbmFtZXNwYWNlIHsKLUBAIC02NCwxMyArNjUsMjEgQEAgVEVTVChCdWNrZXRS YW5nZXNUZXN0LCBDaGVja3N1bSkgewotICAgcmFuZ2VzLnNldF9yYW5nZSgyLCAyKTsKLSAKLSAg IHJhbmdlcy5SZXNldENoZWNrc3VtKCk7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKLSAgIEVYUEVDVF9FUSgyODkyMTcyNTN1LCByYW5nZXMuY2hlY2tzdW0oKSk7Ci0rI2Vs c2UKLSsgIEVYUEVDVF9FUSgyNzY3MjMxNTk2dSwgcmFuZ2VzLmNoZWNrc3VtKCkpOwotKyNlbmRp ZgotIAotICAgcmFuZ2VzLnNldF9yYW5nZSgyLCAzKTsKLSAgIEVYUEVDVF9GQUxTRShyYW5nZXMu SGFzVmFsaWRDaGVja3N1bSgpKTsKLSAKLSAgIHJhbmdlcy5SZXNldENoZWNrc3VtKCk7Ci0rI2lm IGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgIEVYUEVDVF9FUSgyODQzODM1Nzc2 dSwgcmFuZ2VzLmNoZWNrc3VtKCkpOwotKyNlbHNlCi0rICBFWFBFQ1RfRVEoMzU1NjIyMzczOHUs IHJhbmdlcy5jaGVja3N1bSgpKTsKLSsjZW5kaWYKLSAgIEVYUEVDVF9UUlVFKHJhbmdlcy5IYXNW YWxpZENoZWNrc3VtKCkpOwotIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYmFzZS9waWNrbGUuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vYmFzZS9waWNrbGUuY2MKLUBAIC04Miw3ICs4MiwxMiBAQCBpbmxpbmUgY29uc3QgY2hhciog UGlja2xlSXRlcmF0b3I6OkdldFJlYWRQb2ludGVyQW5kQWR2YW5jZSgKLSB9Ci0gCi0gYm9vbCBQ aWNrbGVJdGVyYXRvcjo6UmVhZEJvb2woYm9vbCogcmVzdWx0KSB7Ci0tICByZXR1cm4gUmVhZEJ1 aWx0aW5UeXBlKHJlc3VsdCk7Ci0rICBpbnQgaW50X3Jlc3VsdDsKLSsgIGlmIChSZWFkQnVpbHRp blR5cGUoJmludF9yZXN1bHQpKSB7Ci0rICAgICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxib29sPihp bnRfcmVzdWx0KTsKLSsgICAgcmV0dXJuIHRydWU7Ci0rICB9IGVsc2UKLSsgICAgcmV0dXJuIGZh bHNlOwotIH0KLSAKLSBib29sIFBpY2tsZUl0ZXJhdG9yOjpSZWFkSW50KGludCogcmVzdWx0KSB7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uvc2hhMS5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3NoYTEuY2MKLUBAIC0xMTAs OCArMTEwLDEwIEBAIHZvaWQgU2VjdXJlSGFzaEFsZ29yaXRobTo6RmluYWwoKSB7Ci0gICBQYWQo KTsKLSAgIFByb2Nlc3MoKTsKLSAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFO KQotICAgZm9yIChhdXRvJiB0IDogSCkKLSAgICAgdCA9IEJ5dGVTd2FwKHQpOwotKyNlbmRpZgot IH0KLSAKLSB2b2lkIFNlY3VyZUhhc2hBbGdvcml0aG06OlVwZGF0ZShjb25zdCB2b2lkKiBkYXRh LCBzaXplX3QgbmJ5dGVzKSB7Ci1AQCAtMTU3LDggKzE1OSwxMCBAQCB2b2lkIFNlY3VyZUhhc2hB bGdvcml0aG06OlByb2Nlc3MoKSB7Ci0gICAvLwotICAgLy8gVyBhbmQgTSBhcmUgaW4gYSB1bmlv biwgc28gbm8gbmVlZCB0byBtZW1jcHkuCi0gICAvLyBtZW1jcHkoVywgTSwgc2l6ZW9mKE0pKTsK LSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgZm9yICh0ID0gMDsgdCA8 IDE2OyArK3QpCi0gICAgIFdbdF0gPSBCeXRlU3dhcChXW3RdKTsKLSsjZW5kaWYKLSAKLSAgIC8v IGIuCi0gICBmb3IgKHQgPSAxNjsgdCA8IDgwOyArK3QpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2Jhc2Uvc3RyaW5ncy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNpb25zX3Vu aXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uvc3Ry aW5ncy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNpb25zX3VuaXR0ZXN0LmNjCi1AQCAtODI5LDEyICs4 MjksMjEgQEAgVEVTVChTdHJpbmdOdW1iZXJDb252ZXJzaW9uc1Rlc3QsIERvdWJsZVRvU3RyaW5n KSB7Ci0gICB9Ci0gCi0gICAvLyBUaGUgZm9sbG93aW5nIHR3byB2YWx1ZXMgd2VyZSBzZWVuIGlu IGNyYXNoZXMgaW4gdGhlIHdpbGQuCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElB TikKLSAgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXNbOF0gPSB7MCwgMCwgMCwgMCwgJ1x4ZWUnLCAn XHg2ZCcsICdceDczJywgJ1x4NDInfTsKLSsjZWxzZQotKyAgY29uc3QgY2hhciBpbnB1dF9ieXRl c1s4XSA9IHsnXHg0MicsICdceDczJywgJ1x4NmQnLCAnXHhlZScsIDAsIDAsIDAsIDB9OwotKyNl bmRpZgotICAgZG91YmxlIGlucHV0ID0gMDsKLSAgIG1lbWNweSgmaW5wdXQsIGlucHV0X2J5dGVz LCBiYXNlOjpzaXplKGlucHV0X2J5dGVzKSk7Ci0gICBFWFBFQ1RfRVEoIjEzMzUxNzkwODM3NzYi LCBOdW1iZXJUb1N0cmluZyhpbnB1dCkpOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9F TkRJQU4pCi0gICBjb25zdCBjaGFyIGlucHV0X2J5dGVzMls4XSA9Ci0gICAgICAgezAsIDAsIDAs ICdceGEwJywgJ1x4ZGEnLCAnXHg2YycsICdceDczJywgJ1x4NDInfTsKLSsjZWxzZQotKyAgY29u c3QgY2hhciBpbnB1dF9ieXRlczJbOF0gPQotKyAgICAgIHsnXHg0MicsICdceDczJywgJ1x4NmMn LCAnXHhkYScsICdceGEwJywgMCwgMCwgMH07Ci0rI2VuZGlmCi0gICBpbnB1dCA9IDA7Ci0gICBt ZW1jcHkoJmlucHV0LCBpbnB1dF9ieXRlczIsIGJhc2U6OnNpemUoaW5wdXRfYnl0ZXMyKSk7Ci0g ICBFWFBFQ1RfRVEoIjEzMzQ4OTAzMzIxNjAiLCBOdW1iZXJUb1N0cmluZyhpbnB1dCkpOwotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RoaXJkX3BhcnR5L2RtZ19m cC9kdG9hLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhp cmRfcGFydHkvZG1nX2ZwL2R0b2EuY2MKLUBAIC0xODYsNyArMTg2LDExIEBACi0gICoJdXNlZCBm b3IgaW5wdXQgbW9yZSB0aGFuIFNUUlRPRF9ESUdMSU0gZGlnaXRzIGxvbmcgKGRlZmF1bHQgNDAp LgotICAqLwotIAotKyNpZmRlZiBfX0JJR19FTkRJQU5fXwotKyNkZWZpbmUgSUVFRV9NQzY4awot KyNlbHNlCi0gI2RlZmluZSBJRUVFXzgwODcKLSsjZW5kaWYKLSAjZGVmaW5lIE5PX0hFWF9GUAot IAotICNpZm5kZWYgTG9uZwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9j b21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdXRpbF91bml0dGVzdC5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdXRp bF91bml0dGVzdC5jYwotQEAgLTEyLDYgKzEyLDEyIEBACi0gI2luY2x1ZGUgInRlc3RpbmcvZ3Rl c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIgotICNpbmNsdWRlICJ1cmwvZ3VybC5oIgotIAotKyNp ZiBkZWZpbmVkKE9TX1dJTikKLSsjaW5jbHVkZSA8d2luc29jazIuaD4KLSsjZWxpZiBkZWZpbmVk KE9TX1BPU0lYKQotKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3Bh Y2Ugc2FmZV9icm93c2luZyB7Ci0gCi0gVEVTVChTYWZlQnJvd3NpbmdEYlV0aWxUZXN0LCBVcmxU b0Z1bGxIYXNoZXMpIHsKLUBAIC04Myw3ICs4OSw3IEBAIFRFU1QoU2FmZUJyb3dzaW5nRGJVdGls VGVzdCwgU3RyaW5nVG9TQkZ1bGxIYXNoQW5kU0JGdWxsSGFzaFRvU3RyaW5nKSB7Ci0gICAvLyAz MSBjaGFycyBwbHVzIHRoZSBsYXN0IFwwIGFzIGZ1bGxfaGFzaC4KLSAgIGNvbnN0IHN0ZDo6c3Ry aW5nIGhhc2hfaW4gPSAiMTIzNDU2Nzg5MDIyMzQ1Njc4OTAzMjM0NTY3ODkwMTIiOwotICAgU0JG dWxsSGFzaCBoYXNoX291dCA9IFN0cmluZ1RvU0JGdWxsSGFzaChoYXNoX2luKTsKLS0gIEVYUEVD VF9FUSgweDM0MzMzMjMxVSwgaGFzaF9vdXQucHJlZml4KTsKLSsgIEVYUEVDVF9FUShodG9ubCgw eDMxMzIzMzM0VSksIGhhc2hfb3V0LnByZWZpeCk7Ci0gICBFWFBFQ1RfRVEoMCwgbWVtY21wKGhh c2hfaW4uZGF0YSgpLCBoYXNoX291dC5mdWxsX2hhc2gsIHNpemVvZihTQkZ1bGxIYXNoKSkpOwot IAotICAgc3RkOjpzdHJpbmcgaGFzaF9maW5hbCA9IFNCRnVsbEhhc2hUb1N0cmluZyhoYXNoX291 dCk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2Fm ZV9icm93c2luZy9kYi92NF9yaWNlLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlLmNjCi1AQCAtOCw2ICs4 LDcgQEAKLSAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgImJhc2UvbnVtZXJp Y3Mvc2FmZV9tYXRoLmgiCi0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdwcmludGYuaCIK LSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gI2luY2x1ZGUgImJ1aWxkL2J1aWxk X2NvbmZpZy5oIgotICNpbmNsdWRlICJjb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmlj ZS5oIgotIAotQEAgLTIxLDEwICsyMiw2IEBAIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6UmVw ZWF0ZWRGaWVsZDsKLSB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OmludDMyOwotIHVzaW5nIDo6 Z29vZ2xlOjpwcm90b2J1Zjo6aW50NjQ7Ci0gCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRM RV9FTkRJQU4pIHx8IChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOICE9IDEpCi0tI2Vycm9yIFRoZSBj b2RlIGJlbG93IGFzc3VtZXMgbGl0dGxlLWVuZGlhbm5lc3MuCi0tI2VuZGlmCi0tCi0gbmFtZXNw YWNlIHNhZmVfYnJvd3NpbmcgewotIAotIG5hbWVzcGFjZSB7Ci1AQCAtMTE3LDcgKzExNCw3IEBA IFY0RGVjb2RlUmVzdWx0IFY0UmljZURlY29kZXI6OkRlY29kZVByZWZpeGVzKGNvbnN0IGludDY0 IGZpcnN0X3ZhbHVlLAotICAgb3V0LT5yZXNlcnZlKChudW1fZW50cmllcyArIDEpKTsKLSAKLSAg IGJhc2U6OkNoZWNrZWROdW1lcmljPHVpbnQzMl90PiBsYXN0X3ZhbHVlKGZpcnN0X3ZhbHVlKTsK LS0gIG91dC0+cHVzaF9iYWNrKGh0b25sKGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSk7Ci0rICBv dXQtPnB1c2hfYmFjayhiYXNlOjpCeXRlU3dhcChzdGF0aWNfY2FzdDx1aW50MzJfdD4obGFzdF92 YWx1ZS5WYWx1ZU9yRGllKCkpKSk7Ci0gCi0gICBpZiAobnVtX2VudHJpZXMgPiAwKSB7Ci0gICAg IFY0UmljZURlY29kZXIgZGVjb2RlcihyaWNlX3BhcmFtZXRlciwgbnVtX2VudHJpZXMsIGVuY29k ZWRfZGF0YSk7Ci1AQCAtMTM2LDcgKzEzMyw3IEBAIFY0RGVjb2RlUmVzdWx0IFY0UmljZURlY29k ZXI6OkRlY29kZVByZWZpeGVzKGNvbnN0IGludDY0IGZpcnN0X3ZhbHVlLAotIAotICAgICAgIC8v IFRoaXMgZmxpcHBpbmcgaXMgZG9uZSBzbyB0aGF0IHRoZSBkZWNvZGVkIHVpbnQzMiBpcyBpbnRl cnByZXRlZAotICAgICAgIC8vIGNvcnJlY2x5IGFzIGEgc3RyaW5nIG9mIDQgYnl0ZXMuCi0tICAg ICAgb3V0LT5wdXNoX2JhY2soaHRvbmwobGFzdF92YWx1ZS5WYWx1ZU9yRGllKCkpKTsKLSsgICAg ICBvdXQtPnB1c2hfYmFjayhiYXNlOjpCeXRlU3dhcChzdGF0aWNfY2FzdDx1aW50MzJfdD4obGFz dF92YWx1ZS5WYWx1ZU9yRGllKCkpKSk7Ci0gICAgIH0KLSAgIH0KLSAKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3Jp Y2VfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29t cG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2VfdW5pdHRlc3QuY2MKLUBAIC02LDYgKzYs MTIgQEAKLSAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgInRlc3RpbmcvcGxh dGZvcm1fdGVzdC5oIgotIAotKyNpZiBkZWZpbmVkKE9TX1dJTikKLSsjaW5jbHVkZSA8d2luc29j azIuaD4KLSsjZWxpZiBkZWZpbmVkKE9TX1BPU0lYKQotKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4K LSsjZW5kaWYKLSsKLSB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OlJlcGVhdGVkRmllbGQ7Ci0g dXNpbmcgOjpnb29nbGU6OnByb3RvYnVmOjppbnQzMjsKLSAKLUBAIC0yNDcsNyArMjUzLDcgQEAg VEVTVF9GKFY0UmljZVRlc3QsIFRlc3REZWNvZGVyUHJlZml4ZXNXaXRoT25lVmFsdWUpIHsKLSAg IEVYUEVDVF9FUShERUNPREVfU1VDQ0VTUywKLSAgICAgICAgICAgICBWNFJpY2VEZWNvZGVyOjpE ZWNvZGVQcmVmaXhlcygweDY5RjY3RjUxdSwgMiwgMCwgIiIsICZvdXQpKTsKLSAgIEVYUEVDVF9F USgxdSwgb3V0LnNpemUoKSk7Ci0tICBFWFBFQ1RfRVEoMHg2OUY2N0Y1MXUsIG91dFswXSk7Ci0r ICBFWFBFQ1RfRVEoaHRvbmwoMHg1MTdGRjY2OXUpLCBvdXRbMF0pOwotIH0KLSAKLSBURVNUX0Yo VjRSaWNlVGVzdCwgVGVzdERlY29kZXJQcmVmaXhlc1dpdGhNdWx0aXBsZVZhbHVlcykgewotQEAg LTI1Niw3ICsyNjIsNyBAQCBURVNUX0YoVjRSaWNlVGVzdCwgVGVzdERlY29kZXJQcmVmaXhlc1dp dGhNdWx0aXBsZVZhbHVlcykgewotICAgICAgICAgICAgIFY0UmljZURlY29kZXI6OkRlY29kZVBy ZWZpeGVzKAotICAgICAgICAgICAgICAgICA1LCAyOCwgMywgIlx4YmZceGE4XHgzZlx4ZmJceGZc eGZceDVlXHgyN1x4ZTZceGMzXHgxZFx4YzZceDM4IiwKLSAgICAgICAgICAgICAgICAgJm91dCkp OwotLSAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGV4cGVjdGVkID0gezUsIDB4YWQ5MzRjMGN1LCAw eDZmZjY3ZjU2dSwgMHg4MTMxNmZjZXV9OwotKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGV4cGVj dGVkID0ge2h0b25sKDB4MDUwMDAwMDApLCBodG9ubCgweDBjNGM5M2FkdSksIGh0b25sKDB4NTY3 ZmY2NmZ1KSwgaHRvbmwoMHhjZTZmMzE4MXUpfTsKLSAgIEVYUEVDVF9FUShleHBlY3RlZC5zaXpl KCksIG91dC5zaXplKCkpOwotICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4cGVjdGVkLnNp emUoKTsgaSsrKSB7Ci0gICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXSwgb3V0W2ldKTsKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21t b24uY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVn L2ZmbXBlZ19jb21tb24uY2MKLUBAIC02ODYsMTAgKzY4Niw2IEBAIENoYW5uZWxMYXlvdXQgQ2hh bm5lbExheW91dFRvQ2hyb21lQ2hhbm5lbExheW91dChpbnQ2NF90IGxheW91dCwgaW50IGNoYW5u ZWxzKSB7Ci0gICB9Ci0gfQotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFO KQotLSNlcnJvciBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIGxpdHRsZS1lbmRpYW5uZXNzLgotLSNl bmRpZgotLQotIFZpZGVvUGl4ZWxGb3JtYXQgQVZQaXhlbEZvcm1hdFRvVmlkZW9QaXhlbEZvcm1h dChBVlBpeGVsRm9ybWF0IHBpeGVsX2Zvcm1hdCkgewotICAgLy8gVGhlIFlVVkogYWx0ZXJuYXRp dmVzIGFyZSBGRm1wZWcncyAoZGVwcmVjYXRlZCwgYnV0IHN0aWxsIGluIHVzZSkgd2F5IHRvCi0g ICAvLyBzcGVjaWZ5IGEgcGl4ZWwgZm9ybWF0IGFuZCBmdWxsIHJhbmdlIGNvbG9yIGNvbWJpbmF0 aW9uLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mb3JtYXRz L21wNC9ib3hfZGVmaW5pdGlvbnMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZm9ybWF0cy9tcDQvYm94X2RlZmluaXRpb25zLmNjCi1AQCAtMTEwNywxNSAr MTEwNywxNCBAQCBib29sIE9wdXNTcGVjaWZpY0JveDo6UGFyc2UoQm94UmVhZGVyKiByZWFkZXIp IHsKLSAgIFJDSEVDSyhyZWFkZXItPlJlYWQ0KCZzYW1wbGVfcmF0ZSkpOwotICAgUkNIRUNLKHJl YWRlci0+UmVhZDJzKCZnYWluX2RiKSk7Ci0gCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRM RV9FTkRJQU4pCi0tI2Vycm9yIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgbGl0dGxlLWVuZGlhbm5l c3MuCi0tI2VuZGlmCi0tCi0tICBtZW1jcHkoJmV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQ X1NBTVBMRVNfT0ZGU0VUXSwgJmNvZGVjX2RlbGF5X2luX2ZyYW1lcywKLS0gICAgICAgICBzaXpl b2YoY29kZWNfZGVsYXlfaW5fZnJhbWVzKSk7Ci0tICBtZW1jcHkoJmV4dHJhZGF0YVtPUFVTX0VY VFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVRdLCAmc2FtcGxlX3JhdGUsCi0tICAgICAgICAgc2l6 ZW9mKHNhbXBsZV9yYXRlKSk7Ci0tICBtZW1jcHkoJmV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9H QUlOX09GRlNFVF0sICZnYWluX2RiLCBzaXplb2YoZ2Fpbl9kYikpOwotKyAgZXh0cmFkYXRhW09Q VVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19PRkZTRVRdID0gKGNvZGVjX2RlbGF5X2luX2ZyYW1l cyA+PiAwKSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVT X09GRlNFVCsxXSA9IChjb2RlY19kZWxheV9pbl9mcmFtZXMgPj4gOCkgJiAweGZmOwotKyAgZXh0 cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNFVF0gPSAoc2FtcGxlX3JhdGUg Pj4gMCkgJiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09G RlNFVCsxXSA9IChzYW1wbGVfcmF0ZSA+PiA4KSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19F WFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VUKzJdID0gKHNhbXBsZV9yYXRlID4+IDE2KSAmIDB4 ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VUKzNdID0g KHNhbXBsZV9yYXRlID4+IDI0KSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFf R0FJTl9PRkZTRVRdID0gKGdhaW5fZGIgPj4gMCkgJiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNf RVhUUkFEQVRBX0dBSU5fT0ZGU0VUKzFdID0gKGdhaW5fZGIgPj4gOCkgJiAweGZmOwotIAotICAg Y2hhbm5lbF9jb3VudCA9IGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9DSEFOTkVMU19PRkZTRVRd OwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9yZW5kZXJl cnMvcGFpbnRfY2FudmFzX3ZpZGVvX3JlbmRlcmVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL3JlbmRlcmVycy9wYWludF9jYW52YXNfdmlkZW9fcmVuZGVy ZXIuY2MKLUBAIC0zMSw4ICszMSw3IEBACi0gCi0gLy8gU2tpYSBpbnRlcm5hbCBmb3JtYXQgZGVw ZW5kcyBvbiBhIHBsYXRmb3JtLiBPbiBBbmRyb2lkIGl0IGlzIEFCR1IsIG9uIG90aGVycwotIC8v IGl0IGlzIEFSR0IuCi0tI2lmIFNLX0IzMl9TSElGVCA9PSAwICYmIFNLX0czMl9TSElGVCA9PSA4 ICYmIFNLX1IzMl9TSElGVCA9PSAxNiAmJiBcCi0tICAgIFNLX0EzMl9TSElGVCA9PSAyNAotKyNp ZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQixHLFIsQSkKLSAjZGVmaW5lIExJQllVVl9JNDIwX1RP X0FSR0IgbGlieXV2OjpJNDIwVG9BUkdCCi0gI2RlZmluZSBMSUJZVVZfSTQyMl9UT19BUkdCIGxp Ynl1djo6STQyMlRvQVJHQgotICNkZWZpbmUgTElCWVVWX0k0NDRfVE9fQVJHQiBsaWJ5dXY6Okk0 NDRUb0FSR0IKLUBAIC00Miw4ICs0MSw3IEBACi0gI2RlZmluZSBMSUJZVVZfSTAxMF9UT19BUkdC IGxpYnl1djo6STAxMFRvQVJHQgotICNkZWZpbmUgTElCWVVWX0gwMTBfVE9fQVJHQiBsaWJ5dXY6 OkgwMTBUb0FSR0IKLSAjZGVmaW5lIExJQllVVl9OVjEyX1RPX0FSR0IgbGlieXV2OjpOVjEyVG9B UkdCCi0tI2VsaWYgU0tfUjMyX1NISUZUID09IDAgJiYgU0tfRzMyX1NISUZUID09IDggJiYgU0tf QjMyX1NISUZUID09IDE2ICYmIFwKLS0gICAgU0tfQTMyX1NISUZUID09IDI0Ci0rI2VsaWYgU0tf UE1DT0xPUl9CWVRFX09SREVSKFIsRyxCLEEpCi0gI2RlZmluZSBMSUJZVVZfSTQyMF9UT19BUkdC IGxpYnl1djo6STQyMFRvQUJHUgotICNkZWZpbmUgTElCWVVWX0k0MjJfVE9fQVJHQiBsaWJ5dXY6 Okk0MjJUb0FCR1IKLSAjZGVmaW5lIExJQllVVl9JNDQ0X1RPX0FSR0IgbGlieXV2OjpJNDQ0VG9B QkdSCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9jZXJ0L2NybF9z ZXQuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2NlcnQvY3Js X3NldC5jYwotQEAgLTYsNiArNiw3IEBACi0gCi0gI2luY2x1ZGUgImJhc2UvYmFzZTY0LmgiCi0g I2luY2x1ZGUgImJhc2UvanNvbi9qc29uX3JlYWRlci5oIgotKyNpbmNsdWRlICJiYXNlL3N5c19i eXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKLSAjaW5jbHVkZSAiYmFz ZS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgotICNpbmNsdWRlICJiYXNlL3ZhbHVlcy5oIgot QEAgLTQ0LDkgKzQ1LDkgQEAgYmFzZTo6RGljdGlvbmFyeVZhbHVlKiBSZWFkSGVhZGVyKGJhc2U6 OlN0cmluZ1BpZWNlKiBkYXRhKSB7Ci0gICB1aW50MTZfdCBoZWFkZXJfbGVuOwotICAgaWYgKGRh dGEtPnNpemUoKSA8IHNpemVvZihoZWFkZXJfbGVuKSkKLSAgICAgcmV0dXJuIG51bGxwdHI7Ci0t ICAvLyBBc3N1bWVzIGxpdHRsZS1lbmRpYW4uCi0gICBtZW1jcHkoJmhlYWRlcl9sZW4sIGRhdGEt PmRhdGEoKSwgc2l6ZW9mKGhlYWRlcl9sZW4pKTsKLSAgIGRhdGEtPnJlbW92ZV9wcmVmaXgoc2l6 ZW9mKGhlYWRlcl9sZW4pKTsKLSsgIGhlYWRlcl9sZW4gPSBiYXNlOjpCeXRlU3dhcFRvTEUxNiho ZWFkZXJfbGVuKTsKLSAKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBoZWFkZXJfbGVuKQotICAgICBy ZXR1cm4gbnVsbHB0cjsKLUBAIC03OSw5ICs4MCw5IEBAIGJvb2wgUmVhZENSTChiYXNlOjpTdHJp bmdQaWVjZSogZGF0YSwKLSAgIHVpbnQzMl90IG51bV9zZXJpYWxzOwotICAgaWYgKGRhdGEtPnNp emUoKSA8IHNpemVvZihudW1fc2VyaWFscykpCi0gICAgIHJldHVybiBmYWxzZTsKLS0gIC8vIEFz c3VtZXMgbGl0dGxlIGVuZGlhbi4KLSAgIG1lbWNweSgmbnVtX3NlcmlhbHMsIGRhdGEtPmRhdGEo KSwgc2l6ZW9mKG51bV9zZXJpYWxzKSk7Ci0gICBkYXRhLT5yZW1vdmVfcHJlZml4KHNpemVvZihu dW1fc2VyaWFscykpOwotKyAgbnVtX3NlcmlhbHMgPSBiYXNlOjpCeXRlU3dhcFRvTEUzMihudW1f c2VyaWFscyk7Ci0gCi0gICBpZiAobnVtX3NlcmlhbHMgPiAzMiAqIDEwMjQgKiAxMDI0KSAgLy8g U2FuaXR5IGNoZWNrLgotICAgICByZXR1cm4gZmFsc2U7Ci1AQCAtMTkyLDE1ICsxOTMsNiBAQCBD UkxTZXQ6On5DUkxTZXQoKSA9IGRlZmF1bHQ7Ci0gLy8gc3RhdGljCi0gYm9vbCBDUkxTZXQ6OlBh cnNlKGJhc2U6OlN0cmluZ1BpZWNlIGRhdGEsIHNjb3BlZF9yZWZwdHI8Q1JMU2V0Piogb3V0X2Ny bF9zZXQpIHsKLSAgIFRSQUNFX0VWRU5UMChOZXRUcmFjaW5nQ2F0ZWdvcnkoKSwgIkNSTFNldDo6 UGFyc2UiKTsKLS0vLyBPdGhlciBwYXJ0cyBvZiBDaHJvbWUgYXNzdW1lIHRoYXQgd2UncmUgbGl0 dGxlIGVuZGlhbiwgc28gd2UgZG9uJ3QgbG9zZQotLS8vIGFueXRoaW5nIGJ5IGRvaW5nIHRoaXMu Ci0tI2lmIGRlZmluZWQoX19CWVRFX09SREVSKQotLSAgLy8gTGludXggY2hlY2sKLS0gIHN0YXRp Y19hc3NlcnQoX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTiwgImFzc3VtZXMgbGl0dGxl IGVuZGlhbiIpOwotLSNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCi0tLy8gTWFjIGNoZWNr Ci0tI2Vycm9yIGFzc3VtZXMgbGl0dGxlIGVuZGlhbgotLSNlbmRpZgotIAotICAgc3RkOjp1bmlx dWVfcHRyPGJhc2U6OkRpY3Rpb25hcnlWYWx1ZT4gaGVhZGVyX2RpY3QoUmVhZEhlYWRlcigmZGF0 YSkpOwotICAgaWYgKCFoZWFkZXJfZGljdC5nZXQoKSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNs L3NlY2NvbXBfbWFjcm9zLmgKLUBAIC0zNzcsNiArMzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRf cmVncyByZWdzX3N0cnVjdDsKLSAKLSAjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIG5yKSkKLSAjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFgg KG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCi0rI2lmIF9fQllURV9P UkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0gI2RlZmluZSBTRUNDT01QX0lQX01T Ql9JRFggXAotICAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rp b25fcG9pbnRlcikgKyA0KQotICNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKLUBAIC0zODUs NiArMzg2LDE2IEBAIHR5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0gICAob2Zm c2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKLSAj ZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9JRFgobnIpIFwKLSAgIChvZmZzZXRvZihzdHJ1Y3QgYXJj aF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyAwKQotKyNlbHNlCi0rI2RlZmluZSBT RUNDT01QX0lQX01TQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0 YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyAwKQotKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURY IFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3Bv aW50ZXIpICsgNCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKLSsgIChvZmZz ZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyAwKQotKyNk ZWZpbmUgU0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNo X3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDQpCi0rI2VuZGlmCi0gCi0gI2RlZmlu ZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykgKF9yZWdzKS5ncHJbM10KLSAjZGVmaW5lIFNFQ0NP TVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdzKS5ncHJbMF0KLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2tpYS9jb25maWcvU2tVc2VyQ29uZmlnLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9jb25maWcvU2tVc2VyQ29uZmlnLmgKLUBA IC05MCwxMSArOTAsMTggQEAgU0tfQVBJIHZvaWQgU2tEZWJ1Z2ZfRmlsZUxpbmUoY29uc3QgY2hh ciogZmlsZSwgaW50IGxpbmUsIGJvb2wgZmF0YWwsCi0gICAgIF9fRklMRV9fLCBfX0xJTkVfXywg I2NvbmQpOyB9IH0gd2hpbGUgKGZhbHNlKQotIAotICNpZiAhZGVmaW5lZChBTkRST0lEKSAgIC8v IE9uIEFuZHJvaWQsIHdlIHVzZSB0aGUgc2tpYSBkZWZhdWx0IHNldHRpbmdzLgotKyNpZiBkZWZp bmVkKFNLX0NQVV9CRU5ESUFOKQotKyNkZWZpbmUgU0tfQTMyX1NISUZUICAgIDAKLSsjZGVmaW5l IFNLX1IzMl9TSElGVCAgICA4Ci0rI2RlZmluZSBTS19HMzJfU0hJRlQgICAgMTYKLSsjZGVmaW5l IFNLX0IzMl9TSElGVCAgICAyNAotKyNlbHNlCi0gI2RlZmluZSBTS19BMzJfU0hJRlQgICAgMjQK LSAjZGVmaW5lIFNLX1IzMl9TSElGVCAgICAxNgotICNkZWZpbmUgU0tfRzMyX1NISUZUICAgIDgK LSAjZGVmaW5lIFNLX0IzMl9TSElGVCAgICAwCi0gI2VuZGlmCi0rI2VuZGlmCi0gCi0gI2lmIGRl ZmluZWQoU0tfQlVJTERfRk9SX01BQykKLSAKLUBAIC0xMDgsMTcgKzExNSw2IEBAIFNLX0FQSSB2 b2lkIFNrRGVidWdmX0ZpbGVMaW5lKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBib29sIGZh dGFsLAotIC8vIHdlIHNob3VsZCByZXZpc2l0IHRoaXMgY2hvaWNlLi4uCi0gI2RlZmluZSBTS19V U0VfRlJFRVRZUEVfRU1CT0xERU4KLSAKLS0jaWYgZGVmaW5lZChTS19CVUlMRF9GT1JfVU5JWCkg JiYgZGVmaW5lZChTS19DUFVfQkVORElBTikKLS0vLyBBYm92ZSB3ZSBzZXQgdGhlIG9yZGVyIGZv ciBBUkdCIGNoYW5uZWxzIGluIHJlZ2lzdGVycy4gSSBzdXNwZWN0IHRoYXQsIG9uCi0tLy8gYmln IGVuZGlhbiBtYWNoaW5lcywgeW91IGNhbiBrZWVwIHRoaXMgdGhlIHNhbWUgYW5kIGV2ZXJ5dGhp bmcgd2lsbCB3b3JrLgotLS8vIFRoZSBpbi1tZW1vcnkgb3JkZXIgd2lsbCBiZSBkaWZmZXJlbnQs IG9mIGNvdXJzZSwgYnV0IGFzIGxvbmcgYXMgZXZlcnl0aGluZwotLS8vIGlzIHJlYWRpbmcgbWVt b3J5IGFzIHdvcmRzIHJhdGhlciB0aGFuIGJ5dGVzLCBpdCB3aWxsIGFsbCB3b3JrLiBIb3dldmVy LCBpZgotLS8vIHlvdSBmaW5kIHRoYXQgY29sb3VycyBhcmUgbWVzc2VkIHVwIEkgdGhvdWdodCB0 aGF0IEkgd291bGQgbGVhdmUgYSBoZWxwZnVsCi0tLy8gbG9jYXRvciBmb3IgeW91LiBBbHNvIHNl ZSB0aGUgY29tbWVudHMgaW4KLS0vLyBiYXNlL2dmeC9iaXRtYXBfcGxhdGZvcm1fZGV2aWNlX2xp bnV4LmgKLS0jZXJyb3IgUmVhZCB0aGUgY29tbWVudCBhdCB0aGlzIGxvY2F0aW9uCi0tI2VuZGlm Ci0tCi0gI2VuZGlmCi0gCi0gLy8gVGhlIGRlZmF1bHQgY3Jhc2ggbWFjcm8gd3JpdGVzIHRvIGJh ZGJlZWYgd2hpY2ggY2FuIGNhdXNlIHNvbWUgc3RyYW5nZQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9za2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvZXh0L2ltYWdlX29wZXJh dGlvbnNfdW5pdHRlc3QuY2MKLUBAIC0xOCw5ICsxOCwxMSBAQAotICNpbmNsdWRlICJza2lhL2V4 dC9pbWFnZV9vcGVyYXRpb25zLmgiCi0gI2luY2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9n dGVzdC9ndGVzdC5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9T a0JpdG1hcC5oIgotKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0Nv bG9yUHJpdi5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0Nv bG9yU3BhY2UuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tJ bWFnZUluZm8uaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tS ZWN0LmgiCi0rI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrVW5QcmVN dWx0aXBseS5oIgotICNpbmNsdWRlICJ1aS9nZngvY29kZWMvcG5nX2NvZGVjLmgiCi0gI2luY2x1 ZGUgInVpL2dmeC9nZW9tZXRyeS9zaXplLmgiCi0gCi1AQCAtMTUxLDcgKzE1Myw3IEBAIHZvaWQg RHJhd0NoZWNrZXJUb0JpdG1hcChpbnQgdywgaW50IGgsCi0gCi0gICAgICAgYm9vbCB1c2VfY29s b3IyID0gKHhfYml0ICE9IHlfYml0KTsgIC8vIHhvcgotIAotLSAgICAgICpibXAtPmdldEFkZHIz Mih4LCB5KSA9ICh1c2VfY29sb3IyID8gY29sb3IyIDogY29sb3IxKTsKLSsgICAgICAqYm1wLT5n ZXRBZGRyMzIoeCwgeSkgPSBTa1ByZU11bHRpcGx5Q29sb3IodXNlX2NvbG9yMiA/IGNvbG9yMiA6 IGNvbG9yMSk7Ci0gICAgIH0KLSAgIH0KLSB9Ci1AQCAtMjczLDcgKzI3NSw3IEBAIHZvaWQgQ2hl Y2tSZXNpemVNZXRob2RTaG91bGRBdmVyYWdlR3JpZCgKLSAgICAgICAgIHN0ZDo6bWF4KHRlc3Rl ZF9waXhlbC5tYXhfY29sb3JfZGlzdGFuY2UsCi0gICAgICAgICAgICAgICAgICB0ZXN0ZWRfbWV0 aG9kLm1heF9jb2xvcl9kaXN0YW5jZV9vdmVycmlkZSk7Ci0gCi0tICAgIGNvbnN0IFNrQ29sb3Ig YWN0dWFsX2NvbG9yID0gKmRlc3QuZ2V0QWRkcjMyKHgsIHkpOwotKyAgICBjb25zdCBTa0NvbG9y IGFjdHVhbF9jb2xvciA9IFNrVW5QcmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3IoKmRlc3QuZ2V0 QWRkcjMyKHgsIHkpKTsKLSAKLSAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcGl4ZWxzIGF3YXkgZnJv bSB0aGUgYm9yZGVyIHJlZ2lvbiBhcmUgdmVyeSBjbG9zZQotICAgICAvLyB0byB0aGUgZXhwZWN0 ZWQgYXZlcmFnZSBjb2xvcgotQEAgLTUyOCw3ICs1MzAsNyBAQCBURVNUKEltYWdlT3BlcmF0aW9u cywgU2NhbGVVcCkgewotICAgZm9yIChpbnQgc3JjX3kgPSAwOyBzcmNfeSA8IHNyY19oOyArK3Ny Y195KSB7Ci0gICAgIGZvciAoaW50IHNyY194ID0gMDsgc3JjX3ggPCBzcmNfdzsgKytzcmNfeCkg ewotICAgICAgICpzcmMuZ2V0QWRkcjMyKHNyY194LCBzcmNfeSkgPQotLSAgICAgICAgICBTa0Nv bG9yU2V0QVJHQigyNTUsIDEwICsgc3JjX3ggKiAxMDAsIDEwICsgc3JjX3kgKiAxMDAsIDApOwot KyAgICAgICAgICBTa1BhY2tBUkdCMzIoMjU1LCAxMCArIHNyY194ICogMTAwLCAxMCArIHNyY195 ICogMTAwLCAwKTsKLSAgICAgfQotICAgfQotIAotQEAgLTU1Miw3ICs1NTQsNyBAQCBURVNUKElt YWdlT3BlcmF0aW9ucywgU2NhbGVVcCkgewotICAgICAgICAgICAgICAgbGFuY3pvczMoc3JjX3gg KyAwLjUgLSBkc3RfeF9pbl9zcmMpICoKLSAgICAgICAgICAgICAgIGxhbmN6b3MzKHNyY195ICsg MC41IC0gZHN0X3lfaW5fc3JjKTsKLSAgICAgICAgICAgc3VtICs9IGNvZWZmOwotLSAgICAgICAg ICBTa0NvbG9yIHRtcCA9ICpzcmMuZ2V0QWRkcjMyKHNyY194LCBzcmNfeSk7Ci0rICAgICAgICAg IFNrQ29sb3IgdG1wID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcigqc3JjLmdldEFk ZHIzMihzcmNfeCwgc3JjX3kpKTsKLSAgICAgICAgICAgYSArPSBjb2VmZiAqIFNrQ29sb3JHZXRB KHRtcCk7Ci0gICAgICAgICAgIHIgKz0gY29lZmYgKiBTa0NvbG9yR2V0Uih0bXApOwotICAgICAg ICAgICBnICs9IGNvZWZmICogU2tDb2xvckdldEcodG1wKTsKLUBAIC01NzEsNyArNTczLDcgQEAg VEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxlVXApIHsKLSAgICAgICBpZiAociA+IDI1NS4wZikg ciA9IDI1NS4wZjsKLSAgICAgICBpZiAoZyA+IDI1NS4wZikgZyA9IDI1NS4wZjsKLSAgICAgICBp ZiAoYiA+IDI1NS4wZikgYiA9IDI1NS4wZjsKLS0gICAgICBTa0NvbG9yIGRzdF9jb2xvciA9ICpk c3QuZ2V0QWRkcjMyKGRzdF94LCBkc3RfeSk7Ci0rICAgICAgU2tDb2xvciBkc3RfY29sb3IgPSBT a1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKCpkc3QuZ2V0QWRkcjMyKGRzdF94LCBkc3Rf eSkpOwotICAgICAgIEVYUEVDVF9MRShmYWJzKFNrQ29sb3JHZXRBKGRzdF9jb2xvcikgLSBhKSwg MS41Zik7Ci0gICAgICAgRVhQRUNUX0xFKGZhYnMoU2tDb2xvckdldFIoZHN0X2NvbG9yKSAtIHIp LCAxLjVmKTsKLSAgICAgICBFWFBFQ1RfTEUoZmFicyhTa0NvbG9yR2V0Ryhkc3RfY29sb3IpIC0g ZyksIDEuNWYpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2VfY29u dmVyc2lvbi5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2VfY29u dmVyc2lvbi5jYwotQEAgLTQ1Niw4ICs0NTYsOCBAQCB2b2lkIFVucGFjazxXZWJHTEltYWdlQ29u dmVyc2lvbjo6a0RhdGFGb3JtYXRCR1JBOCwgdWludDhfdCwgdWludDhfdD4oCi0gICBmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzX3Blcl9yb3c7ICsraSkgewotICAgICB1aW50MzJfdCBi Z3JhID0gc291cmNlMzJbaV07Ci0gI2lmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikKLS0g ICAgdWludDMyX3QgYnJNYXNrID0gMHhmZjAwZmYwMDsKLS0gICAgdWludDMyX3QgZ2FNYXNrID0g MHgwMGZmMDBmZjsKLSsgICAgdWludDMyX3QgYnJfbWFzayA9IDB4ZmYwMGZmMDA7Ci0rICAgIHVp bnQzMl90IGdhX21hc2sgPSAweDAwZmYwMGZmOwotICNlbHNlCi0gICAgIHVpbnQzMl90IGJyX21h c2sgPSAweDAwZmYwMGZmOwotICAgICB1aW50MzJfdCBnYV9tYXNrID0gMHhmZjAwZmYwMDsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb25fdGVzdC5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2VfY29udmVyc2lvbl90 ZXN0LmNjCi1AQCAtNzYsOSArNzYsOSBAQCBURVNUX0YoV2ViR0xJbWFnZUNvbnZlcnNpb25UZXN0 LCBjb252ZXJ0QkdSQTh0b1JHQkE4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDM0NTY3ODg4LCAweDEyMzQ1Njc4LCAweDM0NTY3ODg4LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgxMjM0NTY3OCwgMHgzNDU2Nzg4OCwgMHgxMjM0NTY3OH07Ci0gI2lmIGRlZmlu ZWQoQVJDSF9DUFVfQklHX0VORElBTikKLS0gIHVpbnQzMl90IGV4cGVjdGVkRGF0YVs5XSA9IHsw eDU2MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4LAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OH07 Ci0rICB1aW50MzJfdCBleHBlY3RlZF9kYXRhWzldID0gezB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgs IDB4NTYzNDEyNzgsCi0rCQkJICAgICAgIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzgsIDB4Nzg1NjM0 ODgsCi0rCQkJICAgICAgIDB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzh9OwotICNl bHNlCi0gICB1aW50MzJfdCBleHBlY3RlZF9kYXRhWzldID0gezB4MTI3ODU2MzQsIDB4MzQ4ODc4 NTYsIDB4MTI3ODU2MzQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQ4ODc4 NTYsIDB4MTI3ODU2MzQsIDB4MzQ4ODc4NTYsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dy YXBoaWNzX2NvbnRleHRfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncmFwaGlj c19jb250ZXh0X3Rlc3QuY2MKLUBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBibGluayB7Ci0g ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgIGZvciAoaW50IHkgPSBvcGFxdWVSZWN0LlkoKTsgeSA8IG9wYXF1ZVJl Y3QuTWF4WSgpOyArK3kpICAgICBcCi0gICAgICAgZm9yIChpbnQgeCA9IG9wYXF1ZVJlY3QuWCgp OyB4IDwgb3BhcXVlUmVjdC5NYXhYKCk7ICsreCkgeyBcCi0tICAgICAgICBpbnQgYWxwaGEgPSAq Yml0bWFwLmdldEFkZHIzMih4LCB5KSA+PiAyNDsgICAgICAgICAgICAgICBcCi0rICAgICAgICBp bnQgYWxwaGEgPSBTa0dldFBhY2tlZEEzMigqYml0bWFwLmdldEFkZHIzMih4LCB5KSk7CSBcCi0g ICAgICAgICBFWFBFQ1RfRVEoMjU1LCBhbHBoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICB9Ci1AQCAtNjEsMTIgKzYxLDE2IEBAIG5hbWVzcGFj ZSBibGluayB7Ci0gICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgIGZvciAoaW50IHkgPSAwOyB5IDwgYml0bWFwLmhlaWdo dCgpOyArK3kpICAgICAgICAgICAgICAgICBcCi0gICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBi aXRtYXAud2lkdGgoKTsgKyt4KSB7ICAgICAgICAgICAgICBcCi0tICAgICAgICBpbnQgYWxwaGEg PSAqYml0bWFwLmdldEFkZHIzMih4LCB5KSA+PiAyNDsgICAgICAgICAgICBcCi0rICAgICAgICBp bnQgYWxwaGEgPSBTa0dldFBhY2tlZEEzMigqYml0bWFwLmdldEFkZHIzMih4LCB5KSk7ICBcCi0g ICAgICAgICBib29sIG9wYXF1ZSA9IG9wYXF1ZVJlY3QuQ29udGFpbnMoeCwgeSk7ICAgICAgICAg ICAgICBcCi0gICAgICAgICBFWFBFQ1RfRVEob3BhcXVlLCBhbHBoYSA9PSAyNTUpOyAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICB9Ci0gCi0rc3RhdGljIGlubGluZSB1aW50MzJf dCBQYWNrQVJHQjMyKHVpbnQzMl90IGFyZ2IpIHsKLSsgIHJldHVybiBTa1BhY2tBUkdCMzJOb0No ZWNrKGFyZ2I+PjI0LCAoYXJnYjw8OCk+PjI0LCAoYXJnYjw8MTYpPj4yNCwgKGFyZ2I8PDI0KT4+ MjQpOwotK30KLSsKLSBURVNUKEdyYXBoaWNzQ29udGV4dFRlc3QsIFJlY29yZGluZykgewotICAg U2tCaXRtYXAgYml0bWFwOwotICAgYml0bWFwLmFsbG9jTjMyUGl4ZWxzKDEwMCwgMTAwKTsKLUBA IC0xODQsMTAgKzE4OCwxMCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVz dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENv bnN0cmFzdFRlc3QsIE1BWUJFX05vSGlnaENvbnRyYXN0KSB7Ci0gICBEcmF3Q29sb3JzVG9Db250 ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAs IDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkp OwotLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0t ICBFWFBFQ1RfRVEoMHhmZjgwODA4MCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVY UEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkp OwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIz MigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1hcF8u Z2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmY4MDgwODApLCAq Yml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSAvLyBUT0RPKGNyYnVnLmNvbS84NTA3 ODIpOiBSZWVuYWJsZSB0aGlzLgotQEAgLTIwNSwxMCArMjA5LDEwIEBAIFRFU1RfRihHcmFwaGlj c0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfSGlnaENvbnRyYXN0T2ZmKSB7Ci0gCi0g ICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFw Xy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdl dEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjgwODA4MCwgKmJpdG1hcF8uZ2V0QWRk cjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFw Xy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiks ICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZm ZmYwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJH QjMyKDB4ZmY4MDgwODApLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSAvLyBT aW1wbGUgaW52ZXJ0IGZvciB0ZXN0aW5nLiBFYWNoIGNvbG9yIGNvbXBvbmVudCB8Y3wKLUBAIC0y MjgsMTAgKzIzMiwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3Qs IE1BWUJFX1NpbXBsZUludmVydEZvclRlc3RpbmcpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0NvbnRl eHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwg MCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7 Ci0tICBFWFBFQ1RfRVEoMHhmZjAwZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0g IEVYUEVDVF9FUSgweGZmN2Y3ZjdmLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQ RUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7 Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMy KDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMGZmZmYpLCAqYml0bWFwXy5n ZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjdmN2Y3ZiksICpi aXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVydCBicmlnaHRuZXNzICh3 aXRoIGdhbW1hIGNvcnJlY3Rpb24pLgotQEAgLTI1MCwxMCArMjU0LDEwIEBAIFRFU1RfRihHcmFw aGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfSW52ZXJ0QnJpZ2h0bmVzcykgewot IAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYs ICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDBmZmZmLCAqYml0bWFw Xy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZkZGRkZGQsICpiaXRtYXBfLmdl dEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJp dG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAw MDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZjAwZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFj a0FSR0IzMigweGZmZGRkZGRkKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0g Ly8gSW52ZXJ0IGxpZ2h0bmVzcyAoaW4gSFNMIHNwYWNlKS4KLUBAIC0yNzIsMTAgKzI3NiwxMCBA QCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1BWUJFX0ludmVydExp Z2h0bmVzcykgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VR KDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhm ZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZmYw MDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZkZGRkZGQs ICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZm ZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJH QjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VR KFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBF WFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZGRkZGRkKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDAp KTsKLSB9Ci0gCi0gLy8gSW52ZXJ0IGxpZ2h0bmVzcyBwbHVzIGdyYXlzY2FsZS4KLUBAIC0yODgs MTAgKzI5MiwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIElu dmVydExpZ2h0bmVzc1BsdXNHcmF5c2NhbGUpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0NvbnRleHQo KTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkp OwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0t ICBFWFBFQ1RfRVEoMHhmZmUyZTJlMiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0gIEVY UEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQRUNU X0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0r ICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEs IDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZlMmUyZTIpLCAqYml0bWFwXy5nZXRB ZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmRkZGRkZCksICpiaXRt YXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIFRPRE8oY3JidWcuY29tLzg1MDc4Mik6 IFJlZW5hYmxlIHRoaXMuCi1AQCAtMzA5LDEwICszMTMsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29u dGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9JbnZlcnRMaWdodG5lc3NQbHVzQ29udHJhc3Qp IHsKLSAKLSAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZm ZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAs ICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZWVlZWVlLCAqYml0bWFw Xy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiks ICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZm MDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJH QjMyKDB4ZmZmZjAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VR KFBhY2tBUkdCMzIoMHhmZmVlZWVlZSksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQot IAotIH0gIC8vIG5hbWVzcGFjZSBibGluawotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9oaWdo Y29udHJhc3QvaGlnaGNvbnRyYXN0X2NsYXNzaWZpZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3Jh cGhpY3MvaGlnaGNvbnRyYXN0L2hpZ2hjb250cmFzdF9jbGFzc2lmaWVyLmNjCi1AQCAtMTA2MCw1 NSArMTA2MCw0NyBAQCB2b2lkIERlcXVhbnRpemVNaW5GaXJzdChjb25zdCBpbnQzMl90IHJhbmss Ci0gCi0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAvLyBDT05TVEFOVFMKLS0vLyBOb3RlIHRo YXQgZm9yIG5vdywgZW5kaWFubmVzcyBvZiB0aGUgdGFyZ2V0IG1hY2hpbmUgbmVlZHMgdG8gbWF0 Y2ggdGhhdCBvZgotLS8vIHRoZSBvbmUgdHJhaW5pbmcgd2FzIHBlcmZvcm1lZCBvbi4KLSAvLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotIGNvbnN0IGludDMyX3QgZG5uX2hpZGRlbmxheWVyXzBfd2Vp Z2h0c19wYXJ0XzBfc2hhcGVbMl0gPSB7NCwgMTB9OwotIGNvbnN0IHVuaW9uIHsKLS0gIHVpbnQ4 X3QgYnl0ZXNbMTYwXTsKLSAgIGZsb2F0IHZhbHVlc1s0MF07Ci0gfSBkbm5faGlkZGVubGF5ZXJf MF93ZWlnaHRzX3BhcnRfMCA9IHt7Ci0tICAgIDB4YmMsIDB4MjIsIDB4MGEsIDB4YmYsIDB4YjQs IDB4NDYsIDB4OGMsIDB4M2YsIDB4YmEsIDB4MzEsIDB4MzQsIDB4YmUsCi0tICAgIDB4NGMsIDB4 NjUsIDB4ZGIsIDB4YmUsIDB4ZjAsIDB4NTQsIDB4NWUsIDB4YmUsIDB4YzEsIDB4NWQsIDB4YjMs IDB4M2YsCi0tICAgIDB4ZjQsIDB4ZTYsIDB4MTUsIDB4YmYsIDB4MDUsIDB4YzYsIDB4MzQsIDB4 YmYsIDB4YzAsIDB4MzcsIDB4N2UsIDB4YmQsCi0tICAgIDB4NmMsIDB4MzUsIDB4MGIsIDB4YmYs IDB4Y2EsIDB4NTMsIDB4MjYsIDB4YmYsIDB4NTgsIDB4YjQsIDB4ODcsIDB4M2YsCi0tICAgIDB4 MzcsIDB4ZWUsIDB4MzksIDB4YmYsIDB4ZGEsIDB4ZmEsIDB4ZjksIDB4YmUsIDB4OTcsIDB4YzEs IDB4MDYsIDB4YmYsCi0tICAgIDB4ZjksIDB4NGUsIDB4ODEsIDB4M2YsIDB4YjIsIDB4NDQsIDB4 ODUsIDB4YmYsIDB4N2YsIDB4OTgsIDB4N2MsIDB4M2QsCi0tICAgIDB4MTUsIDB4MjYsIDB4YmMs IDB4YmUsIDB4NWMsIDB4NDgsIDB4MDUsIDB4M2YsIDB4YzgsIDB4YWEsIDB4YTEsIDB4YmQsCi0t ICAgIDB4MzUsIDB4YjMsIDB4NDMsIDB4YmUsIDB4ZWIsIDB4NDYsIDB4OTEsIDB4M2YsIDB4ODAs IDB4NzEsIDB4ZTMsIDB4M2MsCi0tICAgIDB4ZDEsIDB4OTgsIDB4NzksIDB4M2YsIDB4M2MsIDB4 ZDAsIDB4MGQsIDB4YmYsIDB4MWUsIDB4MDIsIDB4ZDMsIDB4M2UsCi0tICAgIDB4NWQsIDB4NGIs IDB4YTIsIDB4YmYsIDB4NjgsIDB4YWMsIDB4YWEsIDB4YmQsIDB4ZjgsIDB4ZTEsIDB4NzUsIDB4 M2UsCi0tICAgIDB4NGEsIDB4OWMsIDB4MjcsIDB4YmUsIDB4ZjgsIDB4YWUsIDB4YjIsIDB4YmUs IDB4N2YsIDB4OWQsIDB4OTEsIDB4M2YsCi0tICAgIDB4MWUsIDB4OGIsIDB4YTgsIDB4YmUsIDB4 MzUsIDB4N2UsIDB4YjIsIDB4M2YsIDB4YmUsIDB4OGMsIDB4ZDMsIDB4YmUsCi0tICAgIDB4Zjks IDB4Y2QsIDB4YjUsIDB4M2YsIDB4YTEsIDB4NTAsIDB4YWEsIDB4M2YsIDB4ZTQsIDB4NmQsIDB4 ZGQsIDB4YmUsCi0tICAgIDB4MGQsIDB4Y2UsIDB4ZDMsIDB4YmUsCi0rICAgICAtMC41Mzk1OTI1 MDQ1MDEzNDMsICAgMS4wOTU5MDc2ODgxNDA4NywgLTAuMTc1OTcwOTQxNzgxOTk4LCAtMC40Mjg1 MDcyMDg4MjQxNTgsCi0rICAgICAtMC4yMTcxMjA4ODU4NDg5OTksICAgMS40MDEyOTg2NDIxNTg1 MSwgICAtMC41ODU1NTUzMTUwMTc3LCAtMC43MDYxNDY1MzgyNTc1OTksCi0rICAgIC0wLjA2MjA2 NDg4NjA5MzEzOTYsIC0wLjU0Mzc4MzkwMzEyMTk0OCwgLTAuNjQ5NzE2MDE5NjMwNDMyLCAgIDEu MDYwMTkxMTU0NDc5OTgsCi0rICAgICAtMC43MjYyOTExMjAwNTIzMzgsIC0wLjQ4ODI0MTk3MDUz OTA5MywgLTAuNTI2MzkxNDQ2NTkwNDI0LCAgIDEuMDEwMjIyNTU0MjA2ODUsCi0rICAgICAgLTEu MDQxMTU4OTE0NTY2MDQsIDAuMDYxNjY4ODY5MTA3OTYxNywgLTAuMzY3NDc4MDQyODQwOTU4LCAg MC41MjA2MzUzNjY0Mzk4MTksCi0rICAgIC0wLjA3ODkzOTAyMDYzMzY5NzUsICAtMC4xOTExMTMz MDgwNzIwOSwgICAxLjEzNDk3Njc0NDY1MTc5LCAwLjAyNzc2NDA4MTk1NDk1NjEsCi0rICAgICAg MC45NzQ5ODgwNDMzMDgyNTgsIC0wLjU1Mzk1ODY1NDQwMzY4NywgIDAuNDEyMTI1NTI3ODU4NzM0 LCAgIC0xLjI2NzkyNDkwNDgyMzMsCi0rICAgIC0wLjA4MzMzNjY1MTMyNTIyNTgsICAwLjI0MDEx OTgxNDg3Mjc0MiwgLTAuMTYzNjgyMTMyOTU5MzY2LCAgLTAuMzQ4OTkxMTU1NjI0MzksCi0rICAg ICAgICAxLjEzNzYxODg5OTM0NTQsIC0wLjMyOTE4NjM3OTkwOTUxNSwgICAgMS4zOTQ0NzY1MzI5 MzYxLCAtMC40MTMxODMxNTI2NzU2MjksCi0rICAgICAgIDEuNDIwMzQ4Mjg2NjI4NzIsICAgMS4z MzA1ODU1OTg5NDU2MiwgLTAuNDMyNDc5MDIzOTMzNDExLCAtMC40MTM2ODE0MTc3MDM2MjkKLSB9 fTsKLSBjb25zdCBpbnQzMl90IGRubl9oaWRkZW5sYXllcl8wX2JpYXNlc19wYXJ0XzBfc2hhcGVb MV0gPSB7MTB9OwotIGNvbnN0IHVuaW9uIHsKLS0gIHVpbnQ4X3QgYnl0ZXNbNDBdOwotICAgZmxv YXQgdmFsdWVzWzEwXTsKLSB9IGRubl9oaWRkZW5sYXllcl8wX2JpYXNlc19wYXJ0XzAgPSB7ewot LSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGJmLCAweDZhLCAweDUzLCAweDNlLCAweGQz LCAweGMxLAotLSAgICAweGQwLCAweDNlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI2LCAw eGQ4LCAweGMwLCAweDNlLAotLSAgICAweGNhLCAweGU3LCAweDM1LCAweDNlLCAweDIzLCAweGE1 LCAweDQ0LCAweDNmLCAweDYxLCAweGZkLAotLSAgICAweGQyLCAweDNlLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweGI2LCAweGUwLCAweDQzLCAweDNjLAotKyAgICAgICAgICAgICAgICAgICAg MC4wLCAgMC4yMDY0NjE4OTE1MzE5NDQsCi0rICAgICAgMC40MDc3Mjg3NjE0MzQ1NTUsICAgICAg ICAgICAgICAgIDAuMCwKLSsgICAgICAwLjM3NjY1MzM3MzI0MTQyNSwgIDAuMTc3NjQyMDE3NjAy OTIxLAotKyAgICAgICAwLjc2ODE0NDc4NjM1Nzg4LCAgMC40MTIwODkzNzc2NDE2NzgsCi0rICAg ICAgICAgICAgICAgICAgICAwLjAsIDAuMDExOTU1NDMwNzMxMTc3MwotIH19OwotIGNvbnN0IGlu dDMyX3QgZG5uX2xvZ2l0c19iaWFzZXNfcGFydF8wX3NoYXBlWzFdID0gezF9OwotIGNvbnN0IHVu aW9uIHsKLS0gIHVpbnQ4X3QgYnl0ZXNbNF07Ci0gICBmbG9hdCB2YWx1ZXNbMV07Ci0gfSBkbm5f bG9naXRzX2JpYXNlc19wYXJ0XzAgPSB7ewotLSAgICAweDc1LCAweGNhLCAweGQ3LCAweGJlLAot KyAgICAtMC40MjE0NjY0OTk1NjcwMzIKLSB9fTsKLSBjb25zdCBpbnQzMl90IGRubl9sb2dpdHNf d2VpZ2h0c19wYXJ0XzBfc2hhcGVbMl0gPSB7MTAsIDF9OwotIGNvbnN0IHVuaW9uIHsKLS0gIHVp bnQ4X3QgYnl0ZXNbNDBdOwotICAgZmxvYXQgdmFsdWVzWzEwXTsKLSB9IGRubl9sb2dpdHNfd2Vp Z2h0c19wYXJ0XzAgPSB7ewotLSAgICAweDEzLCAweDEyLCAweDM5LCAweDNmLCAweGYzLCAweGE1 LCAweGMyLCAweGJmLCAweDgxLCAweDdmLAotLSAgICAweGJlLCAweDNmLCAweGY4LCAweDE3LCAw eDI2LCAweDNlLCAweGE0LCAweDE5LCAweGE2LCAweDNmLAotLSAgICAweGYwLCAweGM5LCAweGI3 LCAweGJmLCAweDZhLCAweDk5LCAweGQyLCAweDNmLCAweDhhLCAweDdkLAotLSAgICAweGU5LCAw eDNmLCAweDgzLCAweDlhLCAweDNhLCAweGJmLCAweGYxLCAweDZjLCAweDA4LCAweDNlLAotKyAg ICAgIDAuNzIyOTMyMDQwNjkxMzc2LCAgLTEuNTIwNjg5MzY4MjQ3OTksCi0rICAgICAgIDEuNDg4 MjY2MTEwNDIwMjMsICAwLjE2MjIwMDgwODUyNTA4NSwKLSsgICAgICAgMS4yOTc2NTc0ODk3NzY2 MSwgIC0xLjQzNTg1MDE0MzQzMjYyLAotKyAgICAgICAxLjY0NTMwNjgyNTYzNzgyLCAgIDEuODI0 MTQzNjQ4MTQ3NTgsCi0rICAgICAtMC43Mjg5MjAxNjE3MjQwOTEsICAwLjEzMzIyODA3ODQ4NDUz NQotIH19OwotIAotIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v aW1hZ2UtZGVjb2RlcnMvYm1wL2JtcF9pbWFnZV9yZWFkZXIuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9p bWFnZS1kZWNvZGVycy9ibXAvYm1wX2ltYWdlX3JlYWRlci5oCi1AQCAtMzcsNiArMzcsNyBAQAot ICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvYWxsb2Nh dG9yLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0 Zi9jcHUuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v d3RmL25vbmNvcHlhYmxlLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotIAot IG5hbWVzcGFjZSBibGluayB7Ci0gCi1AQCAtNTAsMTEgKzUxLDExIEBAIGNsYXNzIFBMQVRGT1JN X0VYUE9SVCBCTVBJbWFnZVJlYWRlciBmaW5hbCB7Ci0gICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8 YnVmZmVyfCwgY29udmVydGluZyB0byBhbiBpbnQgYXNzdW1pbmcgbGl0dGxlCi0gICAvLyBlbmRp YW5uZXNzCi0gICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IFJlYWRVaW50MTYoY29uc3QgY2hhciog YnVmZmVyKSB7Ci0tICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+ KGJ1ZmZlcik7Ci0rICAgIHJldHVybiBiYXNlOjpCeXRlU3dhcFRvTEUxNigqcmVpbnRlcnByZXRf Y2FzdDxjb25zdCB1aW50MTZfdCo+KGJ1ZmZlcikpOwotICAgfQotIAotICAgc3RhdGljIGlubGlu ZSB1aW50MzJfdCBSZWFkVWludDMyKGNvbnN0IGNoYXIqIGJ1ZmZlcikgewotLSAgICByZXR1cm4g KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZmZXIpOwotKyAgICByZXR1cm4g YmFzZTo6Qnl0ZVN3YXBUb0xFMzIoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihi dWZmZXIpKTsKLSAgIH0KLSAKLSAgIC8vIHxwYXJlbnR8IGlzIHRoZSBkZWNvZGVyIHRoYXQgb3du cyB1cy4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9qcGVnX2ltYWdlX2Rl Y29kZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9qcGVnX2ltYWdl X2RlY29kZXIuY2MKLUBAIC00OSwyMyArNDksMzAgQEAgZXh0ZXJuICJDIiB7Ci0gI2luY2x1ZGUg PHNldGptcC5oPgotIH0KLSAKLS0jaWYgZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQotLSNl cnJvciBCbGluayBhc3N1bWVzIGEgbGl0dGxlLWVuZGlhbiB0YXJnZXQuCi0tI2VuZGlmCi0tCi0g I2lmIGRlZmluZWQoSkNTX0FMUEhBX0VYVEVOU0lPTlMpCi0gI2RlZmluZSBUVVJCT19KUEVHX1JH Ql9TV0laWkxFCi0tI2lmIFNLX0IzMl9TSElGVCAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gUkdC QSBwaXhlbHMgKEFuZHJvaWQpLgotKyNpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoUiwgRywgQiwg QSkKLSBpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgewotICAgcmV0 dXJuIEpDU19FWFRfUkdCQTsKLSB9Ci0tI2Vsc2UgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIEJH UkEgcGl4ZWxzLgotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihCLCBHLCBSLCBBKQotIGlu bGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1dENvbG9yU3BhY2UoKSB7Ci0gICByZXR1cm4gSkNT X0VYVF9CR1JBOwotIH0KLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQSwgUiwgRywgQikK LStpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgewotKyAgcmV0dXJu IEpDU19FWFRfQVJHQjsKLSt9Ci0rI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEEsIEIsIEcs IFIpCi0raW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLSsgIHJl dHVybiBKQ1NfRVhUX0FCR1I7Ci0rfQotKyNlbHNlCi0rI2Vycm9yIENvbXBvbmVudCBvcmRlciBu b3Qgc3VwcG9ydGVkIGJ5IGxpYmpwZWdfdHVyYm8KLSAjZW5kaWYKLSBpbmxpbmUgYm9vbCB0dXJi b1N3aXp6bGVkKEpfQ09MT1JfU1BBQ0UgY29sb3JTcGFjZSkgewotLSAgcmV0dXJuIGNvbG9yU3Bh Y2UgPT0gSkNTX0VYVF9SR0JBIHx8IGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9CR1JBOwotKyAgcmV0 dXJuIGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9SR0JBIHx8IGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9C R1JBIHx8Ci0rICAgIGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9BQkdSIHx8IGNvbG9yU3BhY2UgPT0g SkNTX0VYVF9BUkdCOwotIH0KLSAjZWxzZQotIGlubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1 dENvbG9yU3BhY2UoKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvd2Vi cF9pbWFnZV9kZWNvZGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv d2VicF9pbWFnZV9kZWNvZGVyLmNjCi1AQCAtMzIsMTggKzMyLDIwIEBACi0gI2luY2x1ZGUgInRo aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hpc3RvZ3JhbS5oIgotICNpbmNsdWRl ICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0RhdGEuaCIKLSAKLS0jaWYgZGVmaW5l ZChBUkNIX0NQVV9CSUdfRU5ESUFOKQotLSNlcnJvciBCbGluayBhc3N1bWVzIGEgbGl0dGxlLWVu ZGlhbiB0YXJnZXQuCi0tI2VuZGlmCi0tCi0tI2lmIFNLX0IzMl9TSElGVCAgLy8gT3V0cHV0IGxp dHRsZS1lbmRpYW4gUkdCQSBwaXhlbHMgKEFuZHJvaWQpLgotKyNpZiBTS19QTUNPTE9SX0JZVEVf T1JERVIoUiwgRywgQiwgQSkKLSBpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wg aGFzQWxwaGEpIHsKLSAgIHJldHVybiBoYXNBbHBoYSA/IE1PREVfcmdiQSA6IE1PREVfUkdCQTsK LSB9Ci0tI2Vsc2UgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIEJHUkEgcGl4ZWxzLgotKyNlbGlm IFNLX1BNQ09MT1JfQllURV9PUkRFUihCLCBHLCBSLCBBKQotIGlubGluZSBXRUJQX0NTUF9NT0RF IG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkgewotICAgcmV0dXJuIGhhc0FscGhhID8gTU9ERV9i Z3JBIDogTU9ERV9CR1JBOwotIH0KLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQSwgUiwg RywgQikKLStpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsK LSsgIHJldHVybiBoYXNBbHBoYSA/IE1PREVfQXJnYiA6IE1PREVfQVJHQjsKLSt9Ci0rI2Vsc2UK LSsjZXJyb3IgQ29tcG9uZW50IG9yZGVyIG5vdCBzdXBwb3J0ZWQgYnkgbGlid2VicAotICNlbmRp ZgotIAotIG5hbWVzcGFjZSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2FzbjEvYV9pbnQuYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2Ny eXB0by9hc24xL2FfaW50LmMKLUBAIC0zNjksNyArMzY5LDkgQEAgaW50IEFTTjFfSU5URUdFUl9z ZXRfdWludDY0KEFTTjFfSU5URUdFUiAqb3V0LCB1aW50NjRfdCB2KQotIAotICAgICBPUEVOU1NM X2ZyZWUob3V0LT5kYXRhKTsKLSAgICAgb3V0LT5kYXRhID0gbmV3ZGF0YTsKLSsjaWZuZGVmIE9Q RU5TU0xfQklHRU5ESUFOCi0gICAgIHYgPSBDUllQVE9fYnN3YXA4KHYpOwotKyNlbmRpZgotICAg ICBtZW1jcHkob3V0LT5kYXRhLCAmdiwgc2l6ZW9mKHYpKTsKLSAKLSAgICAgb3V0LT50eXBlID0g Vl9BU04xX0lOVEVHRVI7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NoYWNoYS9jaGFjaGEuYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2Ny eXB0by9jaGFjaGEvY2hhY2hhLmMKLUBAIC0yOSw2ICsyOSwxNCBAQAotICAgKCgodWludDMyX3Qp KChwKVswXSkpIHwgKCh1aW50MzJfdCkoKHApWzFdKSA8PCA4KSB8IFwKLSAgICAoKHVpbnQzMl90 KSgocClbMl0pIDw8IDE2KSB8ICgodWludDMyX3QpKChwKVszXSkgPDwgMjQpKQotIAotKyNkZWZp bmUgVTMyVE84X0xJVFRMRShwLCB2KSAgICBcCi0rICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgKHApWzBdID0gKHYgPj4gMCkgJiAweGZmOyAgXAotKyAgICAocClbMV0gPSAo diA+PiA4KSAmIDB4ZmY7ICBcCi0rICAgIChwKVsyXSA9ICh2ID4+IDE2KSAmIDB4ZmY7IFwKLSsg ICAgKHApWzNdID0gKHYgPj4gMjQpICYgMHhmZjsgXAotKyAgfQotKwotIC8vIHNpZ21hIGNvbnRh aW5zIHRoZSBDaGFDaGEgY29uc3RhbnRzLCB3aGljaCBoYXBwZW4gdG8gYmUgYW4gQVNDSUkgc3Ry aW5nLgotIHN0YXRpYyBjb25zdCB1aW50OF90IHNpZ21hWzE2XSA9IHsgJ2UnLCAneCcsICdwJywg J2EnLCAnbicsICdkJywgJyAnLCAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnMicsICctJywgJ2InLCAneScsICd0JywgJ2UnLCAnICcsICdrJyB9OwotQEAgLTQ1LDkg KzUzLDI3IEBAIHN0YXRpYyBjb25zdCB1aW50OF90IHNpZ21hWzE2XSA9IHsgJ2UnLCAneCcsICdw JywgJ2EnLCAnbicsICdkJywgJyAnLCAnMycsCi0gdm9pZCBDUllQVE9faGNoYWNoYTIwKHVpbnQ4 X3Qgb3V0WzMyXSwgY29uc3QgdWludDhfdCBrZXlbMzJdLAotICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1aW50OF90IG5vbmNlWzE2XSkgewotICAgdWludDMyX3QgeFsxNl07Ci0tICBPUEVO U1NMX21lbWNweSh4LCBzaWdtYSwgc2l6ZW9mKHNpZ21hKSk7Ci0tICBPUEVOU1NMX21lbWNweSgm eFs0XSwga2V5LCAzMik7Ci0tICBPUEVOU1NMX21lbWNweSgmeFsxMl0sIG5vbmNlLCAxNik7Ci0r ICBpbnQgaTsKLSsKLSsgIHhbMF0gPSBVOFRPMzJfTElUVExFKHNpZ21hICsgMCk7Ci0rICB4WzFd ID0gVThUTzMyX0xJVFRMRShzaWdtYSArIDQpOwotKyAgeFsyXSA9IFU4VE8zMl9MSVRUTEUoc2ln bWEgKyA4KTsKLSsgIHhbM10gPSBVOFRPMzJfTElUVExFKHNpZ21hICsgMTIpOwotKwotKyAgeFs0 XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMCk7Ci0rICB4WzVdID0gVThUTzMyX0xJVFRMRShrZXkg KyA0KTsKLSsgIHhbNl0gPSBVOFRPMzJfTElUVExFKGtleSArIDgpOwotKyAgeFs3XSA9IFU4VE8z Ml9MSVRUTEUoa2V5ICsgMTIpOwotKwotKyAgeFs4XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMTYp OwotKyAgeFs5XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMjApOwotKyAgeFsxMF0gPSBVOFRPMzJf TElUVExFKGtleSArIDI0KTsKLSsgIHhbMTFdID0gVThUTzMyX0xJVFRMRShrZXkgKyAyOCk7Ci0r Ci0rICB4WzEyXSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyAwKTsKLSsgIHhbMTNdID0gVThUTzMy X0xJVFRMRShub25jZSArIDQpOwotKyAgeFsxNF0gPSBVOFRPMzJfTElUVExFKG5vbmNlICsgOCk7 Ci0rICB4WzE1XSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyAxMik7Ci0gCi0gICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IDIwOyBpICs9IDIpIHsKLSAgICAgUVVBUlRFUlJPVU5EKDAsIDQsIDgsIDEy KQotQEAgLTYwLDggKzg2LDEwIEBAIHZvaWQgQ1JZUFRPX2hjaGFjaGEyMCh1aW50OF90IG91dFsz Ml0sIGNvbnN0IHVpbnQ4X3Qga2V5WzMyXSwKLSAgICAgUVVBUlRFUlJPVU5EKDMsIDQsIDksIDE0 KQotICAgfQotIAotLSAgT1BFTlNTTF9tZW1jcHkob3V0LCAmeFswXSwgc2l6ZW9mKHVpbnQzMl90 KSAqIDQpOwotLSAgT1BFTlNTTF9tZW1jcHkoJm91dFsxNl0sICZ4WzEyXSwgc2l6ZW9mKHVpbnQz Ml90KSAqIDQpOwotKyAgZm9yIChpID0gMDsgaSA8IDQ7ICsraSkgewotKyAgICBVMzJUTzhfTElU VExFKG91dCArIDQgKiBpLCB4W2ldKTsKLSsgICAgVTMyVE84X0xJVFRMRSgmb3V0WzE2XSArIDQg KiBpLCB4WzEyK2ldKTsKLSsgIH0KLSB9Ci0gCi0gI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fQVNN KSAmJiAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTA1LDE0ICsxMzMsNiBAQCB2b2lk IENSWVBUT19jaGFjaGFfMjAodWludDhfdCAqb3V0LCBjb25zdCB1aW50OF90ICppbiwgc2l6ZV90 IGluX2xlbiwKLSAKLSAjZWxzZQotIAotLSNkZWZpbmUgVTMyVE84X0xJVFRMRShwLCB2KSAgICBc Ci0tICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgKHApWzBdID0gKHYgPj4g MCkgJiAweGZmOyAgXAotLSAgICAocClbMV0gPSAodiA+PiA4KSAmIDB4ZmY7ICBcCi0tICAgIChw KVsyXSA9ICh2ID4+IDE2KSAmIDB4ZmY7IFwKLS0gICAgKHApWzNdID0gKHYgPj4gMjQpICYgMHhm ZjsgXAotLSAgfQotLQotIC8vIGNoYWNoYV9jb3JlIHBlcmZvcm1zIDIwIHJvdW5kcyBvZiBDaGFD aGEgb24gdGhlIGlucHV0IHdvcmRzIGluCi0gLy8gfGlucHV0fCBhbmQgd3JpdGVzIHRoZSA2NCBv dXRwdXQgYnl0ZXMgdG8gfG91dHB1dHwuCi0gc3RhdGljIHZvaWQgY2hhY2hhX2NvcmUodWludDhf dCBvdXRwdXRbNjRdLCBjb25zdCB1aW50MzJfdCBpbnB1dFsxNl0pIHsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8v Y2lwaGVyX2V4dHJhL2VfYWVzZ2Ntc2l2LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2lwaGVyX2V4dHJhL2Vf YWVzZ2Ntc2l2LmMKLUBAIC02MjUsNyArNjI1LDExIEBAIHN0YXRpYyB2b2lkIGdjbV9zaXZfY3J5 cHQodWludDhfdCAqb3V0LCBjb25zdCB1aW50OF90ICppbiwgc2l6ZV90IGluX2xlbiwKLSAgIGZv ciAoc2l6ZV90IGRvbmUgPSAwOyBkb25lIDwgaW5fbGVuOykgewotICAgICB1aW50OF90IGtleXN0 cmVhbVtBRVNfQkxPQ0tfU0laRV07Ci0gICAgIGVuY19ibG9jayhjb3VudGVyLmMsIGtleXN0cmVh bSwga2V5KTsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgY291bnRlci53WzBdID0g Q1JZUFRPX2Jzd2FwNChDUllQVE9fYnN3YXA0KGNvdW50ZXIud1swXSkgKyAxKTsKLSsjZWxzZQot ICAgICBjb3VudGVyLndbMF0rKzsKLSsjZW5kaWYKLSAKLSAgICAgc2l6ZV90IHRvZG8gPSBBRVNf QkxPQ0tfU0laRTsKLSAgICAgaWYgKGluX2xlbiAtIGRvbmUgPCB0b2RvKSB7Ci1AQCAtNjczLDgg KzY3NywxMyBAQCBzdGF0aWMgdm9pZCBnY21fc2l2X3BvbHl2YWwoCi0gICAgIH0gYml0bGVuczsK LSAgIH0gbGVuZ3RoX2Jsb2NrOwotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgbGVu Z3RoX2Jsb2NrLmJpdGxlbnMuYWQgPSBDUllQVE9fYnN3YXA4KGFkX2xlbiAqIDgpOwotKyAgbGVu Z3RoX2Jsb2NrLmJpdGxlbnMuaW4gPSBDUllQVE9fYnN3YXA4KGluX2xlbiAqIDgpOwotKyNlbHNl Ci0gICBsZW5ndGhfYmxvY2suYml0bGVucy5hZCA9IGFkX2xlbiAqIDg7Ci0gICBsZW5ndGhfYmxv Y2suYml0bGVucy5pbiA9IGluX2xlbiAqIDg7Ci0rI2VuZGlmCi0gICBDUllQVE9fUE9MWVZBTF91 cGRhdGVfYmxvY2tzKCZwb2x5dmFsX2N0eCwgbGVuZ3RoX2Jsb2NrLmMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihsZW5ndGhfYmxvY2spKTsKLSAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlw dG8vY29tcGlsZXJfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jb21waWxlcl90ZXN0LmNjCi1AQCAt NDAsOSArNDAsMTMgQEAgc3RhdGljIHZvaWQgQ2hlY2tSZXByZXNlbnRhdGlvbihUIHZhbHVlKSB7 Ci0gICBVbnNpZ25lZFQgdmFsdWVfdSA9IHN0YXRpY19jYXN0PFVuc2lnbmVkVD4odmFsdWUpOwot ICAgRVhQRUNUX0VRKHNpemVvZihVbnNpZ25lZFQpLCBzaXplb2YoVCkpOwotIAotLSAgLy8gSW50 ZWdlcnMgbXVzdCBiZSBsaXR0bGUtZW5kaWFuLgotKyAgLy8gSW50ZWdlcnMgbXVzdCBiZSBlaXRo ZXIgYmlnLWVuZGlhbiBvciBsaXR0bGUtZW5kaWFuLgotICAgdWludDhfdCBleHBlY3RlZFtzaXpl b2YoVW5zaWduZWRUKV07Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBmb3IgKHNpemVf dCBpID0gc2l6ZW9mKFVuc2lnbmVkVCk7IGktLSA+IDA7ICkgewotKyNlbHNlCi0gICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IHNpemVvZihVbnNpZ25lZFQpOyBpKyspIHsKLSsjZW5kaWYKLSAgICAg ZXhwZWN0ZWRbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZV91KTsKLSAgICAgLy8gRGl2 aWRlIGluc3RlYWQgb2YgcmlnaHQtc2hpZnQgdG8gYXBwZWFzZSBjb21waWxlcnMgdGhhdCB3YXJu IGlmIHxUfCBpcyBhCi0gICAgIC8vIGNoYXIuIFRoZSBleHBsaWNpdCBjYXN0IGlzIGFsc28gbmVl ZGVkIHRvIGFwcGVhc2UgTVNWQyBpZiBpbnRlZ2VyCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2N1cnZlMjU1MTkv c3Bha2UyNTUxOS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2N1cnZlMjU1MTkvc3Bha2UyNTUxOS5jCi1AQCAt MzM5LDggKzMzOSwxNyBAQCBzdGF0aWMgdm9pZCBzY2FsYXJfZG91YmxlKHNjYWxhciAqcykgewot ICAgdWludDMyX3QgY2FycnkgPSAwOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBp KyspIHsKLS0gICAgY29uc3QgdWludDMyX3QgY2Fycnlfb3V0ID0gcy0+d29yZHNbaV0gPj4gMzE7 Ci0tICAgIHMtPndvcmRzW2ldID0gKHMtPndvcmRzW2ldIDw8IDEpIHwgY2Fycnk7Ci0rI2lmZGVm IE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIGNvbnN0IHVpbnQzMl90IHNpID0gQ1JZUFRPX2Jzd2Fw NChzLT53b3Jkc1tpXSk7Ci0rI2Vsc2UKLSsgICAgY29uc3QgdWludDMyX3Qgc2kgPSBzLT53b3Jk c1tpXTsKLSsjZW5kaWYKLSsgICAgY29uc3QgdWludDMyX3QgY2Fycnlfb3V0ID0gc2kgPj4gMzE7 Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIHMtPndvcmRzW2ldID0gQ1JZUFRPX2Jz d2FwNCgoc2kgPDwgMSkgfCBjYXJyeSk7Ci0rI2Vsc2UKLSsgICAgcy0+d29yZHNbaV0gPSAoc2kg PDwgMSkgfCBjYXJyeTsKLSsjZW5kaWYKLSAgICAgY2FycnkgPSBjYXJyeV9vdXQ7Ci0gICB9Ci0g fQotQEAgLTM1MCw4ICszNTksMTMgQEAgc3RhdGljIHZvaWQgc2NhbGFyX2FkZChzY2FsYXIgKmRl c3QsIGNvbnN0IHNjYWxhciAqc3JjKSB7Ci0gICB1aW50MzJfdCBjYXJyeSA9IDA7Ci0gCi0gICBm b3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElB TgotKyAgICB1aW50NjRfdCB0bXAgPSAoKHVpbnQ2NF90KUNSWVBUT19ic3dhcDQoZGVzdC0+d29y ZHNbaV0pICsgQ1JZUFRPX2Jzd2FwNChzcmMtPndvcmRzW2ldKSkgKyBjYXJyeTsKLSsgICAgZGVz dC0+d29yZHNbaV0gPSBDUllQVE9fYnN3YXA0KCh1aW50MzJfdCl0bXApOwotKyNlbHNlCi0gICAg IHVpbnQ2NF90IHRtcCA9ICgodWludDY0X3QpZGVzdC0+d29yZHNbaV0gKyBzcmMtPndvcmRzW2ld KSArIGNhcnJ5OwotICAgICBkZXN0LT53b3Jkc1tpXSA9ICh1aW50MzJfdCl0bXA7Ci0rI2VuZGlm Ci0gICAgIGNhcnJ5ID0gKHVpbnQzMl90KSh0bXAgPj4gMzIpOwotICAgfQotIH0KLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vZXZwL3NjcnlwdC5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2V2cC9zY3J5cHQuYwotQEAgLTE5Niwx MCArMTk2LDI4IEBAIGludCBFVlBfUEJFX3NjcnlwdChjb25zdCBjaGFyICpwYXNzd29yZCwgc2l6 ZV90IHBhc3N3b3JkX2xlbiwKLSAgICAgZ290byBlcnI7Ci0gICB9Ci0gCi0rI2lmZGVmIE9QRU5T U0xfQklHRU5ESUFOCi0rICB1aW50MzJfdCAqQjMyID0gQi0+d29yZHM7Ci0rICBzaXplX3QgQl93 b3JkcyA9IEJfYnl0ZXMgPj4gMjsKLSsgIGRvIHsKLSsgICAgKkIzMiA9IENSWVBUT19ic3dhcDQo KkIzMik7Ci0rICAgIEIzMisrOwotKyAgfSB3aGlsZSgtLUJfd29yZHMpOwotKyNlbmRpZgotKwot ICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IHA7IGkrKykgewotICAgICBzY3J5cHRST01peChC ICsgMiAqIHIgKiBpLCByLCBOLCBULCBWKTsKLSAgIH0KLSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdF TkRJQU4KLSsgIEIzMiA9IEItPndvcmRzOwotKyAgQl93b3JkcyA9IEJfYnl0ZXMgPj4gMjsKLSsg IGRvIHsKLSsgICAgKkIzMiA9IENSWVBUT19ic3dhcDQoKkIzMik7Ci0rICAgIEIzMisrOwotKyAg fSB3aGlsZSgtLUJfd29yZHMpOwotKyNlbmRpZgotKwotICAgaWYgKCFQS0NTNV9QQktERjJfSE1B QyhwYXNzd29yZCwgcGFzc3dvcmRfbGVuLCAoY29uc3QgdWludDhfdCAqKUIsIEJfYnl0ZXMsIDEs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGEyNTYoKSwga2V5X2xlbiwgb3V0X2tl eSkpIHsKLSAgICAgZ290byBlcnI7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vYnl0ZXMu YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2JuL2J5dGVzLmMKLUBAIC0xMzYsOSArMTM2LDEz IEBAIEJJR05VTSAqQk5fbGUyYm4oY29uc3QgdWludDhfdCAqaW4sIHNpemVfdCBsZW4sIEJJR05V TSAqcmV0KSB7Ci0gICAvLyBNYWtlIHN1cmUgdGhlIHRvcCBieXRlcyB3aWxsIGJlIHplcm9lZC4K LSAgIHJldC0+ZFtudW1fd29yZHMgLSAxXSA9IDA7Ci0gCi0tICAvLyBXZSBvbmx5IHN1cHBvcnQg bGl0dGxlLWVuZGlhbiBwbGF0Zm9ybXMsIHNvIHdlIGNhbiBzaW1wbHkgbWVtY3B5IHRoZQotLSAg Ly8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICB1aW50OF90ICpvdXQgPSAodWludDhfdCAqKXJldC0+ZDsKLSsgIGZvciAoc2l6ZV90IGkgPSAw OyBpIDwgbGVuOyBpKyspCi0rICAgIG91dFtpIF4gKEJOX0JZVEVTLTEpXSA9IGluW2ldOwotKyNl bHNlCi0gICBPUEVOU1NMX21lbWNweShyZXQtPmQsIGluLCBsZW4pOwotKyNlbmRpZgotICAgcmV0 dXJuIHJldDsKLSB9Ci0gCi1AQCAtMTU3LDcgKzE2MSwxMSBAQCBzaXplX3QgQk5fYm4yYmluKGNv bnN0IEJJR05VTSAqaW4sIHVpbnQ4X3QgKm91dCkgewotIHN0YXRpYyBpbnQgZml0c19pbl9ieXRl cyhjb25zdCB1aW50OF90ICpieXRlcywgc2l6ZV90IG51bV9ieXRlcywgc2l6ZV90IGxlbikgewot ICAgdWludDhfdCBtYXNrID0gMDsKLSAgIGZvciAoc2l6ZV90IGkgPSBsZW47IGkgPCBudW1fYnl0 ZXM7IGkrKykgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBtYXNrIHw9IGJ5dGVz W2kgXiAoQk5fQllURVMtMSldOwotKyNlbHNlCi0gICAgIG1hc2sgfD0gYnl0ZXNbaV07Ci0rI2Vu ZGlmCi0gICB9Ci0gICByZXR1cm4gbWFzayA9PSAwOwotIH0KLUBAIC0xNzIsOSArMTgwLDEzIEBA IGludCBCTl9ibjJsZV9wYWRkZWQodWludDhfdCAqb3V0LCBzaXplX3QgbGVuLCBjb25zdCBCSUdO VU0gKmluKSB7Ci0gICAgIG51bV9ieXRlcyA9IGxlbjsKLSAgIH0KLSAKLS0gIC8vIFdlIG9ubHkg c3VwcG9ydCBsaXR0bGUtZW5kaWFuIHBsYXRmb3Jtcywgc28gd2UgY2FuIHNpbXBseSBtZW1jcHkg aW50byB0aGUKLS0gIC8vIGludGVybmFsIHJlcHJlc2VudGF0aW9uLgotKyNpZmRlZiBPUEVOU1NM X0JJR0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgewot KyAgICBvdXRbaV0gPSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsKLSsgIH0KLSsjZWxzZQotICAg T1BFTlNTTF9tZW1jcHkob3V0LCBieXRlcywgbnVtX2J5dGVzKTsKLSsjZW5kaWYKLSAgIC8vIFBh ZCBvdXQgdGhlIHJlc3Qgb2YgdGhlIGJ1ZmZlciB3aXRoIHplcm9lcy4KLSAgIE9QRU5TU0xfbWVt c2V0KG91dCArIG51bV9ieXRlcywgMCwgbGVuIC0gbnVtX2J5dGVzKTsKLSAgIHJldHVybiAxOwot QEAgLTE5MCwxMSArMjAyLDE1IEBAIGludCBCTl9ibjJiaW5fcGFkZGVkKHVpbnQ4X3QgKm91dCwg c2l6ZV90IGxlbiwgY29uc3QgQklHTlVNICppbikgewotICAgICBudW1fYnl0ZXMgPSBsZW47Ci0g ICB9Ci0gCi0tICAvLyBXZSBvbmx5IHN1cHBvcnQgbGl0dGxlLWVuZGlhbiBwbGF0Zm9ybXMsIHNv IHdlIGNhbiBzaW1wbHkgd3JpdGUgdGhlIGJ1ZmZlcgotLSAgLy8gaW4gcmV2ZXJzZS4KLSsjaWZk ZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2J5dGVz OyBpKyspIHsKLSsgICAgb3V0W2xlbiAtIGkgLSAxXSA9IGJ5dGVzW2kgXiAoQk5fQllURVMtMSld OwotKyAgfQotKyNlbHNlCi0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsr KSB7Ci0gICAgIG91dFtsZW4gLSBpIC0gMV0gPSBieXRlc1tpXTsKLSAgIH0KLSsjZW5kaWYKLSAg IC8vIFBhZCBvdXQgdGhlIHJlc3Qgb2YgdGhlIGJ1ZmZlciB3aXRoIHplcm9lcy4KLSAgIE9QRU5T U0xfbWVtc2V0KG91dCwgMCwgbGVuIC0gbnVtX2J5dGVzKTsKLSAgIHJldHVybiAxOwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L2NyeXB0by9maXBzbW9kdWxlL2VjZHNhL2VjZHNhLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVs ZS9lY2RzYS9lY2RzYS5jCi1AQCAtODAsNyArODAsMTEgQEAgc3RhdGljIHZvaWQgZGlnZXN0X3Rv X3NjYWxhcihjb25zdCBFQ19HUk9VUCAqZ3JvdXAsIEVDX1NDQUxBUiAqb3V0LAotICAgfQotICAg T1BFTlNTTF9tZW1zZXQob3V0LCAwLCBzaXplb2YoRUNfU0NBTEFSKSk7Ci0gICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IGRpZ2VzdF9sZW47IGkrKykgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElB TgotKyAgICBvdXQtPmJ5dGVzW2kgXiAoQk5fQllURVMtMSldID0gZGlnZXN0W2RpZ2VzdF9sZW4g LSAxIC0gaV07Ci0rI2Vsc2UKLSAgICAgb3V0LT5ieXRlc1tpXSA9IGRpZ2VzdFtkaWdlc3RfbGVu IC0gMSAtIGldOwotKyNlbmRpZgotICAgfQotIAotICAgLy8gSWYgaXQgaXMgc3RpbGwgdG9vIGxv bmcsIHRydW5jYXRlIHJlbWFpbmluZyBiaXRzIHdpdGggYSBzaGlmdC4KLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8v Zmlwc21vZHVsZS9tb2Rlcy9nY20uYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2dj bS5jCi1AQCAtNzgsNiArNzgsMTQgQEAKLSAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgfSB3aGlsZSAoMCkK LSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsjZGVmaW5lIEdDTV9ic3dhcDQoeCkgKHgp Ci0rI2RlZmluZSBHQ01fYnN3YXA4KHgpICh4KQotKyNlbHNlCi0rI2RlZmluZSBHQ01fYnN3YXA0 IENSWVBUT19ic3dhcDQKLSsjZGVmaW5lIEdDTV9ic3dhcDggQ1JZUFRPX2Jzd2FwOAotKyNlbmRp ZgotKwotIC8vIGtTaXplVFdpdGhvdXRMb3dlcjRCaXRzIGlzIGEgbWFzayB0aGF0IGNhbiBiZSB1 c2VkIHRvIHplcm8gdGhlIGxvd2VyIGZvdXIKLSAvLyBiaXRzIG9mIGEgfHNpemVfdHwuCi0gc3Rh dGljIGNvbnN0IHNpemVfdCBrU2l6ZVRXaXRob3V0TG93ZXI0Qml0cyA9IChzaXplX3QpIC0xNjsK LUBAIC0xNzMsOCArMTgxLDggQEAgc3RhdGljIHZvaWQgZ2NtX2dtdWx0XzRiaXQodWludDY0X3Qg WGlbMl0sIGNvbnN0IHUxMjggSHRhYmxlWzE2XSkgewotICAgICBaLmxvIF49IEh0YWJsZVtubG9d LmxvOwotICAgfQotIAotLSAgWGlbMF0gPSBDUllQVE9fYnN3YXA4KFouaGkpOwotLSAgWGlbMV0g PSBDUllQVE9fYnN3YXA4KFoubG8pOwotKyAgWGlbMF0gPSBHQ01fYnN3YXA4KFouaGkpOwotKyAg WGlbMV0gPSBHQ01fYnN3YXA4KFoubG8pOwotIH0KLSAKLSAvLyBTdHJlYW1lZCBnY21fbXVsdF80 Yml0LCBzZWUgQ1JZUFRPX2djbTEyOF9bZW58ZGVdY3J5cHQgZm9yCi1AQCAtMjMzLDggKzI0MSw4 IEBAIHN0YXRpYyB2b2lkIGdjbV9naGFzaF80Yml0KHVpbnQ2NF90IFhpWzJdLCBjb25zdCB1MTI4 IEh0YWJsZVsxNl0sCi0gICAgICAgWi5sbyBePSBIdGFibGVbbmxvXS5sbzsKLSAgICAgfQotIAot LSAgICBYaVswXSA9IENSWVBUT19ic3dhcDgoWi5oaSk7Ci0tICAgIFhpWzFdID0gQ1JZUFRPX2Jz d2FwOChaLmxvKTsKLSsgICAgWGlbMF0gPSBHQ01fYnN3YXA4KFouaGkpOwotKyAgICBYaVsxXSA9 IEdDTV9ic3dhcDgoWi5sbyk7Ci0gICB9IHdoaWxlIChpbnAgKz0gMTYsIGxlbiAtPSAxNik7Ci0g fQotICNlbHNlICAvLyBHSEFTSF9BU00KLUBAIC0zNjAsOCArMzY4LDggQEAgdm9pZCBDUllQVE9f Z2hhc2hfaW5pdChnbXVsdF9mdW5jICpvdXRfbXVsdCwgZ2hhc2hfZnVuYyAqb3V0X2hhc2gsCi0g ICBPUEVOU1NMX21lbWNweShILmMsIGdjbV9rZXksIDE2KTsKLSAKLSAgIC8vIEggaXMgc3RvcmVk IGluIGhvc3QgYnl0ZSBvcmRlcgotLSAgSC51WzBdID0gQ1JZUFRPX2Jzd2FwOChILnVbMF0pOwot LSAgSC51WzFdID0gQ1JZUFRPX2Jzd2FwOChILnVbMV0pOwotKyAgSC51WzBdID0gR0NNX2Jzd2Fw OChILnVbMF0pOwotKyAgSC51WzFdID0gR0NNX2Jzd2FwOChILnVbMV0pOwotIAotICAgT1BFTlNT TF9tZW1jcHkob3V0X2tleSwgSC5jLCAxNik7Ci0gCi1AQCAtNDc0LDE1ICs0ODIsMTUgQEAgdm9p ZCBDUllQVE9fZ2NtMTI4X3NldGl2KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkg KmtleSwKLSAgICAgICBHQ01fTVVMKGN0eCwgWWkpOwotICAgICB9Ci0gICAgIGxlbjAgPDw9IDM7 Ci0tICAgIGN0eC0+WWkudVsxXSBePSBDUllQVE9fYnN3YXA4KGxlbjApOwotKyAgICBjdHgtPllp LnVbMV0gXj0gR0NNX2Jzd2FwOChsZW4wKTsKLSAKLSAgICAgR0NNX01VTChjdHgsIFlpKTsKLS0g ICAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgICBjdHIgPSBHQ01fYnN3 YXA0KGN0eC0+WWkuZFszXSk7Ci0gICB9Ci0gCi0gICAoKmN0eC0+Z2NtX2tleS5ibG9jaykoY3R4 LT5ZaS5jLCBjdHgtPkVLMC5jLCBrZXkpOwotICAgKytjdHI7Ci0tICBjdHgtPllpLmRbM10gPSBD UllQVE9fYnN3YXA0KGN0cik7Ci0rICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0g fQotIAotIGludCBDUllQVE9fZ2NtMTI4X2FhZChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCB1 aW50OF90ICphYWQsIHNpemVfdCBsZW4pIHsKLUBAIC01ODAsNyArNTg4LDcgQEAgaW50IENSWVBU T19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXks Ci0gICAgIGN0eC0+YXJlcyA9IDA7Ci0gICB9Ci0gCi0tICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0 eC0+WWkuZFszXSk7Ci0rICBjdHIgPSBHQ01fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0gCi0gICBu ID0gY3R4LT5tcmVzOwotICAgaWYgKG4pIHsKLUBAIC02MDIsNyArNjEwLDcgQEAgaW50IENSWVBU T19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXks Ci0gICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgt PkVLaS5jLCBrZXkpOwotICAgICAgICAgKytjdHI7Ci0tICAgICAgICBjdHgtPllpLmRbM10gPSBD UllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0 cik7Ci0gICAgICAgfQotICAgICAgIGN0eC0+WGkuY1tuXSBePSBvdXRbaV0gPSBpbltpXSBeIGN0 eC0+RUtpLmNbbl07Ci0gICAgICAgbiA9IChuICsgMSkgJSAxNjsKLUBAIC02MjEsNyArNjI5LDcg QEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBB RVNfS0VZICprZXksCi0gICAgIHdoaWxlIChqKSB7Ci0gICAgICAgKCpibG9jaykoY3R4LT5ZaS5j LCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICAgICsrY3RyOwotLSAgICAgIGN0eC0+WWkuZFszXSA9 IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0 cik7Ci0gICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90 KSkgewotICAgICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLAotICAgICAgICAgICAgICAgICAg ICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3Qp XSk7Ci1AQCAtNjM4LDcgKzY0Niw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4 X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICB3aGlsZSAobGVuID49IDE2 KSB7Ci0gICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICAg ICsrY3RyOwotLSAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAg ICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgICAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgewotICAgICAgICAgc3RvcmVfd29yZF9s ZShvdXQgKyBpLAotICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBe IGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXSk7Ci1AQCAtNjUzLDcgKzY2MSw3IEBAIGlu dCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tF WSAqa2V5LAotICAgd2hpbGUgKGxlbiA+PSAxNikgewotICAgICAoKmJsb2NrKShjdHgtPllpLmMs IGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQ VE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAg ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgewotICAg ICAgIHNpemVfdCB0bXAgPSBsb2FkX3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNp emVvZihzaXplX3QpXTsKLSAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksIHRtcCk7Ci1AQCAt NjY4LDcgKzY3Niw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQg KmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmJsb2NrKShj dHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRb M10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQo Y3RyKTsKLSAgICAgd2hpbGUgKGxlbi0tKSB7Ci0gICAgICAgY3R4LT5YaS5jW25dIF49IG91dFtu XSA9IGluW25dIF4gY3R4LT5FS2kuY1tuXTsKLSAgICAgICArK247Ci1AQCAtNzA3LDcgKzcxNSw3 IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3Qg QUVTX0tFWSAqa2V5LAotICAgICBjdHgtPmFyZXMgPSAwOwotICAgfQotIAotLSAgY3RyID0gQ1JZ UFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRb M10pOwotIAotICAgbiA9IGN0eC0+bXJlczsKLSAgIGlmIChuKSB7Ci1AQCAtNzMyLDcgKzc0MCw3 IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3Qg QUVTX0tFWSAqa2V5LAotICAgICAgIGlmIChuID09IDApIHsKLSAgICAgICAgICgqYmxvY2spKGN0 eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICAgICsrY3RyOwotLSAgICAgICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgICAgY3R4LT5ZaS5kWzNdID0g R0NNX2Jzd2FwNChjdHIpOwotICAgICAgIH0KLSAgICAgICBjID0gaW5baV07Ci0gICAgICAgb3V0 W2ldID0gYyBeIGN0eC0+RUtpLmNbbl07Ci1AQCAtNzU0LDcgKzc2Miw3IEBAIGludCBDUllQVE9f Z2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAot ICAgICB3aGlsZSAoaikgewotICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywg a2V5KTsKLSAgICAgICArK2N0cjsKLS0gICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0 KGN0cik7Ci0rICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIGZv ciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICAg IHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9hZF93b3Jk X2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0pOwotQEAgLTc3MSw3 ICs3NzksNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgs IGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGxlbiA+PSAxNikgewotICAgICAgICgq YmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICArK2N0cjsKLS0gICAg ICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkg Kz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKLSAg ICAgICAgICAgICAgICAgICAgICAgbG9hZF93b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kg LyBzaXplb2Yoc2l6ZV90KV0pOwotQEAgLTc4NSw3ICs3OTMsNyBAQCBpbnQgQ1JZUFRPX2djbTEy OF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIHdo aWxlIChsZW4gPj0gMTYpIHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBr ZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIp OwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIGZvciAoc2l6ZV90 IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICBzaXplX3QgYyA9 IGxvYWRfd29yZF9sZShpbiArIGkpOwotICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwgYyBe IGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXSk7Ci1AQCAtODAwLDcgKzgwOCw3IEBAIGlu dCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tF WSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtp LmMsIGtleSk7Ci0gICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0 KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgd2hpbGUg KGxlbi0tKSB7Ci0gICAgICAgdWludDhfdCBjID0gaW5bbl07Ci0gICAgICAgY3R4LT5YaS5jW25d IF49IGM7Ci1AQCAtODY2LDEzICs4NzQsMTMgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdF9j dHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICB9Ci0gI2Vu ZGlmCi0gCi0tICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0rICBjdHIgPSBH Q01fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0gCi0gI2lmIGRlZmluZWQoR0hBU0gpCi0gICB3aGls ZSAobGVuID49IEdIQVNIX0NIVU5LKSB7Ci0gICAgICgqc3RyZWFtKShpbiwgb3V0LCBHSEFTSF9D SFVOSyAvIDE2LCBrZXksIGN0eC0+WWkuYyk7Ci0gICAgIGN0ciArPSBHSEFTSF9DSFVOSyAvIDE2 OwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWku ZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgR0hBU0goY3R4LCBvdXQsIEdIQVNIX0NIVU5L KTsKLSAgICAgb3V0ICs9IEdIQVNIX0NIVU5LOwotICAgICBpbiArPSBHSEFTSF9DSFVOSzsKLUBA IC04ODUsNyArODkzLDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMihHQ00xMjhf Q09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gCi0gICAgICgqc3RyZWFtKShpbiwg b3V0LCBqLCBrZXksIGN0eC0+WWkuYyk7Ci0gICAgIGN0ciArPSAodW5zaWduZWQgaW50KWo7Ci0t ICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICBpbiArPSBpOwotICAgICBsZW4gLT0gaTsKLSAjaWYg ZGVmaW5lZChHSEFTSCkKLUBAIC05MDQsNyArOTEyLDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5j cnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICBp ZiAobGVuKSB7Ci0gICAgICgqY3R4LT5nY21fa2V5LmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtp LmMsIGtleSk7Ci0gICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0 KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgd2hpbGUg KGxlbi0tKSB7Ci0gICAgICAgY3R4LT5YaS5jW25dIF49IG91dFtuXSA9IGluW25dIF4gY3R4LT5F S2kuY1tuXTsKLSAgICAgICArK247Ci1AQCAtOTcwLDE0ICs5NzgsMTQgQEAgaW50IENSWVBUT19n Y20xMjhfZGVjcnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICpr ZXksCi0gICB9Ci0gI2VuZGlmCi0gCi0tICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFsz XSk7Ci0rICBjdHIgPSBHQ01fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0gCi0gI2lmIGRlZmluZWQo R0hBU0gpCi0gICB3aGlsZSAobGVuID49IEdIQVNIX0NIVU5LKSB7Ci0gICAgIEdIQVNIKGN0eCwg aW4sIEdIQVNIX0NIVU5LKTsKLSAgICAgKCpzdHJlYW0pKGluLCBvdXQsIEdIQVNIX0NIVU5LIC8g MTYsIGtleSwgY3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9IEdIQVNIX0NIVU5LIC8gMTY7Ci0tICAg IGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0g R0NNX2Jzd2FwNChjdHIpOwotICAgICBvdXQgKz0gR0hBU0hfQ0hVTks7Ci0gICAgIGluICs9IEdI QVNIX0NIVU5LOwotICAgICBsZW4gLT0gR0hBU0hfQ0hVTks7Ci1AQCAtMTAwMyw3ICsxMDExLDcg QEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBj b25zdCBBRVNfS0VZICprZXksCi0gI2VuZGlmCi0gICAgICgqc3RyZWFtKShpbiwgb3V0LCBqLCBr ZXksIGN0eC0+WWkuYyk7Ci0gICAgIGN0ciArPSAodW5zaWduZWQgaW50KWo7Ci0tICAgIGN0eC0+ WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jz d2FwNChjdHIpOwotICAgICBvdXQgKz0gaTsKLSAgICAgaW4gKz0gaTsKLSAgICAgbGVuIC09IGk7 Ci1AQCAtMTAxMSw3ICsxMDE5LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMihH Q00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICBpZiAobGVuKSB7Ci0g ICAgICgqY3R4LT5nY21fa2V5LmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0g ICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAg IGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgd2hpbGUgKGxlbi0tKSB7Ci0g ICAgICAgdWludDhfdCBjID0gaW5bbl07Ci0gICAgICAgY3R4LT5YaS5jW25dIF49IGM7Ci1AQCAt MTAzNiw4ICsxMDQ0LDggQEAgaW50IENSWVBUT19nY20xMjhfZmluaXNoKEdDTTEyOF9DT05URVhU ICpjdHgsIGNvbnN0IHVpbnQ4X3QgKnRhZywgc2l6ZV90IGxlbikgewotICAgICBHQ01fTVVMKGN0 eCwgWGkpOwotICAgfQotIAotLSAgYWxlbiA9IENSWVBUT19ic3dhcDgoYWxlbik7Ci0tICBjbGVu ID0gQ1JZUFRPX2Jzd2FwOChjbGVuKTsKLSsgIGFsZW4gPSBHQ01fYnN3YXA4KGFsZW4pOwotKyAg Y2xlbiA9IEdDTV9ic3dhcDgoY2xlbik7Ci0gCi0gICBjdHgtPlhpLnVbMF0gXj0gYWxlbjsKLSAg IGN0eC0+WGkudVsxXSBePSBjbGVuOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2lu dGVybmFsLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9pbnRlcm5hbC5oCi1AQCAt NzAsMTEgKzcwLDE3IEBAIGV4dGVybiAiQyIgewotIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgR0VU VTMyKGNvbnN0IHZvaWQgKmluKSB7Ci0gICB1aW50MzJfdCB2OwotICAgT1BFTlNTTF9tZW1jcHko JnYsIGluLCBzaXplb2YodikpOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgcmV0dXJu IHY7Ci0rI2Vsc2UKLSAgIHJldHVybiBDUllQVE9fYnN3YXA0KHYpOwotKyNlbmRpZgotIH0KLSAK LSBzdGF0aWMgaW5saW5lIHZvaWQgUFVUVTMyKHZvaWQgKm91dCwgdWludDMyX3QgdikgewotKyNp Zm5kZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSAgIHYgPSBDUllQVE9fYnN3YXA0KHYpOwotKyNlbmRp ZgotICAgT1BFTlNTTF9tZW1jcHkob3V0LCAmdiwgc2l6ZW9mKHYpKTsKLSB9Ci0gCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv Y3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvcG9seXZhbC5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1 bGUvbW9kZXMvcG9seXZhbC5jCi1AQCAtMzIsMTYgKzMyLDI2IEBAIHN0YXRpYyB2b2lkIGJ5dGVf cmV2ZXJzZShwb2x5dmFsX2Jsb2NrICpiKSB7Ci0gLy8gdGhlIEdIQVNIIGZpZWxkLCBtdWx0aXBs aWVzIHRoYXQgYnkgJ3gnIGFuZCBzZXJpYWxpc2VzIHRoZSByZXN1bHQgYmFjayBpbnRvCi0gLy8g fGJ8LCBidXQgd2l0aCBHSEFTSCdzIGJhY2t3YXJkcyBiaXQgb3JkZXJpbmcuCi0gc3RhdGljIHZv aWQgcmV2ZXJzZV9hbmRfbXVsWF9naGFzaChwb2x5dmFsX2Jsb2NrICpiKSB7Ci0rI2lmZGVmIE9Q RU5TU0xfQklHRU5ESUFOCi0rICB1aW50NjRfdCBoaSA9IENSWVBUT19ic3dhcDgoYi0+dVswXSk7 Ci0rICB1aW50NjRfdCBsbyA9IENSWVBUT19ic3dhcDgoYi0+dVsxXSk7Ci0rI2Vsc2UKLSAgIHVp bnQ2NF90IGhpID0gYi0+dVswXTsKLSAgIHVpbnQ2NF90IGxvID0gYi0+dVsxXTsKLSsjZW5kaWYK LSAgIGNvbnN0IGNyeXB0b193b3JkX3QgY2FycnkgPSBjb25zdGFudF90aW1lX2VxX3coaGkgJiAx LCAxKTsKLSAgIGhpID4+PSAxOwotICAgaGkgfD0gbG8gPDwgNjM7Ci0gICBsbyA+Pj0gMTsKLSAg IGxvIF49ICgodWludDY0X3QpIGNvbnN0YW50X3RpbWVfc2VsZWN0X3coY2FycnksIDB4ZTEsIDAp KSA8PCA1NjsKLSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGItPnVbMF0gPSBsbzsK LSsgIGItPnVbMV0gPSBoaTsKLSsjZWxzZQotICAgYi0+dVswXSA9IENSWVBUT19ic3dhcDgobG8p OwotICAgYi0+dVsxXSA9IENSWVBUT19ic3dhcDgoaGkpOwotKyNlbmRpZgotIH0KLSAKLSAvLyBQ T0xZVkFMKEgsIFhfMSwgLi4uLCBYX24pID0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9yYW5k L2N0cmRyYmcuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL3JhbmQvY3RyZHJiZy5jCi1AQCAt NzAsOCArNzAsMTIgQEAgT1BFTlNTTF9TVEFUSUNfQVNTRVJUKENUUl9EUkJHX0VOVFJPUFlfTEVO ICUgQUVTX0JMT0NLX1NJWkUgPT0gMCwKLSAvLyBjdHJfaW5jIGFkZHMgfG58IHRvIHRoZSBsYXN0 IGZvdXIgYnl0ZXMgb2YgfGRyYmctPmNvdW50ZXJ8LCB0cmVhdGVkIGFzIGEKLSAvLyBiaWctZW5k aWFuIG51bWJlci4KLSBzdGF0aWMgdm9pZCBjdHIzMl9hZGQoQ1RSX0RSQkdfU1RBVEUgKmRyYmcs IHVpbnQzMl90IG4pIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGRyYmctPmNvdW50 ZXIud29yZHNbM10gKz0gbjsKLSsjZWxzZQotICAgZHJiZy0+Y291bnRlci53b3Jkc1szXSA9Ci0g ICAgICAgQ1JZUFRPX2Jzd2FwNChDUllQVE9fYnN3YXA0KGRyYmctPmNvdW50ZXIud29yZHNbM10p ICsgbik7Ci0rI2VuZGlmCi0gfQotIAotIHN0YXRpYyBpbnQgY3RyX2RyYmdfdXBkYXRlKENUUl9E UkJHX1NUQVRFICpkcmJnLCBjb25zdCB1aW50OF90ICpkYXRhLAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9wb2x5 MTMwNS9wb2x5MTMwNS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL3BvbHkxMzA1L3BvbHkxMzA1LmMKLUBAIC0z MiwxMCArMzIsMTYgQEAKLSBzdGF0aWMgdWludDMyX3QgVThUTzMyX0xFKGNvbnN0IHVpbnQ4X3Qg Km0pIHsKLSAgIHVpbnQzMl90IHI7Ci0gICBPUEVOU1NMX21lbWNweSgmciwgbSwgc2l6ZW9mKHIp KTsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHIgPSBDUllQVE9fYnN3YXA0KHIpOwot KyNlbmRpZgotICAgcmV0dXJuIHI7Ci0gfQotIAotIHN0YXRpYyB2b2lkIFUzMlRPOF9MRSh1aW50 OF90ICptLCB1aW50MzJfdCB2KSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICB2ID0g Q1JZUFRPX2Jzd2FwNCh2KTsKLSsjZW5kaWYKLSAgIE9QRU5TU0xfbWVtY3B5KG0sICZ2LCBzaXpl b2YodikpOwotIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvaW5j bHVkZS9vcGVuc3NsL2Jhc2UuaAotQEAgLTk5LDYgKzk5LDEwIEBAIGV4dGVybiAiQyIgewotICNl bGlmIChkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSkgJiYgZGVm aW5lZChfTElUVExFX0VORElBTikKLSAjZGVmaW5lIE9QRU5TU0xfNjRfQklUCi0gI2RlZmluZSBP UEVOU1NMX1BQQzY0TEUKLSsjZWxpZiAoZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykpCi0rI2RlZmluZSBPUEVOU1NMXzY0X0JJVAotKyNkZWZpbmUgT1BFTlNTTF9Q UEM2NAotKyNkZWZpbmUgT1BFTlNTTF9CSUdFTkRJQU4KLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19f KSAmJiAhZGVmaW5lZChfX0xQNjRfXykKLSAjZGVmaW5lIE9QRU5TU0xfMzJfQklUCi0gI2RlZmlu ZSBPUEVOU1NMX01JUFMKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L2N1cnZlMjU1MTkuYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL3RoaXJkX3BhcnR5L2ZpYXQvY3VydmUyNTUxOS5jCi1AQCAtMzAzMiw5ICszMDMyLDE0IEBA IGludCBFRDI1NTE5X3ZlcmlmeShjb25zdCB1aW50OF90ICptZXNzYWdlLCBzaXplX3QgbWVzc2Fn ZV9sZW4sCi0gICAgIFVJTlQ2NF9DKDB4MTAwMDAwMDAwMDAwMDAwMCksCi0gICB9OwotICAgZm9y IChzaXplX3QgaSA9IDM7OyBpLS0pIHsKLS0gICAgaWYgKHNjb3B5LnU2NFtpXSA+IGtPcmRlcltp XSkgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBjb25zdCB1aW50NjRfdCBuID0g Q1JZUFRPX2Jzd2FwOChzY29weS51NjRbaV0pOwotKyNlbHNlCi0rICAgIGNvbnN0IHVpbnQ2NF90 IG4gPSBzY29weS51NjRbaV07Ci0rI2VuZGlmCi0rICAgIGlmIChuID4ga09yZGVyW2ldKSB7Ci0g ICAgICAgcmV0dXJuIDA7Ci0tICAgIH0gZWxzZSBpZiAoc2NvcHkudTY0W2ldIDwga09yZGVyW2ld KSB7Ci0rICAgIH0gZWxzZSBpZiAobiA8IGtPcmRlcltpXSkgewotICAgICAgIGJyZWFrOwotICAg ICB9IGVsc2UgaWYgKGkgPT0gMCkgewotICAgICAgIHJldHVybiAwOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3Bh cnR5L2ZpYXQvcDI1Ni5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9wMjU2LmMKLUBAIC04ODIs MTIgKzg4MiwyNCBAQCBzdGF0aWMgdm9pZCBmZV90b2J5dGVzKHVpbnQ4X3Qgb3V0W05CWVRFU10s IGNvbnN0IGZlIGluKSB7Ci0gICB9Ci0gfQotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgot K3N0YXRpYyB2b2lkIGZlX3RvYnl0ZXNfYmUodWludDhfdCBvdXRbTkJZVEVTXSwgY29uc3QgZmUg aW4pIHsKLSsgIGZvciAoaW50IGkgPSAwOyBpPE5CWVRFUzsgaSsrKSB7Ci0rICAgIG91dFtpIF4g KEJOX0JZVEVTLTEpXSA9ICh1aW50OF90KShpbltpL3NpemVvZihpblswXSldID4+ICg4KihpJXNp emVvZihpblswXSkpKSk7Ci0rICB9Ci0rfQotKyNlbmRpZgotKwotIHN0YXRpYyB2b2lkIGZlX2Zy b21ieXRlcyhmZSBvdXQsIGNvbnN0IHVpbnQ4X3QgaW5bTkJZVEVTXSkgewotICAgZm9yIChpbnQg aSA9IDA7IGk8TkxJTUJTOyBpKyspIHsKLSAgICAgb3V0W2ldID0gMDsKLSAgIH0KLSAgIGZvciAo aW50IGkgPSAwOyBpPE5CWVRFUzsgaSsrKSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICAgIG91dFtpL3NpemVvZihvdXRbMF0pXSB8PSAoKGxpbWJfdClpbltpIF4gKEJOX0JZVEVTLTEp XSkgPDwgKDgqKGklc2l6ZW9mKG91dFswXSkpKTsKLSsjZWxzZQotICAgICBvdXRbaS9zaXplb2Yo b3V0WzBdKV0gfD0gKChsaW1iX3QpaW5baV0pIDw8ICg4KihpJXNpemVvZihvdXRbMF0pKSk7Ci0r I2VuZGlmCi0gICB9Ci0gfQotIAotQEAgLTkwNiw3ICs5MTgsMTEgQEAgc3RhdGljIHZvaWQgZmVf dG9fZ2VuZXJpYyhFQ19GRUxFTSAqb3V0LCBjb25zdCBmZSBpbikgewotICAgT1BFTlNTTF9TVEFU SUNfQVNTRVJUKAotICAgICAgIDI1NiAvIDggPT0gc2l6ZW9mKEJOX1VMT05HKSAqICgoMjU2ICsg Qk5fQklUUzIgLSAxKSAvIEJOX0JJVFMyKSwKLSAgICAgICAiZmVfdG9ieXRlcyBsZWF2ZXMgYnl0 ZXMgdW5pbml0aWFsaXplZCIpOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgZmVfdG9i eXRlc19iZShvdXQtPmJ5dGVzLCBpbik7Ci0rI2Vsc2UKLSAgIGZlX3RvYnl0ZXMob3V0LT5ieXRl cywgaW4pOwotKyNlbmRpZgotIH0KLSAKLSAvLyBmZV9pbnYgY2FsY3VsYXRlcyB8b3V0fCA9IHxp bnxeey0xfQotQEAgLTE1MjQsNyArMTU0MCwxMSBAQCBzdGF0aWMgY2hhciBnZXRfYml0KGNvbnN0 IHVpbnQ4X3QgKmluLCBpbnQgaSkgewotICAgaWYgKGkgPCAwIHx8IGkgPj0gMjU2KSB7Ci0gICAg IHJldHVybiAwOwotICAgfQotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgcmV0dXJuIChp blsoaSA+PiAzKSBeIChzaXplb2YoQk5fVUxPTkcpLTEpXSA+PiAoaSAmIDcpKSAmIDE7Ci0rI2Vs c2UKLSAgIHJldHVybiAoaW5baSA+PiAzXSA+PiAoaSAmIDcpKSAmIDE7Ci0rI2VuZGlmCi0gfQot IAotIC8vIEludGVybGVhdmVkIHBvaW50IG11bHRpcGxpY2F0aW9uIHVzaW5nIHByZWNvbXB1dGVk IHBvaW50IG11bHRpcGxlczogVGhlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYzMyYy9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmMzMmMvQlVJTEQuZ24KLUBAIC0xNSwxMyArMTUs MTAgQEAgY29uZmlnKCJjcmMzMmNfY29uZmlnIikgewotICAgXQotIAotICAgZGVmaW5lcyA9IFsK LS0gICAgIkJZVEVfT1JERVJfQklHX0VORElBTj0wIiwKLSsgICAgIkJZVEVfT1JERVJfQklHX0VO RElBTj1fX0JZVEVfT1JERVJfXz09X19PUkRFUl9CSUdfRU5ESUFOX18iLAotICAgICAiQ1JDMzJD X1RFU1RTX0JVSUxUX1dJVEhfR0xPRz0wIiwKLSAgIF0KLSAKLS0gICMgSWYgd2UgZXZlciBzdXBw b3J0IGJpZy1lbmRpYW4gYnVpbGRzLCBhZGQgbG9naWMgdG8gY29uZGl0aW9uYWxseSBlbmFibGUK LS0gICMgQllURV9PUkRFUl9CSUdfRU5ESUFOLgotLQotICAgaWYgKHRhcmdldF9jcHUgPT0gIng4 NiIgfHwgdGFyZ2V0X2NwdSA9PSAieDY0IikgewotICAgICBkZWZpbmVzICs9IFsKLSAgICAgICAi SEFWRV9NTV9QUkVGRVRDSD0xIiwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRi dWZmZXJzL3NyYy9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAotQEAgLTIyMCwxOCArMjIwLDE1 IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgRW5kaWFuU3dhcChUIHQpIHsKLSAgIGlmIChzaXpl b2YoVCkgPT0gMSkgeyAgIC8vIENvbXBpbGUtdGltZSBpZi10aGVuJ3MuCi0gICAgIHJldHVybiB0 OwotICAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gMikgewotLSAgICB1bmlvbiB7IFQgdDsgdWlu dDE2X3QgaTsgfSB1OwotLSAgICB1LnQgPSB0OwotKyAgICB1bmlvbiBVIHsgVCB0OyB1aW50MTZf dCBpOyBVKGNvbnN0IFQmIHRfKSA6IHQodF8pIHt9fSB1KHQpOwotICAgICB1LmkgPSBGTEFUQlVG RkVSU19CWVRFU1dBUDE2KHUuaSk7Ci0gICAgIHJldHVybiB1LnQ7Ci0gICB9IGVsc2UgaWYgKHNp emVvZihUKSA9PSA0KSB7Ci0tICAgIHVuaW9uIHsgVCB0OyB1aW50MzJfdCBpOyB9IHU7Ci0tICAg IHUudCA9IHQ7Ci0rICAgIHVuaW9uIFUgeyBUIHQ7IHVpbnQzMl90IGk7IFUoY29uc3QgVCYgdF8p IDogdCh0Xykge319IHUodCk7Ci0gICAgIHUuaSA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMzIodS5p KTsKLSAgICAgcmV0dXJuIHUudDsKLSAgIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDgpIHsKLS0g ICAgdW5pb24geyBUIHQ7IHVpbnQ2NF90IGk7IH0gdTsKLS0gICAgdS50ID0gdDsKLSsgICAgdW5p b24gVSB7IFQgdDsgdWludDY0X3QgaTsgVShjb25zdCBUJiB0XykgOiB0KHRfKSB7fX0gdSh0KTsK LSAgICAgdS5pID0gRkxBVEJVRkZFUlNfQllURVNXQVA2NCh1LmkpOwotICAgICByZXR1cm4gdS50 OwotICAgfSBlbHNlIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvbWluaXJlZmxlY3Qu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0 YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0YnVmZmVycy9taW5pcmVmbGVjdC5oCi1AQCAtMTIyLDU4 ICsxMjIsNTggQEAgaW5saW5lIHZvaWQgSXRlcmF0ZVZhbHVlKEVsZW1lbnRhcnlUeXBlIHR5cGUs IGNvbnN0IHVpbnQ4X3QgKnZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc29mZnNldF90 IHZlY3Rvcl9pbmRleCwgSXRlcmF0aW9uVmlzaXRvciAqdmlzaXRvcikgewotICAgc3dpdGNoICh0 eXBlKSB7Ci0gICAgIGNhc2UgRVRfVVRZUEU6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRl cnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVh ZFNjYWxhcjx1aW50OF90Pih2YWwpOwotICAgICAgIHZpc2l0b3ItPlVUeXBlKHR2YWwsIEVudW1O YW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNl IEVUX0JPT0w6IHsKLS0gICAgICB2aXNpdG9yLT5Cb29sKCpyZWludGVycHJldF9jYXN0PGNvbnN0 IHVpbnQ4X3QgKj4odmFsKSAhPSAwKTsKLSsgICAgICB2aXNpdG9yLT5Cb29sKFJlYWRTY2FsYXI8 dWludDhfdD4odmFsKSAhPSAwKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVU X0NIQVI6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4 X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPGludDhfdD4odmFsKTsK LSAgICAgICB2aXNpdG9yLT5DaGFyKHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsK LSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1VDSEFSOiB7Ci0tICAgICAgYXV0 byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPih2YWwpOwotKyAgICAg IGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDhfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5V Q2hhcih0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0g ICAgIH0KLSAgICAgY2FzZSBFVF9TSE9SVDogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVy cHJldF9jYXN0PGNvbnN0IGludDE2X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFk U2NhbGFyPGludDE2X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+U2hvcnQodHZhbCwgRW51bU5h bWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2Ug RVRfVVNIT1JUOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg dWludDE2X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPHVpbnQxNl90 Pih2YWwpOwotICAgICAgIHZpc2l0b3ItPlVTaG9ydCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBl X3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9JTlQ6IHsKLS0g ICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90ICo+KHZhbCk7 Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjxpbnQzMl90Pih2YWwpOwotICAgICAgIHZp c2l0b3ItPkludCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJl YWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9VSU5UOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwg PSBSZWFkU2NhbGFyPHVpbnQzMl90Pih2YWwpOwotICAgICAgIHZpc2l0b3ItPlVJbnQodHZhbCwg RW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAg IGNhc2UgRVRfTE9ORzogewotLSAgICAgIHZpc2l0b3ItPkxvbmcoKnJlaW50ZXJwcmV0X2Nhc3Q8 Y29uc3QgaW50NjRfdCAqPih2YWwpKTsKLSsgICAgICB2aXNpdG9yLT5Mb25nKFJlYWRTY2FsYXI8 aW50NjRfdD4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9VTE9O RzogewotLSAgICAgIHZpc2l0b3ItPlVMb25nKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2 NF90ICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3ItPlVMb25nKFJlYWRTY2FsYXI8dWludDY0X3Q+ KHZhbCkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfRkxPQVQ6IHsKLS0g ICAgICB2aXNpdG9yLT5GbG9hdCgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCAqPih2YWwp KTsKLSsgICAgICB2aXNpdG9yLT5GbG9hdChSZWFkU2NhbGFyPGZsb2F0Pih2YWwpKTsKLSAgICAg ICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX0RPVUJMRTogewotLSAgICAgIHZpc2l0b3It PkRvdWJsZSgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBkb3VibGUgKj4odmFsKSk7Ci0rICAgICAg dmlzaXRvci0+RG91YmxlKFJlYWRTY2FsYXI8ZG91YmxlPih2YWwpKTsKLSAgICAgICBicmVhazsK LSAgICAgfQotICAgICBjYXNlIEVUX1NUUklORzogewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sZXZlbGRhdGFiYXNlL3BvcnQvcG9ydF9jaHJvbWl1 bS5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xl dmVsZGF0YWJhc2UvcG9ydC9wb3J0X2Nocm9taXVtLmgKLUBAIC0yMyw4ICsyMywxMSBAQAotIG5h bWVzcGFjZSBsZXZlbGRiIHsKLSBuYW1lc3BhY2UgcG9ydCB7Ci0gCi0tLy8gQ2hyb21pdW0gb25s eSBzdXBwb3J0cyBsaXR0bGUgZW5kaWFuLgotKyNpZiBBUkNIX0NQVV9MSVRUTEVfRU5ESUFOCi0g c3RhdGljIGNvbnN0IGJvb2wga0xpdHRsZUVuZGlhbiA9IHRydWU7Ci0rI2Vsc2UKLStzdGF0aWMg Y29uc3QgYm9vbCBrTGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0rI2VuZGlmCi0gCi0gY2xhc3MgTE9D S0FCTEUgTXV0ZXggewotICBwdWJsaWM6Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L21vZHBfYjY0L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L21vZHBfYjY0L0JVSUxELmduCi1AQCAtMiwx MCArMiwxNiBAQAotICMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotICMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls ZS4KLSAKLStpbXBvcnQoIi8vYnVpbGQvY29uZmlnL2hvc3RfYnl0ZW9yZGVyLmduaSIpCi0rCi0g c3RhdGljX2xpYnJhcnkoIm1vZHBfYjY0IikgewotICAgc291cmNlcyA9IFsKLSAgICAgIm1vZHBf YjY0LmNjIiwKLSAgICAgIm1vZHBfYjY0LmgiLAotICAgICAibW9kcF9iNjRfZGF0YS5oIiwKLSAg IF0KLSsKLSsgIGlmIChob3N0X2J5dGVvcmRlciA9PSAiYmlnIikgewotKyAgICBkZWZpbmVzID0g WyAiV09SRFNfQklHRU5ESUFOPTEiIF0KLSsgIH0KLSB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L21vZHBfYjY0L21vZHBfYjY0LmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L21vZHBfYjY0L21vZHBf YjY0LmNjCi1AQCAtMTE4LDcgKzExOCw3IEBAIHNpemVfdCBtb2RwX2I2NF9lbmNvZGUoY2hhciog ZGVzdCwgY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQotIH0KLSAKLSAjaWZkZWYgV09SRFNf QklHRU5ESUFOICAgLyogQklHIEVORElBTiAtLSBTVU4gLyBJQk0gLyBNT1RPUk9MQSAqLwotLWlu dCBtb2RwX2I2NF9kZWNvZGUoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBpbnQgbGVuKQot K3NpemVfdCBtb2RwX2I2NF9kZWNvZGUoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXpl X3QgbGVuKQotIHsKLSAgICAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDsKLSAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9w ZXJmZXR0by9iYXNlL3V0aWxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9iYXNlL3V0aWxzLmgKLUBA IC0yMiw2ICsyMiw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGRlZi5o PgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0gI2lmICFQ RVJGRVRUT19CVUlMREZMQUcoUEVSRkVUVE9fT1NfV0lOKQotICNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KLSAjZW5kaWYKLUBAIC05MSw3ICs5Miw3IEBAIHN0cnVjdCBGcmVlRGVsZXRlciB7Ci0gCi0g dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gY29uc3RleHByIFQgQXNzdW1lTGl0dGxlRW5kaWFuKFQg dmFsdWUpIHsKLS0gIHN0YXRpY19hc3NlcnQoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRU TEVfRU5ESUFOX18sCi0rICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULFQ+Ojp2YWx1ZSAm JiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXywKLSAgICAgICAgICAg ICAgICAgIlVuaW1wbGVtZW50ZWQgb24gYmlnLWVuZGlhbiBhcmNocyIpOwotICAgcmV0dXJuIHZh bHVlOwotIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9wcm90b3plcm8vbWVzc2FnZS5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1 ZGUvcGVyZmV0dG8vcHJvdG96ZXJvL21lc3NhZ2UuaAotQEAgLTEzOCw2ICsxMzgsMTMgQEAgY2xh c3MgUEVSRkVUVE9fRVhQT1JUIE1lc3NhZ2UgewotIAotICAgICBwb3MgPSBwcm90b191dGlsczo6 V3JpdGVWYXJJbnQocHJvdG9fdXRpbHM6Ok1ha2VUYWdGaXhlZDxUPihmaWVsZF9pZCksIHBvcyk7 Ci0gICAgIG1lbWNweShwb3MsICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKLSsjaWYgX19CWVRFX09SREVS X18gIT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KLSsgICAgZm9yIChzaXplX3QgaSA9IHNpemVv ZihUKS8yOyBpLS07ICkgewotKyAgICAgIHVpbnQ4X3QgdG1wID0gcG9zW2ldOwotKyAgICAgIHBv c1tpXSA9IHBvc1tzaXplb2YoVCktMS1pXTsKLSsgICAgICBwb3Nbc2l6ZW9mKFQpLTEtaV0gPSB0 bXA7Ci0rICAgIH0KLSsjZW5kaWYKLSAgICAgcG9zICs9IHNpemVvZihUKTsKLSAgICAgLy8gVE9E TzogT3B0aW1pemUgbWVtY3B5IHBlcmZvcm1hbmNlLCBzZWUgaHR0cDovL2NyYnVnLmNvbS82MjQz MTEgLgotICAgICBXcml0ZVRvU3RyZWFtKGJ1ZmZlciwgcG9zKTsKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vc3JjL3Byb3RvemVyby9t ZXNzYWdlLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3BlcmZldHRvL3NyYy9wcm90b3plcm8vbWVzc2FnZS5jYwotQEAgLTIxLDEyICsyMSw2IEBA Ci0gI2luY2x1ZGUgInBlcmZldHRvL2Jhc2UvbG9nZ2luZy5oIgotICNpbmNsdWRlICJwZXJmZXR0 by9wcm90b3plcm8vbWVzc2FnZV9oYW5kbGUuaCIKLSAKLS0jaWYgX19CWVRFX09SREVSX18gIT0g X19PUkRFUl9MSVRUTEVfRU5ESUFOX18KLS0vLyBUaGUgbWVtY3B5KCkgZm9yIGZsb2F0IGFuZCBk b3VibGUgYmVsb3cgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgaWYgd2Ugd2FudCB0bwotLS8vIHN1cHBv cnQgYmlnIGVuZGlhbiBDUFVzLiBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBjb21wZWxsaW5n IG5lZWQgdG9kYXkuCi0tI2Vycm9yIFVuaW1wbGVtZW50ZWQgZm9yIGJpZyBlbmRpYW4gYXJjaHMu Ci0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHByb3RvemVybyB7Ci0gCi0gLy8gc3RhdGljCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL3Ny Yy9wcm90b3plcm8vcHJvdG9fZGVjb2Rlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL3Byb3RvX2RlY29k ZXIuY2MKLUBAIC0yOSw3ICsyOSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBwcm90b191dGlsczsKLSAj ZGVmaW5lIEJZVEVfU1dBUF9UT19MRTMyKHgpICh4KQotICNkZWZpbmUgQllURV9TV0FQX1RPX0xF NjQoeCkgKHgpCi0gI2Vsc2UKLS0jZXJyb3IgVW5pbXBsZW1lbnRlZCBmb3IgYmlnIGVuZGlhbiBh cmNocy4KLSsjZGVmaW5lIEJZVEVfU1dBUF9UT19MRTMyKHgpIF9fYnVpbHRpbl9ic3dhcDMyKHgp Ci0rI2RlZmluZSBCWVRFX1NXQVBfVE9fTEU2NCh4KSBfX2J1aWx0aW5fYnN3YXA2NCh4KQotICNl bmRpZgotIAotIFByb3RvRGVjb2Rlcjo6RmllbGQgUHJvdG9EZWNvZGVyOjpSZWFkRmllbGQoKSB7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEv aW5jbHVkZS9jb3JlL1NrUG9zdENvbmZpZy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUG9zdENvbmZpZy5oCi1A QCAtNDAsMTIgKzQwLDYgQEAKLSAjICBlcnJvciAibXVzdCBkZWZpbmUgZWl0aGVyIFNLX0NQVV9M RU5ESUFOIG9yIFNLX0NQVV9CRU5ESUFOIgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKFNLX0NQ VV9CRU5ESUFOKSAmJiAhZGVmaW5lZChJX0FDS05PV0xFREdFX1NLSUFfRE9FU19OT1RfU1VQUE9S VF9CSUdfRU5ESUFOKQotLSAgICAjZXJyb3IgIlRoZSBTa2lhIHRlYW0gaXMgbm90IGVuZGlhbi1z YXZ2eSBlbm91Z2ggdG8gc3VwcG9ydCBiaWctZW5kaWFuIENQVXMuIgotLSAgICAjZXJyb3IgIklm IHlvdSBzdGlsbCB3YW50IHRvIHVzZSBTa2lhLCIKLS0gICAgI2Vycm9yICJwbGVhc2UgZGVmaW5l IElfQUNLTk9XTEVER0VfU0tJQV9ET0VTX05PVF9TVVBQT1JUX0JJR19FTkRJQU4uIgotLSNlbmRp ZgotLQotIC8qKgotICAqIEVuc3VyZSB0aGUgcG9ydCBoYXMgZGVmaW5lZCBhbGwgb2YgU0tfWDMy X1NISUZULCBvciBub25lIG9mIHRoZW0uCi0gICovCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9wcml2YXRlL0dyVHlwZXNQcml2 LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tp YS9pbmNsdWRlL3ByaXZhdGUvR3JUeXBlc1ByaXYuaAotQEAgLTY1LDkgKzY1LDYgQEAgZW51bSBH clBpeGVsQ29uZmlnIHsKLSBzdGF0aWMgY29uc3QgaW50IGtHclBpeGVsQ29uZmlnQ250ID0ga0xh c3RfR3JQaXhlbENvbmZpZyArIDE7Ci0gCi0gLy8gQWxpYXNlcyBmb3IgcGl4ZWwgY29uZmlncyB0 aGF0IG1hdGNoIHNraWEncyBieXRlIG9yZGVyLgotLSNpZm5kZWYgU0tfQ1BVX0xFTkRJQU4KLS0j ZXJyb3IgIlNraWEgZ3B1IGN1cnJlbnRseSBhc3N1bWVzIGxpdHRsZSBlbmRpYW4iCi0tI2VuZGlm Ci0gI2lmIFNLX1BNQ09MT1JfQllURV9PUkRFUihCLEcsUixBKQotIHN0YXRpYyBjb25zdCBHclBp eGVsQ29uZmlnIGtTa2lhODg4OF9HclBpeGVsQ29uZmlnID0ga0JHUkFfODg4OF9HclBpeGVsQ29u ZmlnOwotICNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLEcsQixBKQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb2RlYy9Ta0Nv ZGVjUHJpdi5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvc3JjL2NvZGVjL1NrQ29kZWNQcml2LmgKLUBAIC0xNCw2ICsxNCw3IEBACi0gI2lu Y2x1ZGUgIlNrRW5jb2RlZE9yaWdpbi5oIgotICNpbmNsdWRlICJTa0ltYWdlSW5mby5oIgotICNp bmNsdWRlICJTa1R5cGVzLmgiCi0rI2luY2x1ZGUgIlNrRW5kaWFuLmgiCi0gCi0gI2lmZGVmIFNL X1BSSU5UX0NPREVDX01FU1NBR0VTCi0gICAgICNkZWZpbmUgU2tDb2RlY1ByaW50ZiBTa0RlYnVn ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lh L3NyYy9jb3JlL1NrQ29sb3IuY3BwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tDb2xvci5jcHAKLUBAIC0xMDgsMTMgKzEw OCwyOSBAQCBTa0NvbG9yIFNrSFNWVG9Db2xvcihVOENQVSBhLCBjb25zdCBTa1NjYWxhciBoc3Zb M10pIHsKLSB0ZW1wbGF0ZSA8PgotIFNrQ29sb3I0ZiBTa0NvbG9yNGY6OkZyb21Db2xvcihTa0Nv bG9yIGJncmEpIHsKLSAgICAgU2tDb2xvcjRmIHJnYmE7Ci0tICAgIHN3aXp6bGVfcmIoU2s0Zl9m cm9tTDMyKGJncmEpKS5zdG9yZShyZ2JhLnZlYygpKTsKLSsgICAgU2s0ZiBjNGYgPSBTazRmX2Zy b21MMzIoYmdyYSk7Ci0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIC8vIEFSR0IgLT4gUkdC QQotKyAgICBjNGYgPSBTa054X3NodWZmbGU8MSwgMiwgMywgMD4oYzRmKTsKLSsjZWxzZQotKyAg ICAvLyBCR1JBIC0+IFJHQkEKLSsgICAgYzRmID0gc3dpenpsZV9yYihjNGYpOwotKyNlbmRpZgot KyAgICBjNGYuc3RvcmUocmdiYS52ZWMoKSk7Ci0gICAgIHJldHVybiByZ2JhOwotIH0KLSAKLSB0 ZW1wbGF0ZSA8PgotIFNrQ29sb3IgU2tDb2xvcjRmOjp0b1NrQ29sb3IoKSBjb25zdCB7Ci0tICAg IHJldHVybiBTazRmX3RvTDMyKHN3aXp6bGVfcmIoU2s0Zjo6TG9hZCh0aGlzLT52ZWMoKSkpKTsK LSsgICAgU2s0ZiBjNGYgPSBTazRmOjpMb2FkKHRoaXMtPnZlYygpKTsKLSsjaWZkZWYgU0tfQ1BV X0JFTkRJQU4KLSsgICAgLy8gUkdCQSAtPiBBUkdCCi0rICAgIGM0ZiA9IFNrTnhfc2h1ZmZsZTwz LCAwLCAxLCAyPihjNGYpOwotKyNlbHNlCi0rICAgIC8vIFJHQkEgLT4gQkdSQQotKyAgICBjNGYg PSBzd2l6emxlX3JiKGM0Zik7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBTazRmX3RvTDMyKGM0Zik7 Ci0gfQotIAotIHRlbXBsYXRlIDw+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tQaXhtYXAuY3BwCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tQaXht YXAuY3BwCi1AQCAtMjQ2LDcgKzI0Niw4IEBAIFNrQ29sb3IgU2tQaXhtYXA6OmdldENvbG9yKGlu dCB4LCBpbnQgeSkgY29uc3QgewotICAgICBjb25zdCBib29sIG5lZWRzVW5wcmVtdWwgPSAoa1By ZW11bF9Ta0FscGhhVHlwZSA9PSBmSW5mby5hbHBoYVR5cGUoKSk7Ci0gICAgIGF1dG8gdG9Db2xv ciA9IFtuZWVkc1VucHJlbXVsXSh1aW50MzJfdCBtYXliZVByZW11bENvbG9yKSB7Ci0gICAgICAg ICByZXR1cm4gbmVlZHNVbnByZW11bCA/IFNrVW5QcmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3Io bWF5YmVQcmVtdWxDb2xvcikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU2tTd2l6 emxlX0JHUkFfdG9fUE1Db2xvcihtYXliZVByZW11bENvbG9yKTsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDogU2tDb2xvclNldEFSR0IoU2tHZXRQYWNrZWRBMzIobWF5YmVQcmVtdWxD b2xvciksIFNrR2V0UGFja2VkUjMyKG1heWJlUHJlbXVsQ29sb3IpLAotKwkJCQkJICAgICAgU2tH ZXRQYWNrZWRHMzIobWF5YmVQcmVtdWxDb2xvciksIFNrR2V0UGFja2VkQjMyKG1heWJlUHJlbXVs Q29sb3IpKTsKLSAgICAgfTsKLSAKLSAgICAgc3dpdGNoICh0aGlzLT5jb2xvclR5cGUoKSkgewot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3Ny Yy9vcHRzL1NrNHB4X25vbmUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrNHB4X25vbmUuaAotQEAgLTM1LDcgKzM1LDYg QEAgaW5saW5lIFNrNHB4IFNrNHB4OjpXaWRlOjpkaXYyNTUoKSBjb25zdCB7Ci0gfQotIAotIGlu bGluZSBTazRweCBTazRweDo6YWxwaGFzKCkgY29uc3QgewotLSAgICBzdGF0aWNfYXNzZXJ0KFNL X0EzMl9TSElGVCA9PSAyNCwgIlRoaXMgbWV0aG9kIGFzc3VtZXMgbGl0dGxlLWVuZGlhbi4iKTsK LSAgICAgcmV0dXJuIFNrMTZiKCgqdGhpcylbIDNdLCAoKnRoaXMpWyAzXSwgKCp0aGlzKVsgM10s ICgqdGhpcylbIDNdLAotICAgICAgICAgICAgICAgICAgKCp0aGlzKVsgN10sICgqdGhpcylbIDdd LCAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10sCi0gICAgICAgICAgICAgICAgICAoKnRoaXMpWzEx XSwgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFdLCAoKnRoaXMpWzExXSwKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta0JsaXRS b3dfb3B0cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvc3JjL29wdHMvU2tCbGl0Um93X29wdHMuaAotQEAgLTIzNyw4ICsyMzcsOCBAQCB2 b2lkIGJsaXRfcm93X3MzMmFfb3BhcXVlKFNrUE1Db2xvciogZHN0LCBjb25zdCBTa1BNQ29sb3Iq IHNyYywgaW50IGxlbiwgVThDUFUgYQotICAgICAgICAgLy8gd2l0aCBjaHJvbWl1bTo2MTEwMDIg d2UgbmVlZCB0byBrZWVwIGl0IHVudGlsIHdlIGZpZ3VyZSBvdXQgd2hlcmUKLSAgICAgICAgIC8v IHRoZSBub24tcHJlbXVsdGlwbGllZCBzcmMgdmFsdWVzIChsaWtlIDB4MDBGRkZGRkYpIGFyZSBj b21pbmcgZnJvbS4KLSAgICAgICAgIC8vIFRPRE8obXRrbGVpbik6IHNvcnQgdGhpcyBvdXQgYW5k IGFzc2VydCAqc3JjIGlzIHByZW11bCBoZXJlLgotLSAgICAgICAgaWYgKCpzcmMgJiAweEZGMDAw MDAwKSB7Ci0tICAgICAgICAgICAgKmRzdCA9ICgqc3JjID49IDB4RkYwMDAwMDApID8gKnNyYyA6 IFNrUE1TcmNPdmVyKCpzcmMsICpkc3QpOwotKyAgICAgICAgaWYgKCpzcmMgJiAoMHhGRiA8PCBT S19BMzJfU0hJRlQpKSB7Ci0rICAgICAgICAgICAgKmRzdCA9ICgoKnNyYyA8PCAoMjQgLSBTS19B MzJfU0hJRlQpKSA+PSAweEZGMDAwMDAwKSA/ICpzcmMgOiBTa1BNU3JjT3Zlcigqc3JjLCAqZHN0 KTsKLSAgICAgICAgIH0KLSAgICAgICAgIHNyYysrOwotICAgICAgICAgZHN0Kys7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMv U2tSYXN0ZXJQaXBlbGluZV9vcHRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta1Jhc3RlclBpcGVsaW5lX29wdHMuaAot QEAgLTk0OCwxMCArOTQ4LDE3IEBAIFNJIHZvaWQgZnJvbV80NDQ0KFUxNiBfNDQ0NCwgRiogciwg RiogZywgRiogYiwgRiogYSkgewotICAgICAqYSA9IGNhc3Qod2lkZSAmICgxNTw8IDApKSAqICgx LjBmIC8gKDE1PDwgMCkpOwotIH0KLSBTSSB2b2lkIGZyb21fODg4OChVMzIgXzg4ODgsIEYqIHIs IEYqIGcsIEYqIGIsIEYqIGEpIHsKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgKnIgPSBj YXN0KChfODg4OCA+PiAyNCkgICAgICAgKSAqICgxLzI1NS4wZik7Ci0rICAgICpnID0gY2FzdCgo Xzg4ODggPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAqYiA9IGNhc3QoKF84ODg4 ID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAgKmEgPSBjYXN0KChfODg4OCAgICAg ICkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rI2Vsc2UKLSAgICAgKnIgPSBjYXN0KChfODg4OCAg ICAgICkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICpnID0gY2FzdCgoXzg4ODggPj4gIDgp ICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAgICAqYiA9IGNhc3QoKF84ODg4ID4+IDE2KSAmIDB4 ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmEgPSBjYXN0KChfODg4OCA+PiAyNCkgICAgICAgKSAq ICgxLzI1NS4wZik7Ci0rI2VuZGlmCi0gfQotIFNJIHZvaWQgZnJvbV8xMDEwMTAyKFUzMiByZ2Jh LCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7Ci0gICAgICpyID0gY2FzdCgocmdiYSAgICAgICkg JiAweDNmZikgKiAoMS8xMDIzLjBmKTsKLUBAIC0xMjc4LDEwICsxMjg1LDE3IEBAIFNUQUdFKHNy Y292ZXJfcmdiYV84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5lX01lbW9yeUN0eCogY3R4KSB7 Ci0gICAgIGF1dG8gcHRyID0gcHRyX2F0X3h5PHVpbnQzMl90PihjdHgsIGR4LGR5KTsKLSAKLSAg ICAgVTMyIGRzdCA9IGxvYWQ8VTMyPihwdHIsIHRhaWwpOwotKyNpZmRlZiBTS19DUFVfQkVORElB TgotKyAgICBkciA9IGNhc3QoKGRzdCA+PiAyNCkgICAgICAgKTsKLSsgICAgZGcgPSBjYXN0KChk c3QgPj4gMTYpICYgMHhmZik7Ci0rICAgIGRiID0gY2FzdCgoZHN0ID4+ICA4KSAmIDB4ZmYpOwot KyAgICBkYSA9IGNhc3QoKGRzdCAgICAgICkgJiAweGZmKTsKLSsjZWxzZQotICAgICBkciA9IGNh c3QoKGRzdCAgICAgICkgJiAweGZmKTsKLSAgICAgZGcgPSBjYXN0KChkc3QgPj4gIDgpICYgMHhm Zik7Ci0gICAgIGRiID0gY2FzdCgoZHN0ID4+IDE2KSAmIDB4ZmYpOwotICAgICBkYSA9IGNhc3Qo KGRzdCA+PiAyNCkgICAgICAgKTsKLSsjZW5kaWYKLSAgICAgLy8ge2RyLGRnLGRiLGRhfSBhcmUg aW4gWzAsMjU1XQotICAgICAvLyB7IHIsIGcsIGIsIGF9IGFyZSBpbiBbMCwgIDFdIChidXQgbWF5 IGJlIG91dCBvZiBnYW11dCkKLSAKLUBAIC0xMjkyLDEwICsxMzA2LDE3IEBAIFNUQUdFKHNyY292 ZXJfcmdiYV84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5lX01lbW9yeUN0eCogY3R4KSB7Ci0g ICAgIC8vIHsgciwgZywgYiwgYX0gYXJlIG5vdyBpbiBbMCwyNTVdICAoYnV0IG1heSBiZSBvdXQg b2YgZ2FtdXQpCi0gCi0gICAgIC8vIHRvX3Vub3JtKCkgY2xhbXBzIGJhY2sgdG8gZ2FtdXQuICBT Y2FsaW5nIGJ5IDEgc2luY2Ugd2UncmUgYWxyZWFkeSAyNTUtYmlhc2VkLgotKyNpZmRlZiBTS19D UFVfQkVORElBTgotKyAgICBkc3QgPSB0b191bm9ybShyLCAxLCAyNTUpIDw8IDI0Ci0rICAgICAg ICB8IHRvX3Vub3JtKGcsIDEsIDI1NSkgPDwgMTYKLSsgICAgICAgIHwgdG9fdW5vcm0oYiwgMSwg MjU1KSA8PCAgOAotKyAgICAgICAgfCB0b191bm9ybShhLCAxLCAyNTUpOwotKyNlbHNlCi0gICAg IGRzdCA9IHRvX3Vub3JtKHIsIDEsIDI1NSkKLSAgICAgICAgIHwgdG9fdW5vcm0oZywgMSwgMjU1 KSA8PCAgOAotICAgICAgICAgfCB0b191bm9ybShiLCAxLCAyNTUpIDw8IDE2Ci0gICAgICAgICB8 IHRvX3Vub3JtKGEsIDEsIDI1NSkgPDwgMjQ7Ci0rI2VuZGlmCi0gICAgIHN0b3JlKHB0ciwgZHN0 LCB0YWlsKTsKLSB9Ci0gCi1AQCAtMTY5NCwxMCArMTcxNSwxNyBAQCBTVEFHRShnYXRoZXJfODg4 OCwgY29uc3QgU2tSYXN0ZXJQaXBlbGluZV9HYXRoZXJDdHgqIGN0eCkgewotIFNUQUdFKHN0b3Jl Xzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfTWVtb3J5Q3R4KiBjdHgpIHsKLSAgICAgYXV0 byBwdHIgPSBwdHJfYXRfeHk8dWludDMyX3Q+KGN0eCwgZHgsZHkpOwotIAotKyNpZmRlZiBTS19D UFVfQkVORElBTgotKyAgICBVMzIgcHggPSB0b191bm9ybShyLCAyNTUpIDw8IDI0Ci0rICAgICAg ICAgICB8IHRvX3Vub3JtKGcsIDI1NSkgPDwgMTYKLSsgICAgICAgICAgIHwgdG9fdW5vcm0oYiwg MjU1KSA8PCAgOAotKyAgICAgICAgICAgfCB0b191bm9ybShhLCAyNTUpOwotKyNlbHNlCi0gICAg IFUzMiBweCA9IHRvX3Vub3JtKHIsIDI1NSkKLSAgICAgICAgICAgIHwgdG9fdW5vcm0oZywgMjU1 KSA8PCAgOAotICAgICAgICAgICAgfCB0b191bm9ybShiLCAyNTUpIDw8IDE2Ci0gICAgICAgICAg ICB8IHRvX3Vub3JtKGEsIDI1NSkgPDwgMjQ7Ci0rI2VuZGlmCi0gICAgIHN0b3JlKHB0ciwgcHgs IHRhaWwpOwotIH0KLSAKLUBAIC0yODUyLDEwICsyODgwLDE3IEBAIFNJIHZvaWQgZnJvbV84ODg4 KFUzMiByZ2JhLCBVMTYqIHIsIFUxNiogZywgVTE2KiBiLCBVMTYqIGEpIHsKLSAgICAgICAgIHJl dHVybiBjYXN0PFUxNj4odik7Ci0gICAgIH07Ci0gI2VuZGlmCi0rI2lmZGVmIFNLX0NQVV9CRU5E SUFOCi0rICAgICpyID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSA+PiAgODsKLSsgICAgKmcgPSBj YXN0X1UxNihyZ2JhID4+ICAgMTYpICYgMjU1OwotKyAgICAqYiA9IGNhc3RfVTE2KHJnYmEgJiA2 NTUzNSkgPj4gIDg7Ci0rICAgICphID0gY2FzdF9VMTYocmdiYSAmIDY1NTM1KSAmIDI1NTsKLSsj ZWxzZQotICAgICAqciA9IGNhc3RfVTE2KHJnYmEgJiA2NTUzNSkgJiAyNTU7Ci0gICAgICpnID0g Y2FzdF9VMTYocmdiYSAmIDY1NTM1KSA+PiAgODsKLSAgICAgKmIgPSBjYXN0X1UxNihyZ2JhID4+ ICAgMTYpICYgMjU1OwotICAgICAqYSA9IGNhc3RfVTE2KHJnYmEgPj4gICAxNikgPj4gIDg7Ci0r I2VuZGlmCi0gfQotIAotIFNJIHZvaWQgbG9hZF84ODg4Xyhjb25zdCB1aW50MzJfdCogcHRyLCBz aXplX3QgdGFpbCwgVTE2KiByLCBVMTYqIGcsIFUxNiogYiwgVTE2KiBhKSB7Ci1AQCAtMjg5Nywx MCArMjkzMiwxNSBAQCBTSSB2b2lkIHN0b3JlXzg4ODhfKHVpbnQzMl90KiBwdHIsIHNpemVfdCB0 YWlsLCBVMTYgciwgVTE2IGcsIFUxNiBiLCBVMTYgYSkgewotICAgICAgICAgY2FzZSAyOiB2c3Q0 X2xhbmVfdTgoKHVpbnQ4X3QqKShwdHIrMSksIHJnYmEsIDEpOwotICAgICAgICAgY2FzZSAxOiB2 c3Q0X2xhbmVfdTgoKHVpbnQ4X3QqKShwdHIrMCksIHJnYmEsIDApOwotICAgICB9Ci0rI2Vsc2UK LSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgc3RvcmUocHRyLCB0YWlsLCBjYXN0PFUzMj4o KHI8PDgpIHwgZykgPDwgMTYKLSsgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4oKGI8PDgp IHwgYSkgPDwgMCk7Ci0gI2Vsc2UKLSAgICAgc3RvcmUocHRyLCB0YWlsLCBjYXN0PFUzMj4ociB8 IChnPDw4KSkgPDwgIDAKLSAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4oYiB8IChhPDw4 KSkgPDwgMTYpOwotICNlbmRpZgotKyNlbmRpZgotIH0KLSAKLSBTVEFHRV9QUChsb2FkXzg4ODgs IGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfTWVtb3J5Q3R4KiBjdHgpIHsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09O LmNwcAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9z a2lhL3NyYy91dGlscy9Ta0pTT04uY3BwCi1AQCAtMzQsNiArMzQsMTAgQEAgdm9pZCBWYWx1ZTo6 aW5pdF90YWdnZWQoVGFnIHQpIHsKLSAKLSAvLyBQb2ludGVyIHZhbHVlcyBzdG9yZSBhIHR5cGUg KGluIHRoZSB1cHBlciBrVGFnQml0cyBiaXRzKSBhbmQgYSBwb2ludGVyLgotIHZvaWQgVmFsdWU6 OmluaXRfdGFnZ2VkX3BvaW50ZXIoVGFnIHQsIHZvaWQqIHApIHsKLSsjaWYgIWRlZmluZWQoU0tf Q1BVX0xFTkRJQU4pCi0rICAgIC8vIENoZWNrIHRoYXQga1JlY0FsaWduIGlzIGxhcmdlIGVub3Vn aCB0byBsZWF2ZSByb29tIGZvciB0aGUgdGFnCi0rICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZh bHVlKSA+IHNpemVvZih1aW50cHRyX3QpIHx8ICEoa1JlY0FsaWduICYgVmFsdWU6OmtUYWdNYXNr KSwgImtSZWNBbGlnbiBpcyBub3QgYSBtdWx0aXBsZSBvZiBrVGFnTWFzaysxIik7Ci0rI2VuZGlm Ci0gICAgICp0aGlzLT5jYXN0PHVpbnRwdHJfdD4oKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0 cl90PihwKTsKLSAKLSAgICAgaWYgKHNpemVvZihWYWx1ZSkgPT0gc2l6ZW9mKHVpbnRwdHJfdCkp IHsKLUBAIC0xNjksNyArMTczLDcgQEAgcHJpdmF0ZToKLSAjaWYgZGVmaW5lZChTS19DUFVfTEVO RElBTikKLSAgICAgICAgICpzNjQgJj0gMHgwMGZmZmZmZmZmZmZmZmZmVUxMID4+ICgoa01heElu bGluZVN0cmluZ1NpemUgLSBzaXplKSAqIDgpOwotICNlbHNlCi0tICAgICAgICBzdGF0aWNfYXNz ZXJ0KGZhbHNlLCAiQmlnLWVuZGlhbiBidWlsZHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0 aW1lLiIpOwotKyAgICAgICAgKnM2NCAmPSAweGZmZmZmZmZmZmZmZmZmMDBVTEwgPDwgKChrTWF4 SW5saW5lU3RyaW5nU2l6ZSAtIHNpemUpICogOCk7Ci0gI2VuZGlmCi0gICAgIH0KLSB9OwotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy91 dGlscy9Ta0pTT04uaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9za2lhL3NyYy91dGlscy9Ta0pTT04uaAotQEAgLTEyMCw2ICsxMjAsNyBAQCBwcm90 ZWN0ZWQ6Ci0gICAgICAgICAgLS0gaGlnaGVzdCAzIGJpdHMgcmVzZXJ2ZWQgZm9yIHR5cGUgc3Rv cmFnZQotIAotICAgICAgKi8KLSsjaWYgZGVmaW5lZChTS19DUFVfTEVORElBTikKLSAgICAgZW51 bSBjbGFzcyBUYWcgOiB1aW50OF90IHsKLSAgICAgICAgIC8vIFdlIHBpY2tlZCBrU2hvcnRTdHJp bmcgPT0gMCBzbyB0aGF0IHRhZyAweDAwIGFuZCBzdG9yZWQgbWF4X3NpemUtc2l6ZSAoNy03PTAp Ci0gICAgICAgICAvLyBjb252ZW5pZW50bHkgb3ZlcmxhcCB0aGUgJ1wwJyB0ZXJtaW5hdG9yLCBh bGxvd2luZyB1cyB0byBzdG9yZSBhIDcgY2hhcmFjdGVyCi1AQCAtMTM0LDYgKzEzNSwyMiBAQCBw cm90ZWN0ZWQ6Ci0gICAgICAgICBrT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICA9IDBiMTEx MDAwMDAsICAvLyBwdHIgdG8gZXh0ZXJuYWwgc3RvcmFnZQotICAgICB9OwotICAgICBzdGF0aWMg Y29uc3RleHByIHVpbnQ4X3Qga1RhZ01hc2sgPSAwYjExMTAwMDAwOwotKyNlbHNlCi0rICAgIGVu dW0gY2xhc3MgVGFnIDogdWludDhfdCB7Ci0rICAgICAgICAvLyBXZSBwaWNrZWQga1Nob3J0U3Ry aW5nID09IDAgc28gdGhhdCB0YWcgMHgwMCBhbmQgc3RvcmVkIG1heF9zaXplLXNpemUgKDctNz0w KQotKyAgICAgICAgLy8gY29udmVuaWVudGx5IG92ZXJsYXAgdGhlICdcMCcgdGVybWluYXRvciwg YWxsb3dpbmcgdXMgdG8gc3RvcmUgYSA3IGNoYXJhY3RlcgotKyAgICAgICAgLy8gQyBzdHJpbmcg aW5saW5lLgotKyAgICAgICAga1Nob3J0U3RyaW5nICAgICAgICAgICAgICAgICAgPSAwYjAwMDAw MDAwLCAgLy8gaW5saW5lIHBheWxvYWQKLSsgICAgICAgIGtOdWxsICAgICAgICAgICAgICAgICAg ICAgICAgID0gMGIwMDAwMDAwMSwgIC8vIG5vIHBheWxvYWQKLSsgICAgICAgIGtCb29sICAgICAg ICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAxMCwgIC8vIGlubGluZSBwYXlsb2FkCi0rICAg ICAgICBrSW50ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMTEsICAvLyBpbmxp bmUgcGF5bG9hZAotKyAgICAgICAga0Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAw MDAwMTAwLCAgLy8gaW5saW5lIHBheWxvYWQKLSsgICAgICAgIGtTdHJpbmcgICAgICAgICAgICAg ICAgICAgICAgID0gMGIwMDAwMDEwMSwgIC8vIHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCi0rICAg ICAgICBrQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAxMTAsICAvLyBwdHIg dG8gZXh0ZXJuYWwgc3RvcmFnZQotKyAgICAgICAga09iamVjdCAgICAgICAgICAgICAgICAgICAg ICAgPSAwYjAwMDAwMTExLCAgLy8gcHRyIHRvIGV4dGVybmFsIHN0b3JhZ2UKLSsgICAgfTsKLSsg ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtUYWdNYXNrID0gMGIwMDAwMDExMTsKLSsjZW5k aWYKLSAKLSAgICAgdm9pZCBpbml0X3RhZ2dlZChUYWcpOwotICAgICB2b2lkIGluaXRfdGFnZ2Vk X3BvaW50ZXIoVGFnLCB2b2lkKik7Ci1AQCAtMTkyLDE0ICsyMDksMTQgQEAgcHJpdmF0ZToKLSAK LSAgICAgdWludDhfdCBmRGF0YThba1ZhbHVlU2l6ZV07Ci0gCi0tI2lmIGRlZmluZWQoU0tfQ1BV X0xFTkRJQU4pCi0gICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtUYWdPZmZzZXQgPSBrVmFs dWVTaXplIC0gMTsKLSAKLSsjaWYgZGVmaW5lZChTS19DUFVfTEVORElBTikKLSAgICAgc3RhdGlj IGNvbnN0ZXhwciB1aW50cHRyX3Qga1RhZ1BvaW50ZXJNYXNrID0KLSAgICAgICAgICAgICB+KHN0 YXRpY19jYXN0PHVpbnRwdHJfdD4oa1RhZ01hc2spIDw8ICgoc2l6ZW9mKHVpbnRwdHJfdCkgLSAx KSAqIDgpKTsKLSAjZWxzZQotLSAgICAvLyBUaGUgY3VycmVudCB2YWx1ZSBsYXlvdXQgYXNzdW1l cyBMRSBhbmQgd2lsbCB0YWtlIHNvbWUgdHdlYWtpbmcgZm9yIEJFLgotLSAgICBzdGF0aWNfYXNz ZXJ0KGZhbHNlLCAiQmlnLWVuZGlhbiBidWlsZHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0 aW1lLiIpOwotKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBrVGFnUG9pbnRlck1hc2sg PQotKyAgICAgICAgICAgIH5zdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtUYWdNYXNrKTsKLSAjZW5k aWYKLSB9OwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tj bXMuY2MKLUBAIC02NiwxMCArNjYsMTUgQEAgc3RhdGljIGZsb2F0IGV2YWxfY3VydmUoY29uc3Qg c2tjbXNfQ3VydmUqIGN1cnZlLCBmbG9hdCB4KSB7Ci0gICAgICAgICB1aW50MTZfdCBiZV9sLCBi ZV9oOwotICAgICAgICAgbWVtY3B5KCZiZV9sLCBjdXJ2ZS0+dGFibGVfMTYgKyAyKmxvLCAyKTsK LSAgICAgICAgIG1lbWNweSgmYmVfaCwgY3VydmUtPnRhYmxlXzE2ICsgMipoaSwgMik7Ci0rI2lm IF9fQklHX0VORElBTl9fCi0rICAgICAgICBsID0gYmVfbCAqICgxLzY1NTM1LjBmKTsKLSsgICAg ICAgIGggPSBiZV9oICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICB1aW50MTZfdCBs ZV9sID0gKChiZV9sIDw8IDgpIHwgKGJlX2wgPj4gOCkpICYgMHhmZmZmOwotICAgICAgICAgdWlu dDE2X3QgbGVfaCA9ICgoYmVfaCA8PCA4KSB8IChiZV9oID4+IDgpKSAmIDB4ZmZmZjsKLSAgICAg ICAgIGwgPSBsZV9sICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgaCA9IGxlX2ggKiAoMS82NTUz NS4wZik7Ci0rI2VuZGlmCi0gICAgIH0KLSAgICAgcmV0dXJuIGwgKyAoaC1sKSp0OwotIH0KLUBA IC0xMjQsMjEgKzEyOSwyOSBAQCBlbnVtIHsKLSBzdGF0aWMgdWludDE2X3QgcmVhZF9iaWdfdTE2 KGNvbnN0IHVpbnQ4X3QqIHB0cikgewotICAgICB1aW50MTZfdCBiZTsKLSAgICAgbWVtY3B5KCZi ZSwgcHRyLCBzaXplb2YoYmUpKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgcmV0dXJuIGJl OwotKyNlbHNlCi0gI2lmIGRlZmluZWQoX01TQ19WRVIpCi0gICAgIHJldHVybiBfYnl0ZXN3YXBf dXNob3J0KGJlKTsKLSAjZWxzZQotICAgICByZXR1cm4gX19idWlsdGluX2Jzd2FwMTYoYmUpOwot ICNlbmRpZgotKyNlbmRpZgotIH0KLSAKLSBzdGF0aWMgdWludDMyX3QgcmVhZF9iaWdfdTMyKGNv bnN0IHVpbnQ4X3QqIHB0cikgewotICAgICB1aW50MzJfdCBiZTsKLSAgICAgbWVtY3B5KCZiZSwg cHRyLCBzaXplb2YoYmUpKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgcmV0dXJuIGJlOwot KyNlbHNlCi0gI2lmIGRlZmluZWQoX01TQ19WRVIpCi0gICAgIHJldHVybiBfYnl0ZXN3YXBfdWxv bmcoYmUpOwotICNlbHNlCi0gICAgIHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMihiZSk7Ci0gI2Vu ZGlmCi0rI2VuZGlmCi0gfQotIAotIHN0YXRpYyBpbnQzMl90IHJlYWRfYmlnX2kzMihjb25zdCB1 aW50OF90KiBwdHIpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9zcmMvVHJhbnNmb3JtX2lubC5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRf cGFydHkvc2tjbXMvc3JjL1RyYW5zZm9ybV9pbmwuaAotQEAgLTM5Miw5ICszOTIsMTEgQEAgU0kg VTMyIGdhdGhlcl8zMihjb25zdCB1aW50OF90KiBwLCBJMzIgaXgpIHsKLSB9Ci0gCi0gU0kgVTMy IGdhdGhlcl8yNChjb25zdCB1aW50OF90KiBwLCBJMzIgaXgpIHsKLSsjaWYgIV9fQklHX0VORElB Tl9fCi0gICAgIC8vIEZpcnN0LCBiYWNrIHVwIGEgYnl0ZS4gIEFueSBwbGFjZSB3ZSdyZSBnYXRo ZXJpbmcgZnJvbSBoYXMgYSBzYWZlIGp1bmsgYnl0ZSB0byByZWFkCi0gICAgIC8vIGluIGZyb250 IG9mIGl0LCBlaXRoZXIgYSBwcmV2aW91cyB0YWJsZSB2YWx1ZSwgb3Igc29tZSB0YWcgbWV0YWRh dGEuCi0gICAgIHAgLT0gMTsKLSsjZW5kaWYKLSAKLSAgICAgLy8gTG9hZCB0aGUgaSd0aCAyNC1i aXQgdmFsdWUgZnJvbSBwLCBhbmQgMSBleHRyYSBieXRlLgotICAgICBhdXRvIGxvYWRfMjRfMzIg PSBbcF0oaW50IGkpIHsKLUBAIC00MzUsOCArNDM3LDEwIEBAIFNJIFUzMiBnYXRoZXJfMjQoY29u c3QgdWludDhfdCogcCwgSTMyIGl4KSB7Ci0gCi0gI2lmICFkZWZpbmVkKF9fYXJtX18pCi0gICAg IFNJIHZvaWQgZ2F0aGVyXzQ4KGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCwgVTY0KiB2KSB7Ci0r I2lmICFfX0JJR19FTkRJQU5fXwotICAgICAgICAgLy8gQXMgaW4gZ2F0aGVyXzI0KCksIHdpdGgg ZXZlcnl0aGluZyBkb3VibGVkLgotICAgICAgICAgcCAtPSAyOwotKyNlbmRpZgotIAotICAgICAg ICAgLy8gTG9hZCB0aGUgaSd0aCA0OC1iaXQgdmFsdWUgZnJvbSBwLCBhbmQgMiBleHRyYSBieXRl cy4KLSAgICAgICAgIGF1dG8gbG9hZF80OF82NCA9IFtwXShpbnQgaSkgewotQEAgLTQ5OSw3ICs1 MDMsOSBAQCBTSSBGIEZfZnJvbV9VOChVOCB2KSB7Ci0gU0kgRiBGX2Zyb21fVTE2X0JFKFUxNiB2 KSB7Ci0gICAgIC8vIEFsbCAxNi1iaXQgSUNDIHZhbHVlcyBhcmUgYmlnLWVuZGlhbiwgc28gd2Ug Ynl0ZSBzd2FwIGJlZm9yZSBjb252ZXJ0aW5nIHRvIGZsb2F0LgotICAgICAvLyBNU1ZDIGNhdGNo ZXMgdGhlICJsb3NzIiBvZiBkYXRhIGhlcmUgaW4gdGhlIHBvcnRhYmxlIHBhdGgsIHNvIHdlIGFs c28gbWFrZSBzdXJlIHRvIG1hc2suCi0rI2lmICFfX0JJR19FTkRJQU5fXwotICAgICB2ID0gVTE2 KCAwIHwgKCh2ICYgMHgwMGZmKSA8PCA4KSB8ICgodiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSsjZW5k aWYKLSAgICAgcmV0dXJuIGNhc3Q8Rj4odikgKiAoMS82NTUzNS4wZik7Ci0gfQotIAotQEAgLTUz NCw5ICs1NDAsMTUgQEAgU0kgRiB0YWJsZShjb25zdCBza2Ntc19DdXJ2ZSogY3VydmUsIEYgdikg ewotIFNJIHZvaWQgc2FtcGxlX2NsdXRfOChjb25zdCBza2Ntc19BMkIqIGEyYiwgSTMyIGl4LCBG KiByLCBGKiBnLCBGKiBiKSB7Ci0gICAgIFUzMiByZ2IgPSBnYXRoZXJfMjQoYTJiLT5ncmlkXzgs IGl4KTsKLSAKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgKnIgPSBjYXN0PEY+KChyZ2IgPj4g MTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAgOCkg JiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICpiID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4 ZmYpICogKDEvMjU1LjBmKTsKLSsjZWxzZQotICAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkg JiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICpnID0gY2FzdDxGPigocmdiID4+ICA4KSAmIDB4 ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmIgPSBjYXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZikg KiAoMS8yNTUuMGYpOwotKyNlbmRpZgotIH0KLSAKLSBTSSB2b2lkIHNhbXBsZV9jbHV0XzE2KGNv bnN0IHNrY21zX0EyQiogYTJiLCBJMzIgaXgsIEYqIHIsIEYqIGcsIEYqIGIpIHsKLUBAIC01NDks MTIgKzU2MSwxOCBAQCBTSSB2b2lkIHNhbXBsZV9jbHV0XzE2KGNvbnN0IHNrY21zX0EyQiogYTJi LCBJMzIgaXgsIEYqIHIsIEYqIGcsIEYqIGIpIHsKLSAgICAgLy8gVGhpcyBzdHJhdGVneSBpcyBt dWNoIGZhc3RlciBmb3IgNjQtYml0IGJ1aWxkcywgYW5kIGZpbmUgZm9yIDMyLWJpdCB4ODYgdG9v LgotICAgICBVNjQgcmdiOwotICAgICBnYXRoZXJfNDgoYTJiLT5ncmlkXzE2LCBpeCwgJnJnYik7 Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICpyID0gY2FzdDxGPigocmdiID4+IDMyKSAmIDB4 ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICpnID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4 ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICpiID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4 ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgcmdiID0gc3dhcF9lbmRpYW5fMTZ4 NChyZ2IpOwotIAotICAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmZmYpICogKDEv NjU1MzUuMGYpOwotICAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmZmYpICogKDEv NjU1MzUuMGYpOwotICAgICAqYiA9IGNhc3Q8Rj4oKHJnYiA+PiAzMikgJiAweGZmZmYpICogKDEv NjU1MzUuMGYpOwotICNlbmRpZgotKyNlbmRpZgotIH0KLSAKLSAvLyBHQ0MgNy4yLjAgaGl0cyBh biBpbnRlcm5hbCBjb21waWxlciBlcnJvciB3aXRoIC1maW5saW5lLWZ1bmN0aW9ucyAob3IgLU8z KQotQEAgLTY5NSwxMCArNzEzLDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBv cHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgIGNhc2UgT3BfbG9hZF84ODg4OnsK LSAgICAgICAgICAgICAgICAgVTMyIHJnYmEgPSBsb2FkPFUzMj4oc3JjICsgNCppKTsKLSAKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHJnYmEgPj4g MjQpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigo cmdiYSA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBj YXN0PEY+KChyZ2JhID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAgICAgICAgICAg ICAgYSA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyNlbHNl Ci0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChyZ2JhID4+ICAwKSAmIDB4ZmYpICogKDEv MjU1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDgpICYgMHhm ZikgKiAoMS8yNTUuMGYpOwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocmdiYSA+PiAx NikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChy Z2JhID4+IDI0KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICB9 IGJyZWFrOwotIAotICAgICAgICAgICAgIGNhc2UgT3BfbG9hZF84ODg4X3BhbGV0dGU4OnsKLUBA IC03MjcsMTMgKzc1MiwyOSBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBj b25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYiA9 IChjb25zdCB1aW50MTZfdCopcHRyOyAvLyBjYXN0IHRvIGNvbnN0IHVpbnQxNl90KiB0byBiZSBz YWZlLgotICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAg ICAgIHVpbnQxNng0eDNfdCB2ID0gdmxkM191MTYocmdiKTsKLSsjaWYgX19CSUdfRU5ESUFOX18K LSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsw XSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2Vu ZGlhbl8xNigoVTE2KXYudmFsWzFdKSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAg IGIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBm KTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICByID0gY2FzdDxGPigoVTE2KXYudmFsWzBdKSAq ICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsx XSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChVMTYpdi52 YWxbMl0pICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbHNlCi0rI2lm IF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIFUzMiBSID0gbG9hZF8zPFUzMj4ocmdi KzApLAotKyAgICAgICAgICAgICAgICAgICAgRyA9IGxvYWRfMzxVMzI+KHJnYisxKSwKLSsgICAg ICAgICAgICAgICAgICAgIEIgPSBsb2FkXzM8VTMyPihyZ2IrMik7Ci0rICAgICAgICAgICAgICAg IC8vIFIsRyxCIGFyZSBsaXR0bGUtZW5kaWFuIDE2LWJpdCwgc28gYnl0ZSBzd2FwIHRoZW0gYmVm b3JlIGNvbnZlcnRpbmcgdG8gZmxvYXQuCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChS ICYgMHgwMGZmKTw8OCB8IChSICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAg ICAgICAgICAgIGcgPSBjYXN0PEY+KChHICYgMHgwMGZmKTw8OCB8IChHICYgMHhmZjAwKT4+OCkg KiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChCICYgMHgwMGZm KTw8OCB8IChCICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAg ICAgICAgICAgciA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzApKSAqICgxLzY1NTM1LjBmKTsK LSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzEpKSAqICgxLzY1 NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzIp KSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAg ICAgICB9IGJyZWFrOwotIAotQEAgLTc0MywxNyArNzg0LDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNf b3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICBj b25zdCB1aW50MTZfdCogcmdiYSA9IChjb25zdCB1aW50MTZfdCopcHRyOyAvLyBjYXN0IHRvIGNv bnN0IHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5H X05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0eDRfdCB2ID0gdmxkNF91MTYocmdiYSk7 Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3YXBf ZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAg ICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1MzUu MGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYu dmFsWzJdKSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KHN3 YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbM10pKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAg ICAgICAgICAgICAgICByID0gY2FzdDxGPigoVTE2KXYudmFsWzBdKSAqICgxLzY1NTM1LjBmKTsK LSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsxXSkgKiAoMS82NTUzNS4w Zik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChVMTYpdi52YWxbMl0pICogKDEvNjU1 MzUuMGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigoVTE2KXYudmFsWzNdKSAqICgx LzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJ QU5fXwotKyAgICAgICAgICAgICAgICBVNjQgcHggPSBzd2FwX2VuZGlhbl8xNng0KGxvYWQ8VTY0 PihyZ2JhKSk7Ci0rCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAw eGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigocHgg Pj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNh c3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAg ICAgIGEgPSBjYXN0PEY+KChweCA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyNl bHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGxvYWQ8VTY0PihyZ2JhKTsKLSAKLSAgICAg ICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4w Zik7Ci0gICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAxNikgJiAweGZmZmYpICog KDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMzIpICYg MHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4 ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAg I2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLUBAIC03NjMsMTAgKzgyMCwyMSBAQCBz dGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAg ICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYiA9IChjb25zdCB1aW50MTZfdCopcHRy OyAvLyBjYXN0IHRvIGNvbnN0IHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAgICAgICAgICNp ZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0eDNfdCB2ID0g dmxkM191MTYocmdiKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgciA9 IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAg IGcgPSBjYXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAg ICAgICBiID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQot ICAgICAgICAgICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBd KSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5k aWFuXzE2KChVMTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAg YiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYp OwotKyNlbmRpZgotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAg ICAgICAgICAgICAgIHIgPSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJnYiswKSkgKiAoMS82NTUzNS4w Zik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJnYisxKSkgKiAo MS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJn YisyKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgVTMyIFIgPSBs b2FkXzM8VTMyPihyZ2IrMCksCi0gICAgICAgICAgICAgICAgICAgICBHID0gbG9hZF8zPFUzMj4o cmdiKzEpLAotICAgICAgICAgICAgICAgICAgICAgQiA9IGxvYWRfMzxVMzI+KHJnYisyKTsKLUBA IC03NzQsNiArODQyLDcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29u c3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChSICYgMHgwMGZm KTw8OCB8IChSICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAg IGcgPSBjYXN0PEY+KChHICYgMHgwMGZmKTw8OCB8IChHICYgMHhmZjAwKT4+OCkgKiAoMS82NTUz NS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChCICYgMHgwMGZmKTw8OCB8IChC ICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2Vu ZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLUBAIC03ODMsMTcgKzg1MiwzMyBAQCBzdGF0 aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAg ICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYmEgPSAoY29uc3QgdWludDE2X3QqKXB0cjsg Ly8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYg ZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHg0X3QgdiA9IHZs ZDRfdTE2KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0g Y2FzdDxGPigoVTE2KXYudmFsWzBdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAg ZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsxXSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAg ICAgIGIgPSBjYXN0PEY+KChVMTYpdi52YWxbMl0pICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAg ICAgICAgICBhID0gY2FzdDxGPigoVTE2KXYudmFsWzNdKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxz ZQotICAgICAgICAgICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFs WzBdKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBf ZW5kaWFuXzE2KChVMTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAg ICAgYiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUu MGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYu dmFsWzNdKSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2Vsc2UKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTY0IHB4ID0gbG9hZDxVNjQ+KHJn YmEpOwotKwotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZm KSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDMy KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+ KChweCA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBh ID0gY2FzdDxGPigocHggPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQot ICAgICAgICAgICAgICAgICBVNjQgcHggPSBzd2FwX2VuZGlhbl8xNng0KGxvYWQ8VTY0PihyZ2Jh KSk7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChweCA+PiAgMCkgJiAweGZmZmYp ICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigocHggPj4gMTYp ICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4o KHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGEg PSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgot ICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gYnJlYWs7Ci0gCi1AQCAtODI4LDEw ICs5MTMsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9p ZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBBID0gKFUxNil2LnZhbFszXTsKLSAgICAg ICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICBVNjQgcHggPSBsb2FkPFU2ND4ocmdiYSk7 Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIFUxNiBSID0gY2FzdDxVMTY+ KChweCA+PiA0OCkgJiAweGZmZmYpLAotKyAgICAgICAgICAgICAgICAgICAgRyA9IGNhc3Q8VTE2 PigocHggPj4gMzIpICYgMHhmZmZmKSwKLSsgICAgICAgICAgICAgICAgICAgIEIgPSBjYXN0PFUx Nj4oKHB4ID4+IDE2KSAmIDB4ZmZmZiksCi0rICAgICAgICAgICAgICAgICAgICBBID0gY2FzdDxV MTY+KChweCA+PiAgMCkgJiAweGZmZmYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFUxNiBS ID0gY2FzdDxVMTY+KChweCA+PiAgMCkgJiAweGZmZmYpLAotICAgICAgICAgICAgICAgICAgICAg RyA9IGNhc3Q8VTE2PigocHggPj4gMTYpICYgMHhmZmZmKSwKLSAgICAgICAgICAgICAgICAgICAg IEIgPSBjYXN0PFUxNj4oKHB4ID4+IDMyKSAmIDB4ZmZmZiksCi0gICAgICAgICAgICAgICAgICAg ICBBID0gY2FzdDxVMTY+KChweCA+PiA0OCkgJiAweGZmZmYpOwotKyNlbmRpZgotICAgICAgICAg ICAgICNlbmRpZgotICAgICAgICAgICAgICAgICByID0gRl9mcm9tX0hhbGYoUik7Ci0gICAgICAg ICAgICAgICAgIGcgPSBGX2Zyb21fSGFsZihHKTsKLUBAIC0xMDI0LDEwICsxMTE2LDE3IEBAIHN0 YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAg ICAgICAgICAgIH0gcmV0dXJuOwotIAotICAgICAgICAgICAgIGNhc2UgT3Bfc3RvcmVfODg4ODog ewotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBzdG9yZShkc3QgKyA0Kmks IGNhc3Q8VTMyPih0b19maXhlZChyICogMjU1KSA8PCAyNCkKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoZyAqIDI1NSkgPDwgMTYpCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGIgKiAyNTUpIDw8 ICA4KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhl ZChhICogMjU1KSA8PCAgMCkpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHN0b3JlKGRzdCAr IDQqaSwgY2FzdDxVMzI+KHRvX2ZpeGVkKHIgKiAyNTUpIDw8ICAwKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChnICogMjU1KSA8PCAgOCkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYiAqIDI1 NSkgPDwgMTYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRv X2ZpeGVkKGEgKiAyNTUpIDw8IDI0KSk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgfSByZXR1cm47 Ci0gCi0gICAgICAgICAgICAgY2FzZSBPcF9zdG9yZV8xMDEwMTAyOiB7Ci1AQCAtMTA0MywxNSAr MTE0MiwzMCBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lk KiogYXJncywKLSAgICAgICAgICAgICAgICAgdWludDE2X3QqIHJnYiA9ICh1aW50MTZfdCopcHRy OyAgICAgICAgICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAg ICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQx Nng0eDNfdCB2ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgICAg ICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUp KSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0 PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSsj ZWxzZQotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVk KHIgKiA2NTUzNSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+ KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qp Y2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpLAotKyNlbmRpZgotICAgICAgICAgICAgICAg ICB9fTsKLSAgICAgICAgICAgICAgICAgdnN0M191MTYocmdiLCB2KTsKLSAgICAgICAgICAgICAj ZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBJMzIgUiA9IHRvX2Zp eGVkKHIgKiA2NTUzNSksCi0rICAgICAgICAgICAgICAgICAgICBHID0gdG9fZml4ZWQoZyAqIDY1 NTM1KSwKLSsgICAgICAgICAgICAgICAgICAgIEIgPSB0b19maXhlZChiICogNjU1MzUpOwotKyAg ICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4oKFIgJiAweDAwZmYpIDw8IDgg fCAoUiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwg Y2FzdDxVMTY+KChHICYgMHgwMGZmKSA8PCA4IHwgKEcgJiAweGZmMDApID4+IDgpICk7Ci0rICAg ICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNhc3Q8VTE2PigoQiAmIDB4MDBmZikgPDwgOCB8 IChCICYgMHhmZjAwKSA+PiA4KSApOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHN0b3JlXzMo cmdiKzAsIGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSk7Ci0gICAgICAgICAgICAgICAg IHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSk7Ci0gICAgICAg ICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSk7 Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gCi0gICAgICAgICAgICAgfSByZXR1cm47 Ci1AQCAtMTA2MiwxOCArMTE3NiwzMyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCog b3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgdWludDE2X3QqIHJnYmEg PSAodWludDE2X3QqKXB0cjsgICAgICAgIC8vIGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3QqIHRv IGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAg ICAgICAgICAgdWludDE2eDR4NF90IHYgPSB7ewotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAg ICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2Zp eGVkKHIgKiA2NTUzNSkpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBf ZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSksCi0rICAgICAgICAgICAg ICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAq IDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5f MTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpKSwKLSsjZWxzZQotICAgICAgICAgICAg ICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpLAotICAg ICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUz NSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVk KGIgKiA2NTUzNSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+ KHRvX2ZpeGVkKGEgKiA2NTUzNSkpLAotKyNlbmRpZgotICAgICAgICAgICAgICAgICB9fTsKLSAg ICAgICAgICAgICAgICAgdnN0NF91MTYocmdiYSwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTY0IHB4ID0gY2FzdDxVNjQ+KHRv X2ZpeGVkKHIgKiA2NTUzNSkpIDw8IDQ4Ci0rICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8 VTY0Pih0b19maXhlZChnICogNjU1MzUpKSA8PCAzMgotKyAgICAgICAgICAgICAgICAgICAgICAg fCBjYXN0PFU2ND4odG9fZml4ZWQoYiAqIDY1NTM1KSkgPDwgMTYKLSsgICAgICAgICAgICAgICAg ICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpIDw8ICAwOwotKyAgICAgICAg ICAgICAgICBzdG9yZShyZ2JhLCBzd2FwX2VuZGlhbl8xNng0KHB4KSk7Ci0rI2Vsc2UKLSAgICAg ICAgICAgICAgICAgVTY0IHB4ID0gY2FzdDxVNjQ+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpIDw8ICAw Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChnICogNjU1MzUp KSA8PCAxNgotICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYiAq IDY1NTM1KSkgPDwgMzIKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2Zp eGVkKGEgKiA2NTUzNSkpIDw8IDQ4OwotICAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBweCk7 Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgfSByZXR1cm47Ci0g Ci1AQCAtMTA4MywxOCArMTIxMiwzMCBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCog b3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgdWludDE2X3QqIHJnYiA9 ICh1aW50MTZfdCopcHRyOyAgICAgICAgICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0 byBiZSBzYWZlLgotICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAg ICAgICAgICAgIHVpbnQxNng0eDNfdCB2ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAg ICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUp KSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChn ICogNjU1MzUpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0 b19maXhlZChiICogNjU1MzUpKSwKLSsjZWxzZQotICAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwKLSAg ICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0 b19maXhlZChnICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClz d2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAotKyNlbmRpZgot ICAgICAgICAgICAgICAgICB9fTsKLSAgICAgICAgICAgICAgICAgdnN0M191MTYocmdiLCB2KTsK LSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAg ICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpOwotKyAgICAg ICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkp OwotKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisyLCBjYXN0PFUxNj4odG9fZml4ZWQoYiAq IDY1NTM1KSkpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIEkzMiBSID0gdG9fZml4ZWQociAq IDY1NTM1KSwKLSAgICAgICAgICAgICAgICAgICAgIEcgPSB0b19maXhlZChnICogNjU1MzUpLAot ICAgICAgICAgICAgICAgICAgICAgQiA9IHRvX2ZpeGVkKGIgKiA2NTUzNSk7Ci0gICAgICAgICAg ICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8VTE2PigoUiAmIDB4MDBmZikgPDwgOCB8IChSICYg MHhmZjAwKSA+PiA4KSApOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0PFUx Nj4oKEcgJiAweDAwZmYpIDw8IDggfCAoRyAmIDB4ZmYwMCkgPj4gOCkgKTsKLSAgICAgICAgICAg ICAgICAgc3RvcmVfMyhyZ2IrMiwgY2FzdDxVMTY+KChCICYgMHgwMGZmKSA8PCA4IHwgKEIgJiAw eGZmMDApID4+IDgpICk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gCi0gICAgICAg ICAgICAgfSByZXR1cm47Ci1AQCAtMTEwNSwxOCArMTI0NiwzMyBAQCBzdGF0aWMgdm9pZCBleGVj X29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAg dWludDE2X3QqIHJnYmEgPSAodWludDE2X3QqKXB0cjsgICAgICAgIC8vIGZvciB0aGlzIGNhc3Qg dG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdf TkVPTikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4NF90IHYgPSB7ewotKyNpZiBfX0JJR19F TkRJQU5fXwotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2Zp eGVkKHIgKiA2NTUzNSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxV MTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0 X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpLAotKyAgICAgICAgICAgICAgICAgICAg KHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpLAotKyNlbHNlCi0gICAg ICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9f Zml4ZWQociAqIDY1NTM1KSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dh cF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKSwKLSAgICAgICAgICAg ICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChi ICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlh bl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1KSkpLAotKyNlbmRpZgotICAgICAgICAg ICAgICAgICB9fTsKLSAgICAgICAgICAgICAgICAgdnN0NF91MTYocmdiYSwgdik7Ci0gICAgICAg ICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTY0IHB4 ID0gY2FzdDxVNjQ+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpIDw8IDQ4Ci0rICAgICAgICAgICAgICAg ICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChnICogNjU1MzUpKSA8PCAzMgotKyAgICAgICAg ICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYiAqIDY1NTM1KSkgPDwgMTYKLSsg ICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpIDw8 ICAwOwotKyAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBweCk7Ci0rI2Vsc2UKLSAgICAgICAg ICAgICAgICAgVTY0IHB4ID0gY2FzdDxVNjQ+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpIDw8ICAwCi0g ICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChnICogNjU1MzUpKSA8 PCAxNgotICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYiAqIDY1 NTM1KSkgPDwgMzIKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVk KGEgKiA2NTUzNSkpIDw8IDQ4OwotICAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBzd2FwX2Vu ZGlhbl8xNng0KHB4KSk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAg ICAgfSByZXR1cm47Ci0gCi1AQCAtMTE2MCwxMCArMTMxNiwxNyBAQCBzdGF0aWMgdm9pZCBleGVj X29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAg fX07Ci0gICAgICAgICAgICAgICAgIHZzdDRfdTE2KHJnYmEsIHYpOwotICAgICAgICAgICAgICNl bHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIGNh c3Q8VTY0PihSKSA8PCA0OAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4o RykgPDwgMzIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEIpIDw8IDE2 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihBKSA8PCAgMCk7Ci0rI2Vs c2UKLSAgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgY2FzdDxVNjQ+KFIpIDw8ICAwCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihHKSA8PCAxNgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4oQikgPDwgMzIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgY2FzdDxVNjQ+KEEpIDw8IDQ4KTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5k aWYKLSAKLSAgICAgICAgICAgICB9IHJldHVybjsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMv Y29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCi1AQCAtOTMsMTMgKzkzLDE1IEBAIHNpemVfdCBXYXZS ZWFkZXI6Om51bV9zYW1wbGVzKCkgY29uc3QgewotIH0KLSAKLSBzaXplX3QgV2F2UmVhZGVyOjpS ZWFkU2FtcGxlcyhzaXplX3QgbnVtX3NhbXBsZXMsIGludDE2X3QqIHNhbXBsZXMpIHsKLS0jaWZu ZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLS0jZXJyb3IgIk5lZWQgdG8gY29udmVydCBz YW1wbGVzIHRvIGJpZy1lbmRpYW4gd2hlbiByZWFkaW5nIGZyb20gV0FWIGZpbGUiCi0tI2VuZGlm Ci0gICAvLyBUaGVyZSBjb3VsZCBiZSBtZXRhZGF0YSBhZnRlciB0aGUgYXVkaW87IGVuc3VyZSB3 ZSBkb24ndCByZWFkIGl0LgotICAgbnVtX3NhbXBsZXMgPSBzdGQ6Om1pbihudW1fc2FtcGxlcywg bnVtX3NhbXBsZXNfcmVtYWluaW5nXyk7Ci0gICBjb25zdCBzaXplX3QgcmVhZCA9Ci0gICAgICAg ZnJlYWQoc2FtcGxlcywgc2l6ZW9mKCpzYW1wbGVzKSwgbnVtX3NhbXBsZXMsIGZpbGVfaGFuZGxl Xyk7Ci0rI2lmbmRlZiBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0rICBmb3IgKHNpemVfdCBp ID0gMDsgaSA8IHJlYWQ7IGkrKykgewotKyAgICAgIHNhbXBsZXNbaV0gPSBfX2J1aWx0aW5fYnN3 YXAxNihzYW1wbGVzW2ldKTsKLSsgIH0KLSsjZW5kaWYKLSAgIC8vIElmIHdlIGRpZG4ndCByZWFk IHdoYXQgd2FzIHJlcXVlc3RlZCwgZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgdGhlIEVPRi4KLSAgIFJU Q19DSEVDSyhyZWFkID09IG51bV9zYW1wbGVzIHx8IGZlb2YoZmlsZV9oYW5kbGVfKSk7Ci0gICBS VENfQ0hFQ0tfTEUocmVhZCwgbnVtX3NhbXBsZXNfcmVtYWluaW5nXyk7Ci1AQCAtMTc4LDEzICsx ODAsMjYgQEAgc2l6ZV90IFdhdldyaXRlcjo6bnVtX3NhbXBsZXMoKSBjb25zdCB7Ci0gCi0gdm9p ZCBXYXZXcml0ZXI6OldyaXRlU2FtcGxlcyhjb25zdCBpbnQxNl90KiBzYW1wbGVzLCBzaXplX3Qg bnVtX3NhbXBsZXMpIHsKLSAjaWZuZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLS0jZXJy b3IgIk5lZWQgdG8gY29udmVydCBzYW1wbGVzIHRvIGxpdHRsZS1lbmRpYW4gd2hlbiB3cml0aW5n IHRvIFdBViBmaWxlIgotLSNlbmRpZgotKyAgc3RhdGljIGNvbnN0IHNpemVfdCBrQ2h1bmtzaXpl ID0gNDA5NiAvIHNpemVvZih1aW50MTZfdCk7Ci0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51 bV9zYW1wbGVzOyBpICs9IGtDaHVua3NpemUpIHsKLSsgICAgaW50MTZfdCBpc2FtcGxlc1trQ2h1 bmtzaXplXTsKLSsgICAgY29uc3Qgc2l6ZV90IGNodW5rID0gc3RkOjptaW4oa0NodW5rc2l6ZSwg bnVtX3NhbXBsZXMgLSBpKTsKLSsgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBjaHVuazsgaisr KSB7Ci0rICAgICAgaXNhbXBsZXNbal0gPSBfX2J1aWx0aW5fYnN3YXAxNihzYW1wbGVzW2kgKyBq XSk7Ci0rICAgIH0KLSsgICAgY29uc3Qgc2l6ZV90IHdyaXR0ZW4gPQotKyAgICAgICAgZndyaXRl KGlzYW1wbGVzLCBzaXplb2YoKmlzYW1wbGVzKSwgY2h1bmssIGZpbGVfaGFuZGxlXyk7Ci0rICAg IFJUQ19DSEVDS19FUShjaHVuaywgd3JpdHRlbik7Ci0rICAgIG51bV9zYW1wbGVzXyArPSB3cml0 dGVuOwotKyAgICBSVENfQ0hFQ0sobnVtX3NhbXBsZXNfID49IHdyaXR0ZW4pOyAgLy8gZGV0ZWN0 IHNpemVfdCBvdmVyZmxvdwotKyAgfQotKyNlbHNlCi0gICBjb25zdCBzaXplX3Qgd3JpdHRlbiA9 Ci0gICAgICAgZndyaXRlKHNhbXBsZXMsIHNpemVvZigqc2FtcGxlcyksIG51bV9zYW1wbGVzLCBm aWxlX2hhbmRsZV8pOwotICAgUlRDX0NIRUNLX0VRKG51bV9zYW1wbGVzLCB3cml0dGVuKTsKLSAg IG51bV9zYW1wbGVzXyArPSB3cml0dGVuOwotICAgUlRDX0NIRUNLKG51bV9zYW1wbGVzXyA+PSB3 cml0dGVuKTsgIC8vIGRldGVjdCBzaXplX3Qgb3ZlcmZsb3cKLSsjZW5kaWYKLSB9Ci0gCi0gdm9p ZCBXYXZXcml0ZXI6OldyaXRlU2FtcGxlcyhjb25zdCBmbG9hdCogc2FtcGxlcywgc2l6ZV90IG51 bV9zYW1wbGVzKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1ZGlvL3dh dl9oZWFkZXIuY2MKLUBAIC04Niw3ICs4NiwyNiBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5n IFJlYWRGb3VyQ0ModWludDMyX3QgeCkgewotICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJw cmV0X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7Ci0gfQotICNlbHNlCi0tI2Vycm9yICJXcml0ZSBiZS10 by1sZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyIKLStzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTE2 KHVpbnQxNl90KiBmLCB1aW50MTZfdCB4KSB7Ci0rICAqZiA9IF9fYnVpbHRpbl9ic3dhcDE2KHgp OwotK30KLStzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTMyKHVpbnQzMl90KiBmLCB1aW50MzJf dCB4KSB7Ci0rICAqZiA9IF9fYnVpbHRpbl9ic3dhcDMyKHgpOwotK30KLStzdGF0aWMgaW5saW5l IHZvaWQgV3JpdGVGb3VyQ0ModWludDMyX3QqIGYsIGNoYXIgYSwgY2hhciBiLCBjaGFyIGMsIGNo YXIgZCkgewotKyAgKmYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZCkgfCBzdGF0aWNfY2FzdDx1 aW50MzJfdD4oYykgPDwgOCB8Ci0rICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSA8PCAx NiB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSA8PCAyNDsKLSt9Ci0rCi0rc3RhdGljIGlubGlu ZSB1aW50MTZfdCBSZWFkTEUxNih1aW50MTZfdCB4KSB7Ci0rICByZXR1cm4gX19idWlsdGluX2Jz d2FwMTYoeCk7Ci0rfQotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZExFMzIodWludDMyX3Qg eCkgewotKyAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDMyKHgpOwotK30KLStzdGF0aWMgaW5saW5l IHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWludDMyX3QgeCkgewotKyAgcmV0dXJuIHN0ZDo6c3Ry aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7Ci0rfQotICNlbmRpZgotIAotIHN0 YXRpYyBpbmxpbmUgdWludDMyX3QgUmlmZkNodW5rU2l6ZShzaXplX3QgYnl0ZXNfaW5fcGF5bG9h ZCkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9hdXJhL211cy9v c19leGNoYW5nZV9kYXRhX3Byb3ZpZGVyX211cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS91aS9hdXJhL211cy9vc19leGNoYW5nZV9kYXRhX3Byb3ZpZGVyX211cy5j YwotQEAgLTE0LDYgKzE0LDcgQEAKLSAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19zcGxp dC5oIgotICNpbmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5nX3V0aWwuaCIKLSAjaW5jbHVkZSAi YmFzZS9zdHJpbmdzL3V0Zl9zdHJpbmdfY29udmVyc2lvbnMuaCIKLSsjaW5jbHVkZSAiYmFzZS9z eXNfYnl0ZW9yZGVyLmgiCi0gI2luY2x1ZGUgIm5ldC9iYXNlL2ZpbGVuYW1lX3V0aWwuaCIKLSAj aW5jbHVkZSAidWkvYmFzZS9jbGlwYm9hcmQvY2xpcGJvYXJkX2NvbnN0YW50cy5oIgotICNpbmNs dWRlICJ1aS9iYXNlL2NsaXBib2FyZC9jbGlwYm9hcmRfZm9ybWF0X3R5cGUuaCIKLUBAIC0yNzks OCArMjgwLDEzIEBAIHZvaWQgT1NFeGNoYW5nZURhdGFQcm92aWRlck11czo6U2V0SHRtbChjb25z dCBiYXNlOjpzdHJpbmcxNiYgaHRtbCwKLSAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGNoYXI+IGJ5 dGVzOwotICAgLy8gTWFudWFsbHkgamFtIGEgVVRGMTYgQk9NIGludG8gYnl0ZXMgYmVjYXVzZSBv dGhlcndpc2UsIG90aGVyIHByb2dyYW1zIHdpbGwKLSAgIC8vIGFzc3VtZSBVVEYtOC4KLSsjaWYg ZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgYnl0ZXMucHVzaF9iYWNrKDB4RkYp OwotICAgYnl0ZXMucHVzaF9iYWNrKDB4RkUpOwotKyNlbHNlCi0rICBieXRlcy5wdXNoX2JhY2so MHhGRSk7Ci0rICBieXRlcy5wdXNoX2JhY2soMHhGRik7Ci0rI2VuZGlmCi0gICBBZGRTdHJpbmcx NlRvVmVjdG9yKGh0bWwsICZieXRlcyk7Ci0gICBtaW1lX2RhdGFfW3VpOjprTWltZVR5cGVIVE1M XSA9IGJ5dGVzOwotIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkv YmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2MKLUBAIC0xNTQsMTYgKzE1NCw0 MiBAQCBjbGFzcyBTY29wZWRGaWxlV3JpdGVyIHsKLSAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH TihTY29wZWRGaWxlV3JpdGVyKTsKLSB9OwotIAotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgYnl0 ZXN3YXAodWludDE2X3QgdikgeyByZXR1cm4gX19idWlsdGluX2Jzd2FwMTYodik7IH0KLStzdGF0 aWMgaW5saW5lIHVpbnQzMl90IGJ5dGVzd2FwKHVpbnQzMl90IHYpIHsgcmV0dXJuIF9fYnVpbHRp bl9ic3dhcDMyKHYpOyB9Ci0rCi0rdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgYnl0ZXN3YXBwZWRf dCB7Ci0rcHJpdmF0ZToKLSsgIFQgdmFsdWU7Ci0rcHVibGljOgotKyAgaW5saW5lIGJ5dGVzd2Fw cGVkX3QoVCB2KSA6IHZhbHVlKGJ5dGVzd2FwKHYpKSB7IH0KLSsgIGlubGluZSBUIG9wZXJhdG9y PShUIHYpIHsgdmFsdWUgPSBieXRlc3dhcCh2KTsgcmV0dXJuIHY7IH0KLSsgIGlubGluZSBUIG9w ZXJhdG9yKz0oVCB2KSB7IHYgKz0gYnl0ZXN3YXAodmFsdWUpOyB2YWx1ZSA9IGJ5dGVzd2FwKHYp OyByZXR1cm4gdjsgfQotKyAgaW5saW5lIG9wZXJhdG9yIFQoKSBjb25zdCB7IHJldHVybiBieXRl c3dhcCh2YWx1ZSk7IH0KLSt9OwotKwotKyNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5E SUFOKQotKwotK3R5cGVkZWYgYnl0ZXN3YXBwZWRfdDx1aW50MTZfdD4gdWludDE2bGVfdDsKLSt0 eXBlZGVmIGJ5dGVzd2FwcGVkX3Q8dWludDMyX3Q+IHVpbnQzMmxlX3Q7Ci0rCi0rI2Vsc2UKLSsK LSt0eXBlZGVmIHVpbnQxNl90IHVpbnQxNmxlX3Q7Ci0rdHlwZWRlZiB1aW50MzJfdCB1aW50MzJs ZV90OwotKwotKyNlbmRpZgotKwotIH0gIC8vIG5hbWVzcGFjZQotIAotIG5hbWVzcGFjZSB1aSB7 Ci0gCi0gI3ByYWdtYSBwYWNrKHB1c2gsIDIpCi0gc3RydWN0IERhdGFQYWNrOjpFbnRyeSB7Ci0t ICB1aW50MTZfdCByZXNvdXJjZV9pZDsKLS0gIHVpbnQzMl90IGZpbGVfb2Zmc2V0OwotKyAgdWlu dDE2bGVfdCByZXNvdXJjZV9pZDsKLSsgIHVpbnQzMmxlX3QgZmlsZV9vZmZzZXQ7Ci0gCi0gICBz dGF0aWMgaW50IENvbXBhcmVCeUlkKGNvbnN0IHZvaWQqIHZvaWRfa2V5LCBjb25zdCB2b2lkKiB2 b2lkX2VudHJ5KSB7Ci0rICAgIC8vIEtleSBpcyBob3N0IGVuZGlhbgotICAgICB1aW50MTZfdCBr ZXkgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KHZvaWRfa2V5KTsKLSAgICAg Y29uc3QgRW50cnkqIGVudHJ5ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFbnRyeSo+KHZvaWRf ZW50cnkpOwotICAgICByZXR1cm4ga2V5IC0gZW50cnktPnJlc291cmNlX2lkOwotQEAgLTE3MSwx MCArMTk3LDExIEBAIHN0cnVjdCBEYXRhUGFjazo6RW50cnkgewotIH07Ci0gCi0gc3RydWN0IERh dGFQYWNrOjpBbGlhcyB7Ci0tICB1aW50MTZfdCByZXNvdXJjZV9pZDsKLS0gIHVpbnQxNl90IGVu dHJ5X2luZGV4OwotKyAgdWludDE2bGVfdCByZXNvdXJjZV9pZDsKLSsgIHVpbnQxNmxlX3QgZW50 cnlfaW5kZXg7Ci0gCi0gICBzdGF0aWMgaW50IENvbXBhcmVCeUlkKGNvbnN0IHZvaWQqIHZvaWRf a2V5LCBjb25zdCB2b2lkKiB2b2lkX2VudHJ5KSB7Ci0rICAgIC8vIEtleSBpcyBob3N0IGVuZGlh bgotICAgICB1aW50MTZfdCBrZXkgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+ KHZvaWRfa2V5KTsKLSAgICAgY29uc3QgQWxpYXMqIGVudHJ5ID0gcmVpbnRlcnByZXRfY2FzdDxj b25zdCBBbGlhcyo+KHZvaWRfZW50cnkpOwotICAgICByZXR1cm4ga2V5IC0gZW50cnktPnJlc291 cmNlX2lkOwotQEAgLTI4NCw3ICszMTEsNyBAQCBib29sIERhdGFQYWNrOjpMb2FkSW1wbChzdGQ6 OnVuaXF1ZV9wdHI8RGF0YVBhY2s6OkRhdGFTb3VyY2U+IGRhdGFfc291cmNlKSB7Ci0gICAvLyBQ YXJzZSB0aGUgdmVyc2lvbiBhbmQgY2hlY2sgZm9yIHRydW5jYXRlZCBoZWFkZXIuCi0gICB1aW50 MzJfdCB2ZXJzaW9uID0gMDsKLSAgIGlmIChkYXRhX2xlbmd0aCA+IHNpemVvZih2ZXJzaW9uKSkK LS0gICAgdmVyc2lvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhKVsw XTsKLSsgICAgdmVyc2lvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMybGVfdCo+KGRh dGEpWzBdOwotICAgc2l6ZV90IGhlYWRlcl9sZW5ndGggPQotICAgICAgIHZlcnNpb24gPT0ga0Zp bGVGb3JtYXRWNCA/IGtIZWFkZXJMZW5ndGhWNCA6IGtIZWFkZXJMZW5ndGhWNTsKLSAgIGlmICh2 ZXJzaW9uID09IDAgfHwgZGF0YV9sZW5ndGggPCBoZWFkZXJfbGVuZ3RoKSB7Ci1AQCAtMjk1LDE0 ICszMjIsMTQgQEAgYm9vbCBEYXRhUGFjazo6TG9hZEltcGwoc3RkOjp1bmlxdWVfcHRyPERhdGFQ YWNrOjpEYXRhU291cmNlPiBkYXRhX3NvdXJjZSkgewotIAotICAgLy8gUGFyc2UgdGhlIGhlYWRl ciBvZiB0aGUgZmlsZS4KLSAgIGlmICh2ZXJzaW9uID09IGtGaWxlRm9ybWF0VjQpIHsKLS0gICAg cmVzb3VyY2VfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEp WzFdOwotKyAgICByZXNvdXJjZV9jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz MmxlX3QqPihkYXRhKVsxXTsKLSAgICAgYWxpYXNfY291bnRfID0gMDsKLSAgICAgdGV4dF9lbmNv ZGluZ190eXBlXyA9IHN0YXRpY19jYXN0PFRleHRFbmNvZGluZ1R5cGU+KGRhdGFbOF0pOwotICAg fSBlbHNlIGlmICh2ZXJzaW9uID09IGtGaWxlRm9ybWF0VjUpIHsKLSAgICAgLy8gVmVyc2lvbiA1 IGFkZGVkIHRoZSBhbGlhcyB0YWJsZSBhbmQgY2hhbmdlZCB0aGUgaGVhZGVyIGZvcm1hdC4KLSAg ICAgdGV4dF9lbmNvZGluZ190eXBlXyA9IHN0YXRpY19jYXN0PFRleHRFbmNvZGluZ1R5cGU+KGRh dGFbNF0pOwotLSAgICByZXNvdXJjZV9jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp bnQxNl90Kj4oZGF0YSlbNF07Ci0tICAgIGFsaWFzX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8 Y29uc3QgdWludDE2X3QqPihkYXRhKVs1XTsKLSsgICAgcmVzb3VyY2VfY291bnRfID0gcmVpbnRl cnByZXRfY2FzdDxjb25zdCB1aW50MTZsZV90Kj4oZGF0YSlbNF07Ci0rICAgIGFsaWFzX2NvdW50 XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2bGVfdCo+KGRhdGEpWzVdOwotICAgfSBl bHNlIHsKLSAgICAgTE9HKEVSUk9SKSA8PCAiQmFkIGRhdGEgcGFjayB2ZXJzaW9uOiBnb3QgIiA8 PCB2ZXJzaW9uIDw8ICIsIGV4cGVjdGVkICIKLSAgICAgICAgICAgICAgICA8PCBrRmlsZUZvcm1h dFY0IDw8ICIgb3IgIiA8PCBrRmlsZUZvcm1hdFY1OwotQEAgLTQ0Nyw5ICs0NzQsNiBAQCB2b2lk IERhdGFQYWNrOjpDaGVja0ZvckR1cGxpY2F0ZVJlc291cmNlcygKLSBib29sIERhdGFQYWNrOjpX cml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQxNl90LCBiYXNlOjpTdHJpbmdQaWVjZT4mIHJlc291 cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEVuY29kaW5nVHlwZSB0ZXh0X2Vu Y29kaW5nX3R5cGUpIHsKLS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0j ZXJyb3IgImRhdGFwYWNrIGFzc3VtZXMgbGl0dGxlIGVuZGlhbiIKLS0jZW5kaWYKLSAgIGlmICh0 ZXh0X2VuY29kaW5nX3R5cGUgIT0gVVRGOCAmJiB0ZXh0X2VuY29kaW5nX3R5cGUgIT0gVVRGMTYg JiYKLSAgICAgICB0ZXh0X2VuY29kaW5nX3R5cGUgIT0gQklOQVJZKSB7Ci0gICAgIExPRyhFUlJP UikgPDwgIkludmFsaWQgdGV4dCBlbmNvZGluZyB0eXBlLCBnb3QgIiA8PCB0ZXh0X2VuY29kaW5n X3R5cGUKLUBAIC00NjcsNyArNDkxLDcgQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0 IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAotICAgaWYgKCFmaWxlLnZhbGlkKCkpCi0gICAgIHJldHVy biBmYWxzZTsKLSAKLS0gIHVpbnQzMl90IGVuY29kaW5nID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+ KHRleHRfZW5jb2RpbmdfdHlwZSk7Ci0rICB1aW50MzJsZV90IGVuY29kaW5nID0gc3RhdGljX2Nh c3Q8dWludDMybGVfdD4odGV4dF9lbmNvZGluZ190eXBlKTsKLSAKLSAgIC8vIEJ1aWxkIGEgbGlz dCBvZiBmaW5hbCByZXNvdXJjZSBhbGlhc2VzLCBhbmQgYW4gYWxpYXMgbWFwIGF0IHRoZSBzYW1l IHRpbWUuCi0gICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gcmVzb3VyY2VfaWRzOwotQEAgLTQ5NCwx MyArNTE4LDE0IEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0 aCYgcGF0aCwKLSAKLSAgIC8vIFRoZXNlIHZhbHVlcyBhcmUgZ3VhcmFudGVlZCB0byBmaXQgaW4g YSB1aW50MTZfdCBkdWUgdG8gdGhlIGVhcmxpZXIKLSAgIC8vIGNoZWNrIG9mIHxyZXNvdXJjZXNf Y291bnR8LgotLSAgY29uc3QgdWludDE2X3QgYWxpYXNfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50 MTZfdD4oYWxpYXNlcy5zaXplKCkpOwotLSAgY29uc3QgdWludDE2X3QgZW50cnlfY291bnQgPSBz dGF0aWNfY2FzdDx1aW50MTZfdD4ocmVzb3VyY2VfaWRzLnNpemUoKSk7Ci0rICBjb25zdCB1aW50 MTZsZV90IGFsaWFzX2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2bGVfdD4oYWxpYXNlcy5zaXpl KCkpOwotKyAgY29uc3QgdWludDE2bGVfdCBlbnRyeV9jb3VudCA9IHN0YXRpY19jYXN0PHVpbnQx NmxlX3Q+KHJlc291cmNlX2lkcy5zaXplKCkpOwotICAgRENIRUNLX0VRKHN0YXRpY19jYXN0PHNp emVfdD4oZW50cnlfY291bnQpICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihhbGlhc19jb3VudCksCi0g ICAgICAgICAgICAgcmVzb3VyY2VzX2NvdW50KTsKLSAKLS0gIGZpbGUuV3JpdGUoJmtGaWxlRm9y bWF0VjUsIHNpemVvZihrRmlsZUZvcm1hdFY1KSk7Ci0tICBmaWxlLldyaXRlKCZlbmNvZGluZywg c2l6ZW9mKHVpbnQzMl90KSk7Ci0rICB1aW50MzJsZV90IHZlcnNpb24gPSBrRmlsZUZvcm1hdFY1 OwotKyAgZmlsZS5Xcml0ZSgmdmVyc2lvbiwgc2l6ZW9mKHZlcnNpb24pKTsKLSsgIGZpbGUuV3Jp dGUoJmVuY29kaW5nLCBzaXplb2YodWludDMybGVfdCkpOwotICAgZmlsZS5Xcml0ZSgmZW50cnlf Y291bnQsIHNpemVvZihlbnRyeV9jb3VudCkpOwotICAgZmlsZS5Xcml0ZSgmYWxpYXNfY291bnQs IHNpemVvZihhbGlhc19jb3VudCkpOwotIAotQEAgLTUwOCw4ICs1MzMsOCBAQCBib29sIERhdGFQ YWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gICAvLyBsYXN0IGl0 ZW0gc28gd2UgY2FuIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIGxpc3QgaXRlbS4KLSAgIGNvbnN0 IHVpbnQzMl90IGluZGV4X2xlbmd0aCA9IChlbnRyeV9jb3VudCArIDEpICogc2l6ZW9mKEVudHJ5 KTsKLSAgIGNvbnN0IHVpbnQzMl90IGFsaWFzX3RhYmxlX2xlbmd0aCA9IGFsaWFzX2NvdW50ICog c2l6ZW9mKEFsaWFzKTsKLS0gIHVpbnQzMl90IGRhdGFfb2Zmc2V0ID0ga0hlYWRlckxlbmd0aFY1 ICsgaW5kZXhfbGVuZ3RoICsgYWxpYXNfdGFibGVfbGVuZ3RoOwotLSAgZm9yIChjb25zdCB1aW50 MTZfdCByZXNvdXJjZV9pZCA6IHJlc291cmNlX2lkcykgewotKyAgdWludDMybGVfdCBkYXRhX29m ZnNldCA9IGtIZWFkZXJMZW5ndGhWNSArIGluZGV4X2xlbmd0aCArIGFsaWFzX3RhYmxlX2xlbmd0 aDsKLSsgIGZvciAoY29uc3QgdWludDE2bGVfdCByZXNvdXJjZV9pZCA6IHJlc291cmNlX2lkcykg ewotICAgICBmaWxlLldyaXRlKCZyZXNvdXJjZV9pZCwgc2l6ZW9mKHJlc291cmNlX2lkKSk7Ci0g ICAgIGZpbGUuV3JpdGUoJmRhdGFfb2Zmc2V0LCBzaXplb2YoZGF0YV9vZmZzZXQpKTsKLSAgICAg ZGF0YV9vZmZzZXQgKz0gcmVzb3VyY2VzLmZpbmQocmVzb3VyY2VfaWQpLT5zZWNvbmQubGVuZ3Ro KCk7Ci1AQCAtNTE3LDEzICs1NDIsMTMgQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0 IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAotIAotICAgLy8gV2UgcGxhY2UgYW4gZXh0cmEgZW50cnkg YWZ0ZXIgdGhlIGxhc3QgaXRlbSB0aGF0IGFsbG93cyB1cyB0byByZWFkIHRoZQotICAgLy8gc2l6 ZSBvZiB0aGUgbGFzdCBpdGVtLgotLSAgY29uc3QgdWludDE2X3QgcmVzb3VyY2VfaWQgPSAwOwot KyAgY29uc3QgdWludDE2bGVfdCByZXNvdXJjZV9pZCA9IDA7Ci0gICBmaWxlLldyaXRlKCZyZXNv dXJjZV9pZCwgc2l6ZW9mKHJlc291cmNlX2lkKSk7Ci0gICBmaWxlLldyaXRlKCZkYXRhX29mZnNl dCwgc2l6ZW9mKGRhdGFfb2Zmc2V0KSk7Ci0gCi0gICAvLyBXcml0ZSB0aGUgYWxpYXNlcyB0YWJs ZSwgaWYgYW55LiBOb3RlOiB8YWxpYXNlc3wgaXMgYW4gc3RkOjptYXAsCi0gICAvLyBlbnN1cmlu ZyB2YWx1ZXMgYXJlIHdyaXR0ZW4gaW4gaW5jcmVhc2luZyBvcmRlci4KLS0gIGZvciAoY29uc3Qg c3RkOjpwYWlyPHVpbnQxNl90LCB1aW50MTZfdD4mIGFsaWFzIDogYWxpYXNlcykgewotKyAgZm9y IChjb25zdCBzdGQ6OnBhaXI8dWludDE2bGVfdCwgdWludDE2bGVfdD4gYWxpYXMgOiBhbGlhc2Vz KSB7Ci0gICAgIGZpbGUuV3JpdGUoJmFsaWFzLCBzaXplb2YoYWxpYXMpKTsKLSAgIH0KLSAKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRh X3BhY2suY2Mub3JpZwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9i YXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYy5vcmlnCi1AQCAtMzgyLDEyICszODIsNiBAQCBib29s IERhdGFQYWNrOjpIYXNSZXNvdXJjZSh1aW50MTZfdCByZXNvdXJjZV9pZCkgY29uc3QgewotIAot IGJvb2wgRGF0YVBhY2s6OkdldFN0cmluZ1BpZWNlKHVpbnQxNl90IHJlc291cmNlX2lkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhKSBjb25z dCB7Ci0tICAvLyBJdCB3b24ndCBiZSBoYXJkIHRvIG1ha2UgdGhpcyBlbmRpYW4tYWdub3N0aWMs IGJ1dCBpdCdzIG5vdCB3b3J0aAotLSAgLy8gYm90aGVyaW5nIHRvIGRvIHJpZ2h0IG5vdy4KLS0j aWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgImRhdGFwYWNrIGFz c3VtZXMgbGl0dGxlIGVuZGlhbiIKLS0jZW5kaWYKLS0KLSAgIGNvbnN0IEVudHJ5KiB0YXJnZXQg PSBMb29rdXBFbnRyeUJ5SWQocmVzb3VyY2VfaWQpOwotICAgaWYgKCF0YXJnZXQpCi0gICAgIHJl dHVybiBmYWxzZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4 L2NvZGVjL2pwZWdfY29kZWMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdWkvZ2Z4L2NvZGVjL2pwZWdfY29kZWMuY2MKLUBAIC0yMTIsMTEgKzIxMiwxMSBAQCBib29s IEpQRUdDb2RlYzo6RGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlucHV0LCBzaXplX3QgaW5w dXRfc2l6ZSwKLSAgICAgICAvLyB1c2VkIGJ5IENocm9taXVtIChpLmUuIFJHQkEgYW5kIEJHUkEp IGFuZCB3ZSBqdXN0IG1hcCB0aGUgaW5wdXQKLSAgICAgICAvLyBwYXJhbWV0ZXJzIHRvIGEgY29s b3JzcGFjZS4KLSAgICAgICBpZiAoZm9ybWF0ID09IEZPUk1BVF9SR0JBIHx8Ci0tICAgICAgICAg IChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFwICYmIFNLX1IzMl9TSElGVCA9PSAwKSkgewotKyAg ICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9Ta0JpdG1hcCAmJiBTS19QTUNPTE9SX0JZVEVfT1JE RVIoUiwgRywgQiwgQSkpKSB7Ci0gICAgICAgICBjaW5mby0+b3V0X2NvbG9yX3NwYWNlID0gSkNT X0VYVF9SR0JYOwotICAgICAgICAgY2luZm8tPm91dHB1dF9jb21wb25lbnRzID0gNDsKLSAgICAg ICB9IGVsc2UgaWYgKGZvcm1hdCA9PSBGT1JNQVRfQkdSQSB8fAotLSAgICAgICAgICAgICAgICAg KGZvcm1hdCA9PSBGT1JNQVRfU2tCaXRtYXAgJiYgU0tfQjMyX1NISUZUID09IDApKSB7Ci0rICAg ICAgICAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9Ta0JpdG1hcCAmJiBTS19QTUNPTE9SX0JZ VEVfT1JERVIoQiwgRywgUiwgQSkpKSB7Ci0gICAgICAgICBjaW5mby0+b3V0X2NvbG9yX3NwYWNl ID0gSkNTX0VYVF9CR1JYOwotICAgICAgICAgY2luZm8tPm91dHB1dF9jb21wb25lbnRzID0gNDsK LSAgICAgICB9IGVsc2UgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91 aS9nZngvY29kZWMvcG5nX2NvZGVjLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuY2MKLUBAIC0xNjksNiArMTY5LDEwIEBAIHZv aWQgRGVjb2RlSW5mb0NhbGxiYWNrKHBuZ19zdHJ1Y3QqIHBuZ19wdHIsIHBuZ19pbmZvKiBpbmZv X3B0cikgewotICAgICAgICAgcG5nX3NldF9iZ3IocG5nX3B0cik7Ci0gICAgICAgICBwbmdfc2V0 X2FkZF9hbHBoYShwbmdfcHRyLCAweEZGLCBQTkdfRklMTEVSX0FGVEVSKTsKLSAgICAgICAgIGJy ZWFrOwotKyAgICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9BUkdCOgotKyAgICAgICAgc3RhdGUt Pm91dHB1dF9jaGFubmVscyA9IDQ7Ci0rICAgICAgICBwbmdfc2V0X2FkZF9hbHBoYShwbmdfcHRy LCAweEZGLCBQTkdfRklMTEVSX0JFRk9SRSk7Ci0rICAgICAgICBicmVhazsKLSAgICAgICBjYXNl IFBOR0NvZGVjOjpGT1JNQVRfU2tCaXRtYXA6Ci0gICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5u ZWxzID0gNDsKLSAgICAgICAgIHBuZ19zZXRfYWRkX2FscGhhKHBuZ19wdHIsIDB4RkYsIFBOR19G SUxMRVJfQUZURVIpOwotQEAgLTE4Myw2ICsxODcsMTAgQEAgdm9pZCBEZWNvZGVJbmZvQ2FsbGJh Y2socG5nX3N0cnVjdCogcG5nX3B0ciwgcG5nX2luZm8qIGluZm9fcHRyKSB7Ci0gICAgICAgICBz dGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKLSAgICAgICAgIHBuZ19zZXRfYmdyKHBuZ19wdHIp OwotICAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX0FSR0I6Ci0r ICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKLSsJcG5nX3NldF9zd2FwX2FscGhh KHBuZ19wdHIpOwotKyAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFU X1NrQml0bWFwOgotICAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9IDQ7Ci0gICAgICAg ICBicmVhazsKLUBAIC00NzUsNiArNDgzLDggQEAgYm9vbCBQTkdDb2RlYzo6RW5jb2RlKGNvbnN0 IHVuc2lnbmVkIGNoYXIqIGlucHV0LAotICAgICBjYXNlIEZPUk1BVF9CR1JBOgotICAgICAgIGNv bG9yVHlwZSA9IGtCR1JBXzg4ODhfU2tDb2xvclR5cGU7Ci0gICAgICAgYnJlYWs7Ci0rICAgIGNh c2UgRk9STUFUX0FSR0I6Ci0rICAgICAgcmV0dXJuIGZhbHNlOwotICAgICBjYXNlIEZPUk1BVF9T a0JpdG1hcDoKLSAgICAgICBjb2xvclR5cGUgPSBrTjMyX1NrQ29sb3JUeXBlOwotICAgICAgIGJy ZWFrOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMv cG5nX2NvZGVjLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4 L2NvZGVjL3BuZ19jb2RlYy5oCi1AQCAtMzcsNiArMzcsMTAgQEAgY2xhc3MgQ09ERUNfRVhQT1JU IFBOR0NvZGVjIHsKLSAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBXaW5kb3dzIERJQiBvcmRl ci4KLSAgICAgRk9STUFUX0JHUkEsCi0gCi0rICAgIC8vIDQgYnl0ZXMgcGVyIHBpeGVsLCBpbiBB UkdCIG9yZGVyIGluIG1lbW9yeSByZWdhcmRsZXNzIG9mIGVuZGlhbm5lc3MuCi0rICAgIC8vIE9u bHkgc3VwcG9ydGVkIGZvciBkZWNvZGluZwotKyAgICBGT1JNQVRfQVJHQiwKLSsKLSAgICAgLy8g U2tCaXRtYXAgZm9ybWF0LiBGb3IgRW5jb2RlKCkga04zMl9Ta0NvbG9yVHlwZSAoNCBieXRlcyBw ZXIgcGl4ZWwpIGFuZAotICAgICAvLyBrQWxwaGFfOF9Ta0NvbG9yVHlwZSAoMSBieXRlIHBlciBw aXhlbCkgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgotICAgICAvLyBrQWxwaGFfOF9Ta0NvbG9yVHlw ZSBnZXRzIGVuY29kZWQgaW50byBhIGdyYXlzY2FsZSBQTkcgdHJlYXRpbmcgYWxwaGEgYXMKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2Rl Y191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9n ZngvY29kZWMvcG5nX2NvZGVjX3VuaXR0ZXN0LmNjCi1AQCAtODUzLDcgKzg1Myw3IEBAIFRFU1Qo UE5HQ29kZWMsIEVuY29kZUE4U2tCaXRtYXApIHsKLSAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBo OyB5KyspIHsKLSAgICAgICB1aW50OF90IG9yaWdpbmFsX3BpeGVsID0gKm9yaWdpbmFsX2JpdG1h cC5nZXRBZGRyOCh4LCB5KTsKLSAgICAgICB1aW50MzJfdCBkZWNvZGVkX3BpeGVsID0gKmRlY29k ZWRfYml0bWFwLmdldEFkZHIzMih4LCB5KTsKLS0gICAgICBFWFBFQ1RfVFJVRShCR1JBR3JheUVx dWFsc0E4R3JheShkZWNvZGVkX3BpeGVsLCBvcmlnaW5hbF9waXhlbCkpOwotKyAgICAgIEVYUEVD VF9UUlVFKEJHUkFHcmF5RXF1YWxzQThHcmF5KFNrVW5QcmVNdWx0aXBseTo6UE1Db2xvclRvQ29s b3IoZGVjb2RlZF9waXhlbCksIG9yaWdpbmFsX3BpeGVsKSk7Ci0gICAgIH0KLSAgIH0KLSB9Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2xvcl9hbmFseXNp cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29sb3Jf YW5hbHlzaXMuY2MKLUBAIC0xNiw2ICsxNiw3IEBACi0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLSAj aW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5o IgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0JpdG1hcC5oIgot ICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1VuUHJlTXVsdGlwbHku aCIKLSAjaW5jbHVkZSAidWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oIgotQEAgLTUwNiwxMCArNTA3 LDE3IEBAIFNrQ29sb3IgRmluZENsb3Nlc3RDb2xvcihjb25zdCB1aW50OF90KiBpbWFnZSwKLSAg IFNrQ29sb3IgYmVzdF9jb2xvciA9IGNvbG9yOwotICAgY29uc3QgdWludDhfdCogYnl0ZSA9IGlt YWdlOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgKytpKSB7Ci0rI2lm IGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgICAgdWludDhfdCBiID0gKihieXRl KyspOwotICAgICB1aW50OF90IGcgPSAqKGJ5dGUrKyk7Ci0gICAgIHVpbnQ4X3QgciA9ICooYnl0 ZSsrKTsKLSAgICAgdWludDhfdCBhID0gKihieXRlKyspOwotKyNlbHNlCi0rICAgIHVpbnQ4X3Qg YSA9ICooYnl0ZSsrKTsKLSsgICAgdWludDhfdCByID0gKihieXRlKyspOwotKyAgICB1aW50OF90 IGcgPSAqKGJ5dGUrKyk7Ci0rICAgIHVpbnQ4X3QgYiA9ICooYnl0ZSsrKTsKLSsjZW5kaWYKLSAg ICAgLy8gSWdub3JlIGZ1bGx5IHRyYW5zcGFyZW50IHBpeGVscy4KLSAgICAgaWYgKGEgPT0gMCkK LSAgICAgICBjb250aW51ZTsKLUBAIC01MjcsNyArNTM1LDYgQEAgU2tDb2xvciBGaW5kQ2xvc2Vz dENvbG9yKGNvbnN0IHVpbnQ4X3QqIGltYWdlLAotIAotIC8vIEZvciBhIDE2eDE2IGljb24gb24g YW4gSW50ZWwgQ29yZSBpNSB0aGlzIGZ1bmN0aW9uIHRha2VzIGFwcHJveGltYXRlbHkKLSAvLyAw LjUgbXMgdG8gcnVuLgotLS8vIFRPRE8ocG9ydCk6IFRoaXMgY29kZSBhc3N1bWVzIHRoZSBDUFUg YXJjaGl0ZWN0dXJlIGlzIGxpdHRsZS1lbmRpYW4uCi0gU2tDb2xvciBDYWxjdWxhdGVLTWVhbkNv bG9yT2ZCdWZmZXIodWludDhfdCogZGVjb2RlZF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBpbWdfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGltZ19oZWlnaHQsCi1AQCAtNTUwLDEwICs1NTcsMTcgQEAgU2tDb2xv ciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZmZXIodWludDhfdCogZGVjb2RlZF9kYXRhLAotICAg ICAgICAgaW50IHBpeGVsX3BvcyA9IHNhbXBsZXItPkdldFNhbXBsZShpbWdfd2lkdGgsIGltZ19o ZWlnaHQpICUKLSAgICAgICAgICAgICAoaW1nX3dpZHRoICogaW1nX2hlaWdodCk7Ci0gCi0rI2lm IGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgICAgICAgIHVpbnQ4X3QgYiA9IGRl Y29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0XTsKLSAgICAgICAgIHVpbnQ4X3QgZyA9IGRlY29kZWRf ZGF0YVtwaXhlbF9wb3MgKiA0ICsgMV07Ci0gICAgICAgICB1aW50OF90IHIgPSBkZWNvZGVkX2Rh dGFbcGl4ZWxfcG9zICogNCArIDJdOwotICAgICAgICAgdWludDhfdCBhID0gZGVjb2RlZF9kYXRh W3BpeGVsX3BvcyAqIDQgKyAzXTsKLSsjZWxzZQotKyAgICAgICAgdWludDhfdCBhID0gZGVjb2Rl ZF9kYXRhW3BpeGVsX3BvcyAqIDRdOwotKyAgICAgICAgdWludDhfdCByID0gZGVjb2RlZF9kYXRh W3BpeGVsX3BvcyAqIDQgKyAxXTsKLSsgICAgICAgIHVpbnQ4X3QgZyA9IGRlY29kZWRfZGF0YVtw aXhlbF9wb3MgKiA0ICsgMl07Ci0rICAgICAgICB1aW50OF90IGIgPSBkZWNvZGVkX2RhdGFbcGl4 ZWxfcG9zICogNCArIDNdOwotKyNlbmRpZgotICAgICAgICAgLy8gU2tpcCBmdWxseSB0cmFuc3Bh cmVudCBwaXhlbHMgYXMgdGhleSB1c3VhbGx5IGNvbnRhaW4gYmxhY2sgaW4gdGhlaXIKLSAgICAg ICAgIC8vIFJHQiBjaGFubmVscyBidXQgZG8gbm90IGNvbnRyaWJ1dGUgdG8gdGhlIHZpc3VhbCBp bWFnZS4KLSAgICAgICAgIGlmIChhID09IDApCi1AQCAtNjAyLDEwICs2MTYsMTcgQEAgU2tDb2xv ciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZmZXIodWludDhfdCogZGVjb2RlZF9kYXRhLAotICAg ICAgIHVpbnQ4X3QqIHBpeGVsID0gZGVjb2RlZF9kYXRhOwotICAgICAgIHVpbnQ4X3QqIGRlY29k ZWRfZGF0YV9lbmQgPSBkZWNvZGVkX2RhdGEgKyAoaW1nX3dpZHRoICogaW1nX2hlaWdodCAqIDQp OwotICAgICAgIHdoaWxlIChwaXhlbCA8IGRlY29kZWRfZGF0YV9lbmQpIHsKLSsjaWYgZGVmaW5l ZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgICAgICAgdWludDhfdCBiID0gKihwaXhlbCsr KTsKLSAgICAgICAgIHVpbnQ4X3QgZyA9ICoocGl4ZWwrKyk7Ci0gICAgICAgICB1aW50OF90IHIg PSAqKHBpeGVsKyspOwotICAgICAgICAgdWludDhfdCBhID0gKihwaXhlbCsrKTsKLSsjZWxzZQot KyAgICAgICAgdWludDhfdCBhID0gKihwaXhlbCsrKTsKLSsgICAgICAgIHVpbnQ4X3QgciA9ICoo cGl4ZWwrKyk7Ci0rICAgICAgICB1aW50OF90IGcgPSAqKHBpeGVsKyspOwotKyAgICAgICAgdWlu dDhfdCBiID0gKihwaXhlbCsrKTsKLSsjZW5kaWYKLSAgICAgICAgIC8vIFNraXAgdHJhbnNwYXJl bnQgcGl4ZWxzLCBzZWUgYWJvdmUuCi0gICAgICAgICBpZiAoYSA9PSAwKQotICAgICAgICAgICBj b250aW51ZTsKLUBAIC02ODMsOCArNzA0LDEyIEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xv ck9mUE5HKHNjb3BlZF9yZWZwdHI8YmFzZTo6UmVmQ291bnRlZE1lbW9yeT4gcG5nLAotIAotICAg aWYgKHBuZy5nZXQoKSAmJiBwbmctPnNpemUoKSAmJgotICAgICAgIGdmeDo6UE5HQ29kZWM6OkRl Y29kZShwbmctPmZyb250KCksIHBuZy0+c2l6ZSgpLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZng6OlBOR0NvZGVjOjpGT1JNQVRfQkdSQSwgJmRlY29kZWRfZGF0YSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmltZ193aWR0aCwgJmltZ19oZWlnaHQpKSB7Ci0rI2lmIGRl ZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2Z4OjpQTkdDb2RlYzo6Rk9STUFUX0JHUkEsCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2Z4OjpQTkdDb2RlYzo6Rk9STUFUX0FSR0IsCi0rI2VuZGlmCi0rCQkJICAg ICZkZWNvZGVkX2RhdGEsICZpbWdfd2lkdGgsICZpbWdfaGVpZ2h0KSkgewotICAgICByZXR1cm4g Q2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVyKCZkZWNvZGVkX2RhdGFbMF0sIGltZ193aWR0aCwg aW1nX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dl cl9ib3VuZCwgdXBwZXJfYm91bmQsIHNhbXBsZXIsIHRydWUpOwotICAgfQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvc2tiaXRtYXBfb3BlcmF0aW9uc191bml0 dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvc2ti aXRtYXBfb3BlcmF0aW9uc191bml0dGVzdC5jYwotQEAgLTIzOCw3ICsyMzgsNyBAQCBURVNUKFNr Qml0bWFwT3BlcmF0aW9uc1Rlc3QsIENyZWF0ZUhTTFNoaWZ0ZWRCaXRtYXBIdWVPbmx5KSB7Ci0g Ci0gICBmb3IgKGludCB5ID0gMCwgaSA9IDA7IHkgPCBzcmNfaDsgeSsrKSB7Ci0gICAgIGZvciAo aW50IHggPSAwOyB4IDwgc3JjX3c7IHgrKykgewotLSAgICAgICpzcmMuZ2V0QWRkcjMyKHgsIHkp ID0gU2tDb2xvclNldEFSR0IoMjU1LCAwLCAwLCBpICUgMjU1KTsKLSsgICAgICAqc3JjLmdldEFk ZHIzMih4LCB5KSA9IFNrUGFja0FSR0IzMigyNTUsIDAsIDAsIGkgJSAyNTUpOwotICAgICAgIGkr KzsKLSAgICAgfQotICAgfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91 cmwvdXJsX2Nhbm9uX2hvc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdXJsL3VybF9jYW5vbl9ob3N0LmNjCi1AQCAtMTM1LDggKzEzNSw3IEBAIGJvb2wgRG9TaW1w bGVIb3N0KGNvbnN0IElOQ0hBUiogaG9zdCwKLSAgICAgaWYgKHNvdXJjZSA9PSAnJScpIHsKLSAg ICAgICAvLyBVbmVzY2FwZSBmaXJzdCwgaWYgcG9zc2libGUuCi0gICAgICAgLy8gU291cmNlIHdp bGwgYmUgdXNlZCBvbmx5IGlmIGRlY29kZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCi0tICAg ICAgaWYgKCFEZWNvZGVFc2NhcGVkKGhvc3QsICZpLCBob3N0X2xlbiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJnNvdXJjZSkpKSB7 Ci0rICAgICAgaWYgKCFEZWNvZGVFc2NhcGVkKGhvc3QsICZpLCBob3N0X2xlbiwgJnNvdXJjZSkp IHsKLSAgICAgICAgIC8vIEludmFsaWQgZXNjYXBlZCBjaGFyYWN0ZXIuIFRoZXJlIGlzIG5vdGhp bmcgdGhhdCBjYW4gbWFrZSB0aGlzCi0gICAgICAgICAvLyBob3N0IHZhbGlkLiBXZSBhcHBlbmQg YW4gZXNjYXBlZCBwZXJjZW50IHNvIHRoZSBVUkwgbG9va3MgcmVhc29uYWJsZQotICAgICAgICAg Ly8gYW5kIG1hcmsgYXMgZmFpbGVkLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS91cmwvdXJsX2Nhbm9uX2ludGVybmFsLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9pbnRlcm5hbC5oCi1AQCAtMzA1LDkgKzMwNSw5IEBA IGlubGluZSBib29sIElzOEJpdENoYXIoYmFzZTo6Y2hhcjE2IGMpIHsKLSAgIHJldHVybiBjIDw9 IDI1NTsKLSB9Ci0gCi0tdGVtcGxhdGU8dHlwZW5hbWUgQ0hBUj4KLSt0ZW1wbGF0ZTx0eXBlbmFt ZSBDSEFSLCB0eXBlbmFtZSBEU1Q+Ci0gaW5saW5lIGJvb2wgRGVjb2RlRXNjYXBlZChjb25zdCBD SEFSKiBzcGVjLCBpbnQqIGJlZ2luLCBpbnQgZW5kLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY2hhciogdW5lc2NhcGVkX3ZhbHVlKSB7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICBEU1QqIHVuZXNjYXBlZF92YWx1ZSkgewotICAgaWYgKCpiZWdpbiArIDMgPiBlbmQg fHwKLSAgICAgICAhSXM4Qml0Q2hhcihzcGVjWypiZWdpbiArIDFdKSB8fCAhSXM4Qml0Q2hhcihz cGVjWypiZWdpbiArIDJdKSkgewotICAgICAvLyBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBiZWNh dXNlIHRoZXJlJ3Mgbm90IGVub3VnaCByb29tLCBvciB0aGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZjU4MGM4MTQ2OTcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw LDAgQEAKLVRoaXMgZml4ZXMgdjggb24gYmlnIGVuZGlhbiBwcGM2NCBFTEZ2Mi4KLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3BwYy9jb25zdGFudHMtcHBjLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3BwYy9jb25zdGFu dHMtcHBjLmgKLUBAIC0yMSw3ICsyMSw4IEBACi0gI2VuZGlmCi0gCi0gI2lmIFY4X0hPU1RfQVJD SF9QUEMgJiYgXAotLSAgICAoVjhfT1NfQUlYIHx8IChWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBW OF9UQVJHRVRfQklHX0VORElBTikpCi0rICAgIChWOF9PU19BSVggfHwgKFY4X1RBUkdFVF9BUkNI X1BQQzY0ICYmIFwKLSsgICAgICAoVjhfVEFSR0VUX0JJR19FTkRJQU4gJiYgKCFkZWZpbmVkKF9D QUxMX0VMRikgfHwgX0NBTExfRUxGID09IDEpKSkpCi0gI2RlZmluZSBBQklfVVNFU19GVU5DVElP Tl9ERVNDUklQVE9SUyAxCi0gI2Vsc2UKLSAjZGVmaW5lIEFCSV9VU0VTX0ZVTkNUSU9OX0RFU0NS SVBUT1JTIDAKLUBAIC0zMywxMyArMzQsMTUgQEAKLSAjZGVmaW5lIEFCSV9QQVNTRVNfSEFORExF U19JTl9SRUdTIDAKLSAjZW5kaWYKLSAKLS0jaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwgIVY4X1RB UkdFVF9BUkNIX1BQQzY0IHx8IFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOCi0rI2lmICFWOF9IT1NU X0FSQ0hfUFBDIHx8ICFWOF9UQVJHRVRfQVJDSF9QUEM2NCB8fCBcCi0rICAgIChWOF9UQVJHRVRf TElUVExFX0VORElBTiB8fCAoZGVmaW5lZChfQ0FMTF9FTEYpICYmIF9DQUxMX0VMRiA9PSAyKSkK LSAjZGVmaW5lIEFCSV9SRVRVUk5TX09CSkVDVF9QQUlSU19JTl9SRUdTIDEKLSAjZWxzZQotICNk ZWZpbmUgQUJJX1JFVFVSTlNfT0JKRUNUX1BBSVJTX0lOX1JFR1MgMAotICNlbmRpZgotIAotLSNp ZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VU X0xJVFRMRV9FTkRJQU4pCi0rI2lmICFWOF9IT1NUX0FSQ0hfUFBDIHx8IChWOF9UQVJHRVRfQVJD SF9QUEM2NCAmJiBcCi0rICAgIChWOF9UQVJHRVRfTElUVExFX0VORElBTiB8fCAoZGVmaW5lZChf Q0FMTF9FTEYpICYmIF9DQUxMX0VMRiA9PSAyKSkpCi0gI2RlZmluZSBBQklfQ0FMTF9WSUFfSVAg MQotICNlbHNlCi0gI2RlZmluZSBBQklfQ0FMTF9WSUFfSVAgMAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvcHBjL3JlZ2lzdGVyLXBwYy5oCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9wcGMvcmVnaXN0ZXItcHBjLmgKLUBA IC0xNDUsNyArMTQ1LDggQEAgY29uc3QgaW50IGtOdW1TYWZlcG9pbnRSZWdpc3RlcnMgPSAzMjsK LSAvLyBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBkZXNjcmliZSB0aGUgc3RhY2sgZnJhbWUgbGlu a2FnZSBhcmVhIGFzCi0gLy8gZGVmaW5lZCBieSB0aGUgQUJJLiAgTm90ZSB0aGF0IGtOdW1SZXF1 aXJlZFN0YWNrRnJhbWVTbG90cyBtdXN0Ci0gLy8gc2F0aXNmeSBhbGlnbm1lbnQgcmVxdWlyZW1l bnRzIChyb3VuZGluZyB1cCBpZiByZXF1aXJlZCkuCi0tI2lmIFY4X1RBUkdFVF9BUkNIX1BQQzY0 ICYmIFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOICAvLyBwcGM2NGxlIGxpbnV4Ci0rI2lmIFY4X1RB UkdFVF9BUkNIX1BQQzY0ICYmIChWOF9UQVJHRVRfTElUVExFX0VORElBTiB8fCBcCi0rICAgIGRl ZmluZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikKLSAvLyBbMF0gYmFjayBjaGFpbgot IC8vIFsxXSBjb25kaXRpb24gcmVnaXN0ZXIgc2F2ZSBhcmVhCi0gLy8gWzJdIGxpbmsgcmVnaXN0 ZXIgc2F2ZSBhcmVhCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTQtYmlnLWVu ZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1l bmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZWEyNjlkMzgzZDEuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1i aWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCww IEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Nr aWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9za2Ntcy5jYwot QEAgLTE4MjgsNiArMTgyOCwxNCBAQCB0eXBlZGVmIGVudW0gewotICAgICAjZW5kaWYKLSAjZW5k aWYKLSAKLSsvLyB3aXRoIGN1cnJlbnQgZ2NjIDguMy4wIHdlIGdldCBhbiBpbnRlcm5hbCBjb21w aWxlciBlcnJvciB3aGVuIGNvbXBpbGluZwotKy8vIGZvciBwcGM2NCBiaWcgZW5kaWFuIC0gc28g c3dpdGNoIHRvIHBvcnRhYmxlIHVudGlsIHRoaXMgaXMgcmVzb2x2ZWQKLSsjaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotKyMgIGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pICYmICFkZWZpbmVk KFNLQ01TX1BPUlRBQkxFKQotKyMgICAgZGVmaW5lIFNLQ01TX1BPUlRBQkxFCi0rIyAgZW5kaWYK LSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZChfX2NsYW5nX18pCi0gICAgIHRlbXBsYXRlIDxpbnQg TiwgdHlwZW5hbWUgVD4gdXNpbmcgVmVjID0gVCBfX2F0dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5 cGUoTikpKTsKLSAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMTAwLXF0NS13ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoIGIvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMTAwLXF0NS13ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kNTM5MTVmMTE3YgotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1xdDUtd2ViZW5naW5lLWxpbnV4LTUuMi5wYXRj aApAQCAtMCwwICsxLDQyIEBACitGcm9tIDc0ZTY5ZGE5MmQwYTg5NTEyMmNhNjU5MjJiOWEyYjhi MzkyNmM4ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/RW1pbGlv PTIwQ29ib3M9MjA9QzM9ODFsdmFyZXo/PSA8ZW1pbGlvQG1vemlsbGEuY29tPgorRGF0ZTogV2Vk LCAyOSBNYXkgMjAxOSAxNTozMDozMiArMDIwMAorU3ViamVjdDogRml4IGJ1aWxkIHdpdGggcmVj ZW50IGxpbnV4IGtlcm5lbC4KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKwor UmVjZW50IGtlcm5lbCBjb21taXRbMV0gbW92ZWQgYSBiaXQgdGhlIGRlZmluZSBmb3IgdGhpcyBj b25zdGFudC4gVGhpcyByZXZlYWxlZAorYSBtaXNzaW5nIGluY2x1ZGUgaW4gV2ViUlRDLgorCitb MV06IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZh bGRzL2xpbnV4LmdpdC9jb21taXQvP2lkPTA3NjhlMTcwNzNkYzUKKworQnVnOiB3ZWJydGM6MTA2 NzcKK0NoYW5nZS1JZDogSTZlZDY5ZDMwNzU5OWQwNzc3NjBhZTZhZDc0YmUxMGJmYmRkMWNhYzYK K0NvbW1pdC1RdWV1ZTogS2FybCBXaWJlcmcgPGt3aWJlcmdAd2VicnRjLm9yZz4KK1Jldmlld2Vk LWJ5OiBLYXJsIFdpYmVyZyA8a3dpYmVyZ0B3ZWJydGMub3JnPgorQ3ItQ29tbWl0LVBvc2l0aW9u OiByZWZzL2hlYWRzL21hc3RlckB7IzI4MTA4fQorU2VlLUFsc286IGh0dHBzOi8vY2hyb21pdW0u Z29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC93ZWJydGMvKy82ODA2NTUwZDVkNTFhODIwMTA0YTEy MjA1ZDFmMzdjZTBhY2ViZjE5CitSZXZpZXdlZC1ieTogSsO8cmkgVmFsZG1hbm4gPGp1cmkudmFs ZG1hbm5AcXQuaW8+CistLS0KKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2ZXIuY2MgfCA0ICsr KysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9w aHlzaWNhbF9zb2NrZXRfc2VydmVyLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxfc29ja2V0X3NlcnZlci5jYwor aW5kZXggNDg0NWE3MzM4MGMuLmMzOGQ3ZmRmYWM5IDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxf c29ja2V0X3NlcnZlci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxfc29ja2V0X3NlcnZlci5jYworQEAg LTUxLDYgKzUxLDEwIEBACisgI2luY2x1ZGUgInJ0Y19iYXNlL251bGxfc29ja2V0X3NlcnZlci5o IgorICNpbmNsdWRlICJydGNfYmFzZS90aW1lX3V0aWxzLmgiCisgCisrI2lmIGRlZmluZWQoV0VC UlRDX0xJTlVYKQorKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+CisrI2VuZGlmCisrCisgI2lm IGRlZmluZWQoV0VCUlRDX1dJTikKKyAjZGVmaW5lIExBU1RfU1lTVEVNX0VSUk9SICg6OkdldExh c3RFcnJvcigpKQorICNlbGlmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pICYmIF9fbmF0aXZl X2NsaWVudF9fCistLSAKK2NnaXQgdjEuMi4xCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDEwMC1xdGJ1Zy03NzM2NC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1x dGJ1Zy03NzM2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzNjI5YmYw YjcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1xdGJ1Zy03NzM2 NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gYzA5Y2Y1NzhiZDcy NjdiODY3MzI2MTAxY2QyZDBmMzllN2M4MTRmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IERhdmlkIEZhdXJlIDxkYXZpZC5mYXVyZUBrZGFiLmNvbT4KLURhdGU6IE1vbiwgMDkgU2Vw IDIwMTkgMTg6MTI6MjYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gUVdpZGdldDo6c2V0Rm9jdXNQ cm94eTogYWRqdXN0IGZvY3VzIHdpZGdldCBwcm9wZXJseQotCi1NeSBjb21taXQgM2U3NDYzNDEx ZSBhZGp1c3RlZCB0aGUgZm9jdXMgd2lkZ2V0IGJ5IHNldHRpbmcKLVFBcHBsaWNhdGlvblByaXZh dGU6OmZvY3VzX3dpZGdldCBkaXJlY3RseSwgd2hpbGUgdGhlcmUgaXMgYSBtZXRob2QgZm9yCi1k b2luZyB0aGlzIHByb3Blcmx5LCBpbmNsdWRpbmcgc2V0Rm9jdXNfc3lzKCkgYW5kIGVtaXR0aW5n IHNpZ25hbHMuCi0KLUZpeGVzOiBRVEJVRy03NzM2NAotQ2hhbmdlLUlkOiBJMjE4YWNmN2E5ZGUz OTE3M2QyODJjZWQ0NmRlZjRmNjU1OTRmODBiNAotLS0tCi0KLWRpZmYgLS1naXQgYS9zcmMvd2lk Z2V0cy9rZXJuZWwvcXdpZGdldC5jcHAgYi9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAK LWluZGV4IGNmNWE4MWMuLjY4ODljMmUgMTAwNjQ0Ci0tLS0gcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0LmNwcAotKysrIHF0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5j cHAKLUBAIC02MjA0LDcgKzYyMDQsNyBAQAotIAotICAgICBpZiAoY2hhbmdpbmdBcHBGb2N1c1dp ZGdldCkgewotICAgICAgICAgUVdpZGdldCAqbmV3RGVlcGVzdEZvY3VzUHJveHkgPSBkX2Z1bmMo KS0+ZGVlcGVzdEZvY3VzUHJveHkoKTsKLS0gICAgICAgIFFBcHBsaWNhdGlvblByaXZhdGU6OmZv Y3VzX3dpZGdldCA9IG5ld0RlZXBlc3RGb2N1c1Byb3h5ID8gbmV3RGVlcGVzdEZvY3VzUHJveHkg OiB0aGlzOwotKyAgICAgICAgUUFwcGxpY2F0aW9uUHJpdmF0ZTo6c2V0Rm9jdXNXaWRnZXQobmV3 RGVlcGVzdEZvY3VzUHJveHkgPyBuZXdEZWVwZXN0Rm9jdXNQcm94eSA6IHRoaXMsIFF0OjpOb0Zv Y3VzUmVhc29uKTsKLSAgICAgfQotIH0KLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDEwMS1xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRj aGVzLzAxMDEtcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZjZiOWRiNmFmZQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMS1xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2gKQEAg LTAsMCArMSwzMiBAQAorRnJvbSA3YmMyMzkyYzE5MTE4YTgwMzgwYzc2NjFmYjg2YzY5MDIyZWIy YjQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2lyaWxsIEJ1cnRzZXYgPGtpcmls bC5idXJ0c2V2QHF0LmlvPgorRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxNTowOToyNSArMDIwMAor U3ViamVjdDogW1BBVENIXSBGaXggY29tcGlsYXRpb24gd2l0aCBzeXN0ZW0gSUNVCisKK3N5c3Rl bV9pY3VfY29uZmlnIGlzIG1pc3NpbmcgZGVmYXVsdCB0eXBlIGZvciBVQ0hBUl9UWVBFLCB0aGF0 IGNhdXNlcworYSBtaXNtYXRjaCBvZiB0eXBlcyBhbGwgb3ZlciBDaHJvbWl1bS4gdWludDE2X3Qg aXMgZGVmaW5lZCBhcyBhIGJhc2UgdHlwZQordW5kZXIgbGludXggaW4gY2hyb21pdW0vYnVpbGQv bGludXgvdW5idW5kbGUvaWN1LmduLgorTmVjZXNzYXJ5IGNvbnN0cnVjdGlvbnMgd2VyZSBsb3N0 IGR1cmluZyByZWNlbnQgcmVmYWN0b3JpbmdzLAorYW5kIHNlZW1zIHRvIGJlIHJlc3RvcmVkIGlu IGxhdGVyIGNocm9taXVtID4gNzYuCisKK0NoYW5nZS1JZDogSWUwNWMwMDVlYmNkZWQ5YTIyODM4 NmRiNWQ5YWJlOTg2Mzc4N2VjMmIKKy0tLQorCitkaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ljdS9CVUlMRC5nbgoraW5kZXggYmUzYzkx OS4uNjM5ZjhmZCAxMDA2NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvaWN1L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2ljdS9CVUlMRC5nbgorQEAgLTExNzUsNiArMTE3NSwxMiBAQAor ICAgICAiVVNJTkdfU1lTVEVNX0lDVT0xIiwKKyAgICAgIklDVV9VVElMX0RBVEFfSU1QTD1JQ1Vf VVRJTF9EQVRBX1NUQVRJQyIsCisgICBdCisrCisrICBpZiAoaXNfd2luKSB7CisrICAgIGRlZmlu ZXMgKz0gWyAiVUNIQVJfVFlQRT13Y2hhcl90IiBdCisrICB9IGVsc2UgeworKyAgICBkZWZpbmVz ICs9IFsgIlVDSEFSX1RZUEU9dWludDE2X3QiIF0KKysgIH0KKyB9CisgCisgaWYgKHVzZV9zeXN0 ZW1faWN1KSB7CisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3JjcGtncy9x dDUvdGVtcGxhdGUKaW5kZXggMGI3NGFkZDUxMDEuLjkxMmYzMzUyNThiIDEwMDY0NAotLS0gYS9z cmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMSw4ICsx LDggQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NScKIHBrZ25hbWU9cXQ1Ci12ZXJzaW9uPTUu MTMuMQordmVyc2lvbj01LjE0LjBiZXRhMQogcmV2aXNpb249MQotd3Jrc3JjPSJxdC1ldmVyeXdo ZXJlLXNyYy0ke3ZlcnNpb259Igord3Jrc3JjPSJxdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb24v Yi8tYn0iCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtl IGNsYW5nIGZsZXggZ2l0IGdsaWItZGV2ZWwgZ3BlcmYgbmluamEgcGtnLWNvbmZpZwogIHByb3Rv YnVmIHB5dGhvbiByZTJjIHJ1YnkiCkBAIC0yMCw4ICsyMCw4IEBAIHNob3J0X2Rlc2M9IkNyb3Nz LXBsYXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsgKFFUNSkiCiBtYWludGFpbmVy PSJKw7xyZ2VuIEJ1Y2htw7xsbGVyIDxwdWxsbW9sbEB0LW9ubGluZS5kZT4iCiBsaWNlbnNlPSJH UEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0 LmlvLyIKLWRpc3RmaWxlcz0iaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2Vz L3F0LyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1zcmMtJHt2 ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1hZGYwMDI2NmRjMzgzNTJhMTY2YTk3MzlmMWEyNGEx ZTM2ZjFiZTljMDRiZjcyZTE2ZTE0MmEyNTY0MzY5NzRlCitkaXN0ZmlsZXM9Imh0dHA6Ly9kb3du bG9hZC5xdC5pby9kZXZlbG9wbWVudF9yZWxlYXNlcy9xdC8ke3ZlcnNpb24lLip9LyR7dmVyc2lv bi9iLy1ifS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9uL2IvLWJ9LnRhci54eiIK K2NoZWNrc3VtPWYwN2NmYzI2NzYyMjQ0YmQzNDMxOTBiMWIyZThiMjI3MDgxOTZmMDE3MDI0ZDZh YjU5ZjdmZTFjODQzMmY2YjMKIHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0NS1xdWljazE8NS42 LjAgcXQ1LXF1aWNrMS1kZXZlbDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0NS13ZWJraXQtZGV2 ZWw8NS42LjAKICBxdDUtZW5naW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZlbDw1LjcuMSBxdDUt cGx1Z2luLWd0azw1LjcuMSBxdDUtY2FudmFzM2Q8NS4xMy4wIgogCkBAIC00MTMsNiArNDEzLDcg QEAgZG9fY29uZmlndXJlKCkgewogCiBkb19idWlsZCgpIHsKIAlleHBvcnQgTklOSkFKT0JTPSR7 bWFrZWpvYnN9CisJZXhwb3J0IE5JTkpBSk9CUz0tajQKIAkjIFJ1biBtYWtlIHR3aWNlIGJlY2F1 c2Ugc29tZXRpbWVzIGEgZmlsZSAiY2hyb21lL2dyaXQvZ2VuZXJhdGVkX3Jlc291cmNlcy5oIgog CSMgaXMgbm90IHlldCByZWFkeSB3aGVuIGl0IGlzIHRvIGJlIGluY2x1ZGVkLiBSZXBlYXRpbmcg bWFrZSB3b3JrcyBhcm91bmQgdGhhdAogCSMgcHJvYmxlbSB3aXRob3V0IGhhdmluZyB0byByZXNv cnQgdG8gZGlzYWJsZV9wYXJhbGxlbF9idWlsZD15ZXMKCkZyb20gZjc3M2JiNDI1OTJjYTU1ZTE4 MGRhZmE5NjdkYjkyZWNlYTY4MTIxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9o biA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogRnJpLCAxMSBPY3QgMjAxOSAwMToxNTo0OCArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMi8yXSB0ZWxlZ3JhbS1kZXNrdG9wOiByZWJ1aWxkIGZvciBxdDUu MTQuMAoKW2NpIHNraXBdCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv dGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCBiZTExY2RlNmNmYi4uYjI4MzI2ODBmNzUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNrdG9wCiB2 ZXJzaW9uPTEuOC4xNQotcmV2aXNpb249MQorcmV2aXNpb249MgogX2xpYnRndm9pcF9jb21taXQ9 ZDRhMGY3MTlmZmQ4ZDI5ZTg4NDc0ZjY3YWJjOWZjODYyNjYxYzNiOQogX0dTTF9jb21taXQ9ZDg0 NmZlNTBhM2YwYmI3NzY3YzdlMDg3YTA1ZjRiZTk1ZjRkYTBlYwogX3ZhcmlhbnRfY29tbWl0PTU1 MGFjMmYxNTljYTg4M2QzNjBjMTk2MTQ5YjQ2Njk1NWM3N2E1NzMKQEAgLTE4LDcgKzE4LDcgQEAg bWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrMy1kZXZlbCBsaWJh cHBpbmRpY2F0b3ItZGV2ZWwKICBsaWJkYnVzbWVudS1nbGliLWRldmVsIGxpYm9wZW5hbC1kZXZl bCBtaW5pemlwLWRldmVsIG9wdXMtZGV2ZWwgeHhIYXNoLWRldmVsCiAgJCh2b3B0X2lmIHB1bHNl YXVkaW8gJ3B1bHNlYXVkaW8tZGV2ZWwnKSBxdDUtZGV2ZWwgcmFuZ2UtdjMgbGlidmEtZGV2ZWwK ICByYXBpZGpzb24gbGlibHo0LWRldmVsIHJsb3R0aWUtZGV2ZWwgTWVzYUxpYi1kZXZlbCIKLWRl cGVuZHM9InF0NS1pbWFnZWZvcm1hdHMgcXQ1Pj01LjEzLjE8NS4xMy4yIgorZGVwZW5kcz0icXQ1 LWltYWdlZm9ybWF0cyBxdDU+PTUuMTQuMGJldGExPDUuMTQuMSIKIHNob3J0X2Rlc2M9IlRlbGVn cmFtIERlc2t0b3AgbWVzc2FnaW5nIGFwcCIKIG1haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rl by5uZXQ+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciBXSVRIIE9wZW5TU0wiCg== --===============2691171185013168344==--