From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 29065 invoked from network); 4 May 2023 22:39:10 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 May 2023 22:39:10 -0000 Content-Type: multipart/mixed; boundary="===============1775948484954688957==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_New_package=3A_electron24-24=2E2=2E0?= To: ml@inbox.vuxu.org From: Johnnynator Reply-to: ml@inbox.vuxu.org Message-ID: Date: Fri, 05 May 2023 00:39:10 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============1775948484954688957== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IEpvaG5ueW5hdG9yIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMgZWxlY3Ryb24yNApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1s aW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NTQKCk5ldyBwYWNrYWdlOiBlbGVjdHJvbjI0LTI0 LjIuMAo8IS0tIFVuY29tbWVudCByZWxldmFudCBzZWN0aW9ucyBhbmQgZGVsZXRlIG9wdGlvbnMg d2hpY2ggYXJlIG5vdCBhcHBsaWNhYmxlIC0tPg0KDQojIyMjIFRlc3RpbmcgdGhlIGNoYW5nZXMN Ci0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhpcyBQUjogKipOTyoqDQoNCnJlc29sdmVzICM0 Mzc0NCANCg0KW2NpIHNraXBdDQpbc2tpcCBjaV0NCgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6 Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzNzU0LnBhdGNoIGlz IGF0dGFjaGVk --===============1775948484954688957== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-electron24-43754.patch" RnJvbSBlMjk1ZTQ3ZjU2NTRmNDBkYmZmN2M5YzQ1Zjg0OTFmNmU5NmUxODI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5kZXY+CkRhdGU6IEZyaSwg NSBNYXkgMjAyMyAwMDozNzowNSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIE5ldyBwYWNrYWdlOiBl bGVjdHJvbjI0LTI0LjIuMAoKLS0tCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc2Fu ZGJveC5wYXRjaCAgfCAxMjUgKysrCiAuLi4vY2hyb21pdW0tbXVzbC10aWQtY2FjaGluZy5wYXRj aCAgICAgICAgICAgfCAgODYgKysKIC4uLi9jaHJvbWl1bS1uby1yZXMtbmluaXQtbmNsb3NlLnBh dGNoICAgICAgICB8ICAzMyArCiAuLi4vY2hyb21pdW0tcXVpY2hlLWFyZW5hLXNpemUucGF0Y2gg ICAgICAgICAgfCAgMTUgKwogLi4uRVJULXJvbGwtc3JjLXRoaXJkX3BhcnR5LWZmbXBlZy1tMTAy LnBhdGNoIHwgMzMzICsrKysrKysKIC4uLm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDIu cGF0Y2guYXJncyB8ICAgMSArCiAuLi5FUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0x MDYucGF0Y2ggfCAgNTUgKysKIC4uLm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDYucGF0 Y2guYXJncyB8ICAgMSArCiAuLi4vY2hyb21pdW0tYW5nbGUtd2F5bGFuZC1pbmNsdWRlLnBhdGNo ICAgICAgfCAgMzkgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2gg ICAgIHwgIDEwICsKIC4uLi9jaHJvbWl1bS1jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoICAg ICB8ICAzNiArCiAuLi5taXVtLWNocm9taXVtLWk2ODYtdmFhcGktZnBlcm1pc3NpdmUucGF0Y2gg fCAgMjMgKwogLi4uLWNocm9taXVtLXJldmVydC1kcm9wLW9mLXN5c3RlbS1qYXZhLnBhdGNoIHwg IDE1ICsKIC4uLi9jaHJvbWl1bS1jaHJvbWl1bS1zeXN0ZW0tbm9kZWpzLnBhdGNoICAgICB8ICAy MCArCiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jcm9zcy1idWlsZC5wYXRjaCAgfCAgNjUg KysKIC4uLi9jaHJvbWl1bS1jdXJzZWReVXNjb3BlZF9maWxlLnBhdGNoICAgICAgICB8ICAxOCAr CiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS1mYy1jYWNoZS12ZXJzaW9uLnBhdGNoICAgfCAgMTMgKwog Li4ueC1hYXJjaDY0LW11c2wtbWVtb3J5LXRhZ2dpbmctbWFjcm9zLnBhdGNoIHwgIDI5ICsKIC4u LnJvbWl1bS1maXgtYXJndW1lbnRfc3BlYy1pc25hbi1pc2luZi5wYXRjaCB8ICAxMSArCiAuLi4v Y2hyb21pdW0tZml4LWNvbnN0ZXhwci1uYXJyb3dpbmcucGF0Y2ggICAgfCAgMjEgKwogLi4uL3Bh dGNoZXMvY2hyb21pdW0tZml4LWRhd24tcGxhdGZvcm0ucGF0Y2ggIHwgIDYyICsrCiAuLi4vY2hy b21pdW0tZml4LWxpYmMtdmVyc2lvbi1pbmNsdWRlLnBhdGNoICAgfCAgMTUgKwogLi4uZml4LW1p c3NpbmctVEVNUF9GQUlMVVJFX1JFVFJZLW1hY3JvLnBhdGNoIHwgIDIxICsKIC4uLml1bS1maXgt bWlzc2luZy1jc3RkaW50LWluY2x1ZGUtbXVzbC5wYXRjaCB8ICAxMCArCiAuLi51bS1maXgtbXVz bC1taXNzaW5nLXVuaXN0ZF9oLWluY2x1ZGUucGF0Y2ggfCAgMTAgKwogLi4ubWl1bS1maXgtcGVy ZmV0dG8tR2V0VGhyZWFkTmFtZS1tdXNsLnBhdGNoIHwgIDIyICsKIC4uLml1bS1maXgtc3dpZnRz aGFkZXItbGx2bS1tdXNsLWNvbmZpZy5wYXRjaCB8ICAgMAogLi4uL2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0tbGliY19tYWxsb2MucGF0Y2ggIHwgIDM0ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLW11 c2wtbm8tZXhlY2luZm8ucGF0Y2ggICB8ICA5NCArKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tbXVz bC1uby1tYWxsaW5mby5wYXRjaCAgIHwgMTI1ICsrKwogLi4uL2Nocm9taXVtLW11c2wtcGFydGl0 aW9uLWF0Zm9yay5wYXRjaCAgICAgIHwgIDExICsKIC4uLi12OC1tb25vdG9uaWMtcHRocmVhZC1j b250X3RpbWVkd2FpdC5wYXRjaCB8ICAyNCArCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRj b250ZXh0LnBhdGNoICAgICAgfCAgMjcgKwogLi4uL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tb2xk LWNsYW5nLnBhdGNoICAgIHwgIDExICsKIC4uLi9jaHJvbWl1bS1yZWVuYWJsZS1saW51eC1pNjg2 LWJ1aWxkcy5wYXRjaCB8ICAxOSArCiAuLi4vY2hyb21pdW0tcmVtb3ZlLXN5cy1jZGVmcy1pbmNs dWRlcy5wYXRjaCAgfCAgMzkgKwogLi4uL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tcmlzY3YtYW5n bGUucGF0Y2ggIHwgIDI3ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLXJpc2N2LWNyYXNocGFkLnBh dGNoICAgICB8IDc3NyArKysrKysrKysrKysrKysrCiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1yaXNjdi1kYXYxZC5wYXRjaCAgfCAgNDMgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJv eC1tZW1iYXJyaWVyLnBhdGNoIHwgIDEwICsKIC4uLi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNu ZGlvLnBhdGNoICAgICAgICB8IDg3NyArKysrKysrKysrKysrKysrKysKIC4uLi1jb25zdHJhaW50 cy1vbi1WaXJ0dWFsQ3Vyc29yLWxheW91dC5wYXRjaCB8ICA0OCArCiAuLi4vZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1zeXN0eXBlcy5wYXRjaCAgICAgfCAgMTEgKwogLi4udW5kbGUtZmZtcGVnLWF2 X3N0cmVhbV9nZXRfZmlyc3RfZHRzLnBhdGNoIHwgIDEyICsKIC4uLi9jaHJvbWl1bS11bmJ1bmRs ZWQtY3Jvc3MtdG9vbGNoYWluLnBhdGNoICB8ICAxMiArCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS13 ZWJydGMtc2l6ZV90LnBhdGNoICAgICAgfCAgMTAgKwogLi4uYS1zY3JpcHQtdG8tbGlzdC1wYXRj aC10YXJnZXRzLnBhdGNoLnBhdGNoIHwgIDQyICsKIC4uLi9wYXRjaGVzL2VsZWN0cm9uLUJ1aWxk LWZpeGVzLnBhdGNoLnBhdGNoICB8ICAxMiArCiAuLi5sZWN0cm9uLWV4Y2x1ZGUtY29udGVudC10 ZXN0LXBhdGNoZXMucGF0Y2ggfCAgMTAgKwogLi4uL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZ2l0 LXN0dWZmLnBhdGNoICAgIHwgIDExICsKIC4uLi9wYXRjaGVzL2VsZWN0cm9uLW5vLW5lZWQtZm9y LWh1c2t5LnBhdGNoICB8ICAxMCArCiAuLi4vZWxlY3Ryb24tc3RkLXZlY3Rvci1ub24tY29uc3Qu cGF0Y2ggICAgICAgfCAxMDkgKysrCiAuLi4vc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVu YnNkLmNjICAgICAgfCAxNDggKysrCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdl cl9vcGVuYnNkLmggfCAgNjUgKysKIC4uLi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5j YyAgICAgICAgICB8IDIwMCArKysrCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQu aCAgICAgICAgICAgfCAgOTEgKysKIC4uLi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQu Y2MgICAgICAgICB8IDE4MyArKysrCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0 LmggICAgICAgICAgfCAgODYgKysKIC4uLmFfYXVkaW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51 eC5jYy5wYXRjaCB8ICA0MyArCiAuLi5zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJTEQu Z24ucGF0Y2ggfCAgMTIgKwogLi4uZHBhcnR5X2Nocm9taXVtX21lZGlhX2F1ZGlvX0JVSUxELmdu LnBhdGNoIHwgIDIzICsKIC4uLnR5X2Nocm9taXVtX21lZGlhX21lZGlhX19vcHRpb25zLmduaS5w YXRjaCB8ICAxMiArCiBzcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUgICAgICAgICAgICAgICAg ICAgfCA0MzMgKysrKysrKysrCiBzcmNwa2dzL2VsZWN0cm9uMjQvdXBkYXRlICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKwogNjQgZmlsZXMgY2hhbmdlZCwgNDc5MiBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL211c2wtcGF0Y2hlcy9j aHJvbWl1bS1tdXNsLXNhbmRib3gucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtdGlkLWNhY2hpbmcucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvbXVzbC1wYXRj aGVzL2Nocm9taXVtLW5vLXJlcy1uaW5pdC1uY2xvc2UucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXF1aWNoZS1h cmVuYS1zaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tUkVWRVJULXJvbGwtc3JjLXRoaXJkX3BhcnR5LWZmbXBlZy1t MTAyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0tUkVWRVJULXJvbGwtc3JjLXRoaXJkX3BhcnR5LWZmbXBlZy1tMTAyLnBh dGNoLmFyZ3MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDYucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9j aHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDYucGF0Y2guYXJn cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2No cm9taXVtLWFuZ2xlLXdheWxhbmQtaW5jbHVkZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWJyb3dzZXItc2l6ZV90LnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMv Y2hyb21pdW0tY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWNocm9taXVtLWk2ODYt dmFhcGktZnBlcm1pc3NpdmUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0 ZW0tamF2YS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2Nocm9taXVtLWNocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jcm9z cy1idWlsZC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2Nocm9taXVtLWN1cnNlZF5Vc2NvcGVkX2ZpbGUucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1mYy1jYWNo ZS12ZXJzaW9uLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LWFhcmNoNjQtbXVzbC1tZW1vcnktdGFnZ2luZy1tYWNy b3MucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1maXgtYXJndW1lbnRfc3BlYy1pc25hbi1pc2luZi5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWZp eC1jb25zdGV4cHItbmFycm93aW5nLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9l bGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LWRhd24tcGxhdGZvcm0ucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS1maXgtbGliYy12ZXJzaW9uLWluY2x1ZGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtbWlzc2luZy1URU1Q X0ZBSUxVUkVfUkVUUlktbWFjcm8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtbWlzc2luZy1jc3RkaW50LWluY2x1 ZGUtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2Nocm9taXVtLWZpeC1tdXNsLW1pc3NpbmctdW5pc3RkX2gtaW5jbHVkZS5wYXRj aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2No cm9taXVtLWZpeC1wZXJmZXR0by1HZXRUaHJlYWROYW1lLW11c2wucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtc3dp ZnRzaGFkZXItbGx2bS1tdXNsLWNvbmZpZy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNfbWFsbG9jLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tbXVzbC1uby1leGVjaW5mby5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxl Y3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1tdXNsLXBhcnRpdGlvbi1hdGZvcmsucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXY4LW1vbm90b25pYy1wdGhy ZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVj dHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZ2V0Y29udGV4dC5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW9s ZC1jbGFuZy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2Nocm9taXVtLXJlZW5hYmxlLWxpbnV4LWk2ODYtYnVpbGRzLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t cmVtb3ZlLXN5cy1jZGVmcy1pbmNsdWRlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJpc2N2LWFuZ2xlLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tcmlzY3YtY3Jhc2hwYWQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1yaXNjdi1kYXYxZC5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRi b3gtbWVtYmFycmllci5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24y NC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc3FsLXJlbGF4LWNvbnN0 cmFpbnRzLW9uLVZpcnR1YWxDdXJzb3ItbGF5b3V0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc3lzdHlwZXMucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS11bmJ1bmRsZS1mZm1wZWctYXZfc3RyZWFtX2dldF9maXJzdF9kdHMucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS11 bmJ1bmRsZWQtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2VsZWN0 cm9uLUFkZC1hLXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1C dWlsZC1maXhlcy5wYXRjaC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ry b24yNC9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWV4Y2x1ZGUtY29udGVudC10ZXN0LXBhdGNoZXMu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hl cy9lbGVjdHJvbi1naXQtc3R1ZmYucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1uby1uZWVkLWZvci1odXNreS5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2VsZWN0 cm9uLXN0ZC12ZWN0b3Itbm9uLWNvbnN0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5jYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9h dWRpb19tYW5hZ2VyX29wZW5ic2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ry b24yNC9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlv X291dHB1dC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9z bmRpby1maWxlcy9zbmRpb19vdXRwdXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxl Y3Ryb24yNC9maWxlcy9zbmRpby1wYXRjaGVzL21lZGlhX2F1ZGlvX2xpbnV4X2F1ZGlvX21hbmFn ZXJfbGludXguY2MucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQv ZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJTEQuZ24u cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8t cGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24ucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8tcGF0Y2hl cy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlvbnMuZ25pLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjI0L3VwZGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5kYm94LnBhdGNo IGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXNh bmRib3gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMmQ4 NjVhYTQyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc2FuZGJveC5wYXRjaApAQCAtMCwwICsxLDEyNSBAQAor U291cmNlOiBodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvYXBvcnRzL3RyZWUvY29tbXVuaXR5 L2Nocm9taXVtL211c2wtc2FuZGJveC5wYXRjaAorbXVzbCB1c2VzIGRpZmZlcmVudCBzeXNjYWxs cyBmcm9tIGdsaWJjIGZvciBzb21lIGZ1bmN0aW9ucywgc28gdGhlIHNhbmRib3ggaGFzCit0byBh Y2NvdW50IGZvciB0aGF0CistLQorZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VjY29tcC1i cGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjIC4vc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMu Y2MKK2luZGV4IGZmNWExYzAuLmRhNTZiOWIgMTAwNjQ0CistLS0gYS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYworKysr IC4vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19y ZXN0cmljdGlvbnMuY2MKK0BAIC0xMzksMjEgKzEzOSwxMSBAQCBuYW1lc3BhY2Ugc2FuZGJveCB7 CisgLy8gcHJlc2VudCAoYXMgaW4gbmV3ZXIgdmVyc2lvbnMgb2YgcG9zaXhfc3Bhd24pLgorIFJl c3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9yaygpIHsKKyAgIGNvbnN0 IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsKKy0KKy0gIC8vIFRPRE8obWRlbXBza3kpOiBF eHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdzICYgfm1hc2sxKSA9PSBtYXNrMi4KKy0gIGNvbnN0 IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNrID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05F X0ZJTEVTIHwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPTkVfU0lH SEFORCB8IENMT05FX1RIUkVBRCB8CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENMT05FX1NZU1ZTRU07CistICBjb25zdCB1aW50NjRfdCBrT2Jzb2xldGVBbmRyb2lkQ2xv bmVNYXNrID0ga0FuZHJvaWRDbG9uZU1hc2sgfCBDTE9ORV9ERVRBQ0hFRDsKKy0KKy0gIGNvbnN0 IHVpbnQ2NF90IGtHbGliY1B0aHJlYWRGbGFncyA9CistICAgICAgQ0xPTkVfVk0gfCBDTE9ORV9G UyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORCB8IENMT05FX1RIUkVBRCB8CistICAgICAg Q0xPTkVfU1lTVlNFTSB8IENMT05FX1NFVFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9O RV9DSElMRF9DTEVBUlRJRDsKKy0gIGNvbnN0IEJvb2xFeHByIGdsaWJjX3Rlc3QgPSBmbGFncyA9 PSBrR2xpYmNQdGhyZWFkRmxhZ3M7CistCistICBjb25zdCBCb29sRXhwciBhbmRyb2lkX3Rlc3Qg PQorLSAgICAgIEFueU9mKGZsYWdzID09IGtBbmRyb2lkQ2xvbmVNYXNrLCBmbGFncyA9PSBrT2Jz b2xldGVBbmRyb2lkQ2xvbmVNYXNrLAorLSAgICAgICAgICAgIGZsYWdzID09IGtHbGliY1B0aHJl YWRGbGFncyk7CisrICBjb25zdCBpbnQgcmVxdWlyZWQgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwg Q0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwKKysgICAgICAgICAgICAgICAgICAgICAgIENM T05FX1RIUkVBRCB8IENMT05FX1NZU1ZTRU07CisrICBjb25zdCBpbnQgc2FmZSA9IENMT05FX1NF VFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9DTEVBUlRJRCB8CisrICAg ICAgICAgICAgICAgICAgIENMT05FX0RFVEFDSEVEOworKyAgY29uc3QgQm9vbEV4cHIgdGhyZWFk X2Nsb25lX29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7CisgCisgICAvLyBUaGUgZm9sbG93 aW5nIHR3byBmbGFncyBhcmUgdGhlIHR3byBpbXBvcnRhbnQgZmxhZ3MgaW4gYW55IHZmb3JrLWVt dWxhdGluZworICAgLy8gY2xvbmUgY2FsbC4gRVBFUk0gYW55IGNsb25lIGNhbGwgdGhhdCBjb250 YWlucyBib3RoIG9mIHRoZW0uCitAQCAtMTYzLDcgKzE1Myw3IEBAIFJlc3VsdEV4cHIgUmVzdHJp Y3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9yaygpIHsKKyAgICAgICBBbnlPZigoZmxhZ3MgJiAo Q0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLAorICAgICAgICAgICAgIChmbGFncyAmIGtJ bXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3MpID09IGtJbXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3MpOwor IAorLSAgcmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90ZXN0IDogZ2xpYmNfdGVzdCwg QWxsb3coKSkKKysgIHJldHVybiBJZih0aHJlYWRfY2xvbmVfb2ssIEFsbG93KCkpCisgICAgICAg LkVsc2VJZihpc19mb3JrX29yX2Nsb25lX3Zmb3JrLCBFcnJvcihFUEVSTSkpCisgICAgICAgLkVs c2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKKyB9CitkaWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYyAuL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKK2luZGV4IGQ5ZDE4ODIuLjA1Njc1NTcgMTAw NjQ0CistLS0gYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRz LmNjCisrKysgLi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRz LmNjCitAQCAtMzkyLDYgKzM5Miw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nl c3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgI2lmIGRlZmluZWQoX19pMzg2X18pCisgICAg IGNhc2UgX19OUl93YWl0cGlkOgorICNlbmRpZgorKyAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRy ZXNzOgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9fTlJfY2xvbmU6ICAvLyBTaG91 bGQgYmUgcGFyYW1ldGVyLXJlc3RyaWN0ZWQuCisgICAgIGNhc2UgX19OUl9zZXRuczogIC8vIFBy aXZpbGVnZWQuCitAQCAtNDA0LDcgKzQwNSw2IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKyAgICAgY2FzZSBf X05SX3NldF90aHJlYWRfYXJlYToKKyAjZW5kaWYKKy0gICAgY2FzZSBfX05SX3NldF90aWRfYWRk cmVzczoKKyAgICAgY2FzZSBfX05SX3Vuc2hhcmU6CisgI2lmICFkZWZpbmVkKF9fbWlwc19fKSAm JiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICAgY2FzZSBfX05SX3Zmb3JrOgorQEAgLTUxNCw2 ICs1MTQsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nlc3Mo aW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9tbG9jazoKKyAgICAgY2FzZSBfX05SX211bmxv Y2s6CisgICAgIGNhc2UgX19OUl9tdW5tYXA6CisrICAgIGNhc2UgX19OUl9tcmVtYXA6CisrICAg IGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9f TlJfbWFkdmlzZToKKyAgICAgY2FzZSBfX05SX21pbmNvcmU6CitAQCAtNTMxLDcgKzUzMyw2IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEFkZHJlc3NTcGFjZUFjY2VzcyhpbnQgc3lzbm8p IHsKKyAgICAgY2FzZSBfX05SX21vZGlmeV9sZHQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9t cHJvdGVjdDoKKy0gICAgY2FzZSBfX05SX21yZW1hcDoKKyAgICAgY2FzZSBfX05SX21zeW5jOgor ICAgICBjYXNlIF9fTlJfbXVubG9ja2FsbDoKKyAgICAgY2FzZSBfX05SX3JlYWRhaGVhZDoKK2Rp ZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgg Li9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKK2luZGV4IDJi NzhhMGMuLmI2ZmVkYjUgMTAwNjQ0CistLS0gYS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJz L2xpbnV4X3N5c2NhbGxzLmgKKysrKyBiL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGlu dXhfc3lzY2FsbHMuaAorQEAgLTEwLDYgKzEwLDcgQEAKKyAjZGVmaW5lIFNBTkRCT1hfTElOVVhf U1lTVEVNX0hFQURFUlNfTElOVVhfU1lTQ0FMTFNfSF8KKyAKKyAjaW5jbHVkZSAiYnVpbGQvYnVp bGRfY29uZmlnLmgiCisrI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgCisgI2lmIGRlZmluZWQo X194ODZfNjRfXykKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZf NjRfbGludXhfc3lzY2FsbHMuaCIKKy0tLSBhL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5k ZXJlcl9wb2xpY3lfbGludXguY2MKKysrKyBiL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5k ZXJlcl9wb2xpY3lfbGludXguY2MKK0BAIC05NCw2ICs5NCw5IEBACisgICAgIGNhc2UgX19OUl9w d3JpdGU2NDoKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9tYXg6CisgICAgIGNh c2UgX19OUl9zY2hlZF9nZXRfcHJpb3JpdHlfbWluOgorKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0 cGFyYW06CisrICAgIGNhc2UgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6CisrICAgIGNhc2UgX19O Ul9zY2hlZF9zZXRzY2hlZHVsZXI6CisgICAgIGNhc2UgX19OUl9zeXNpbmZvOgorICAgICBjYXNl IF9fTlJfdGltZXM6CisgICAgIGNhc2UgX19OUl91bmFtZToKKy0tLSBhL3NhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKKysrKyBiL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKK0BAIC0yMjUsMTAgKzIy NSwxNSBAQAorICAgaWYgKHN5c25vID09IF9fTlJfZ2V0cHJpb3JpdHkgfHwgc3lzbm8gPT1fX05S X3NldHByaW9yaXR5KQorICAgICByZXR1cm4gUmVzdHJpY3RHZXRTZXRwcmlvcml0eShjdXJyZW50 X3BpZCk7CisgCisrICAvLyBYWFg6IGhhY2tzIGZvciBtdXNsIHNhbmRib3gsIGNhbGxzIG5lZWRl ZD8KKysgIGlmIChzeXNubyA9PSBfX05SX3NjaGVkX2dldHBhcmFtIHx8IHN5c25vID09IF9fTlJf c2NoZWRfZ2V0c2NoZWR1bGVyIHx8CisrICAgICAgc3lzbm8gPT0gX19OUl9zY2hlZF9zZXRzY2hl ZHVsZXIpIHsKKysgICAgcmV0dXJuIEFsbG93KCk7CisrICB9CisrCisgICAvLyBUaGUgc2NoZWR1 bGluZyBzeXNjYWxscyBhcmUgdXNlZCBpbiB0aHJlYWRpbmcgbGlicmFyaWVzIGFuZCBhbHNvIGhl YXZpbHkgaW4KKyAgIC8vIGFic2VpbC4gU2VlIGZvciBleGFtcGxlIGh0dHBzOi8vY3JidWcuY29t LzEzNzAzOTQuCistICBpZiAoc3lzbm8gPT0gX19OUl9zY2hlZF9nZXRhZmZpbml0eSB8fCBzeXNu byA9PSBfX05SX3NjaGVkX2dldHBhcmFtIHx8CistICAgICAgc3lzbm8gPT0gX19OUl9zY2hlZF9n ZXRzY2hlZHVsZXIgfHwgc3lzbm8gPT0gX19OUl9zY2hlZF9zZXRzY2hlZHVsZXIpIHsKKysgIGlm IChzeXNubyA9PSBfX05SX3NjaGVkX2dldGFmZmluaXR5KSB7CisgICAgIHJldHVybiBSZXN0cmlj dFNjaGVkVGFyZ2V0KGN1cnJlbnRfcGlkLCBzeXNubyk7CisgICB9CisgCmRpZmYgLS1naXQgYS9z cmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtdGlkLWNh Y2hpbmcucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9t aXVtLW11c2wtdGlkLWNhY2hpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi41MmJiZTc3NWFkMmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtdGlkLWNhY2hpbmcucGF0Y2gK QEAgLTAsMCArMSw4NiBAQAorU291cmNlOiBodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvYXBv cnRzL3BsYWluL2NvbW11bml0eS9jaHJvbWl1bS9tdXNsLXRpZC1jYWNoaW5nLnBhdGNoCit0aGUg c2FuZGJveCBjYWNoaW5nIG9mIHRocmVhZCBpZCdzIG9ubHkgd29ya3Mgd2l0aCBnbGliYworc2Vl OiBodHRwczovL2dpdGxhYi5hbHBpbmVsaW51eC5vcmcvYWxwaW5lL2Fwb3J0cy8tL21lcmdlX3Jl cXVlc3RzLzMyMzU2CitzZWU6IGh0dHBzOi8vZ2l0bGFiLmFscGluZWxpbnV4Lm9yZy9hbHBpbmUv YXBvcnRzLy0vaXNzdWVzLzEzNTc5CistLQorLS0tIGEvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9u YW1lc3BhY2Vfc2FuZGJveC5jYworKysrIGIvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9uYW1lc3Bh Y2Vfc2FuZGJveC5jYworQEAgLTIwOSw2ICsyMDksNzAgQEAKKyAgIHJldHVybiBiYXNlOjpMYXVu Y2hQcm9jZXNzKGFyZ3YsIGxhdW5jaF9vcHRpb25zX2NvcHkpOworIH0KKyAKKysjaWYgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19f KQorKyNkZWZpbmUgVExTX0FCT1ZFX1RQCisrI2VuZGlmCisrCisrc3RydWN0IG11c2xfcHRocmVh ZAorK3sKKysgIC8qIFBhcnQgMSAtLSB0aGVzZSBmaWVsZHMgbWF5IGJlIGV4dGVybmFsIG9yCisr ICAqIGludGVybmFsIChhY2Nlc3NlZCB2aWEgYXNtKSBBQkkuIERvIG5vdCBjaGFuZ2UuICovCisr ICBzdHJ1Y3QgcHRocmVhZCAqc2VsZjsKKysjaWZuZGVmIFRMU19BQk9WRV9UUAorKyAgdWludHB0 cl90ICpkdHY7CisrI2VuZGlmCisrICBzdHJ1Y3QgcHRocmVhZCAqcHJldiwgKm5leHQ7IC8qIG5v bi1BQkkgKi8KKysgIHVpbnRwdHJfdCBzeXNpbmZvOworKyNpZm5kZWYgVExTX0FCT1ZFX1RQCisr I2lmZGVmIENBTkFSWV9QQUQKKysgIHVpbnRwdHJfdCBjYW5hcnlfcGFkOworKyNlbmRpZgorKyAg dWludHB0cl90IGNhbmFyeTsKKysjZW5kaWYKKysKKysvKiBQYXJ0IDIgLS0gaW1wbGVtZW50YXRp b24gZGV0YWlscywgbm9uLUFCSS4gKi8KKysgIGludCB0aWQ7CisrICBpbnQgZXJybm9fdmFsOwor KyAgdm9sYXRpbGUgaW50IGRldGFjaF9zdGF0ZTsKKysgIHZvbGF0aWxlIGludCBjYW5jZWw7Cisr ICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyIGNhbmNlbGRpc2FibGUsIGNhbmNlbGFzeW5jOworKyAg dW5zaWduZWQgY2hhciB0c2RfdXNlZDoxOworKyAgdW5zaWduZWQgY2hhciBkbGVycm9yX2ZsYWc6 MTsKKysgIHVuc2lnbmVkIGNoYXIgKm1hcF9iYXNlOworKyAgc2l6ZV90IG1hcF9zaXplOworKyAg dm9pZCAqc3RhY2s7CisrICBzaXplX3Qgc3RhY2tfc2l6ZTsKKysgIHNpemVfdCBndWFyZF9zaXpl OworKyAgdm9pZCAqcmVzdWx0OworKyAgc3RydWN0IF9fcHRjYiAqY2FuY2VsYnVmOworKyAgdm9p ZCAqKnRzZDsKKysgIHN0cnVjdCB7CisrICAgIHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIGhlYWQ7 CisrICAgIGxvbmcgb2ZmOworKyAgICB2b2xhdGlsZSB2b2lkICp2b2xhdGlsZSBwZW5kaW5nOwor KyAgfSByb2J1c3RfbGlzdDsKKysgIGludCBoX2Vycm5vX3ZhbDsKKysgIHZvbGF0aWxlIGludCB0 aW1lcl9pZDsKKysgIGxvY2FsZV90IGxvY2FsZTsKKysgIHZvbGF0aWxlIGludCBraWxsbG9ja1sx XTsKKysgIGNoYXIgKmRsZXJyb3JfYnVmOworKyAgdm9pZCAqc3RkaW9fbG9ja3M7CisrCisrICAv KiBQYXJ0IDMgLS0gdGhlIHBvc2l0aW9ucyBvZiB0aGVzZSBmaWVsZHMgcmVsYXRpdmUgdG8KKysg ICogdGhlIGVuZCBvZiB0aGUgc3RydWN0dXJlIGlzIGV4dGVybmFsIGFuZCBpbnRlcm5hbCBBQkku ICovCisrI2lmZGVmIFRMU19BQk9WRV9UUAorKyAgdWludHB0cl90IGNhbmFyeTsKKysgIHVpbnRw dHJfdCAqZHR2OworKyNlbmRpZgorK307CisrCisrdm9pZCBNYXliZVVwZGF0ZU11c2xUaWRDYWNo ZSgpCisreworKyAgcGlkX3QgcmVhbF90aWQgPSBzeXNfZ2V0dGlkKCk7CisrICBwaWRfdCogY2Fj aGVkX3RpZF9sb2NhdGlvbiA9ICZyZWludGVycHJldF9jYXN0PHN0cnVjdCBtdXNsX3B0aHJlYWQq PihwdGhyZWFkX3NlbGYoKSktPnRpZDsKKysgICpjYWNoZWRfdGlkX2xvY2F0aW9uID0gcmVhbF90 aWQ7CisrfQorKworIC8vIHN0YXRpYworIHBpZF90IE5hbWVzcGFjZVNhbmRib3g6OkZvcmtJbk5l d1BpZE5hbWVzcGFjZShib29sIGRyb3BfY2FwYWJpbGl0aWVzX2luX2NoaWxkKSB7CisgICBjb25z dCBwaWRfdCBwaWQgPQorQEAgLTIyNiw2ICsyOTAsNyBAQAorICNpZiBkZWZpbmVkKExJQkNfR0xJ QkMpCisgICAgIE1heWJlVXBkYXRlR2xpYmNUaWRDYWNoZSgpOworICNlbmRpZgorKyAgICBNYXli ZVVwZGF0ZU11c2xUaWRDYWNoZSgpOworICAgICByZXR1cm4gMDsKKyAgIH0KKyAKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8tcmVz LW5pbml0LW5jbG9zZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9tdXNsLXBhdGNo ZXMvY2hyb21pdW0tbm8tcmVzLW5pbml0LW5jbG9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjY4ODQwMzllZmI4OAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8tcmVzLW5pbml0 LW5jbG9zZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitTb3VyY2U6IGh0dHBzOi8vZ2l0LmFscGlu ZWxpbnV4Lm9yZy9hcG9ydHMvcGxhaW4vY29tbXVuaXR5L2Nocm9taXVtL25vLXJlcy1uaW5pdC1u Y2xvc2UucGF0Y2gKK3NpbWlsYXIgdG8gZG5zLXJlc29sdmVyLnBhdGNoLCBtdXNsIGRvZXNuJ3Qg aGF2ZSByZXNfbmluaXQgYW5kIHNvIG9uCistLQorLS0tIGEvbmV0L2Rucy9wdWJsaWMvc2NvcGVk X3Jlc19zdGF0ZS5jYworKysrIGIvbmV0L2Rucy9wdWJsaWMvc2NvcGVkX3Jlc19zdGF0ZS5jYwor QEAgLTEzLDcgKzEzLDcgQEAKKyBuYW1lc3BhY2UgbmV0IHsKKyAKKyBTY29wZWRSZXNTdGF0ZTo6 U2NvcGVkUmVzU3RhdGUoKSB7CistI2lmIEJVSUxERkxBRyhJU19PUEVOQlNEKSB8fCBCVUlMREZM QUcoSVNfRlVDSFNJQSkKKysjaWYgQlVJTERGTEFHKElTX09QRU5CU0QpIHx8IEJVSUxERkxBRyhJ U19GVUNIU0lBKSB8fCBkZWZpbmVkKF9HTlVfU09VUkNFKQorICAgLy8gTm90ZTogcmVzX25pbml0 IGluIGdsaWJjIGFsd2F5cyByZXR1cm5zIDAgYW5kIHNldHMgUkVTX0lOSVQuCisgICAvLyByZXNf aW5pdCBiZWhhdmVzIHRoZSBzYW1lIHdheS4KKyAgIG1lbXNldCgmX3JlcywgMCwgc2l6ZW9mKF9y ZXMpKTsKK0BAIC0yNSwxNiArMjUsOCBAQAorIH0KKyAKKyBTY29wZWRSZXNTdGF0ZTo6flNjb3Bl ZFJlc1N0YXRlKCkgeworLSNpZiAhQlVJTERGTEFHKElTX09QRU5CU0QpICYmICFCVUlMREZMQUco SVNfRlVDSFNJQSkKKy0KKy0gIC8vIFByZWZlciByZXNfbmRlc3Ryb3kgd2hlcmUgYXZhaWxhYmxl LgorLSNpZiBCVUlMREZMQUcoSVNfQVBQTEUpIHx8IEJVSUxERkxBRyhJU19GUkVFQlNEKQorLSAg cmVzX25kZXN0cm95KCZyZXNfKTsKKy0jZWxzZQorLSAgcmVzX25jbG9zZSgmcmVzXyk7CistI2Vu ZGlmICAvLyBCVUlMREZMQUcoSVNfQVBQTEUpIHx8IEJVSUxERkxBRyhJU19GUkVFQlNEKQorLQor LSNlbmRpZiAgLy8gIUJVSUxERkxBRyhJU19PUEVOQlNEKSAmJiAhQlVJTERGTEFHKElTX0ZVQ0hT SUEpCisrICAvLyBtdXNsIHJlc19pbml0KCkgZG9lc24ndCBhY3R1YWxseSBkbyBhbnl0aGluZwor KyAgLy8gbm8gZGVzdHJ1Y3Rpb24gaXMgbmVjZXNzYXJ5IGFzIG5vIG1lbW9yeSBoYXMgYmVlbiBh bGxvY2F0ZWQKKyB9CisgCisgYm9vbCBTY29wZWRSZXNTdGF0ZTo6SXNWYWxpZCgpIGNvbnN0IHsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21p dW0tcXVpY2hlLWFyZW5hLXNpemUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLXF1aWNoZS1hcmVuYS1zaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGQxN2M0MWI1NmQ1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1xdWljaGUt YXJlbmEtc2l6ZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACitTb3VyY2U6IGh0dHBzOi8vZ2l0LmFs cGluZWxpbnV4Lm9yZy9hcG9ydHMvcGxhaW4vY29tbXVuaXR5L2Nocm9taXVtL3F1aWNoZS1hcmVu YS1zaXplLnBhdGNoCitiYWNrIGluIHRoZSBkYXkgd2hlbiBuZXRfdW5pdHRlc3RzIHdlcmUgcmFu LCB0aGUgYmxvY2sgYXJlbmEgc2l6ZSB3YXMgbm90IGJpZworZW5vdWdoIGZvciBzb21lIHJlYXNv bi4gc2hvdWxkIGxvb2sgYXQgdGhpcyBhZ2FpbgorLS0KKy0tLSBhL25ldC90aGlyZF9wYXJ0eS9x dWljaGUvc3JjL3F1aWNoZS9xdWljL2NvcmUvcXVpY19vbmVfYmxvY2tfYXJlbmEuaAorKysrIGIv bmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9zcmMvcXVpY2hlL3F1aWMvY29yZS9xdWljX29uZV9ibG9j a19hcmVuYS5oCitAQCAtNjksNyArNjksNyBAQAorIAorIC8vIFF1aWNDb25uZWN0aW9ucyBjdXJy ZW50bHkgdXNlIGFyb3VuZCAxS0Igb2YgcG9seW1vcnBoaWMgdHlwZXMgd2hpY2ggd291bGQKKyAv LyBvcmRpbmFyaWx5IGJlIG9uIHRoZSBoZWFwLiBJbnN0ZWFkLCBzdG9yZSB0aGVtIGlubGluZSBp biBhbiBhcmVuYS4KKy11c2luZyBRdWljQ29ubmVjdGlvbkFyZW5hID0gUXVpY09uZUJsb2NrQXJl bmE8MTI4MD47CisrdXNpbmcgUXVpY0Nvbm5lY3Rpb25BcmVuYSA9IFF1aWNPbmVCbG9ja0FyZW5h PDE1MDQ+OworIAorIH0gIC8vIG5hbWVzcGFjZSBxdWljCisgCmRpZmYgLS1naXQgYS9zcmNwa2dz L2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRf cGFydHktZmZtcGVnLW0xMDIucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDIucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNzM5YjQwYTI3MzMKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDIucGF0Y2gKQEAgLTAsMCAr MSwzMzMgQEAKK0Zyb20gNmU1NTRhMzA4OTMxNTA3OTNjMjYzOGUzNjg5Y2YyMDhmZmM4ZTM3NSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbGUgQ3VydGlzIDxkYWxlY3VydGlzQGNo cm9taXVtLm9yZz4KK0RhdGU6IFNhdCwgMiBBcHIgMjAyMiAwNToxMzo1MyArMDAwMAorU3ViamVj dDogW1BBVENIXSBSb2xsIHNyYy90aGlyZF9wYXJ0eS9mZm1wZWcvIDU3NGMzOWNjZS4uMzJiMmQx ZDUyNiAoMTEyNQorIGNvbW1pdHMpCisKK2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv bS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mZm1wZWcuZ2l0Lytsb2cvNTc0YzM5Y2NlMzIzLi4zMmIy ZDFkNTI2CisKK0NyZWF0ZWQgd2l0aDoKKyAgcm9sbC1kZXAgc3JjL3RoaXJkX3BhcnR5L2ZmbXBl ZworCitGaXhlZDogMTI5MzkxOAorQ3EtSW5jbHVkZS1Ucnlib3RzOiBsdWNpLmNocm9taXVtLnRy eTptYWNfY2hyb21pdW1fYXNhbl9yZWxfbmcsbGludXhfY2hyb21pdW1fYXNhbl9yZWxfbmcsbGlu dXhfY2hyb21pdW1fY2hyb21lb3NfYXNhbl9yZWxfbmcKK0NoYW5nZS1JZDogSTQxOTQ1ZDBmOTYz ZTNkMWY2NTk0MDA2N2JhYzIyZjYzYjY4ZTM3ZDIKK1Jldmlld2VkLW9uOiBodHRwczovL2Nocm9t aXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysvMzU2NTY0NworQXV0 by1TdWJtaXQ6IERhbGUgQ3VydGlzIDxkYWxlY3VydGlzQGNocm9taXVtLm9yZz4KK1Jldmlld2Vk LWJ5OiBEYW4gU2FuZGVycyA8c2FuZGVyc2RAY2hyb21pdW0ub3JnPgorQ29tbWl0LVF1ZXVlOiBE YWxlIEN1cnRpcyA8ZGFsZWN1cnRpc0BjaHJvbWl1bS5vcmc+CitDci1Db21taXQtUG9zaXRpb246 IHJlZnMvaGVhZHMvbWFpbkB7Izk4ODI1M30KKy0tLQorIC4uLi9jbGVhcl9rZXlfY2RtL2ZmbXBl Z19jZG1fYXVkaW9fZGVjb2Rlci5jYyB8IDI5ICsrKysrKysrKystLS0tLS0tLS0KKyBtZWRpYS9m Zm1wZWcvZmZtcGVnX2NvbW1vbi5jYyAgICAgICAgICAgICAgICAgfCAxMSArKystLS0tCisgbWVk aWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYyAgICAgICAgICAgIHwgIDkgKysrLS0tCisg bWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlcl91bml0dGVzdC5jYyAgIHwgIDYgKystLQor IC4uLi9maWx0ZXJzL2F1ZGlvX3ZpZGVvX21ldGFkYXRhX2V4dHJhY3Rvci5jYyB8IDExICsrKysr LS0KKyAuLi4vZmlsdGVycy9mZm1wZWdfYWFjX2JpdHN0cmVhbV9jb252ZXJ0ZXIuY2MgfCAgNyAr KystLQorIC4uLmZmbXBlZ19hYWNfYml0c3RyZWFtX2NvbnZlcnRlcl91bml0dGVzdC5jYyB8ICAy ICstCisgbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyAgICAgICAgIHwgMTMg KysrKystLS0tCisgOCBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL21lZGlhL2NkbS9saWJyYXJ5X2NkbS9jbGVhcl9rZXlfY2Rt L2ZmbXBlZ19jZG1fYXVkaW9fZGVjb2Rlci5jYyBiL21lZGlhL2NkbS9saWJyYXJ5X2NkbS9jbGVh cl9rZXlfY2RtL2ZmbXBlZ19jZG1fYXVkaW9fZGVjb2Rlci5jYworaW5kZXggZTRmYzNmNDYwZTIu LjliMWFkOWY3Njc1IDEwMDY0NAorLS0tIGEvbWVkaWEvY2RtL2xpYnJhcnlfY2RtL2NsZWFyX2tl eV9jZG0vZmZtcGVnX2NkbV9hdWRpb19kZWNvZGVyLmNjCisrKysgYi9tZWRpYS9jZG0vbGlicmFy eV9jZG0vY2xlYXJfa2V5X2NkbS9mZm1wZWdfY2RtX2F1ZGlvX2RlY29kZXIuY2MKK0BAIC03NCw3 ICs3NCw3IEBAIHZvaWQgQ2RtQXVkaW9EZWNvZGVyQ29uZmlnVG9BVkNvZGVjQ29udGV4dCgKKyAg ICAgICBjb2RlY19jb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9OT05FOworICAg fQorIAorLSAgY29kZWNfY29udGV4dC0+Y2hhbm5lbHMgPSBjb25maWcuY2hhbm5lbF9jb3VudDsK KysgIGNvZGVjX2NvbnRleHQtPmNoX2xheW91dC5uYl9jaGFubmVscyA9IGNvbmZpZy5jaGFubmVs X2NvdW50OworICAgY29kZWNfY29udGV4dC0+c2FtcGxlX3JhdGUgPSBjb25maWcuc2FtcGxlc19w ZXJfc2Vjb25kOworIAorICAgaWYgKGNvbmZpZy5leHRyYV9kYXRhKSB7CitAQCAtMTI0LDggKzEy NCw4IEBAIHZvaWQgQ29weVNhbXBsZXMoY2RtOjpBdWRpb0Zvcm1hdCBjZG1fZm9ybWF0LAorICAg ICBjYXNlIGNkbTo6a0F1ZGlvRm9ybWF0UGxhbmFyUzE2OgorICAgICBjYXNlIGNkbTo6a0F1ZGlv Rm9ybWF0UGxhbmFyRjMyOiB7CisgICAgICAgY29uc3QgaW50IGRlY29kZWRfc2l6ZV9wZXJfY2hh bm5lbCA9CistICAgICAgICAgIGRlY29kZWRfYXVkaW9fc2l6ZSAvIGF2X2ZyYW1lLmNoYW5uZWxz OworLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXZfZnJhbWUuY2hhbm5lbHM7ICsraSkgewor KyAgICAgICAgICBkZWNvZGVkX2F1ZGlvX3NpemUgLyBhdl9mcmFtZS5jaF9sYXlvdXQubmJfY2hh bm5lbHM7CisrICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdl9mcmFtZS5jaF9sYXlvdXQubmJf Y2hhbm5lbHM7ICsraSkgeworICAgICAgICAgbWVtY3B5KG91dHB1dF9idWZmZXIsIGF2X2ZyYW1l LmV4dGVuZGVkX2RhdGFbaV0sCisgICAgICAgICAgICAgICAgZGVjb2RlZF9zaXplX3Blcl9jaGFu bmVsKTsKKyAgICAgICAgIG91dHB1dF9idWZmZXIgKz0gZGVjb2RlZF9zaXplX3Blcl9jaGFubmVs OworQEAgLTE4NSwxMyArMTg1LDE0IEBAIGJvb2wgRkZtcGVnQ2RtQXVkaW9EZWNvZGVyOjpJbml0 aWFsaXplKAorICAgLy8gU3VjY2VzcyEKKyAgIGRlY29kaW5nX2xvb3BfID0gc3RkOjptYWtlX3Vu aXF1ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvZGVjX2NvbnRleHRfLmdldCgpKTsKKyAgIHNhbXBs ZXNfcGVyX3NlY29uZF8gPSBjb25maWcuc2FtcGxlc19wZXJfc2Vjb25kOworLSAgYnl0ZXNfcGVy X2ZyYW1lXyA9IGNvZGVjX2NvbnRleHRfLT5jaGFubmVscyAqIGNvbmZpZy5iaXRzX3Blcl9jaGFu bmVsIC8gODsKKysgIGJ5dGVzX3Blcl9mcmFtZV8gPQorKyAgICAgIGNvZGVjX2NvbnRleHRfLT5j aF9sYXlvdXQubmJfY2hhbm5lbHMgKiBjb25maWcuYml0c19wZXJfY2hhbm5lbCAvIDg7CisgICBv dXRwdXRfdGltZXN0YW1wX2hlbHBlcl8gPQorICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9U aW1lc3RhbXBIZWxwZXI+KGNvbmZpZy5zYW1wbGVzX3Blcl9zZWNvbmQpOworICAgaXNfaW5pdGlh bGl6ZWRfID0gdHJ1ZTsKKyAKKyAgIC8vIFN0b3JlIGluaXRpYWwgdmFsdWVzIHRvIGd1YXJkIGFn YWluc3QgbWlkc3RyZWFtIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KKy0gIGNoYW5uZWxzXyA9IGNv ZGVjX2NvbnRleHRfLT5jaGFubmVsczsKKysgIGNoYW5uZWxzXyA9IGNvZGVjX2NvbnRleHRfLT5j aF9sYXlvdXQubmJfY2hhbm5lbHM7CisgICBhdl9zYW1wbGVfZm9ybWF0XyA9IGNvZGVjX2NvbnRl eHRfLT5zYW1wbGVfZm10OworIAorICAgcmV0dXJuIHRydWU7CitAQCAtMjkxLDE3ICsyOTIsMTkg QEAgY2RtOjpTdGF0dXMgRkZtcGVnQ2RtQXVkaW9EZWNvZGVyOjpEZWNvZGVCdWZmZXIoCisgICBm b3IgKGF1dG8mIGZyYW1lIDogYXVkaW9fZnJhbWVzKSB7CisgICAgIGludCBkZWNvZGVkX2F1ZGlv X3NpemUgPSAwOworICAgICBpZiAoZnJhbWUtPnNhbXBsZV9yYXRlICE9IHNhbXBsZXNfcGVyX3Nl Y29uZF8gfHwKKy0gICAgICAgIGZyYW1lLT5jaGFubmVscyAhPSBjaGFubmVsc18gfHwgZnJhbWUt PmZvcm1hdCAhPSBhdl9zYW1wbGVfZm9ybWF0XykgeworKyAgICAgICAgZnJhbWUtPmNoX2xheW91 dC5uYl9jaGFubmVscyAhPSBjaGFubmVsc18gfHwKKysgICAgICAgIGZyYW1lLT5mb3JtYXQgIT0g YXZfc2FtcGxlX2Zvcm1hdF8pIHsKKyAgICAgICBETE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQg bWlkc3RyZWFtIGNvbmZpZ3VyYXRpb24gY2hhbmdlISIKKyAgICAgICAgICAgICAgICAgICA8PCAi IFNhbXBsZSBSYXRlOiAiIDw8IGZyYW1lLT5zYW1wbGVfcmF0ZSA8PCAiIHZzICIKKy0gICAgICAg ICAgICAgICAgICA8PCBzYW1wbGVzX3Blcl9zZWNvbmRfIDw8ICIsIENoYW5uZWxzOiAiIDw8IGZy YW1lLT5jaGFubmVscworLSAgICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBjaGFubmVsc18g PDwgIiwgU2FtcGxlIEZvcm1hdDogIiA8PCBmcmFtZS0+Zm9ybWF0CistICAgICAgICAgICAgICAg ICAgPDwgIiB2cyAiIDw8IGF2X3NhbXBsZV9mb3JtYXRfOworKyAgICAgICAgICAgICAgICAgIDw8 IHNhbXBsZXNfcGVyX3NlY29uZF8KKysgICAgICAgICAgICAgICAgICA8PCAiLCBDaGFubmVsczog IiA8PCBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzIDw8ICIgdnMgIgorKyAgICAgICAgICAg ICAgICAgIDw8IGNoYW5uZWxzXyA8PCAiLCBTYW1wbGUgRm9ybWF0OiAiIDw8IGZyYW1lLT5mb3Jt YXQgPDwgIiB2cyAiCisrICAgICAgICAgICAgICAgICAgPDwgYXZfc2FtcGxlX2Zvcm1hdF87Cisg ICAgICAgcmV0dXJuIGNkbTo6a0RlY29kZUVycm9yOworICAgICB9CisgCisgICAgIGRlY29kZWRf YXVkaW9fc2l6ZSA9IGF2X3NhbXBsZXNfZ2V0X2J1ZmZlcl9zaXplKAorLSAgICAgICAgbnVsbHB0 ciwgY29kZWNfY29udGV4dF8tPmNoYW5uZWxzLCBmcmFtZS0+bmJfc2FtcGxlcywKKysgICAgICAg IG51bGxwdHIsIGNvZGVjX2NvbnRleHRfLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMsIGZyYW1lLT5u Yl9zYW1wbGVzLAorICAgICAgICAgY29kZWNfY29udGV4dF8tPnNhbXBsZV9mbXQsIDEpOworICAg ICBpZiAoIWRlY29kZWRfYXVkaW9fc2l6ZSkKKyAgICAgICBjb250aW51ZTsKK0BAIC0zMjAsOSAr MzIzLDkgQEAgYm9vbCBGRm1wZWdDZG1BdWRpb0RlY29kZXI6Ok9uTmV3RnJhbWUoCisgICAgIHNp emVfdCogdG90YWxfc2l6ZSwKKyAgICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFWRnJh bWUsIFNjb3BlZFB0ckFWRnJlZUZyYW1lPj4qIGF1ZGlvX2ZyYW1lcywKKyAgICAgQVZGcmFtZSog ZnJhbWUpIHsKKy0gICp0b3RhbF9zaXplICs9IGF2X3NhbXBsZXNfZ2V0X2J1ZmZlcl9zaXplKG51 bGxwdHIsIGNvZGVjX2NvbnRleHRfLT5jaGFubmVscywKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5uYl9zYW1wbGVzLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfY29udGV4dF8tPnNhbXBsZV9mbXQs IDEpOworKyAgKnRvdGFsX3NpemUgKz0gYXZfc2FtcGxlc19nZXRfYnVmZmVyX3NpemUoCisrICAg ICAgbnVsbHB0ciwgY29kZWNfY29udGV4dF8tPmNoX2xheW91dC5uYl9jaGFubmVscywgZnJhbWUt Pm5iX3NhbXBsZXMsCisrICAgICAgY29kZWNfY29udGV4dF8tPnNhbXBsZV9mbXQsIDEpOworICAg YXVkaW9fZnJhbWVzLT5lbXBsYWNlX2JhY2soYXZfZnJhbWVfY2xvbmUoZnJhbWUpKTsKKyAgIHJl dHVybiB0cnVlOworIH0KK2RpZmYgLS1naXQgYS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5j YyBiL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCitpbmRleCA4N2NhODk2OTYyNi4uNzZm MDNkNjYwOGUgMTAwNjQ0CistLS0gYS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5jYworKysr IGIvbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uY2MKK0BAIC0zNDUsMTAgKzM0NSwxMSBAQCBi b29sIEFWQ29kZWNDb250ZXh0VG9BdWRpb0RlY29kZXJDb25maWcoY29uc3QgQVZDb2RlY0NvbnRl eHQqIGNvZGVjX2NvbnRleHQsCisgICAgICAgY29kZWNfY29udGV4dC0+c2FtcGxlX2ZtdCwgY29k ZWNfY29udGV4dC0+Y29kZWNfaWQpOworIAorICAgQ2hhbm5lbExheW91dCBjaGFubmVsX2xheW91 dCA9CistICAgICAgY29kZWNfY29udGV4dC0+Y2hhbm5lbHMgPiA4CisrICAgICAgY29kZWNfY29u dGV4dC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID4gOAorICAgICAgICAgICA/IENIQU5ORUxfTEFZ T1VUX0RJU0NSRVRFCistICAgICAgICAgIDogQ2hhbm5lbExheW91dFRvQ2hyb21lQ2hhbm5lbExh eW91dChjb2RlY19jb250ZXh0LT5jaGFubmVsX2xheW91dCwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX2NvbnRleHQtPmNoYW5uZWxzKTsKKysg ICAgICAgICAgOiBDaGFubmVsTGF5b3V0VG9DaHJvbWVDaGFubmVsTGF5b3V0KAorKyAgICAgICAg ICAgICAgICBjb2RlY19jb250ZXh0LT5jaF9sYXlvdXQudS5tYXNrLAorKyAgICAgICAgICAgICAg ICBjb2RlY19jb250ZXh0LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpOworIAorICAgaW50IHNhbXBs ZV9yYXRlID0gY29kZWNfY29udGV4dC0+c2FtcGxlX3JhdGU7CisgICBzd2l0Y2ggKGNvZGVjKSB7 CitAQCAtNDAxLDcgKzQwMiw3IEBAIGJvb2wgQVZDb2RlY0NvbnRleHRUb0F1ZGlvRGVjb2RlckNv bmZpZyhjb25zdCBBVkNvZGVjQ29udGV4dCogY29kZWNfY29udGV4dCwKKyAgICAgICAgICAgICAg ICAgICAgICBleHRyYV9kYXRhLCBlbmNyeXB0aW9uX3NjaGVtZSwgc2Vla19wcmVyb2xsLAorICAg ICAgICAgICAgICAgICAgICAgIGNvZGVjX2NvbnRleHQtPmRlbGF5KTsKKyAgIGlmIChjaGFubmVs X2xheW91dCA9PSBDSEFOTkVMX0xBWU9VVF9ESVNDUkVURSkKKy0gICAgY29uZmlnLT5TZXRDaGFu bmVsc0ZvckRpc2NyZXRlKGNvZGVjX2NvbnRleHQtPmNoYW5uZWxzKTsKKysgICAgY29uZmlnLT5T ZXRDaGFubmVsc0ZvckRpc2NyZXRlKGNvZGVjX2NvbnRleHQtPmNoX2xheW91dC5uYl9jaGFubmVs cyk7CisgCisgI2lmIEJVSUxERkxBRyhFTkFCTEVfUExBVEZPUk1fQUMzX0VBQzNfQVVESU8pCisg ICAvLyBUaGVzZSBhcmUgYml0c3RyZWFtIGZvcm1hdHMgdW5rbm93biB0byBmZm1wZWcsIHNvIHRo ZXkgZG9uJ3QgaGF2ZQorQEAgLTQ3MCw3ICs0NzEsNyBAQCB2b2lkIEF1ZGlvRGVjb2RlckNvbmZp Z1RvQVZDb2RlY0NvbnRleHQoY29uc3QgQXVkaW9EZWNvZGVyQ29uZmlnJiBjb25maWcsCisgCisg ICAvLyBUT0RPKHNjaGVya3VzKTogc2hvdWxkIHdlIHNldCB8Y2hhbm5lbF9sYXlvdXR8PyBJJ20g bm90IHN1cmUgaWYgRkZtcGVnIHVzZXMKKyAgIC8vIHNhaWQgaW5mb3JtYXRpb24gdG8gZGVjb2Rl LgorLSAgY29kZWNfY29udGV4dC0+Y2hhbm5lbHMgPSBjb25maWcuY2hhbm5lbHMoKTsKKysgIGNv ZGVjX2NvbnRleHQtPmNoX2xheW91dC5uYl9jaGFubmVscyA9IGNvbmZpZy5jaGFubmVscygpOwor ICAgY29kZWNfY29udGV4dC0+c2FtcGxlX3JhdGUgPSBjb25maWcuc2FtcGxlc19wZXJfc2Vjb25k KCk7CisgCisgICBpZiAoY29uZmlnLmV4dHJhX2RhdGEoKS5lbXB0eSgpKSB7CitkaWZmIC0tZ2l0 IGEvbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYyBiL21lZGlhL2ZpbHRlcnMvYXVk aW9fZmlsZV9yZWFkZXIuY2MKK2luZGV4IDVmMjU3YmRmYWE2Li5lMWJlNWFhOWE1YiAxMDA2NDQK Ky0tLSBhL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MKKysrKyBiL21lZGlhL2Zp bHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MKK0BAIC0xMTMsMTQgKzExMywxNSBAQCBib29sIEF1 ZGlvRmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CisgCisgICAvLyBWZXJpZnkgdGhlIGNoYW5u ZWwgbGF5b3V0IGlzIHN1cHBvcnRlZCBieSBDaHJvbWUuICBBY3RzIGFzIGEgc2FuaXR5IGNoZWNr CisgICAvLyBhZ2FpbnN0IGludmFsaWQgZmlsZXMuICBTZWUgaHR0cDovL2NyYnVnLmNvbS8xNzE5 NjIKKy0gIGlmIChDaGFubmVsTGF5b3V0VG9DaHJvbWVDaGFubmVsTGF5b3V0KGNvZGVjX2NvbnRl eHRfLT5jaGFubmVsX2xheW91dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvZGVjX2NvbnRleHRfLT5jaGFubmVscykgPT0KKysgIGlmIChDaGFubmVsTGF5b3V0 VG9DaHJvbWVDaGFubmVsTGF5b3V0KAorKyAgICAgICAgICBjb2RlY19jb250ZXh0Xy0+Y2hfbGF5 b3V0LnUubWFzaywKKysgICAgICAgICAgY29kZWNfY29udGV4dF8tPmNoX2xheW91dC5uYl9jaGFu bmVscykgPT0KKyAgICAgICBDSEFOTkVMX0xBWU9VVF9VTlNVUFBPUlRFRCkgeworICAgICByZXR1 cm4gZmFsc2U7CisgICB9CisgCisgICAvLyBTdG9yZSBpbml0aWFsIHZhbHVlcyB0byBndWFyZCBh Z2FpbnN0IG1pZHN0cmVhbSBjb25maWd1cmF0aW9uIGNoYW5nZXMuCistICBjaGFubmVsc18gPSBj b2RlY19jb250ZXh0Xy0+Y2hhbm5lbHM7CisrICBjaGFubmVsc18gPSBjb2RlY19jb250ZXh0Xy0+ Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworICAgYXVkaW9fY29kZWNfID0gQ29kZWNJRFRvQXVkaW9D b2RlYyhjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgc2FtcGxlX3JhdGVfID0gY29kZWNf Y29udGV4dF8tPnNhbXBsZV9yYXRlOworICAgYXZfc2FtcGxlX2Zvcm1hdF8gPSBjb2RlY19jb250 ZXh0Xy0+c2FtcGxlX2ZtdDsKK0BAIC0yMjMsNyArMjI0LDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFk ZXI6Ok9uTmV3RnJhbWUoCisgICBpZiAoZnJhbWVzX3JlYWQgPCAwKQorICAgICByZXR1cm4gZmFs c2U7CisgCistICBjb25zdCBpbnQgY2hhbm5lbHMgPSBmcmFtZS0+Y2hhbm5lbHM7CisrICBjb25z dCBpbnQgY2hhbm5lbHMgPSBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworICAgaWYgKGZy YW1lLT5zYW1wbGVfcmF0ZSAhPSBzYW1wbGVfcmF0ZV8gfHwgY2hhbm5lbHMgIT0gY2hhbm5lbHNf IHx8CisgICAgICAgZnJhbWUtPmZvcm1hdCAhPSBhdl9zYW1wbGVfZm9ybWF0XykgeworICAgICBE TE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQgbWlkc3RyZWFtIGNvbmZpZ3VyYXRpb24gY2hhbmdl ISIKK2RpZmYgLS1naXQgYS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyX3VuaXR0ZXN0 LmNjIGIvbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlcl91bml0dGVzdC5jYworaW5kZXgg MmFiYTc5MjdhMzEuLjFmNDVhNTBjYWNlIDEwMDY0NAorLS0tIGEvbWVkaWEvZmlsdGVycy9hdWRp b19maWxlX3JlYWRlcl91bml0dGVzdC5jYworKysrIGIvbWVkaWEvZmlsdGVycy9hdWRpb19maWxl X3JlYWRlcl91bml0dGVzdC5jYworQEAgLTEyMSwxMSArMTIxLDExIEBAIGNsYXNzIEF1ZGlvRmls ZVJlYWRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgICAgIEVYUEVDVF9GQUxTRShy ZWFkZXJfLT5PcGVuKCkpOworICAgfQorIAorLSAgdm9pZCBSdW5UZXN0RmFpbGluZ0RlY29kZShj b25zdCBjaGFyKiBmbikgeworKyAgdm9pZCBSdW5UZXN0RmFpbGluZ0RlY29kZShjb25zdCBjaGFy KiBmbiwgaW50IGV4cGVjdF9yZWFkID0gMCkgeworICAgICBJbml0aWFsaXplKGZuKTsKKyAgICAg RVhQRUNUX1RSVUUocmVhZGVyXy0+T3BlbigpKTsKKyAgICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx dWVfcHRyPEF1ZGlvQnVzPj4gZGVjb2RlZF9hdWRpb19wYWNrZXRzOworLSAgICBFWFBFQ1RfRVEo cmVhZGVyXy0+UmVhZCgmZGVjb2RlZF9hdWRpb19wYWNrZXRzKSwgMCk7CisrICAgIEVYUEVDVF9F UShyZWFkZXJfLT5SZWFkKCZkZWNvZGVkX2F1ZGlvX3BhY2tldHMpLCBleHBlY3RfcmVhZCk7Cisg ICB9CisgCisgICB2b2lkIFJ1blRlc3RQYXJ0aWFsRGVjb2RlKGNvbnN0IGNoYXIqIGZuKSB7CitA QCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihBdWRpb0ZpbGVSZWFkZXJUZXN0LCBBQUNfQURUUykg eworIH0KKyAKKyBURVNUX0YoQXVkaW9GaWxlUmVhZGVyVGVzdCwgTWlkU3RyZWFtQ29uZmlnQ2hh bmdlc0ZhaWwpIHsKKy0gIFJ1blRlc3RGYWlsaW5nRGVjb2RlKCJtaWRzdHJlYW1fY29uZmlnX2No YW5nZS5tcDMiKTsKKysgIFJ1blRlc3RGYWlsaW5nRGVjb2RlKCJtaWRzdHJlYW1fY29uZmlnX2No YW5nZS5tcDMiLCA0MjYyNCk7CisgfQorICNlbmRpZgorIAorZGlmZiAtLWdpdCBhL21lZGlhL2Zp bHRlcnMvYXVkaW9fdmlkZW9fbWV0YWRhdGFfZXh0cmFjdG9yLmNjIGIvbWVkaWEvZmlsdGVycy9h dWRpb192aWRlb19tZXRhZGF0YV9leHRyYWN0b3IuY2MKK2luZGV4IDE4NTgxOWViOTM2Li42OWZm NTA4YzIyMSAxMDA2NDQKKy0tLSBhL21lZGlhL2ZpbHRlcnMvYXVkaW9fdmlkZW9fbWV0YWRhdGFf ZXh0cmFjdG9yLmNjCisrKysgYi9tZWRpYS9maWx0ZXJzL2F1ZGlvX3ZpZGVvX21ldGFkYXRhX2V4 dHJhY3Rvci5jYworQEAgLTExMyw2ICsxMTMsMTUgQEAgYm9vbCBBdWRpb1ZpZGVvTWV0YWRhdGFF eHRyYWN0b3I6OkV4dHJhY3QoRGF0YVNvdXJjZSogc291cmNlLAorICAgICBpZiAoIXN0cmVhbSkK KyAgICAgICBjb250aW51ZTsKKyAKKysgICAgdm9pZCogZGlzcGxheV9tYXRyaXggPQorKyAgICAg ICAgYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEoc3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFU UklYLCBudWxscHRyKTsKKysgICAgaWYgKGRpc3BsYXlfbWF0cml4KSB7CisrICAgICAgcm90YXRp b25fID0gVmlkZW9UcmFuc2Zvcm1hdGlvbjo6RnJvbUZGbXBlZ0Rpc3BsYXlNYXRyaXgoCisrICAg ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3QqPihkaXNwbGF5X21hdHJpeCkp CisrICAgICAgICAgICAgICAgICAgICAgIC5yb3RhdGlvbjsKKysgICAgICBpbmZvLnRhZ3NbInJv dGF0ZSJdID0gYmFzZTo6TnVtYmVyVG9TdHJpbmcocm90YXRpb25fKTsKKysgICAgfQorKworICAg ICAvLyBFeHRyYWN0IGRpY3Rpb25hcnkgZnJvbSBzdHJlYW1zIGFsc28uIE5lZWRlZCBmb3IgY29u dGFpbmVycyB0aGF0IGF0dGFjaAorICAgICAvLyBtZXRhZGF0YSB0byBjb250YWluZWQgc3RyZWFt cyBpbnN0ZWFkIHRoZSBjb250YWluZXIgaXRzZWxmLCBsaWtlIE9HRy4KKyAgICAgRXh0cmFjdERp Y3Rpb25hcnkoc3RyZWFtLT5tZXRhZGF0YSwgJmluZm8udGFncyk7CitAQCAtMjU1LDggKzI2NCw2 IEBAIHZvaWQgQXVkaW9WaWRlb01ldGFkYXRhRXh0cmFjdG9yOjpFeHRyYWN0RGljdGlvbmFyeShB VkRpY3Rpb25hcnkqIG1ldGFkYXRhLAorICAgICBpZiAocmF3X3RhZ3MtPmZpbmQodGFnLT5rZXkp ID09IHJhd190YWdzLT5lbmQoKSkKKyAgICAgICAoKnJhd190YWdzKVt0YWctPmtleV0gPSB0YWct PnZhbHVlOworIAorLSAgICBpZiAoRXh0cmFjdEludCh0YWcsICJyb3RhdGUiLCAmcm90YXRpb25f KSkKKy0gICAgICBjb250aW51ZTsKKyAgICAgaWYgKEV4dHJhY3RTdHJpbmcodGFnLCAiYWxidW0i LCAmYWxidW1fKSkKKyAgICAgICBjb250aW51ZTsKKyAgICAgaWYgKEV4dHJhY3RTdHJpbmcodGFn LCAiYXJ0aXN0IiwgJmFydGlzdF8pKQorZGlmZiAtLWdpdCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVn X2FhY19iaXRzdHJlYW1fY29udmVydGVyLmNjIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfYWFjX2Jp dHN0cmVhbV9jb252ZXJ0ZXIuY2MKK2luZGV4IDZmMjMxYzg1NzI5Li5jYTVlNWZiOTI3ZCAxMDA2 NDQKKy0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2FhY19iaXRzdHJlYW1fY29udmVydGVyLmNj CisrKysgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hYWNfYml0c3RyZWFtX2NvbnZlcnRlci5jYwor QEAgLTE5NSwxNCArMTk1LDE1IEBAIGJvb2wgRkZtcGVnQUFDQml0c3RyZWFtQ29udmVydGVyOjpD b252ZXJ0UGFja2V0KEFWUGFja2V0KiBwYWNrZXQpIHsKKyAgIGlmICghaGVhZGVyX2dlbmVyYXRl ZF8gfHwgY29kZWNfICE9IHN0cmVhbV9jb2RlY19wYXJhbWV0ZXJzXy0+Y29kZWNfaWQgfHwKKyAg ICAgICBhdWRpb19wcm9maWxlXyAhPSBzdHJlYW1fY29kZWNfcGFyYW1ldGVyc18tPnByb2ZpbGUg fHwKKyAgICAgICBzYW1wbGVfcmF0ZV9pbmRleF8gIT0gc2FtcGxlX3JhdGVfaW5kZXggfHwKKy0g ICAgICBjaGFubmVsX2NvbmZpZ3VyYXRpb25fICE9IHN0cmVhbV9jb2RlY19wYXJhbWV0ZXJzXy0+ Y2hhbm5lbHMgfHwKKysgICAgICBjaGFubmVsX2NvbmZpZ3VyYXRpb25fICE9CisrICAgICAgICAg IHN0cmVhbV9jb2RlY19wYXJhbWV0ZXJzXy0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzIHx8CisgICAg ICAgZnJhbWVfbGVuZ3RoXyAhPSBoZWFkZXJfcGx1c19wYWNrZXRfc2l6ZSkgeworICAgICBoZWFk ZXJfZ2VuZXJhdGVkXyA9CisgICAgICAgICBHZW5lcmF0ZUFkdHNIZWFkZXIoc3RyZWFtX2NvZGVj X3BhcmFtZXRlcnNfLT5jb2RlY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAg Ly8gbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fY29kZWNfcGFyYW1l dGVyc18tPnByb2ZpbGUsIHNhbXBsZV9yYXRlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDAsICAvLyBwcml2YXRlIHN0cmVhbQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cmVhbV9jb2RlY19wYXJhbWV0ZXJzXy0+Y2hhbm5lbHMsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyZWFtX2NvZGVjX3BhcmFtZXRlcnNfLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8vIG9yaWdpbmFsaXR5CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCwgIC8vIGhvbWUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLCAgLy8gY29weXJpZ2h0ZWRfc3RyZWFtCitAQCAtMjE0LDcgKzIxNSw3IEBAIGJvb2wg RkZtcGVnQUFDQml0c3RyZWFtQ29udmVydGVyOjpDb252ZXJ0UGFja2V0KEFWUGFja2V0KiBwYWNr ZXQpIHsKKyAgICAgY29kZWNfID0gc3RyZWFtX2NvZGVjX3BhcmFtZXRlcnNfLT5jb2RlY19pZDsK KyAgICAgYXVkaW9fcHJvZmlsZV8gPSBzdHJlYW1fY29kZWNfcGFyYW1ldGVyc18tPnByb2ZpbGU7 CisgICAgIHNhbXBsZV9yYXRlX2luZGV4XyA9IHNhbXBsZV9yYXRlX2luZGV4OworLSAgICBjaGFu bmVsX2NvbmZpZ3VyYXRpb25fID0gc3RyZWFtX2NvZGVjX3BhcmFtZXRlcnNfLT5jaGFubmVsczsK KysgICAgY2hhbm5lbF9jb25maWd1cmF0aW9uXyA9IHN0cmVhbV9jb2RlY19wYXJhbWV0ZXJzXy0+ Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworICAgICBmcmFtZV9sZW5ndGhfID0gaGVhZGVyX3BsdXNf cGFja2V0X3NpemU7CisgICB9CisgCitkaWZmIC0tZ2l0IGEvbWVkaWEvZmlsdGVycy9mZm1wZWdf YWFjX2JpdHN0cmVhbV9jb252ZXJ0ZXJfdW5pdHRlc3QuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBl Z19hYWNfYml0c3RyZWFtX2NvbnZlcnRlcl91bml0dGVzdC5jYworaW5kZXggMWZkNGM1Y2NkN2Qu LmY1OWJjZDhmZGFmIDEwMDY0NAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfYWFjX2JpdHN0 cmVhbV9jb252ZXJ0ZXJfdW5pdHRlc3QuY2MKKysrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Fh Y19iaXRzdHJlYW1fY29udmVydGVyX3VuaXR0ZXN0LmNjCitAQCAtMzQsNyArMzQsNyBAQCBjbGFz cyBGRm1wZWdBQUNCaXRzdHJlYW1Db252ZXJ0ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg eworICAgICBtZW1zZXQoJnRlc3RfcGFyYW1ldGVyc18sIDAsIHNpemVvZihBVkNvZGVjUGFyYW1l dGVycykpOworICAgICB0ZXN0X3BhcmFtZXRlcnNfLmNvZGVjX2lkID0gQVZfQ09ERUNfSURfQUFD OworICAgICB0ZXN0X3BhcmFtZXRlcnNfLnByb2ZpbGUgPSBGRl9QUk9GSUxFX0FBQ19NQUlOOwor LSAgICB0ZXN0X3BhcmFtZXRlcnNfLmNoYW5uZWxzID0gMjsKKysgICAgdGVzdF9wYXJhbWV0ZXJz Xy5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPSAyOworICAgICB0ZXN0X3BhcmFtZXRlcnNfLmV4dHJh ZGF0YSA9IGV4dHJhZGF0YV9oZWFkZXJfOworICAgICB0ZXN0X3BhcmFtZXRlcnNfLmV4dHJhZGF0 YV9zaXplID0gc2l6ZW9mKGV4dHJhZGF0YV9oZWFkZXJfKTsKKyAgIH0KK2RpZmYgLS1naXQgYS9t ZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjIGIvbWVkaWEvZmlsdGVycy9mZm1w ZWdfYXVkaW9fZGVjb2Rlci5jYworaW5kZXggNmE1NmM2NzVmN2QuLjQ2MTVmZGViM2ZiIDEwMDY0 NAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYworKysrIGIvbWVk aWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYworQEAgLTI4LDcgKzI4LDcgQEAgbmFt ZXNwYWNlIG1lZGlhIHsKKyAKKyAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBjaGFubmVscyBmcm9t IHRoZSBkYXRhIGluIHxmcmFtZXwuCisgc3RhdGljIGlubGluZSBpbnQgRGV0ZXJtaW5lQ2hhbm5l bHMoQVZGcmFtZSogZnJhbWUpIHsKKy0gIHJldHVybiBmcmFtZS0+Y2hhbm5lbHM7CisrICByZXR1 cm4gZnJhbWUtPmNoX2xheW91dC5uYl9jaGFubmVsczsKKyB9CisgCisgLy8gQ2FsbGVkIGJ5IEZG bXBlZydzIGFsbG9jYXRpb24gcm91dGluZSB0byBhbGxvY2F0ZSBhIGJ1ZmZlci4gVXNlcworQEAg LTIzMSw3ICsyMzEsNyBAQCBib29sIEZGbXBlZ0F1ZGlvRGVjb2Rlcjo6T25OZXdGcmFtZShjb25z dCBEZWNvZGVyQnVmZmVyJiBidWZmZXIsCisgICAvLyBUcmFuc2xhdGUgdW5zdXBwb3J0ZWQgaW50 byBkaXNjcmV0ZSBsYXlvdXRzIGZvciBkaXNjcmV0ZSBjb25maWd1cmF0aW9uczsKKyAgIC8vIGZm bXBlZyBkb2VzIG5vdCBoYXZlIGEgbGFiZWxlZCBkaXNjcmV0ZSBjb25maWd1cmF0aW9uIGludGVy bmFsbHkuCisgICBDaGFubmVsTGF5b3V0IGNoYW5uZWxfbGF5b3V0ID0gQ2hhbm5lbExheW91dFRv Q2hyb21lQ2hhbm5lbExheW91dCgKKy0gICAgICBjb2RlY19jb250ZXh0Xy0+Y2hhbm5lbF9sYXlv dXQsIGNvZGVjX2NvbnRleHRfLT5jaGFubmVscyk7CisrICAgICAgY29kZWNfY29udGV4dF8tPmNo X2xheW91dC51Lm1hc2ssIGNvZGVjX2NvbnRleHRfLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpOwor ICAgaWYgKGNoYW5uZWxfbGF5b3V0ID09IENIQU5ORUxfTEFZT1VUX1VOU1VQUE9SVEVEICYmCisg ICAgICAgY29uZmlnXy5jaGFubmVsX2xheW91dCgpID09IENIQU5ORUxfTEFZT1VUX0RJU0NSRVRF KSB7CisgICAgIGNoYW5uZWxfbGF5b3V0ID0gQ0hBTk5FTF9MQVlPVVRfRElTQ1JFVEU7CitAQCAt MzQ4LDExICszNDgsMTEgQEAgYm9vbCBGRm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29k ZXIoY29uc3QgQXVkaW9EZWNvZGVyQ29uZmlnJiBjb25maWcpIHsKKyAgIC8vIFN1Y2Nlc3MhCisg ICBhdl9zYW1wbGVfZm9ybWF0XyA9IGNvZGVjX2NvbnRleHRfLT5zYW1wbGVfZm10OworIAorLSAg aWYgKGNvZGVjX2NvbnRleHRfLT5jaGFubmVscyAhPSBjb25maWcuY2hhbm5lbHMoKSkgeworKyAg aWYgKGNvZGVjX2NvbnRleHRfLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgIT0gY29uZmlnLmNoYW5u ZWxzKCkpIHsKKyAgICAgTUVESUFfTE9HKEVSUk9SLCBtZWRpYV9sb2dfKQorICAgICAgICAgPDwg IkF1ZGlvIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkICIgPDwgY29uZmlnLmNoYW5uZWxzKCkKKyAg ICAgICAgIDw8ICIgY2hhbm5lbHMsIGJ1dCBGRm1wZWcgdGhpbmtzIHRoZSBmaWxlIGNvbnRhaW5z ICIKKy0gICAgICAgIDw8IGNvZGVjX2NvbnRleHRfLT5jaGFubmVscyA8PCAiIGNoYW5uZWxzIjsK KysgICAgICAgIDw8IGNvZGVjX2NvbnRleHRfLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPDwgIiBj aGFubmVscyI7CisgICAgIFJlbGVhc2VGRm1wZWdSZXNvdXJjZXMoKTsKKyAgICAgc3RhdGVfID0g RGVjb2RlclN0YXRlOjprVW5pbml0aWFsaXplZDsKKyAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQw Myw3ICs0MDMsNyBAQCBpbnQgRkZtcGVnQXVkaW9EZWNvZGVyOjpHZXRBdWRpb0J1ZmZlcihzdHJ1 Y3QgQVZDb2RlY0NvbnRleHQqIHMsCisgICBpZiAoZnJhbWUtPm5iX3NhbXBsZXMgPD0gMCkKKyAg ICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAKKy0gIGlmIChzLT5jaGFubmVscyAhPSBjaGFu bmVscykgeworKyAgaWYgKHMtPmNoX2xheW91dC5uYl9jaGFubmVscyAhPSBjaGFubmVscykgewor ICAgICBETE9HKEVSUk9SKSA8PCAiQVZDb2RlY0NvbnRleHQgYW5kIEFWRnJhbWUgZGlzYWdyZWUg b24gY2hhbm5lbCBjb3VudC4iOworICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgfQor QEAgLTQzNiw3ICs0MzYsOCBAQCBpbnQgRkZtcGVnQXVkaW9EZWNvZGVyOjpHZXRBdWRpb0J1ZmZl cihzdHJ1Y3QgQVZDb2RlY0NvbnRleHQqIHMsCisgICBDaGFubmVsTGF5b3V0IGNoYW5uZWxfbGF5 b3V0ID0KKyAgICAgICBjb25maWdfLmNoYW5uZWxfbGF5b3V0KCkgPT0gQ0hBTk5FTF9MQVlPVVRf RElTQ1JFVEUKKyAgICAgICAgICAgPyBDSEFOTkVMX0xBWU9VVF9ESVNDUkVURQorLSAgICAgICAg ICA6IENoYW5uZWxMYXlvdXRUb0Nocm9tZUNoYW5uZWxMYXlvdXQocy0+Y2hhbm5lbF9sYXlvdXQs IHMtPmNoYW5uZWxzKTsKKysgICAgICAgICAgOiBDaGFubmVsTGF5b3V0VG9DaHJvbWVDaGFubmVs TGF5b3V0KHMtPmNoX2xheW91dC51Lm1hc2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpOworIAorICAgaWYg KGNoYW5uZWxfbGF5b3V0ID09IENIQU5ORUxfTEFZT1VUX1VOU1VQUE9SVEVEKSB7CisgICAgIERM T0coRVJST1IpIDw8ICJVbnN1cHBvcnRlZCBjaGFubmVsIGxheW91dC4iOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tUkVWRVJULXJvbGwtc3Jj LXRoaXJkX3BhcnR5LWZmbXBlZy1tMTAyLnBhdGNoLmFyZ3MgYi9zcmNwa2dzL2VsZWN0cm9uMjQv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVn LW0xMDIucGF0Y2guYXJncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjhiYmJiZTk0ODM2MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2Nocm9taXVtLVJFVkVSVC1yb2xsLXNyYy10aGlyZF9wYXJ0eS1mZm1wZWctbTEw Mi5wYXRjaC5hcmdzCkBAIC0wLDAgKzEgQEAKKy1STnAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFy dHktZmZtcGVnLW0xMDYucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9j aHJvbWl1bS1SRVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDYucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMmExMTM3OTE3MzQKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1S RVZFUlQtcm9sbC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDYucGF0Y2gKQEAgLTAsMCArMSw1 NSBAQAorRnJvbSBkZWQzNzk4MjRmNWRlMzkzNTdiNmIxODk0NTc4MTAxYWJhNWNkZjA1IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXVnZW5lIFplbXRzb3YgPGV1Z2VuZUBjaHJvbWl1 bS5vcmc+CitEYXRlOiBGcmksIDI5IEp1bCAyMDIyIDA0OjQxOjA0ICswMDAwCitTdWJqZWN0OiBb UEFUQ0hdIFJvbGwgc3JjL3RoaXJkX3BhcnR5L2ZmbXBlZy8gODgwZGY1ZWRlLi5iNzFlY2QwMmIg KDI3OQorIGNvbW1pdHMpCisKK2h0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9mZm1wZWcuZ2l0Lytsb2cvODgwZGY1ZWRlNTBhLi5iNzFlY2QwMmI0 NzkKKworJCBnaXQgbG9nIDg4MGRmNWVkZS4uYjcxZWNkMDJiIC0tZGF0ZT1zaG9ydCAtLW5vLW1l cmdlcyAtLWZvcm1hdD0nJWFkICVhZSAlcycKKzIwMjItMDctMjcgZXVnZW5lIFJvbGwgZm9yIE0x MDYKKzIwMjItMDctMjUgYW5kcmVhcy5yaGVpbmhhcmR0IGF2Y29kZWMveDg2L3BuZ2RzcDogUmVt b3ZlIG9ic29sZXRlIGZmX2FkZF9ieXRlc19sMl9tbXgoKQorMjAyMi0wNy0yMiBhbmRyZWFzLnJo ZWluaGFyZHQgYXZjb2RlYy9oZXZjZGVjOiBPdXRwdXQgTUQ1LW1lc3NhZ2UgaW4gb25lIHBpZWNl CisyMDIyLTA3LTI0IGVwaXJhdDA3IGNvbmZpZ3VyZTogcHJvcGVybHkgcmVxdWlyZSBsaWJ4MjY0 IGlmIGVuYWJsZWQKKzIwMjItMDctMjQgemFuZSBhdmZvcm1hdC9hcmdvX2N2ZzogZXhwb3NlIGxv b3AvcmV2ZXJiL2NoZWNrc3VtIHZpYSBtZXRhZGF0YQorKC4uLikKKzIwMjItMDUtMDMgbGVvLml6 ZW4gYXZjb2RlYy9saWJqeGxkZWM6IHByb3Blcmx5IHRhZyBvdXRwdXQgY29sb3JzcGFjZQorMjAy Mi0wNi0yNSBmZm1wZWcgYXZmaWx0ZXIvTWFrZWZpbGU6IGFsd2F5cyBtYWtlIGNvbG9yc3BhY2Uu bworMjAyMi0wMy0wMiBicmFkIGF2dXRpbC9wcGMvY3B1OiBVc2UgcHJvcGVyIGhlYWRlciBmb3Ig T3BlbkJTRCBQUEMgQ1BVIGRldGVjdGlvbgorMjAyMi0wNi0yNCBqYW1yaWFsIGF2Zm9ybWF0L2h0 dHA6IGluY2x1ZGUgdmVyc2lvbi5oCisyMDIyLTA1LTE2IG1ib25kYS1hdC1udmlkaWEuY29tIEFW MSBWRFBBVSBod2FjY2VsIERlY29kZSBzdXBwb3J0CisKK0NyZWF0ZWQgd2l0aDoKKyAgcm9sbC1k ZXAgc3JjL3RoaXJkX3BhcnR5L2ZmbXBlZworCitmZm1wZWcgdXNhZ2UgZml4OgorIFN3aXRjaCBm cm9tIEFWRnJhbWU6OnBrdF9kdXJhdGlvbiB0byBBVkZyYW1lOjpkdXJhdGlvbiwKKyBBVkZyYW1l Ojpwa3RfZHVyYXRpb24gaXMgZGVwcmVjYXRlZAorCitCdWc6IDEzNDQ2NDYKK0NoYW5nZS1JZDog SWFhM2FiZjQ4ZWY4MWRhZTZkMjgyYmNhOGYwZmEyYThkZmZlZWJhMjUKK1Jldmlld2VkLW9uOiBo dHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysv Mzc4ODYzOAorUmV2aWV3ZWQtYnk6IFdpbGwgQ2Fzc2VsbGEgPGNhc3Nld0BjaHJvbWl1bS5vcmc+ CitDb21taXQtUXVldWU6IEV1Z2VuZSBaZW10c292IDxldWdlbmVAY2hyb21pdW0ub3JnPgorQ3It Q29tbWl0LVBvc2l0aW9uOiByZWZzL2hlYWRzL21haW5AeyMxMDI5NjIzfQorLS0tCisgbWVkaWEv ZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZWRpYS9maWx0 ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjIGIvbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRl ci5jYworaW5kZXggZTFiZTVhYTlhNWIuLjk1MWMwMDM5NTZmIDEwMDY0NAorLS0tIGEvbWVkaWEv ZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYworKysrIGIvbWVkaWEvZmlsdGVycy9hdWRpb19m aWxlX3JlYWRlci5jYworQEAgLTI0MywxMCArMjQzLDEwIEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVy OjpPbk5ld0ZyYW1lKAorICAgLy8gc2lsZW5jZSBmcm9tIGJlaW5nIG91dHB1dC4gSW4gdGhlIGNh c2Ugd2hlcmUgd2UgYXJlIGFsc28gZGlzY2FyZGluZyBzb21lCisgICAvLyBwb3J0aW9uIG9mIHRo ZSBwYWNrZXQgKGFzIGluZGljYXRlZCBieSBhIG5lZ2F0aXZlIHB0cyksIHdlIGZ1cnRoZXIgd2Fu dCB0bworICAgLy8gYWRqdXN0IHRoZSBkdXJhdGlvbiBkb3dud2FyZCBieSBob3dldmVyIG11Y2gg ZXhpc3RzIGJlZm9yZSB6ZXJvLgorLSAgaWYgKGF1ZGlvX2NvZGVjXyA9PSBBdWRpb0NvZGVjOjpr QUFDICYmIGZyYW1lLT5wa3RfZHVyYXRpb24pIHsKKysgIGlmIChhdWRpb19jb2RlY18gPT0gQXVk aW9Db2RlYzo6a0FBQyAmJiBmcmFtZS0+ZHVyYXRpb24pIHsKKyAgICAgY29uc3QgYmFzZTo6VGlt ZURlbHRhIHBrdF9kdXJhdGlvbiA9IENvbnZlcnRGcm9tVGltZUJhc2UoCisgICAgICAgICBnbHVl Xy0+Zm9ybWF0X2NvbnRleHQoKS0+c3RyZWFtc1tzdHJlYW1faW5kZXhfXS0+dGltZV9iYXNlLAor LSAgICAgICAgZnJhbWUtPnBrdF9kdXJhdGlvbiArIHN0ZDo6bWluKHN0YXRpY19jYXN0PGludDY0 X3Q+KDApLCBmcmFtZS0+cHRzKSk7CisrICAgICAgICBmcmFtZS0+ZHVyYXRpb24gKyBzdGQ6Om1p bihzdGF0aWNfY2FzdDxpbnQ2NF90PigwKSwgZnJhbWUtPnB0cykpOworICAgICBjb25zdCBiYXNl OjpUaW1lRGVsdGEgZnJhbWVfZHVyYXRpb24gPQorICAgICAgICAgYmFzZTo6U2Vjb25kcyhmcmFt ZXNfcmVhZCAvIHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlX3JhdGVfKSk7CisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1SRVZFUlQtcm9s bC1zcmMtdGhpcmRfcGFydHktZmZtcGVnLW0xMDYucGF0Y2guYXJncyBiL3NyY3BrZ3MvZWxlY3Ry b24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLVJFVkVSVC1yb2xsLXNyYy10aGlyZF9wYXJ0eS1m Zm1wZWctbTEwNi5wYXRjaC5hcmdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uOGJiYmJlOTQ4MzYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0 L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tUkVWRVJULXJvbGwtc3JjLXRoaXJkX3BhcnR5LWZmbXBl Zy1tMTA2LnBhdGNoLmFyZ3MKQEAgLTAsMCArMSBAQAorLVJOcDEKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWFuZ2xlLXdheWxhbmQtaW5jbHVk ZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWFuZ2xl LXdheWxhbmQtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjY1NzcwYjk0MzljNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24y NC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWFuZ2xlLXdheWxhbmQtaW5jbHVkZS5wYXRjaApAQCAt MCwwICsxLDM5IEBACitQYXRjaC1Tb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hcmNobGludXgv c3ZudG9naXQtcGFja2FnZXMvYmxvYi9hMzUzODMzYTVhNzMxYWJmYWE0NjViNjU4ZjYxODk0YTUx NmFhNDliL3RydW5rL2FuZ2xlLXdheWxhbmQtaW5jbHVkZS1wcm90b2NvbC5wYXRjaAorZGlmZiAt dXByIHRoaXJkX3BhcnR5L2FuZ2xlLm9yaWcvQlVJTEQuZ24gdGhpcmRfcGFydHkvYW5nbGUvQlVJ TEQuZ24KKy0tLSBhL3RoaXJkX3BhcnR5L2FuZ2xlLm9yaWcvQlVJTEQuZ24JMjAyMi0wOC0xNyAx OTozODoxMS4wMDAwMDAwMDAgKzAwMDAKKysrKyBiL3RoaXJkX3BhcnR5L2FuZ2xlL0JVSUxELmdu CTIwMjItMDgtMTggMTE6MDQ6MDkuMDYxNzUxMTExICswMDAwCitAQCAtNDg5LDYgKzQ4OSwxMiBA QCBjb25maWcoImFuZ2xlX3Z1bGthbl93YXlsYW5kX2NvbmZpZyIpIHsKKyAgIGlmIChhbmdsZV9l bmFibGVfdnVsa2FuICYmIGFuZ2xlX3VzZV93YXlsYW5kICYmCisgICAgICAgZGVmaW5lZCh2dWxr YW5fd2F5bGFuZF9pbmNsdWRlX2RpcnMpKSB7CisgICAgIGluY2x1ZGVfZGlycyA9IHZ1bGthbl93 YXlsYW5kX2luY2x1ZGVfZGlycworKyAgfSBlbHNlIGlmIChhbmdsZV9lbmFibGVfdnVsa2FuICYm IGFuZ2xlX3VzZV93YXlsYW5kKSB7CisrICAgIGluY2x1ZGVfZGlycyA9IFsKKysgICAgICAiJHdh eWxhbmRfZ25fZGlyL3NyYy9zcmMiLAorKyAgICAgICIkd2F5bGFuZF9nbl9kaXIvaW5jbHVkZS9z cmMiLAorKyAgICAgICIkd2F5bGFuZF9nbl9kaXIvaW5jbHVkZS9wcm90b2NvbCIsCisrICAgIF0K KyAgIH0KKyB9CisgCitAQCAtMTA3Myw2ICsxMDc5LDcgQEAgaWYgKGFuZ2xlX3VzZV93YXlsYW5k KSB7CisgICAgIGluY2x1ZGVfZGlycyA9IFsKKyAgICAgICAiJHdheWxhbmRfZGlyL2VnbCIsCisg ICAgICAgIiR3YXlsYW5kX2Rpci9zcmMiLAorKyAgICAgICIkd2F5bGFuZF9nbl9kaXIvaW5jbHVk ZS9wcm90b2NvbCIsCisgICAgIF0KKyAgIH0KKyAKK2RpZmYgLXVwciB0aGlyZF9wYXJ0eS9hbmds ZS5vcmlnL3NyYy90aGlyZF9wYXJ0eS92b2xrL0JVSUxELmduIHRoaXJkX3BhcnR5L2FuZ2xlL3Ny Yy90aGlyZF9wYXJ0eS92b2xrL0JVSUxELmduCistLS0gYS90aGlyZF9wYXJ0eS9hbmdsZS5vcmln L3NyYy90aGlyZF9wYXJ0eS92b2xrL0JVSUxELmduCTIwMjItMDgtMTcgMTk6Mzg6MTIuMDAwMDAw MDAwICswMDAwCisrKysgYi90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvdGhpcmRfcGFydHkvdm9say9C VUlMRC5nbgkyMDIyLTA4LTE4IDExOjA0OjM2LjQ5OTgyODAwNiArMDAwMAorQEAgLTIxLDYgKzIx LDkgQEAgc291cmNlX3NldCgidm9sayIpIHsKKyAgIGNvbmZpZ3MgKz0gWyAiJGFuZ2xlX3Jvb3Q6 YW5nbGVfbm9fY2ZpX2ljYWxsIiBdCisgICBwdWJsaWNfZGVwcyA9IFsgIiRhbmdsZV92dWxrYW5f aGVhZGVyc19kaXI6dnVsa2FuX2hlYWRlcnMiIF0KKyAgIGlmIChhbmdsZV91c2Vfd2F5bGFuZCkg eworLSAgICBpbmNsdWRlX2RpcnMgPSBbICIkd2F5bGFuZF9kaXIvc3JjIiBdCisrICAgIGluY2x1 ZGVfZGlycyA9IFsKKysgICAgICAiJHdheWxhbmRfZGlyL3NyYyIsCisrICAgICAgIiR3YXlsYW5k X2duX2Rpci9pbmNsdWRlL3Byb3RvY29sIiwKKysgICAgXQorICAgfQorIH0KZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWJyb3dzZXItc2l6ZV90 LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nl ci1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4z NmFmMGVjNmM0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVfdC5wYXRjaApAQCAtMCwwICsxLDEwIEBACist LS0gYS9jaHJvbWUvYnJvd3Nlci9zZWFyY2gvYmFja2dyb3VuZC9udHBfYmFja2dyb3VuZHMuaAky MDIwLTA4LTEwIDIwOjM5OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGIvY2hyb21lL2Jyb3dzZXIv c2VhcmNoL2JhY2tncm91bmQvbnRwX2JhY2tncm91bmRzLmgJMjAyMC0wOS0wNCAxMzo0ODoyMi42 NDAwMjMyNTYgKzAyMDAKK0BAIC02LDYgKzYsNyBAQAorICNkZWZpbmUgQ0hST01FX0JST1dTRVJf U0VBUkNIX0JBQ0tHUk9VTkRfTlRQX0JBQ0tHUk9VTkRTX0hfCisgCisgI2luY2x1ZGUgPGFycmF5 PgorKyNpbmNsdWRlIDxjc3RkZGVmPgorIAorIGNsYXNzIEdVUkw7CisgCmRpZmYgLS1naXQgYS9z cmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jaHJvbWl1bS05My1mZm1w ZWctNC40LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t Y2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmYwZWM3MzZmOThiYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWNocm9taXVtLTkzLWZmbXBlZy00LjQucGF0 Y2gKQEAgLTAsMCArMSwzNiBAQAorZGlmZiAtLWdpdCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Rl bXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCitpbmRleCBhYzQ3MTNi MDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKKy0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Rl bXV4ZXIuY2MKKysrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKK0BAIC00Mjcs MTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2Nv cGVkQVZQYWNrZXQgcGFja2V0KSB7CisgICBzY29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1 ZmZlcjsKKyAKKyAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkgeworLSAgICBz aXplX3QgaWRfc2l6ZSA9IDA7CisrICAgIGludCBpZF9zaXplID0gMDsKKyAgICAgdWludDhfdCog aWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgp LCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOworIAorLSAgICBzaXpl X3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7CisrICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKKyAgICAg dWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAg ICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19z aXplKTsKKyAKK0BAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpF bnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBhY2tldCkgeworICAgICBidWZmZXIgPSBEZWNv ZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRh LnNpemUoKSk7CisgICB9IGVsc2UgeworLSAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwor KyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOworICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBh dl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RB VEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUpOworIAorQEAgLTUw NCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2Nv cGVkQVZQYWNrZXQgcGFja2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAgICB9CisgCistICAgIHNpemVf dCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7CisrICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7 CisgICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KKyAgICAgICAgIHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAg ICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBf c2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1jaHJvbWl1bS1pNjg2LXZhYXBpLWZwZXJtaXNzaXZlLnBhdGNoIGIvc3Jj cGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tY2hyb21pdW0taTY4Ni12YWFw aS1mcGVybWlzc2l2ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjc3YzBiNThjOTRlMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLWNocm9taXVtLWk2ODYtdmFhcGktZnBlcm1pc3NpdmUucGF0 Y2gKQEAgLTAsMCArMSwyMyBAQAorLS0tIGEvbWVkaWEvZ3B1L3ZhYXBpL0JVSUxELmduLm9yaWcK KysrKyBiL21lZGlhL2dwdS92YWFwaS9CVUlMRC5nbgorQEAgLTE0LDYgKzE0LDEyIEBACisgYXNz ZXJ0KGlzX2xpbnV4IHx8IGlzX2Nocm9tZW9zKQorIGFzc2VydCh1c2VfdmFhcGkpCisgCisrY29u ZmlnKCJ2YWFwaV9wZXJtaXNzaXZlIikgeworKyAgaWYgKHRhcmdldF9jcHUgPT0gIng4NiIpIHsK KysgICAgY2ZsYWdzID0gWyAiLWZwZXJtaXNzaXZlIiBdCisrICB9CisrfQorKworIGdlbmVyYXRl X3N0dWJzKCJsaWJ2YV9zdHVicyIpIHsKKyAgIGV4dHJhX2hlYWRlciA9ICJ2YV9zdHViX2hlYWRl ci5mcmFnbWVudCIKKyAgIHNpZ3MgPSBbICJ2YS5zaWdzIiBdCitAQCAtOTAsNiArOTYsNyBAQAor ICAgY29uZmlncyArPSBbCisgICAgICIvL2J1aWxkL2NvbmZpZy9saW51eC9saWJ2YSIsCisgICAg ICIvL3RoaXJkX3BhcnR5L2xpYnZweDpsaWJ2cHhfY29uZmlnIiwKKysgICAgIjp2YWFwaV9wZXJt aXNzaXZlIiwKKyAgIF0KKyAKKyAgIGRlcHMgPSBbCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0 ZW0tamF2YS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVt LWNocm9taXVtLXJldmVydC1kcm9wLW9mLXN5c3RlbS1qYXZhLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTE3YTUwZjhlNGY2Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tY2hyb21pdW0tcmV2 ZXJ0LWRyb3Atb2Ytc3lzdGVtLWphdmEucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB3YXMg ZHJvcHBlZCBmb3Igc29tZSByZWFzb24gaW4gNjk1MWMzN2NlY2QwNTk3OWIyMzJhMzllNWMxMGU2 MzQ2YTBmNzRlZgorLS0tIGEvdGhpcmRfcGFydHkvY2xvc3VyZV9jb21waWxlci9jb21waWxlci5w eQkyMDIxLTA1LTIwIDA0OjE3OjUzLjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGhpcmRfcGFydHkv Y2xvc3VyZV9jb21waWxlci9jb21waWxlci5weQkyMDIxLTA1LTIwIDA0OjE3OjUzLjAwMDAwMDAw MCArMDIwMAorQEAgLTEzLDggKzEzLDkgQEAKKyAKKyAKKyBfQ1VSUkVOVF9ESVIgPSBvcy5wYXRo LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKy1fSkFWQV9QQVRIID0gb3MucGF0aC5q b2luKF9DVVJSRU5UX0RJUiwgIi4uIiwgImpkayIsICJjdXJyZW50IiwgImJpbiIsICJqYXZhIikK Ky1hc3NlcnQgb3MucGF0aC5pc2ZpbGUoX0pBVkFfUEFUSCksICJqYXZhIG9ubHkgYWxsb3dlZCBp biBhbmRyb2lkIGJ1aWxkcyIKKytfSkFWQV9CSU4gPSAiamF2YSIKKytfSkRLX1BBVEggPSBvcy5w YXRoLmpvaW4oX0NVUlJFTlRfRElSLCAiLi4iLCAiamRrIiwgImN1cnJlbnQiLCAiYmluIiwgImph dmEiKQorK19KQVZBX1BBVEggPSBfSkRLX1BBVEggaWYgb3MucGF0aC5pc2ZpbGUoX0pES19QQVRI KSBlbHNlIF9KQVZBX0JJTgorIAorIGNsYXNzIENvbXBpbGVyKG9iamVjdCk6CisgICAiIiJSdW5z IHRoZSBDbG9zdXJlIGNvbXBpbGVyIG9uIGdpdmVuIHNvdXJjZSBmaWxlcyB0byB0eXBlY2hlY2sg dGhlbQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tY2hyb21pdW0tc3lzdGVtLW5vZGVqcy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2Nocm9taXVtLWNocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44M2U4YjkzYjlmY2YKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jaHJvbWl1 bS1zeXN0ZW0tbm9kZWpzLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKKy0tLSBhL3RoaXJkX3BhcnR5 L25vZGUvbm9kZS5weQorKysrIGIvdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5CitAQCAtMTMsMTEg KzEzLDEyIEBACisgZGVmIEdldEJpbmFyeVBhdGgoKToKKyAgIGRhcndpbl9uYW1lID0gKCdub2Rl LWRhcndpbi1hcm02NCcgaWYgcGxhdGZvcm0ubWFjaGluZSgpID09ICdhcm02NCcgZWxzZQorICAg ICAgICAgICAgICAgICAgJ25vZGUtZGFyd2luLXg2NCcpCistICByZXR1cm4gb3NfcGF0aC5qb2lu KG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyksICp7CistICAgICdEYXJ3aW4nOiAoJ21hYycsIGRh cndpbl9uYW1lLCAnYmluJywgJ25vZGUnKSwKKy0gICAgJ0xpbnV4JzogKCdsaW51eCcsICdub2Rl LWxpbnV4LXg2NCcsICdiaW4nLCAnbm9kZScpLAorLSAgICAnV2luZG93cyc6ICgnd2luJywgJ25v ZGUuZXhlJyksCistICB9W3BsYXRmb3JtLnN5c3RlbSgpXSkKKysgICNyZXR1cm4gb3NfcGF0aC5q b2luKG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyksICp7CisrICAjICAnRGFyd2luJzogKCdtYWMn LCBkYXJ3aW5fbmFtZSwgJ2JpbicsICdub2RlJyksCisrICAjICAnTGludXgnOiAoJ2xpbnV4Jywg J25vZGUtbGludXgteDY0JywgJ2JpbicsICdub2RlJyksCisrICAjICAnV2luZG93cyc6ICgnd2lu JywgJ25vZGUuZXhlJyksCisrICAjfVtwbGF0Zm9ybS5zeXN0ZW0oKV0pCisrICByZXR1cm4gIi91 c3IvYmluL25vZGUiCisgCisgCisgZGVmIFJ1bk5vZGUoY21kX3BhcnRzLCBzdGRvdXQ9Tm9uZSk6 CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1j cm9zcy1idWlsZC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLWNyb3NzLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNTNkZjQ5MGJhYzk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0 L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tY3Jvc3MtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw2NSBA QAorLS0tIGEvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLm9yaWcKKysrKyBiL2J1aWxk L2NvbmZpZy9jb21waWxlci9CVUlMRC5nbgorQEAgLTU1LDYgKzU1LDEwIEBACisgfQorIAorIGRl Y2xhcmVfYXJncygpIHsKKysgIGlzX211c2wgPSBmYWxzZQorK30KKysKKytkZWNsYXJlX2FyZ3Mo KSB7CisgICAjIE5vcm1hbGx5LCBBbmRyb2lkIGJ1aWxkcyBhcmUgbGlnaHRseSBvcHRpbWl6ZWQs IGV2ZW4gZm9yIGRlYnVnIGJ1aWxkcywgdG8KKyAgICMga2VlcCBiaW5hcnkgc2l6ZSBkb3duLiBT ZXR0aW5nIHRoaXMgZmxhZyB0byB0cnVlIGRpc2FibGVzIHN1Y2ggb3B0aW1pemF0aW9uCisgICBh bmRyb2lkX2Z1bGxfZGVidWcgPSBmYWxzZQorQEAgLTkxNyw4ICs5MTcsMTMgQEAKKyAgICAgfSBl bHNlIGlmIChjdXJyZW50X2NwdSA9PSAiYXJtNjQiKSB7CisgICAgICAgaWYgKGlzX2NsYW5nICYm ICFpc19hbmRyb2lkICYmICFpc19uYWNsICYmICFpc19mdWNoc2lhICYmCisgICAgICAgICAgICEo aXNfY2hyb21lb3NfbGFjcm9zICYmIGlzX2Nocm9tZW9zX2RldmljZSkpIHsKKy0gICAgICAgIGNm bGFncyArPSBbICItLXRhcmdldD1hYXJjaDY0LWxpbnV4LWdudSIgXQorLSAgICAgICAgbGRmbGFn cyArPSBbICItLXRhcmdldD1hYXJjaDY0LWxpbnV4LWdudSIgXQorKyAgICAgICAgaWYgKGlzX211 c2wpIHsKKysgICAgICAgICAgY2ZsYWdzICs9IFsgIi0tdGFyZ2V0PWFhcmNoNjQtbGludXgtbXVz bCIgXQorKyAgICAgICAgICBsZGZsYWdzICs9IFsgIi0tdGFyZ2V0PWFhcmNoNjQtbGludXgtbXVz bCIgXQorKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgY2ZsYWdzICs9IFsgIi0tdGFyZ2V0 PWFhcmNoNjQtbGludXgtZ251IiBdCisrICAgICAgICAgIGxkZmxhZ3MgKz0gWyAiLS10YXJnZXQ9 YWFyY2g2NC1saW51eC1nbnUiIF0KKysgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgaWYgKGlz X2FuZHJvaWQpIHsKKyAgICAgICAgICMgT3V0bGluZSBhdG9taWNzIGNyYXNoIG9uIEV4eW5vcyA5 ODEwLiBodHRwOi8vY3JidWcuY29tLzEyNzI3OTUKKy0tLSBhL2J1aWxkL3Rvb2xjaGFpbi9saW51 eC91bmJ1bmRsZS9CVUlMRC5nbi5vcmlnCisrKysgYi9idWlsZC90b29sY2hhaW4vbGludXgvdW5i dW5kbGUvQlVJTEQuZ24KK0BAIC0zOSwzICszOSwyMiBAQAorICAgICBjdXJyZW50X29zID0gaG9z dF9vcworICAgfQorIH0KKysKKytnY2NfdG9vbGNoYWluKCJ2OF9zbmFwc2hvdF9jcm9zcyIpIHsK KysgIGNjID0gZ2V0ZW52KCJCVUlMRF9DQyIpCisrICBjeHggPSBnZXRlbnYoIkJVSUxEX0NYWCIp CisrICBhciA9IGdldGVudigiQlVJTERfQVIiKQorKyAgbm0gPSBnZXRlbnYoIkJVSUxEX05NIikK KysgIGxkID0gY3h4CisrCisrICBleHRyYV9jZmxhZ3MgPSBnZXRlbnYoIkJVSUxEX0NGTEFHUyIp CisrICBleHRyYV9jcHBmbGFncyA9IGdldGVudigiQlVJTERfQ1BQRkxBR1MiKQorKyAgZXh0cmFf Y3h4ZmxhZ3MgPSBnZXRlbnYoIkJVSUxEX0NYWEZMQUdTIikKKysgIGV4dHJhX2xkZmxhZ3MgPSBn ZXRlbnYoIkJVSUxEX0xERkxBR1MiKQorKworKyAgdG9vbGNoYWluX2FyZ3MgPSB7CisrICAgIGN1 cnJlbnRfY3B1ID0gaG9zdF9jcHUKKysgICAgY3VycmVudF9vcyA9IGhvc3Rfb3MKKysgICAgdjhf Y3VycmVudF9jcHUgPSB0YXJnZXRfY3B1CisrICB9CisrfQorLS0tIGEvYnVpbGQvY29uZmlnL2xp bnV4L3BrZ19jb25maWcuZ25pLm9yaWcKKysrKyBiL2J1aWxkL2NvbmZpZy9saW51eC9wa2dfY29u ZmlnLmduaQorQEAgLTkxLDcgKzkxLDcgQEAKKyAgIGFzc2VydChkZWZpbmVkKGludm9rZXIucGFj a2FnZXMpLAorICAgICAgICAgICJWYXJpYWJsZSB8cGFja2FnZXN8IG11c3QgYmUgZGVmaW5lZCB0 byBiZSBhIGxpc3QgaW4gcGtnX2NvbmZpZy4iKQorICAgY29uZmlnKHRhcmdldF9uYW1lKSB7Cist ICAgIGlmIChob3N0X3Rvb2xjaGFpbiA9PSBjdXJyZW50X3Rvb2xjaGFpbikgeworKyAgICBpZiAo Y3VycmVudF9jcHUgIT0gdGFyZ2V0X2NwdSkgeworICAgICAgIGFyZ3MgPSBjb21tb25fcGtnX2Nv bmZpZ19hcmdzICsgaG9zdF9wa2dfY29uZmlnX2FyZ3MgKyBpbnZva2VyLnBhY2thZ2VzCisgICAg IH0gZWxzZSB7CisgICAgICAgYXJncyA9IGNvbW1vbl9wa2dfY29uZmlnX2FyZ3MgKyBwa2dfY29u ZmlnX2FyZ3MgKyBpbnZva2VyLnBhY2thZ2VzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1jdXJzZWReVXNjb3BlZF9maWxlLnBhdGNoIGIvc3Jj cGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tY3Vyc2VkXlVzY29wZWRfZmls ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJlNTQzM2Y3 YWJjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVz L2Nocm9taXVtLWN1cnNlZF5Vc2NvcGVkX2ZpbGUucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0t IGEvYmFzZS9maWxlcy9zY29wZWRfZmlsZV9saW51eC5jYy5vcmlnCisrKysgYi9iYXNlL2ZpbGVz L3Njb3BlZF9maWxlX2xpbnV4LmNjCitAQCAtNzcsMTUgKzc3LDMgQEAKKyB9CisgCisgfSAgLy8g bmFtZXNwYWNlIGJhc2UKKy0KKy1leHRlcm4gIkMiIHsKKy0KKy1pbnQgX19jbG9zZShpbnQpOwor LQorLV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSwgbm9pbmxpbmUpKSBpbnQg Y2xvc2UoaW50IGZkKSB7CistICBpZiAoYmFzZTo6SXNGRE93bmVkKGZkKSAmJiBnX2lzX293bmVy c2hpcF9lbmZvcmNlZCkKKy0gICAgQ3Jhc2hPbkZkT3duZXJzaGlwVmlvbGF0aW9uKCk7CistICBy ZXR1cm4gX19jbG9zZShmZCk7CistfQorLQorLX0gIC8vIGV4dGVybiAiQyIKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWZjLWNhY2hlLXZlcnNp b24ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1mYy1j YWNoZS12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uM2I3Njg5NzhhNDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tZmMtY2FjaGUtdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDEz IEBACitpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlIHZlcnNpb24sIHVzZSB0aGUgZGVmaW5lZCBt YWNyby4KKy0tCistLS0gYS90aGlyZF9wYXJ0eS90ZXN0X2ZvbnRzL2ZvbnRjb25maWcvZ2VuZXJh dGVfZm9udGNvbmZpZ19jYWNoZXMuY2MKKysrKyBiL3RoaXJkX3BhcnR5L3Rlc3RfZm9udHMvZm9u dGNvbmZpZy9nZW5lcmF0ZV9mb250Y29uZmlnX2NhY2hlcy5jYworQEAgLTU2LDcgKzU2LDcgQEAK KyAgIEZjRmluaSgpOworIAorICAgLy8gQ2hlY2sgZXhpc3RlbmNlIG9mIGludGVuZGVkIGZvbnRj b25maWcgY2FjaGUgZmlsZS4KKy0gIGF1dG8gY2FjaGUgPSBmb250Y29uZmlnX2NhY2hlcyArICIv IiArIGtDYWNoZUtleSArICItbGU2NC5jYWNoZS05IjsKKysgIGF1dG8gY2FjaGUgPSBmb250Y29u ZmlnX2NhY2hlcyArICIvIiArIGtDYWNoZUtleSArICItbGU2NC5jYWNoZS0iICsgRkNfQ0FDSEVf VkVSU0lPTjsKKyAgIGJvb2wgY2FjaGVfZXhpc3RzID0gYWNjZXNzKGNhY2hlLmNfc3RyKCksIEZf T0spID09IDA7CisgICByZXR1cm4gIWNhY2hlX2V4aXN0czsKKyB9CmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtYWFyY2g2NC1tdXNsLW1l bW9yeS10YWdnaW5nLW1hY3Jvcy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRj aGVzL2Nocm9taXVtLWZpeC1hYXJjaDY0LW11c2wtbWVtb3J5LXRhZ2dpbmctbWFjcm9zLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWZjZGFlMTc5ODUwCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tZml4LWFhcmNoNjQtbXVzbC1tZW1vcnktdGFnZ2luZy1tYWNyb3MucGF0Y2gKQEAgLTAsMCAr MSwyOSBAQAorLS0tIGEvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci90YWdnaW5n LmNjCisrKysgYi9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3RhZ2dpbmcuY2MK K0BAIC0yOCwxMyArMjgsMjUgQEAKKyAjZW5kaWYKKyAjZW5kaWYKKyAKKy0jaWZuZGVmIEhBU19Q Ul9NVEVfTUFDUk9TCisrI2lmbmRlZiBQUl9NVEVfVENGX1NISUZUCisgI2RlZmluZSBQUl9NVEVf VENGX1NISUZUIDEKKysjZW5kaWYKKysjaWZuZGVmIFBSX01URV9UQ0ZfTk9ORQorICNkZWZpbmUg UFJfTVRFX1RDRl9OT05FICgwVUwgPDwgUFJfTVRFX1RDRl9TSElGVCkKKysjZW5kaWYKKysjaWZu ZGVmIFBSX01URV9UQ0ZfU1lOQworICNkZWZpbmUgUFJfTVRFX1RDRl9TWU5DICgxVUwgPDwgUFJf TVRFX1RDRl9TSElGVCkKKysjZW5kaWYKKysjaWZuZGVmIFBSX01URV9UQ0ZfQVNZTkMKKyAjZGVm aW5lIFBSX01URV9UQ0ZfQVNZTkMgKDJVTCA8PCBQUl9NVEVfVENGX1NISUZUKQorKyNlbmRpZgor KyNpZm5kZWYgUFJfTVRFX1RDRl9NQVNLCisgI2RlZmluZSBQUl9NVEVfVENGX01BU0sgKDNVTCA8 PCBQUl9NVEVfVENGX1NISUZUKQorKyNlbmRpZgorKyNpZm5kZWYgUFJfTVRFX1RBR19TSElGVAor ICNkZWZpbmUgUFJfTVRFX1RBR19TSElGVCAzCisrI2VuZGlmCisrI2lmbmRlZiBQUl9NVEVfVEFH X01BU0sKKyAjZGVmaW5lIFBSX01URV9UQUdfTUFTSyAoMHhmZmZmVUwgPDwgUFJfTVRFX1RBR19T SElGVCkKKyAjZW5kaWYKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLWZpeC1hcmd1bWVudF9zcGVjLWlzbmFuLWlzaW5mLnBhdGNo IGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LWFyZ3VtZW50 X3NwZWMtaXNuYW4taXNpbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi44MzdhMDMxMmRjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9u MjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtYXJndW1lbnRfc3BlYy1pc25hbi1pc2luZi5w YXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9leHRlbnNpb25zL3JlbmRlcmVyL2JpbmRpbmdz L2FyZ3VtZW50X3NwZWMuY2MKKysrKyBiL2V4dGVuc2lvbnMvcmVuZGVyZXIvYmluZGluZ3MvYXJn dW1lbnRfc3BlYy5jYworQEAgLTIsNiArMiw4IEBACisgLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIC8vIGZv dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisrI2luY2x1ZGUgPGNtYXRoPgorKworICNpbmNs dWRlICJleHRlbnNpb25zL3JlbmRlcmVyL2JpbmRpbmdzL2FyZ3VtZW50X3NwZWMuaCIKKyAKKyAj aW5jbHVkZSAiYmFzZS9jaGVjay5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LWNvbnN0ZXhwci1uYXJyb3dpbmcucGF0Y2ggYi9zcmNw a2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtY29uc3RleHByLW5hcnJv d2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU3MGNh NmU2OWE4MAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRj aGVzL2Nocm9taXVtLWZpeC1jb25zdGV4cHItbmFycm93aW5nLnBhdGNoCkBAIC0wLDAgKzEsMjEg QEAKKy0tLSBhL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL21lZGlhL3dlYl9t ZWRpYV9wbGF5ZXJfaW1wbC5jYy5vcmlnCisrKysgYi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9tZWRpYS93ZWJfbWVkaWFfcGxheWVyX2ltcGwuY2MKK0BAIC0zODgxLDE1ICsz ODgxLDE1IEBACisgICAgIGNvbnN0IFQmLi4uIHZhbHVlcykgeworICAgc3RkOjpzdHJpbmcgc3Ry a2V5ID0gc3RkOjpzdHJpbmcoa2V5KTsKKyAKKy0gIGlmIGNvbnN0ZXhwciAoRmxhZ3MgJiBrRW5j cnlwdGVkKSB7CisrICBpZiBjb25zdGV4cHIgKEZsYWdzICYga0VuY3J5cHRlZCAhPSAwKSB7Cisg ICAgIGlmIChpc19lbmNyeXB0ZWRfKQorICAgICAgIFVtYUZ1bmN0aW9uKHN0cmtleSArICIuRU1F IiwgdmFsdWVzLi4uKTsKKyAgIH0KKyAKKy0gIGlmIGNvbnN0ZXhwciAoRmxhZ3MgJiBrVG90YWwp CisrICBpZiBjb25zdGV4cHIgKEZsYWdzICYga1RvdGFsICE9IDApCisgICAgIFVtYUZ1bmN0aW9u KHN0cmtleSArICIuQWxsIiwgdmFsdWVzLi4uKTsKKyAKKy0gIGlmIGNvbnN0ZXhwciAoRmxhZ3Mg JiBrUGxheWJhY2tUeXBlKSB7CisrICBpZiBjb25zdGV4cHIgKEZsYWdzICYga1BsYXliYWNrVHlw ZSAhPSAwKSB7CisgICAgIGF1dG8gZGVtdXhlcl90eXBlID0gR2V0RGVtdXhlclR5cGUoKTsKKyAg ICAgaWYgKCFkZW11eGVyX3R5cGUuaGFzX3ZhbHVlKCkpCisgICAgICAgcmV0dXJuOwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LWRhd24t cGxhdGZvcm0ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1maXgtZGF3bi1wbGF0Zm9ybS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjkzNjMxMjk0ZmM3NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ry b24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWZpeC1kYXduLXBsYXRmb3JtLnBhdGNoCkBAIC0w LDAgKzEsNjIgQEAKK0Zyb20gZjgxNWU4MzNjOTQ2YTU5NjIwYTJjYTlkZjM3YTFkYTc0NmY2MTQ2 MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5v cmc+CitEYXRlOiBTYXQsIDEgT2N0IDIwMjIgMDA6MjE6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRD SF0gZml4IGRhd24gYnVpbGQgZm9yIHBwYzY0CisKKy0tLQorIHRoaXJkX3BhcnR5L2Rhd24vc3Jj L2Rhd24vY29tbW9uL0Fzc2VydC5jcHAgfCAgNCArKy0tCisgdGhpcmRfcGFydHkvZGF3bi9zcmMv ZGF3bi9jb21tb24vUGxhdGZvcm0uaCB8IDEwICsrKysrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQs IDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L2Rhd24vc3JjL2Rhd24vY29tbW9uL0Fzc2VydC5jcHAgYi90aGlyZF9wYXJ0eS9kYXduL3Ny Yy9kYXduL2NvbW1vbi9Bc3NlcnQuY3BwCitpbmRleCBlY2M5MmRmYy4uOGVlOTFhOTAgMTAwNjQ0 CistLS0gYS90aGlyZF9wYXJ0eS9kYXduL3NyYy9kYXduL2NvbW1vbi9Bc3NlcnQuY3BwCisrKysg Yi90aGlyZF9wYXJ0eS9kYXduL3NyYy9kYXduL2NvbW1vbi9Bc3NlcnQuY3BwCitAQCAtMzEsOSAr MzEsOSBAQCB2b2lkIEJyZWFrUG9pbnQoKSB7CisgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJl YnJlYWsiKTsKKyAjZWxpZiBEQVdOX1BMQVRGT1JNX0lTKE1JUFMpCisgICAgIF9fYXNtX18gX192 b2xhdGlsZV9fKCJicmVhayIpOworLSNlbGlmIERBV05fUExBVEZPUk1fSVMoUzM5MCkgfHwgREFX Tl9QTEFURk9STV9JU18oUzM5MFgpCisrI2VsaWYgREFXTl9QTEFURk9STV9JUyhTMzkwKSB8fCBE QVdOX1BMQVRGT1JNX0lTKFMzOTBYKQorICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLndvcmQg MHgwMDAxIik7CistI2VsaWYgREFXTl9QTEFURk9STV9JUyhQUEMpIHx8IERBV05fUExBVEZPUk1f SVNfKFBQQzY0KQorKyNlbGlmIERBV05fUExBVEZPUk1fSVMoUFBDKSB8fCBEQVdOX1BMQVRGT1JN X0lTKFBQQzY0KQorICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygidHdnZSAyLDIiKTsKKyAjZWxz ZQorICNlcnJvciAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0iCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFy dHkvZGF3bi9zcmMvZGF3bi9jb21tb24vUGxhdGZvcm0uaCBiL3RoaXJkX3BhcnR5L2Rhd24vc3Jj L2Rhd24vY29tbW9uL1BsYXRmb3JtLmgKK2luZGV4IDM5ZDVlYjQxLi4yMDExMzY3ZCAxMDA2NDQK Ky0tLSBhL3RoaXJkX3BhcnR5L2Rhd24vc3JjL2Rhd24vY29tbW9uL1BsYXRmb3JtLmgKKysrKyBi L3RoaXJkX3BhcnR5L2Rhd24vc3JjL2Rhd24vY29tbW9uL1BsYXRmb3JtLmgKK0BAIC0xMjQsMTUg KzEyNCwxNSBAQAorICNkZWZpbmUgREFXTl9QTEFURk9STV9JU19NSVBTNjQgMQorICNlbmRpZgor IAorLSNlbGlmIGRlZmllbmQoX19zMzkwX18pCisrI2VsaWYgZGVmaW5lZChfX3MzOTBfXykKKyAj ZGVmaW5lIERBV05fUExBVEZPUk1fSVNfUzM5MCAxCistI2VsaWYgZGVmaWVuZChfX3MzOTB4X18p CisrI2VsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgI2RlZmluZSBEQVdOX1BMQVRGT1JNX0lTX1Mz OTBYIDEKKyAKKy0jZWxpZiBkZWZpbmVkKF9fUFBDX18pCistI2RlZmluZSBEQVdOX1BMQVRGT1JN X0lTX1BQQyAxCisgI2VsaWYgZGVmaW5lZChfX1BQQzY0X18pCisgI2RlZmluZSBEQVdOX1BMQVRG T1JNX0lTX1BQQzY0IDEKKysjZWxpZiBkZWZpbmVkKF9fUFBDX18pCisrI2RlZmluZSBEQVdOX1BM QVRGT1JNX0lTX1BQQyAxCisgCisgI2Vsc2UKKyAjZXJyb3IgIlVuc3VwcG9ydGVkIHBsYXRmb3Jt LiIKK0BAIC0xNDksNyArMTQ5LDcgQEAKKyBzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplb2YoY2hh cikpID09IDgsICJFeHBlY3Qgc2l6ZW9mKHNpemVfdCkgPT0gOCIpOworICNlbGlmIGRlZmluZWQo REFXTl9QTEFURk9STV9JU19JMzg2KSB8fCBkZWZpbmVkKERBV05fUExBVEZPUk1fSVNfQVJNMzIp IHx8ICAgXAorICAgICBkZWZpbmVkKERBV05fUExBVEZPUk1fSVNfUklTQ1YzMikgfHwgZGVmaW5l ZChEQVdOX1BMQVRGT1JNX0lTX01JUFMzMikgfHwgXAorLSAgICBkZWZpbmVkKERBV05fUExBVEZP Uk1fSVNfUzM5MCkgfHwgZGVmaW5lZChEQVdOX1BMQVRGT1JNX0lTX1BQQzMyKSB8fCAgICAgXAor KyAgICBkZWZpbmVkKERBV05fUExBVEZPUk1fSVNfUzM5MCkgfHwgZGVmaW5lZChEQVdOX1BMQVRG T1JNX0lTX1BQQykgfHwgICAgIFwKKyAgICAgZGVmaW5lZChEQVdOX1BMQVRGT1JNX0lTX0VNU0NS SVBURU4pIHx8IGRlZmluZWQoREFXTl9QTEFURk9STV9JU19MT09OR0FSQ0gzMikKKyAjZGVmaW5l IERBV05fUExBVEZPUk1fSVNfMzJfQklUIDEKKyBzdGF0aWNfYXNzZXJ0KHNpemVvZihzaXplb2Yo Y2hhcikpID09IDQsICJFeHBlY3Qgc2l6ZW9mKHNpemVfdCkgPT0gNCIpOworLS0gCisyLjM0LjEK KwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t Zml4LWxpYmMtdmVyc2lvbi1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVz L3BhdGNoZXMvY2hyb21pdW0tZml4LWxpYmMtdmVyc2lvbi1pbmNsdWRlLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDk0ZGNmNmRlYWM1Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LWxp YmMtdmVyc2lvbi1pbmNsdWRlLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKKy0tLSBhL2Nocm9tZS9i cm93c2VyL21ldHJpY3MvY2hyb21lX2Jyb3dzZXJfbWFpbl9leHRyYV9wYXJ0c19tZXRyaWNzLmNj CisrKysgYi9jaHJvbWUvYnJvd3Nlci9tZXRyaWNzL2Nocm9tZV9icm93c2VyX21haW5fZXh0cmFf cGFydHNfbWV0cmljcy5jYworQEAgLTYxLDggKzYxLDExIEBACisgCisgLy8gVE9ETyhjcmJ1Zy5j b20vMTA1MjM5Nyk6IFJldmlzaXQgdGhlIG1hY3JvIGV4cHJlc3Npb24gb25jZSBidWlsZCBmbGFn IHN3aXRjaAorIC8vIG9mIGxhY3Jvcy1jaHJvbWUgaXMgY29tcGxldGUuCistI2lmIGRlZmluZWQo X19HTElCQ19fKSAmJiAoQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01F T1NfTEFDUk9TKSkKKysjaWYgQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hS T01FT1NfTEFDUk9TKQorKworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8Z251 L2xpYmMtdmVyc2lvbi5oPgorKyNlbmRpZgorIAorICNpbmNsdWRlICJiYXNlL2xpbnV4X3V0aWwu aCIKKyAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19zcGxpdC5oIgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LW1pc3NpbmctVEVN UF9GQUlMVVJFX1JFVFJZLW1hY3JvLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0tZml4LW1pc3NpbmctVEVNUF9GQUlMVVJFX1JFVFJZLW1hY3JvLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjU2NzE3YjljZTMyCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tZml4LW1pc3NpbmctVEVNUF9GQUlMVVJFX1JFVFJZLW1hY3JvLnBhdGNoCkBAIC0wLDAgKzEs MjEgQEAKK1RoaXMgbWFjcm8gaXMgZGVmaW5lZCBpbiBnbGliYywgYnV0IG5vdCBtdXNsLgorCist LS0gYS9zYW5kYm94L2xpbnV4L3N1aWQvcHJvY2Vzc191dGlsLmgub3JpZworKysrIGIvc2FuZGJv eC9saW51eC9zdWlkL3Byb2Nlc3NfdXRpbC5oCitAQCAtMTEsNiArMTEsMTYgQEAKKyAjaW5jbHVk ZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorKy8vIFNvbWUgYWRkaXRp b25hbCBmdW5jdGlvbnMKKysjaWYgIWRlZmluZWQoVEVNUF9GQUlMVVJFX1JFVFJZKQorKyMgZGVm aW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCisrCShfX2V4dGVuc2lvbl9fCQkJ XAorKwkgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQlcCisrCSAgZG8gX19yZXN1bHQgPSAobG9uZyBp bnQpIChleHByZXNzaW9uKTsgXAorKwkgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8g PT0gRUlOVFIpOyBcCisrCSAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworIC8vIFRoaXMgYWRq dXN0cyAvcHJvYy9wcm9jZXNzL29vbV9zY29yZV9hZGogc28gdGhlIExpbnV4IE9PTSBraWxsZXIK KyAvLyB3aWxsIHByZWZlciBjZXJ0YWluIHByb2Nlc3MgdHlwZXMgb3ZlciBvdGhlcnMuIFRoZSBy YW5nZSBmb3IgdGhlCisgLy8gYWRqdXN0bWVudCBpcyBbLTEwMDAsIDEwMDBdLCB3aXRoIFswLCAx MDAwXSBiZWluZyB1c2VyIGFjY2Vzc2libGUuCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtbWlzc2luZy1jc3RkaW50LWluY2x1ZGUtbXVz bC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWZpeC1t aXNzaW5nLWNzdGRpbnQtaW5jbHVkZS1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNmNhMjg5N2YzZGQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LW1pc3NpbmctY3N0ZGludC1p bmNsdWRlLW11c2wucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIGEvbmV0L3RoaXJkX3BhcnR5 L3F1aWNoZS9zcmMvcXVpY2hlL2h0dHAyL2FkYXB0ZXIvd2luZG93X21hbmFnZXIuaAorKysrIGIv bmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9zcmMvcXVpY2hlL2h0dHAyL2FkYXB0ZXIvd2luZG93X21h bmFnZXIuaAorQEAgLTMsNiArMyw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorIAorKyNp bmNsdWRlIDxjc3RkaW50PgorICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorIAorICNpbmNsdWRlICJx dWljaGUvY29tbW9uL3BsYXRmb3JtL2FwaS9xdWljaGVfZXhwb3J0LmgiCmRpZmYgLS1naXQgYS9z cmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtbXVzbC1taXNzaW5n LXVuaXN0ZF9oLWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1maXgtbXVzbC1taXNzaW5nLXVuaXN0ZF9oLWluY2x1ZGUucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMTRkMDA5YTllMGIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgt bXVzbC1taXNzaW5nLXVuaXN0ZF9oLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0t IGEvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5oCisrKysgYi9zYW5kYm94L2xp bnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmgKK0BAIC0xMyw2ICsxMyw3IEBACisgCisgI2luY2x1 ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyAK KyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9jYXBhYmlsaXR5LmgiCisg I2luY2x1ZGUgInNhbmRib3gvc2FuZGJveF9leHBvcnQuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWZpeC1wZXJmZXR0by1HZXRUaHJlYWRO YW1lLW11c2wucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1maXgtcGVyZmV0dG8tR2V0VGhyZWFkTmFtZS1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDAxNGQxZWU1ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LXBlcmZldHRvLUdl dFRocmVhZE5hbWUtbXVzbC5wYXRjaApAQCAtMCwwICsxLDIyIEBACistLS0gYS90aGlyZF9wYXJ0 eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL2V4dC9iYXNlL3RocmVhZF91dGlscy5oCisrKysg Yi90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL2V4dC9iYXNlL3RocmVhZF91 dGlscy5oCitAQCAtMzAsNyArMzAsOCBAQAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgI2VuZGlm CisgCistI2lmIFBFUkZFVFRPX0JVSUxERkxBRyhQRVJGRVRUT19PU19BTkRST0lEKQorKyNpZiBQ RVJGRVRUT19CVUlMREZMQUcoUEVSRkVUVE9fT1NfQU5EUk9JRCkgfHwgXAorKyAgICAoUEVSRkVU VE9fQlVJTERGTEFHKFBFUkZFVFRPX09TX0xJTlVYKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pKQor ICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyAjZW5kaWYKKyAKK0BAIC01OCw3ICs1OSw4IEBACisg CisgaW5saW5lIGJvb2wgR2V0VGhyZWFkTmFtZShzdGQ6OnN0cmluZyYgb3V0X3Jlc3VsdCkgewor ICAgY2hhciBidWZbMTZdID0ge307CistI2lmIFBFUkZFVFRPX0JVSUxERkxBRyhQRVJGRVRUT19P U19BTkRST0lEKQorKyNpZiBQRVJGRVRUT19CVUlMREZMQUcoUEVSRkVUVE9fT1NfQU5EUk9JRCkg fHwgXAorKyAgICAoUEVSRkVUVE9fQlVJTERGTEFHKFBFUkZFVFRPX09TX0xJTlVYKSAmJiAhZGVm aW5lZChfX0dMSUJDX18pKQorICAgaWYgKHByY3RsKFBSX0dFVF9OQU1FLCBidWYpICE9IDApCisg ICAgIHJldHVybiBmYWxzZTsKKyAjZWxzZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0 L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tZml4LXN3aWZ0c2hhZGVyLWxsdm0tbXVzbC1jb25maWcu cGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1maXgtc3dp ZnRzaGFkZXItbGx2bS1tdXNsLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJv bjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbGliY19tYWxsb2MucGF0Y2ggYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxNGYyODc2NWQ2OQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNf bWFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKKy0tLSBhL2Jhc2UvcHJvY2Vzcy9tZW1vcnlf bGludXguY2MKKysrKyBiL2Jhc2UvcHJvY2Vzcy9tZW1vcnlfbGludXguY2MKK0BAIC0xOCw2ICsx OCwxMyBAQAorICNpbmNsdWRlICJiYXNlL3RocmVhZGluZy90aHJlYWRfcmVzdHJpY3Rpb25zLmgi CisgI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgorIAorKyNpZiBkZWZpbmVkKExJQkNf R0xJQkMpCisrZXh0ZXJuICJDIiB7CisrZXh0ZXJuIHZvaWQgKl9fbGliY19tYWxsb2Moc2l6ZV90 IHNpemUpOworK2V4dGVybiB2b2lkICpfX2xpYmNfZnJlZSh2b2lkICpwdHIpOworK30KKysjZW5k aWYKKysKKyBuYW1lc3BhY2UgYmFzZSB7CisgCisgbmFtZXNwYWNlIHsKK0BAIC0xMTEsNyArMTE4 LDcgQEAKKyAjZWxpZiBkZWZpbmVkKE1FTU9SWV9UT09MX1JFUExBQ0VTX0FMTE9DQVRPUikgfHwg IWRlZmluZWQoTElCQ19HTElCQykKKyAgICpyZXN1bHQgPSBtYWxsb2Moc2l6ZSk7CisgI2VsaWYg ZGVmaW5lZChMSUJDX0dMSUJDKQorLSAgKnJlc3VsdCA9IF9fbGliY19tYWxsb2Moc2l6ZSk7Cisr ICAqcmVzdWx0ID0gOjpfX2xpYmNfbWFsbG9jKHNpemUpOworICNlbmRpZgorICAgcmV0dXJuICpy ZXN1bHQgIT0gbnVsbHB0cjsKKyB9CitAQCAtMTIyLDcgKzEyOSw3IEBACisgI2VsaWYgZGVmaW5l ZChNRU1PUllfVE9PTF9SRVBMQUNFU19BTExPQ0FUT1IpIHx8ICFkZWZpbmVkKExJQkNfR0xJQkMp CisgICBmcmVlKHB0cik7CisgI2VsaWYgZGVmaW5lZChMSUJDX0dMSUJDKQorLSAgX19saWJjX2Zy ZWUocHRyKTsKKysgIDo6X19saWJjX2ZyZWUocHRyKTsKKyAjZW5kaWYKKyB9CisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLW5vLWV4 ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t bXVzbC1uby1leGVjaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmZhYzJiNmQxOTBlNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24y NC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW11c2wtbm8tZXhlY2luZm8ucGF0Y2gKQEAgLTAsMCAr MSw5NCBAQAorU291cmNlOiBodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvYXBvcnRzL3BsYWlu L2NvbW11bml0eS9jaHJvbWl1bS9uby1leGVjaW5mby5wYXRjaAorbXVzbCBkb2VzIG5vdCBoYXZl IGV4ZWNpbmZvLmgsIGFuZCBoZW5jZSBubyBpbXBsZW1lbnRhdGlvbiBvZgorLiBiYWNrdHJhY2Uo KQorLiBiYWNrdHJhY2Vfc3ltYm9scygpCitmb3IgZGlzY3Vzc2lvbiBhYm91dCB0aGlzLCBzZWUg aHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL211c2wvMjAyMS8wNy8xNi8xCistLQorLS0t IGEvdjgvc3JjL2NvZGVnZW4vZXh0ZXJuYWwtcmVmZXJlbmNlLXRhYmxlLmNjCisrKysgYi92OC9z cmMvY29kZWdlbi9leHRlcm5hbC1yZWZlcmVuY2UtdGFibGUuY2MKK0BAIC0xMSw3ICsxMSw5IEBA CisKKyAjaWYgZGVmaW5lZChERUJVRykgJiYgZGVmaW5lZChWOF9PU19MSU5VWCkgJiYgIWRlZmlu ZWQoVjhfT1NfQU5EUk9JRCkKKyAjZGVmaW5lIFNZTUJPTElaRV9GVU5DVElPTgorKyNpZiBkZWZp bmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKysjZW5kaWYKKworICNpbmNs dWRlIDx2ZWN0b3I+CisKK0BAIC05Niw3ICs5OCw3IEBACisgfQorCisgY29uc3QgY2hhciogRXh0 ZXJuYWxSZWZlcmVuY2VUYWJsZTo6UmVzb2x2ZVN5bWJvbCh2b2lkKiBhZGRyZXNzKSB7CistI2lm ZGVmIFNZTUJPTElaRV9GVU5DVElPTgorKyNpZiBkZWZpbmVkKFNZTUJPTElaRV9GVU5DVElPTikg JiYgZGVmaW5lZChfX0dMSUJDX18pCisgICBjaGFyKiogbmFtZXMgPSBiYWNrdHJhY2Vfc3ltYm9s cygmYWRkcmVzcywgMSk7CisgICBjb25zdCBjaGFyKiBuYW1lID0gbmFtZXNbMF07CisgICAvLyBU aGUgYXJyYXkgb2YgbmFtZXMgaXMgbWFsbG9jJ2VkLiBIb3dldmVyLCBlYWNoIG5hbWUgc3RyaW5n IGlzIHN0YXRpYworLS0tIGEvdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2 bS1zdWJ6ZXJvL2J1aWxkL0xpbnV4L2luY2x1ZGUvbGx2bS9Db25maWcvY29uZmlnLmgKKysrKyBi L3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tc3ViemVyby9idWlsZC9M aW51eC9pbmNsdWRlL2xsdm0vQ29uZmlnL2NvbmZpZy5oCitAQCAtMTcsNyArMTcsMTEgQEAKKyAj ZGVmaW5lIEVOQUJMRV9DUkFTSF9PVkVSUklERVMgMAorIAorIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSBgYmFja3RyYWNlJyBmdW5jdGlvbi4gKi8KKysjaWZkZWYgX19HTElCQ19fCisg I2RlZmluZSBIQVZFX0JBQ0tUUkFDRSAxCisrI2Vsc2UKKysjZGVmaW5lIEhBVkVfQkFDS1RSQUNF IDAKKysjZW5kaWYKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPENyYXNoUmVw b3J0ZXJDbGllbnQuaD4gaGVhZGVyIGZpbGUuICovCisgLyogI3VuZGVmIEhBVkVfQ1JBU0hSRVBP UlRFUkNMSUVOVF9IICovCitAQCAtNTgsNyArNjIsMTEgQEAKKyAjZGVmaW5lIEhBVkVfRVJSTk9f SCAxCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxleGVjaW5mby5oPiBoZWFk ZXIgZmlsZS4gKi8KKysjaWZkZWYgX19HTElCQ19fCisgI2RlZmluZSBIQVZFX0VYRUNJTkZPX0gg MQorKyNlbHNlCisrI2RlZmluZSBIQVZFX0VYRUNJTkZPX0ggMAorKyNlbmRpZgorIAorIC8qIERl ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICovCisgI2Rl ZmluZSBIQVZFX0ZDTlRMX0ggMQorLS0tIGEvYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYworKysr IGIvYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYworQEAgLTI1MSw3ICsyNTMsOSBAQAorIH0KKyAK KyB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtKHN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0 IHsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICBPdXRwdXRU b1N0cmVhbVdpdGhQcmVmaXgob3MsIG51bGxwdHIpOworKyNlbmRpZgorIH0KKyAKKyBzdGQ6OnN0 cmluZyBTdGFja1RyYWNlOjpUb1N0cmluZygpIGNvbnN0IHsKK0BAIC0yODEsNyArMjgxLDcgQEAK KyB9Cisgc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmdXaXRoUHJlZml4KGNvbnN0IGNo YXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKKyAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsK Ky0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5l ZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICBPdXRwdXRUb1N0cmVhbVdpdGhQcmVm aXgoJnN0cmVhbSwgcHJlZml4X3N0cmluZyk7CisgI2VuZGlmCisgICByZXR1cm4gc3RyZWFtLnN0 cigpOworLS0tIGEvYmFzZS9kZWJ1Zy9zdGFja190cmFjZV91bml0dGVzdC5jYworKysrIGIvYmFz ZS9kZWJ1Zy9zdGFja190cmFjZV91bml0dGVzdC5jYworQEAgLTMzLDcgKzMzLDcgQEAKKyB0eXBl ZGVmIHRlc3Rpbmc6OlRlc3QgU3RhY2tUcmFjZVRlc3Q7CisgI2VuZGlmCisgCistI2lmICFkZWZp bmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmICFkZWZpbmVkKF9fVUNMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpICYmIGRlZmluZWQoX19HTElCQ19fKQorIC8vIFN0YWNrVHJh Y2U6Ok91dHB1dFRvU3RyZWFtKCkgaXMgbm90IGltcGxlbWVudGVkIHVuZGVyIHVjbGliYywgbm9y IEFJWC4KKyAvLyBTZWUgaHR0cHM6Ly9jcmJ1Zy5jb20vNzA2NzI4CisgCitAQCAtMTU2LDcgKzE1 Niw3IEBACisgCisgI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQorIAorLSNpZiBCVUlMREZMQUcoSVNfUE9TSVgpICYmICFCVUlMREZMQUcoSVNfQU5EUk9J RCkKKysjaWYgKEJVSUxERkxBRyhJU19QT1NJWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pKSAmJiAh QlVJTERGTEFHKElTX0FORFJPSUQpCisgI2lmICFCVUlMREZMQUcoSVNfSU9TKQorIHN0YXRpYyBj aGFyKiBuZXdBcnJheSgpIHsKKyAgIC8vIENsYW5nIHdhcm5zIGFib3V0IHRoZSBtaXNtYXRjaGVk IG5ld1tdL2RlbGV0ZSBpZiB0aGV5IG9jY3VyIGluIHRoZSBzYW1lCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLW5vLW1hbGxpbmZvLnBh dGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbXVzbC1uby1t YWxsaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNk NzI4ZWNmYjExMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9w YXRjaGVzL2Nocm9taXVtLW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAK K1NvdXJjZTogaHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2Fwb3J0cy9wbGFpbi9jb21tdW5p dHkvY2hyb21pdW0vbm8tbWFsbGluZm8ucGF0Y2gKK211c2wgZG9lcyBub3QgaW1wbGVtZW50IG1h bGxpbmZvKCkvbWFsbGluZm8yKCkKKyhvciByYXRoZXIsIG1hbGxvYy1uZywgbXVzbCdzIGFsbG9j YXRvciwgZG9lc24ndCkKKy0tCistLS0gYS9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3By b3ZpZGVyLmNjCisrKysgYi9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNj CitAQCAtMTg1LDcgKzE4NSw2IEBACisgI2RlZmluZSBNQUxMSU5GTzJfRk9VTkRfSU5fTElCQwor ICAgc3RydWN0IG1hbGxpbmZvMiBpbmZvID0gbWFsbGluZm8yKCk7CisgI2VuZGlmCistI2VuZGlm ICAvLyBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKKyAjaWYg IWRlZmluZWQoTUFMTElORk8yX0ZPVU5EX0lOX0xJQkMpCisgICBzdHJ1Y3QgbWFsbGluZm8gaW5m byA9IG1hbGxpbmZvKCk7CisgI2VuZGlmCitAQCAtMjA1LDYgKzIwNCw3IEBACisgICAgIHN5c19h bGxvY19kdW1wLT5BZGRTY2FsYXIoTWVtb3J5QWxsb2NhdG9yRHVtcDo6a05hbWVTaXplLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeUFsbG9jYXRvckR1bXA6OmtVbml0c0J5 dGVzLCBpbmZvLnVvcmRibGtzKTsKKyAgIH0KKysjZW5kaWYgIC8vIGRlZmluZWQoX19HTElCQ19f KSAmJiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKQorIH0KKyAjZW5kaWYKKyAKK0BAIC0zMzksNyAr MzQwLDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICAmYWxsb2NhdGVkX29iamVjdHNfY291bnQp OworICNlbGlmIEJVSUxERkxBRyhJU19GVUNIU0lBKQorIC8vIFRPRE8oZnVjaHNpYSk6IFBvcnQs IHNlZSBodHRwczovL2NyYnVnLmNvbS83MDY1OTIuCistI2Vsc2UKKysjZWxpZiBkZWZpbmVkKF9f R0xJQkNfXykKKyAgIFJlcG9ydE1hbGxpbmZvU3RhdHMoLypwbWQ9Ki9udWxscHRyLCAmdG90YWxf dmlydHVhbF9zaXplLCAmcmVzaWRlbnRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJmFs bG9jYXRlZF9vYmplY3RzX3NpemUsICZhbGxvY2F0ZWRfb2JqZWN0c19jb3VudCk7CisgI2VuZGlm CistLS0gYS9iYXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCisrKysgYi9iYXNl L3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCitAQCAtMTA1LDcgKzEwNSw3IEBACisg CisgI2VuZGlmICAvLyAhQlVJTERGTEFHKElTX0ZVQ0hTSUEpCisgCistI2lmIEJVSUxERkxBRyhJ U19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NIUk9NRU9TKSB8fCBCVUlMREZMQUcoSVNfQU5EUk9J RCkKKysjaWYgKEJVSUxERkxBRyhJU19MSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pKSB8fCBC VUlMREZMQUcoSVNfQ0hST01FT1MpIHx8IEJVSUxERkxBRyhJU19BTkRST0lEKQorIG5hbWVzcGFj ZSB7CisgCisgc2l6ZV90IEdldE1hbGxvY1VzYWdlTWFsbGluZm8oKSB7CitAQCAtMTIzLDcgKzEy Myw3IEBACisgfQorIAorIH0gIC8vIG5hbWVzcGFjZQorLSNlbmRpZiAgLy8gQlVJTERGTEFHKElT X0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1MpIHx8CisrI2VuZGlmICAvLyAoQlVJTERG TEFHKElTX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IEJVSUxERkxBRyhJU19DSFJP TUVPUykgfHwKKyAgICAgICAgIC8vIEJVSUxERkxBRyhJU19BTkRST0lEKQorIAorIHNpemVfdCBQ cm9jZXNzTWV0cmljczo6R2V0TWFsbG9jVXNhZ2UoKSB7CitAQCAtMTMxLDkgKzEzMSw5IEBACisg ICBtYWxsb2Nfc3RhdGlzdGljc190IHN0YXRzID0gezB9OworICAgbWFsbG9jX3pvbmVfc3RhdGlz dGljcyhudWxscHRyLCAmc3RhdHMpOworICAgcmV0dXJuIHN0YXRzLnNpemVfaW5fdXNlOworLSNl bGlmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NIUk9NRU9TKSB8fCBCVUlM REZMQUcoSVNfQU5EUk9JRCkKKysjZWxpZiAoQlVJTERGTEFHKElTX0xJTlVYKSAmJiBkZWZpbmVk KF9fR0xJQkNfXykpIHx8IEJVSUxERkxBRyhJU19DSFJPTUVPUykgfHwgQlVJTERGTEFHKElTX0FO RFJPSUQpCisgICByZXR1cm4gR2V0TWFsbG9jVXNhZ2VNYWxsaW5mbygpOworLSNlbGlmIEJVSUxE RkxBRyhJU19GVUNIU0lBKQorKyNlbHNlCisgICAvLyBUT0RPKGZ1Y2hzaWEpOiBOb3QgY3VycmVu dGx5IGV4cG9zZWQuIGh0dHBzOi8vY3JidWcuY29tLzczNTA4Ny4KKyAgIHJldHVybiAwOworICNl bmRpZgorLS0tIC4vdGhpcmRfcGFydHkvdGZsaXRlL3NyYy90ZW5zb3JmbG93L2xpdGUvcHJvZmls aW5nL21lbW9yeV9pbmZvLmNjLm9yaWcKKysrKyAuL3RoaXJkX3BhcnR5L3RmbGl0ZS9zcmMvdGVu c29yZmxvdy9saXRlL3Byb2ZpbGluZy9tZW1vcnlfaW5mby5jYworQEAgLTM1LDcgKzM1LDcgQEAK KyAKKyBNZW1vcnlVc2FnZSBHZXRNZW1vcnlVc2FnZSgpIHsKKyAgIE1lbW9yeVVzYWdlIHJlc3Vs dDsKKy0jaWZkZWYgX19saW51eF9fCisrI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVk KF9fR0xJQkNfXykKKyAgIHJ1c2FnZSByZXM7CisgICBpZiAoZ2V0cnVzYWdlKFJVU0FHRV9TRUxG LCAmcmVzKSA9PSAwKSB7CisgICAgIHJlc3VsdC5tYXhfcnNzX2tiID0gcmVzLnJ1X21heHJzczsK Ky0tLSAuL3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tc3ViemVyby9s aWIvU3VwcG9ydC9Vbml4L1Byb2Nlc3MuaW5jCisrKysgLi90aGlyZF9wYXJ0eS9zd2lmdHNoYWRl ci90aGlyZF9wYXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5peC9Qcm9jZXNzLmluYy5v cmlnCitAQCAtODYsMTEgKzg2LDExIEBACisgfQorCisgc2l6ZV90IFByb2Nlc3M6OkdldE1hbGxv Y1VzYWdlKCkgeworLSNpZiBkZWZpbmVkKEhBVkVfTUFMTElORk8yKQorKyNpZiBkZWZpbmVkKEhB VkVfTUFMTElORk8yKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0cnVjdCBtYWxsaW5mbzIg bWk7CisgICBtaSA9IDo6bWFsbGluZm8yKCk7CisgICByZXR1cm4gbWkudW9yZGJsa3M7CistI2Vs aWYgZGVmaW5lZChIQVZFX01BTExJTkZPKQorKyNlbGlmIGRlZmluZWQoSEFWRV9NQUxMSU5GTykg JiYgZGVmaW5lZChfX0dMSUJDX18pCisgICBzdHJ1Y3QgbWFsbGluZm8gbWk7CisgICBtaSA9IDo6 bWFsbGluZm8oKTsKKyAgIHJldHVybiBtaS51b3JkYmxrczsKKworLS0tIC4vdGhpcmRfcGFydHkv c3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS0xMC4wL2NvbmZpZ3MvbGludXgvaW5jbHVkZS9s bHZtL0NvbmZpZy9jb25maWcuaC5vcmlnCTIwMTktMDktMzAgMTM6MDM6NDIuNTU2ODgwNTM3IC0w NDAwCisrKysgLi90aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLTEwLjAv Y29uZmlncy9saW51eC9pbmNsdWRlL2xsdm0vQ29uZmlnL2NvbmZpZy5oCTIwMTktMDktMzAgMTM6 MDc6MjcuOTg5ODIxMjI3IC0wNDAwCitAQCAtMTIyLDcgKzEyMiw5IEBACisgLyogI3VuZGVmIEhB VkVfTUFMTENUTCAqLworIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWFsbGlu Zm8nIGZ1bmN0aW9uLiAqLworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjZGVmaW5lIEhBVkVf TUFMTElORk8gMQorKyNlbmRpZgorIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8 bWFsbG9jLmg+IGhlYWRlciBmaWxlLiAqLworICNkZWZpbmUgSEFWRV9NQUxMT0NfSCAxCistLS0g YS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NoaW0vYWxsb2NhdG9yX3NoaW1f ZGVmYXVsdF9kaXNwYXRjaF90b19wYXJ0aXRpb25fYWxsb2MuY2MKKysrKyBiL2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc2hpbS9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3Bh dGNoX3RvX3BhcnRpdGlvbl9hbGxvYy5jYworQEAgLTcxNyw3ICs3MTcsNyBAQAorIAorICNlbmRp ZiAgLy8gIUJVSUxERkxBRyhJU19BUFBMRSkgJiYgIUJVSUxERkxBRyhJU19BTkRST0lEKQorIAor LSNpZiBCVUlMREZMQUcoSVNfTElOVVgpIHx8IEJVSUxERkxBRyhJU19DSFJPTUVPUykKKysjaWYg MAorIFNISU1fQUxXQVlTX0VYUE9SVCBzdHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8odm9pZCkgX19U SFJPVyB7CisgICBiYXNlOjpTaW1wbGVQYXJ0aXRpb25TdGF0c0R1bXBlciBhbGxvY2F0b3JfZHVt cGVyOworICAgQWxsb2NhdG9yKCktPkR1bXBTdGF0cygibWFsbG9jIiwgdHJ1ZSwgJmFsbG9jYXRv cl9kdW1wZXIpOworLS0tIGEvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zaGlt L2FsbG9jYXRvcl9zaGltX2RlZmF1bHRfZGlzcGF0Y2hfdG9fcGFydGl0aW9uX2FsbG9jX3VuaXR0 ZXN0LmNjCisrKysgYi9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NoaW0vYWxs b2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90b19wYXJ0aXRpb25fYWxsb2NfdW5pdHRlc3Qu Y2MKK0BAIC0yNCw3ICsyNCw3IEBACisgI2lmIEJVSUxERkxBRyhVU0VfUEFSVElUSU9OX0FMTE9D X0FTX01BTExPQykKKyAKKyAvLyBQbGF0Zm9ybXMgb24gd2hpY2ggd2Ugb3ZlcnJpZGUgd2VhayBs aWJjIHN5bWJvbHMuCistI2lmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NI Uk9NRU9TKQorKyNpZiAoQlVJTERGTEFHKElTX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykp IHx8IEJVSUxERkxBRyhJU19DSFJPTUVPUykKKyAKKyBOT0lOTElORSB2b2lkIEZyZWVGb3JUZXN0 KHZvaWQqIGRhdGEpIHsKKyAgIGZyZWUoZGF0YSk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXBhcnRpdGlvbi1hdGZvcmsucGF0Y2gg Yi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXBhcnRpdGlv bi1hdGZvcmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4y OTEwYWEyYmJmOWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXBhcnRpdGlvbi1hdGZvcmsucGF0Y2gKQEAgLTAsMCArMSwx MSBAQAorLS0tIGEvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25f cm9vdC5jYworKysrIGIvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRp b25fcm9vdC5jYworQEAgLTIzOSw3ICsyMzksNyBAQAorICAgaWYgKCFnX2dsb2JhbF9pbml0X2Nh bGxlZC5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhleHBlY3RlZCwgdHJ1ZSkpCisgICAgIHJldHVy bjsKKyAKKy0jaWYgQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1Mp CisrI2lmIChCVUlMREZMQUcoSVNfTElOVVgpICYmIGRlZmluZWQoX19HTElCQ19fKSkgfHwgQlVJ TERGTEFHKElTX0NIUk9NRU9TKQorICAgLy8gV2hlbiBmb3JrKCkgaXMgY2FsbGVkLCBvbmx5IHRo ZSBjdXJyZW50IHRocmVhZCBjb250aW51ZXMgdG8gZXhlY3V0ZSBpbiB0aGUKKyAgIC8vIGNoaWxk IHByb2Nlc3MuIElmIHRoZSBsb2NrIGlzIGhlbGQsIGJ1dCAqbm90KiBieSB0aGlzIHRocmVhZCB3 aGVuIGZvcmsoKSBpcworICAgLy8gY2FsbGVkLCB3ZSBoYXZlIGEgZGVhZGxvY2suCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXY4LW1v bm90b25pYy1wdGhyZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0 L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbXVzbC12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3Rp bWVkd2FpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU2 YTRhZDFjODA3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9w YXRjaGVzL2Nocm9taXVtLW11c2wtdjgtbW9ub3RvbmljLXB0aHJlYWQtY29udF90aW1lZHdhaXQu cGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorVXNlIG1vbm90b25pYyBjbG9jayBmb3IgcHRocmVhZF9j b25kX3RpbWVkd2FpdCB3aXRoIG11c2wgdG9vLgorCitkaWZmIC0tZ2l0IGEvdjgvc3JjL2Jhc2Uv cGxhdGZvcm0vY29uZGl0aW9uLXZhcmlhYmxlLmNjIGIvdjgvc3JjL2Jhc2UvcGxhdGZvcm0vY29u ZGl0aW9uLXZhcmlhYmxlLmNjCitpbmRleCA1ZWE3MDgzLi5jMTMwMjdlIDEwMDY0NAorLS0tIGEv djgvc3JjL2Jhc2UvcGxhdGZvcm0vY29uZGl0aW9uLXZhcmlhYmxlLmNjCisrKysgYi92OC9zcmMv YmFzZS9wbGF0Zm9ybS9jb25kaXRpb24tdmFyaWFibGUuY2MKK0BAIC0xNiw3ICsxNiw3IEBAIG5h bWVzcGFjZSBiYXNlIHsKKyAKKyBDb25kaXRpb25WYXJpYWJsZTo6Q29uZGl0aW9uVmFyaWFibGUo KSB7CisgI2lmIChWOF9PU19GUkVFQlNEIHx8IFY4X09TX05FVEJTRCB8fCBWOF9PU19PUEVOQlNE IHx8IFwKKy0gICAgIChWOF9PU19MSU5VWCAmJiBWOF9MSUJDX0dMSUJDKSkKKysgICAgIFY4X09T X0xJTlVYKQorICAgLy8gT24gRnJlZS9OZXQvT3BlbkJTRCBhbmQgTGludXggd2l0aCBnbGliYyB3 ZSBjYW4gY2hhbmdlIHRoZSB0aW1lCisgICAvLyBzb3VyY2UgZm9yIHB0aHJlYWRfY29uZF90aW1l ZHdhaXQoKSB0byB1c2UgdGhlIG1vbm90b25pYyBjbG9jay4KKyAgIHB0aHJlYWRfY29uZGF0dHJf dCBhdHRyOworQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBDb25kaXRpb25WYXJpYWJsZTo6V2FpdEZv cihNdXRleCogbXV0ZXgsIGNvbnN0IFRpbWVEZWx0YSYgcmVsX3RpbWUpIHsKKyAgICAgICAmbmF0 aXZlX2hhbmRsZV8sICZtdXRleC0+bmF0aXZlX2hhbmRsZSgpLCAmdHMpOworICNlbHNlCisgI2lm IChWOF9PU19GUkVFQlNEIHx8IFY4X09TX05FVEJTRCB8fCBWOF9PU19PUEVOQlNEIHx8IFwKKy0g ICAgIChWOF9PU19MSU5VWCAmJiBWOF9MSUJDX0dMSUJDKSkKKysgICAgIFY4X09TX0xJTlVYKQor ICAgLy8gT24gRnJlZS9OZXQvT3BlbkJTRCBhbmQgTGludXggd2l0aCBnbGliYyB3ZSBjYW4gY2hh bmdlIHRoZSB0aW1lCisgICAvLyBzb3VyY2UgZm9yIHB0aHJlYWRfY29uZF90aW1lZHdhaXQoKSB0 byB1c2UgdGhlIG1vbm90b25pYyBjbG9jay4KKyAgIHJlc3VsdCA9IGNsb2NrX2dldHRpbWUoQ0xP Q0tfTU9OT1RPTklDLCAmdHMpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVz L3BhdGNoZXMvY2hyb21pdW0tbm8tZ2V0Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24y NC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW5vLWdldGNvbnRleHQucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mOWJjMmUwMmQyNDUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250 ZXh0LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKKy0tLSBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwkyMDE1 LTEyLTA2IDA5OjU5OjU1LjU1NDUzNjY0NiArMDEwMAorKysrIGIvdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNj CTIwMTUtMTItMDYgMTA6MDE6MTYuODE4MjM4MDM1ICswMTAwCitAQCAtNDc3LDcgKzQ3Nyw5IEBA IGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6U2ltdWxhdGVTaWduYWxEZWwKKyAgIHNpZ2luZm8uc2lf Y29kZSA9IFNJX1VTRVI7CisgICBzaWdpbmZvLnNpX3BpZCA9IGdldHBpZCgpOworICAgdWNvbnRl eHRfdCBjb250ZXh0OworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIGdldGNvbnRleHQoJmNv bnRleHQpOworKyNlbmRpZgorICAgcmV0dXJuIEhhbmRsZVNpZ25hbChzaWcsICZzaWdpbmZvLCAm Y29udGV4dCk7CisgfQorIAorQEAgLTY0Nyw5ICs2NDksMTQgQEAgYm9vbCBFeGNlcHRpb25IYW5k bGVyOjpXcml0ZU1pbmlkdW1wKCkgeworICAgc3lzX3ByY3RsKFBSX1NFVF9EVU1QQUJMRSwgMSwg MCwgMCwgMCk7CisgCisgICBDcmFzaENvbnRleHQgY29udGV4dDsKKysKKysjaWYgZGVmaW5lZChf X0dMSUJDX18pCisgICBpbnQgZ2V0Y29udGV4dF9yZXN1bHQgPSBnZXRjb250ZXh0KCZjb250ZXh0 LmNvbnRleHQpOworICAgaWYgKGdldGNvbnRleHRfcmVzdWx0KQorICAgICByZXR1cm4gZmFsc2U7 CisrI2Vsc2UKKysgIHJldHVybiBmYWxzZTsKKysjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2kz ODZfXykKKyAgIC8vIEluIENQVUZpbGxGcm9tVUNvbnRleHQgaW4gbWluaWR1bXB3cml0ZXIuY2Mg dGhlIHN0YWNrIHBvaW50ZXIgaXMgcmV0cmlldmVkCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1vbGQtY2xhbmcucGF0Y2ggYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1vbGQtY2xhbmcucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNzczZDA5ZmJkN2QKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1vbGQtY2xh bmcucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JV SUxELmduCisrKysgYi9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24KK0BAIC0xMjg4LDcg KzEyODgsNyBAQAorICAgICB9IGVsc2UgeworICAgICAgICMgLWZmaWxlLWNvbXBpbGF0aW9uLWRp ciBpcyBhbiBhbGlhcyBmb3IgYm90aCAtZmRlYnVnLWNvbXBpbGF0aW9uLWRpcj0KKyAgICAgICAj IGFuZCAtZmNvdmVyYWdlLWNvbXBpbGF0aW9uLWRpcj0uCistICAgICAgY2ZsYWdzICs9IFsgIi1m ZmlsZS1jb21waWxhdGlvbi1kaXI9LiIgXQorKyAgICAgIGNmbGFncyArPSBbICItZmRlYnVnLWNv bXBpbGF0aW9uLWRpcj0uIiBdCisgICAgICAgc3dpZnRmbGFncyArPSBbICItZmlsZS1jb21waWxh dGlvbi1kaXI9LiIgXQorICAgICB9CisgICAgIGlmICghaXNfd2luKSB7CmRpZmYgLS1naXQgYS9z cmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1yZWVuYWJsZS1saW51eC1p Njg2LWJ1aWxkcy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLXJlZW5hYmxlLWxpbnV4LWk2ODYtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYjE4NzE4ZTQzNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tcmVlbmFibGUtbGludXgtaTY4 Ni1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorLS0tIGEvQlVJTEQuZ24ub3JpZworKysr IGIvQlVJTEQuZ24KK0BAIC0xNjE2LDE2ICsxNjE2LDYgQEAKKyAgIH0KKyB9CisgCistIyBUT0RP KGNhc3Nldyk6IEFkZCBtb3JlIE9TJ3MgdGhhdCBkb24ndCBzdXBwb3J0IHg4Ni4KKy1pc192YWxp ZF94ODZfdGFyZ2V0ID0KKy0gICAgdGFyZ2V0X29zICE9ICJpb3MiICYmIHRhcmdldF9vcyAhPSAi bWFjIiAmJgorLSAgICAodGFyZ2V0X29zICE9ICJsaW51eCIgfHwgdXNlX2xpYmZ1enplciB8fCAh YnVpbGRfd2l0aF9jaHJvbWl1bSkKKy0KKy0jIE5vdGU6IHY4X3RhcmdldF9jcHUgPT0gYXJtIGFs bG93cyB1c2luZyB0aGUgVjggYXJtIHNpbXVsYXRvciBvbiB4ODYgZm9yIGZ1enppbmcuCistYXNz ZXJ0KAorLSAgICBpc192YWxpZF94ODZfdGFyZ2V0IHx8IHRhcmdldF9jcHUgIT0gIng4NiIgfHwg djhfdGFyZ2V0X2NwdSA9PSAiYXJtIiwKKy0gICAgIid0YXJnZXRfY3B1PXg4NicgaXMgbm90IHN1 cHBvcnRlZCBmb3IgJ3RhcmdldF9vcz0kdGFyZ2V0X29zJy4gQ29uc2lkZXIgb21pdHRpbmcgJ3Rh cmdldF9jcHUnIChkZWZhdWx0KSBvciB1c2luZyAndGFyZ2V0X2NwdT14NjQnIGluc3RlYWQuIikK Ky0KKyBncm91cCgiY2hyb21pdW1fYnVpbGRlcl9wZXJmIikgeworICAgdGVzdG9ubHkgPSB0cnVl CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1yZW1vdmUtc3lzLWNkZWZzLWluY2x1ZGVzLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjI0L2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tcmVtb3ZlLXN5cy1jZGVmcy1pbmNsdWRlcy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwMzQ0MDczZjQ2MQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJl bW92ZS1zeXMtY2RlZnMtaW5jbHVkZXMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorLS0tIGEvdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy9wdHJhY2UuaAorKysr IGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy9wdHJhY2Uu aAorQEAgLTE3LDggKzE3LDYgQEAKKyAKKyAjaW5jbHVkZV9uZXh0IDxzeXMvcHRyYWNlLmg+Cisg CistI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorLQorIC8vIGh0dHBzOi8vc291cmNld2FyZS5vcmcv YnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyNDMzCisgI2lmICFkZWZpbmVkKFBUUkFDRV9HRVRf VEhSRUFEX0FSRUEpICYmICFkZWZpbmVkKFBUX0dFVF9USFJFQURfQVJFQSkgJiYgXAorICAgICBk ZWZpbmVkKF9fR0xJQkNfXykKKy0tLSBhL3RoaXJkX3BhcnR5L2xpYnN5bmMvc3JjL2luY2x1ZGUv c3luYy9zeW5jLmgKKysrKyBiL3RoaXJkX3BhcnR5L2xpYnN5bmMvc3JjL2luY2x1ZGUvc3luYy9z eW5jLmgKK0BAIC0xOSwxMiArMTksMTMgQEAKKyAjaWZuZGVmIF9fU1lTX0NPUkVfU1lOQ19ICisg I2RlZmluZSBfX1NZU19DT1JFX1NZTkNfSAorIAorLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAj aW5jbHVkZSA8c3RkaW50Lmg+CisgCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisgCistX19C RUdJTl9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgor IAorIHN0cnVjdCBzeW5jX2xlZ2FjeV9tZXJnZV9kYXRhIHsKKyAgaW50MzJfdCBmZDI7CitAQCAt MTU4LDYgKzE1OSw4IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBzeW5jX3B0X2luZm8gKml0cik7Cisgdm9pZCBzeW5jX2ZlbmNlX2luZm9fZnJlZShzdHJ1Y3Qg c3luY19mZW5jZV9pbmZvX2RhdGEgKmluZm8pOworIAorLV9fRU5EX0RFQ0xTCisrI2lmZGVmIF9f Y3BsdXNwbHVzCisrfQorKyNlbmRpZgorIAorICNlbmRpZiAvKiBfX1NZU19DT1JFX1NZTkNfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t cmlzY3YtYW5nbGUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS1yaXNjdi1hbmdsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmEyNWJmMGQzZjMyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24y NC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJpc2N2LWFuZ2xlLnBhdGNoCkBAIC0wLDAgKzEsMjcg QEAKK0luZGV4OiBjaHJvbWl1bS0xMDMuMC41MDYwLjUzL3RoaXJkX3BhcnR5L2FuZ2xlL2duaS9h bmdsZS5nbmkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjaHJvbWl1bS0xMDMuMC41MDYwLjUzLm9yaWcvdGhp cmRfcGFydHkvYW5nbGUvZ25pL2FuZ2xlLmduaQorKysrIGNocm9taXVtLTEwMy4wLjUwNjAuNTMv dGhpcmRfcGFydHkvYW5nbGUvZ25pL2FuZ2xlLmduaQorQEAgLTc3LDcgKzc3LDggQEAgZGVjbGFy ZV9hcmdzKCkgeworIAorICAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIgfHwgY3VycmVudF9j cHUgPT0gIng2NCIgfHwKKyAgICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0ZWwiIHx8IGN1cnJl bnRfY3B1ID09ICJzMzkweCIgfHwKKy0gICAgICBjdXJyZW50X2NwdSA9PSAicHBjNjQiIHx8IGN1 cnJlbnRfY3B1ID09ICJsb29uZzY0IikgeworKyAgICAgIGN1cnJlbnRfY3B1ID09ICJwcGM2NCIg fHwgY3VycmVudF9jcHUgPT0gImxvb25nNjQiIHx8CisrICAgICAgY3VycmVudF9jcHUgPT0gInJp c2N2NjQiKSB7CisgICAgIGFuZ2xlXzY0Yml0X2N1cnJlbnRfY3B1ID0gdHJ1ZQorICAgfSBlbHNl IGlmIChjdXJyZW50X2NwdSA9PSAiYXJtIiB8fCBjdXJyZW50X2NwdSA9PSAieDg2IiB8fAorICAg ICAgICAgICAgICBjdXJyZW50X2NwdSA9PSAibWlwc2VsIiB8fCBjdXJyZW50X2NwdSA9PSAiczM5 MCIgfHwKK0luZGV4OiBjaHJvbWl1bS0xMDMuMC41MDYwLjUzL3RoaXJkX3BhcnR5L2FuZ2xlL3Ny Yy9jb21tb24vcGxhdGZvcm0uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNocm9taXVtLTEwMy4wLjUwNjAu NTMub3JpZy90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvY29tbW9uL3BsYXRmb3JtLmgKKysrKyBjaHJv bWl1bS0xMDMuMC41MDYwLjUzL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9jb21tb24vcGxhdGZvcm0u aAorQEAgLTEwMiw3ICsxMDIsNyBAQAorICNlbmRpZgorIAorIC8vIE1pcHMgYW5kIGFybSBkZXZp Y2VzIG5lZWQgdG8gaW5jbHVkZSBzdGRkZWYgZm9yIHNpemVfdC4KKy0jaWYgZGVmaW5lZChfX21p cHNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiBk ZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IGRlZmluZWQoX19yaXNjdikKKyAjICAgIGluY2x1ZGUgPHN0ZGRlZi5oPgorICNlbmRp ZgorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tcmlzY3YtY3Jhc2hwYWQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1yaXNjdi1jcmFzaHBhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmNjMmMzNzc5MWFjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJpc2N2LWNyYXNocGFkLnBhdGNoCkBA IC0wLDAgKzEsNzc3IEBACitJbmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBjaHJvbWl1bS0xMDIuMC41MDA1LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCisrKysgY2hyb21pdW0tMTAyLjAu NTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9j b250ZXh0LmgKK0BAIC01OTIsNiArNTkyLDQxIEBAIHN0cnVjdCBNaW5pZHVtcENvbnRleHRNSVBT NjQgeworICAgdWludDY0X3QgZmlyOworIH07CisgCisrLy8hIFxicmllZiA2NGJpdCBSSVNDLVYt c3BlY2lmYyBmbGFncyBmb3IgTWluaWR1bXBDb250ZXh0UklTQ1Y2NDo6Y29udGV4dF9mbGFncy4K KysvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3Jpc2N2NjQuaCBmcm9tIGJyZWFrcGFkCisrZW51 bSBNaW5pZHVtcENvbnRleHRSSVNDVjY0RmxhZ3MgOiB1aW50MzJfdCB7CisrICAvLyEgXGJyaWVm IElkZW50aWZpZXMgdGhlIGNvbnRleHQgc3RydWN0dXJlIGFzIFJJU0NWNjQuCisrICBrTWluaWR1 bXBDb250ZXh0UklTQ1Y2NCA9IDB4MDAwODAwMDAsCisrCisrICAvLyEgXGJyaWVmIEluZGljYXRl cyB0aGUgdmFsaWRpdHkgb2YgaW50ZWdlciByZWdpc3RlcnMuCisrICAvLyEKKysgIC8vISBSZWdp c3RlcnMgYHgxYC1geDMxYCBhbmQgcGMgYXJlIHZhbGlkLgorKyAga01pbmlkdW1wQ29udGV4dFJJ U0NWNjRJbnRlZ2VyID0ga01pbmlkdW1wQ29udGV4dFJJU0NWNjQgfCAweDAwMDAwMDAyLAorKwor KyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGZsb2F0aW5nIHBvaW50IHJl Z2lzdGVycy4KKysgIC8vIQorKyAgLy8hIEZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBgZjBgLWBm MzFgLCBhbmQgYGZjc3JgIGFyZSB2YWxpZAorKyAga01pbmlkdW1wQ29udGV4dFJJU0NWNjRGbG9h dGluZ1BvaW50ID0ga01pbmlkdW1wQ29udGV4dFJJU0NWNjQgfCAweDAwMDAwMDA0LAorKworKyAg Ly8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGFsbCByZWdpc3RlcnMuCisrICBr TWluaWR1bXBDb250ZXh0UklTQ1Y2NEFsbCA9IGtNaW5pZHVtcENvbnRleHRSSVNDVjY0SW50ZWdl ciB8CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1wQ29udGV4dFJJU0NW NjRGbG9hdGluZ1BvaW50LAorK307CisrCisrLy8hIFxicmllZiBBIDY0Yml0IFJJU0NWIENQVSBj b250ZXh0IChyZWdpc3RlciBzdGF0ZSkgY2FycmllZCBpbiBhIG1pbmlkdW1wIGZpbGUuCisrc3Ry dWN0IE1pbmlkdW1wQ29udGV4dFJJU0NWNjQgeworKyAgdWludDY0X3QgY29udGV4dF9mbGFnczsK KysKKysgIC8vISBcYnJpZWYgR2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KKysgIHVpbnQ2NF90 IHJlZ3NbMzJdOworKworKyAgLy8hIFxicmllZiBGUFUgcmVnaXN0ZXJzLgorKyAgdWludDY0X3Qg ZnByZWdzWzMyXTsKKysKKysgIC8vISBcYnJpZWYgRlBVIHN0YXR1cyByZWdpc3Rlci4KKysgIHVp bnQ2NF90IGZjc3I7CisrfTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5k aWYgIC8vIENSQVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfSF8KK0luZGV4OiBjaHJv bWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1w L21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2hyb21pdW0tMTAy LjAuNTAwNS42MS5vcmlnL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21p bmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCisrKysgY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRl ci5jYworQEAgLTEwMiw2ICsxMDIsMTMgQEAgTWluaWR1bXBDb250ZXh0V3JpdGVyOjpDcmVhdGVG cm9tU25hcHNobworICAgICAgIGJyZWFrOworICAgICB9CisgCisrICAgIGNhc2Uga0NQVUFyY2hp dGVjdHVyZVJJU0NWNjQ6IHsKKysgICAgICBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxNaW5p ZHVtcENvbnRleHRSSVNDVjY0V3JpdGVyPigpOworKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWlu aWR1bXBDb250ZXh0UklTQ1Y2NFdyaXRlcio+KGNvbnRleHQuZ2V0KCkpCisrICAgICAgICAgIC0+ SW5pdGlhbGl6ZUZyb21TbmFwc2hvdChjb250ZXh0X3NuYXBzaG90LT5yaXNjdjY0KTsKKysgICAg ICBicmVhazsKKysgICAgfQorKworICAgICBkZWZhdWx0OiB7CisgICAgICAgTE9HKEVSUk9SKSA8 PCAidW5rbm93biBjb250ZXh0IGFyY2hpdGVjdHVyZSAiCisgICAgICAgICAgICAgICAgICA8PCBj b250ZXh0X3NuYXBzaG90LT5hcmNoaXRlY3R1cmU7CitAQCAtNDUzLDUgKzQ2MCw0MiBAQCBzaXpl X3QgTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyOjpDb250CisgICBEQ0hFQ0tfR0Uoc3RhdGUo KSwga1N0YXRlRnJvemVuKTsKKyAgIHJldHVybiBzaXplb2YoY29udGV4dF8pOworIH0KKysKKytN aW5pZHVtcENvbnRleHRSSVNDVjY0V3JpdGVyOjpNaW5pZHVtcENvbnRleHRSSVNDVjY0V3JpdGVy KCkKKysgICAgOiBNaW5pZHVtcENvbnRleHRXcml0ZXIoKSwgY29udGV4dF8oKSB7CisrICBjb250 ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFJJU0NWNjQ7CisrfQorKworK01p bmlkdW1wQ29udGV4dFJJU0NWNjRXcml0ZXI6On5NaW5pZHVtcENvbnRleHRSSVNDVjY0V3JpdGVy KCkgPSBkZWZhdWx0OworKworK3ZvaWQgTWluaWR1bXBDb250ZXh0UklTQ1Y2NFdyaXRlcjo6SW5p dGlhbGl6ZUZyb21TbmFwc2hvdCgKKysgICAgY29uc3QgQ1BVQ29udGV4dFJJU0NWNjQqIGNvbnRl eHRfc25hcHNob3QpIHsKKysgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVNdXRhYmxlKTsKKysg IERDSEVDS19FUShjb250ZXh0Xy5jb250ZXh0X2ZsYWdzLCBrTWluaWR1bXBDb250ZXh0UklTQ1Y2 NCk7CisrCisrICBjb250ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFJJU0NW NjRBbGw7CisrCisrICBzdGF0aWNfYXNzZXJ0KHNpemVvZihjb250ZXh0Xy5yZWdzKSA9PSBzaXpl b2YoY29udGV4dF9zbmFwc2hvdC0+cmVncyksCisrICAgICAgICAgICAgICAgICJHUFJzIHNpemUg bWlzbWF0Y2giKTsKKysgIG1lbWNweShjb250ZXh0Xy5yZWdzLCBjb250ZXh0X3NuYXBzaG90LT5y ZWdzLCBzaXplb2YoY29udGV4dF8ucmVncykpOworKworKyAgc3RhdGljX2Fzc2VydChzaXplb2Yo Y29udGV4dF8uZnByZWdzKSA9PSBzaXplb2YoY29udGV4dF9zbmFwc2hvdC0+ZnByZWdzKSwKKysg ICAgICAgICAgICAgICAgIkZQUnMgc2l6ZSBtaXNtYXRjaCIpOworKyAgbWVtY3B5KGNvbnRleHRf LmZwcmVncywKKysgICAgICAgICBjb250ZXh0X3NuYXBzaG90LT5mcHJlZ3MsCisrICAgICAgICAg c2l6ZW9mKGNvbnRleHRfLmZwcmVncykpOworKyAgY29udGV4dF8uZmNzciA9IGNvbnRleHRfc25h cHNob3QtPmZjc3I7CisrfQorKworK2Jvb2wgTWluaWR1bXBDb250ZXh0UklTQ1Y2NFdyaXRlcjo6 V3JpdGVPYmplY3QoCisrICAgIEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSB7Cisr ICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRlV3JpdGFibGUpOworKyAgcmV0dXJuIGZpbGVfd3Jp dGVyLT5Xcml0ZSgmY29udGV4dF8sIHNpemVvZihjb250ZXh0XykpOworK30KKysKKytzaXplX3Qg TWluaWR1bXBDb250ZXh0UklTQ1Y2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25zdCB7CisrICBE Q0hFQ0tfR0Uoc3RhdGUoKSwga1N0YXRlRnJvemVuKTsKKysgIHJldHVybiBzaXplb2YoY29udGV4 dF8pOworK30KKyAKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKK0luZGV4OiBjaHJvbWl1bS0x MDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlk dW1wX2NvbnRleHRfd3JpdGVyLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjaHJvbWl1bS0xMDIuMC41MDA1 LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBf Y29udGV4dF93cml0ZXIuaAorKysrIGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaAorQEAg LTMzMCw2ICszMzAsNDkgQEAgY2xhc3MgTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyIGZpbmFs CisgICBNaW5pZHVtcENvbnRleHRNSVBTNjQgY29udGV4dF87CisgfTsKKyAKKysvLyEgXGJyaWVm IFRoZSB3cml0ZXIgZm9yIGEgTWluaWR1bXBDb250ZXh0UklTQ1Y2NCBzdHJ1Y3R1cmUgaW4gYSBt aW5pZHVtcCBmaWxlLgorK2NsYXNzIE1pbmlkdW1wQ29udGV4dFJJU0NWNjRXcml0ZXIgZmluYWwg OiBwdWJsaWMgTWluaWR1bXBDb250ZXh0V3JpdGVyIHsKKysgcHVibGljOgorKyAgTWluaWR1bXBD b250ZXh0UklTQ1Y2NFdyaXRlcigpOworKworKyAgTWluaWR1bXBDb250ZXh0UklTQ1Y2NFdyaXRl cihjb25zdCBNaW5pZHVtcENvbnRleHRSSVNDVjY0V3JpdGVyJikgPSBkZWxldGU7CisrICBNaW5p ZHVtcENvbnRleHRSSVNDVjY0V3JpdGVyJiBvcGVyYXRvcj0oY29uc3QgTWluaWR1bXBDb250ZXh0 UklTQ1Y2NFdyaXRlciYpID0KKysgICAgICBkZWxldGU7CisrCisrICB+TWluaWR1bXBDb250ZXh0 UklTQ1Y2NFdyaXRlcigpIG92ZXJyaWRlOworKworKyAgLy8hIFxicmllZiBJbml0aWFsaXplcyB0 aGUgTWluaWR1bXBDb250ZXh0UklTQ1YgYmFzZWQgb24gXGEgY29udGV4dF9zbmFwc2hvdC4KKysg IC8vIQorKyAgLy8hIFxwYXJhbVtpbl0gY29udGV4dF9zbmFwc2hvdCBUaGUgY29udGV4dCBzbmFw c2hvdCB0byB1c2UgYXMgc291cmNlIGRhdGEuCisrICAvLyEKKysgIC8vISBcbm90ZSBWYWxpZCBp biAja1N0YXRlTXV0YWJsZS4gTm8gbXV0YXRpb24gb2YgY29udGV4dCgpIG1heSBiZSBkb25lIGJl Zm9yZQorKyAgLy8hICAgICBjYWxsaW5nIHRoaXMgbWV0aG9kLCBhbmQgaXQgaXMgbm90IG5vcm1h bGx5IG5lY2Vzc2FyeSB0byBhbHRlcgorKyAgLy8hICAgICBjb250ZXh0KCkgYWZ0ZXIgY2FsbGlu ZyB0aGlzIG1ldGhvZC4KKysgIHZvaWQgSW5pdGlhbGl6ZUZyb21TbmFwc2hvdChjb25zdCBDUFVD b250ZXh0UklTQ1Y2NCogY29udGV4dF9zbmFwc2hvdCk7CisrCisrICAvLyEgXGJyaWVmIFJldHVy bnMgYSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHN0cnVjdHVyZSB0aGF0IHRoaXMgb2JqZWN0IHdp bGwKKysgIC8vISAgICAgd3JpdGUuCisrICAvLyEKKysgIC8vISBcYXR0ZW50aW9uIFRoaXMgcmV0 dXJucyBhIG5vbi1gY29uc3RgIHBvaW50ZXIgdG8gdGhpcyBvYmplY3TigJlzIHByaXZhdGUKKysg IC8vISAgICAgZGF0YSBzbyB0aGF0IGEgY2FsbGVyIGNhbiBwb3B1bGF0ZSB0aGUgY29udGV4dCBz dHJ1Y3R1cmUgZGlyZWN0bHkuCisrICAvLyEgICAgIFRoaXMgaXMgZG9uZSBiZWNhdXNlIHByb3Zp ZGluZyBzZXR0ZXIgaW50ZXJmYWNlcyB0byBlYWNoIGZpZWxkIGluIHRoZQorKyAgLy8hICAgICBj b250ZXh0IHN0cnVjdHVyZSB3b3VsZCBiZSB1bndpZWxkeSBhbmQgY3VtYmVyc29tZS4gQ2FyZSBt dXN0IGJlIHRha2VuCisrICAvLyEgICAgIHRvIHBvcHVsYXRlIHRoZSBjb250ZXh0IHN0cnVjdHVy ZSBjb3JyZWN0bHkuIFRoZSBjb250ZXh0IHN0cnVjdHVyZQorKyAgLy8hICAgICBtdXN0IG9ubHkg YmUgbW9kaWZpZWQgd2hpbGUgdGhpcyBvYmplY3QgaXMgaW4gdGhlICNrU3RhdGVNdXRhYmxlCisr ICAvLyEgICAgIHN0YXRlLgorKyAgTWluaWR1bXBDb250ZXh0UklTQ1Y2NCogY29udGV4dCgpIHsg cmV0dXJuICZjb250ZXh0XzsgfQorKworKyBwcm90ZWN0ZWQ6CisrICAvLyBNaW5pZHVtcFdyaXRh YmxlOgorKyAgYm9vbCBXcml0ZU9iamVjdChGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dyaXRl cikgb3ZlcnJpZGU7CisrCisrICAvLyBNaW5pZHVtcENvbnRleHRXcml0ZXI6CisrICBzaXplX3Qg Q29udGV4dFNpemUoKSBjb25zdCBvdmVycmlkZTsKKysKKysgcHJpdmF0ZToKKysgIE1pbmlkdW1w Q29udGV4dFJJU0NWNjQgY29udGV4dF87CisrfTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hw YWQKKyAKKyAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfV1JJ VEVSX0hfCitJbmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gY2hyb21pdW0tMTAyLjAuNTAwNS42MS5vcmlnL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKKysrKyBjaHJv bWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1w L21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKK0BAIC0xMzUsNiArMTM1LDEwIEBAIHN0ZDo6 c3RyaW5nIE1pbmlkdW1wTWlzY0luZm9EZWJ1Z0J1aWxkU3QKKyAgIHN0YXRpYyBjb25zdGV4cHIg Y2hhciBrQ1BVW10gPSAibWlwcyI7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkK KyAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlwczY0IjsKKysjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX1JJU0NWMzIpCisrICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0g InJpc2N2MzIiOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1Y2NCkKKysgIHN0YXRpYyBj b25zdGV4cHIgY2hhciBrQ1BVW10gPSAicmlzY3Y2NCI7CisgI2Vsc2UKKyAjZXJyb3IgZGVmaW5l IGtDUFUgZm9yIHRoaXMgQ1BVCisgI2VuZGlmCitJbmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42 MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9yeS5j YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGNocm9taXVtLTEwMi4wLjUwMDUuNjEub3JpZy90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9yeS5jYworKysrIGNocm9t aXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv Y2FwdHVyZV9tZW1vcnkuY2MKK0BAIC0xMTIsNiArMTEyLDE2IEBAIHZvaWQgQ2FwdHVyZU1lbW9y eTo6UG9pbnRlZFRvQnlDb250ZXh0KGMKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RkOjpz aXplKGNvbnRleHQubWlwc2VsLT5yZWdzKTsgKytpKSB7CisgICAgIE1heWJlQ2FwdHVyZU1lbW9y eUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5taXBzZWwtPnJlZ3NbaV0pOworICAgfQorKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKyAgaWYgKGNvbnRleHQuYXJjaGl0ZWN0 dXJlID09IGtDUFVBcmNoaXRlY3R1cmVSSVNDVjY0KSB7CisrICAgIGZvciAoc2l6ZV90IGkgPSAw OyBpIDwgc3RkOjpzaXplKGNvbnRleHQucmlzY3Y2NC0+cmVncyk7ICsraSkgeworKyAgICAgIE1h eWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5yaXNjdjY0LT5yZWdzW2ld KTsKKysgICAgfQorKyAgfSBlbHNlIHsKKysgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6 OnNpemUoY29udGV4dC5yaXNjdjMyLT5yZWdzKTsgKytpKSB7CisrICAgICAgTWF5YmVDYXB0dXJl TWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnJpc2N2MzItPnJlZ3NbaV0pOworKyAgICB9 CisrICB9CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYKK0luZGV4OiBjaHJvbWl1bS0x MDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9h cmNoaXRlY3R1cmUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNocm9taXVtLTEwMi4wLjUwMDUuNjEub3Jp Zy90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJl LmgKKysrKyBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAorQEAgLTQzLDcgKzQzLDEzIEBAIGVudW0g Q1BVQXJjaGl0ZWN0dXJlIHsKKyAgIGtDUFVBcmNoaXRlY3R1cmVNSVBTRUwsCisgCisgICAvLyEg XGJyaWVmIDY0LWJpdCBNSVBTRUwuCistICBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwKKysgIGtD UFVBcmNoaXRlY3R1cmVNSVBTNjRFTCwKKysKKysgIC8vISBcYnJpZWYgMzItYml0IFJJU0NWLgor KyAga0NQVUFyY2hpdGVjdHVyZVJJU0NWMzIsCisrCisrICAvLyEgXGJyaWVmIDY0LWJpdCBSSVND Vi4KKysgIGtDUFVBcmNoaXRlY3R1cmVSSVNDVjY0CisgfTsKKyAKKyB9ICAvLyBuYW1lc3BhY2Ug Y3Jhc2hwYWQKK0luZGV4OiBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2hy b21pdW0tMTAyLjAuNTAwNS42MS5vcmlnL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2NwdV9jb250ZXh0LmNjCisrKysgY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYworQEAgLTE5Nywx MCArMTk3LDEyIEBAIGJvb2wgQ1BVQ29udGV4dDo6SXM2NEJpdCgpIGNvbnN0IHsKKyAgICAgY2Fz ZSBrQ1BVQXJjaGl0ZWN0dXJlWDg2XzY0OgorICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02 NDoKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUw6CisrICAgIGNhc2Uga0NQVUFy Y2hpdGVjdHVyZVJJU0NWNjQ6CisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2Uga0NQVUFy Y2hpdGVjdHVyZVg4NjoKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNOgorICAgICBjYXNl IGtDUFVBcmNoaXRlY3R1cmVNSVBTRUw6CisrICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVJJU0NW MzI6CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBkZWZhdWx0OgorICAgICAgIE5PVFJFQUNI RUQoKTsKK0luZGV4OiBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjaHJvbWl1 bS0xMDIuMC41MDA1LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvY3B1X2NvbnRleHQuaAorKysrIGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQuaAorQEAgLTM1Miw2ICszNTIs MjAgQEAgc3RydWN0IENQVUNvbnRleHRNSVBTNjQgeworICAgdWludDY0X3QgZmlyOworIH07Cisg CisrLy8hIFxicmllZiBBIGNvbnRleHQgc3RydWN0dXJlIGNhcnJ5aW5nIFJJU0NWMzIgQ1BVIHN0 YXRlLgorK3N0cnVjdCBDUFVDb250ZXh0UklTQ1YzMiB7CisrICB1aW50MzJfdCByZWdzWzMyXTsK KysgIHVpbnQ2NF90IGZwcmVnc1szMl07CisrICB1aW50MzJfdCBmY3NyOworK307CisrCisrLy8h IFxicmllZiBBIGNvbnRleHQgc3RydWN0dXJlIGNhcnJ5aW5nIFJJU0NWNjQgQ1BVIHN0YXRlLgor K3N0cnVjdCBDUFVDb250ZXh0UklTQ1Y2NCB7CisrICB1aW50NjRfdCByZWdzWzMyXTsKKysgIHVp bnQ2NF90IGZwcmVnc1szMl07CisrICB1aW50MzJfdCBmY3NyOworK307CisrCisgLy8hIFxicmll ZiBBIGNvbnRleHQgc3RydWN0dXJlIGNhcGFibGUgb2YgY2FycnlpbmcgdGhlIGNvbnRleHQgb2Yg YW55IHN1cHBvcnRlZAorIC8vISAgICAgQ1BVIGFyY2hpdGVjdHVyZS4KKyBzdHJ1Y3QgQ1BVQ29u dGV4dCB7CitAQCAtMzgyLDYgKzM5Niw4IEBAIHN0cnVjdCBDUFVDb250ZXh0IHsKKyAgICAgQ1BV Q29udGV4dEFSTTY0KiBhcm02NDsKKyAgICAgQ1BVQ29udGV4dE1JUFMqIG1pcHNlbDsKKyAgICAg Q1BVQ29udGV4dE1JUFM2NCogbWlwczY0OworKyAgICBDUFVDb250ZXh0UklTQ1YzMiogcmlzY3Yz MjsKKysgICAgQ1BVQ29udGV4dFJJU0NWNjQqIHJpc2N2NjQ7CisgICB9OworIH07CisgCitJbmRl eDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5jYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNocm9t aXVtLTEwMi4wLjUwMDUuNjEub3JpZy90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5jYworKysrIGNocm9taXVtLTEwMi4wLjUwMDUu NjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRl eHRfbGludXguY2MKK0BAIC0yNjYsNiArMjY2LDMwIEBAIHZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRl eHRBUk02NF9Pbmx5RlBTSU0KKyAgIGNvbnRleHQtPmZwY3IgPSBmbG9hdF9jb250ZXh0LmZwY3I7 CisgfQorIAorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKworK3RlbXBs YXRlIDx0eXBlbmFtZSBUcmFpdHM+Cisrdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dFJJU0NWKAor KyAgICBjb25zdCB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFRocmVhZENvbnRleHQmIHRocmVhZF9j b250ZXh0LAorKyAgICBjb25zdCB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbEZsb2F0Q29udGV4dCYg ZmxvYXRfY29udGV4dCwKKysgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250ZXh0 KSB7CisrICBzdGF0aWNfYXNzZXJ0KHNpemVvZihjb250ZXh0LT5yZWdzKSA9PSBzaXplb2YodGhy ZWFkX2NvbnRleHQpLAorKyAgICAgICAgICAgICAgICAicmVnaXN0ZXJzIHNpemUgbWlzbWF0Y2gi KTsKKysgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGNvbnRleHQtPmZwcmVncykgPT0gc2l6ZW9mKGZs b2F0X2NvbnRleHQuZiksCisrICAgICAgICAgICAgICAgICJmcCByZWdpc3RlcnMgc2l6ZSBtaXNt YXRjaCIpOworKyAgbWVtY3B5KCZjb250ZXh0LT5yZWdzLCAmdGhyZWFkX2NvbnRleHQsIHNpemVv Zihjb250ZXh0LT5yZWdzKSk7CisrICBtZW1jcHkoJmNvbnRleHQtPmZwcmVncywgJmZsb2F0X2Nv bnRleHQuZiwgc2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOworKyAgY29udGV4dC0+ZmNzciA9IGZs b2F0X2NvbnRleHQuZmNzcjsKKyt9CisrdGVtcGxhdGUgdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4 dFJJU0NWPENvbnRleHRUcmFpdHMzMj4oCisrICAgIGNvbnN0IENvbnRleHRUcmFpdHMzMjo6U2ln bmFsVGhyZWFkQ29udGV4dCYgdGhyZWFkX2NvbnRleHQsCisrICAgIGNvbnN0IENvbnRleHRUcmFp dHMzMjo6U2lnbmFsRmxvYXRDb250ZXh0JiBmbG9hdF9jb250ZXh0LAorKyAgICBDb250ZXh0VHJh aXRzMzI6OkNQVUNvbnRleHQqIGNvbnRleHQpOworK3RlbXBsYXRlIHZvaWQgSW5pdGlhbGl6ZUNQ VUNvbnRleHRSSVNDVjxDb250ZXh0VHJhaXRzNjQ+KAorKyAgICBjb25zdCBDb250ZXh0VHJhaXRz NjQ6OlNpZ25hbFRocmVhZENvbnRleHQmIHRocmVhZF9jb250ZXh0LAorKyAgICBjb25zdCBDb250 ZXh0VHJhaXRzNjQ6OlNpZ25hbEZsb2F0Q29udGV4dCYgZmxvYXRfY29udGV4dCwKKysgICAgQ29u dGV4dFRyYWl0czY0OjpDUFVDb250ZXh0KiBjb250ZXh0KTsKKysKKyAjZW5kaWYgIC8vIEFSQ0hf Q1BVX1g4Nl9GQU1JTFkKKyAKKyB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK0luZGV4OiBjaHJv bWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjaHJvbWl1bS0xMDIu MC41MDA1LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvY3B1X2NvbnRleHRfbGludXguaAorKysrIGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXgu aAorQEAgLTE3NCw2ICsxNzQsMjIgQEAgdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dE1JUFMoCisg CisgI2VuZGlmICAvLyBBUkNIX0NQVV9NSVBTX0ZBTUlMWSB8fCBET1hZR0VOCisgCisrI2lmIGRl ZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKSB8fCBET1hZR0VOCisrCisrLy8hIFxicmllZiBJ bml0aWFsaXplcyBhIENQVUNvbnRleHRSSVNDViBzdHJ1Y3R1cmUgZnJvbSBuYXRpdmUgY29udGV4 dAorKy8vISAgICAgc3RydWN0dXJlcyBvbiBMaW51eC4KKysvLyEKKysvLyEgXHBhcmFtW2luXSB0 aHJlYWRfY29udGV4dCBUaGUgbmF0aXZlIHRocmVhZCBjb250ZXh0LgorKy8vISBccGFyYW1baW5d IGZsb2F0X2NvbnRleHQgVGhlIG5hdGl2ZSBmbG9hdCBjb250ZXh0LgorKy8vISBccGFyYW1bb3V0 XSBjb250ZXh0IFRoZSBDUFVDb250ZXh0UklTQ1Ygc3RydWN0dXJlIHRvIGluaXRpYWxpemUuCisr dGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KKyt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0UklT Q1YoCisrICAgIGNvbnN0IHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVGhyZWFkQ29udGV4dCYgdGhy ZWFkX2NvbnRleHQsCisrICAgIGNvbnN0IHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsRmxvYXRDb250 ZXh0JiBmbG9hdF9jb250ZXh0LAorKyAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNv bnRleHQpOworKworKyNlbmRpZiAgLy8gQVJDSF9DUFVfUklTQ1ZfRkFNSUxZIHx8IERPWFlHRU4K KysKKyB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQK KyAKK0luZGV4OiBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5jYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGNocm9taXVtLTEwMi4wLjUwMDUuNjEub3JpZy90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MKKysr KyBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5jYworQEAgLTMyNSw2ICszMjUs NjEgQEAgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dAorICAgICAgIHJl YWRlciwgY29udGV4dF9hZGRyZXNzLCBjb250ZXh0Xy5taXBzNjQpOworIH0KKyAKKysjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWX0ZBTUlMWSkKKysKKyt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJh aXRzPgorK3N0YXRpYyBib29sIFJlYWRDb250ZXh0KFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVy LAorKyAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVz cywKKysgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQq IGRlc3RfY29udGV4dCkgeworKyAgY29uc3QgUHJvY2Vzc01lbW9yeSogbWVtb3J5ID0gcmVhZGVy LT5NZW1vcnkoKTsKKysKKysgIExpbnV4Vk1BZGRyZXNzIGdyZWdzX2FkZHJlc3MgPSBjb250ZXh0 X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKFVD b250ZXh0PFRyYWl0cz4sIG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgZ3JlZ3MpOworKworKyAg dHlwZW5hbWUgVHJhaXRzOjpTaWduYWxUaHJlYWRDb250ZXh0IHRocmVhZF9jb250ZXh0OworKyAg aWYgKCFtZW1vcnktPlJlYWQoZ3JlZ3NfYWRkcmVzcywgc2l6ZW9mKHRocmVhZF9jb250ZXh0KSwg JnRocmVhZF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGdy ZWdzIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhWTUFkZHJlc3MgZnBy ZWdzX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dDxUcmFpdHM+LCBtY29udGV4dCkgKworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1D b250ZXh0LCBmcHJlZ3MpOworKworKyAgdHlwZW5hbWUgVHJhaXRzOjpTaWduYWxGbG9hdENvbnRl eHQgZnBfY29udGV4dDsKKysgIGlmICghbWVtb3J5LT5SZWFkKGZwcmVnc19hZGRyZXNzLCBzaXpl b2YoZnBfY29udGV4dCksICZmcF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3Vs ZG4ndCByZWFkIGZwcmVncyI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysKKysgIEluaXRp YWxpemVDUFVDb250ZXh0UklTQ1Y8VHJhaXRzPih0aHJlYWRfY29udGV4dCwgZnBfY29udGV4dCwg ZGVzdF9jb250ZXh0KTsKKysKKysgIHJldHVybiB0cnVlOworK30KKysKKyt0ZW1wbGF0ZSA8Pgor K2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czMy PigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgIExpbnV4Vk1BZGRyZXNz IGNvbnRleHRfYWRkcmVzcykgeworKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hp dGVjdHVyZVJJU0NWMzI7CisrICBjb250ZXh0Xy5yaXNjdjMyID0gJmNvbnRleHRfdW5pb25fLnJp c2N2MzI7CisrCisrICByZXR1cm4gaW50ZXJuYWw6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHMz Mj4oCisrICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLnJpc2N2MzIpOwor K30KKysKKyt0ZW1wbGF0ZSA8PgorK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENv bnRleHQ8Q29udGV4dFRyYWl0czY0PigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIs CisrICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgeworKyAgY29udGV4dF8uYXJj aGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVJJU0NWNjQ7CisrICBjb250ZXh0Xy5yaXNjdjY0 ID0gJmNvbnRleHRfdW5pb25fLnJpc2N2NjQ7CisrCisrICByZXR1cm4gaW50ZXJuYWw6OlJlYWRD b250ZXh0PENvbnRleHRUcmFpdHM2ND4oCisrICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3Ms IGNvbnRleHRfLnJpc2N2NjQpOworK30KKysKKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1J TFkKKyAKKyBib29sIEV4Y2VwdGlvblNuYXBzaG90TGludXg6OkluaXRpYWxpemUoCitJbmRleDog Y2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNo cm9taXVtLTEwMi4wLjUwMDUuNjEub3JpZy90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAorKysrIGNocm9taXVtLTEw Mi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv ZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKK0BAIC04OSw2ICs4OSw5IEBAIGNsYXNzIEV4Y2Vw dGlvblNuYXBzaG90TGludXggZmluYWwgOiBwdWIKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKQorICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7CisgICAgIENQVUNvbnRleHRN SVBTNjQgbWlwczY0OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKyAg ICBDUFVDb250ZXh0UklTQ1YzMiByaXNjdjMyOworKyAgICBDUFVDb250ZXh0UklTQ1Y2NCByaXNj djY0OworICNlbmRpZgorICAgfSBjb250ZXh0X3VuaW9uXzsKKyAgIENQVUNvbnRleHQgY29udGV4 dF87CitJbmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGNocm9taXVtLTEwMi4wLjUwMDUuNjEub3JpZy90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYworKysrIGNocm9t aXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvcHJvY2Vzc19yZWFkZXJfbGludXguY2MKK0BAIC0xMDgsNiArMTA4LDkgQEAgdm9pZCBQ cm9jZXNzUmVhZGVyTGludXg6OlRocmVhZDo6SW5pdGlhbAorICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpCisgICBzdGFja19wb2ludGVyID0gcmVhZGVyLT5JczY0Qml0KCkgPyB0 aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQucmVnc1syOV0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQzMi5yZWdz WzI5XTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWX0ZBTUlMWSkKKysgIHN0YWNrX3Bv aW50ZXIgPSByZWFkZXItPklzNjRCaXQoKSA/IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2 NC5zcAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhyZWFkX2luZm8u dGhyZWFkX2NvbnRleHQudDMyLnNwOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmCitJ bmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2hyb21p dW0tMTAyLjAuNTAwNS42MS5vcmlnL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKKysrKyBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0 LmgKK0BAIC00MjIsNiArNDIyLDY3IEBAIHN0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRleHQ8 Q29udGV4dFQKKyAgICAgICAgICAgICAgICJjb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworICNl bmRpZgorIAorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKworK3N0cnVj dCBNQ29udGV4dDMyIHsKKysgIHVpbnQzMl90IGdyZWdzWzMyXTsKKysgIHVpbnQ2NF90IGZwcmVn c1szMl07CisrICB1bnNpZ25lZCBpbnQgZmNzcjsKKyt9OworKworK3N0cnVjdCBNQ29udGV4dDY0 IHsKKysgIHVpbnQ2NF90IGdyZWdzWzMyXTsKKysgIHVpbnQ2NF90IGZwcmVnc1szMl07CisrICB1 bnNpZ25lZCBpbnQgZmNzcjsKKyt9OworKworK3N0cnVjdCBDb250ZXh0VHJhaXRzMzIgOiBwdWJs aWMgVHJhaXRzMzIgeworKyAgdXNpbmcgTUNvbnRleHQgPSBNQ29udGV4dDMyOworKyAgdXNpbmcg U2lnbmFsVGhyZWFkQ29udGV4dCA9IFRocmVhZENvbnRleHQ6OnQzMl90OworKyAgdXNpbmcgU2ln bmFsRmxvYXRDb250ZXh0ID0gRmxvYXRDb250ZXh0OjpmMzJfdDsKKysgIHVzaW5nIENQVUNvbnRl eHQgPSBDUFVDb250ZXh0UklTQ1YzMjsKKyt9OworKworK3N0cnVjdCBDb250ZXh0VHJhaXRzNjQg OiBwdWJsaWMgVHJhaXRzNjQgeworKyAgdXNpbmcgTUNvbnRleHQgPSBNQ29udGV4dDY0OworKyAg dXNpbmcgU2lnbmFsVGhyZWFkQ29udGV4dCA9IFRocmVhZENvbnRleHQ6OnQ2NF90OworKyAgdXNp bmcgU2lnbmFsRmxvYXRDb250ZXh0ID0gRmxvYXRDb250ZXh0OjpmNjRfdDsKKysgIHVzaW5nIENQ VUNvbnRleHQgPSBDUFVDb250ZXh0UklTQ1Y2NDsKKyt9OworKworK3RlbXBsYXRlIDx0eXBlbmFt ZSBUcmFpdHM+Cisrc3RydWN0IFVDb250ZXh0IHsKKysgIHR5cGVuYW1lIFRyYWl0czo6VUxvbmcg ZmxhZ3M7CisrICB0eXBlbmFtZSBUcmFpdHM6OkFkZHJlc3MgbGluazsKKysgIFNpZ25hbFN0YWNr PFRyYWl0cz4gc3RhY2s7CisrICBTaWdzZXQ8VHJhaXRzPiBzaWdtYXNrOworKyAgY2hhciBwYWRk aW5nWzEyOCAtIHNpemVvZihzaWdtYXNrKV07CisrICB0eXBlbmFtZSBUcmFpdHM6OkNoYXJfNjRP bmx5IHBhZGRpbmcyWzhdOworKyAgdHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCBtY29udGV4dDsK Kyt9OworKworKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWMzIpCisrc3RhdGljX2Fzc2VydChv ZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VHJhaXRzMzI+LCBtY29udGV4dCkgPT0KKysgICAgICAg ICAgICAgICAgICBvZmZzZXRvZih1Y29udGV4dF90LCB1Y19tY29udGV4dCksCisrICAgICAgICAg ICAgICAiY29udGV4dCBvZmZzZXQgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KG9mZnNldG9m KFVDb250ZXh0PENvbnRleHRUcmFpdHMzMj4sIG1jb250ZXh0LmdyZWdzKSA9PQorKyAgICAgICAg ICAgICAgICAgIG9mZnNldG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0Ll9fZ3JlZ3MpLAorKyAg ICAgICAgICAgICAgImNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChv ZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VHJhaXRzMzI+LCBtY29udGV4dC5mcHJlZ3MpID09Cisr ICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodWNvbnRleHRfdCwgdWNfbWNvbnRleHQuX19mcHJl Z3MpLAorKyAgICAgICAgICAgICAgImNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7CisrI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9SSVNDVjY0KQorK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRl eHQ8Q29udGV4dFRyYWl0czY0PiwgbWNvbnRleHQpID09CisrICAgICAgICAgICAgICAgICAgb2Zm c2V0b2YodWNvbnRleHRfdCwgdWNfbWNvbnRleHQpLAorKyAgICAgICAgICAgICAgImNvbnRleHQg b2Zmc2V0IG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dDxDb250 ZXh0VHJhaXRzNjQ+LCBtY29udGV4dC5ncmVncykgPT0KKysgICAgICAgICAgICAgICAgICBvZmZz ZXRvZih1Y29udGV4dF90LCB1Y19tY29udGV4dC5fX2dyZWdzKSwKKysgICAgICAgICAgICAgICJj b250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRl eHQ8Q29udGV4dFRyYWl0czY0PiwgbWNvbnRleHQuZnByZWdzKSA9PQorKyAgICAgICAgICAgICAg ICAgIG9mZnNldG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0Ll9fZnByZWdzKSwKKysgICAgICAg ICAgICAgICJjb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworKyNlbmRpZgorKworICNlbHNlCisg I2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitJbmRleDogY2hy b21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjaHJvbWl1 bS0xMDIuMC41MDA1LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCisrKysgY2hyb21pdW0tMTAyLjAuNTAw NS42MS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1f c25hcHNob3RfbGludXguY2MKK0BAIC0yMDUsNiArMjA1LDkgQEAgQ1BVQXJjaGl0ZWN0dXJlIFN5 c3RlbVNuYXBzaG90TGludXg6OkdldAorICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpCisgICByZXR1cm4gcHJvY2Vzc19yZWFkZXJfLT5JczY0Qml0KCkgPyBrQ1BVQXJjaGl0ZWN0 dXJlTUlQUzY0RUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtDUFVB cmNoaXRlY3R1cmVNSVBTRUw7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9SSVNDVl9GQU1JTFkp CisrICByZXR1cm4gcHJvY2Vzc19yZWFkZXJfLT5JczY0Qml0KCkgPyBrQ1BVQXJjaGl0ZWN0dXJl UklTQ1Y2NAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga0NQVUFyY2hp dGVjdHVyZVJJU0NWMzI7CisgI2Vsc2UKKyAjZXJyb3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVy ZQorICNlbmRpZgorQEAgLTIyMCw2ICsyMjMsOSBAQCB1aW50MzJfdCBTeXN0ZW1TbmFwc2hvdExp bnV4OjpDUFVSZXZpc2lvCisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAg IC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKKyAgIHJldHVybiAwOworKyNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKyAgLy8gTm90IGltcGxlbWVudGFibGUgb24gUklT Q1YKKysgIHJldHVybiAwOworICNlbHNlCisgI2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1 cmUKKyAjZW5kaWYKK0BAIC0yNDAsNiArMjQ2LDkgQEAgc3RkOjpzdHJpbmcgU3lzdGVtU25hcHNo b3RMaW51eDo6Q1BVVmVuZAorICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisg ICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCisgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsK KysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWX0ZBTUlMWSkKKysgIC8vIE5vdCBpbXBsZW1l bnRhYmxlIG9uIFJJU0NWCisrICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAjZWxzZQorICNlcnJv ciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMzczLDYgKzM4Miw5IEBA IGJvb2wgU3lzdGVtU25hcHNob3RMaW51eDo6TlhFbmFibGVkKCkgY28KKyAjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUwor ICAgcmV0dXJuIGZhbHNlOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQor KyAgLy8gTm90IGltcGxlbWVudGFibGUgb24gUklTQ1YKKysgIHJldHVybiBmYWxzZTsKKyAjZWxz ZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorSW5kZXg6 IGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2hy b21pdW0tMTAyLjAuNTAwNS42MS5vcmlnL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYworKysrIGNocm9taXVtLTEwMi4w LjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhy ZWFkX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMTg5LDYgKzE4OSwyMiBAQCBib29sIFRocmVhZFNu YXBzaG90TGludXg6OkluaXRpYWxpemUoCisgICAgICAgICB0aHJlYWQudGhyZWFkX2luZm8uZmxv YXRfY29udGV4dC5mMzIsCisgICAgICAgICBjb250ZXh0Xy5taXBzZWwpOworICAgfQorKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKyAgaWYgKHByb2Nlc3NfcmVhZGVyLT5J czY0Qml0KCkpIHsKKysgICAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVy ZVJJU0NWNjQ7CisrICAgIGNvbnRleHRfLnJpc2N2NjQgPSAmY29udGV4dF91bmlvbl8ucmlzY3Y2 NDsKKysgICAgSW5pdGlhbGl6ZUNQVUNvbnRleHRSSVNDVjxDb250ZXh0VHJhaXRzNjQ+KAorKwl0 aHJlYWQudGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LAorKwl0aHJlYWQudGhyZWFkX2lu Zm8uZmxvYXRfY29udGV4dC5mNjQsCisrCWNvbnRleHRfLnJpc2N2NjQpOworKyAgfSBlbHNlIHsK KysgICAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVJJU0NWMzI7Cisr ICAgIGNvbnRleHRfLnJpc2N2MzIgPSAmY29udGV4dF91bmlvbl8ucmlzY3YzMjsKKysgICAgSW5p dGlhbGl6ZUNQVUNvbnRleHRSSVNDVjxDb250ZXh0VHJhaXRzMzI+KAorKwl0aHJlYWQudGhyZWFk X2luZm8udGhyZWFkX2NvbnRleHQudDMyLAorKwl0aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29u dGV4dC5mMzIsCisrCWNvbnRleHRfLnJpc2N2MzIpOworKyAgfQorICNlbHNlCisgI2Vycm9yIFBv cnQuCisgI2VuZGlmCitJbmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGNocm9taXVtLTEwMi4wLjUwMDUuNjEub3JpZy90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAor KysrIGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmgKK0BAIC03Myw2ICs3Myw5IEBA IGNsYXNzIFRocmVhZFNuYXBzaG90TGludXggZmluYWwgOiBwdWJsaWMKKyAjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7CisgICAg IENQVUNvbnRleHRNSVBTNjQgbWlwczY0OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1Zf RkFNSUxZKQorKyAgICBDUFVDb250ZXh0UklTQ1YzMiByaXNjdjMyOworKyAgICBDUFVDb250ZXh0 UklTQ1Y2NCByaXNjdjY0OworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNI X0NQVV9YODZfRkFNSUxZCitJbmRleDogY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBjaHJvbWl1bS0xMDIuMC41MDA1LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCisrKysgY2hyb21pdW0tMTAyLjAuNTAwNS42MS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MKK0BAIC0zOTgs NiArMzk4LDUxIEBAIGJvb2wgR2V0VGhyZWFkQXJlYTY0KHBpZF90IHRpZCwKKyAgIHJldHVybiB0 cnVlOworIH0KKyAKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWX0ZBTUlMWSkKKysKKyt0 ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdGluYXRpb24+CisrYm9vbCBHZXRSZWdpc3RlclNldChwaWRf dCB0aWQsIGludCBzZXQsIERlc3RpbmF0aW9uKiBkZXN0LCBib29sIGNhbl9sb2cpIHsKKysgIGlv dmVjIGlvdjsKKysgIGlvdi5pb3ZfYmFzZSA9IGRlc3Q7CisrICBpb3YuaW92X2xlbiA9IHNpemVv ZigqZGVzdCk7CisrICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgcmVpbnRlcnBy ZXRfY2FzdDx2b2lkKj4oc2V0KSwgJmlvdikgIT0gMCkgeworKyAgICBQTE9HX0lGKEVSUk9SLCBj YW5fbG9nKSA8PCAicHRyYWNlIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKyAgaWYgKGlv di5pb3ZfbGVuICE9IHNpemVvZigqZGVzdCkpIHsKKysgICAgTE9HX0lGKEVSUk9SLCBjYW5fbG9n KSA8PCAiVW5leHBlY3RlZCByZWdpc3RlcnMgc2l6ZSI7CisrICAgIHJldHVybiBmYWxzZTsKKysg IH0KKysgIHJldHVybiB0cnVlOworK30KKysKKytib29sIEdldEZsb2F0aW5nUG9pbnRSZWdpc3Rl cnMzMihwaWRfdCB0aWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRD b250ZXh0KiBjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg Y2FuX2xvZykgeworKyAgcmV0dXJuIGZhbHNlOworK30KKysKKytib29sIEdldEZsb2F0aW5nUG9p bnRSZWdpc3RlcnM2NChwaWRfdCB0aWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRmxvYXRDb250ZXh0KiBjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgY2FuX2xvZykgeworKyAgcmV0dXJuIEdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFJG UFJFRywgJmNvbnRleHQtPmY2NC5mLCBjYW5fbG9nKTsKKyt9CisrCisrYm9vbCBHZXRUaHJlYWRB cmVhMzIocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRocmVhZENvbnRl eHQmIGNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgTGludXhWTUFkZHJlc3MqIGFkZHJl c3MsCisrICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7CisrICByZXR1cm4gZmFs c2U7CisrfQorKworK2Jvb2wgR2V0VGhyZWFkQXJlYTY0KHBpZF90IHRpZCwKKysgICAgICAgICAg ICAgICAgICAgICBjb25zdCBUaHJlYWRDb250ZXh0JiBjb250ZXh0LAorKyAgICAgICAgICAgICAg ICAgICAgIExpbnV4Vk1BZGRyZXNzKiBhZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAgIGJv b2wgY2FuX2xvZykgeworKyAgKmFkZHJlc3MgPSBjb250ZXh0LnQ2NC50cDsKKysgIHJldHVybiB0 cnVlOworK30KKysKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVf WDg2X0ZBTUlMWQorSW5kZXg6IGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Y2hyb21pdW0tMTAyLjAuNTAwNS42MS5vcmlnL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAorKysrIGNocm9taXVtLTEwMi4wLjUwMDUuNjEvdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCitAQCAt NzksNiArNzksNDAgQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7CisgICAgIHVpbnQzMl90IGNwMF9z dGF0dXM7CisgICAgIHVpbnQzMl90IGNwMF9jYXVzZTsKKyAgICAgdWludDMyX3QgcGFkZGluZzFf OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0 cyB1c2VyX3JlZ3Nfc3RydWN0IGluIGFzbS9wdHJhY2UuaC4KKysgICAgdWludDMyX3QgcGM7Cisr ICAgIHVpbnQzMl90IHJhOworKyAgICB1aW50MzJfdCBzcDsKKysgICAgdWludDMyX3QgZ3A7Cisr ICAgIHVpbnQzMl90IHRwOworKyAgICB1aW50MzJfdCB0MDsKKysgICAgdWludDMyX3QgdDE7Cisr ICAgIHVpbnQzMl90IHQyOworKyAgICB1aW50MzJfdCBzMDsKKysgICAgdWludDMyX3QgczE7Cisr ICAgIHVpbnQzMl90IGEwOworKyAgICB1aW50MzJfdCBhMTsKKysgICAgdWludDMyX3QgYTI7Cisr ICAgIHVpbnQzMl90IGEzOworKyAgICB1aW50MzJfdCBhNDsKKysgICAgdWludDMyX3QgYTU7Cisr ICAgIHVpbnQzMl90IGE2OworKyAgICB1aW50MzJfdCBhNzsKKysgICAgdWludDMyX3QgczI7Cisr ICAgIHVpbnQzMl90IHMzOworKyAgICB1aW50MzJfdCBzNDsKKysgICAgdWludDMyX3QgczU7Cisr ICAgIHVpbnQzMl90IHM2OworKyAgICB1aW50MzJfdCBzNzsKKysgICAgdWludDMyX3Qgczg7Cisr ICAgIHVpbnQzMl90IHM5OworKyAgICB1aW50MzJfdCBzMTA7CisrICAgIHVpbnQzMl90IHMxMTsK KysgICAgdWludDMyX3QgdDM7CisrICAgIHVpbnQzMl90IHQ0OworKyAgICB1aW50MzJfdCB0NTsK KysgICAgdWludDMyX3QgdDY7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFS Q0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0xMzIsNiArMTY2LDQwIEBAIHVuaW9uIFRocmVhZENvbnRl eHQgeworICAgICB1aW50NjRfdCBjcDBfYmFkdmFkZHI7CisgICAgIHVpbnQ2NF90IGNwMF9zdGF0 dXM7CisgICAgIHVpbnQ2NF90IGNwMF9jYXVzZTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1JJ U0NWX0ZBTUlMWSkKKysgICAgLy8gUmVmbGVjdHMgdXNlcl9yZWdzX3N0cnVjdCBpbiBhc20vcHRy YWNlLmguCisrICAgIHVpbnQ2NF90IHBjOworKyAgICB1aW50NjRfdCByYTsKKysgICAgdWludDY0 X3Qgc3A7CisrICAgIHVpbnQ2NF90IGdwOworKyAgICB1aW50NjRfdCB0cDsKKysgICAgdWludDY0 X3QgdDA7CisrICAgIHVpbnQ2NF90IHQxOworKyAgICB1aW50NjRfdCB0MjsKKysgICAgdWludDY0 X3QgczA7CisrICAgIHVpbnQ2NF90IHMxOworKyAgICB1aW50NjRfdCBhMDsKKysgICAgdWludDY0 X3QgYTE7CisrICAgIHVpbnQ2NF90IGEyOworKyAgICB1aW50NjRfdCBhMzsKKysgICAgdWludDY0 X3QgYTQ7CisrICAgIHVpbnQ2NF90IGE1OworKyAgICB1aW50NjRfdCBhNjsKKysgICAgdWludDY0 X3QgYTc7CisrICAgIHVpbnQ2NF90IHMyOworKyAgICB1aW50NjRfdCBzMzsKKysgICAgdWludDY0 X3QgczQ7CisrICAgIHVpbnQ2NF90IHM1OworKyAgICB1aW50NjRfdCBzNjsKKysgICAgdWludDY0 X3Qgczc7CisrICAgIHVpbnQ2NF90IHM4OworKyAgICB1aW50NjRfdCBzOTsKKysgICAgdWludDY0 X3QgczEwOworKyAgICB1aW50NjRfdCBzMTE7CisrICAgIHVpbnQ2NF90IHQzOworKyAgICB1aW50 NjRfdCB0NDsKKysgICAgdWludDY0X3QgdDU7CisrICAgIHVpbnQ2NF90IHQ2OworICNlbHNlCisg I2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMTQzLDEx ICsyMTEsMTIgQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7CisgICB1c2luZyBOYXRpdmVUaHJlYWRD b250ZXh0ID0gdXNlcl9yZWdzOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp CisgLy8gTm8gYXBwcm9wcmlhdGUgTmF0aXZlVGhyZWFkc0NvbnRleHQgdHlwZSBhdmFpbGFibGUg Zm9yIE1JUFMKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWX0ZBTUlMWSkKKyAjZWxzZQor ICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWSB8fCBBUkNIX0NQ VV9BUk02NAorIAorLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKysjaWYgIWRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1JJU0NWX0ZB TUlMWSkKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKQorICAgc3RhdGljX2Fzc2VydChz aXplb2YodDMyX3QpID09IHNpemVvZihOYXRpdmVUaHJlYWRDb250ZXh0KSwgIlNpemUgbWlzbWF0 Y2giKTsKKyAjZWxzZSAgLy8gQVJDSF9DUFVfNjRfQklUUworQEAgLTIxOCw2ICsyODcsOSBAQCB1 bmlvbiBGbG9hdENvbnRleHQgeworICAgICB9IGZwcmVnc1szMl07CisgICAgIHVpbnQzMl90IGZw Y3NyOworICAgICB1aW50MzJfdCBmcHVfaWQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9SSVND Vl9GQU1JTFkpCisrICAgIHVpbnQ2NF90IGZbMzJdOworKyAgICB1aW50MzJfdCBmY3NyOworICNl bHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAt MjUyLDYgKzMyNCw5IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7CisgICAgIGRvdWJsZSBmcHJlZ3Nb MzJdOworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAgdWludDMyX3QgZnB1X2lkOworKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFNSUxZKQorKyAgICB1aW50NjRfdCBmWzMyXTsKKysg ICAgdWludDMyX3QgZmNzcjsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJD SF9DUFVfWDg2X0ZBTUlMWQorQEAgLTI4MSw2ICszNTYsNyBAQCB1bmlvbiBGbG9hdENvbnRleHQg eworICAgc3RhdGljX2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YodXNlcl9mcHNpbWRfc3Ry dWN0KSwgIlNpemUgbWlzbWF0Y2giKTsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKQorIC8vIE5vIGFwcHJvcHJpYXRlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgbmF0aXZlIHR5 cGUgZm9yIGF2YWlsYWJsZSBNSVBTLgorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUklTQ1ZfRkFN SUxZKQorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODYKK0lu ZGV4OiBjaHJvbWl1bS0xMDIuMC41MDA1LjYxL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbmV0L2h0dHBfdHJhbnNwb3J0X2xpYmN1cmwuY2MKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjaHJv bWl1bS0xMDIuMC41MDA1LjYxLm9yaWcvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRp bC9uZXQvaHR0cF90cmFuc3BvcnRfbGliY3VybC5jYworKysrIGNocm9taXVtLTEwMi4wLjUwMDUu NjEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9uZXQvaHR0cF90cmFuc3BvcnRf bGliY3VybC5jYworQEAgLTIzNyw2ICsyMzcsOCBAQCBzdGQ6OnN0cmluZyBVc2VyQWdlbnQoKSB7 CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQorICAgICBzdGF0aWMgY29uc3Rl eHByIGNoYXIgYXJjaFtdID0gImFhcmNoNjRfYmUiOworICNlbmRpZgorKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUklTQ1Y2NCkKKysgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGFyY2hbXSA9ICJy aXNjdjY0IjsKKyAjZWxzZQorICNlcnJvciBQb3J0CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1yaXNjdi1kYXYxZC5wYXRjaCBi L3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJpc2N2LWRhdjFkLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDVjODA1OGI0MWUy Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0tcmlzY3YtZGF2MWQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorSW5kZXg6IGNocm9taXVt LTEwMi4wLjUwMDUuNjEvdGhpcmRfcGFydHkvZGF2MWQvY29uZmlnL2xpbnV4L3Jpc2N2NjQvY29u ZmlnLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBjaHJvbWl1bS0xMDIuMC41MDA1 LjYxL3RoaXJkX3BhcnR5L2RhdjFkL2NvbmZpZy9saW51eC9yaXNjdjY0L2NvbmZpZy5oCitAQCAt MCwwICsxLDM4IEBACisrLyoKKysgKiBBdXRvZ2VuZXJhdGVkIGJ5IHRoZSBNZXNvbiBidWlsZCBz eXN0ZW0uCisrICogRG8gbm90IGVkaXQsIHlvdXIgY2hhbmdlcyB3aWxsIGJlIGxvc3QuCisrICov CisrCisrI3ByYWdtYSBvbmNlCisrCisrI2RlZmluZSBBUkNIX0FBUkNINjQgMAorKworKyNkZWZp bmUgQVJDSF9BUk0gMAorKworKyNkZWZpbmUgQVJDSF9QUEM2NExFIDAKKysKKysjZGVmaW5lIEFS Q0hfWDg2IDAKKysKKysjZGVmaW5lIEFSQ0hfWDg2XzMyIDAKKysKKysjZGVmaW5lIEFSQ0hfWDg2 XzY0IDAKKysKKysjZGVmaW5lIENPTkZJR18xNkJQQyAxCisrCisrI2RlZmluZSBDT05GSUdfOEJQ QyAxCisrCisrLy8gI2RlZmluZSBDT05GSUdfTE9HIDEgLS0gTG9nZ2luZyBpcyBjb250cm9sbGVk IGJ5IENocm9taXVtCisrCisrI2RlZmluZSBFTkRJQU5ORVNTX0JJRyAwCisrCisrI2RlZmluZSBI QVZFX0FTTSAwCisrCisrI2RlZmluZSBIQVZFX0FTX0ZVTkMgMAorKworKyNkZWZpbmUgSEFWRV9D TE9DS19HRVRUSU1FIDEKKysKKysjZGVmaW5lIEhBVkVfR0VUQVVYVkFMIDEKKysKKysjZGVmaW5l IEhBVkVfUE9TSVhfTUVNQUxJR04gMQorKworKyNkZWZpbmUgSEFWRV9VTklTVERfSCAxCmRpZmYg LS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94 LW1lbWJhcnJpZXIucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi41NWVmMjUxNjE5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gK QEAgLTAsMCArMSwxMCBAQAorLS0tIGEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfc2V0cy5jYworKysrIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfc2V0cy5jYworQEAgLTM3MCw2ICszNzAsNyBAQAorICAgc3dpdGNoIChzeXNubykg eworICAgICBjYXNlIF9fTlJfZXhpdDoKKyAgICAgY2FzZSBfX05SX2V4aXRfZ3JvdXA6CisrICAg IGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBjYXNlIF9fTlJfd2FpdDQ6CisgICAgIGNhc2Ug X19OUl93YWl0aWQ6CisgI2lmIGRlZmluZWQoX19pMzg2X18pCmRpZmYgLS1naXQgYS9zcmNwa2dz L2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDc3Y2VhYThhY2JjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc25kaW8ucGF0 Y2gKQEAgLTAsMCArMSw4NzcgQEAKK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9y aWcvbWVkaWEvQlVJTEQuZ24gY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL0JVSUxELmduCist LS0gYS9tZWRpYS9CVUlMRC5nbgkyMDIwLTA2LTAzIDIwOjQwOjI2LjAwMDAwMDAwMCArMDIwMAor KysrIGIvbWVkaWEvQlVJTEQuZ24JMjAyMS0wNi0xMyAxNzozMjoyOC41MTAzOTU5NzUgKzAyMDAK K0BAIC02NSw2ICs2NSw5IEBACisgICAgICAgZGVmaW5lcyArPSBbICJETE9QRU5fUFVMU0VBVURJ TyIgXQorICAgICB9CisgICB9CisrICBpZiAodXNlX3NuZGlvKSB7CisrICAgIGRlZmluZXMgKz0g WyAiVVNFX1NORElPIiBdCisrICB9CisgICBpZiAodXNlX2NyYXMpIHsKKyAgICAgZGVmaW5lcyAr PSBbICJVU0VfQ1JBUyIgXQorICAgfQorZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcu b3JpZy9tZWRpYS9hdWRpby9CVUlMRC5nbiBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVk aW8vQlVJTEQuZ24KKy0tLSBhL21lZGlhL2F1ZGlvL0JVSUxELmduCTIwMjAtMDYtMDMgMjA6Mzk6 MzcuMDAwMDAwMDAwICswMjAwCisrKysgYi9tZWRpYS9hdWRpby9CVUlMRC5nbgkyMDIwLTA2LTEz IDE3OjMyOjI4LjUxMTM5NTk2OSArMDIwMAorQEAgLTIzNiw2ICsyMzYsMTcgQEAKKyAgICAgc291 cmNlcyArPSBbICJsaW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjIiBdCisgICB9CisgCisrICBp ZiAodXNlX3NuZGlvKSB7CisrICAgIGxpYnMgKz0gWyAic25kaW8iIF0KKysgICAgc291cmNlcyAr PSBbCisrICAgICAgInNuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uY2MiLAorKyAgICAgICJzbmRp by9zbmRpb19pbnB1dC5jYyIsCisrICAgICAgInNuZGlvL3NuZGlvX2lucHV0LmgiLAorKyAgICAg ICJzbmRpby9zbmRpb19vdXRwdXQuY2MiLAorKyAgICAgICJzbmRpby9zbmRpb19vdXRwdXQuaCIK KysgICAgXQorKyAgfQorKworICAgaWYgKHVzZV9hbHNhKSB7CisgICAgIGxpYnMgKz0gWyAiYXNv dW5kIiBdCisgICAgIHNvdXJjZXMgKz0gWworZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMu OTcub3JpZy9tZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjIGNocm9taXVt LTgzLjAuNDEwMy45Ny9tZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjCist LS0gYS9tZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjCTIwMjAtMDYtMDMg MjA6Mzk6MzcuMDAwMDAwMDAwICswMjAwCisrKysgYi9tZWRpYS9hdWRpby9saW51eC9hdWRpb19t YW5hZ2VyX2xpbnV4LmNjCTIwMjAtMDYtMTMgMTg6MDk6NDMuNjIzMzMzMTY3ICswMjAwCitAQCAt MTksNiArMTksMTEgQEAKKyAjaW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvYXVkaW9fbWFuYWdl cl9wdWxzZS5oIgorICNpbmNsdWRlICJtZWRpYS9hdWRpby9wdWxzZS9wdWxzZV91dGlsLmgiCisg I2VuZGlmCisrI2lmIGRlZmluZWQoVVNFX1NORElPKQorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9z bmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlv L3NuZGlvX2lucHV0LmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1 dC5oIgorKyNlbmRpZgorIAorIG5hbWVzcGFjZSBtZWRpYSB7CisgCisgc3RkOjp1bmlxdWVfcHRy PG1lZGlhOjpBdWRpb01hbmFnZXI+IENyZWF0ZUF1ZGlvTWFuYWdlcigKK0BAIC0zOSw2ICs0NSwx NiBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRp b19sb2dfZmFjdG9yeSk7CisgICB9CisgCisrI2lmIGRlZmluZWQoVVNFX1NORElPKQorKyAgc3Ry dWN0IHNpb19oZGwgKmhkbCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19QTEFZLCAwKTsKKysg IGlmIChoZGwgIT0gTlVMTCkgeworKyAgICBzaW9fY2xvc2UoaGRsKTsKKysgICAgVU1BX0hJU1RP R1JBTV9FTlVNRVJBVElPTigiTWVkaWEuTGludXhBdWRpb0lPIiwga1NuZGlvLCBrQXVkaW9JT01h eCArIDEpOworKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb01hbmFnZXJTbmRpbz4o c3RkOjptb3ZlKGF1ZGlvX3RocmVhZCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhdWRpb19sb2dfZmFjdG9yeSk7CisrICB9CisrI2VuZGlmCisr CisgI2lmIGRlZmluZWQoVVNFX0NSQVMpCisgICBpZiAoYmFzZTo6Q29tbWFuZExpbmU6OkZvckN1 cnJlbnRQcm9jZXNzKCktPkhhc1N3aXRjaChzd2l0Y2hlczo6a1VzZUNyYXMpKSB7CisgICAgIFVN QV9ISVNUT0dSQU1fRU5VTUVSQVRJT04oIk1lZGlhLkxpbnV4QXVkaW9JTyIsIGtDcmFzLCBrQXVk aW9JT01heCArIDEpOworZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRp YS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjIGNocm9taXVtLTgzLjAuNDEwMy45 Ny9tZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjCistLS0gYS9tZWRpYS9h dWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAw MDAwMDAwICswMTAwCisrKysgYi9tZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlv LmNjCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDE0OCBA QAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KKysKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRp by5oIgorKworKyNpbmNsdWRlICJiYXNlL21ldHJpY3MvaGlzdG9ncmFtX21hY3Jvcy5oIgorKyNp bmNsdWRlICJiYXNlL21lbW9yeS9wdHJfdXRpbC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9h dWRpb19kZXZpY2VfZGVzY3JpcHRpb24uaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9f b3V0cHV0X2Rpc3BhdGNoZXIuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9f aW5wdXQuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgiCisr I2luY2x1ZGUgIm1lZGlhL2Jhc2UvbGltaXRzLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk aWFfc3dpdGNoZXMuaCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworKworKy8vIE1heGltdW0g bnVtYmVyIG9mIG91dHB1dCBzdHJlYW1zIHRoYXQgY2FuIGJlIG9wZW4gc2ltdWx0YW5lb3VzbHku Cisrc3RhdGljIGNvbnN0IGludCBrTWF4T3V0cHV0U3RyZWFtcyA9IDQ7CisrCisrLy8gRGVmYXVs dCBzYW1wbGUgcmF0ZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBzdHJlYW1zLgorK3N0YXRpYyBjb25z dCBpbnQga0RlZmF1bHRTYW1wbGVSYXRlID0gNDgwMDA7CisrCisrdm9pZCBBZGREZWZhdWx0RGV2 aWNlKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgeworKyAgRENIRUNLKGRldmljZV9u YW1lcy0+ZW1wdHkoKSk7CisrICBkZXZpY2VfbmFtZXMtPnB1c2hfZnJvbnQoQXVkaW9EZXZpY2VO YW1lOjpDcmVhdGVEZWZhdWx0KCkpOworK30KKysKKytib29sIEF1ZGlvTWFuYWdlclNuZGlvOjpI YXNBdWRpb091dHB1dERldmljZXMoKSB7CisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrYm9vbCBB dWRpb01hbmFnZXJTbmRpbzo6SGFzQXVkaW9JbnB1dERldmljZXMoKSB7CisrICByZXR1cm4gdHJ1 ZTsKKyt9CisrCisrdm9pZCBBdWRpb01hbmFnZXJTbmRpbzo6R2V0QXVkaW9JbnB1dERldmljZU5h bWVzKAorKyAgICBBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKysgIERDSEVDSyhk ZXZpY2VfbmFtZXMtPmVtcHR5KCkpOworKyAgQWRkRGVmYXVsdERldmljZShkZXZpY2VfbmFtZXMp OworK30KKysKKyt2b2lkIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRBdWRpb091dHB1dERldmljZU5h bWVzKAorKyAgICBBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKysgIEFkZERlZmF1 bHREZXZpY2UoZGV2aWNlX25hbWVzKTsKKyt9CisrCisrY29uc3QgY2hhciogQXVkaW9NYW5hZ2Vy U25kaW86OkdldE5hbWUoKSB7CisrICByZXR1cm4gIlNORElPIjsKKyt9CisrCisrQXVkaW9QYXJh bWV0ZXJzIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRJbnB1dFN0cmVhbVBhcmFtZXRlcnMoCisrICAg IGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQpIHsKKysgIHN0YXRpYyBjb25zdCBpbnQga0Rl ZmF1bHRJbnB1dEJ1ZmZlclNpemUgPSAxMDI0OworKworKyAgaW50IHVzZXJfYnVmZmVyX3NpemUg PSBHZXRVc2VyQnVmZmVyU2l6ZSgpOworKyAgaW50IGJ1ZmZlcl9zaXplID0gdXNlcl9idWZmZXJf c2l6ZSA/CisrICAgICAgdXNlcl9idWZmZXJfc2l6ZSA6IGtEZWZhdWx0SW5wdXRCdWZmZXJTaXpl OworKworKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVycygKKysgICAgICBBdWRpb1BhcmFtZXRlcnM6 OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgQ0hBTk5FTF9MQVlPVVRfU1RFUkVPLAorKyAgICAgIGtE ZWZhdWx0U2FtcGxlUmF0ZSwgYnVmZmVyX3NpemUpOworK30KKysKKytBdWRpb01hbmFnZXJTbmRp bzo6QXVkaW9NYW5hZ2VyU25kaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvVGhyZWFkPiBhdWRpb190 aHJlYWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0xv Z0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KQorKyAgICA6IEF1ZGlvTWFuYWdlckJhc2Uoc3Rk Ojptb3ZlKGF1ZGlvX3RocmVhZCksCisrICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19sb2df ZmFjdG9yeSkgeworKyAgRExPRyhXQVJOSU5HKSA8PCAiQXVkaW9NYW5hZ2VyU25kaW8iOworKyAg U2V0TWF4T3V0cHV0U3RyZWFtc0FsbG93ZWQoa01heE91dHB1dFN0cmVhbXMpOworK30KKysKKytB dWRpb01hbmFnZXJTbmRpbzo6fkF1ZGlvTWFuYWdlclNuZGlvKCkgeworKyAgU2h1dGRvd24oKTsK Kyt9CisrCisrQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTGluZWFy T3V0cHV0U3RyZWFtKAorKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAg Y29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgeworKyAgRENIRUNLX0VRKEF1ZGlvUGFy YW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiwgcGFyYW1zLmZvcm1hdCgpKTsKKysgIHJldHVybiBN YWtlT3V0cHV0U3RyZWFtKHBhcmFtcyk7CisrfQorKworK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRp b01hbmFnZXJTbmRpbzo6TWFrZUxvd0xhdGVuY3lPdXRwdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1 ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lk LAorKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisrICBETE9HX0lGKEVS Uk9SLCAhZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKysgIERDSEVD S19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgcGFyYW1zLmZvcm1h dCgpKTsKKysgIHJldHVybiBNYWtlT3V0cHV0U3RyZWFtKHBhcmFtcyk7CisrfQorKworK0F1ZGlv SW5wdXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTGluZWFySW5wdXRTdHJlYW0oCisr ICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICBjb25zdCBzdGQ6OnN0cmlu ZyYgZGV2aWNlX2lkLAorKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7Cisr ICBEQ0hFQ0tfRVEoQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9y bWF0KCkpOworKyAgcmV0dXJuIE1ha2VJbnB1dFN0cmVhbShwYXJhbXMpOworK30KKysKKytBdWRp b0lucHV0U3RyZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZUxvd0xhdGVuY3lJbnB1dFN0cmVh bSgKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2sp IHsKKysgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwg cGFyYW1zLmZvcm1hdCgpKTsKKysgIHJldHVybiBNYWtlSW5wdXRTdHJlYW0ocGFyYW1zKTsKKyt9 CisrCisrQXVkaW9QYXJhbWV0ZXJzIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRQcmVmZXJyZWRPdXRw dXRTdHJlYW1QYXJhbWV0ZXJzKAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2Rldmlj ZV9pZCwKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIHsKKysgIC8v IFRPRE8odG9tbWkpOiBTdXBwb3J0IHxvdXRwdXRfZGV2aWNlX2lkfC4KKysgIERMT0dfSUYoRVJS T1IsICFvdXRwdXRfZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKysg IHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRPdXRwdXRCdWZmZXJTaXplID0gMjA0ODsKKysKKysg IENoYW5uZWxMYXlvdXQgY2hhbm5lbF9sYXlvdXQgPSBDSEFOTkVMX0xBWU9VVF9TVEVSRU87Cisr ICBpbnQgc2FtcGxlX3JhdGUgPSBrRGVmYXVsdFNhbXBsZVJhdGU7CisrICBpbnQgYnVmZmVyX3Np emUgPSBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemU7CisrICBpZiAoaW5wdXRfcGFyYW1zLklzVmFs aWQoKSkgeworKyAgICBzYW1wbGVfcmF0ZSA9IGlucHV0X3BhcmFtcy5zYW1wbGVfcmF0ZSgpOwor KyAgICBjaGFubmVsX2xheW91dCA9IGlucHV0X3BhcmFtcy5jaGFubmVsX2xheW91dCgpOworKyAg ICBidWZmZXJfc2l6ZSA9IHN0ZDo6bWluKGJ1ZmZlcl9zaXplLCBpbnB1dF9wYXJhbXMuZnJhbWVz X3Blcl9idWZmZXIoKSk7CisrICB9CisrCisrICBpbnQgdXNlcl9idWZmZXJfc2l6ZSA9IEdldFVz ZXJCdWZmZXJTaXplKCk7CisrICBpZiAodXNlcl9idWZmZXJfc2l6ZSkKKysgICAgYnVmZmVyX3Np emUgPSB1c2VyX2J1ZmZlcl9zaXplOworKworKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVycygKKysg ICAgICBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgY2hhbm5lbF9sYXlv dXQsCisrICAgICAgc2FtcGxlX3JhdGUsIGJ1ZmZlcl9zaXplKTsKKyt9CisrCisrQXVkaW9JbnB1 dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VJbnB1dFN0cmVhbSgKKysgICAgY29uc3Qg QXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKysgIERMT0coV0FSTklORykgPDwgIk1ha2VJbnB1 dFN0cmVhbSI7CisrICByZXR1cm4gbmV3IFNuZGlvQXVkaW9JbnB1dFN0cmVhbSh0aGlzLAorKyAg ICAgICAgICAgICBBdWRpb0RldmljZURlc2NyaXB0aW9uOjprRGVmYXVsdERldmljZUlkLCBwYXJh bXMpOworK30KKysKKytBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VP dXRwdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKSB7CisrICBE TE9HKFdBUk5JTkcpIDw8ICJNYWtlT3V0cHV0U3RyZWFtIjsKKysgIHJldHVybiBuZXcgU25kaW9B dWRpb091dHB1dFN0cmVhbShwYXJhbXMsIHRoaXMpOworK30KKysKKyt9ICAvLyBuYW1lc3BhY2Ug bWVkaWEKK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvYXVkaW8v c25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9h dWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgKKy0tLSBhL21lZGlhL2F1ZGlvL3NuZGlv L2F1ZGlvX21hbmFnZXJfc25kaW8uaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEw MAorKysrIGIvbWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oCTIwMjAtMDYt MTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDY1IEBACisrLy8gQ29weXJp Z2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp Y2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKworKyNp Zm5kZWYgTUVESUFfQVVESU9fU05ESU9fQVVESU9fTUFOQUdFUl9TTkRJT19IXworKyNkZWZpbmUg TUVESUFfQVVESU9fU05ESU9fQVVESU9fTUFOQUdFUl9TTkRJT19IXworKworKyNpbmNsdWRlIDxz ZXQ+CisrCisrI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lmaWMuaCIKKysjaW5jbHVkZSAi YmFzZS9tYWNyb3MuaCIKKysjaW5jbHVkZSAiYmFzZS9tZW1vcnkvcmVmX2NvdW50ZWQuaCIKKysj aW5jbHVkZSAiYmFzZS90aHJlYWRpbmcvdGhyZWFkLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlv L2F1ZGlvX21hbmFnZXJfYmFzZS5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrY2xhc3Mg TUVESUFfRVhQT1JUIEF1ZGlvTWFuYWdlclNuZGlvIDogcHVibGljIEF1ZGlvTWFuYWdlckJhc2Ug eworKyBwdWJsaWM6CisrICBBdWRpb01hbmFnZXJTbmRpbyhzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9U aHJlYWQ+IGF1ZGlvX3RocmVhZCwKKysgICAgICAgICAgICAgICAgICAgQXVkaW9Mb2dGYWN0b3J5 KiBhdWRpb19sb2dfZmFjdG9yeSk7CisrICB+QXVkaW9NYW5hZ2VyU25kaW8oKSBvdmVycmlkZTsK KysKKysgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvTWFuYWdlci4KKysgIGJvb2wgSGFzQXVk aW9PdXRwdXREZXZpY2VzKCkgb3ZlcnJpZGU7CisrICBib29sIEhhc0F1ZGlvSW5wdXREZXZpY2Vz KCkgb3ZlcnJpZGU7CisrICB2b2lkIEdldEF1ZGlvSW5wdXREZXZpY2VOYW1lcyhBdWRpb0Rldmlj ZU5hbWVzKiBkZXZpY2VfbmFtZXMpIG92ZXJyaWRlOworKyAgdm9pZCBHZXRBdWRpb091dHB1dERl dmljZU5hbWVzKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgb3ZlcnJpZGU7CisrICBB dWRpb1BhcmFtZXRlcnMgR2V0SW5wdXRTdHJlYW1QYXJhbWV0ZXJzKAorKyAgICAgIGNvbnN0IHN0 ZDo6c3RyaW5nJiBkZXZpY2VfaWQpIG92ZXJyaWRlOworKyAgY29uc3QgY2hhciogR2V0TmFtZSgp IG92ZXJyaWRlOworKworKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9NYW5hZ2VyQmFzZS4K KysgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTGluZWFyT3V0cHV0U3RyZWFtKAorKyAgICAgIGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBs b2dfY2FsbGJhY2spIG92ZXJyaWRlOworKyAgQXVkaW9PdXRwdXRTdHJlYW0qIE1ha2VMb3dMYXRl bmN5T3V0cHV0U3RyZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAor KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgICAgY29uc3QgTG9nQ2Fs bGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisrICBBdWRpb0lucHV0U3RyZWFtKiBNYWtl TGluZWFySW5wdXRTdHJlYW0oCisrICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMs CisrICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKysgICAgICBjb25zdCBMb2dD YWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKysgIEF1ZGlvSW5wdXRTdHJlYW0qIE1h a2VMb3dMYXRlbmN5SW5wdXRTdHJlYW0oCisrICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBw YXJhbXMsCisrICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKysgICAgICBjb25z dCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKysKKysgcHJvdGVjdGVkOgor KyAgQXVkaW9QYXJhbWV0ZXJzIEdldFByZWZlcnJlZE91dHB1dFN0cmVhbVBhcmFtZXRlcnMoCisr ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQsCisrICAgICAgY29uc3Qg QXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIG92ZXJyaWRlOworKworKyBwcml2YXRlOgor KyAgLy8gQ2FsbGVkIGJ5IE1ha2VMaW5lYXJPdXRwdXRTdHJlYW0gYW5kIE1ha2VMb3dMYXRlbmN5 T3V0cHV0U3RyZWFtLgorKyAgQXVkaW9PdXRwdXRTdHJlYW0qIE1ha2VPdXRwdXRTdHJlYW0oY29u c3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpOworKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFrZUlu cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKysKKysgIERJU0FMTE9X X0NPUFlfQU5EX0FTU0lHTihBdWRpb01hbmFnZXJTbmRpbyk7CisrfTsKKysKKyt9ICAvLyBuYW1l c3BhY2UgbWVkaWEKKysKKysjZW5kaWYgIC8vIE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFH RVJfU05ESU9fSF8KK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEv YXVkaW8vc25kaW8vc25kaW9faW5wdXQuY2MgY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1 ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmNjCistLS0gYS9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19p bnB1dC5jYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGIvbWVkaWEv YXVkaW8vc25kaW8vc25kaW9faW5wdXQuY2MJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5Njkg KzAyMDAKK0BAIC0wLDAgKzEsMjAwIEBACisrLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9taXVt IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZv dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2luY2x1ZGUgImJhc2UvYmluZC5oIgorKyNp bmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKysjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKysjaW5j bHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1lc3RhbXBfaGVscGVyLmgiCisrI2luY2x1ZGUgIm1l ZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaCIKKysjaW5jbHVkZSAibWVkaWEv YXVkaW8vYXVkaW9fbWFuYWdlci5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRp b19pbnB1dC5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrc3RhdGljIGNvbnN0IFNhbXBs ZUZvcm1hdCBrU2FtcGxlRm9ybWF0ID0ga1NhbXBsZUZvcm1hdFMxNjsKKysKKyt2b2lkIFNuZGlv QXVkaW9JbnB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpCisr eworKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRp b0lucHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPmh3X2RlbGF5ICs9IGRlbHRhOworK30K KysKKyt2b2lkICpTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlRocmVhZEVudHJ5KHZvaWQgKmFyZykg eworKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRp b0lucHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPlRocmVhZExvb3AoKTsKKysgIHJldHVy biBOVUxMOworK30KKysKKytTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNuZGlvQXVkaW9JbnB1dFN0 cmVhbShBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfbmFtZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb1Bh cmFtZXRlcnMmIHBhcmFtcykKKysgICAgOiBtYW5hZ2VyKG1hbmFnZXIpLAorKyAgICAgIHBhcmFt cyhwYXJhbXMpLAorKyAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1czo6Q3JlYXRlKHBhcmFtcykpLAor KyAgICAgIHN0YXRlKGtDbG9zZWQpIHsKKyt9CisrCisrU25kaW9BdWRpb0lucHV0U3RyZWFtOjp+ U25kaW9BdWRpb0lucHV0U3RyZWFtKCkgeworKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCisrICAg IENsb3NlKCk7CisrfQorKworK2Jvb2wgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpPcGVuKCkgewor KyAgc3RydWN0IHNpb19wYXIgcGFyOworKyAgaW50IHNpZzsKKysKKysgIGlmIChzdGF0ZSAhPSBr Q2xvc2VkKQorKyAgICByZXR1cm4gZmFsc2U7CisrCisrICBpZiAocGFyYW1zLmZvcm1hdCgpICE9 IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgorKyAgICAgIHBhcmFtcy5mb3Jt YXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgeworKyAgICBM T0coV0FSTklORykgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIGZvcm1hdC4iOworKyAgICByZXR1cm4g ZmFsc2U7CisrICB9CisrCisrICBzaW9faW5pdHBhcigmcGFyKTsKKysgIHBhci5yYXRlID0gcGFy YW1zLnNhbXBsZV9yYXRlKCk7CisrICBwYXIucmNoYW4gPSBwYXJhbXMuY2hhbm5lbHMoKTsKKysg IHBhci5iaXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KTsK KysgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7CisrICBwYXIuc2lnID0gc2lnID0gcGFyLmJpdHMg IT0gOCA/IDEgOiAwOworKyAgcGFyLmxlID0gU0lPX0xFX05BVElWRTsKKysgIHBhci5hcHBidWZz eiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOworKworKyAgaGRsID0gc2lvX29wZW4oU0lP X0RFVkFOWSwgU0lPX1JFQywgMCk7CisrCisrICBpZiAoaGRsID09IE5VTEwpIHsKKysgICAgTE9H KEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKysgICAgcmV0dXJuIGZh bHNlOworKyAgfQorKworKyAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19nZXRw YXIoaGRsLCAmcGFyKSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBzZXQgYXVkaW8g cGFyYW1ldGVycy4iOworKyAgICBnb3RvIGJhZF9jbG9zZTsKKysgIH0KKysKKysgIGlmIChwYXIu cmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2FtcGxlX3JhdGUoKSB8fAorKyAgICAgIHBh ci5yY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5jaGFubmVscygpIHx8CisrICAgICAgcGFy LmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2Ft cGxlRm9ybWF0KSB8fAorKyAgICAgIHBhci5zaWcgICAhPSAodW5zaWduZWQgaW50KXNpZyB8fAor KyAgICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUgIT0gU0lPX0xFX05BVElWRSkgfHwKKysgICAg ICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIlVuc3Vw cG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKysgICAgZ290byBiYWRfY2xvc2U7CisrICB9Cisr ICBzdGF0ZSA9IGtTdG9wcGVkOworKyAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5mcmFt ZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKKysgIHNpb19v bm1vdmUoaGRsLCAmT25Nb3ZlQ2FsbGJhY2ssIHRoaXMpOworKyAgcmV0dXJuIHRydWU7CisrYmFk X2Nsb3NlOgorKyAgc2lvX2Nsb3NlKGhkbCk7CisrICByZXR1cm4gZmFsc2U7CisrfQorKworK3Zv aWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sqIGNiKSB7 CisrCisrICBTdGFydEFnYygpOworKworKyAgc3RhdGUgPSBrUnVubmluZzsKKysgIGh3X2RlbGF5 ID0gMDsKKysgIGNhbGxiYWNrID0gY2I7CisrICBzaW9fc3RhcnQoaGRsKTsKKysgIGlmIChwdGhy ZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhyZWFkRW50cnksIHRoaXMpICE9IDApIHsKKysg ICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFkIGZvciBy ZWNvcmRpbmcuIjsKKysgICAgc2lvX3N0b3AoaGRsKTsKKysgICAgc3RhdGUgPSBrU3RvcHBlZDsK KysgIH0KKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlN0b3AoKSB7CisrCisr ICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQpCisrICAgIHJldHVybjsKKysKKysgIHN0YXRlID0ga1N0 b3BXYWl0OworKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CisrICBzaW9fc3RvcChoZGwp OworKyAgc3RhdGUgPSBrU3RvcHBlZDsKKysKKysgIFN0b3BBZ2MoKTsKKyt9CisrCisrdm9pZCBT bmRpb0F1ZGlvSW5wdXRTdHJlYW06OkNsb3NlKCkgeworKworKyAgaWYgKHN0YXRlID09IGtDbG9z ZWQpCisrICAgIHJldHVybjsKKysKKysgIGlmIChzdGF0ZSA9PSBrUnVubmluZykKKysgICAgU3Rv cCgpOworKworKyAgc3RhdGUgPSBrQ2xvc2VkOworKyAgZGVsZXRlIFtdIGJ1ZmZlcjsKKysgIHNp b19jbG9zZShoZGwpOworKworKyAgbWFuYWdlci0+UmVsZWFzZUlucHV0U3RyZWFtKHRoaXMpOwor K30KKysKKytkb3VibGUgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpHZXRNYXhWb2x1bWUoKSB7Cisr ICAvLyBOb3Qgc3VwcG9ydGVkCisrICByZXR1cm4gMC4wOworK30KKysKKyt2b2lkIFNuZGlvQXVk aW9JbnB1dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIHsKKysgIC8vIE5vdCBzdXBw b3J0ZWQuIERvIG5vdGhpbmcuCisrfQorKworK2RvdWJsZSBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06 OkdldFZvbHVtZSgpIHsKKysgIC8vIE5vdCBzdXBwb3J0ZWQuCisrICByZXR1cm4gMC4wOworK30K KysKKytib29sIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6SXNNdXRlZCgpIHsKKysgIC8vIE5vdCBz dXBwb3J0ZWQuCisrICByZXR1cm4gZmFsc2U7CisrfQorKworK3ZvaWQgU25kaW9BdWRpb0lucHV0 U3RyZWFtOjpTZXRPdXRwdXREZXZpY2VGb3JBZWMoCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBv dXRwdXRfZGV2aWNlX2lkKSB7CisrICAvLyBOb3Qgc3VwcG9ydGVkLgorK30KKysKKyt2b2lkIFNu ZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2b2lkKSB7CisrICBzaXplX3QgdG9kbywg bjsKKysgIGNoYXIgKmRhdGE7CisrICB1bnNpZ25lZCBpbnQgbmZyYW1lczsKKysgIGRvdWJsZSBu b3JtYWxpemVkX3ZvbHVtZSA9IDAuMDsKKysKKysgIG5mcmFtZXMgPSBhdWRpb19idXMtPmZyYW1l cygpOworKworKyAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nICYmICFzaW9fZW9mKGhkbCkpIHsK KysKKysgICAgR2V0QWdjVm9sdW1lKCZub3JtYWxpemVkX3ZvbHVtZSk7CisrCisrICAgIC8vIHJl YWQgb25lIGJsb2NrCisrICAgIHRvZG8gPSBuZnJhbWVzICogcGFyYW1zLkdldEJ5dGVzUGVyRnJh bWUoa1NhbXBsZUZvcm1hdCk7CisrICAgIGRhdGEgPSBidWZmZXI7CisrICAgIHdoaWxlICh0b2Rv ID4gMCkgeworKyAgICAgIG4gPSBzaW9fcmVhZChoZGwsIGRhdGEsIHRvZG8pOworKyAgICAgIGlm IChuID09IDApCisrICAgICAgICByZXR1cm47CS8vIHVucmVjb3ZlcmFibGUgSS9PIGVycm9yCisr ICAgICAgdG9kbyAtPSBuOworKyAgICAgIGRhdGEgKz0gbjsKKysgICAgfQorKyAgICBod19kZWxh eSAtPSBuZnJhbWVzOworKworKyAgICAvLyBjb252ZXJ0IGZyYW1lcyBjb3VudCB0byBUaW1lRGVs dGEKKysgICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGRlbGF5ID0gQXVkaW9UaW1lc3RhbXBIZWxw ZXI6OkZyYW1lc1RvVGltZShod19kZWxheSwKKysgICAgICBwYXJhbXMuc2FtcGxlX3JhdGUoKSk7 CisrCisrICAgIC8vIHB1c2ggaW50byBidXMKKysgICAgYXVkaW9fYnVzLT5Gcm9tSW50ZXJsZWF2 ZWQ8U2lnbmVkSW50MTZTYW1wbGVUeXBlVHJhaXRzPihyZWludGVycHJldF9jYXN0PGludDE2X3Qq PihidWZmZXIpLCBuZnJhbWVzKTsKKysKKysgICAgLy8gaW52b2tlIGNhbGxiYWNrCisrICAgIGNh bGxiYWNrLT5PbkRhdGEoYXVkaW9fYnVzLmdldCgpLCBiYXNlOjpUaW1lVGlja3M6Ok5vdygpIC0g ZGVsYXksIDEuKTsKKysgIH0KKyt9CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCitkaWZmIC1O YXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lu cHV0LmggY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0 LmgKKy0tLSBhL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgJMTk3MC0wMS0wMSAwMTow MDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0 LmgJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BAIC0wLDAgKzEsOTEgQEAK KysvLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K KysKKysjaWZuZGVmIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCisrI2RlZmluZSBN RURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXworKworKyNpbmNsdWRlIDxzdGRpbnQuaD4K KysjaW5jbHVkZSA8c3RyaW5nPgorKyNpbmNsdWRlIDxzbmRpby5oPgorKworKyNpbmNsdWRlICJi YXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisrI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgiCisrI2lu Y2x1ZGUgImJhc2UvbWVtb3J5L3dlYWtfcHRyLmgiCisrI2luY2x1ZGUgImJhc2UvdGltZS90aW1l LmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2FnY19hdWRpb19zdHJlYW0uaCIKKysjaW5jbHVk ZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9f ZGV2aWNlX2Rlc2NyaXB0aW9uLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fcGFyYW1l dGVycy5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrY2xhc3MgQXVkaW9NYW5hZ2VyQmFz ZTsKKysKKysvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb091dHB1dFN0cmVhbSB1c2luZyBzbmRp byg3KQorK2NsYXNzIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSA6IHB1YmxpYyBBZ2NBdWRpb1N0cmVh bTxBdWRpb0lucHV0U3RyZWFtPiB7CisrIHB1YmxpYzoKKysgIC8vIFBhc3MgdGhpcyB0byB0aGUg Y29uc3RydWN0b3IgaWYgeW91IHdhbnQgdG8gYXR0ZW1wdCBhdXRvLXNlbGVjdGlvbgorKyAgLy8g b2YgdGhlIGF1ZGlvIHJlY29yZGluZyBkZXZpY2UuCisrICBzdGF0aWMgY29uc3QgY2hhciBrQXV0 b1NlbGVjdERldmljZVtdOworKworKyAgLy8gQ3JlYXRlIGEgUENNIE91dHB1dCBzdHJlYW0gZm9y IHRoZSBTTkRJTyBkZXZpY2UgaWRlbnRpZmllZCBieQorKyAgLy8gfGRldmljZV9uYW1lfC4gSWYg dW5zdXJlIG9mIHdoYXQgdG8gdXNlIGZvciB8ZGV2aWNlX25hbWV8LCB1c2UKKysgIC8vIHxrQXV0 b1NlbGVjdERldmljZXwuCisrICBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5hZ2VyQmFz ZSogYXVkaW9fbWFuYWdlciwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu ZyYgZGV2aWNlX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9QYXJhbWV0 ZXJzJiBwYXJhbXMpOworKworKyAgflNuZGlvQXVkaW9JbnB1dFN0cmVhbSgpIG92ZXJyaWRlOwor KworKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9JbnB1dFN0cmVhbS4KKysgIGJvb2wgT3Bl bigpIG92ZXJyaWRlOworKyAgdm9pZCBTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sqIGNhbGxiYWNr KSBvdmVycmlkZTsKKysgIHZvaWQgU3RvcCgpIG92ZXJyaWRlOworKyAgdm9pZCBDbG9zZSgpIG92 ZXJyaWRlOworKyAgZG91YmxlIEdldE1heFZvbHVtZSgpIG92ZXJyaWRlOworKyAgdm9pZCBTZXRW b2x1bWUoZG91YmxlIHZvbHVtZSkgb3ZlcnJpZGU7CisrICBkb3VibGUgR2V0Vm9sdW1lKCkgb3Zl cnJpZGU7CisrICBib29sIElzTXV0ZWQoKSBvdmVycmlkZTsKKysgIHZvaWQgU2V0T3V0cHV0RGV2 aWNlRm9yQWVjKGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkKSBvdmVycmlkZTsK KysKKysgcHJpdmF0ZToKKysKKysgIGVudW0gU3RyZWFtU3RhdGUgeworKyAgICBrQ2xvc2VkLCAg ICAgICAgICAgIC8vIE5vdCBvcGVuZWQgeWV0CisrICAgIGtTdG9wcGVkLCAgICAgICAgICAgLy8g RGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBzdGFydGVkIHlldAorKyAgICBrUnVubmluZywgICAgICAg ICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5aW5nCisrICAgIGtTdG9wV2FpdCAgICAgICAgICAg Ly8gU3RvcHBpbmcsIHdhaXRpbmcgZm9yIHRoZSByZWFsLXRpbWUgdGhyZWFkIHRvIGV4aXQKKysg IH07CisrCisrICAvLyBDLXN0eWxlIGNhbGwtYmFja3MKKysgIHN0YXRpYyB2b2lkIE9uTW92ZUNh bGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKKysgIHN0YXRpYyB2b2lkKiBUaHJlYWRFbnRy eSh2b2lkICphcmcpOworKworKyAgLy8gQ29udGludW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUg ZGV2aWNlIHRvIHRoZSBjb25zdW1lcgorKyAgdm9pZCBUaHJlYWRMb29wKCk7CisrICAvLyBPdXIg Y3JlYXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiB3ZSBj bG9zZS4KKysgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7CisrICAvLyBQYXJhbWV0ZXJzIG9m IHRoZSBzb3VyY2UKKysgIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7CisrICAvLyBXZSBzdG9yZSBk YXRhIGhlcmUgZm9yIGNvbnN1bWVyCisrICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlv X2J1czsKKysgIC8vIENhbGwtYmFjayB0aGF0IGNvbnN1bWVzIHJlY29yZGVkIGRhdGEKKysgIEF1 ZGlvSW5wdXRDYWxsYmFjayogY2FsbGJhY2s7ICAvLyBWYWxpZCBkdXJpbmcgYSByZWNvcmRpbmcg c2Vzc2lvbi4KKysgIC8vIEhhbmRsZSBvZiB0aGUgYXVkaW8gZGV2aWNlCisrICBzdHJ1Y3Qgc2lv X2hkbCogaGRsOworKyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RyZWFtCisrICBlbnVtIFN0 cmVhbVN0YXRlIHN0YXRlOworKyAgLy8gSGlnaCBwcmlvcml0eSB0aHJlYWQgcnVubmluZyBUaHJl YWRMb29wKCkKKysgIHB0aHJlYWRfdCB0aHJlYWQ7CisrICAvLyBOdW1iZXIgb2YgZnJhbWVzIGJ1 ZmZlcmVkIGluIHRoZSBoYXJkd2FyZQorKyAgaW50IGh3X2RlbGF5OworKyAgLy8gVGVtcG9yYXJ5 IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZvcm1hdAorKyAg Y2hhciogYnVmZmVyOworKworKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlvQXVkaW9J bnB1dFN0cmVhbSk7CisrfTsKKysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKysKKysjZW5kaWYg IC8vIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCitkaWZmIC1OYXVyIGNocm9taXVt LTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5jYyBjaHJv bWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmNjCistLS0g YS9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuY2MJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKKysrKyBiL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5jYwky MDIwLTA2LTEzIDE3OjMyOjI4LjUxMTM5NTk2OSArMDIwMAorQEAgLTAsMCArMSwxODMgQEAKKysv LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu CisrCisrI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorKyNpbmNsdWRlICJiYXNlL3RpbWUvdGlt ZS5oIgorKyNpbmNsdWRlICJiYXNlL3RpbWUvZGVmYXVsdF90aWNrX2Nsb2NrLmgiCisrI2luY2x1 ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXJfYmFzZS5oIgorKyNpbmNsdWRlICJtZWRpYS9i YXNlL2F1ZGlvX3RpbWVzdGFtcF9oZWxwZXIuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25k aW8vc25kaW9fb3V0cHV0LmgiCisrCisrbmFtZXNwYWNlIG1lZGlhIHsKKysKKytzdGF0aWMgY29u c3QgU2FtcGxlRm9ybWF0IGtTYW1wbGVGb3JtYXQgPSBrU2FtcGxlRm9ybWF0UzE2OworKworK3Zv aWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQg ZGVsdGEpIHsKKysgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxT bmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPmh3X2RlbGF5IC09IGRl bHRhOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9uVm9sQ2FsbGJhY2so dm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9sKSB7CisrICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFt KiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+KGFyZyk7CisrCisr ICBzZWxmLT52b2wgPSB2b2w7CisrfQorKworK3ZvaWQgKlNuZGlvQXVkaW9PdXRwdXRTdHJlYW06 OlRocmVhZEVudHJ5KHZvaWQgKmFyZykgeworKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbSogc2Vs ZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcpOworKworKyAgc2Vs Zi0+VGhyZWFkTG9vcCgpOworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK1NuZGlvQXVkaW9PdXRw dXRTdHJlYW06OlNuZGlvQXVkaW9PdXRwdXRTdHJlYW0oY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBw YXJhbXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB dWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyKQorKyAgICA6IG1hbmFnZXIobWFuYWdlciksCisrICAg ICAgcGFyYW1zKHBhcmFtcyksCisrICAgICAgYXVkaW9fYnVzKEF1ZGlvQnVzOjpDcmVhdGUocGFy YW1zKSksCisrICAgICAgc3RhdGUoa0Nsb3NlZCksCisrICAgICAgbXV0ZXgoUFRIUkVBRF9NVVRF WF9JTklUSUFMSVpFUikgeworK30KKysKKytTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjp+U25kaW9B dWRpb091dHB1dFN0cmVhbSgpIHsKKysgIGlmIChzdGF0ZSAhPSBrQ2xvc2VkKQorKyAgICBDbG9z ZSgpOworK30KKysKKytib29sIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9wZW4oKSB7CisrICBz dHJ1Y3Qgc2lvX3BhciBwYXI7CisrICBpbnQgc2lnOworKworKyAgaWYgKHBhcmFtcy5mb3JtYXQo KSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIgJiYKKysgICAgICBwYXJhbXMu Zm9ybWF0KCkgIT0gQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTE9XX0xBVEVOQ1kpIHsKKysg ICAgTE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBmb3JtYXQuIjsKKysgICAgcmV0 dXJuIGZhbHNlOworKyAgfQorKyAgc2lvX2luaXRwYXIoJnBhcik7CisrICBwYXIucmF0ZSA9IHBh cmFtcy5zYW1wbGVfcmF0ZSgpOworKyAgcGFyLnBjaGFuID0gcGFyYW1zLmNoYW5uZWxzKCk7Cisr ICBwYXIuYml0cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCk7 CisrICBwYXIuYnBzID0gcGFyLmJpdHMgLyA4OworKyAgcGFyLnNpZyA9IHNpZyA9IHBhci5iaXRz ICE9IDggPyAxIDogMDsKKysgIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7CisrICBwYXIuYXBwYnVm c3ogPSBwYXJhbXMuZnJhbWVzX3Blcl9idWZmZXIoKTsKKysKKysgIGhkbCA9IHNpb19vcGVuKFNJ T19ERVZBTlksIFNJT19QTEFZLCAwKTsKKysgIGlmIChoZGwgPT0gTlVMTCkgeworKyAgICBMT0co RVJST1IpIDw8ICJDb3VsZG4ndCBvcGVuIGF1ZGlvIGRldmljZS4iOworKyAgICByZXR1cm4gZmFs c2U7CisrICB9CisrICBpZiAoIXNpb19zZXRwYXIoaGRsLCAmcGFyKSB8fCAhc2lvX2dldHBhciho ZGwsICZwYXIpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRpbyBwYXJh bWV0ZXJzLiI7CisrICAgIGdvdG8gYmFkX2Nsb3NlOworKyAgfQorKyAgaWYgKHBhci5yYXRlICAh PSAodW5zaWduZWQgaW50KXBhcmFtcy5zYW1wbGVfcmF0ZSgpIHx8CisrICAgICAgcGFyLnBjaGFu ICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLmNoYW5uZWxzKCkgfHwKKysgICAgICBwYXIuYml0cyAg IT0gKHVuc2lnbmVkIGludClTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3Jt YXQpIHx8CisrICAgICAgcGFyLnNpZyAgICE9ICh1bnNpZ25lZCBpbnQpc2lnIHx8CisrICAgICAg KHBhci5icHMgPiAxICYmIHBhci5sZSAhPSBTSU9fTEVfTkFUSVZFKSB8fAorKyAgICAgIChwYXIu Yml0cyAhPSBwYXIuYnBzICogOCkpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQg YXVkaW8gcGFyYW1ldGVycy4iOworKyAgICBnb3RvIGJhZF9jbG9zZTsKKysgIH0KKysgIHN0YXRl ID0ga1N0b3BwZWQ7CisrICB2b2xwZW5kaW5nID0gMDsKKysgIHZvbCA9IDA7CisrICBidWZmZXIg PSBuZXcgY2hhclthdWRpb19idXMtPmZyYW1lcygpICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUo a1NhbXBsZUZvcm1hdCldOworKyAgc2lvX29ubW92ZShoZGwsICZPbk1vdmVDYWxsYmFjaywgdGhp cyk7CisrICBzaW9fb252b2woaGRsLCAmT25Wb2xDYWxsYmFjaywgdGhpcyk7CisrICByZXR1cm4g dHJ1ZTsKKysgYmFkX2Nsb3NlOgorKyAgc2lvX2Nsb3NlKGhkbCk7CisrICByZXR1cm4gZmFsc2U7 CisrfQorKworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Q2xvc2UoKSB7CisrICBpZiAo c3RhdGUgPT0ga0Nsb3NlZCkKKysgICAgcmV0dXJuOworKyAgaWYgKHN0YXRlID09IGtSdW5uaW5n KQorKyAgICBTdG9wKCk7CisrICBzdGF0ZSA9IGtDbG9zZWQ7CisrICBkZWxldGUgW10gYnVmZmVy OworKyAgc2lvX2Nsb3NlKGhkbCk7CisrICBtYW5hZ2VyLT5SZWxlYXNlT3V0cHV0U3RyZWFtKHRo aXMpOyAgLy8gQ2FsbHMgdGhlIGRlc3RydWN0b3IKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtOjpTdGFydChBdWRpb1NvdXJjZUNhbGxiYWNrKiBjYWxsYmFjaykgeworKyAgc3Rh dGUgPSBrUnVubmluZzsKKysgIGh3X2RlbGF5ID0gMDsKKysgIHNvdXJjZSA9IGNhbGxiYWNrOwor KyAgc2lvX3N0YXJ0KGhkbCk7CisrICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwg JlRocmVhZEVudHJ5LCB0aGlzKSAhPSAwKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkZhaWxlZCB0 byBjcmVhdGUgcmVhbC10aW1lIHRocmVhZC4iOworKyAgICBzaW9fc3RvcChoZGwpOworKyAgICBz dGF0ZSA9IGtTdG9wcGVkOworKyAgfQorK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJl YW06OlN0b3AoKSB7CisrICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQpCisrICAgIHJldHVybjsKKysg IHN0YXRlID0ga1N0b3BXYWl0OworKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CisrICBz aW9fc3RvcChoZGwpOworKyAgc3RhdGUgPSBrU3RvcHBlZDsKKyt9CisrCisrdm9pZCBTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtOjpTZXRWb2x1bWUoZG91YmxlIHYpIHsKKysgIHB0aHJlYWRfbXV0ZXhf bG9jaygmbXV0ZXgpOworKyAgdm9sID0gdiAqIFNJT19NQVhWT0w7CisrICB2b2xwZW5kaW5nID0g MTsKKysgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisrfQorKworK3ZvaWQgU25kaW9B dWRpb091dHB1dFN0cmVhbTo6R2V0Vm9sdW1lKGRvdWJsZSogdikgeworKyAgcHRocmVhZF9tdXRl eF9sb2NrKCZtdXRleCk7CisrICAqdiA9IHZvbCAqICgxLiAvIFNJT19NQVhWT0wpOworKyAgcHRo cmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKKyt9CisrCisrLy8gVGhpcyBzdHJlYW0gaXMgYWx3 YXlzIHVzZWQgd2l0aCBzdWIgc2Vjb25kIGJ1ZmZlciBzaXplcywgd2hlcmUgaXQncworKy8vIHN1 ZmZpY2llbnQgdG8gc2ltcGx5IGFsd2F5cyBmbHVzaCB1cG9uIFN0YXJ0KCkuCisrdm9pZCBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtOjpGbHVzaCgpIHt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0cHV0 U3RyZWFtOjpUaHJlYWRMb29wKHZvaWQpIHsKKysgIGludCBhdmFpbCwgY291bnQsIHJlc3VsdDsK KysKKysgIHdoaWxlIChzdGF0ZSA9PSBrUnVubmluZykgeworKyAgICAvLyBVcGRhdGUgdm9sdW1l IGlmIG5lZWRlZAorKyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKKysgICAgaWYgKHZv bHBlbmRpbmcpIHsKKysgICAgICB2b2xwZW5kaW5nID0gMDsKKysgICAgICBzaW9fc2V0dm9sKGhk bCwgdm9sKTsKKysgICAgfQorKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOworKwor KyAgICAvLyBHZXQgZGF0YSB0byBwbGF5CisrICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBkZWxh eSA9IEF1ZGlvVGltZXN0YW1wSGVscGVyOjpGcmFtZXNUb1RpbWUoaHdfZGVsYXksCisrCXBhcmFt cy5zYW1wbGVfcmF0ZSgpKTsKKysgICAgY291bnQgPSBzb3VyY2UtPk9uTW9yZURhdGEoZGVsYXks IGJhc2U6OlRpbWVUaWNrczo6Tm93KCksIDAsIGF1ZGlvX2J1cy5nZXQoKSk7CisrICAgIGF1ZGlv X2J1cy0+VG9JbnRlcmxlYXZlZDxTaWduZWRJbnQxNlNhbXBsZVR5cGVUcmFpdHM+KGNvdW50LCBy ZWludGVycHJldF9jYXN0PGludDE2X3QqPihidWZmZXIpKTsKKysgICAgaWYgKGNvdW50ID09IDAp IHsKKysgICAgICAvLyBXZSBoYXZlIHRvIHN1Ym1pdCBzb21ldGhpbmcgdG8gdGhlIGRldmljZQor KyAgICAgIGNvdW50ID0gYXVkaW9fYnVzLT5mcmFtZXMoKTsKKysgICAgICBtZW1zZXQoYnVmZmVy LCAwLCBjb3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpKTsKKysg ICAgICBMT0coV0FSTklORykgPDwgIk5vIGRhdGEgdG8gcGxheSwgcnVubmluZyBlbXB0eSBjeWNs ZS4iOworKyAgICB9CisrCisrICAgIC8vIFN1Ym1pdCBkYXRhIHRvIHRoZSBkZXZpY2UKKysgICAg YXZhaWwgPSBjb3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpOwor KyAgICByZXN1bHQgPSBzaW9fd3JpdGUoaGRsLCBidWZmZXIsIGF2YWlsKTsKKysgICAgaWYgKHJl c3VsdCA9PSAwKSB7CisrICAgICAgTE9HKFdBUk5JTkcpIDw8ICJBdWRpbyBkZXZpY2UgZGlzY29u bmVjdGVkLiI7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgLy8gVXBkYXRlIGhhcmR3 YXJlIHBvaW50ZXIKKysgICAgaHdfZGVsYXkgKz0gY291bnQ7CisrICB9CisrfQorKworK30gIC8v IG5hbWVzcGFjZSBtZWRpYQorZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9t ZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVk aWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgKKy0tLSBhL21lZGlhL2F1ZGlvL3NuZGlvL3Nu ZGlvX291dHB1dC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgYi9t ZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaAkyMDIwLTA2LTEzIDE3OjMyOjI4LjUxMTM5 NTk2OSArMDIwMAorQEAgLTAsMCArMSw4NiBAQAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUg Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBz b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl CisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIE1FRElBX0FVRElP X1NORElPX1NORElPX09VVFBVVF9IXworKyNkZWZpbmUgTUVESUFfQVVESU9fU05ESU9fU05ESU9f T1VUUFVUX0hfCisrCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c25kaW8uaD4K KysKKysjaW5jbHVkZSAiYmFzZS90aW1lL3RpY2tfY2xvY2suaCIKKysjaW5jbHVkZSAiYmFzZS90 aW1lL3RpbWUuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKysKKytuYW1l c3BhY2UgbWVkaWEgeworKworK2NsYXNzIEF1ZGlvTWFuYWdlckJhc2U7CisrCisrLy8gSW1wbGVt ZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcgc25kaW8oNykKKytjbGFzcyBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtIDogcHVibGljIEF1ZGlvT3V0cHV0U3RyZWFtIHsKKysgcHVibGlj OgorKyAgLy8gVGhlIG1hbmFnZXIgaXMgY3JlYXRpbmcgdGhpcyBvYmplY3QKKysgIFNuZGlvQXVk aW9PdXRwdXRTdHJlYW0oY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgICAgICAg ICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIpOworKyAgdmlydHVhbCB+ U25kaW9BdWRpb091dHB1dFN0cmVhbSgpOworKworKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVk aW9PdXRwdXRTdHJlYW0uCisrICBib29sIE9wZW4oKSBvdmVycmlkZTsKKysgIHZvaWQgQ2xvc2Uo KSBvdmVycmlkZTsKKysgIHZvaWQgU3RhcnQoQXVkaW9Tb3VyY2VDYWxsYmFjayogY2FsbGJhY2sp IG92ZXJyaWRlOworKyAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7CisrICB2b2lkIFNldFZvbHVtZShk b3VibGUgdm9sdW1lKSBvdmVycmlkZTsKKysgIHZvaWQgR2V0Vm9sdW1lKGRvdWJsZSogdm9sdW1l KSBvdmVycmlkZTsKKysgIHZvaWQgRmx1c2goKSBvdmVycmlkZTsKKysKKysgIGZyaWVuZCB2b2lk IHNuZGlvX29ubW92ZSh2b2lkICphcmcsIGludCBkZWx0YSk7CisrICBmcmllbmQgdm9pZCBzbmRp b19vbnZvbCh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpOworKyAgZnJpZW5kIHZvaWQgKnNu ZGlvX3RocmVhZHN0YXJ0KHZvaWQgKmFyZyk7CisrCisrIHByaXZhdGU6CisrICBlbnVtIFN0cmVh bVN0YXRlIHsKKysgICAga0Nsb3NlZCwgICAgICAgICAgICAvLyBOb3Qgb3BlbmVkIHlldAorKyAg ICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBub3Qgc3RhcnRlZCB5 ZXQKKysgICAga1J1bm5pbmcsICAgICAgICAgICAvLyBTdGFydGVkLCBkZXZpY2UgcGxheWluZwor KyAgICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5nIGZvciB0aGUgcmVh bC10aW1lIHRocmVhZCB0byBleGl0CisrICB9OworKworKyAgLy8gQy1zdHlsZSBjYWxsLWJhY2tz CisrICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSk7Cisr ICBzdGF0aWMgdm9pZCBPblZvbENhbGxiYWNrKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCk7 CisrICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnkodm9pZCAqYXJnKTsKKysKKysgIC8vIENvbnRp bnVvdXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIHByb2R1Y2VyIHRvIHRoZSBkZXZpY2UKKysgIHZv aWQgVGhyZWFkTG9vcCh2b2lkKTsKKysKKysgIC8vIE91ciBjcmVhdG9yLCB0aGUgYXVkaW8gbWFu YWdlciBuZWVkcyB0byBiZSBub3RpZmllZCB3aGVuIHdlIGNsb3NlLgorKyAgQXVkaW9NYW5hZ2Vy QmFzZSogbWFuYWdlcjsKKysgIC8vIFBhcmFtZXRlcnMgb2YgdGhlIHNvdXJjZQorKyAgQXVkaW9Q YXJhbWV0ZXJzIHBhcmFtczsKKysgIC8vIFNvdXJjZSBzdG9yZXMgZGF0YSBoZXJlCisrICBzdGQ6 OnVuaXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKKysgIC8vIENhbGwtYmFjayB0aGF0IHBy b2R1Y2VzIGRhdGEgdG8gcGxheQorKyAgQXVkaW9Tb3VyY2VDYWxsYmFjayogc291cmNlOworKyAg Ly8gSGFuZGxlIG9mIHRoZSBhdWRpbyBkZXZpY2UKKysgIHN0cnVjdCBzaW9faGRsKiBoZGw7Cisr ICAvLyBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdHJlYW0KKysgIGVudW0gU3RyZWFtU3RhdGUgc3Rh dGU7CisrICAvLyBIaWdoIHByaW9yaXR5IHRocmVhZCBydW5uaW5nIFRocmVhZExvb3AoKQorKyAg cHRocmVhZF90IHRocmVhZDsKKysgIC8vIFByb3RlY3RzIHZvbCwgdm9scGVuZGluZyBhbmQgaHdf ZGVsYXkKKysgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKKysgIC8vIEN1cnJlbnQgdm9sdW1lIGlu IHRoZSAwLi5TSU9fTUFYVk9MIHJhbmdlCisrICBpbnQgdm9sOworKyAgLy8gU2V0IHRvIDEgaWYg dm9sdW1lcyBtdXN0IGJlIHJlZnJlc2hlZCBpbiB0aGUgcmVhbHRpbWUgdGhyZWFkCisrICBpbnQg dm9scGVuZGluZzsKKysgIC8vIE51bWJlciBvZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhhcmR3 YXJlCisrICBpbnQgaHdfZGVsYXk7CisrICAvLyBUZW1wb3JhcnkgYnVmZmVyIHdoZXJlIGRhdGEg aXMgc3RvcmVkIHNuZGlvLWNvbXBhdGlibGUgZm9ybWF0CisrICBjaGFyKiBidWZmZXI7CisrCisr ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU25kaW9BdWRpb091dHB1dFN0cmVhbSk7CisrfTsK KysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKysKKysjZW5kaWYgIC8vIE1FRElBX0FVRElPX1NO RElPX1NORElPX09VVFBVVF9IXworZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3Jp Zy9tZWRpYS9tZWRpYV9vcHRpb25zLmduaSBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvbWVk aWFfb3B0aW9ucy5nbmkKKy0tLSBhL21lZGlhL21lZGlhX29wdGlvbnMuZ25pCisrKysgYi9tZWRp YS9tZWRpYV9vcHRpb25zLmduaQorQEAgLTE1OCw2ICsxNTgsOSBAQAorICAgIyBFbmFibGVzIHJ1 bnRpbWUgc2VsZWN0aW9uIG9mIEFMU0EgbGlicmFyeSBmb3IgYXVkaW8uCisgICB1c2VfYWxzYSA9 IGZhbHNlCisgCisrICAjIEVuYWJsZSBydW50aW1lIHNlbGVjdGlvbiBvZiBzbmRpbyg3KQorKyAg dXNlX3NuZGlvID0gZmFsc2UKKysKKyAgICMgQWxzYSBzaG91bGQgYmUgdXNlZCBvbiBhbGwgbm9u LUFuZHJvaWQsIG5vbi1NYWMgUE9TSVggc3lzdGVtcyAtIHdpdGggdGhlCisgICAjIGV4Y2VwdGlv biBvZiBDYXN0T1MgZGVza3RvcCBidWlsZHMuCisgICAjCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zcWwtcmVsYXgtY29uc3RyYWludHMtb24t VmlydHVhbEN1cnNvci1sYXlvdXQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1zcWwtcmVsYXgtY29uc3RyYWludHMtb24tVmlydHVhbEN1cnNvci1sYXlv dXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMWU2NWVl MTU2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1zcWwtcmVsYXgtY29uc3RyYWludHMtb24tVmlydHVhbEN1cnNvci1sYXlvdXQu cGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA3ZDEzOTRiZDYzOWUzYmNmNjgwODJhYzNmYzMz ZWVlZDZhMDBkMmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRWxseSBGb25nLUpv bmVzIDxlbGx5am9uZXNAY2hyb21pdW0ub3JnPgorRGF0ZTogVGh1LCAyIE1hciAyMDIzIDAwOjE1 OjExICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHNxbDogcmVsYXggY29uc3RyYWludHMgb24gVmly dHVhbEN1cnNvciBsYXlvdXQKKworVmlydHVhbEN1cnNvcjo6RnJvbVNxbGl0ZUN1cnNvciByZXF1 aXJlZCB0aGF0IFZpcnR1YWxDdXJzb3IgaGFkIGEKK3N0YW5kYXJkIGxheW91dCwgYnV0IGluIGZh Y3QgVmlydHVhbEN1cnNvciBzaG91bGRuJ3QgaGF2ZSBhIHN0YW5kYXJkCitsYXlvdXQsIGFuZCB0 aGUgZmFjdCB0aGF0IGl0IGRvZXMgd2l0aCBsaWJjKysgaXMgYSBkZXZpYXRpb24gZnJvbSB0aGUK K0MrKyBzdGFuZGFyZC4gVGhpcyBjaGFuZ2U6CisKKzEuIFJlbGF4ZXMgdGhlIHJlcXVpcmVtZW50 IHRoYXQgVmlydHVhbEN1cnNvciBoYXMgYSBzdGFuZGFyZCBsYXlvdXQsIGFuZAorMi4gUmVsYXhl cyB0aGUgcmVxdWlyZW1lbnQgdGhhdCB0aGUgc3FsaXRlX2N1cnNvcl8gZmllbGQgaGFzIHRvIGJl IGF0CisgICBvZmZzZXQgMAorCitieSB1c2Ugb2Ygb2Zmc2V0b2YoKSBhbmQgcG9pbnRlciBzdWJ0 cmFjdGlvbi4gVGhpcyBjaGFuZ2UgYm90aCBpbXByb3Zlcworc3RhbmRhcmRzIGNvbXBsaWFuY2Ug YW5kIG1ha2VzIHRoaXMgY29kZSBidWlsZCB3aXRoIGxpYnN0ZGMrKy4KKworQnVnOiAxMzgwNjU2 CitDaGFuZ2UtSWQ6IEk5YzQ3YWJkOTE5N2IxODdkYTAzNjBjYTU2MTljY2Y3ZGFkYWI0ZjMzCitS ZXZpZXdlZC1vbjogaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2No cm9taXVtL3NyYy8rLzQyOTIzMTMKK1Jldmlld2VkLWJ5OiBBdXN0aW4gU3VsbGl2YW4gPGFzdWxs eUBjaHJvbWl1bS5vcmc+CitDb21taXQtUXVldWU6IEVsbHkgRm9uZy1Kb25lcyA8ZWxseWpvbmVz QGNocm9taXVtLm9yZz4KK0NyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFkcy9tYWluQHsjMTEx MTkyNX0KKy0tLQorIHNxbC9yZWNvdmVyX21vZHVsZS9jdXJzb3IuaCB8IDEwICsrKystLS0tLS0K KyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvc3FsL3JlY292ZXJfbW9kdWxlL2N1cnNvci5oIGIvc3FsL3JlY292ZXJfbW9kdWxl L2N1cnNvci5oCitpbmRleCAxOTcwYmRjYThjNi4uNGNiMDY1NTcwMDkgMTAwNjQ0CistLS0gYS9z cWwvcmVjb3Zlcl9tb2R1bGUvY3Vyc29yLmgKKysrKyBiL3NxbC9yZWNvdmVyX21vZHVsZS9jdXJz b3IuaAorQEAgLTYzLDEyICs2MywxMCBAQCBjbGFzcyBWaXJ0dWFsQ3Vyc29yIHsKKyAgIC8vIHxz cWxpdGVfY3Vyc29yfCBtdXN0IGhhdmUgYmVlbiByZXR1cm5lZCBieSBWaXJ0dWFsVGFibGU6OlNx bGl0ZUN1cnNvcigpLgorICAgc3RhdGljIGlubGluZSBWaXJ0dWFsQ3Vyc29yKiBGcm9tU3FsaXRl Q3Vyc29yKAorICAgICAgIHNxbGl0ZTNfdnRhYl9jdXJzb3IqIHNxbGl0ZV9jdXJzb3IpIHsKKy0g ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxWaXJ0dWFsQ3Vyc29yPjo6 dmFsdWUsCistICAgICAgICAgICAgICAgICAgIm5lZWRlZCBmb3IgdGhlIHJlaW50ZXJwcmV0X2Nh c3QgYmVsb3ciKTsKKy0gICAgc3RhdGljX2Fzc2VydChvZmZzZXRvZihWaXJ0dWFsQ3Vyc29yLCBz cWxpdGVfY3Vyc29yXykgPT0gMCwKKy0gICAgICAgICAgICAgICAgICAic3FsaXRlX2N1cnNvcl8g bXVzdCBiZSB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBjbGFzcyIpOworLSAgICBWaXJ0dWFsQ3Vy c29yKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PFZpcnR1YWxDdXJzb3IqPihzcWxpdGVfY3Vy c29yKTsKKy0gICAgRENIRUNLX0VRKHNxbGl0ZV9jdXJzb3IsICZyZXN1bHQtPnNxbGl0ZV9jdXJz b3JfKTsKKysgICAgVmlydHVhbEN1cnNvciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxWaXJ0 dWFsQ3Vyc29yKj4oCisrICAgICAgICAocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc3FsaXRlX2N1 cnNvcikgLQorKyAgICAgICAgIG9mZnNldG9mKFZpcnR1YWxDdXJzb3IsIHNxbGl0ZV9jdXJzb3Jf KSkpOworKyAgICBDSEVDS19FUShzcWxpdGVfY3Vyc29yLCAmcmVzdWx0LT5zcWxpdGVfY3Vyc29y Xyk7CisgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zeXN0eXBlcy5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXN5c3R5cGVzLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWNjZWJiZDJmMmIzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc3lzdHlw ZXMucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvYmFzZS90aGlyZF9wYXJ0eS9zeW1ib2xp emUvc3ltYm9saXplLmgKKysrKyBiL2Jhc2UvdGhpcmRfcGFydHkvc3ltYm9saXplL3N5bWJvbGl6 ZS5oCitAQCAtNTgsNiArNTgsOCBAQAorICNpbmNsdWRlICJjb25maWcuaCIKKyAjaW5jbHVkZSAi Z2xvZy9sb2dnaW5nLmgiCisgCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKworICNpZmRlZiBI QVZFX1NZTUJPTElaRQorIAorICNpZiBkZWZpbmVkKF9fRUxGX18pICAvLyBkZWZpbmVkIGJ5IGdj YwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t dW5idW5kbGUtZmZtcGVnLWF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzLnBhdGNoIGIvc3JjcGtncy9l bGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdW5idW5kbGUtZmZtcGVnLWF2X3N0cmVh bV9nZXRfZmlyc3RfZHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uZGFlMWFkZGUwYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0 L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdW5idW5kbGUtZmZtcGVnLWF2X3N0cmVhbV9nZXRfZmly c3RfZHRzLnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKK2RpZmYgLS1naXQgYS9idWlsZC9saW51eC91 bmJ1bmRsZS9mZm1wZWcuZ24gYi9idWlsZC9saW51eC91bmJ1bmRsZS9mZm1wZWcuZ24KK2luZGV4 IDE2ZTIwNzQ0NzA2Li42YTA3OWIzMjIyMSAxMDA2NDQKKy0tLSBhL2J1aWxkL2xpbnV4L3VuYnVu ZGxlL2ZmbXBlZy5nbgorKysrIGIvYnVpbGQvbGludXgvdW5idW5kbGUvZmZtcGVnLmduCitAQCAt MTIsNiArMTIsNyBAQCBwa2dfY29uZmlnKCJzeXN0ZW1fZmZtcGVnIikgeworICAgICAibGliYXZm b3JtYXQiLAorICAgICAibGliYXZ1dGlsIiwKKyAgIF0KKysgIGRlZmluZXMgPSBbICJhdl9zdHJl YW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pPXN0cmVhbS0+Zmlyc3RfZHRzIiBdCisgfQorIAorIGJ1 aWxkZmxhZ19oZWFkZXIoImZmbXBlZ19mZWF0dXJlcyIpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXVuYnVuZGxlZC1jcm9zcy10b29sY2hh aW4ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS11bmJ1 bmRsZWQtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uYzNmMjI5NGFjNGIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVj dHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdW5idW5kbGVkLWNyb3NzLXRvb2xjaGFpbi5w YXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gYS9idWlsZC90b29sY2hhaW4vbGludXgvdW5idW5k bGUvQlVJTEQuZ24ub3JpZworKysrIGIvYnVpbGQvdG9vbGNoYWluL2xpbnV4L3VuYnVuZGxlL0JV SUxELmduCitAQCAtMzUsNyArMzUsNyBAQAorICAgZXh0cmFfbGRmbGFncyA9IGdldGVudigiQlVJ TERfTERGTEFHUyIpCisgCisgICB0b29sY2hhaW5fYXJncyA9IHsKKy0gICAgY3VycmVudF9jcHUg PSBjdXJyZW50X2NwdQorLSAgICBjdXJyZW50X29zID0gY3VycmVudF9vcworKyAgICBjdXJyZW50 X2NwdSA9IGhvc3RfY3B1CisrICAgIGN1cnJlbnRfb3MgPSBob3N0X29zCisgICB9CisgfQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRj LXNpemVfdC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2Nocm9taXVt LXdlYnJ0Yy1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5kZDQ2ZmUxNGNkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtc2l6ZV90LnBhdGNoCkBAIC0wLDAgKzEsMTAg QEAKKy0tLSBhL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj My9jbG9ja2RyaWZ0X2RldGVjdG9yLmgJMjAyMC0wOC0xMCAyMDo0MjoyOS4wMDAwMDAwMDAgKzAy MDAKKysrKyBiL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj My9jbG9ja2RyaWZ0X2RldGVjdG9yLmgJMjAyMC0wOS0wNCAxMjo0NzowNy4wMTQ4MzM2MzMgKzAy MDAKK0BAIC0xMiw2ICsxMiw3IEBACisgI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf QUVDM19DTE9DS0RSSUZUX0RFVEVDVE9SX0hfCisgCisgI2luY2x1ZGUgPGFycmF5PgorKyNpbmNs dWRlIDxjc3RkZGVmPgorIAorIG5hbWVzcGFjZSB3ZWJydGMgeworIApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQWRkLWEtc2NyaXB0LXRvLWxp c3QtcGF0Y2gtdGFyZ2V0cy5wYXRjaC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9w YXRjaGVzL2VsZWN0cm9uLUFkZC1hLXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MTZkYmE5ZGMz YmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9l bGVjdHJvbi1BZGQtYS1zY3JpcHQtdG8tbGlzdC1wYXRjaC10YXJnZXRzLnBhdGNoLnBhdGNoCkBA IC0wLDAgKzEsNDIgQEAKK0Zyb20gZmY0MTIyZjIzNmI3MGMyNzJjNzQ2ZDBjMzM2Y2RiZDU4OGQ3 OGNkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVsdmlzIFByYW5za2V2aWNodXMg PGVsdmlzQG1hZ2ljLmlvPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxNjoxMjoxOCAtMDUwMAor U3ViamVjdDogW1BBVENIXSBBZGQgYSBzY3JpcHQgdG8gbGlzdCBwYXRjaCB0YXJnZXRzCisKKy0t LQorIHNjcmlwdC9saXN0X3BhdGNoX3RhcmdldHMucHkgfCAyMyArKysrKysrKysrKysrKysrKysr KysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAw NzU1IHNjcmlwdC9saXN0X3BhdGNoX3RhcmdldHMucHkKKworZGlmZiAtLWdpdCBhL3NjcmlwdC9s aXN0X3BhdGNoX3RhcmdldHMucHkgYi9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5CituZXcg ZmlsZSBtb2RlIDEwMDc1NQoraW5kZXggMDAwMDAwMDAwLi41NTE3M2JhYzkKKy0tLSAvZGV2L251 bGwKKysrKyBiL3NjcmlwdC9saXN0X3BhdGNoX3RhcmdldHMucHkKK0BAIC0wLDAgKzEsMjMgQEAK KysjIS91c3IvYmluL2VudiBweXRob24KKysKKytpbXBvcnQgYXJncGFyc2UKKytpbXBvcnQganNv bgorKworKworK2RlZiBwYXJzZV9hcmdzKCk6CisrICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVu dFBhcnNlcihkZXNjcmlwdGlvbj0nQXBwbHkgRWxlY3Ryb24gcGF0Y2hlcycpCisrICBwYXJzZXIu YWRkX2FyZ3VtZW50KCdjb25maWcnLCBuYXJncz0nKycsCisrICAgICAgICAgICAgICAgICAgICAg IHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3InKSwKKysgICAgICAgICAgICAgICAgICAgICAgaGVs cD0ncGF0Y2hlc1wnIGNvbmZpZyhzKSBpbiB0aGUgSlNPTiBmb3JtYXQnKQorKyAgcmV0dXJuIHBh cnNlci5wYXJzZV9hcmdzKCkKKysKKysKKytkZWYgbWFpbigpOgorKyAgY29uZmlncyA9IHBhcnNl X2FyZ3MoKS5jb25maWcKKysgIGZvciBjb25maWdfanNvbiBpbiBjb25maWdzOgorKyAgICBmb3Ig cGF0Y2hfZGlyLCByZXBvIGluIGpzb24ubG9hZChjb25maWdfanNvbikuaXRlcml0ZW1zKCk6Cisr ICAgICAgcHJpbnQocmVwbykKKysKKysKKytpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorKyAg bWFpbigpCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmls ZXMvcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhlcy5wYXRjaC5wYXRjaCBiL3NyY3BrZ3MvZWxl Y3Ryb24yNC9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUJ1aWxkLWZpeGVzLnBhdGNoLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTk4ZWUwMjBkMzRhCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24t QnVpbGQtZml4ZXMucGF0Y2gucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorZGlmZiAtLWdpdCBhL2J1 aWxkL25wbS5nbmkgYi9idWlsZC9ucG0uZ25pCitpbmRleCBhMTk4N2QwOTUuLmZiMzNhMTRjMyAx MDA2NDQKKy0tLSBhL2J1aWxkL25wbS5nbmkKKysrKyBiL2J1aWxkL25wbS5nbmkKK0BAIC0zNSw3 ICszNSw2IEBAIHRlbXBsYXRlKCJucG1fYWN0aW9uIikgeworICAgICBpZiAoIWRlZmluZWQoZGVw cykpIHsKKyAgICAgICBkZXBzID0gW10KKyAgICAgfQorLSAgICBkZXBzICs9IFsgIjpucG1fcHJl X2ZsaWdodF8iICsgdGFyZ2V0X25hbWUgXQorIAorICAgICBzY3JpcHQgPSAiLy9lbGVjdHJvbi9i dWlsZC9ucG0tcnVuLnB5IgorICAgICBhcmdzID0gWwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjI0L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZXhjbHVkZS1jb250ZW50LXRlc3QtcGF0Y2hl cy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWV4Y2x1 ZGUtY29udGVudC10ZXN0LXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4wNDlmZjRiZGQwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRj aGVzLnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL3NjcmlwdC9hcHBseV9hbGxfcGF0Y2hl cy5weQkyMDIzLTA1LTAzIDE1OjI3OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIC0JMjAyMy0wNS0w NCAyMzoxMjowMS40MzA2MTkwNTAgKzAyMDAKK0BAIC0xNCw2ICsxNCw3IEBACisgICAgIGlmIG9z LnBhdGguZXhpc3RzKHJlcG8pOgorICAgICAgIGdpdC5pbXBvcnRfcGF0Y2hlcyhyZXBvPXJlcG8s IHBhdGNoX2RhdGE9cGF0Y2hfZnJvbV9kaXIocGF0Y2hfZGlyKSwKKyAgICAgICAgIHRocmVld2F5 PXRocmVld2F5IGlzIG5vdCBOb25lLAorKyAgICAgICAgZXhjbHVkZT1bJ3RoaXJkX3BhcnR5L2Js aW5rL3Rvb2xzLyoqJywgJ3Rlc3QvbWpzdW5pdC8qKicsICdjb250ZW50L3Rlc3QvKionLCAndGVz dC9jY3Rlc3QvKionLCAndGVzdC91bml0dGVzdHMvKionLCAndGhpcmRfcGFydHkvYmxpbmsvd2Vi X3Rlc3RzLyoqJywgJy5naXRpZ25vcmUnXSwKKyAgICAgICAgIGNvbW1pdHRlcl9uYW1lPSJFbGVj dHJvbiBTY3JpcHRzIiwgY29tbWl0dGVyX2VtYWlsPSJzY3JpcHRzQGVsZWN0cm9uIikKKyAKKyAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWdp dC1zdHVmZi5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9wYXRjaGVzL2VsZWN0cm9u LWdpdC1zdHVmZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmM0ZDdmOWFlZDk5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxl cy9wYXRjaGVzL2VsZWN0cm9uLWdpdC1zdHVmZi5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0g YS9CVUlMRC5nbgkyMDIzLTA1LTAzIDE1OjI3OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIC0JMjAy My0wNS0wNSAwMDoyNDoyNS40ODM0NzEwMjEgKzAyMDAKK0BAIC0xMTEsOCArMTExLDYgQEAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0cmltIHN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLmdpdC9wYWNrZWQtcmVmcyIs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5naXQvSEVBRCIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdC9saWIvZ2V0LXZlcnNpb24uanMiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorIApkaWZmIC0tZ2l0IGEvc3JjcGtn cy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tbm8tbmVlZC1mb3ItaHVza3kucGF0 Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1uby1uZWVkLWZv ci1odXNreS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBi MDc0MjU0YzQzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9w YXRjaGVzL2VsZWN0cm9uLW5vLW5lZWQtZm9yLWh1c2t5LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAK Ky0tLSBhL3BhY2thZ2UuanNvbgkyMDIyLTA3LTA2IDE3OjMxOjUwLjAwMDAwMDAwMCArMDIwMAor KysrIC0JMjAyMi0wNy0wOCAyMzowNDo0My42NTQ4MTI5NTcgKzAyMDAKK0BAIC05OCw3ICs5OCw2 IEBACisgICAgICJwcmVjb21taXQiOiAibGludC1zdGFnZWQiLAorICAgICAicHJlaW5zdGFsbCI6 ICJub2RlIC1lICdwcm9jZXNzLmV4aXQoMCknIiwKKyAgICAgInByZXBhY2siOiAiY2hlY2stZm9y LWxlYWtzIiwKKy0gICAgInByZXBhcmUiOiAiaHVza3kgaW5zdGFsbCIsCisgICAgICJyZXBsIjog Im5vZGUgLi9zY3JpcHQvc3RhcnQuanMgLS1pbnRlcmFjdGl2ZSIsCisgICAgICJzdGFydCI6ICJu b2RlIC4vc2NyaXB0L3N0YXJ0LmpzIiwKKyAgICAgInRlc3QiOiAibm9kZSAuL3NjcmlwdC9zcGVj LXJ1bm5lci5qcyIsCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvcGF0Y2hl cy9lbGVjdHJvbi1zdGQtdmVjdG9yLW5vbi1jb25zdC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24y NC9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLXN0ZC12ZWN0b3Itbm9uLWNvbnN0LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODlkZThhMWFmZmY1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tc3Rk LXZlY3Rvci1ub24tY29uc3QucGF0Y2gKQEAgLTAsMCArMSwxMDkgQEAKKy0tLSBhL3BhdGNoZXMv Y2hyb21pdW0vZmVhdF9hZGRfZGF0YV9wYXJhbWV0ZXJfdG9fcHJvY2Vzc3NpbmdsZXRvbi5wYXRj aAorKysrIGIvcGF0Y2hlcy9jaHJvbWl1bS9mZWF0X2FkZF9kYXRhX3BhcmFtZXRlcl90b19wcm9j ZXNzc2luZ2xldG9uLnBhdGNoCitAQCAtMzIsNyArMzIsNyBAQCBpbmRleCA1YTY0MjIwYWFmMTMw OTgzMmRjMGFkNTQzZTM1M2RlNjdmZTBhNzc5Li5lNzVjNGYwZDdjZjFjYWMyZTU4NjJlYjg1ODgw MDM1OQorIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkZp bGVQYXRoJiBjdXJyZW50X2RpcmVjdG9yeSk+OworICsgICAgICAgYmFzZTo6UmVwZWF0aW5nQ2Fs bGJhY2s8Ym9vbChjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY29tbWFuZF9saW5lLAorICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBjdXJy ZW50X2RpcmVjdG9yeSwKKy0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdGQ6OnZlY3Rvcjxjb25zdCB1aW50OF90PiBhZGRpdGlvbmFsX2RhdGEpPjsKKysrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBh ZGRpdGlvbmFsX2RhdGEpPjsKKyAgCisgICNpZiBCVUlMREZMQUcoSVNfV0lOKQorICAgIFByb2Nl c3NTaW5nbGV0b24oY29uc3Qgc3RkOjpzdHJpbmcmIHByb2dyYW1fbmFtZSwKK0BAIC03Myw3ICs3 Myw3IEBAIGluZGV4IDdkM2E0NDFiZGI2NDI2OGVkNWZiZmE3YmY1ODlmYjM1YTJmZDFiNzUuLmEz ZTQ1ZTliYWEwOWJmYzg3YmU1YjdmZjU4OWFjNzY4CisgICAgLy8gfHJlYWRlcnwgaXMgZm9yIHNl bmRpbmcgYmFjayBBQ0sgbWVzc2FnZS4KKyAgICB2b2lkIEhhbmRsZU1lc3NhZ2UoY29uc3Qgc3Rk OjpzdHJpbmcmIGN1cnJlbnRfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6 OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFyZ3YsCistKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0ZDo6dmVjdG9yPGNvbnN0IHVpbnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSwKKysrICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gYWRkaXRpb25hbF9kYXRhLAor ICAgICAgICAgICAgICAgICAgICAgICBTb2NrZXRSZWFkZXIqIHJlYWRlcik7CisgIAorICAgcHJp dmF0ZToKK0BAIC04NCw3ICs4NCw3IEBAIGluZGV4IDdkM2E0NDFiZGI2NDI2OGVkNWZiZmE3YmY1 ODlmYjM1YTJmZDFiNzUuLmEzZTQ1ZTliYWEwOWJmYzg3YmU1YjdmZjU4OWFjNzY4CisgLSAgICBj b25zdCBzdGQ6OnN0cmluZyYgY3VycmVudF9kaXIsIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry aW5nPiYgYXJndiwKKyArICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjdXJyZW50X2RpciwKKyArICAg IGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYXJndiwKKy0rICAgIGNvbnN0IHN0ZDo6 dmVjdG9yPGNvbnN0IHVpbnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSwKKysrICAgIGNvbnN0IHN0ZDo6 dmVjdG9yPHVpbnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSwKKyAgICAgIFNvY2tldFJlYWRlciogcmVh ZGVyKSB7CisgICAgRENIRUNLKHVpX3Rhc2tfcnVubmVyXy0+QmVsb25nc1RvQ3VycmVudFRocmVh ZCgpKTsKKyAgICBEQ0hFQ0socmVhZGVyKTsKK0BAIC0xMTQsNyArMTE0LDcgQEAgaW5kZXggN2Qz YTQ0MWJkYjY0MjY4ZWQ1ZmJmYTdiZjU4OWZiMzVhMmZkMWI3NS4uYTNlNDVlOWJhYTA5YmZjODdi ZTViN2ZmNTg5YWM3NjgKKyArICBiYXNlOjpTdHJpbmdUb1NpemVUKHRva2Vuc1swXSwgJm51bV9h cmdzKTsKKyArICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29tbWFuZF9saW5lKHRva2Vucy5i ZWdpbigpICsgMSwgdG9rZW5zLmJlZ2luKCkgKyAxICsgbnVtX2FyZ3MpOworICsKKy0rICBzdGQ6 OnZlY3Rvcjxjb25zdCB1aW50OF90PiBhZGRpdGlvbmFsX2RhdGE7CisrKyAgc3RkOjp2ZWN0b3I8 dWludDhfdD4gYWRkaXRpb25hbF9kYXRhOworICsgIGlmICh0b2tlbnMuc2l6ZSgpID49IDMgKyBu dW1fYXJncykgeworICsgICAgc2l6ZV90IGFkZGl0aW9uYWxfZGF0YV9zaXplOworICsgICAgYmFz ZTo6U3RyaW5nVG9TaXplVCh0b2tlbnNbMSArIG51bV9hcmdzXSwgJmFkZGl0aW9uYWxfZGF0YV9z aXplKTsKK0BAIC0xMjMsNyArMTIzLDcgQEAgaW5kZXggN2QzYTQ0MWJkYjY0MjY4ZWQ1ZmJmYTdi ZjU4OWZiMzVhMmZkMWI3NS4uYTNlNDVlOWJhYTA5YmZjODdiZTViN2ZmNTg5YWM3NjgKKyArICAg ICAgICBzdGQ6OnN0cmluZygxLCBrVG9rZW5EZWxpbWl0ZXIpKTsKKyArICAgIGNvbnN0IHVpbnQ4 X3QqIGFkZGl0aW9uYWxfZGF0YV9iaXRzID0KKyArICAgICAgICByZWludGVycHJldF9jYXN0PGNv bnN0IHVpbnQ4X3QqPihyZW1haW5pbmdfYXJncy5jX3N0cigpKTsKKy0rICAgIGFkZGl0aW9uYWxf ZGF0YSA9IHN0ZDo6dmVjdG9yPGNvbnN0IHVpbnQ4X3Q+KAorKysgICAgYWRkaXRpb25hbF9kYXRh ID0gc3RkOjp2ZWN0b3I8dWludDhfdD4oCisgKyAgICAgICAgYWRkaXRpb25hbF9kYXRhX2JpdHMs IGFkZGl0aW9uYWxfZGF0YV9iaXRzICsgYWRkaXRpb25hbF9kYXRhX3NpemUpOworICsgIH0KKyAr CitAQCAtMTg5LDcgKzE4OSw3IEBAIGluZGV4IDBlYTVlYjNlM2NmMDU1ZDk4MWFiNzM0ODYxMTVi YWM1MzI4N2YyZDcuLmZlNjhiZWI0YjI1MjJkMjdlMDdkYmJiMzM0MWYxMDBmCisgICAgICAgICAg ICAgICAgICAgICAgICBiYXNlOjpDb21tYW5kTGluZSogcGFyc2VkX2NvbW1hbmRfbGluZSwKKyAt ICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OkZpbGVQYXRoKiBjdXJyZW50X2RpcmVjdG9yeSkg eworICsgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6RmlsZVBhdGgqIGN1cnJlbnRfZGlyZWN0 b3J5LAorLSsgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgdWludDhfdD4q IHBhcnNlZF9hZGRpdGlvbmFsX2RhdGEpIHsKKysrICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6 dmVjdG9yPHVpbnQ4X3Q+KiBwYXJzZWRfYWRkaXRpb25hbF9kYXRhKSB7CisgICAgLy8gV2Ugc2hv dWxkIGhhdmUgZW5vdWdoIHJvb20gZm9yIHRoZSBzaG9ydGVzdCBjb21tYW5kIChtaW5fbWVzc2Fn ZV9zaXplKQorICAgIC8vIGFuZCBhbHNvIGJlIGEgbXVsdGlwbGUgb2Ygd2NoYXJfdCBieXRlcy4g VGhlIHNob3J0ZXN0IGNvbW1hbmQKKyAtICAvLyBwb3NzaWJsZSBpcyBMIlNUQVJUXDBcMCIgKGVt cHR5IGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBjb21tYW5kIGxpbmUpLgorQEAgLTIzMCw3ICsyMzAs NyBAQCBpbmRleCAwZWE1ZWIzZTNjZjA1NWQ5ODFhYjczNDg2MTE1YmFjNTMyODdmMmQ3Li5mZTY4 YmViNGIyNTIyZDI3ZTA3ZGJiYjMzNDFmMTAwZgorICsgICAgICAgIG1zZy5zdWJzdHIoZm91cnRo X251bGwgKyAxLCBmaWZ0aF9udWxsIC0gZm91cnRoX251bGwpOworICsgICAgY29uc3QgdWludDhf dCogYWRkaXRpb25hbF9kYXRhX2J5dGVzID0KKyArICAgICAgICByZWludGVycHJldF9jYXN0PGNv bnN0IHVpbnQ4X3QqPihhZGRpdGlvbmFsX2RhdGEuY19zdHIoKSk7CistKyAgICAqcGFyc2VkX2Fk ZGl0aW9uYWxfZGF0YSA9IHN0ZDo6dmVjdG9yPGNvbnN0IHVpbnQ4X3Q+KGFkZGl0aW9uYWxfZGF0 YV9ieXRlcywKKysrICAgICpwYXJzZWRfYWRkaXRpb25hbF9kYXRhID0gc3RkOjp2ZWN0b3I8dWlu dDhfdD4oYWRkaXRpb25hbF9kYXRhX2J5dGVzLAorICsgICAgICAgIGFkZGl0aW9uYWxfZGF0YV9i eXRlcyArIGFkZGl0aW9uYWxfZGF0YV9sZW5ndGgpOworICsKKyAgICAgIHJldHVybiB0cnVlOwor QEAgLTI0MSw3ICsyNDEsNyBAQCBpbmRleCAwZWE1ZWIzZTNjZjA1NWQ5ODFhYjczNDg2MTE1YmFj NTMyODdmMmQ3Li5mZTY4YmViNGIyNTIyZDI3ZTA3ZGJiYjMzNDFmMTAwZgorICAgIGJhc2U6OkNv bW1hbmRMaW5lIHBhcnNlZF9jb21tYW5kX2xpbmUoYmFzZTo6Q29tbWFuZExpbmU6Ok5PX1BST0dS QU0pOworICAgIGJhc2U6OkZpbGVQYXRoIGN1cnJlbnRfZGlyZWN0b3J5OworIC0gIGlmICghUGFy c2VDb21tYW5kTGluZShjZHMsICZwYXJzZWRfY29tbWFuZF9saW5lLCAmY3VycmVudF9kaXJlY3Rv cnkpKSB7CistKyAgc3RkOjp2ZWN0b3I8Y29uc3QgdWludDhfdD4gYWRkaXRpb25hbF9kYXRhOwor KysgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YTsKKyArICBpZiAoIVBhcnNl Q29tbWFuZExpbmUoY2RzLCAmcGFyc2VkX2NvbW1hbmRfbGluZSwgJmN1cnJlbnRfZGlyZWN0b3J5 LCAmYWRkaXRpb25hbF9kYXRhKSkgeworICAgICAgKnJlc3VsdCA9IFRSVUU7CisgICAgICByZXR1 cm4gdHJ1ZTsKKy0tLSBhL3NoZWxsL2Jyb3dzZXIvYXBpL2VsZWN0cm9uX2FwaV9hcHAuY2MKKysr KyBiL3NoZWxsL2Jyb3dzZXIvYXBpL2VsZWN0cm9uX2FwaV9hcHAuY2MKK0BAIC01MTksMTAgKzUx OSwxMCBAQCBib29sIE5vdGlmaWNhdGlvbkNhbGxiYWNrV3JhcHBlcigKKyAgICAgY29uc3QgYmFz ZTo6UmVwZWF0aW5nQ2FsbGJhY2s8CisgICAgICAgICB2b2lkKGNvbnN0IGJhc2U6OkNvbW1hbmRM aW5lJiBjb21tYW5kX2xpbmUsCisgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBj dXJyZW50X2RpcmVjdG9yeSwKKy0gICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3Qg dWludDhfdD4gYWRkaXRpb25hbF9kYXRhKT4mIGNhbGxiYWNrLAorKyAgICAgICAgICAgICBjb25z dCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhZGRpdGlvbmFsX2RhdGEpPiYgY2FsbGJhY2ssCisgICAg IGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWQsCisgICAgIGNvbnN0IGJhc2U6OkZpbGVQYXRo JiBjd2QsCistICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHVpbnQ4X3Q+IGFkZGl0aW9uYWxf ZGF0YSkgeworKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhZGRpdGlvbmFsX2RhdGEp IHsKKyAgIC8vIE1ha2Ugc3VyZSB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIGFmdGVyIGFwcCBnZXRz IHJlYWR5LgorICAgaWYgKEJyb3dzZXI6OkdldCgpLT5pc19yZWFkeSgpKSB7CisgICAgIGNhbGxi YWNrLlJ1bihjbWQsIGN3ZCwgc3RkOjptb3ZlKGFkZGl0aW9uYWxfZGF0YSkpOworQEAgLTEwODMs NyArMTA4Myw3IEBAIHN0ZDo6c3RyaW5nIEFwcDo6R2V0TG9jYWxlQ291bnRyeUNvZGUoKSB7Cisg Cisgdm9pZCBBcHA6Ok9uU2Vjb25kSW5zdGFuY2UoY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNt ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpGaWxlUGF0aCYgY3dk LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHVp bnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSkgeworICAgdjg6Oklzb2xh dGUqIGlzb2xhdGUgPSBKYXZhc2NyaXB0RW52aXJvbm1lbnQ6OkdldElzb2xhdGUoKTsKKyAgIHY4 OjpMb2NrZXIgbG9ja2VyKGlzb2xhdGUpOworICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZV9zY29w ZShpc29sYXRlKTsKKy0tLSBhL3NoZWxsL2Jyb3dzZXIvYXBpL2VsZWN0cm9uX2FwaV9hcHAuaAor KysrIGIvc2hlbGwvYnJvd3Nlci9hcGkvZWxlY3Ryb25fYXBpX2FwcC5oCitAQCAtMTk1LDcgKzE5 NSw3IEBAIGNsYXNzIEFwcCA6IHB1YmxpYyBFbGVjdHJvbkJyb3dzZXJDbGllbnQ6OkRlbGVnYXRl LAorICAgc3RkOjpzdHJpbmcgR2V0TG9jYWxlQ291bnRyeUNvZGUoKTsKKyAgIHZvaWQgT25TZWNv bmRJbnN0YW5jZShjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY21kLAorICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBjd2QsCistICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgdWludDhfdD4gYWRkaXRpb25hbF9kYXRhKTsK KysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhZGRp dGlvbmFsX2RhdGEpOworICAgYm9vbCBIYXNTaW5nbGVJbnN0YW5jZUxvY2soKSBjb25zdDsKKyAg IGJvb2wgUmVxdWVzdFNpbmdsZUluc3RhbmNlTG9jayhnaW46OkFyZ3VtZW50cyogYXJncyk7Cisg ICB2b2lkIFJlbGVhc2VTaW5nbGVJbnN0YW5jZUxvY2soKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuY2MgYi9z cmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNk LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmM3YWE4ZWZhNjZm Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLWZpbGVz L2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5jYwpAQCAtMCwwICsxLDE0OCBAQAorLy8gQ29weXJpZ2h0 IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUg ImJhc2UvbWV0cmljcy9oaXN0b2dyYW1fbWFjcm9zLmgiCisjaW5jbHVkZSAiYmFzZS9tZW1vcnkv cHRyX3V0aWwuaCIKKworI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL29wZW5ic2QvYXVkaW9fbWFuYWdl cl9vcGVuYnNkLmgiCisKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19kZXZpY2VfZGVzY3Jp cHRpb24uaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19vdXRwdXRfZGlzcGF0Y2hlci5o IgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgiCisjaW5jbHVkZSAi bWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgiCisjaW5jbHVkZSAibWVkaWEvYmFzZS9s aW1pdHMuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhX3N3aXRjaGVzLmgiCisKK25hbWVz cGFjZSBtZWRpYSB7CisKKy8vIE1heGltdW0gbnVtYmVyIG9mIG91dHB1dCBzdHJlYW1zIHRoYXQg Y2FuIGJlIG9wZW4gc2ltdWx0YW5lb3VzbHkuCitzdGF0aWMgY29uc3QgaW50IGtNYXhPdXRwdXRT dHJlYW1zID0gNDsKKworLy8gRGVmYXVsdCBzYW1wbGUgcmF0ZSBmb3IgaW5wdXQgYW5kIG91dHB1 dCBzdHJlYW1zLgorc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdFNhbXBsZVJhdGUgPSA0ODAwMDsK Kwordm9pZCBBZGREZWZhdWx0RGV2aWNlKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykg eworICBEQ0hFQ0soZGV2aWNlX25hbWVzLT5lbXB0eSgpKTsKKyAgZGV2aWNlX25hbWVzLT5wdXNo X2Zyb250KEF1ZGlvRGV2aWNlTmFtZTo6Q3JlYXRlRGVmYXVsdCgpKTsKK30KKworYm9vbCBBdWRp b01hbmFnZXJPcGVuQlNEOjpIYXNBdWRpb091dHB1dERldmljZXMoKSB7CisgIHJldHVybiB0cnVl OworfQorCitib29sIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Okhhc0F1ZGlvSW5wdXREZXZpY2VzKCkg eworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBdWRpb01hbmFnZXJPcGVuQlNEOjpHZXRBdWRp b0lucHV0RGV2aWNlTmFtZXMoCisgICAgQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSB7 CisgIERDSEVDSyhkZXZpY2VfbmFtZXMtPmVtcHR5KCkpOworICBBZGREZWZhdWx0RGV2aWNlKGRl dmljZV9uYW1lcyk7Cit9CisKK3ZvaWQgQXVkaW9NYW5hZ2VyT3BlbkJTRDo6R2V0QXVkaW9PdXRw dXREZXZpY2VOYW1lcygKKyAgICBBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKyAg QWRkRGVmYXVsdERldmljZShkZXZpY2VfbmFtZXMpOworfQorCitjb25zdCBjaGFyKiBBdWRpb01h bmFnZXJPcGVuQlNEOjpHZXROYW1lKCkgeworICByZXR1cm4gIlNORElPIjsKK30KKworQXVkaW9Q YXJhbWV0ZXJzIEF1ZGlvTWFuYWdlck9wZW5CU0Q6OkdldElucHV0U3RyZWFtUGFyYW1ldGVycygK KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkKSB7CisgIHN0YXRpYyBjb25zdCBpbnQg a0RlZmF1bHRJbnB1dEJ1ZmZlclNpemUgPSAxMDI0OworCisgIGludCB1c2VyX2J1ZmZlcl9zaXpl ID0gR2V0VXNlckJ1ZmZlclNpemUoKTsKKyAgaW50IGJ1ZmZlcl9zaXplID0gdXNlcl9idWZmZXJf c2l6ZSA/CisgICAgICB1c2VyX2J1ZmZlcl9zaXplIDoga0RlZmF1bHRJbnB1dEJ1ZmZlclNpemU7 CisKKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVycygKKyAgICAgIEF1ZGlvUGFyYW1ldGVyczo6QVVE SU9fUENNX0xPV19MQVRFTkNZLCBDSEFOTkVMX0xBWU9VVF9TVEVSRU8sCisgICAgICBrRGVmYXVs dFNhbXBsZVJhdGUsIGJ1ZmZlcl9zaXplKTsKK30KKworQXVkaW9NYW5hZ2VyT3BlbkJTRDo6QXVk aW9NYW5hZ2VyT3BlbkJTRChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVh ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9Mb2dGYWN0 b3J5KiBhdWRpb19sb2dfZmFjdG9yeSkKKyAgICA6IEF1ZGlvTWFuYWdlckJhc2Uoc3RkOjptb3Zl KGF1ZGlvX3RocmVhZCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0b3J5 KSB7CisgIERMT0coV0FSTklORykgPDwgIkF1ZGlvTWFuYWdlck9wZW5CU0QiOworICBTZXRNYXhP dXRwdXRTdHJlYW1zQWxsb3dlZChrTWF4T3V0cHV0U3RyZWFtcyk7Cit9CisKK0F1ZGlvTWFuYWdl ck9wZW5CU0Q6On5BdWRpb01hbmFnZXJPcGVuQlNEKCkgeworICBTaHV0ZG93bigpOworfQorCitB dWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6TWFrZUxpbmVhck91dHB1dFN0 cmVhbSgKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICBjb25zdCBMb2dD YWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFV RElPX1BDTV9MSU5FQVIsIHBhcmFtcy5mb3JtYXQoKSk7CisgIHJldHVybiBNYWtlT3V0cHV0U3Ry ZWFtKHBhcmFtcyk7Cit9CisKK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJPcGVuQlNE OjpNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMm IHBhcmFtcywKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorICAgIGNvbnN0IExv Z0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKKyAgRExPR19JRihFUlJPUiwgIWRldmljZV9pZC5l bXB0eSgpKSA8PCAiTm90IGltcGxlbWVudGVkISI7CisgIERDSEVDS19FUShBdWRpb1BhcmFtZXRl cnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgcGFyYW1zLmZvcm1hdCgpKTsKKyAgcmV0dXJuIE1h a2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsKK30KKworQXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5h Z2VyT3BlbkJTRDo6TWFrZUxpbmVhcklucHV0U3RyZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisgICAgY29u c3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgeworICBEQ0hFQ0tfRVEoQXVkaW9QYXJhbWV0 ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9ybWF0KCkpOworICByZXR1cm4gTWFrZUlu cHV0U3RyZWFtKHBhcmFtcyk7Cit9CisKK0F1ZGlvSW5wdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9w ZW5CU0Q6Ok1ha2VMb3dMYXRlbmN5SW5wdXRTdHJlYW0oCisgICAgY29uc3QgQXVkaW9QYXJhbWV0 ZXJzJiBwYXJhbXMsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAgICBjb25z dCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisgIERDSEVDS19FUShBdWRpb1BhcmFtZXRl cnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgcGFyYW1zLmZvcm1hdCgpKTsKKyAgcmV0dXJuIE1h a2VJbnB1dFN0cmVhbShwYXJhbXMpOworfQorCitBdWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2Vy T3BlbkJTRDo6R2V0UHJlZmVycmVkT3V0cHV0U3RyZWFtUGFyYW1ldGVycygKKyAgICBjb25zdCBz dGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCwKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMm IGlucHV0X3BhcmFtcykgeworICAvLyBUT0RPKHRvbW1pKTogU3VwcG9ydCB8b3V0cHV0X2Rldmlj ZV9pZHwuCisgIERMT0dfSUYoRVJST1IsICFvdXRwdXRfZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJO b3QgaW1wbGVtZW50ZWQhIjsKKyAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdE91dHB1dEJ1ZmZl clNpemUgPSAyMDQ4OworCisgIENoYW5uZWxMYXlvdXQgY2hhbm5lbF9sYXlvdXQgPSBDSEFOTkVM X0xBWU9VVF9TVEVSRU87CisgIGludCBzYW1wbGVfcmF0ZSA9IGtEZWZhdWx0U2FtcGxlUmF0ZTsK KyAgaW50IGJ1ZmZlcl9zaXplID0ga0RlZmF1bHRPdXRwdXRCdWZmZXJTaXplOworICBpZiAoaW5w dXRfcGFyYW1zLklzVmFsaWQoKSkgeworICAgIHNhbXBsZV9yYXRlID0gaW5wdXRfcGFyYW1zLnNh bXBsZV9yYXRlKCk7CisgICAgY2hhbm5lbF9sYXlvdXQgPSBpbnB1dF9wYXJhbXMuY2hhbm5lbF9s YXlvdXQoKTsKKyAgICBidWZmZXJfc2l6ZSA9IHN0ZDo6bWluKGJ1ZmZlcl9zaXplLCBpbnB1dF9w YXJhbXMuZnJhbWVzX3Blcl9idWZmZXIoKSk7CisgIH0KKworICBpbnQgdXNlcl9idWZmZXJfc2l6 ZSA9IEdldFVzZXJCdWZmZXJTaXplKCk7CisgIGlmICh1c2VyX2J1ZmZlcl9zaXplKQorICAgIGJ1 ZmZlcl9zaXplID0gdXNlcl9idWZmZXJfc2l6ZTsKKworICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJz KAorICAgICAgQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTE9XX0xBVEVOQ1ksIGNoYW5uZWxf bGF5b3V0LAorICAgICAgc2FtcGxlX3JhdGUsIGJ1ZmZlcl9zaXplKTsKK30KKworQXVkaW9JbnB1 dFN0cmVhbSogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6TWFrZUlucHV0U3RyZWFtKAorICAgIGNvbnN0 IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIERMT0coV0FSTklORykgPDwgIk1ha2VJbnB1 dFN0cmVhbSI7CisgIHJldHVybiBuZXcgU25kaW9BdWRpb0lucHV0U3RyZWFtKHRoaXMsCisgICAg ICAgICAgICAgQXVkaW9EZXZpY2VEZXNjcmlwdGlvbjo6a0RlZmF1bHREZXZpY2VJZCwgcGFyYW1z KTsKK30KKworQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1ha2VPdXRw dXRTdHJlYW0oCisgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgRExPRyhX QVJOSU5HKSA8PCAiTWFrZU91dHB1dFN0cmVhbSI7CisgIHJldHVybiBuZXcgU25kaW9BdWRpb091 dHB1dFN0cmVhbShwYXJhbXMsIHRoaXMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgbWVkaWEKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5h Z2VyX29wZW5ic2QuaCBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9hdWRp b19tYW5hZ2VyX29wZW5ic2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjhjOTlkYjk2NmQ2NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9m aWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaApAQCAtMCwwICsxLDY1IEBA CisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl LgorCisjaWZuZGVmIE1FRElBX0FVRElPX09QRU5CU0RfQVVESU9fTUFOQUdFUl9PUEVOQlNEX0hf CisjZGVmaW5lIE1FRElBX0FVRElPX09QRU5CU0RfQVVESU9fTUFOQUdFUl9PUEVOQlNEX0hfCisK KyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisj aW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJiYXNlL21lbW9yeS9yZWZfY291bnRl ZC5oIgorI2luY2x1ZGUgImJhc2UvdGhyZWFkaW5nL3RocmVhZC5oIgorI2luY2x1ZGUgIm1lZGlh L2F1ZGlvL2F1ZGlvX21hbmFnZXJfYmFzZS5oIgorCituYW1lc3BhY2UgbWVkaWEgeworCitjbGFz cyBNRURJQV9FWFBPUlQgQXVkaW9NYW5hZ2VyT3BlbkJTRCA6IHB1YmxpYyBBdWRpb01hbmFnZXJC YXNlIHsKKyBwdWJsaWM6CisgIEF1ZGlvTWFuYWdlck9wZW5CU0Qoc3RkOjp1bmlxdWVfcHRyPEF1 ZGlvVGhyZWFkPiBhdWRpb190aHJlYWQsCisgICAgICAgICAgICAgICAgICAgQXVkaW9Mb2dGYWN0 b3J5KiBhdWRpb19sb2dfZmFjdG9yeSk7CisgIH5BdWRpb01hbmFnZXJPcGVuQlNEKCkgb3ZlcnJp ZGU7CisKKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9NYW5hZ2VyLgorICBib29sIEhhc0F1 ZGlvT3V0cHV0RGV2aWNlcygpIG92ZXJyaWRlOworICBib29sIEhhc0F1ZGlvSW5wdXREZXZpY2Vz KCkgb3ZlcnJpZGU7CisgIHZvaWQgR2V0QXVkaW9JbnB1dERldmljZU5hbWVzKEF1ZGlvRGV2aWNl TmFtZXMqIGRldmljZV9uYW1lcykgb3ZlcnJpZGU7CisgIHZvaWQgR2V0QXVkaW9PdXRwdXREZXZp Y2VOYW1lcyhBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIG92ZXJyaWRlOworICBBdWRp b1BhcmFtZXRlcnMgR2V0SW5wdXRTdHJlYW1QYXJhbWV0ZXJzKAorICAgICAgY29uc3Qgc3RkOjpz dHJpbmcmIGRldmljZV9pZCkgb3ZlcnJpZGU7CisgIGNvbnN0IGNoYXIqIEdldE5hbWUoKSBvdmVy cmlkZTsKKworICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb01hbmFnZXJCYXNlLgorICBBdWRp b091dHB1dFN0cmVhbSogTWFrZUxpbmVhck91dHB1dFN0cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlv UGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFj aykgb3ZlcnJpZGU7CisgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTG93TGF0ZW5jeU91dHB1dFN0 cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAgY29uc3Qg c3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAgICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2Fs bGJhY2spIG92ZXJyaWRlOworICBBdWRpb0lucHV0U3RyZWFtKiBNYWtlTGluZWFySW5wdXRTdHJl YW0oCisgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICAgIGNvbnN0IHN0 ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisgICAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxi YWNrKSBvdmVycmlkZTsKKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFrZUxvd0xhdGVuY3lJbnB1dFN0 cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAgY29uc3Qg c3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAgICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2Fs bGJhY2spIG92ZXJyaWRlOworCisgcHJvdGVjdGVkOgorICBBdWRpb1BhcmFtZXRlcnMgR2V0UHJl ZmVycmVkT3V0cHV0U3RyZWFtUGFyYW1ldGVycygKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBv dXRwdXRfZGV2aWNlX2lkLAorICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJh bXMpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgLy8gQ2FsbGVkIGJ5IE1ha2VMaW5lYXJPdXRw dXRTdHJlYW0gYW5kIE1ha2VMb3dMYXRlbmN5T3V0cHV0U3RyZWFtLgorICBBdWRpb091dHB1dFN0 cmVhbSogTWFrZU91dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7Cisg IEF1ZGlvSW5wdXRTdHJlYW0qIE1ha2VJbnB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMm IHBhcmFtcyk7CisKKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEF1ZGlvTWFuYWdlck9wZW5C U0QpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisKKyNlbmRpZiAgLy8gTUVESUFfQVVE SU9fT1BFTkJTRF9BVURJT19NQU5BR0VSX09QRU5CU0RfSF8KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5jYyBiL3NyY3BrZ3MvZWxl Y3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5jYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVmNTQzOWI0OWEwNwotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5jYwpAQCAt MCwwICsxLDIwMCBAQAorLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD RU5TRSBmaWxlLgorCisjaW5jbHVkZSAiYmFzZS9iaW5kLmgiCisjaW5jbHVkZSAiYmFzZS9sb2dn aW5nLmgiCisjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL2F1 ZGlvX3RpbWVzdGFtcF9oZWxwZXIuaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9vcGVuYnNkL2F1 ZGlvX21hbmFnZXJfb3BlbmJzZC5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFn ZXIuaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5oIgorCituYW1l c3BhY2UgbWVkaWEgeworCitzdGF0aWMgY29uc3QgU2FtcGxlRm9ybWF0IGtTYW1wbGVGb3JtYXQg PSBrU2FtcGxlRm9ybWF0UzE2OworCit2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6T25Nb3Zl Q2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpCit7CisgIFNuZGlvQXVkaW9JbnB1dFN0cmVh bSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9JbnB1dFN0cmVhbSo+KGFyZyk7CisKKyAg c2VsZi0+aHdfZGVsYXkgKz0gZGVsdGE7Cit9CisKK3ZvaWQgKlNuZGlvQXVkaW9JbnB1dFN0cmVh bTo6VGhyZWFkRW50cnkodm9pZCAqYXJnKSB7CisgIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSogc2Vs ZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9JbnB1dFN0cmVhbSo+KGFyZyk7CisKKyAgc2VsZi0+ VGhyZWFkTG9vcCgpOworICByZXR1cm4gTlVMTDsKK30KKworU25kaW9BdWRpb0lucHV0U3RyZWFt OjpTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n JiBkZXZpY2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKQorICAgIDogbWFuYWdlcihtYW5hZ2Vy KSwKKyAgICAgIHBhcmFtcyhwYXJhbXMpLAorICAgICAgYXVkaW9fYnVzKEF1ZGlvQnVzOjpDcmVh dGUocGFyYW1zKSksCisgICAgICBzdGF0ZShrQ2xvc2VkKSB7Cit9CisKK1NuZGlvQXVkaW9JbnB1 dFN0cmVhbTo6flNuZGlvQXVkaW9JbnB1dFN0cmVhbSgpIHsKKyAgaWYgKHN0YXRlICE9IGtDbG9z ZWQpCisgICAgQ2xvc2UoKTsKK30KKworYm9vbCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06Ok9wZW4o KSB7CisgIHN0cnVjdCBzaW9fcGFyIHBhcjsKKyAgaW50IHNpZzsKKworICBpZiAoc3RhdGUgIT0g a0Nsb3NlZCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKHBhcmFtcy5mb3JtYXQoKSAhPSBB dWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIgJiYKKyAgICAgIHBhcmFtcy5mb3JtYXQo KSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgeworICAgIExPRyhX QVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gZm9ybWF0LiI7CisgICAgcmV0dXJuIGZhbHNl OworICB9CisKKyAgc2lvX2luaXRwYXIoJnBhcik7CisgIHBhci5yYXRlID0gcGFyYW1zLnNhbXBs ZV9yYXRlKCk7CisgIHBhci5yY2hhbiA9IHBhcmFtcy5jaGFubmVscygpOworICBwYXIuYml0cyA9 IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCk7CisgIHBhci5icHMg PSBwYXIuYml0cyAvIDg7CisgIHBhci5zaWcgPSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6IDA7 CisgIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7CisgIHBhci5hcHBidWZzeiA9IHBhcmFtcy5mcmFt ZXNfcGVyX2J1ZmZlcigpOworCisgIGhkbCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19SRUMs IDApOworCisgIGlmIChoZGwgPT0gTlVMTCkgeworICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0 IG9wZW4gYXVkaW8gZGV2aWNlLiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKCFz aW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19nZXRwYXIoaGRsLCAmcGFyKSkgeworICAgIExP RyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisgICAgZ290byBi YWRfY2xvc2U7CisgIH0KKworICBpZiAocGFyLnJhdGUgICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1z LnNhbXBsZV9yYXRlKCkgfHwKKyAgICAgIHBhci5yY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFt cy5jaGFubmVscygpIHx8CisgICAgICBwYXIuYml0cyAgIT0gKHVuc2lnbmVkIGludClTYW1wbGVG b3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpIHx8CisgICAgICBwYXIuc2lnICAg IT0gKHVuc2lnbmVkIGludClzaWcgfHwKKyAgICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUgIT0g U0lPX0xFX05BVElWRSkgfHwKKyAgICAgIChwYXIuYml0cyAhPSBwYXIuYnBzICogOCkpIHsKKyAg ICBMT0coRVJST1IpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisgICAgZ290 byBiYWRfY2xvc2U7CisgIH0KKyAgc3RhdGUgPSBrU3RvcHBlZDsKKyAgYnVmZmVyID0gbmV3IGNo YXJbYXVkaW9fYnVzLT5mcmFtZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVG b3JtYXQpXTsKKyAgc2lvX29ubW92ZShoZGwsICZPbk1vdmVDYWxsYmFjaywgdGhpcyk7CisgIHJl dHVybiB0cnVlOworYmFkX2Nsb3NlOgorICBzaW9fY2xvc2UoaGRsKTsKKyAgcmV0dXJuIGZhbHNl OworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U3RhcnQoQXVkaW9JbnB1dENhbGxi YWNrKiBjYikgeworCisgIFN0YXJ0QWdjKCk7CisKKyAgc3RhdGUgPSBrUnVubmluZzsKKyAgaHdf ZGVsYXkgPSAwOworICBjYWxsYmFjayA9IGNiOworICBzaW9fc3RhcnQoaGRsKTsKKyAgaWYgKHB0 aHJlYWRfY3JlYXRlKCZ0aHJlYWQsIE5VTEwsICZUaHJlYWRFbnRyeSwgdGhpcykgIT0gMCkgewor ICAgIExPRyhFUlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgcmVhbC10aW1lIHRocmVhZCBmb3Ig cmVjb3JkaW5nLiI7CisgICAgc2lvX3N0b3AoaGRsKTsKKyAgICBzdGF0ZSA9IGtTdG9wcGVkOwor ICB9Cit9CisKK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTdG9wKCkgeworCisgIGlmIChz dGF0ZSA9PSBrU3RvcHBlZCkKKyAgICByZXR1cm47CisKKyAgc3RhdGUgPSBrU3RvcFdhaXQ7Cisg IHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpOworICBzaW9fc3RvcChoZGwpOworICBzdGF0ZSA9 IGtTdG9wcGVkOworCisgIFN0b3BBZ2MoKTsKK30KKwordm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJl YW06OkNsb3NlKCkgeworCisgIGlmIChzdGF0ZSA9PSBrQ2xvc2VkKQorICAgIHJldHVybjsKKwor ICBpZiAoc3RhdGUgPT0ga1J1bm5pbmcpCisgICAgU3RvcCgpOworCisgIHN0YXRlID0ga0Nsb3Nl ZDsKKyAgZGVsZXRlIFtdIGJ1ZmZlcjsKKyAgc2lvX2Nsb3NlKGhkbCk7CisKKyAgbWFuYWdlci0+ UmVsZWFzZUlucHV0U3RyZWFtKHRoaXMpOworfQorCitkb3VibGUgU25kaW9BdWRpb0lucHV0U3Ry ZWFtOjpHZXRNYXhWb2x1bWUoKSB7CisgIC8vIE5vdCBzdXBwb3J0ZWQKKyAgcmV0dXJuIDAuMDsK K30KKwordm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNldFZvbHVtZShkb3VibGUgdm9sdW1l KSB7CisgIC8vIE5vdCBzdXBwb3J0ZWQuIERvIG5vdGhpbmcuCit9CisKK2RvdWJsZSBTbmRpb0F1 ZGlvSW5wdXRTdHJlYW06OkdldFZvbHVtZSgpIHsKKyAgLy8gTm90IHN1cHBvcnRlZC4KKyAgcmV0 dXJuIDAuMDsKK30KKworYm9vbCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OklzTXV0ZWQoKSB7Cisg IC8vIE5vdCBzdXBwb3J0ZWQuCisgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTbmRpb0F1ZGlv SW5wdXRTdHJlYW06OlNldE91dHB1dERldmljZUZvckFlYygKKyAgICBjb25zdCBzdGQ6OnN0cmlu ZyYgb3V0cHV0X2RldmljZV9pZCkgeworICAvLyBOb3Qgc3VwcG9ydGVkLgorfQorCit2b2lkIFNu ZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2b2lkKSB7CisgIHNpemVfdCB0b2RvLCBu OworICBjaGFyICpkYXRhOworICB1bnNpZ25lZCBpbnQgbmZyYW1lczsKKyAgZG91YmxlIG5vcm1h bGl6ZWRfdm9sdW1lID0gMC4wOworCisgIG5mcmFtZXMgPSBhdWRpb19idXMtPmZyYW1lcygpOwor CisgIHdoaWxlIChzdGF0ZSA9PSBrUnVubmluZyAmJiAhc2lvX2VvZihoZGwpKSB7CisKKyAgICBH ZXRBZ2NWb2x1bWUoJm5vcm1hbGl6ZWRfdm9sdW1lKTsKKworICAgIC8vIHJlYWQgb25lIGJsb2Nr CisgICAgdG9kbyA9IG5mcmFtZXMgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9y bWF0KTsKKyAgICBkYXRhID0gYnVmZmVyOworICAgIHdoaWxlICh0b2RvID4gMCkgeworICAgICAg biA9IHNpb19yZWFkKGhkbCwgZGF0YSwgdG9kbyk7CisgICAgICBpZiAobiA9PSAwKQorICAgICAg ICByZXR1cm47CS8vIHVucmVjb3ZlcmFibGUgSS9PIGVycm9yCisgICAgICB0b2RvIC09IG47Cisg ICAgICBkYXRhICs9IG47CisgICAgfQorICAgIGh3X2RlbGF5IC09IG5mcmFtZXM7CisKKyAgICAv LyBjb252ZXJ0IGZyYW1lcyBjb3VudCB0byBUaW1lRGVsdGEKKyAgICBjb25zdCBiYXNlOjpUaW1l RGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5 LAorICAgICAgcGFyYW1zLnNhbXBsZV9yYXRlKCkpOworCisgICAgLy8gcHVzaCBpbnRvIGJ1cwor ICAgIGF1ZGlvX2J1cy0+RnJvbUludGVybGVhdmVkKGJ1ZmZlciwgbmZyYW1lcywgU2FtcGxlRm9y bWF0VG9CeXRlc1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkpOworCisgICAgLy8gaW52b2tlIGNh bGxiYWNrCisgICAgY2FsbGJhY2stPk9uRGF0YShhdWRpb19idXMuZ2V0KCksIGJhc2U6OlRpbWVU aWNrczo6Tm93KCkgLSBkZWxheSwgMS4pOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBtZWRp YQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlv X2lucHV0LmggYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5w dXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ4NjhlMDQ2OWRi NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxl cy9zbmRpb19pbnB1dC5oCkBAIC0wLDAgKzEsOTEgQEAKKy8vIENvcHlyaWdodCAyMDEzIFRoZSBD aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291 cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBNRURJQV9BVURJT19TTkRJ T19TTkRJT19JTlBVVF9IXworI2RlZmluZSBNRURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9I XworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHNu ZGlvLmg+CisKKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisjaW5jbHVkZSAi YmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJiYXNlL21lbW9yeS93ZWFrX3B0ci5oIgorI2luY2x1 ZGUgImJhc2UvdGltZS90aW1lLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYWdjX2F1ZGlvX3N0 cmVhbS5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2lvLmgiCisjaW5jbHVkZSAibWVk aWEvYXVkaW8vYXVkaW9fZGV2aWNlX2Rlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAibWVkaWEvYmFz ZS9hdWRpb19wYXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisKK2NsYXNzIEF1ZGlv TWFuYWdlckJhc2U7CisKKy8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtIHVz aW5nIHNuZGlvKDcpCitjbGFzcyBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0gOiBwdWJsaWMgQWdjQXVk aW9TdHJlYW08QXVkaW9JbnB1dFN0cmVhbT4geworIHB1YmxpYzoKKyAgLy8gUGFzcyB0aGlzIHRv IHRoZSBjb25zdHJ1Y3RvciBpZiB5b3Ugd2FudCB0byBhdHRlbXB0IGF1dG8tc2VsZWN0aW9uCisg IC8vIG9mIHRoZSBhdWRpbyByZWNvcmRpbmcgZGV2aWNlLgorICBzdGF0aWMgY29uc3QgY2hhciBr QXV0b1NlbGVjdERldmljZVtdOworCisgIC8vIENyZWF0ZSBhIFBDTSBPdXRwdXQgc3RyZWFtIGZv ciB0aGUgU05ESU8gZGV2aWNlIGlkZW50aWZpZWQgYnkKKyAgLy8gfGRldmljZV9uYW1lfC4gSWYg dW5zdXJlIG9mIHdoYXQgdG8gdXNlIGZvciB8ZGV2aWNlX25hbWV8LCB1c2UKKyAgLy8gfGtBdXRv U2VsZWN0RGV2aWNlfC4KKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKEF1ZGlvTWFuYWdlckJhc2Uq IGF1ZGlvX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg ZGV2aWNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMm IHBhcmFtcyk7CisKKyAgflNuZGlvQXVkaW9JbnB1dFN0cmVhbSgpIG92ZXJyaWRlOworCisgIC8v IEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvSW5wdXRTdHJlYW0uCisgIGJvb2wgT3BlbigpIG92ZXJy aWRlOworICB2b2lkIFN0YXJ0KEF1ZGlvSW5wdXRDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRl OworICB2b2lkIFN0b3AoKSBvdmVycmlkZTsKKyAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOworICBk b3VibGUgR2V0TWF4Vm9sdW1lKCkgb3ZlcnJpZGU7CisgIHZvaWQgU2V0Vm9sdW1lKGRvdWJsZSB2 b2x1bWUpIG92ZXJyaWRlOworICBkb3VibGUgR2V0Vm9sdW1lKCkgb3ZlcnJpZGU7CisgIGJvb2wg SXNNdXRlZCgpIG92ZXJyaWRlOworICB2b2lkIFNldE91dHB1dERldmljZUZvckFlYyhjb25zdCBz dGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorCisg IGVudW0gU3RyZWFtU3RhdGUgeworICAgIGtDbG9zZWQsICAgICAgICAgICAgLy8gTm90IG9wZW5l ZCB5ZXQKKyAgICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBub3Qg c3RhcnRlZCB5ZXQKKyAgICBrUnVubmluZywgICAgICAgICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBw bGF5aW5nCisgICAga1N0b3BXYWl0ICAgICAgICAgICAvLyBTdG9wcGluZywgd2FpdGluZyBmb3Ig dGhlIHJlYWwtdGltZSB0aHJlYWQgdG8gZXhpdAorICB9OworCisgIC8vIEMtc3R5bGUgY2FsbC1i YWNrcworICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSk7 CisgIHN0YXRpYyB2b2lkKiBUaHJlYWRFbnRyeSh2b2lkICphcmcpOworCisgIC8vIENvbnRpbnVv dXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIGRldmljZSB0byB0aGUgY29uc3VtZXIKKyAgdm9pZCBU aHJlYWRMb29wKCk7CisgIC8vIE91ciBjcmVhdG9yLCB0aGUgYXVkaW8gbWFuYWdlciBuZWVkcyB0 byBiZSBub3RpZmllZCB3aGVuIHdlIGNsb3NlLgorICBBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2Vy OworICAvLyBQYXJhbWV0ZXJzIG9mIHRoZSBzb3VyY2UKKyAgQXVkaW9QYXJhbWV0ZXJzIHBhcmFt czsKKyAgLy8gV2Ugc3RvcmUgZGF0YSBoZXJlIGZvciBjb25zdW1lcgorICBzdGQ6OnVuaXF1ZV9w dHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKKyAgLy8gQ2FsbC1iYWNrIHRoYXQgY29uc3VtZXMgcmVj b3JkZWQgZGF0YQorICBBdWRpb0lucHV0Q2FsbGJhY2sqIGNhbGxiYWNrOyAgLy8gVmFsaWQgZHVy aW5nIGEgcmVjb3JkaW5nIHNlc3Npb24uCisgIC8vIEhhbmRsZSBvZiB0aGUgYXVkaW8gZGV2aWNl CisgIHN0cnVjdCBzaW9faGRsKiBoZGw7CisgIC8vIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0cmVh bQorICBlbnVtIFN0cmVhbVN0YXRlIHN0YXRlOworICAvLyBIaWdoIHByaW9yaXR5IHRocmVhZCBy dW5uaW5nIFRocmVhZExvb3AoKQorICBwdGhyZWFkX3QgdGhyZWFkOworICAvLyBOdW1iZXIgb2Yg ZnJhbWVzIGJ1ZmZlcmVkIGluIHRoZSBoYXJkd2FyZQorICBpbnQgaHdfZGVsYXk7CisgIC8vIFRl bXBvcmFyeSBidWZmZXIgd2hlcmUgZGF0YSBpcyBzdG9yZWQgc25kaW8tY29tcGF0aWJsZSBmb3Jt YXQKKyAgY2hhciogYnVmZmVyOworCisgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTbmRpb0F1 ZGlvSW5wdXRTdHJlYW0pOworfTsKKworfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisKKyNlbmRpZiAg Ly8gTUVESUFfQVVESU9fU05ESU9fU05ESU9fSU5QVVRfSF8KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24yNC9maWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQuY2MgYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmNjCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTY3MTlmOWFhYzhkCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5jYwpA QCAtMCwwICsxLDE4MyBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRo b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g dGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUg ImJhc2UvdGltZS90aW1lLmgiCisjaW5jbHVkZSAiYmFzZS90aW1lL2RlZmF1bHRfdGlja19jbG9j ay5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXJfYmFzZS5oIgorI2luY2x1 ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fdGltZXN0YW1wX2hlbHBlci5oIgorI2luY2x1ZGUgIm1lZGlh L2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oIgorCituYW1lc3BhY2UgbWVkaWEgeworCitzdGF0 aWMgY29uc3QgU2FtcGxlRm9ybWF0IGtTYW1wbGVGb3JtYXQgPSBrU2FtcGxlRm9ybWF0UzE2Owor Cit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9uTW92ZUNhbGxiYWNrKHZvaWQgKmFyZywg aW50IGRlbHRhKSB7CisgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2Fz dDxTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKworICBzZWxmLT5od19kZWxheSAtPSBk ZWx0YTsKK30KKwordm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpPblZvbENhbGxiYWNrKHZv aWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCkgeworICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKiBz ZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+KGFyZyk7CisKKyAgc2Vs Zi0+dm9sID0gdm9sOworfQorCit2b2lkICpTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpUaHJlYWRF bnRyeSh2b2lkICphcmcpIHsKKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRp Y19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcpOworCisgIHNlbGYtPlRocmVhZExv b3AoKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK1NuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlNuZGlv QXVkaW9PdXRwdXRTdHJlYW0oY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2Uq IG1hbmFnZXIpCisgICAgOiBtYW5hZ2VyKG1hbmFnZXIpLAorICAgICAgcGFyYW1zKHBhcmFtcyks CisgICAgICBhdWRpb19idXMoQXVkaW9CdXM6OkNyZWF0ZShwYXJhbXMpKSwKKyAgICAgIHN0YXRl KGtDbG9zZWQpLAorICAgICAgbXV0ZXgoUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUikgeworfQor CitTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjp+U25kaW9BdWRpb091dHB1dFN0cmVhbSgpIHsKKyAg aWYgKHN0YXRlICE9IGtDbG9zZWQpCisgICAgQ2xvc2UoKTsKK30KKworYm9vbCBTbmRpb0F1ZGlv T3V0cHV0U3RyZWFtOjpPcGVuKCkgeworICBzdHJ1Y3Qgc2lvX3BhciBwYXI7CisgIGludCBzaWc7 CisKKyAgaWYgKHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9M SU5FQVIgJiYKKyAgICAgIHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElP X1BDTV9MT1dfTEFURU5DWSkgeworICAgIExPRyhXQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVk aW8gZm9ybWF0LiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHNpb19pbml0cGFyKCZwYXIp OworICBwYXIucmF0ZSA9IHBhcmFtcy5zYW1wbGVfcmF0ZSgpOworICBwYXIucGNoYW4gPSBwYXJh bXMuY2hhbm5lbHMoKTsKKyAgcGFyLmJpdHMgPSBTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVs KGtTYW1wbGVGb3JtYXQpOworICBwYXIuYnBzID0gcGFyLmJpdHMgLyA4OworICBwYXIuc2lnID0g c2lnID0gcGFyLmJpdHMgIT0gOCA/IDEgOiAwOworICBwYXIubGUgPSBTSU9fTEVfTkFUSVZFOwor ICBwYXIuYXBwYnVmc3ogPSBwYXJhbXMuZnJhbWVzX3Blcl9idWZmZXIoKTsKKworICBoZGwgPSBz aW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUExBWSwgMCk7CisgIGlmIChoZGwgPT0gTlVMTCkgewor ICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IG9wZW4gYXVkaW8gZGV2aWNlLiI7CisgICAgcmV0 dXJuIGZhbHNlOworICB9CisgIGlmICghc2lvX3NldHBhcihoZGwsICZwYXIpIHx8ICFzaW9fZ2V0 cGFyKGhkbCwgJnBhcikpIHsKKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBzZXQgYXVkaW8g cGFyYW1ldGVycy4iOworICAgIGdvdG8gYmFkX2Nsb3NlOworICB9CisgIGlmIChwYXIucmF0ZSAg IT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2FtcGxlX3JhdGUoKSB8fAorICAgICAgcGFyLnBjaGFu ICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLmNoYW5uZWxzKCkgfHwKKyAgICAgIHBhci5iaXRzICAh PSAodW5zaWduZWQgaW50KVNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1h dCkgfHwKKyAgICAgIHBhci5zaWcgICAhPSAodW5zaWduZWQgaW50KXNpZyB8fAorICAgICAgKHBh ci5icHMgPiAxICYmIHBhci5sZSAhPSBTSU9fTEVfTkFUSVZFKSB8fAorICAgICAgKHBhci5iaXRz ICE9IHBhci5icHMgKiA4KSkgeworICAgIExPRyhFUlJPUikgPDwgIlVuc3VwcG9ydGVkIGF1ZGlv IHBhcmFtZXRlcnMuIjsKKyAgICBnb3RvIGJhZF9jbG9zZTsKKyAgfQorICBzdGF0ZSA9IGtTdG9w cGVkOworICB2b2xwZW5kaW5nID0gMDsKKyAgdm9sID0gMDsKKyAgYnVmZmVyID0gbmV3IGNoYXJb YXVkaW9fYnVzLT5mcmFtZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3Jt YXQpXTsKKyAgc2lvX29ubW92ZShoZGwsICZPbk1vdmVDYWxsYmFjaywgdGhpcyk7CisgIHNpb19v bnZvbChoZGwsICZPblZvbENhbGxiYWNrLCB0aGlzKTsKKyAgcmV0dXJuIHRydWU7CisgYmFkX2Ns b3NlOgorICBzaW9fY2xvc2UoaGRsKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNuZGlv QXVkaW9PdXRwdXRTdHJlYW06OkNsb3NlKCkgeworICBpZiAoc3RhdGUgPT0ga0Nsb3NlZCkKKyAg ICByZXR1cm47CisgIGlmIChzdGF0ZSA9PSBrUnVubmluZykKKyAgICBTdG9wKCk7CisgIHN0YXRl ID0ga0Nsb3NlZDsKKyAgZGVsZXRlIFtdIGJ1ZmZlcjsKKyAgc2lvX2Nsb3NlKGhkbCk7CisgIG1h bmFnZXItPlJlbGVhc2VPdXRwdXRTdHJlYW0odGhpcyk7ICAvLyBDYWxscyB0aGUgZGVzdHJ1Y3Rv cgorfQorCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlN0YXJ0KEF1ZGlvU291cmNlQ2Fs bGJhY2sqIGNhbGxiYWNrKSB7CisgIHN0YXRlID0ga1J1bm5pbmc7CisgIGh3X2RlbGF5ID0gMDsK KyAgc291cmNlID0gY2FsbGJhY2s7CisgIHNpb19zdGFydChoZGwpOworICBpZiAocHRocmVhZF9j cmVhdGUoJnRocmVhZCwgTlVMTCwgJlRocmVhZEVudHJ5LCB0aGlzKSAhPSAwKSB7CisgICAgTE9H KEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFkLiI7CisgICAgc2lv X3N0b3AoaGRsKTsKKyAgICBzdGF0ZSA9IGtTdG9wcGVkOworICB9Cit9CisKK3ZvaWQgU25kaW9B dWRpb091dHB1dFN0cmVhbTo6U3RvcCgpIHsKKyAgaWYgKHN0YXRlID09IGtTdG9wcGVkKQorICAg IHJldHVybjsKKyAgc3RhdGUgPSBrU3RvcFdhaXQ7CisgIHB0aHJlYWRfam9pbih0aHJlYWQsIE5V TEwpOworICBzaW9fc3RvcChoZGwpOworICBzdGF0ZSA9IGtTdG9wcGVkOworfQorCit2b2lkIFNu ZGlvQXVkaW9PdXRwdXRTdHJlYW06OlNldFZvbHVtZShkb3VibGUgdikgeworICBwdGhyZWFkX211 dGV4X2xvY2soJm11dGV4KTsKKyAgdm9sID0gdiAqIFNJT19NQVhWT0w7CisgIHZvbHBlbmRpbmcg PSAxOworICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOworfQorCit2b2lkIFNuZGlvQXVk aW9PdXRwdXRTdHJlYW06OkdldFZvbHVtZShkb3VibGUqIHYpIHsKKyAgcHRocmVhZF9tdXRleF9s b2NrKCZtdXRleCk7CisgICp2ID0gdm9sICogKDEuIC8gU0lPX01BWFZPTCk7CisgIHB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZtdXRleCk7Cit9CisKKy8vIFRoaXMgc3RyZWFtIGlzIGFsd2F5cyB1c2Vk IHdpdGggc3ViIHNlY29uZCBidWZmZXIgc2l6ZXMsIHdoZXJlIGl0J3MKKy8vIHN1ZmZpY2llbnQg dG8gc2ltcGx5IGFsd2F5cyBmbHVzaCB1cG9uIFN0YXJ0KCkuCit2b2lkIFNuZGlvQXVkaW9PdXRw dXRTdHJlYW06OkZsdXNoKCkge30KKwordm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpUaHJl YWRMb29wKHZvaWQpIHsKKyAgaW50IGF2YWlsLCBjb3VudCwgcmVzdWx0OworCisgIHdoaWxlIChz dGF0ZSA9PSBrUnVubmluZykgeworICAgIC8vIFVwZGF0ZSB2b2x1bWUgaWYgbmVlZGVkCisgICAg cHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7CisgICAgaWYgKHZvbHBlbmRpbmcpIHsKKyAgICAg IHZvbHBlbmRpbmcgPSAwOworICAgICAgc2lvX3NldHZvbChoZGwsIHZvbCk7CisgICAgfQorICAg IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisKKyAgICAvLyBHZXQgZGF0YSB0byBwbGF5 CisgICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGRlbGF5ID0gQXVkaW9UaW1lc3RhbXBIZWxwZXI6 OkZyYW1lc1RvVGltZShod19kZWxheSwKKwlwYXJhbXMuc2FtcGxlX3JhdGUoKSk7CisgICAgY291 bnQgPSBzb3VyY2UtPk9uTW9yZURhdGEoZGVsYXksIGJhc2U6OlRpbWVUaWNrczo6Tm93KCksIDAs IGF1ZGlvX2J1cy5nZXQoKSk7CisgICAgYXVkaW9fYnVzLT5Ub0ludGVybGVhdmVkKGNvdW50LCBT YW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KSwgYnVmZmVyKTsKKyAg ICBpZiAoY291bnQgPT0gMCkgeworICAgICAgLy8gV2UgaGF2ZSB0byBzdWJtaXQgc29tZXRoaW5n IHRvIHRoZSBkZXZpY2UKKyAgICAgIGNvdW50ID0gYXVkaW9fYnVzLT5mcmFtZXMoKTsKKyAgICAg IG1lbXNldChidWZmZXIsIDAsIGNvdW50ICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBs ZUZvcm1hdCkpOworICAgICAgTE9HKFdBUk5JTkcpIDw8ICJObyBkYXRhIHRvIHBsYXksIHJ1bm5p bmcgZW1wdHkgY3ljbGUuIjsKKyAgICB9CisKKyAgICAvLyBTdWJtaXQgZGF0YSB0byB0aGUgZGV2 aWNlCisgICAgYXZhaWwgPSBjb3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVG b3JtYXQpOworICAgIHJlc3VsdCA9IHNpb193cml0ZShoZGwsIGJ1ZmZlciwgYXZhaWwpOworICAg IGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgTE9HKFdBUk5JTkcpIDw8ICJBdWRpbyBkZXZpY2Ug ZGlzY29ubmVjdGVkLiI7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgaGFy ZHdhcmUgcG9pbnRlcgorICAgIGh3X2RlbGF5ICs9IGNvdW50OworICB9Cit9CisKK30gIC8vIG5h bWVzcGFjZSBtZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlv LWZpbGVzL3NuZGlvX291dHB1dC5oIGIvc3JjcGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLWZp bGVzL3NuZGlvX291dHB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZWFkMjIwY2E5NmU3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L2Zp bGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oCkBAIC0wLDAgKzEsODYgQEAKKy8vIENvcHly aWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpZm5k ZWYgTUVESUFfQVVESU9fU05ESU9fU05ESU9fT1VUUFVUX0hfCisjZGVmaW5lIE1FRElBX0FVRElP X1NORElPX1NORElPX09VVFBVVF9IXworCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUg PHNuZGlvLmg+CisKKyNpbmNsdWRlICJiYXNlL3RpbWUvdGlja19jbG9jay5oIgorI2luY2x1ZGUg ImJhc2UvdGltZS90aW1lLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKwor bmFtZXNwYWNlIG1lZGlhIHsKKworY2xhc3MgQXVkaW9NYW5hZ2VyQmFzZTsKKworLy8gSW1wbGVt ZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcgc25kaW8oNykKK2NsYXNzIFNuZGlv QXVkaW9PdXRwdXRTdHJlYW0gOiBwdWJsaWMgQXVkaW9PdXRwdXRTdHJlYW0geworIHB1YmxpYzoK KyAgLy8gVGhlIG1hbmFnZXIgaXMgY3JlYXRpbmcgdGhpcyBvYmplY3QKKyAgU25kaW9BdWRpb091 dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICBBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyKTsKKyAgdmlydHVhbCB+U25kaW9B dWRpb091dHB1dFN0cmVhbSgpOworCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0 U3RyZWFtLgorICBib29sIE9wZW4oKSBvdmVycmlkZTsKKyAgdm9pZCBDbG9zZSgpIG92ZXJyaWRl OworICB2b2lkIFN0YXJ0KEF1ZGlvU291cmNlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsK KyAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7CisgIHZvaWQgU2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUp IG92ZXJyaWRlOworICB2b2lkIEdldFZvbHVtZShkb3VibGUqIHZvbHVtZSkgb3ZlcnJpZGU7Cisg IHZvaWQgRmx1c2goKSBvdmVycmlkZTsKKworICBmcmllbmQgdm9pZCBzbmRpb19vbm1vdmUodm9p ZCAqYXJnLCBpbnQgZGVsdGEpOworICBmcmllbmQgdm9pZCBzbmRpb19vbnZvbCh2b2lkICphcmcs IHVuc2lnbmVkIGludCB2b2wpOworICBmcmllbmQgdm9pZCAqc25kaW9fdGhyZWFkc3RhcnQodm9p ZCAqYXJnKTsKKworIHByaXZhdGU6CisgIGVudW0gU3RyZWFtU3RhdGUgeworICAgIGtDbG9zZWQs ICAgICAgICAgICAgLy8gTm90IG9wZW5lZCB5ZXQKKyAgICBrU3RvcHBlZCwgICAgICAgICAgIC8v IERldmljZSBvcGVuZWQsIGJ1dCBub3Qgc3RhcnRlZCB5ZXQKKyAgICBrUnVubmluZywgICAgICAg ICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5aW5nCisgICAga1N0b3BXYWl0ICAgICAgICAgICAv LyBTdG9wcGluZywgd2FpdGluZyBmb3IgdGhlIHJlYWwtdGltZSB0aHJlYWQgdG8gZXhpdAorICB9 OworCisgIC8vIEMtc3R5bGUgY2FsbC1iYWNrcworICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFj ayh2b2lkICphcmcsIGludCBkZWx0YSk7CisgIHN0YXRpYyB2b2lkIE9uVm9sQ2FsbGJhY2sodm9p ZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9sKTsKKyAgc3RhdGljIHZvaWQqIFRocmVhZEVudHJ5KHZv aWQgKmFyZyk7CisKKyAgLy8gQ29udGludW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUgcHJvZHVj ZXIgdG8gdGhlIGRldmljZQorICB2b2lkIFRocmVhZExvb3Aodm9pZCk7CisKKyAgLy8gT3VyIGNy ZWF0b3IsIHRoZSBhdWRpbyBtYW5hZ2VyIG5lZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xv c2UuCisgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7CisgIC8vIFBhcmFtZXRlcnMgb2YgdGhl IHNvdXJjZQorICBBdWRpb1BhcmFtZXRlcnMgcGFyYW1zOworICAvLyBTb3VyY2Ugc3RvcmVzIGRh dGEgaGVyZQorICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKKyAgLy8gQ2Fs bC1iYWNrIHRoYXQgcHJvZHVjZXMgZGF0YSB0byBwbGF5CisgIEF1ZGlvU291cmNlQ2FsbGJhY2sq IHNvdXJjZTsKKyAgLy8gSGFuZGxlIG9mIHRoZSBhdWRpbyBkZXZpY2UKKyAgc3RydWN0IHNpb19o ZGwqIGhkbDsKKyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RyZWFtCisgIGVudW0gU3RyZWFt U3RhdGUgc3RhdGU7CisgIC8vIEhpZ2ggcHJpb3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9v cCgpCisgIHB0aHJlYWRfdCB0aHJlYWQ7CisgIC8vIFByb3RlY3RzIHZvbCwgdm9scGVuZGluZyBh bmQgaHdfZGVsYXkKKyAgcHRocmVhZF9tdXRleF90IG11dGV4OworICAvLyBDdXJyZW50IHZvbHVt ZSBpbiB0aGUgMC4uU0lPX01BWFZPTCByYW5nZQorICBpbnQgdm9sOworICAvLyBTZXQgdG8gMSBp ZiB2b2x1bWVzIG11c3QgYmUgcmVmcmVzaGVkIGluIHRoZSByZWFsdGltZSB0aHJlYWQKKyAgaW50 IHZvbHBlbmRpbmc7CisgIC8vIE51bWJlciBvZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhhcmR3 YXJlCisgIGludCBod19kZWxheTsKKyAgLy8gVGVtcG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRhIGlz IHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZvcm1hdAorICBjaGFyKiBidWZmZXI7CisKKyAgRElT QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0pOworfTsKKworfSAg Ly8gbmFtZXNwYWNlIG1lZGlhCisKKyNlbmRpZiAgLy8gTUVESUFfQVVESU9fU05ESU9fU05ESU9f T1VUUFVUX0hfCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8tcGF0 Y2hlcy9tZWRpYV9hdWRpb19saW51eF9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLnBhdGNoIGIvc3Jj cGtncy9lbGVjdHJvbjI0L2ZpbGVzL3NuZGlvLXBhdGNoZXMvbWVkaWFfYXVkaW9fbGludXhfYXVk aW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmNmOGU4MWIxMWQ2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ry b24yNC9maWxlcy9zbmRpby1wYXRjaGVzL21lZGlhX2F1ZGlvX2xpbnV4X2F1ZGlvX21hbmFnZXJf bGludXguY2MucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorZGlmZiAtLWdpdCBhL2Nocm9taXVtL21l ZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MgYi9jaHJvbWl1bS9tZWRpYS9h dWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjCitpbmRleCA1ZDcwMzU0OTM3Mi4uOWU2 MGI0MGM3NDkgMTAwNjQ0CistLS0gbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFuYWdlcl9saW51 eC5jYworKysrIG1lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MKK0BAIC0y MCw2ICsyMCwxMCBAQAorICNpbmNsdWRlICJtZWRpYS9hdWRpby9wdWxzZS9hdWRpb19tYW5hZ2Vy X3B1bHNlLmgiCisgI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3B1bHNlL3B1bHNlX3V0aWwuaCIKKyAj ZW5kaWYKKysjaWYgZGVmaW5lZChVU0VfU05ESU8pCisrI2luY2x1ZGUgPHNuZGlvLmg+CisrI2lu Y2x1ZGUgIm1lZGlhL2F1ZGlvL29wZW5ic2QvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmgiCisrI2Vu ZGlmCisgCisgbmFtZXNwYWNlIG1lZGlhIHsKKyAKK0BAIC0yNyw3ICszMSw4IEBAIGVudW0gTGlu dXhBdWRpb0lPIHsKKyAgIGtQdWxzZSwKKyAgIGtBbHNhLAorICAga0NyYXMsCistICBrQXVkaW9J T01heCA9IGtDcmFzICAvLyBNdXN0IGFsd2F5cyBiZSBlcXVhbCB0byBsYXJnZXN0IGxvZ2dlZCBl bnRyeS4KKysgIGtTbmRpbywKKysgIGtBdWRpb0lPTWF4ID0ga1NuZGlvICAvLyBNdXN0IGFsd2F5 cyBiZSBlcXVhbCB0byBsYXJnZXN0IGxvZ2dlZCBlbnRyeS4KKyB9OworIAorIHN0ZDo6dW5pcXVl X3B0cjxtZWRpYTo6QXVkaW9NYW5hZ2VyPiBDcmVhdGVBdWRpb01hbmFnZXIoCitAQCAtNDEsNiAr NDYsMTcgQEAgc3RkOjp1bmlxdWVfcHRyPG1lZGlhOjpBdWRpb01hbmFnZXI+IENyZWF0ZUF1ZGlv TWFuYWdlcigKKyAgIH0KKyAjZW5kaWYKKyAKKysjaWYgZGVmaW5lZChVU0VfU05ESU8pCisrICBz dHJ1Y3Qgc2lvX2hkbCAqIGhkbCA9IE5VTEw7CisrICBpZiAoKGhkbD1zaW9fb3BlbihTSU9fREVW QU5ZLCBTSU9fUExBWSwgMSkpICE9IE5VTEwpIHsKKysgICAgc2lvX2Nsb3NlKGhkbCk7CisrICAg IFVNQV9ISVNUT0dSQU1fRU5VTUVSQVRJT04oIk1lZGlhLkxpbnV4QXVkaW9JTyIsIGtTbmRpbywg a0F1ZGlvSU9NYXggKzEpOworKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb01hbmFn ZXJPcGVuQlNEPihzdGQ6Om1vdmUoYXVkaW9fdGhyZWFkKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0b3J5KTsKKysgIH0KKysg IERWTE9HKDEpIDw8ICJTbmRpbyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBPUyI7CisrI2VuZGlm CisrCisgI2lmIGRlZmluZWQoVVNFX1BVTFNFQVVESU8pCisgICBwYV90aHJlYWRlZF9tYWlubG9v cCogcGFfbWFpbmxvb3AgPSBudWxscHRyOworICAgcGFfY29udGV4dCogcGFfY29udGV4dCA9IG51 bGxwdHI7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8tcGF0Y2hl cy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJTEQuZ24ucGF0Y2ggYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFf QlVJTEQuZ24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5l YzYwNDAwMjY2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMv c25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJTEQuZ24ucGF0Y2gK QEAgLTAsMCArMSwxMiBAQAorLS0tIG1lZGlhL0JVSUxELmduCTIwMjAtMDMtMjQgMTA6MTY6MzAu MDAwMDAwMDAwICswMTAwCisrKysgLQkyMDIwLTA0LTA2IDE0OjMyOjI3Ljk2MDgxNzUxMyArMDIw MAorQEAgLTY1LDYgKzY1LDkgQEAKKyAgIGlmICh1c2VfY3JhcykgeworICAgICBkZWZpbmVzICs9 IFsgIlVTRV9DUkFTIiBdCisgICB9CisrICBpZiAodXNlX3NuZGlvKSB7CisrICAgIGRlZmluZXMg Kz0gWyAiVVNFX1NORElPIiBdCisrICB9CisgfQorIAorICMgSW50ZXJuYWwgZ3JvdXBpbmcgb2Yg dGhlIGNvbmZpZ3MgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgc3ViLWZvbGRlcnMgaGF2aW5nIHRoZWly CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNf M3JkcGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24ucGF0Y2ggYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFf YXVkaW9fQlVJTEQuZ24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5jODU2ZGUwYmYyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQv ZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJ TEQuZ24ucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorLS0tIG1lZGlhL2F1ZGlvL0JVSUxELmduCTIw MjAtMDMtMjQgMTA6MTY6MzAuMDAwMDAwMDAwICswMTAwCisrKysgLQkyMDIwLTA0LTA2IDE0OjMx OjI4Ljg3MTQ1MDIxNyArMDIwMAorQEAgLTIzMiw5ICsyMzIsMTkgQEAKKyAgICAgZGVwcyArPSBb ICIvL21lZGlhL2Jhc2UvYW5kcm9pZDptZWRpYV9qbmlfaGVhZGVycyIgXQorICAgfQorIAorLSAg aWYgKGlzX2xpbnV4KSB7CisrICBpZiAoaXNfbGludXgpIHsKKyAgICAgc291cmNlcyArPSBbICJs aW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjIiBdCisgICB9CisrICBpZiAodXNlX3NuZGlvKSB7 CisrICAgIGxpYnMgKz0gWyAic25kaW8iIF0KKysgICAgc291cmNlcyArPSBbCisrICAgICAgIm9w ZW5ic2QvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmNjIiwKKysgICAgICAic25kaW8vc25kaW9faW5w dXQuY2MiLAorKyAgICAgICJzbmRpby9zbmRpb19pbnB1dC5oIiwKKysgICAgICAic25kaW8vc25k aW9fb3V0cHV0LmNjIiwKKysgICAgICAic25kaW8vc25kaW9fb3V0cHV0LmgiCisrICAgXQorKyB9 CisgCisgICBpZiAodXNlX2Fsc2EpIHsKKyAgICAgbGlicyArPSBbICJhc291bmQiIF0KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0 eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0aW9ucy5nbmkucGF0Y2ggYi9zcmNwa2dzL2VsZWN0 cm9uMjQvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVk aWFfX29wdGlvbnMuZ25pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMTQ4MDdkOGUxZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0 L2ZpbGVzL3NuZGlvLXBhdGNoZXMvc3JjXzNyZHBhcnR5X2Nocm9taXVtX21lZGlhX21lZGlhX19v cHRpb25zLmduaS5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gbWVkaWEvbWVkaWFfb3B0aW9u cy5nbmkJMjAyMC0wMy0yNCAxMDoxNjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAtCTIwMjAtMDQt MDYgMTQ6Mjk6MjIuOTU4NjMwNzgzICswMjAwCitAQCAtMTE0LDYgKzExNCw5IEBACisgICAjIEVu YWJsZXMgcnVudGltZSBzZWxlY3Rpb24gb2YgQUxTQSBsaWJyYXJ5IGZvciBhdWRpby4KKyAgIHVz ZV9hbHNhID0gZmFsc2UKKyAKKysgICMgRW5hYmxlcyBydW50aW1lIHNlbGVjdGlvbiBvZiBzbmRp byBsaWJyYXJ5IGZvciBhdWRpby4KKysgIHVzZV9zbmRpbyA9IGZhbHNlCisrCisgICAjIEFsc2Eg c2hvdWxkIGJlIHVzZWQgb24gbm9uLUFuZHJvaWQsIG5vbi1NYWMgUE9TSVggc3lzdGVtcy4KKyAg ICMgQWxzYSBzaG91bGQgYmUgdXNlZCBvbiBkZXNrdG9wIENocm9tZWNhc3QgYW5kIGF1ZGlvLW9u bHkgQ2hyb21lY2FzdCBidWlsZHMuCisgICBpZiAoaXNfcG9zaXggJiYgIWlzX2FuZHJvaWQgJiYg IWlzX21hYyAmJgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlIGIvc3Jj cGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uODcyNmE5ZTIwZjkzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJv bjI0L3RlbXBsYXRlCkBAIC0wLDAgKzEsNDMzIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVj dHJvbjI0JworcGtnbmFtZT1lbGVjdHJvbjI0Cit2ZXJzaW9uPTI0LjIuMAorcmV2aXNpb249MQor X25vZGV2ZXI9MTguMTQuMAorX2Nocm9taXVtdmVyPTExMi4wLjU2MTUuMTY1CithcmNocz0ieDg2 XzY0KiBhYXJjaDY0KiIKK2NyZWF0ZV93cmtzcmM9eWVzCitidWlsZF93cmtzcmM9InNyYyIKK2hv c3RtYWtlZGVwZW5kcz0iJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQiKSBweXRob24gcGtnY29u ZiBwZXJsIGdwZXJmIGJpc29uIG5pbmphIG5vZGVqcyBod2lkcworIGxpYndlYnAtZGV2ZWwgZnJl ZXR5cGUtZGV2ZWwgaGFyZmJ1enotZGV2ZWwgbGlicG5nLWRldmVsIG5zcy1kZXZlbCB3aGljaCBn aXQgbGliZXZlbnQtZGV2ZWwKKyBwY2l1dGlscy1kZXZlbCAgZmZtcGVnLWRldmVsIGxpYnhtbDIt ZGV2ZWwgbGliZ2xpYi1kZXZlbCB5YXJuIG9wZW5qZGsgbGlieHNsdC1kZXZlbAorIG9wdXMtZGV2 ZWwgbGliWGN1cnNvci1kZXZlbCBsaWJYY29tcG9zaXRlLWRldmVsIGxpYlh0c3QtZGV2ZWwgbGli WHJhbmRyLWRldmVsIGxpYlhTY3JuU2F2ZXItZGV2ZWwKKyBhbHNhLWxpYi1kZXZlbCByZTItZGV2 ZWwgc25hcHB5LWRldmVsIG1pdC1rcmI1LWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNl YXVkaW8tZGV2ZWwpCisgJCh2b3B0X2lmIHNuZGlvIHNuZGlvLWRldmVsKSBqcSIKK21ha2VkZXBl bmRzPSJsaWJwbmctZGV2ZWwgZ3RrKy1kZXZlbCBndGsrMy1kZXZlbCBuc3MtZGV2ZWwgcGNpdXRp bHMtZGV2ZWwKKyBsaWJYaS1kZXZlbCBsaWJnY3J5cHQtZGV2ZWwgbGliZ25vbWUta2V5cmluZy1k ZXZlbCBjdXBzLWRldmVsIGVsZnV0aWxzLWRldmVsCisgbGliWGNvbXBvc2l0ZS1kZXZlbCBzcGVl Y2gtZGlzcGF0Y2hlci1kZXZlbCBsaWJYcmFuZHItZGV2ZWwgbWl0LWtyYjUtZGV2ZWwKKyBsaWJY U2NyblNhdmVyLWRldmVsIGFsc2EtbGliLWRldmVsIHNuYXBweS1kZXZlbCBsaWJkcm0tZGV2ZWwK KyBsaWJ4bWwyLWRldmVsIGxpYnhzbHQtZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2Vh dWRpby1kZXZlbCkgbGliZXhpZi1kZXZlbAorIGxpYlhjdXJzb3ItZGV2ZWwgbGliZmxhYy1kZXZl bCBzcGVleC1kZXZlbCBsaWJtdHAtZGV2ZWwgbGlid2VicC1kZXZlbAorIGxpYmpwZWctdHVyYm8t ZGV2ZWwgbGliZXZlbnQtZGV2ZWwganNvbi1jLWRldmVsIGhhcmZidXp6LWRldmVsCisgbWluaXpp cC1kZXZlbCBqc29uY3BwLWRldmVsIHpsaWItZGV2ZWwgbGliY2FwLWRldmVsIGxpYlhkYW1hZ2Ut ZGV2ZWwKKyByZTItZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBmcmVldHlwZS1kZXZlbCBvcHVzLWRl dmVsIGxpYmZmaS1kZXZlbAorICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkgZmZtcGVnLWRl dmVsIGxpYnZhLWRldmVsIGxpYnV2LWRldmVsIGMtYXJlcy1kZXZlbCBsaWJub3RpZnktZGV2ZWwK KyAkKHZvcHRfaWYgcGlwZXdpcmUgcGlwZXdpcmUtZGV2ZWwpIHdheWxhbmQtZGV2ZWwgbGliY3Vy bC1kZXZlbCBsaWJ4c2htZmVuY2UtZGV2ZWwiCitzaG9ydF9kZXNjPSJDcm9zcyBwbGF0Zm9ybSBh cHBsaWNhdGlvbiBmcmFtZXdvcmsgYmFzZWQgb24gd2ViIHRlY2hub2xvZ2llcyIKK21haW50YWlu ZXI9IkpvaG4gPG1lQGpvaG5ueW5hdG9yLmRldj4iCitsaWNlbnNlPSJCU0QtMy1DbGF1c2UiCito b21lcGFnZT0iaHR0cHM6Ly9lbGVjdHJvbmpzLm9yZyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRo dWIuY29tL2VsZWN0cm9uL2VsZWN0cm9uL2FyY2hpdmUvdiR2ZXJzaW9uLnRhci5nej5lbGVjdHJv bi0ke3ZlcnNpb259LnRhci5negorIGh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBp cy5jb20vY2hyb21pdW0tYnJvd3Nlci1vZmZpY2lhbC9jaHJvbWl1bS0kX2Nocm9taXVtdmVyLnRh ci54egorIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9hcmNoaXZlL3YkX25vZGV2ZXIu dGFyLmd6Pm5vZGUtJF9ub2RldmVyLnRhci5neiIKK2NoZWNrc3VtPSIwZGQxNDM0ZmY5ZTZmZjhm MjY2ZDgyZmY0MmQ5MjI0MTQwODhiNDk0MGYwZGZjYTRkNWQyMjA2MmZmOTRkM2Q2CisgMTY4YzYy ZmVhOWY0MjhmOTlmYmY5NjdmMzZhNzVlZTVkYTE2MDQyOWUzYTViODZiZjAyMTg4YzVmZTdjNzlm ZAorIDMxYmJjY2RmZjczMjY5YmFlYmNjOWYzMmMyZmZlNDI4ZjI4YmU3OTg0MTUyN2M2M2U5NWRh OTNlOGM2MzA4MjkiCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCXBwYzY0Ki1t dXNsKSBtYWtlZGVwZW5kcys9IiBsaWJ1Y29udGV4dC1kZXZlbCIgOzsKK2VzYWMKKworbm9fZ2Vu ZXJpY19wa2djb25maWdfbGluaz15ZXMKK2xpYjMyZGlzYWJsZWQ9eWVzCitub3BpZT15ZXMgICMg Y29udGFpbnMgdG9vbHMgdGhhdCBhcmUgbm90IFBJRSwgZW5hYmxlcyBQSUUgaXRzZWxmCisKK2J1 aWxkX29wdGlvbnM9InB1bHNlYXVkaW8gc25kaW8gY2xhbmcgcGlwZXdpcmUiCitidWlsZF9vcHRp b25zX2RlZmF1bHQ9InB1bHNlYXVkaW8gY2xhbmcgcGlwZXdpcmUiCisKKyNpZiBbICIkYnVpbGRf b3B0aW9uX2NsYW5nIiBdOyB0aGVuCitub2Nyb3NzPSJZZXMiCisjZWxpZiBbICIke1hCUFNfVEFS R0VUX01BQ0hJTkUlJS1tdXNsfSIgPSAiYWFyY2g2NCIgXTsgdGhlbgorIwlicm9rZW49IkZhbGxz IGFwYXJ0IGF0IHJ1bnRpbWUgd2hlbiBjb21waWxlZCB3aXRoIGdjYyIKKyNmaQorCitfYnVpbGR0 eXBlPVJlbGVhc2UKK19pc19kZWJ1Zz1mYWxzZQorCitDRkxBR1M9Ii1Xbm8tdW5rbm93bi13YXJu aW5nLW9wdGlvbiAtZlBJQyIKK0NYWEZMQUdTPSItV25vLXVua25vd24td2FybmluZy1vcHRpb24g LWZQSUMiCisKK19hcHBseV9wYXRjaCgpIHsKKwlsb2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFz ZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIuJHtwbmFtZX1fZG9uZSIgXTsgdGhlbgorCQlpZiBb IC1mICIkezJ9LmFyZ3MiIF07IHRoZW4KKwkJCWFyZ3M9JCg8IiR7Mn0uYXJncyIpCisJCWZpCisJ CW1zZ19ub3JtYWwgIiRwa2d2ZXI6IHBhdGNoaW5nOiAke3BuYW1lfS5cbiIKKwkJcGF0Y2ggLU4g JGFyZ3MgLWkgJDIKKwkJdG91Y2ggLiR7cG5hbWV9X2RvbmUKKwlmaQorfQorCitfZ2l0X2FtKCkg eworCWxvY2FsIHBuYW1lPSIkKGJhc2VuYW1lICQxKSIKKworCWlmIFsgISAtZiAiLiR7cG5hbWV9 X2RvbmUiIF07IHRoZW4KKwkJbXNnX25vcm1hbCAiJHBrZ3ZlcjogcGF0Y2hpbmc6ICR7cG5hbWV9 LlxuIgorCQlnaXQgLWMgJ3VzZXIubmFtZT1FbGVjdHJvbiBidWlsZCcgLWMgJ3VzZXIuZW1haWw9 ZWxlY3Ryb25AZWJ1aWxkJyBcCisJCQlhbSAtLWV4Y2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3Rv b2xzLyoqIiBcCisJCQktLWV4Y2x1ZGUgInRlc3QvbWpzdW5pdC8qKiIgLS1leGNsdWRlICJjb250 ZW50L3Rlc3QvKioiIFwKKwkJCS0tZXhjbHVkZSAidGVzdC9jY3Rlc3QvKioiIC0tZXhjbHVkZSAi dGVzdC91bml0dGVzdHMvKioiIFwKKwkJCS0tZXhjbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvd2Vi X3Rlc3RzLyoqIiBcCisJCQktLWV4Y2x1ZGUgImNocm9tZS90ZXN0LyoqIiBcCisJCQkkMQorCQl0 b3VjaCAuJHtwbmFtZX1fZG9uZQorCWZpCit9CisKKworX2dldF9jaHJvbWl1bV9hcmNoKCkgewor CWNhc2UgIiQxIiBpbgorCQl4ODZfNjQqKSBlY2hvIHg2NCA7OworCQlpNjg2KikgZWNobyB4ODYg OzsKKwkJYXJtKikgZWNobyBhcm0gOzsKKwkJYWFyY2g2NCopIGVjaG8gYXJtNjQgOzsKKwkJcHBj NjQqKSBlY2hvIHBwYzY0IDs7CisJCXBwYyopIGVjaG8gcHBjIDs7CisJCW1pcHNlbCopIGVjaG8g bWlwc2VsIDs7CisJCW1pcHMqKSBlY2hvIG1pcHMgOzsKKwkJKikgbXNnX2Vycm9yICIkcGtndmVy OiBjYW5ub3QgYmUgY29tcGlsZWQgZm9yICR7WEJQU19UQVJHRVRfTUFDSElORX0uXG4iIDs7CisJ ZXNhYworfQorCitwb3N0X2V4dHJhY3QoKSB7CisJbXYgY2hyb21pdW0tJHtfY2hyb21pdW12ZXJ9 IHNyYworCW1rZGlyIC1wIHNyYy90aGlyZF9wYXJ0eS8KKwltdiBub2RlLSRfbm9kZXZlciBzcmMv dGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZQorCW12IGVsZWN0cm9uLSR7dmVyc2lvbn0gc3JjL2Vs ZWN0cm9uCit9CisKK19naXRfaW5pdCgpIHsKKwlyZXBvcGF0aD0iJDEiCisJY2QgIiR3cmtzcmMi LyIkcmVwb3BhdGgiCisJZ2l0IGluaXQgLXEKKwlnaXQgY29uZmlnICJnYy5hdXRvIiAwCisJaWYg WyAiJHJlcG9wYXRoIiAhPSAic3JjIiBdOyB0aGVuCisJCWVjaG8gIi8ke3JlcG9wYXRoI3NyYy99 IiA+PiAiJHdya3NyYy8kYnVpbGRfd3Jrc3JjLy5naXRpZ25vcmUiCisJZmkKKwlnaXQgYWRkIC4K KwlnaXQgLWMgJ3VzZXIubmFtZT1FbGVjdHJvbiBidWlsZCcgLWMgJ3VzZXIuZW1haWw9ZWxlY3Ry b25AZWJ1aWxkJyBcCisJCWNvbW1pdCAtcSAtbSAiLiIgfHwgdHJ1ZQorCit9CisKK3Bvc3RfcGF0 Y2goKSB7CisJY2QgJHdya3NyYworCWZvciB4IGluICRGSUxFU0RJUi9wYXRjaGVzLyoucGF0Y2g7 IGRvCisJCWNhc2UgIiR7eCMjKi99IiBpbgorCQkJZWxlY3Ryb24qLnBhdGNoKQorCQkJCWNkIHNy Yy9lbGVjdHJvbgorCQkJCV9hcHBseV9wYXRjaCAtcDEgIiR4IgorCQkJCWNkICIkd3Jrc3JjIjs7 CisJCWVzYWMKKwlkb25lCisKKwkjIFNpZ2gsIGVsZWN0cm9uIHVzZXMgZ2l0IGFtLi4uCisJaWYg WyAhIC1mICIuZWxlY3Ryb25fcGF0Y2hlc19kb25lIiBdOyB0aGVuCisJbXYgc3JjL2VsZWN0cm9u L3BhdGNoZXMvY29uZmlnLmpzb24gY29uZmlnLmpzb24ub2xkCisJanEgJ2RlbCguInNyYy9lbGVj dHJvbi9wYXRjaGVzL01hbnRsZSIsIC4ic3JjL2VsZWN0cm9uL3BhdGNoZXMvUmVhY3RpdmVPYmpD IiwKKwkJLiJzcmMvZWxlY3Ryb24vcGF0Y2hlcy9zcXVpcnJlbC5tYWMiLCAuInNyYy9lbGVjdHJv bi9wYXRjaGVzL25hbiIpJyBcCisJCWNvbmZpZy5qc29uLm9sZCA+IHNyYy9lbGVjdHJvbi9wYXRj aGVzL2NvbmZpZy5qc29uCisKKwlweXRob24yIHNyYy9lbGVjdHJvbi9zY3JpcHQvbGlzdF9wYXRj aF90YXJnZXRzLnB5IHNyYy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZpZy5qc29uIHwgd2hpbGUgcmVh ZCAtciByZXBvcGF0aDsgZG8KKwkJX2dpdF9pbml0ICRyZXBvcGF0aAkKKwlkb25lCisJX2dpdF9p bml0ICR3cmtzcmMvc3JjL2VsZWN0cm9uCisJY2QgJHdya3NyYworCisJZm9yIHggaW4gJEZJTEVT RElSL2Nocm9taXVtLXVwc3RyZWFtLXBhdGNoZXMvKi5wYXRjaDsgZG8KKwkJWyAtZiAkeCBdIHx8 IGNvbnRpbnVlCisJCWNkIHNyYworCQlfZ2l0X2FtICIkeCIKKwkJY2QgIiR3cmtzcmMiCisJZG9u ZQorCisJcHl0aG9uMiBzcmMvZWxlY3Ryb24vc2NyaXB0L2FwcGx5X2FsbF9wYXRjaGVzLnB5IHNy Yy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZpZy5qc29uCisJdG91Y2ggLmVsZWN0cm9uX3BhdGNoZXNf ZG9uZQorCWZpCisKKwlmb3IgeCBpbiAkRklMRVNESVIvcGF0Y2hlcy8qOyBkbworCQljYXNlICIk e3gjIyovfSIgaW4KKwkJCWNocm9taXVtKi5wYXRjaCkKKwkJCQljZCBzcmMKKwkJCQlfYXBwbHlf cGF0Y2ggLXAxICIkeCIKKwkJCQljZCAiJHdya3NyYyI7OworCQllc2FjCisJZG9uZQorCisJaWYg WyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KKwlmb3IgeCBpbiAkRklMRVNE SVIvbXVzbC1wYXRjaGVzLyo7IGRvCisJCWNhc2UgIiR7eCMjKi99IiBpbgorCQkJY2hyb21pdW0q LnBhdGNoKQorCQkJCWNkIHNyYworCQkJCV9hcHBseV9wYXRjaCAtcDAgIiR4IgorCQkJCWNkICIk d3Jrc3JjIjs7CisJCQllbGVjdHJvbioucGF0Y2gpCisJCQkJY2Qgc3JjL2VsZWN0cm9uCisJCQkJ X2FwcGx5X3BhdGNoIC1wMSAiJHgiCisJCQkJY2QgIiR3cmtzcmMiOzsKKwkJZXNhYworCWRvbmUK KwlmaQorCWlmIFsgIiRidWlsZF9vcHRpb25fc25kaW8iIF07IHRoZW4KKwkJbWtkaXIgLXAgJHt3 cmtzcmN9LyR7YnVpbGRfd3Jrc3JjfS9tZWRpYS9hdWRpby97c25kaW8sb3BlbmJzZH0KKwkJY3Ag JHtGSUxFU0RJUn0vc25kaW8tZmlsZXMvc25kaW9fKnB1dC4qIFwKKwkJCSR7d3Jrc3JjfS8ke2J1 aWxkX3dya3NyY30vbWVkaWEvYXVkaW8vc25kaW8KKwkJY3AgJHtGSUxFU0RJUn0vc25kaW8tZmls ZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLiogXAorCQkJJHt3cmtzcmN9LyR7YnVpbGRfd3Jrc3Jj fS9tZWRpYS9hdWRpby9vcGVuYnNkCisJCWZvciBmIGluICIke0ZJTEVTRElSfSIvc25kaW8tcGF0 Y2hlcy8qLnBhdGNoOyBkbworCQkJY2Qgc3JjCisJCQlfYXBwbHlfcGF0Y2ggLXAwICIkZiIKKwkJ CWNkICIkd3Jrc3JjIgorCQlkb25lCisJZmkKKwl2c2VkIC1pICdzL09GRklDSUFMX0JVSUxEL0dP T0dMRV9DSFJPTUVfQlVJTEQvJyBcCisJCXNyYy90b29scy9nZW5lcmF0ZV9zaGltX2hlYWRlcnMv Z2VuZXJhdGVfc2hpbV9oZWFkZXJzLnB5Cit9CisKK3ByZV9jb25maWd1cmUoKSB7CisJY2QgIiR3 cmtzcmMvJGJ1aWxkX3dya3NyYyIKKworCSMgaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2No cm9taXVtLm9yZy9kL3RvcGljL2Nocm9taXVtLXBhY2thZ2Vycy85SlgxTjJuZjRQVS9kaXNjdXNz aW9uCisJdG91Y2ggY2hyb21lL3Rlc3QvZGF0YS93ZWJ1aS9pMThuX3Byb2Nlc3NfY3NzX3Rlc3Qu aHRtbAorCSMgVXNlIHRoZSBmaWxlIGF0IHJ1biB0aW1lIGluc3RlYWQgb2YgZWZmZWN0aXZlbHkg Y29tcGlsaW5nIGl0IGluCisJc2VkICdzfC8vdGhpcmRfcGFydHkvdXNiX2lkcy91c2IuaWRzfC91 c3Ivc2hhcmUvaHdkYXRhL3VzYi5pZHN8ZycgXAorCQktaSBzZXJ2aWNlcy9kZXZpY2UvcHVibGlj L2NwcC91c2IvQlVJTEQuZ24KKworCXZzZWQgLWUgJ3N8cHl0aG9uMy4xMHxweXRob24zLjExfGcn IC1pIHRoaXJkX3BhcnR5L2VsZWN0cm9uX25vZGUvY29uZmlndXJlCisJdnNlZCAtZSAic3woMywg MTApfCgzLCAxMSl8IiAtaSB0aGlyZF9wYXJ0eS9lbGVjdHJvbl9ub2RlL2NvbmZpZ3VyZQorCisJ bWtkaXIgLXAgdGhpcmRfcGFydHkvbm9kZS9saW51eC9ub2RlLWxpbnV4LXg2NC9iaW4KKwlsbiAt c2YgL3Vzci9iaW4vbm9kZSB0aGlyZF9wYXJ0eS9ub2RlL2xpbnV4L25vZGUtbGludXgteDY0L2Jp bi8KKwlybSAtZiB0aGlyZF9wYXJ0eS9kZXZ0b29scy1mcm9udGVuZC9zcmMvdGhpcmRfcGFydHkv ZXNidWlsZC9lc2J1aWxkCisKKwkjIGNvbXBpbGUgZ24gZWFybHksIHNvIGl0IGNhbiBiZSB1c2Vk IHRvIGdlbmVyYXRlIGduaSBzdHVmZgorCW1zZ19ub3JtYWwgIkJvb3RzdHJhcHBpbmcgR05cbiIK KwlDQz0iJHtDQ19GT1JfQlVJTEQ6LSRDQ30iIENYWD0iJHtDWFhfRk9SX0JVSUxEOi0kQ1hYfSIg TEQ9IiR7TERfRk9SX0JVSUxEOi0kTER9IiBcCisJQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTEQ6 LSRDRkxBR1N9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTEQ6LSRDWFhGTEFHU30iIFwK KwlMREZMQUdTPSIke1hCUFNfTERGTEFHU30iIFwKKwkJcHl0aG9uMiB0b29scy9nbi9ib290c3Ry YXAvYm9vdHN0cmFwLnB5IC1zIC12IC0tc2tpcC1nZW5lcmF0ZS1idWlsZGZpbGVzCisKKwkjIHdl IG5lZWQgdG8gZ2VuZXJhdGUgcHBjNjQgc3R1ZmYgZm9yIGxpYnZweCBhcyBpdCdzIG5vdCBzaGlw cGVkCisJIyB0aGlzIGhhcyB0byBiZSBkb25lIGJlZm9yZSB1bmJ1bmRsaW5nLCBidXQgYWZ0ZXIg Z24gaXMgYnVpbHQKKwkjIGNvbW1lbnQgb3V0IGlmIHdlIHN3aXRjaCBiYWNrIHRvIHN5c3RlbSBs aWJ2cHggYWdhaW4gbGF0ZXIKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBj NjQqKQorCQkJcHVzaGQgdGhpcmRfcGFydHkvbGlidnB4CisJCQlta2RpciAtcCBzb3VyY2UvY29u ZmlnL2xpbnV4L3BwYzY0CisJCQkjIG5lZWQgUEFUSCB0byBmaW5kIGduCisJCQlQQVRIPSIke3dy a3NyY30vJHtidWlsZF93cmtzcmN9L291dC9SZWxlYXNlOiRQQVRIIiBcCisJCQkJLi9nZW5lcmF0 ZV9nbmkuc2ggfHwgXAorCQkJCQltc2dfZXJyb3IgImZhaWxlZCB0byBnZW5lcmF0ZSBsaWJ2cHgg Z25pIgorCQkJcG9wZAorCQkJOzsKKwllc2FjCisKKwkjIHJldXNhYmxlIHN5c3RlbSBsaWJyYXJ5 IHNldHRpbmdzCisJbG9jYWwgdXNlX3N5c3RlbT0iCisJCWZmbXBlZworCQlmbGFjCisJCWZvbnRj b25maWcKKwkJZnJlZXR5cGUKKwkJaGFyZmJ1enotbmcKKwkJbGliZHJtCisJCWxpYmV2ZW50CisJ CWxpYmpwZWcKKwkJbGlicG5nCisJCWxpYndlYnAKKwkJbGlieG1sCisJCWxpYnhzbHQKKwkJb3B1 cworCQlyZTIKKwkJc25hcHB5CisJCSIKKwlmb3IgX2xpYiBpbiAkdXNlX3N5c3RlbSBsaWJqcGVn X3R1cmJvOyBkbworCQltc2dfbm9ybWFsICJSZW1vdmluZyBidWlsZHNjcmlwdHMgZm9yIHN5c3Rl bSBwcm92aWRlZCAkX2xpYlxuIgorCQlmaW5kIC10eXBlIGYgLXBhdGggIip0aGlyZF9wYXJ0eS8k X2xpYi8qIiBcCisJCQlcISAtcGF0aCAiKnRoaXJkX3BhcnR5LyRfbGliL2Nocm9taXVtLyoiIFwK KwkJCVwhIC1wYXRoICIqdGhpcmRfcGFydHkvJF9saWIvZ29vZ2xlLyoiIFwKKwkJCVwhIC1wYXRo ICcuL2Jhc2UvdGhpcmRfcGFydHkvaWN1LyonIFwKKwkJCVwhIC1wYXRoICcuL3RoaXJkX3BhcnR5 L3BkZml1bS90aGlyZF9wYXJ0eS9mcmVldHlwZS9pbmNsdWRlL3BzdGFibGVzLmgnIFwKKwkJCVwh IC1wYXRoICcuL3RoaXJkX3BhcnR5L2hhcmZidXp6LW5nL3V0aWxzL2hiX3Njb3BlZC5oJyBcCisJ CQlcISAtcmVnZXggJy4qXC5cKGduXHxnbmlcfGlzb2xhdGVcfHB5XCknIFwKKwkJCS1kZWxldGUK Kwlkb25lCisKKworCW1zZ19ub3JtYWwgIlJlcGxhY2luZyBnbiBmaWxlc1xuIgorCXB5dGhvbjMg YnVpbGQvbGludXgvdW5idW5kbGUvcmVwbGFjZV9nbl9maWxlcy5weSAtLXN5c3RlbS1saWJyYXJp ZXMgXAorCQkkdXNlX3N5c3RlbQorCXRoaXJkX3BhcnR5L2xpYmFkZHJlc3NpbnB1dC9jaHJvbWl1 bS90b29scy91cGRhdGUtc3RyaW5ncy5weQorCisJIyBTYXRpc2Z5IHNvbWUgc2NyaXB0cyB0aGF0 IHVzZSBnaXQgZGVzY3JpYmUgdG8gZmlndXJlIG91dCB0aGUgZWxlY3Ryb24gdmVyc2lvbgorCWNk ICR7d3Jrc3JjfS9zcmMvZWxlY3Ryb24KKwlnaXQgdGFnIC1mICJ2JHt2ZXJzaW9ufSIKK30KKwor ZG9fY29uZmlndXJlKCkgeworCWxvY2FsIHRhcmdldF9hcmNoPSIkKF9nZXRfY2hyb21pdW1fYXJj aCAke1hCUFNfVEFSR0VUX01BQ0hJTkV9KSIKKwlsb2NhbCBob3N0X2FyY2g9IiQoX2dldF9jaHJv bWl1bV9hcmNoICR7WEJQU19NQUNISU5FfSkiCisJIyB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgc2V0 IG1hcmNoIGZvciB1c2UsIGFkZGluZyBpdCB0byBjZmxhZ3Mgd2lsbCBicmVhayBidWlsZHMKKwll eHBvcnQgQ1hYRkxBR1M9JCggc2hvcHQgLXMgZXh0Z2xvYjsgZWNobyAke0NYWEZMQUdTLy1tYXJj aD0qKFteIF0pfSApCisJZXhwb3J0IENGTEFHUz0kKCBzaG9wdCAtcyBleHRnbG9iOyBlY2hvICR7 Q0ZMQUdTLy1tYXJjaD0qKFteIF0pfSApCisJZXhwb3J0IENGTEFHUz0ke0NGTEFHUy8tZy99CisJ ZXhwb3J0IENYWEZMQUdTPSR7Q1hYRkxBR1MvLWcvfQorCWxvY2FsIGNvbmY9KCkKKwljZCB0aGly ZF9wYXJ0eS9lbGVjdHJvbl9ub2RlCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNv bmZfYXJncz0iIC0tZGVzdC1jcHU9JHt0YXJnZXRfYXJjaH0gLS1jcm9zcy1jb21waWxpbmciCisJ ZmkKKwkuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIFwKKwkJLS1zaGFyZWQtemxpYiBcCisJCS0t c2hhcmVkLWxpYnV2IFwKKwkJLS1zaGFyZWQtb3BlbnNzbCBcCisJCS0tc2hhcmVkLWNhcmVzIFwK KwkJLS1vcGVuc3NsLXVzZS1kZWYtY2Etc3RvcmUgXAorCQktLXdpdGhvdXQtbnBtIFwKKwkJLS13 aXRob3V0LWR0cmFjZSBcCisJCS0td2l0aG91dC1idW5kbGVkLXY4IFwKKwkJJHtjb25mX2FyZ3N9 CisKKwljZCAiJHdya3NyYy8kYnVpbGRfd3Jrc3JjIi9lbGVjdHJvbgorCXlhcm4gaW5zdGFsbCAt LWZyb3plbi1sb2NrZmlsZQorCWNkICIkd3Jrc3JjLyRidWlsZF93cmtzcmMiCisKKwlpZiBbICIk YnVpbGRfb3B0aW9uX2NsYW5nIiBdOyB0aGVuCisJCWV4cG9ydCBDQz1jbGFuZworCQlleHBvcnQg Q1hYPWNsYW5nKysKKwkJZXhwb3J0IEhPU1RfQ0M9Y2xhbmcKKwkJZXhwb3J0IEhPU1RfQ1hYPWNs YW5nKysKKwllbHNlCisJCWV4cG9ydCBDWFhGTEFHUz0iJENYWEZMQUdTIC1mcGVybWlzc2l2ZSIK KwkJZXhwb3J0IEJVSUxEX0NYWEZMQUdTPSIkQlVJTERfQ1hYRkxBR1MgLWZwZXJtaXNzaXZlIgor CQlleHBvcnQgQlVJTERfQVI9IiRBUl9ob3N0IgorCQlleHBvcnQgQlVJTERfTk09IiROTV9ob3N0 IgorCWZpCisKKwljb25mKz0oCisJCSdpbXBvcnQoIi8vZWxlY3Ryb24vYnVpbGQvYXJncy9yZWxl YXNlLmduIiknCisJCSdibGlua19zeW1ib2xfbGV2ZWw9MCcKKwkJJ2NsYW5nX3VzZV9jaHJvbWVf cGx1Z2lucz1mYWxzZScKKwkJJ2N1c3RvbV90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNoYWluL2xp bnV4L3VuYnVuZGxlOmRlZmF1bHQiJworCSkKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4K KwkJY29uZis9KAorCQkJJ2hvc3RfdG9vbGNoYWluPSIvL2J1aWxkL3Rvb2xjaGFpbi9saW51eC91 bmJ1bmRsZTpob3N0IicKKwkJCSd2OF9zbmFwc2hvdF90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNo YWluL2xpbnV4L3VuYnVuZGxlOmhvc3QiJworCQkJImhvc3RfcGtnX2NvbmZpZz1cIiRQS0dfQ09O RklHX0ZPUl9CVUlMRFwiIgorCQkJInBrZ19jb25maWc9XCIkUEtHX0NPTkZJR1wiIgorCQkpCisJ ZWxzZQorCQljb25mKz0oCisJCQknaG9zdF90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNoYWluL2xp bnV4L3VuYnVuZGxlOmRlZmF1bHQiJworCQkJJ3Y4X3NuYXBzaG90X3Rvb2xjaGFpbj0iLy9idWls ZC90b29sY2hhaW4vbGludXgvdW5idW5kbGU6ZGVmYXVsdCInCisJCSkKKwlmaQorCWlmIFsgIiRi dWlsZF9vcHRpb25fc25kaW8iIF07IHRoZW4KKwkJY29uZis9KAorCQkJJ3VzZV9zbmRpbz10cnVl JworCQkpCisJZmkKKwlpZiBbIC1uICIkWEJQU19ERUJVR19QS0dTIiBdOyB0aGVuCisJCWNvbmYr PSgnc3ltYm9sX2xldmVsPTEnKQorCWVsc2UKKwkJY29uZis9KCdzeW1ib2xfbGV2ZWw9MCcpCisJ ZmkKKworCSMgdGhpcyBkb2VzIG5vdCB3b3JrIG9uIHBwYzY0IHlldAorCWNhc2UgIiRYQlBTX1RB UkdFVF9NQUNISU5FIiBpbgorCQlwcGM2NCopIGNvbmYrPSggImVuYWJsZV9qeGxfZGVjb2Rlcj1m YWxzZSIgKTs7CisJZXNhYworCisJY29uZis9KAorCQknZGV2dG9vbHNfc2tpcF90eXBlY2hlY2s9 ZmFsc2UnCisJCSdlbmFibGVfaGFuZ291dF9zZXJ2aWNlc19leHRlbnNpb249dHJ1ZScKKwkJJ2Vu YWJsZV9uYWNsPWZhbHNlJworCQknZW5hYmxlX3ByZWNvbXBpbGVkX2hlYWRlcnM9ZmFsc2UnCisJ CSdmYXRhbF9saW5rZXJfd2FybmluZ3M9ZmFsc2UnCisJCSdmZm1wZWdfYnJhbmRpbmc9IkNocm9t ZSInCisJCSdnb2xkX3BhdGg9Ii91c3IvYmluL2xkLmdvbGQiJworCQknaWN1X3VzZV9kYXRhX2Zp bGU9dHJ1ZScKKwkJImlzX2NsYW5nPSQodm9wdF9pZiBjbGFuZyB0cnVlIGZhbHNlKSIKKwkJJ2Ns YW5nX2Jhc2VfcGF0aD0iL3VzciInCisKKwkJJ2lzX2NvbXBvbmVudF9idWlsZD1mYWxzZScKKwkJ ImlzX2RlYnVnPSRfaXNfZGVidWciCisJCSdwcm9wcmlldGFyeV9jb2RlY3M9dHJ1ZScKKwkJJ3Ry ZWF0X3dhcm5pbmdzX2FzX2Vycm9ycz1mYWxzZScKKwkJJ3VzZV9jdXBzPXRydWUnCisJCSd1c2Vf Y3VzdG9tX2xpYmN4eD1mYWxzZScKKwkJJ3VzZV9nbm9tZV9rZXlyaW5nPWZhbHNlJworCQkndXNl X2dvbGQ9ZmFsc2UnCisJCSJ1c2VfbGxkPSQodm9wdF9pZiBjbGFuZyB0cnVlIGZhbHNlKSIKKwor CQknaXNfY2ZpPWZhbHNlJworCQkndXNlX3RoaW5fbHRvPWZhbHNlJworCQkndXNlX2NmaV9pY2Fs bD1mYWxzZScKKwkJJ2Nocm9tZV9wZ29fcGhhc2U9MCcKKworCQkidXNlX3B1bHNlYXVkaW89JCh2 b3B0X2lmIHB1bHNlYXVkaW8gJ3RydWUnICdmYWxzZScpIgorCQkicnRjX3VzZV9waXBld2lyZT0k KHZvcHRfaWYgcGlwZXdpcmUgdHJ1ZSBmYWxzZSkiCisJCSd1c2Vfc3lzcm9vdD1mYWxzZScKKwkJ J3VzZV9zeXN0ZW1faGFyZmJ1eno9dHJ1ZScKKwkJJ3VzZV9zeXN0ZW1fbGliZmZpPXRydWUnCisJ CSdpc19jb21wb25lbnRfZmZtcGVnPWZhbHNlJworCQkidGFyZ2V0X2NwdT1cIiR0YXJnZXRfYXJj aFwiIgorCQkiaG9zdF9jcHU9XCIkaG9zdF9hcmNoXCIiCisJKQorCisJbXNnX25vcm1hbCAiQ29u ZmlndXJpbmcgYnVpbGRcbiIKKwlvdXQvUmVsZWFzZS9nbiBnZW4gb3V0LyRfYnVpbGR0eXBlIC0t YXJncz0iJHtjb25mWypdfSIKK30KKworZG9fYnVpbGQoKSB7CisJZXhwb3J0IENYWEZMQUdTPSQo IHNob3B0IC1zIGV4dGdsb2I7IGVjaG8gJHtDWFhGTEFHUy8tbWFyY2g9KihbXiBdKX0gKQorCWV4 cG9ydCBDRkxBR1M9JCggc2hvcHQgLXMgZXh0Z2xvYjsgZWNobyAke0NGTEFHUy8tbWFyY2g9Kihb XiBdKX0gKQorCWV4cG9ydCBDRkxBR1M9JHtDRkxBR1MvLWcvfQorCWV4cG9ydCBDWFhGTEFHUz0k e0NYWEZMQUdTLy1nL30KKwlpZiBbICIkYnVpbGRfb3B0aW9uX2NsYW5nIiBdOyB0aGVuCisJCWV4 cG9ydCBDQz1jbGFuZworCQlleHBvcnQgQ1hYPWNsYW5nKysKKwkJZXhwb3J0IEhPU1RfQ0M9Y2xh bmcKKwkJZXhwb3J0IEhPU1RfQ1hYPWNsYW5nKysKKwllbHNlCisJCWV4cG9ydCBCVUlMRF9DWFhG TEFHUz0iJEJVSUxEX0NYWEZMQUdTIC1mcGVybWlzc2l2ZSIKKwkJZXhwb3J0IENYWEZMQUdTPSIk Q1hYRkxBR1MgLWZwZXJtaXNzaXZlIgorCQlleHBvcnQgQlVJTERfQVI9IiRBUl9ob3N0IgorCQll eHBvcnQgQlVJTERfTk09IiROTV9ob3N0IgorCWZpCisJbXNnX25vcm1hbCAiTmluamEgdHVydGxl cyBHTyFcbiIKKwluaW5qYSAke21ha2Vqb2JzfSAtQyBvdXQvJF9idWlsZHR5cGUgZWxlY3Ryb24g dGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZTpoZWFkZXJzCisJIyBmaW5pc2ggcmVzdCBvZiB0aGUg YnVpbGQKKwlzdHJpcCAtcyBvdXQvJF9idWlsZHR5cGUvZWxlY3Ryb24KKwluaW5qYSAke21ha2Vq b2JzfSAtQyBvdXQvJF9idWlsZHR5cGUgZWxlY3Ryb25fZGlzdF96aXAKK30KKworZG9faW5zdGFs bCgpIHsKKwl2bWtkaXIgL3Vzci9saWIvJHBrZ25hbWUKKwl2bWtkaXIgL3Vzci9pbmNsdWRlLyRw a2duYW1lCisJYnNkdGFyIC14ZiBvdXQvJF9idWlsZHR5cGUvZGlzdC56aXAgLUMgIiRERVNURElS L3Vzci9saWIvJHBrZ25hbWUiCisKKwljaG1vZCB1K3MgIiRERVNURElSL3Vzci9saWIvJHBrZ25h bWUvY2hyb21lLXNhbmRib3giCisKKwljcCBvdXQvJF9idWlsZHR5cGUvZ2VuL25vZGVfaGVhZGVy cy50YXIuZ3ogIiRERVNURElSIi91c3IvaW5jbHVkZS8kcGtnbmFtZQorCisJdmxpY2Vuc2UgJHt3 cmtzcmN9L3NyYy9MSUNFTlNFIGNocm9taXVtLkxJQ0VOU0UKKwl2bGljZW5zZSAke3dya3NyY30v c3JjL2VsZWN0cm9uL0xJQ0VOU0UgZWxlY3Ryb24uTElDRU5TRQorCXZsaWNlbnNlICR7d3Jrc3Jj fS9zcmMvdGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZS9MSUNFTlNFIG5vZGUuTElDRU5TRQorCisJ dm1rZGlyIC91c3IvYmluCisJbG4gLXMgLi4vbGliLyRwa2duYW1lL2VsZWN0cm9uICIkREVTVERJ UiIvdXNyL2Jpbi8kcGtnbmFtZQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L3Vw ZGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24yNC91cGRhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi4zYWY4ZTU4YjUzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2VsZWN0cm9uMjQvdXBkYXRlCkBAIC0wLDAgKzEsMiBAQAorc2l0ZT1odHRwczovL3d3dy5lbGVj dHJvbmpzLm9yZy9yZWxlYXNlcy9zdGFibGU/dmVyc2lvbj0ke3ZlcnNpb24lJS4qfQorcGF0dGVy bj0ndGFnL3ZcS1tcZFwuXSsoPz0iKScK --===============1775948484954688957==--