From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Adam Williamson To: git-commits@fedoraproject.org Subject: [rpms/pcl] f44: Update to 1.12.0, rediff some patches Date: Thu, 25 Jun 2026 05:50:06 GMT Message-ID: <178236660688.1.1355024039970332869.rpms-pcl-2c52a56c6802@fedoraproject.org> List-ID: X-Git-Repo: rpms/pcl X-Git-Branch: f44 X-Git-Rev: 2c52a56c6802406dedfaf6cb39984241cad05fd5 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvcGNsCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBDb21t aXQgOiAyYzUyYTU2YzY4MDI0MDZkZWRmYWY2Y2IzOTk4NDI0MWNhZDA1ZmQ1CiAgICAgICAgICAg IEF1dGhvciA6IEFkYW0gV2lsbGlhbXNvbiA8YXdpbGxpYW1AcmVkaGF0LmNvbT4KICAgICAgICAg ICAgRGF0ZSAgIDogMjAyMS0wOC0xN1QxMjozNzoyMC0wNzowMAogICAgICAgICAgICBTdGF0cyAg OiArOS8tMzM3MCBpbiAyIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMu ZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9wY2wvYy8yYzUyYTU2YzY4MDI0MDZkZWRmYWY2Y2IzOTk4 NDI0MWNhZDA1ZmQ1P2JyYW5jaD1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgVXBk YXRlIHRvIDEuMTIuMCwgcmVkaWZmIHNvbWUgcGF0Y2hlcwoKVGhpcyBkb2VzIG5vdCB5ZXQgYnVp bGQsIGJ1dCBnZXRzIGZ1cnRoZXIgdGhhbiBiZWZvcmUuIENvbW1pdHRpbmcKaXQgZm9yIFJpY2gg dG8gYnVpbGQgb2ZmIG9mOyBzZWUKaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVn LmNnaT9pZD0xOTkyODkzCgotLS0KZGlmZiAtLWdpdCBhLzQyNjIucGF0Y2ggYi80MjYyLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWQ3ZGY2Li4wMDAwMDAwCi0tLSBhLzQy NjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzYxICswLDAgQEAKLWRpZmYgLXVwIC4vMmQv Q01ha2VMaXN0cy50eHQuNDI2MiAuLzJkL0NNYWtlTGlzdHMudHh0Ci0tLS0gLi8yZC9DTWFrZUxp c3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi8y ZC9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMxOTE3NjcyNSAtMDUwMAotQEAg LTMxLDggKzMxLDYgQEAgc2V0KGltcGxfaW5jcwotICkKLSAKLSBpZigke1ZUS19GT1VORH0pCi0t ICBzZXQoVlRLX1VTRV9GSUxFICIke1ZUS19VU0VfRklMRX0iIENBQ0hFIElOVEVSTkFMICJWVEtf VVNFX0ZJTEUiKQotLSAgaW5jbHVkZSgiJHtWVEtfVVNFX0ZJTEV9IikKLSAgIHNldChWVEtfSU9f VEFSR0VUX0xJTktfTElCUkFSSUVTIHZ0a0NvbW1vbiB2dGtXaWRnZXRzIHZ0a0lPIHZ0a0ltYWdp bmcpCi0gZW5kaWYoKQotIAotZGlmZiAtdXAgLi9hcHBzLzNkX3JlY19mcmFtZXdvcmsvQ01ha2VM aXN0cy50eHQuNDI2MiAuL2FwcHMvM2RfcmVjX2ZyYW1ld29yay9DTWFrZUxpc3RzLnR4dAotLS0t IC4vYXBwcy8zZF9yZWNfZnJhbWV3b3JrL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMC0wOC0xNCAw ODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvM2RfcmVjX2ZyYW1ld29yay9DTWFr ZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNTE3Njc1MCAtMDUwMAotQEAgLTksNyAr OSw2IEBAIGlmKE5PVCBWVEtfRk9VTkQpCi0gZWxzZSgpCi0gICBzZXQoREVGQVVMVCBUUlVFKQot ICAgc2V0KFJFQVNPTikKLS0gIGluY2x1ZGUoIiR7VlRLX1VTRV9GSUxFfSIpCi0gZW5kaWYoKQot IAotICMgT3Blbk5JIGZvdW5kPwotZGlmZiAtdXAgLi9hcHBzLzNkX3JlY19mcmFtZXdvcmsvaW5j bHVkZS9wY2wvYXBwcy8zZF9yZWNfZnJhbWV3b3JrL3V0aWxzL3Z0a19tb2RlbF9zYW1wbGluZy5o LjQyNjIgLi9hcHBzLzNkX3JlY19mcmFtZXdvcmsvaW5jbHVkZS9wY2wvYXBwcy8zZF9yZWNfZnJh bWV3b3JrL3V0aWxzL3Z0a19tb2RlbF9zYW1wbGluZy5oCi0tLS0gLi9hcHBzLzNkX3JlY19mcmFt ZXdvcmsvaW5jbHVkZS9wY2wvYXBwcy8zZF9yZWNfZnJhbWV3b3JrL3V0aWxzL3Z0a19tb2RlbF9z YW1wbGluZy5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAu L2FwcHMvM2RfcmVjX2ZyYW1ld29yay9pbmNsdWRlL3BjbC9hcHBzLzNkX3JlY19mcmFtZXdvcmsv dXRpbHMvdnRrX21vZGVsX3NhbXBsaW5nLmgJMjAyMS0wMi0yMSAyMTozNDowMi45NTI0NjYwNDQg LTA1MDAKLUBAIC04LDYgKzgsNyBAQAotICNwcmFnbWEgb25jZQotIAotICNpbmNsdWRlIDxwY2wv Y29tbW9uL2NvbW1vbi5oPgotKyNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi92dGsvcGNsX3Z0 a19jb21wYXRpYmlsaXR5Lmg+Ci0gCi0gI2luY2x1ZGUgPHZ0a0NlbGxBcnJheS5oPgotICNpbmNs dWRlIDx2dGtQTFlSZWFkZXIuaD4KLUBAIC03NCw3ICs3NSw3IEBAIHJhbmRQU3VyZmFjZSh2dGtQ b2x5RGF0YSogcG9seWRhdGEsCi0gCi0gICBkb3VibGUgQVszXSwgQlszXSwgQ1szXTsKLSAgIHZ0 a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSogcHRJZHMgPSBudWxscHRyOwotKyAgdnRr Q2VsbFB0c1B0ciBwdElkcyA9IG51bGxwdHI7Ci0gICBwb2x5ZGF0YS0+R2V0Q2VsbFBvaW50cyhl bCwgbnB0cywgcHRJZHMpOwotIAotICAgaWYgKHB0SWRzID09IG51bGxwdHIpCi1AQCAtOTgsNyAr OTksOSBAQCB1bmlmb3JtX3NhbXBsaW5nKGNvbnN0IHZ0a1NtYXJ0UG9pbnRlcjx2Ci0gICBkb3Vi bGUgcDFbM10sIHAyWzNdLCBwM1szXSwgdG90YWxBcmVhID0gMDsKLSAgIHN0ZDo6dmVjdG9yPGRv dWJsZT4gY3VtdWxhdGl2ZUFyZWFzKGNlbGxzLT5HZXROdW1iZXJPZkNlbGxzKCksIDApOwotICAg c3RkOjpzaXplX3QgaSA9IDA7Ci0tICB2dGtJZFR5cGUgbnB0cyA9IDAsICpwdElkcyA9IG51bGxw dHI7Ci0rICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0rICB2dGtDZWxsUHRzUHRyIHB0SWRzID0gbnVs bHB0cjsKLSsKLSAgIGZvciAoY2VsbHMtPkluaXRUcmF2ZXJzYWwoKTsgY2VsbHMtPkdldE5leHRD ZWxsKG5wdHMsIHB0SWRzKTsgaSsrKSB7Ci0gICAgIHBvbHlkYXRhLT5HZXRQb2ludChwdElkc1sw XSwgcDEpOwotICAgICBwb2x5ZGF0YS0+R2V0UG9pbnQocHRJZHNbMV0sIHAyKTsKLWRpZmYgLXVw IC4vYXBwcy9jbG91ZF9jb21wb3Nlci9DTWFrZUxpc3RzLnR4dC40MjYyIC4vYXBwcy9jbG91ZF9j b21wb3Nlci9DTWFrZUxpc3RzLnR4dAotLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9DTWFrZUxp c3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9h cHBzL2Nsb3VkX2NvbXBvc2VyL0NNYWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzI2 MTc2NzU0IC0wNTAwCi1AQCAtMTQsNyArMTQsNiBAQCBpZihOT1QgVlRLX0ZPVU5EKQotIGVsc2Uo KQotICAgc2V0KERFRkFVTFQgVFJVRSkKLSAgIHNldChSRUFTT04pCi0tICBpbmNsdWRlKCIke1ZU S19VU0VfRklMRX0iKQotIGVuZGlmKCkKLSAKLSAjIFFUNSBGb3VuZD8KLUBAIC0yNyw3ICsyNiw3 IEBAIGVsc2VpZihOT1QgJHtERUZBVUxUfSBTVFJFUVVBTCAiQVVUT19PRkYKLSBlbmRpZigpCi0g Ci0gIyBRVlRLPwotLWlmKE5PVCBRVlRLX0ZPVU5EKQotK2lmKE5PVCBIQVZFX1FWVEspCi0gICBz ZXQoREVGQVVMVCBBVVRPX09GRikKLSAgIHNldChSRUFTT04gIkNsb3VkIGNvbXBvc2VyIHJlcXVp cmVzIFFWVEsiKQotIGVsc2VpZihOT1QgJHtERUZBVUxUfSBTVFJFUVVBTCAiQVVUT19PRkYiKQot QEAgLTQxLDcgKzQwLDcgQEAgaWYoIiR7REVGQVVMVH0iIFNUUkVRVUFMICJUUlVFIikKLSBlbmRp ZigpCi0gCi0gUENMX1NVQlNVQlNZU19PUFRJT04oYnVpbGQgIiR7U1VCU1lTX05BTUV9IiAiJHtT VUJTVUJTWVNfTkFNRX0iICIke1NVQlNVQlNZU19ERVNDfSIgJHtERUZBVUxUfSAiJHtSRUFTT059 IikKLS1QQ0xfU1VCU1VCU1lTX0RFUEVORChidWlsZCAiJHtTVUJTWVNfTkFNRX0iICIke1NVQlNV QlNZU19OQU1FfSIgREVQUyAke1NVQlNVQlNZU19ERVBTfSkKLStQQ0xfU1VCU1VCU1lTX0RFUEVO RChidWlsZCAiJHtTVUJTWVNfTkFNRX0iICIke1NVQlNVQlNZU19OQU1FfSIgREVQUyAke1NVQlNV QlNZU19ERVBTfSBFWFRfREVQUyB2dGspCi0gCi0gUENMX0FERF9ET0MoJHtTVUJTVUJTWVNfTkFN RX0pCi0gCi1AQCAtOTIsNyArOTEsMTQgQEAgc2V0KFBDTF9MSUJfVFlQRV9PUklHSU4gJHtQQ0xf TElCX1RZUEV9KQotIHNldChQQ0xfTElCX1RZUEUgU1RBVElDKQotIFFUNV9XUkFQX0NQUChJTlRF UkZBQ0VfSEVBREVSU19NT0MgJHtJTlRFUkZBQ0VfSEVBREVSU30gT1BUSU9OUyAtREJPT1NUX1RU X0hBU19PUEVSQVRPUl9IUFBfSU5DTFVERUQgLURCT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQ RUNJQUxJWkFUSU9OKQotIFBDTF9BRERfTElCUkFSWShwY2xfY2NfdG9vbF9pbnRlcmZhY2UgQ09N UE9ORU5UICR7U1VCU1VCU1lTX05BTUV9IFNPVVJDRVMgJHtJTlRFUkZBQ0VfSEVBREVSU30gJHtJ TlRFUkZBQ0VfU09VUkNFU30gJHtJTlRFUkZBQ0VfSEVBREVSU19NT0N9KQotLXRhcmdldF9saW5r X2xpYnJhcmllcyhwY2xfY2NfdG9vbF9pbnRlcmZhY2UgcGNsX2NvbW1vbiBwY2xfZmlsdGVycyBw Y2xfc2VhcmNoIHBjbF92aXN1YWxpemF0aW9uICR7VlRLX0xJQlJBUklFU30gUXQ1OjpXaWRnZXRz KQotKwotK3NldCh2dGtfbGlicyAke1ZUS19MSUJSQVJJRVN9KQotKyNUT0RPOiBVcGRhdGUgd2hl biBDTUFLRSAzLjEwIGlzIGF2YWlsYWJsZQotK2lmIChOT1QgKCR7VlRLX1ZFUlNJT059IFZFUlNJ T05fTEVTUyA5LjApKQotKyAgc2V0KHZ0a19saWJzIFZUSzo6R1VJU3VwcG9ydFF0KQotK2VuZGlm KCkKLSt0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX2NjX3Rvb2xfaW50ZXJmYWNlIHBjbF9jb21t b24gcGNsX2ZpbHRlcnMgcGNsX3NlYXJjaCBwY2xfdmlzdWFsaXphdGlvbiBRdDU6OldpZGdldHMg JHt2dGtfbGlic30pCi0rCi0gc2V0KFBDTF9MSUJfVFlQRSAke1BDTF9MSUJfVFlQRV9PUklHSU59 KQotIAotIGlmKEFQUExFKQotZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUv cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvY2xvdWRfdmlldy5oLjQyNjIgLi9hcHBzL2Nsb3VkX2Nv bXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvY2xvdWRfdmlldy5oCi0tLS0g Li9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvY2xv dWRfdmlldy5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAu L2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9jbG91 ZF92aWV3LmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjYxNzY3NTQgLTA1MDAKLUBAIC00Miw4ICs0 MiwxNSBAQAotICNpbmNsdWRlIDx2dGtFdmVudFF0U2xvdENvbm5lY3QuaD4KLSAKLSAjaW5jbHVk ZSA8cGNsL3Zpc3VhbGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaD4KLSsjaW5jbHVkZSA8cGNsL3Zp c3VhbGl6YXRpb24vcXZ0a19jb21wYXRpYmlsaXR5Lmg+Ci0gI2luY2x1ZGUgPHBjbC9hcHBzL2Ns b3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9pbnRlcmFjdG9yX3N0eWxlX3N3aXRjaC5oPgot IAotKwotKyNpbmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KLSsjaW5jbHVkZSA8dnRrT3JpZW50 YXRpb25NYXJrZXJXaWRnZXQuaD4KLSsjaW5jbHVkZSA8dnRrQXhlc0FjdG9yLmg+Ci0rI2luY2x1 ZGUgPHZ0a1ZlcnNpb24uaD4KLSsKLSBjbGFzcyBRSXRlbVNlbGVjdGlvbjsKLSBjbGFzcyBRU3Rh bmRhcmRJdGVtOwotIAotQEAgLTY3LDExICs3NCwxMiBAQCBuYW1lc3BhY2UgcGNsCi0gICAgICAg Ci0gICAgICAgdm9pZCAKLSAgICAgICBzZXRNb2RlbCAoUHJvamVjdE1vZGVsKiBuZXdfbW9kZWwp OwotKyAgICAgIAotICAgICAgIFByb2plY3RNb2RlbCogCi0gICAgICAgZ2V0TW9kZWwgKCkgY29u c3QgeyByZXR1cm4gbW9kZWxfOyB9Ci0gICAgICAgCi0tICAgICAgUVZUS1dpZGdldCogCi0tICAg ICAgZ2V0UVZUSygpIGNvbnN0IHtyZXR1cm4gcXZ0a187IH0KLSsgICAgICBQQ0xRVlRLV2lkZ2V0 KgotKyAgICAgIGdldFFWVEsoKSBjb25zdCB7IHJldHVybiBxdnRrXzsgfQotICAgICAgIAotICAg ICAgIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6UHRyCi0gICAgICAgZ2V0UENM VmlzdWFsaXplciAoKSBjb25zdCB7IHJldHVybiB2aXNfOyB9Ci1AQCAtMTQxLDcgKzE0OSw5IEBA IG5hbWVzcGFjZSBwY2wKLSAgICAgICAKLSAgICAgICBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZp c3VhbGl6ZXI6OlB0ciB2aXNfOwotICAgICAgIFByb2plY3RNb2RlbCogbW9kZWxfOwotLSAgICAg IFFWVEtXaWRnZXQqIHF2dGtfOwotKwotKyAgICAgIFBDTFFWVEtXaWRnZXQqIHF2dGtfOwotKwot ICAgICAgIHZ0a1NtYXJ0UG9pbnRlcjxJbnRlcmFjdG9yU3R5bGVTd2l0Y2g+IHN0eWxlX3N3aXRj aF87Ci0gICAgICAgCi0gICAgICAgdnRrU21hcnRQb2ludGVyPHZ0a09yaWVudGF0aW9uTWFya2Vy V2lkZ2V0PiBheGVzX3dpZGdldF87Ci1kaWZmIC11cCAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5j bHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9pdGVtcy9jbG91ZF9pdGVtLmguNDI2MiAuL2Fw cHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9pdGVtcy9j bG91ZF9pdGVtLmgKLS0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9j bG91ZF9jb21wb3Nlci9pdGVtcy9jbG91ZF9pdGVtLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAz LjAwMDAwMDAwMCAtMDQwMAotKysrIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9h cHBzL2Nsb3VkX2NvbXBvc2VyL2l0ZW1zL2Nsb3VkX2l0ZW0uaAkyMDIxLTAyLTIxIDIxOjMyOjU4 LjMyNjE3Njc1NCAtMDUwMAotQEAgLTQwLDEwICs0MCwxNyBAQAotICNpbmNsdWRlIDxRRGVidWc+ Ci0gCi0gI2luY2x1ZGUgPHBjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL2l0ZW1zL2Nsb3VkX2NvbXBv c2VyX2l0ZW0uaD4KLSsKLSsjaW5jbHVkZSA8cGNsL3BvaW50X3R5cGVzLmg+Ci0rI2luY2x1ZGUg PHBjbC9wb2ludF9jbG91ZC5oPgotKyNpbmNsdWRlIDxwY2wvUENMUG9pbnRDbG91ZDIuaD4KLSAj aW5jbHVkZSA8cGNsL21lbW9yeS5oPgotICNpbmNsdWRlIDxwY2wvcGNsX21hY3Jvcy5oPgotLSNp bmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXplci5oPgotICNpbmNsdWRlIDxw Y2wvc2VhcmNoL2tkdHJlZS5oPgotKyNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9wb2ludF9j bG91ZF9nZW9tZXRyeV9oYW5kbGVycy5oPgotKyNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9w b2ludF9jbG91ZF9jb2xvcl9oYW5kbGVycy5oPgotKyNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlv bi9wY2xfdmlzdWFsaXplci5oPgotKwotIAotIC8vVHlwZWRlZnMgdG8gbWFrZSB0aGluZ3Mgc2Fu ZQotIHVzaW5nIEdlb21ldHJ5SGFuZGxlciA9IHBjbDo6dmlzdWFsaXphdGlvbjo6UG9pbnRDbG91 ZEdlb21ldHJ5SGFuZGxlcjxwY2w6OlBDTFBvaW50Q2xvdWQyPjsKLWRpZmYgLXVwIC4vYXBwcy9j bG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL2l0ZW1zL2ZwZmhf aXRlbS5oLjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRf Y29tcG9zZXIvaXRlbXMvZnBmaF9pdGVtLmgKLS0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5j bHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9pdGVtcy9mcGZoX2l0ZW0uaC40MjYyCTIwMjAt MDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2Vy L2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvaXRlbXMvZnBmaF9pdGVtLmgJMjAyMS0w Mi0yMSAyMTozMjo1OC4zMjYxNzY3NTQgLTA1MDAKLUBAIC00MSwxMCArNDEsOSBAQAotICNpbmNs dWRlIDxwY2wvZmVhdHVyZXMvZnBmaC5oPgotIAotICNpbmNsdWRlIDxwY2wvYXBwcy9jbG91ZF9j b21wb3Nlci9pdGVtcy9jbG91ZF9jb21wb3Nlcl9pdGVtLmg+Ci0rI2luY2x1ZGUgPHBjbC92aXN1 YWxpemF0aW9uL3F2dGtfY29tcGF0aWJpbGl0eS5oPgotICNpbmNsdWRlIDxwY2wvdmlzdWFsaXph dGlvbi9wY2xfcGxvdHRlci5oPgotIAotLWNsYXNzIFFWVEtXaWRnZXQ7Ci0tCi0gbmFtZXNwYWNl IHBjbAotIHsKLSAgIG5hbWVzcGFjZSBjbG91ZF9jb21wb3NlcgotQEAgLTc0LDcgKzczLDcgQEAg bmFtZXNwYWNlIHBjbAotICAgICAgICAgcGNsOjpQb2ludENsb3VkPHBjbDo6RlBGSFNpZ25hdHVy ZTMzPjo6UHRyIGZwZmhfcHRyXzsKLSAgICAgICAgIGRvdWJsZSByYWRpdXNfOwotICAgICAgICAg cGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xQbG90dGVyOjpQdHIgcGxvdF87Ci0tICAgICAgICBRVlRL V2lkZ2V0ICpxdnRrXzsKLSsgICAgICAgIFBDTFFWVEtXaWRnZXQqIHF2dGtfOwotICAgICAgICAg UVdpZGdldCAqaGlzdF9wYWdlXzsKLSAgICAgfTsKLSAKLWRpZmYgLXVwIC4vYXBwcy9jbG91ZF9j b21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9j bGlja190cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5oLjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBv c2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2NsaWNr X3RyYWNrYmFsbF9pbnRlcmFjdG9yX3N0eWxlLmgKLS0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIv aW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvY2xpY2tfdHJh Y2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUuaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAw MDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xv dWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2NsaWNrX3RyYWNrYmFsbF9pbnRlcmFjdG9yX3N0 eWxlLmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjYxNzY3NTQgLTA1MDAKLUBAIC0zOSw2ICszOSw4 IEBACi0gCi0gI2luY2x1ZGUgPHBjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9y cy9pbnRlcmFjdG9yX3N0eWxlX3N3aXRjaC5oPgotIAotKyNpbmNsdWRlIDx2dGtJbnRlcmFjdG9y U3R5bGVUcmFja2JhbGxBY3Rvci5oPgotKwotIG5hbWVzcGFjZSBwY2wKLSB7Ci0gICBuYW1lc3Bh Y2UgY2xvdWRfY29tcG9zZXIKLWRpZmYgLXVwIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRl L3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9pbnRlcmFjdG9yX3N0eWxl X3N3aXRjaC5oLjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xv dWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jfc3R5bGVfc3dpdGNoLmgKLS0t LSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9w b2ludF9zZWxlY3RvcnMvaW50ZXJhY3Rvcl9zdHlsZV9zd2l0Y2guaC40MjYyCTIwMjAtMDgtMTQg MDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1 ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jfc3R5 bGVfc3dpdGNoLmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjYxNzY3NTQgLTA1MDAKLUBAIC0zOSwx MiArMzksMTkgQEAKLSAKLSAjaW5jbHVkZSA8UU1hcD4KLSAKLS0jaW5jbHVkZSA8cGNsL3Zpc3Vh bGl6YXRpb24vdnRrLmg+Ci0gI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL2ludGVyYWN0b3Jf c3R5bGUuaD4KLSAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vY29tbW9uL2FjdG9yX21hcC5o PgotICNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9jb21tb24vcmVuX3dpbl9pbnRlcmFjdF9t YXAuaD4KLSAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaD4KLSAK LSsjaW5jbHVkZSA8dnRrU21hcnRQb2ludGVyLmg+Ci0rI2luY2x1ZGUgPHZ0a0FyZWFQaWNrZXIu aD4KLSsjaW5jbHVkZSA8dnRrUG9pbnRQaWNrZXIuaD4KLSsjaW5jbHVkZSA8dnRrUmVuZGVyV2lu ZG93SW50ZXJhY3Rvci5oPgotKyNpbmNsdWRlIDx2dGtDb21tYW5kLmg+Ci0rI2luY2x1ZGUgPHZ0 a1JlbmRlcmVyQ29sbGVjdGlvbi5oPgotKyNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGUuaD4K LSsKLSBjbGFzcyBRVlRLV2lkZ2V0OwotIAotIG5hbWVzcGFjZSBwY2wKLWRpZmYgLXVwIC4vYXBw cy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3Nl bGVjdG9ycy9tYW5pcHVsYXRpb25fZXZlbnQuaC40MjYyIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9p bmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9tYW5pcHVsYXRp b25fZXZlbnQuaAotLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Ns b3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9tYW5pcHVsYXRpb25fZXZlbnQuaC40MjYyCTIw MjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBv c2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL21hbmlw dWxhdGlvbl9ldmVudC5oCTIwMjEtMDItMjEgMjE6MzI6NTguMzI2MTc2NzU0IC0wNTAwCi1AQCAt MzcsNyArMzcsNiBAQAotIAotICNwcmFnbWEgb25jZQotIAotLSNpbmNsdWRlIDxwY2wvdmlzdWFs aXphdGlvbi92dGsuaD4KLSAjaW5jbHVkZSA8cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvaXRlbXMv Y2xvdWRfaXRlbS5oPgotIAotIG5hbWVzcGFjZSBwY2wKLWRpZmYgLXVwIC4vYXBwcy9jbG91ZF9j b21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9y ZWN0YW5ndWxhcl9mcnVzdHVtX3NlbGVjdG9yLmguNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9zZXIv aW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvcmVjdGFuZ3Vs YXJfZnJ1c3R1bV9zZWxlY3Rvci5oCi0tLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUv cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3JlY3Rhbmd1bGFyX2ZydXN0 dW1fc2VsZWN0b3IuaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0r KysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIv cG9pbnRfc2VsZWN0b3JzL3JlY3Rhbmd1bGFyX2ZydXN0dW1fc2VsZWN0b3IuaAkyMDIxLTAyLTIx IDIxOjMyOjU4LjMyNjE3Njc1NCAtMDUwMAotQEAgLTM5LDYgKzM5LDEwIEBACi0gCi0gI2luY2x1 ZGUgPHBjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9pbnRlcmFjdG9yX3N0 eWxlX3N3aXRjaC5oPgotIAotKyNpbmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KLSsjaW5jbHVk ZSA8dnRrUmVuZGVyZXJDb2xsZWN0aW9uLmg+Ci0rI2luY2x1ZGUgPHZ0a0ludGVyYWN0b3JTdHls ZVJ1YmJlckJhbmRQaWNrLmg+Ci0rCi0gbmFtZXNwYWNlIHBjbAotIHsKLSAgIG5hbWVzcGFjZSBj bG91ZF9jb21wb3NlcgotZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNs L2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3NlbGVjdGVkX3RyYWNrYmFsbF9p bnRlcmFjdG9yX3N0eWxlLmguNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wv YXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvc2VsZWN0ZWRfdHJhY2tiYWxsX2lu dGVyYWN0b3Jfc3R5bGUuaAotLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9h cHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9zZWxlY3RlZF90cmFja2JhbGxfaW50 ZXJhY3Rvcl9zdHlsZS5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAK LSsrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nl ci9wb2ludF9zZWxlY3RvcnMvc2VsZWN0ZWRfdHJhY2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUuaAky MDIxLTAyLTIxIDIxOjMyOjU4LjMyNjE3Njc1NCAtMDUwMAotQEAgLTM3LDYgKzM3LDEwIEBACi0g Ci0gI2luY2x1ZGUgPHBjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9pbnRl cmFjdG9yX3N0eWxlX3N3aXRjaC5oPgotIAotKyNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVU cmFja2JhbGxBY3Rvci5oPgotKyNpbmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KLSsjaW5jbHVk ZSA8dnRrTWF0cml4NHg0Lmg+Ci0rCi0gbmFtZXNwYWNlIHBjbAotIHsKLSAgIG5hbWVzcGFjZSBj bG91ZF9jb21wb3NlcgotZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNs L2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3NlbGVjdGlvbl9ldmVudC5oLjQy NjIgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIv cG9pbnRfc2VsZWN0b3JzL3NlbGVjdGlvbl9ldmVudC5oCi0tLS0gLi9hcHBzL2Nsb3VkX2NvbXBv c2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3NlbGVj dGlvbl9ldmVudC5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsr KyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9w b2ludF9zZWxlY3RvcnMvc2VsZWN0aW9uX2V2ZW50LmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjYx NzY3NTQgLTA1MDAKLUBAIC0zNyw5ICszNywxNCBAQAotIAotICNwcmFnbWEgb25jZQotIAotLSNp bmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi92dGsuaD4KLSAjaW5jbHVkZSA8cGNsL2FwcHMvY2xv dWRfY29tcG9zZXIvaXRlbXMvY2xvdWRfaXRlbS5oPgotIAotKyNpbmNsdWRlIDx2dGtTbWFydFBv aW50ZXIuaD4KLSsjaW5jbHVkZSA8dnRrUG9seURhdGEuaD4KLSsjaW5jbHVkZSA8dnRrQWN0b3Iu aD4KLSsjaW5jbHVkZSA8dnRrRGF0YVNldE1hcHBlci5oPgotKyNpbmNsdWRlIDx2dGtSZW5kZXJl ci5oPgotKwotIG5hbWVzcGFjZSBwY2wKLSB7Ci0gICBuYW1lc3BhY2UgY2xvdWRfY29tcG9zZXIK LWRpZmYgLXVwIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvY2xvdWRfdmlldy5jcHAuNDI2MiAu L2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL2Nsb3VkX3ZpZXcuY3BwCi0tLS0gLi9hcHBzL2Nsb3Vk X2NvbXBvc2VyL3NyYy9jbG91ZF92aWV3LmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAw MDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9jbG91ZF92aWV3LmNw cAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNzE3Njc1OCAtMDUwMAotQEAgLTUsMjAgKzUsMjkgQEAK LSAjaW5jbHVkZSA8cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3NlbGVj dGlvbl9ldmVudC5oPgotICNpbmNsdWRlIDxwY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9z ZWxlY3RvcnMvbWFuaXB1bGF0aW9uX2V2ZW50Lmg+Ci0gCi0rI2luY2x1ZGUgPHZ0a0dlbmVyaWNP cGVuR0xSZW5kZXJXaW5kb3cuaD4KLSsKLSAjaW5jbHVkZSA8UURlYnVnPgotIAotLSNpbmNsdWRl IDxRVlRLV2lkZ2V0Lmg+Ci0gCi0gcGNsOjpjbG91ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3OjpDbG91 ZFZpZXcgKFFXaWRnZXQqIHBhcmVudCkKLSAgIDogUVdpZGdldCAocGFyZW50KQotIHsKLS0gIHZp c18ucmVzZXQgKG5ldyBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIgKCIiLCBmYWxz ZSkpOwotLSAgdmlzXy0+Z2V0SW50ZXJhY3RvclN0eWxlICgpLT5zZXRLZXlib2FyZE1vZGlmaWVy IChwY2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKLSsgIHF2dGtf ID0gbmV3IFBDTFFWVEtXaWRnZXQodGhpcyk7Ci0gICAvL0NyZWF0ZSB0aGUgUVZUS1dpZGdldAot LSAgcXZ0a18gPSBuZXcgUVZUS1dpZGdldCAodGhpcyk7Ci0tICBxdnRrXy0+U2V0UmVuZGVyV2lu ZG93ICh2aXNfLT5nZXRSZW5kZXJXaW5kb3cgKCkpOwotKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+ IDgKLSsgIGF1dG8gcmVuZGVyZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXco KTsKLSsgIGF1dG8gcmVuZGVyV2luZG93ID0gdnRrU21hcnRQb2ludGVyPHZ0a0dlbmVyaWNPcGVu R0xSZW5kZXJXaW5kb3c+OjpOZXcoKTsKLSsgIHJlbmRlcldpbmRvdy0+QWRkUmVuZGVyZXIocmVu ZGVyZXIpOwotKyAgdmlzXy5yZXNldChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxp emVyKHJlbmRlcmVyLCByZW5kZXJXaW5kb3csICIiLCBmYWxzZSkpOwotKyNlbHNlCi0rICB2aXNf LnJlc2V0KG5ldyBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIoIiIsIGZhbHNlKSk7 Ci0rI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAotKyAgc2V0UmVuZGVyV2luZG93Q29t cGF0KCpxdnRrXywgKih2aXNfLT5nZXRSZW5kZXJXaW5kb3coKSkpOwotKyAgdmlzXy0+c2V0dXBJ bnRlcmFjdG9yKGdldEludGVyYWN0b3JDb21wYXQoKnF2dGtfKSwgZ2V0UmVuZGVyV2luZG93Q29t cGF0KCpxdnRrXyksIHN0eWxlX3N3aXRjaF8pOwotKyAgdmlzXy0+Z2V0SW50ZXJhY3RvclN0eWxl KCktPnNldEtleWJvYXJkTW9kaWZpZXIocGNsOjp2aXN1YWxpemF0aW9uOjpJTlRFUkFDVE9SX0tC X01PRF9TSElGVCk7Ci0rICAKLSAgIGluaXRpYWxpemVJbnRlcmFjdG9yU3dpdGNoICgpOwotLSAg dmlzXy0+c2V0dXBJbnRlcmFjdG9yIChxdnRrXy0+R2V0SW50ZXJhY3RvciAoKSwgcXZ0a18tPkdl dFJlbmRlcldpbmRvdyAoKSwgc3R5bGVfc3dpdGNoXyk7Ci0gICAKLSAgIFFHcmlkTGF5b3V0ICpt YWluTGF5b3V0ID0gbmV3IFFHcmlkTGF5b3V0ICh0aGlzKTsKLSAgIG1haW5MYXlvdXQtPiBhZGRX aWRnZXQgKHF2dGtfLDAsMCk7Ci1AQCAtMjgsMTMgKzM3LDIyIEBAIHBjbDo6Y2xvdWRfY29tcG9z ZXI6OkNsb3VkVmlldzo6Q2xvdWRWaWUKLSAgIDogUVdpZGdldCAocGFyZW50KQotIHsKLSAgIG1v ZGVsXyA9IG1vZGVsOwotLSAgdmlzXy5yZXNldCAobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENM VmlzdWFsaXplciAoIiIsIGZhbHNlKSk7Ci0tIC8vIHZpc18tPmdldEludGVyYWN0b3JTdHlsZSAo KS0+c2V0S2V5Ym9hcmRNb2RpZmllciAocGNsOjp2aXN1YWxpemF0aW9uOjpJTlRFUkFDVE9SX0tC X01PRF9TSElGVCk7Ci0rICAKLSsgIHF2dGtfID0gbmV3IFBDTFFWVEtXaWRnZXQodGhpcyk7Ci0g ICAvL0NyZWF0ZSB0aGUgUVZUS1dpZGdldAotLSAgcXZ0a18gPSBuZXcgUVZUS1dpZGdldCAodGhp cyk7Ci0tICBxdnRrXy0+U2V0UmVuZGVyV2luZG93ICh2aXNfLT5nZXRSZW5kZXJXaW5kb3cgKCkp OwotKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsgIGF1dG8gcmVuZGVyZXIgPSB2dGtTbWFy dFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKLSsgIGF1dG8gcmVuZGVyV2luZG93ID0gdnRr U21hcnRQb2ludGVyPHZ0a0dlbmVyaWNPcGVuR0xSZW5kZXJXaW5kb3c+OjpOZXcoKTsKLSsgIHJl bmRlcldpbmRvdy0+QWRkUmVuZGVyZXIocmVuZGVyZXIpOwotKyAgdmlzXy5yZXNldChuZXcgcGNs Ojp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyKHJlbmRlcmVyLCByZW5kZXJXaW5kb3csICIi LCBmYWxzZSkpOwotKyNlbHNlCi0rICB2aXNfLnJlc2V0KG5ldyBwY2w6OnZpc3VhbGl6YXRpb246 OlBDTFZpc3VhbGl6ZXIoIiIsIGZhbHNlKSk7Ci0rI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9O ID4gOAotKyAgc2V0UmVuZGVyV2luZG93Q29tcGF0KCpxdnRrXywgKih2aXNfLT5nZXRSZW5kZXJX aW5kb3coKSkpOwotKyAgdmlzXy0+c2V0dXBJbnRlcmFjdG9yKGdldEludGVyYWN0b3JDb21wYXQo KnF2dGtfKSwgZ2V0UmVuZGVyV2luZG93Q29tcGF0KCpxdnRrXyksIHN0eWxlX3N3aXRjaF8pOwot KyAgLy92aXNfLT5nZXRJbnRlcmFjdG9yU3R5bGUoKS0+c2V0S2V5Ym9hcmRNb2RpZmllcihwY2w6 OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKLSsKLSAgIGluaXRpYWxp emVJbnRlcmFjdG9yU3dpdGNoICgpOwotLSAgdmlzXy0+c2V0dXBJbnRlcmFjdG9yIChxdnRrXy0+ R2V0SW50ZXJhY3RvciAoKSwgcXZ0a18tPkdldFJlbmRlcldpbmRvdyAoKSwgc3R5bGVfc3dpdGNo Xyk7Ci0gICBzZXRNb2RlbChtb2RlbCk7Ci0gICAKLSAgIFFHcmlkTGF5b3V0ICptYWluTGF5b3V0 ID0gbmV3IFFHcmlkTGF5b3V0ICh0aGlzKTsKLUBAIC01Nyw5ICs3NSw5IEBAIHBjbDo6Y2xvdWRf Y29tcG9zZXI6OkNsb3VkVmlldzo6c2V0TW9kZWwKLSAgIGNvbm5lY3RTaWduYWxzQW5kU2xvdHMo KTsKLSAgIC8vUmVmcmVzaCB0aGUgdmlldwotICAgcXZ0a18tPnNob3coKTsKLS0gIHF2dGtfLT51 cGRhdGUgKCk7Ci0rICByZWZyZXNoKCk7Ci0gICAKLS0gLy8gdmlzXy0+YWRkT3JpZW50YXRpb25N YXJrZXJXaWRnZXRBeGVzIChxdnRrXy0+R2V0SW50ZXJhY3RvciAoKSk7Ci0rIC8vIHZpc18tPmFk ZE9yaWVudGF0aW9uTWFya2VyV2lkZ2V0QXhlcyAoZ2V0SW50ZXJhY3RvckNvbXBhdChxdnRrXykp OwotIH0KLSAKLSB2b2lkCi1AQCAtNzYsNyArOTQsMTEgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6 Q2xvdWRWaWV3Ojpjb25uZWN0UwotIHZvaWQKLSBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZp ZXc6OnJlZnJlc2ggKCkKLSB7Ci0rI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAotKyAgcXZ0a18t PnJlbmRlcldpbmRvdygpLT5SZW5kZXIoKTsKLSsjZWxzZQotICAgcXZ0a18tPnVwZGF0ZSAoKTsg Ci0rI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAotIH0KLSAKLSB2b2lkCi1AQCAtODgs NyArMTEwLDcgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3OjppdGVtQ2hhbgotICAg ewotICAgICBpdGVtLT5wYWludFZpZXcgKHZpc18pOwotICAgfQotLSAgcXZ0a18tPnVwZGF0ZSAo KTsKLSsgIHJlZnJlc2goKTsKLSB9Ci0gCi0gCi1AQCAtMTE1LDggKzEzNyw3IEBAIHBjbDo6Y2xv dWRfY29tcG9zZXI6OkNsb3VkVmlldzo6cm93c0luc2UKLSAgICAgICByb3dzSW5zZXJ0ZWQobmV3 X2l0ZW0tPmluZGV4KCksMCxuZXdfaXRlbS0+cm93Q291bnQgKCktMSk7Ci0gICB9Ci0gICAKLS0g IHF2dGtfLT51cGRhdGUgKCk7Ci0tCi0rICByZWZyZXNoKCk7Ci0gfQotIAotIHZvaWQKLUBAIC0x NDMsMjAgKzE2NCwyMCBAQCBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZpZXc6OnJvd3NBYm91 Ci0gICAgIGlmIChpdGVtX3RvX3JlbW92ZS0+cm93Q291bnQgKCkgPiAwKSAKLSAgICAgICByb3dz QWJvdXRUb0JlUmVtb3ZlZChpdGVtX3RvX3JlbW92ZS0+aW5kZXgoKSwwLGl0ZW1fdG9fcmVtb3Zl LT5yb3dDb3VudCAoKS0xKTsKLSAgIH0KLS0gIHF2dGtfLT51cGRhdGUgKCk7Ci0rICByZWZyZXNo KCk7Ci0gfQotIAotIAotIHZvaWQgCi0gcGNsOjpjbG91ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3Ojpw YWludEV2ZW50IChRUGFpbnRFdmVudCopCi0gewotLSAgcXZ0a18tPnVwZGF0ZSAoKTsKLSsgIHJl ZnJlc2goKTsKLSB9Ci0gCi0gdm9pZCAKLSBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZpZXc6 OnJlc2l6ZUV2ZW50IChRUmVzaXplRXZlbnQqKQotIHsKLS0gIHF2dGtfLT51cGRhdGUgKCk7Ci0r ICByZWZyZXNoKCk7Ci0gfQotIAotIHZvaWQKLUBAIC0xODYsNyArMjA3LDcgQEAgcGNsOjpjbG91 ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3OjpzZWxlY3RlZAotICAgICAgIH0KLSAgICAgfQotICAgfQot LSAgcXZ0a18tPnVwZGF0ZSAoKTsKLSsgIHJlZnJlc2goKTsKLSB9Ci0gCi0gdm9pZAotQEAgLTIw NCwxNCArMjI1LDE0IEBAIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6c2V0QXhpc1YK LSAgIGlmICh2aXNpYmxlKQotICAgewotICAgICBxRGVidWcgKCkgPDwgIkFkZGluZyBjb29yZGlu YXRlIHN5c3RlbSEiOwotLSAgICB2aXNfLT5hZGRPcmllbnRhdGlvbk1hcmtlcldpZGdldEF4ZXMg KCBxdnRrXy0+R2V0SW50ZXJhY3RvcigpICk7Ci0rICAgIHZpc18tPmFkZE9yaWVudGF0aW9uTWFy a2VyV2lkZ2V0QXhlcyhnZXRJbnRlcmFjdG9yQ29tcGF0KCpxdnRrXykpOwotICAgfQotICAgZWxz ZQotICAgewotICAgICB2aXNfLT5yZW1vdmVPcmllbnRhdGlvbk1hcmtlcldpZGdldEF4ZXMgKCk7 Ci0gICB9Ci0gCi0tICBxdnRrXy0+dXBkYXRlICgpOwotKyAgcmVmcmVzaCgpOwotIH0KLSAKLSB2 b2lkCi1AQCAtMjI0LDcgKzI0NSw3IEBAIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6 YWRkT3JpZW4KLSAgICAgYXhlc193aWRnZXRfID0gdnRrU21hcnRQb2ludGVyPHZ0a09yaWVudGF0 aW9uTWFya2VyV2lkZ2V0Pjo6TmV3ICgpOwotICAgICBheGVzX3dpZGdldF8tPlNldE91dGxpbmVD b2xvciAoIDAuOTMwMCwgMC41NzAwLCAwLjEzMDAgKTsKLSAgICAgYXhlc193aWRnZXRfLT5TZXRP cmllbnRhdGlvbk1hcmtlciggYXhlcyApOwotLSAgICBheGVzX3dpZGdldF8tPlNldEludGVyYWN0 b3IoIHF2dGtfLT5HZXRJbnRlcmFjdG9yICgpICk7Ci0rICAgIGF4ZXNfd2lkZ2V0Xy0+U2V0SW50 ZXJhY3RvcihnZXRJbnRlcmFjdG9yQ29tcGF0KCpxdnRrXykpOwotICAgICBheGVzX3dpZGdldF8t PlNldFZpZXdwb3J0KCAwLjAsIDAuMCwgMC40LCAwLjQgKTsKLSAgICAgYXhlc193aWRnZXRfLT5T ZXRFbmFibGVkKCAxICk7Ci0gICAgIGF4ZXNfd2lkZ2V0Xy0+SW50ZXJhY3RpdmVPbigpOwotQEAg LTI0NCw4ICsyNjUsNiBAQCBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZpZXc6OnJlbW92ZU9y Ci0gICB7Ci0gICAgIGF4ZXNfd2lkZ2V0Xy0+U2V0RW5hYmxlZCAoZmFsc2UpOwotICAgfQotLSAg Ci0tICAKLSB9Ci0gCi0gLy8vLy8vLy8gIEludGVyYWN0b3IgRnVuY3Rpb25zCi1AQCAtMjU1LDcg KzI3NCw3IEBAIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6aW5pdGlhbGkKLSB7Ci0g ICBzdHlsZV9zd2l0Y2hfID0gdnRrU21hcnRQb2ludGVyPEludGVyYWN0b3JTdHlsZVN3aXRjaD46 Ok5ldygpOwotICAgc3R5bGVfc3dpdGNoXy0+aW5pdGlhbGl6ZUludGVyYWN0b3JTdHlsZXMgKHZp c18sIG1vZGVsXyk7Ci0tICBzdHlsZV9zd2l0Y2hfLT5TZXRJbnRlcmFjdG9yIChxdnRrXy0+R2V0 SW50ZXJhY3RvciAoKSk7Ci0rICBzdHlsZV9zd2l0Y2hfLT5TZXRJbnRlcmFjdG9yKGdldEludGVy YWN0b3JDb21wYXQoKnF2dGtfKSk7Ci0gICBzdHlsZV9zd2l0Y2hfLT5zZXRDdXJyZW50SW50ZXJh Y3RvclN0eWxlIChpbnRlcmFjdG9yX3N0eWxlczo6UENMX1ZJU1VBTElaRVIpOwotICAgCi0gICAv L0Nvbm5lY3QgdGhlIGV2ZW50cyEKLWRpZmYgLXVwIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMv aXRlbXMvZnBmaF9pdGVtLmNwcC40MjYyIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvaXRlbXMv ZnBmaF9pdGVtLmNwcAotLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvaXRlbXMvZnBmaF9p dGVtLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9h cHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9pdGVtcy9mcGZoX2l0ZW0uY3BwCTIwMjEtMDItMjEgMjE6 MzI6NTguMzI3MTc2NzU4IC0wNTAwCi1AQCAtMyw4ICszLDYgQEAKLSAKLSAjaW5jbHVkZSA8UUdy aWRMYXlvdXQ+Ci0gCi0tI2luY2x1ZGUgPFFWVEtXaWRnZXQuaD4KLS0KLSBwY2w6OmNsb3VkX2Nv bXBvc2VyOjpGUEZISXRlbTo6RlBGSEl0ZW0gKFFTdHJpbmcgbmFtZSwgY29uc3QgcGNsOjpQb2lu dENsb3VkPHBjbDo6RlBGSFNpZ25hdHVyZTMzPjo6UHRyJiBmcGZoX3B0ciwgZG91YmxlIHJhZGl1 cykKLSAgIDogQ2xvdWRDb21wb3Nlckl0ZW0gKHN0ZDo6bW92ZShuYW1lKSkKLSAgICwgZnBmaF9w dHJfIChmcGZoX3B0cikKLUBAIC00MCw3ICszOCw3IEBAIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkZQ RkhJdGVtOjpnZXRJbnNwZWMKLSAgIGlmICghcGxvdF8pCi0gICB7Ci0gICAgIHBsb3RfLnJlc2V0 IChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xQbG90dGVyKTsKLS0gICAgcXZ0a18gPSBuZXcg UVZUS1dpZGdldCAoKTsKLSsgICAgcXZ0a18gPSBuZXcgUENMUVZUS1dpZGdldCgpOwotICAgICBo aXN0X3BhZ2VfID0gbmV3IFFXaWRnZXQgKCk7Ci0gICAgIFFHcmlkTGF5b3V0ICptYWluTGF5b3V0 ID0gbmV3IFFHcmlkTGF5b3V0IChoaXN0X3BhZ2VfKTsKLSAgICAgbWFpbkxheW91dC0+IGFkZFdp ZGdldCAocXZ0a18sMCwwKTsKLUBAIC00OSwxMCArNDcsMTUgQEAgcGNsOjpjbG91ZF9jb21wb3Nl cjo6RlBGSEl0ZW06OmdldEluc3BlYwotICAgLy9QbG90IHRoZSBoaXN0b2dyYW0KLSAgIHBsb3Rf LT5hZGRGZWF0dXJlSGlzdG9ncmFtICgqZnBmaF9wdHJfLCBmcGZoX3B0cl8tPndpZHRoLCBkYXRh KEl0ZW1EYXRhUm9sZTo6SVRFTV9JRCkudG9TdHJpbmcoKS50b1N0ZFN0cmluZyAoKSk7Ci0gICAv L1NldCB0aGUgcmVuZGVyIHdpbmRvdyBvZiB0aGUgUVZUSyB3aWRnZXQsIHVwZGF0ZQotLSAgcGxv dF8tPnNldFZpZXdJbnRlcmFjdG9yICh2dGtTbWFydFBvaW50ZXI8dnRrUmVuZGVyV2luZG93SW50 ZXJhY3Rvcj4gKHF2dGtfLT5HZXRJbnRlcmFjdG9yICgpKSk7Ci0tICBxdnRrXy0+U2V0UmVuZGVy V2luZG93IChwbG90Xy0+Z2V0UmVuZGVyV2luZG93ICgpKTsKLSsgIHBsb3RfLT5zZXRWaWV3SW50 ZXJhY3RvcihnZXRJbnRlcmFjdG9yQ29tcGF0KCpxdnRrXykpOwotKyAgc2V0UmVuZGVyV2luZG93 Q29tcGF0KCpxdnRrXywgKihwbG90Xy0+Z2V0UmVuZGVyV2luZG93KCkpKTsKLSsjaWYgVlRLX01B Sk9SX1ZFUlNJT04gPiA4Ci0rICBxdnRrXy0+cmVuZGVyV2luZG93KCktPlJlbmRlcigpOwotKyNl bHNlCi0rICBxdnRrXy0+dXBkYXRlKCk7Ci0rI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4g OAotICAgcXZ0a18tPnNob3cgKCk7Ci0tICBxdnRrXy0+dXBkYXRlICgpOwotKyAgCi0gICAKLSAg IFFNYXAgPFFTdHJpbmcsIFFXaWRnZXQqPiB0YWJzOwotICAgdGFicy5pbnNlcnQgKCJIaXN0b2dy YW0iLGhpc3RfcGFnZV8pOwotZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2lu dF9zZWxlY3RvcnMvY2xpY2tfdHJhY2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUuY3BwLjQyNjIgLi9h cHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2ludF9zZWxlY3RvcnMvY2xpY2tfdHJhY2tiYWxsX2lu dGVyYWN0b3Jfc3R5bGUuY3BwCi0tLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2ludF9z ZWxlY3RvcnMvY2xpY2tfdHJhY2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUuY3BwLjQyNjIJMjAyMC0w OC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIv c3JjL3BvaW50X3NlbGVjdG9ycy9jbGlja190cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5jcHAJ MjAyMS0wMi0yMSAyMTozMjo1OC4zMjcxNzY3NTggLTA1MDAKLUBAIC00LDYgKzQsMTAgQEAKLSAK LSAjaW5jbHVkZSA8UURlYnVnPgotIAotKwotKyNpbmNsdWRlIDx2dGtPYmplY3RGYWN0b3J5Lmg+ IC8vIEZvciB2dGtTdGFuZGFyZE5ld01hY3JvCi0rI2luY2x1ZGUgPHZ0a1RyYW5zZm9ybS5oPgot KwotIG5hbWVzcGFjZSBwY2wKLSB7Ci0gICBuYW1lc3BhY2UgY2xvdWRfY29tcG9zZXIKLWRpZmYg LXVwIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jf c3R5bGVfc3dpdGNoLmNwcC40MjYyIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcG9pbnRfc2Vs ZWN0b3JzL2ludGVyYWN0b3Jfc3R5bGVfc3dpdGNoLmNwcAotLS0tIC4vYXBwcy9jbG91ZF9jb21w b3Nlci9zcmMvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jfc3R5bGVfc3dpdGNoLmNwcC40MjYy CTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2Nv bXBvc2VyL3NyYy9wb2ludF9zZWxlY3RvcnMvaW50ZXJhY3Rvcl9zdHlsZV9zd2l0Y2guY3BwCTIw MjEtMDItMjEgMjE6MzI6NTguMzI3MTc2NzU4IC0wNTAwCi1AQCAtNiw2ICs2LDkgQEAKLSAKLSAj aW5jbHVkZSA8UURlYnVnPgotIAotKyNpbmNsdWRlIDx2dGtDYWxsYmFja0NvbW1hbmQuaD4KLSsj aW5jbHVkZSA8dnRrT2JqZWN0RmFjdG9yeS5oPgotKwotIG5hbWVzcGFjZSBwY2wKLSB7Ci0gICBu YW1lc3BhY2UgY2xvdWRfY29tcG9zZXIKLWRpZmYgLXVwIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9z cmMvcG9pbnRfc2VsZWN0b3JzL3JlY3Rhbmd1bGFyX2ZydXN0dW1fc2VsZWN0b3IuY3BwLjQyNjIg Li9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2ludF9zZWxlY3RvcnMvcmVjdGFuZ3VsYXJfZnJ1 c3R1bV9zZWxlY3Rvci5jcHAKLS0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3Nl bGVjdG9ycy9yZWN0YW5ndWxhcl9mcnVzdHVtX3NlbGVjdG9yLmNwcC40MjYyCTIwMjAtMDgtMTQg MDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9w b2ludF9zZWxlY3RvcnMvcmVjdGFuZ3VsYXJfZnJ1c3R1bV9zZWxlY3Rvci5jcHAJMjAyMS0wMi0y MSAyMTozMjo1OC4zMjcxNzY3NTggLTA1MDAKLUBAIC0zLDYgKzMsMTQgQEAKLSAKLSAjaW5jbHVk ZSA8UURlYnVnPgotIAotKyNpbmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KLSsjaW5jbHVkZSA8 dnRrSWRGaWx0ZXIuaD4KLSsjaW5jbHVkZSA8dnRrRXh0cmFjdEdlb21ldHJ5Lmg+Ci0rI2luY2x1 ZGUgPHZ0a1ZlcnRleEdseXBoRmlsdGVyLmg+Ci0rI2luY2x1ZGUgPHZ0a1BsYW5lcy5oPgotKyNp bmNsdWRlIDx2dGtBcmVhUGlja2VyLmg+Ci0rI2luY2x1ZGUgPHZ0a09iamVjdEZhY3RvcnkuaD4K LSsKLSBuYW1lc3BhY2UgcGNsCi0gewotICAgbmFtZXNwYWNlIGNsb3VkX2NvbXBvc2VyCi1kaWZm IC11cCAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3NlbGVjdG9ycy9zZWxlY3RlZF90 cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5jcHAuNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9zZXIv c3JjL3BvaW50X3NlbGVjdG9ycy9zZWxlY3RlZF90cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5j cHAKLS0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3NlbGVjdG9ycy9zZWxlY3Rl ZF90cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAz LjAwMDAwMDAwMCAtMDQwMAotKysrIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcG9pbnRfc2Vs ZWN0b3JzL3NlbGVjdGVkX3RyYWNrYmFsbF9pbnRlcmFjdG9yX3N0eWxlLmNwcAkyMDIxLTAyLTIx IDIxOjMyOjU4LjMyNzE3Njc1OCAtMDUwMAotQEAgLTQsNiArNCwxNSBAQAotICNpbmNsdWRlIDxR RGVidWc+Ci0gI2luY2x1ZGUgPFFJdGVtU2VsZWN0aW9uTW9kZWw+Ci0gCi0rI2luY2x1ZGUgPHZ0 a1NtYXJ0UG9pbnRlci5oPgotKyNpbmNsdWRlIDx2dGtNYXRyaXg0eDQuaD4KLSsjaW5jbHVkZSA8 dnRrTE9EQWN0b3IuaD4KLSsjaW5jbHVkZSA8dnRrSW50ZXJhY3RvclN0eWxlVHJhY2tiYWxsQWN0 b3IuaD4KLSsjaW5jbHVkZSA8dnRrUmVuZGVyV2luZG93SW50ZXJhY3Rvci5oPgotKyNpbmNsdWRl IDx2dGtUcmFuc2Zvcm0uaD4KLSsjaW5jbHVkZSA8dnRrT2JqZWN0RmFjdG9yeS5oPgotKwotKwot IG5hbWVzcGFjZSBwY2wKLSB7Ci0gICBuYW1lc3BhY2UgY2xvdWRfY29tcG9zZXIKLWRpZmYgLXVw IC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcHJvamVjdF9tb2RlbC5jcHAuNDI2MiAuL2FwcHMv Y2xvdWRfY29tcG9zZXIvc3JjL3Byb2plY3RfbW9kZWwuY3BwCi0tLS0gLi9hcHBzL2Nsb3VkX2Nv bXBvc2VyL3NyYy9wcm9qZWN0X21vZGVsLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAw MDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wcm9qZWN0X21vZGVs LmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNzE3Njc1OCAtMDUwMAotQEAgLTE0LDYgKzE0LDEx IEBACi0gI2luY2x1ZGUgPFFNZXNzYWdlQm94PgotICNpbmNsdWRlIDxRVGhyZWFkPgotIAotKyNp bmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KLSsjaW5jbHVkZSA8dnRrSW1hZ2VEYXRhLmg+Ci0r I2luY2x1ZGUgPHZ0a0ltYWdlUmVhZGVyMkZhY3RvcnkuaD4KLSsjaW5jbHVkZSA8dnRrSW1hZ2VS ZWFkZXIyLmg+Ci0rCi0gcGNsOjpjbG91ZF9jb21wb3Nlcjo6UHJvamVjdE1vZGVsOjpQcm9qZWN0 TW9kZWwgKFFPYmplY3QqIHBhcmVudCkKLSAgIDogUVN0YW5kYXJkSXRlbU1vZGVsIChwYXJlbnQp Ci0gewotZGlmZiAtdXAgLi9hcHBzL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9hcHBzL0NNYWtlTGlz dHMudHh0Ci0tLS0gLi9hcHBzL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMC0wOC0xNCAwODoyMzow My4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAy MTozMjo1OC4zMjUxNzY3NTAgLTA1MDAKLUBAIC0zNCw4ICszNCw2IEBAIGlmKExJQlVTQl8xX0ZP VU5EKQotIGVuZGlmKCkKLSAKLSBpZihWVEtfRk9VTkQpCi0tICBpbmNsdWRlKCIke1ZUS19VU0Vf RklMRX0iKQotLQotICAgc2V0KGluY3MgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3JlbmRl cl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5oIikKLSAgIHNldChzcmNzICJzcmMvcmVuZGVyX3Zp ZXdzX3Rlc3NlbGF0ZWRfc3BoZXJlLmNwcCIpCi0gCi1AQCAtNjAsNiArNTgsMTAgQEAgaWYoVlRL X0ZPVU5EKQotICAgaWYoUUhVTExfRk9VTkQpCi0gICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xf cGNkX3NlbGVjdF9vYmplY3RfcGxhbmUgQ09NUE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJDRVMg c3JjL3BjZF9zZWxlY3Rfb2JqZWN0X3BsYW5lLmNwcCkKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFy aWVzKHBjbF9wY2Rfc2VsZWN0X29iamVjdF9wbGFuZSBwY2xfY29tbW9uIHBjbF9pbyBwY2xfZmls dGVycyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfc2VnbWVudGF0aW9uIHBjbF9mZWF0dXJlcyBwY2xf c3VyZmFjZSkKLSsgICAgI1RPRE86IFVwZGF0ZSB3aGVuIENNQUtFIDMuMTAgaXMgYXZhaWxhYmxl Ci0rICAgIGlmKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkpCi0rICAgICAg dGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9wY2Rfc2VsZWN0X29iamVjdF9wbGFuZSBWVEs6OkZp bHRlcnNHZW9tZXRyeSkKLSsgICAgZW5kaWYoKQotICAgZW5kaWYoKQotIAotICAgUENMX0FERF9F WEVDVVRBQkxFKHBjbF9wY2Rfb3JnYW5pemVkX2VkZ2VfZGV0ZWN0aW9uIENPTVBPTkVOVCAke1NV QlNZU19OQU1FfSBTT1VSQ0VTIHNyYy9wY2Rfb3JnYW5pemVkX2VkZ2VfZGV0ZWN0aW9uLmNwcCkK LUBAIC03NCwxNyArNzYsMjUgQEAgaWYoVlRLX0ZPVU5EKQotICAgUENMX0FERF9FWEVDVVRBQkxF KHBjbF9zdGVyZW9fZ3JvdW5kX3NlZ21lbnRhdGlvbiBDT01QT05FTlQgJHtTVUJTWVNfTkFNRX0g U09VUkNFUyBzcmMvc3RlcmVvX2dyb3VuZF9zZWdtZW50YXRpb24uY3BwKQotICAgdGFyZ2V0X2xp bmtfbGlicmFyaWVzKHBjbF9zdGVyZW9fZ3JvdW5kX3NlZ21lbnRhdGlvbiBwY2xfY29tbW9uIHBj bF9pbyBwY2xfZmlsdGVycyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfc2VnbWVudGF0aW9uIHBjbF9m ZWF0dXJlcyBwY2xfc3RlcmVvKQotIAotLSAgaWYoUXQ1X0ZPVU5EIEFORCBRVlRLX0ZPVU5EKQot KyAgaWYoUXQ1X0ZPVU5EIEFORCBIQVZFX1FWVEspCi0gICAgICMgTWFudWFsIHJlZ2lzdHJhdGlv biBkZW1vCi0gICAgIFFUNV9XUkFQX1VJKG1hbnVhbF9yZWdpc3RyYXRpb25fdWkgc3JjL21hbnVh bF9yZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi51aSkKLSAgICAgUVQ1X1dSQVBfQ1BQ KG1hbnVhbF9yZWdpc3RyYXRpb25fbW9jIGluY2x1ZGUvcGNsL2FwcHMvbWFudWFsX3JlZ2lzdHJh dGlvbi5oIE9QVElPTlMgLURCT09TVF9UVF9IQVNfT1BFUkFUT1JfSFBQX0lOQ0xVREVEIC1EQk9P U1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICAgUENMX0FERF9FWEVD VVRBQkxFKHBjbF9tYW51YWxfcmVnaXN0cmF0aW9uIENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBT T1VSQ0VTICR7bWFudWFsX3JlZ2lzdHJhdGlvbl91aX0gJHttYW51YWxfcmVnaXN0cmF0aW9uX21v Y30gc3JjL21hbnVhbF9yZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi5jcHAgQlVORExF KQotICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX21hbnVhbF9yZWdpc3RyYXRpb24gcGNs X2NvbW1vbiBwY2xfaW8gcGNsX3Zpc3VhbGl6YXRpb24gcGNsX3NlZ21lbnRhdGlvbiBwY2xfZmVh dHVyZXMgcGNsX3N1cmZhY2UgUXQ1OjpXaWRnZXRzKQotKyAgICAjVE9ETzogVXBkYXRlIHdoZW4g Q01BS0UgMy4xMCBpcyBhdmFpbGFibGUKLSsgICAgaWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJT SU9OX0xFU1MgOS4wKSkKLSsgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX21hbnVhbF9y ZWdpc3RyYXRpb24gVlRLOjpHVUlTdXBwb3J0UXQpCi0rICAgIGVuZGlmKCkKLSAKLSAgICAgUVQ1 X1dSQVBfVUkocGNkX3ZpZGVvX3BsYXllcl91aSBzcmMvcGNkX3ZpZGVvX3BsYXllci9wY2Rfdmlk ZW9fcGxheWVyLnVpKQotICAgICBRVDVfV1JBUF9DUFAocGNkX3ZpZGVvX3BsYXllcl9tb2MgaW5j bHVkZS9wY2wvYXBwcy9wY2RfdmlkZW9fcGxheWVyLmggT1BUSU9OUyAtREJPT1NUX1RUX0hBU19P UEVSQVRPUl9IUFBfSU5DTFVERUQgLURCT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJ WkFUSU9OKQotICAgICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX3BjZF92aWRlb19wbGF5ZXIgQ09N UE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJDRVMgJHtwY2RfdmlkZW9fcGxheWVyX3VpfSAke3Bj ZF92aWRlb19wbGF5ZXJfbW9jfSBzcmMvcGNkX3ZpZGVvX3BsYXllci9wY2RfdmlkZW9fcGxheWVy LmNwcCBCVU5ETEUpCi0gICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfcGNkX3ZpZGVvX3Bs YXllciBwY2xfY29tbW9uIHBjbF9pbyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfc2VnbWVudGF0aW9u IHBjbF9mZWF0dXJlcyBwY2xfc3VyZmFjZSBRdDU6OldpZGdldHMpCi0rICAgICNUT0RPOiBVcGRh dGUgd2hlbiBDTUFLRSAzLjEwIGlzIGF2YWlsYWJsZQotKyAgICBpZihOT1QgKCR7VlRLX1ZFUlNJ T059IFZFUlNJT05fTEVTUyA5LjApKQotKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xf cGNkX3ZpZGVvX3BsYXllciBWVEs6OkdVSVN1cHBvcnRRdCkKLSsgICAgZW5kaWYoKQotICAgZW5k aWYoKQotIAotICAgaWYoV0lUSF9PUEVOTkkpCi1AQCAtMTM4LDE4ICsxNDgsMjYgQEAgaWYoVlRL X0ZPVU5EKQotICAgICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX29wZW5uaV9mYWNlX2RldGVjdG9y IENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBTT1VSQ0VTIHNyYy9mYWNlX2RldGVjdGlvbi8vb3Bl bm5pX2ZhY2VfZGV0ZWN0aW9uLmNwcCBzcmMvZmFjZV9kZXRlY3Rpb24vL29wZW5uaV9mcmFtZV9z b3VyY2UuY3BwIEJVTkRMRSkKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vcGVubmlf ZmFjZV9kZXRlY3RvciBwY2xfZmVhdHVyZXMgcGNsX3JlY29nbml0aW9uIHBjbF9jb21tb24gcGNs X2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9uIHBjbF9zZWdtZW50YXRpb24gcGNsX3Nh bXBsZV9jb25zZW5zdXMgcGNsX3N1cmZhY2UgcGNsX2tleXBvaW50cyBwY2xfbWwgcGNsX3NlYXJj aCBwY2xfa2R0cmVlICR7VlRLX0xJQlJBUklFU30pCi0gCi0tICAgIGlmKFF0NV9GT1VORCBBTkQg UVZUS19GT1VORCkKLS0gICAgIyBPcGVuTkkgUGFzc3Rocm91Z2ggYXBwbGljYXRpb24gZGVtbwot LSAgICBRVDVfV1JBUF9VSShvcGVubmlfcGFzc3Rocm91Z2hfdWkgc3JjL29wZW5uaV9wYXNzdGhy b3VnaC51aSkKLS0gICAgUVQ1X1dSQVBfQ1BQKG9wZW5uaV9wYXNzdGhyb3VnaF9tb2MgaW5jbHVk ZS9wY2wvYXBwcy9vcGVubmlfcGFzc3Rocm91Z2guaCBPUFRJT05TIC1EQk9PU1RfVFRfSEFTX09Q RVJBVE9SX0hQUF9JTkNMVURFRCAtREJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTEla QVRJT04pCi0tICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfb3Blbm5pX3Bhc3N0aHJvdWdoIENP TVBPTkVOVCAke1NVQlNZU19OQU1FfSBTT1VSQ0VTICR7b3Blbm5pX3Bhc3N0aHJvdWdoX3VpfSAk e29wZW5uaV9wYXNzdGhyb3VnaF9tb2N9IHNyYy9vcGVubmlfcGFzc3Rocm91Z2guY3BwKQotLSAg ICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX29wZW5uaV9wYXNzdGhyb3VnaCBwY2xfY29tbW9u IHBjbF9pbyBwY2xfZmlsdGVycyBwY2xfdmlzdWFsaXphdGlvbiBRdDU6OldpZGdldHMpCi0tCi0t ICAgICMgT3Blbk5JIE9yZ2FuaXplZCBDb25uZWN0ZWQgQ29tcG9uZW50IGFwcGxpY2F0aW9uIGRl bW8KLS0gICAgUVQ1X1dSQVBfVUkob3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vX3VpIHNyYy9v cmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW8udWkpCi0tICAgIFFUNV9XUkFQX0NQUChvcmdhbml6 ZWRfc2VnbWVudGF0aW9uX2RlbW9fbW9jIGluY2x1ZGUvcGNsL2FwcHMvb3JnYW5pemVkX3NlZ21l bnRhdGlvbl9kZW1vLmggT1BUSU9OUyAtREJPT1NUX1RUX0hBU19PUEVSQVRPUl9IUFBfSU5DTFVE RUQgLURCT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLSAgICBQQ0xf QUREX0VYRUNVVEFCTEUocGNsX29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtbyBDT01QT05FTlQg JHtTVUJTWVNfTkFNRX0gU09VUkNFUyAke29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtb191aX0g JHtvcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW9fbW9jfSBzcmMvb3JnYW5pemVkX3NlZ21lbnRh dGlvbl9kZW1vLmNwcCBCVU5ETEUpCi0tICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfb3Jn YW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vIHBjbF9jb21tb24gcGNsX2lvIHBjbF92aXN1YWxpemF0 aW9uIHBjbF9zZWdtZW50YXRpb24gcGNsX2ZlYXR1cmVzIHBjbF9zdXJmYWNlIFF0NTo6V2lkZ2V0 cykKLSsgICAgaWYoUXQ1X0ZPVU5EIEFORCBIQVZFX1FWVEspCi0rICAgICAgIyBPcGVuTkkgUGFz c3Rocm91Z2ggYXBwbGljYXRpb24gZGVtbwotKyAgICAgIFFUNV9XUkFQX1VJKG9wZW5uaV9wYXNz dGhyb3VnaF91aSBzcmMvb3Blbm5pX3Bhc3N0aHJvdWdoLnVpKQotKyAgICAgIFFUNV9XUkFQX0NQ UChvcGVubmlfcGFzc3Rocm91Z2hfbW9jIGluY2x1ZGUvcGNsL2FwcHMvb3Blbm5pX3Bhc3N0aHJv dWdoLmggT1BUSU9OUyAtREJPT1NUX1RUX0hBU19PUEVSQVRPUl9IUFBfSU5DTFVERUQgLURCT09T VF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotKyAgICAgIFBDTF9BRERfRVhF Q1VUQUJMRShwY2xfb3Blbm5pX3Bhc3N0aHJvdWdoIENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBT T1VSQ0VTICR7b3Blbm5pX3Bhc3N0aHJvdWdoX3VpfSAke29wZW5uaV9wYXNzdGhyb3VnaF9tb2N9 IHNyYy9vcGVubmlfcGFzc3Rocm91Z2guY3BwKQotKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmll cyhwY2xfb3Blbm5pX3Bhc3N0aHJvdWdoIHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBj bF92aXN1YWxpemF0aW9uIFF0NTo6V2lkZ2V0cykKLSsgICAgICAjVE9ETzogVXBkYXRlIHdoZW4g Q01BS0UgMy4xMCBpcyBhdmFpbGFibGUKLSsgICAgICBpZihOT1QgKCR7VlRLX1ZFUlNJT059IFZF UlNJT05fTEVTUyA5LjApKQotKyAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vcGVu bmlfcGFzc3Rocm91Z2ggVlRLOjpHVUlTdXBwb3J0UXQpCi0rICAgICAgZW5kaWYoKQotKwotKyAg ICAgICMgT3Blbk5JIE9yZ2FuaXplZCBDb25uZWN0ZWQgQ29tcG9uZW50IGFwcGxpY2F0aW9uIGRl bW8KLSsgICAgICBRVDVfV1JBUF9VSShvcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW9fdWkgc3Jj L29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtby51aSkKLSsgICAgICBRVDVfV1JBUF9DUFAob3Jn YW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vX21vYyBpbmNsdWRlL3BjbC9hcHBzL29yZ2FuaXplZF9z ZWdtZW50YXRpb25fZGVtby5oIE9QVElPTlMgLURCT09TVF9UVF9IQVNfT1BFUkFUT1JfSFBQX0lO Q0xVREVEIC1EQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSsgICAg ICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtbyBDT01Q T05FTlQgJHtTVUJTWVNfTkFNRX0gU09VUkNFUyAke29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVt b191aX0gJHtvcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW9fbW9jfSBzcmMvb3JnYW5pemVkX3Nl Z21lbnRhdGlvbl9kZW1vLmNwcCBCVU5ETEUpCi0rICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz KHBjbF9vcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW8gcGNsX2NvbW1vbiBwY2xfaW8gcGNsX3Zp c3VhbGl6YXRpb24gcGNsX3NlZ21lbnRhdGlvbiBwY2xfZmVhdHVyZXMgcGNsX3N1cmZhY2UgUXQ1 OjpXaWRnZXRzKQotKyAgICAgICNUT0RPOiBVcGRhdGUgd2hlbiBDTUFLRSAzLjEwIGlzIGF2YWls YWJsZQotKyAgICAgIGlmKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkpCi0r ICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX29yZ2FuaXplZF9zZWdtZW50YXRpb25f ZGVtbyBWVEs6OkdVSVN1cHBvcnRRdCkKLSsgICAgICBlbmRpZigpICAgICAgCi0gICAgIGVuZGlm KCkKLSAKLSAgICAgaWYoUUhVTExfRk9VTkQpCi1kaWZmIC11cCAuL2FwcHMvaW5jbHVkZS9wY2wv YXBwcy9tYW51YWxfcmVnaXN0cmF0aW9uLmguNDI2MiAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9t YW51YWxfcmVnaXN0cmF0aW9uLmgKLS0tLSAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9tYW51YWxf cmVnaXN0cmF0aW9uLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAot KysrIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL21hbnVhbF9yZWdpc3RyYXRpb24uaAkyMDIxLTAy LTIxIDIxOjMyOjU4LjMyNzE3Njc1OCAtMDUwMAotQEAgLTEwNiw2ICsxMDYsOSBAQCBwdWJsaWM6 Ci0gICBEc3RQb2ludFBpY2tDYWxsYmFjayhjb25zdCBwY2w6OnZpc3VhbGl6YXRpb246OlBvaW50 UGlja2luZ0V2ZW50JiBldmVudCwgdm9pZCopOwotIAotIHByb3RlY3RlZDoKLSsgIHZvaWQKLSsg IHJlZnJlc2hWaWV3KCk7Ci0rCi0gICBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6 OlB0ciB2aXNfc3JjXzsKLSAgIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6UHRy IHZpc19kc3RfOwotIAotZGlmZiAtdXAgLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvb3Blbm5pX3Bh c3N0aHJvdWdoLmguNDI2MiAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9vcGVubmlfcGFzc3Rocm91 Z2guaAotLS0tIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL29wZW5uaV9wYXNzdGhyb3VnaC5oLjQy NjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvaW5jbHVk ZS9wY2wvYXBwcy9vcGVubmlfcGFzc3Rocm91Z2guaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNzE3 Njc1OCAtMDUwMAotQEAgLTg2LDYgKzg2LDkgQEAgcHVibGljOgotICAgY2xvdWRfY2IoY29uc3Qg Q2xvdWRDb25zdFB0ciYgY2xvdWQpOwotIAotIHByb3RlY3RlZDoKLSsgIHZvaWQKLSsgIHJlZnJl c2hWaWV3KCk7Ci0rICAKLSAgIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6UHRy IHZpc187Ci0gICBwY2w6Ok9wZW5OSUdyYWJiZXImIGdyYWJiZXJfOwotICAgc3RkOjpzdHJpbmcg ZGV2aWNlX2lkXzsKLWRpZmYgLXVwIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL29yZ2FuaXplZF9z ZWdtZW50YXRpb25fZGVtby5oLjQyNjIgLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvb3JnYW5pemVk X3NlZ21lbnRhdGlvbl9kZW1vLmgKLS0tLSAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9vcmdhbml6 ZWRfc2VnbWVudGF0aW9uX2RlbW8uaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAw IC0wNDAwCi0rKysgLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvb3JnYW5pemVkX3NlZ21lbnRhdGlv bl9kZW1vLmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjcxNzY3NTggLTA1MDAKLUBAIC0xODksNCAr MTg5LDggQEAgcHVibGljIFFfU0xPVFM6Ci0gcHJpdmF0ZSBRX1NMT1RTOgotICAgdm9pZAotICAg dGltZW91dFNsb3QoKTsKLSsKLStwcml2YXRlOgotKyAgdm9pZAotKyAgcmVmcmVzaFZpZXcoKTsK LSB9OwotZGlmZiAtdXAgLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvcGNkX3ZpZGVvX3BsYXllci5o LjQyNjIgLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvcGNkX3ZpZGVvX3BsYXllci5oCi0tLS0gLi9h cHBzL2luY2x1ZGUvcGNsL2FwcHMvcGNkX3ZpZGVvX3BsYXllci5oLjQyNjIJMjAyMC0wOC0xNCAw ODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9wY2Rf dmlkZW9fcGxheWVyLmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjgxNzY3NjMgLTA1MDAKLUBAIC01 Myw3ICs1Myw2IEBACi0gI2luY2x1ZGUgPFFNYWluV2luZG93PgotICNpbmNsdWRlIDxRTXV0ZXg+ Ci0gI2luY2x1ZGUgPFFUaW1lcj4KLS0jaW5jbHVkZSA8dWlfcGNkX3ZpZGVvX3BsYXllci5oPgot IAotICNpbmNsdWRlIDxjdGltZT4KLSAjaW5jbHVkZSA8aW9zdHJlYW0+Ci1AQCAtOTMsNiArOTIs OSBAQCBwdWJsaWM6Ci0gICB+UENEVmlkZW9QbGF5ZXIoKSB7fQotIAotIHByb3RlY3RlZDoKLSsg IHZvaWQKLSsgIHJlZnJlc2hWaWV3KCk7Ci0rCi0gICBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZp c3VhbGl6ZXI6OlB0ciB2aXNfOwotICAgcGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0JB Pjo6UHRyIGNsb3VkXzsKLSAKLWRpZmYgLXVwIC4vYXBwcy9tb2RlbGVyL0NNYWtlTGlzdHMudHh0 LjQyNjIgLi9hcHBzL21vZGVsZXIvQ01ha2VMaXN0cy50eHQKLS0tLSAuL2FwcHMvbW9kZWxlci9D TWFrZUxpc3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0r KysgLi9hcHBzL21vZGVsZXIvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjgx NzY3NjMgLTA1MDAKLUBAIC0xMCw4ICsxMCw2IEBAIGlmKE5PVCBWVEtfRk9VTkQpCi0gZWxzZSgp Ci0gICBzZXQoREVGQVVMVCBUUlVFKQotICAgc2V0KFJFQVNPTikKLS0gIHNldChWVEtfVVNFX0ZJ TEUgIiR7VlRLX1VTRV9GSUxFfSIgQ0FDSEUgSU5URVJOQUwgIlZUS19VU0VfRklMRSIpCi0tICBp bmNsdWRlKCIke1ZUS19VU0VfRklMRX0iKQotIGVuZGlmKCkKLSAKLSAjIFFUNSBGb3VuZD8KLUBA IC0yNCw3ICsyMiw3IEBAIGVsc2VpZihOT1QgJHtERUZBVUxUfSBTVFJFUVVBTCAiQVVUT19PRkYK LSBlbmRpZigpCi0gCi0gIyBRVlRLPwotLWlmKE5PVCBRVlRLX0ZPVU5EKQotK2lmKE5PVCBIQVZF X1FWVEspCi0gICBzZXQoREVGQVVMVCBBVVRPX09GRikKLSAgIHNldChSRUFTT04gIlZUSyB3YXMg bm90IGJ1aWx0IHdpdGggUXQgc3VwcG9ydC4iKQotIGVsc2VpZihOT1QgJHtERUZBVUxUfSBTVFJF UVVBTCAiQVVUT19PRkYiKQotQEAgLTM3LDggKzM1LDggQEAgaWYoJHtERUZBVUxUfSBTVFJFUVVB TCAiVFJVRSIpCi0gICBzZXQoREVGQVVMVCBGQUxTRSkKLSBlbmRpZigpCi0gCi0tUENMX1NVQlNV QlNZU19PUFRJT04oYnVpbGQgIiR7U1VCU1lTX05BTUV9IiAiJHtTVUJTVUJTWVNfTkFNRX0iICIk e1NVQlNZU19ERVNDfSIgJHtERUZBVUxUfSAiJHtSRUFTT059IikKLS1QQ0xfU1VCU1VCU1lTX0RF UEVORChidWlsZCAiJHtTVUJTWVNfTkFNRX0iICIke1NVQlNVQlNZU19OQU1FfSIgREVQUyAke1NV QlNZU19ERVBTfSBFWFRfREVQUyB2dGspCi0rUENMX1NVQlNVQlNZU19PUFRJT04oYnVpbGQgIiR7 U1VCU1lTX05BTUV9IiAiJHtTVUJTVUJTWVNfTkFNRX0iICIke1NVQlNVQlNZU19ERVNDfSIgJHtE RUZBVUxUfSAiJHtSRUFTT059IikKLStQQ0xfU1VCU1VCU1lTX0RFUEVORChidWlsZCAiJHtTVUJT WVNfTkFNRX0iICIke1NVQlNVQlNZU19OQU1FfSIgREVQUyAke1NVQlNVQlNZU19ERVBTfSBFWFRf REVQUyB2dGspCi0gCi0gUENMX0FERF9ET0MoIiR7U1VCU1VCU1lTX05BTUV9IikKLSAKLUBAIC0x NDAsNiArMTM4LDEwIEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke3NyY3N9IFBST1AK LSBzZXQoRVhFX05BTUUgInBjbF8ke1NVQlNVQlNZU19OQU1FfSIpCi0gUENMX0FERF9FWEVDVVRB QkxFKCR7RVhFX05BTUV9IENPTVBPTkVOVCAke1NVQlNVQlNZU19OQU1FfSBTT1VSQ0VTICR7dWlf c3Jjc30gJHttb2Nfc3Jjc30gJHtyZXNvdXJjZV9zcmNzfSAke3NyY3N9ICR7aW5jc30gJHtpbXBs X2luY3N9KQotIHRhcmdldF9saW5rX2xpYnJhcmllcygiJHtFWEVfTkFNRX0iIHBjbF9jb21tb24g cGNsX2lvIHBjbF9rZHRyZWUgcGNsX2ZpbHRlcnMgcGNsX3Zpc3VhbGl6YXRpb24gcGNsX3NlZ21l bnRhdGlvbiBwY2xfc3VyZmFjZSBwY2xfZmVhdHVyZXMgcGNsX3NhbXBsZV9jb25zZW5zdXMgcGNs X3NlYXJjaCBRdDU6OldpZGdldHMpCi0rI1RPRE86IFVwZGF0ZSB3aGVuIENNQUtFIDMuMTAgaXMg YXZhaWxhYmxlCi0raWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1MgOS4wKSkKLSsg IHRhcmdldF9saW5rX2xpYnJhcmllcygiJHtFWEVfTkFNRX0iIFZUSzo6R1VJU3VwcG9ydFF0KQot K2VuZGlmKCkKLSAKLSAjIFB1dCB0aGUgdWkgaW4gdGhlIHdpbmRvd3MgcHJvamVjdCBmaWxlCi0g aWYoKCIke0NNQUtFX0JVSUxEX1RPT0x9IiBNQVRDSEVTICJtc2RldiIpIE9SKCIke0NNQUtFX0JV SUxEX1RPT0x9IiBNQVRDSEVTICJkZXZlbnYiKSkKLWRpZmYgLXVwIC4vYXBwcy9tb2RlbGVyL2lu Y2x1ZGUvcGNsL2FwcHMvbW9kZWxlci9yZW5kZXJfd2luZG93LmguNDI2MiAuL2FwcHMvbW9kZWxl ci9pbmNsdWRlL3BjbC9hcHBzL21vZGVsZXIvcmVuZGVyX3dpbmRvdy5oCi0tLS0gLi9hcHBzL21v ZGVsZXIvaW5jbHVkZS9wY2wvYXBwcy9tb2RlbGVyL3JlbmRlcl93aW5kb3cuaC40MjYyCTIwMjAt MDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL21vZGVsZXIvaW5jbHVk ZS9wY2wvYXBwcy9tb2RlbGVyL3JlbmRlcl93aW5kb3cuaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMy ODE3Njc2MyAtMDUwMAotQEAgLTM1LDggKzM1LDcgQEAKLSAgKi8KLSAKLSAjcHJhZ21hIG9uY2UK LS0KLS0jaW5jbHVkZSA8UVZUS1dpZGdldC5oPgotKyNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlv bi9xdnRrX2NvbXBhdGliaWxpdHkuaD4KLSAKLSAjaW5jbHVkZSA8dnRrU21hcnRQb2ludGVyLmg+ Ci0gCi1AQCAtNDcsNyArNDYsNyBAQCBuYW1lc3BhY2UgbW9kZWxlciB7Ci0gCi0gY2xhc3MgUmVu ZGVyV2luZG93SXRlbTsKLSAKLS1jbGFzcyBSZW5kZXJXaW5kb3cgOiBwdWJsaWMgUVZUS1dpZGdl dCB7Ci0rY2xhc3MgUmVuZGVyV2luZG93IDogcHVibGljIFBDTFFWVEtXaWRnZXQgewotIHB1Ymxp YzoKLSAgIFJlbmRlcldpbmRvdyhSZW5kZXJXaW5kb3dJdGVtKiByZW5kZXJfd2luZG93X2l0ZW0s Ci0gICAgICAgICAgICAgICAgUVdpZGdldCogcGFyZW50ID0gbnVsbHB0ciwKLWRpZmYgLXVwIC4v YXBwcy9tb2RlbGVyL3NyYy9jbG91ZF9tZXNoLmNwcC40MjYyIC4vYXBwcy9tb2RlbGVyL3NyYy9j bG91ZF9tZXNoLmNwcAotLS0tIC4vYXBwcy9tb2RlbGVyL3NyYy9jbG91ZF9tZXNoLmNwcC40MjYy CTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL21vZGVsZXIv c3JjL2Nsb3VkX21lc2guY3BwCTIwMjEtMDItMjEgMjE6MzI6NTguMzI4MTc2NzYzIC0wNTAwCi1A QCAtMTk4LDcgKzE5OCw3IEBAIHBjbDo6bW9kZWxlcjo6Q2xvdWRNZXNoOjp1cGRhdGVWdGtQb2x5 Z28KLSAgIGlmIChjbG91ZF8tPmlzX2RlbnNlKSB7Ci0gICAgIGZvciAoY29uc3QgYXV0byYgcG9s eWdvbiA6IHBvbHlnb25zXykgewotICAgICAgIHZ0a19wb2x5Z29uc18tPkluc2VydE5leHRDZWxs KHBvbHlnb24udmVydGljZXMuc2l6ZSgpKTsKLS0gICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIGlu dCYgdmVydGV4IDogcG9seWdvbi52ZXJ0aWNlcykKLSsgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZl cnRleCA6IHBvbHlnb24udmVydGljZXMpCi0gICAgICAgICB2dGtfcG9seWdvbnNfLT5JbnNlcnRD ZWxsUG9pbnQodmVydGV4KTsKLSAgICAgfQotICAgfQotQEAgLTIwOCw3ICsyMDgsNyBAQCBwY2w6 Om1vZGVsZXI6OkNsb3VkTWVzaDo6dXBkYXRlVnRrUG9seWdvCi0gCi0gICAgIGZvciAoY29uc3Qg YXV0byYgcG9seWdvbiA6IHBvbHlnb25zXykgewotICAgICAgIHZ0a19wb2x5Z29uc18tPkluc2Vy dE5leHRDZWxsKHBvbHlnb24udmVydGljZXMuc2l6ZSgpKTsKLS0gICAgICBmb3IgKGNvbnN0IHVu c2lnbmVkIGludCYgdmVydGV4IDogcG9seWdvbi52ZXJ0aWNlcykKLSsgICAgICBmb3IgKGNvbnN0 IGF1dG8mIHZlcnRleCA6IHBvbHlnb24udmVydGljZXMpCi0gICAgICAgICB2dGtfcG9seWdvbnNf LT5JbnNlcnRDZWxsUG9pbnQoKCppbmRpY2VzKVt2ZXJ0ZXhdKTsKLSAgICAgfQotICAgfQotZGlm ZiAtdXAgLi9hcHBzL21vZGVsZXIvc3JjL2Nsb3VkX21lc2hfaXRlbS5jcHAuNDI2MiAuL2FwcHMv bW9kZWxlci9zcmMvY2xvdWRfbWVzaF9pdGVtLmNwcAotLS0tIC4vYXBwcy9tb2RlbGVyL3NyYy9j bG91ZF9tZXNoX2l0ZW0uY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0 MDAKLSsrKyAuL2FwcHMvbW9kZWxlci9zcmMvY2xvdWRfbWVzaF9pdGVtLmNwcAkyMDIxLTAyLTIx IDIxOjMyOjU4LjMyODE3Njc2MyAtMDUwMAotQEAgLTE1NiwxMiArMTU2LDEzIEBAIHZvaWQKLSBw Y2w6Om1vZGVsZXI6OkNsb3VkTWVzaEl0ZW06OmNyZWF0ZUNoYW5uZWxzKCkKLSB7Ci0gICBSZW5k ZXJXaW5kb3dJdGVtKiByZW5kZXJfd2luZG93X2l0ZW0gPSBkeW5hbWljX2Nhc3Q8UmVuZGVyV2lu ZG93SXRlbSo+KHBhcmVudCgpKTsKLS0gIGFkZENoaWxkKG5ldyBQb2ludHNBY3Rvckl0ZW0oCi0t ICAgICAgdGhpcywgY2xvdWRfbWVzaF8sIHJlbmRlcl93aW5kb3dfaXRlbS0+Z2V0UmVuZGVyV2lu ZG93KCktPkdldFJlbmRlcldpbmRvdygpKSk7Ci0tICBhZGRDaGlsZChuZXcgTm9ybWFsc0FjdG9y SXRlbSgKLS0gICAgICB0aGlzLCBjbG91ZF9tZXNoXywgcmVuZGVyX3dpbmRvd19pdGVtLT5nZXRS ZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVyV2luZG93KCkpKTsKLS0gIGFkZENoaWxkKG5ldyBTdXJm YWNlQWN0b3JJdGVtKAotLSAgICAgIHRoaXMsIGNsb3VkX21lc2hfLCByZW5kZXJfd2luZG93X2l0 ZW0tPmdldFJlbmRlcldpbmRvdygpLT5HZXRSZW5kZXJXaW5kb3coKSkpOwotKyAgdnRrUmVuZGVy V2luZG93KiB3aW4gPQotKyAgICAgIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqKHJlbmRlcl93aW5k b3dfaXRlbS0+Z2V0UmVuZGVyV2luZG93KCkpKTsKLSsKLSsgIGFkZENoaWxkKG5ldyBQb2ludHNB Y3Rvckl0ZW0odGhpcywgY2xvdWRfbWVzaF8sIHdpbikpOwotKyAgYWRkQ2hpbGQobmV3IE5vcm1h bHNBY3Rvckl0ZW0odGhpcywgY2xvdWRfbWVzaF8sIHdpbikpOwotKyAgYWRkQ2hpbGQobmV3IFN1 cmZhY2VBY3Rvckl0ZW0odGhpcywgY2xvdWRfbWVzaF8sIHdpbikpOwotKwotICAgZm9yIChpbnQg aSA9IDAsIGlfZW5kID0gY2hpbGRDb3VudCgpOyBpIDwgaV9lbmQ7ICsraSkgewotICAgICBDaGFu bmVsQWN0b3JJdGVtKiBjaGlsZF9pdGVtID0gZHluYW1pY19jYXN0PENoYW5uZWxBY3Rvckl0ZW0q PihjaGlsZChpKSk7Ci0gICAgIGNoaWxkX2l0ZW0tPmluaXQoKTsKLUBAIC0yNDIsNyArMjQzLDcg QEAgcGNsOjptb2RlbGVyOjpDbG91ZE1lc2hJdGVtOjp1cGRhdGVSZW5kZQotICAgZm9yIChpbnQg aSA9IDAsIGlfZW5kID0gY2hpbGRDb3VudCgpOyBpIDwgaV9lbmQ7ICsraSkgewotICAgICBDaGFu bmVsQWN0b3JJdGVtKiBjaGlsZF9pdGVtID0gZHluYW1pY19jYXN0PENoYW5uZWxBY3Rvckl0ZW0q PihjaGlsZChpKSk7Ci0gICAgIGNoaWxkX2l0ZW0tPnN3aXRjaFJlbmRlcldpbmRvdygKLS0gICAg ICAgIHJlbmRlcl93aW5kb3dfaXRlbS0+Z2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRlcldpbmRv dygpKTsKLSsgICAgICAgIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqcmVuZGVyX3dpbmRvd19pdGVt LT5nZXRSZW5kZXJXaW5kb3coKSkpOwotICAgfQotIAotICAgcmVuZGVyX3dpbmRvd19pdGVtLT5n ZXRSZW5kZXJXaW5kb3coKS0+dXBkYXRlQXhlcygpOwotZGlmZiAtdXAgLi9hcHBzL21vZGVsZXIv c3JjL3JlbmRlcl93aW5kb3cuY3BwLjQyNjIgLi9hcHBzL21vZGVsZXIvc3JjL3JlbmRlcl93aW5k b3cuY3BwCi0tLS0gLi9hcHBzL21vZGVsZXIvc3JjL3JlbmRlcl93aW5kb3cuY3BwLjQyNjIJMjAy MC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvbW9kZWxlci9zcmMv cmVuZGVyX3dpbmRvdy5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjgxNzY3NjMgLTA1MDAKLUBA IC01Miw3ICs1Miw3IEBACi0gcGNsOjptb2RlbGVyOjpSZW5kZXJXaW5kb3c6OlJlbmRlcldpbmRv dyhSZW5kZXJXaW5kb3dJdGVtKiByZW5kZXJfd2luZG93X2l0ZW0sCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0KiBwYXJlbnQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCi0tOiBR VlRLV2lkZ2V0KHBhcmVudCwgZmxhZ3MpCi0rOiBQQ0xRVlRLV2lkZ2V0KHBhcmVudCwgZmxhZ3Mp Ci0gLCBheGVzXyh2dGtTbWFydFBvaW50ZXI8dnRrQ3ViZUF4ZXNBY3Rvcj46Ok5ldygpKQotICwg cmVuZGVyX3dpbmRvd19pdGVtXyhyZW5kZXJfd2luZG93X2l0ZW0pCi0gewotQEAgLTc2LDcgKzc2 LDcgQEAgcGNsOjptb2RlbGVyOjpSZW5kZXJXaW5kb3c6On5SZW5kZXJXaW5kbwotIHZvaWQKLSBw Y2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6aW5pdFJlbmRlcmVyKCkKLSB7Ci0tICB2dGtTbWFy dFBvaW50ZXI8dnRrUmVuZGVyV2luZG93PiB3aW4gPSBHZXRSZW5kZXJXaW5kb3coKTsKLSsgIHZ0 a1NtYXJ0UG9pbnRlcjx2dGtSZW5kZXJXaW5kb3c+IHdpbiA9IGdldFJlbmRlcldpbmRvd0NvbXBh dCgqdGhpcyk7Ci0gICB2dGtTbWFydFBvaW50ZXI8dnRrUmVuZGVyZXI+IHJlbmRlcmVyID0gdnRr U21hcnRQb2ludGVyPHZ0a1JlbmRlcmVyPjo6TmV3KCk7Ci0gICB3aW4tPkFkZFJlbmRlcmVyKHJl bmRlcmVyKTsKLSAKLUBAIC0xMDUsNyArMTA1LDcgQEAgcGNsOjptb2RlbGVyOjpSZW5kZXJXaW5k b3c6OmZvY3VzSW5FdmVudAotICAgZHluYW1pY19jYXN0PFNjZW5lVHJlZSo+KHJlbmRlcl93aW5k b3dfaXRlbV8tPnRyZWVXaWRnZXQoKSkKLSAgICAgICAtPnNlbGVjdFJlbmRlcldpbmRvd0l0ZW0o cmVuZGVyX3dpbmRvd19pdGVtXyk7Ci0gCi0tICBRVlRLV2lkZ2V0Ojpmb2N1c0luRXZlbnQoZXZl bnQpOwotKyAgUENMUVZUS1dpZGdldDo6Zm9jdXNJbkV2ZW50KGV2ZW50KTsKLSB9Ci0gCi0gLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotQEAgLTEzMCw3ICsxMzAsNyBAQCBw Y2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6c2V0VGl0bGUoY29uCi0gdm9pZAotIHBjbDo6bW9k ZWxlcjo6UmVuZGVyV2luZG93OjpyZW5kZXIoKQotIHsKLS0gIEdldFJlbmRlcldpbmRvdygpLT5S ZW5kZXIoKTsKLSsgIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqdGhpcyktPlJlbmRlcigpOwotIH0K LSAKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1AQCAtMTM4LDkgKzEz OCwxMSBAQCB2b2lkCi0gcGNsOjptb2RlbGVyOjpSZW5kZXJXaW5kb3c6OnJlc2V0Q2FtZXJhKCkK LSB7Ci0gICBkb3VibGUgYm91bmRzWzZdOwotLSAgR2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRl cmVycygpLT5HZXRGaXJzdFJlbmRlcmVyKCktPkNvbXB1dGVWaXNpYmxlUHJvcEJvdW5kcygKLS0g ICAgICBib3VuZHMpOwotLSAgR2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRlcmVycygpLT5HZXRG aXJzdFJlbmRlcmVyKCktPlJlc2V0Q2FtZXJhKGJvdW5kcyk7Ci0rICBnZXRSZW5kZXJXaW5kb3dD b21wYXQoKnRoaXMpCi0rICAgICAgLT5HZXRSZW5kZXJlcnMoKQotKyAgICAgIC0+R2V0Rmlyc3RS ZW5kZXJlcigpCi0rICAgICAgLT5Db21wdXRlVmlzaWJsZVByb3BCb3VuZHMoYm91bmRzKTsKLSsg IGdldFJlbmRlcldpbmRvd0NvbXBhdCgqdGhpcyktPkdldFJlbmRlcmVycygpLT5HZXRGaXJzdFJl bmRlcmVyKCktPlJlc2V0Q2FtZXJhKGJvdW5kcyk7Ci0gICByZW5kZXIoKTsKLSB9Ci0gCi1AQCAt MTQ4LDE0ICsxNTAsMTYgQEAgcGNsOjptb2RlbGVyOjpSZW5kZXJXaW5kb3c6OnJlc2V0Q2FtZXJh KAotIHZvaWQKLSBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6Z2V0QmFja2dyb3VuZChkb3Vi bGUmIHIsIGRvdWJsZSYgZywgZG91YmxlJiBiKQotIHsKLS0gIEdldFJlbmRlcldpbmRvdygpLT5H ZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RSZW5kZXJlcigpLT5HZXRCYWNrZ3JvdW5kKHIsIGcsIGIp OwotKyAgZ2V0UmVuZGVyV2luZG93Q29tcGF0KCp0aGlzKS0+R2V0UmVuZGVyZXJzKCktPkdldEZp cnN0UmVuZGVyZXIoKS0+R2V0QmFja2dyb3VuZCgKLSsgICAgICByLCBnLCBiKTsKLSB9Ci0gCi0g Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIHZvaWQKLSBwY2w6Om1vZGVs ZXI6OlJlbmRlcldpbmRvdzo6c2V0QmFja2dyb3VuZChkb3VibGUgciwgZG91YmxlIGcsIGRvdWJs ZSBiKQotIHsKLS0gIEdldFJlbmRlcldpbmRvdygpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RS ZW5kZXJlcigpLT5TZXRCYWNrZ3JvdW5kKHIsIGcsIGIpOwotKyAgZ2V0UmVuZGVyV2luZG93Q29t cGF0KCp0aGlzKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0UmVuZGVyZXIoKS0+U2V0QmFja2dy b3VuZCgKLSsgICAgICByLCBnLCBiKTsKLSB9Ci0gCi0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLwotQEAgLTE2NSw3ICsxNjksNyBAQCBwY2w6Om1vZGVsZXI6OlJlbmRlcldp bmRvdzo6dXBkYXRlQXhlcygpCi0gICB2dGtCb3VuZGluZ0JveCBiYjsKLSAKLSAgIHZ0a0FjdG9y Q29sbGVjdGlvbiogYWN0b3JzID0KLS0gICAgICBHZXRSZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVy ZXJzKCktPkdldEZpcnN0UmVuZGVyZXIoKS0+R2V0QWN0b3JzKCk7Ci0rICAgICAgZ2V0UmVuZGVy V2luZG93Q29tcGF0KCp0aGlzKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0UmVuZGVyZXIoKS0+ R2V0QWN0b3JzKCk7Ci0gCi0gICBhY3RvcnMtPkluaXRUcmF2ZXJzYWwoKTsKLSAgIGZvciAoaW50 IGkgPSAwLCBpX2VuZCA9IGFjdG9ycy0+R2V0TnVtYmVyT2ZJdGVtcygpOyBpIDwgaV9lbmQ7ICsr aSkgewotQEAgLTE4MSw4ICsxODUsMTAgQEAgcGNsOjptb2RlbGVyOjpSZW5kZXJXaW5kb3c6OnVw ZGF0ZUF4ZXMoKQotICAgZG91YmxlIGJvdW5kc1s2XTsKLSAgIGJiLkdldEJvdW5kcyhib3VuZHMp OwotICAgYXhlc18tPlNldEJvdW5kcyhib3VuZHMpOwotLSAgYXhlc18tPlNldENhbWVyYSgKLS0g ICAgICBHZXRSZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0UmVuZGVyZXIo KS0+R2V0QWN0aXZlQ2FtZXJhKCkpOwotKyAgYXhlc18tPlNldENhbWVyYShnZXRSZW5kZXJXaW5k b3dDb21wYXQoKnRoaXMpCi0rICAgICAgICAgICAgICAgICAgICAgICAtPkdldFJlbmRlcmVycygp Ci0rICAgICAgICAgICAgICAgICAgICAgICAtPkdldEZpcnN0UmVuZGVyZXIoKQotKyAgICAgICAg ICAgICAgICAgICAgICAgLT5HZXRBY3RpdmVDYW1lcmEoKSk7Ci0gfQotIAotIC8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLUBAIC0xOTAsNyArMTk2LDggQEAgdm9pZAotIHBj bDo6bW9kZWxlcjo6UmVuZGVyV2luZG93OjpzZXRTaG93QXhlcyhib29sIGZsYWcpCi0gewotICAg aWYgKGZsYWcpCi0tICAgIEdldFJlbmRlcldpbmRvdygpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmly c3RSZW5kZXJlcigpLT5BZGRBY3RvcihheGVzXyk7Ci0rICAgIGdldFJlbmRlcldpbmRvd0NvbXBh dCgqdGhpcyktPkdldFJlbmRlcmVycygpLT5HZXRGaXJzdFJlbmRlcmVyKCktPkFkZEFjdG9yKGF4 ZXNfKTsKLSAgIGVsc2UKLS0gICAgR2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRlcmVycygpLT5H ZXRGaXJzdFJlbmRlcmVyKCktPlJlbW92ZUFjdG9yKGF4ZXNfKTsKLSsgICAgZ2V0UmVuZGVyV2lu ZG93Q29tcGF0KCp0aGlzKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0UmVuZGVyZXIoKS0+UmVt b3ZlQWN0b3IoCi0rICAgICAgICBheGVzXyk7Ci0gfQotZGlmZiAtdXAgLi9hcHBzL3NyYy9tYW51 YWxfcmVnaXN0cmF0aW9uL21hbnVhbF9yZWdpc3RyYXRpb24uY3BwLjQyNjIgLi9hcHBzL3NyYy9t YW51YWxfcmVnaXN0cmF0aW9uL21hbnVhbF9yZWdpc3RyYXRpb24uY3BwCi0tLS0gLi9hcHBzL3Ny Yy9tYW51YWxfcmVnaXN0cmF0aW9uL21hbnVhbF9yZWdpc3RyYXRpb24uY3BwLjQyNjIJMjAyMC0w OC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMvc3JjL21hbnVhbF9yZWdp c3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjgx NzY3NjMgLTA1MDAKLUBAIC00OCw2ICs0OCw3IEBACi0gI2luY2x1ZGUgPHZ0a0NhbWVyYS5oPgot ICNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3cuaD4KLSAjaW5jbHVkZSA8dnRrUmVuZGVyZXJDb2xs ZWN0aW9uLmg+Ci0rI2luY2x1ZGUgPHZ0a0dlbmVyaWNPcGVuR0xSZW5kZXJXaW5kb3cuaD4KLSAK LSB1c2luZyBuYW1lc3BhY2UgcGNsOwotIAotQEAgLTY2LDI5ICs2Nyw0NiBAQCBNYW51YWxSZWdp c3RyYXRpb246Ok1hbnVhbFJlZ2lzdHJhdGlvbigpCi0gICB0aGlzLT5zZXRXaW5kb3dUaXRsZSgi UENMIE1hbnVhbCBSZWdpc3RyYXRpb24iKTsKLSAKLSAgIC8vIFNldCB1cCB0aGUgc291cmNlIHdp bmRvdwotKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsgIGF1dG8gcmVuZGVyZXJfc3JjID0g dnRrU21hcnRQb2ludGVyPHZ0a1JlbmRlcmVyPjo6TmV3KCk7Ci0rICBhdXRvIHJlbmRlcldpbmRv d19zcmMgPSB2dGtTbWFydFBvaW50ZXI8dnRrR2VuZXJpY09wZW5HTFJlbmRlcldpbmRvdz46Ok5l dygpOwotKyAgcmVuZGVyV2luZG93X3NyYy0+QWRkUmVuZGVyZXIocmVuZGVyZXJfc3JjKTsKLSsg IHZpc19zcmNfLnJlc2V0KG5ldyBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIocmVu ZGVyZXJfc3JjLCByZW5kZXJXaW5kb3dfc3JjLCAiIiwgZmFsc2UpKTsKLSsjZWxzZQotICAgdmlz X3NyY18ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcigiIiwgZmFs c2UpKTsKLS0gIHVpXy0+cXZ0a193aWRnZXRfc3JjLT5TZXRSZW5kZXJXaW5kb3codmlzX3NyY18t PmdldFJlbmRlcldpbmRvdygpKTsKLS0gIHZpc19zcmNfLT5zZXR1cEludGVyYWN0b3IodWlfLT5x dnRrX3dpZGdldF9zcmMtPkdldEludGVyYWN0b3IoKSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWlfLT5xdnRrX3dpZGdldF9zcmMtPkdldFJlbmRlcldpbmRvdygpKTsKLSsjZW5kaWYg Ly8gVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0rICBzZXRSZW5kZXJXaW5kb3dDb21wYXQoKih1aV8t PnF2dGtfd2lkZ2V0X3NyYyksKih2aXNfc3JjXy0+Z2V0UmVuZGVyV2luZG93KCkpKTsKLSsgIHZp c19zcmNfLT5zZXR1cEludGVyYWN0b3IoZ2V0SW50ZXJhY3RvckNvbXBhdCgqKHVpXy0+cXZ0a193 aWRnZXRfc3JjKSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbmRlcldpbmRv d0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXRfc3JjKSkpOwotKwotICAgdmlzX3NyY18tPmdldElu dGVyYWN0b3JTdHlsZSgpLT5zZXRLZXlib2FyZE1vZGlmaWVyKAotICAgICAgIHBjbDo6dmlzdWFs aXphdGlvbjo6SU5URVJBQ1RPUl9LQl9NT0RfU0hJRlQpOwotLSAgdWlfLT5xdnRrX3dpZGdldF9z cmMtPnVwZGF0ZSgpOwotIAotICAgdmlzX3NyY18tPnJlZ2lzdGVyUG9pbnRQaWNraW5nQ2FsbGJh Y2soJk1hbnVhbFJlZ2lzdHJhdGlvbjo6U291cmNlUG9pbnRQaWNrQ2FsbGJhY2ssCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGhpcyk7Ci0gCi0gICAvLyBTZXQg dXAgdGhlIGRlc3RpbmF0aW9uIHdpbmRvdwotKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsg IGF1dG8gcmVuZGVyZXJfZHN0ID0gdnRrU21hcnRQb2ludGVyPHZ0a1JlbmRlcmVyPjo6TmV3KCk7 Ci0rICBhdXRvIHJlbmRlcldpbmRvd19kc3QgPSB2dGtTbWFydFBvaW50ZXI8dnRrR2VuZXJpY09w ZW5HTFJlbmRlcldpbmRvdz46Ok5ldygpOwotKyAgcmVuZGVyV2luZG93X2RzdC0+QWRkUmVuZGVy ZXIocmVuZGVyZXJfZHN0KTsKLSsgIHZpc19kc3RfLnJlc2V0KG5ldyBwY2w6OnZpc3VhbGl6YXRp b246OlBDTFZpc3VhbGl6ZXIocmVuZGVyZXJfZHN0LCByZW5kZXJXaW5kb3dfZHN0LCAiIiwgZmFs c2UpKTsKLSsjZWxzZQotICAgdmlzX2RzdF8ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6 UENMVmlzdWFsaXplcigiIiwgZmFsc2UpKTsKLS0gIHVpXy0+cXZ0a193aWRnZXRfZHN0LT5TZXRS ZW5kZXJXaW5kb3codmlzX2RzdF8tPmdldFJlbmRlcldpbmRvdygpKTsKLS0gIHZpc19kc3RfLT5z ZXR1cEludGVyYWN0b3IodWlfLT5xdnRrX3dpZGdldF9kc3QtPkdldEludGVyYWN0b3IoKSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlfLT5xdnRrX3dpZGdldF9kc3QtPkdldFJlbmRl cldpbmRvdygpKTsKLSsjZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0rICBzZXRSZW5k ZXJXaW5kb3dDb21wYXQoKih1aV8tPnF2dGtfd2lkZ2V0X2RzdCksICoodmlzX2RzdF8tPmdldFJl bmRlcldpbmRvdygpKSk7Ci0rICB2aXNfZHN0Xy0+c2V0dXBJbnRlcmFjdG9yKGdldEludGVyYWN0 b3JDb21wYXQoKih1aV8tPnF2dGtfd2lkZ2V0X2RzdCkpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZXRSZW5kZXJXaW5kb3dDb21wYXQoKih1aV8tPnF2dGtfd2lkZ2V0X2RzdCkpKTsK LSsKLSsKLSAgIHZpc19kc3RfLT5nZXRJbnRlcmFjdG9yU3R5bGUoKS0+c2V0S2V5Ym9hcmRNb2Rp ZmllcigKLS0gICAgICBwY2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZU KTsKLS0gIHVpXy0+cXZ0a193aWRnZXRfZHN0LT51cGRhdGUoKTsKLSsgICAgcGNsOjp2aXN1YWxp emF0aW9uOjpJTlRFUkFDVE9SX0tCX01PRF9TSElGVCk7Ci0gCi0gICB2aXNfZHN0Xy0+cmVnaXN0 ZXJQb2ludFBpY2tpbmdDYWxsYmFjaygmTWFudWFsUmVnaXN0cmF0aW9uOjpEc3RQb2ludFBpY2tD YWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0aGlz KTsKLS0KLSsgIC8vIFJlbmRlciB2aWV3Ci0rICByZWZyZXNoVmlldygpOwotKyAgCi0gICAvLyBD b25uZWN0IGFsbCBidXR0b25zCi0gICBjb25uZWN0KHVpXy0+Y29uZmlybVNyY1BvaW50QnV0dG9u LAotICAgICAgICAgICBTSUdOQUwoY2xpY2tlZCgpKSwKLUBAIC0yMzYsOCArMjU0LDggQEAgTWFu dWFsUmVnaXN0cmF0aW9uOjpvcnRob0NoYW5nZWQoaW50IHN0YQotICAgICAgICAgLT5HZXRBY3Rp dmVDYW1lcmEoKQotICAgICAgICAgLT5TZXRQYXJhbGxlbFByb2plY3Rpb24oMSk7Ci0gICB9Ci0t ICB1aV8tPnF2dGtfd2lkZ2V0X3NyYy0+dXBkYXRlKCk7Ci0tICB1aV8tPnF2dGtfd2lkZ2V0X2Rz dC0+dXBkYXRlKCk7Ci0rCi0rICByZWZyZXNoVmlldygpOwotIH0KLSAKLSAvLyBUT0RPCi1AQCAt Mjc0LDggKzI5MiwxNyBAQCBNYW51YWxSZWdpc3RyYXRpb246OnRpbWVvdXRTbG90KCkKLSAgICAg fQotICAgICBjbG91ZF9kc3RfbW9kaWZpZWRfID0gZmFsc2U7Ci0gICB9Ci0tICB1aV8tPnF2dGtf d2lkZ2V0X3NyYy0+dXBkYXRlKCk7Ci0rICByZWZyZXNoVmlldygpOwotK30KLSsKLSt2b2lkCi0r TWFudWFsUmVnaXN0cmF0aW9uOjpyZWZyZXNoVmlldygpCi0rewotKyNpZiBWVEtfTUFKT1JfVkVS U0lPTiA+IDgKLSsgIHVpXy0+cXZ0a193aWRnZXRfZHN0LT5yZW5kZXJXaW5kb3coKS0+UmVuZGVy KCk7Ci0rI2Vsc2UKLSAgIHVpXy0+cXZ0a193aWRnZXRfZHN0LT51cGRhdGUoKTsKLSsjZW5kaWYg Ly8gVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0gfQotIAotIHZvaWQKLWRpZmYgLXVwIC4vYXBwcy9z cmMvbWFudWFsX3JlZ2lzdHJhdGlvbi9tYW51YWxfcmVnaXN0cmF0aW9uLnVpLjQyNjIgLi9hcHBz L3NyYy9tYW51YWxfcmVnaXN0cmF0aW9uL21hbnVhbF9yZWdpc3RyYXRpb24udWkKLS0tLSAuL2Fw cHMvc3JjL21hbnVhbF9yZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi51aS40MjYyCTIw MjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL3NyYy9tYW51YWxf cmVnaXN0cmF0aW9uL21hbnVhbF9yZWdpc3RyYXRpb24udWkJMjAyMS0wMi0yMSAyMTozMjo1OC4z MjgxNzY3NjMgLTA1MDAKLUBAIC0zNyw3ICszNyw3IEBACi0gICAgPC9wcm9wZXJ0eT4KLSAgICA8 bGF5b3V0IGNsYXNzPSJRR3JpZExheW91dCIgbmFtZT0iZ3JpZExheW91dCI+Ci0gICAgIDxpdGVt IHJvdz0iMCIgY29sdW1uPSIzIj4KLS0gICAgIDx3aWRnZXQgY2xhc3M9IlFWVEtXaWRnZXQiIG5h bWU9InF2dGtfd2lkZ2V0X3NyYyI+Ci0rICAgICA8d2lkZ2V0IGNsYXNzPSJQQ0xRVlRLV2lkZ2V0 IiBuYW1lPSJxdnRrX3dpZGdldF9zcmMiPgotICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXplUG9s aWN5Ij4KLSAgICAgICAgPHNpemVwb2xpY3kgaHNpemV0eXBlPSJFeHBhbmRpbmciIHZzaXpldHlw ZT0iRXhwYW5kaW5nIj4KLSAgICAgICAgIDxob3JzdHJldGNoPjI1NTwvaG9yc3RyZXRjaD4KLUBA IC0xMzMsNyArMTMzLDcgQEAKLSAgICAgIDwvbGF5b3V0PgotICAgICA8L2l0ZW0+Ci0gICAgIDxp dGVtIHJvdz0iMCIgY29sdW1uPSI3Ij4KLS0gICAgIDx3aWRnZXQgY2xhc3M9IlFWVEtXaWRnZXQi IG5hbWU9InF2dGtfd2lkZ2V0X2RzdCI+Ci0rICAgICA8d2lkZ2V0IGNsYXNzPSJQQ0xRVlRLV2lk Z2V0IiBuYW1lPSJxdnRrX3dpZGdldF9kc3QiPgotICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXpl UG9saWN5Ij4KLSAgICAgICAgPHNpemVwb2xpY3kgaHNpemV0eXBlPSJFeHBhbmRpbmciIHZzaXpl dHlwZT0iRXhwYW5kaW5nIj4KLSAgICAgICAgIDxob3JzdHJldGNoPjI1NTwvaG9yc3RyZXRjaD4K LUBAIC0xNjEsOSArMTYxLDkgQEAKLSAgPC93aWRnZXQ+Ci0gIDxjdXN0b213aWRnZXRzPgotICAg PGN1c3RvbXdpZGdldD4KLS0gICA8Y2xhc3M+UVZUS1dpZGdldDwvY2xhc3M+Ci0tICAgPGV4dGVu ZHM+UVdpZGdldDwvZXh0ZW5kcz4KLS0gICA8aGVhZGVyPlFWVEtXaWRnZXQuaDwvaGVhZGVyPgot KyAgIDxjbGFzcz5QQ0xRVlRLV2lkZ2V0PC9jbGFzcz4KLSsgICA8ZXh0ZW5kcz5RT3BlbkdMV2lk Z2V0PC9leHRlbmRzPgotKyAgIDxoZWFkZXIgbG9jYXRpb249Imdsb2JhbCI+cGNsL3Zpc3VhbGl6 YXRpb24vcXZ0a19jb21wYXRpYmlsaXR5Lmg8L2hlYWRlcj4KLSAgIDwvY3VzdG9td2lkZ2V0Pgot ICA8L2N1c3RvbXdpZGdldHM+Ci0gIDxyZXNvdXJjZXMvPgotZGlmZiAtdXAgLi9hcHBzL3NyYy9v cGVubmlfb2N0cmVlX2NvbXByZXNzaW9uLmNwcC40MjYyIC4vYXBwcy9zcmMvb3Blbm5pX29jdHJl ZV9jb21wcmVzc2lvbi5jcHAKLS0tLSAuL2FwcHMvc3JjL29wZW5uaV9vY3RyZWVfY29tcHJlc3Np b24uY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2Fw cHMvc3JjL29wZW5uaV9vY3RyZWVfY29tcHJlc3Npb24uY3BwCTIwMjEtMDItMjEgMjE6MzI6NTgu MzI5MTc2NzY3IC0wNTAwCi1AQCAtMzgyLDcgKzM4Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIq KiBhcmd2KQotICAgaWYgKCFiU2VydmVyRmlsZU1vZGUpIHsKLSAgICAgaWYgKGJFbkRlY29kZSkg ewotICAgICAgIC8vIEVOQ09ESU5HCi0tICAgICAgb2ZzdHJlYW0gY29tcHJlc3NlZFBDRmlsZTsK LSsgICAgICBzdGQ6Om9mc3RyZWFtIGNvbXByZXNzZWRQQ0ZpbGU7Ci0gICAgICAgY29tcHJlc3Nl ZFBDRmlsZS5vcGVuKGZpbGVOYW1lLmNfc3RyKCksIHN0ZDo6aW9zOjpvdXQgfCBzdGQ6Omlvczo6 dHJ1bmMgfCBzdGQ6Omlvczo6YmluYXJ5KTsKLSAKLSAgICAgICBpZiAoIWJTaG93SW5wdXRDbG91 ZCkgewotZGlmZiAtdXAgLi9hcHBzL3NyYy9vcGVubmlfcGFzc3Rocm91Z2guY3BwLjQyNjIgLi9h cHBzL3NyYy9vcGVubmlfcGFzc3Rocm91Z2guY3BwCi0tLS0gLi9hcHBzL3NyYy9vcGVubmlfcGFz c3Rocm91Z2guY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsr KyAuL2FwcHMvc3JjL29wZW5uaV9wYXNzdGhyb3VnaC5jcHAJMjAyMS0wMi0yMSAyMTozMzozNi42 ODYzNDM4ODIgLTA1MDAKLUBAIC00NCw5ICs0NCwxMyBAQAotICNpbmNsdWRlIDxRT2JqZWN0Pgot IAotICNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3cuaD4KLSsjaW5jbHVkZSA8dnRrUmVuZGVyZXJD b2xsZWN0aW9uLmg+Ci0rI2luY2x1ZGUgPHZ0a0dlbmVyaWNPcGVuR0xSZW5kZXJXaW5kb3cuaD4K LSAKLSAjaW5jbHVkZSA8dGhyZWFkPgotIAotKyNpbmNsdWRlIDx1aV9vcGVubmlfcGFzc3Rocm91 Z2guaD4KLSsKLSB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm9fbGl0ZXJhbHM7Ci0gCi0gLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCi1AQCAtNjEsMTMgKzY1LDIxIEBAIE9wZW5OSVBhc3N0aHJvdWdoOjpPcGVuTklQYXNzdGhy b3VnaChwY2wKLSAgIHVpXy0+c2V0dXBVaSh0aGlzKTsKLSAKLSAgIHRoaXMtPnNldFdpbmRvd1Rp dGxlKCJQQ0wgT3Blbk5JIFBhc3NUaHJvdWdoIFZpZXdlciIpOwotKyAgICAvL0NyZWF0ZSB0aGUg UVZUS1dpZGdldAotKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsgIGF1dG8gcmVuZGVyZXIg PSB2dGtTbWFydFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKLSsgIGF1dG8gcmVuZGVyV2lu ZG93ID0gdnRrU21hcnRQb2ludGVyPHZ0a0dlbmVyaWNPcGVuR0xSZW5kZXJXaW5kb3c+OjpOZXco KTsKLSsgIHJlbmRlcldpbmRvdy0+QWRkUmVuZGVyZXIocmVuZGVyZXIpOwotKyAgdmlzXy5yZXNl dChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyKHJlbmRlcmVyLCByZW5kZXJX aW5kb3csICIiLCBmYWxzZSkpOwotKyNlbHNlCi0gICB2aXNfLnJlc2V0KG5ldyBwY2w6OnZpc3Vh bGl6YXRpb246OlBDTFZpc3VhbGl6ZXIoIiIsIGZhbHNlKSk7Ci0tICB1aV8tPnF2dGtfd2lkZ2V0 LT5TZXRSZW5kZXJXaW5kb3codmlzXy0+Z2V0UmVuZGVyV2luZG93KCkpOwotLSAgdmlzXy0+c2V0 dXBJbnRlcmFjdG9yKHVpXy0+cXZ0a193aWRnZXQtPkdldEludGVyYWN0b3IoKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICB1aV8tPnF2dGtfd2lkZ2V0LT5HZXRSZW5kZXJXaW5kb3coKSk7Ci0t ICB2aXNfLT5nZXRJbnRlcmFjdG9yU3R5bGUoKS0+c2V0S2V5Ym9hcmRNb2RpZmllcigKLS0gICAg ICBwY2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKLS0gIHVpXy0+ cXZ0a193aWRnZXQtPnVwZGF0ZSgpOwotKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgK LSsgIHNldFJlbmRlcldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXQpLCoodmlzXy0+Z2V0 UmVuZGVyV2luZG93KCkpKTsKLSsgIHZpc18tPnNldHVwSW50ZXJhY3RvcihnZXRJbnRlcmFjdG9y Q29tcGF0KCoodWlfLT5xdnRrX3dpZGdldCkpLCBnZXRSZW5kZXJXaW5kb3dDb21wYXQoKih1aV8t PnF2dGtfd2lkZ2V0KSkpOwotKyAgCi0rICB2aXNfLT5nZXRJbnRlcmFjdG9yU3R5bGUoKS0+c2V0 S2V5Ym9hcmRNb2RpZmllcihwY2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NI SUZUKTsKLSsgIAotKyAgcmVmcmVzaFZpZXcoKTsKLSAKLSAgIC8vIFN0YXJ0IHRoZSBPcGVuTkkg ZGF0YSBhY3F1aXNpb24KLSAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBDbG91ZENvbnN0UHRy Jik+IGYgPSBbdGhpc10oY29uc3QgQ2xvdWRDb25zdFB0ciYgY2xvdWQpIHsKLUBAIC0xMjUsNiAr MTM3LDE2IEBAIE9wZW5OSVBhc3N0aHJvdWdoOjp0aW1lb3V0U2xvdCgpCi0gICB1aV8tPnF2dGtf d2lkZ2V0LT51cGRhdGUoKTsKLSB9Ci0gCi0rdm9pZAotK09wZW5OSVBhc3N0aHJvdWdoOjpyZWZy ZXNoVmlldygpCi0rewotKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsgIHVpXy0+cXZ0a193 aWRnZXQtPnJlbmRlcldpbmRvdygpLT5SZW5kZXIoKTsKLSsjZWxzZQotKyAgdWlfLT5xdnRrX3dp ZGdldC0+dXBkYXRlKCk7Ci0rI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAotK30KLSsK LSBpbnQKLSBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLSB7Ci1kaWZmIC11cCAuL2FwcHMv c3JjL29wZW5uaV9wYXNzdGhyb3VnaC51aS40MjYyIC4vYXBwcy9zcmMvb3Blbm5pX3Bhc3N0aHJv dWdoLnVpCi0tLS0gLi9hcHBzL3NyYy9vcGVubmlfcGFzc3Rocm91Z2gudWkuNDI2MgkyMDIwLTA4 LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vYXBwcy9zcmMvb3Blbm5pX3Bhc3N0 aHJvdWdoLnVpCTIwMjEtMDItMjEgMjE6MzI6NTguMzI5MTc2NzY3IC0wNTAwCi1AQCAtMzcsNyAr MzcsNyBAQAotICAgIDwvcHJvcGVydHk+Ci0gICAgPGxheW91dCBjbGFzcz0iUUdyaWRMYXlvdXQi IG5hbWU9ImdyaWRMYXlvdXQiPgotICAgICA8aXRlbSByb3c9IjAiIGNvbHVtbj0iMCI+Ci0tICAg ICA8d2lkZ2V0IGNsYXNzPSJRVlRLV2lkZ2V0IiBuYW1lPSJxdnRrX3dpZGdldCI+Ci0rICAgICA8 d2lkZ2V0IGNsYXNzPSJQQ0xRVlRLV2lkZ2V0IiBuYW1lPSJxdnRrX3dpZGdldCI+Ci0gICAgICAg PHByb3BlcnR5IG5hbWU9InNpemVQb2xpY3kiPgotICAgICAgICA8c2l6ZXBvbGljeSBoc2l6ZXR5 cGU9IkV4cGFuZGluZyIgdnNpemV0eXBlPSJFeHBhbmRpbmciPgotICAgICAgICAgPGhvcnN0cmV0 Y2g+MjU1PC9ob3JzdHJldGNoPgotQEAgLTk0LDkgKzk0LDkgQEAKLSAgPC93aWRnZXQ+Ci0gIDxj dXN0b213aWRnZXRzPgotICAgPGN1c3RvbXdpZGdldD4KLS0gICA8Y2xhc3M+UVZUS1dpZGdldDwv Y2xhc3M+Ci0tICAgPGV4dGVuZHM+UVdpZGdldDwvZXh0ZW5kcz4KLS0gICA8aGVhZGVyPlFWVEtX aWRnZXQuaDwvaGVhZGVyPgotKyAgIDxjbGFzcz5QQ0xRVlRLV2lkZ2V0PC9jbGFzcz4KLSsgICA8 ZXh0ZW5kcz5RT3BlbkdMV2lkZ2V0PC9leHRlbmRzPgotKyAgIDxoZWFkZXIgbG9jYXRpb249Imds b2JhbCI+cGNsL3Zpc3VhbGl6YXRpb24vcXZ0a19jb21wYXRpYmlsaXR5Lmg8L2hlYWRlcj4KLSAg IDwvY3VzdG9td2lkZ2V0PgotICA8L2N1c3RvbXdpZGdldHM+Ci0gIDxyZXNvdXJjZXM+Ci1kaWZm IC11cCAuL2FwcHMvc3JjL29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtby5jcHAuNDI2MiAuL2Fw cHMvc3JjL29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtby5jcHAKLS0tLSAuL2FwcHMvc3JjL29y Z2FuaXplZF9zZWdtZW50YXRpb25fZGVtby5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAw MDAwMDAwMCAtMDQwMAotKysrIC4vYXBwcy9zcmMvb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1v LmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyOTE3Njc2NyAtMDUwMAotQEAgLTEyLDYgKzEyLDgg QEAKLSAjaW5jbHVkZSA8UU9iamVjdD4KLSAKLSAjaW5jbHVkZSA8dnRrUmVuZGVyV2luZG93Lmg+ Ci0rI2luY2x1ZGUgPHZ0a1JlbmRlcmVyQ29sbGVjdGlvbi5oPgotKyNpbmNsdWRlIDx2dGtHZW5l cmljT3BlbkdMUmVuZGVyV2luZG93Lmg+Ci0gCi0gLy8gI2luY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0 ZW0uaHBwPiAgLy8gZm9yIGJvb3N0OjpmaWxlc3lzdGVtOjpkaXJlY3RvcnlfaXRlcmF0b3IKLSAj aW5jbHVkZSA8Ym9vc3Qvc2lnbmFsczIvY29ubmVjdGlvbi5ocHA+IC8vIGZvciBib29zdDo6c2ln bmFsczI6OmNvbm5lY3Rpb24KLUBAIC0yMDQsMTMgKzIwNiwyMyBAQCBPcmdhbml6ZWRTZWdtZW50 YXRpb25EZW1vOjpPcmdhbml6ZWRTZWdtCi0gICB1aV8tPnNldHVwVWkodGhpcyk7Ci0gCi0gICB0 aGlzLT5zZXRXaW5kb3dUaXRsZSgiUENMIE9yZ2FuaXplZCBDb25uZWN0ZWQgQ29tcG9uZW50IFNl Z21lbnRhdGlvbiBEZW1vIik7Ci0rICAKLSsjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0rICBh dXRvIHJlbmRlcmVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1JlbmRlcmVyPjo6TmV3KCk7Ci0rICBh dXRvIHJlbmRlcldpbmRvdyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtHZW5lcmljT3BlbkdMUmVuZGVy V2luZG93Pjo6TmV3KCk7Ci0rICByZW5kZXJXaW5kb3ctPkFkZFJlbmRlcmVyKHJlbmRlcmVyKTsK LSsgIHZpc18ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcihyZW5k ZXJlciwgcmVuZGVyV2luZG93LCAiIiwgZmFsc2UpKTsKLSsjZWxzZQotICAgdmlzXy5yZXNldChu ZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyKCIiLCBmYWxzZSkpOwotLSAgdWlf LT5xdnRrX3dpZGdldC0+U2V0UmVuZGVyV2luZG93KHZpc18tPmdldFJlbmRlcldpbmRvdygpKTsK LS0gIHZpc18tPnNldHVwSW50ZXJhY3Rvcih1aV8tPnF2dGtfd2lkZ2V0LT5HZXRJbnRlcmFjdG9y KCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgdWlfLT5xdnRrX3dpZGdldC0+R2V0UmVuZGVy V2luZG93KCkpOwotKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsgIHNldFJlbmRl cldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXQpLCoodmlzXy0+Z2V0UmVuZGVyV2luZG93 KCkpKTsKLSsgIHZpc18tPnNldHVwSW50ZXJhY3RvcihnZXRJbnRlcmFjdG9yQ29tcGF0KCoodWlf LT5xdnRrX3dpZGdldCkpLCBnZXRSZW5kZXJXaW5kb3dDb21wYXQoKih1aV8tPnF2dGtfd2lkZ2V0 KSkpOwotKyAgCi0rICByZWZyZXNoVmlldygpOwotKyAgCi0gICB2aXNfLT5nZXRJbnRlcmFjdG9y U3R5bGUoKS0+c2V0S2V5Ym9hcmRNb2RpZmllcigKLSAgICAgICBwY2w6OnZpc3VhbGl6YXRpb246 OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKLS0gIHVpXy0+cXZ0a193aWRnZXQtPnVwZGF0ZSgp OwotKyAgCi0gCi0gICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgQ2xvdWRDb25zdFB0ciYpPiBm ID0gW3RoaXNdKGNvbnN0IENsb3VkQ29uc3RQdHImIGNsb3VkKSB7Ci0gICAgIGNsb3VkX2NiKGNs b3VkKTsKLUBAIC0zMDksNiArMzIxLDE2IEBAIE9yZ2FuaXplZFNlZ21lbnRhdGlvbkRlbW86Ok9y Z2FuaXplZFNlZ20KLSB9Ci0gCi0gdm9pZAotK09yZ2FuaXplZFNlZ21lbnRhdGlvbkRlbW86OnJl ZnJlc2hWaWV3KCkKLSt7Ci0rI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAotKyAgdWlfLT5xdnRr X3dpZGdldC0+cmVuZGVyV2luZG93KCktPlJlbmRlcigpOwotKyNlbHNlCi0rICB1aV8tPnF2dGtf d2lkZ2V0LT51cGRhdGUoKTsKLSsjZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0rfQot KwotK3ZvaWQKLSBPcmdhbml6ZWRTZWdtZW50YXRpb25EZW1vOjpjbG91ZF9jYihjb25zdCBDbG91 ZENvbnN0UHRyJiBjbG91ZCkKLSB7Ci0gICBpZiAoIWNhcHR1cmVfKQotQEAgLTQ0MCw4ICs0NjIs NyBAQCBPcmdhbml6ZWRTZWdtZW50YXRpb25EZW1vOjp0aW1lb3V0U2xvdCgpCi0gICAgICAgZGF0 YV9tb2RpZmllZF8gPSBmYWxzZTsKLSAgICAgfQotICAgfQotLQotLSAgdWlfLT5xdnRrX3dpZGdl dC0+dXBkYXRlKCk7Ci0rICByZWZyZXNoVmlldygpOwotIH0KLSAKLSB2b2lkCi1kaWZmIC11cCAu L2FwcHMvc3JjL29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtby51aS40MjYyIC4vYXBwcy9zcmMv b3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vLnVpCi0tLS0gLi9hcHBzL3NyYy9vcmdhbml6ZWRf c2VnbWVudGF0aW9uX2RlbW8udWkuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAt MDQwMAotKysrIC4vYXBwcy9zcmMvb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vLnVpCTIwMjEt MDItMjEgMjE6MzI6NTguMzI5MTc2NzY3IC0wNTAwCi1AQCAtMzcsNyArMzcsNyBAQAotICAgIDwv cHJvcGVydHk+Ci0gICAgPGxheW91dCBjbGFzcz0iUUdyaWRMYXlvdXQiIG5hbWU9ImdyaWRMYXlv dXQiPgotICAgICA8aXRlbSByb3c9IjAiIGNvbHVtbj0iMyI+Ci0tICAgICA8d2lkZ2V0IGNsYXNz PSJRVlRLV2lkZ2V0IiBuYW1lPSJxdnRrX3dpZGdldCI+Ci0rICAgICA8d2lkZ2V0IGNsYXNzPSJQ Q0xRVlRLV2lkZ2V0IiBuYW1lPSJxdnRrX3dpZGdldCI+Ci0gICAgICAgPHByb3BlcnR5IG5hbWU9 InNpemVQb2xpY3kiPgotICAgICAgICA8c2l6ZXBvbGljeSBoc2l6ZXR5cGU9IkV4cGFuZGluZyIg dnNpemV0eXBlPSJFeHBhbmRpbmciPgotICAgICAgICAgPGhvcnN0cmV0Y2g+MjU1PC9ob3JzdHJl dGNoPgotQEAgLTIxNCw5ICsyMTQsOSBAQAotICA8L3dpZGdldD4KLSAgPGN1c3RvbXdpZGdldHM+ Ci0gICA8Y3VzdG9td2lkZ2V0PgotLSAgIDxjbGFzcz5RVlRLV2lkZ2V0PC9jbGFzcz4KLS0gICA8 ZXh0ZW5kcz5RV2lkZ2V0PC9leHRlbmRzPgotLSAgIDxoZWFkZXI+UVZUS1dpZGdldC5oPC9oZWFk ZXI+Ci0rICAgPGNsYXNzPlBDTFFWVEtXaWRnZXQ8L2NsYXNzPgotKyAgIDxleHRlbmRzPlFPcGVu R0xXaWRnZXQ8L2V4dGVuZHM+Ci0rICAgPGhlYWRlciBsb2NhdGlvbj0iZ2xvYmFsIj5wY2wvdmlz dWFsaXphdGlvbi9xdnRrX2NvbXBhdGliaWxpdHkuaDwvaGVhZGVyPgotICAgPC9jdXN0b213aWRn ZXQ+Ci0gIDwvY3VzdG9td2lkZ2V0cz4KLSAgPHJlc291cmNlcz4KLWRpZmYgLXVwIC4vYXBwcy9z cmMvcGNkX3ZpZGVvX3BsYXllci9wY2RfdmlkZW9fcGxheWVyLmNwcC40MjYyIC4vYXBwcy9zcmMv cGNkX3ZpZGVvX3BsYXllci9wY2RfdmlkZW9fcGxheWVyLmNwcAotLS0tIC4vYXBwcy9zcmMvcGNk X3ZpZGVvX3BsYXllci9wY2RfdmlkZW9fcGxheWVyLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6 MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9hcHBzL3NyYy9wY2RfdmlkZW9fcGxheWVyL3BjZF92 aWRlb19wbGF5ZXIuY3BwCTIwMjEtMDItMjEgMjE6MzI6NTguMzI5MTc2NzY3IC0wNTAwCi1AQCAt MzUsNiArMzUsOCBAQAotICAqCi0gICovCi0gCi0rI2luY2x1ZGUgPHVpX3BjZF92aWRlb19wbGF5 ZXIuaD4KLSsKLSAjaW5jbHVkZSA8cGNsL2FwcHMvcGNkX3ZpZGVvX3BsYXllci5oPgotICNpbmNs dWRlIDxwY2wvaW8vcGNkX2lvLmg+Ci0gI2luY2x1ZGUgPHBjbC9wb2ludF90eXBlcy5oPgotQEAg LTUxLDYgKzUzLDcgQEAKLSAjaW5jbHVkZSA8dnRrQ2FtZXJhLmg+Ci0gI2luY2x1ZGUgPHZ0a1Jl bmRlcldpbmRvdy5oPgotICNpbmNsdWRlIDx2dGtSZW5kZXJlckNvbGxlY3Rpb24uaD4KLSsjaW5j bHVkZSA8dnRrR2VuZXJpY09wZW5HTFJlbmRlcldpbmRvdy5oPgotIAotICNpbmNsdWRlIDxmc3Ry ZWFtPgotICNpbmNsdWRlIDxpb3N0cmVhbT4KLUBAIC04MCwxNCArODMsMjEgQEAgUENEVmlkZW9Q bGF5ZXI6OlBDRFZpZGVvUGxheWVyKCkKLSAgIC8vIFNldHVwIHRoZSBjbG91ZCBwb2ludGVyCi0g ICBjbG91ZF8ucmVzZXQobmV3IHBjbDo6UG9pbnRDbG91ZDxwY2w6OlBvaW50WFlaUkdCQT4pOwot IAotLSAgLy8gU2V0IHVwIHRoZSBxdnRrIHdpbmRvdwotKyAgLy9DcmVhdGUgdGhlIFFWVEtXaWRn ZXQKLSsjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0rICBhdXRvIHJlbmRlcmVyID0gdnRrU21h cnRQb2ludGVyPHZ0a1JlbmRlcmVyPjo6TmV3KCk7Ci0rICBhdXRvIHJlbmRlcldpbmRvdyA9IHZ0 a1NtYXJ0UG9pbnRlcjx2dGtHZW5lcmljT3BlbkdMUmVuZGVyV2luZG93Pjo6TmV3KCk7Ci0rICBy ZW5kZXJXaW5kb3ctPkFkZFJlbmRlcmVyKHJlbmRlcmVyKTsKLSsgIHZpc18ucmVzZXQobmV3IHBj bDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcihyZW5kZXJlciwgcmVuZGVyV2luZG93LCAi IiwgZmFsc2UpKTsKLSsjZWxzZQotICAgdmlzXy5yZXNldChuZXcgcGNsOjp2aXN1YWxpemF0aW9u OjpQQ0xWaXN1YWxpemVyKCIiLCBmYWxzZSkpOwotLSAgdWlfLT5xdnRrV2lkZ2V0LT5TZXRSZW5k ZXJXaW5kb3codmlzXy0+Z2V0UmVuZGVyV2luZG93KCkpOwotLSAgdmlzXy0+c2V0dXBJbnRlcmFj dG9yKHVpXy0+cXZ0a1dpZGdldC0+R2V0SW50ZXJhY3RvcigpLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIHVpXy0+cXZ0a1dpZGdldC0+R2V0UmVuZGVyV2luZG93KCkpOwotLSAgdmlzXy0+Z2V0 SW50ZXJhY3RvclN0eWxlKCktPnNldEtleWJvYXJkTW9kaWZpZXIoCi0tICAgICAgcGNsOjp2aXN1 YWxpemF0aW9uOjpJTlRFUkFDVE9SX0tCX01PRF9TSElGVCk7Ci0tICB1aV8tPnF2dGtXaWRnZXQt PnVwZGF0ZSgpOwotKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsgIHNldFJlbmRl cldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXQpLCoodmlzXy0+Z2V0UmVuZGVyV2luZG93 KCkpKTsKLSsgIHZpc18tPnNldHVwSW50ZXJhY3RvcihnZXRJbnRlcmFjdG9yQ29tcGF0KCoodWlf LT5xdnRrX3dpZGdldCkpLCBnZXRSZW5kZXJXaW5kb3dDb21wYXQoKih1aV8tPnF2dGtfd2lkZ2V0 KSkpOwotKwotKyAgdmlzXy0+Z2V0SW50ZXJhY3RvclN0eWxlKCktPnNldEtleWJvYXJkTW9kaWZp ZXIocGNsOjp2aXN1YWxpemF0aW9uOjpJTlRFUkFDVE9SX0tCX01PRF9TSElGVCk7Ci0rCi0rICBy ZWZyZXNoVmlldygpOwotIAotICAgLy8gQ29ubmVjdCBhbGwgYnV0dG9ucwotICAgY29ubmVjdCh1 aV8tPnBsYXlCdXR0b24sIFNJR05BTChjbGlja2VkKCkpLCB0aGlzLCBTTE9UKHBsYXlCdXR0b25Q cmVzc2VkKCkpKTsKLUBAIC0yNTgsNyArMjY4LDggQEAgUENEVmlkZW9QbGF5ZXI6OnRpbWVvdXRT bG90KCkKLSAgICAgfQotICAgICBjbG91ZF9tb2RpZmllZF8gPSBmYWxzZTsKLSAgIH0KLS0gIHVp Xy0+cXZ0a1dpZGdldC0+dXBkYXRlKCk7Ci0rCi0rICByZWZyZXNoVmlldygpOwotIH0KLSAKLSB2 b2lkCi1AQCAtMjcwLDYgKzI4MSwxNiBAQCBQQ0RWaWRlb1BsYXllcjo6aW5kZXhTbGlkZXJWYWx1 ZUNoYW5nZWQoCi0gfQotIAotIHZvaWQKLStQQ0RWaWRlb1BsYXllcjo6cmVmcmVzaFZpZXcoKQot K3sKLSsjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4Ci0rICB1aV8tPnF2dGtfd2lkZ2V0LT5yZW5k ZXJXaW5kb3coKS0+UmVuZGVyKCk7Ci0rI2Vsc2UKLSsgIHVpXy0+cXZ0a193aWRnZXQtPnVwZGF0 ZSgpOwotKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSt9Ci0rCi0rdm9pZAotIHBy aW50X3VzYWdlKCkKLSB7Ci0gICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi1kaWZmIC11cCAuL2FwcHMv c3JjL3BjZF92aWRlb19wbGF5ZXIvcGNkX3ZpZGVvX3BsYXllci51aS40MjYyIC4vYXBwcy9zcmMv cGNkX3ZpZGVvX3BsYXllci9wY2RfdmlkZW9fcGxheWVyLnVpCi0tLS0gLi9hcHBzL3NyYy9wY2Rf dmlkZW9fcGxheWVyL3BjZF92aWRlb19wbGF5ZXIudWkuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAz LjAwMDAwMDAwMCAtMDQwMAotKysrIC4vYXBwcy9zcmMvcGNkX3ZpZGVvX3BsYXllci9wY2Rfdmlk ZW9fcGxheWVyLnVpCTIwMjEtMDItMjEgMjE6MzI6NTguMzI5MTc2NzY3IC0wNTAwCi1AQCAtMTQs MTIyICsxNCwxMDggQEAKLSAgICA8c3RyaW5nPk1haW5XaW5kb3c8L3N0cmluZz4KLSAgIDwvcHJv cGVydHk+Ci0gICA8d2lkZ2V0IGNsYXNzPSJRV2lkZ2V0IiBuYW1lPSJjZW50cmFsd2lkZ2V0Ij4K LS0gICA8d2lkZ2V0IGNsYXNzPSJRV2lkZ2V0IiBuYW1lPSJ2ZXJ0aWNhbExheW91dFdpZGdldCI+ Ci0tICAgIDxwcm9wZXJ0eSBuYW1lPSJnZW9tZXRyeSI+Ci0tICAgICA8cmVjdD4KLS0gICAgICA8 eD4zMzk8L3g+Ci0tICAgICAgPHk+MTA8L3k+Ci0tICAgICAgPHdpZHRoPjQ1MTwvd2lkdGg+Ci0t ICAgICAgPGhlaWdodD41MzE8L2hlaWdodD4KLS0gICAgIDwvcmVjdD4KLS0gICAgPC9wcm9wZXJ0 eT4KLS0gICAgPGxheW91dCBjbGFzcz0iUVZCb3hMYXlvdXQiIG5hbWU9InZlcnRpY2FsTGF5b3V0 Ij4KLS0gICAgIDxpdGVtPgotLSAgICAgIDx3aWRnZXQgY2xhc3M9IlFWVEtXaWRnZXQiIG5hbWU9 InF2dGtXaWRnZXQiLz4KLS0gICAgIDwvaXRlbT4KLS0gICAgIDxpdGVtPgotLSAgICAgIDx3aWRn ZXQgY2xhc3M9IlFTbGlkZXIiIG5hbWU9ImluZGV4U2xpZGVyIj4KLS0gICAgICAgPHByb3BlcnR5 IG5hbWU9Im9yaWVudGF0aW9uIj4KLS0gICAgICAgIDxlbnVtPlF0OjpIb3Jpem9udGFsPC9lbnVt PgotLSAgICAgICA8L3Byb3BlcnR5PgotLSAgICAgIDwvd2lkZ2V0PgotLSAgICAgPC9pdGVtPgot LSAgICA8L2xheW91dD4KLS0gICA8L3dpZGdldD4KLS0gICA8d2lkZ2V0IGNsYXNzPSJRV2lkZ2V0 IiBuYW1lPSJ2ZXJ0aWNhbExheW91dFdpZGdldF8yIj4KLS0gICAgPHByb3BlcnR5IG5hbWU9Imdl b21ldHJ5Ij4KLS0gICAgIDxyZWN0PgotLSAgICAgIDx4Pjk8L3g+Ci0tICAgICAgPHk+OTwveT4K LS0gICAgICA8d2lkdGg+MzIxPC93aWR0aD4KLS0gICAgICA8aGVpZ2h0PjUzMTwvaGVpZ2h0Pgot LSAgICAgPC9yZWN0PgotLSAgICA8L3Byb3BlcnR5PgotLSAgICA8bGF5b3V0IGNsYXNzPSJRVkJv eExheW91dCIgbmFtZT0idmVydGljYWxMYXlvdXRfMiI+Ci0tICAgICA8aXRlbT4KLS0gICAgICA8 d2lkZ2V0IGNsYXNzPSJRUHVzaEJ1dHRvbiIgbmFtZT0ic2VsZWN0RmlsZXNCdXR0b24iPgotLSAg ICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+Ci0tICAgICAgICA8c3RyaW5nPlNlbGVjdCBQQ0Qg RmlsZXM8L3N0cmluZz4KLS0gICAgICAgPC9wcm9wZXJ0eT4KLS0gICAgICA8L3dpZGdldD4KLS0g ICAgIDwvaXRlbT4KLS0gICAgIDxpdGVtPgotLSAgICAgIDx3aWRnZXQgY2xhc3M9IlFQdXNoQnV0 dG9uIiBuYW1lPSJzZWxlY3RGb2xkZXJCdXR0b24iPgotLSAgICAgICA8cHJvcGVydHkgbmFtZT0i dGV4dCI+Ci0tICAgICAgICA8c3RyaW5nPlNlbGVjdCBGb2xkZXI8L3N0cmluZz4KLS0gICAgICAg PC9wcm9wZXJ0eT4KLS0gICAgICA8L3dpZGdldD4KLS0gICAgIDwvaXRlbT4KLS0gICAgIDxpdGVt PgotLSAgICAgIDx3aWRnZXQgY2xhc3M9IkxpbmUiIG5hbWU9ImxpbmVfMiI+Ci0tICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+Ci0tICAgICAgICA8ZW51bT5RdDo6SG9yaXpvbnRh bDwvZW51bT4KLS0gICAgICAgPC9wcm9wZXJ0eT4KLS0gICAgICA8L3dpZGdldD4KLS0gICAgIDwv aXRlbT4KLS0gICAgIDxpdGVtPgotLSAgICAgIDxzcGFjZXIgbmFtZT0idmVydGljYWxTcGFjZXIi PgotLSAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRpb24iPgotLSAgICAgICAgPGVudW0+ UXQ6OlZlcnRpY2FsPC9lbnVtPgotLSAgICAgICA8L3Byb3BlcnR5PgotLSAgICAgICA8cHJvcGVy dHkgbmFtZT0ic2l6ZUhpbnQiIHN0ZHNldD0iMCI+Ci0tICAgICAgICA8c2l6ZT4KLS0gICAgICAg ICA8d2lkdGg+MjA8L3dpZHRoPgotLSAgICAgICAgIDxoZWlnaHQ+NDA8L2hlaWdodD4KLS0gICAg ICAgIDwvc2l6ZT4KLS0gICAgICAgPC9wcm9wZXJ0eT4KLS0gICAgICA8L3NwYWNlcj4KLS0gICAg IDwvaXRlbT4KLS0gICAgIDxpdGVtPgotLSAgICAgIDx3aWRnZXQgY2xhc3M9IkxpbmUiIG5hbWU9 ImxpbmVfMyI+Ci0tICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+Ci0tICAgICAg ICA8ZW51bT5RdDo6SG9yaXpvbnRhbDwvZW51bT4KLS0gICAgICAgPC9wcm9wZXJ0eT4KLS0gICAg ICA8L3dpZGdldD4KLS0gICAgIDwvaXRlbT4KLS0gICAgIDxpdGVtPgotLSAgICAgIDxsYXlvdXQg Y2xhc3M9IlFIQm94TGF5b3V0IiBuYW1lPSJob3Jpem9udGFsTGF5b3V0Ij4KLS0gICAgICAgPGl0 ZW0+Ci0tICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIgbmFtZT0iYmFja0J1dHRv biI+Ci0tICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgotLSAgICAgICAgICA8c3RyaW5n Pi4uLjwvc3RyaW5nPgotLSAgICAgICAgIDwvcHJvcGVydHk+Ci0tICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImFycm93VHlwZSI+Ci0tICAgICAgICAgIDxlbnVtPlF0OjpMZWZ0QXJyb3c8L2VudW0+ Ci0tICAgICAgICAgPC9wcm9wZXJ0eT4KLS0gICAgICAgIDwvd2lkZ2V0PgotLSAgICAgICA8L2l0 ZW0+Ci0tICAgICAgIDxpdGVtPgotLSAgICAgICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24i IG5hbWU9InN0b3BCdXR0b24iPgotLSAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLS0g ICAgICAgICAgPHN0cmluZz5TdG9wPC9zdHJpbmc+Ci0tICAgICAgICAgPC9wcm9wZXJ0eT4KLS0g ICAgICAgIDwvd2lkZ2V0PgotLSAgICAgICA8L2l0ZW0+Ci0tICAgICAgIDxpdGVtPgotLSAgICAg ICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24iIG5hbWU9InBsYXlCdXR0b24iPgotLSAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLS0gICAgICAgICAgPHN0cmluZz5QbGF5PC9zdHJp bmc+Ci0tICAgICAgICAgPC9wcm9wZXJ0eT4KLS0gICAgICAgICA8cHJvcGVydHkgbmFtZT0iYXJy b3dUeXBlIj4KLS0gICAgICAgICAgPGVudW0+UXQ6Ok5vQXJyb3c8L2VudW0+Ci0tICAgICAgICAg PC9wcm9wZXJ0eT4KLS0gICAgICAgIDwvd2lkZ2V0PgotLSAgICAgICA8L2l0ZW0+Ci0tICAgICAg IDxpdGVtPgotLSAgICAgICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24iIG5hbWU9Im5leHRC dXR0b24iPgotLSAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLS0gICAgICAgICAgPHN0 cmluZz4uLi48L3N0cmluZz4KLS0gICAgICAgICA8L3Byb3BlcnR5PgotLSAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJhcnJvd1R5cGUiPgotLSAgICAgICAgICA8ZW51bT5RdDo6UmlnaHRBcnJvdzwv ZW51bT4KLS0gICAgICAgICA8L3Byb3BlcnR5PgotLSAgICAgICAgPC93aWRnZXQ+Ci0tICAgICAg IDwvaXRlbT4KLS0gICAgICA8L2xheW91dD4KLS0gICAgIDwvaXRlbT4KLS0gICAgPC9sYXlvdXQ+ Ci0tICAgPC93aWRnZXQ+Ci0rICAgPGxheW91dCBjbGFzcz0iUUhCb3hMYXlvdXQiIG5hbWU9Imhv cml6b250YWxMYXlvdXRfMiI+Ci0rICAgIDxpdGVtPgotKyAgICAgPGxheW91dCBjbGFzcz0iUVZC b3hMYXlvdXQiIG5hbWU9InZlcnRpY2FsTGF5b3V0XzIiPgotKyAgICAgIDxpdGVtPgotKyAgICAg ICA8d2lkZ2V0IGNsYXNzPSJRUHVzaEJ1dHRvbiIgbmFtZT0ic2VsZWN0RmlsZXNCdXR0b24iPgot KyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgotKyAgICAgICAgIDxzdHJpbmc+U2VsZWN0 IFBDRCBGaWxlczwvc3RyaW5nPgotKyAgICAgICAgPC9wcm9wZXJ0eT4KLSsgICAgICAgPC93aWRn ZXQ+Ci0rICAgICAgPC9pdGVtPgotKyAgICAgIDxpdGVtPgotKyAgICAgICA8d2lkZ2V0IGNsYXNz PSJRUHVzaEJ1dHRvbiIgbmFtZT0ic2VsZWN0Rm9sZGVyQnV0dG9uIj4KLSsgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ0ZXh0Ij4KLSsgICAgICAgICA8c3RyaW5nPlNlbGVjdCBGb2xkZXI8L3N0cmlu Zz4KLSsgICAgICAgIDwvcHJvcGVydHk+Ci0rICAgICAgIDwvd2lkZ2V0PgotKyAgICAgIDwvaXRl bT4KLSsgICAgICA8aXRlbT4KLSsgICAgICAgPHdpZGdldCBjbGFzcz0iTGluZSIgbmFtZT0ibGlu ZV8yIj4KLSsgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+Ci0rICAgICAgICAg PGVudW0+UXQ6Okhvcml6b250YWw8L2VudW0+Ci0rICAgICAgICA8L3Byb3BlcnR5PgotKyAgICAg ICA8L3dpZGdldD4KLSsgICAgICA8L2l0ZW0+Ci0rICAgICAgPGl0ZW0+Ci0rICAgICAgIDxzcGFj ZXIgbmFtZT0idmVydGljYWxTcGFjZXIiPgotKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVu dGF0aW9uIj4KLSsgICAgICAgICA8ZW51bT5RdDo6VmVydGljYWw8L2VudW0+Ci0rICAgICAgICA8 L3Byb3BlcnR5PgotKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemVIaW50IiBzdGRzZXQ9IjAi PgotKyAgICAgICAgIDxzaXplPgotKyAgICAgICAgICA8d2lkdGg+MjA8L3dpZHRoPgotKyAgICAg ICAgICA8aGVpZ2h0PjQwPC9oZWlnaHQ+Ci0rICAgICAgICAgPC9zaXplPgotKyAgICAgICAgPC9w cm9wZXJ0eT4KLSsgICAgICAgPC9zcGFjZXI+Ci0rICAgICAgPC9pdGVtPgotKyAgICAgIDxpdGVt PgotKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJMaW5lIiBuYW1lPSJsaW5lXzMiPgotKyAgICAgICAg PHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj4KLSsgICAgICAgICA8ZW51bT5RdDo6SG9yaXpv bnRhbDwvZW51bT4KLSsgICAgICAgIDwvcHJvcGVydHk+Ci0rICAgICAgIDwvd2lkZ2V0PgotKyAg ICAgIDwvaXRlbT4KLSsgICAgICA8aXRlbT4KLSsgICAgICAgPGxheW91dCBjbGFzcz0iUUhCb3hM YXlvdXQiIG5hbWU9Imhvcml6b250YWxMYXlvdXQiPgotKyAgICAgICAgPGl0ZW0+Ci0rICAgICAg ICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24iIG5hbWU9ImJhY2tCdXR0b24iPgotKyAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+Ci0rICAgICAgICAgICA8c3RyaW5nPi4uLjwvc3Ry aW5nPgotKyAgICAgICAgICA8L3Byb3BlcnR5PgotKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i YXJyb3dUeXBlIj4KLSsgICAgICAgICAgIDxlbnVtPlF0OjpMZWZ0QXJyb3c8L2VudW0+Ci0rICAg ICAgICAgIDwvcHJvcGVydHk+Ci0rICAgICAgICAgPC93aWRnZXQ+Ci0rICAgICAgICA8L2l0ZW0+ Ci0rICAgICAgICA8aXRlbT4KLSsgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIg bmFtZT0ic3RvcEJ1dHRvbiI+Ci0rICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLSsg ICAgICAgICAgIDxzdHJpbmc+U3RvcDwvc3RyaW5nPgotKyAgICAgICAgICA8L3Byb3BlcnR5Pgot KyAgICAgICAgIDwvd2lkZ2V0PgotKyAgICAgICAgPC9pdGVtPgotKyAgICAgICAgPGl0ZW0+Ci0r ICAgICAgICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24iIG5hbWU9InBsYXlCdXR0b24iPgot KyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+Ci0rICAgICAgICAgICA8c3RyaW5nPlBs YXk8L3N0cmluZz4KLSsgICAgICAgICAgPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImFycm93VHlwZSI+Ci0rICAgICAgICAgICA8ZW51bT5RdDo6Tm9BcnJvdzwvZW51bT4K LSsgICAgICAgICAgPC9wcm9wZXJ0eT4KLSsgICAgICAgICA8L3dpZGdldD4KLSsgICAgICAgIDwv aXRlbT4KLSsgICAgICAgIDxpdGVtPgotKyAgICAgICAgIDx3aWRnZXQgY2xhc3M9IlFUb29sQnV0 dG9uIiBuYW1lPSJuZXh0QnV0dG9uIj4KLSsgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQi PgotKyAgICAgICAgICAgPHN0cmluZz4uLi48L3N0cmluZz4KLSsgICAgICAgICAgPC9wcm9wZXJ0 eT4KLSsgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImFycm93VHlwZSI+Ci0rICAgICAgICAgICA8 ZW51bT5RdDo6UmlnaHRBcnJvdzwvZW51bT4KLSsgICAgICAgICAgPC9wcm9wZXJ0eT4KLSsgICAg ICAgICA8L3dpZGdldD4KLSsgICAgICAgIDwvaXRlbT4KLSsgICAgICAgPC9sYXlvdXQ+Ci0rICAg ICAgPC9pdGVtPgotKyAgICAgPC9sYXlvdXQ+Ci0rICAgIDwvaXRlbT4KLSsgICAgPGl0ZW0+Ci0r ICAgICA8bGF5b3V0IGNsYXNzPSJRVkJveExheW91dCIgbmFtZT0idmVydGljYWxMYXlvdXQiPgot KyAgICAgIDxpdGVtPgotKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJQQ0xRVlRLV2lkZ2V0IiBuYW1l PSJxdnRrX3dpZGdldCIvPgotKyAgICAgIDwvaXRlbT4KLSsgICAgICA8aXRlbT4KLSsgICAgICAg PHdpZGdldCBjbGFzcz0iUVNsaWRlciIgbmFtZT0iaW5kZXhTbGlkZXIiPgotKyAgICAgICAgPHBy b3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj4KLSsgICAgICAgICA8ZW51bT5RdDo6SG9yaXpvbnRh bDwvZW51bT4KLSsgICAgICAgIDwvcHJvcGVydHk+Ci0rICAgICAgIDwvd2lkZ2V0PgotKyAgICAg IDwvaXRlbT4KLSsgICAgIDwvbGF5b3V0PgotKyAgICA8L2l0ZW0+Ci0rICAgPC9sYXlvdXQ+Ci0g ICA8L3dpZGdldD4KLSAgIDx3aWRnZXQgY2xhc3M9IlFNZW51QmFyIiBuYW1lPSJtZW51YmFyIj4K LSAgICA8cHJvcGVydHkgbmFtZT0iZ2VvbWV0cnkiPgotQEAgLTEzNyw3ICsxMjMsNyBAQAotICAg ICAgPHg+MDwveD4KLSAgICAgIDx5PjA8L3k+Ci0gICAgICA8d2lkdGg+ODAwPC93aWR0aD4KLS0g ICAgIDxoZWlnaHQ+MjU8L2hlaWdodD4KLSsgICAgIDxoZWlnaHQ+MjE8L2hlaWdodD4KLSAgICAg PC9yZWN0PgotICAgIDwvcHJvcGVydHk+Ci0gICA8L3dpZGdldD4KLUBAIC0xNDUsOSArMTMxLDkg QEAKLSAgPC93aWRnZXQ+Ci0gIDxjdXN0b213aWRnZXRzPgotICAgPGN1c3RvbXdpZGdldD4KLS0g ICA8Y2xhc3M+UVZUS1dpZGdldDwvY2xhc3M+Ci0tICAgPGV4dGVuZHM+UVdpZGdldDwvZXh0ZW5k cz4KLS0gICA8aGVhZGVyPlFWVEtXaWRnZXQuaDwvaGVhZGVyPgotKyAgIDxjbGFzcz5QQ0xRVlRL V2lkZ2V0PC9jbGFzcz4KLSsgICA8ZXh0ZW5kcz5RT3BlbkdMV2lkZ2V0PC9leHRlbmRzPgotKyAg IDxoZWFkZXIgbG9jYXRpb249Imdsb2JhbCI+cGNsL3Zpc3VhbGl6YXRpb24vcXZ0a19jb21wYXRp YmlsaXR5Lmg8L2hlYWRlcj4KLSAgIDwvY3VzdG9td2lkZ2V0PgotICA8L2N1c3RvbXdpZGdldHM+ Ci0gIDxyZXNvdXJjZXMvPgotZGlmZiAtdXAgLi9hcHBzL3NyYy9yZW5kZXJfdmlld3NfdGVzc2Vs YXRlZF9zcGhlcmUuY3BwLjQyNjIgLi9hcHBzL3NyYy9yZW5kZXJfdmlld3NfdGVzc2VsYXRlZF9z cGhlcmUuY3BwCi0tLS0gLi9hcHBzL3NyYy9yZW5kZXJfdmlld3NfdGVzc2VsYXRlZF9zcGhlcmUu Y3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2FwcHMv c3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5jcHAJMjAyMS0wMi0yMSAyMTozMjo1 OC4zMjkxNzY3NjcgLTA1MDAKLUBAIC03LDYgKzcsNyBAQAotIAotICNpbmNsdWRlIDxwY2wvYXBw cy9yZW5kZXJfdmlld3NfdGVzc2VsYXRlZF9zcGhlcmUuaD4KLSAjaW5jbHVkZSA8cGNsL3BvaW50 X3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3Z0ay9wY2xfdnRrX2NvbXBh dGliaWxpdHkuaD4KLSAKLSAjaW5jbHVkZSA8dnRrQWN0b3IuaD4KLSAjaW5jbHVkZSA8dnRrQ2Ft ZXJhLmg+Ci1AQCAtMjYsNiArMjcsNyBAQAotICNpbmNsdWRlIDx2dGtUcmFuc2Zvcm1GaWx0ZXIu aD4KLSAjaW5jbHVkZSA8dnRrVHJpYW5nbGUuaD4KLSAjaW5jbHVkZSA8dnRrV29ybGRQb2ludFBp Y2tlci5oPgotKyNpbmNsdWRlIDx2dGtJZFR5cGVBcnJheS5oPgotIAotICNpbmNsdWRlIDxhcnJh eT4KLSAKLUBAIC0zNCw3ICszNiw4IEBAIHBjbDo6YXBwczo6UmVuZGVyVmlld3NUZXNzZWxhdGVk U3BoZXJlOjoKLSB7Ci0gICAvLyBjZW50ZXIgb2JqZWN0Ci0gICBkb3VibGUgQ29NWzNdOwotLSAg dnRrSWRUeXBlIG5wdHNfY29tID0gMCwgKnB0SWRzX2NvbSA9IG51bGxwdHI7Ci0rICB2dGtJZFR5 cGUgbnB0c19jb20gPSAwOwotKyAgdnRrQ2VsbFB0c1B0ciBwdElkc19jb20gPSBudWxscHRyOwot ICAgdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT4gY2VsbHNfY29tID0gcG9seWRhdGFfLT5H ZXRQb2x5cygpOwotIAotICAgZG91YmxlIGNlbnRlclszXSwgcDFfY29tWzNdLCBwMl9jb21bM10s IHAzX2NvbVszXSwgdG90YWxBcmVhX2NvbSA9IDA7Ci1AQCAtOTUsNyArOTgsOCBAQCBwY2w6OmFw cHM6OlJlbmRlclZpZXdzVGVzc2VsYXRlZFNwaGVyZTo6Ci0gICAvLyAqIENvbXB1dGUgYXJlYSBv ZiB0aGUgbWVzaAotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICB2dGtTbWFy dFBvaW50ZXI8dnRrQ2VsbEFycmF5PiBjZWxscyA9IG1hcHBlci0+R2V0SW5wdXQoKS0+R2V0UG9s eXMoKTsKLS0gIHZ0a0lkVHlwZSBucHRzID0gMCwgKnB0SWRzID0gbnVsbHB0cjsKLSsgIHZ0a0lk VHlwZSBucHRzID0gMDsKLSsgIHZ0a0NlbGxQdHNQdHIgcHRJZHMgPSBudWxscHRyOwotIAotICAg ZG91YmxlIHAxWzNdLCBwMlszXSwgcDNbM10sIHRvdGFsQXJlYSA9IDA7Ci0gICBmb3IgKGNlbGxz LT5Jbml0VHJhdmVyc2FsKCk7IGNlbGxzLT5HZXROZXh0Q2VsbChucHRzLCBwdElkcyk7KSB7Ci1A QCAtMzYzLDcgKzM2Nyw4IEBAIHBjbDo6YXBwczo6UmVuZGVyVmlld3NUZXNzZWxhdGVkU3BoZXJl OjoKLSAgICAgICBwb2x5ZGF0YS0+QnVpbGRDZWxscygpOwotIAotICAgICAgIHZ0a1NtYXJ0UG9p bnRlcjx2dGtDZWxsQXJyYXk+IGNlbGxzID0gcG9seWRhdGEtPkdldFBvbHlzKCk7Ci0tICAgICAg dnRrSWRUeXBlIG5wdHMgPSAwLCAqcHRJZHMgPSBudWxscHRyOwotKyAgICAgIHZ0a0lkVHlwZSBu cHRzID0gMDsKLSsgICAgICB2dGtDZWxsUHRzUHRyIHB0SWRzID0gbnVsbHB0cjsKLSAKLSAgICAg ICBkb3VibGUgcDFbM10sIHAyWzNdLCBwM1szXSwgYXJlYSwgdG90YWxBcmVhID0gMDsKLSAgICAg ICBmb3IgKGNlbGxzLT5Jbml0VHJhdmVyc2FsKCk7IGNlbGxzLT5HZXROZXh0Q2VsbChucHRzLCBw dElkcyk7KSB7Ci1kaWZmIC11cCAuL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9DTWFrZUxpc3RzLnR4 dAotLS0tIC4vQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAw MCAtMDQwMAotKysrIC4vQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMTkxNzY3 MjUgLTA1MDAKLUBAIC0zNjYsODEgKzM2NiwxNSBAQCBlbmRpZigpCi0gb3B0aW9uKFdJVEhfUVQg IkJ1aWxkIFFUIEZyb250LUVuZCIgVFJVRSkKLSBpZihXSVRIX1FUKQotICAgZmluZF9wYWNrYWdl KFF0NSBDT01QT05FTlRTIENvbmN1cnJlbnQgT3BlbkdMIFdpZGdldHMgUVVJRVQpCi0rICBpZihR dDVfRk9VTkQpCi0rICAgIG1lc3NhZ2UoU1RBVFVTICJGb3VuZCBRdDUgdmVyc2lvbjogJHtRdDVf VkVSU0lPTn0iKQotKyAgZW5kaWYoKQotIGVuZGlmKCkKLSAKLSAjIEZpbmQgVlRLCi0gb3B0aW9u KFdJVEhfVlRLICJCdWlsZCBWVEstVmlzdWFsaXphdGlvbnMiIFRSVUUpCi0gaWYoV0lUSF9WVEsg QU5EIE5PVCBBTkRST0lEKQotLSAgc2V0KFBDTF9WVEtfQ09NUE9ORU5UUwotLSAgICB2dGtDaGFy dHNDb3JlCi0tICAgIHZ0a0NvbW1vbkNvcmUKLS0gICAgdnRrQ29tbW9uRGF0YU1vZGVsCi0tICAg IHZ0a0NvbW1vbkV4ZWN1dGlvbk1vZGVsCi0tICAgIHZ0a0ZpbHRlcnNDb3JlCi0tICAgIHZ0a0Zp bHRlcnNFeHRyYWN0aW9uCi0tICAgIHZ0a0ZpbHRlcnNNb2RlbGluZwotLSAgICB2dGtJbWFnaW5n Q29yZQotLSAgICB2dGtJbWFnaW5nU291cmNlcwotLSAgICB2dGtJbnRlcmFjdGlvblN0eWxlCi0t ICAgIHZ0a0ludGVyYWN0aW9uV2lkZ2V0cwotLSAgICB2dGtJT0NvcmUKLS0gICAgdnRrSU9HZW9t ZXRyeQotLSAgICB2dGtJT0ltYWdlCi0tICAgIHZ0a0lPTGVnYWN5Ci0tICAgIHZ0a0lPUExZCi0t ICAgIHZ0a1JlbmRlcmluZ0Fubm90YXRpb24KLS0gICAgdnRrUmVuZGVyaW5nTE9ECi0tICAgIHZ0 a1ZpZXdzQ29udGV4dDJECi0tICApCi0tICBmaW5kX3BhY2thZ2UoVlRLIENPTVBPTkVOVFMgJHtQ Q0xfVlRLX0NPTVBPTkVOVFN9KQotLSAgaWYoVlRLX0ZPVU5EIEFORCAoIiR7VlRLX1ZFUlNJT059 IiBWRVJTSU9OX0xFU1MgNi4yKSkKLS0gICAgbWVzc2FnZShXQVJOSU5HICJUaGUgbWluaW11bSBy ZXF1aXJlZCB2ZXJzaW9uIG9mIFZUSyBpcyA2LjIsIGJ1dCBmb3VuZCAke1ZUS19WRVJTSU9OfSIp Ci0tICAgIHNldChWVEtfRk9VTkQgRkFMU0UpCi0tICBlbmRpZigpCi0tCi0tICBpZihWVEtfRk9V TkQpCi0tICAgIGlmKE5PVCBERUZJTkVEIFZUS19SRU5ERVJJTkdfQkFDS0VORCkKLS0gICAgICAj IE9uIG9sZCBWVEsgdmVyc2lvbnMgdGhpcyB2YXJpYWJsZSBkb2VzIG5vdCBleGlzdC4gSW4gdGhp cyBjYXNlIGl0IGlzCi0tICAgICAgIyBzYWZlIHRvIGFzc3VtZSBPcGVuR0wgYmFja2VuZAotLSAg ICAgIHNldChWVEtfUkVOREVSSU5HX0JBQ0tFTkQgIk9wZW5HTCIpCi0tICAgIGVuZGlmKCkKLS0g ICAgbGlzdChBUFBFTkQgUENMX1ZUS19DT01QT05FTlRTIHZ0a1JlbmRlcmluZ0NvbnRleHQke1ZU S19SRU5ERVJJTkdfQkFDS0VORH0pCi0tCi0tICAgIGlmKFdJVEhfUVQpCi0tICAgICAgaWYoIjsk e1ZUS19NT0RVTEVTX0VOQUJMRUR9OyIgTUFUQ0hFUyAiO3Z0a0dVSVN1cHBvcnRRdDsiIEFORCAi OyR7VlRLX01PRFVMRVNfRU5BQkxFRH07IiBNQVRDSEVTICI7dnRrUmVuZGVyaW5nUXQ7IikKLS0g ICAgICAgIHNldChRVlRLX0ZPVU5EIE9OKQotLSAgICAgICAgbGlzdChBUFBFTkQgUENMX1ZUS19D T01QT05FTlRTIHZ0a1JlbmRlcmluZ1F0IHZ0a0dVSVN1cHBvcnRRdCkKLS0gICAgICBlbHNlKCkK LS0gICAgICAgIHVuc2V0KFFWVEtfRk9VTkQpCi0tICAgICAgZW5kaWYoKQotLSAgICBlbmRpZigp Ci0tCi0tICAgIGZpbmRfcGFja2FnZShWVEsgQ09NUE9ORU5UUyAke1BDTF9WVEtfQ09NUE9ORU5U U30pCi0tCi0tICAgIG1lc3NhZ2UoU1RBVFVTICJWVEtfTUFKT1JfVkVSU0lPTiAke1ZUS19NQUpP Ul9WRVJTSU9OfSwgcmVuZGVyaW5nIGJhY2tlbmQ6ICR7VlRLX1JFTkRFUklOR19CQUNLRU5EfSIp Ci0tICAgIGlmKFBDTF9TSEFSRURfTElCUyBPUiAoTk9UIChQQ0xfU0hBUkVEX0xJQlMpIEFORCBO T1QgKFZUS19CVUlMRF9TSEFSRURfTElCUykpKQotLSAgICAgIGlmKFZUS19VU0VfRklMRSkKLS0g ICAgICAgIGluY2x1ZGUoJHtWVEtfVVNFX0ZJTEV9KQotLSAgICAgIGVuZGlmKCkKLS0gICAgICBt ZXNzYWdlKFNUQVRVUyAiVlRLIGZvdW5kIChpbmNsdWRlOiAke1ZUS19JTkNMVURFX0RJUlN9LCBs aWJzOiAke1ZUS19MSUJSQVJJRVN9IikKLS0gICAgICBpZihBUFBMRSkKLS0gICAgICAgIG9wdGlv bihWVEtfVVNFX0NPQ09BICJVc2UgQ29jb2EgZm9yIFZUSyByZW5kZXIgd2luZG93cyIgT04pCi0t ICAgICAgICBtYXJrX2FzX2FkdmFuY2VkKFZUS19VU0VfQ09DT0EpCi0tICAgICAgZW5kaWYoKQot LSAgICAgIGlmKCR7VlRLX1JFTkRFUklOR19CQUNLRU5EfSBTVFJFUVVBTCAiT3BlbkdMIikKLS0g ICAgICAgIHNldChWVEtfUkVOREVSSU5HX0JBQ0tFTkRfT1BFTkdMX1ZFUlNJT04gIjEiKQotLSAg ICAgICAgbWVzc2FnZShERVBSRUNBVElPTiAiVGhlIHJlbmRlcmluZyBiYWNrZW5kIE9wZW5HTCBp cyBkZXByZWNhdGVkIGFuZCBub3QgYXZhaWxhYmxlIGFueW1vcmUgc2luY2UgVlRLIDguMi4iCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2Ugc3dpdGNoIHRvIHRoZSBPcGVuR0wy IGJhY2tlbmQgaW5zdGVhZCwgd2hpY2ggaXMgYXZhaWxhYmxlIHNpbmNlIFZUSyA2LjIuIgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VwcG9ydCBvZiB0aGUgZGVwcmVjYXRlZCBiYWNr ZW5kIHdpbGwgYmUgZHJvcHBlZCB3aXRoIFBDTCAxLjEzLiIpCi0tICAgICAgZWxzZWlmKCR7VlRL X1JFTkRFUklOR19CQUNLRU5EfSBTVFJFUVVBTCAiT3BlbkdMMiIpCi0tICAgICAgICBzZXQoVlRL X1JFTkRFUklOR19CQUNLRU5EX09QRU5HTF9WRVJTSU9OICIyIikKLS0gICAgICBlbmRpZigpCi0t ICAgIGVsc2UoKQotLSAgICAgIHNldChWVEtfRk9VTkQgT0ZGKQotLSAgICAgIG1lc3NhZ2UoIldh cm5pbmc6IFlvdSBhcmUgdG8gYnVpbGQgUENMIGluIFNUQVRJQyBidXQgVlRLIGlzIFNIQVJFRCEi KQotLSAgICAgIG1lc3NhZ2UoIldhcm5pbmc6IFZUSyBkaXNhYmxlZCEiKQotLSAgICBlbmRpZigp Ci0tICBlbmRpZigpCi0rICBpbmNsdWRlKCIke1BDTF9TT1VSQ0VfRElSfS9jbWFrZS9wY2xfZmlu ZF92dGsuY21ha2UiKQotIGVsc2UoKQotICAgc2V0KFZUS19GT1VORCBPRkYpCi0gZW5kaWYoKQot ZGlmZiAtdXAgLi9jbWFrZS9Nb2R1bGVzL0ZpbmRHTEVXLmNtYWtlLjQyNjIgLi9jbWFrZS9Nb2R1 bGVzL0ZpbmRHTEVXLmNtYWtlCi0tLS0gLi9jbWFrZS9Nb2R1bGVzL0ZpbmRHTEVXLmNtYWtlLjQy NjIJMjAyMS0wMi0yMSAyMTozMjo1OC4zMzAxNzY3NzEgLTA1MDAKLSsrKyAuL2NtYWtlL01vZHVs ZXMvRmluZEdMRVcuY21ha2UJMjAyMS0wMi0yMSAyMTozMjo1OC4zMzAxNzY3NzEgLTA1MDAKLUBA IC0wLDAgKzEsNjkgQEAKLSsjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBPU0ktYXBwcm92ZWQgQlNE IDMtQ2xhdXNlIExpY2Vuc2UuICBTZWUgYWNjb21wYW55aW5nCi0rIyBmaWxlIENvcHlyaWdodC50 eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLgotKwotKyMucnN0 OgotKyMgRmluZEdMRVcKLSsjIC0tLS0tLS0tCi0rIwotKyMgRmluZCB0aGUgT3BlbkdMIEV4dGVu c2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKQotKyMKLSsjIElNUE9SVEVEIFRhcmdldHMKLSsj IF5eXl5eXl5eXl5eXl5eXl4KLSsjCi0rIyBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSA6cHJvcF90 Z3Q6YElNUE9SVEVEYCB0YXJnZXQgYGBHTEVXOjpHTEVXYGAsCi0rIyBpZiBHTEVXIGhhcyBiZWVu IGZvdW5kLgotKyMKLSsjIFJlc3VsdCBWYXJpYWJsZXMKLSsjIF5eXl5eXl5eXl5eXl5eXl4KLSsj Ci0rIyBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOgotKyMKLSsj IDo6Ci0rIwotKyMgICBHTEVXX0lOQ0xVREVfRElSUyAtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9y IEdMRVcKLSsjICAgR0xFV19MSUJSQVJJRVMgLSBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IEdM RVcKLSsjICAgR0xFV19GT1VORCAtIHRydWUgaWYgR0xFVyBoYXMgYmVlbiBmb3VuZCBhbmQgY2Fu IGJlIHVzZWQKLSsKLStmaW5kX3BhdGgoR0xFV19JTkNMVURFX0RJUiBHTC9nbGV3LmgpCi0rCi0r aWYoTk9UIEdMRVdfTElCUkFSWSkKLSsgIGZpbmRfbGlicmFyeShHTEVXX0xJQlJBUllfUkVMRUFT RSBOQU1FUyBHTEVXIGdsZXczMiBnbGV3IGdsZXczMnMgUEFUSF9TVUZGSVhFUyBsaWI2NCBsaWJ4 MzIpCi0rICBmaW5kX2xpYnJhcnkoR0xFV19MSUJSQVJZX0RFQlVHIE5BTUVTIEdMRVdkIGdsZXcz MmQgZ2xld2QgUEFUSF9TVUZGSVhFUyBsaWI2NCkKLSsKLSsgIGluY2x1ZGUoU2VsZWN0TGlicmFy eUNvbmZpZ3VyYXRpb25zKQotKyAgc2VsZWN0X2xpYnJhcnlfY29uZmlndXJhdGlvbnMoR0xFVykK LStlbmRpZiAoKQotKwotK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCi0r ZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKEdMRVcKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUkVRVUlSRURfVkFSUyBHTEVXX0lOQ0xVREVfRElSIEdMRVdfTElC UkFSWSkKLSsKLStpZihHTEVXX0ZPVU5EKQotKyAgc2V0KEdMRVdfSU5DTFVERV9ESVJTICR7R0xF V19JTkNMVURFX0RJUn0pCi0rCi0rICBpZihOT1QgR0xFV19MSUJSQVJJRVMpCi0rICAgIHNldChH TEVXX0xJQlJBUklFUyAke0dMRVdfTElCUkFSWX0pCi0rICBlbmRpZigpCi0rCi0rICBpZiAoTk9U IFRBUkdFVCBHTEVXOjpHTEVXKQotKyAgICBhZGRfbGlicmFyeShHTEVXOjpHTEVXIFVOS05PV04g SU1QT1JURUQpCi0rICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhHTEVXOjpHTEVXIFBST1BFUlRJ RVMKLSsgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtHTEVXX0lOQ0xVREVf RElSU30iKQotKwotKyAgICBpZihHTEVXX0xJQlJBUllfUkVMRUFTRSkKLSsgICAgICBzZXRfcHJv cGVydHkoVEFSR0VUIEdMRVc6OkdMRVcgQVBQRU5EIFBST1BFUlRZIElNUE9SVEVEX0NPTkZJR1VS QVRJT05TIFJFTEVBU0UpCi0rICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEdMRVc6OkdMRVcg UFJPUEVSVElFUyBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke0dMRVdfTElCUkFSWV9SRUxF QVNFfSIpCi0rICAgIGVuZGlmKCkKLSsKLSsgICAgaWYoR0xFV19MSUJSQVJZX0RFQlVHKQotKyAg ICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgR0xFVzo6R0xFVyBBUFBFTkQgUFJPUEVSVFkgSU1QT1JU RURfQ09ORklHVVJBVElPTlMgREVCVUcpCi0rICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEdM RVc6OkdMRVcgUFJPUEVSVElFUyBJTVBPUlRFRF9MT0NBVElPTl9ERUJVRyAiJHtHTEVXX0xJQlJB UllfREVCVUd9IikKLSsgICAgZW5kaWYoKQotKwotKyAgICBpZihOT1QgR0xFV19MSUJSQVJZX1JF TEVBU0UgQU5EIE5PVCBHTEVXX0xJQlJBUllfREVCVUcpCi0rICAgICAgc2V0X3Byb3BlcnR5KFRB UkdFVCBHTEVXOjpHTEVXIEFQUEVORCBQUk9QRVJUWSBJTVBPUlRFRF9MT0NBVElPTiAiJHtHTEVX X0xJQlJBUll9IikKLSsgICAgZW5kaWYoKQotKyAgZW5kaWYoKQotK2VuZGlmKCkKLSsKLSttYXJr X2FzX2FkdmFuY2VkKEdMRVdfSU5DTFVERV9ESVIpCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKLWRpZmYgLXVwIC4vY21ha2UvcGNsX2ZpbmRfdnRrLmNtYWtlLjQyNjIgLi9jbWFrZS9wY2xf ZmluZF92dGsuY21ha2UKLS0tLSAuL2NtYWtlL3BjbF9maW5kX3Z0ay5jbWFrZS40MjYyCTIwMjEt MDItMjEgMjE6MzI6NTguMzE5MTc2NzI1IC0wNTAwCi0rKysgLi9jbWFrZS9wY2xfZmluZF92dGsu Y21ha2UJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjAxNzY3MjkgLTA1MDAKLUBAIC0wLDAgKzEsMTY0 IEBACi0rZnVuY3Rpb24oY2hlY2tWVEtDb21wb25lbnRzKQotKyAgY21ha2VfcGFyc2VfYXJndW1l bnRzKFBBUkFNICIiICJNSVNTSU5HX0NPTVBPTkVOVFMiICJDT01QT05FTlRTIiAke0FSR059KQot KwotKyAgc2V0KHZ0a01pc3NpbmdDb21wb25lbnRzKQotKyAgCi0rICBmb3JlYWNoKHZ0a0NvbXBv bmVudCAke1BBUkFNX0NPTVBPTkVOVFN9KQotKyAgICBpZiAoVlRLX1ZFUlNJT04gVkVSU0lPTl9M RVNTIDkuMCkKLSsgICAgICBpZiAoTk9UIFRBUkdFVCAke3Z0a0NvbXBvbmVudH0pCi0rICAgICAg ICBsaXN0KEFQUEVORCB2dGtNaXNzaW5nQ29tcG9uZW50cyAke3Z0a0NvbXBvbmVudH0pCi0rICAg ICAgZW5kaWYoKQotKyAgICBlbHNlKCkKLSsgICAgICBpZiAoTk9UIFRBUkdFVCBWVEs6OiR7dnRr Q29tcG9uZW50fSkKLSsgICAgICAgIGxpc3QoQVBQRU5EIHZ0a01pc3NpbmdDb21wb25lbnRzICR7 dnRrQ29tcG9uZW50fSkKLSsgICAgICBlbmRpZigpCi0rICAgIGVuZGlmKCkKLSsgIGVuZGZvcmVh Y2goKQotKyAgCi0rICBzZXQoJHtQQVJBTV9NSVNTSU5HX0NPTVBPTkVOVFN9ICR7dnRrTWlzc2lu Z0NvbXBvbmVudHN9IFBBUkVOVF9TQ09QRSkKLStlbmRmdW5jdGlvbigpCi0rCi0rIyBTdGFydCB3 aXRoIGEgZ2VuZXJpYyBjYWxsIHRvIGZpbmQgYW55IFZUSyB2ZXJzaW9uIHdlIGFyZSBzdXBwb3J0 aW5nLCBzbyB3ZSByZXRyaWV2ZQotKyMgdGhlIHZlcnNpb24gb2YgVlRLLiBBcyB0aGUgbW9kdWxl IG5hbWVzIHdlcmUgY2hhbmdlZCBmcm9tIFZUSyA4LjIgdG8gOS4wLCB3ZSBkb24ndAotKyMgc2Vh cmNoIGV4cGxpY2l0bHkgZm9yIG1vZHVsZXMuIEZ1cnRoZXJtb3JlIHdlIGRvbid0IHBhc3MgcmVx dWlyZWQgbWluaW11bSB2ZXJzaW9uIDYuMgotKyMgdG8gZmluZF9wYWNrYWdlIGJlY2F1c2UgdGhl biBpdCBvbmx5IGFjY2VwdCB2ZXJzaW9ucyB3aXRoIHNhbWUgbWFqb3IgdmVyc2lvbi4KLStmaW5k X3BhY2thZ2UoVlRLKQotKwotK2lmKE5PVCBWVEtfRk9VTkQpCi0rICAgIHJldHVybigpCi0rZW5k aWYoKQotKwotK2lmKFZUS19GT1VORCBBTkQgKFZUS19WRVJTSU9OIFZFUlNJT05fTEVTUyA2LjIp KQotKyAgbWVzc2FnZShXQVJOSU5HICJUaGUgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9uIG9mIFZU SyBpcyA2LjIsIGJ1dCBmb3VuZCAke1ZUS19WRVJTSU9OfSIpCi0rICBzZXQoVlRLX0ZPVU5EIEZB TFNFKQotKyAgcmV0dXJuKCkKLStlbmRpZigpCi0rCi0rc2V0KE5PTl9QUkVGSVhfUENMX1ZUS19D T01QT05FTlRTCi0rICBDaGFydHNDb3JlCi0rICBDb21tb25Db2xvcgotKyAgQ29tbW9uQ29yZQot KyAgQ29tbW9uRGF0YU1vZGVsCi0rICBDb21tb25FeGVjdXRpb25Nb2RlbAotKyAgQ29tbW9uTWF0 aAotKyAgQ29tbW9uTWlzYwotKyAgQ29tbW9uVHJhbnNmb3JtcwotKyAgRmlsdGVyc0NvcmUKLSsg IEZpbHRlcnNFeHRyYWN0aW9uCi0rICBGaWx0ZXJzR2VuZXJhbAotKyAgRmlsdGVyc0dlb21ldHJ5 Ci0rICBGaWx0ZXJzTW9kZWxpbmcKLSsgIEZpbHRlcnNTb3VyY2VzCi0rICBJbWFnaW5nQ29yZQot KyAgSW1hZ2luZ1NvdXJjZXMKLSsgIEludGVyYWN0aW9uU3R5bGUKLSsgIEludGVyYWN0aW9uV2lk Z2V0cwotKyAgSU9Db3JlCi0rICBJT0dlb21ldHJ5Ci0rICBJT0ltYWdlCi0rICBJT0xlZ2FjeQot KyAgSU9QTFkKLSsgIFJlbmRlcmluZ0Fubm90YXRpb24KLSsgIFJlbmRlcmluZ0NvcmUKLSsgIFJl bmRlcmluZ0NvbnRleHQyRAotKyAgUmVuZGVyaW5nTE9ECi0rICBSZW5kZXJpbmdGcmVlVHlwZQot KyAgVmlld3NDb3JlCi0rICBWaWV3c0NvbnRleHQyRAotKykKLSsKLSsjSWYgVlRLIHZlcnNpb24g NiB1c2UgT3BlbkdMCi0raWYoVlRLX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDcuMCkKLSsgIHNldChW VEtfUkVOREVSSU5HX0JBQ0tFTkQgIk9wZW5HTCIpCi0rICBzZXQoVlRLX1JFTkRFUklOR19CQUNL RU5EX09QRU5HTF9WRVJTSU9OICIxIikKLSsgIG1lc3NhZ2UoREVQUkVDQVRJT04gIlRoZSByZW5k ZXJpbmcgYmFja2VuZCBPcGVuR0wgaXMgZGVwcmVjYXRlZCBhbmQgbm90IGF2YWlsYWJsZSBhbnlt b3JlIHNpbmNlIFZUSyA4LjIuIgotKwkJCQkJICAiUGxlYXNlIHN3aXRjaCB0byB0aGUgT3BlbkdM MiBiYWNrZW5kIGluc3RlYWQsIHdoaWNoIGlzIGF2YWlsYWJsZSBzaW5jZSBWVEsgNi4yLiIKLSsJ CQkJCSAgIlN1cHBvcnQgb2YgdGhlIGRlcHJlY2F0ZWQgYmFja2VuZCB3aWxsIGJlIGRyb3BwZWQg d2l0aCBQQ0wgMS4xMy4iKQotKwotKyNJZiBWVEsgdmVyc2lvbiA3LDggb3IgOSB1c2UgT3BlbkdM MgotK2Vsc2UoKQotKyAgc2V0KFZUS19SRU5ERVJJTkdfQkFDS0VORCAiT3BlbkdMMiIpCi0rICBz ZXQoVlRLX1JFTkRFUklOR19CQUNLRU5EX09QRU5HTF9WRVJTSU9OICIyIikKLStlbmRpZigpCi0r Ci0rbGlzdChBUFBFTkQgTk9OX1BSRUZJWF9QQ0xfVlRLX0NPTVBPTkVOVFMgUmVuZGVyaW5nJHtW VEtfUkVOREVSSU5HX0JBQ0tFTkR9KQotKwotKyNBcHBlbmQgdnRrIHRvIGNvbXBvbmVudHMgaWYg dmVyc2lvbiBpcyA8OS4wCi0raWYoVlRLX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDkuMCkKLSsgIGZv cmVhY2godnRrQ29tcG9uZW50ICR7Tk9OX1BSRUZJWF9QQ0xfVlRLX0NPTVBPTkVOVFN9KQotKyAg ICBzZXQodnRrQ29tcG9uZW50ICJ2dGske3Z0a0NvbXBvbmVudH0iKQotKyAgICBsaXN0KEFQUEVO RCBQQ0xfVlRLX0NPTVBPTkVOVFMgJHt2dGtDb21wb25lbnR9KQotKyAgZW5kZm9yZWFjaCgpCi0r ZWxzZSgpCi0rICBzZXQoUENMX1ZUS19DT01QT05FTlRTICR7Tk9OX1BSRUZJWF9QQ0xfVlRLX0NP TVBPTkVOVFN9KQotK2VuZGlmKCkKLSsKLSsjIENoZWNrIGlmIHJlcXVlc3RlZCBtb2R1bGVzIGFy ZSBhdmFpbGFibGUKLStjaGVja1ZUS0NvbXBvbmVudHMoQ09NUE9ORU5UUyAke1BDTF9WVEtfQ09N UE9ORU5UU30gTUlTU0lOR19DT01QT05FTlRTIHZ0a01pc3NpbmdDb21wb25lbnRzKQotKwotK2lm ICh2dGtNaXNzaW5nQ29tcG9uZW50cykKLSsgIHNldChWVEtfRk9VTkQgRkFMU0UpCi0rICBtZXNz YWdlKFdBUk5JTkcgIk1pc3NpbmcgdnRrIG1vZHVsZXM6ICR7dnRrTWlzc2luZ0NvbXBvbmVudHN9 IikKLStlbmRpZigpCi0rCi0raWYoV0lUSF9RVCkKLSsgIGlmKFZUS19WRVJTSU9OIFZFUlNJT05f TEVTUyA5LjApCi0rICAgIGlmKCI7JHtWVEtfTU9EVUxFU19FTkFCTEVEfTsiIE1BVENIRVMgIjt2 dGtHVUlTdXBwb3J0UXQ7IiBBTkQgIjske1ZUS19NT0RVTEVTX0VOQUJMRUR9OyIgTUFUQ0hFUyAi O3Z0a1JlbmRlcmluZ1F0OyIpCi0rICAgICAgc2V0KEhBVkVfUVZUSyBUUlVFKQotKyAgICAgICNQ Q0xfVlRLX0NPTVBPTkVOVFMgaXMgdXNlZCBpbiB0aGUgUENMQ29uZmlnLmNtYWtlIHRvIHJlZmlu ZCB0aGUgcmVxdWlyZWQgbW9kdWxlcy4KLSsgICAgICAjUHJlIHZ0ayA5LjAsIGFsbCB2dGsgbGli cmFyaWVzIGFyZSBsaW5rZWQgaW50byBwY2xfdmlzdWFsaXplci4KLSsgICAgICAjU3VicHJvamVj dHMgY2FuIGxpbmsgYWdhaW5zdCBwY2xfdmlzdWFsaXplciBhbmQgZGlyZWN0bHkgdXNlIFZUSy1R VCBsaWJyYXJpZXMuCi0rICAgICAgbGlzdChBUFBFTkQgUENMX1ZUS19DT01QT05FTlRTIHZ0a1Jl bmRlcmluZ1F0IHZ0a0dVSVN1cHBvcnRRdCkKLSsgICAgZWxzZSgpCi0rICAgICAgdW5zZXQoSEFW RV9RVlRLKQotKyAgICBlbmRpZigpCi0rICBlbHNlKCkKLSsJaWYoIjske1ZUS19BVkFJTEFCTEVf Q09NUE9ORU5UU307IiBNQVRDSEVTICI7R1VJU3VwcG9ydFF0OyIgQU5EICI7JHtWVEtfQVZBSUxB QkxFX0NPTVBPTkVOVFN9OyIgTUFUQ0hFUyAiO1JlbmRlcmluZ1F0OyIpCi0rICAgICAgc2V0KEhB VkVfUVZUSyBUUlVFKQotKyAgICAgICNQQ0xfVlRLX0NPTVBPTkVOVFMgaXMgdXNlZCBpbiB0aGUg UENMQ29uZmlnLmNtYWtlIHRvIHJlZmluZCB0aGUgcmVxdWlyZWQgbW9kdWxlcy4KLSsgICAgICAj UG9zdCB2dGsgOS4wLCBvbmx5IHJlcXVpcmVkIGxpYnJhcmllcyBhcmUgbGlua2VkIGFnYWluc3Qg cGNsX3Zpc3VhbGl6ZXIuCi0rICAgICAgI1N1YnByb2plY3RzIG5lZWQgdG8gbWFudWFsbHkgbGlu ayB0byBWVEstUVQgbGlicmFyaWVzLgotKyAgICAgIGxpc3QoQVBQRU5EIFBDTF9WVEtfQ09NUE9O RU5UUyBSZW5kZXJpbmdRdCBHVUlTdXBwb3J0UXQpCi0rICAgIGVsc2UoKQotKyAgICAgIHVuc2V0 KEhBVkVfUVZUSykKLSsgICAgZW5kaWYoKQotKyAgZW5kaWYoKQotK2VuZGlmKCkKLSsKLStpZihQ Q0xfU0hBUkVEX0xJQlMgT1IgKE5PVCAoUENMX1NIQVJFRF9MSUJTKSBBTkQgTk9UIChWVEtfQlVJ TERfU0hBUkVEX0xJQlMpKSkKLSsgIGlmKFZUS19WRVJTSU9OIFZFUlNJT05fTEVTUyA5LjApCi0r ICAgIGlmKFZUS19VU0VfRklMRSkKLSsgICAgICBpbmNsdWRlKCR7VlRLX1VTRV9GSUxFfSkKLSsg ICAgZW5kaWYoKQotKyAgZW5kaWYoKQotKyAgCi0rICBpZihBUFBMRSkKLSsgICAgb3B0aW9uKFZU S19VU0VfQ09DT0EgIlVzZSBDb2NvYSBmb3IgVlRLIHJlbmRlciB3aW5kb3dzIiBPTikKLSsgICAg bWFya19hc19hZHZhbmNlZChWVEtfVVNFX0NPQ09BKQotKyAgZW5kaWYoKQotK2Vsc2UoKQotKyAg c2V0KFZUS19GT1VORCBPRkYpCi0rICBtZXNzYWdlKCJXYXJuaW5nOiBZb3UgYXJlIHRvIGJ1aWxk IFBDTCBpbiBTVEFUSUMgYnV0IFZUSyBpcyBTSEFSRUQhIikKLSsgIG1lc3NhZ2UoIldhcm5pbmc6 IFZUSyBkaXNhYmxlZCEiKQotK2VuZGlmKCkKLSsKLSttZXNzYWdlKFNUQVRVUyAiVlRLIHZlcnNp b246ICR7VlRLX1ZFUlNJT059IikKLSttZXNzYWdlKFNUQVRVUyAiVlRLIHJlbmRlcmluZyBiYWNr ZW5kOiAke1ZUS19SRU5ERVJJTkdfQkFDS0VORH0iKQotKwotK2lmKFdJVEhfUVQpCi0rICBpZihI QVZFX1FWVEspCi0rICAgIG1lc3NhZ2UoU1RBVFVTICJWVEsgUXQgc3VwcG9ydDogWUVTIikKLSsg IGVsc2UoKQotKyAgICBtZXNzYWdlKFNUQVRVUyAiVlRLIFF0IHN1cHBvcnQ6IE5PVEZPVU5EIikK LSsgIGVuZGlmKCkKLStlbHNlKCkKLSsgIG1lc3NhZ2UoU1RBVFVTICJWVEsgUXQgc3VwcG9ydDog Tk8iKQotK2VuZGlmKCkKLSsKLStpZihWVEtfSU5DTFVERV9ESVJTKQotKyAgbWVzc2FnZShTVEFU VVMgIlZUSyBpbmNsdWRlOiAke1ZUS19JTkNMVURFX0RJUlN9IikKLStFTkRJRigpCi0rCi0raWYo VlRLX0xJQlJBUklFUykKLSsgIG1lc3NhZ2UoU1RBVFVTICJWVEsgbGliczogJHtWVEtfTElCUkFS SUVTfSIpCi0rZW5kaWYoKQotZGlmZiAtdXAgLi9leGFtcGxlcy9rZXlwb2ludHMvQ01ha2VMaXN0 cy50eHQuNDI2MiAuL2V4YW1wbGVzL2tleXBvaW50cy9DTWFrZUxpc3RzLnR4dAotLS0tIC4vZXhh bXBsZXMva2V5cG9pbnRzL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4w MDAwMDAwMDAgLTA0MDAKLSsrKyAuL2V4YW1wbGVzL2tleXBvaW50cy9DTWFrZUxpc3RzLnR4dAky MDIxLTAyLTIxIDIxOjMyOjU4LjMyNTE3Njc1MCAtMDUwMAotQEAgLTYsMTIgKzYsMTEgQEAgUENM X1NVQlNZU19ERVBFTkQoYnVpbGQgJHtTVUJTWVNfTkFNRX0gRAotIAotICMjIEZpbmQgVlRLCi0g aWYoTk9UIFZUS19GT1VORCkKLS0gICAgc2V0KERFRkFVTFQgRkFMU0UpCi0tICAgIHNldChSRUFT T04gIlZUSyB3YXMgbm90IGZvdW5kLiIpCi0rICBzZXQoREVGQVVMVCBGQUxTRSkKLSsgIHNldChS RUFTT04gIlZUSyB3YXMgbm90IGZvdW5kLiIpCi0gZWxzZSgpCi0tICAgIHNldChERUZBVUxUIFRS VUUpCi0tICAgIHNldChSRUFTT04pCi0tICAgIGluY2x1ZGUoJHtWVEtfVVNFX0ZJTEV9KQotKyAg c2V0KERFRkFVTFQgVFJVRSkKLSsgIHNldChSRUFTT04pCi0gZW5kaWYoKQotIAotIFBDTF9BRERf RVhBTVBMRShwY2xfZXhhbXBsZV9zaWZ0X2tleXBvaW50X2VzdGltYXRpb24gRklMRVMgZXhhbXBs ZV9zaWZ0X2tleXBvaW50X2VzdGltYXRpb24uY3BwCi1kaWZmIC11cCAuL2V4YW1wbGVzL291dG9m Y29yZS9DTWFrZUxpc3RzLnR4dC40MjYyIC4vZXhhbXBsZXMvb3V0b2Zjb3JlL0NNYWtlTGlzdHMu dHh0Ci0tLS0gLi9leGFtcGxlcy9vdXRvZmNvcmUvQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4 LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vZXhhbXBsZXMvb3V0b2Zjb3JlL0NN YWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzI1MTc2NzUwIC0wNTAwCi1AQCAtOSw3 ICs5LDYgQEAgaWYoTk9UIFZUS19GT1VORCkKLSBlbHNlKCkKLSAgIHNldChERUZBVUxUIFRSVUUp Ci0gICBzZXQoUkVBU09OKQotLSAgaW5jbHVkZSgke1ZUS19VU0VfRklMRX0pCi0gZW5kaWYoKQot IAotIFBDTF9TVUJTWVNfREVQRU5EIChidWlsZCAke1NVQlNZU19OQU1FfSBERVBTIG91dG9mY29y ZSBpbyBjb21tb24gb2N0cmVlIGZpbHRlcnMgdmlzdWFsaXphdGlvbiBFWFRfREVQUyB2dGspCi1k aWZmIC11cCAuL2V4YW1wbGVzL3NlZ21lbnRhdGlvbi9DTWFrZUxpc3RzLnR4dC40MjYyIC4vZXhh bXBsZXMvc2VnbWVudGF0aW9uL0NNYWtlTGlzdHMudHh0Ci0tLS0gLi9leGFtcGxlcy9zZWdtZW50 YXRpb24vQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAt MDQwMAotKysrIC4vZXhhbXBsZXMvc2VnbWVudGF0aW9uL0NNYWtlTGlzdHMudHh0CTIwMjEtMDIt MjEgMjE6MzI6NTguMzI1MTc2NzUwIC0wNTAwCi1AQCAtMTEsNyArMTEsNiBAQCBQQ0xfQUREX0VY QU1QTEUocGNsX2V4YW1wbGVfcmVnaW9uX2dyb3dpCi0gCi0gIyMgRmluZCBWVEsKLSBpZihWVEtf Rk9VTkQpCi0tICBpbmNsdWRlKCR7VlRLX1VTRV9GSUxFfSkKLSAgIFBDTF9BRERfRVhBTVBMRShw Y2xfZXhhbXBsZV9zdXBlcnZveGVscyBGSUxFUyBleGFtcGxlX3N1cGVydm94ZWxzLmNwcAotICAg ICAgICAgICAgICAgICAgIExJTktfV0lUSCBwY2xfY29tbW9uIHBjbF9mZWF0dXJlcyBwY2xfc2Vn bWVudGF0aW9uIHBjbF9vY3RyZWUgcGNsX2tkdHJlZSBwY2xfdmlzdWFsaXphdGlvbikKLSAgIFBD TF9BRERfRVhBTVBMRShwY2xfZXhhbXBsZV9sY2NwX3NlZ21lbnRhdGlvbiBGSUxFUyBleGFtcGxl X2xjY3Bfc2VnbWVudGF0aW9uLmNwcAotZGlmZiAtdXAgLi9leGFtcGxlcy9zdGVyZW8vQ01ha2VM aXN0cy50eHQuNDI2MiAuL2V4YW1wbGVzL3N0ZXJlby9DTWFrZUxpc3RzLnR4dAotLS0tIC4vZXhh bXBsZXMvc3RlcmVvL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAw MDAwMDAgLTA0MDAKLSsrKyAuL2V4YW1wbGVzL3N0ZXJlby9DTWFrZUxpc3RzLnR4dAkyMDIxLTAy LTIxIDIxOjMyOjU4LjMyNTE3Njc1MCAtMDUwMAotQEAgLTExLDcgKzExLDYgQEAgaWYoTk9UIFZU S19GT1VORCkKLSBlbHNlKCkKLSAgIHNldChERUZBVUxUIFRSVUUpCi0gICBzZXQoUkVBU09OKQot LSAgaW5jbHVkZSgke1ZUS19VU0VfRklMRX0pCi0gZW5kaWYoKQotIAotIFBDTF9BRERfRVhBTVBM RShwY2xfZXhhbXBsZV9zdGVyZW9fYmFzZWxpbmUgRklMRVMgZXhhbXBsZV9zdGVyZW9fYmFzZWxp bmUuY3BwCi1kaWZmIC11cCAuL2V4YW1wbGVzL3N1cmZhY2UvQ01ha2VMaXN0cy50eHQuNDI2MiAu L2V4YW1wbGVzL3N1cmZhY2UvQ01ha2VMaXN0cy50eHQKLS0tLSAuL2V4YW1wbGVzL3N1cmZhY2Uv Q01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAot KysrIC4vZXhhbXBsZXMvc3VyZmFjZS9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4 LjMyNTE3Njc1MCAtMDUwMAotQEAgLTExLDcgKzExLDYgQEAgaWYoTk9UIFZUS19GT1VORCkKLSBl bHNlKCkKLSAgIHNldChERUZBVUxUIFRSVUUpCi0gICBzZXQoUkVBU09OKQotLSAgaW5jbHVkZSgk e1ZUS19VU0VfRklMRX0pCi0gZW5kaWYoKQotIAotIFBDTF9BRERfRVhBTVBMRShwY2xfdGVzdF9u dXJic19maXR0aW5nX3N1cmZhY2UKLWRpZmYgLXVwIC4vZ3B1L2tpbmZ1X2xhcmdlX3NjYWxlL3Rv b2xzL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9ncHUva2luZnVfbGFyZ2Vfc2NhbGUvdG9vbHMvQ01h a2VMaXN0cy50eHQKLS0tLSAuL2dwdS9raW5mdV9sYXJnZV9zY2FsZS90b29scy9DTWFrZUxpc3Rz LnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9ncHUv a2luZnVfbGFyZ2Vfc2NhbGUvdG9vbHMvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1 OC4zMjQxNzY3NDYgLTA1MDAKLUBAIC04LDggKzgsNiBAQCBpZihOT1QgVlRLX0ZPVU5EKQotIGVs c2UoKQotICAgc2V0KERFRkFVTFQgVFJVRSkKLSAgIHNldChSRUFTT04pCi0tICBzZXQoVlRLX1VT RV9GSUxFICIke1ZUS19VU0VfRklMRX0iIENBQ0hFIElOVEVSTkFMICJWVEtfVVNFX0ZJTEUiKQot LSAgaW5jbHVkZSgiJHtWVEtfVVNFX0ZJTEV9IikKLSAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7 Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlIikKLSBlbmRpZigpCi0gCi1kaWZmIC11 cCAuL2dwdS9raW5mdS90b29scy9DTWFrZUxpc3RzLnR4dC40MjYyIC4vZ3B1L2tpbmZ1L3Rvb2xz L0NNYWtlTGlzdHMudHh0Ci0tLS0gLi9ncHUva2luZnUvdG9vbHMvQ01ha2VMaXN0cy50eHQuNDI2 MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vZ3B1L2tpbmZ1L3Rv b2xzL0NNYWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzI0MTc2NzQ2IC0wNTAwCi1A QCAtOCw4ICs4LDYgQEAgaWYoTk9UIFZUS19GT1VORCkKLSBlbHNlKCkKLSAgIHNldChERUZBVUxU IFRSVUUpCi0gICBzZXQoUkVBU09OKQotLSAgc2V0KFZUS19VU0VfRklMRSAiJHtWVEtfVVNFX0ZJ TEV9IiBDQUNIRSBJTlRFUk5BTCAiVlRLX1VTRV9GSUxFIikKLS0gIGluY2x1ZGUoIiR7VlRLX1VT RV9GSUxFfSIpCi0gICBpbmNsdWRlX2RpcmVjdG9yaWVzKCIke0NNQUtFX0NVUlJFTlRfU09VUkNF X0RJUn0vaW5jbHVkZSIpCi0gZW5kaWYoKQotIAotZGlmZiAtdXAgLi9ncHUvcGVvcGxlL3Rvb2xz L0NNYWtlTGlzdHMudHh0LjQyNjIgLi9ncHUvcGVvcGxlL3Rvb2xzL0NNYWtlTGlzdHMudHh0Ci0t LS0gLi9ncHUvcGVvcGxlL3Rvb2xzL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMC0wOC0xNCAwODoy MzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL2dwdS9wZW9wbGUvdG9vbHMvQ01ha2VMaXN0cy50 eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjQxNzY3NDYgLTA1MDAKLUBAIC02LDggKzYsNiBAQCBp ZihOT1QgVlRLX0ZPVU5EKQotIGVsc2UoKQotICAgc2V0KERFRkFVTFQgVFJVRSkKLSAgIHNldChS RUFTT04pCi0tICBzZXQoVlRLX1VTRV9GSUxFICIke1ZUS19VU0VfRklMRX0iIENBQ0hFIElOVEVS TkFMICJWVEtfVVNFX0ZJTEUiKQotLSAgaW5jbHVkZSgiJHtWVEtfVVNFX0ZJTEV9IikKLSAgIGlu Y2x1ZGVfZGlyZWN0b3JpZXMoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlIikK LSBlbmRpZigpCi0gCi1kaWZmIC11cCAuL2lvL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9pby9DTWFr ZUxpc3RzLnR4dAotLS0tIC4vaW8vQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIz OjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vaW8vQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAy MTozMjo1OC4zMTkxNzY3MjUgLTA1MDAKLUBAIC0zMzEsMTAgKzMzMSwyNCBAQCBlbmRpZigpCi0g c2V0KExJQl9OQU1FICJwY2xfJHtTVUJTWVNfTkFNRX0iKQotIAotIGFkZF9kZWZpbml0aW9ucygk e1ZUS19ERUZJTkVTfSkKLSsKLSBQQ0xfQUREX0xJQlJBUlkoJHtMSUJfTkFNRX0gQ09NUE9ORU5U ICR7U1VCU1lTX05BTUV9IFNPVVJDRVMgJHtzcmNzfSAke2luY3N9ICR7Y29tcHJlc3Npb25faW5j c30gJHtpbXBsX2luY3N9ICR7T1BFTk5JX0lOQ0xVREVTfSAke09QRU5OSTJfSU5DTFVERVN9KQot KwotIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7TElCX05BTUV9IFBVQkxJQyAiJHtDTUFL RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQotLWxpbmtfZGlyZWN0b3JpZXMoJHtWVEtf TElOS19ESVJFQ1RPUklFU30pCi0tdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIg cGNsX2NvbW1vbiBwY2xfaW9fcGx5ICR7VlRLX0xJQlJBUklFU30pCi0rCi0rdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCIke0xJQl9OQU1FfSIgcGNsX2NvbW1vbiBwY2xfaW9fcGx5KQotK2lmKFZUS19G T1VORCkKLSsgIGlmKCR7VlRLX1ZFUlNJT059IFZFUlNJT05fTEVTUyA5LjApCi0rICAgIGxpbmtf ZGlyZWN0b3JpZXMoJHtWVEtfTElOS19ESVJFQ1RPUklFU30pCi0rICAgIHRhcmdldF9saW5rX2xp YnJhcmllcygiJHtMSUJfTkFNRX0iICR7VlRLX0xJQlJBUklFU30pCi0rICBlbHNlKCkKLSsgICAg dGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIgCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICBWVEs6OklPSW1hZ2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6SU9H ZW9tZXRyeQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpJT1BMWSkKLSsgIGVuZGlm KCkKLStlbmRpZigpCi0rCi0gaWYoUE5HX0ZPVU5EKQotICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz KCIke0xJQl9OQU1FfSIgJHtQTkdfTElCUkFSSUVTfSkKLSBlbmRpZigpCi1AQCAtMzQ5LDYgKzM2 Myw5IEBAIGVuZGlmKCkKLSAKLSBpZihXSVRIX09QRU5OSSkKLSAgIHRhcmdldF9saW5rX2xpYnJh cmllcygiJHtMSUJfTkFNRX0iICR7T1BFTk5JX0xJQlJBUklFU30pCi0rICBpZihWVEtfRk9VTkQg QU5EIChOT1QgJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkpCi0rICAgIHRhcmdldF9s aW5rX2xpYnJhcmllcygiJHtMSUJfTkFNRX0iIFZUSzo6RmlsdGVyc0NvcmUgVlRLOjpGaWx0ZXJz R2VuZXJhbCkKLSsgIGVuZGlmKCkKLSBlbmRpZigpCi0gCi0gaWYoV0lUSF9GWkFQSSkKLWRpZmYg LXVwIC4vaW8vc3JjL3Z0a19saWJfaW8uY3BwLjQyNjIgLi9pby9zcmMvdnRrX2xpYl9pby5jcHAK LS0tLSAuL2lvL3NyYy92dGtfbGliX2lvLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAw MDAwMDAwIC0wNDAwCi0rKysgLi9pby9zcmMvdnRrX2xpYl9pby5jcHAJMjAyMS0wMi0yMSAyMToz Mjo1OC4zMTkxNzY3MjUgLTA1MDAKLUBAIC0zNDMsNyArMzQzLDExIEBAIHBjbDo6aW86OnZ0azJt ZXNoIChjb25zdCB2dGtTbWFydFBvaW50ZXIKLSAKLSAgIC8vIE5vdyBoYW5kbGUgdGhlIHBvbHln b25zCi0gICBtZXNoLnBvbHlnb25zLnJlc2l6ZSAobnJfcG9seWdvbnMpOwotKyNpZmRlZiBWVEtf Q0VMTF9BUlJBWV9WMgotKyAgdnRrSWRUeXBlIGNvbnN0ICpjZWxsX3BvaW50czsKLSsjZWxzZQot ICAgdnRrSWRUeXBlKiBjZWxsX3BvaW50czsKLSsjZW5kaWYKLSAgIHZ0a0lkVHlwZSBucl9jZWxs X3BvaW50czsKLSAgIHZ0a0NlbGxBcnJheSAqIG1lc2hfcG9seWdvbnMgPSBwb2x5X2RhdGEtPkdl dFBvbHlzICgpOwotICAgbWVzaF9wb2x5Z29ucy0+SW5pdFRyYXZlcnNhbCAoKTsKLWRpZmYgLXVw IC4vb3V0b2Zjb3JlL3Rvb2xzL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9vdXRvZmNvcmUvdG9vbHMv Q01ha2VMaXN0cy50eHQKLS0tLSAuL291dG9mY29yZS90b29scy9DTWFrZUxpc3RzLnR4dC40MjYy CTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9vdXRvZmNvcmUvdG9v bHMvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMTkxNzY3MjUgLTA1MDAKLUBA IC0xMyw4ICsxMyw2IEBAIGlmKE5PVCBWVEtfRk9VTkQpCi0gZWxzZSgpCi0gICBzZXQoREVGQVVM VCBUUlVFKQotICAgc2V0KFJFQVNPTikKLS0gIHNldChWVEtfVVNFX0ZJTEUgIiR7VlRLX1VTRV9G SUxFfSIgQ0FDSEUgSU5URVJOQUwgIlZUS19VU0VfRklMRSIpCi0tICBpbmNsdWRlKCIke1ZUS19V U0VfRklMRX0iKQotICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtDTUFLRV9DVVJSRU5UX1NPVVJD RV9ESVJ9L2luY2x1ZGUiKQotIAotICAgc2V0KHNyY3Mgb3V0b2Zjb3JlX3ZpZXdlci5jcHAKLWRp ZmYgLXVwIC4vcGNsX2NvbmZpZy5oLmluLjQyNjIgLi9wY2xfY29uZmlnLmguaW4KLS0tLSAuL3Bj bF9jb25maWcuaC5pbi40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0r KysgLi9wY2xfY29uZmlnLmguaW4JMjAyMS0wMi0yMSAyMTozMjo1OC4zMTgxNzY3MjEgLTA1MDAK LUBAIC05NSwzICs5NSw1IEBACi0gLyogVmVyc2lvbiBvZiBPcGVuR0wgdXNlZCBieSBWVEsgYXMg cmVuZGVyaW5nIGJhY2tlbmQgKi8KLSAjZGVmaW5lIFZUS19SRU5ERVJJTkdfQkFDS0VORF9PUEVO R0xfVkVSU0lPTiAke1ZUS19SRU5ERVJJTkdfQkFDS0VORF9PUEVOR0xfVkVSU0lPTn0KLSAKLSsj Y21ha2VkZWZpbmUgSEFWRV9RVlRLIDEKLSsKLWRpZmYgLXVwIC4vcGVvcGxlL0NNYWtlTGlzdHMu dHh0LjQyNjIgLi9wZW9wbGUvQ01ha2VMaXN0cy50eHQKLS0tLSAuL3Blb3BsZS9DTWFrZUxpc3Rz LnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9wZW9w bGUvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMTkxNzY3MjUgLTA1MDAKLUBA IC04LDggKzgsNiBAQCBpZihOT1QgVlRLX0ZPVU5EKQotIGVsc2UoKQotICAgc2V0KERFRkFVTFQg VFJVRSkKLSAgIHNldChSRUFTT04pCi0tICBzZXQoVlRLX1VTRV9GSUxFICIke1ZUS19VU0VfRklM RX0iIENBQ0hFIElOVEVSTkFMICJWVEtfVVNFX0ZJTEUiKQotLSAgaW5jbHVkZSgiJHtWVEtfVVNF X0ZJTEV9IikKLSAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf RElSfS9pbmNsdWRlIikKLSBlbmRpZigpCi0gCi1kaWZmIC11cCAuL3JlZ2lzdHJhdGlvbi9pbmNs dWRlL3BjbC9yZWdpc3RyYXRpb24vaW1wbC9wcGZfcmVnaXN0cmF0aW9uLmhwcC40MjYyIC4vcmVn aXN0cmF0aW9uL2luY2x1ZGUvcGNsL3JlZ2lzdHJhdGlvbi9pbXBsL3BwZl9yZWdpc3RyYXRpb24u aHBwCi0tLS0gLi9yZWdpc3RyYXRpb24vaW5jbHVkZS9wY2wvcmVnaXN0cmF0aW9uL2ltcGwvcHBm X3JlZ2lzdHJhdGlvbi5ocHAuNDI2MgkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyMDE3NjcyOSAtMDUw MAotKysrIC4vcmVnaXN0cmF0aW9uL2luY2x1ZGUvcGNsL3JlZ2lzdHJhdGlvbi9pbXBsL3BwZl9y ZWdpc3RyYXRpb24uaHBwCTIwMjEtMDItMjEgMjE6Mzc6MTYuNzMxMjk4MTA3IC0wNTAwCi1AQCAt ODMsOSArODMsOSBAQCBwY2w6OlBQRlJlZ2lzdHJhdGlvbjxQb2ludFNvdXJjZSwgUG9pbnRUCi0g Ci0gICBQb3NlV2l0aFZvdGVzTGlzdCB2b3RlZF9wb3NlczsKLSAgIC8vIENvbnNpZGVyIGV2ZXJ5 IDxzY2VuZV9yZWZlcmVuY2VfcG9pbnRfc2FtcGxpbmdfcmF0ZT4tdGggcG9pbnQgYXMgdGhlIHJl ZmVyZW5jZSBwb2ludCA9PiBmaXggc19yCi0tICBmbG9hdCBmMSwgZjIsIGYzLCBmNDsKLS0gIGZv ciAoc3RkOjpzaXplX3Qgc2NlbmVfcmVmZXJlbmNlX2luZGV4ID0gMDsgc2NlbmVfcmVmZXJlbmNl X2luZGV4IDwgdGFyZ2V0Xy0+c2l6ZSAoKTsgc2NlbmVfcmVmZXJlbmNlX2luZGV4ICs9IHNjZW5l X3JlZmVyZW5jZV9wb2ludF9zYW1wbGluZ19yYXRlXykKLS0gIHsKLSsgIGZsb2F0IGYxLCBmMiwg ZjMsIGY0OyAgCi0rICBmb3IgKGluZGV4X3Qgc2NlbmVfcmVmZXJlbmNlX2luZGV4ID0gMDsKLSsg ICAgICAgc2NlbmVfcmVmZXJlbmNlX2luZGV4IDwgc3RhdGljX2Nhc3Q8aW5kZXhfdD4odGFyZ2V0 Xy0+c2l6ZSgpKTsgc2NlbmVfcmVmZXJlbmNlX2luZGV4ICs9IHNjZW5lX3JlZmVyZW5jZV9wb2lu dF9zYW1wbGluZ19yYXRlXykgewotICAgICBFaWdlbjo6VmVjdG9yM2Ygc2NlbmVfcmVmZXJlbmNl X3BvaW50ID0gKCp0YXJnZXRfKVtzY2VuZV9yZWZlcmVuY2VfaW5kZXhdLmdldFZlY3RvcjNmTWFw ICgpLAotICAgICAgICAgc2NlbmVfcmVmZXJlbmNlX25vcm1hbCA9ICgqdGFyZ2V0Xylbc2NlbmVf cmVmZXJlbmNlX2luZGV4XS5nZXROb3JtYWxWZWN0b3IzZk1hcCAoKTsKLSAKLWRpZmYgLXVwIC4v cmVnaXN0cmF0aW9uL2luY2x1ZGUvcGNsL3JlZ2lzdHJhdGlvbi9wcGZfcmVnaXN0cmF0aW9uLmgu NDI2MiAuL3JlZ2lzdHJhdGlvbi9pbmNsdWRlL3BjbC9yZWdpc3RyYXRpb24vcHBmX3JlZ2lzdHJh dGlvbi5oCi1kaWZmIC11cCAuL3NpbXVsYXRpb24vQ01ha2VMaXN0cy50eHQuNDI2MiAuL3NpbXVs YXRpb24vQ01ha2VMaXN0cy50eHQKLS0tLSAuL3NpbXVsYXRpb24vQ01ha2VMaXN0cy50eHQuNDI2 MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vc2ltdWxhdGlvbi9D TWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMzMDE3Njc3MSAtMDUwMAotQEAgLTQs MTIgKzQsOCBAQCBzZXQoU1VCU1lTX0RFUFMgY29tbW9uIGlvIHN1cmZhY2Uga2R0cmVlCi0gCi0g c2V0KGJ1aWxkIEZBTFNFKQotIGZpbmRfcGFja2FnZShPcGVuR0wpCi0taWYoQVBQTEUpCi0tICAj IGhvbWVicmV3J3MgRmluZEdMRVcgbW9kdWxlIGlzIG5vdCBpbiBnb29kIHNoYXBlCi0tICBmaW5k X3BhY2thZ2UoZ2xldyBDT05GSUcpCi0tRUxTRSgpCi0tICBmaW5kX3BhY2thZ2UoR0xFVykKLS1F TkRJRigpCi0rCi0rZmluZF9wYWNrYWdlKEdMRVcpCi0gCi0gUENMX1NVQlNZU19PUFRJT04oYnVp bGQgIiR7U1VCU1lTX05BTUV9IiAiJHtTVUJTWVNfREVTQ30iIE9GRikKLSBQQ0xfU1VCU1lTX0RF UEVORChidWlsZCAiJHtTVUJTWVNfTkFNRX0iIERFUFMgJHtTVUJTWVNfREVQU30gRVhUX0RFUFMg b3BlbmdsIGdsZXcpCi1kaWZmIC11cCAuL3NpbXVsYXRpb24vc3JjL21vZGVsLmNwcC40MjYyIC4v c2ltdWxhdGlvbi9zcmMvbW9kZWwuY3BwCi0tLS0gLi9zaW11bGF0aW9uL3NyYy9tb2RlbC5jcHAu NDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vc2ltdWxhdGlv bi9zcmMvbW9kZWwuY3BwCTIwMjEtMDItMjEgMjE6MzI6NTguMzMwMTc2NzcxIC0wNTAwCi1AQCAt MjEsNyArMjEsNyBAQCBwY2w6OnNpbXVsYXRpb246OlRyaWFuZ2xlTWVzaE1vZGVsOjpUcmlhCi0g Ci0gICAgIEVpZ2VuOjpWZWN0b3I0ZiB0bXA7Ci0gICAgIGZvciAoY29uc3QgYXV0byYgcG9seWdv biA6IHBsZy0+cG9seWdvbnMpIHsKLS0gICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIGludCYgcG9p bnQgOiBwb2x5Z29uLnZlcnRpY2VzKSB7Ci0rICAgICAgZm9yIChjb25zdCBhdXRvJiBwb2ludCA6 IHBvbHlnb24udmVydGljZXMpIHsKLSAgICAgICAgIHRtcCA9IG5ld2Nsb3VkW3BvaW50XS5nZXRW ZWN0b3I0Zk1hcCgpOwotICAgICAgICAgdmVydGljZXMucHVzaF9iYWNrKFZlcnRleChFaWdlbjo6 VmVjdG9yM2YodG1wKDApLCB0bXAoMSksIHRtcCgyKSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVpZ2VuOjpWZWN0b3IzZihuZXdjbG91ZFtwb2ludF0uciAvIDI1NS4wZiwK LUBAIC0zNiw3ICszNiw3IEBAIHBjbDo6c2ltdWxhdGlvbjo6VHJpYW5nbGVNZXNoTW9kZWw6OlRy aWEKLSAgICAgcGNsOjpmcm9tUENMUG9pbnRDbG91ZDIocGxnLT5jbG91ZCwgbmV3Y2xvdWQpOwot ICAgICBFaWdlbjo6VmVjdG9yNGYgdG1wOwotICAgICBmb3IgKGNvbnN0IGF1dG8mIHBvbHlnb24g OiBwbGctPnBvbHlnb25zKSB7Ci0tICAgICAgZm9yIChjb25zdCB1bnNpZ25lZCBpbnQmIHBvaW50 IDogcG9seWdvbi52ZXJ0aWNlcykgewotKyAgICAgIGZvciAoY29uc3QgYXV0byYgcG9pbnQgOiBw b2x5Z29uLnZlcnRpY2VzKSB7Ci0gICAgICAgICB0bXAgPSBuZXdjbG91ZFtwb2ludF0uZ2V0VmVj dG9yNGZNYXAoKTsKLSAgICAgICAgIHZlcnRpY2VzLnB1c2hfYmFjayhWZXJ0ZXgoRWlnZW46OlZl Y3RvcjNmKHRtcCgwKSwgdG1wKDEpLCB0bXAoMikpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFaWdlbjo6VmVjdG9yM2YoMS4wLCAxLjAsIDEuMCkpKTsKLWRpZmYgLXVwIC4v c3VyZmFjZS9DTWFrZUxpc3RzLnR4dC40MjYyIC4vc3VyZmFjZS9DTWFrZUxpc3RzLnR4dAotLS0t IC4vc3VyZmFjZS9DTWFrZUxpc3RzLnR4dC40MjYyCTIwMjEtMDItMjEgMjE6MzI6NTguMzE0MTc2 NzA0IC0wNTAwCi0rKysgLi9zdXJmYWNlL0NNYWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6 NTguMzIwMTc2NzI5IC0wNTAwCi1AQCAtNCw3ICs0LDcgQEAgc2V0KFNVQlNZU19ERVBTIGNvbW1v biBzZWFyY2gga2R0cmVlIG9jdAotIAotIHNldChidWlsZCBUUlVFKQotIFBDTF9TVUJTWVNfT1BU SU9OKGJ1aWxkICIke1NVQlNZU19OQU1FfSIgIiR7U1VCU1lTX0RFU0N9IiBPTikKLS1QQ0xfU1VC U1lTX0RFUEVORChidWlsZCAiJHtTVUJTWVNfTkFNRX0iIERFUFMgJHtTVUJTWVNfREVQU30gT1BU X0RFUFMgcWh1bGwpCi0rUENMX1NVQlNZU19ERVBFTkQoYnVpbGQgIiR7U1VCU1lTX05BTUV9IiBE RVBTICR7U1VCU1lTX0RFUFN9IEVYVF9ERVBTIHZ0ayBPUFRfREVQUyBxaHVsbCkKLSAKLSBQQ0xf QUREX0RPQygiJHtTVUJTWVNfTkFNRX0iKQotIAotQEAgLTE1NCwxOSArMTU0LDMyIEBAIHNldChp bXBsX2luY3MKLSApCi0gCi0gc2V0KExJQl9OQU1FICJwY2xfJHtTVUJTWVNfTkFNRX0iKQotKwot IGluY2x1ZGVfZGlyZWN0b3JpZXMoCi0gICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2lu Y2x1ZGUiCi0gICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9IgotICkKLS1pbmNsdWRlX2Rp cmVjdG9yaWVzKFNZU1RFTQotLSAgJHtWVEtfSU5DTFVERV9ESVJTfQotLSkKLS1saW5rX2RpcmVj dG9yaWVzKCR7VlRLX0xJQlJBUllfRElSU30pCi0gUENMX0FERF9MSUJSQVJZKCR7TElCX05BTUV9 IENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBTT1VSQ0VTICR7c3Jjc30gJHtpbmNzfSAke2ltcGxf aW5jc30gJHtWVEtfU01PT1RISU5HX0lOQ0xVREVTfSAke1BPSVNTT05fSU5DTFVERVN9ICR7T1BF Tk5VUkJTX0lOQ0xVREVTfSAke09OX05VUkJTX0lOQ0xVREVTfSkKLS10YXJnZXRfbGlua19saWJy YXJpZXMoIiR7TElCX05BTUV9IiBwY2xfY29tbW9uIHBjbF9zZWFyY2ggcGNsX2tkdHJlZSBwY2xf b2N0cmVlICR7VlRLX0xJQlJBUklFU30gJHtPTl9OVVJCU19MSUJSQVJJRVN9KQotKwotK3Rhcmdl dF9saW5rX2xpYnJhcmllcygiJHtMSUJfTkFNRX0iIHBjbF9jb21tb24gcGNsX3NlYXJjaCBwY2xf a2R0cmVlIHBjbF9vY3RyZWUgJHtPTl9OVVJCU19MSUJSQVJJRVN9KQotKwotK2lmKFZUS19GT1VO RCkKLSsgIGlmKCR7VlRLX1ZFUlNJT059IFZFUlNJT05fTEVTUyA5LjApCi0rICAgIGluY2x1ZGVf ZGlyZWN0b3JpZXMoU1lTVEVNICR7VlRLX0lOQ0xVREVfRElSU30pCi0rICAgIGxpbmtfZGlyZWN0 b3JpZXMoJHtWVEtfTElCUkFSWV9ESVJTfSkKLSsgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIk e0xJQl9OQU1FfSIgJHtWVEtfTElCUkFSSUVTfSkKLSsgIGVsc2UoKQotKyAgICB0YXJnZXRfbGlu a19saWJyYXJpZXMoIiR7TElCX05BTUV9IiBWVEs6OkNvbW1vbkRhdGFNb2RlbAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OkNvbW1vbkV4ZWN1dGlvbk1vZGVs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6RmlsdGVyc01v ZGVsaW5nCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6Rmls dGVyc0NvcmUpCi0rICBlbmRpZigpCi0rZW5kaWYoKQotKwotIGlmKFFIVUxMX0ZPVU5EKQotICAg dGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIgJHtRSFVMTF9MSUJSQVJJRVN9KQot IGVuZGlmKCkKLSsKLSBQQ0xfTUFLRV9QS0dDT05GSUcoJHtMSUJfTkFNRX0gQ09NUE9ORU5UICR7 U1VCU1lTX05BTUV9IERFU0MgJHtTVUJTWVNfREVTQ30gUENMX0RFUFMgJHtTVUJTWVNfREVQU30p Ci0gCi0gIyBJbnN0YWxsIGluY2x1ZGUgZmlsZXMKLUBAIC0xODMsNiArMTk2LDcgQEAgZW5kaWYo KQotIGlmKFZUS19GT1VORCBBTkQgTk9UIEFORFJPSUQpCi0gICBQQ0xfQUREX0lOQ0xVREVTKCIk e1NVQlNZU19OQU1FfSIgIiR7U1VCU1lTX05BTUV9L3Z0a19zbW9vdGhpbmciICR7VlRLX1NNT09U SElOR19JTkNMVURFU30pCi0gZW5kaWYoKQotKwotIGlmKFdJTjMyKQotICAgdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCIke0xJQl9OQU1FfSIgUnBjcnQ0LmxpYikKLSBlbmRpZigpCi1kaWZmIC11cCAu L3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX3V0aWxzLmNwcC40MjYyIC4vc3VyZmFjZS9z cmMvdnRrX3Ntb290aGluZy92dGtfdXRpbHMuY3BwCi0tLS0gLi9zdXJmYWNlL3NyYy92dGtfc21v b3RoaW5nL3Z0a191dGlscy5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAt MDQwMAotKysrIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfdXRpbHMuY3BwCTIwMjEt MDItMjEgMjE6MzI6NTguMzIwMTc2NzI5IC0wNTAwCi1AQCAtNDksNiArNDksNyBAQAotICNpbmNs dWRlIDx2dGtQb2x5RGF0YS5oPgotICNpbmNsdWRlIDx2dGtQb2ludERhdGEuaD4KLSAjaW5jbHVk ZSA8dnRrRmxvYXRBcnJheS5oPgotKyNpbmNsdWRlIDx2dGtVbnNpZ25lZENoYXJBcnJheS5oPgot IAotIC8vIFN1cHBvcnQgZm9yIFZUSyA3LjEgdXB3YXJkcwotICNpZmRlZiB2dGtHZW5lcmljRGF0 YUFycmF5X2gKLUBAIC0xNTUsNyArMTU2LDExIEBAIHBjbDo6VlRLVXRpbHM6OnZ0azJtZXNoIChj b25zdCB2dGtTbWFydFAKLSAgIH0KLSAKLSAgIG1lc2gucG9seWdvbnMucmVzaXplIChucl9wb2x5 Z29ucyk7Ci0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICB2dGtJZFR5cGUgY29uc3QgKmNl bGxfcG9pbnRzOwotKyNlbHNlCi0gICB2dGtJZFR5cGUqIGNlbGxfcG9pbnRzOwotKyNlbmRpZgot ICAgdnRrSWRUeXBlIG5yX2NlbGxfcG9pbnRzOwotICAgdnRrQ2VsbEFycmF5ICogbWVzaF9wb2x5 Z29ucyA9IHBvbHlfZGF0YS0+R2V0UG9seXMgKCk7Ci0gICBtZXNoX3BvbHlnb25zLT5Jbml0VHJh dmVyc2FsICgpOwotZGlmZiAtdXAgLi90b29scy9DTWFrZUxpc3RzLnR4dC40MjYyIC4vdG9vbHMv Q01ha2VMaXN0cy50eHQKLS0tLSAuL3Rvb2xzL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMC0wOC0x NCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL3Rvb2xzL0NNYWtlTGlzdHMudHh0CTIw MjEtMDItMjEgMjE6MzI6NTguMzI0MTc2NzQ2IC0wNTAwCi1AQCAtMjAwLDEyICsyMDAsMjAgQEAg ZWxzZSgpCi0gCi0gICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX29iajJwY2QgQ09NUE9ORU5UICR7 U1VCU1lTX05BTUV9IFNPVVJDRVMgb2JqMnBjZC5jcHApCi0gICB0YXJnZXRfbGlua19saWJyYXJp ZXMocGNsX29iajJwY2QgcGNsX2NvbW1vbiBwY2xfaW8pCi0rICAjVE9ETzogVXBkYXRlIHdoZW4g Q01BS0UgMy4xMCBpcyBhdmFpbGFibGUKLSsgIGlmKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lP Tl9MRVNTIDkuMCkpCi0rICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfb2JqMnBjZCBWVEs6 OkZpbHRlcnNDb3JlKQotKyAgZW5kaWYoKQotIAotICAgUENMX0FERF9FWEVDVVRBQkxFKHBjbF9v YmoycGx5IENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBTT1VSQ0VTIG9iajJwbHkuY3BwKQotICAg dGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vYmoycGx5IHBjbF9jb21tb24gcGNsX2lvKQotIAot ICAgUENMX0FERF9FWEVDVVRBQkxFKHBjbF92dGsycGNkIENPTVBPTkVOVCAke1NVQlNZU19OQU1F fSBTT1VSQ0VTIHZ0azJwY2QuY3BwKQotICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF92dGsy cGNkIHBjbF9jb21tb24gcGNsX2lvKQotKyAgI1RPRE86IFVwZGF0ZSB3aGVuIENNQUtFIDMuMTAg aXMgYXZhaWxhYmxlCi0rICBpZihOT1QgKCR7VlRLX1ZFUlNJT059IFZFUlNJT05fTEVTUyA5LjAp KQotKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX3Z0azJwY2QgVlRLOjpGaWx0ZXJzQ29y ZSkKLSsgIGVuZGlmKCkKLSAKLSAgIGlmKEJVSUxEX3Zpc3VhbGl6YXRpb24pCi0gICAgIFBDTF9B RERfRVhFQ1VUQUJMRShwY2xfb2JqX3JlY19yYW5zYWNfbW9kZWxfb3BwcyBDT01QT05FTlQgJHtT VUJTWVNfTkFNRX0gU09VUkNFUyBvYmpfcmVjX3JhbnNhY19tb2RlbF9vcHBzLmNwcCkKLWRpZmYg LXVwIC4vdG9vbHMvbWVzaF9zYW1wbGluZy5jcHAuNDI2MiAuL3Rvb2xzL21lc2hfc2FtcGxpbmcu Y3BwCi0tLS0gLi90b29scy9tZXNoX3NhbXBsaW5nLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6 MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi90b29scy9tZXNoX3NhbXBsaW5nLmNwcAkyMDIxLTAy LTIxIDIxOjM3OjQ5Ljg4MzQyMTc5MiAtMDUwMAotQEAgLTM2LDYgKzM2LDcgQEAKLSAgKi8KLSAK LSAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaD4KLSsjaW5jbHVk ZSA8cGNsL3Zpc3VhbGl6YXRpb24vdnRrL3BjbF92dGtfY29tcGF0aWJpbGl0eS5oPgotICNpbmNs dWRlIDxwY2wvaW8vcGNkX2lvLmg+Ci0gI2luY2x1ZGUgPHBjbC9pby92dGtfbGliX2lvLmg+Ci0g I2luY2x1ZGUgPHBjbC9jb21tb24vdHJhbnNmb3Jtcy5oPgotQEAgLTg3LDcgKzg4LDggQEAgcmFu ZFBTdXJmYWNlICh2dGtQb2x5RGF0YSAqIHBvbHlkYXRhLCBzdAotIAotICAgZG91YmxlIEFbM10s IEJbM10sIENbM107Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKnB0SWRz ID0gbnVsbHB0cjsKLSsgIHZ0a0NlbGxQdHNQdHIgcHRJZHMgPSBudWxscHRyOwotKwotICAgcG9s eWRhdGEtPkdldENlbGxQb2ludHMgKGVsLCBucHRzLCBwdElkcyk7Ci0gICBwb2x5ZGF0YS0+R2V0 UG9pbnQgKHB0SWRzWzBdLCBBKTsKLSAgIHBvbHlkYXRhLT5HZXRQb2ludCAocHRJZHNbMV0sIEIp OwotQEAgLTEzOCw3ICsxNDAsOCBAQCB1bmlmb3JtX3NhbXBsaW5nICh2dGtTbWFydFBvaW50ZXI8 dnRrUG9sCi0gCi0gICBkb3VibGUgcDFbM10sIHAyWzNdLCBwM1szXSwgdG90YWxBcmVhID0gMDsK LSAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gY3VtdWxhdGl2ZUFyZWFzIChjZWxscy0+R2V0TnVtYmVy T2ZDZWxscyAoKSwgMCk7Ci0tICB2dGtJZFR5cGUgbnB0cyA9IDAsICpwdElkcyA9IG51bGxwdHI7 Ci0rICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0rICB2dGtDZWxsUHRzUHRyIHB0SWRzID0gbnVsbHB0 cjsKLSAgIHN0ZDo6c2l6ZV90IGNlbGxJZCA9IDA7Ci0gICBmb3IgKGNlbGxzLT5Jbml0VHJhdmVy c2FsICgpOyBjZWxscy0+R2V0TmV4dENlbGwgKG5wdHMsIHB0SWRzKTsgY2VsbElkKyspCi0gICB7 Ci1kaWZmIC11cCAuL3Rvb2xzL29wZW5uaV9zYXZlX2ltYWdlLmNwcC40MjYyIC4vdG9vbHMvb3Bl bm5pX3NhdmVfaW1hZ2UuY3BwCi0tLS0gLi90b29scy9vcGVubmlfc2F2ZV9pbWFnZS5jcHAuNDI2 MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vdG9vbHMvb3Blbm5p X3NhdmVfaW1hZ2UuY3BwCTIwMjEtMDItMjEgMjE6MzI6NTguMzI0MTc2NzQ2IC0wNTAwCi1AQCAt MzksOSArMzksMTMgQEAKLSAjaW5jbHVkZSA8cGNsL2lvL29wZW5uaV9ncmFiYmVyLmg+Ci0gI2lu Y2x1ZGUgPHBjbC9pby9vcGVubmlfY2FtZXJhL29wZW5uaV9kcml2ZXIuaD4KLSAjaW5jbHVkZSA8 cGNsL2NvbnNvbGUvcGFyc2UuaD4KLS0jaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vdnRrLmg+ Ci0gI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3BjbF92aXN1YWxpemVyLmg+Ci0gCi0rI2lu Y2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgotKyNpbmNsdWRlIDx2dGtJbWFnZUltcG9ydC5oPgot KyNpbmNsdWRlIDx2dGtUSUZGV3JpdGVyLmg+Ci0rI2luY2x1ZGUgPHZ0a0ltYWdlRmxpcC5oPgot KwotICNpbmNsdWRlICJib29zdC5oIgotIAotICNpbmNsdWRlIDxtdXRleD4KLWRpZmYgLXVwIC4v dG9vbHMvcGNkX3ZpZXdlci5jcHAuNDI2MiAuL3Rvb2xzL3BjZF92aWV3ZXIuY3BwCi0tLS0gLi90 b29scy9wY2Rfdmlld2VyLmNwcC40MjYyCTIwMjEtMDItMjEgMjE6MzI6NTguMzI0MTc2NzQ2IC0w NTAwCi0rKysgLi90b29scy9wY2Rfdmlld2VyLmNwcAkyMDIxLTAyLTIxIDIxOjM4OjEwLjAzMTQ3 MTg3NSAtMDUwMAotQEAgLTQ1LDcgKzQ1LDYgQEAKLSAjaW5jbHVkZSA8cGNsL2lvL3BjZF9pby5o PgotICNpbmNsdWRlIDxjZmxvYXQ+Ci0gI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL2VpZ2Vu Lmg+Ci0tLy8jaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vdnRrLmg+Ci0gI2luY2x1ZGUgPHBj bC92aXN1YWxpemF0aW9uL3BvaW50X2Nsb3VkX2hhbmRsZXJzLmg+Ci0gI2luY2x1ZGUgPHBjbC92 aXN1YWxpemF0aW9uL3BjbF92aXN1YWxpemVyLmg+Ci0gI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0 aW9uL2ltYWdlX3ZpZXdlci5oPgotZGlmZiAtdXAgLi90b29scy92aXJ0dWFsX3NjYW5uZXIuY3Bw LjQyNjIgLi90b29scy92aXJ0dWFsX3NjYW5uZXIuY3BwCi0tLS0gLi90b29scy92aXJ0dWFsX3Nj YW5uZXIuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAu L3Rvb2xzL3ZpcnR1YWxfc2Nhbm5lci5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjQxNzY3NDYg LTA1MDAKLUBAIC01NCw3ICs1NCwxMiBAQAotICNpbmNsdWRlIDxwY2wvbWVtb3J5Lmg+ICAvLyBm b3IgcGNsOjptYWtlX3NoYXJlZAotICNpbmNsdWRlIDxwY2wvcG9pbnRfdHlwZXMuaD4KLSAjaW5j bHVkZSA8cGNsL2NvbnNvbGUvcGFyc2UuaD4KLS0jaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24v dnRrLmg+Ci0rCi0rI2luY2x1ZGUgPHZ0a0dlbmVyYWxUcmFuc2Zvcm0uaD4KLSsjaW5jbHVkZSA8 dnRrUGxhdG9uaWNTb2xpZFNvdXJjZS5oPgotKyNpbmNsdWRlIDx2dGtMb29wU3ViZGl2aXNpb25G aWx0ZXIuaD4KLSsjaW5jbHVkZSA8dnRrQ2VsbExvY2F0b3IuaD4KLSsjaW5jbHVkZSA8dnRrTWF0 aC5oPgotIAotICNpbmNsdWRlIDxib29zdC9hbGdvcml0aG0vc3RyaW5nLmhwcD4gIC8vIGZvciBi b29zdDo6aXNfYW55X29mLCBib29zdDo6c3BsaXQsIGJvb3N0Ojp0b2tlbl9jb21wcmVzc19vbiwg Ym9vc3Q6OnRyaW0KLSAjaW5jbHVkZSA8Ym9vc3QvZmlsZXN5c3RlbS5ocHA+ICAvLyBmb3IgYm9v c3Q6OmZpbGVzeXN0ZW06OmNyZWF0ZV9kaXJlY3RvcmllcywgYm9vc3Q6OmZpbGVzeXN0ZW06OmV4 aXN0cywgYm9vc3Q6OmZpbGVzeXN0ZW06OmV4dGVuc2lvbiwgYm9vc3Q6OmZpbGVzeXN0ZW06OnBh dGgKLWRpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9DTWFrZUxpc3RzLnR4dC40MjYyIC4vdmlzdWFs aXphdGlvbi9DTWFrZUxpc3RzLnR4dAotLS0tIC4vdmlzdWFsaXphdGlvbi9DTWFrZUxpc3RzLnR4 dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi92aXN1YWxp emF0aW9uL0NNYWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzIxMTc2NzM0IC0wNTAw Ci1AQCAtNjMsNiArNjMsMTQgQEAgaWYoVlRLX1JFTkRFUklOR19CQUNLRU5EX09QRU5HTF9WRVJT SU9OCi0gICApCi0gZW5kaWYoKQotIAotK2lmKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9M RVNTIDkuMCkpCi0rICBpZihOT1QgKCI7JHtWVEtfQVZBSUxBQkxFX0NPTVBPTkVOVFN9OyIgTUFU Q0hFUyAiO1JlbmRlcmluZ0NvbnRleHRPcGVuR0wyOyIpKQotKyAgICBsaXN0KFJFTU9WRV9JVEVN IHNyY3MKLSsgICAgICBzcmMvcGNsX3BhaW50ZXIyRC5jcHAKLSsgICAgKQotKyAgZW5kaWYoKSAg Ci0rZW5kaWYoKQotKwotIHNldChpbmNzCi0gICAiaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0v ZWlnZW4uaCIKLSAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS9ib29zdC5oIgotQEAgLTg1 LDYgKzkzLDcgQEAgc2V0KGluY3MKLSAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS92dGsu aCIKLSAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS9zaW1wbGVfYnVmZmVyX3Zpc3VhbGl6 ZXIuaCIKLSAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS9wY2xfcGxvdHRlci5oIgotKyAg ImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3F2dGtfY29tcGF0aWJpbGl0eS5oIgotICkKLSAK LSBzZXQoY29tbW9uX2luY3MKLUBAIC0xMTYsNiArMTI1LDcgQEAgc2V0KHZ0a19pbmNzCi0gICAi aW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vdnRrL3BjbF9pbWFnZV9jYW52YXNfc291cmNlXzJk LmgiCi0gICAiaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vdnRrL3BjbF9jb250ZXh0X2l0ZW0u aCIKLSAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS92dGsvdnRrUmVuZGVyV2luZG93SW50 ZXJhY3RvckZpeC5oIgotKyAgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3Z0ay9wY2xfdnRr X2NvbXBhdGliaWxpdHkuaCIKLSApCi0gCi0gaWYoVlRLX1JFTkRFUklOR19CQUNLRU5EX09QRU5H TF9WRVJTSU9OIFZFUlNJT05fTEVTUyAyKQotQEAgLTEyNSw2ICsxMzUsMTUgQEAgaWYoVlRLX1JF TkRFUklOR19CQUNLRU5EX09QRU5HTF9WRVJTSU9OCi0gICApCi0gZW5kaWYoKQotIAotK2lmKE5P VCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkpCi0rICBpZihOT1QgKCI7JHtWVEtf QVZBSUxBQkxFX0NPTVBPTkVOVFN9OyIgTUFUQ0hFUyAiO1JlbmRlcmluZ0NvbnRleHRPcGVuR0wy OyIpKQotKyAgICAKLSsgICAgbGlzdChSRU1PVkVfSVRFTSBpbmNzCi0rICAgICAgImluY2x1ZGUv cGNsLyR7U1VCU1lTX05BTUV9L3BjbF9wYWludGVyMkQuaCIKLSsgICAgKQotKyAgZW5kaWYoKQot K2VuZGlmKCkKLSsKLSAjIG9uIGFwcGxlLCBhIHdvcmthcm91bmQgaXMgdXNlZCBmb3IgdGhlIGNv Y29hIHJlbmRlciB3aW5kb3cgaW50ZXJhY3RvcgotIGlmKEFQUExFKQotICAgbGlzdChBUFBFTkQg c3JjcwotQEAgLTEzNCwxNCArMTUzLDQzIEBAIGVuZGlmKCkKLSBzZXQoTElCX05BTUUgInBjbF8k e1NVQlNZU19OQU1FfSIpCi0gUENMX0FERF9MSUJSQVJZKCR7TElCX05BTUV9IENPTVBPTkVOVCAk e1NVQlNZU19OQU1FfSBTT1VSQ0VTICR7c3Jjc30gJHtpbmNzfSAke2NvbW1vbl9pbmNzfSAke2lt cGxfaW5jc30gJHtjb21tb25faW1wbF9pbmNzfSAke3Z0a19pbmNzfSkKLSAKLS10YXJnZXRfaW5j bHVkZV9kaXJlY3RvcmllcygiJHtMSUJfTkFNRX0iIFNZU1RFTSBQVUJMSUMgJHtWVEtfSU5DTFVE RV9ESVJTfSkKLS0KLSAjIGFwcGxlIHdvcmthcm91bmQgKGNvbnRpbnVlZCkKLSBpZihBUFBMRSkK LSAgIHRhcmdldF9saW5rX2xpYnJhcmllcygiJHtMSUJfTkFNRX0iICItZnJhbWV3b3JrIENvY29h IikKLSBlbmRpZigpCi0gCi0tdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIgcGNs X2NvbW1vbiBwY2xfaW8gcGNsX2tkdHJlZSAke1ZUS19MSUJSQVJJRVN9ICR7T1BFTkdMX0xJQlJB UklFU30pCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIgcGNsX2NvbW1vbiBw Y2xfaW8gcGNsX2tkdHJlZSAke09QRU5HTF9MSUJSQVJJRVN9KQotKwotK2lmKCR7VlRLX1ZFUlNJ T059IFZFUlNJT05fTEVTUyA5LjApCi0rICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcygiJHtM SUJfTkFNRX0iIFNZU1RFTSBQVUJMSUMgJHtWVEtfSU5DTFVERV9ESVJTfSkKLSsgIHRhcmdldF9s aW5rX2xpYnJhcmllcygiJHtMSUJfTkFNRX0iICR7VlRLX0xJQlJBUklFU30pCi0rZWxzZSgpCi0r ICAjU29tZSBsaWJzIGFyZSByZWZlcmVuY2VkIHRocm91Z2ggZGVwZW5kaW5nIG9uIElPCi0rICB0 YXJnZXRfbGlua19saWJyYXJpZXMoIiR7TElCX05BTUV9IgotKyAgICAgICAgICAgICAgICAgICAg ICAgIFZUSzo6Q2hhcnRzQ29yZQotKyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6Q29tbW9u Q29sb3IKLSsgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OkNvbW1vbkRhdGFNb2RlbAotKyAg ICAgICAgICAgICAgICAgICAgICAgIFZUSzo6RmlsdGVyc0V4dHJhY3Rpb24KLSsgICAgICAgICAg ICAgICAgICAgICAgICBWVEs6OkZpbHRlcnNHZW9tZXRyeQotKyAgICAgICAgICAgICAgICAgICAg ICAgIFZUSzo6RmlsdGVyc0dlbmVyYWwKLSsgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OkZp bHRlcnNNb2RlbGluZwotKyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6RmlsdGVyc1NvdXJj ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OklPSW1hZ2UKLSsgICAgICAgICAgICAg ICAgICAgICAgICBWVEs6OklPUExZCi0rICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpJbWFn aW5nU291cmNlcwotKyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6SW50ZXJhY3Rpb25JbWFn ZQotKyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6SW50ZXJhY3Rpb25TdHlsZQotKyAgICAg ICAgICAgICAgICAgICAgICAgIFZUSzo6UmVuZGVyaW5nQW5ub3RhdGlvbgotKyAgICAgICAgICAg ICAgICAgICAgICAgIFZUSzo6UmVuZGVyaW5nQ29udGV4dDJECi0rICAgICAgICAgICAgICAgICAg ICAgICAgVlRLOjpSZW5kZXJpbmdGcmVlVHlwZQotKyAgICAgICAgICAgICAgICAgICAgICAgIFZU Szo6UmVuZGVyaW5nTE9ECi0rICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpSZW5kZXJpbmdP cGVuR0wyCi0rICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpWaWV3c0NvbnRleHQyRCkKLSsg ICAgICAgICAgICAgICAgICAgICAgICAKLSsgIGlmKCI7JHtWVEtfQVZBSUxBQkxFX0NPTVBPTkVO VFN9OyIgTUFUQ0hFUyAiO1JlbmRlcmluZ0NvbnRleHRPcGVuR0wyOyIpCi0rICAgIHRhcmdldF9s aW5rX2xpYnJhcmllcygiJHtMSUJfTkFNRX0iIFZUSzo6UmVuZGVyaW5nQ29udGV4dE9wZW5HTDIp Ci0rICBlbmRpZigpCi0rZW5kaWYoKQotIAotIHNldChFWFRfREVQUyAiIikKLSBpZihXSVRIX09Q RU5OSSkKLUBAIC0xNjIsNiArMjEwLDcgQEAgZW5kaWYoKQotIGlmKFdJVEhfUlNTREspCi0gICBs aXN0KEFQUEVORCBFWFRfREVQUyByc3NkaykKLSBlbmRpZigpCi0rCi0gUENMX01BS0VfUEtHQ09O RklHKCR7TElCX05BTUV9IENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBERVNDICR7U1VCU1lTX0RF U0N9IFBDTF9ERVBTICR7U1VCU1lTX0RFUFN9IEVYVF9ERVBTICR7RVhUX0RFUFN9KQotIAotICMg SW5zdGFsbCBpbmNsdWRlIGZpbGVzCi1AQCAtMTcxLDYgKzIyMCwxMyBAQCBQQ0xfQUREX0lOQ0xV REVTKCIke1NVQlNZU19OQU1FfSIgIiR7U1VCCi0gUENMX0FERF9JTkNMVURFUygiJHtTVUJTWVNf TkFNRX0iICIke1NVQlNZU19OQU1FfS9jb21tb24vaW1wbCIgJHtjb21tb25faW1wbF9pbmNzfSkK LSBQQ0xfQUREX0lOQ0xVREVTKCIke1NVQlNZU19OQU1FfSIgIiR7U1VCU1lTX05BTUV9L3Z0ayIg JHt2dGtfaW5jc30pCi0gCi0rI1RPRE86IFVwZGF0ZSB3aGVuIENNQUtFIDMuMTAgaXMgYXZhaWxh YmxlCi0raWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1MgOS4wKSkKLSsgIHZ0a19t b2R1bGVfYXV0b2luaXQoVEFSR0VUUyAiJHtMSUJfTkFNRX0iIAotKyAgICAgICAgICAgICAgICAg ICAgICBNT0RVTEVTIFZUSzo6UmVuZGVyaW5nT3BlbkdMMgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZUSzo6UmVuZGVyaW5nRnJlZVR5cGUpCi0rZW5kaWYoKQotKwotIGlmKEJVSUxE X1RFU1RTKQotICAgYWRkX3N1YmRpcmVjdG9yeSh0ZXN0KQotIGVuZGlmKCkKLWRpZmYgLXVwIC4v dmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9hY3Rvcl9tYXAu aC40MjYyIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9h Y3Rvcl9tYXAuaAotLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9u L2NvbW1vbi9hY3Rvcl9tYXAuaC40MjYyCTIwMjEtMDItMjEgMjE6MzI6NTguMzIxMTc2NzM0IC0w NTAwCi0rKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vY29tbW9u L2FjdG9yX21hcC5oCTIwMjEtMDItMjEgMjE6MzY6MTIuNDQxMDE2NzA4IC0wNTAwCi1AQCAtNDMs NiArNDMsNyBAQAotIAotICNpbmNsdWRlIDx2dGtMT0RBY3Rvci5oPgotICNpbmNsdWRlIDx2dGtT bWFydFBvaW50ZXIuaD4KLSsjaW5jbHVkZSA8dnRrSWRUeXBlQXJyYXkuaD4KLSAKLSAjaW5jbHVk ZSA8bWFwPgotICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgotZGlmZiAtdXAgLi92aXN1YWxpemF0 aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vY29tbW9uL3Jlbl93aW5faW50ZXJhY3RfbWFw LmguNDI2MiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9jb21tb24v cmVuX3dpbl9pbnRlcmFjdF9tYXAuaAotLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92 aXN1YWxpemF0aW9uL2NvbW1vbi9yZW5fd2luX2ludGVyYWN0X21hcC5oLjQyNjIJMjAyMC0wOC0x NCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9w Y2wvdmlzdWFsaXphdGlvbi9jb21tb24vcmVuX3dpbl9pbnRlcmFjdF9tYXAuaAkyMDIxLTAyLTIx IDIxOjMyOjU4LjMyMTE3NjczNCAtMDUwMAotQEAgLTQxLDggKzQxLDkgQEAKLSAjaW5jbHVkZSA8 bWFwPgotICNpbmNsdWRlIDxzdHJpbmc+Ci0gCi0rI2luY2x1ZGUgPHZ0a1hZUGxvdEFjdG9yLmg+ Ci0rCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIHZ0a1NtYXJ0UG9pbnRlcjsKLS1jbGFz cyB2dGtYWVBsb3RBY3RvcjsKLSBjbGFzcyB2dGtSZW5kZXJlcjsKLSBjbGFzcyB2dGtSZW5kZXJX aW5kb3c7Ci0gY2xhc3MgdnRrUmVuZGVyV2luZG93SW50ZXJhY3RvcjsKLWRpZmYgLXVwIC4vdmlz dWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltcGwvcGNsX3Zpc3VhbGl6ZXIu aHBwLjQyNjIgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1wbC9w Y2xfdmlzdWFsaXplci5ocHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFs aXphdGlvbi9pbXBsL3BjbF92aXN1YWxpemVyLmhwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMu MDAwMDAwMDAwIC0wNDAwCi0rKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6 YXRpb24vaW1wbC9wY2xfdmlzdWFsaXplci5ocHAJMjAyMS0wMi0yMSAyMTozNTo0NS45MTU4ODkw MDggLTA1MDAKLUBAIC02Miw2ICs2Miw3IEBACi0gI2luY2x1ZGUgPHZ0a0xPREFjdG9yLmg+Ci0g I2luY2x1ZGUgPHZ0a0xpbmVTb3VyY2UuaD4KLSAKLSsjaW5jbHVkZSA8cGNsL2NvbW1vbi91dGls cy5oPiAvLyBwY2w6OnV0aWxzOjppZ25vcmUKLSAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24v Y29tbW9uL3NoYXBlcy5oPgotIAotIC8vIFN1cHBvcnQgZm9yIFZUSyA3LjEgdXB3YXJkcwotQEAg LTI3MCwxMSArMjcxLDQwIEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6Y29u dmUKLSAgICAgcG9pbnRzLT5TZXROdW1iZXJPZlBvaW50cyAobnJfcG9pbnRzKTsKLSAgIH0KLSAK LSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIC8vIFRPRE86IFJlbW92ZSB3aGVuIFZUSyA2 LDcsOCBpcyB1bnN1cHBvcnRlZAotKyAgcGNsOjp1dGlsczo6aWdub3JlKGluaXRjZWxscyk7Ci0r Ci0rICBhdXRvIG51bU9mQ2VsbHMgPSB2ZXJ0aWNlcy0+R2V0TnVtYmVyT2ZDZWxscygpOwotKwot KyAgLy8gSWYgd2UgaGF2ZSBsZXNzIGNlbGxzIHRoYW4gcG9pbnRzLCBhZGQgbmV3IGNlbGxzLgot KyAgaWYgKG51bU9mQ2VsbHMgPCBucl9wb2ludHMpCi0rICB7Ci0rICAgIGZvciAoaW50IGkgPSBu dW1PZkNlbGxzOyBpIDwgbnJfcG9pbnRzOyBpKyspCi0rICAgIHsKLSsgICAgICB2ZXJ0aWNlcy0+ SW5zZXJ0TmV4dENlbGwoMSk7Ci0rICAgICAgdmVydGljZXMtPkluc2VydENlbGxQb2ludChpKTsK LSsgICAgfQotKyAgfQotKyAgLy8gaWYgd2UgdG9vIG1hbnkgY2VsbHMgdGhhbiBwb2ludHMsIHNl dCBzaXplIChkb2Vzbid0IGZyZWUgZXhjZXNzaXZlIG1lbW9yeSkKLSsgIGVsc2UgaWYgKG51bU9m Q2VsbHMgPiBucl9wb2ludHMpCi0rICB7Ci0rICAgIHZlcnRpY2VzLT5SZXNpemVFeGFjdChucl9w b2ludHMsIG5yX3BvaW50cyk7Ci0rICB9Ci0rCi0rICBwb2x5ZGF0YS0+U2V0UG9pbnRzKHBvaW50 cyk7Ci0rICBwb2x5ZGF0YS0+U2V0VmVydHModmVydGljZXMpOwotKwotKyNlbHNlCi0gICB2dGtT bWFydFBvaW50ZXI8dnRrSWRUeXBlQXJyYXk+IGNlbGxzID0gdmVydGljZXMtPkdldERhdGEgKCk7 Ci0gICB1cGRhdGVDZWxscyAoY2VsbHMsIGluaXRjZWxscywgbnJfcG9pbnRzKTsKLSAKLSAgIC8v IFNldCB0aGUgY2VsbHMgYW5kIHRoZSB2ZXJ0aWNlcwotICAgdmVydGljZXMtPlNldENlbGxzIChu cl9wb2ludHMsIGNlbGxzKTsKLSsKLSsgIC8vIFNldCB0aGUgY2VsbCBjb3VudCBleHBsaWNpdGx5 IGFzIHRoZSBhcnJheSBkb2Vzbid0IGdldCBtb2RpZmllZCBlbm91Z2ggc28gdGhlIGFib3ZlIG1l dGhvZCB1cGRhdGVzIGFjY29yZGluZ2x5LiBTZWUgIzQwMDEgYW5kICMzNDUyCi0rICB2ZXJ0aWNl cy0+U2V0TnVtYmVyT2ZDZWxscyhucl9wb2ludHMpOwotKyNlbmRpZgotIH0KLSAKLSAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1AQCAtMzA0LDEwICszMzQsMzYgQEAgcGNs Ojp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjb252ZQotICAgaWYgKCF2ZXJ0aWNlcykK LSAgICAgdmVydGljZXMgPSB2dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5Pjo6TmV3ICgpOwot IAotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgLy8gVE9ETzogUmVtb3ZlIHdoZW4gVlRL IDYsNyw4IGlzIHVuc3VwcG9ydGVkCi0rICBwY2w6OnV0aWxzOjppZ25vcmUoaW5pdGNlbGxzKTsK LSsKLSsgIGF1dG8gbnVtT2ZDZWxscyA9IHZlcnRpY2VzLT5HZXROdW1iZXJPZkNlbGxzKCk7Ci0r Ci0rICAvLyBJZiB3ZSBoYXZlIGxlc3MgY2VsbHMgdGhhbiBwb2ludHMsIGFkZCBuZXcgY2VsbHMu Ci0rICBpZiAobnVtT2ZDZWxscyA8IG5yX3BvaW50cykKLSsgIHsKLSsgICAgZm9yIChpbnQgaSA9 IG51bU9mQ2VsbHM7IGkgPCBucl9wb2ludHM7IGkrKykKLSsgICAgewotKyAgICAgIHZlcnRpY2Vz LT5JbnNlcnROZXh0Q2VsbCgxKTsKLSsgICAgICB2ZXJ0aWNlcy0+SW5zZXJ0Q2VsbFBvaW50KGkp OwotKyAgICB9Ci0rICB9Ci0rICAvLyBpZiB3ZSB0b28gbWFueSBjZWxscyB0aGFuIHBvaW50cywg c2V0IHNpemUgKGRvZXNuJ3QgZnJlZSBleGNlc3NpdmUgbWVtb3J5KQotKyAgZWxzZSBpZiAobnVt T2ZDZWxscyA+IG5yX3BvaW50cykKLSsgIHsKLSsgICAgdmVydGljZXMtPlJlc2l6ZUV4YWN0KG5y X3BvaW50cywgbnJfcG9pbnRzKTsKLSsgIH0KLSsKLSsgIHBvbHlkYXRhLT5TZXRQb2ludHMocG9p bnRzKTsKLSsgIHBvbHlkYXRhLT5TZXRWZXJ0cyh2ZXJ0aWNlcyk7Ci0rCi0rI2Vsc2UKLSAgIHZ0 a1NtYXJ0UG9pbnRlcjx2dGtJZFR5cGVBcnJheT4gY2VsbHMgPSB2ZXJ0aWNlcy0+R2V0RGF0YSAo KTsKLSAgIHVwZGF0ZUNlbGxzIChjZWxscywgaW5pdGNlbGxzLCBucl9wb2ludHMpOwotICAgLy8g U2V0IHRoZSBjZWxscyBhbmQgdGhlIHZlcnRpY2VzCi0gICB2ZXJ0aWNlcy0+U2V0Q2VsbHMgKG5y X3BvaW50cywgY2VsbHMpOwotKyNlbmRpZgotIH0KLSAKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLwotQEAgLTEzMDQsNyArMTM2MCw2IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6 UENMVmlzdWFsaXplcjo6ZnJvbUgKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtJZFR5cGVBcnJheT4g aW5pdGNlbGxzOwotICAgLy8gQ29udmVydCB0aGUgUG9pbnRDbG91ZCB0byBWVEsgUG9seURhdGEK LSAgIGNvbnZlcnRQb2ludENsb3VkVG9WVEtQb2x5RGF0YTxQb2ludFQ+IChnZW9tZXRyeV9oYW5k bGVyLCBwb2x5ZGF0YSwgaW5pdGNlbGxzKTsKLS0gIC8vIHVzZSB0aGUgZ2l2ZW4gZ2VvbWV0cnkg aGFuZGxlcgotIAotICAgLy8gR2V0IHRoZSBjb2xvcnMgZnJvbSB0aGUgaGFuZGxlcgotICAgYm9v bCBoYXNfY29sb3JzID0gZmFsc2U7Ci1AQCAtMTcwMSwzMiArMTc1Niw5IEBAIHBjbDo6dmlzdWFs aXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8KLSAgIHsKLSAgICAgLy8gQ3JlYXRlIHBvbHlz IGZyb20gcG9seU1lc2gucG9seWdvbnMKLSAgICAgdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJh eT4gY2VsbF9hcnJheSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtDZWxsQXJyYXk+OjpOZXcgKCk7Ci0t ICAgIHZ0a0lkVHlwZSAqY2VsbCA9IGNlbGxfYXJyYXktPldyaXRlUG9pbnRlciAodmVydGljZXMu c2l6ZSAoKSwgdmVydGljZXMuc2l6ZSAoKSAqIChtYXhfc2l6ZV9vZl9wb2x5Z29uICsgMSkpOwot LSAgICBpbnQgaWR4ID0gMDsKLS0gICAgaWYgKCFsb29rdXAuZW1wdHkgKCkpCi0tICAgIHsKLS0g ICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgdmVydGljZXMuc2l6ZSAoKTsgKytpLCAr K2lkeCkKLS0gICAgICB7Ci0tICAgICAgICBzdGQ6OnNpemVfdCBuX3BvaW50cyA9IHZlcnRpY2Vz W2ldLnZlcnRpY2VzLnNpemUgKCk7Ci0tICAgICAgICAqY2VsbCsrID0gbl9wb2ludHM7Ci0tICAg ICAgICAvL2NlbGxfYXJyYXktPkluc2VydE5leHRDZWxsIChuX3BvaW50cyk7Ci0tICAgICAgICBm b3IgKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgbl9wb2ludHM7IGorKywgKytpZHgpCi0tICAgICAg ICAgICpjZWxsKysgPSBsb29rdXBbdmVydGljZXNbaV0udmVydGljZXNbal1dOwotLSAgICAgICAg ICAvL2NlbGxfYXJyYXktPkluc2VydENlbGxQb2ludCAobG9va3VwW3ZlcnRpY2VzW2ldLnZlcnRp Y2VzW2pdXSk7Ci0tICAgICAgfQotLSAgICB9Ci0tICAgIGVsc2UKLS0gICAgewotLSAgICAgIGZv ciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCB2ZXJ0aWNlcy5zaXplICgpOyArK2ksICsraWR4KQot LSAgICAgIHsKLS0gICAgICAgIHN0ZDo6c2l6ZV90IG5fcG9pbnRzID0gdmVydGljZXNbaV0udmVy dGljZXMuc2l6ZSAoKTsKLS0gICAgICAgICpjZWxsKysgPSBuX3BvaW50czsKLS0gICAgICAgIC8v Y2VsbF9hcnJheS0+SW5zZXJ0TmV4dENlbGwgKG5fcG9pbnRzKTsKLS0gICAgICAgIGZvciAoc3Rk OjpzaXplX3QgaiA9IDA7IGogPCBuX3BvaW50czsgaisrLCArK2lkeCkKLS0gICAgICAgICAgKmNl bGwrKyA9IHZlcnRpY2VzW2ldLnZlcnRpY2VzW2pdOwotLSAgICAgICAgICAvL2NlbGxfYXJyYXkt Pkluc2VydENlbGxQb2ludCAodmVydGljZXNbaV0udmVydGljZXNbal0pOwotLSAgICAgIH0KLS0g ICAgfQotKyAgICAKLSsgICAgY29uc3QgYXV0byBpZHggPSBkZXRhaWxzOjpmaWxsQ2VsbHMobG9v a3VwLHZlcnRpY2VzLGNlbGxfYXJyYXksIG1heF9zaXplX29mX3BvbHlnb24pOwotKwotICAgICB2 dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGE+IHBvbHlkYXRhOwotICAgICBhbGxvY1Z0a1BvbHlE YXRhIChwb2x5ZGF0YSk7Ci0gICAgIGNlbGxfYXJyYXktPkdldERhdGEgKCktPlNldE51bWJlck9m VmFsdWVzIChpZHgpOwotQEAgLTE4NzgsMjggKzE5MTAsOSBAQCBwY2w6OnZpc3VhbGl6YXRpb246 OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gCi0gICAvLyBVcGRhdGUgdGhlIGNlbGxzCi0gICBjZWxs cyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtDZWxsQXJyYXk+OjpOZXcgKCk7Ci0tICB2dGtJZFR5cGUg KmNlbGwgPSBjZWxscy0+V3JpdGVQb2ludGVyICh2ZXJ0cy5zaXplICgpLCB2ZXJ0cy5zaXplICgp ICogKG1heF9zaXplX29mX3BvbHlnb24gKyAxKSk7Ci0tICBpbnQgaWR4ID0gMDsKLS0gIGlmICgh bG9va3VwLmVtcHR5ICgpKQotLSAgewotLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwg dmVydHMuc2l6ZSAoKTsgKytpLCArK2lkeCkKLS0gICAgewotLSAgICAgIHN0ZDo6c2l6ZV90IG5f cG9pbnRzID0gdmVydHNbaV0udmVydGljZXMuc2l6ZSAoKTsKLS0gICAgICAqY2VsbCsrID0gbl9w b2ludHM7Ci0tICAgICAgZm9yIChzdGQ6OnNpemVfdCBqID0gMDsgaiA8IG5fcG9pbnRzOyBqKyss IGNlbGwrKywgKytpZHgpCi0tICAgICAgICAqY2VsbCA9IGxvb2t1cFt2ZXJ0c1tpXS52ZXJ0aWNl c1tqXV07Ci0tICAgIH0KLS0gIH0KLS0gIGVsc2UKLS0gIHsKLS0gICAgZm9yIChzdGQ6OnNpemVf dCBpID0gMDsgaSA8IHZlcnRzLnNpemUgKCk7ICsraSwgKytpZHgpCi0tICAgIHsKLS0gICAgICBz dGQ6OnNpemVfdCBuX3BvaW50cyA9IHZlcnRzW2ldLnZlcnRpY2VzLnNpemUgKCk7Ci0tICAgICAg KmNlbGwrKyA9IG5fcG9pbnRzOwotLSAgICAgIGZvciAoc3RkOjpzaXplX3QgaiA9IDA7IGogPCBu X3BvaW50czsgaisrLCBjZWxsKyssICsraWR4KQotLSAgICAgICAgKmNlbGwgPSB2ZXJ0c1tpXS52 ZXJ0aWNlc1tqXTsKLS0gICAgfQotLSAgfQotKyAgCi0rICBjb25zdCBhdXRvIGlkeCA9IGRldGFp bHM6OmZpbGxDZWxscyhsb29rdXAsIHZlcnRzLCBjZWxscywgbWF4X3NpemVfb2ZfcG9seWdvbik7 Ci0rCi0gICBjZWxscy0+R2V0RGF0YSAoKS0+U2V0TnVtYmVyT2ZWYWx1ZXMgKGlkeCk7Ci0gICBj ZWxscy0+U3F1ZWV6ZSAoKTsKLSAgIC8vIFNldCB0aGUgdGhlIHZlcnRpY2VzCi1kaWZmIC11cCAu L3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbnRlcmFjdG9yX3N0eWxl LmguNDI2MiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbnRlcmFj dG9yX3N0eWxlLmgKLS0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlv bi9pbnRlcmFjdG9yX3N0eWxlLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAt MDQwMAotKysrIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ludGVy YWN0b3Jfc3R5bGUuaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyMjE3NjczOCAtMDUwMAotQEAgLTUx LDYgKzUxLDggQEAKLSAjaW5jbHVkZSA8Ym9vc3Qvc2lnbmFsczIvc2lnbmFsLmhwcD4KLSAjZW5k aWYKLSAjaW5jbHVkZSA8dnRrSW50ZXJhY3RvclN0eWxlUnViYmVyQmFuZFBpY2suaD4KLSsjaW5j bHVkZSA8dnRrUmVuZGVyZXJDb2xsZWN0aW9uLmg+Ci0rI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRv dy5oPgotIAotIGNsYXNzIHZ0a1JlbmRlcmVyQ29sbGVjdGlvbjsKLSBjbGFzcyB2dGtMZWdlbmRT Y2FsZUFjdG9yOwotZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6 YXRpb24vcGNsX3Bsb3R0ZXIuaC40MjYyIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1 YWxpemF0aW9uL3BjbF9wbG90dGVyLmgKLS0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wv dmlzdWFsaXphdGlvbi9wY2xfcGxvdHRlci5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAw MDAwMDAgLTA0MDAKLSsrKyAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlv bi9wY2xfcGxvdHRlci5oCTIwMjEtMDItMjEgMjE6MzI6NTguMzIyMTc2NzM4IC0wNTAwCi1AQCAt NDksMTYgKzQ5LDE2IEBACi0gI2luY2x1ZGUgPHBjbC9wb2ludF9jbG91ZC5oPgotICNpbmNsdWRl IDxwY2wvY29tbW9uL2lvLmg+Ci0gCi0tY2xhc3MgdnRrUmVuZGVyV2luZG93OwotLWNsYXNzIHZ0 a1JlbmRlcldpbmRvd0ludGVyYWN0b3I7Ci0tY2xhc3MgdnRrQ29udGV4dFZpZXc7Ci0tY2xhc3Mg dnRrQ2hhcnRYWTsKLS1jbGFzcyB2dGtDb2xvclNlcmllczsKLS0KLSsjaW5jbHVkZSA8dnRrQ29u dGV4dFZpZXcuaD4KLSsjaW5jbHVkZSA8dnRrQ2hhcnRYWS5oPgotKyNpbmNsdWRlIDx2dGtDb2xv clNlcmllcy5oPgotICNpbmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KLSAjaW5jbHVkZSA8dnRr Q29tbWFuZC5oPgotICNpbmNsdWRlIDx2dGtDaGFydC5oPgotIAotK2NsYXNzIHZ0a1JlbmRlcldp bmRvdzsKLStjbGFzcyB2dGtSZW5kZXJXaW5kb3dJbnRlcmFjdG9yOwotKwotIG5hbWVzcGFjZSBw Y2wKLSB7Ci0gICBuYW1lc3BhY2UgdmlzdWFsaXphdGlvbgotZGlmZiAtdXAgLi92aXN1YWxpemF0 aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaC40MjYyIC4vdmlz dWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3BjbF92aXN1YWxpemVyLmgKLS0t LSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXpl ci5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL3Zpc3Vh bGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXplci5oCTIwMjEt MDItMjEgMjE6MzI6NTguMzIyMTc2NzM4IC0wNTAwCi1AQCAtNTMsMTQgKzUzLDE1IEBACi0gI2lu Y2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL2FyZWFfcGlja2luZ19ldmVudC5oPgotICNpbmNsdWRl IDxwY2wvdmlzdWFsaXphdGlvbi9pbnRlcmFjdG9yX3N0eWxlLmg+Ci0gCi0rI2luY2x1ZGUgPHZ0 a09yaWVudGF0aW9uTWFya2VyV2lkZ2V0Lmg+Ci0rI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRvd0lu dGVyYWN0b3IuaD4KLSsKLSAvLyBWVEsgaW5jbHVkZXMKLSBjbGFzcyB2dGtQb2x5RGF0YTsKLSBj bGFzcyB2dGtUZXh0QWN0b3I7Ci0gY2xhc3MgdnRrUmVuZGVyV2luZG93OwotLWNsYXNzIHZ0a09y aWVudGF0aW9uTWFya2VyV2lkZ2V0OwotIGNsYXNzIHZ0a0FwcGVuZFBvbHlEYXRhOwotIGNsYXNz IHZ0a1JlbmRlcldpbmRvdzsKLS1jbGFzcyB2dGtSZW5kZXJXaW5kb3dJbnRlcmFjdG9yOwotIGNs YXNzIHZ0a1RyYW5zZm9ybTsKLSBjbGFzcyB2dGtJbnRlcmFjdG9yU3R5bGU7Ci0gY2xhc3MgdnRr TE9EQWN0b3I7Ci1AQCAtNjgsNiArNjksNyBAQCBjbGFzcyB2dGtQcm9wOwotIGNsYXNzIHZ0a0Fj dG9yOwotIGNsYXNzIHZ0a0RhdGFTZXQ7Ci0gY2xhc3MgdnRrVW5zdHJ1Y3R1cmVkR3JpZDsKLStj bGFzcyB2dGtDZWxsQXJyYXk7Ci0gCi0gbmFtZXNwYWNlIHBjbAotIHsKLUBAIC03Niw2ICs3OCwx MSBAQCBuYW1lc3BhY2UgcGNsCi0gCi0gICBuYW1lc3BhY2UgdmlzdWFsaXphdGlvbgotICAgewot KyAgICBuYW1lc3BhY2UgZGV0YWlscwotKyAgICB7Ci0rICAgICAgdnRrSWRUeXBlIGZpbGxDZWxs cyhzdGQ6OnZlY3RvcjxpbnQ+JiBsb29rdXAsIGNvbnN0IHN0ZDo6dmVjdG9yPHBjbDo6VmVydGlj ZXM+JiB2ZXJ0aWNlcywgdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT4gY2VsbF9hcnJheSwg aW50IG1heF9zaXplX29mX3BvbHlnb24pOwotKyAgICB9Ci0rCi0gICAgIC8qKiBcYnJpZWYgUENM IFZpc3VhbGl6ZXIgbWFpbiBjbGFzcy4KLSAgICAgICAqIFxhdXRob3IgUmFkdSBCLiBSdXN1Ci0g ICAgICAgKiBcaW5ncm91cCB2aXN1YWxpemF0aW9uCi1AQCAtMjE3MCw3ICsyMTc3LDcgQEAgbmFt ZXNwYWNlIHBjbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dGtT bWFydFBvaW50ZXI8dnRrUG9seURhdGE+ICZwb2x5ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnRrU21hcnRQb2ludGVyPHZ0a0lkVHlwZUFycmF5PiAmaW5p dGNlbGxzKTsKLSAKLS0gICAgICAgIC8qKiBcYnJpZWYgQ29udmVydHMgYSBQQ0wgdGVtcGxhdGVk IFBvaW50Q2xvdWQgb2JqZWN0IHRvIGEgdnRrIHBvbHlkYXRhIG9iamVjdC4KLSsgICAgICAgIC8q KiBcYnJpZWYgQ29udmVydHMgYSBQQ0wgb2JqZWN0IHRvIGEgdnRrIHBvbHlkYXRhIG9iamVjdC4K LSAgICAgICAgICAgKiBccGFyYW1baW5dIGdlb21ldHJ5X2hhbmRsZXIgdGhlIGdlb21ldHJ5IGhh bmRsZXIgb2JqZWN0IHVzZWQgdG8gZXh0cmFjdCB0aGUgWFlaIGRhdGEKLSAgICAgICAgICAgKiBc cGFyYW1bb3V0XSBwb2x5ZGF0YSB0aGUgcmVzdWx0YW50IHBvbHlkYXRhIGNvbnRhaW5pbmcgdGhl IGNsb3VkCi0gICAgICAgICAgICogXHBhcmFtW291dF0gaW5pdGNlbGxzIGEgbGlzdCBvZiBjZWxs IGluZGljZXMgdXNlZCBmb3IgdGhlIGNvbnZlcnNpb24uIFRoaXMgY2FuIGJlIHNldCBvbmNlIGFu ZCB0aGVuIHBhc3NlZAotZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3Vh bGl6YXRpb24vcXZ0a19jb21wYXRpYmlsaXR5LmguNDI2MiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVk ZS9wY2wvdmlzdWFsaXphdGlvbi9xdnRrX2NvbXBhdGliaWxpdHkuaAotLS0tIC4vdmlzdWFsaXph dGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3F2dGtfY29tcGF0aWJpbGl0eS5oLjQyNjIJ MjAyMS0wMi0yMSAyMTozMjo1OC4zMTgxNzY3MjEgLTA1MDAKLSsrKyAuL3Zpc3VhbGl6YXRpb24v aW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9xdnRrX2NvbXBhdGliaWxpdHkuaAkyMDIxLTAyLTIx IDIxOjMyOjU4LjMyMjE3NjczOCAtMDUwMAotQEAgLTAsMCArMSw1MSBAQAotKy8qCi0rICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQotKyAqCi0rICogIFBvaW50IENsb3Vk IExpYnJhcnkgKFBDTCkgLSB3d3cucG9pbnRjbG91ZHMub3JnCi0rICogIENvcHlyaWdodCAoYykg MjAyMC0sIE9wZW4gUGVyY2VwdGlvbgotKyAqCi0rICogIEFsbCByaWdodHMgcmVzZXJ2ZWQKLSsg Ki8KLSsjaW5jbHVkZSA8cGNsL3BjbF9tYWNyb3MuaD4KLSsjaW5jbHVkZSA8cGNsL3BjbF9jb25m aWcuaD4KLSsKLSsjaWYgSEFWRV9RVlRLCi0rI2luY2x1ZGUgPHZ0a1ZlcnNpb24uaD4KLSsjaW5j bHVkZSA8dnRrUmVuZGVyV2luZG93Lmg+Ci0rCi0rI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAot KyAgI2luY2x1ZGUgPFFWVEtPcGVuR0xOYXRpdmVXaWRnZXQuaD4KLSsgIHVzaW5nIFBDTFFWVEtX aWRnZXQgPSBRVlRLT3BlbkdMTmF0aXZlV2lkZ2V0OwotKyNlbHNlIAotKyAgI2luY2x1ZGUgPFFW VEtXaWRnZXQuaD4KLSsgIHVzaW5nIFBDTFFWVEtXaWRnZXQgPSBRVlRLV2lkZ2V0OwotKyNlbmRp ZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSsKLSsKLStpbmxpbmUgYXV0byBQQ0xfRVhQT1JU UyBnZXRJbnRlcmFjdG9yQ29tcGF0KFBDTFFWVEtXaWRnZXQmIHF2dGspIHsKLSsjaWYgVlRLX01B Sk9SX1ZFUlNJT04gPiA4Ci0rICByZXR1cm4gcXZ0ay5pbnRlcmFjdG9yKCk7Ci0rI2Vsc2UKLSsg IHJldHVybiBxdnRrLkdldEludGVyYWN0b3IoKTsKLSsjZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJ T04gPiA4Ci0rfQotKwotK2lubGluZSBhdXRvIFBDTF9FWFBPUlRTIGdldFJlbmRlcldpbmRvd0Nv bXBhdChQQ0xRVlRLV2lkZ2V0JiBxdnRrKSB7Ci0rI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAot KyAgcmV0dXJuIHF2dGsucmVuZGVyV2luZG93KCk7Ci0rI2Vsc2UKLSsgIHJldHVybiBxdnRrLkdl dFJlbmRlcldpbmRvdygpOwotKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKLSt9Ci0r Ci0raW5saW5lIGF1dG8gUENMX0VYUE9SVFMgc2V0UmVuZGVyV2luZG93Q29tcGF0KFBDTFFWVEtX aWRnZXQmIHF2dGssIHZ0a1JlbmRlcldpbmRvdyYgd2luZG93KSB7Ci0rI2lmIFZUS19NQUpPUl9W RVJTSU9OID4gOAotKyAgcmV0dXJuIHF2dGsuc2V0UmVuZGVyV2luZG93KCZ3aW5kb3cpOwotKyNl bHNlCi0rICByZXR1cm4gcXZ0ay5TZXRSZW5kZXJXaW5kb3coJndpbmRvdyk7Ci0rI2VuZGlmIC8v IFZUS19NQUpPUl9WRVJTSU9OID4gOAotK30KLSsKLSsjZWxzZQotKyNlcnJvciBQQ0wgaXMgbm90 IGNvbXBpbGVkIHdpdGggUVZUSy4KLSsjZW5kaWYKLWRpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9p bmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3Z0ay5oLjQyNjIgLi92aXN1YWxpemF0aW9uL2luY2x1 ZGUvcGNsL3Zpc3VhbGl6YXRpb24vdnRrLmgKLS0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9w Y2wvdmlzdWFsaXphdGlvbi92dGsuaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAw IC0wNDAwCi0rKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vdnRr LmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjIxNzY3MzggLTA1MDAKLUBAIC0xLDE3MiArMSwxMCBA QAotIC8qCi0tICogU29mdHdhcmUgTGljZW5zZSBBZ3JlZW1lbnQgKEJTRCBMaWNlbnNlKQotKyAq IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKLSAgKgotICAqICBQb2ludCBD bG91ZCBMaWJyYXJ5IChQQ0wpIC0gd3d3LnBvaW50Y2xvdWRzLm9yZwotLSAqICBDb3B5cmlnaHQg KGMpIDIwMDktMjAxMiwgV2lsbG93IEdhcmFnZSwgSW5jLgotLSAqICBDb3B5cmlnaHQgKGMpIDIw MTItLCBPcGVuIFBlcmNlcHRpb24sIEluYy4KLS0gKgotLSAqICBBbGwgcmlnaHRzIHJlc2VydmVk LgotLSAqCi0tICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS0gKiAgYXJlIG1ldDoKLS0g KgotLSAqICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAotLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tICogICAqIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS0gKiAgICAgY29weXJpZ2h0 IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLS0gKiAg ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkCi0tICogICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS0gKiAgICogTmVpdGhl ciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlcihzKSBub3IgdGhlIG5hbWVzIG9mIGl0 cwotLSAqICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl IHByb2R1Y3RzIGRlcml2ZWQKLS0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLSAqCi0tICogIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS0g KiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QKLS0gKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKLS0gKiAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS0gKiAgQ09QWVJJR0hUIE9X TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAot LSAqICBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUyAoSU5DTFVESU5HLAotLSAqICBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0tICogIExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLS0gKiAgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS SUNUCi0tICogIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI RVJXSVNFKSBBUklTSU5HIElOCi0tICogIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotLSAqICBQT1NTSUJJTElUWSBPRiBTVUNI IERBTUFHRS4KLS0gKgotLSAqICRJZCQKLSsgKiAgQ29weXJpZ2h0IChjKSAyMDIwLSwgT3BlbiBQ ZXJjZXB0aW9uCi0gICoKLSsgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZAotICAqLwotIAotLSNwcmFn bWEgb25jZQotLQotLSNpZiBkZWZpbmVkIF9fR05VQ19fCi0tI3ByYWdtYSBHQ0Mgc3lzdGVtX2hl YWRlcgotLSNpZmRlZiBfX0RFUFJFQ0FURUQKLS0jdW5kZWYgX19ERVBSRUNBVEVECi0tI2RlZmlu ZSBfX0RFUFJFQ0FURURfRElTQUJMRURfXwotLSNlbmRpZgotLSNlbmRpZgotLQotLSNpbmNsdWRl IDx2dGtWZXJzaW9uLmg+Ci0tI2luY2x1ZGUgPHZ0a0FwcGVuZFBvbHlEYXRhLmg+Ci0tI2luY2x1 ZGUgPHZ0a0Fzc2VtYmx5UGF0aC5oPgotLSNpbmNsdWRlIDx2dGtBeGVzQWN0b3IuaD4KLS0jaW5j bHVkZSA8dnRrQWN0b3IuaD4KLS0jaW5jbHVkZSA8dnRrQm94UmVwcmVzZW50YXRpb24uaD4KLS0j aW5jbHVkZSA8dnRrQm94V2lkZ2V0Lmg+Ci0tI2luY2x1ZGUgPHZ0a0JveFdpZGdldDIuaD4KLS0j aW5jbHVkZSA8dnRrQ2VsbERhdGEuaD4KLS0jaW5jbHVkZSA8dnRrTWF0aC5oPgotLSNpbmNsdWRl IDx2dGtMb29wU3ViZGl2aXNpb25GaWx0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrTGluZVNvdXJjZS5o PgotLSNpbmNsdWRlIDx2dGtMZWdlbmRTY2FsZUFjdG9yLmg+Ci0tI2luY2x1ZGUgPHZ0a0xpZ2h0 S2l0Lmg+Ci0tI2luY2x1ZGUgPHZ0a1BsYXRvbmljU29saWRTb3VyY2UuaD4KLS0jaW5jbHVkZSA8 dnRrUHJvcFBpY2tlci5oPgotLSNpbmNsdWRlIDx2dGtHZW5lcmFsVHJhbnNmb3JtLmg+Ci0tI2lu Y2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgotLSNpbmNsdWRlIDx2dGtEYXRhU2V0Lmg+Ci0tI2lu Y2x1ZGUgPHZ0a0RhdGFTZXRTdXJmYWNlRmlsdGVyLmg+Ci0tI2luY2x1ZGUgPHZ0a0V4ZWN1dGl2 ZS5oPgotLSNpbmNsdWRlIDx2dGtQb2x5Z29uLmg+Ci0tI2luY2x1ZGUgPHZ0a1BvaW50UGlja2Vy Lmg+Ci0tI2luY2x1ZGUgPHZ0a1Vuc3RydWN0dXJlZEdyaWQuaD4KLS0jaW5jbHVkZSA8dnRrQ29u ZVNvdXJjZS5oPgotLSNpbmNsdWRlIDx2dGtEaXNrU291cmNlLmg+Ci0tI2luY2x1ZGUgPHZ0a1Bs YW5lU291cmNlLmg+Ci0tI2luY2x1ZGUgPHZ0a1NwaGVyZVNvdXJjZS5oPgotLSNpbmNsdWRlIDx2 dGtJZGVudGl0eVRyYW5zZm9ybS5oPgotLSNpbmNsdWRlIDx2dGtUcmFuc2Zvcm0uaD4KLS0jaW5j bHVkZSA8dnRrVHJhbnNmb3JtUG9seURhdGFGaWx0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrVHViZUZp bHRlci5oPgotLSNpbmNsdWRlIDx2dGtDdWJlU291cmNlLmg+Ci0tI2luY2x1ZGUgPHZ0a0F4ZXMu aD4KLS0jaW5jbHVkZSA8dnRrRmxvYXRBcnJheS5oPgotLSNpbmNsdWRlIDx2dGtQb2ludERhdGEu aD4KLS0jaW5jbHVkZSA8dnRrUG9seURhdGEuaD4KLS0jaW5jbHVkZSA8dnRrUG9seURhdGFSZWFk ZXIuaD4KLS0jaW5jbHVkZSA8dnRrUG9seURhdGFNYXBwZXIuaD4KLS0jaW5jbHVkZSA8dnRrRGF0 YVNldE1hcHBlci5oPgotLSNpbmNsdWRlIDx2dGtDZWxsQXJyYXkuaD4KLS0jaW5jbHVkZSA8dnRr Q29tbWFuZC5oPgotLSNpbmNsdWRlIDx2dGtDZWxsTG9jYXRvci5oPgotLSNpbmNsdWRlIDx2dGtQ TFlSZWFkZXIuaD4KLS0jaW5jbHVkZSA8dnRrVHJhbnNmb3JtRmlsdGVyLmg+Ci0tI2luY2x1ZGUg PHZ0a1BvbHlMaW5lLmg+Ci0tI2luY2x1ZGUgPHZ0a1ZlY3RvclRleHQuaD4KLS0jaW5jbHVkZSA8 dnRrRm9sbG93ZXIuaD4KLS0jaW5jbHVkZSA8dnRrQ2FsbGJhY2tDb21tYW5kLmg+Ci0tI2luY2x1 ZGUgPHZ0a0ludGVyYWN0b3JTdHlsZS5oPgotLSNpbmNsdWRlIDx2dGtJbmZvcm1hdGlvblZlY3Rv ci5oPgotLSNpbmNsdWRlIDx2dGtEYXRhQXJyYXkuaD4KLS0jaW5jbHVkZSA8dnRrVW5zaWduZWRD aGFyQXJyYXkuaD4KLS0jaW5jbHVkZSA8dnRrUG9pbnRzLmg+Ci0tI2luY2x1ZGUgPHZ0a1JlbmRl cmVyQ29sbGVjdGlvbi5oPgotLSNpbmNsdWRlIDx2dGtQTkdXcml0ZXIuaD4KLS0jaW5jbHVkZSA8 dnRrV2luZG93VG9JbWFnZUZpbHRlci5oPgotLSNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVU cmFja2JhbGxDYW1lcmEuaD4KLS0jaW5jbHVkZSA8dnRrUHJvcGVydHkuaD4KLS0jaW5jbHVkZSA8 dnRrQ2FtZXJhLmg+Ci0tI2luY2x1ZGUgPHZ0a09iamVjdEZhY3RvcnkuaD4KLS0jaW5jbHVkZSA8 dnRrU2NhbGFyQmFyQWN0b3IuaD4KLS0jaW5jbHVkZSA8dnRrU2NhbGFyc1RvQ29sb3JzLmg+Ci0t I2luY2x1ZGUgPHZ0a0NsaXBQb2x5RGF0YS5oPgotLSNpbmNsdWRlIDx2dGtQbGFuZXMuaD4KLS0j aW5jbHVkZSA8dnRrSW1hZ2VJbXBvcnQuaD4KLS0jaW5jbHVkZSA8dnRrSW1hZ2VWaWV3ZXIuaD4K LS0jaW5jbHVkZSA8dnRrSW50ZXJhY3RvclN0eWxlSW1hZ2UuaD4KLS0jaW5jbHVkZSA8dnRrSW1h Z2VGbGlwLmg+Ci0tI2luY2x1ZGUgPHZ0a1RJRkZXcml0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrQk1Q V3JpdGVyLmg+Ci0tI2luY2x1ZGUgPHZ0a0pQRUdXcml0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrSW1h Z2VWaWV3ZXIyLmg+Ci0tI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRvdy5oPgotLSNpbmNsdWRlIDx2 dGtYWVBsb3RBY3Rvci5oPgotLSNpbmNsdWRlIDx2dGtUZXh0UHJvcGVydHkuaD4KLS0jaW5jbHVk ZSA8dnRrUHJvcGVydHkyRC5oPgotLSNpbmNsdWRlIDx2dGtGaWVsZERhdGEuaD4KLS0jaW5jbHVk ZSA8dnRrRG91YmxlQXJyYXkuaD4KLS0jaW5jbHVkZSA8dnRrTE9EQWN0b3IuaD4KLS0jaW5jbHVk ZSA8dnRrUG9seURhdGFXcml0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrVGV4dEFjdG9yLmg+Ci0tI2lu Y2x1ZGUgPHZ0a0NsZWFuUG9seURhdGEuaD4KLS0jaW5jbHVkZSA8dnRrUmVuZGVyZXIuaD4KLS0j aW5jbHVkZSA8dnRrT2JqZWN0Lmg+Ci0tI2luY2x1ZGUgPHZ0a09yaWVudGF0aW9uTWFya2VyV2lk Z2V0Lmg+Ci0tI2luY2x1ZGUgPHZ0a0ltYWdlUmVzbGljZS5oPgotLSNpbmNsdWRlIDx2dGtJbWFn ZUNoYW5nZUluZm9ybWF0aW9uLmg+Ci0tI2luY2x1ZGUgPHZ0a0ltYWdlQ2FudmFzU291cmNlMkQu aD4KLS0jaW5jbHVkZSA8dnRrSW1hZ2VCbGVuZC5oPgotLSNpbmNsdWRlIDx2dGtJbWFnZVN0ZW5j aWxEYXRhLmg+Ci0tI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRvd0ludGVyYWN0b3IuaD4KLS0jaW5j bHVkZSA8dnRrQ2hhcnRYWS5oPgotLSNpbmNsdWRlIDx2dGtQbG90Lmg+Ci0tI2luY2x1ZGUgPHZ0 a1RhYmxlLmg+Ci0tI2luY2x1ZGUgPHZ0a0NvbnRleHRWaWV3Lmg+Ci0tI2luY2x1ZGUgPHZ0a0Nv bnRleHRTY2VuZS5oPgotLSNpbmNsdWRlIDx2dGtDb2xvclNlcmllcy5oPgotLSNpbmNsdWRlIDx2 dGtBeGlzLmg+Ci0tI2luY2x1ZGUgPHZ0a1NlbGVjdGlvbi5oPgotLQotLSNpbmNsdWRlIDx2dGtI YXJkd2FyZVNlbGVjdG9yLmg+Ci0tCi0tI2luY2x1ZGUgPHZ0a1RyaWFuZ2xlLmg+Ci0tI2luY2x1 ZGUgPHZ0a1dvcmxkUG9pbnRQaWNrZXIuaD4KLS0KLS0jaW5jbHVkZSA8dnRrSW50ZXJhY3RvclN0 eWxlUnViYmVyQmFuZFBpY2suaD4KLS0jaW5jbHVkZSA8dnRrSW50ZXJhY3RvclN0eWxlVHJhY2ti YWxsQWN0b3IuaD4KLS0jaW5jbHVkZSA8dnRrQXJlYVBpY2tlci5oPgotLSNpbmNsdWRlIDx2dGtF eHRyYWN0R2VvbWV0cnkuaD4KLS0jaW5jbHVkZSA8dnRrRXh0cmFjdFBvbHlEYXRhR2VvbWV0cnku aD4KLS0jaW5jbHVkZSA8dnRrVmVydGV4R2x5cGhGaWx0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrSWRG aWx0ZXIuaD4KLS0jaW5jbHVkZSA8dnRrSWRUeXBlQXJyYXkuaD4KLS0jaW5jbHVkZSA8dnRrSW1h Z2VSZWFkZXIyRmFjdG9yeS5oPgotLSNpbmNsdWRlIDx2dGtJbWFnZVJlYWRlcjIuaD4KLS0jaW5j bHVkZSA8dnRrSW1hZ2VEYXRhLmg+Ci0tCi0tI2lmIGRlZmluZWQgX19HTlVDX18gJiYgZGVmaW5l ZCBfX0RFUFJFQ0FURURfRElTQUJMRURfXwotLSNkZWZpbmUgX19ERVBSRUNBVEVECi0tI3VuZGVm IF9fREVQUkVDQVRFRF9ESVNBQkxFRF9fCi0tI2VuZGlmCi0rUENMX0RFUFJFQ0FURURfSEVBREVS KDEsIDE0LCAiVXNlIHJlcXVpcmVkIHZ0ayBpbmNsdWRlcyBpbnN0ZWFkLiIpCi1kaWZmIC11cCAu L3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi92dGsvcGNsX3Z0a19jb21w YXRpYmlsaXR5LmguNDI2MiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlv bi92dGsvcGNsX3Z0a19jb21wYXRpYmlsaXR5LmgKLS0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVk ZS9wY2wvdmlzdWFsaXphdGlvbi92dGsvcGNsX3Z0a19jb21wYXRpYmlsaXR5LmguNDI2MgkyMDIx LTAyLTIxIDIxOjMyOjU4LjMxOTE3NjcyNSAtMDUwMAotKysrIC4vdmlzdWFsaXphdGlvbi9pbmNs dWRlL3BjbC92aXN1YWxpemF0aW9uL3Z0ay9wY2xfdnRrX2NvbXBhdGliaWxpdHkuaAkyMDIxLTAy LTIxIDIxOjMyOjU4LjMxOTE3NjcyNSAtMDUwMAotQEAgLTAsMCArMSwxNyBAQAotKy8qCi0rICog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQotKyAqCi0rICogIFBvaW50IENs b3VkIExpYnJhcnkgKFBDTCkgLSB3d3cucG9pbnRjbG91ZHMub3JnCi0rICogIENvcHlyaWdodCAo YykgMjAyMC0sIE9wZW4gUGVyY2VwdGlvbgotKyAqCi0rICogIEFsbCByaWdodHMgcmVzZXJ2ZWQK LSsgKi8KLSsKLSsjaW5jbHVkZSA8dnRrQ2VsbEFycmF5Lmg+Ci0rCi0rI2lmZGVmIFZUS19DRUxM X0FSUkFZX1YyCi0rICB1c2luZyB2dGtDZWxsUHRzUHRyID0gdnRrSWRUeXBlIGNvbnN0KjsKLSsj ZWxzZQotKyAgdXNpbmcgdnRrQ2VsbFB0c1B0ciA9IHZ0a0lkVHlwZSo7Ci0rI2VuZGlmCi0rCi1k aWZmIC11cCAuL3Zpc3VhbGl6YXRpb24vc3JjL2Nsb3VkX3ZpZXdlci5jcHAuNDI2MiAuL3Zpc3Vh bGl6YXRpb24vc3JjL2Nsb3VkX3ZpZXdlci5jcHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL2Ns b3VkX3ZpZXdlci5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAot KysrIC4vdmlzdWFsaXphdGlvbi9zcmMvY2xvdWRfdmlld2VyLmNwcAkyMDIxLTAyLTIxIDIxOjMy OjU4LjMyMjE3NjczOCAtMDUwMAotQEAgLTQwLDYgKzQwLDkgQEAKLSAjaW5jbHVkZSA8cGNsL3Zp c3VhbGl6YXRpb24vYm9vc3QuaD4KLSAjaW5jbHVkZSA8cGNsL21lbW9yeS5oPgotIAotKyNpbmNs dWRlIDx2dGtPcmllbnRhdGlvbk1hcmtlcldpZGdldC5oPgotKyNpbmNsdWRlIDx2dGtSZW5kZXJX aW5kb3dJbnRlcmFjdG9yLmg+Ci0rCi0gI2luY2x1ZGUgPG11dGV4PgotICNpbmNsdWRlIDx0aHJl YWQ+Ci0gCi1kaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24vc3JjL2hpc3RvZ3JhbV92aXN1YWxpemVy LmNwcC40MjYyIC4vdmlzdWFsaXphdGlvbi9zcmMvaGlzdG9ncmFtX3Zpc3VhbGl6ZXIuY3BwCi0t LS0gLi92aXN1YWxpemF0aW9uL3NyYy9oaXN0b2dyYW1fdmlzdWFsaXplci5jcHAuNDI2MgkyMDIw LTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vdmlzdWFsaXphdGlvbi9zcmMv aGlzdG9ncmFtX3Zpc3VhbGl6ZXIuY3BwCTIwMjEtMDItMjEgMjE6MzI6NTguMzIyMTc2NzM4IC0w NTAwCi1AQCAtNDUsNyArNDUsNiBAQAotICNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9ib29z dC5oPgotIAotICNpbmNsdWRlIDx2dGtWZXJzaW9uLmg+Ci0tI2luY2x1ZGUgPHZ0a1hZUGxvdEFj dG9yLmg+Ci0gI2luY2x1ZGUgPHZ0a0RvdWJsZUFycmF5Lmg+Ci0gI2luY2x1ZGUgPHZ0a1RleHRQ cm9wZXJ0eS5oPgotICNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3cuaD4KLWRpZmYgLXVwIC4vdmlz dWFsaXphdGlvbi9zcmMvaW50ZXJhY3Rvcl9zdHlsZS5jcHAuNDI2MiAuL3Zpc3VhbGl6YXRpb24v c3JjL2ludGVyYWN0b3Jfc3R5bGUuY3BwCi0tLS0gLi92aXN1YWxpemF0aW9uL3NyYy9pbnRlcmFj dG9yX3N0eWxlLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0r KysgLi92aXN1YWxpemF0aW9uL3NyYy9pbnRlcmFjdG9yX3N0eWxlLmNwcAkyMDIxLTAyLTIxIDIx OjMyOjU4LjMyMzE3Njc0MiAtMDUwMAotQEAgLTM2LDYgKzM2LDcgQEAKLSAgKgotICAqLwotIAot KyNpbmNsdWRlIDxmc3RyZWFtPgotICNpbmNsdWRlIDxsaXN0PgotICNpbmNsdWRlIDxwY2wvY29t bW9uL2FuZ2xlcy5oPgotICNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9jb21tb24vaW8uaD4K LUBAIC0xMzcsNyArMTM4LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVySW50 ZXJhYwotIHsKLSAgIEZpbmRQb2tlZFJlbmRlcmVyIChJbnRlcmFjdG9yLT5HZXRFdmVudFBvc2l0 aW9uICgpWzBdLCBJbnRlcmFjdG9yLT5HZXRFdmVudFBvc2l0aW9uICgpWzFdKTsKLSAKLS0gIG9m c3RyZWFtIG9mc19jYW0gKGZpbGUuY19zdHIgKCkpOwotKyAgc3RkOjpvZnN0cmVhbSBvZnNfY2Ft IChmaWxlLmNfc3RyICgpKTsKLSAgIGlmICghb2ZzX2NhbS5pc19vcGVuICgpKQotICAgewotICAg ICByZXR1cm4gKGZhbHNlKTsKLWRpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3Vh bGl6ZXIuY3BwLjQyNjIgLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlzdWFsaXplci5jcHAKLS0t LSAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxpemVyLmNwcC40MjYyCTIwMjAtMDgtMTQg MDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlz dWFsaXplci5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjMxNzY3NDIgLTA1MDAKLUBAIC01MSw3 ICs1MSw3IEBACi0gI2luY2x1ZGUgPHZ0a1BvbHlEYXRhTm9ybWFscy5oPgotICNpbmNsdWRlIDx2 dGtNYXBwZXIuaD4KLSAjaW5jbHVkZSA8dnRrRGF0YVNldE1hcHBlci5oPgotLQotKyNpbmNsdWRl IDx2dGtDZWxsQXJyYXkuaD4KLSAjaW5jbHVkZSA8dnRrSGFyZHdhcmVTZWxlY3Rvci5oPgotICNp bmNsdWRlIDx2dGtTZWxlY3Rpb25Ob2RlLmg+Ci0gCi1AQCAtNjAsNiArNjAsNyBAQAotIAotICNp bmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9ib29zdC5oPgotICNpbmNsdWRlIDxwY2wvdmlzdWFs aXphdGlvbi92dGsvdnRrUmVuZGVyV2luZG93SW50ZXJhY3RvckZpeC5oPgotKyNpbmNsdWRlIDxw Y2wvdmlzdWFsaXphdGlvbi92dGsvcGNsX3Z0a19jb21wYXRpYmlsaXR5Lmg+Ci0gCi0gI2lmIFZU S19SRU5ERVJJTkdfQkFDS0VORF9PUEVOR0xfVkVSU0lPTiA8IDIKLSAjaW5jbHVkZSA8cGNsL3Zp c3VhbGl6YXRpb24vdnRrL3Z0a1ZlcnRleEJ1ZmZlck9iamVjdE1hcHBlci5oPgotQEAgLTgyLDcg KzgzLDYgQEAKLSAjaW5jbHVkZSA8dnRrQXhlc0FjdG9yLmg+Ci0gI2luY2x1ZGUgPHZ0a1JlbmRl cldpbmRvd0ludGVyYWN0b3IuaD4KLSAjaW5jbHVkZSA8dnRrQXJlYVBpY2tlci5oPgotLSNpbmNs dWRlIDx2dGtYWVBsb3RBY3Rvci5oPgotICNpbmNsdWRlIDx2dGtPcGVuR0xSZW5kZXJXaW5kb3cu aD4KLSAjaW5jbHVkZSA8dnRrSlBFR1JlYWRlci5oPgotICNpbmNsdWRlIDx2dGtCTVBSZWFkZXIu aD4KLUBAIC0xMjIsNiArMTIyLDYzIEBACi0gICAjdW5kZWYgZmFyCi0gI2VuZGlmCi0gCi0rdnRr SWRUeXBlCi0rcGNsOjp2aXN1YWxpemF0aW9uOjpkZXRhaWxzOjpmaWxsQ2VsbHMoc3RkOjp2ZWN0 b3I8aW50PiYgbG9va3VwLCBjb25zdCBzdGQ6OnZlY3RvcjxwY2w6OlZlcnRpY2VzPiYgdmVydGlj ZXMsIHZ0a1NtYXJ0UG9pbnRlcjx2dGtDZWxsQXJyYXk+IGNlbGxfYXJyYXksIGludCBtYXhfc2l6 ZV9vZl9wb2x5Z29uKQotK3sKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHBjbDo6dXRp bHM6Omlnbm9yZShtYXhfc2l6ZV9vZl9wb2x5Z29uKTsKLSsKLSsgIGlmICghbG9va3VwLmVtcHR5 KCkpCi0rICB7Ci0rICAgIGZvciAoY29uc3QgYXV0byYgdmVydGkgOiB2ZXJ0aWNlcykKLSsgICAg ewotKyAgICAgIHN0ZDo6c2l6ZV90IG5fcG9pbnRzID0gdmVydGkudmVydGljZXMuc2l6ZSgpOwot KyAgICAgIGNlbGxfYXJyYXktPkluc2VydE5leHRDZWxsKG5fcG9pbnRzKTsKLSsgICAgICBmb3Ig KGNvbnN0IGF1dG8mIHZlcnRqIDogdmVydGkudmVydGljZXMpCi0rICAgICAgICBjZWxsX2FycmF5 LT5JbnNlcnRDZWxsUG9pbnQobG9va3VwW3ZlcnRqXSk7Ci0rICAgIH0KLSsgIH0KLSsgIGVsc2UK LSsgIHsKLSsgICAgZm9yIChjb25zdCBhdXRvJiB2ZXJ0aSA6IHZlcnRpY2VzKQotKyAgICB7Ci0r ICAgICAgc3RkOjpzaXplX3Qgbl9wb2ludHMgPSB2ZXJ0aS52ZXJ0aWNlcy5zaXplKCk7Ci0rICAg ICAgY2VsbF9hcnJheS0+SW5zZXJ0TmV4dENlbGwobl9wb2ludHMpOwotKyAgICAgIGZvciAoY29u c3QgYXV0byYgdmVydGogOiB2ZXJ0aS52ZXJ0aWNlcykKLSsgICAgICAgIGNlbGxfYXJyYXktPklu c2VydENlbGxQb2ludCh2ZXJ0aik7Ci0rICAgIH0KLSsgIH0KLSsjZWxzZQotKyAgdnRrSWRUeXBl KiBjZWxsID0gY2VsbF9hcnJheS0+V3JpdGVQb2ludGVyKHZlcnRpY2VzLnNpemUoKSwgdmVydGlj ZXMuc2l6ZSgpICogKG1heF9zaXplX29mX3BvbHlnb24gKyAxKSk7Ci0rCi0rICBpZiAoIWxvb2t1 cC5lbXB0eSgpKQotKyAgewotKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZlcnRpIDogdmVydGljZXMp Ci0rICAgIHsKLSsgICAgICBzdGQ6OnNpemVfdCBuX3BvaW50cyA9IHZlcnRpLnZlcnRpY2VzLnNp emUoKTsKLSsgICAgICAqY2VsbCsrID0gbl9wb2ludHM7Ci0rICAgICAgZm9yIChjb25zdCBhdXRv JiB2ZXJ0aiA6IHZlcnRpLnZlcnRpY2VzKQotKyAgICAgICAgKmNlbGwrKyA9IGxvb2t1cFt2ZXJ0 al07Ci0rICAgIH0KLSsgIH0KLSsgIGVsc2UKLSsgIHsKLSsgICAgZm9yIChjb25zdCBhdXRvJiB2 ZXJ0aSA6IHZlcnRpY2VzKQotKyAgICB7Ci0rICAgICAgc3RkOjpzaXplX3Qgbl9wb2ludHMgPSB2 ZXJ0aS52ZXJ0aWNlcy5zaXplKCk7Ci0rICAgICAgKmNlbGwrKyA9IG5fcG9pbnRzOwotKyAgICAg IGZvciAoY29uc3QgYXV0byYgdmVydGogOiB2ZXJ0aS52ZXJ0aWNlcykKLSsgICAgICAgICpjZWxs KysgPSB2ZXJ0ajsKLSsgICAgfQotKyAgfQotKyNlbmRpZgotKwotKyAgY29uc3QgYXV0byBpZHgg PSB2ZXJ0aWNlcy5zaXplKCkgKyBzdGQ6OmFjY3VtdWxhdGUodmVydGljZXMuYmVnaW4oKSwgdmVy dGljZXMuZW5kKCksIHN0YXRpY19jYXN0PHZ0a0lkVHlwZT4oMCksCi0rICAgIFtdKGNvbnN0IGF1 dG8mIHN1bSwgY29uc3QgYXV0byYgdmVydGV4KSB7IHJldHVybiBzdW0gKyB2ZXJ0ZXgudmVydGlj ZXMuc2l6ZSgpOyB9KTsKLSsKLSsgIHJldHVybiBpZHg7Ci0rfQotKwotIC8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXpl cjo6UENMVmlzdWFsaXplciAoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IGJvb2wgY3Jl YXRlX2ludGVyYWN0b3IpCi0gICA6IHVwZGF0ZV9mcHNfICh2dGtTbWFydFBvaW50ZXI8RlBTQ2Fs bGJhY2s+OjpOZXcgKCkpCi1AQCAtNTIxLDEzICs1NzgsMTQgQEAgdm9pZAotIHBjbDo6dmlzdWFs aXphdGlvbjo6UENMVmlzdWFsaXplcjo6c3Bpbk9uY2UgKGludCB0aW1lLCBib29sIGZvcmNlX3Jl ZHJhdykKLSB7Ci0gICByZXNldFN0b3BwZWRGbGFnICgpOwotLSAgI2lmIChkZWZpbmVkIChfX0FQ UExFX18pKQotLSAgICBpZiAoIXdpbl8tPklzRHJhd2FibGUgKCkpCi0tICAgIHsKLS0gICAgICBj bG9zZSAoKTsKLS0gICAgICByZXR1cm47Ci0tICAgIH0KLS0gICNlbmRpZgotKwotKyNpZiBWVEtf TUFKT1JfVkVSU0lPTiA8IDkgJiYgZGVmaW5lZCAoX19BUFBMRV9fKQotKyAgaWYgKCF3aW5fLT5J c0RyYXdhYmxlICgpKQotKyAgewotKyAgICBjbG9zZSAoKTsKLSsgICAgcmV0dXJuOwotKyAgfQot KyNlbmRpZgotIAotICAgaWYgKCFpbnRlcmFjdG9yXykKLSAgICAgcmV0dXJuOwotQEAgLTEyNjIs NyArMTMyMCw2IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6Y3JlYXQKLSAg IC8vYWN0b3ItPlNldE51bWJlck9mQ2xvdWRQb2ludHMgKHN0ZDo6bWF4PHZ0a0lkVHlwZT4gKDEs IGRhdGEtPkdldE51bWJlck9mUG9pbnRzICgpIC8gMTApKTsKLSAgIGFjdG9yLT5HZXRQcm9wZXJ0 eSAoKS0+U2V0SW50ZXJwb2xhdGlvblRvRmxhdCAoKTsKLSB9Ci0tCi0gLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gdm9pZAotIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlz dWFsaXplcjo6Y29udmVydFBvaW50Q2xvdWRUb1ZUS1BvbHlEYXRhICgKLUBAIC0xMjkxLDEwICsx MzQ4LDM2IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6Y29udmUKLSAgIGlm ICghdmVydGljZXMpCi0gICAgIHZlcnRpY2VzID0gdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJh eT46Ok5ldyAoKTsKLSAKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIC8vIFRPRE86IFJl bW92ZSB3aGVuIFZUSyA2LDcsOCBpcyB1bnN1cHBvcnRlZAotKyAgcGNsOjp1dGlsczo6aWdub3Jl KGluaXRjZWxscyk7Ci0rCi0rICBhdXRvIG51bU9mQ2VsbHMgPSB2ZXJ0aWNlcy0+R2V0TnVtYmVy T2ZDZWxscygpOwotKwotKyAgLy8gSWYgd2UgaGF2ZSBsZXNzIGNlbGxzIHRoYW4gcG9pbnRzLCBh ZGQgbmV3IGNlbGxzLgotKyAgaWYgKG51bU9mQ2VsbHMgPCBucl9wb2ludHMpCi0rICB7Ci0rICAg IGZvciAoaW50IGkgPSBudW1PZkNlbGxzOyBpIDwgbnJfcG9pbnRzOyBpKyspCi0rICAgIHsKLSsg ICAgICB2ZXJ0aWNlcy0+SW5zZXJ0TmV4dENlbGwoMSk7Ci0rICAgICAgdmVydGljZXMtPkluc2Vy dENlbGxQb2ludChpKTsKLSsgICAgfQotKyAgfQotKyAgLy8gaWYgd2UgdG9vIG1hbnkgY2VsbHMg dGhhbiBwb2ludHMsIHNldCBzaXplIChkb2Vzbid0IGZyZWUgZXhjZXNzaXZlIG1lbW9yeSkKLSsg IGVsc2UgaWYgKG51bU9mQ2VsbHMgPiBucl9wb2ludHMpCi0rICB7Ci0rICAgIHZlcnRpY2VzLT5S ZXNpemVFeGFjdChucl9wb2ludHMsIG5yX3BvaW50cyk7Ci0rICB9Ci0rCi0rICBwb2x5ZGF0YS0+ U2V0UG9pbnRzKHBvaW50cyk7Ci0rICBwb2x5ZGF0YS0+U2V0VmVydHModmVydGljZXMpOwotKwot KyNlbHNlCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrSWRUeXBlQXJyYXk+IGNlbGxzID0gdmVydGlj ZXMtPkdldERhdGEgKCk7Ci0gICB1cGRhdGVDZWxscyAoY2VsbHMsIGluaXRjZWxscywgbnJfcG9p bnRzKTsKLSAgIC8vIFNldCB0aGUgY2VsbHMgYW5kIHRoZSB2ZXJ0aWNlcwotICAgdmVydGljZXMt PlNldENlbGxzIChucl9wb2ludHMsIGNlbGxzKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotQEAgLTMxNjAsMjggKzMyNDMsOSBAQCBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gCi0gICAvLyBVcGRhdGUgdGhl IGNlbGxzCi0gICBjZWxscyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtDZWxsQXJyYXk+OjpOZXcgKCk7 Ci0tICB2dGtJZFR5cGUgKmNlbGwgPSBjZWxscy0+V3JpdGVQb2ludGVyICh2ZXJ0cy5zaXplICgp LCB2ZXJ0cy5zaXplICgpICogKG1heF9zaXplX29mX3BvbHlnb24gKyAxKSk7Ci0tICBpbnQgaWR4 ID0gMDsKLS0gIGlmICghbG9va3VwLmVtcHR5ICgpKQotLSAgewotLSAgICBmb3IgKHN0ZDo6c2l6 ZV90IGkgPSAwOyBpIDwgdmVydHMuc2l6ZSAoKTsgKytpLCArK2lkeCkKLS0gICAgewotLSAgICAg IHN0ZDo6c2l6ZV90IG5fcG9pbnRzID0gdmVydHNbaV0udmVydGljZXMuc2l6ZSAoKTsKLS0gICAg ICAqY2VsbCsrID0gbl9wb2ludHM7Ci0tICAgICAgZm9yIChzdGQ6OnNpemVfdCBqID0gMDsgaiA8 IG5fcG9pbnRzOyBqKyssIGNlbGwrKywgKytpZHgpCi0tICAgICAgICAqY2VsbCA9IGxvb2t1cFt2 ZXJ0c1tpXS52ZXJ0aWNlc1tqXV07Ci0tICAgIH0KLS0gIH0KLS0gIGVsc2UKLS0gIHsKLS0gICAg Zm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHZlcnRzLnNpemUgKCk7ICsraSwgKytpZHgpCi0t ICAgIHsKLS0gICAgICBzdGQ6OnNpemVfdCBuX3BvaW50cyA9IHZlcnRzW2ldLnZlcnRpY2VzLnNp emUgKCk7Ci0tICAgICAgKmNlbGwrKyA9IG5fcG9pbnRzOwotLSAgICAgIGZvciAoc3RkOjpzaXpl X3QgaiA9IDA7IGogPCBuX3BvaW50czsgaisrLCBjZWxsKyssICsraWR4KQotLSAgICAgICAgKmNl bGwgPSB2ZXJ0c1tpXS52ZXJ0aWNlc1tqXTsKLS0gICAgfQotLSAgfQotKyAgCi0rICBjb25zdCBh dXRvIGlkeCA9IGRldGFpbHM6OmZpbGxDZWxscyhsb29rdXAsIHZlcnRzLCBjZWxscywgbWF4X3Np emVfb2ZfcG9seWdvbik7Ci0rCi0gICBjZWxscy0+R2V0RGF0YSAoKS0+U2V0TnVtYmVyT2ZWYWx1 ZXMgKGlkeCk7Ci0gICBjZWxscy0+U3F1ZWV6ZSAoKTsKLSAgIC8vIFNldCB0aGUgdGhlIHZlcnRp Y2VzCi1AQCAtMzU1Miw3ICszNjE2LDggQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxp emVyOjpyZW5kZQotIAotICAgLy9jZW50ZXIgb2JqZWN0Ci0gICBkb3VibGUgQ29NWzNdOwotLSAg dnRrSWRUeXBlIG5wdHNfY29tID0gMCwgKnB0SWRzX2NvbSA9IG51bGxwdHI7Ci0rICB2dGtJZFR5 cGUgbnB0c19jb20gPSAwOwotKyAgdnRrQ2VsbFB0c1B0ciBwdElkc19jb20gPSBudWxscHRyOwot ICAgdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT4gY2VsbHNfY29tID0gcG9seWRhdGEtPkdl dFBvbHlzICgpOwotIAotICAgZG91YmxlIGNlbnRlclszXSwgcDFfY29tWzNdLCBwMl9jb21bM10s IHAzX2NvbVszXSwgdG90YWxBcmVhX2NvbSA9IDA7Ci1AQCAtMzYxMSwxMCArMzY3NiwxMSBAQCBw Y2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnJlbmRlCi0gICAvLyAqIENvbXB1dGUg YXJlYSBvZiB0aGUgbWVzaAotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICB2 dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5PiBjZWxscyA9IG1hcHBlci0+R2V0SW5wdXQgKCkt PkdldFBvbHlzICgpOwotLSAgdnRrSWRUeXBlIG5wdHMgPSAwLCAqcHRJZHMgPSBudWxscHRyOwot KyAgdnRrSWRUeXBlIG5wdHMgPSAwOwotKyAgdnRrQ2VsbFB0c1B0ciBwdElkcyA9IG51bGxwdHI7 Ci0gCi0gICBkb3VibGUgcDFbM10sIHAyWzNdLCBwM1szXSwgdG90YWxBcmVhID0gMDsKLS0gIGZv ciAoY2VsbHMtPkluaXRUcmF2ZXJzYWwgKCk7IGNlbGxzLT5HZXROZXh0Q2VsbCAobnB0cywgcHRJ ZHMpOykKLSsgIGZvciAoY2VsbHMtPkluaXRUcmF2ZXJzYWwgKCk7IGNlbGxzLT5HZXROZXh0Q2Vs bChucHRzLCBwdElkcyk7KQotICAgewotICAgICBwb2x5ZGF0YS0+R2V0UG9pbnQgKHB0SWRzWzBd LCBwMSk7Ci0gICAgIHBvbHlkYXRhLT5HZXRQb2ludCAocHRJZHNbMV0sIHAyKTsKLUBAIC0zODMw LDcgKzM4OTYsOCBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnJlbmRlCi0g ICAgIHBvbHlkYXRhLT5CdWlsZENlbGxzICgpOwotIAotICAgICB2dGtTbWFydFBvaW50ZXI8dnRr Q2VsbEFycmF5PiBjZWxscyA9IHBvbHlkYXRhLT5HZXRQb2x5cyAoKTsKLS0gICAgdnRrSWRUeXBl IG5wdHMgPSAwLCAqcHRJZHMgPSBudWxscHRyOwotKyAgICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0r ICAgIHZ0a0NlbGxQdHNQdHIgcHRJZHMgPSBudWxscHRyOwotIAotICAgICBkb3VibGUgcDFbM10s IHAyWzNdLCBwM1szXSwgYXJlYSwgdG90YWxBcmVhID0gMDsKLSAgICAgZm9yIChjZWxscy0+SW5p dFRyYXZlcnNhbCAoKTsgY2VsbHMtPkdldE5leHRDZWxsIChucHRzLCBwdElkcyk7KQotQEAgLTQw NDAsOSArNDEwNyw5IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6ZnJvbUgK LSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YT4gcG9seWRhdGE7Ci0gICB2dGtTbWFy dFBvaW50ZXI8dnRrSWRUeXBlQXJyYXk+IGluaXRjZWxsczsKLSsKLSAgIC8vIENvbnZlcnQgdGhl IFBvaW50Q2xvdWQgdG8gVlRLIFBvbHlEYXRhCi0gICBjb252ZXJ0UG9pbnRDbG91ZFRvVlRLUG9s eURhdGEgKGdlb21ldHJ5X2hhbmRsZXIsIHBvbHlkYXRhLCBpbml0Y2VsbHMpOwotLSAgLy8gdXNl IHRoZSBnaXZlbiBnZW9tZXRyeSBoYW5kbGVyCi0gCi0gICAvLyBHZXQgdGhlIGNvbG9ycyBmcm9t IHRoZSBoYW5kbGVyCi0gICBib29sIGhhc19jb2xvcnMgPSBmYWxzZTsKLWRpZmYgLXVwIC4vdmlz dWFsaXphdGlvbi9zcmMvcG9pbnRfcGlja2luZ19ldmVudC5jcHAuNDI2MiAuL3Zpc3VhbGl6YXRp b24vc3JjL3BvaW50X3BpY2tpbmdfZXZlbnQuY3BwCi0tLS0gLi92aXN1YWxpemF0aW9uL3NyYy9w b2ludF9waWNraW5nX2V2ZW50LmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAw IC0wNDAwCi0rKysgLi92aXN1YWxpemF0aW9uL3NyYy9wb2ludF9waWNraW5nX2V2ZW50LmNwcAky MDIxLTAyLTIxIDIxOjMyOjU4LjMyMzE3Njc0MiAtMDUwMAotQEAgLTQ5LDcgKzQ5LDYgQEAKLSAj aW5jbHVkZSA8dnRrUG9pbnREYXRhLmg+Ci0gI2luY2x1ZGUgPHZ0a1ZlcnRleEdseXBoRmlsdGVy Lmg+Ci0gI2luY2x1ZGUgPHZ0a1BsYW5lcy5oPgotLSNpbmNsdWRlIDx2dGtYWVBsb3RBY3Rvci5o PgotICNpbmNsdWRlIDx2dGtSZW5kZXJlci5oPgotICNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3cu aD4KLSAKCmRpZmYgLS1naXQgYS9wY2wuc3BlYyBiL3BjbC5zcGVjCmluZGV4IDM3YWQxZjAuLmYx ZTU4ZmEgMTAwNjQ0Ci0tLSBhL3BjbC5zcGVjCisrKyBiL3BjbC5zcGVjCkBAIC00LDggKzQsOCBA QAogJWdsb2JhbCBhcGl2ZXJzaW9uIDEuMTEKIAogTmFtZTogICAgICAgICAgIHBjbAotVmVyc2lv bjogICAgICAgIDEuMTEuMQotUmVsZWFzZTogICAgICAgIDglez9kaXN0fQorVmVyc2lvbjogICAg ICAgIDEuMTIuMAorUmVsZWFzZTogICAgICAgIDElez9kaXN0fQogU3VtbWFyeTogICAgICAgIExp YnJhcnkgZm9yIHBvaW50IGNsb3VkIHByb2Nlc3NpbmcKIExpY2Vuc2U6ICAgICAgICBCU0QKIFVS TDogICAgICAgICAgICBodHRwOi8vcG9pbnRjbG91ZHMub3JnLwpAQCAtMTYsMjAgKzE2LDE3IEBA IFNvdXJjZTA6ICAgICAgICAle25hbWV9LSV7dmVyc2lvbn0tZmVkb3JhLnRhci54egogU291cmNl MTogICAgICAgIGNyZWF0ZV90YXJiYWxsX3BjbC5zaAogCiAjIE9ubHkgZW5hYmxlIHNzZTIsIGFu ZCBvbmx5IG9uIHg4Nl82NAotUGF0Y2gwOiAgICAgICAgICV7bmFtZX0tMS4xMS4wLXNzZTIucGF0 Y2gKK1BhdGNoMDogICAgICAgICAle25hbWV9LTEuMTIuMC1zc2UyLnBhdGNoCiAjIExvb2sgZm9y IGV4dGVybmFsIG1ldHNsaWIsIG5vdCB1cHN0cmVhbQotUGF0Y2gxOiAgICAgICAgICV7bmFtZX0t MS4xMS4wLW1ldHNsaWIucGF0Y2gKK1BhdGNoMTogICAgICAgICAle25hbWV9LTEuMTIuMC1tZXRz bGliLnBhdGNoCiAjIFBhdGNoIGZvciBQQ0xDb25maWcuY21ha2UgdG8gZmluZCBwY2wKLVBhdGNo MjogICAgICAgICAle25hbWV9LTEuMTEuMC1mZWRvcmEucGF0Y2gKK1BhdGNoMjogICAgICAgICAl e25hbWV9LTEuMTIuMC1mZWRvcmEucGF0Y2gKICMgRXhjbHVkZSB0aGUgImJ1aWxkIiBkaXJlY3Rv cnkgZnJvbSBkb3h5Z2VuIHByb2Nlc3NpbmcuCiBQYXRjaDM6ICAgICAgICAgJXtuYW1lfS0xLjEx LjAtZG94eWZpeC5wYXRjaAogIyBTcGxpdCB1cCBleHBsaWNpdCB0ZW1wbGF0ZSBpbnN0YW50aWF0 aW9ucyBzbyB0aGF0IGJ1aWxkZXJzIGRvbid0IHJ1biBvdXQgb2YgbWVtb3J5CiBQYXRjaDQ6ICAg ICAgICAgJXtuYW1lfS0xLjExLjAtb29tLnBhdGNoCiAjIFVzZSBhIGJ1aWx0LWluIHNwaGlueCBk b2N1bWVudGF0aW9uIHRoZW1lIGFuZCBkaXNhYmxlIGRveHlsaW5rIHBsdWdpbgogUGF0Y2g1OiAg ICAgICAgICV7bmFtZX0tMS4xMS4wLXNwaGlueC5wYXRjaAotIyBBcHBseSB1cHN0cmVhbSBwYXRj aCBmb3IgVlRLNiBjb21wYXRpYmlsaXR5Ci0jIGh0dHBzOi8vcGF0Y2gtZGlmZi5naXRodWJ1c2Vy Y29udGVudC5jb20vcmF3L1BvaW50Q2xvdWRMaWJyYXJ5L3BjbC9wdWxsLzQyNjIucGF0Y2gKLVBh dGNoNjogICAgICAgICAgNDI2Mi5wYXRjaAogCiAjIEZvciBwbGFpbiBidWlsZGluZwogQnVpbGRS ZXF1aXJlczogIGNtYWtlLCBnY2MtYysrLCBib29zdC1kZXZlbApAQCAtOTQsNyArOTEsNyBAQCBM aWJyYXJ5LgogJXBhdGNoMyAtcDAgLWIgLmRveHlmaXgKICVwYXRjaDQgLXAxIC1iIC5vb20KICVw YXRjaDUgLXAxIC1iIC5zcGhpbngKLSVwYXRjaDYgLXAxIC1iIC40MjYyCislcGF0Y2g2IC1wMSAt YiAuYm9vc3QxNzYKIAogIyBKdXN0IHRvIG1ha2UgaXQgb2J2aW91cyB3ZSdyZSBub3QgdXNpbmcg YW55IG9mIHRoZXNlCiBybSAtZnIgcmVjb2duaXRpb24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24v M3JkcGFydHkvbWV0c2xpYgpAQCAtMTkzLDYgKzE5MCw5IEBAIG12ICRSUE1fQlVJTERfUk9PVCV7 X2RhdGFkaXJ9LyV7bmFtZX0tKi9Nb2R1bGVzICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vY21h a2UvCiAlZG9jICV7X3ZwYXRoX2J1aWxkZGlyfS9kb2MvYWR2YW5jZWQvYWR2YW5jZWQKIAogJWNo YW5nZWxvZworKiBGcmkgQXVnIDEzIDIwMjEgQWRhbSBXaWxsaWFtc29uIDxhd2lsbGlhbUByZWRo YXQuY29tPiAtIDEuMTIuMC0xCistIFVwZGF0ZSB0byAxLjEyLjAgKHNlZSBpZiBpdCBidWlsZHMg d2l0aCBCb29zdCAxLjc2KQorCiAqIEZyaSBBdWcgMDYgMjAyMSBKb25hdGhhbiBXYWtlbHkgPGp3 YWtlbHlAcmVkaGF0LmNvbT4gLSAxLjExLjEtOAogLSBSZWJ1aWx0IGZvciBCb29zdCAxLjc2CiAK