From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.2 Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 6ee362a4 for ; Fri, 1 Nov 2019 11:09:25 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============4213940464343702261==" MIME-Version: 1.0 Subject: [PR PATCH] mac-fdisk: sync patches from adelie To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org Message-ID: Date: Fri, 01 Nov 2019 12:09:25 +0100 GitHub notification mails are now in MIME to allow UTF8. --===============4213940464343702261== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHE2NiBhZ2FpbnN0IG1hc3RlciBvbiB0aGUg dm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1wcGMvdm9p ZC1wYWNrYWdlcyBtYWMtZmRpc2sKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1w YWNrYWdlcy9wdWxsLzE2MDI3CgptYWMtZmRpc2s6IHN5bmMgcGF0Y2hlcyBmcm9tIGFkZWxpZQpU aGlzIHNob3VsZCBhbHNvIGZpeCBpdCBvbiBtdXNsLgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6 Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzE2MDI3LnBhdGNoIGlz IGF0dGFjaGVk --===============4213940464343702261== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-mac-fdisk-16027.patch" RnJvbSA5ZWU0ZWIyMzc3NGZiYzFhZDZjMzhjZTQ0ZGQzNzNlODllNzQ2MjZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPgpEYXRlOiBGcmks IDEgTm92IDIwMTkgMTI6MDU6MzUgKzAxMDAKU3ViamVjdDogW1BBVENIXSBtYWMtZmRpc2s6IHN5 bmMgcGF0Y2hlcyBmcm9tIGFkZWxpZQoKVGhpcyBzaG91bGQgYWxzbyBmaXggaXQgb24gbXVzbC4K LS0tCiAuLi4vMDYtbWFjLWZkaXNrLTAuMV9wMTYtcHBjLWlubGluZS5wYXRjaCAgICAgfCAgIDIx IC0KIC4uLi8wNy1tYWMtZmRpc2stMC4xX3AxOC1sc2VlazY0LnBhdGNoICAgICAgICB8ICAgNDMg LQogLi4uLjEtMTgucGF0Y2ggPT4gbWFjLWZkaXNrLTAuMS1kZWJpYW4ucGF0Y2h9IHwgMjYzNyAr KysrKysrKy0tLS0tLS0tLQogLi4uZGVycy5wYXRjaCA9PiBtYWMtZmRpc2stMC4xLWhlYWRlcnMu cGF0Y2h9IHwgICAyOCArLQogLi4uL3BhdGNoZXMvbWFjLWZkaXNrLTAuMS1tb3JlLWFyY2hlcy5w YXRjaCAgIHwgICA2NyArCiAuLi42NC5wYXRjaCA9PiBtYWMtZmRpc2stMC4xX3AxNi1wcGM2NC5w YXRjaH0gfCAgIDM2ICstCiAuLi4vbWFjLWZkaXNrLTAuMV9wMTYtcHJvcGVyLWlubGluZS5wYXRj aCAgICAgfCAgIDY1ICsKIC4uLmRpc2stYW1kNjQucGF0Y2ggPT4gbWFjLWZkaXNrLWFtZDY0LnBh dGNofSB8ICAgMzcgKy0KIC4uLi9wYXRjaGVzL21hYy1mZGlzay1mZGlzay1oZWFkZXItbXVzbC5w YXRjaCB8ICAgMTAgKwogLi4udGNoID0+IG1hYy1mZGlzay1sYXJnZS1kaXNrLXN1cHBvcnQucGF0 Y2h9IHwgICAgNCArLQogLi4uZ2IucGF0Y2ggPT4gbWFjLWZkaXNrLWxhcmdlcnRoYW4yZ2IucGF0 Y2h9IHwgICAgNCArLQogLi4uL3BhdGNoZXMvbWFjLWZkaXNrLW5vbi1nbGliYy1zdXBwb3J0LnBh dGNoIHwgICAxNCArCiAuLi4vcGF0Y2hlcy9tYWMtZmRpc2stc3Rkb3V0LWZsdXNoLnBhdGNoICAg ICAgfCAgIDU5ICsKIHNyY3BrZ3MvbWFjLWZkaXNrL3RlbXBsYXRlICAgICAgICAgICAgICAgICAg ICB8ICAgMTQgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDE1NzYgaW5zZXJ0aW9ucygrKSwgMTQ2MyBk ZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVz LzA2LW1hYy1mZGlzay0wLjFfcDE2LXBwYy1pbmxpbmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzLzA3LW1hYy1mZGlzay0wLjFfcDE4LWxzZWVrNjQu cGF0Y2gKIHJlbmFtZSBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL3swMC1tYWMtZmRpc2tfMC4x LTE4LnBhdGNoID0+IG1hYy1mZGlzay0wLjEtZGViaWFuLnBhdGNofSAoOTglKQogcmVuYW1lIHNy Y3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvezAyLW1hYy1mZGlzay0wLjEtaGVhZGVycy5wYXRjaCA9 PiBtYWMtZmRpc2stMC4xLWhlYWRlcnMucGF0Y2h9ICg4OSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stMC4xLW1vcmUtYXJjaGVzLnBhdGNo CiByZW5hbWUgc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy97MDMtbWFjLWZkaXNrLTAuMV9wMTYt cHBjNjQucGF0Y2ggPT4gbWFjLWZkaXNrLTAuMV9wMTYtcHBjNjQucGF0Y2h9ICg5NyUpCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stMC4xX3Ax Ni1wcm9wZXItaW5saW5lLnBhdGNoCiByZW5hbWUgc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy97 MDQtbWFjLWZkaXNrLWFtZDY0LnBhdGNoID0+IG1hYy1mZGlzay1hbWQ2NC5wYXRjaH0gKDgwJSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay1m ZGlzay1oZWFkZXItbXVzbC5wYXRjaAogcmVuYW1lIHNyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMv ezA1LWJpZ19wdC5wYXRjaCA9PiBtYWMtZmRpc2stbGFyZ2UtZGlzay1zdXBwb3J0LnBhdGNofSAo OTYlKQogcmVuYW1lIHNyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvezAxLWxhcmdlcnRoYW4yZ2Iu cGF0Y2ggPT4gbWFjLWZkaXNrLWxhcmdlcnRoYW4yZ2IucGF0Y2h9ICg4OSUpCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stbm9uLWdsaWJjLXN1 cHBvcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVz L21hYy1mZGlzay1zdGRvdXQtZmx1c2gucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21hYy1m ZGlzay9wYXRjaGVzLzA2LW1hYy1mZGlzay0wLjFfcDE2LXBwYy1pbmxpbmUucGF0Y2ggYi9zcmNw a2dzL21hYy1mZGlzay9wYXRjaGVzLzA2LW1hYy1mZGlzay0wLjFfcDE2LXBwYy1pbmxpbmUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwY2ZhYjViOTEyLi4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzLzA2LW1hYy1mZGlzay0wLjFfcDE2LXBw Yy1pbmxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1vbiBnY2MtNy4z LjAgYnVpbGQgZmFpbGVkIGFzOgotICAgICMgQ0ZMQUdTPSItbWNwdT1wb3dlcnBjIC1PcyAtcGlw ZSIgZW1lcmdlIC12MSBzeXMtZnMvbWFjLWZkaXNrCi0gICAgY2MgICBmZGlzay5vIGZkaXNrbGFi ZWwubyAgIC1vIGZkaXNrCi0gICAgZmRpc2subzogSW4gZnVuY3Rpb24gYGNoZWNrX2NvbnNpc3Rl bmN5JzoKLSAgICBmZGlzay5jOigudGV4dCsweDY0KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg X19zd2FwMzInCi0gICAgZmRpc2suYzooLnRleHQrMHg3MCk6IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8gYF9fc3dhcDMyJwotCi1Bdm9pZCBleHBvcnRpbmcgaW5saW5lIHN5bWJvbHMgYW5kIHdvcmth cm91bmQgYnVpbGQgZmFpbHVyZS4KLS0tLSBmZGlzay5jCi0rKysgZmRpc2suYwotQEAgLTI0Nyw4 ICsyNDcsOCBAQCBjaGFyIHJlYWRfY2hhcihjaGFyICptZXNnKTsKLSBqbXBfYnVmIGxpc3Rpbmdi dWY7Ci0gCi0taW5saW5lIHVuc2lnbmVkIHNob3J0IF9fc3dhcDE2KHVuc2lnbmVkIHNob3J0IHgp IHsKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IF9fc3dhcDE2KHVuc2lnbmVkIHNob3J0 IHgpIHsKLSAJcmV0dXJuICgoKF9fdTE2KSh4KSAmIDB4RkYpIDw8IDgpIHwgKCgoX191MTYpKHgp ICYgMHhGRjAwKSA+PiA4KTsKLSB9Ci0taW5saW5lIF9fdTMyIF9fc3dhcDMyKF9fdTMyIHgpIHsK LStzdGF0aWMgaW5saW5lIF9fdTMyIF9fc3dhcDMyKF9fdTMyIHgpIHsKLSAJcmV0dXJuICgoKF9f dTMyKSh4KSAmIDB4RkYpIDw8IDI0KSB8ICgoKF9fdTMyKSh4KSAmIDB4RkYwMCkgPDwgOCkgfCAo KChfX3UzMikoeCkgJiAweEZGMDAwMCkgPj4gOCkgfCAoKChfX3UzMikoeCkgJiAweEZGMDAwMDAw KSA+PiAyNCk7Ci0gfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy8wNy1t YWMtZmRpc2stMC4xX3AxOC1sc2VlazY0LnBhdGNoIGIvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hl cy8wNy1tYWMtZmRpc2stMC4xX3AxOC1sc2VlazY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBjZmYxYThkNjNhOC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9tYWMtZmRp c2svcGF0Y2hlcy8wNy1tYWMtZmRpc2stMC4xX3AxOC1sc2VlazY0LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDMgKzAsMCBAQAotLS0tIGZkaXNrLmMKLSsrKyBmZGlzay5jCi1AQCAtNTksNiAr NTksMTAgQEAKLSAgKi8KLSAKLSAKLSsjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSsjZGVm aW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSsjZW5kaWYKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxz dGRsaWIuaD4KLS0tLSBmZGlza2xhYmVsLmMKLSsrKyBmZGlza2xhYmVsLmMKLUBAIC0zNSw2ICsz NSw5IEBACi0gICAgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSsjaWZuZGVmIF9MQVJHRUZJTEU2NF9T T1VSQ0UKLSsjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSsjZW5kaWYKLSAjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgot LS0tIGlvLmMKLSsrKyBpby5jCi1AQCAtMjUsNiArMjUsNyBAQAotICAqIFdJVEggVEhFIFVTRSBP UiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLiAKLSAgKi8KLSAKLSsjZGVmaW5lIF9MQVJH RUZJTEU2NF9TT1VSQ0UKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+ Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci1AQCAtMzcsNiArMzgsNyBAQAotICNlbmRpZgotICNlbmRp ZgotICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0g I2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3Rk YXJnLmg+CmRpZmYgLS1naXQgYS9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzLzAwLW1hYy1mZGlz a18wLjEtMTgucGF0Y2ggYi9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay0wLjEt ZGViaWFuLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIHNyY3BrZ3MvbWFj LWZkaXNrL3BhdGNoZXMvMDAtbWFjLWZkaXNrXzAuMS0xOC5wYXRjaApyZW5hbWUgdG8gc3JjcGtn cy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stMC4xLWRlYmlhbi5wYXRjaAppbmRleCBkZWRl MGI3NTQ0NS4uNjE3ZGQ4ZTcwM2QgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNo ZXMvMDAtbWFjLWZkaXNrXzAuMS0xOC5wYXRjaAorKysgYi9zcmNwa2dzL21hYy1mZGlzay9wYXRj aGVzL21hYy1mZGlzay0wLjEtZGViaWFuLnBhdGNoCkBAIC0xLDIzICsxLDUgQEAKLS0tLSBNYWtl ZmlsZQotKysrIE1ha2VmaWxlCi1AQCAtNSw3ICs1LDE0IEBACi0gZmRpc2s6IGZkaXNrLm8gZmRp c2tsYWJlbC5vCi0gCi0gY2xlYW46Ci0tCXJtIC1mICoubyBwZGlzayBmZGlzawotKwlybSAtZiAq Lm8gcGRpc2sgZmRpc2sgbWFjLWZkaXNrIHBtYWMtZmRpc2sKLSsKLStpbnN0YWxsOiBwZGlzayBm ZGlzawotKwktcm0gLWYgcG1hYy1mZGlzayBtYWMtZmRpc2sKLSsJbG4gcGRpc2sgbWFjLWZkaXNr Ci0rCWxuIGZkaXNrIHBtYWMtZmRpc2sKLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1 NSBtYWMtZmRpc2sgJHtERVNURElSfS9zYmluCi0rCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1t IDA3NTUgcG1hYy1mZGlzayAke0RFU1RESVJ9L3NiaW4KLSAKLSBkaXN0cmlidXRpb246Ci0gCWNk IC4uOyB0YXIgY3ZmIHBkaXNrLnNyYy50YXIuYGRhdGUgKyV5JW0lZGAgLS1maWxlcy1mcm9tIHBk aXNrL2xpc3Quc3JjCi0tLS0gZHBtZS5oCi0rKysgZHBtZS5oCistLS0gbWFjLWZkaXNrLTAuMS5v cmlnL2RwbWUuaAorKysrIG1hYy1mZGlzay0wLjEvZHBtZS5oCiBAQCAtNjEsNyArNjEsNyBAQAog IC8vCiAgdHlwZWRlZgl1bnNpZ25lZCBjaGFyCXU4OwpAQCAtNjEsMTQxMCArNDMsMTQxMyBAQAog ICNkZWZpbmUJZHBtZV9vc19zcGVjaWZpY18xX2dldChwKQliaXRmaWVsZF9nZXQocC0+ZHBtZV9m bGFncywgOCwgMSkKICAjZGVmaW5lCWRwbWVfb3Nfc3BlY2lmaWNfMl9nZXQocCkJYml0ZmllbGRf Z2V0KHAtPmRwbWVfZmxhZ3MsIDcsIDEpCiAgI2RlZmluZQlkcG1lX29zX3BpY19jb2RlX2dldChw KQkJYml0ZmllbGRfZ2V0KHAtPmRwbWVfZmxhZ3MsIDYsIDEpCi0tLS0gZHVtcC5jCi0rKysgZHVt cC5jCi1AQCAtMyw3ICszLDExIEBACi0gLy8KLSAvLyBXcml0dGVuIGJ5IEVyeWsgVmVyc2hlbiAo ZXJ5a0BhcHBsZS5jb20pCi0gLy8KLS0KLSsvKgotKyAqIExpbnV4L202OGsgdmVyc2lvbiBieSBD aHJpc3RpYWFuIFdlbHZhYXJ0Ci0rICogbWlub3IgZml4ZXMgYW5kIGdsaWJjIGNoYW5nZSBieSBN aWNoYWVsIFNjaG1pdHoKLSsgKi8KLSsgCi0gLyoKLSAgKiBDb3B5cmlnaHQgMTk5NiwxOTk3IGJ5 IEFwcGxlIENvbXB1dGVyLCBJbmMuCi0gICogICAgICAgICAgICAgIEFsbCBSaWdodHMgUmVzZXJ2 ZWQgCi1AQCAtNjAsNiArNjQsNyBAQAotIC8vCi0gTkFNRVMgcGxpc3RbXSA9IHsKLSAgICAgIkRy dnIiLCAiQXBwbGVfRHJpdmVyIiwKLSsgICAgIkRyNDMiLCAiQXBwbGVfRHJpdmVyNDMiLAotICAg ICAiRnJlZSIsICJBcHBsZV9GcmVlIiwKLSAgICAgIiBIRlMiLCAiQXBwbGVfSEZTIiwKLSAgICAg IiBNRlMiLCAiQXBwbGVfTUZTIiwKLUBAIC04Myw3ICs4OCw3IEBACi0gLy8gRm9yd2FyZCBkZWNs YXJhdGlvbnMKLSAvLwotIHZvaWQgZHVtcF9ibG9ja196ZXJvKHBhcnRpdGlvbl9tYXBfaGVhZGVy ICptYXApOwotLXZvaWQgZHVtcF9wYXJ0aXRpb25fZW50cnkocGFydGl0aW9uX21hcCAqZW50cnks IGludCBkaWdpdHMpOwotK3ZvaWQgZHVtcF9wYXJ0aXRpb25fZW50cnkocGFydGl0aW9uX21hcCAq ZW50cnksIGludCBkaWdpdHMsIGNoYXIgKmRldik7Ci0gCi0gCi0gLy8KLUBAIC0xMTksNiArMTI0 LDcgQEAKLSAgICAgfQotICAgICBwcmludGYoIlxuQmxvY2sgc2l6ZT0ldSwgTnVtYmVyIG9mIEJs b2Nrcz0ldVxuIiwKLSAJICAgIHAtPnNiQmxrU2l6ZSwgcC0+c2JCbGtDb3VudCk7Ci0rI2lmbmRl ZiBfX21jNjgwMDBfXwotICAgICBwcmludGYoIkRldmljZVR5cGU9MHgleCwgRGV2aWNlSWQ9MHgl eFxuIiwKLSAJICAgIHAtPnNiRGV2VHlwZSwgcC0+c2JEZXZJZCk7Ci0gICAgIGlmIChwLT5zYkRy dnJDb3VudCA+IDApIHsKLUBAIC0xMzAsNiArMTM2LDcgQEAKLSAJfQotICAgICB9Ci0gICAgIHBy aW50ZigiXG4iKTsKLSsjZW5kaWYKLSB9CistLS0gbWFjLWZkaXNrLTAuMS5vcmlnL3BkaXNrLmMK KysrKyBtYWMtZmRpc2stMC4xL3BkaXNrLmMKK0BAIC0zMCwxOCArMzAsMTcgQEAKKyAjaW5jbHVk ZSA8c3RkaW8uaD4KKyAjaWZkZWYgX19saW51eF9fCisgI2luY2x1ZGUgPGdldG9wdC5oPgorKyNp bmNsdWRlIDxzdGRkZWYuaD4KKyAjZWxzZQorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVk ZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPFNJT1VYLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPHN0 cmluZy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgogIAorICNpZmRlZiBfX2xpbnV4X18KKyAjaW5j bHVkZSA8c3lzL2lvY3RsLmg+CistI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CistI2luY2x1ZGUgPGxp bnV4L2hkcmVnLmg+CisrI2luY2x1ZGUgImtlcm5lbC1kZWZzLmgiCisgI2VuZGlmCiAgCi1AQCAt MTM4LDMxICsxNDUsNTAgQEAKKyAjaW5jbHVkZSAicGRpc2suaCIKK0BAIC05NCw2ICs5Myw3IEBA Cisgdm9pZCBkb19hZGRfaW50ZWxfcGFydGl0aW9uKHBhcnRpdGlvbl9tYXBfaGVhZGVyICptYXAp OworIHZvaWQgZG9fY2hhbmdlX21hcF9zaXplKHBhcnRpdGlvbl9tYXBfaGVhZGVyICptYXApOwor IHZvaWQgZG9fY3JlYXRlX3BhcnRpdGlvbihwYXJ0aXRpb25fbWFwX2hlYWRlciAqbWFwLCBpbnQg Z2V0X3R5cGUpOworK3ZvaWQgZG9fY3JlYXRlX2Jvb3RzdHJhcF9wYXJ0aXRpb24ocGFydGl0aW9u X21hcF9oZWFkZXIgKm1hcCk7Cisgdm9pZCBkb19kZWxldGVfcGFydGl0aW9uKHBhcnRpdGlvbl9t YXBfaGVhZGVyICptYXApOworIGludCBkb19leHBlcnQocGFydGl0aW9uX21hcF9oZWFkZXIgKm1h cCk7Cisgdm9pZCBkb19yZW9yZGVyKHBhcnRpdGlvbl9tYXBfaGVhZGVyICptYXApOworQEAgLTEx NCw2ICsxMTQsNyBAQAorIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIHsKLSAgICAgcGFy dGl0aW9uX21hcCAqIGVudHJ5OwotICAgICBpbnQgajsKLSsgICAgc2l6ZV90IGxlbjsKLSsgICAg Y2hhciAqYnVmOworICAgICBpbnQgbmFtZV9pbmRleDsKKysgICAgaW50IGVycj0wOwogIAotICAg ICBpZiAobWFwID09IE5VTEwpIHsKLSAJYmFkX2lucHV0KCJObyBwYXJ0aXRpb24gbWFwIGV4aXN0 cyIpOwotIAlyZXR1cm47CisgICAgIGlmIChzaXplb2YoRFBNRSkgIT0gUEJMT0NLX1NJWkUpIHsK KyAJZmF0YWwoLTEsICJTaXplIG9mIHBhcnRpb24gbWFwIGVudHJ5ICglZCkgIgorQEAgLTE1MCw3 ICsxNTEsOSBAQAorICAgICB9IGVsc2UgaWYgKCF2ZmxhZykgeworIAl1c2FnZSgibm8gZGV2aWNl IGFyZ3VtZW50Iik7CisgIAlkb19oZWxwKCk7CisrCWVycj0tRUlOVkFMOwkvLyBkZWJhdGFibGUK ICAgICAgfQotKyNpZmRlZiBfX21jNjgwMDBfXwotKyAgICBwcmludGYoIkRpc2sgJXNcbiIsIG1h cC0+bmFtZSk7Ci0rI2Vsc2UKLSAgICAgcHJpbnRmKCIlc1xuIiwgbWFwLT5uYW1lKTsKLSsjZW5k aWYKKysgICAgZXhpdChlcnIpOworIH0KKyAjZWxzZQorIG1haW4oKQorQEAgLTM1MSw3ICszNTQs OCBAQAorIAkgICAgcHJpbnRmKCIgIFAgICAgKHByaW50IG9yZGVyZWQgYnkgYmFzZSBhZGRyZXNz KVxuIik7CisgCSAgICBwcmludGYoIiAgaSAgICBpbml0aWFsaXplIHBhcnRpdGlvbiBtYXBcbiIp OworIAkgICAgcHJpbnRmKCIgIHMgICAgY2hhbmdlIHNpemUgb2YgcGFydGl0aW9uIG1hcFxuIik7 CistCSAgICBwcmludGYoIiAgYyAgICBjcmVhdGUgbmV3IHBhcnRpdGlvblxuIik7CisrCSAgICBw cmludGYoIiAgYiAgICBjcmVhdGUgbmV3IDgwMEsgYm9vdHN0cmFwIHBhcnRpdGlvblxuIik7Cisr CSAgICBwcmludGYoIiAgYyAgICBjcmVhdGUgbmV3IExpbnV4IHBhcnRpdGlvblxuIik7CisgCSAg ICBwcmludGYoIiAgQyAgICAoY3JlYXRlIHdpdGggdHlwZSBhbHNvIHNwZWNpZmllZClcbiIpOwor IAkgICAgcHJpbnRmKCIgIGQgICAgZGVsZXRlIGEgcGFydGl0aW9uXG4iKTsKKyAJICAgIHByaW50 ZigiICByICAgIHJlb3JkZXIgcGFydGl0aW9uIGVudHJ5IGluIG1hcFxuIik7CitAQCAtMzc4LDYg KzM4MiwxMCBAQAorIAljYXNlICdpJzoKKyAJICAgIG1hcCA9IGluaXRfcGFydGl0aW9uX21hcChu YW1lLCBtYXApOworIAkgICAgYnJlYWs7CisrCWNhc2UgJ0InOgorKwljYXNlICdiJzoKKysJICAg IGRvX2NyZWF0ZV9ib290c3RyYXBfcGFydGl0aW9uKG1hcCk7CisrCSAgICBicmVhazsKKyAJY2Fz ZSAnQyc6CisgCSAgICBnZXRfdHlwZSA9IDE7CisgCSAgICAvLyBmYWxsIHRocm91Z2gKK0BAIC00 NzEsNiArNDc5LDMwIEBACisgfQogIAotICAgICBqID0gbnVtYmVyX29mX2RpZ2l0cyhtYXAtPm1l ZGlhX3NpemUpOwotICAgICBpZiAoaiA8IDcpIHsKLSAJaiA9IDc7Ci0gICAgIH0KLS0gICAgcHJp bnRmKCIgICAjOiAgICAgICAgICAgICAgICAgdHlwZSBuYW1lICAgICAgICAgICAgICAgIgotLQkg ICAgIiUqcyAgICUtKnMgKCBzaXplIClcbiIsIGosICJsZW5ndGgiLCBqLCAiYmFzZSIpOwotKyNp ZmRlZiBfX21jNjgwMDBfXwotKyAgICBwcmludGYoIiUqcyAgdHlwZSBuYW1lICAgICAgICAgIgot KwkgICAgIiUqcyAgICUtKnMgKCBzaXplICkgIHN5c3RlbVxuIiwgc3RybGVuKG1hcC0+bmFtZSkr MSwgIiMiLCBqLCAibGVuZ3RoIiwgaiwgImJhc2UiKTsKLSsjZWxzZQotKyAgICBwcmludGYoIiUq cyAgICAgICAgICAgICAgICAgICAgdHlwZSBuYW1lICAgICAgICAgICAgICAgIgotKwkgICAgIiUq cyAgICUtKnMgKCBzaXplICkgIHN5c3RlbVxuIiwgc3RybGVuKG1hcC0+bmFtZSkrMSwgIiMiLCBq LCAibGVuZ3RoIiwgaiwgImJhc2UiKTsKLSsjZW5kaWYKKyAKKyt2b2lkCisrZG9fY3JlYXRlX2Jv b3RzdHJhcF9wYXJ0aXRpb24ocGFydGl0aW9uX21hcF9oZWFkZXIgKm1hcCkKKyt7CisrICAgIGxv bmcgYmFzZTsKICsKLSsgICAgLyogR3JvayBkZXZmcyBuYW1lcy4gKGNvdXJ0ZXN5IENvbGluIFdh bHRlcnMpKi8KKysgICAgaWYgKG1hcCA9PSBOVUxMKSB7CisrCWJhZF9pbnB1dCgiTm8gcGFydGl0 aW9uIG1hcCBleGlzdHMiKTsKKysJcmV0dXJuOworKyAgICB9CisrIAorKyAgICBpZiAoIXJmbGFn ICYmIG1hcC0+d3JpdGVhYmxlID09IDApIHsKKysJcHJpbnRmKCJUaGUgbWFwIGlzIG5vdCB3cml0 ZWFibGUuXG4iKTsKKysgICAgfQogKwotKyAgICBsZW4gPSBzdHJsZW4obWFwLT5uYW1lKTsKLSsg ICAgYnVmID0gc3RyZHVwKG1hcC0+bmFtZSk7Ci0rICAgIGlmIChsZW4gPj0gNCAmJiAhc3RyY21w KGJ1ZitsZW4tNCwgImRpc2MiKSkgewotKwlzdHJjcHkoYnVmK2xlbi00LCAicGFydCIpOworKyAg ICAvLyBYWFggYWRkIGhlbHAgZmVhdHVyZSAoaS5lLiAnPycgaW4gYW55IGFyZ3VtZW50IHJvdXRp bmUgcHJpbnRzIGhlbHAgc3RyaW5nKQorKyAgICBpZiAoZ2V0X2Jhc2VfYXJndW1lbnQoJmJhc2Us IG1hcCkgPT0gMCkgeworKwlyZXR1cm47CiArICAgIH0KKysKKysgICAgLy8gY3JlYXRlIDgwMEsg dHlwZSBBcHBsZV9Cb290c3RyYXAgcGFydGl0aW9uIG5hbWVkIGBib290c3RyYXAnCisrICAgIGFk ZF9wYXJ0aXRpb25fdG9fbWFwKGtCb290c3RyYXBOYW1lLCBrQm9vdHN0cmFwVHlwZSwgYmFzZSwg MTYwMCwgbWFwKTsKKyt9CisrCisrCisgaW50CisgZ2V0X2Jhc2VfYXJndW1lbnQobG9uZyAqbnVt YmVyLCBwYXJ0aXRpb25fbWFwX2hlYWRlciAqbWFwKQorIHsKK0BAIC01MDgsNyArNTQwLDcgQEAK KyAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgIGxvbmcgbXVsdGlwbGU7CiAgCi0gICAgIGlmIChk aXNrX29yZGVyKSB7Ci0gCWZvciAoZW50cnkgPSBtYXAtPmRpc2tfb3JkZXI7IGVudHJ5ICE9IE5V TEw7Ci0gCQllbnRyeSA9IGVudHJ5LT5uZXh0X29uX2Rpc2spIHsKLSAKLS0JICAgIGR1bXBfcGFy dGl0aW9uX2VudHJ5KGVudHJ5LCBqKTsKLSsJICAgIGR1bXBfcGFydGl0aW9uX2VudHJ5KGVudHJ5 LCBqLCBidWYpOwotIAl9CistICAgIGlmIChnZXRfbnVtYmVyX2FyZ3VtZW50KCJMZW5ndGggaW4g YmxvY2tzOiAiLCBudW1iZXIsIGtEZWZhdWx0KSA9PSAwKSB7CisrICAgIGlmIChnZXRfbnVtYmVy X2FyZ3VtZW50KCJMZW5ndGggKGluIGJsb2Nrcywga0IgKGspLCBNQiAoTSkgb3IgR0IgKEcpKTog IiwgbnVtYmVyLCBrRGVmYXVsdCkgPT0gMCkgeworIAliYWRfaW5wdXQoIkJhZCBsZW5ndGgiKTsK ICAgICAgfSBlbHNlIHsKLSAJZm9yIChlbnRyeSA9IG1hcC0+YmFzZV9vcmRlcjsgZW50cnkgIT0g TlVMTDsKLSAJCWVudHJ5ID0gZW50cnktPm5leHRfYnlfYmFzZSkgewotIAotLQkgICAgZHVtcF9w YXJ0aXRpb25fZW50cnkoZW50cnksIGopOwotKwkgICAgZHVtcF9wYXJ0aXRpb25fZW50cnkoZW50 cnksIGosIGJ1Zik7Ci0gCX0KKyAJcmVzdWx0ID0gMTsKK0BAIC02MDUsMTMgKzYzNywyMiBAQAor IAliYWRfaW5wdXQoIlRoZSBtYXAgaXMgbm90IHdyaXRlYWJsZS4iKTsKKyAJcmV0dXJuOworICAg ICB9CistICAgIHByaW50ZigiV3JpdGluZyB0aGUgbWFwIGRlc3Ryb3lzIHdoYXQgd2FzIHRoZXJl IGJlZm9yZS4gIik7CistICAgIGlmIChnZXRfb2theSgiSXMgdGhhdCBva2F5PyBbbi95XTogIiwg MCkgIT0gMSkgeworKy8vICAgIHByaW50ZigiV3JpdGluZyB0aGUgbWFwIGRlc3Ryb3lzIHdoYXQg d2FzIHRoZXJlIGJlZm9yZS4gIik7CisrICAgIHByaW50ZigiSU1QT1JUQU5UOiBZb3UgYXJlIGFi b3V0IHRvIHdyaXRlIGEgY2hhbmdlZCBwYXJ0aXRpb24gbWFwIHRvIGRpc2suIFxuIik7CisrICAg IHByaW50ZigiRm9yIGFueSBwYXJ0aXRpb24geW91IGNoYW5nZWQgdGhlIHN0YXJ0IG9yIHNpemUg b2YsIHdyaXRpbmcgb3V0IFxuIik7CisrICAgIHByaW50ZigidGhlIG1hcCBjYXVzZXMgYWxsIGRh dGEgb24gdGhhdCBwYXJ0aXRpb24gdG8gYmUgTE9TVCBGT1JFVkVSLiBcbiIpOworKyAgICBwcmlu dGYoIk1ha2Ugc3VyZSB5b3UgaGF2ZSBhIGJhY2t1cCBvZiBhbnkgZGF0YSBvbiBzdWNoIHBhcnRp dGlvbnMgeW91IFxuIik7CisrICAgIHByaW50Zigid2FudCB0byBrZWVwIGJlZm9yZSBhbnN3ZXJp bmcgJ3llcycgdG8gdGhlIHF1ZXN0aW9uIGJlbG93ISBcblxuIik7CisrICAgIGlmIChnZXRfb2th eSgiV3JpdGUgcGFydGl0aW9uIG1hcD8gW24veV06ICIsIDApICE9IDEpIHsKKyAJcmV0dXJuOwog ICAgICB9Ci0gICAgIGR1bXBfYmxvY2tfemVybyhtYXApOwotQEAgLTE3MCwxOCArMTk2LDIzIEBA Ci0gCiAgCi0gdm9pZAotLWR1bXBfcGFydGl0aW9uX2VudHJ5KHBhcnRpdGlvbl9tYXAgKmVudHJ5 LCBpbnQgZGlnaXRzKQotK2R1bXBfcGFydGl0aW9uX2VudHJ5KHBhcnRpdGlvbl9tYXAgKmVudHJ5 LCBpbnQgZGlnaXRzLCBjaGFyICpkZXYpCi0gewotICAgICBwYXJ0aXRpb25fbWFwX2hlYWRlciAq bWFwOwotICAgICBpbnQgajsKLSAgICAgRFBNRSAqcDsKLSAgICAgQlpCICpicDsKLSAgICAgY2hh ciAqczsKLSsjaWZkZWYgX19tYzY4MDAwX18KLSsgICAgaW50IGFmbGFnID0gMTsKLSsjZWxzZQot ICAgICBpbnQgYWZsYWcgPSAwOwotKyNlbmRpZgotICAgICBpbnQgcGZsYWcgPSAxOwotICAgICB1 MzIgc2l6ZTsKLSAgICAgZG91YmxlIGJ5dGVzOworICAgICB3cml0ZV9wYXJ0aXRpb25fbWFwKG1h cCk7CiAgCisrICAgIHByaW50ZigiXG5QYXJ0aXRpb24gbWFwIHdyaXR0ZW4gdG8gZGlzay4gSWYg YW55IHBhcnRpdGlvbnMgb24gdGhpcyBkaXNrIFxuIik7CisrICAgIHByaW50Zigid2VyZSBzdGls bCBpbiB1c2UgYnkgdGhlIHN5c3RlbSAoc2VlIG1lc3NhZ2VzIGFib3ZlKSwgeW91IHdpbGwgbmVl ZCBcbiIpOworKyAgICBwcmludGYoInRvIHJlYm9vdCBpbiBvcmRlciB0byB1dGlsaXplIHRoZSBu ZXcgcGFydGl0aW9uIG1hcC5cblxuIik7CiArCi0gICAgIG1hcCA9IGVudHJ5LT50aGVfbWFwOwot ICAgICBwID0gZW50cnktPmRhdGE7Ci0gICAgIGlmIChhZmxhZykgewotQEAgLTE5Miw5ICsyMjMs MTMgQEAKLSAJCWJyZWFrOwotIAkgICAgfQotIAl9Ci0tCXByaW50ZigiJTRkOiAlLjRzICUtMTgu MzJzICIsIGVudHJ5LT5kaXNrX2FkZHJlc3MsIHMsIHAtPmRwbWVfbmFtZSk7Ci0rI2lmZGVmIF9f bWM2ODAwMF9fCi0rCXByaW50ZigiJXMlLTJkICUuNHMgJS0xMi4xMnMgIiwgZGV2LCBlbnRyeS0+ ZGlza19hZGRyZXNzLCBzLCBwLT5kcG1lX25hbWUpOwotKyNlbHNlCi0rCXByaW50ZigiJXMlLTRk ICAlLjRzICUtMTguMzJzICIsIGRldiwgZW50cnktPmRpc2tfYWRkcmVzcywgcywgcC0+ZHBtZV9u YW1lKTsKLSsjZW5kaWYKLSAgICAgfSBlbHNlIHsKLS0JcHJpbnRmKCIlNGQ6ICUyMC4zMnMgJS0x OC4zMnMgIiwKLSsJcHJpbnRmKCIlcyUtNGQgJTIwLjMycyAlLTE4LjMycyAiLCBkZXYsIAotIAkJ ZW50cnktPmRpc2tfYWRkcmVzcywgcC0+ZHBtZV90eXBlLCBwLT5kcG1lX25hbWUpOwotICAgICB9 Ci0gCi1AQCAtMjE3LDcgKzI1MiwxMCBAQAotIAlwcmludGYoIkB+JS0qdSIsIGRpZ2l0cywgcC0+ ZHBtZV9wYmxvY2tfc3RhcnQgKyBwLT5kcG1lX2xibG9ja19zdGFydCk7Ci0gICAgIH0KLSAgICAg Ci0rICAgIGogPSAncyc7Ci0rCi0gICAgIGJ5dGVzID0gc2l6ZSAvIE9ORV9LSUxPQllURV9JTl9C TE9DS1M7Ci0rICAgIGogPSAnayc7Ci0gICAgIGlmIChieXRlcyA+PSAxMDI0LjApIHsKLSAJYnl0 ZXMgPSBieXRlcyAvIDEwMjQuMDsKLSAJaWYgKGJ5dGVzIDwgMTAyNC4wKSB7Ci1AQCAtMjI2LDU4 ICsyNjQsNDUgQEAKLSAJICAgIGJ5dGVzID0gYnl0ZXMgLyAxMDI0LjA7Ci0gCSAgICBqID0gJ0cn OwotIAl9Ci0tCXByaW50ZigiICglIzUuMWYlYykiLCBieXRlcywgaik7Ci0gICAgIH0KLSsgICAg cHJpbnRmKCIgKCUjNS4xZiVjKSAgIiwgYnl0ZXMsIGopOwotIAotLSNpZiAwCi0tICAgIC8vIE9s ZCBBL1VYIGZpZWxkcyB0aGF0IG5vIG9uZSBwYXlzIGF0dGVudGlvbiB0byBhbnltb3JlLgotLSAg ICBicCA9IChCWkIgKikgKHAtPmRwbWVfYnpiKTsKLS0gICAgaiA9IC0xOwotLSAgICBpZiAoYnAt PmJ6Yl9tYWdpYyA9PSBCWkJNQUdJQykgewotLQlzd2l0Y2ggKGJwLT5iemJfdHlwZSkgewotLQlj YXNlIEZTVEVGUzoKLS0JICAgIHMgPSAiRUZTIjsKLS0JICAgIGJyZWFrOwotLQljYXNlIEZTVFNG UzoKLS0JICAgIHMgPSAiU0ZTIjsKLS0JICAgIGogPSAxOwotLQkgICAgYnJlYWs7Ci0tCWNhc2Ug RlNUOgotLQlkZWZhdWx0OgotLQkgICAgaWYgKGJ6Yl9yb290X2dldChicCkgIT0gMCkgewotLQkJ aWYgKGJ6Yl91c3JfZ2V0KGJwKSAhPSAwKSB7Ci0tCQkgICAgcyA9ICJSVUZTIjsKLS0JCX0gZWxz ZSB7Ci0tCQkgICAgcyA9ICJSRlMiOwotLQkJfQotLQkJaiA9IDA7Ci0tCSAgICB9IGVsc2UgaWYg KGJ6Yl91c3JfZ2V0KGJwKSAhPSAwKSB7Ci0tCQlzID0gIlVGUyI7Ci0tCQlqID0gMjsKLS0JICAg IH0gZWxzZSB7Ci0tCQlzID0gIkZTIjsKLS0JICAgIH0KLS0JICAgIGJyZWFrOwotLQl9Ci0tCWlm IChiemJfc2xpY2VfZ2V0KGJwKSAhPSAwKSB7Ci0tCSAgICBwcmludGYoIiBzJTFkICU0cyIsIGJ6 Yl9zbGljZV9nZXQoYnApLTEsIHMpOwotLQl9IGVsc2UgaWYgKGogPj0gMCkgewotLQkgICAgcHJp bnRmKCIgUyUxZCAlNHMiLCBqLCBzKTsKLS0JfSBlbHNlIHsKLS0JICAgIHByaW50ZigiICAgICU0 cyIsIHMpOwotLQl9Ci0tCWlmIChiemJfY3JpdF9nZXQoYnApICE9IDApIHsKLS0JICAgIHByaW50 ZigiIEslMWQiLCBicC0+YnpiX2NsdXN0ZXIpOwotLQl9IGVsc2UgaWYgKGogPCAwKSB7Ci0tCSAg ICBwcmludGYoIiAgICIpOwotLQl9IGVsc2UgewotLQkgICAgcHJpbnRmKCIgayUxZCIsIGJwLT5i emJfY2x1c3Rlcik7Ci0tCX0KLS0JaWYgKGJwLT5iemJfbW91bnRfcG9pbnRbMF0gIT0gMCkgewot LQkgICAgcHJpbnRmKCIgICUuNjRzIiwgYnAtPmJ6Yl9tb3VudF9wb2ludCk7Ci0tCX0KLS0gICAg fQotLSNlbmRpZgotKyAgICBpZiAoIXN0cmNtcChwLT5kcG1lX3R5cGUsICJBcHBsZV9VTklYX1NW UjIiKSkKLSsgICAgewotKyAgICAgICAgIGlmICghc3RyY21wKHAtPmRwbWVfbmFtZSwgIlN3YXAi KSB8fCAhc3RyY21wKHAtPmRwbWVfbmFtZSwgInN3YXAiKSkKLSsgICAgICAgICAgICBwcmludGYo IkxpbnV4IHN3YXAiKTsKLSsgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgcHJpbnRmKCJMaW51 eCBuYXRpdmUiKTsKLSsgICAgfQotKyAgICBlbHNlCi0rICAgIGlmICghc3RyY21wKHAtPmRwbWVf dHlwZSwgIkFwcGxlX0Jvb3RzdHJhcCIpKQotKyAgICAgICAgIHByaW50ZigiTmV3V29ybGQgYm9v dGJsb2NrIik7Ci0rICAgIGVsc2UKLSsgICAgaWYgKCFzdHJjbXAocC0+ZHBtZV90eXBlLCAiQXBw bGVfU2NyYXRjaCIpKQotKyAgICAgICAgIHByaW50ZigiTGludXggc3dhcCIpOyAgLy9ub3QganVz dCBsaW51eCwgYnV0IHdobyBjYXJlcwotKyAgICBlbHNlCi0rICAgIGlmICghc3RyY21wKHAtPmRw bWVfdHlwZSwgIkFwcGxlX0hGUyIpKQotKyAgICAgICAgIHByaW50ZigiSEZTIik7Ci0rICAgIGVs c2UKLSsgICAgaWYgKCFzdHJjbXAocC0+ZHBtZV90eXBlLCAiQXBwbGVfTUZTIikpCi0rICAgICAg ICBwcmludGYoIk1GUyIpOwotKyAgICBlbHNlCi0rICAgIGlmICghc3RyY21wKHAtPmRwbWVfdHlw ZSwgIkFwcGxlX0RyaXZlciIpKQotKyAgICAgICAgcHJpbnRmKCJEcml2ZXIiKTsKLSsgICAgZWxz ZQotKyAgICBpZiAoIXN0cmNtcChwLT5kcG1lX3R5cGUsICJBcHBsZV9Ecml2ZXI0MyIpKQotKyAg ICAgICAgcHJpbnRmKCJEcml2ZXIgNC4zIik7Ci0rICAgIGVsc2UKLSsgICAgaWYgKCFzdHJjbXAo cC0+ZHBtZV90eXBlLCAiQXBwbGVfcGFydGl0aW9uX21hcCIpKQotKyAgICAgICAgcHJpbnRmKCJQ YXJ0aXRpb24gbWFwIik7Ci0rICAgIGVsc2UKLSsgICAgaWYgKCFzdHJjbXAocC0+ZHBtZV90eXBl LCAiQXBwbGVfUFJPRE9TIikpCi0rICAgICAgICBwcmludGYoIlByb0RPUyIpOwotKyAgICBlbHNl Ci0rICAgIGlmICghc3RyY21wKHAtPmRwbWVfdHlwZSwgIkFwcGxlX0ZyZWUiKSkKLSsgICAgICAg IHByaW50ZigiRnJlZSBzcGFjZSIpOwotKyAgICBlbHNlCi0rICAgICAgICBwcmludGYoIlVua25v d24iKTsKLSAgICAgcHJpbnRmKCJcbiIpOwotIH0KLSAKLUBAIC0zMTYsNiArMzQxLDI0IEBACi0g Ci0gCWR1bXAobmFtZSk7Ci0gICAgIH0KLSsjaWZkZWYgX19saW51eF9fCi0rICAgIGZvciAoaSA9 IDA7IGkgPCA0OyBpKyspIHsKLSsJc3ByaW50ZihuYW1lLCAiL2Rldi9oZCVjIiwgJ2EnK2kpOwot KwlpZiAoKGZkID0gb3Blbl9kZXZpY2UobmFtZSwgT19SRE9OTFkpKSA8IDApIHsKLSsJICAgIGlm IChlcnJubyA9PSBFQUNDRVMpIHsKLSsJCWVycm9yKGVycm5vLCAiY2FuJ3Qgb3BlbiBmaWxlICcl cyciLCBuYW1lKTsKLSsJICAgIH0KLSsJICAgIGNvbnRpbnVlOwotKwl9Ci0rCWlmIChyZWFkX2Js b2NrKGZkLCAxLCAoY2hhciAqKWRhdGEsIDEpID09IDApIHsKLSsJICAgIGNsb3NlX2RldmljZShm ZCk7Ci0rCSAgICBjb250aW51ZTsKLSsJfQotKwljbG9zZV9kZXZpY2UoZmQpOwotKwotKwlkdW1w KG5hbWUpOwotKyAgICB9Ci0rI2VuZGlmCi0gICAgIGZyZWUoZGF0YSk7Ci0gfQotIAotQEAgLTM4 NSw3ICs0MjgsNyBAQAotIAlwcmludGYoIiUyZDogJTIwLjMycyAiLAotIAkJZW50cnktPmRpc2tf YWRkcmVzcywgcC0+ZHBtZV90eXBlKTsKLSAJcHJpbnRmKCIlN3UgQCAlLTd1ICIsIHAtPmRwbWVf cGJsb2NrcywgcC0+ZHBtZV9wYmxvY2tfc3RhcnQpOwotLQlwcmludGYoIiVjJWMlYyVjJWMlYyVj JWMlYyAiLAotKwlwcmludGYoIiVjJWMlYyVjJWMlYyVjJWMlYyVjICIsCi0gCQkoZHBtZV92YWxp ZF9nZXQocCkpPydWJzondicsCi0gCQkoZHBtZV9hbGxvY2F0ZWRfZ2V0KHApKT8nQSc6J2EnLAot IAkJKGRwbWVfaW5fdXNlX2dldChwKSk/J0knOidpJywKLUBAIC0zOTQsNyArNDM3LDggQEAKLSAJ CShkcG1lX3dyaXRhYmxlX2dldChwKSk/J1cnOid3JywKLSAJCShkcG1lX29zX3BpY19jb2RlX2dl dChwKSk/J1AnOidwJywKLSAJCShkcG1lX29zX3NwZWNpZmljXzFfZ2V0KHApKT8nMSc6Jy4nLAot LQkJKGRwbWVfb3Nfc3BlY2lmaWNfMl9nZXQocCkpPycyJzonLicpOwotKwkJKGRwbWVfb3Nfc3Bl Y2lmaWNfMl9nZXQocCkpPycyJzonLicsCi0rCQkoZHBtZV9hdXRvbW91bnRfZ2V0KHApKT8nTSc6 J20nKTsKLSAJaWYgKHAtPmRwbWVfbGJsb2NrX3N0YXJ0ICE9IDAgfHwgcC0+ZHBtZV9wYmxvY2tz ICE9IHAtPmRwbWVfbGJsb2NrcykgewotIAkgICAgcHJpbnRmKCIoJXUgQCAldSkiLCBwLT5kcG1l X2xibG9ja3MsIHAtPmRwbWVfbGJsb2NrX3N0YXJ0KTsKLSAJfQotLS0tIGZkaXNrLmMKLSsrKyBm ZGlzay5jCi1AQCAtNjIsNyArNjIsNiBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVk ZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHN0cmluZy5oPgot ICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzZXRq bXAuaD4KLUBAIC03MSw5ICs3MCw5IEBACi0gCi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotIAot LSNpbmNsdWRlIDxsaW51eC9nZW5oZC5oPgotLSNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPgotLSNp bmNsdWRlIDxsaW51eC9mcy5oPgotK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rldl90OwkvKiBC QUQgaGFjazsga2Rldl90IGlzIG5vdCBleHBvcnRlZCAqLwotKwotKyNpbmNsdWRlICJrZXJuZWwt ZGVmcy5oIgotIAotICNpbmNsdWRlICJmZGlzay5oIgotIAotQEAgLTQyOCw3ICs0MjcsNyBAQAot IAkJb2Zmc2V0c1twYXJ0aXRpb25zXSA9IGV4dGVuZGVkX29mZnNldCArIFNXQVAzMihwLT5zdGFy dF9zZWN0KTsKLSAJCWlmICghZXh0ZW5kZWRfb2Zmc2V0KQotIAkJCWV4dGVuZGVkX29mZnNldCA9 IFNXQVAzMihwLT5zdGFydF9zZWN0KTsKLS0JCWlmIChsbHNlZWsoZmQsIChsb2ZmX3Qpb2Zmc2V0 c1twYXJ0aXRpb25zXQotKwkJaWYgKGxzZWVrNjQoZmQsIChsb2ZmX3Qpb2Zmc2V0c1twYXJ0aXRp b25zXQotIAkJCSAgICAgICAqIFNFQ1RPUl9TSVpFLCBTRUVLX1NFVCkgPCAwKQotIAkJCWZhdGFs KHVuYWJsZV90b19zZWVrKTsKLSAJCWlmICghKGJ1ZmZlcnNbcGFydGl0aW9uc10gPSAoY2hhciAq KSBtYWxsb2MoU0VDVE9SX1NJWkUpKSkKLUBAIC00MzgsMTQgKzQzNywxNCBAQAotIAkJcGFydF90 YWJsZVtwYXJ0aXRpb25zXSA9IGV4dF9wb2ludGVyc1twYXJ0aXRpb25zXSA9IE5VTEw7Ci0gCQlx ID0gcCA9IG9mZnNldChidWZmZXJzW3BhcnRpdGlvbnNdLCAwKTsKLSAJCWZvciAoaSA9IDA7IGkg PCA0OyBpKyssIHArKykgewotLQkJCWlmIChwLT5zeXNfaW5kID09IEVYVEVOREVEKQotKwkJCWlm IChwLT5zeXNfaW5kID09IEVYVEVOREVEKSB7Ci0gCQkJCWlmIChleHRfcG9pbnRlcnNbcGFydGl0 aW9uc10pCi0gCQkJCQlmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IGV4dHJhIGxpbmsgIgotIAkJ CQkJCSJwb2ludGVyIGluIHBhcnRpdGlvbiB0YWJsZSAiCi0gCQkJCQkJIiVkXG4iLCBwYXJ0aXRp b25zICsgMSk7Ci0gCQkJCWVsc2UKLSAJCQkJCWV4dF9wb2ludGVyc1twYXJ0aXRpb25zXSA9IHA7 Ci0tCQkJZWxzZSBpZiAocC0+c3lzX2luZCkKLSsJCQl9IGVsc2UgaWYgKHAtPnN5c19pbmQpIHsK LSAJCQkJaWYgKHBhcnRfdGFibGVbcGFydGl0aW9uc10pCi0gCQkJCQlmcHJpbnRmKHN0ZGVyciwK LSAJCQkJCQkiV2FybmluZzogaWdub3JpbmcgZXh0cmEgZGF0YSAiCi1AQCAtNDUzLDE1ICs0NTIs MTggQEAKLSAJCQkJCQlwYXJ0aXRpb25zICsgMSk7Ci0gCQkJCWVsc2UKLSAJCQkJCXBhcnRfdGFi bGVbcGFydGl0aW9uc10gPSBwOwotKwkJCX0KLSAJCX0KLS0JCWlmICghcGFydF90YWJsZVtwYXJ0 aXRpb25zXSkKLSsJCWlmICghcGFydF90YWJsZVtwYXJ0aXRpb25zXSkgewotIAkJCWlmIChxICE9 IGV4dF9wb2ludGVyc1twYXJ0aXRpb25zXSkKLSAJCQkJcGFydF90YWJsZVtwYXJ0aXRpb25zXSA9 IHE7Ci0gCQkJZWxzZSBwYXJ0X3RhYmxlW3BhcnRpdGlvbnNdID0gcSArIDE7Ci0tCQlpZiAoIWV4 dF9wb2ludGVyc1twYXJ0aXRpb25zXSkKLSsJCX0KLSsJCWlmICghZXh0X3BvaW50ZXJzW3BhcnRp dGlvbnNdKSB7Ci0gCQkJaWYgKHEgIT0gcGFydF90YWJsZVtwYXJ0aXRpb25zXSkKLSAJCQkJZXh0 X3BvaW50ZXJzW3BhcnRpdGlvbnNdID0gcTsKLSAJCQllbHNlIGV4dF9wb2ludGVyc1twYXJ0aXRp b25zXSA9IHEgKyAxOwotKwkJfQotIAkJcCA9IGV4dF9wb2ludGVyc1twYXJ0aXRpb25zKytdOwot IAl9Ci0gfQotQEAgLTQ5NywxMSArNDk5LDEyIEBACi0gCXdhcm5fZ2VvbWV0cnkoKTsKLSAKLSAJ Zm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLS0JCWlmKHBhcnRfdGFibGVbaV0tPnN5c19pbmQgPT0g RVhURU5ERUQpCi0rCQlpZihwYXJ0X3RhYmxlW2ldLT5zeXNfaW5kID09IEVYVEVOREVEKSB7Ci0g CQkJaWYgKHBhcnRpdGlvbnMgIT0gNCkKLSAJCQkJZnByaW50ZihzdGRlcnIsICJJZ25vcmluZyBl eHRyYSBleHRlbmRlZCAiCi0gCQkJCQkicGFydGl0aW9uICVkXG4iLCBpICsgMSk7Ci0gCQkJZWxz ZSByZWFkX2V4dGVuZGVkKHBhcnRfdGFibGVbZXh0X2luZGV4ID0gaV0pOwotKwkJfQotIAotIAlm b3IgKGkgPSAzOyBpIDwgcGFydGl0aW9uczsgaSsrKQotIAkJaWYgKFNXQVAxNigqdGFibGVfY2hl Y2soYnVmZmVyc1tpXSkpICE9IFBBUlRfVEFCTEVfRkxBRykgewotQEAgLTYyMSw2ICs2MjQsNyBA QAotIAkJCWNhc2UgbG93ZXI6IGkgKz0gbG93OyBicmVhazsKLSAJCQljYXNlIHVwcGVyOiBpICs9 IGhpZ2g7IGJyZWFrOwotIAkJCWNhc2UgZGVmbHQ6IGkgKz0gZGZsdDsgYnJlYWs7Ci0rCQkJZGVm YXVsdDogYnJlYWs7Ci0gCQkJfQotIAkJfQotIAkJZWxzZQotQEAgLTg0NCwxMiArODQ4LDEyIEBA Ci0gCQlyZXR1cm47CQkvKiBkbyBub3QgY2hlY2sgZXh0ZW5kZWQgcGFydGl0aW9ucyAqLwotIAot IC8qIHBoeXNpY2FsIGJlZ2lubmluZyBjLCBoLCBzICovCi0tCXBiYyA9IHAtPmN5bCAmIDB4ZmYg fCAocC0+c2VjdG9yIDw8IDIpICYgMHgzMDA7Ci0rCXBiYyA9IChwLT5jeWwgJiAweGZmKSB8ICgo cC0+c2VjdG9yIDw8IDIpICYgMHgzMDApOwotIAlwYmggPSBwLT5oZWFkOwotIAlwYnMgPSBwLT5z ZWN0b3IgJiAweDNmOwotIAotIC8qIHBoeXNpY2FsIGVuZGluZyBjLCBoLCBzICovCi0tCXBlYyA9 IHAtPmVuZF9jeWwgJiAweGZmIHwgKHAtPmVuZF9zZWN0b3IgPDwgMikgJiAweDMwMDsKLSsJcGVj ID0gKHAtPmVuZF9jeWwgJiAweGZmKSB8ICgocC0+ZW5kX3NlY3RvciA8PCAyKSAmIDB4MzAwKTsK LSAJcGVoID0gcC0+ZW5kX2hlYWQ7Ci0gCXBlcyA9IHAtPmVuZF9zZWN0b3IgJiAweDNmOwotIAot QEAgLTk0MSw3ICs5NDUsNyBAQAotIAkJZGlza19kZXZpY2UsIGhlYWRzLCBzZWN0b3JzLCBjeWxp bmRlcnMpOwotICAgICAgICAgcHJpbnRmKCJOciBBRiAgSGQgU2VjICBDeWwgIEhkIFNlYyAgQ3ls ICAgU3RhcnQgICAgU2l6ZSBJRFxuIik7Ci0gCWZvciAoaSA9IDAgOyBpIDwgcGFydGl0aW9uczsg aSsrKQotLQkJaWYgKHAgPSBxW2ldKSB7Ci0rCQlpZiAoKHAgPSBxW2ldKSkgewotICAgICAgICAg ICAgICAgICAgICAgICAgIHByaW50ZigiJTJkICUwMnglNGQlNGQlNWQlNGQlNGQlNWQlOGQlOGQg JTAyeFxuIiwKLSAJCQkJaSArIDEsIHAtPmJvb3RfaW5kLCBwLT5oZWFkLAotIAkJCQlzZWN0b3Io cC0+c2VjdG9yKSwKLUBAIC0xMDI2LDcgKzEwMzAsNyBAQAotIAkJCQlsYXN0W2ldKTsKLSAJCQl0 b3RhbCArPSBsYXN0W2ldICsgMSAtIGZpcnN0W2ldOwotIAkJCWZvciAoaiA9IDA7IGogPCBpOyBq KyspCi0tCQkJaWYgKGZpcnN0W2ldID49IGZpcnN0W2pdICYmIGZpcnN0W2ldIDw9IGxhc3Rbal0K LSsJCQlpZiAoKGZpcnN0W2ldID49IGZpcnN0W2pdICYmIGZpcnN0W2ldIDw9IGxhc3Rbal0pCi0g CQkJCQl8fCAobGFzdFtpXSA8PSBsYXN0W2pdICYmCi0gCQkJCQlsYXN0W2ldID49IGZpcnN0W2pd KSkgewotIAkJCQlwcmludGYoIldhcm5pbmc6IHBhcnRpdGlvbiAlZCBvdmVybGFwcyAiCi1AQCAt MTA2MCwxMSArMTA2NCwxMSBAQAotIAlpZiAodG90YWwgPiBoZWFkcyAqIHNlY3RvcnMgKiBjeWxp bmRlcnMpCi0gCQlwcmludGYoIlRvdGFsIGFsbG9jYXRlZCBzZWN0b3JzICVkIGdyZWF0ZXIgdGhh biB0aGUgbWF4aW11bSAiCi0gCQkJIiVkXG4iLCB0b3RhbCwgaGVhZHMgKiBzZWN0b3JzICogY3ls aW5kZXJzKTsKLS0JZWxzZSBpZiAodG90YWwgPSBoZWFkcyAqIHNlY3RvcnMgKiBjeWxpbmRlcnMg LSB0b3RhbCkKLSsJZWxzZSBpZiAoKHRvdGFsID0gaGVhZHMgKiBzZWN0b3JzICogY3lsaW5kZXJz IC0gdG90YWwpKQotIAkJcHJpbnRmKCIlZCB1bmFsbG9jYXRlZCBzZWN0b3JzXG4iLCB0b3RhbCk7 Ci0gfQotIAotLXZvaWQgYWRkX3BhcnRpdGlvbihpbnQgbiwgaW50IHN5cykKLStzdGF0aWMgdm9p ZCBhZGRfcGFydGl0aW9uKGludCBuLCBpbnQgc3lzKQotIHsKLSAJY2hhciBtZXNnWzQ4XTsKLSAJ aW50IGksIHJlYWQgPSAwOwotQEAgLTExMDAsMTEgKzExMDQsMTIgQEAKLSAJCWZvciAoaSA9IDA7 IGkgPCBwYXJ0aXRpb25zOyBpKyspIHsKLSAJCQlpZiAoc3RhcnQgPT0gb2Zmc2V0c1tpXSkKLSAJ CQkJc3RhcnQgKz0gc2VjdG9yX29mZnNldDsKLS0JCQlpZiAoc3RhcnQgPj0gZmlyc3RbaV0gJiYg c3RhcnQgPD0gbGFzdFtpXSkKLSsJCQlpZiAoc3RhcnQgPj0gZmlyc3RbaV0gJiYgc3RhcnQgPD0g bGFzdFtpXSkgewotIAkJCQlpZiAobiA8IDQpCi0gCQkJCQlzdGFydCA9IGxhc3RbaV0gKyAxOwot IAkJCQllbHNlCi0gCQkJCQlzdGFydCA9IGxhc3RbaV0gKyBzZWN0b3Jfb2Zmc2V0OwotKwkJCX0K LSAJCX0KLSAJCWlmIChzdGFydCA+IGxpbWl0KQotIAkJCWJyZWFrOwotQEAgLTEyNDksNyArMTI1 NCw3IEBACi0gCWZvciAoaSA9IDM7IGkgPCBwYXJ0aXRpb25zOyBpKyspCi0gCQlpZiAoY2hhbmdl ZFtpXSkgewotIAkJCSp0YWJsZV9jaGVjayhidWZmZXJzW2ldKSA9IFNXQVAxNihQQVJUX1RBQkxF X0ZMQUcpOwotLQkJCWlmIChsbHNlZWsoZmQsIChsb2ZmX3Qpb2Zmc2V0c1tpXQotKwkJCWlmIChs c2VlazY0KGZkLCAobG9mZl90KW9mZnNldHNbaV0KLSAJCQkJCSogU0VDVE9SX1NJWkUsIFNFRUtf U0VUKSA8IDApCi0gCQkJCWZhdGFsKHVuYWJsZV90b19zZWVrKTsKLSAJCQlpZiAod3JpdGUoZmQs IGJ1ZmZlcnNbaV0sIFNFQ1RPUl9TSVpFKSAhPSBTRUNUT1JfU0laRSkKLUBAIC0xMjYyLDcgKzEy NjcsNyBAQAotIAkgICAgICAgIihSZWJvb3QgdG8gZW5zdXJlIHRoZSBwYXJ0aXRpb24gdGFibGUg aGFzIGJlZW4gdXBkYXRlZC4pXG4iKTsKLSAJc3luYygpOwotIAlzbGVlcCgyKTsKLS0JaWYgKGkg PSBpb2N0bChmZCwgQkxLUlJQQVJUKSkgewotKwlpZiAoKGkgPSBpb2N0bChmZCwgQkxLUlJQQVJU KSkpIHsKLSAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJubzsKLSAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgIC8qIHNvbWUga2VybmVsIHZlcnNpb25zICgxLjIueCkgc2VlbSB0 byBoYXZlIHRyb3VibGUKLUBAIC0xMjcwLDcgKzEyNzUsNyBAQAotIAkJICAgdHdpY2UsIHRoZSBz ZWNvbmQgdGltZSB3b3Jrcy4gLSBiaXJvQHlnZ2RyYXNpbC5jb20gKi8KLSAgICAgICAgICAgICAg ICAgc3luYygpOwotICAgICAgICAgICAgICAgICBzbGVlcCgyKTsKLS0gICAgICAgICAgICAgICAg aWYoaSA9IGlvY3RsKGZkLCBCTEtSUlBBUlQpKQotKyAgICAgICAgICAgICAgICBpZigoaSA9IGlv Y3RsKGZkLCBCTEtSUlBBUlQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVy cm5vOwotICAgICAgICAgfQotIAotQEAgLTEzOTEsNyArMTM5Niw3IEBACi0gdm9pZCB0cnkoY2hh ciAqZGV2aWNlKQotIHsKLSAJZGlza19kZXZpY2UgPSBkZXZpY2U7Ci0tCWlmICghc2V0am1wKGxp c3RpbmdidWYpKQotKwlpZiAoIXNldGptcChsaXN0aW5nYnVmKSkgewotIAkJaWYgKChmZCA9IG9w ZW4oZGlza19kZXZpY2UsIHR5cGVfb3BlbikpID49IDApIHsKLSAJCQljbG9zZShmZCk7Ci0gCQkJ Z2V0X2Jvb3QoKTsKLUBAIC0xNDA3LDYgKzE0MTIsNyBAQAotIAkJICAgIGV4aXQoMSk7Ci0gCQkg fQotIAkgICAgICB9Ci0rCX0KKyAgICAgLy8gZXhpdCgwKTsKICB9CiAgCi0gdm9pZCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKLS0tLSBmZGlza2xhYmVsLmMKLSsrKyBmZGlza2xhYmVsLmMK LUBAIC0zOCw3ICszOCw2IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRp by5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1 ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHNldGptcC5oPgot QEAgLTQ3LDkgKzQ2LDcgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5 cy9wYXJhbS5oPgotIAotLSNpbmNsdWRlIDxsaW51eC9nZW5oZC5oPgotLSNpbmNsdWRlIDxsaW51 eC9oZHJlZy5oPgotLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotKyNpbmNsdWRlICJrZXJuZWwtZGVm cy5oIgotIAotICNpbmNsdWRlICJmZGlzay5oIgotICNkZWZpbmUgREtUWVBFTkFNRVMKLUBAIC0z NzcsNyArMzc0LDcgQEAKLSAgICAgewotICNpZiBkZWZpbmVkIChpMzg2KQotICAgICAgIGlmIChi c2RfaW5pdGxhYmVsIChic2RfcGFydCwgJmJzZF9kbGFiZWwsIGJzZF9wYXJ0X2luZGV4KSA9PSAx KQotLSNlbGlmIGRlZmluZWQgKF9fYWxwaGFfXykgfHwgZGVmaW5lZCAoX19wb3dlcnBjX18pCi0r I2VsaWYgZGVmaW5lZCAoX19hbHBoYV9fKSB8fCBkZWZpbmVkIChfX3Bvd2VycGNfXykgfHwgZGVm aW5lZCAoX19tYzY4MDAwX18pCi0gICAgICAgaWYgKGJzZF9pbml0bGFiZWwgKE5VTEwsICZic2Rf ZGxhYmVsLCAwKSA9PSAxKQotICNlbmRpZgotICAgICAgIHsKLUBAIC01MTUsNyArNTEyLDcgQEAK LSAgIGFscGhhX2Jvb3RibG9ja19jaGVja3N1bSAoYnVmZmVyKTsKLSAjZW5kaWYKLSAKLS0gIGlm IChsbHNlZWsgKGZkLCBzZWN0b3IgKiBTRUNUT1JfU0laRSwgU0VFS19TRVQpID09IC0xKQotKyAg aWYgKGxzZWVrNjQgKGZkLCBzZWN0b3IgKiBTRUNUT1JfU0laRSwgU0VFS19TRVQpID09IC0xKQot ICAgICBmYXRhbCAodW5hYmxlX3RvX3NlZWspOwotICAgaWYgKEJTRF9CQlNJWkUgIT0gd3JpdGUg KGZkLCBidWZmZXIsIEJTRF9CQlNJWkUpKQotICAgICBmYXRhbCAodW5hYmxlX3RvX3dyaXRlKTsK LUBAIC02NzksNyArNjc2LDcgQEAKLSAgIHNlY3RvciA9IDA7Ci0gI2VuZGlmCi0gCi0tICBpZiAo bGxzZWVrIChmZCwgc2VjdG9yICogU0VDVE9SX1NJWkUsIFNFRUtfU0VUKSA9PSAtMSkKLSsgIGlm IChsc2VlazY0IChmZCwgc2VjdG9yICogU0VDVE9SX1NJWkUsIFNFRUtfU0VUKSA9PSAtMSkKLSAg ICAgZmF0YWwgKHVuYWJsZV90b19zZWVrKTsKLSAgIGlmIChCU0RfQkJTSVpFICE9IHJlYWQgKGZk LCBidWZmZXIsIEJTRF9CQlNJWkUpKQotICAgICBmYXRhbCAodW5hYmxlX3RvX3JlYWQpOwotQEAg LTcyNCwxMiArNzIxLDEyIEBACi0gCi0gI2lmIGRlZmluZWQgKF9fYWxwaGFfXykgJiYgQlNEX0xB QkVMU0VDVE9SID09IDAKLSAgIGFscGhhX2Jvb3RibG9ja19jaGVja3N1bSAoYnVmZmVyKTsKLS0g IGlmIChsbHNlZWsgKGZkLCAwLCBTRUVLX1NFVCkgPT0gLTEpCi0rICBpZiAobHNlZWs2NCAoZmQs IDAsIFNFRUtfU0VUKSA9PSAtMSkKLSAgICAgZmF0YWwgKHVuYWJsZV90b19zZWVrKTsKLSAgIGlm IChCU0RfQkJTSVpFICE9IHdyaXRlIChmZCwgYnVmZmVyLCBCU0RfQkJTSVpFKSkKLSAgICAgZmF0 YWwgKHVuYWJsZV90b193cml0ZSk7Ci0gI2Vsc2UKLS0gIGlmIChsbHNlZWsgKGZkLCBzZWN0b3Ig KiBTRUNUT1JfU0laRSArIEJTRF9MQUJFTE9GRlNFVCwgU0VFS19TRVQpID09IC0xKQotKyAgaWYg KGxzZWVrNjQgKGZkLCBzZWN0b3IgKiBTRUNUT1JfU0laRSArIEJTRF9MQUJFTE9GRlNFVCwgU0VF S19TRVQpID09IC0xKQotICAgICBmYXRhbCAodW5hYmxlX3RvX3NlZWspOwotICAgaWYgKHNpemVv ZiAoc3RydWN0IGRpc2tsYWJlbCkgIT0gd3JpdGUgKGZkLCBkLCBzaXplb2YgKHN0cnVjdCBkaXNr bGFiZWwpKSkKLSAgICAgZmF0YWwgKHVuYWJsZV90b193cml0ZSk7Ci0tLS0gZmRpc2tsYWJlbC5o Ci0rKysgZmRpc2tsYWJlbC5oCi1AQCAtNTIsNiArNTIsMTIgQEAKLSAjZGVmaW5lIEJTRF9MQUJF TE9GRlNFVCAgIDAKLSAjZGVmaW5lCUJTRF9CQlNJWkUgICAgICAgIDAKLSAjZGVmaW5lCUJTRF9T QlNJWkUgICAgICAgIDAKLSsjZWxpZiBkZWZpbmVkIChfX21jNjgwMDBfXykKLSsvKiBMQUJFTFNF Q1RPUiwgTEFCRUxPRkZTRVQsIEJCU0laRSAmIFNCU0laRSBhcmUgdW5kZWZpbmVkIGZvciBfX3Bv d2VycGNfXyAqLwotKyNkZWZpbmUgQlNEX0xBQkVMU0VDVE9SICAgMAotKyNkZWZpbmUgQlNEX0xB QkVMT0ZGU0VUICAgMAotKyNkZWZpbmUJQlNEX0JCU0laRSAgICAgICAgMAotKyNkZWZpbmUJQlNE X1NCU0laRSAgICAgICAgMAotICNlbHNlCi0gI2Vycm9yIHVua25vd24gYXJjaGl0ZWN0dXJlCi0g I2VuZGlmCi0tLS0gaW8uYwotKysrIGlvLmMKLUBAIC0zMCw2ICszMCwxMCBAQAotICNpbmNsdWRl IDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8U0NTSS5oPgotKyNl bHNlCi0rI2lmZGVmIF9fR0xJQkNfXwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjZW5kaWYK LSAjZW5kaWYKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotQEAg LTUxLDYgKzU1LDggQEAKLSAjZGVmaW5lIFNDU0lfRkQgOAotICNkZWZpbmUgbG9mZl90IGxvbmcK LSAjZGVmaW5lIGxsc2VlayBsc2VlawotKyNlbHNlCi0rI2RlZmluZSBsbHNlZWsgbHNlZWs2NAot ICNlbmRpZgotIAotIAotQEAgLTQzNSw4ICs0NDEsOCBAQAotICNlbHNlCi0gICAgIHsKLSAjZW5k aWYKLS0JeCA9IG51bSAqIFBCTE9DS19TSVpFOwotLQlpZiAoKHggPSBsbHNlZWsoZmQsIHgsIDAp KSA8IDApIHsKLSsJeCA9ICgobG9uZyBsb25nKSBudW0gKiBQQkxPQ0tfU0laRSk7IC8qIGNhc3Qg dG8gbGwgdG8gd29yayBhcm91bmQgY29tcGlsZXIgYnVnICovCi0rCWlmICgoeCA9IGxzZWVrNjQo ZmQsIHgsIDApKSA8IDApIHsKLSAJICAgIGlmIChxdWlldCA9PSAwKSB7Ci0gCQllcnJvcihlcnJu bywgIkNhbid0IHNlZWsgb24gZmlsZSIpOwotIAkgICAgfQotLS0tIGtlcm5lbC1kZWZzLmgKLSsr KyBrZXJuZWwtZGVmcy5oCi1AQCAtMCwwICsxLDY0IEBACi0rLyogZnJvbSBhc20vdHlwZXMuaCAq LwotK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTY7Ci0rdHlwZWRlZiB1bnNpZ25lZCBpbnQg X191MzI7Ci0rCi0rLyogZnJvbSBsaW51eC9oZHJlZy5oICovCi0rI2RlZmluZSBIRElPX0dFVEdF TwkJMHgwMzAxCS8qIGdldCBkZXZpY2UgZ2VvbWV0cnkgKi8KLSsKLStzdHJ1Y3QgaGRfZ2VvbWV0 cnkgewotKyAgICAgIHVuc2lnbmVkIGNoYXIgaGVhZHM7Ci0rICAgICAgdW5zaWduZWQgY2hhciBz ZWN0b3JzOwotKyAgICAgIHVuc2lnbmVkIHNob3J0IGN5bGluZGVyczsKLSsgICAgICB1bnNpZ25l ZCBsb25nIHN0YXJ0OwotK307Ci0rCi0rLyogZnJvbSBhc20vaW9jdGwuaCAqLwotKyNkZWZpbmUg X0lPQ19OUkJJVFMJOAotKyNkZWZpbmUgX0lPQ19UWVBFQklUUwk4Ci0rI2RlZmluZSBfSU9DX1NJ WkVCSVRTCTEzCi0rI2RlZmluZSBfSU9DX0RJUkJJVFMJMwotKwotKyNkZWZpbmUgX0lPQ19OUk1B U0sJKCgxIDw8IF9JT0NfTlJCSVRTKS0xKQotKyNkZWZpbmUgX0lPQ19UWVBFTUFTSwkoKDEgPDwg X0lPQ19UWVBFQklUUyktMSkKLSsjZGVmaW5lIF9JT0NfU0laRU1BU0sJKCgxIDw8IF9JT0NfU0la RUJJVFMpLTEpCi0rI2RlZmluZSBfSU9DX0RJUk1BU0sJKCgxIDw8IF9JT0NfRElSQklUUyktMSkK LSsKLSsjZGVmaW5lIF9JT0NfTlJTSElGVAkwCi0rI2RlZmluZSBfSU9DX1RZUEVTSElGVAkoX0lP Q19OUlNISUZUK19JT0NfTlJCSVRTKQotKyNkZWZpbmUgX0lPQ19TSVpFU0hJRlQJKF9JT0NfVFlQ RVNISUZUK19JT0NfVFlQRUJJVFMpCi0rI2RlZmluZSBfSU9DX0RJUlNISUZUCShfSU9DX1NJWkVT SElGVCtfSU9DX1NJWkVCSVRTKQotKwotKyNpZmRlZiBfX3Bvd2VycGNfXwotKyNkZWZpbmUgX0lP Q19OT05FCTFVCi0rI2RlZmluZSBfSU9DX1JFQUQJMlUKLSsjZGVmaW5lIF9JT0NfV1JJVEUJNFUK LSsjZWxzZQotKyNkZWZpbmUgX0lPQ19OT05FCTBVCi0rI2RlZmluZSBfSU9DX1JFQUQJMlUKLSsj ZGVmaW5lIF9JT0NfV1JJVEUJMVUKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIF9JT0MoZGlyLHR5cGUs bnIsc2l6ZSkgXAotKwkoKChkaXIpICA8PCBfSU9DX0RJUlNISUZUKSB8IFwKLSsJICgodHlwZSkg PDwgX0lPQ19UWVBFU0hJRlQpIHwgXAotKwkgKChucikgICA8PCBfSU9DX05SU0hJRlQpIHwgXAot KwkgKChzaXplKSA8PCBfSU9DX1NJWkVTSElGVCkpCi0rI2RlZmluZSBfSU8odHlwZSxucikJCV9J T0MoX0lPQ19OT05FLCh0eXBlKSwobnIpLDApCi0rCi0rLyogZnJvbSBsaW51eC9mcy5oICovCi0r I2RlZmluZSBCTEtSUlBBUlQgIF9JTygweDEyLDk1KSAgICAgIC8qIHJlLXJlYWQgcGFydGl0aW9u IHRhYmxlICovCi0rI2RlZmluZSBCTEtGTFNCVUYgIF9JTygweDEyLDk3KSAgICAgIC8qIGZsdXNo IGJ1ZmZlciBjYWNoZSAqLwotKwotKy8qIGZyb20gbGludXgvZ2VuaGQuaCAqLwotK3N0cnVjdCBw YXJ0aXRpb24gewotKwl1bnNpZ25lZCBjaGFyIGJvb3RfaW5kOwkJLyogMHg4MCAtIGFjdGl2ZSAq LwotKwl1bnNpZ25lZCBjaGFyIGhlYWQ7CQkvKiBzdGFydGluZyBoZWFkICovCi0rCXVuc2lnbmVk IGNoYXIgc2VjdG9yOwkJLyogc3RhcnRpbmcgc2VjdG9yICovCi0rCXVuc2lnbmVkIGNoYXIgY3ls OwkJLyogc3RhcnRpbmcgY3lsaW5kZXIgKi8KLSsJdW5zaWduZWQgY2hhciBzeXNfaW5kOwkJLyog V2hhdCBwYXJ0aXRpb24gdHlwZSAqLwotKwl1bnNpZ25lZCBjaGFyIGVuZF9oZWFkOwkJLyogZW5k IGhlYWQgKi8KLSsJdW5zaWduZWQgY2hhciBlbmRfc2VjdG9yOwkvKiBlbmQgc2VjdG9yICovCi0r CXVuc2lnbmVkIGNoYXIgZW5kX2N5bDsJCS8qIGVuZCBjeWxpbmRlciAqLwotKwl1bnNpZ25lZCBp bnQgc3RhcnRfc2VjdDsJLyogc3RhcnRpbmcgc2VjdG9yIGNvdW50aW5nIGZyb20gMCAqLwotKwl1 bnNpZ25lZCBpbnQgbnJfc2VjdHM7CQkvKiBuciBvZiBzZWN0b3JzIGluIHBhcnRpdGlvbiAqLwot K30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Ci0tLS0gbWFjLWZkaXNrLjgKLSsrKyBtYWMtZmRp c2suOAotQEAgLTAsMCArMSwyNjIgQEAKLSsuVEggTUFDLUZESVNLIDggIjEgRGVjZW1iZXIgMjAw MSIgIkRlYmlhbiIgIkFwcGxlIERpc2sgUGFydGl0aW9uaW5nIE1hbnVhbCIKKy0tLSBtYWMtZmRp c2stMC4xLm9yaWcvcG1hYy1mZGlzay44LmluCisrKysgbWFjLWZkaXNrLTAuMS9wbWFjLWZkaXNr LjguaW4KK0BAIC0wLDAgKzEsMjIyIEBACisrLlwiIENvcHlyaWdodCAxOTkyLCAxOTkzIFJpY2th cmQgRS4gRmFpdGggKGZhaXRoQGNzLnVuYy5lZHUpCisrLlwiIENvcHlyaWdodCAxOTk4IEFuZHJp ZXMgRS4gQnJvdXdlciAoYWViQGN3aS5ubCkKKysuXCIgQ29weXJpZ2h0IDIwMDAgTWljaGFlbCBT Y2htaXR6IChzY2htaXR6QGJpb3BoeXMudW5pLWR1ZXNzZWxkb3JmLmRlKQorKy5cIiBNYXkgYmUg ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrLlRIIFBN QUMtRkRJU0sgOCAiMTEgSnVuZSAxOTk4IiAiTGludXggMi4wIiAiTGludXggUHJvZ3JhbW1lcidz IE1hbnVhbCIKICsuU0ggTkFNRQotK21hYy1mZGlzayBcLSBBcHBsZSBwYXJ0aXRpb24gdGFibGUg ZWRpdG9yIGZvciBMaW51eAorK3BtYWMtZmRpc2sgXC0gUGFydGl0aW9uIHRhYmxlIG1hbmlwdWxh dG9yIGZvciBMaW51eAogKy5TSCBTWU5PUFNJUwotKy5CIG1hYy1mZGlzawotKy5CICJbIFwtaCB8 IFwtLWhlbHAgXSBbIFwtdiB8IFwtLXZlcnNpb24gXSBbIFwtbCB8IFwtLWxpc3QgZGV2aWNlIC4u LiBdIgotKy5icgotKy5CIG1hYy1mZGlzawotKy5CICJbIFwtciB8IFwtLXJlYWRvbmx5IF0gZGV2 aWNlIC4uLiAiCisrLkJJICJwbWFjLWZkaXNrIFtcLXVdICIgZGV2aWNlCisrLnNwCisrLkJJICJw bWFjLWZkaXNrIFwtbCBbXC11XSAiICJkZXZpY2UgLi4uIgorKy5zcAorKy5CSSAicG1hYy1mZGlz ayBcLXMgIiAicGFydGl0aW9uIC4uLiIKKysuc3AKKysuQkkgInBtYWMtZmRpc2sgXC12CiArLlNI IERFU0NSSVBUSU9OCi0rLkIgbWFjLWZkaXNrCi0raXMgYSBjb21tYW5kIGxpbmUgdHlwZSBwcm9n cmFtIHdoaWNoIHBhcnRpdGlvbnMgZGlza3MgdXNpbmcgdGhlIHN0YW5kYXJkIEFwcGxlCi0rZGlz ayBwYXJ0aXRpb25pbmcgc2NoZW1lIGRlc2NyaWJlZCBpbiAiSW5zaWRlIE1hY2ludG9zaDogRGV2 aWNlcyIuCisrSGFyZCBkaXNrcyBjYW4gYmUgZGl2aWRlZCBpbnRvIG9uZSBvciBtb3JlIGxvZ2lj YWwgZGlza3MgY2FsbGVkCisrLklSIHBhcnRpdGlvbnMgLgorK1RoaXMgZGl2aXNpb24gaXMgZGVz Y3JpYmVkIGluIHRoZQorKy5JICJwYXJ0aXRpb24gdGFibGUiCisrZm91bmQgaW4gc2VjdG9yIDAg b2YgdGhlIGRpc2suCisrCisrSW4gdGhlIEJTRCB3b3JsZCBvbmUgdGFsa3MgYWJvdXQgYGRpc2sg c2xpY2VzJyBhbmQgYSBgZGlza2xhYmVsJy4KKysKKytMaW51eCBuZWVkcyBhdCBsZWFzdCBvbmUg cGFydGl0aW9uLCBuYW1lbHkgZm9yIGl0cyByb290IGZpbGUgc3lzdGVtLgorK0l0IGNhbiB1c2Ug c3dhcCBmaWxlcyBhbmQvb3Igc3dhcCBwYXJ0aXRpb25zLCBidXQgdGhlIGxhdHRlciBhcmUgbW9y ZQorK2VmZmljaWVudC4gU28sIHVzdWFsbHkgb25lIHdpbGwgd2FudCBhIHNlY29uZCBMaW51eCBw YXJ0aXRpb24KKytkZWRpY2F0ZWQgYXMgc3dhcCBwYXJ0aXRpb24uCisrT24gSW50ZWwgY29tcGF0 aWJsZSBoYXJkd2FyZSwgdGhlIEJJT1MgdGhhdCBib290cyB0aGUgc3lzdGVtCisrY2FuIG9mdGVu IG9ubHkgYWNjZXNzIHRoZSBmaXJzdCAxMDI0IGN5bGluZGVycyBvZiB0aGUgZGlzay4KKytGb3Ig dGhpcyByZWFzb24gcGVvcGxlIHdpdGggbGFyZ2UgZGlza3Mgb2Z0ZW4gY3JlYXRlIGEgdGhpcmQg cGFydGl0aW9uLAorK2p1c3QgYSBmZXcgTUIgbGFyZ2UsIHR5cGljYWxseSBtb3VudGVkIG9uCisr LklSIC9ib290ICwKKyt0byBzdG9yZSB0aGUga2VybmVsIGltYWdlIGFuZCBhIGZldyBhdXhpbGlh cnkgZmlsZXMgbmVlZGVkIGF0IGJvb3QgdGltZSwKKytzbyBhcyB0byBtYWtlIHN1cmUgdGhhdCB0 aGlzIHN0dWZmIGlzIGFjY2Vzc2libGUgdG8gdGhlIEJJT1MuCisrVGhlcmUgbWF5IGJlIHJlYXNv bnMgb2Ygc2VjdXJpdHksIGVhc2Ugb2YgYWRtaW5pc3RyYXRpb24gYW5kIGJhY2t1cCwKKytvciB0 ZXN0aW5nLCB0byB1c2UgbW9yZSB0aGFuIHRoZSBtaW5pbXVtIG51bWJlciBvZiBwYXJ0aXRpb25z LgorKworKy5CIHBtYWMtZmRpc2sKKysoaW4gdGhlIGZpcnN0IGZvcm0gb2YgaW52b2NhdGlvbikK KytpcyBhIG1lbnUgZHJpdmVuIHByb2dyYW0gZm9yIGNyZWF0aW9uIGFuZCBtYW5pcHVsYXRpb24g b2YKKytwYXJ0aXRpb24gdGFibGVzLgorK0l0IHVuZGVyc3RhbmRzIERPUyB0eXBlIHBhcnRpdGlv biB0YWJsZXMgYW5kIEJTRCBvciBTVU4gdHlwZSBkaXNrbGFiZWxzLgorKwogK1RoZQogKy5JIGRl dmljZQogK2lzIHVzdWFsbHkgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0rCisrLmJyCiArLm5mCiAr LlJTCi0rL2Rldi9zZGEKLSsvZGV2L3NkYgotKy9kZXYvc2RjCi0rL2Rldi9zZGQKLSsvZGV2L3Nk ZQotKy9kZXYvc2RmCi0rL2Rldi9zZGcKICsvZGV2L2hkYQogKy9kZXYvaGRiCi0rCisrL2Rldi9z ZGEKKysvZGV2L3NkYgogKy5SRQogKy5maQotKy9kZXYvc2RhIGlzIHRoZSBmaXJzdCBoYXJkIGRp c2sgb24gdGhlIFNDU0kgYnVzIChpLmUuIHRoZQotK29uZSB3aXRoIHRoZSBsb3dlc3QgaWQpLCAv ZGV2L3NkYiBpcyB0aGUgc2Vjb25kIGhhcmQgZGlzaywgYW5kIHNvIG9uLgorKygvZGV2L2hkW2Et aF0gZm9yIElERSBkaXNrcywgL2Rldi9zZFthLXBdIGZvciBTQ1NJIGRpc2tzKS4KKytBIGRldmlj ZSBuYW1lIHJlZmVycyB0byB0aGUgZW50aXJlIGRpc2suCisrCiArVGhlCiArLkkgcGFydGl0aW9u CiAraXMgYQogKy5JIGRldmljZQotK25hbWUgZm9sbG93ZWQgYnkgYSBwYXJ0aXRpb24gbnVtYmVy LgotK1RoZSBwYXJ0aXRpb24gbnVtYmVyIGlzIHRoZSBpbmRleCAoc3RhcnRpbmcgZnJvbSBvbmUp IG9mIHRoZSBwYXJ0aXRpb24KLSttYXAgZW50cnkgaW4gdGhlIHBhcnRpdGlvbiBtYXAgKGFuZCB0 aGUgcGFydGl0aW9uIG1hcCBpdHNlbGYgb2NjdXBpZXMgdGhlCi0rZmlyc3QgZW50cnkpLgotK0Zv ciBleGFtcGxlLAotKy5CIC9kZXYvc2RhMgotK2lzIHRoZSBwYXJ0aXRpb24gZGVzY3JpYmVkIGJ5 IHRoZSBzZWNvbmQgZW50cnkgaW4gdGhlIHBhcnRpdG9uIG1hcCBvbiAvZGV2L3NkYS4KLSsKLSsu U0ggT1BUSU9OUwotKy5UUAotKy5CIFwtdiB8IFwtLXZlcnNpb24KLStQcmludHMgdmVyc2lvbiBu dW1iZXIgb2YgdGhlCi0rLkIgbWFjLWZkaXNrCi0rcHJvZ3JhbS4KLSsuVFAKLSsuQiBcLWggfCBc LS1oZWxwCi0rUHJpbnRzIGEgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMgZm9yIHRoZQotKy5C IG1hYy1mZGlzawotK3Byb2dyYW0uCi0rLlRQCi0rLkIgXC1sIHwgXC0tbGlzdAotK0xpc3RzIHRo ZSBwYXJ0aXRpb24gdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkCi0rLklSIGRldmljZShzKS4KLStX aXRoIG5vIAotKy5JUiBkZXZpY2UocykKLStnaXZlbiwgbGlzdHMgYWxsIFNDU0kgYW5kIElERSBk ZXZpY2VzIGZvdW5kIGluIHRoZSBzeXN0ZW0uCi0rLlRQCi0rLkIgXC1yIHwgXC0tcmVhZG9ubHkK LStQcmV2ZW50cwotKy5CIG1hYy1mZGlzawotK2Zyb20gd3JpdGluZyB0byB0aGUgZGV2aWNlLgot Ky5TSCAiRWRpdGluZyBQYXJ0aXRpb24gVGFibGVzIgotK0FuIGFyZ3VtZW50IHdoaWNoIGlzIHNp bXBseSB0aGUgbmFtZSBvZiBhCi0rLkkgZGV2aWNlCi0raW5kaWNhdGVzIHRoYXQKLSsuQiBtYWMt ZmRpc2sKLStzaG91bGQgZWRpdCB0aGUgcGFydGl0aW9uIHRhYmxlIG9mIHRoYXQgZGV2aWNlLiBP bmNlIHN0YXJ0ZWQsIAotKy5CIG1hYy1mZGlzayAKLStwcmVzZW50cyBhbiBpbnRlcmFjdGl2ZSBj b21tYW5kIHByb21wdCB0byBlZGl0IHRoZSBwYXJ0aXRpb24gdGFibGUuIAotK1RoZSBwYXJ0aXRp b24gZWRpdGluZyBjb21tYW5kcyBhcmU6Ci0rCi0rLm5mCi0rLlJTCi0raCAgICBsaXN0IGF2YWls YWJsZSBjb21tYW5kcwotK3AgICAgcHJpbnQgKGxpc3QpIHRoZSBjdXJyZW50IGVkaXRlZCBwYXJ0 aXRpb24gdGFibGUgc3RhdHVzCi0rUCAgICBwcmludCBvcmRlcmVkIGJ5IGJhc2UgYWRkcmVzcwot K2kgICAgaW5pdGlhbGl6ZSB0aGUgcGFydGl0aW9uIG1hcAotK3MgICAgY2hhbmdlIHNpemUgb2Yg cGFydGl0aW9uIG1hcAotK2IgICAgY3JlYXRlIG5ldyA4MDBLIEFwcGxlX0Jvb3RzdHJhcCBwYXJ0 aXRpb24gKHVzZWQgYnkgeWFib290KQotK2MgICAgY3JlYXRlIG5ldyBzdGFuZGFyZCBMaW51eCB0 eXBlIHBhcnRpdGlvbgotK0MgICAgY3JlYXRlIG5ldyBwYXJ0aXRpb24sIHNwZWNpZnlpbmcgdGhl IHBhcnRpdGlvbiB0eXBlCi0rZCAgICBkZWxldGUgYSBwYXJ0aXRpb24KLStyICAgIHJlb3JkZXIg cGFydGl0aW9uIGVudHJ5Ci0rdyAgICB3cml0ZSB0aGUgcGFydGl0aW9uIHRhYmxlIHRvIGRpc2sK LStxICAgIHF1aXQgCi0rCi0rLlJFCi0rLmZpCi0rQ29tbWFuZHMgd2hpY2ggdGFrZSBhcmd1bWVu dHMgcHJvbXB0IGZvciBlYWNoIGFyZ3VtZW50IGluIHR1cm4uCi0rWW91IGNhbiBhbHNvIHR5cGUg dGhlIGFyZ3VtZW50cyBzZXBhcmF0ZWQgYnkgc3BhY2VzCi0rYW5kIHRob3NlIHByb21wdHMgd2ls bCBiZSBza2lwcGVkLiBUaGUKLSsuQiBpCi0rYW5kCi0rLkIgdwotK2NvbW1hbmRzIHdpbGwgcHJv bXB0IGZvciBjb25maXJtYXRpb24uIE5vbmUgb2YgdGhlIGVkaXRpbmcgeW91IGRvIHdpbGwgCi0r YWN0dWFsbHkgYWZmZWN0IHRoZSBzdGF0ZSBvZiB0aGUgZGlzayB5b3UgYXJlIHBhcnRpdGlvbmlu ZyB1bnRpbCB0aGUgCi0rLkIgdyAKLStjb21tYW5kIGlzIGlzc3VlZC4gVGhlbiB0aGUgbWFwIGlu IGl0cyBlZGl0ZWQgc3RhdGUgd2lsbCBiZSAKLStwZXJtYW5lbnRseSB3cml0dGVuIHRvIHRoZSBk aXNrLgotKwotK1BhcnRpdGlvbnMgYXJlIGFsd2F5cyBzcGVjaWZpZWQgYnkgdGhlaXIgbnVtYmVy LCB0aGUgaW5kZXggb2YgdGhlCi0rcGFydGl0aW9uIGVudHJ5IGluIHRoZSBwYXJ0aXRpb24gbWFw LiAgTWFueSBjb21tYW5kcyB3aWxsIGNoYW5nZSB0aGUKLStpbmRleCBudW1iZXJzIG9mIHBhcnRp dGlvbnMgd2hpY2ggZm9sbG93IHRoZSBhZmZlY3RlZCBwYXJ0aXRpb247IHlvdSBhcmUKLStlbmNv dXJhZ2VkIHRvIHVzZSB0aGUgCi0rLkIgcAotK2NvbW1hbmQgdG8gcHJpbnQgdGhlIHBhcnRpdGlv biB0YWJsZSBhcyBmcmVxdWVudGx5IGFzIG5lY2Vzc2FyeS4gRm9yIFNDU0kKLStkaXNrcywgdGhl IHBhcnRpdGlvbiB0YWJsZSBzaG91bGQgbm90IGNvbnRhaW4gbW9yZSB0aGFuIGZpZnRlZW4gcGFy dGl0aW9ucyAKLSsocGFydGl0aW9uIG1hcCBleGNsdWRlZCkuIElERSBkaXNrcyBoYXZlIGEgbGlt aXQgb2YgMzEgcGFydGl0aW9ucy4KLSsKLStIZXJlIGlzIGEgbW9yZS1vci1sZXNzIHR5cGljYWwg b3V0cHV0IGZvciB0aGUgcHJpbnQgY29tbWFuZDoKLSsKLSsubmYKLSsuUlMKLStDb21tYW5kICg/ IGZvciBoZWxwKTogcAotKy9kZXYvc2RiCi0rICAgICAgICAjICAgICAgICAgICAgICAgIHR5cGUg bmFtZSAgICAgICAgICAgICAgbGVuZ3RoICAgYmFzZSAgICAoIHNpemUgKSAgc3lzdGVtCi0rL2Rl di9zZGIxIEFwcGxlX3BhcnRpdGlvbl9tYXAgQXBwbGUgICAgICAgICAgICAgICAgIDYzIEAgMSAg ICAgICAoIDMxLjVrKSAgUGFydGl0aW9uIG1hcAotKy9kZXYvc2RiMiAgICAgIEFwcGxlX0RyaXZl cjQzIE1hY2ludG9zaCAgICAgICAgICAgICA1NCBAIDY0ICAgICAgKCAyNy4waykgIERyaXZlciA0 LjMKLSsvZGV2L3NkYjMgICAgICBBcHBsZV9Ecml2ZXI0MyBNYWNpbnRvc2ggICAgICAgICAgICAg NzQgQCAxMTggICAgICggMzcuMGspICBEcml2ZXIgNC4zCi0rL2Rldi9zZGI0ICBBcHBsZV9Ecml2 ZXJfSU9LaXQgTWFjaW50b3NoICAgICAgICAgICAgNTEyIEAgMTkyICAgICAoMjU2LjBrKSAgVW5r bm93bgotKy9kZXYvc2RiNSAgICAgICBBcHBsZV9QYXRjaGVzIFBhdGNoIFBhcnRpdGlvbiAgICAg IDUxMiBAIDcwNCAgICAgKDI1Ni4waykgIFVua25vd24KLSsvZGV2L3NkYjYgICAgICAgICAgIEFw cGxlX0hGUyB1bnRpdGxlZCAgICAgICAgIDMwNzIwMDAgQCAxMjE2ICAgICggIDEuNUcpICBIRlMK LSsvZGV2L3NkYjcgICAgICAgICAgIEFwcGxlX0hGUyB1bnRpdGxlZCAyICAgICAgICAzMzMwMjYg QCAzMDczMjE2ICgxNjIuNk0pICBIRlMKLSsvZGV2L3NkYjggICAgICAgICAgQXBwbGVfRnJlZSBF eHRyYSAgICAgICAgICAgICAgICAgMTAgQCAzNDA2MjQyICggIDUuMGspICBGcmVlIHNwYWNlCi0r Ci0rQmxvY2sgc2l6ZT01MTIsIE51bWJlciBvZiBCbG9ja3M9MzQwNjI1MgotK0RldmljZVR5cGU9 MHgwLCBEZXZpY2VJZD0weDAKLStEcml2ZXJzLQotKzE6IEAgNjQgZm9yIDIyLCB0eXBlPTB4MQot KzI6IEAgMTE4IGZvciAzNiwgdHlwZT0weGZmZmYKKytuYW1lIGZvbGxvd2VkIGJ5IGEgcGFydGl0 aW9uIG51bWJlci4gIEZvciBleGFtcGxlLAorKy5CIC9kZXYvaGRhMQorK2lzIHRoZSBmaXJzdCBw YXJ0aXRpb24gb24gdGhlIGZpcnN0IElERSBoYXJkIGRpc2sgaW4gdGhlIHN5c3RlbS4KKytJREUg ZGlza3MgY2FuIGhhdmUgdXAgdG8gNjMgcGFydGl0aW9ucywgU0NTSSBkaXNrcyB1cCB0byAxNS4K KytTZWUgYWxzbworKy5JUiAvdXNyL3NyYy9saW51eC9Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0 IC4KICsKLSsuUkUKLSsuZmkKKytBIEJTRC9TVU4gdHlwZSBkaXNrbGFiZWwgY2FuIGRlc2NyaWJl IDggcGFydGl0aW9ucywKKyt0aGUgdGhpcmQgb2Ygd2hpY2ggc2hvdWxkIGJlIGEgYHdob2xlIGRp c2snIHBhcnRpdGlvbi4KKytEbyBub3Qgc3RhcnQgYSBwYXJ0aXRpb24gdGhhdCBhY3R1YWxseSB1 c2VzIGl0cyBmaXJzdCBzZWN0b3IKKysobGlrZSBhIHN3YXAgcGFydGl0aW9uKSBhdCBjeWxpbmRl ciAwLCBzaW5jZSB0aGF0IHdpbGwKKytkZXN0cm95IHRoZSBkaXNrbGFiZWwuCiArCi0rVGhlCi0r LkIgaQotKyhpbml0aWFsaXplKSBjb21tYW5kIHByb21wdHMgZm9yIHRoZSBzaXplIG9mIHRoZSBk ZXZpY2UuICBZb3UgY2FuIGp1c3QKLSt0eXBlIFJldHVybiB0byBhY2NlcHQgdGhlIG9mZmVyZWQg c2l6ZSwgd2hpY2ggc2hvdWxkIGJlIGNvcnJlY3QuCisrQW4gSVJJWC9TR0kgdHlwZSBkaXNrbGFi ZWwgY2FuIGRlc2NyaWJlIDE2IHBhcnRpdGlvbnMsCisrdGhlIGVsZXZlbnRoIG9mIHdoaWNoIHNo b3VsZCBiZSBhbiBlbnRpcmUgYHZvbHVtZScgcGFydGl0aW9uLAorK3doaWxlIHRoZSBuaW50aCBz aG91bGQgYmUgbGFiZWxlZCBgdm9sdW1lIGhlYWRlcicuCisrVGhlIHZvbHVtZSBoZWFkZXIgd2ls bCBhbHNvIGNvdmVyIHRoZSBwYXJ0aXRpb24gdGFibGUsIGkuZS4sCisraXQgc3RhcnRzIGF0IGJs b2NrIHplcm8gYW5kIGV4dGVuZHMgYnkgZGVmYXVsdCBvdmVyIGZpdmUgY3lsaW5kZXJzLgorK1Ro ZSByZW1haW5pbmcgc3BhY2UgaW4gdGhlIHZvbHVtZSBoZWFkZXIgbWF5IGJlIHVzZWQgYnkgaGVh ZGVyCisrZGlyZWN0b3J5IGVudHJpZXMuICBObyBwYXJ0aXRpb25zIG1heSBvdmVybGFwIHdpdGgg dGhlIHZvbHVtZSBoZWFkZXIuCisrQWxzbyBkbyBub3QgY2hhbmdlIGl0cyB0eXBlIGFuZCBtYWtl IHNvbWUgZmlsZSBzeXN0ZW0gb24gaXQsIHNpbmNlCisreW91IHdpbGwgbG9zZSB0aGUgcGFydGl0 aW9uIHRhYmxlLiAgVXNlIHRoaXMgdHlwZSBvZiBsYWJlbCBvbmx5IHdoZW4KKyt3b3JraW5nIHdp dGggTGludXggb24gSVJJWC9TR0kgbWFjaGluZXMgb3IgSVJJWC9TR0kgZGlza3MgdW5kZXIgTGlu dXguCiArCi0rVGhlCi0rLkIgYgotK2NvbW1hbmQgaXMgYSBzaG9ydGN1dCB0byBjcmVhdGUgdGhl IGJvb3RzdHJhcCBwYXJ0aXRpb24gdXNlZCBvbiBQb3dlclBDCi0rTmV3V29ybGQgbWFjaGluZXMu IEl0IGlzIGVxdWl2YWxlbnQgdG8gY3JlYXRpbmcgYW4gODAwawotKy5CIEFwcGxlX0Jvb3RzdHJh cAotK3R5cGUgcGFydGl0aW9uIHVzaW5nIHRoZSAKLSsuQiBDCi0rY29tbWFuZCBkZXNjcmliZWQg YmVsb3cuIFRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwYXJ0aXRpb24gaXMgdG8KLStzdG9yZSB0 aGUgYm9vdCBsb2FkZXIuIEluIG11bHRpYm9vdCBlbnZpcm9ubWVudHMsIHRoZSBmaXJzdCBib290 YWJsZQotK3BhcnRpdGlvbiBmb3VuZCBvbiB0aGUgZGlzayB0YWtlcyBwcmVjZWRlbmNlIHVubGVz cyBhIHNwZWNpZmljIGJvb3QKLStwYXJ0aXRpb24gaXMgc2V0IGluIE9wZW5GaXJtd2FyZSwgc28g aXQncyBiZXN0IHRvIGNyZWF0ZSB0aGUgYm9vdHN0cmFwCi0rcGFydGl0aW9uIGZpcnN0LCBvciBt b3ZlIGl0IHRvIGEgcG9zaXRpb24gYmVmb3JlIGFueQotKy5CIEFwcGxlX0hGUyAKLStvciAKLSsu QiBBcHBsZV9Cb290Ci0rcGFydGl0aW9ucyB1c2luZyB0aGUgCi0rLkIgcgotK2NvbW1hbmQgZGVz Y3JpYmVkIGJlbG93LiBUaGVuIHlvdSB3aWxsIHN0aWxsIGFibGUgdG8gYm9vdCBMaW51eCBhZnRl cgotK3RoZSBvY2Nhc2lvbmFsIE9wZW5GaXJtd2FyZSByZXNldC4KKytBIERPUyB0eXBlIHBhcnRp dGlvbiB0YWJsZSBjYW4gZGVzY3JpYmUgYW4gdW5saW1pdGVkIG51bWJlcgorK29mIHBhcnRpdGlv bnMuIEluIHNlY3RvciAwIHRoZXJlIGlzIHJvb20gZm9yIHRoZSBkZXNjcmlwdGlvbgorK29mIDQg cGFydGl0aW9ucyAoY2FsbGVkIGBwcmltYXJ5JykuIE9uZSBvZiB0aGVzZSBtYXkgYmUgYW4KKytl eHRlbmRlZCBwYXJ0aXRpb247IHRoaXMgaXMgYSBib3ggaG9sZGluZyBsb2dpY2FsIHBhcnRpdGlv bnMsCisrd2l0aCBkZXNjcmlwdG9ycyBmb3VuZCBpbiBhIGxpbmtlZCBsaXN0IG9mIHNlY3RvcnMs IGVhY2gKKytwcmVjZWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbG9naWNhbCBwYXJ0aXRpb25zLgor K1RoZSBmb3VyIHByaW1hcnkgcGFydGl0aW9ucywgcHJlc2VudCBvciBub3QsIGdldCBudW1iZXJz IDEtNC4KKytMb2dpY2FsIHBhcnRpdGlvbnMgc3RhcnQgbnVtYmVyaW5nIGZyb20gNS4KICsKLStU aGUKLSsuQiBjCi0rKGNyZWF0ZSBuZXcgcGFydGl0aW9uKSBjb21tYW5kIGhhcyB0aHJlZSBhcmd1 bWVudHMuIEFzIG1lbnRpb25lZAotK2Fib3ZlIHlvdSBjYW4gdHlwZSB0aGUgYXJndW1lbnRzIGZv bGxvd2luZyB0aGUgY29tbWFuZCwgc2VwYXJhdGVkIGJ5Ci0rc3BhY2VzLCBvciByZXNwb25kIHRv IHByb21wdHMgZm9yIGVhY2ggYXJndW1lbnQ6CisrSW4gYSBET1MgdHlwZSBwYXJ0aXRpb24gdGFi bGUgdGhlIHN0YXJ0aW5nIG9mZnNldCBhbmQgdGhlIHNpemUKKytvZiBlYWNoIHBhcnRpdGlvbiBp cyBzdG9yZWQgaW4gdHdvIHdheXM6IGFzIGFuIGFic29sdXRlIG51bWJlcgorK29mIHNlY3RvcnMg KGdpdmVuIGluIDMyIGJpdHMpIGFuZCBhcyBhIEN5bGluZGVycy9IZWFkcy9TZWN0b3JzCisrdHJp cGxlIChnaXZlbiBpbiAxMCs4KzYgYml0cykuIFRoZSBmb3JtZXIgaXMgT0sgLSB3aXRoIDUxMi1i eXRlCisrc2VjdG9ycyB0aGlzIHdpbGwgd29yayB1cCB0byAyIFRCLiBUaGUgbGF0dGVyIGhhcyB0 d28gZGlmZmVyZW50CisrcHJvYmxlbXMuIEZpcnN0IG9mIGFsbCwgdGhlc2UgQy9IL1MgZmllbGRz IGNhbiBiZSBmaWxsZWQgb25seQorK3doZW4gdGhlIG51bWJlciBvZiBoZWFkcyBhbmQgdGhlIG51 bWJlciBvZiBzZWN0b3JzIHBlciB0cmFjaworK2FyZSBrbm93bi4gU2Vjb25kbHksIGV2ZW4gaWYg d2Uga25vdyB3aGF0IHRoZXNlIG51bWJlcnMgc2hvdWxkIGJlLAorK3RoZSAyNCBiaXRzIHRoYXQg YXJlIGF2YWlsYWJsZSBkbyBub3Qgc3VmZmljZS4KKytET1MgdXNlcyBDL0gvUyBvbmx5LCBXaW5k b3dzIHVzZXMgYm90aCwgTGludXggbmV2ZXIgdXNlcyBDL0gvUy4KICsKLSsgIDEpIFRoZSBiYXNl IGFkZHJlc3Mgb2YgdGhlIHN0YXJ0IG9mIHRoZSBwYXJ0aXRpb24uCisrSWYgcG9zc2libGUsCisr LkIgcG1hYy1mZGlzaworK3dpbGwgb2J0YWluIHRoZSBkaXNrIGdlb21ldHJ5IGF1dG9tYXRpY2Fs bHkuICBUaGlzIGlzIG5vdAorK25lY2Vzc2FyaWx5IHRoZSBwaHlzaWNhbCBkaXNrIGdlb21ldHJ5 IChpbmRlZWQsIG1vZGVybiBkaXNrcyBkbyBub3QKKytyZWFsbHkgaGF2ZSBhbnl0aGluZyBsaWtl IGEgcGh5c2ljYWwgZ2VvbWV0cnksIGNlcnRhaW5seSBub3Qgc29tZXRoaW5nCisrdGhhdCBjYW4g YmUgZGVzY3JpYmVkIGluIHNpbXBsaXN0aWMgQ3lsaW5kZXJzL0hlYWRzL1NlY3RvcnMgZm9ybSks CisrYnV0IGlzIHRoZSBkaXNrIGdlb21ldHJ5IHRoYXQgTVMtRE9TIHVzZXMgZm9yIHRoZSBwYXJ0 aXRpb24gdGFibGUuCiArCi0rICAgICBZb3UgY2FuIHNwZWNpZnkgYSBudW1iZXIgaW4gYmxvY2tz IChtb3N0IGxpa2VseSByZWFkaW5nIGZyb20gdGhlCi0rICAgICBleGlzdGluZyBwYXJ0aXRpb24g bWFwKSBvciB5b3UgY2FuIGFsc28gdHlwZSBhIHBhcnRpdGlvbiBudW1iZXIKLSsgICAgIGZvbGxv d2VkIGJ5IHRoZSBsZXR0ZXIgJ3AnIHRvIGluZGljYXRlIHRoYXQgdGhlIG5ldyBwYXJ0aXRpb24K LSsgICAgIHNob3VsZCB0YWtlIHRoZSBwbGFjZSBvZiB0aGF0IGV4aXN0aW5nIGZyZWUgc3BhY2Ug cGFydGl0aW9uLgorK1VzdWFsbHkgYWxsIGdvZXMgd2VsbCBieSBkZWZhdWx0LCBhbmQgdGhlcmUg YXJlIG5vIHByb2JsZW1zIGlmCisrTGludXggaXMgdGhlIG9ubHkgc3lzdGVtIG9uIHRoZSBkaXNr LiBIb3dldmVyLCBpZiB0aGUgZGlzayBoYXMKKyt0byBiZSBzaGFyZWQgd2l0aCBvdGhlciBvcGVy YXRpbmcgc3lzdGVtcywgaXQgaXMgb2Z0ZW4gYSBnb29kIGlkZWEKKyt0byBsZXQgYW4gZmRpc2sg ZnJvbSBhbm90aGVyIG9wZXJhdGluZyBzeXN0ZW0gbWFrZSBhdCBsZWFzdCBvbmUKKytwYXJ0aXRp b24uIFdoZW4gTGludXggYm9vdHMgaXQgbG9va3MgYXQgdGhlIHBhcnRpdGlvbiB0YWJsZSwgYW5k CisrdHJpZXMgdG8gZGVkdWNlIHdoYXQgKGZha2UpIGdlb21ldHJ5IGlzIHJlcXVpcmVkIGZvciBn b29kCisrY29vcGVyYXRpb24gd2l0aCBvdGhlciBzeXN0ZW1zLgogKwotKyAgMikgVGhlIGxlbmd0 aCBvZiB0aGUgcGFydGl0aW9uLgorK1doZW5ldmVyIGEgcGFydGl0aW9uIHRhYmxlIGlzIHByaW50 ZWQgb3V0LCBhIGNvbnNpc3RlbmN5IGNoZWNrIGlzIHBlcmZvcm1lZAorK29uIHRoZSBwYXJ0aXRp b24gdGFibGUgZW50cmllcy4gIFRoaXMgY2hlY2sgdmVyaWZpZXMgdGhhdCB0aGUgcGh5c2ljYWwg YW5kCisrbG9naWNhbCBzdGFydCBhbmQgZW5kIHBvaW50cyBhcmUgaWRlbnRpY2FsLCBhbmQgdGhh dCB0aGUgcGFydGl0aW9uIHN0YXJ0cworK2FuZCBlbmRzIG9uIGEgY3lsaW5kZXIgYm91bmRhcnkg KGV4Y2VwdCBmb3IgdGhlIGZpcnN0IHBhcnRpdGlvbikuCiArCi0rICAgICBBZ2FpbiwgeW91IGNh biBzcGVjaWZ5IGEgbnVtYmVyIGluIGJsb2NrcyBvciB0eXBlIGEgcGFydGl0aW9uCi0rICAgICBu dW1iZXIgZm9sbG93ZWQgYnkgdGhlIGxldHRlciAncCcgdG8gaW5kaWNhdGUgdXNlIG9mIHRoZSBl bnRpcmUKLSsgICAgIHBhcnRpdGlvbi4gWW91IGNhbiBhbHNvIHR5cGUgYSBudW1iZXIgZm9sbG93 ZWQgYnkgJ2snLCAnbScsIG9yCi0rICAgICAnZycgdG8gaW5kaWNhdGUgdGhlIHNpemUgaW4ga2ls b2J5dGVzLCBtZWdhYnl0ZXMsIG9yIGdpZ2FieXRlcwotKyAgICAgcmVzcGVjdGl2ZWx5LiAoVGhl c2UgYXJlIHBvd2VycyBvZiAxMDI0LCBvZiBjb3Vyc2UsIG5vdCBwb3dlcnMKLSsgICAgIG9mIDEw MDAuKQorK1NvbWUgdmVyc2lvbnMgb2YgTVMtRE9TIGNyZWF0ZSBhIGZpcnN0IHBhcnRpdGlvbiB3 aGljaCBkb2VzIG5vdCBiZWdpbgorK29uIGEgY3lsaW5kZXIgYm91bmRhcnksIGJ1dCBvbiBzZWN0 b3IgMiBvZiB0aGUgZmlyc3QgY3lsaW5kZXIuCisrUGFydGl0aW9ucyBiZWdpbm5pbmcgaW4gY3ls aW5kZXIgMSBjYW5ub3QgYmVnaW4gb24gYSBjeWxpbmRlciBib3VuZGFyeSwgYnV0CisrdGhpcyBp cyB1bmxpa2VseSB0byBjYXVzZSBkaWZmaWN1bHR5IHVubGVzcyB5b3UgaGF2ZSBPUy8yIG9uIHlv dXIgbWFjaGluZS4KICsKLSsgIDMpIFRoZSBuYW1lIG9mIHRoZSBwYXJ0aXRpb24uCisrQSBzeW5j KCkgYW5kIGEgQkxLUlJQQVJUIGlvY3RsKCkgKHJlcmVhZCBwYXJ0aXRpb24gdGFibGUgZnJvbSBk aXNrKQorK2FyZSBwZXJmb3JtZWQgYmVmb3JlIGV4aXRpbmcgd2hlbiB0aGUgcGFydGl0aW9uIHRh YmxlIGhhcyBiZWVuIHVwZGF0ZWQuCisrTG9uZyBhZ28gaXQgdXNlZCB0byBiZSBuZWNlc3Nhcnkg dG8gcmVib290IGFmdGVyIHRoZSB1c2Ugb2YgcG1hYy1mZGlzay4KKytJIGRvIG5vdCB0aGluayB0 aGlzIGlzIHRoZSBjYXNlIGFueW1vcmUgLSBpbmRlZWQsIHJlYm9vdGluZyB0b28gcXVpY2tseQor K21pZ2h0IGNhdXNlIGxvc3Mgb2Ygbm90LXlldC13cml0dGVuIGRhdGEuIE5vdGUgdGhhdCBib3Ro IHRoZSBrZXJuZWwKKythbmQgdGhlIGRpc2sgaGFyZHdhcmUgbWF5IGJ1ZmZlciBkYXRhLgogKwot KyAgICAgVGhpcyBjYW4gYmUgYSBzaW5nbGUgd29yZCB3aXRob3V0IHF1b3Rlcywgb3IgYSBzdHJp bmcgc3Vycm91bmRlZAotKyAgICAgYnkgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMuIEl0IGlzIGJl c3QgdG8gbmFtZSBhbnkgc3dhcCBwYXJ0aXRpb24KLSsgICAgIHlvdSBjcmVhdGUgYHN3YXAnOyBv dGhlciBwYXJ0aXRpb24gbmFtZXMgYXJlIHVwIHRvIHlvdS4gVGhlIG5hbWVzCi0rICAgICBhcmUg bm90IHZpc2libGUgdG8gTGludXguCisrLlNIICJET1MgNi54IFdBUk5JTkciCiArCi0rVGhlCi0r LkIgQwotK2NvbW1hbmQgaXMgaWRlbnRpY2FsIHRvIHRoZQotKy5CIGMKLStjb21tYW5kLCB3aXRo IHRoZSBhZGRpdGlvbiBvZiBhIHBhcnRpdGlvbiB0eXBlIGFyZ3VtZW50IGFmdGVyIHRoZQotK290 aGVyIGFyZ3VtZW50cy4gVGhlIHBhcnRpdGlvbiB0eXBlIHVzZWQgZm9yIExpbnV4IHN3YXAgYW5k IGRhdGEgcGFydGl0b25zCi0raXMgCi0rLkIgQVBQTEVfVU5JWF9TVlIyCi0rKHRoaXMgaXMgdGhl IHBhcnRpdGlvbiB0eXBlIGNyZWF0ZWQgYnkgdGhlIAotKy5CIGMKLStjb21tYW5kKS4gVW5kZXIg bm9ybWFsIGNpcmN1bXN0YW5jZXMsIHlvdSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIHRoaXMKLStj b21tYW5kLgorK1RoZSBET1MgNi54IEZPUk1BVCBjb21tYW5kIGxvb2tzIGZvciBzb21lIGluZm9y bWF0aW9uIGluIHRoZSBmaXJzdAorK3NlY3RvciBvZiB0aGUgZGF0YSBhcmVhIG9mIHRoZSBwYXJ0 aXRpb24sIGFuZCB0cmVhdHMgdGhpcyBpbmZvcm1hdGlvbgorK2FzIG1vcmUgcmVsaWFibGUgdGhh biB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHBhcnRpdGlvbiB0YWJsZS4gIERPUworK0ZPUk1BVCBl eHBlY3RzIERPUyBGRElTSyB0byBjbGVhciB0aGUgZmlyc3QgNTEyIGJ5dGVzIG9mIHRoZSBkYXRh IGFyZWEKKytvZiBhIHBhcnRpdGlvbiB3aGVuZXZlciBhIHNpemUgY2hhbmdlIG9jY3Vycy4gIERP UyBGT1JNQVQgd2lsbCBsb29rIGF0CisrdGhpcyBleHRyYSBpbmZvcm1hdGlvbiBldmVuIGlmIHRo ZSAvVSBmbGFnIGlzIGdpdmVuIC0tIHdlIGNvbnNpZGVyCisrdGhpcyBhIGJ1ZyBpbiBET1MgRk9S TUFUIGFuZCBET1MgRkRJU0suCiArCi0rVGhlCi0rLkIgZAotK2NvbW1hbmQgZGVsZXRlcyB0aGUg cGFydGl0aW9uIG51bWJlciBzcGVjaWZpZWQsIHJlcGxhY2luZyB0aGF0IHBhcnRpdGlvbiAKLSt3 aXRoIHBhcnRpdGlvbmFibGUgZnJlZSBzcGFjZS4KKytUaGUgYm90dG9tIGxpbmUgaXMgdGhhdCBp ZiB5b3UgdXNlIHBtYWMtZmRpc2sgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGEKKytET1MgcGFydGl0 aW9uIHRhYmxlIGVudHJ5LCB0aGVuIHlvdSBtdXN0IGFsc28gdXNlCisrLkIgZGQKKyt0byB6ZXJv IHRoZSBmaXJzdCA1MTIgYnl0ZXMgb2YgdGhhdCBwYXJ0aXRpb24gYmVmb3JlIHVzaW5nIERPUyBG T1JNQVQgdG8KKytmb3JtYXQgdGhlIHBhcnRpdGlvbi4gIEZvciBleGFtcGxlLCBpZiB5b3Ugd2Vy ZSB1c2luZyBwbWFjLWZkaXNrIHRvIG1ha2UgYSAKKytET1MgcGFydGl0aW9uIHRhYmxlIGVudHJ5 IGZvciAvZGV2L2hkYTEsIHRoZW4gKGFmdGVyIGV4aXRpbmcgcG1hYy1mZGlzayAKKythbmQgcmVi b290aW5nIExpbnV4IHNvIHRoYXQgdGhlIHBhcnRpdGlvbiB0YWJsZSBpbmZvcm1hdGlvbiBpcyB2 YWxpZCkgeW91Cisrd291bGQgdXNlIHRoZSBjb21tYW5kICJkZCBpZj0vZGV2L3plcm8gb2Y9L2Rl di9oZGExIGJzPTUxMiBjb3VudD0xIiB0byB6ZXJvCisrdGhlIGZpcnN0IDUxMiBieXRlcyBvZiB0 aGUgcGFydGl0aW9uLgogKwotK1RoZQotKy5CIHIKLSsocmVvcmRlcikgY29tbWFuZCBhbGxvd3Mg dGhlIGluZGV4IG51bWJlciBvZiBwYXJ0aXRpb25zIHRvIGJlIGNoYW5nZWQuCi0rVGhlIGluZGV4 IG51bWJlcnMgYXJlIGNvbnN0cmFpbmVkIHRvIGJlIGEgY29udGlndW91cyBzZXF1ZW5jZS4gCi0r LkIgbWFjLWZkaXNrCi0rd2lsbCBlbmZvcmNlIHRoaXMgY29uc3RyYWludCBieSByZWNhbGN1bGF0 aW5nIHRoZSBwYXJ0aXRpb24gbnVtYmVycwotK2FmdGVyIGVhY2ggaW5zZXJ0LCBkZWxldGUgb3Ig cmVvcmRlciBvcGVyYXRpb24uIE9wZW5GaXJtd2FyZSBsb29rcyBmb3IKLStib290YWJsZSBwYXJ0 aXRpb25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIGluZGV4LiBUaGUKLStwYXJ0aXRp b25zIGFyZSBub3QgbW92ZWQgb24gdGhlIGRpc2suIFRoaXMgY29tbWFuZCB0YWtlcyB0d28KLSth cmd1bWVudHMsIHRoZSBudW1iZXIgb2YgdGhlIHBhcnRpdGlvbiB0byBiZSBtb3ZlZCBhbmQgdGhl IHBhcnRpdGlvbgotK251bWJlciBpdCBzaG91bGQgYmVjb21lLgorKy5CIEJFIEVYVFJFTUVMWSBD QVJFRlVMCisraWYgeW91IHVzZSB0aGUKKysuQiBkZAorK2NvbW1hbmQsIHNpbmNlIGEgc21hbGwg dHlwbyBjYW4gbWFrZSBhbGwgb2YgdGhlIGRhdGEgb24geW91ciBkaXNrIHVzZWxlc3MuCiArCi0r VGhlCi0rLkIgdwotK2NvbW1hbmQgd3JpdGVzIHRoZSBwYXJ0aXRpb24gbWFwIG91dCB0byBkaXNr LiBOb3RlIHRoYXQgcGFydGl0aW9uCi0rbWFwcyBmb3IgZGlza3Mgd2l0aCBtb3VudGVkIHBhcnRp dGlvbnMgY2Fubm90IGltbWVkaWF0ZWx5IGJlCi0rcmVpbnRlcnByZXRlZCBieSB0aGUga2VybmVs LiBJbiBvcmRlciB0byB1c2UgdGhlIG5ldyBwYXJ0aXRpb24gbWFwIHlvdQotK211c3QgcmVib290 LiBXaXRoaW4gdGhlIERlYmlhbiBpbnN0YWxsZXIgc3lzdGVtLCAKLSsuQiBtYWMtZmRpc2sgCi0r aXMgbm9ybWFsbHkgaW52b2tlZCBiZWZvcmUgYW55IHBhcnRpdGlvbnMgYXJlIG1vdW50ZWQsIHRo dXMgYSByZWJvb3QgaXMgbm90IAotK25lY2Vzc2FyeSBiZWZvcmUgY29udGludWluZyB0aGUgaW5z dGFsbGF0aW9uLgorK0ZvciBiZXN0IHJlc3VsdHMsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSBhbiBP Uy1zcGVjaWZpYyBwYXJ0aXRpb24gdGFibGUKKytwcm9ncmFtLiAgRm9yIGV4YW1wbGUsIHlvdSBz aG91bGQgbWFrZSBET1MgcGFydGl0aW9ucyB3aXRoIHRoZSBET1MgRkRJU0sKKytwcm9ncmFtIGFu ZCBMaW51eCBwYXJ0aXRpb25zIHdpdGggdGhlIExpbnV4IHBtYWMtZmRpc2sgcHJvZ3JhbS4KICsK KysuU0ggT1BUSU9OUworKy5UUAorKy5CIFwtdgorK1ByaW50IHZlcnNpb24gbnVtYmVyIG9mCisr LkIgcG1hYy1mZGlzaworK3Byb2dyYW0gYW5kIGV4aXQuCisrLlRQCisrLkIgXC1sCisrTGlzdCB0 aGUgcGFydGl0aW9uIHRhYmxlcyBmb3IKKysuQlIgL2Rldi9oZFthLWRdICwKKysuQlIgL2Rldi9z ZFthLWhdICwKKythbmQgdGhlbiBleGl0LgorKy5UUAorKy5CIFwtdQorK1doZW4gbGlzdGluZyBw YXJ0aXRpb24gdGFibGVzLCBnaXZlIHNpemVzIGluIHNlY3RvcnMgaW5zdGVhZAorK29mIGN5bGlu ZGVycy4KKysuVFAKKysuQkkgIlwtcyAiIHBhcnRpdGlvbgogK1RoZQotKy5CIHEKLStjb21tYW5k IHRlcm1pbmF0ZXMgdGhlIHByb2dyYW0uIElmIHRoZXJlIHdhcyBubyAKLSsuQiB3Ci0rY29tbWFu ZCBpc3N1ZWQgZHVyaW5nIHRoZSBwcm9ncmFtIHJ1biwgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGVm ZmVjdCBvbiB0aGUgZGlzay4KLSsKKysuSSBzaXplCisrb2YgdGhlIHBhcnRpdGlvbiAoaW4gYmxv Y2tzKSBpcyBwcmludGVkIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuCiArLlNIIEJVR1MKLStTb21l IHBlb3BsZSBiZWxpZXZlIHRoZXJlIHNob3VsZCByZWFsbHkgYmUganVzdCBvbmUgZGlzayBwYXJ0 aXRpb25pbmcgdXRpbGl0eS4KLSsKLSsuQiBtYWMtZmRpc2sKLStzaG91bGQgYmUgYWJsZSB0byBj cmVhdGUgSEZTIHBhcnRpdGlvbnMgdGhhdCB3b3JrLiBDdXJyZW50bHksIGlmIGEKLStwcmUtZXhp c3RpbmcgSEZTIHBhcnRpdGlvbiBpcyByZXNpemVkLCBNYWNPUyB3aWxsIGNvbnRpbnVlIHRvIHVz ZSB0aGUKLStwYXJ0aXRpb24gc2l6ZSBzdG9yZWQgaW4gdGhlIEhGUyAnc3VwZXJibG9jaycgaW5z dGVhZCBvZiB1c2luZyB0aGUgc2l6ZSBmcm9tCi0rdGhlIHBhcnRpdGlvbiB0YWJsZSAodGhlIE1h Y09TIHZvbHVtZSBvbiB0aGUgcGFydGl0aW9uIHJlbWFpbnMgdmFsaWQgZXZlbgotK3Rob3VnaCB0 aGUgc2l6ZXMgZG9uJ3QgbWF0Y2ggYW55bW9yZSkuIFRoaXMgY2FuIGhhdmUgdW5kZXNpcmVkIHNp ZGUgZWZmZWN0cwotK2VzcGVjaWFsbHkgd2hlbiBjcmVhdGluZyBhIHNtYWxsZXIgSEZTIHBhcnRp dGlvbiBmb2xsb3dlZCBieSBhIGZldyBMaW51eCAKLStwYXJ0aXRpb25zIGluIHBsYWNlIG9mIHRo ZSBwcmV2aW91cyBIRlMgcGFydGl0aW9uIHNwYWNlLiBUbyBhdm9pZCB0aGlzIAotK2lzc3VlLCBj cmVhdGUgTWFjT1MgcGFydGl0aW9ucyB3aXRoaW4gTWFjT1MgYW5kIHRoZW4gZG9uJ3QgcmVzaXpl IHRoZW0gCi0raW4gCi0rLkIgbWFjLWZkaXNrLgotKwotKy5TSCAiU0VFIEFMU08iCi0rLkJSIGZk aXNrICg4KSwgCi0rLkJSIG1rc3dhcCAoOCksCi0rLkJSIG1rZnMgKDgpCi0rLlNIIEFVVEhPUgot K0VyeWsgVmVyc2hlbiAoZXJ5a0BhcHBsZS5jb20pLCBtYW4gcGFnZSByZXZpc2VkIGJ5IENocmlz IFRpbGxtYW4gKHRpbGxtYW5AYXpzdGFybmV0LmNvbSkKLS0tLSBwYXJ0aXRpb25fbWFwLmMKLSsr KyBwYXJ0aXRpb25fbWFwLmMKLUBAIC0zMCwxNCArMzAsMTIgQEAKLSAjaW5jbHVkZSA8c3RkbGli Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotLSNpbmNsdWRlIDxzdHJpbmcuaD4K LSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaWZkZWYgX19s aW51eF9fCi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotLSNpbmNsdWRlIDxsaW51eC9mcy5oPgot LSNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPgotKyNpbmNsdWRlICJrZXJuZWwtZGVmcy5oIgotICNp bmNsdWRlIDxzeXMvc3RhdC5oPgotICNlbmRpZgotIAotQEAgLTY1LDYgKzYzLDggQEAKLSBjb25z dCBjaGFyICoga0ZyZWVUeXBlCT0gIkFwcGxlX0ZyZWUiOwotIGNvbnN0IGNoYXIgKiBrTWFwVHlw ZQk9ICJBcHBsZV9wYXJ0aXRpb25fbWFwIjsKLSBjb25zdCBjaGFyICoga1VuaXhUeXBlCT0gIkFw cGxlX1VOSVhfU1ZSMiI7Ci0rY29uc3QgY2hhciAqIGtCb290c3RyYXBUeXBlID0gIkFwcGxlX0Jv b3RzdHJhcCI7Ci0rY29uc3QgY2hhciAqIGtCb290c3RyYXBOYW1lID0gImJvb3RzdHJhcCI7Ci0g Ci0gY29uc3QgY2hhciAqIGtGcmVlTmFtZSA9ICJFeHRyYSI7Ci0gCi1AQCAtMjg4LDE1ICsyODgs MTcgQEAKLSAJICAgIGZyZWUoYmxvY2spOwotIAl9Ci0gICAgIH0KLS0gICAgcHJpbnRmKCJUaGUg cGFydGl0aW9uIHRhYmxlIGhhcyBiZWVuIGFsdGVyZWQhXG5cbiIpOwotKyAgICBwcmludGYoIlRo ZSBwYXJ0aXRpb24gbWFwIGhhcyBiZWVuIHNhdmVkIHN1Y2Nlc3NmdWxseSFcblxuIik7Ci0gCi0g I2lmZGVmIF9fbGludXhfXwotICAgICBpZiAobWFwLT5yZWd1bGFyX2ZpbGUpIHsKLSAJY2xvc2Vf ZGV2aWNlKG1hcC0+ZmQpOwotICAgICB9IGVsc2UgewotLQkvLyBwcmludGYoIkNhbGxpbmcgaW9j dGwoKSB0byByZS1yZWFkIHBhcnRpdGlvbiB0YWJsZS5cbiIKLS0JLy8gICAgICAgIihSZWJvb3Qg dG8gZW5zdXJlIHRoZSBwYXJ0aXRpb24gdGFibGUgaGFzIGJlZW4gdXBkYXRlZC4pXG4iKTsKLS0J c3luYygpOwotKwkvLyBwcmludGYoIkNhbGxpbmcgaW9jdGwoKSB0byByZS1yZWFkIHBhcnRpdGlv biB0YWJsZS5cbiIpOwotKwlpZiAoKGkgPSBpb2N0bChmZCwgQkxLRkxTQlVGKSkgIT0gMCkgewot KwkgICAgcGVycm9yKCJpb2N0bChCTEtGTFNCVUYpIik7Ci0rCSAgICBzeW5jKCk7Ci0rCX0KLSAJ c2xlZXAoMik7Ci0gCWlmICgoaSA9IGlvY3RsKGZkLCBCTEtSUlBBUlQpKSAhPSAwKSB7Ci0gCSAg ICBzYXZlZF9lcnJubyA9IGVycm5vOwotQEAgLTMwNCwyMCArMzA2LDI2IEBACi0gCSAgICAvLyBz b21lIGtlcm5lbCB2ZXJzaW9ucyAoMS4yLngpIHNlZW0gdG8gaGF2ZSB0cm91YmxlCi0gCSAgICAv LyByZXJlYWRpbmcgdGhlIHBhcnRpdGlvbiB0YWJsZSwgYnV0IGlmIGFza2VkIHRvIGRvIGl0Ci0g CSAgICAvLyB0d2ljZSwgdGhlIHNlY29uZCB0aW1lIHdvcmtzLiAtIGJpcm9AeWdnZHJhc2lsLmNv bSAqLwotLQkgICAgc3luYygpOwotKwkgICAgLy8gcHJpbnRmKCJBZ2FpbiBjYWxsaW5nIGlvY3Rs KCkgdG8gcmUtcmVhZCBwYXJ0aXRpb24gdGFibGUuXG4iKTsKLSsJICAgIGlmICgoaSA9IGlvY3Rs KGZkLCBCTEtGTFNCVUYpKSAhPSAwKSB7Ci0rCSAgICAJcGVycm9yKCJpb2N0bChCTEtGTFNCVUYp Iik7Ci0rCQlzeW5jKCk7Ci0rCSAgICB9Ci0gCSAgICBzbGVlcCgyKTsKLSAJICAgIGlmICgoaSA9 IGlvY3RsKGZkLCBCTEtSUlBBUlQpKSAhPSAwKSB7Ci0gCQlzYXZlZF9lcnJubyA9IGVycm5vOwot IAkgICAgfQotIAl9Ci0rCXByaW50ZigiU3luY2luZyBkaXNrcy5cbiIpOwotKwlpZiAoKGkgPSBp b2N0bChmZCwgQkxLRkxTQlVGKSkgIT0gMCkgewotKwkgICAgcGVycm9yKCJpb2N0bChCTEtGTFNC VUYpIik7Ci0rCSAgICBzeW5jKCk7Ci0rCX0KLSAJY2xvc2VfZGV2aWNlKG1hcC0+ZmQpOwotLQot LQkvLyBwcmludGYoIlN5bmNpbmcgZGlza3MuXG4iKTsKLS0Jc3luYygpOwotIAlzbGVlcCg0KTsJ CS8qIGZvciBzeW5jKCkgKi8KLSAKLSAJaWYgKGkgPCAwKSB7Ci0tCSAgICBlcnJvcihzYXZlZF9l cnJubywgIlJlLXJlYWQgb2YgcGFydGl0aW9uIHRhYmxlIGZhaWxlZCIpOwotKwkgICAgZXJyb3Io c2F2ZWRfZXJybm8sICJSZS1yZWFkIG9mIHBhcnRpdGlvbiBtYXAgZmFpbGVkIik7Ci0gCSAgICBw cmludGYoIlJlYm9vdCB5b3VyIHN5c3RlbSB0byBlbnN1cmUgdGhlICIKLSAJCSAgICAicGFydGl0 aW9uIHRhYmxlIGlzIHVwZGF0ZWQuXG4iKTsKLSAJfQotQEAgLTY5Miw5ICs3MDAsOSBAQAotIAkJ Z2VvbWV0cnkuaGVhZHMqZ2VvbWV0cnkuc2VjdG9ycypnZW9tZXRyeS5jeWxpbmRlcnMpOwotICAg ICB9Ci0gCi0tICAgIGlmICgocG9zID0gbGxzZWVrKGZkLCAwLCBTRUVLX0VORCkpIDwgMCkgewot KyAgICBpZiAoKHBvcyA9IGxzZWVrNjQoZmQsIDAsIFNFRUtfRU5EKSkgPCAwKSB7Ci0gCXByaW50 ZigibGxzZWVrIHRvIGVuZCBvZiBkZXZpY2UgZmFpbGVkXG4iKTsKLS0gICAgfSBlbHNlIGlmICgo cG9zID0gbGxzZWVrKGZkLCAwLCBTRUVLX0NVUikpIDwgMCkgewotKyAgICB9IGVsc2UgaWYgKChw b3MgPSBsc2VlazY0KGZkLCAwLCBTRUVLX0NVUikpIDwgMCkgewotIAlwcmludGYoImxsc2VlayB0 byBlbmQgb2YgZGV2aWNlIGZhaWxlZCBvbiBzZWNvbmQgdHJ5XG4iKTsKLSAgICAgfSBlbHNlIHsK LSAJcHJpbnRmKCJsbHNlZWs6IHBvcyA9ICVkLCBibG9ja3M9JWRcbiIsIHBvcywgcG9zL1BCTE9D S19TSVpFKTsKLUBAIC04OTUsNiArOTAzLDcgQEAKLSAJcHJpbnRmKCJObyBzdWNoIHBhcnRpdGlv blxuIik7Ci0gICAgIH0gZWxzZSB7Ci0gCXJlbW92ZV9mcm9tX2Rpc2tfb3JkZXIoY3VyKTsKLSsJ aWYgKG9sZF9pbmRleCA8IGluZGV4KSBpbmRleCsrOyAvKiByZW51bWJlcl9kaXNrX2FkZHJlc3Nl cyhtYXApOyAqLwotIAljdXItPmRpc2tfYWRkcmVzcyA9IGluZGV4OwotIAlpbnNlcnRfaW5fZGlz a19vcmRlcihjdXIpOwotIAlyZW51bWJlcl9kaXNrX2FkZHJlc3NlcyhtYXApOwotLS0tIHBhcnRp dGlvbl9tYXAuaAotKysrIHBhcnRpdGlvbl9tYXAuaAotQEAgLTY5LDYgKzY5LDggQEAKLSBleHRl cm4gY29uc3QgY2hhciAqIGtGcmVlVHlwZTsKLSBleHRlcm4gY29uc3QgY2hhciAqIGtNYXBUeXBl OwotIGV4dGVybiBjb25zdCBjaGFyICoga1VuaXhUeXBlOwotK2V4dGVybiBjb25zdCBjaGFyICog a0Jvb3RzdHJhcFR5cGU7Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBrQm9vdHN0cmFwTmFtZTsKLSAK LSBleHRlcm4gY29uc3QgY2hhciAqIGtGcmVlTmFtZTsKLSAKLS0tLSBwZGlzay5jCi0rKysgcGRp c2suYwotQEAgLTMwLDE4ICszMCwxNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpZmRlZiBf X2xpbnV4X18KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNl bHNlCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgorK1RoZXJlIGFyZSBzZXZlcmFsICpmZGlzayBwcm9n cmFtcyBhcm91bmQuCisrRWFjaCBoYXMgaXRzIHByb2JsZW1zIGFuZCBzdHJlbmd0aHMuCisrVHJ5 IHRoZW0gaW4gdGhlIG9yZGVyCisrLkJSIGNmZGlzayAsCisrLkJSIHBtYWMtZmRpc2sgLAorKy5C UiBzZmRpc2sgLgorKyhJbmRlZWQsCisrLkIgY2ZkaXNrCisraXMgYSBiZWF1dGlmdWwgcHJvZ3Jh bSB0aGF0IGhhcyBzdHJpY3QgcmVxdWlyZW1lbnRzIG9uCisrdGhlIHBhcnRpdGlvbiB0YWJsZXMg aXQgYWNjZXB0cywgYW5kIHByb2R1Y2VzIGhpZ2ggcXVhbGl0eSBwYXJ0aXRpb24KKyt0YWJsZXMu IFVzZSBpdCBpZiB5b3UgY2FuLiAKKysuQiBwbWFjLWZkaXNrCisraXMgYSBidWdneSBwcm9ncmFt IHRoYXQgZG9lcyBmdXp6eSB0aGluZ3MgLSB1c3VhbGx5IGl0IGhhcHBlbnMgdG8KKytwcm9kdWNl IHJlYXNvbmFibGUgcmVzdWx0cy4gSXRzIHNpbmdsZSBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBoYXMK Kytzb21lIHN1cHBvcnQgZm9yIEJTRCBkaXNrIGxhYmVscyBhbmQgb3RoZXIgbm9uLURPUyBwYXJ0 aXRpb24gdGFibGVzLgorK0F2b2lkIGl0IGlmIHlvdSBjYW4uCisrLkIgc2ZkaXNrCisraXMgZm9y IGhhY2tlcnMgb25seSAtIHRoZSB1c2VyIGludGVyZmFjZSBpcyB0ZXJyaWJsZSwgYnV0IGl0IGlz CisrbW9yZSBjb3JyZWN0IHRoYW4gcG1hYy1mZGlzayBhbmQgbW9yZSBwb3dlcmZ1bCB0aGFuIGJv dGggcG1hYy1mZGlzayBhbmQgY2ZkaXNrLgorK01vcmVvdmVyLCBpdCBjYW4gYmUgdXNlZCBub25p bnRlcmFjdGl2ZWx5LikKKysuUFAKKytUaGUgSVJJWC9TR0kgdHlwZSBkaXNrbGFiZWwgaXMgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbC4KKytNb3Jlb3ZlciwgSVJJWC9TR0kg aGVhZGVyIGRpcmVjdG9yaWVzIGFyZSBub3QgZnVsbHkgc3VwcG9ydGVkIHlldC4KKysuUFAKKytU aGUgb3B0aW9uIGBkdW1wIHBhcnRpdGlvbiB0YWJsZSB0byBmaWxlJyBpcyBtaXNzaW5nLgorKy5c IiAuU0ggQVVUSE9SUworKy5cIiBBLiBWLiBMZSBCbGFuYyAoTGVCbGFuY0BtY2MuYWMudWspCisr LlwiIEJlcm5oYXJkIEZhc3RlbnJhdGggKGZhc3RlbkBpbmZvcm1hdGlrLnVuaS1ib25uLmRlKQor Ky5cIiBKYWt1YiBKZWxpbmVrIChqakBzdW5zaXRlLm1mZi5jdW5pLmN6KQorKy5cIiBBbmRyZWFz IE5ldXBlciAoQU5ldXBlckBHVVVHLmRlKQorKy5cIiBhbmQgbWFueSBvdGhlcnMuCistLS0gbWFj LWZkaXNrLTAuMS5vcmlnL2ZkaXNrLmMKKysrKyBtYWMtZmRpc2stMC4xL2ZkaXNrLmMKK0BAIC02 Miw3ICs2Miw2IEBACiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxTSU9VWC5oPgot ICNlbmRpZgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KIC0jaW5j bHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+ CisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHNldGptcC5oPgorQEAgLTcxLDkgKzcw LDkgQEAKICAKLSAjaWZkZWYgX19saW51eF9fCiAgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotLSNp bmNsdWRlIDxsaW51eC9mcy5oPgorIAorLSNpbmNsdWRlIDxsaW51eC9nZW5oZC5oPgogLSNpbmNs dWRlIDxsaW51eC9oZHJlZy5oPgorLSNpbmNsdWRlIDxsaW51eC9mcy5oPgorK3R5cGVkZWYgdW5z aWduZWQgc2hvcnQga2Rldl90OwkvKiBCQUQgaGFjazsga2Rldl90IGlzIG5vdCBleHBvcnRlZCAq LworKwogKyNpbmNsdWRlICJrZXJuZWwtZGVmcy5oIgotICNlbmRpZgogIAotICNpbmNsdWRlICJw ZGlzay5oIgotQEAgLTk0LDYgKzkzLDcgQEAKLSB2b2lkIGRvX2FkZF9pbnRlbF9wYXJ0aXRpb24o cGFydGl0aW9uX21hcF9oZWFkZXIgKm1hcCk7Ci0gdm9pZCBkb19jaGFuZ2VfbWFwX3NpemUocGFy dGl0aW9uX21hcF9oZWFkZXIgKm1hcCk7Ci0gdm9pZCBkb19jcmVhdGVfcGFydGl0aW9uKHBhcnRp dGlvbl9tYXBfaGVhZGVyICptYXAsIGludCBnZXRfdHlwZSk7Ci0rdm9pZCBkb19jcmVhdGVfYm9v dHN0cmFwX3BhcnRpdGlvbihwYXJ0aXRpb25fbWFwX2hlYWRlciAqbWFwKTsKLSB2b2lkIGRvX2Rl bGV0ZV9wYXJ0aXRpb24ocGFydGl0aW9uX21hcF9oZWFkZXIgKm1hcCk7Ci0gaW50IGRvX2V4cGVy dChwYXJ0aXRpb25fbWFwX2hlYWRlciAqbWFwKTsKLSB2b2lkIGRvX3Jlb3JkZXIocGFydGl0aW9u X21hcF9oZWFkZXIgKm1hcCk7Ci1AQCAtMTE0LDYgKzExNCw3IEBACi0gbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCisgI2luY2x1ZGUgImZkaXNrLmgiCisgCitAQCAtNDI4LDcgKzQyNyw3IEBA CisgCQlvZmZzZXRzW3BhcnRpdGlvbnNdID0gZXh0ZW5kZWRfb2Zmc2V0ICsgU1dBUDMyKHAtPnN0 YXJ0X3NlY3QpOworIAkJaWYgKCFleHRlbmRlZF9vZmZzZXQpCisgCQkJZXh0ZW5kZWRfb2Zmc2V0 ID0gU1dBUDMyKHAtPnN0YXJ0X3NlY3QpOworLQkJaWYgKGxsc2VlayhmZCwgKGxvZmZfdClvZmZz ZXRzW3BhcnRpdGlvbnNdCisrCQlpZiAobHNlZWs2NChmZCwgKGxvZmZfdClvZmZzZXRzW3BhcnRp dGlvbnNdCisgCQkJICAgICAgICogU0VDVE9SX1NJWkUsIFNFRUtfU0VUKSA8IDApCisgCQkJZmF0 YWwodW5hYmxlX3RvX3NlZWspOworIAkJaWYgKCEoYnVmZmVyc1twYXJ0aXRpb25zXSA9IChjaGFy ICopIG1hbGxvYyhTRUNUT1JfU0laRSkpKQorQEAgLTQzOCwxNCArNDM3LDE0IEBACisgCQlwYXJ0 X3RhYmxlW3BhcnRpdGlvbnNdID0gZXh0X3BvaW50ZXJzW3BhcnRpdGlvbnNdID0gTlVMTDsKKyAJ CXEgPSBwID0gb2Zmc2V0KGJ1ZmZlcnNbcGFydGl0aW9uc10sIDApOworIAkJZm9yIChpID0gMDsg aSA8IDQ7IGkrKywgcCsrKSB7CistCQkJaWYgKHAtPnN5c19pbmQgPT0gRVhURU5ERUQpCisrCQkJ aWYgKHAtPnN5c19pbmQgPT0gRVhURU5ERUQpIHsKKyAJCQkJaWYgKGV4dF9wb2ludGVyc1twYXJ0 aXRpb25zXSkKKyAJCQkJCWZwcmludGYoc3RkZXJyLCAiV2FybmluZzogZXh0cmEgbGluayAiCisg CQkJCQkJInBvaW50ZXIgaW4gcGFydGl0aW9uIHRhYmxlICIKKyAJCQkJCQkiJWRcbiIsIHBhcnRp dGlvbnMgKyAxKTsKKyAJCQkJZWxzZQorIAkJCQkJZXh0X3BvaW50ZXJzW3BhcnRpdGlvbnNdID0g cDsKKy0JCQllbHNlIGlmIChwLT5zeXNfaW5kKQorKwkJCX0gZWxzZSBpZiAocC0+c3lzX2luZCkg eworIAkJCQlpZiAocGFydF90YWJsZVtwYXJ0aXRpb25zXSkKKyAJCQkJCWZwcmludGYoc3RkZXJy LAorIAkJCQkJCSJXYXJuaW5nOiBpZ25vcmluZyBleHRyYSBkYXRhICIKK0BAIC00NTMsMTUgKzQ1 MiwxOCBAQAorIAkJCQkJCXBhcnRpdGlvbnMgKyAxKTsKKyAJCQkJZWxzZQorIAkJCQkJcGFydF90 YWJsZVtwYXJ0aXRpb25zXSA9IHA7CisrCQkJfQorIAkJfQorLQkJaWYgKCFwYXJ0X3RhYmxlW3Bh cnRpdGlvbnNdKQorKwkJaWYgKCFwYXJ0X3RhYmxlW3BhcnRpdGlvbnNdKSB7CisgCQkJaWYgKHEg IT0gZXh0X3BvaW50ZXJzW3BhcnRpdGlvbnNdKQorIAkJCQlwYXJ0X3RhYmxlW3BhcnRpdGlvbnNd ID0gcTsKKyAJCQllbHNlIHBhcnRfdGFibGVbcGFydGl0aW9uc10gPSBxICsgMTsKKy0JCWlmICgh ZXh0X3BvaW50ZXJzW3BhcnRpdGlvbnNdKQorKwkJfQorKwkJaWYgKCFleHRfcG9pbnRlcnNbcGFy dGl0aW9uc10pIHsKKyAJCQlpZiAocSAhPSBwYXJ0X3RhYmxlW3BhcnRpdGlvbnNdKQorIAkJCQll eHRfcG9pbnRlcnNbcGFydGl0aW9uc10gPSBxOworIAkJCWVsc2UgZXh0X3BvaW50ZXJzW3BhcnRp dGlvbnNdID0gcSArIDE7CisrCQl9CisgCQlwID0gZXh0X3BvaW50ZXJzW3BhcnRpdGlvbnMrK107 CisgCX0KKyB9CitAQCAtNDk3LDExICs0OTksMTIgQEAKKyAJd2Fybl9nZW9tZXRyeSgpOworIAor IAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorLQkJaWYocGFydF90YWJsZVtpXS0+c3lzX2luZCA9 PSBFWFRFTkRFRCkKKysJCWlmKHBhcnRfdGFibGVbaV0tPnN5c19pbmQgPT0gRVhURU5ERUQpIHsK KyAJCQlpZiAocGFydGl0aW9ucyAhPSA0KQorIAkJCQlmcHJpbnRmKHN0ZGVyciwgIklnbm9yaW5n IGV4dHJhIGV4dGVuZGVkICIKKyAJCQkJCSJwYXJ0aXRpb24gJWRcbiIsIGkgKyAxKTsKKyAJCQll bHNlIHJlYWRfZXh0ZW5kZWQocGFydF90YWJsZVtleHRfaW5kZXggPSBpXSk7CisrCQl9CisgCisg CWZvciAoaSA9IDM7IGkgPCBwYXJ0aXRpb25zOyBpKyspCisgCQlpZiAoU1dBUDE2KCp0YWJsZV9j aGVjayhidWZmZXJzW2ldKSkgIT0gUEFSVF9UQUJMRV9GTEFHKSB7CitAQCAtNjIxLDYgKzYyNCw3 IEBACisgCQkJY2FzZSBsb3dlcjogaSArPSBsb3c7IGJyZWFrOworIAkJCWNhc2UgdXBwZXI6IGkg Kz0gaGlnaDsgYnJlYWs7CisgCQkJY2FzZSBkZWZsdDogaSArPSBkZmx0OyBicmVhazsKKysJCQlk ZWZhdWx0OiBicmVhazsKKyAJCQl9CisgCQl9CisgCQllbHNlCitAQCAtODQ0LDEyICs4NDgsMTIg QEAKKyAJCXJldHVybjsJCS8qIGRvIG5vdCBjaGVjayBleHRlbmRlZCBwYXJ0aXRpb25zICovCisg CisgLyogcGh5c2ljYWwgYmVnaW5uaW5nIGMsIGgsIHMgKi8KKy0JcGJjID0gcC0+Y3lsICYgMHhm ZiB8IChwLT5zZWN0b3IgPDwgMikgJiAweDMwMDsKKysJcGJjID0gKHAtPmN5bCAmIDB4ZmYpIHwg KChwLT5zZWN0b3IgPDwgMikgJiAweDMwMCk7CisgCXBiaCA9IHAtPmhlYWQ7CisgCXBicyA9IHAt PnNlY3RvciAmIDB4M2Y7CisgCisgLyogcGh5c2ljYWwgZW5kaW5nIGMsIGgsIHMgKi8KKy0JcGVj ID0gcC0+ZW5kX2N5bCAmIDB4ZmYgfCAocC0+ZW5kX3NlY3RvciA8PCAyKSAmIDB4MzAwOworKwlw ZWMgPSAocC0+ZW5kX2N5bCAmIDB4ZmYpIHwgKChwLT5lbmRfc2VjdG9yIDw8IDIpICYgMHgzMDAp OworIAlwZWggPSBwLT5lbmRfaGVhZDsKKyAJcGVzID0gcC0+ZW5kX3NlY3RvciAmIDB4M2Y7Cisg CitAQCAtOTQxLDcgKzk0NSw3IEBACisgCQlkaXNrX2RldmljZSwgaGVhZHMsIHNlY3RvcnMsIGN5 bGluZGVycyk7CisgICAgICAgICBwcmludGYoIk5yIEFGICBIZCBTZWMgIEN5bCAgSGQgU2VjICBD eWwgICBTdGFydCAgICBTaXplIElEXG4iKTsKKyAJZm9yIChpID0gMCA7IGkgPCBwYXJ0aXRpb25z OyBpKyspCistCQlpZiAocCA9IHFbaV0pIHsKKysJCWlmICgocCA9IHFbaV0pKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlMmQgJTAyeCU0ZCU0ZCU1ZCU0ZCU0ZCU1ZCU4ZCU4 ZCAlMDJ4XG4iLAorIAkJCQlpICsgMSwgcC0+Ym9vdF9pbmQsIHAtPmhlYWQsCisgCQkJCXNlY3Rv cihwLT5zZWN0b3IpLAorQEAgLTEwMjYsNyArMTAzMCw3IEBACisgCQkJCWxhc3RbaV0pOworIAkJ CXRvdGFsICs9IGxhc3RbaV0gKyAxIC0gZmlyc3RbaV07CisgCQkJZm9yIChqID0gMDsgaiA8IGk7 IGorKykKKy0JCQlpZiAoZmlyc3RbaV0gPj0gZmlyc3Rbal0gJiYgZmlyc3RbaV0gPD0gbGFzdFtq XQorKwkJCWlmICgoZmlyc3RbaV0gPj0gZmlyc3Rbal0gJiYgZmlyc3RbaV0gPD0gbGFzdFtqXSkK KyAJCQkJCXx8IChsYXN0W2ldIDw9IGxhc3Rbal0gJiYKKyAJCQkJCWxhc3RbaV0gPj0gZmlyc3Rb al0pKSB7CisgCQkJCXByaW50ZigiV2FybmluZzogcGFydGl0aW9uICVkIG92ZXJsYXBzICIKK0BA IC0xMDYwLDExICsxMDY0LDExIEBACisgCWlmICh0b3RhbCA+IGhlYWRzICogc2VjdG9ycyAqIGN5 bGluZGVycykKKyAJCXByaW50ZigiVG90YWwgYWxsb2NhdGVkIHNlY3RvcnMgJWQgZ3JlYXRlciB0 aGFuIHRoZSBtYXhpbXVtICIKKyAJCQkiJWRcbiIsIHRvdGFsLCBoZWFkcyAqIHNlY3RvcnMgKiBj eWxpbmRlcnMpOworLQllbHNlIGlmICh0b3RhbCA9IGhlYWRzICogc2VjdG9ycyAqIGN5bGluZGVy cyAtIHRvdGFsKQorKwllbHNlIGlmICgodG90YWwgPSBoZWFkcyAqIHNlY3RvcnMgKiBjeWxpbmRl cnMgLSB0b3RhbCkpCisgCQlwcmludGYoIiVkIHVuYWxsb2NhdGVkIHNlY3RvcnNcbiIsIHRvdGFs KTsKKyB9CisgCistdm9pZCBhZGRfcGFydGl0aW9uKGludCBuLCBpbnQgc3lzKQorK3N0YXRpYyB2 b2lkIGFkZF9wYXJ0aXRpb24oaW50IG4sIGludCBzeXMpCiAgewotICAgICBpbnQgbmFtZV9pbmRl eDsKLSsgICAgaW50IGVycj0wOworIAljaGFyIG1lc2dbNDhdOworIAlpbnQgaSwgcmVhZCA9IDA7 CitAQCAtMTEwMCwxMSArMTEwNCwxMiBAQAorIAkJZm9yIChpID0gMDsgaSA8IHBhcnRpdGlvbnM7 IGkrKykgeworIAkJCWlmIChzdGFydCA9PSBvZmZzZXRzW2ldKQorIAkJCQlzdGFydCArPSBzZWN0 b3Jfb2Zmc2V0OworLQkJCWlmIChzdGFydCA+PSBmaXJzdFtpXSAmJiBzdGFydCA8PSBsYXN0W2ld KQorKwkJCWlmIChzdGFydCA+PSBmaXJzdFtpXSAmJiBzdGFydCA8PSBsYXN0W2ldKSB7CisgCQkJ CWlmIChuIDwgNCkKKyAJCQkJCXN0YXJ0ID0gbGFzdFtpXSArIDE7CisgCQkJCWVsc2UKKyAJCQkJ CXN0YXJ0ID0gbGFzdFtpXSArIHNlY3Rvcl9vZmZzZXQ7CisrCQkJfQorIAkJfQorIAkJaWYgKHN0 YXJ0ID4gbGltaXQpCisgCQkJYnJlYWs7CitAQCAtMTI0OSw3ICsxMjU0LDcgQEAKKyAJZm9yIChp ID0gMzsgaSA8IHBhcnRpdGlvbnM7IGkrKykKKyAJCWlmIChjaGFuZ2VkW2ldKSB7CisgCQkJKnRh YmxlX2NoZWNrKGJ1ZmZlcnNbaV0pID0gU1dBUDE2KFBBUlRfVEFCTEVfRkxBRyk7CistCQkJaWYg KGxsc2VlayhmZCwgKGxvZmZfdClvZmZzZXRzW2ldCisrCQkJaWYgKGxzZWVrNjQoZmQsIChsb2Zm X3Qpb2Zmc2V0c1tpXQorIAkJCQkJKiBTRUNUT1JfU0laRSwgU0VFS19TRVQpIDwgMCkKKyAJCQkJ ZmF0YWwodW5hYmxlX3RvX3NlZWspOworIAkJCWlmICh3cml0ZShmZCwgYnVmZmVyc1tpXSwgU0VD VE9SX1NJWkUpICE9IFNFQ1RPUl9TSVpFKQorQEAgLTEyNjIsNyArMTI2Nyw3IEBACisgCSAgICAg ICAiKFJlYm9vdCB0byBlbnN1cmUgdGhlIHBhcnRpdGlvbiB0YWJsZSBoYXMgYmVlbiB1cGRhdGVk LilcbiIpOworIAlzeW5jKCk7CisgCXNsZWVwKDIpOworLQlpZiAoaSA9IGlvY3RsKGZkLCBCTEtS UlBBUlQpKSB7CisrCWlmICgoaSA9IGlvY3RsKGZkLCBCTEtSUlBBUlQpKSkgeworICAgICAgICAg ICAgICAgICBlcnJvciA9IGVycm5vOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICAgLyogc29tZSBrZXJuZWwgdmVyc2lvbnMgKDEuMi54KSBzZWVtIHRvIGhhdmUgdHJvdWJsZQor QEAgLTEyNzAsNyArMTI3NSw3IEBACisgCQkgICB0d2ljZSwgdGhlIHNlY29uZCB0aW1lIHdvcmtz LiAtIGJpcm9AeWdnZHJhc2lsLmNvbSAqLworICAgICAgICAgICAgICAgICBzeW5jKCk7CisgICAg ICAgICAgICAgICAgIHNsZWVwKDIpOworLSAgICAgICAgICAgICAgICBpZihpID0gaW9jdGwoZmQs IEJMS1JSUEFSVCkpCisrICAgICAgICAgICAgICAgIGlmKChpID0gaW9jdGwoZmQsIEJMS1JSUEFS VCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJybm87CisgICAgICAgICB9 CiAgCi0gICAgIGlmIChzaXplb2YoRFBNRSkgIT0gUEJMT0NLX1NJWkUpIHsKLSAJZmF0YWwoLTEs ICJTaXplIG9mIHBhcnRpb24gbWFwIGVudHJ5ICglZCkgIgotQEAgLTE1MCw3ICsxNTEsOSBAQAot ICAgICB9IGVsc2UgaWYgKCF2ZmxhZykgewotIAl1c2FnZSgibm8gZGV2aWNlIGFyZ3VtZW50Iik7 Ci0gIAlkb19oZWxwKCk7Ci0rCWVycj0tRUlOVkFMOwkvLyBkZWJhdGFibGUKLSAgICAgfQotKyAg ICBleGl0KGVycik7CitAQCAtMTM5MSw3ICsxMzk2LDcgQEAKKyB2b2lkIHRyeShjaGFyICpkZXZp Y2UpCisgeworIAlkaXNrX2RldmljZSA9IGRldmljZTsKKy0JaWYgKCFzZXRqbXAobGlzdGluZ2J1 ZikpCisrCWlmICghc2V0am1wKGxpc3RpbmdidWYpKSB7CisgCQlpZiAoKGZkID0gb3BlbihkaXNr X2RldmljZSwgdHlwZV9vcGVuKSkgPj0gMCkgeworIAkJCWNsb3NlKGZkKTsKKyAJCQlnZXRfYm9v dCgpOworQEAgLTE0MDcsNiArMTQxMiw3IEBACisgCQkgICAgZXhpdCgxKTsKKyAJCSB9CisgCSAg ICAgIH0KKysJfQogIH0KLSAjZWxzZQotIG1haW4oKQotQEAgLTM1MSw3ICszNTQsOCBAQAotIAkg ICAgcHJpbnRmKCIgIFAgICAgKHByaW50IG9yZGVyZWQgYnkgYmFzZSBhZGRyZXNzKVxuIik7Ci0g CSAgICBwcmludGYoIiAgaSAgICBpbml0aWFsaXplIHBhcnRpdGlvbiBtYXBcbiIpOwotIAkgICAg cHJpbnRmKCIgIHMgICAgY2hhbmdlIHNpemUgb2YgcGFydGl0aW9uIG1hcFxuIik7Ci0tCSAgICBw cmludGYoIiAgYyAgICBjcmVhdGUgbmV3IHBhcnRpdGlvblxuIik7Ci0rCSAgICBwcmludGYoIiAg YiAgICBjcmVhdGUgbmV3IDgwMEsgYm9vdHN0cmFwIHBhcnRpdGlvblxuIik7Ci0rCSAgICBwcmlu dGYoIiAgYyAgICBjcmVhdGUgbmV3IExpbnV4IHBhcnRpdGlvblxuIik7Ci0gCSAgICBwcmludGYo IiAgQyAgICAoY3JlYXRlIHdpdGggdHlwZSBhbHNvIHNwZWNpZmllZClcbiIpOwotIAkgICAgcHJp bnRmKCIgIGQgICAgZGVsZXRlIGEgcGFydGl0aW9uXG4iKTsKLSAJICAgIHByaW50ZigiICByICAg IHJlb3JkZXIgcGFydGl0aW9uIGVudHJ5IGluIG1hcFxuIik7Ci1AQCAtMzc4LDYgKzM4MiwxMCBA QAotIAljYXNlICdpJzoKLSAJICAgIG1hcCA9IGluaXRfcGFydGl0aW9uX21hcChuYW1lLCBtYXAp OwotIAkgICAgYnJlYWs7Ci0rCWNhc2UgJ0InOgotKwljYXNlICdiJzoKLSsJICAgIGRvX2NyZWF0 ZV9ib290c3RyYXBfcGFydGl0aW9uKG1hcCk7Ci0rCSAgICBicmVhazsKLSAJY2FzZSAnQyc6Ci0g CSAgICBnZXRfdHlwZSA9IDE7Ci0gCSAgICAvLyBmYWxsIHRocm91Z2gKLUBAIC00NzEsNiArNDc5 LDMwIEBACisgCisgdm9pZCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKy0tLSBtYWMtZmRp c2stMC4xLm9yaWcvZHVtcC5jCisrKysgbWFjLWZkaXNrLTAuMS9kdW1wLmMKK0BAIC0zLDcgKzMs MTEgQEAKKyAvLworIC8vIFdyaXR0ZW4gYnkgRXJ5ayBWZXJzaGVuIChlcnlrQGFwcGxlLmNvbSkK KyAvLworLQorKy8qCisrICogTGludXgvbTY4ayB2ZXJzaW9uIGJ5IENocmlzdGlhYW4gV2VsdmFh cnQKKysgKiBtaW5vciBmaXhlcyBhbmQgZ2xpYmMgY2hhbmdlIGJ5IE1pY2hhZWwgU2NobWl0egor KyAqLworKyAKKyAvKgorICAqIENvcHlyaWdodCAxOTk2LDE5OTcgYnkgQXBwbGUgQ29tcHV0ZXIs IEluYy4KKyAgKiAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZCAKK0BAIC02MCw2ICs2 NCw3IEBACisgLy8KKyBOQU1FUyBwbGlzdFtdID0geworICAgICAiRHJ2ciIsICJBcHBsZV9Ecml2 ZXIiLAorKyAgICAiRHI0MyIsICJBcHBsZV9Ecml2ZXI0MyIsCisgICAgICJGcmVlIiwgIkFwcGxl X0ZyZWUiLAorICAgICAiIEhGUyIsICJBcHBsZV9IRlMiLAorICAgICAiIE1GUyIsICJBcHBsZV9N RlMiLAorQEAgLTgzLDcgKzg4LDcgQEAKKyAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucworIC8vCisg dm9pZCBkdW1wX2Jsb2NrX3plcm8ocGFydGl0aW9uX21hcF9oZWFkZXIgKm1hcCk7Cistdm9pZCBk dW1wX3BhcnRpdGlvbl9lbnRyeShwYXJ0aXRpb25fbWFwICplbnRyeSwgaW50IGRpZ2l0cyk7Cisr dm9pZCBkdW1wX3BhcnRpdGlvbl9lbnRyeShwYXJ0aXRpb25fbWFwICplbnRyeSwgaW50IGRpZ2l0 cywgY2hhciAqZGV2KTsKKyAKKyAKKyAvLworQEAgLTExOSw2ICsxMjQsNyBAQAorICAgICB9Cisg ICAgIHByaW50ZigiXG5CbG9jayBzaXplPSV1LCBOdW1iZXIgb2YgQmxvY2tzPSV1XG4iLAorIAkg ICAgcC0+c2JCbGtTaXplLCBwLT5zYkJsa0NvdW50KTsKKysjaWZuZGVmIF9fbWM2ODAwMF9fCisg ICAgIHByaW50ZigiRGV2aWNlVHlwZT0weCV4LCBEZXZpY2VJZD0weCV4XG4iLAorIAkgICAgcC0+ c2JEZXZUeXBlLCBwLT5zYkRldklkKTsKKyAgICAgaWYgKHAtPnNiRHJ2ckNvdW50ID4gMCkgewor QEAgLTEzMCw2ICsxMzYsNyBAQAorIAl9CisgICAgIH0KKyAgICAgcHJpbnRmKCJcbiIpOworKyNl bmRpZgogIH0KICAKICAKLSt2b2lkCi0rZG9fY3JlYXRlX2Jvb3RzdHJhcF9wYXJ0aXRpb24ocGFy dGl0aW9uX21hcF9oZWFkZXIgKm1hcCkKLSt7Ci0rICAgIGxvbmcgYmFzZTsKK0BAIC0xMzgsMzEg KzE0NSw1MCBAQAorIHsKKyAgICAgcGFydGl0aW9uX21hcCAqIGVudHJ5OworICAgICBpbnQgajsK KysgICAgc2l6ZV90IGxlbjsKKysgICAgY2hhciAqYnVmOworIAorICAgICBpZiAobWFwID09IE5V TEwpIHsKKyAJYmFkX2lucHV0KCJObyBwYXJ0aXRpb24gbWFwIGV4aXN0cyIpOworIAlyZXR1cm47 CisgICAgIH0KKysjaWZkZWYgX19tYzY4MDAwX18KKysgICAgcHJpbnRmKCJEaXNrICVzXG4iLCBt YXAtPm5hbWUpOworKyNlbHNlCisgICAgIHByaW50ZigiJXNcbiIsIG1hcC0+bmFtZSk7CisrI2Vu ZGlmCisgCisgICAgIGogPSBudW1iZXJfb2ZfZGlnaXRzKG1hcC0+bWVkaWFfc2l6ZSk7CisgICAg IGlmIChqIDwgNykgeworIAlqID0gNzsKKyAgICAgfQorLSAgICBwcmludGYoIiAgICM6ICAgICAg ICAgICAgICAgICB0eXBlIG5hbWUgICAgICAgICAgICAgICAiCistCSAgICAiJSpzICAgJS0qcyAo IHNpemUgKVxuIiwgaiwgImxlbmd0aCIsIGosICJiYXNlIik7CisrI2lmZGVmIF9fbWM2ODAwMF9f CisrICAgIHByaW50ZigiJSpzICB0eXBlIG5hbWUgICAgICAgICAiCisrCSAgICAiJSpzICAgJS0q cyAoIHNpemUgKSAgc3lzdGVtXG4iLCBzdHJsZW4obWFwLT5uYW1lKSsxLCAiIyIsIGosICJsZW5n dGgiLCBqLCAiYmFzZSIpOworKyNlbHNlCisrICAgIHByaW50ZigiJSpzICAgICAgICAgICAgICAg ICAgICB0eXBlIG5hbWUgICAgICAgICAgICAgICAiCisrCSAgICAiJSpzICAgJS0qcyAoIHNpemUg KSAgc3lzdGVtXG4iLCBzdHJsZW4obWFwLT5uYW1lKSsxLCAiIyIsIGosICJsZW5ndGgiLCBqLCAi YmFzZSIpOworKyNlbmRpZgogKwotKyAgICBpZiAobWFwID09IE5VTEwpIHsKLSsJYmFkX2lucHV0 KCJObyBwYXJ0aXRpb24gbWFwIGV4aXN0cyIpOwotKwlyZXR1cm47Ci0rICAgIH0KLSsgCi0rICAg IGlmICghcmZsYWcgJiYgbWFwLT53cml0ZWFibGUgPT0gMCkgewotKwlwcmludGYoIlRoZSBtYXAg aXMgbm90IHdyaXRlYWJsZS5cbiIpOwotKyAgICB9CisrICAgIC8qIEdyb2sgZGV2ZnMgbmFtZXMu IChjb3VydGVzeSBDb2xpbiBXYWx0ZXJzKSovCiArCi0rICAgIC8vIFhYWCBhZGQgaGVscCBmZWF0 dXJlIChpLmUuICc/JyBpbiBhbnkgYXJndW1lbnQgcm91dGluZSBwcmludHMgaGVscCBzdHJpbmcp Ci0rICAgIGlmIChnZXRfYmFzZV9hcmd1bWVudCgmYmFzZSwgbWFwKSA9PSAwKSB7Ci0rCXJldHVy bjsKKysgICAgbGVuID0gc3RybGVuKG1hcC0+bmFtZSk7CisrICAgIGJ1ZiA9IHN0cmR1cChtYXAt Pm5hbWUpOworKyAgICBpZiAobGVuID49IDQgJiYgIXN0cmNtcChidWYrbGVuLTQsICJkaXNjIikp IHsKKysJc3RyY3B5KGJ1ZitsZW4tNCwgInBhcnQiKTsKICsgICAgfQotKwotKyAgICAvLyBjcmVh dGUgODAwSyB0eXBlIEFwcGxlX0Jvb3RzdHJhcCBwYXJ0aXRpb24gbmFtZWQgYGJvb3RzdHJhcCcK LSsgICAgYWRkX3BhcnRpdGlvbl90b19tYXAoa0Jvb3RzdHJhcE5hbWUsIGtCb290c3RyYXBUeXBl LCBiYXNlLCAxNjAwLCBtYXApOwotK30KLSsKLSsKLSBpbnQKLSBnZXRfYmFzZV9hcmd1bWVudChs b25nICpudW1iZXIsIHBhcnRpdGlvbl9tYXBfaGVhZGVyICptYXApCisgCisgICAgIGlmIChkaXNr X29yZGVyKSB7CisgCWZvciAoZW50cnkgPSBtYXAtPmRpc2tfb3JkZXI7IGVudHJ5ICE9IE5VTEw7 CisgCQllbnRyeSA9IGVudHJ5LT5uZXh0X29uX2Rpc2spIHsKKyAKKy0JICAgIGR1bXBfcGFydGl0 aW9uX2VudHJ5KGVudHJ5LCBqKTsKKysJICAgIGR1bXBfcGFydGl0aW9uX2VudHJ5KGVudHJ5LCBq LCBidWYpOworIAl9CisgICAgIH0gZWxzZSB7CisgCWZvciAoZW50cnkgPSBtYXAtPmJhc2Vfb3Jk ZXI7IGVudHJ5ICE9IE5VTEw7CisgCQllbnRyeSA9IGVudHJ5LT5uZXh0X2J5X2Jhc2UpIHsKKyAK Ky0JICAgIGR1bXBfcGFydGl0aW9uX2VudHJ5KGVudHJ5LCBqKTsKKysJICAgIGR1bXBfcGFydGl0 aW9uX2VudHJ5KGVudHJ5LCBqLCBidWYpOworIAl9CisgICAgIH0KKyAgICAgZHVtcF9ibG9ja196 ZXJvKG1hcCk7CitAQCAtMTcwLDE4ICsxOTYsMjMgQEAKKyAKKyAKKyB2b2lkCistZHVtcF9wYXJ0 aXRpb25fZW50cnkocGFydGl0aW9uX21hcCAqZW50cnksIGludCBkaWdpdHMpCisrZHVtcF9wYXJ0 aXRpb25fZW50cnkocGFydGl0aW9uX21hcCAqZW50cnksIGludCBkaWdpdHMsIGNoYXIgKmRldikK ICB7Ci1AQCAtNTA4LDcgKzU0MCw3IEBACi0gICAgIGludCByZXN1bHQgPSAwOwotICAgICBsb25n IG11bHRpcGxlOworICAgICBwYXJ0aXRpb25fbWFwX2hlYWRlciAqbWFwOworICAgICBpbnQgajsK KyAgICAgRFBNRSAqcDsKKyAgICAgQlpCICpicDsKKyAgICAgY2hhciAqczsKKysjaWZkZWYgX19t YzY4MDAwX18KKysgICAgaW50IGFmbGFnID0gMTsKKysjZWxzZQorICAgICBpbnQgYWZsYWcgPSAw OworKyNlbmRpZgorICAgICBpbnQgcGZsYWcgPSAxOworICAgICB1MzIgc2l6ZTsKKyAgICAgZG91 YmxlIGJ5dGVzOwogIAotLSAgICBpZiAoZ2V0X251bWJlcl9hcmd1bWVudCgiTGVuZ3RoIGluIGJs b2NrczogIiwgbnVtYmVyLCBrRGVmYXVsdCkgPT0gMCkgewotKyAgICBpZiAoZ2V0X251bWJlcl9h cmd1bWVudCgiTGVuZ3RoIChpbiBibG9ja3MsIGtCIChrKSwgTUIgKE0pIG9yIEdCIChHKSk6ICIs IG51bWJlciwga0RlZmF1bHQpID09IDApIHsKLSAJYmFkX2lucHV0KCJCYWQgbGVuZ3RoIik7Cisr CisgICAgIG1hcCA9IGVudHJ5LT50aGVfbWFwOworICAgICBwID0gZW50cnktPmRhdGE7CisgICAg IGlmIChhZmxhZykgeworQEAgLTE5Miw5ICsyMjMsMTMgQEAKKyAJCWJyZWFrOworIAkgICAgfQor IAl9CistCXByaW50ZigiJTRkOiAlLjRzICUtMTguMzJzICIsIGVudHJ5LT5kaXNrX2FkZHJlc3Ms IHMsIHAtPmRwbWVfbmFtZSk7CisrI2lmZGVmIF9fbWM2ODAwMF9fCisrCXByaW50ZigiJXMlLTJk ICUuNHMgJS0xMi4xMnMgIiwgZGV2LCBlbnRyeS0+ZGlza19hZGRyZXNzLCBzLCBwLT5kcG1lX25h bWUpOworKyNlbHNlCisrCXByaW50ZigiJXMlLTRkICAlLjRzICUtMTguMzJzICIsIGRldiwgZW50 cnktPmRpc2tfYWRkcmVzcywgcywgcC0+ZHBtZV9uYW1lKTsKKysjZW5kaWYKICAgICAgfSBlbHNl IHsKLSAJcmVzdWx0ID0gMTsKLUBAIC02MDUsMTMgKzYzNywyMiBAQAotIAliYWRfaW5wdXQoIlRo ZSBtYXAgaXMgbm90IHdyaXRlYWJsZS4iKTsKLSAJcmV0dXJuOworLQlwcmludGYoIiU0ZDogJTIw LjMycyAlLTE4LjMycyAiLAorKwlwcmludGYoIiVzJS00ZCAlMjAuMzJzICUtMTguMzJzICIsIGRl diwgCisgCQllbnRyeS0+ZGlza19hZGRyZXNzLCBwLT5kcG1lX3R5cGUsIHAtPmRwbWVfbmFtZSk7 CiAgICAgIH0KLS0gICAgcHJpbnRmKCJXcml0aW5nIHRoZSBtYXAgZGVzdHJveXMgd2hhdCB3YXMg dGhlcmUgYmVmb3JlLiAiKTsKLS0gICAgaWYgKGdldF9va2F5KCJJcyB0aGF0IG9rYXk/IFtuL3ld OiAiLCAwKSAhPSAxKSB7Ci0rLy8gICAgcHJpbnRmKCJXcml0aW5nIHRoZSBtYXAgZGVzdHJveXMg d2hhdCB3YXMgdGhlcmUgYmVmb3JlLiAiKTsKLSsgICAgcHJpbnRmKCJJTVBPUlRBTlQ6IFlvdSBh cmUgYWJvdXQgdG8gd3JpdGUgYSBjaGFuZ2VkIHBhcnRpdGlvbiBtYXAgdG8gZGlzay4gXG4iKTsK LSsgICAgcHJpbnRmKCJGb3IgYW55IHBhcnRpdGlvbiB5b3UgY2hhbmdlZCB0aGUgc3RhcnQgb3Ig c2l6ZSBvZiwgd3JpdGluZyBvdXQgXG4iKTsKLSsgICAgcHJpbnRmKCJ0aGUgbWFwIGNhdXNlcyBh bGwgZGF0YSBvbiB0aGF0IHBhcnRpdGlvbiB0byBiZSBMT1NUIEZPUkVWRVIuIFxuIik7Ci0rICAg IHByaW50ZigiTWFrZSBzdXJlIHlvdSBoYXZlIGEgYmFja3VwIG9mIGFueSBkYXRhIG9uIHN1Y2gg cGFydGl0aW9ucyB5b3UgXG4iKTsKLSsgICAgcHJpbnRmKCJ3YW50IHRvIGtlZXAgYmVmb3JlIGFu c3dlcmluZyAneWVzJyB0byB0aGUgcXVlc3Rpb24gYmVsb3chIFxuXG4iKTsKLSsgICAgaWYgKGdl dF9va2F5KCJXcml0ZSBwYXJ0aXRpb24gbWFwPyBbbi95XTogIiwgMCkgIT0gMSkgewotIAlyZXR1 cm47CisgCitAQCAtMjE3LDcgKzI1MiwxMCBAQAorIAlwcmludGYoIkB+JS0qdSIsIGRpZ2l0cywg cC0+ZHBtZV9wYmxvY2tfc3RhcnQgKyBwLT5kcG1lX2xibG9ja19zdGFydCk7CisgICAgIH0KKyAg ICAgCisrICAgIGogPSAncyc7CisrCisgICAgIGJ5dGVzID0gc2l6ZSAvIE9ORV9LSUxPQllURV9J Tl9CTE9DS1M7CisrICAgIGogPSAnayc7CisgICAgIGlmIChieXRlcyA+PSAxMDI0LjApIHsKKyAJ Ynl0ZXMgPSBieXRlcyAvIDEwMjQuMDsKKyAJaWYgKGJ5dGVzIDwgMTAyNC4wKSB7CitAQCAtMjI2 LDU4ICsyNjQsNDUgQEAKKyAJICAgIGJ5dGVzID0gYnl0ZXMgLyAxMDI0LjA7CisgCSAgICBqID0g J0cnOworIAl9CistCXByaW50ZigiICglIzUuMWYlYykiLCBieXRlcywgaik7CiAgICAgIH0KKysg ICAgcHJpbnRmKCIgKCUjNS4xZiVjKSAgIiwgYnl0ZXMsIGopOworIAorLSNpZiAwCistICAgIC8v IE9sZCBBL1VYIGZpZWxkcyB0aGF0IG5vIG9uZSBwYXlzIGF0dGVudGlvbiB0byBhbnltb3JlLgor LSAgICBicCA9IChCWkIgKikgKHAtPmRwbWVfYnpiKTsKKy0gICAgaiA9IC0xOworLSAgICBpZiAo YnAtPmJ6Yl9tYWdpYyA9PSBCWkJNQUdJQykgeworLQlzd2l0Y2ggKGJwLT5iemJfdHlwZSkgewor LQljYXNlIEZTVEVGUzoKKy0JICAgIHMgPSAiRUZTIjsKKy0JICAgIGJyZWFrOworLQljYXNlIEZT VFNGUzoKKy0JICAgIHMgPSAiU0ZTIjsKKy0JICAgIGogPSAxOworLQkgICAgYnJlYWs7CistCWNh c2UgRlNUOgorLQlkZWZhdWx0OgorLQkgICAgaWYgKGJ6Yl9yb290X2dldChicCkgIT0gMCkgewor LQkJaWYgKGJ6Yl91c3JfZ2V0KGJwKSAhPSAwKSB7CistCQkgICAgcyA9ICJSVUZTIjsKKy0JCX0g ZWxzZSB7CistCQkgICAgcyA9ICJSRlMiOworLQkJfQorLQkJaiA9IDA7CistCSAgICB9IGVsc2Ug aWYgKGJ6Yl91c3JfZ2V0KGJwKSAhPSAwKSB7CistCQlzID0gIlVGUyI7CistCQlqID0gMjsKKy0J ICAgIH0gZWxzZSB7CistCQlzID0gIkZTIjsKKy0JICAgIH0KKy0JICAgIGJyZWFrOworLQl9Cist CWlmIChiemJfc2xpY2VfZ2V0KGJwKSAhPSAwKSB7CistCSAgICBwcmludGYoIiBzJTFkICU0cyIs IGJ6Yl9zbGljZV9nZXQoYnApLTEsIHMpOworLQl9IGVsc2UgaWYgKGogPj0gMCkgeworLQkgICAg cHJpbnRmKCIgUyUxZCAlNHMiLCBqLCBzKTsKKy0JfSBlbHNlIHsKKy0JICAgIHByaW50ZigiICAg ICU0cyIsIHMpOworLQl9CistCWlmIChiemJfY3JpdF9nZXQoYnApICE9IDApIHsKKy0JICAgIHBy aW50ZigiIEslMWQiLCBicC0+YnpiX2NsdXN0ZXIpOworLQl9IGVsc2UgaWYgKGogPCAwKSB7Cist CSAgICBwcmludGYoIiAgICIpOworLQl9IGVsc2UgeworLQkgICAgcHJpbnRmKCIgayUxZCIsIGJw LT5iemJfY2x1c3Rlcik7CistCX0KKy0JaWYgKGJwLT5iemJfbW91bnRfcG9pbnRbMF0gIT0gMCkg eworLQkgICAgcHJpbnRmKCIgICUuNjRzIiwgYnAtPmJ6Yl9tb3VudF9wb2ludCk7CistCX0KKy0g ICAgfQorLSNlbmRpZgorKyAgICBpZiAoIXN0cmNtcChwLT5kcG1lX3R5cGUsICJBcHBsZV9VTklY X1NWUjIiKSkKKysgICAgeworKyAgICAgICAgIGlmICghc3RyY21wKHAtPmRwbWVfbmFtZSwgIlN3 YXAiKSB8fCAhc3RyY21wKHAtPmRwbWVfbmFtZSwgInN3YXAiKSkKKysgICAgICAgICAgICBwcmlu dGYoIkxpbnV4IHN3YXAiKTsKKysgICAgICAgICBlbHNlCisrICAgICAgICAgICAgcHJpbnRmKCJM aW51eCBuYXRpdmUiKTsKKysgICAgfQorKyAgICBlbHNlCisrICAgIGlmICghc3RyY21wKHAtPmRw bWVfdHlwZSwgIkFwcGxlX0Jvb3RzdHJhcCIpKQorKyAgICAgICAgIHByaW50ZigiTmV3V29ybGQg Ym9vdGJsb2NrIik7CisrICAgIGVsc2UKKysgICAgaWYgKCFzdHJjbXAocC0+ZHBtZV90eXBlLCAi QXBwbGVfU2NyYXRjaCIpKQorKyAgICAgICAgIHByaW50ZigiTGludXggc3dhcCIpOyAgLy9ub3Qg anVzdCBsaW51eCwgYnV0IHdobyBjYXJlcworKyAgICBlbHNlCisrICAgIGlmICghc3RyY21wKHAt PmRwbWVfdHlwZSwgIkFwcGxlX0hGUyIpKQorKyAgICAgICAgIHByaW50ZigiSEZTIik7CisrICAg IGVsc2UKKysgICAgaWYgKCFzdHJjbXAocC0+ZHBtZV90eXBlLCAiQXBwbGVfTUZTIikpCisrICAg ICAgICBwcmludGYoIk1GUyIpOworKyAgICBlbHNlCisrICAgIGlmICghc3RyY21wKHAtPmRwbWVf dHlwZSwgIkFwcGxlX0RyaXZlciIpKQorKyAgICAgICAgcHJpbnRmKCJEcml2ZXIiKTsKKysgICAg ZWxzZQorKyAgICBpZiAoIXN0cmNtcChwLT5kcG1lX3R5cGUsICJBcHBsZV9Ecml2ZXI0MyIpKQor KyAgICAgICAgcHJpbnRmKCJEcml2ZXIgNC4zIik7CisrICAgIGVsc2UKKysgICAgaWYgKCFzdHJj bXAocC0+ZHBtZV90eXBlLCAiQXBwbGVfcGFydGl0aW9uX21hcCIpKQorKyAgICAgICAgcHJpbnRm KCJQYXJ0aXRpb24gbWFwIik7CisrICAgIGVsc2UKKysgICAgaWYgKCFzdHJjbXAocC0+ZHBtZV90 eXBlLCAiQXBwbGVfUFJPRE9TIikpCisrICAgICAgICBwcmludGYoIlByb0RPUyIpOworKyAgICBl bHNlCisrICAgIGlmICghc3RyY21wKHAtPmRwbWVfdHlwZSwgIkFwcGxlX0ZyZWUiKSkKKysgICAg ICAgIHByaW50ZigiRnJlZSBzcGFjZSIpOworKyAgICBlbHNlCisrICAgICAgICBwcmludGYoIlVu a25vd24iKTsKKyAgICAgcHJpbnRmKCJcbiIpOworIH0KICAKLSAgICAgd3JpdGVfcGFydGl0aW9u X21hcChtYXApOworQEAgLTMxNiw2ICszNDEsMjQgQEAKICAKLSsgICAgcHJpbnRmKCJcblBhcnRp dGlvbiBtYXAgd3JpdHRlbiB0byBkaXNrLiBJZiBhbnkgcGFydGl0aW9ucyBvbiB0aGlzIGRpc2sg XG4iKTsKLSsgICAgcHJpbnRmKCJ3ZXJlIHN0aWxsIGluIHVzZSBieSB0aGUgc3lzdGVtIChzZWUg bWVzc2FnZXMgYWJvdmUpLCB5b3Ugd2lsbCBuZWVkIFxuIik7Ci0rICAgIHByaW50ZigidG8gcmVi b290IGluIG9yZGVyIHRvIHV0aWxpemUgdGhlIG5ldyBwYXJ0aXRpb24gbWFwLlxuXG4iKTsKKyAJ ZHVtcChuYW1lKTsKKyAgICAgfQorKyNpZmRlZiBfX2xpbnV4X18KKysgICAgZm9yIChpID0gMDsg aSA8IDQ7IGkrKykgeworKwlzcHJpbnRmKG5hbWUsICIvZGV2L2hkJWMiLCAnYScraSk7CisrCWlm ICgoZmQgPSBvcGVuX2RldmljZShuYW1lLCBPX1JET05MWSkpIDwgMCkgeworKwkgICAgaWYgKGVy cm5vID09IEVBQ0NFUykgeworKwkJZXJyb3IoZXJybm8sICJjYW4ndCBvcGVuIGZpbGUgJyVzJyIs IG5hbWUpOworKwkgICAgfQorKwkgICAgY29udGludWU7CisrCX0KKysJaWYgKHJlYWRfYmxvY2so ZmQsIDEsIChjaGFyICopZGF0YSwgMSkgPT0gMCkgeworKwkgICAgY2xvc2VfZGV2aWNlKGZkKTsK KysJICAgIGNvbnRpbnVlOworKwl9CisrCWNsb3NlX2RldmljZShmZCk7CiArCi0gICAgIC8vIGV4 aXQoMCk7CisrCWR1bXAobmFtZSk7CisrICAgIH0KKysjZW5kaWYKKyAgICAgZnJlZShkYXRhKTsK ICB9CiAgCi0tLS0gcG1hYy1mZGlzay44Ci0rKysgcG1hYy1mZGlzay44Ci1AQCAtMCwwICsxLDIy MiBAQAotKy5cIiBDb3B5cmlnaHQgMTk5MiwgMTk5MyBSaWNrYXJkIEUuIEZhaXRoIChmYWl0aEBj cy51bmMuZWR1KQotKy5cIiBDb3B5cmlnaHQgMTk5OCBBbmRyaWVzIEUuIEJyb3V3ZXIgKGFlYkBj d2kubmwpCi0rLlwiIENvcHlyaWdodCAyMDAwIE1pY2hhZWwgU2NobWl0eiAoc2NobWl0ekBiaW9w aHlzLnVuaS1kdWVzc2VsZG9yZi5kZSkKLSsuXCIgTWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKy5USCBQTUFDLUZESVNLIDggIjExIEp1bmUg MTk5OCIgIkxpbnV4IDIuMCIgIkxpbnV4IFByb2dyYW1tZXIncyBNYW51YWwiCitAQCAtMzg1LDcg KzQyOCw3IEBACisgCXByaW50ZigiJTJkOiAlMjAuMzJzICIsCisgCQllbnRyeS0+ZGlza19hZGRy ZXNzLCBwLT5kcG1lX3R5cGUpOworIAlwcmludGYoIiU3dSBAICUtN3UgIiwgcC0+ZHBtZV9wYmxv Y2tzLCBwLT5kcG1lX3BibG9ja19zdGFydCk7CistCXByaW50ZigiJWMlYyVjJWMlYyVjJWMlYyVj ICIsCisrCXByaW50ZigiJWMlYyVjJWMlYyVjJWMlYyVjJWMgIiwKKyAJCShkcG1lX3ZhbGlkX2dl dChwKSk/J1YnOid2JywKKyAJCShkcG1lX2FsbG9jYXRlZF9nZXQocCkpPydBJzonYScsCisgCQko ZHBtZV9pbl91c2VfZ2V0KHApKT8nSSc6J2knLAorQEAgLTM5NCw3ICs0MzcsOCBAQAorIAkJKGRw bWVfd3JpdGFibGVfZ2V0KHApKT8nVyc6J3cnLAorIAkJKGRwbWVfb3NfcGljX2NvZGVfZ2V0KHAp KT8nUCc6J3AnLAorIAkJKGRwbWVfb3Nfc3BlY2lmaWNfMV9nZXQocCkpPycxJzonLicsCistCQko ZHBtZV9vc19zcGVjaWZpY18yX2dldChwKSk/JzInOicuJyk7CisrCQkoZHBtZV9vc19zcGVjaWZp Y18yX2dldChwKSk/JzInOicuJywKKysJCShkcG1lX2F1dG9tb3VudF9nZXQocCkpPydNJzonbScp OworIAlpZiAocC0+ZHBtZV9sYmxvY2tfc3RhcnQgIT0gMCB8fCBwLT5kcG1lX3BibG9ja3MgIT0g cC0+ZHBtZV9sYmxvY2tzKSB7CisgCSAgICBwcmludGYoIigldSBAICV1KSIsIHAtPmRwbWVfbGJs b2NrcywgcC0+ZHBtZV9sYmxvY2tfc3RhcnQpOworIAl9CistLS0gbWFjLWZkaXNrLTAuMS5vcmln L21hYy1mZGlzay44LmluCisrKysgbWFjLWZkaXNrLTAuMS9tYWMtZmRpc2suOC5pbgorQEAgLTAs MCArMSwyNjIgQEAKKysuVEggTUFDLUZESVNLIDggIjEgRGVjZW1iZXIgMjAwMSIgIkRlYmlhbiIg IkFwcGxlIERpc2sgUGFydGl0aW9uaW5nIE1hbnVhbCIKICsuU0ggTkFNRQotK3BtYWMtZmRpc2sg XC0gUGFydGl0aW9uIHRhYmxlIG1hbmlwdWxhdG9yIGZvciBMaW51eAorK21hYy1mZGlzayBcLSBB cHBsZSBwYXJ0aXRpb24gdGFibGUgZWRpdG9yIGZvciBMaW51eAogKy5TSCBTWU5PUFNJUwotKy5C SSAicG1hYy1mZGlzayBbXC11XSAiIGRldmljZQotKy5zcAotKy5CSSAicG1hYy1mZGlzayBcLWwg W1wtdV0gIiAiZGV2aWNlIC4uLiIKLSsuc3AKLSsuQkkgInBtYWMtZmRpc2sgXC1zICIgInBhcnRp dGlvbiAuLi4iCi0rLnNwCi0rLkJJICJwbWFjLWZkaXNrIFwtdgorKy5CIG1hYy1mZGlzaworKy5C ICJbIFwtaCB8IFwtLWhlbHAgXSBbIFwtdiB8IFwtLXZlcnNpb24gXSBbIFwtbCB8IFwtLWxpc3Qg ZGV2aWNlIC4uLiBdIgorKy5icgorKy5CIG1hYy1mZGlzaworKy5CICJbIFwtciB8IFwtLXJlYWRv bmx5IF0gZGV2aWNlIC4uLiAiCiArLlNIIERFU0NSSVBUSU9OCi0rSGFyZCBkaXNrcyBjYW4gYmUg ZGl2aWRlZCBpbnRvIG9uZSBvciBtb3JlIGxvZ2ljYWwgZGlza3MgY2FsbGVkCi0rLklSIHBhcnRp dGlvbnMgLgotK1RoaXMgZGl2aXNpb24gaXMgZGVzY3JpYmVkIGluIHRoZQotKy5JICJwYXJ0aXRp b24gdGFibGUiCi0rZm91bmQgaW4gc2VjdG9yIDAgb2YgdGhlIGRpc2suCisrLkIgbWFjLWZkaXNr CisraXMgYSBjb21tYW5kIGxpbmUgdHlwZSBwcm9ncmFtIHdoaWNoIHBhcnRpdGlvbnMgZGlza3Mg dXNpbmcgdGhlIHN0YW5kYXJkIEFwcGxlCisrZGlzayBwYXJ0aXRpb25pbmcgc2NoZW1lIGRlc2Ny aWJlZCBpbiAiSW5zaWRlIE1hY2ludG9zaDogRGV2aWNlcyIuCisrVGhlCisrLkkgZGV2aWNlCisr aXMgdXN1YWxseSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICsKLStJbiB0aGUgQlNEIHdvcmxkIG9u ZSB0YWxrcyBhYm91dCBgZGlzayBzbGljZXMnIGFuZCBhIGBkaXNrbGFiZWwnLgorKy5uZgorKy5S UworKy9kZXYvc2RhCisrL2Rldi9zZGIKKysvZGV2L3NkYworKy9kZXYvc2RkCisrL2Rldi9zZGUK KysvZGV2L3NkZgorKy9kZXYvc2RnCisrL2Rldi9oZGEKKysvZGV2L2hkYgorKworKy5SRQorKy5m aQorKy9kZXYvc2RhIGlzIHRoZSBmaXJzdCBoYXJkIGRpc2sgb24gdGhlIFNDU0kgYnVzIChpLmUu IHRoZQorK29uZSB3aXRoIHRoZSBsb3dlc3QgaWQpLCAvZGV2L3NkYiBpcyB0aGUgc2Vjb25kIGhh cmQgZGlzaywgYW5kIHNvIG9uLgorK1RoZQorKy5JIHBhcnRpdGlvbgorK2lzIGEKKysuSSBkZXZp Y2UKKytuYW1lIGZvbGxvd2VkIGJ5IGEgcGFydGl0aW9uIG51bWJlci4KKytUaGUgcGFydGl0aW9u IG51bWJlciBpcyB0aGUgaW5kZXggKHN0YXJ0aW5nIGZyb20gb25lKSBvZiB0aGUgcGFydGl0aW9u CisrbWFwIGVudHJ5IGluIHRoZSBwYXJ0aXRpb24gbWFwIChhbmQgdGhlIHBhcnRpdGlvbiBtYXAg aXRzZWxmIG9jY3VwaWVzIHRoZQorK2ZpcnN0IGVudHJ5KS4KKytGb3IgZXhhbXBsZSwKKysuQiAv ZGV2L3NkYTIKKytpcyB0aGUgcGFydGl0aW9uIGRlc2NyaWJlZCBieSB0aGUgc2Vjb25kIGVudHJ5 IGluIHRoZSBwYXJ0aXRvbiBtYXAgb24gL2Rldi9zZGEuCisrCisrLlNIIE9QVElPTlMKKysuVFAK KysuQiBcLXYgfCBcLS12ZXJzaW9uCisrUHJpbnRzIHZlcnNpb24gbnVtYmVyIG9mIHRoZQorKy5C IG1hYy1mZGlzaworK3Byb2dyYW0uCisrLlRQCisrLkIgXC1oIHwgXC0taGVscAorK1ByaW50cyBh IGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzIGZvciB0aGUKKysuQiBtYWMtZmRpc2sKKytwcm9n cmFtLgorKy5UUAorKy5CIFwtbCB8IFwtLWxpc3QKKytMaXN0cyB0aGUgcGFydGl0aW9uIHRhYmxl cyBmb3IgdGhlIHNwZWNpZmllZAorKy5JUiBkZXZpY2UocykuCisrV2l0aCBubyAKKysuSVIgZGV2 aWNlKHMpCisrZ2l2ZW4sIGxpc3RzIGFsbCBTQ1NJIGFuZCBJREUgZGV2aWNlcyBmb3VuZCBpbiB0 aGUgc3lzdGVtLgorKy5UUAorKy5CIFwtciB8IFwtLXJlYWRvbmx5CisrUHJldmVudHMKKysuQiBt YWMtZmRpc2sKKytmcm9tIHdyaXRpbmcgdG8gdGhlIGRldmljZS4KKysuU0ggIkVkaXRpbmcgUGFy dGl0aW9uIFRhYmxlcyIKKytBbiBhcmd1bWVudCB3aGljaCBpcyBzaW1wbHkgdGhlIG5hbWUgb2Yg YQorKy5JIGRldmljZQorK2luZGljYXRlcyB0aGF0CisrLkIgbWFjLWZkaXNrCisrc2hvdWxkIGVk aXQgdGhlIHBhcnRpdGlvbiB0YWJsZSBvZiB0aGF0IGRldmljZS4gT25jZSBzdGFydGVkLCAKKysu QiBtYWMtZmRpc2sgCisrcHJlc2VudHMgYW4gaW50ZXJhY3RpdmUgY29tbWFuZCBwcm9tcHQgdG8g ZWRpdCB0aGUgcGFydGl0aW9uIHRhYmxlLiAKKytUaGUgcGFydGl0aW9uIGVkaXRpbmcgY29tbWFu ZHMgYXJlOgorKworKy5uZgorKy5SUworK2ggICAgbGlzdCBhdmFpbGFibGUgY29tbWFuZHMKKytw ICAgIHByaW50IChsaXN0KSB0aGUgY3VycmVudCBlZGl0ZWQgcGFydGl0aW9uIHRhYmxlIHN0YXR1 cworK1AgICAgcHJpbnQgb3JkZXJlZCBieSBiYXNlIGFkZHJlc3MKKytpICAgIGluaXRpYWxpemUg dGhlIHBhcnRpdGlvbiBtYXAKKytzICAgIGNoYW5nZSBzaXplIG9mIHBhcnRpdGlvbiBtYXAKKyti ICAgIGNyZWF0ZSBuZXcgODAwSyBBcHBsZV9Cb290c3RyYXAgcGFydGl0aW9uICh1c2VkIGJ5IHlh Ym9vdCkKKytjICAgIGNyZWF0ZSBuZXcgc3RhbmRhcmQgTGludXggdHlwZSBwYXJ0aXRpb24KKytD ICAgIGNyZWF0ZSBuZXcgcGFydGl0aW9uLCBzcGVjaWZ5aW5nIHRoZSBwYXJ0aXRpb24gdHlwZQor K2QgICAgZGVsZXRlIGEgcGFydGl0aW9uCisrciAgICByZW9yZGVyIHBhcnRpdGlvbiBlbnRyeQor K3cgICAgd3JpdGUgdGhlIHBhcnRpdGlvbiB0YWJsZSB0byBkaXNrCisrcSAgICBxdWl0IAorKwor Ky5SRQorKy5maQorK0NvbW1hbmRzIHdoaWNoIHRha2UgYXJndW1lbnRzIHByb21wdCBmb3IgZWFj aCBhcmd1bWVudCBpbiB0dXJuLgorK1lvdSBjYW4gYWxzbyB0eXBlIHRoZSBhcmd1bWVudHMgc2Vw YXJhdGVkIGJ5IHNwYWNlcworK2FuZCB0aG9zZSBwcm9tcHRzIHdpbGwgYmUgc2tpcHBlZC4gVGhl CisrLkIgaQorK2FuZAorKy5CIHcKKytjb21tYW5kcyB3aWxsIHByb21wdCBmb3IgY29uZmlybWF0 aW9uLiBOb25lIG9mIHRoZSBlZGl0aW5nIHlvdSBkbyB3aWxsIAorK2FjdHVhbGx5IGFmZmVjdCB0 aGUgc3RhdGUgb2YgdGhlIGRpc2sgeW91IGFyZSBwYXJ0aXRpb25pbmcgdW50aWwgdGhlIAorKy5C IHcgCisrY29tbWFuZCBpcyBpc3N1ZWQuIFRoZW4gdGhlIG1hcCBpbiBpdHMgZWRpdGVkIHN0YXRl IHdpbGwgYmUgCisrcGVybWFuZW50bHkgd3JpdHRlbiB0byB0aGUgZGlzay4KKysKKytQYXJ0aXRp b25zIGFyZSBhbHdheXMgc3BlY2lmaWVkIGJ5IHRoZWlyIG51bWJlciwgdGhlIGluZGV4IG9mIHRo ZQorK3BhcnRpdGlvbiBlbnRyeSBpbiB0aGUgcGFydGl0aW9uIG1hcC4gIE1hbnkgY29tbWFuZHMg d2lsbCBjaGFuZ2UgdGhlCisraW5kZXggbnVtYmVycyBvZiBwYXJ0aXRpb25zIHdoaWNoIGZvbGxv dyB0aGUgYWZmZWN0ZWQgcGFydGl0aW9uOyB5b3UgYXJlCisrZW5jb3VyYWdlZCB0byB1c2UgdGhl IAorKy5CIHAKKytjb21tYW5kIHRvIHByaW50IHRoZSBwYXJ0aXRpb24gdGFibGUgYXMgZnJlcXVl bnRseSBhcyBuZWNlc3NhcnkuIEZvciBTQ1NJCisrZGlza3MsIHRoZSBwYXJ0aXRpb24gdGFibGUg c2hvdWxkIG5vdCBjb250YWluIG1vcmUgdGhhbiBmaWZ0ZWVuIHBhcnRpdGlvbnMgCisrKHBhcnRp dGlvbiBtYXAgZXhjbHVkZWQpLiBJREUgZGlza3MgaGF2ZSBhIGxpbWl0IG9mIDMxIHBhcnRpdGlv bnMuCisrCisrSGVyZSBpcyBhIG1vcmUtb3ItbGVzcyB0eXBpY2FsIG91dHB1dCBmb3IgdGhlIHBy aW50IGNvbW1hbmQ6CisrCisrLm5mCisrLlJTCisrQ29tbWFuZCAoPyBmb3IgaGVscCk6IHAKKysv ZGV2L3NkYgorKyAgICAgICAgIyAgICAgICAgICAgICAgICB0eXBlIG5hbWUgICAgICAgICAgICAg IGxlbmd0aCAgIGJhc2UgICAgKCBzaXplICkgIHN5c3RlbQorKy9kZXYvc2RiMSBBcHBsZV9wYXJ0 aXRpb25fbWFwIEFwcGxlICAgICAgICAgICAgICAgICA2MyBAIDEgICAgICAgKCAzMS41aykgIFBh cnRpdGlvbiBtYXAKKysvZGV2L3NkYjIgICAgICBBcHBsZV9Ecml2ZXI0MyBNYWNpbnRvc2ggICAg ICAgICAgICAgNTQgQCA2NCAgICAgICggMjcuMGspICBEcml2ZXIgNC4zCisrL2Rldi9zZGIzICAg ICAgQXBwbGVfRHJpdmVyNDMgTWFjaW50b3NoICAgICAgICAgICAgIDc0IEAgMTE4ICAgICAoIDM3 LjBrKSAgRHJpdmVyIDQuMworKy9kZXYvc2RiNCAgQXBwbGVfRHJpdmVyX0lPS2l0IE1hY2ludG9z aCAgICAgICAgICAgIDUxMiBAIDE5MiAgICAgKDI1Ni4waykgIFVua25vd24KKysvZGV2L3NkYjUg ICAgICAgQXBwbGVfUGF0Y2hlcyBQYXRjaCBQYXJ0aXRpb24gICAgICA1MTIgQCA3MDQgICAgICgy NTYuMGspICBVbmtub3duCisrL2Rldi9zZGI2ICAgICAgICAgICBBcHBsZV9IRlMgdW50aXRsZWQg ICAgICAgICAzMDcyMDAwIEAgMTIxNiAgICAoICAxLjVHKSAgSEZTCisrL2Rldi9zZGI3ICAgICAg ICAgICBBcHBsZV9IRlMgdW50aXRsZWQgMiAgICAgICAgMzMzMDI2IEAgMzA3MzIxNiAoMTYyLjZN KSAgSEZTCisrL2Rldi9zZGI4ICAgICAgICAgIEFwcGxlX0ZyZWUgRXh0cmEgICAgICAgICAgICAg ICAgIDEwIEAgMzQwNjI0MiAoICA1LjBrKSAgRnJlZSBzcGFjZQorKworK0Jsb2NrIHNpemU9NTEy LCBOdW1iZXIgb2YgQmxvY2tzPTM0MDYyNTIKKytEZXZpY2VUeXBlPTB4MCwgRGV2aWNlSWQ9MHgw CisrRHJpdmVycy0KKysxOiBAIDY0IGZvciAyMiwgdHlwZT0weDEKKysyOiBAIDExOCBmb3IgMzYs IHR5cGU9MHhmZmZmCisrCisrLlJFCisrLmZpCisrCisrVGhlCisrLkIgaQorKyhpbml0aWFsaXpl KSBjb21tYW5kIHByb21wdHMgZm9yIHRoZSBzaXplIG9mIHRoZSBkZXZpY2UuICBZb3UgY2FuIGp1 c3QKKyt0eXBlIFJldHVybiB0byBhY2NlcHQgdGhlIG9mZmVyZWQgc2l6ZSwgd2hpY2ggc2hvdWxk IGJlIGNvcnJlY3QuCisrCisrVGhlCisrLkIgYgorK2NvbW1hbmQgaXMgYSBzaG9ydGN1dCB0byBj cmVhdGUgdGhlIGJvb3RzdHJhcCBwYXJ0aXRpb24gdXNlZCBvbiBQb3dlclBDCisrTmV3V29ybGQg bWFjaGluZXMuIEl0IGlzIGVxdWl2YWxlbnQgdG8gY3JlYXRpbmcgYW4gODAwaworKy5CIEFwcGxl X0Jvb3RzdHJhcAorK3R5cGUgcGFydGl0aW9uIHVzaW5nIHRoZSAKKysuQiBDCisrY29tbWFuZCBk ZXNjcmliZWQgYmVsb3cuIFRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwYXJ0aXRpb24gaXMgdG8K KytzdG9yZSB0aGUgYm9vdCBsb2FkZXIuIEluIG11bHRpYm9vdCBlbnZpcm9ubWVudHMsIHRoZSBm aXJzdCBib290YWJsZQorK3BhcnRpdGlvbiBmb3VuZCBvbiB0aGUgZGlzayB0YWtlcyBwcmVjZWRl bmNlIHVubGVzcyBhIHNwZWNpZmljIGJvb3QKKytwYXJ0aXRpb24gaXMgc2V0IGluIE9wZW5GaXJt d2FyZSwgc28gaXQncyBiZXN0IHRvIGNyZWF0ZSB0aGUgYm9vdHN0cmFwCisrcGFydGl0aW9uIGZp cnN0LCBvciBtb3ZlIGl0IHRvIGEgcG9zaXRpb24gYmVmb3JlIGFueQorKy5CIEFwcGxlX0hGUyAK KytvciAKKysuQiBBcHBsZV9Cb290CisrcGFydGl0aW9ucyB1c2luZyB0aGUgCisrLkIgcgorK2Nv bW1hbmQgZGVzY3JpYmVkIGJlbG93LiBUaGVuIHlvdSB3aWxsIHN0aWxsIGFibGUgdG8gYm9vdCBM aW51eCBhZnRlcgorK3RoZSBvY2Nhc2lvbmFsIE9wZW5GaXJtd2FyZSByZXNldC4KKysKKytUaGUK KysuQiBjCisrKGNyZWF0ZSBuZXcgcGFydGl0aW9uKSBjb21tYW5kIGhhcyB0aHJlZSBhcmd1bWVu dHMuIEFzIG1lbnRpb25lZAorK2Fib3ZlIHlvdSBjYW4gdHlwZSB0aGUgYXJndW1lbnRzIGZvbGxv d2luZyB0aGUgY29tbWFuZCwgc2VwYXJhdGVkIGJ5Cisrc3BhY2VzLCBvciByZXNwb25kIHRvIHBy b21wdHMgZm9yIGVhY2ggYXJndW1lbnQ6CisrCisrICAxKSBUaGUgYmFzZSBhZGRyZXNzIG9mIHRo ZSBzdGFydCBvZiB0aGUgcGFydGl0aW9uLgorKworKyAgICAgWW91IGNhbiBzcGVjaWZ5IGEgbnVt YmVyIGluIGJsb2NrcyAobW9zdCBsaWtlbHkgcmVhZGluZyBmcm9tIHRoZQorKyAgICAgZXhpc3Rp bmcgcGFydGl0aW9uIG1hcCkgb3IgeW91IGNhbiBhbHNvIHR5cGUgYSBwYXJ0aXRpb24gbnVtYmVy CisrICAgICBmb2xsb3dlZCBieSB0aGUgbGV0dGVyICdwJyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBu ZXcgcGFydGl0aW9uCisrICAgICBzaG91bGQgdGFrZSB0aGUgcGxhY2Ugb2YgdGhhdCBleGlzdGlu ZyBmcmVlIHNwYWNlIHBhcnRpdGlvbi4KKysKKysgIDIpIFRoZSBsZW5ndGggb2YgdGhlIHBhcnRp dGlvbi4KKysKKysgICAgIEFnYWluLCB5b3UgY2FuIHNwZWNpZnkgYSBudW1iZXIgaW4gYmxvY2tz IG9yIHR5cGUgYSBwYXJ0aXRpb24KKysgICAgIG51bWJlciBmb2xsb3dlZCBieSB0aGUgbGV0dGVy ICdwJyB0byBpbmRpY2F0ZSB1c2Ugb2YgdGhlIGVudGlyZQorKyAgICAgcGFydGl0aW9uLiBZb3Ug Y2FuIGFsc28gdHlwZSBhIG51bWJlciBmb2xsb3dlZCBieSAnaycsICdtJywgb3IKKysgICAgICdn JyB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBpbiBraWxvYnl0ZXMsIG1lZ2FieXRlcywgb3IgZ2lnYWJ5 dGVzCisrICAgICByZXNwZWN0aXZlbHkuIChUaGVzZSBhcmUgcG93ZXJzIG9mIDEwMjQsIG9mIGNv dXJzZSwgbm90IHBvd2VycworKyAgICAgb2YgMTAwMC4pCisrCisrICAzKSBUaGUgbmFtZSBvZiB0 aGUgcGFydGl0aW9uLgogKwotK0xpbnV4IG5lZWRzIGF0IGxlYXN0IG9uZSBwYXJ0aXRpb24sIG5h bWVseSBmb3IgaXRzIHJvb3QgZmlsZSBzeXN0ZW0uCi0rSXQgY2FuIHVzZSBzd2FwIGZpbGVzIGFu ZC9vciBzd2FwIHBhcnRpdGlvbnMsIGJ1dCB0aGUgbGF0dGVyIGFyZSBtb3JlCi0rZWZmaWNpZW50 LiBTbywgdXN1YWxseSBvbmUgd2lsbCB3YW50IGEgc2Vjb25kIExpbnV4IHBhcnRpdGlvbgotK2Rl ZGljYXRlZCBhcyBzd2FwIHBhcnRpdGlvbi4KLStPbiBJbnRlbCBjb21wYXRpYmxlIGhhcmR3YXJl LCB0aGUgQklPUyB0aGF0IGJvb3RzIHRoZSBzeXN0ZW0KLStjYW4gb2Z0ZW4gb25seSBhY2Nlc3Mg dGhlIGZpcnN0IDEwMjQgY3lsaW5kZXJzIG9mIHRoZSBkaXNrLgotK0ZvciB0aGlzIHJlYXNvbiBw ZW9wbGUgd2l0aCBsYXJnZSBkaXNrcyBvZnRlbiBjcmVhdGUgYSB0aGlyZCBwYXJ0aXRpb24sCi0r anVzdCBhIGZldyBNQiBsYXJnZSwgdHlwaWNhbGx5IG1vdW50ZWQgb24KLSsuSVIgL2Jvb3QgLAot K3RvIHN0b3JlIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIGEgZmV3IGF1eGlsaWFyeSBmaWxlcyBuZWVk ZWQgYXQgYm9vdCB0aW1lLAotK3NvIGFzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgc3R1ZmYgaXMg YWNjZXNzaWJsZSB0byB0aGUgQklPUy4KLStUaGVyZSBtYXkgYmUgcmVhc29ucyBvZiBzZWN1cml0 eSwgZWFzZSBvZiBhZG1pbmlzdHJhdGlvbiBhbmQgYmFja3VwLAotK29yIHRlc3RpbmcsIHRvIHVz ZSBtb3JlIHRoYW4gdGhlIG1pbmltdW0gbnVtYmVyIG9mIHBhcnRpdGlvbnMuCisrICAgICBUaGlz IGNhbiBiZSBhIHNpbmdsZSB3b3JkIHdpdGhvdXQgcXVvdGVzLCBvciBhIHN0cmluZyBzdXJyb3Vu ZGVkCisrICAgICBieSBzaW5nbGUgb3IgZG91YmxlIHF1b3Rlcy4gSXQgaXMgYmVzdCB0byBuYW1l IGFueSBzd2FwIHBhcnRpdGlvbgorKyAgICAgeW91IGNyZWF0ZSBgc3dhcCc7IG90aGVyIHBhcnRp dGlvbiBuYW1lcyBhcmUgdXAgdG8geW91LiBUaGUgbmFtZXMKKysgICAgIGFyZSBub3QgdmlzaWJs ZSB0byBMaW51eC4KICsKLSsuQiBwbWFjLWZkaXNrCi0rKGluIHRoZSBmaXJzdCBmb3JtIG9mIGlu dm9jYXRpb24pCi0raXMgYSBtZW51IGRyaXZlbiBwcm9ncmFtIGZvciBjcmVhdGlvbiBhbmQgbWFu aXB1bGF0aW9uIG9mCi0rcGFydGl0aW9uIHRhYmxlcy4KLStJdCB1bmRlcnN0YW5kcyBET1MgdHlw ZSBwYXJ0aXRpb24gdGFibGVzIGFuZCBCU0Qgb3IgU1VOIHR5cGUgZGlza2xhYmVscy4KKytUaGUK KysuQiBDCisrY29tbWFuZCBpcyBpZGVudGljYWwgdG8gdGhlCisrLkIgYworK2NvbW1hbmQsIHdp dGggdGhlIGFkZGl0aW9uIG9mIGEgcGFydGl0aW9uIHR5cGUgYXJndW1lbnQgYWZ0ZXIgdGhlCisr b3RoZXIgYXJndW1lbnRzLiBUaGUgcGFydGl0aW9uIHR5cGUgdXNlZCBmb3IgTGludXggc3dhcCBh bmQgZGF0YSBwYXJ0aXRvbnMKKytpcyAKKysuQiBBUFBMRV9VTklYX1NWUjIKKysodGhpcyBpcyB0 aGUgcGFydGl0aW9uIHR5cGUgY3JlYXRlZCBieSB0aGUgCisrLkIgYworK2NvbW1hbmQpLiBVbmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgeW91IHNob3VsZCBub3QgbmVlZCB0byB1c2UgdGhpcwor K2NvbW1hbmQuCiArCiArVGhlCi0rLkkgZGV2aWNlCi0raXMgdXN1YWxseSBvbmUgb2YgdGhlIGZv bGxvd2luZzoKLSsuYnIKLSsubmYKLSsuUlMKLSsvZGV2L2hkYQotKy9kZXYvaGRiCi0rL2Rldi9z ZGEKLSsvZGV2L3NkYgotKy5SRQotKy5maQotKygvZGV2L2hkW2EtaF0gZm9yIElERSBkaXNrcywg L2Rldi9zZFthLXBdIGZvciBTQ1NJIGRpc2tzKS4KLStBIGRldmljZSBuYW1lIHJlZmVycyB0byB0 aGUgZW50aXJlIGRpc2suCisrLkIgZAorK2NvbW1hbmQgZGVsZXRlcyB0aGUgcGFydGl0aW9uIG51 bWJlciBzcGVjaWZpZWQsIHJlcGxhY2luZyB0aGF0IHBhcnRpdGlvbiAKKyt3aXRoIHBhcnRpdGlv bmFibGUgZnJlZSBzcGFjZS4KICsKICtUaGUKLSsuSSBwYXJ0aXRpb24KLStpcyBhCi0rLkkgZGV2 aWNlCi0rbmFtZSBmb2xsb3dlZCBieSBhIHBhcnRpdGlvbiBudW1iZXIuICBGb3IgZXhhbXBsZSwK LSsuQiAvZGV2L2hkYTEKLStpcyB0aGUgZmlyc3QgcGFydGl0aW9uIG9uIHRoZSBmaXJzdCBJREUg aGFyZCBkaXNrIGluIHRoZSBzeXN0ZW0uCi0rSURFIGRpc2tzIGNhbiBoYXZlIHVwIHRvIDYzIHBh cnRpdGlvbnMsIFNDU0kgZGlza3MgdXAgdG8gMTUuCi0rU2VlIGFsc28KLSsuSVIgL3Vzci9zcmMv bGludXgvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dCAuCisrLkIgcgorKyhyZW9yZGVyKSBjb21t YW5kIGFsbG93cyB0aGUgaW5kZXggbnVtYmVyIG9mIHBhcnRpdGlvbnMgdG8gYmUgY2hhbmdlZC4K KytUaGUgaW5kZXggbnVtYmVycyBhcmUgY29uc3RyYWluZWQgdG8gYmUgYSBjb250aWd1b3VzIHNl cXVlbmNlLiAKKysuQiBtYWMtZmRpc2sKKyt3aWxsIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50IGJ5 IHJlY2FsY3VsYXRpbmcgdGhlIHBhcnRpdGlvbiBudW1iZXJzCisrYWZ0ZXIgZWFjaCBpbnNlcnQs IGRlbGV0ZSBvciByZW9yZGVyIG9wZXJhdGlvbi4gT3BlbkZpcm13YXJlIGxvb2tzIGZvcgorK2Jv b3RhYmxlIHBhcnRpdGlvbnMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBieSB0aGUgaW5kZXguIFRo ZQorK3BhcnRpdGlvbnMgYXJlIG5vdCBtb3ZlZCBvbiB0aGUgZGlzay4gVGhpcyBjb21tYW5kIHRh a2VzIHR3bworK2FyZ3VtZW50cywgdGhlIG51bWJlciBvZiB0aGUgcGFydGl0aW9uIHRvIGJlIG1v dmVkIGFuZCB0aGUgcGFydGl0aW9uCisrbnVtYmVyIGl0IHNob3VsZCBiZWNvbWUuCiArCi0rQSBC U0QvU1VOIHR5cGUgZGlza2xhYmVsIGNhbiBkZXNjcmliZSA4IHBhcnRpdGlvbnMsCi0rdGhlIHRo aXJkIG9mIHdoaWNoIHNob3VsZCBiZSBhIGB3aG9sZSBkaXNrJyBwYXJ0aXRpb24uCi0rRG8gbm90 IHN0YXJ0IGEgcGFydGl0aW9uIHRoYXQgYWN0dWFsbHkgdXNlcyBpdHMgZmlyc3Qgc2VjdG9yCi0r KGxpa2UgYSBzd2FwIHBhcnRpdGlvbikgYXQgY3lsaW5kZXIgMCwgc2luY2UgdGhhdCB3aWxsCi0r ZGVzdHJveSB0aGUgZGlza2xhYmVsLgorK1RoZQorKy5CIHcKKytjb21tYW5kIHdyaXRlcyB0aGUg cGFydGl0aW9uIG1hcCBvdXQgdG8gZGlzay4gTm90ZSB0aGF0IHBhcnRpdGlvbgorK21hcHMgZm9y IGRpc2tzIHdpdGggbW91bnRlZCBwYXJ0aXRpb25zIGNhbm5vdCBpbW1lZGlhdGVseSBiZQorK3Jl aW50ZXJwcmV0ZWQgYnkgdGhlIGtlcm5lbC4gSW4gb3JkZXIgdG8gdXNlIHRoZSBuZXcgcGFydGl0 aW9uIG1hcCB5b3UKKyttdXN0IHJlYm9vdC4gV2l0aGluIHRoZSBEZWJpYW4gaW5zdGFsbGVyIHN5 c3RlbSwgCisrLkIgbWFjLWZkaXNrIAorK2lzIG5vcm1hbGx5IGludm9rZWQgYmVmb3JlIGFueSBw YXJ0aXRpb25zIGFyZSBtb3VudGVkLCB0aHVzIGEgcmVib290IGlzIG5vdCAKKytuZWNlc3Nhcnkg YmVmb3JlIGNvbnRpbnVpbmcgdGhlIGluc3RhbGxhdGlvbi4KICsKLStBbiBJUklYL1NHSSB0eXBl IGRpc2tsYWJlbCBjYW4gZGVzY3JpYmUgMTYgcGFydGl0aW9ucywKLSt0aGUgZWxldmVudGggb2Yg d2hpY2ggc2hvdWxkIGJlIGFuIGVudGlyZSBgdm9sdW1lJyBwYXJ0aXRpb24sCi0rd2hpbGUgdGhl IG5pbnRoIHNob3VsZCBiZSBsYWJlbGVkIGB2b2x1bWUgaGVhZGVyJy4KLStUaGUgdm9sdW1lIGhl YWRlciB3aWxsIGFsc28gY292ZXIgdGhlIHBhcnRpdGlvbiB0YWJsZSwgaS5lLiwKLStpdCBzdGFy dHMgYXQgYmxvY2sgemVybyBhbmQgZXh0ZW5kcyBieSBkZWZhdWx0IG92ZXIgZml2ZSBjeWxpbmRl cnMuCi0rVGhlIHJlbWFpbmluZyBzcGFjZSBpbiB0aGUgdm9sdW1lIGhlYWRlciBtYXkgYmUgdXNl ZCBieSBoZWFkZXIKLStkaXJlY3RvcnkgZW50cmllcy4gIE5vIHBhcnRpdGlvbnMgbWF5IG92ZXJs YXAgd2l0aCB0aGUgdm9sdW1lIGhlYWRlci4KLStBbHNvIGRvIG5vdCBjaGFuZ2UgaXRzIHR5cGUg YW5kIG1ha2Ugc29tZSBmaWxlIHN5c3RlbSBvbiBpdCwgc2luY2UKLSt5b3Ugd2lsbCBsb3NlIHRo ZSBwYXJ0aXRpb24gdGFibGUuICBVc2UgdGhpcyB0eXBlIG9mIGxhYmVsIG9ubHkgd2hlbgotK3dv cmtpbmcgd2l0aCBMaW51eCBvbiBJUklYL1NHSSBtYWNoaW5lcyBvciBJUklYL1NHSSBkaXNrcyB1 bmRlciBMaW51eC4KKytUaGUKKysuQiBxCisrY29tbWFuZCB0ZXJtaW5hdGVzIHRoZSBwcm9ncmFt LiBJZiB0aGVyZSB3YXMgbm8gCisrLkIgdworK2NvbW1hbmQgaXNzdWVkIGR1cmluZyB0aGUgcHJv Z3JhbSBydW4sIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlZmZlY3Qgb24gdGhlIGRpc2suCiArCi0r QSBET1MgdHlwZSBwYXJ0aXRpb24gdGFibGUgY2FuIGRlc2NyaWJlIGFuIHVubGltaXRlZCBudW1i ZXIKLStvZiBwYXJ0aXRpb25zLiBJbiBzZWN0b3IgMCB0aGVyZSBpcyByb29tIGZvciB0aGUgZGVz Y3JpcHRpb24KLStvZiA0IHBhcnRpdGlvbnMgKGNhbGxlZCBgcHJpbWFyeScpLiBPbmUgb2YgdGhl c2UgbWF5IGJlIGFuCi0rZXh0ZW5kZWQgcGFydGl0aW9uOyB0aGlzIGlzIGEgYm94IGhvbGRpbmcg bG9naWNhbCBwYXJ0aXRpb25zLAotK3dpdGggZGVzY3JpcHRvcnMgZm91bmQgaW4gYSBsaW5rZWQg bGlzdCBvZiBzZWN0b3JzLCBlYWNoCi0rcHJlY2VkaW5nIHRoZSBjb3JyZXNwb25kaW5nIGxvZ2lj YWwgcGFydGl0aW9ucy4KLStUaGUgZm91ciBwcmltYXJ5IHBhcnRpdGlvbnMsIHByZXNlbnQgb3Ig bm90LCBnZXQgbnVtYmVycyAxLTQuCi0rTG9naWNhbCBwYXJ0aXRpb25zIHN0YXJ0IG51bWJlcmlu ZyBmcm9tIDUuCisrLlNIIEJVR1MKKytTb21lIHBlb3BsZSBiZWxpZXZlIHRoZXJlIHNob3VsZCBy ZWFsbHkgYmUganVzdCBvbmUgZGlzayBwYXJ0aXRpb25pbmcgdXRpbGl0eS4KICsKLStJbiBhIERP UyB0eXBlIHBhcnRpdGlvbiB0YWJsZSB0aGUgc3RhcnRpbmcgb2Zmc2V0IGFuZCB0aGUgc2l6ZQot K29mIGVhY2ggcGFydGl0aW9uIGlzIHN0b3JlZCBpbiB0d28gd2F5czogYXMgYW4gYWJzb2x1dGUg bnVtYmVyCi0rb2Ygc2VjdG9ycyAoZ2l2ZW4gaW4gMzIgYml0cykgYW5kIGFzIGEgQ3lsaW5kZXJz L0hlYWRzL1NlY3RvcnMKLSt0cmlwbGUgKGdpdmVuIGluIDEwKzgrNiBiaXRzKS4gVGhlIGZvcm1l ciBpcyBPSyAtIHdpdGggNTEyLWJ5dGUKLStzZWN0b3JzIHRoaXMgd2lsbCB3b3JrIHVwIHRvIDIg VEIuIFRoZSBsYXR0ZXIgaGFzIHR3byBkaWZmZXJlbnQKLStwcm9ibGVtcy4gRmlyc3Qgb2YgYWxs LCB0aGVzZSBDL0gvUyBmaWVsZHMgY2FuIGJlIGZpbGxlZCBvbmx5Ci0rd2hlbiB0aGUgbnVtYmVy IG9mIGhlYWRzIGFuZCB0aGUgbnVtYmVyIG9mIHNlY3RvcnMgcGVyIHRyYWNrCi0rYXJlIGtub3du LiBTZWNvbmRseSwgZXZlbiBpZiB3ZSBrbm93IHdoYXQgdGhlc2UgbnVtYmVycyBzaG91bGQgYmUs Ci0rdGhlIDI0IGJpdHMgdGhhdCBhcmUgYXZhaWxhYmxlIGRvIG5vdCBzdWZmaWNlLgotK0RPUyB1 c2VzIEMvSC9TIG9ubHksIFdpbmRvd3MgdXNlcyBib3RoLCBMaW51eCBuZXZlciB1c2VzIEMvSC9T LgorKy5CIG1hYy1mZGlzaworK3Nob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBIRlMgcGFydGl0aW9u cyB0aGF0IHdvcmsuIEN1cnJlbnRseSwgaWYgYQorK3ByZS1leGlzdGluZyBIRlMgcGFydGl0aW9u IGlzIHJlc2l6ZWQsIE1hY09TIHdpbGwgY29udGludWUgdG8gdXNlIHRoZQorK3BhcnRpdGlvbiBz aXplIHN0b3JlZCBpbiB0aGUgSEZTICdzdXBlcmJsb2NrJyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBz aXplIGZyb20KKyt0aGUgcGFydGl0aW9uIHRhYmxlICh0aGUgTWFjT1Mgdm9sdW1lIG9uIHRoZSBw YXJ0aXRpb24gcmVtYWlucyB2YWxpZCBldmVuCisrdGhvdWdoIHRoZSBzaXplcyBkb24ndCBtYXRj aCBhbnltb3JlKS4gVGhpcyBjYW4gaGF2ZSB1bmRlc2lyZWQgc2lkZSBlZmZlY3RzCisrZXNwZWNp YWxseSB3aGVuIGNyZWF0aW5nIGEgc21hbGxlciBIRlMgcGFydGl0aW9uIGZvbGxvd2VkIGJ5IGEg ZmV3IExpbnV4IAorK3BhcnRpdGlvbnMgaW4gcGxhY2Ugb2YgdGhlIHByZXZpb3VzIEhGUyBwYXJ0 aXRpb24gc3BhY2UuIFRvIGF2b2lkIHRoaXMgCisraXNzdWUsIGNyZWF0ZSBNYWNPUyBwYXJ0aXRp b25zIHdpdGhpbiBNYWNPUyBhbmQgdGhlbiBkb24ndCByZXNpemUgdGhlbSAKKytpbiAKKysuQiBt YWMtZmRpc2suCiArCi0rSWYgcG9zc2libGUsCi0rLkIgcG1hYy1mZGlzawotK3dpbGwgb2J0YWlu IHRoZSBkaXNrIGdlb21ldHJ5IGF1dG9tYXRpY2FsbHkuICBUaGlzIGlzIG5vdAotK25lY2Vzc2Fy aWx5IHRoZSBwaHlzaWNhbCBkaXNrIGdlb21ldHJ5IChpbmRlZWQsIG1vZGVybiBkaXNrcyBkbyBu b3QKLStyZWFsbHkgaGF2ZSBhbnl0aGluZyBsaWtlIGEgcGh5c2ljYWwgZ2VvbWV0cnksIGNlcnRh aW5seSBub3Qgc29tZXRoaW5nCi0rdGhhdCBjYW4gYmUgZGVzY3JpYmVkIGluIHNpbXBsaXN0aWMg Q3lsaW5kZXJzL0hlYWRzL1NlY3RvcnMgZm9ybSksCi0rYnV0IGlzIHRoZSBkaXNrIGdlb21ldHJ5 IHRoYXQgTVMtRE9TIHVzZXMgZm9yIHRoZSBwYXJ0aXRpb24gdGFibGUuCisrLlNIICJTRUUgQUxT TyIKKysuQlIgZmRpc2sgKDgpLCAKKysuQlIgbWtzd2FwICg4KSwKKysuQlIgbWtmcyAoOCkKKysu U0ggQVVUSE9SCisrRXJ5ayBWZXJzaGVuIChlcnlrQGFwcGxlLmNvbSksIG1hbiBwYWdlIHJldmlz ZWQgYnkgQ2hyaXMgVGlsbG1hbiAodGlsbG1hbkBhenN0YXJuZXQuY29tKQorLS0tIG1hYy1mZGlz ay0wLjEub3JpZy9pby5jCisrKysgbWFjLWZkaXNrLTAuMS9pby5jCitAQCAtMzAsNiArMzAsMTAg QEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUg PFNDU0kuaD4KKysjZWxzZQorKyNpZmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+CisrI2VuZGlmCisgI2VuZGlmCisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxz dHJpbmcuaD4KK0BAIC01MSw2ICs1NSw4IEBACisgI2RlZmluZSBTQ1NJX0ZEIDgKKyAjZGVmaW5l IGxvZmZfdCBsb25nCisgI2RlZmluZSBsbHNlZWsgbHNlZWsKKysjZWxzZQorKyNkZWZpbmUgbGxz ZWVrIGxzZWVrNjQKKyAjZW5kaWYKKyAKKyAKK0BAIC00MzUsOCArNDQxLDggQEAKKyAjZWxzZQor ICAgICB7CisgI2VuZGlmCistCXggPSBudW0gKiBQQkxPQ0tfU0laRTsKKy0JaWYgKCh4ID0gbGxz ZWVrKGZkLCB4LCAwKSkgPCAwKSB7CisrCXggPSAoKGxvbmcgbG9uZykgbnVtICogUEJMT0NLX1NJ WkUpOyAvKiBjYXN0IHRvIGxsIHRvIHdvcmsgYXJvdW5kIGNvbXBpbGVyIGJ1ZyAqLworKwlpZiAo KHggPSBsc2VlazY0KGZkLCB4LCAwKSkgPCAwKSB7CisgCSAgICBpZiAocXVpZXQgPT0gMCkgewor IAkJZXJyb3IoZXJybm8sICJDYW4ndCBzZWVrIG9uIGZpbGUiKTsKKyAJICAgIH0KKy0tLSBtYWMt ZmRpc2stMC4xLm9yaWcvcGFydGl0aW9uX21hcC5jCisrKysgbWFjLWZkaXNrLTAuMS9wYXJ0aXRp b25fbWFwLmMKK0BAIC0zMCwxNCArMzAsMTIgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2lu Y2x1ZGUgPHVuaXN0ZC5oPgorICNlbmRpZgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVk ZSA8ZXJybm8uaD4KKyAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaWZkZWYgX19saW51eF9fCisg I2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorLSNpbmNsdWRlIDxsaW51eC9mcy5oPgorLSNpbmNsdWRl IDxsaW51eC9oZHJlZy5oPgorKyNpbmNsdWRlICJrZXJuZWwtZGVmcy5oIgorICNpbmNsdWRlIDxz eXMvc3RhdC5oPgorICNlbmRpZgorIAorQEAgLTY1LDYgKzYzLDggQEAKKyBjb25zdCBjaGFyICog a0ZyZWVUeXBlCT0gIkFwcGxlX0ZyZWUiOworIGNvbnN0IGNoYXIgKiBrTWFwVHlwZQk9ICJBcHBs ZV9wYXJ0aXRpb25fbWFwIjsKKyBjb25zdCBjaGFyICoga1VuaXhUeXBlCT0gIkFwcGxlX1VOSVhf U1ZSMiI7CisrY29uc3QgY2hhciAqIGtCb290c3RyYXBUeXBlID0gIkFwcGxlX0Jvb3RzdHJhcCI7 CisrY29uc3QgY2hhciAqIGtCb290c3RyYXBOYW1lID0gImJvb3RzdHJhcCI7CisgCisgY29uc3Qg Y2hhciAqIGtGcmVlTmFtZSA9ICJFeHRyYSI7CisgCitAQCAtMjg4LDE1ICsyODgsMTcgQEAKKyAJ ICAgIGZyZWUoYmxvY2spOworIAl9CisgICAgIH0KKy0gICAgcHJpbnRmKCJUaGUgcGFydGl0aW9u IHRhYmxlIGhhcyBiZWVuIGFsdGVyZWQhXG5cbiIpOworKyAgICBwcmludGYoIlRoZSBwYXJ0aXRp b24gbWFwIGhhcyBiZWVuIHNhdmVkIHN1Y2Nlc3NmdWxseSFcblxuIik7CisgCisgI2lmZGVmIF9f bGludXhfXworICAgICBpZiAobWFwLT5yZWd1bGFyX2ZpbGUpIHsKKyAJY2xvc2VfZGV2aWNlKG1h cC0+ZmQpOworICAgICB9IGVsc2UgeworLQkvLyBwcmludGYoIkNhbGxpbmcgaW9jdGwoKSB0byBy ZS1yZWFkIHBhcnRpdGlvbiB0YWJsZS5cbiIKKy0JLy8gICAgICAgIihSZWJvb3QgdG8gZW5zdXJl IHRoZSBwYXJ0aXRpb24gdGFibGUgaGFzIGJlZW4gdXBkYXRlZC4pXG4iKTsKKy0Jc3luYygpOwor KwkvLyBwcmludGYoIkNhbGxpbmcgaW9jdGwoKSB0byByZS1yZWFkIHBhcnRpdGlvbiB0YWJsZS5c biIpOworKwlpZiAoKGkgPSBpb2N0bChmZCwgQkxLRkxTQlVGKSkgIT0gMCkgeworKwkgICAgcGVy cm9yKCJpb2N0bChCTEtGTFNCVUYpIik7CisrCSAgICBzeW5jKCk7CisrCX0KKyAJc2xlZXAoMik7 CisgCWlmICgoaSA9IGlvY3RsKGZkLCBCTEtSUlBBUlQpKSAhPSAwKSB7CisgCSAgICBzYXZlZF9l cnJubyA9IGVycm5vOworQEAgLTMwNCwyMCArMzA2LDI2IEBACisgCSAgICAvLyBzb21lIGtlcm5l bCB2ZXJzaW9ucyAoMS4yLngpIHNlZW0gdG8gaGF2ZSB0cm91YmxlCisgCSAgICAvLyByZXJlYWRp bmcgdGhlIHBhcnRpdGlvbiB0YWJsZSwgYnV0IGlmIGFza2VkIHRvIGRvIGl0CisgCSAgICAvLyB0 d2ljZSwgdGhlIHNlY29uZCB0aW1lIHdvcmtzLiAtIGJpcm9AeWdnZHJhc2lsLmNvbSAqLworLQkg ICAgc3luYygpOworKwkgICAgLy8gcHJpbnRmKCJBZ2FpbiBjYWxsaW5nIGlvY3RsKCkgdG8gcmUt cmVhZCBwYXJ0aXRpb24gdGFibGUuXG4iKTsKKysJICAgIGlmICgoaSA9IGlvY3RsKGZkLCBCTEtG TFNCVUYpKSAhPSAwKSB7CisrCSAgICAJcGVycm9yKCJpb2N0bChCTEtGTFNCVUYpIik7CisrCQlz eW5jKCk7CisrCSAgICB9CisgCSAgICBzbGVlcCgyKTsKKyAJICAgIGlmICgoaSA9IGlvY3RsKGZk LCBCTEtSUlBBUlQpKSAhPSAwKSB7CisgCQlzYXZlZF9lcnJubyA9IGVycm5vOworIAkgICAgfQor IAl9CisrCXByaW50ZigiU3luY2luZyBkaXNrcy5cbiIpOworKwlpZiAoKGkgPSBpb2N0bChmZCwg QkxLRkxTQlVGKSkgIT0gMCkgeworKwkgICAgcGVycm9yKCJpb2N0bChCTEtGTFNCVUYpIik7Cisr CSAgICBzeW5jKCk7CisrCX0KKyAJY2xvc2VfZGV2aWNlKG1hcC0+ZmQpOworLQorLQkvLyBwcmlu dGYoIlN5bmNpbmcgZGlza3MuXG4iKTsKKy0Jc3luYygpOworIAlzbGVlcCg0KTsJCS8qIGZvciBz eW5jKCkgKi8KKyAKKyAJaWYgKGkgPCAwKSB7CistCSAgICBlcnJvcihzYXZlZF9lcnJubywgIlJl LXJlYWQgb2YgcGFydGl0aW9uIHRhYmxlIGZhaWxlZCIpOworKwkgICAgZXJyb3Ioc2F2ZWRfZXJy bm8sICJSZS1yZWFkIG9mIHBhcnRpdGlvbiBtYXAgZmFpbGVkIik7CisgCSAgICBwcmludGYoIlJl Ym9vdCB5b3VyIHN5c3RlbSB0byBlbnN1cmUgdGhlICIKKyAJCSAgICAicGFydGl0aW9uIHRhYmxl IGlzIHVwZGF0ZWQuXG4iKTsKKyAJfQorQEAgLTY5Miw5ICs3MDAsOSBAQAorIAkJZ2VvbWV0cnku aGVhZHMqZ2VvbWV0cnkuc2VjdG9ycypnZW9tZXRyeS5jeWxpbmRlcnMpOworICAgICB9CisgCist ICAgIGlmICgocG9zID0gbGxzZWVrKGZkLCAwLCBTRUVLX0VORCkpIDwgMCkgeworKyAgICBpZiAo KHBvcyA9IGxzZWVrNjQoZmQsIDAsIFNFRUtfRU5EKSkgPCAwKSB7CisgCXByaW50ZigibGxzZWVr IHRvIGVuZCBvZiBkZXZpY2UgZmFpbGVkXG4iKTsKKy0gICAgfSBlbHNlIGlmICgocG9zID0gbGxz ZWVrKGZkLCAwLCBTRUVLX0NVUikpIDwgMCkgeworKyAgICB9IGVsc2UgaWYgKChwb3MgPSBsc2Vl azY0KGZkLCAwLCBTRUVLX0NVUikpIDwgMCkgeworIAlwcmludGYoImxsc2VlayB0byBlbmQgb2Yg ZGV2aWNlIGZhaWxlZCBvbiBzZWNvbmQgdHJ5XG4iKTsKKyAgICAgfSBlbHNlIHsKKyAJcHJpbnRm KCJsbHNlZWs6IHBvcyA9ICVkLCBibG9ja3M9JWRcbiIsIHBvcywgcG9zL1BCTE9DS19TSVpFKTsK K0BAIC04OTUsNiArOTAzLDcgQEAKKyAJcHJpbnRmKCJObyBzdWNoIHBhcnRpdGlvblxuIik7Cisg ICAgIH0gZWxzZSB7CisgCXJlbW92ZV9mcm9tX2Rpc2tfb3JkZXIoY3VyKTsKKysJaWYgKG9sZF9p bmRleCA8IGluZGV4KSBpbmRleCsrOyAvKiByZW51bWJlcl9kaXNrX2FkZHJlc3NlcyhtYXApOyAq LworIAljdXItPmRpc2tfYWRkcmVzcyA9IGluZGV4OworIAlpbnNlcnRfaW5fZGlza19vcmRlcihj dXIpOworIAlyZW51bWJlcl9kaXNrX2FkZHJlc3NlcyhtYXApOworLS0tIG1hYy1mZGlzay0wLjEu b3JpZy9wYXJ0aXRpb25fbWFwLmgKKysrKyBtYWMtZmRpc2stMC4xL3BhcnRpdGlvbl9tYXAuaAor QEAgLTY5LDYgKzY5LDggQEAKKyBleHRlcm4gY29uc3QgY2hhciAqIGtGcmVlVHlwZTsKKyBleHRl cm4gY29uc3QgY2hhciAqIGtNYXBUeXBlOworIGV4dGVybiBjb25zdCBjaGFyICoga1VuaXhUeXBl OworK2V4dGVybiBjb25zdCBjaGFyICoga0Jvb3RzdHJhcFR5cGU7CisrZXh0ZXJuIGNvbnN0IGNo YXIgKiBrQm9vdHN0cmFwTmFtZTsKKyAKKyBleHRlcm4gY29uc3QgY2hhciAqIGtGcmVlTmFtZTsK KyAKKy0tLSBtYWMtZmRpc2stMC4xLm9yaWcva2VybmVsLWRlZnMuaAorKysrIG1hYy1mZGlzay0w LjEva2VybmVsLWRlZnMuaAorQEAgLTAsMCArMSw2NCBAQAorKy8qIGZyb20gYXNtL3R5cGVzLmgg Ki8KKyt0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OworK3R5cGVkZWYgdW5zaWduZWQgaW50 IF9fdTMyOwogKwotK1VzdWFsbHkgYWxsIGdvZXMgd2VsbCBieSBkZWZhdWx0LCBhbmQgdGhlcmUg YXJlIG5vIHByb2JsZW1zIGlmCi0rTGludXggaXMgdGhlIG9ubHkgc3lzdGVtIG9uIHRoZSBkaXNr LiBIb3dldmVyLCBpZiB0aGUgZGlzayBoYXMKLSt0byBiZSBzaGFyZWQgd2l0aCBvdGhlciBvcGVy YXRpbmcgc3lzdGVtcywgaXQgaXMgb2Z0ZW4gYSBnb29kIGlkZWEKLSt0byBsZXQgYW4gZmRpc2sg ZnJvbSBhbm90aGVyIG9wZXJhdGluZyBzeXN0ZW0gbWFrZSBhdCBsZWFzdCBvbmUKLStwYXJ0aXRp b24uIFdoZW4gTGludXggYm9vdHMgaXQgbG9va3MgYXQgdGhlIHBhcnRpdGlvbiB0YWJsZSwgYW5k Ci0rdHJpZXMgdG8gZGVkdWNlIHdoYXQgKGZha2UpIGdlb21ldHJ5IGlzIHJlcXVpcmVkIGZvciBn b29kCi0rY29vcGVyYXRpb24gd2l0aCBvdGhlciBzeXN0ZW1zLgorKy8qIGZyb20gbGludXgvaGRy ZWcuaCAqLworKyNkZWZpbmUgSERJT19HRVRHRU8JCTB4MDMwMQkvKiBnZXQgZGV2aWNlIGdlb21l dHJ5ICovCiArCi0rV2hlbmV2ZXIgYSBwYXJ0aXRpb24gdGFibGUgaXMgcHJpbnRlZCBvdXQsIGEg Y29uc2lzdGVuY3kgY2hlY2sgaXMgcGVyZm9ybWVkCi0rb24gdGhlIHBhcnRpdGlvbiB0YWJsZSBl bnRyaWVzLiAgVGhpcyBjaGVjayB2ZXJpZmllcyB0aGF0IHRoZSBwaHlzaWNhbCBhbmQKLStsb2dp Y2FsIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIGFyZSBpZGVudGljYWwsIGFuZCB0aGF0IHRoZSBwYXJ0 aXRpb24gc3RhcnRzCi0rYW5kIGVuZHMgb24gYSBjeWxpbmRlciBib3VuZGFyeSAoZXhjZXB0IGZv ciB0aGUgZmlyc3QgcGFydGl0aW9uKS4KKytzdHJ1Y3QgaGRfZ2VvbWV0cnkgeworKyAgICAgIHVu c2lnbmVkIGNoYXIgaGVhZHM7CisrICAgICAgdW5zaWduZWQgY2hhciBzZWN0b3JzOworKyAgICAg IHVuc2lnbmVkIHNob3J0IGN5bGluZGVyczsKKysgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0Owor K307CiArCi0rU29tZSB2ZXJzaW9ucyBvZiBNUy1ET1MgY3JlYXRlIGEgZmlyc3QgcGFydGl0aW9u IHdoaWNoIGRvZXMgbm90IGJlZ2luCi0rb24gYSBjeWxpbmRlciBib3VuZGFyeSwgYnV0IG9uIHNl Y3RvciAyIG9mIHRoZSBmaXJzdCBjeWxpbmRlci4KLStQYXJ0aXRpb25zIGJlZ2lubmluZyBpbiBj eWxpbmRlciAxIGNhbm5vdCBiZWdpbiBvbiBhIGN5bGluZGVyIGJvdW5kYXJ5LCBidXQKLSt0aGlz IGlzIHVubGlrZWx5IHRvIGNhdXNlIGRpZmZpY3VsdHkgdW5sZXNzIHlvdSBoYXZlIE9TLzIgb24g eW91ciBtYWNoaW5lLgorKy8qIGZyb20gYXNtL2lvY3RsLmggKi8KKysjZGVmaW5lIF9JT0NfTlJC SVRTCTgKKysjZGVmaW5lIF9JT0NfVFlQRUJJVFMJOAorKyNkZWZpbmUgX0lPQ19TSVpFQklUUwkx MworKyNkZWZpbmUgX0lPQ19ESVJCSVRTCTMKICsKLStBIHN5bmMoKSBhbmQgYSBCTEtSUlBBUlQg aW9jdGwoKSAocmVyZWFkIHBhcnRpdGlvbiB0YWJsZSBmcm9tIGRpc2spCi0rYXJlIHBlcmZvcm1l ZCBiZWZvcmUgZXhpdGluZyB3aGVuIHRoZSBwYXJ0aXRpb24gdGFibGUgaGFzIGJlZW4gdXBkYXRl ZC4KLStMb25nIGFnbyBpdCB1c2VkIHRvIGJlIG5lY2Vzc2FyeSB0byByZWJvb3QgYWZ0ZXIgdGhl IHVzZSBvZiBwbWFjLWZkaXNrLgotK0kgZG8gbm90IHRoaW5rIHRoaXMgaXMgdGhlIGNhc2UgYW55 bW9yZSAtIGluZGVlZCwgcmVib290aW5nIHRvbyBxdWlja2x5Ci0rbWlnaHQgY2F1c2UgbG9zcyBv ZiBub3QteWV0LXdyaXR0ZW4gZGF0YS4gTm90ZSB0aGF0IGJvdGggdGhlIGtlcm5lbAotK2FuZCB0 aGUgZGlzayBoYXJkd2FyZSBtYXkgYnVmZmVyIGRhdGEuCisrI2RlZmluZSBfSU9DX05STUFTSwko KDEgPDwgX0lPQ19OUkJJVFMpLTEpCisrI2RlZmluZSBfSU9DX1RZUEVNQVNLCSgoMSA8PCBfSU9D X1RZUEVCSVRTKS0xKQorKyNkZWZpbmUgX0lPQ19TSVpFTUFTSwkoKDEgPDwgX0lPQ19TSVpFQklU UyktMSkKKysjZGVmaW5lIF9JT0NfRElSTUFTSwkoKDEgPDwgX0lPQ19ESVJCSVRTKS0xKQogKwot Ky5TSCAiRE9TIDYueCBXQVJOSU5HIgorKyNkZWZpbmUgX0lPQ19OUlNISUZUCTAKKysjZGVmaW5l IF9JT0NfVFlQRVNISUZUCShfSU9DX05SU0hJRlQrX0lPQ19OUkJJVFMpCisrI2RlZmluZSBfSU9D X1NJWkVTSElGVAkoX0lPQ19UWVBFU0hJRlQrX0lPQ19UWVBFQklUUykKKysjZGVmaW5lIF9JT0Nf RElSU0hJRlQJKF9JT0NfU0laRVNISUZUK19JT0NfU0laRUJJVFMpCiArCi0rVGhlIERPUyA2Lngg Rk9STUFUIGNvbW1hbmQgbG9va3MgZm9yIHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIGZpcnN0Ci0r c2VjdG9yIG9mIHRoZSBkYXRhIGFyZWEgb2YgdGhlIHBhcnRpdGlvbiwgYW5kIHRyZWF0cyB0aGlz IGluZm9ybWF0aW9uCi0rYXMgbW9yZSByZWxpYWJsZSB0aGFuIHRoZSBpbmZvcm1hdGlvbiBpbiB0 aGUgcGFydGl0aW9uIHRhYmxlLiAgRE9TCi0rRk9STUFUIGV4cGVjdHMgRE9TIEZESVNLIHRvIGNs ZWFyIHRoZSBmaXJzdCA1MTIgYnl0ZXMgb2YgdGhlIGRhdGEgYXJlYQotK29mIGEgcGFydGl0aW9u IHdoZW5ldmVyIGEgc2l6ZSBjaGFuZ2Ugb2NjdXJzLiAgRE9TIEZPUk1BVCB3aWxsIGxvb2sgYXQK LSt0aGlzIGV4dHJhIGluZm9ybWF0aW9uIGV2ZW4gaWYgdGhlIC9VIGZsYWcgaXMgZ2l2ZW4gLS0g d2UgY29uc2lkZXIKLSt0aGlzIGEgYnVnIGluIERPUyBGT1JNQVQgYW5kIERPUyBGRElTSy4KKysj aWZkZWYgX19wb3dlcnBjX18KKysjZGVmaW5lIF9JT0NfTk9ORQkxVQorKyNkZWZpbmUgX0lPQ19S RUFECTJVCisrI2RlZmluZSBfSU9DX1dSSVRFCTRVCisrI2Vsc2UKKysjZGVmaW5lIF9JT0NfTk9O RQkwVQorKyNkZWZpbmUgX0lPQ19SRUFECTJVCisrI2RlZmluZSBfSU9DX1dSSVRFCTFVCisrI2Vu ZGlmCiArCi0rVGhlIGJvdHRvbSBsaW5lIGlzIHRoYXQgaWYgeW91IHVzZSBwbWFjLWZkaXNrIHRv IGNoYW5nZSB0aGUgc2l6ZSBvZiBhCi0rRE9TIHBhcnRpdGlvbiB0YWJsZSBlbnRyeSwgdGhlbiB5 b3UgbXVzdCBhbHNvIHVzZQotKy5CIGRkCi0rdG8gemVybyB0aGUgZmlyc3QgNTEyIGJ5dGVzIG9m IHRoYXQgcGFydGl0aW9uIGJlZm9yZSB1c2luZyBET1MgRk9STUFUIHRvCi0rZm9ybWF0IHRoZSBw YXJ0aXRpb24uICBGb3IgZXhhbXBsZSwgaWYgeW91IHdlcmUgdXNpbmcgcG1hYy1mZGlzayB0byBt YWtlIGEgCi0rRE9TIHBhcnRpdGlvbiB0YWJsZSBlbnRyeSBmb3IgL2Rldi9oZGExLCB0aGVuIChh ZnRlciBleGl0aW5nIHBtYWMtZmRpc2sgCi0rYW5kIHJlYm9vdGluZyBMaW51eCBzbyB0aGF0IHRo ZSBwYXJ0aXRpb24gdGFibGUgaW5mb3JtYXRpb24gaXMgdmFsaWQpIHlvdQotK3dvdWxkIHVzZSB0 aGUgY29tbWFuZCAiZGQgaWY9L2Rldi96ZXJvIG9mPS9kZXYvaGRhMSBicz01MTIgY291bnQ9MSIg dG8gemVybwotK3RoZSBmaXJzdCA1MTIgYnl0ZXMgb2YgdGhlIHBhcnRpdGlvbi4KKysjZGVmaW5l IF9JT0MoZGlyLHR5cGUsbnIsc2l6ZSkgXAorKwkoKChkaXIpICA8PCBfSU9DX0RJUlNISUZUKSB8 IFwKKysJICgodHlwZSkgPDwgX0lPQ19UWVBFU0hJRlQpIHwgXAorKwkgKChucikgICA8PCBfSU9D X05SU0hJRlQpIHwgXAorKwkgKChzaXplKSA8PCBfSU9DX1NJWkVTSElGVCkpCisrI2RlZmluZSBf SU8odHlwZSxucikJCV9JT0MoX0lPQ19OT05FLCh0eXBlKSwobnIpLDApCiArCi0rLkIgQkUgRVhU UkVNRUxZIENBUkVGVUwKLStpZiB5b3UgdXNlIHRoZQotKy5CIGRkCi0rY29tbWFuZCwgc2luY2Ug YSBzbWFsbCB0eXBvIGNhbiBtYWtlIGFsbCBvZiB0aGUgZGF0YSBvbiB5b3VyIGRpc2sgdXNlbGVz cy4KKysvKiBmcm9tIGxpbnV4L2ZzLmggKi8KKysjZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIs OTUpICAgICAgLyogcmUtcmVhZCBwYXJ0aXRpb24gdGFibGUgKi8KKysjZGVmaW5lIEJMS0ZMU0JV RiAgX0lPKDB4MTIsOTcpICAgICAgLyogZmx1c2ggYnVmZmVyIGNhY2hlICovCiArCi0rRm9yIGJl c3QgcmVzdWx0cywgeW91IHNob3VsZCBhbHdheXMgdXNlIGFuIE9TLXNwZWNpZmljIHBhcnRpdGlv biB0YWJsZQotK3Byb2dyYW0uICBGb3IgZXhhbXBsZSwgeW91IHNob3VsZCBtYWtlIERPUyBwYXJ0 aXRpb25zIHdpdGggdGhlIERPUyBGRElTSwotK3Byb2dyYW0gYW5kIExpbnV4IHBhcnRpdGlvbnMg d2l0aCB0aGUgTGludXggcG1hYy1mZGlzayBwcm9ncmFtLgorKy8qIGZyb20gbGludXgvZ2VuaGQu aCAqLworK3N0cnVjdCBwYXJ0aXRpb24geworKwl1bnNpZ25lZCBjaGFyIGJvb3RfaW5kOwkJLyog MHg4MCAtIGFjdGl2ZSAqLworKwl1bnNpZ25lZCBjaGFyIGhlYWQ7CQkvKiBzdGFydGluZyBoZWFk ICovCisrCXVuc2lnbmVkIGNoYXIgc2VjdG9yOwkJLyogc3RhcnRpbmcgc2VjdG9yICovCisrCXVu c2lnbmVkIGNoYXIgY3lsOwkJLyogc3RhcnRpbmcgY3lsaW5kZXIgKi8KKysJdW5zaWduZWQgY2hh ciBzeXNfaW5kOwkJLyogV2hhdCBwYXJ0aXRpb24gdHlwZSAqLworKwl1bnNpZ25lZCBjaGFyIGVu ZF9oZWFkOwkJLyogZW5kIGhlYWQgKi8KKysJdW5zaWduZWQgY2hhciBlbmRfc2VjdG9yOwkvKiBl bmQgc2VjdG9yICovCisrCXVuc2lnbmVkIGNoYXIgZW5kX2N5bDsJCS8qIGVuZCBjeWxpbmRlciAq LworKwl1bnNpZ25lZCBpbnQgc3RhcnRfc2VjdDsJLyogc3RhcnRpbmcgc2VjdG9yIGNvdW50aW5n IGZyb20gMCAqLworKwl1bnNpZ25lZCBpbnQgbnJfc2VjdHM7CQkvKiBuciBvZiBzZWN0b3JzIGlu IHBhcnRpdGlvbiAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistLS0gbWFjLWZkaXNr LTAuMS5vcmlnL01ha2VmaWxlCisrKysgbWFjLWZkaXNrLTAuMS9NYWtlZmlsZQorQEAgLTUsNyAr NSwxNCBAQAorIGZkaXNrOiBmZGlzay5vIGZkaXNrbGFiZWwubworIAorIGNsZWFuOgorLQlybSAt ZiAqLm8gcGRpc2sgZmRpc2sKKysJcm0gLWYgKi5vIHBkaXNrIGZkaXNrIG1hYy1mZGlzayBwbWFj LWZkaXNrCiArCi0rLlNIIE9QVElPTlMKLSsuVFAKLSsuQiBcLXYKLStQcmludCB2ZXJzaW9uIG51 bWJlciBvZgotKy5CIHBtYWMtZmRpc2sKLStwcm9ncmFtIGFuZCBleGl0LgotKy5UUAotKy5CIFwt bAotK0xpc3QgdGhlIHBhcnRpdGlvbiB0YWJsZXMgZm9yCi0rLkJSIC9kZXYvaGRbYS1kXSAsCi0r LkJSIC9kZXYvc2RbYS1oXSAsCi0rYW5kIHRoZW4gZXhpdC4KLSsuVFAKLSsuQiBcLXUKLStXaGVu IGxpc3RpbmcgcGFydGl0aW9uIHRhYmxlcywgZ2l2ZSBzaXplcyBpbiBzZWN0b3JzIGluc3RlYWQK LStvZiBjeWxpbmRlcnMuCi0rLlRQCi0rLkJJICJcLXMgIiBwYXJ0aXRpb24KLStUaGUKLSsuSSBz aXplCi0rb2YgdGhlIHBhcnRpdGlvbiAoaW4gYmxvY2tzKSBpcyBwcmludGVkIG9uIHRoZSBzdGFu ZGFyZCBvdXRwdXQuCi0rLlNIIEJVR1MKLStUaGVyZSBhcmUgc2V2ZXJhbCAqZmRpc2sgcHJvZ3Jh bXMgYXJvdW5kLgotK0VhY2ggaGFzIGl0cyBwcm9ibGVtcyBhbmQgc3RyZW5ndGhzLgotK1RyeSB0 aGVtIGluIHRoZSBvcmRlcgotKy5CUiBjZmRpc2sgLAotKy5CUiBwbWFjLWZkaXNrICwKLSsuQlIg c2ZkaXNrIC4KLSsoSW5kZWVkLAotKy5CIGNmZGlzawotK2lzIGEgYmVhdXRpZnVsIHByb2dyYW0g dGhhdCBoYXMgc3RyaWN0IHJlcXVpcmVtZW50cyBvbgotK3RoZSBwYXJ0aXRpb24gdGFibGVzIGl0 IGFjY2VwdHMsIGFuZCBwcm9kdWNlcyBoaWdoIHF1YWxpdHkgcGFydGl0aW9uCi0rdGFibGVzLiBV c2UgaXQgaWYgeW91IGNhbi4gCi0rLkIgcG1hYy1mZGlzawotK2lzIGEgYnVnZ3kgcHJvZ3JhbSB0 aGF0IGRvZXMgZnV6enkgdGhpbmdzIC0gdXN1YWxseSBpdCBoYXBwZW5zIHRvCi0rcHJvZHVjZSBy ZWFzb25hYmxlIHJlc3VsdHMuIEl0cyBzaW5nbGUgYWR2YW50YWdlIGlzIHRoYXQgaXQgaGFzCi0r c29tZSBzdXBwb3J0IGZvciBCU0QgZGlzayBsYWJlbHMgYW5kIG90aGVyIG5vbi1ET1MgcGFydGl0 aW9uIHRhYmxlcy4KLStBdm9pZCBpdCBpZiB5b3UgY2FuLgotKy5CIHNmZGlzawotK2lzIGZvciBo YWNrZXJzIG9ubHkgLSB0aGUgdXNlciBpbnRlcmZhY2UgaXMgdGVycmlibGUsIGJ1dCBpdCBpcwot K21vcmUgY29ycmVjdCB0aGFuIHBtYWMtZmRpc2sgYW5kIG1vcmUgcG93ZXJmdWwgdGhhbiBib3Ro IHBtYWMtZmRpc2sgYW5kIGNmZGlzay4KLStNb3Jlb3ZlciwgaXQgY2FuIGJlIHVzZWQgbm9uaW50 ZXJhY3RpdmVseS4pCi0rLlBQCi0rVGhlIElSSVgvU0dJIHR5cGUgZGlza2xhYmVsIGlzIGN1cnJl bnRseSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwuCi0rTW9yZW92ZXIsIElSSVgvU0dJIGhl YWRlciBkaXJlY3RvcmllcyBhcmUgbm90IGZ1bGx5IHN1cHBvcnRlZCB5ZXQuCi0rLlBQCi0rVGhl IG9wdGlvbiBgZHVtcCBwYXJ0aXRpb24gdGFibGUgdG8gZmlsZScgaXMgbWlzc2luZy4KLSsuXCIg LlNIIEFVVEhPUlMKLSsuXCIgQS4gVi4gTGUgQmxhbmMgKExlQmxhbmNAbWNjLmFjLnVrKQotKy5c IiBCZXJuaGFyZCBGYXN0ZW5yYXRoIChmYXN0ZW5AaW5mb3JtYXRpay51bmktYm9ubi5kZSkKLSsu XCIgSmFrdWIgSmVsaW5layAoampAc3Vuc2l0ZS5tZmYuY3VuaS5jeikKLSsuXCIgQW5kcmVhcyBO ZXVwZXIgKEFOZXVwZXJAR1VVRy5kZSkKLSsuXCIgYW5kIG1hbnkgb3RoZXJzLgorK2luc3RhbGw6 IHBkaXNrIGZkaXNrCisrCS1ybSAtZiBwbWFjLWZkaXNrIG1hYy1mZGlzaworKwlsbiBwZGlzayBt YWMtZmRpc2sKKysJbG4gZmRpc2sgcG1hYy1mZGlzaworKwlpbnN0YWxsIC1vIHJvb3QgLWcgcm9v dCAtbSAwNzU1IG1hYy1mZGlzayAke0RFU1RESVJ9L3NiaW4KKysJaW5zdGFsbCAtbyByb290IC1n IHJvb3QgLW0gMDc1NSBwbWFjLWZkaXNrICR7REVTVERJUn0vc2JpbgorIAorIGRpc3RyaWJ1dGlv bjoKKyAJY2QgLi47IHRhciBjdmYgcGRpc2suc3JjLnRhci5gZGF0ZSArJXklbSVkYCAtLWZpbGVz LWZyb20gcGRpc2svbGlzdC5zcmMKKy0tLSBtYWMtZmRpc2stMC4xLm9yaWcvZmRpc2tsYWJlbC5j CisrKysgbWFjLWZkaXNrLTAuMS9mZGlza2xhYmVsLmMKK0BAIC0zOCw3ICszOCw2IEBACisgI2lu Y2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIu aD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUg PGN0eXBlLmg+CisgI2luY2x1ZGUgPHNldGptcC5oPgorQEAgLTQ3LDkgKzQ2LDcgQEAKKyAjaW5j bHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorIAorLSNpbmNsdWRl IDxsaW51eC9nZW5oZC5oPgorLSNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPgorLSNpbmNsdWRlIDxs aW51eC9mcy5oPgorKyNpbmNsdWRlICJrZXJuZWwtZGVmcy5oIgorIAorICNpbmNsdWRlICJmZGlz ay5oIgorICNkZWZpbmUgREtUWVBFTkFNRVMKK0BAIC0zNzcsNyArMzc0LDcgQEAKKyAgICAgewor ICNpZiBkZWZpbmVkIChpMzg2KQorICAgICAgIGlmIChic2RfaW5pdGxhYmVsIChic2RfcGFydCwg JmJzZF9kbGFiZWwsIGJzZF9wYXJ0X2luZGV4KSA9PSAxKQorLSNlbGlmIGRlZmluZWQgKF9fYWxw aGFfXykgfHwgZGVmaW5lZCAoX19wb3dlcnBjX18pCisrI2VsaWYgZGVmaW5lZCAoX19hbHBoYV9f KSB8fCBkZWZpbmVkIChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZCAoX19tYzY4MDAwX18pCisgICAg ICAgaWYgKGJzZF9pbml0bGFiZWwgKE5VTEwsICZic2RfZGxhYmVsLCAwKSA9PSAxKQorICNlbmRp ZgorICAgICAgIHsKK0BAIC01MTUsNyArNTEyLDcgQEAKKyAgIGFscGhhX2Jvb3RibG9ja19jaGVj a3N1bSAoYnVmZmVyKTsKKyAjZW5kaWYKKyAKKy0gIGlmIChsbHNlZWsgKGZkLCBzZWN0b3IgKiBT RUNUT1JfU0laRSwgU0VFS19TRVQpID09IC0xKQorKyAgaWYgKGxzZWVrNjQgKGZkLCBzZWN0b3Ig KiBTRUNUT1JfU0laRSwgU0VFS19TRVQpID09IC0xKQorICAgICBmYXRhbCAodW5hYmxlX3RvX3Nl ZWspOworICAgaWYgKEJTRF9CQlNJWkUgIT0gd3JpdGUgKGZkLCBidWZmZXIsIEJTRF9CQlNJWkUp KQorICAgICBmYXRhbCAodW5hYmxlX3RvX3dyaXRlKTsKK0BAIC02NzksNyArNjc2LDcgQEAKKyAg IHNlY3RvciA9IDA7CisgI2VuZGlmCisgCistICBpZiAobGxzZWVrIChmZCwgc2VjdG9yICogU0VD VE9SX1NJWkUsIFNFRUtfU0VUKSA9PSAtMSkKKysgIGlmIChsc2VlazY0IChmZCwgc2VjdG9yICog U0VDVE9SX1NJWkUsIFNFRUtfU0VUKSA9PSAtMSkKKyAgICAgZmF0YWwgKHVuYWJsZV90b19zZWVr KTsKKyAgIGlmIChCU0RfQkJTSVpFICE9IHJlYWQgKGZkLCBidWZmZXIsIEJTRF9CQlNJWkUpKQor ICAgICBmYXRhbCAodW5hYmxlX3RvX3JlYWQpOworQEAgLTcyNCwxMiArNzIxLDEyIEBACisgCisg I2lmIGRlZmluZWQgKF9fYWxwaGFfXykgJiYgQlNEX0xBQkVMU0VDVE9SID09IDAKKyAgIGFscGhh X2Jvb3RibG9ja19jaGVja3N1bSAoYnVmZmVyKTsKKy0gIGlmIChsbHNlZWsgKGZkLCAwLCBTRUVL X1NFVCkgPT0gLTEpCisrICBpZiAobHNlZWs2NCAoZmQsIDAsIFNFRUtfU0VUKSA9PSAtMSkKKyAg ICAgZmF0YWwgKHVuYWJsZV90b19zZWVrKTsKKyAgIGlmIChCU0RfQkJTSVpFICE9IHdyaXRlIChm ZCwgYnVmZmVyLCBCU0RfQkJTSVpFKSkKKyAgICAgZmF0YWwgKHVuYWJsZV90b193cml0ZSk7Cisg I2Vsc2UKKy0gIGlmIChsbHNlZWsgKGZkLCBzZWN0b3IgKiBTRUNUT1JfU0laRSArIEJTRF9MQUJF TE9GRlNFVCwgU0VFS19TRVQpID09IC0xKQorKyAgaWYgKGxzZWVrNjQgKGZkLCBzZWN0b3IgKiBT RUNUT1JfU0laRSArIEJTRF9MQUJFTE9GRlNFVCwgU0VFS19TRVQpID09IC0xKQorICAgICBmYXRh bCAodW5hYmxlX3RvX3NlZWspOworICAgaWYgKHNpemVvZiAoc3RydWN0IGRpc2tsYWJlbCkgIT0g d3JpdGUgKGZkLCBkLCBzaXplb2YgKHN0cnVjdCBkaXNrbGFiZWwpKSkKKyAgICAgZmF0YWwgKHVu YWJsZV90b193cml0ZSk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzLzAy LW1hYy1mZGlzay0wLjEtaGVhZGVycy5wYXRjaCBiL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMv bWFjLWZkaXNrLTAuMS1oZWFkZXJzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBm cm9tIHNyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvMDItbWFjLWZkaXNrLTAuMS1oZWFkZXJzLnBh dGNoCnJlbmFtZSB0byBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay0wLjEtaGVh ZGVycy5wYXRjaAppbmRleCAwNzlkYjQ1MGMxZS4uMmFjN2VhZjQxNTMgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvMDItbWFjLWZkaXNrLTAuMS1oZWFkZXJzLnBhdGNoCisr KyBiL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvbWFjLWZkaXNrLTAuMS1oZWFkZXJzLnBhdGNo CkBAIC0xLDcgKzEsNyBAQAogSW5jbHVkZSBhIGxvdCBtb3JlIGhlYWRlcnMgYW5kIHJlbW92ZSBh IGJ1bmNoIG9mIGJyYWluZGVhZCBfX2xpbnV4X18gY2hlY2tzCiAKLS0tLSBkdW1wLmMKLSsrKyBk dW1wLmMKKy0tLSBhL2R1bXAuYworKysrIGIvZHVtcC5jCiBAQCAtMzAsMTAgKzMwLDggQEAKICAg Ki8KICAKQEAgLTEzLDggKzEzLDggQEAgSW5jbHVkZSBhIGxvdCBtb3JlIGhlYWRlcnMgYW5kIHJl bW92ZSBhIGJ1bmNoIG9mIGJyYWluZGVhZCBfX2xpbnV4X18gY2hlY2tzCiAgI2luY2x1ZGUgPHN0 cmluZy5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxmY250bC5oPgotLS0tIGVy cm9ycy5jCi0rKysgZXJyb3JzLmMKKy0tLSBhL2Vycm9ycy5jCisrKysgYi9lcnJvcnMuYwogQEAg LTI2LDkgKzI2LDcgQEAKICAgKi8KICAKQEAgLTQ3LDggKzQ3LDggQEAgSW5jbHVkZSBhIGxvdCBt b3JlIGhlYWRlcnMgYW5kIHJlbW92ZSBhIGJ1bmNoIG9mIGJyYWluZGVhZCBfX2xpbnV4X18gY2hl Y2tzCiAgICAgIH0gZWxzZSB7CiAgCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKICAgICAgfQotLS0t IGZkaXNrLmMKLSsrKyBmZGlzay5jCistLS0gYS9mZGlzay5jCisrKysgYi9mZGlzay5jCiBAQCAt NjIsNiArNjIsNyBAQAogICNpbmNsdWRlIDx1bmlzdGQuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4K QEAgLTU3LDggKzU3LDggQEAgSW5jbHVkZSBhIGxvdCBtb3JlIGhlYWRlcnMgYW5kIHJlbW92ZSBh IGJ1bmNoIG9mIGJyYWluZGVhZCBfX2xpbnV4X18gY2hlY2tzCiAgI2luY2x1ZGUgPGZjbnRsLmg+ CiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgPHNldGptcC5oPgotLS0tIGZkaXNrbGFi ZWwuYwotKysrIGZkaXNrbGFiZWwuYworLS0tIGEvZmRpc2tsYWJlbC5jCisrKysgYi9mZGlza2xh YmVsLmMKIEBAIC0zOCw2ICszOCw3IEBACiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgogICNpbmNsdWRl IDxzdGRpby5oPgpAQCAtNjcsOCArNjcsOCBAQCBJbmNsdWRlIGEgbG90IG1vcmUgaGVhZGVycyBh bmQgcmVtb3ZlIGEgYnVuY2ggb2YgYnJhaW5kZWFkIF9fbGludXhfXyBjaGVja3MKICAjaW5jbHVk ZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8Y3R5cGUuaD4KICAjaW5jbHVkZSA8c2V0am1wLmg+Ci0t LS0gaW8uYwotKysrIGlvLmMKKy0tLSBhL2lvLmMKKysrKyBiL2lvLmMKIEBAIC0yNiw5ICsyNiw5 IEBACiAgICovCiAgCkBAIC04MCw4ICs4MCw4IEBAIEluY2x1ZGUgYSBsb3QgbW9yZSBoZWFkZXJz IGFuZCByZW1vdmUgYSBidW5jaCBvZiBicmFpbmRlYWQgX19saW51eF9fIGNoZWNrcwogICNpbmNs dWRlIDxTQ1NJLmg+CiAgI2Vsc2UKICAjaWZkZWYgX19HTElCQ19fCi0tLS0gcGFydGl0aW9uX21h cC5jCi0rKysgcGFydGl0aW9uX21hcC5jCistLS0gYS9wYXJ0aXRpb25fbWFwLmMKKysrKyBiL3Bh cnRpdGlvbl9tYXAuYwogQEAgLTI2LDEwICsyNiw5IEBACiAgICovCiAgCkBAIC05NCw4ICs5NCw4 IEBAIEluY2x1ZGUgYSBsb3QgbW9yZSBoZWFkZXJzIGFuZCByZW1vdmUgYSBidW5jaCBvZiBicmFp bmRlYWQgX19saW51eF9fIGNoZWNrcwogICNpbmNsdWRlIDxlcnJuby5oPgogIAogICNpbmNsdWRl IDxmY250bC5oPgotLS0tIHBkaXNrLmMKLSsrKyBwZGlzay5jCistLS0gYS9wZGlzay5jCisrKysg Yi9wZGlzay5jCiBAQCAtMzIsMTAgKzMyLDExIEBACiAgI2luY2x1ZGUgPGdldG9wdC5oPgogICNp bmNsdWRlIDxzdGRkZWYuaD4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMv bWFjLWZkaXNrLTAuMS1tb3JlLWFyY2hlcy5wYXRjaCBiL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNo ZXMvbWFjLWZkaXNrLTAuMS1tb3JlLWFyY2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMDg2MzYyODQ0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay0wLjEtbW9yZS1hcmNoZXMucGF0Y2gKQEAgLTAs MCArMSw2NyBAQAorLS0tIG1hYy1mZGlzay0wLjEub3JpZy9mZGlza2xhYmVsLmgub2xkCTE5OTct MDEtMTQgMjA6MzQ6MTMuMDAwMDAwMDAwICswMDAwCisrKysgbWFjLWZkaXNrLTAuMS5vcmlnL2Zk aXNrbGFiZWwuaAkyMDE4LTA2LTAxIDA2OjEzOjA5LjA2NTcyMjExMiArMDAwMAorQEAgLTM1LDI3 ICszNSwyMyBAQAorICNkZWZpbmUJQlNEX01BWFBBUlRJVElPTlMgOAorICNkZWZpbmUgQlNEX0xJ TlVYX0JPT1RESVIgIi91c3IvdWNiL21kZWMiCisgCistI2lmIGRlZmluZWQgKGkzODYpCisrLyog VGhhbmtzLCB1dGlsLWxpbnV4ISAqLworKyNpZiBkZWZpbmVkIChpMzg2KSB8fCBkZWZpbmVkIChf X3NwYXJjX18pIHx8IGRlZmluZWQgKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fbWlwc19fKSB8fCBk ZWZpbmVkIChfX3MzOTBfXykgfHwgZGVmaW5lZCAoX19zaF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pCisgI2RlZmluZSBCU0RfTEFCRUxTRUNUT1IgICAxCisgI2RlZmluZSBCU0RfTEFCRUxPRkZT RVQgICAwCistI2RlZmluZQlCU0RfQkJTSVpFICAgICAgICA4MTkyCQkvKiBzaXplIG9mIGJvb3Qg YXJlYSwgd2l0aCBsYWJlbCAqLworLSNkZWZpbmUJQlNEX1NCU0laRSAgICAgICAgODE5MgkJLyog bWF4IHNpemUgb2YgZnMgc3VwZXJibG9jayAqLworLSNlbGlmIGRlZmluZWQgKF9fYWxwaGFfXykK Ky0jZXJyb3IgTEFCRUxTRUNUT1IsIExBQkVMT0ZGU0VULCBCQlNJWkUgJiBTQlNJWkUgYXJlIHVu ZGVmaW5lZCBmb3IgX19hbHBoYV9fCistI2RlZmluZSBCU0RfTEFCRUxTRUNUT1IgICAwCistI2Rl ZmluZSBCU0RfTEFCRUxPRkZTRVQgICAwCistI2RlZmluZQlCU0RfQkJTSVpFICAgICAgICAwCist I2RlZmluZQlCU0RfU0JTSVpFICAgICAgICAwCistI2VsaWYgZGVmaW5lZCAoX19wb3dlcnBjX18p CistLyogTEFCRUxTRUNUT1IsIExBQkVMT0ZGU0VULCBCQlNJWkUgJiBTQlNJWkUgYXJlIHVuZGVm aW5lZCBmb3IgX19wb3dlcnBjX18gKi8KKysjZWxpZiBkZWZpbmVkIChfX2FscGhhX18pIHx8IGRl ZmluZWQgKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkIChfX2lhNjRfXykgfHwgZGVmaW5lZCAoX19o cHBhX18pCisgI2RlZmluZSBCU0RfTEFCRUxTRUNUT1IgICAwCisrI2RlZmluZSBCU0RfTEFCRUxP RkZTRVQgICA2NAorKyNlbGlmIGRlZmluZWQgKF9fczM5MF9fKSB8fCBkZWZpbmVkIChfX3MzOTB4 X18pCisrI2RlZmluZSBCU0RfTEFCRUxTRUNUT1IgICAxCisgI2RlZmluZSBCU0RfTEFCRUxPRkZT RVQgICAwCistI2RlZmluZQlCU0RfQkJTSVpFICAgICAgICAwCistI2RlZmluZQlCU0RfU0JTSVpF ICAgICAgICAwCisgI2Vsc2UKKyAjZXJyb3IgdW5rbm93biBhcmNoaXRlY3R1cmUKKyAjZW5kaWYK KyAKKysjZGVmaW5lCUJTRF9CQlNJWkUgICAgICAgIDgxOTIJCS8qIHNpemUgb2YgYm9vdCBhcmVh LCB3aXRoIGxhYmVsICovCisrI2RlZmluZQlCU0RfU0JTSVpFICAgICAgICA4MTkyCQkvKiBtYXgg c2l6ZSBvZiBmcyBzdXBlcmJsb2NrICovCisrCisgc3RydWN0IGRpc2tsYWJlbCB7CisgCXVfbG9u ZwlkX21hZ2ljOwkJLyogdGhlIG1hZ2ljIG51bWJlciAqLworIAlzaG9ydAlkX3R5cGU7CQkJLyog ZHJpdmUgdHlwZSAqLworLS0tIG1hYy1mZGlzay0wLjEub3JpZy9mZGlza2xhYmVsLmMub2xkCTIw MTgtMDYtMDEgMDY6MTk6MzUuMTEzMzQ3NzE0ICswMDAwCisrKysgbWFjLWZkaXNrLTAuMS5vcmln L2ZkaXNrbGFiZWwuYwkyMDE4LTA2LTAxIDA2OjIwOjM2LjczNDU3NjAyNCArMDAwMAorQEAgLTgy LDEwICs4Miw4IEBACisKKyBzdGF0aWMgc3RydWN0IGRpc2tsYWJlbCBic2RfZGxhYmVsOworIHN0 YXRpYyBjaGFyIGJ1ZmZlcltCU0RfQkJTSVpFXTsKKy0jaWYgZGVmaW5lZCAoaTM4NikKKyBzdGF0 aWMgc3RydWN0IHBhcnRpdGlvbiAqYnNkX3BhcnQ7Cisgc3RhdGljIGludCBic2RfcGFydF9pbmRl eDsKKy0jZW5kaWYKKworIHZvaWQKKyBibWVudSAodm9pZCkKK0BAIC0zNzMsMTAgKzM3MSwxMSBA QAorICAgd2hpbGUgKDEpCisgICAgIGlmICgoYyA9IHRvbG93ZXIgKHJlYWRfY2hhciAoIkRvIHlv dSB3YW50IHRvIGNyZWF0ZSBhIGRpc2tsYWJlbD8gKHkvbikgIikpKSA9PSAneScpCisgICAgIHsK Ky0jaWYgZGVmaW5lZCAoaTM4NikKKy0gICAgICBpZiAoYnNkX2luaXRsYWJlbCAoYnNkX3BhcnQs ICZic2RfZGxhYmVsLCBic2RfcGFydF9pbmRleCkgPT0gMSkKKy0jZWxpZiBkZWZpbmVkIChfX2Fs cGhhX18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkIChfX21jNjgwMDBfXykK KysjaWYgZGVmaW5lZCAoX19hbHBoYV9fKSB8fCBkZWZpbmVkIChfX3Bvd2VycGNfXykgfHwgZGVm aW5lZCAoX19ocHBhX18pIHx8IFwKKysgICAgZGVmaW5lZCAoX19zMzkwX18pIHx8IGRlZmluZWQg KF9fczM5MHhfXykgfHwgZGVmaW5lZChfX21jNjgwMDBfXykKKyAgICAgICBpZiAoYnNkX2luaXRs YWJlbCAoTlVMTCwgJmJzZF9kbGFiZWwsIDApID09IDEpCisrI2Vsc2UKKysgICAgICBpZiAoYnNk X2luaXRsYWJlbCAoYnNkX3BhcnQsICZic2RfZGxhYmVsLCBic2RfcGFydF9pbmRleCkgPT0gMSkK KyAjZW5kaWYKKyAgICAgICB7CisgICAgICAgICBic2RfcHJpbnRfZGlza2xhYmVsICgxKTsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvMDMtbWFjLWZkaXNrLTAuMV9wMTYt cHBjNjQucGF0Y2ggYi9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay0wLjFfcDE2 LXBwYzY0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIHNyY3BrZ3MvbWFj LWZkaXNrL3BhdGNoZXMvMDMtbWFjLWZkaXNrLTAuMV9wMTYtcHBjNjQucGF0Y2gKcmVuYW1lIHRv IHNyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvbWFjLWZkaXNrLTAuMV9wMTYtcHBjNjQucGF0Y2gK aW5kZXggYTdhYzcyNGFmMzQuLjYxNmFkYzViODExIDEwMDY0NAotLS0gYS9zcmNwa2dzL21hYy1m ZGlzay9wYXRjaGVzLzAzLW1hYy1mZGlzay0wLjFfcDE2LXBwYzY0LnBhdGNoCisrKyBiL3NyY3Br Z3MvbWFjLWZkaXNrL3BhdGNoZXMvbWFjLWZkaXNrLTAuMV9wMTYtcHBjNjQucGF0Y2gKQEAgLTEs NSArMSw1IEBACi0tLS0gYml0ZmllbGQuYwotKysrIGJpdGZpZWxkLmMKKy0tLSBhL2JpdGZpZWxk LmMKKysrKyBiL2JpdGZpZWxkLmMKIEBAIC02NywxMyArNjcsMTIgQEAKICAvLwogIC8vIFJvdXRp bmVzCkBAIC0zNCw4ICszNCw4IEBACiAgCiAgICAgIC8vIGNvbXB1dGUgc2hpZnQgJiBtYXNrCiAg ICAgIC8vIHJldHVybiB0aGUgY29ycmVjdCBudW1iZXIgb2YgYml0cyAoc2hpZnRlZCB0byBsb3cg ZW5kKQotLS0tIGJpdGZpZWxkLmgKLSsrKyBiaXRmaWVsZC5oCistLS0gYS9iaXRmaWVsZC5oCisr KysgYi9iaXRmaWVsZC5oCiBAQCAtNjMsNSArNjMsNSBAQAogIC8vCiAgLy8gRm9yd2FyZCBkZWNs YXJhdGlvbnMKQEAgLTQ0LDggKzQ0LDggQEAKIC11bnNpZ25lZCBsb25nIGJpdGZpZWxkX2dldCh1 bnNpZ25lZCBsb25nIGJmLCBpbnQgYmFzZSwgaW50IGxlbmd0aCk7CiArdW5zaWduZWQgaW50IGJp dGZpZWxkX3NldCh1bnNpZ25lZCBpbnQgKmJmLCBpbnQgYmFzZSwgaW50IGxlbmd0aCwgdW5zaWdu ZWQgaW50IHZhbHVlKTsKICt1bnNpZ25lZCBpbnQgYml0ZmllbGRfZ2V0KHVuc2lnbmVkIGludCBi ZiwgaW50IGJhc2UsIGludCBsZW5ndGgpOwotLS0tIGR1bXAuYwotKysrIGR1bXAuYworLS0tIGEv ZHVtcC5jCisrKysgYi9kdW1wLmMKIEBAIC02MSwxNiArNjEsMTYgQEAKICAvLyBHbG9iYWwgQ29u c3RhbnRzCiAgLy8KQEAgLTE1NSw4ICsxNTUsOCBAQAogIAogIAlicCA9IChCWkIgKikgKHAtPmRw bWVfYnpiKTsKICAJaiA9IC0xOwotLS0tIGVycm9ycy5jCi0rKysgZXJyb3JzLmMKKy0tLSBhL2Vy cm9ycy5jCisrKysgYi9lcnJvcnMuYwogQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSA8c3Ry aW5nLmg+CiAgI2luY2x1ZGUgPHN0ZGFyZy5oPgpAQCAtMTgzLDggKzE4Myw4IEBACiAgCWZwcmlu dGYoc3RkZXJyLCAiICAoJXMpXG4iLCBzdHJlcnJvcih2YWx1ZSkpOwogICAgICB9IGVsc2Ugewog IAlmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0tLS0gZmRpc2suYwotKysrIGZkaXNrLmMKKy0tLSBh L2ZkaXNrLmMKKysrKyBiL2ZkaXNrLmMKIEBAIC03MSwxMiArNzEsNjUgQEAKICAKICAjaW5jbHVk ZSA8c3lzL2lvY3RsLmg+CkBAIC0yNjIsOCArMjYyLDggQEAKICB7CiAgCWlmIChhcmdjID4gMykK ICAJCWZhdGFsKHVzYWdlKTsKLS0tLSBmZGlza2xhYmVsLmMKLSsrKyBmZGlza2xhYmVsLmMKKy0t LSBhL2ZkaXNrbGFiZWwuYworKysrIGIvZmRpc2tsYWJlbC5jCiBAQCAtMzUsNiArMzUsNyBAQAog ICAgIFNVQ0ggREFNQUdFLgogICovCkBAIC0zNzcsOCArMzc3LDggQEAKICAjZW5kaWYKICAgICAg ICBpZiAocHAtPnBfc2l6ZSAlIGxwLT5kX3NlY3BlcmN5bCkKICAJcHV0YygnKicsIGYpOwotLS0t IGlvLmMKLSsrKyBpby5jCistLS0gYS9pby5jCisrKysgYi9pby5jCiBAQCAtMzMsOCArMzMsMTAg QEAKICAjZWxzZQogICNpZmRlZiBfX0dMSUJDX18KQEAgLTM5OSw4ICszOTksOCBAQAogIAlyZXR1 cm4gMDsKICAgICAgfQogICNpZm5kZWYgX19saW51eF9fCi0tLS0gcGFydGl0aW9uX21hcC5jCi0r KysgcGFydGl0aW9uX21hcC5jCistLS0gYS9wYXJ0aXRpb25fbWFwLmMKKysrKyBiL3BhcnRpdGlv bl9tYXAuYwogQEAgLTEwNSw3ICsxMDUsNiBAQAogICAgICBpbnQgZmQ7CiAgICAgIHBhcnRpdGlv bl9tYXBfaGVhZGVyICogbWFwOwpAQCAtNDM1LDggKzQzNSw4IEBACiAgICAgIG1hcC0+bWVkaWFf c2l6ZSA9IG51bWJlcjsKICAKICAjaWZkZWYgX19saW51eF9fCi0tLS0gcGRpc2suYwotKysrIHBk aXNrLmMKKy0tLSBhL3BkaXNrLmMKKysrKyBiL3BkaXNrLmMKIEBAIC00MzcsNyArNDM3LDYgQEAK ICB7CiAgICAgIGxvbmcgYmFzZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNo ZXMvbWFjLWZkaXNrLTAuMV9wMTYtcHJvcGVyLWlubGluZS5wYXRjaCBiL3NyY3BrZ3MvbWFjLWZk aXNrL3BhdGNoZXMvbWFjLWZkaXNrLTAuMV9wMTYtcHJvcGVyLWlubGluZS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQzODI3ZmZjYjAKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay0wLjFfcDE2LXByb3Bl ci1pbmxpbmUucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorZGlmZiAtLWdpdCBhL2ZkaXNrLmMgYi9m ZGlzay5jDQoraW5kZXggZDc3NjE5Yi4uNTQwODc5YSAxMDA2NDQNCistLS0gYS9mZGlzay5jDQor KysrIGIvZmRpc2suYw0KK0BAIC0xOTIsMTMgKzE5MiwyMSBAQCBjaGFyIHJlYWRfY2hhcihjaGFy ICptZXNnKTsNCisgDQorIGptcF9idWYgbGlzdGluZ2J1ZjsNCisgDQorLWlubGluZSB1bnNpZ25l ZCBzaG9ydCBfX3N3YXAxNih1bnNpZ25lZCBzaG9ydCB4KSB7DQorK3N0YXRpYyBpbmxpbmUgdW5z aWduZWQgc2hvcnQgX19zd2FwMTYodW5zaWduZWQgc2hvcnQgeCkgew0KKyAJcmV0dXJuICgoKF9f dTE2KSh4KSAmIDB4RkYpIDw8IDgpIHwgKCgoX191MTYpKHgpICYgMHhGRjAwKSA+PiA4KTsNCisg fQ0KKy1pbmxpbmUgX191MzIgX19zd2FwMzIoX191MzIgeCkgew0KKytzdGF0aWMgaW5saW5lIF9f dTMyIF9fc3dhcDMyKF9fdTMyIHgpIHsNCisgCXJldHVybiAoKChfX3UzMikoeCkgJiAweEZGKSA8 PCAyNCkgfCAoKChfX3UzMikoeCkgJiAweEZGMDApIDw8IDgpIHwgKCgoX191MzIpKHgpICYgMHhG RjAwMDApID4+IDgpIHwgKCgoX191MzIpKHgpICYgMHhGRjAwMDAwMCkgPj4gMjQpOw0KKyB9DQor IA0KKysjaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFODQorKyNkZWZpbmUgU1dBUDE2KHgpIF9f c3dhcDE2KHgpDQorKyNkZWZpbmUgU1dBUDMyKHgpIF9fc3dhcDMyKHgpDQorKyNlbHNlDQorKyNk ZWZpbmUgU1dBUDE2KHgpICgoX191MTYpeCkNCisrI2RlZmluZSBTV0FQMzIoeCkgKChfX3UzMil4 KQ0KKysjZW5kaWYNCisrDQorIHZvaWQgZmF0YWwoZW51bSBmYWlsdXJlIHdoeSkNCisgew0KKyAJ Y2hhcgllcnJvcltMSU5FX0xFTkdUSF0sDQorQEAgLTEyNDIsNyArMTI1MCw3IEBAIHZvaWQgbmV3 X3BhcnRpdGlvbih2b2lkKQ0KKyAJCQllbHNlDQorIAkJCQlwcmludGYoIkludmFsaWQgcGFydGl0 aW9uIG51bWJlciAiDQorIAkJCQkgICAgICAgImZvciB0eXBlIGAlYydcbiIsIGMpOw0KKy0JCQ0K KysNCisgCX0NCisgfQ0KKyANCitAQCAtMTMzOSw3ICsxMzQ3LDcgQEAgdm9pZCBtb3ZlX2JlZ2lu KGludCBpKQ0KKyAJfQ0KKyAJZmlyc3QgPSByb3VuZGVkKGNhbGN1bGF0ZShwLT5oZWFkLCBwLT5z ZWN0b3IsIHAtPmN5bCksIFNXQVAzMihwLT5zdGFydF9zZWN0KSArDQorIAkJb2Zmc2V0c1tpXSk7 DQorLQluZXcgPSByZWFkX2ludChmaXJzdCwgZmlyc3QsIA0KKysJbmV3ID0gcmVhZF9pbnQoZmly c3QsIGZpcnN0LA0KKyAJCSAgICAgICBTV0FQMzIocC0+c3RhcnRfc2VjdCkgKyBTV0FQMzIocC0+ bnJfc2VjdHMpICsgb2Zmc2V0c1tpXSAtIDEsDQorIAkJICAgICAgIGxvd2VyLCAiTmV3IGJlZ2lu bmluZyBvZiBkYXRhIikgLSBvZmZzZXRzW2ldOw0KKyANCitkaWZmIC0tZ2l0IGEvZmRpc2suaCBi L2ZkaXNrLmgNCitpbmRleCAyYjZkZGM4Li45ZDNhYjI1IDEwMDY0NA0KKy0tLSBhL2ZkaXNrLmgN CisrKysgYi9mZGlzay5oDQorQEAgLTEyLDE0ICsxMiw2IEBAIHR5cGVkZWYgbG9uZyBsb25nIGV4 dDJfbG9mZl90Ow0KKyB0eXBlZGVmIGxvbmcgICAgICBleHQyX2xvZmZfdDsNCisgI2VuZGlmDQor IA0KKy0jaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFODQorLSNkZWZpbmUgU1dBUDE2KHgpIF9f c3dhcDE2KHgpDQorLSNkZWZpbmUgU1dBUDMyKHgpIF9fc3dhcDMyKHgpDQorLSNlbHNlDQorLSNk ZWZpbmUgU1dBUDE2KHgpICgoX191MTYpeCkNCistI2RlZmluZSBTV0FQMzIoeCkgKChfX3UzMil4 KQ0KKy0jZW5kaWYNCistDQorIGVudW0gZmFpbHVyZSB7dXNhZ2UsIHVuYWJsZV90b19vcGVuLCB1 bmFibGVfdG9fcmVhZCwgdW5hYmxlX3RvX3NlZWssDQorIAl1bmFibGVfdG9fd3JpdGUsIG91dF9v Zl9tZW1vcnl9Ow0KKyANCmRpZmYgLS1naXQgYS9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzLzA0 LW1hYy1mZGlzay1hbWQ2NC5wYXRjaCBiL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvbWFjLWZk aXNrLWFtZDY0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIHNyY3BrZ3Mv bWFjLWZkaXNrL3BhdGNoZXMvMDQtbWFjLWZkaXNrLWFtZDY0LnBhdGNoCnJlbmFtZSB0byBzcmNw a2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay1hbWQ2NC5wYXRjaAppbmRleCBjNDhiMTNk MTliNC4uMjM2YjAzN2Q5NzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMv MDQtbWFjLWZkaXNrLWFtZDY0LnBhdGNoCisrKyBiL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMv bWFjLWZkaXNrLWFtZDY0LnBhdGNoCkBAIC0xLDUgKzEsNSBAQAotLS0tIGZkaXNrbGFiZWwuYwot KysrIGZkaXNrbGFiZWwuYworLS0tIGEvZmRpc2tsYWJlbC5jCisrKysgYi9mZGlza2xhYmVsLmMK IEBAIC03Miw3ICs3Miw3IEBACiAgc3RhdGljIGludCBic2RfcmVhZGxhYmVsICAoc3RydWN0IHBh cnRpdGlvbiAqcCwgc3RydWN0IGRpc2tsYWJlbCAqZCk7CiAgc3RhdGljIGludCBic2Rfd3JpdGVs YWJlbCAoc3RydWN0IHBhcnRpdGlvbiAqcCwgc3RydWN0IGRpc2tsYWJlbCAqZCk7CkBAIC05LDE1 ICs5LDYgQEAKICBzdGF0aWMgaW50IGJzZF90cmFuc2xhdGVfZnN0eXBlIChpbnQgbGludXhfdHlw ZSk7CiAgc3RhdGljIHZvaWQgYnNkX2xpbmtfcGFydCAodm9pZCk7CiAgI2VuZGlmCi1AQCAtODIs NyArODIsNyBAQAotIAotIHN0YXRpYyBzdHJ1Y3QgZGlza2xhYmVsIGJzZF9kbGFiZWw7Ci0gc3Rh dGljIGNoYXIgYnVmZmVyW0JTRF9CQlNJWkVdOwotLSNpZiBkZWZpbmVkIChpMzg2KQotKyNpZiBk ZWZpbmVkIChpMzg2KSB8fCBkZWZpbmVkIChfX2FtZDY0KQotIHN0YXRpYyBzdHJ1Y3QgcGFydGl0 aW9uICpic2RfcGFydDsKLSBzdGF0aWMgaW50IGJzZF9wYXJ0X2luZGV4OwotICNlbmRpZgogQEAg LTk5LDEzICs5OSwxMyBAQAogIAkiICAgbiAgIGFkZCBhIG5ldyBCU0QgcGFydGl0aW9uXG4iCiAg CSIgICBwICAgcHJpbnQgQlNEIHBhcnRpdGlvbiB0YWJsZVxuIgpAQCAtODgsMTUgKzc5LDYgQEAK ICAgIGZwcmludGYgKHN0ZGVyciwgIiVzJWQgY29udGFpbnMgbm8gZGlza2xhYmVsLlxuIiwKICAJ ICAgZGlza19kZXZpY2UsIGJzZF9wYXJ0X2luZGV4KzEpOwogICNlbGlmIGRlZmluZWQgKF9fYWxw aGFfXykgfHwgZGVmaW5lZCAoX19wb3dlcnBjX18pCi1AQCAtMzc2LDcgKzM3Niw3IEBACi0gICB3 aGlsZSAoMSkKLSAgICAgaWYgKChjID0gdG9sb3dlciAocmVhZF9jaGFyICgiRG8geW91IHdhbnQg dG8gY3JlYXRlIGEgZGlza2xhYmVsPyAoeS9uKSAiKSkpID09ICd5JykKLSAgICAgewotLSNpZiBk ZWZpbmVkIChpMzg2KQotKyNpZiBkZWZpbmVkIChpMzg2KSB8fCBkZWZpbmVkKF9fYW1kNjQpCi0g ICAgICAgaWYgKGJzZF9pbml0bGFiZWwgKGJzZF9wYXJ0LCAmYnNkX2RsYWJlbCwgYnNkX3BhcnRf aW5kZXgpID09IDEpCi0gI2VsaWYgZGVmaW5lZCAoX19hbHBoYV9fKSB8fCBkZWZpbmVkIChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZCAoX19tYzY4MDAwX18pCi0gICAgICAgaWYgKGJzZF9pbml0bGFi ZWwgKE5VTEwsICZic2RfZGxhYmVsLCAwKSA9PSAxKQogQEAgLTUwNyw3ICs1MDcsNyBAQAogIAog ICAgYmNvcHkgKCZkbCwgZCwgc2l6ZW9mIChzdHJ1Y3QgZGlza2xhYmVsKSk7CkBAIC0xNjAsMTkg KzE0Miw4IEBACiAgc3RhdGljIGludAogIGJzZF90cmFuc2xhdGVfZnN0eXBlIChpbnQgbGludXhf dHlwZSkKICB7Ci0tLS0gZmRpc2tsYWJlbC5oCi0rKysgZmRpc2tsYWJlbC5oCi1AQCAtMzUsNyAr MzUsNyBAQAotICNkZWZpbmUJQlNEX01BWFBBUlRJVElPTlMgOAotICNkZWZpbmUgQlNEX0xJTlVY X0JPT1RESVIgIi91c3IvdWNiL21kZWMiCi0gCi0tI2lmIGRlZmluZWQgKGkzODYpCi0rI2lmIGRl ZmluZWQgKGkzODYpIHx8IGRlZmluZWQoX19hbWQ2NCkKLSAjZGVmaW5lIEJTRF9MQUJFTFNFQ1RP UiAgIDEKLSAjZGVmaW5lIEJTRF9MQUJFTE9GRlNFVCAgIDAKLSAjZGVmaW5lCUJTRF9CQlNJWkUg ICAgICAgIDgxOTIJCS8qIHNpemUgb2YgYm9vdCBhcmVhLCB3aXRoIGxhYmVsICovCi0tLS0ga2Vy bmVsLWRlZnMuaAotKysrIGtlcm5lbC1kZWZzLmgKKy0tLSBhL2tlcm5lbC1kZWZzLmgKKysrKyBi L2tlcm5lbC1kZWZzLmgKIEBAIC0xNSw4ICsxNSwxNCBAQAogIC8qIGZyb20gYXNtL2lvY3RsLmgg Ki8KICAjZGVmaW5lIF9JT0NfTlJCSVRTCTgKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWFjLWZkaXNr L3BhdGNoZXMvbWFjLWZkaXNrLWZkaXNrLWhlYWRlci1tdXNsLnBhdGNoIGIvc3JjcGtncy9tYWMt ZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stZmRpc2staGVhZGVyLW11c2wucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM4MGEyYjQ2ZDlmCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stZmRpc2staGVhZGVyLW11 c2wucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIGEvZmRpc2suYyAgIDIwMTYtMDEtMjQgMDM6 Mzk6NTEuNjQ3NzM0OTcwIC0wNjAwCisrKysgYi9mZGlzay5jICAgMjAxNi0wMS0yNiAwMDo1NTox OC40Nzg0MTU5MTMgLTA2MDAKK0BAIC03MCw2ICs3MCw3IEBACisgI2luY2x1ZGUgPGVuZGlhbi5o PgorIAorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisg CisgI2luY2x1ZGUgImtlcm5lbC1kZWZzLmgiCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWFjLWZk aXNrL3BhdGNoZXMvMDUtYmlnX3B0LnBhdGNoIGIvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9t YWMtZmRpc2stbGFyZ2UtZGlzay1zdXBwb3J0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJl bmFtZSBmcm9tIHNyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMvMDUtYmlnX3B0LnBhdGNoCnJlbmFt ZSB0byBzcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay1sYXJnZS1kaXNrLXN1cHBv cnQucGF0Y2gKaW5kZXggNDFlYmRhMjA2NTIuLmZlOWU3OGVjNzNkIDEwMDY0NAotLS0gYS9zcmNw a2dzL21hYy1mZGlzay9wYXRjaGVzLzA1LWJpZ19wdC5wYXRjaAorKysgYi9zcmNwa2dzL21hYy1m ZGlzay9wYXRjaGVzL21hYy1mZGlzay1sYXJnZS1kaXNrLXN1cHBvcnQucGF0Y2gKQEAgLTEsNSAr MSw1IEBACi0tLS0gcGFydGl0aW9uX21hcC5jCi0rKysgcGFydGl0aW9uX21hcC5jCistLS0gYS9w YXJ0aXRpb25fbWFwLmMKKysrKyBiL3BhcnRpdGlvbl9tYXAuYwogQEAgLTI1LDYgKzI1LDExIEBA CiAgICogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuIAogICAq LwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy8wMS1sYXJnZXJ0aGFuMmdi LnBhdGNoIGIvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stbGFyZ2VydGhhbjJn Yi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBzcmNwa2dzL21hYy1mZGlz ay9wYXRjaGVzLzAxLWxhcmdlcnRoYW4yZ2IucGF0Y2gKcmVuYW1lIHRvIHNyY3BrZ3MvbWFjLWZk aXNrL3BhdGNoZXMvbWFjLWZkaXNrLWxhcmdlcnRoYW4yZ2IucGF0Y2gKaW5kZXggM2ZlZjJiZGRl NTAuLmIzMzQ4N2NhOWU5IDEwMDY0NAotLS0gYS9zcmNwa2dzL21hYy1mZGlzay9wYXRjaGVzLzAx LWxhcmdlcnRoYW4yZ2IucGF0Y2gKKysrIGIvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMt ZmRpc2stbGFyZ2VydGhhbjJnYi5wYXRjaApAQCAtMSw1ICsxLDUgQEAKLS0tLSBmZGlzay5oCi0r KysgZmRpc2suaAorLS0tIGEvZmRpc2suaAorKysrIGIvZmRpc2suaAogQEAgLTIsNiArMiwxMSBA QAogICAgIGZkaXNrLmgKICAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hl cy9tYWMtZmRpc2stbm9uLWdsaWJjLXN1cHBvcnQucGF0Y2ggYi9zcmNwa2dzL21hYy1mZGlzay9w YXRjaGVzL21hYy1mZGlzay1ub24tZ2xpYmMtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWU1NDgyMmIyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL21hYy1mZGlzay9wYXRjaGVzL21hYy1mZGlzay1ub24tZ2xpYmMtc3VwcG9ydC5wYXRj aApAQCAtMCwwICsxLDE0IEBACistLS0gYS9pby5jICAgIDIwMTYtMDEtMjQgMDM6MTk6NTEuNjQ3 NzM0OTcwIC0wNjAwCisrKysgYi9pby5jICAgIDIwMTYtMDEtMjQgMDM6Mjc6MDguOTUyODI1MTkw IC0wNjAwCitAQCAtMzEsMTEgKzMxLDkgQEAKKyAjaWZuZGVmIF9fbGludXhfXworICNpbmNsdWRl IDxTQ1NJLmg+CisgI2Vsc2UKKy0jaWZkZWYgX19HTElCQ19fCisgI2luY2x1ZGUgPHN5cy90eXBl cy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNlbmRpZgorLSNlbmRpZgorICNpbmNsdWRl IDxsaW51eC91bmlzdGQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0cmlu Zy5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stc3Rk b3V0LWZsdXNoLnBhdGNoIGIvc3JjcGtncy9tYWMtZmRpc2svcGF0Y2hlcy9tYWMtZmRpc2stc3Rk b3V0LWZsdXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5h NGExYzY5YmExYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbWFjLWZkaXNrL3BhdGNoZXMv bWFjLWZkaXNrLXN0ZG91dC1mbHVzaC5wYXRjaApAQCAtMCwwICsxLDU5IEBACistLS0gbWFjLWZk aXNrLTAuMS5vcmlnL2lvLmMub2xkCTIwMTctMTItMTcgMjA6MzY6MjMuMjc3MTE1ODg5IC0wNjAw CisrKysgbWFjLWZkaXNrLTAuMS5vcmlnL2lvLmMJMjAxNy0xMi0xNyAyMDo0Njo1OS4yOTUwMTE3 ODUgLTA2MDAKK0BAIC0xNDgsNiArMTQ4LDcgQEAKKyAKKyAgICAgZmx1c2hfdG9fbmV3bGluZSgw KTsKKyAgICAgcHJpbnRmKHByb21wdCk7CisrICAgIGZmbHVzaChzdGRvdXQpOworIAorICAgICBm b3IgKDs7KSB7CisgCWMgPSBnZXRjaCgpOworQEAgLTE2Niw2ICsxNjcsNyBAQAorIAl9IGVsc2Ug eworIAkgICAgZmx1c2hfdG9fbmV3bGluZSgwKTsKKyAJICAgIHByaW50Zihwcm9tcHQpOworKwkg ICAgZmZsdXNoKHN0ZG91dCk7CisgCX0KKyAgICAgfQorICAgICByZXR1cm4gLTE7CitAQCAtMTc5 LDYgKzE4MSw3IEBACisgCisgICAgIGlmIChwcm9tcHRCZWZvcmVHZXQpIHsKKyAJcHJpbnRmKHBy b21wdCk7CisrCWZmbHVzaChzdGRvdXQpOworICAgICB9CQorICAgICBmb3IgKDs7KSB7CisgCWMg PSBnZXRjaCgpOworQEAgLTE4OSw2ICsxOTIsNyBAQAorIAkgICAgLy8gc2tpcCBibGFua3MgYW5k IHRhYnMKKyAJfSBlbHNlIGlmIChjID09ICdcbicpIHsKKyAJICAgIHByaW50Zihwcm9tcHQpOwor KwkgICAgZmZsdXNoKHN0ZG91dCk7CisgCX0gZWxzZSB7CisgCSAgICAqY29tbWFuZCA9IGM7Cisg CSAgICByZXR1cm4gMTsKK0BAIC0yMTQsNiArMjE4LDcgQEAKKyAJfSBlbHNlIGlmIChjID09ICdc bicpIHsKKyAJICAgIGlmIChkZWZhdWx0X3ZhbHVlIDwgMCkgeworIAkJcHJpbnRmKHByb21wdCk7 CisrCQlmZmx1c2goc3Rkb3V0KTsKKyAJICAgIH0gZWxzZSB7CisgCQl1bmdldGNoKGMpOworIAkJ Km51bWJlciA9IGRlZmF1bHRfdmFsdWU7CitAQCAtMjkyLDYgKzI5Nyw3IEBACisgCX0gZWxzZSBp ZiAoYyA9PSAnXG4nKSB7CisgCSAgICBpZiAocmVwcm9tcHQpIHsKKyAJCXByaW50Zihwcm9tcHQp OworKwkJZmZsdXNoKHN0ZG91dCk7CisgCSAgICB9IGVsc2UgeworIAkJdW5nZXRjaChjKTsKKyAJ CSpzdHJpbmcgPSBOVUxMOworQEAgLTQ2Niw3ICs0NzIsNyBAQAorICAgICBsb25nIHQ7CisgCisg ICAgIGlmIChyZmxhZykgeworLQlwcmludGYoIkNhbid0IHdyaXRlIGJsb2NrICV1IHRvIGZpbGUi LCAodW5zaWduZWQgaW50KW51bSk7CisrCXByaW50ZigiQ2FuJ3Qgd3JpdGUgYmxvY2sgJXUgdG8g ZmlsZVxuIiwgKHVuc2lnbmVkIGludCludW0pOworIAlyZXR1cm4gMDsKKyAgICAgfQorICNpZm5k ZWYgX19saW51eF9fCmRpZmYgLS1naXQgYS9zcmNwa2dzL21hYy1mZGlzay90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbWFjLWZkaXNrL3RlbXBsYXRlCmluZGV4IDNmNGE4ODMxYzY5Li5lNDlhY2NmNzBmMCAx MDA2NDQKLS0tIGEvc3JjcGtncy9tYWMtZmRpc2svdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tYWMt ZmRpc2svdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtYWMt ZmRpc2snCiBwa2duYW1lPW1hYy1mZGlzawogdmVyc2lvbj0wLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIHdya3NyYz0ke3BrZ25hbWV9LSR7dmVyc2lvbn0ub3JpZwogYnVpbGRfc3R5bGU9Z251 LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGb3JtYXQgYW5kIGVkaXQgQXBwbGUgUGFydGl0aW9uIE1h cCBkcml2ZXMiCkBAIC0xMCwxOSArMTAsMjUgQEAgbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwczovL3BhY2thZ2VzLmRlYmlhbi5vcmcvc2lkL21hYy1mZGlzayIKIGRp c3RmaWxlcz0iaHR0cDovL2RlYi5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vbS9tYWMtZmRp c2svbWFjLWZkaXNrXyR7dmVyc2lvbn0ub3JpZy50YXIuZ3oiCiBjaGVja3N1bT03MDU5ZmM0YmE0 MWNhMmVmODU3ZTEwOTJlOWM1NmU5MTBmMjc2OTNkNDA3YjVjM2Q3OGY3MTAyYWQwYzU2YTY2Citw YXRjaF9hcmdzPSItTnAxIgorCitDRkxBR1M9Ii1EX0dOVV9TT1VSQ0UiCiAKIGNhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgogCWFybSp8YWFyY2g2NCp8bWlwcyopIGJyb2tlbj15ZXM7Owog ZXNhYwogCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkqLW11c2wpIENGTEFHUys9 IiAtRGxvZmZfdD1vZmZfdCIKLWVzYWMKK2RvX2NoZWNrKCkgeworCToKK30KIAogZG9faW5zdGFs bCgpIHsKIAl2YmluIGZkaXNrIG1hYy1mZGlzawogCXZiaW4gcGRpc2sgcG1hYy1mZGlzawogCisJ Y3AgLXBmIG1hYy1mZGlzay44LmluIG1hYy1mZGlzay44CisJY3AgLXBmIHBtYWMtZmRpc2suOC5p biBwbWFjLWZkaXNrLjgKKwogCXZtYW4gbWFjLWZkaXNrLjgKIAl2bWFuIHBtYWMtZmRpc2suOAog fQo= --===============4213940464343702261==--