From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: - Split `gdb-6.6-buildid-locate.patch' to Date: Sat, 27 Jun 2026 23:54:17 GMT Message-ID: <178260445715.1.8336750636925267441.rpms-gdb-09c22fd5fbaa@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 09c22fd5fbaab20a031351621d473eb6924c4919 ICAgICAgICBBIG5ldyBjb21taXQgaGFzIGJlZW4gcHVzaGVkLgoKICAgICAgICBSZXBvICAgOiBy cG1zL2dkYgogICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQKICAgICAgICBDb21t aXQgOiAwOWMyMmZkNWZiYWFiMjBhMDMxMzUxNjIxZDQ3M2ViNjkyNGM0OTE5CiAgICAgICAgQXV0 aG9yIDogSmFuIEtyYXRvY2h2aWwgPGprcmF0b2NoQGZlZG9yYXByb2plY3Qub3JnPgogICAgICAg IERhdGUgICA6IDIwMDktMDMtMDdUMDE6NDI6MDMrMDA6MDAKICAgICAgICBTdGF0cyAgOiArNDcx Ly00NjMgaW4gMyBmaWxlKHMpCiAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJv amVjdC5vcmcvcnBtcy9nZGIvYy8wOWMyMmZkNWZiYWFiMjBhMDMxMzUxNjIxZDQ3M2ViNjkyNGM0 OTE5P2JyYW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0CgogICAgICAgIExvZzoKICAgICAgICAtIFNw bGl0IGBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoJyB0bwpgZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1ycG0ucGF0Y2gnLgoKLS0tCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRl LXJwbS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NTQwMjQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApAQCAtMCwwICsxLDQyOSBAQAorLS0tIC4vZ2Ri L01ha2VmaWxlLmluCTIwMDktMDMtMDcgMDE6NDU6NTEuMDAwMDAwMDAwICswMTAwCisrKysgLi9n ZGIvTWFrZWZpbGUuaW4JMjAwOS0wMy0wNyAwMTo1MjowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0z OTYsNyArMzk2LDcgQEAgQ09ORklHX1VOSU5TVEFMTCA9IEBDT05GSUdfVU5JTlNUQUxMQAorICMg eW91ciBzeXN0ZW0gZG9lc24ndCBoYXZlIGZjbnRsLmggaW4gL3Vzci9pbmNsdWRlICh3aGljaCBp cyB3aGVyZSBpdAorICMgc2hvdWxkIGJlIGFjY29yZGluZyB0byBQb3NpeCkuCisgREVGUyA9IEBE RUZTQAorLUdEQl9DRkxBR1MgPSAtSS4gLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvY29uZmlnIC1E TE9DQUxFRElSPSJcIiQobG9jYWxlZGlyKVwiIiAkKERFRlMpCisrR0RCX0NGTEFHUyA9IC1JLiAt SSQoc3JjZGlyKSAtSSQoc3JjZGlyKS9jb25maWcgLUkkKGluY2x1ZGVkaXIpL3JwbSAtRExPQ0FM RURJUj0iXCIkKGxvY2FsZWRpcilcIiIgJChERUZTKQorIAorICMgTUhfQ0ZMQUdTLCBpZiBkZWZp bmVkLCBoYXMgaG9zdC1kZXBlbmRlbnQgQ0ZMQUdTIGZyb20gdGhlIGNvbmZpZyBkaXJlY3Rvcnku CisgR0xPQkFMX0NGTEFHUyA9ICQoTUhfQ0ZMQUdTKQorQEAgLTQ0OSw3ICs0NDksNyBAQCBJTlNU QUxMRURfTElCUz0tbGJmZCAtbHJlYWRsaW5lIC1sb3Bjb2RlCisgQ0xJQlMgPSAkKFNJTSkgJChS RUFETElORSkgJChPUENPREVTKSAkKEJGRCkgJChJTlRMKSAkKExJQklCRVJUWSkgJChMSUJERUNO VU1CRVIpIFwKKyAJJChYTV9DTElCUykgJChOQVRfQ0xJQlMpICQoR0RCVEtMSUJTKSBATElCU0Ag XAorIAkkKExJQklDT05WKSAkKExJQkVYUEFUKSBcCistCSQoTElCSUJFUlRZKSAkKFdJTjMyTElC UykgJChMSUJHTlUpCisrCSQoTElCSUJFUlRZKSAkKFdJTjMyTElCUykgJChMSUJHTlUpIC1scnBt CisgQ0RFUFMgPSAkKFhNX0NERVBTKSAkKE5BVF9DREVQUykgJChTSU0pICQoQkZEKSAkKFJFQURM SU5FX0RFUFMpIFwKKyAJJChPUENPREVTKSAkKElOVExfREVQUykgJChMSUJJQkVSVFkpICQoQ09O RklHX0RFUFMpICQoTElCR05VKQorIAorLS0tIC4vZ2RiL2V2ZW50LXRvcC5jCTIwMDktMDMtMDcg MDI6Mjk6NTEuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZXZlbnQtdG9wLmMJMjAwOS0wMy0w NyAwMTo1MjowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMyw2ICszMyw3IEBACisgI2luY2x1ZGUg ImNsaS9jbGktc2NyaXB0LmgiICAgICAvKiBmb3IgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICov CisgI2luY2x1ZGUgIm1haW4uaCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisrI2luY2x1ZGUg InN5bWZpbGUuaCIKKyAKKyAvKiBGb3IgZG9udF9yZXBlYXQoKSAqLworICNpbmNsdWRlICJnZGJj bWQuaCIKK0BAIC0xOTMsNiArMTk0LDggQEAgY2xpX2NvbW1hbmRfbG9vcCAodm9pZCkKKyAgICAg ICBjaGFyICphX3Byb21wdDsKKyAgICAgICBjaGFyICpnZGJfcHJvbXB0ID0gZ2V0X3Byb21wdCAo KTsKKyAKKysgICAgICBkZWJ1Z19mbHVzaF9taXNzaW5nICgpOworKworICAgICAgIC8qIFRlbGwg cmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24g aXQKKyAgICAgICAgICB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVh ZC4gVGhpcyBhbHNvIGRpc3BsYXlzCisgICAgICAgICAgdGhlIGZpcnN0IHByb21wdC4gKi8KK0BA IC0yNjQsNiArMjY3LDggQEAgZGlzcGxheV9nZGJfcHJvbXB0IChjaGFyICpuZXdfcHJvbXB0KQor ICAgLyogUmVzZXQgdGhlIG5lc3RpbmcgZGVwdGggdXNlZCB3aGVuIHRyYWNlLWNvbW1hbmRzIGlz IHNldC4gICovCisgICByZXNldF9jb21tYW5kX25lc3RfZGVwdGggKCk7CisgCisrICBkZWJ1Z19m bHVzaF9taXNzaW5nICgpOworKworICAgLyogRWFjaCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBy dWxlcyBvbiBkaXNwbGF5aW5nIHRoZSBjb21tYW5kCisgICAgICBwcm9tcHQuICAqLworICAgaWYg KCFjdXJyZW50X2ludGVycF9kaXNwbGF5X3Byb21wdF9wICgpKQorLS0tIC4vZ2RiL3N5bWZpbGUu YwkyMDA5LTAzLTA3IDAyOjMwOjIwLjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3N5bWZpbGUu YwkyMDA5LTAzLTA3IDAxOjUyOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTU1LDYgKzU1LDcgQEAK KyAjaW5jbHVkZSAic29saWIuaCIKKyAjaW5jbHVkZSAicmVtb3RlLmgiCisgI2luY2x1ZGUgImxp YmJmZC5oIgorKyNpbmNsdWRlICJlbGYvZXh0ZXJuYWwuaCIKKyAKKyAjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CitAQCAtNjMsNiArNjQsNyBAQAorICNpbmNsdWRl IDxjdHlwZS5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+Cisr I2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorIAorIAorIGludCAoKmRlcHJlY2F0ZWRfdWlfbG9hZF9w cm9ncmVzc19ob29rKSAoY29uc3QgY2hhciAqc2VjdGlvbiwgdW5zaWduZWQgbG9uZyBudW0pOwor QEAgLTE2ODQsNiArMTY4NiwyNjkgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWls ZF9pZCAqYgorICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisrI2luY2x1ZGUgPHJwbS9ycG1saWIu aD4KKysjaW5jbHVkZSA8cnBtL3JwbXRzLmg+CisrI2luY2x1ZGUgPHJwbS9ycG1kYi5oPgorKyNp bmNsdWRlIDxycG0vaGVhZGVyLmg+CisrCisrLyogVGhpcyBNSVNTSU5HX1JQTV9IQVNIIHRyYWNr ZXIgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUgbWlzc2luZyBycG0gZmlsZXMKKysgICBhbmQg YXZvaWQgdGhlaXIgZHVwbGljaXRpZXMgZHVyaW5nIGEgc2luZ2xlIGluZmVyaW9yIHJ1bi4gICov CisrCisrc3RhdGljIHN0cnVjdCBodGFiICptaXNzaW5nX3JwbV9oYXNoOworKworKy8qIFRoaXMg TUlTU0lOR19SUE1fTElTVCB0cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbmQgcHJpbnQgYXMg YSBzaW5nbGUgbGluZQorKyAgIGFsbCB0aGUgcnBtcyByaWdodCBiZWZvcmUgdGhlIG5lYXJlc3Qg R0RCIHByb21wdC4gIEl0IGdldHMgY2xlYXJlZCBhZnRlcgorKyAgIGVhY2ggc3VjaCBwcmludCAo aXQgaXMgcXVlc3Rpb25hYmxlIGlmIHdlIHNob3VsZCBjbGVhciBpdCBhZnRlciB0aGUgcHJpbnQp LgorKyAgICovCisrCisrc3RydWN0IG1pc3NpbmdfcnBtCisrICB7CisrICAgIHN0cnVjdCBtaXNz aW5nX3JwbSAqbmV4dDsKKysgICAgY2hhciBycG1bMV07CisrICB9OworK3N0YXRpYyBzdHJ1Y3Qg bWlzc2luZ19ycG0gKm1pc3NpbmdfcnBtX2xpc3Q7Cisrc3RhdGljIGludCBtaXNzaW5nX3JwbV9s aXN0X2VudHJpZXM7CisrCisrLyogUmV0dXJucyB0aGUgY291bnQgb2YgbmV3bHkgYWRkZWQgcnBt cy4gICovCisrCisrc3RhdGljIGludAorK21pc3NpbmdfcnBtX2VubGlzdCAoY29uc3QgY2hhciAq ZmlsZW5hbWUpCisreworKyAgc3RhdGljIGludCBycG1faW5pdF9kb25lID0gMDsKKysgIHJwbXRz IHRzOworKyAgcnBtZGJNYXRjaEl0ZXJhdG9yIG1pOworKyAgaW50IGNvdW50ID0gMDsKKysKKysg IGlmIChmaWxlbmFtZSA9PSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmICghcnBtX2lu aXRfZG9uZSkKKysgICAgeworKyAgICAgIGlmIChycG1SZWFkQ29uZmlnRmlsZXMoTlVMTCwgTlVM TCkgIT0gMCkKKysJeworKwkgIHdhcm5pbmcgKF8oIkVycm9yIHJlYWRpbmcgdGhlIHJwbSBjb25m aWd1cmF0aW9uIGZpbGVzIikpOworKwkgIHJldHVybiAwOworKwl9CisrICAgICAgcnBtX2luaXRf ZG9uZSA9IDE7CisrICAgIH0KKysKKysgIHRzID0gcnBtdHNDcmVhdGUgKCk7CisrCisrICBtaSA9 IHJwbXRzSW5pdEl0ZXJhdG9yICh0cywgUlBNVEFHX0JBU0VOQU1FUywgZmlsZW5hbWUsIDApOwor KyAgaWYgKG1pICE9IE5VTEwpCisrICAgIHsKKysgICAgICBmb3IgKDs7KQorKwl7CisrCSAgSGVh ZGVyIGg7CisrCSAgY2hhciAqZGVidWdpbmZvLCAqKnNsb3QsICpzLCAqczI7CisrCSAgZXJybXNn X3QgZXJyOworKwkgIHNpemVfdCBzcmNycG1sZW4gPSBzaXplb2YgKCIuc3JjLnJwbSIpIC0gMTsK KysJICBzaXplX3QgZGVidWdpbmZvbGVuID0gc2l6ZW9mICgiLWRlYnVnaW5mbyIpIC0gMTsKKysJ ICBycG1kYk1hdGNoSXRlcmF0b3IgbWlfZGVidWdpbmZvOworKworKwkgIGggPSBycG1kYk5leHRJ dGVyYXRvciAobWkpOworKwkgIGlmIChoID09IE5VTEwpCisrCSAgICBicmVhazsKKysKKysJICAv KiBWZXJpZnkgdGhlIGRlYnVnaW5mbyBmaWxlIGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gICov CisrIAorKwkgIGRlYnVnaW5mbyA9IGhlYWRlckZvcm1hdCAoaCwgIiV7c291cmNlcnBtfS1kZWJ1 Z2luZm8uJXthcmNofSIsICZlcnIpOworKwkgIGlmICghZGVidWdpbmZvKQorKwkgICAgeworKwkg ICAgICB3YXJuaW5nIChfKCJFcnJvciBxdWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwg ZmlsZW5hbWUsCisrCSAgICAgICAgICAgICAgIGVycik7CisrCSAgICAgIGNvbnRpbnVlOworKwkg ICAgfQorKwkgIC8qIHMgPSBgLnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCisrCSAgcyA9 IHN0cnJjaHIgKGRlYnVnaW5mbywgJy0nKSAtIHNyY3JwbWxlbjsKKysJICBzMiA9IE5VTEw7Cisr CSAgaWYgKHMgPiBkZWJ1Z2luZm8gJiYgbWVtY21wIChzLCAiLnNyYy5ycG0iLCBzcmNycG1sZW4p ID09IDApCisrCSAgICB7CisrCSAgICAgIC8qIHMyID0gYC0le3JlbGVhc2V9LnNyYy5ycG0tZGVi dWdpbmZvLiV7YXJjaH0nICovCisrCSAgICAgIHMyID0gbWVtcmNociAoZGVidWdpbmZvLCAnLScs IHMgLSBkZWJ1Z2luZm8pOworKwkgICAgfQorKwkgIGlmIChzMikKKysJICAgIHsKKysJICAgICAg LyogczIgPSBgLSV7dmVyc2lvbn0tJXtyZWxlYXNlfS5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9 JyAqLworKwkgICAgICBzMiA9IG1lbXJjaHIgKGRlYnVnaW5mbywgJy0nLCBzMiAtIGRlYnVnaW5m byk7CisrCSAgICB9CisrCSAgaWYgKCFzMikKKysJICAgIHsKKysJICAgICAgd2FybmluZyAoXygi RXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6ICVzIiksIGZpbGVuYW1lLAorKwkgICAg ICAgICAgICAgICBkZWJ1Z2luZm8pOworKwkgICAgICB4ZnJlZSAoZGVidWdpbmZvKTsKKysJICAg ICAgY29udGludWU7CisrCSAgICB9CisrCSAgLyogcyA9IGAuc3JjLnJwbS1kZWJ1Z2luZm8uJXth cmNofScgKi8KKysJICAvKiBzMiA9IGAtJXt2ZXJzaW9ufS0le3JlbGVhc2V9LnNyYy5ycG0tZGVi dWdpbmZvLiV7YXJjaH0nICovCisrCSAgbWVtbW92ZSAoczIgKyBkZWJ1Z2luZm9sZW4sIHMyLCBz IC0gczIpOworKwkgIG1lbWNweSAoczIsICItZGVidWdpbmZvIiwgZGVidWdpbmZvbGVuKTsKKysJ ICAvKiBzID0gYFhYWFguJXthcmNofScgKi8KKysJICAvKiBzdHJsZW4gKCJYWFhYIikgPT0gc3Jj cnBtbGVuICsgZGVidWdpbmZvbGVuICovCisrCSAgLyogczIgPSBgLWRlYnVnaW5mby0le3ZlcnNp b259LSV7cmVsZWFzZX1YWC4le2FyY2h9JyAqLworKwkgIC8qIHN0cmxlbiAoIlhYIikgPT0gc3Jj cnBtbGVuICovCisrCSAgbWVtbW92ZSAocyArIGRlYnVnaW5mb2xlbiwgcyArIHNyY3JwbWxlbiAr IGRlYnVnaW5mb2xlbiwKKysJCSAgIHN0cmxlbiAocyArIHNyY3JwbWxlbiArIGRlYnVnaW5mb2xl bikgKyAxKTsKKysJICAvKiBzID0gYC1kZWJ1Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7 YXJjaH0nICovCisrCisrCSAgLyogUlBNREJJX1BBQ0tBR0VTIHJlcXVpcmVzIGtleWxlbiA9PSBz aXplb2YgKGludCkuICAqLworKwkgIC8qIFJQTURCSV9MQUJFTCBpcyBhbiBpbnRlcmZhY2UgZm9y IE5WUi1iYXNlZCBkYmlGaW5kQnlMYWJlbCgpLiAgKi8KKysJICBtaV9kZWJ1Z2luZm8gPSBycG10 c0luaXRJdGVyYXRvciAodHMsIFJQTURCSV9MQUJFTCwgZGVidWdpbmZvLCAwKTsKKysJICB4ZnJl ZSAoZGVidWdpbmZvKTsKKysJICBpZiAobWlfZGVidWdpbmZvKQorKwkgICAgeworKwkgICAgICBy cG1kYkZyZWVJdGVyYXRvciAobWlfZGVidWdpbmZvKTsKKysJICAgICAgY291bnQgPSAwOworKwkg ICAgICBicmVhazsKKysJICAgIH0KKysKKysJICAvKiBUaGUgYWxsb2NhdGVkIG1lbW9yeSBnZXRz IHV0aWxpemVkIGJlbG93IGZvciBNSVNTSU5HX1JQTV9IQVNILiAgKi8KKysJICBkZWJ1Z2luZm8g PSBoZWFkZXJGb3JtYXQgKGgsCisrCQkJCSAgICAiJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFz ZX0uJXthcmNofSIsCisrCQkJCSAgICAmZXJyKTsKKysJICBpZiAoIWRlYnVnaW5mbykKKysJICAg IHsKKysJICAgICAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6 ICVzIiksIGZpbGVuYW1lLAorKwkgICAgICAgICAgICAgICBlcnIpOworKwkgICAgICBjb250aW51 ZTsKKysJICAgIH0KKysKKysJICAvKiBCYXNlIHBhY2thZ2UgbmFtZSBmb3IgYGRlYnVnaW5mby1p bnN0YWxsJy4gIFdlIGRvIG5vdCB1c2UgdGhlCisrCSAgICAgYHl1bScgY29tbWFuZCBkaXJlY3Rs eSBhcyB0aGUgbGluZQorKwkJIHl1bSAtLWVuYWJsZXJlcG89JyotZGVidWdpbmZvJyBpbnN0YWxs IE5BTUUtZGVidWdpbmZvLkFSQ0gKKysJICAgICB3b3VsZCBiZSBtb3JlIGNvbXBsaWNhdGVkIHRo YW4ganVzdDoKKysJCSBkZWJ1Z2luZm8taW5zdGFsbCBOQU1FLVZFUlNJT04tUkVMRUFTRS5BUkNI CisrCSAgICAgRG8gbm90IHN1cHBseSB0aGUgcnBtIGJhc2UgbmFtZSAoZGVyaXZlZCBmcm9tIC5z cmMucnBtIG5hbWUpIGFzCisrCSAgICAgZGVidWdpbmZvLWluc3RhbGwgaXMgdW5hYmxlIHRvIGlu c3RhbGwgdGhlIGRlYnVnaW5mbyBwYWNrYWdlIGlmCisrCSAgICAgdGhlIGJhc2UgbmFtZSBQS0cg YmluYXJ5IHJwbSBpcyBub3QgaW5zdGFsbGVkIHdoaWxlIGZvciBleGFtcGxlCisrCSAgICAgUEtH LWxpYnMgd291bGQgYmUgaW5zdGFsbGVkIChSSCBCdWcgNDY3OTAxKS4KKysJICAgICBGVVRVUkU6 IEFmdGVyIG11bHRpcGxlIGRlYnVnaW5mbyB2ZXJzaW9ucyBzaW11bHRhbmVvdXNseSBpbnN0YWxs ZWQKKysJICAgICBnZXQgc3VwcG9ydGVkIHRoZSBzdXBwb3J0IGZvciB0aGUgVkVSU0lPTi1SRUxF QVNFIHRhZ3MgaGFuZGxpbmcKKysJICAgICBtYXkgbmVlZCBhbiB1cGRhdGUuICAqLworKworKwkg IGlmIChtaXNzaW5nX3JwbV9oYXNoID09IE5VTEwpCisrCSAgICB7CisrCSAgICAgIC8qIERFTF9G IGlzIHBhc3NlZCBOVUxMIGFzIE1JU1NJTkdfUlBNX0xJU1QncyBIVEFCX0RFTEVURQorKwkJIHNo b3VsZCBub3QgZGVhbGxvY2F0ZSB0aGUgZW50cmllcy4gICovCisrCisrCSAgICAgIG1pc3Npbmdf cnBtX2hhc2ggPSBodGFiX2NyZWF0ZV9hbGxvYyAoNjQsIGh0YWJfaGFzaF9zdHJpbmcsCisrCQkJ ICAgICAgIChpbnQgKCopIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIHN0cmVxLAorKwkJ CQkJCSAgICBOVUxMLCB4Y2FsbG9jLCB4ZnJlZSk7CisrCSAgICB9CisrCSAgc2xvdCA9IChjaGFy ICoqKSBodGFiX2ZpbmRfc2xvdCAobWlzc2luZ19ycG1faGFzaCwgZGVidWdpbmZvLCBJTlNFUlQp OworKwkgIC8qIFhDQUxMT0MgbmV2ZXIgcmV0dXJucyBOVUxMLiAgKi8KKysJICBnZGJfYXNzZXJ0 IChzbG90ICE9IE5VTEwpOworKwkgIGlmICgqc2xvdCA9PSBOVUxMKQorKwkgICAgeworKwkgICAg ICBzdHJ1Y3QgbWlzc2luZ19ycG0gKm1pc3NpbmdfcnBtOworKworKwkgICAgICAqc2xvdCA9IGRl YnVnaW5mbzsKKysKKysJICAgICAgbWlzc2luZ19ycG0gPSB4bWFsbG9jIChzaXplb2YgKCptaXNz aW5nX3JwbSkgKyBzdHJsZW4gKGRlYnVnaW5mbykpOworKwkgICAgICBzdHJjcHkgKG1pc3Npbmdf cnBtLT5ycG0sIGRlYnVnaW5mbyk7CisrCSAgICAgIG1pc3NpbmdfcnBtLT5uZXh0ID0gbWlzc2lu Z19ycG1fbGlzdDsKKysJICAgICAgbWlzc2luZ19ycG1fbGlzdCA9IG1pc3NpbmdfcnBtOworKwkg ICAgICBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMrKzsKKysJICAgIH0KKysJICBlbHNlCisrCSAg ICB4ZnJlZSAoZGVidWdpbmZvKTsKKysJICBjb3VudCsrOworKwl9CisrCisrICAgICAgcnBtZGJG cmVlSXRlcmF0b3IgKG1pKTsKKysgICAgfQorKworKyAgcnBtdHNGcmVlICh0cyk7CisrCisrICBy ZXR1cm4gY291bnQ7CisrfQorKworK3N0YXRpYyBpbnQKKyttaXNzaW5nX3JwbV9saXN0X2NvbXBh ciAoY29uc3QgY2hhciAqY29uc3QgKmFwLCBjb25zdCBjaGFyICpjb25zdCAqYnApCisreworKyAg cmV0dXJuIHN0cmNvbGwgKCphcCwgKmJwKTsKKyt9CisrCisrLyogSXQgcmV0dXJucyBhIE5VTEwt dGVybWluYXRlZCBhcnJheSBvZiBzdHJpbmdzIG5lZWRpbmcgdG8gYmUgRlJFRWQuICBJdCBtYXkK KysgICBhbHNvIHJldHVybiBvbmx5IE5VTEwuICAqLworKworK3N0YXRpYyB2b2lkCisrbWlzc2lu Z19ycG1fbGlzdF9wcmludCAodm9pZCkKKyt7CisrICBjaGFyICoqYXJyYXksICoqYXJyYXlfaXRl cjsKKysgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbGlzdF9pdGVyOworKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXBzOworKworKyAgaWYgKG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyA9PSAwKQorKyAg ICByZXR1cm47CisrCisrICBhcnJheSA9IHhtYWxsb2MgKHNpemVvZiAoKmFycmF5KSAqIG1pc3Np bmdfcnBtX2xpc3RfZW50cmllcyk7CisrICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGFycmF5KTsKKysKKysgIGFycmF5X2l0ZXIgPSBhcnJheTsKKysgIGZvciAobGlzdF9pdGVyID0g bWlzc2luZ19ycG1fbGlzdDsgbGlzdF9pdGVyICE9IE5VTEw7CisrICAgICAgIGxpc3RfaXRlciA9 IGxpc3RfaXRlci0+bmV4dCkKKysgICAgeworKyAgICAgICphcnJheV9pdGVyKysgPSBsaXN0X2l0 ZXItPnJwbTsKKysgICAgfQorKyAgZ2RiX2Fzc2VydCAoYXJyYXlfaXRlciA9PSBhcnJheSArIG1p c3NpbmdfcnBtX2xpc3RfZW50cmllcyk7CisrCisrICBxc29ydCAoYXJyYXksIG1pc3NpbmdfcnBt X2xpc3RfZW50cmllcywgc2l6ZW9mICgqYXJyYXkpLAorKwkgKGludCAoKikgKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqKSkgbWlzc2luZ19ycG1fbGlzdF9jb21wYXIpOworKworKyAgcHJpbnRm X3VuZmlsdGVyZWQgKF8oIk1pc3Npbmcgc2VwYXJhdGUgZGVidWdpbmZvcywgdXNlOiAlcyIpLAor KwkJICAgICAiZGVidWdpbmZvLWluc3RhbGwiKTsKKysgIGZvciAoYXJyYXlfaXRlciA9IGFycmF5 OyBhcnJheV9pdGVyIDwgYXJyYXkgKyBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXM7CisrICAgICAg IGFycmF5X2l0ZXIrKykKKysgICAgeworKyAgICAgIHB1dGNoYXJfdW5maWx0ZXJlZCAoJyAnKTsK KysgICAgICBwdXRzX3VuZmlsdGVyZWQgKCphcnJheV9pdGVyKTsKKysgICAgfQorKyAgcHV0Y2hh cl91bmZpbHRlcmVkICgnXG4nKTsKKysKKysgIHdoaWxlIChtaXNzaW5nX3JwbV9saXN0ICE9IE5V TEwpCisrICAgIHsKKysgICAgICBsaXN0X2l0ZXIgPSBtaXNzaW5nX3JwbV9saXN0OworKyAgICAg IG1pc3NpbmdfcnBtX2xpc3QgPSBsaXN0X2l0ZXItPm5leHQ7CisrICAgICAgeGZyZWUgKGxpc3Rf aXRlcik7CisrICAgIH0KKysgIG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyA9IDA7CisrCisrICBk b19jbGVhbnVwcyAoY2xlYW51cHMpOworK30KKysKKytzdGF0aWMgdm9pZAorK21pc3NpbmdfcnBt X2NoYW5nZSAodm9pZCkKKyt7CisrICBkZWJ1Z19mbHVzaF9taXNzaW5nICgpOworKworKyAgZ2Ri X2Fzc2VydCAobWlzc2luZ19ycG1fbGlzdCA9PSBOVUxMKTsKKysgIGlmIChtaXNzaW5nX3JwbV9o YXNoICE9IE5VTEwpCisrICAgIHsKKysgICAgICBodGFiX2RlbGV0ZSAobWlzc2luZ19ycG1faGFz aCk7CisrICAgICAgbWlzc2luZ19ycG1faGFzaCA9IE5VTEw7CisrICAgIH0KKyt9CisrCisrZW51 bSBtaXNzaW5nX2V4ZWMKKysgIHsKKysgICAgLyogSW5pdCBzdGF0ZS4gIEVYRUNfQkZEIGFsc28g c3RpbGwgY291bGQgYmUgTlVMTC4gICovCisrICAgIE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQsCisr ICAgIC8qIFdlIHNhdyBhIG5vbi1OVUxMIEVYRUNfQkZEIGJ1dCBSUE0gaGFzIG5vIGluZm8gYWJv dXQgaXQuICAqLworKyAgICBNSVNTSU5HX0VYRUNfTk9UX0ZPVU5ELAorKyAgICAvKiBXZSBmb3Vu ZCBFWEVDX0JGRCBieSBSUE0gYW5kIHdlIGVpdGhlciBoYXZlIGl0cyBzeW1ib2xzIChlaXRoZXIg ZW1iZWRkZWQKKysgICAgICAgb3Igc2VwYXJhdGUpIG9yIHRoZSBtYWluIGV4ZWN1dGFibGUncyBS UE0gaXMgbm93IGNvbnRhaW5lZCBpbgorKyAgICAgICBNSVNTSU5HX1JQTV9IQVNILiAgKi8KKysg ICAgTUlTU0lOR19FWEVDX0VOTElTVEVECisrICB9OworK3N0YXRpYyBlbnVtIG1pc3NpbmdfZXhl YyBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfTk9UX1RSSUVEOworKworK3ZvaWQKKytkZWJ1 Z19mbHVzaF9taXNzaW5nICh2b2lkKQorK3sKKysgIG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQgKCk7 CisrfQorKworIC8qIFRoaXMgTUlTU0lOR19GSUxFUEFJUl9IQVNIIHRyYWNrZXIgaXMgdXNlZCBv bmx5IGZvciB0aGUgZHVwbGljaXRlIG1lc3NhZ2VzCisgICAgICB5dW0gLS1lbmFibGVyZXBvPScq LWRlYnVnaW5mbycgaW5zdGFsbCAuLi4KKyAgICBhdm9pZGFuY2UuICAqLworQEAgLTE3MzksMTEg KzIwMDQsMTMgQEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCisgICAgICAgLyogQWxs IHRoZWlyIG1lbW9yeSBjYW1lIGp1c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAq LworICAgICAgIG1pc3NpbmdfZmlsZXBhaXJfaGFzaCA9IE5VTEw7CisgICAgIH0KKysgIG1pc3Np bmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7CisgfQorIAorIHN0YXRpYyB2b2lkCisg ZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkICh2b2lkKQorIHsKKysgIG1pc3NpbmdfcnBt X2NoYW5nZSAoKTsKKyAgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOworIH0KKyAKK0BAIC0x ODAyLDE0ICsyMDY5LDMxIEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFy eSwKKyAgICAgfQorICAgKnNsb3QgPSBtaXNzaW5nX2ZpbGVwYWlyOworIAorLSAgLyogV2UgZG8g bm90IGNvbGxlY3QgYW5kIGZsdXNoIHRoZXNlIG1lc3NhZ2VzIGFzIGVhY2ggc3VjaCBtZXNzYWdl CistICAgICBhbHJlYWR5IHJlcXVpcmVzIGl0cyBvd24gc2VwYXJhdGUgbGluZXMuICAqLworKyAg aWYgKG1pc3NpbmdfZXhlYyA9PSBNSVNTSU5HX0VYRUNfTk9UX1RSSUVEKQorKyAgICB7CisrICAg ICAgY2hhciAqZXhlY19maWxlbmFtZTsKKyAKKy0gIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKKy0JCSAgICAgIF8oIk1pc3Npbmcgc2VwYXJhdGUgZGVidWdpbmZvIGZvciAlc1xuIiks IGJpbmFyeSk7CistICBpZiAoZGVidWcgIT0gTlVMTCkKKy0gICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCBfKCJUcnk6ICVzICVzXG4iKSwKKy0JCQkieXVtIC0tZW5hYmxlcmVwbz0n Ki1kZWJ1Z2luZm8nIGluc3RhbGwiLCBkZWJ1Zyk7CisrICAgICAgZXhlY19maWxlbmFtZSA9IGdl dF9leGVjX2ZpbGUgKDApOworKyAgICAgIGlmIChleGVjX2ZpbGVuYW1lICE9IE5VTEwpCisrCXsK KysJICBpZiAobWlzc2luZ19ycG1fZW5saXN0IChleGVjX2ZpbGVuYW1lKSA9PSAwKQorKwkgICAg bWlzc2luZ19leGVjID0gTUlTU0lOR19FWEVDX05PVF9GT1VORDsKKysJICBlbHNlCisrCSAgICBt aXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQ7CisrCX0KKysgICAgfQorKyAgaWYg KG1pc3NpbmdfZXhlYyAhPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQpCisrICAgIGlmIChtaXNzaW5n X3JwbV9lbmxpc3QgKGJpbmFyeSkgPT0gMCAmJiBtaXNzaW5nX3JwbV9lbmxpc3QgKGRlYnVnKSA9 PSAwKQorKyAgICAgIHsKKysJLyogV2UgZG8gbm90IGNvbGxlY3QgYW5kIGZsdXNoIHRoZXNlIG1l c3NhZ2VzIGFzIGVhY2ggc3VjaCBtZXNzYWdlCisrCSAgIGFscmVhZHkgcmVxdWlyZXMgaXRzIG93 biBzZXBhcmF0ZSBsaW5lcy4gICovCisrCisrCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKysJCQkgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzXG4iKSwgYmlu YXJ5KTsKKysgICAgICAgIGlmIChkZWJ1ZyAhPSBOVUxMKQorKwkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgXygiVHJ5OiAlcyAlc1xuIiksCisrCQkJICAgICAgInl1bSAtLWVuYWJs ZXJlcG89JyotZGVidWdpbmZvJyBpbnN0YWxsIiwgZGVidWcpOworKyAgICAgIH0KKyB9CisgCisg c3RhdGljIGNoYXIgKgorLS0tIC4vZ2RiL3N5bWZpbGUuaAkyMDA5LTAzLTA3IDAyOjE2OjE4LjAw MDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3N5bWZpbGUuaAkyMDA5LTAzLTA3IDAxOjUyOjAwLjAw MDAwMDAwMCArMDEwMAorQEAgLTM3OCw2ICszNzgsNyBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lk ICpidWlsZF9pZF9hZGRyX2dlCisgZXh0ZXJuIGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChz dHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkLAorIAkJCQkgICBjaGFyICoqbGlua19yZXR1cm4sIGlu dCBhZGRfZGVidWdfc3VmZml4KTsKKyBleHRlcm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChj b25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmRlYnVnKTsKKytleHRlcm4gdm9pZCBkZWJ1 Z19mbHVzaF9taXNzaW5nICh2b2lkKTsKKyAKKyAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLworIAor LS0tIC4vZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTAzLTA3IDAyOjEwOjExLjAwMDAw MDAwMCArMDEwMAorKysrIC4vZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTAzLTA3IDAx OjUyOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEyMzAsNyArMTIzMCw3IEBAIHByb2MgZGVmYXVs dF9nZGJfc3RhcnQgeyB9IHsKKyAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGgg dG8gMC4iCisgCX0KKyAgICAgfQorLSAgICAjIFR1cm4gb2ZmIHRoZSBtaXNzaW5nIHdhcm5pbmdz IGFzIHRoZSB0ZXN0c3VpdGUgZG9lcyBub3QgZXhwZWN0IGl0LgorKyAgICAjIFR1cm4gb2ZmIHRo ZSBtaXNzaW5nIFJQTXMgd2FybmluZ3MgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzIG5vdCBleHBlY3Qg aXQuCisgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVyYm9zZSAwXG4iCisgICAgIGdkYl9l eHBlY3QgMTAgeworIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsKKy0tLSAuL2dkYi90dWkvdHVpLWlu dGVycC5jCTIwMDktMDMtMDcgMDI6Mjg6NDcuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdHVp L3R1aS1pbnRlcnAuYwkyMDA5LTAzLTA3IDAxOjUyOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTMw LDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAidHVpL3R1aS5oIgorICNpbmNsdWRlICJ0dWkvdHVpLWlv LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysjaW5jbHVkZSAic3ltZmlsZS5oIgorIAor IC8qIFNldCB0byAxIHdoZW4gdGhlIFRVSSBtb2RlIG11c3QgYmUgYWN0aXZhdGVkIHdoZW4gd2Ug Zmlyc3Qgc3RhcnQKKyAgICBnZGIuICAqLworQEAgLTEyOCw2ICsxMjksOCBAQCB0dWlfY29tbWFu ZF9sb29wICh2b2lkICpkYXRhKQorICAgICAgIGNoYXIgKmFfcHJvbXB0OworICAgICAgIGNoYXIg KmdkYl9wcm9tcHQgPSBnZXRfcHJvbXB0ICgpOworIAorKyAgICAgIGRlYnVnX2ZsdXNoX21pc3Np bmcgKCk7CisrCisgICAgICAgLyogVGVsbCByZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlz cGxheSBpcyBhbmQgd2hhdCBmdW5jdGlvbgorICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxs IGFmdGVyIGEgd2hvbGUgbGluZSBpcyByZWFkLiBUaGlzIGFsc28KKyAgICAgICAgICBkaXNwbGF5 cyB0aGUgZmlyc3QgcHJvbXB0LiAgKi8KCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCBkNTI2ZTI1Li5k YjYyMDY4IDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCisrKyBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKQEAgLTEsNzggKzEsNSBAQAotW2Jhc2VdCi0KLTIw MDctMTAtMTYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CVBvcnQgdG8gR0RCLTYuNy4KLQotMjAwOC0wMS0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCW9wdGlvbiAiYnVpbGQtaWQtY29yZS1sb2FkcyI6IEZpeCBp dCB0byBiZSBhbiAib24iLyJvZmYiIHR5cGUuCi0JTW9yZSBpbnR1aXRpdmUgYnVpbGQtaWQgbWlz c2luZyBmaWxlcyBtZXNzYWdlcy4KLQlMb29rdXAgYWxzbyB0aGUgbWFpbiBleGVjdXRhYmxlIGZy b20gdGhlIHJwbSBkYXRhYmFzZS4KLQlTdXBwcmVzcyBkdXBsaWNpdGUgYnVpbC1pZCBtaXNzaW5n IGZpbGVzIHdhcm5pbmdzLgotCi0yMDA4LTAxLTI2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0JUHJpbnQgdGhlIHNoYXJlZCBsaWJyYXJpZXMgbmFtZXMgdW5j b25kaXRpb25hbGx5LgotCi0yMDA4LTAyLTIxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0JUmVuYW1lIGBkZWJ1ZyBidWlsZC1pZCcgdG8gYGJ1aWxkLWlkLXZl cmJvc2UnLgotCVByb3ZpZGUgaXRzIGxldmVsIDAgdG8gZGlzYWJsZSB0aGUgYnVpbGQtaWQgbWVz c2FnZXMuCi0JTmV3IGRlc2NyaXB0aW9uIG9mIGBidWlsZC1pZC12ZXJib3NlJyBpbiB0aGUgZG9j dW1lbnRhdGlvbi4KLQlSZXNvbHZlIHRoZSBSSCBCdWcgNDMyMTY0LgotCi0yMDA4LTAyLTI0ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdE Qi02LjhwcmUuCi0KLTIwMDgtMDMtMDkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCUltcGxlbWVudCB0aGUgYGRlYnVnaW5mby1pbnN0YWxsJyBycG0veXVt IGludGVncmF0aW9uLgotCVJlc29sdmUgdGhlIFJIIEJ1ZyA0MzU1ODEuCi0KLTIwMDgtMDQtMTYg IFJvYmVydCBTY2hlY2sgIDxyZWRoYXQtYnVnemlsbGFAbGludXhuZXR6LmRlPgotCi0JRml4IC1J IGZvciBub24tc3RhbmRhcmQgcnBtIGluY2x1ZGVzIGluIGAkKGluY2x1ZGVkaXIpL3JwbScuCi0K LTIwMDgtMDQtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCURpc2FibGUgdGhlIHdhcm5pbmdzIGZvciB0aGUgdGVzdHN1aXRlIG5vdCBleHBlY3Rpbmcg dGhlbS4KLQotMjAwOC0xMC0xMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JcnBtIGNvbXBhdGliaWxpdHkgcGF0Y2ggYnkgUGFudSBNYXRpbGFpbmVuLgot Ci0yMDA4LTA4LTIxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQlEaXNhYmxlIE1JIG5vbi1jb21wbGlhbnQgbWVzc2FnZSBvbiB0aGUgbWlzc2luZyBkZWJ1 Z2luZm8gcHJpbnRlZCBvbgotCXJlbG9hZGVkIGV4ZWMgZmlsZS4KLQlGaXggZm91bmQgYnkgRGVu eXMgVmxhc2Vua28gPGR2bGFzZW5rQHJlZGhhdC5jb20+LgotCUZpeGVzIFJlZCBIYXQgQnVnIDQ1 OTQxNC4KLQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL01ha2VmaWxlLmluCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDA5 LTAyLTI4IDA3OjMxOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYv Z2RiL01ha2VmaWxlLmluCTIwMDktMDItMjggMDc6MzE6NTguMDAwMDAwMDAwICswMTAwCi1AQCAt MzkyLDcgKzM5Miw3IEBAIENPTkZJR19VTklOU1RBTEwgPSBAQ09ORklHX1VOSU5TVEFMTEAKLSAj IHlvdXIgc3lzdGVtIGRvZXNuJ3QgaGF2ZSBmY250bC5oIGluIC91c3IvaW5jbHVkZSAod2hpY2gg aXMgd2hlcmUgaXQKLSAjIHNob3VsZCBiZSBhY2NvcmRpbmcgdG8gUG9zaXgpLgotIERFRlMgPSBA REVGU0AKLS1HREJfQ0ZMQUdTID0gLUkuIC1JJChzcmNkaXIpIC1JJChzcmNkaXIpL2NvbmZpZyAt RExPQ0FMRURJUj0iXCIkKGxvY2FsZWRpcilcIiIgJChERUZTKQotK0dEQl9DRkxBR1MgPSAtSS4g LUkkKHNyY2RpcikgLUkkKHNyY2RpcikvY29uZmlnIC1JJChpbmNsdWRlZGlyKS9ycG0gLURMT0NB TEVESVI9IlwiJChsb2NhbGVkaXIpXCIiICQoREVGUykKLSAKLSAjIE1IX0NGTEFHUywgaWYgZGVm aW5lZCwgaGFzIGhvc3QtZGVwZW5kZW50IENGTEFHUyBmcm9tIHRoZSBjb25maWcgZGlyZWN0b3J5 LgotIEdMT0JBTF9DRkxBR1MgPSAkKE1IX0NGTEFHUykKLUBAIC00NDUsNyArNDQ1LDcgQEAgSU5T VEFMTEVEX0xJQlM9LWxiZmQgLWxyZWFkbGluZSAtbG9wY29kZQotIENMSUJTID0gJChTSU0pICQo UkVBRExJTkUpICQoT1BDT0RFUykgJChCRkQpICQoSU5UTCkgJChMSUJJQkVSVFkpICQoTElCREVD TlVNQkVSKSBcCi0gCSQoWE1fQ0xJQlMpICQoTkFUX0NMSUJTKSAkKEdEQlRLTElCUykgQExJQlNA IFwKLSAJJChMSUJJQ09OVikgJChMSUJFWFBBVCkgXAotLQkkKExJQklCRVJUWSkgJChXSU4zMkxJ QlMpICQoTElCR05VKQotKwkkKExJQklCRVJUWSkgJChXSU4zMkxJQlMpICQoTElCR05VKSAtbHJw bQotIENERVBTID0gJChYTV9DREVQUykgJChOQVRfQ0RFUFMpICQoU0lNKSAkKEJGRCkgJChSRUFE TElORV9ERVBTKSBcCi0gCSQoT1BDT0RFUykgJChJTlRMX0RFUFMpICQoTElCSUJFUlRZKSAkKENP TkZJR19ERVBTKSAkKExJQkdOVSkKLSAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9j b3JlbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcvZ2RiL2Nv cmVsb3cuYwkyMDA5LTAyLTIzIDAxOjAzOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02Ljgu NTAuMjAwOTAyMjYvZ2RiL2NvcmVsb3cuYwkyMDA5LTAyLTI4IDA3OjMyOjIzLjAwMDAwMDAwMCAr MDEwMAorLS0tIC4vZ2RiL2NvcmVsb3cuYwkyMDA5LTAzLTA3IDAxOjQ1OjUxLjAwMDAwMDAwMCAr MDEwMAorKysrIC4vZ2RiL2NvcmVsb3cuYwkyMDA5LTAzLTA3IDAyOjI5OjMxLjAwMDAwMDAwMCAr MDEwMAogQEAgLTQ1LDYgKzQ1LDEwIEBACiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAjaW5j bHVkZSAic29saWIuaCIKQEAgLTE2NiwxMCArOTMsOCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5 MDIyNi9nZGIvY29yZWxvdy5jCiArCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0 bGlzdCwgJnNob3dsaXN0KTsKICB9Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvZG9j L2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAwOS0wMi0yOCAwNzozMTo1MC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAwOS0wMi0yOCAwNzoz MTo1OC4wMDAwMDAwMDAgKzAxMDAKKy0tLSAuL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAwOS0wMy0w NyAwMTo0NTo1MS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAw OS0wMy0wNyAwMjoxMDoxMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMzI5NCw2ICsxMzI5NCwyNyBA QCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCkBAIC0xOTgsNDAgKzEyMyw4IEBA IEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAY2luZGV4 IEBjb2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGluayBzZWN0 aW9ucwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhlY3V0YWJs ZSBmaWxlIG5hbWVkCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvZXZlbnQtdG9wLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcvZ2RiL2V2ZW50LXRvcC5j CTIwMDktMDEtMDkgMTI6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5 MDIyNi9nZGIvZXZlbnQtdG9wLmMJMjAwOS0wMi0yOCAwNzozMTo1OC4wMDAwMDAwMDAgKzAxMDAK LUBAIC0zMyw2ICszMyw3IEBACi0gI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiICAgICAvKiBm b3IgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICovCi0gI2luY2x1ZGUgIm1haW4uaCIKLSAjaW5j bHVkZSAiZ2RidGhyZWFkLmgiCi0rI2luY2x1ZGUgInN5bWZpbGUuaCIKLSAKLSAvKiBGb3IgZG9u dF9yZXBlYXQoKSAqLwotICNpbmNsdWRlICJnZGJjbWQuaCIKLUBAIC0xOTMsNiArMTk0LDggQEAg Y2xpX2NvbW1hbmRfbG9vcCAodm9pZCkKLSAgICAgICBjaGFyICphX3Byb21wdDsKLSAgICAgICBj aGFyICpnZGJfcHJvbXB0ID0gZ2V0X3Byb21wdCAoKTsKLSAKLSsgICAgICBkZWJ1Z19mbHVzaF9t aXNzaW5nICgpOwotKwotICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRv IGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24gaXQKLSAgICAgICAgICB3aWxsIG5lZWQgdG8g Y2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvIGRpc3BsYXlzCi0gICAg ICAgICAgdGhlIGZpcnN0IHByb21wdC4gKi8KLUBAIC0yNjQsNiArMjY3LDggQEAgZGlzcGxheV9n ZGJfcHJvbXB0IChjaGFyICpuZXdfcHJvbXB0KQotICAgLyogUmVzZXQgdGhlIG5lc3RpbmcgZGVw dGggdXNlZCB3aGVuIHRyYWNlLWNvbW1hbmRzIGlzIHNldC4gICovCi0gICByZXNldF9jb21tYW5k X25lc3RfZGVwdGggKCk7Ci0gCi0rICBkZWJ1Z19mbHVzaF9taXNzaW5nICgpOwotKwotICAgLyog RWFjaCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBydWxlcyBvbiBkaXNwbGF5aW5nIHRoZSBjb21t YW5kCi0gICAgICBwcm9tcHQuICAqLwotICAgaWYgKCFjdXJyZW50X2ludGVycF9kaXNwbGF5X3By b21wdF9wICgpKQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3NvbGliLXN2cjQuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTAyMjYub3JpZy9nZGIvc29saWItc3ZyNC5j CTIwMDktMDItMjcgMDA6MDQ6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5 MDIyNi9nZGIvc29saWItc3ZyNC5jCTIwMDktMDItMjggMDc6MzE6NTguMDAwMDAwMDAwICswMTAw CistLS0gLi9nZGIvc29saWItc3ZyNC5jCTIwMDktMDMtMDcgMDE6NDU6NTEuMDAwMDAwMDAwICsw MTAwCisrKysgLi9nZGIvc29saWItc3ZyNC5jCTIwMDktMDMtMDcgMDI6MTA6MTEuMDAwMDAwMDAw ICswMTAwCiBAQCAtMTAwMCw5ICsxMDAwLDMzIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCiAg CQkgICAgIHNhZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKICAJICBlbHNlCkBAIC0yNjksMjggKzE2 MiwxNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvc29saWItc3ZyNC5jCiAgCSAg ICB9CiAgCSAgeGZyZWUgKGJ1ZmZlcik7CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9n ZGIvc3ltZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dk Yi9zeW1maWxlLmMJMjAwOS0wMi0yOCAwNzoyMjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ni44LjUwLjIwMDkwMjI2L2dkYi9zeW1maWxlLmMJMjAwOS0wMi0yOCAwNzozMTo1OC4wMDAwMDAw MDAgKzAxMDAKLUBAIC01NCw2ICs1NCw4IEBACistLS0gLi9nZGIvc3ltZmlsZS5jCTIwMDktMDMt MDcgMDE6NDU6NTEuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvc3ltZmlsZS5jCTIwMDktMDMt MDcgMDI6MzA6MjAuMDAwMDAwMDAwICswMTAwCitAQCAtNTQsNiArNTQsNyBAQAogICNpbmNsdWRl ICJlbGYtYmZkLmgiCiAgI2luY2x1ZGUgInNvbGliLmgiCiAgI2luY2x1ZGUgInJlbW90ZS5oIgog KyNpbmNsdWRlICJsaWJiZmQuaCIKLSsjaW5jbHVkZSAiZWxmL2V4dGVybmFsLmgiCiAgCiAgI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRlIDxmY250bC5oPgotQEAgLTYyLDYgKzY0LDcg QEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxz eXMvdGltZS5oPgotKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAKLSAKLSBpbnQgKCpkZXByZWNh dGVkX3VpX2xvYWRfcHJvZ3Jlc3NfaG9vaykgKGNvbnN0IGNoYXIgKnNlY3Rpb24sIHVuc2lnbmVk IGxvbmcgbnVtKTsKLUBAIC0xMTg1LDE2ICsxMTg4LDY1IEBAIHN5bWJvbF9maWxlX2NsZWFyIChp bnQgZnJvbV90dHkpCitAQCAtMTE4NSwxNiArMTE4Niw2NSBAQCBzeW1ib2xfZmlsZV9jbGVhciAo aW50IGZyb21fdHR5KQogICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBzeW1ib2wgZmls ZSBub3cuXG4iKSk7CiAgfQogIApAQCAtMzU4LDcgKzI0MCw3IEBAIEluZGV4OiBnZGItNi44LjUw LjIwMDkwMjI2L2dkYi9zeW1maWxlLmMKICB7CiAgICBzdHJ1Y3QgYnVpbGRfaWQgKnJldHZhbDsK ICAKLUBAIC0xMjEwLDYgKzEyNjIsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkK K0BAIC0xMjEwLDYgKzEyNjAsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKICAg IHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNzA3LDcgKzU4OSw3IEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwMjI2L2dkYi9zeW1maWxlLmMKICAvKiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5U X0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBp bnQKLUBAIC0xMjI3LDcgKzE2MjEsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBzCitAQCAtMTIyNyw3ICsxNjE5LDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBj aGFyICpmaWxlbmFtZSwgcwogICAgaWYgKGFiZmQgPT0gTlVMTCkKICAgICAgcmV0dXJuIDA7CiAg CkBAIC03MTYsNyArNTk4LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3N5bWZp bGUuYwogIAogICAgaWYgKGZvdW5kID09IE5VTEwpCiAgICAgIHdhcm5pbmcgKF8oIkZpbGUgXCIl c1wiIGhhcyBubyBidWlsZC1pZCwgZmlsZSBza2lwcGVkIiksIGZpbGVuYW1lKTsKLUBAIC0xMjQ2 LDggKzE2NDAsOSBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitA QCAtMTI0Niw4ICsxNjM4LDkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFt ZSwgcwogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC03MjgsNyArNjEwLDcgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3N5bWZpbGUuYwogIHsKICAgIGNoYXIgKmxpbmssICpz LCAqcmV0dmFsID0gTlVMTDsKICAgIGdkYl9ieXRlICpkYXRhID0gYnVpbGRfaWQtPmRhdGE7Ci1A QCAtMTI1NSw3ICsxNjUwLDkgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBi dWlsZAorQEAgLTEyNTUsNyArMTY0OCw5IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChz dHJ1Y3QgYnVpbGQKICAKICAgIC8qIERFQlVHX0ZJTEVfRElSRUNUT1JZLy5idWlsZC1pZC9hYi9j ZGVmICovCiAgICBsaW5rID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkg KyAoc2l6ZW9mICIvLmJ1aWxkLWlkLyIgLSAxKSArIDEKQEAgLTczOSw3ICs2MjEsNyBAQCBJbmRl eDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvc3ltZmlsZS5jCiAgICBzID0gbGluayArIHNwcmlu dGYgKGxpbmssICIlcy8uYnVpbGQtaWQvIiwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwogICAgaWYg KHNpemUgPiAwKQogICAgICB7Ci1AQCAtMTI2NiwxMiArMTY2MywxNCBAQCBidWlsZF9pZF90b19k ZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtMTI2NiwxMiArMTY2MSwxNCBAQCBidWls ZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAgICAgICpzKysgPSAnLyc7CiAg ICB3aGlsZSAoc2l6ZS0tID4gMCkKICAgICAgcyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNp Z25lZCkgKmRhdGErKyk7CkBAIC03NTYsNyArNjM4LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTAyMjYvZ2RiL3N5bWZpbGUuYwogIAogICAgaWYgKHJldHZhbCAhPSBOVUxMICYmICFidWlsZF9p ZF92ZXJpZnkgKHJldHZhbCwgYnVpbGRfaWQpKQogICAgICB7Ci1AQCAtMTI3OSw5ICsxNjc4LDQy NCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtMTI3OSw5 ICsxNjc2LDE0MiBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAg ICAgICAgcmV0dmFsID0gTlVMTDsKICAgICAgfQogIApAQCAtNzY4LDI2OSArNjUwLDYgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3N5bWZpbGUuYwogKyAgcmV0dXJuIHJldHZhbDsK ICt9CiArCi0rI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4KLSsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+ Ci0rI2luY2x1ZGUgPHJwbS9ycG1kYi5oPgotKyNpbmNsdWRlIDxycG0vaGVhZGVyLmg+Ci0rCi0r LyogVGhpcyBNSVNTSU5HX1JQTV9IQVNIIHRyYWNrZXIgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0 aGUgbWlzc2luZyBycG0gZmlsZXMKLSsgICBhbmQgYXZvaWQgdGhlaXIgZHVwbGljaXRpZXMgZHVy aW5nIGEgc2luZ2xlIGluZmVyaW9yIHJ1bi4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBodGFiICpt aXNzaW5nX3JwbV9oYXNoOwotKwotKy8qIFRoaXMgTUlTU0lOR19SUE1fTElTVCB0cmFja2VyIGlz IHVzZWQgdG8gY29sbGVjdCBhbmQgcHJpbnQgYXMgYSBzaW5nbGUgbGluZQotKyAgIGFsbCB0aGUg cnBtcyByaWdodCBiZWZvcmUgdGhlIG5lYXJlc3QgR0RCIHByb21wdC4gIEl0IGdldHMgY2xlYXJl ZCBhZnRlcgotKyAgIGVhY2ggc3VjaCBwcmludCAoaXQgaXMgcXVlc3Rpb25hYmxlIGlmIHdlIHNo b3VsZCBjbGVhciBpdCBhZnRlciB0aGUgcHJpbnQpLgotKyAgICovCi0rCi0rc3RydWN0IG1pc3Np bmdfcnBtCi0rICB7Ci0rICAgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbmV4dDsKLSsgICAgY2hhciBy cG1bMV07Ci0rICB9OwotK3N0YXRpYyBzdHJ1Y3QgbWlzc2luZ19ycG0gKm1pc3NpbmdfcnBtX2xp c3Q7Ci0rc3RhdGljIGludCBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXM7Ci0rCi0rLyogUmV0dXJu cyB0aGUgY291bnQgb2YgbmV3bHkgYWRkZWQgcnBtcy4gICovCi0rCi0rc3RhdGljIGludAotK21p c3NpbmdfcnBtX2VubGlzdCAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgc3RhdGljIGlu dCBycG1faW5pdF9kb25lID0gMDsKLSsgIHJwbXRzIHRzOwotKyAgcnBtZGJNYXRjaEl0ZXJhdG9y IG1pOwotKyAgaW50IGNvdW50ID0gMDsKLSsKLSsgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQotKyAg ICByZXR1cm4gMDsKLSsKLSsgIGlmICghcnBtX2luaXRfZG9uZSkKLSsgICAgewotKyAgICAgIGlm IChycG1SZWFkQ29uZmlnRmlsZXMoTlVMTCwgTlVMTCkgIT0gMCkKLSsJewotKwkgIHdhcm5pbmcg KF8oIkVycm9yIHJlYWRpbmcgdGhlIHJwbSBjb25maWd1cmF0aW9uIGZpbGVzIikpOwotKwkgIHJl dHVybiAwOwotKwl9Ci0rICAgICAgcnBtX2luaXRfZG9uZSA9IDE7Ci0rICAgIH0KLSsKLSsgIHRz ID0gcnBtdHNDcmVhdGUgKCk7Ci0rCi0rICBtaSA9IHJwbXRzSW5pdEl0ZXJhdG9yICh0cywgUlBN VEFHX0JBU0VOQU1FUywgZmlsZW5hbWUsIDApOwotKyAgaWYgKG1pICE9IE5VTEwpCi0rICAgIHsK LSsgICAgICBmb3IgKDs7KQotKwl7Ci0rCSAgSGVhZGVyIGg7Ci0rCSAgY2hhciAqZGVidWdpbmZv LCAqKnNsb3QsICpzLCAqczI7Ci0rCSAgZXJybXNnX3QgZXJyOwotKwkgIHNpemVfdCBzcmNycG1s ZW4gPSBzaXplb2YgKCIuc3JjLnJwbSIpIC0gMTsKLSsJICBzaXplX3QgZGVidWdpbmZvbGVuID0g c2l6ZW9mICgiLWRlYnVnaW5mbyIpIC0gMTsKLSsJICBycG1kYk1hdGNoSXRlcmF0b3IgbWlfZGVi dWdpbmZvOwotKwotKwkgIGggPSBycG1kYk5leHRJdGVyYXRvciAobWkpOwotKwkgIGlmIChoID09 IE5VTEwpCi0rCSAgICBicmVhazsKLSsKLSsJICAvKiBWZXJpZnkgdGhlIGRlYnVnaW5mbyBmaWxl IGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gICovCi0rIAotKwkgIGRlYnVnaW5mbyA9IGhlYWRl ckZvcm1hdCAoaCwgIiV7c291cmNlcnBtfS1kZWJ1Z2luZm8uJXthcmNofSIsICZlcnIpOwotKwkg IGlmICghZGVidWdpbmZvKQotKwkgICAgewotKwkgICAgICB3YXJuaW5nIChfKCJFcnJvciBxdWVy eWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCSAgICAgICAgICAgICAg IGVycik7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwkgIC8qIHMgPSBgLnNyYy5ycG0t ZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgcyA9IHN0cnJjaHIgKGRlYnVnaW5mbywgJy0nKSAt IHNyY3JwbWxlbjsKLSsJICBzMiA9IE5VTEw7Ci0rCSAgaWYgKHMgPiBkZWJ1Z2luZm8gJiYgbWVt Y21wIChzLCAiLnNyYy5ycG0iLCBzcmNycG1sZW4pID09IDApCi0rCSAgICB7Ci0rCSAgICAgIC8q IHMyID0gYC0le3JlbGVhc2V9LnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgICAg IHMyID0gbWVtcmNociAoZGVidWdpbmZvLCAnLScsIHMgLSBkZWJ1Z2luZm8pOwotKwkgICAgfQot KwkgIGlmIChzMikKLSsJICAgIHsKLSsJICAgICAgLyogczIgPSBgLSV7dmVyc2lvbn0tJXtyZWxl YXNlfS5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwotKwkgICAgICBzMiA9IG1lbXJjaHIg KGRlYnVnaW5mbywgJy0nLCBzMiAtIGRlYnVnaW5mbyk7Ci0rCSAgICB9Ci0rCSAgaWYgKCFzMikK LSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxl IGAlcyc6ICVzIiksIGZpbGVuYW1lLAotKwkgICAgICAgICAgICAgICBkZWJ1Z2luZm8pOwotKwkg ICAgICB4ZnJlZSAoZGVidWdpbmZvKTsKLSsJICAgICAgY29udGludWU7Ci0rCSAgICB9Ci0rCSAg LyogcyA9IGAuc3JjLnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KLSsJICAvKiBzMiA9IGAtJXt2 ZXJzaW9ufS0le3JlbGVhc2V9LnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgbWVt bW92ZSAoczIgKyBkZWJ1Z2luZm9sZW4sIHMyLCBzIC0gczIpOwotKwkgIG1lbWNweSAoczIsICIt ZGVidWdpbmZvIiwgZGVidWdpbmZvbGVuKTsKLSsJICAvKiBzID0gYFhYWFguJXthcmNofScgKi8K LSsJICAvKiBzdHJsZW4gKCJYWFhYIikgPT0gc3JjcnBtbGVuICsgZGVidWdpbmZvbGVuICovCi0r CSAgLyogczIgPSBgLWRlYnVnaW5mby0le3ZlcnNpb259LSV7cmVsZWFzZX1YWC4le2FyY2h9JyAq LwotKwkgIC8qIHN0cmxlbiAoIlhYIikgPT0gc3JjcnBtbGVuICovCi0rCSAgbWVtbW92ZSAocyAr IGRlYnVnaW5mb2xlbiwgcyArIHNyY3JwbWxlbiArIGRlYnVnaW5mb2xlbiwKLSsJCSAgIHN0cmxl biAocyArIHNyY3JwbWxlbiArIGRlYnVnaW5mb2xlbikgKyAxKTsKLSsJICAvKiBzID0gYC1kZWJ1 Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7YXJjaH0nICovCi0rCi0rCSAgLyogUlBNREJJ X1BBQ0tBR0VTIHJlcXVpcmVzIGtleWxlbiA9PSBzaXplb2YgKGludCkuICAqLwotKwkgIC8qIFJQ TURCSV9MQUJFTCBpcyBhbiBpbnRlcmZhY2UgZm9yIE5WUi1iYXNlZCBkYmlGaW5kQnlMYWJlbCgp LiAgKi8KLSsJICBtaV9kZWJ1Z2luZm8gPSBycG10c0luaXRJdGVyYXRvciAodHMsIFJQTURCSV9M QUJFTCwgZGVidWdpbmZvLCAwKTsKLSsJICB4ZnJlZSAoZGVidWdpbmZvKTsKLSsJICBpZiAobWlf ZGVidWdpbmZvKQotKwkgICAgewotKwkgICAgICBycG1kYkZyZWVJdGVyYXRvciAobWlfZGVidWdp bmZvKTsKLSsJICAgICAgY291bnQgPSAwOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsKLSsJ ICAvKiBUaGUgYWxsb2NhdGVkIG1lbW9yeSBnZXRzIHV0aWxpemVkIGJlbG93IGZvciBNSVNTSU5H X1JQTV9IQVNILiAgKi8KLSsJICBkZWJ1Z2luZm8gPSBoZWFkZXJGb3JtYXQgKGgsCi0rCQkJCSAg ICAiJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0uJXthcmNofSIsCi0rCQkJCSAgICAmZXJy KTsKLSsJICBpZiAoIWRlYnVnaW5mbykKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoXygiRXJy b3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6ICVzIiksIGZpbGVuYW1lLAotKwkgICAgICAg ICAgICAgICBlcnIpOwotKwkgICAgICBjb250aW51ZTsKLSsJICAgIH0KLSsKLSsJICAvKiBCYXNl IHBhY2thZ2UgbmFtZSBmb3IgYGRlYnVnaW5mby1pbnN0YWxsJy4gIFdlIGRvIG5vdCB1c2UgdGhl Ci0rCSAgICAgYHl1bScgY29tbWFuZCBkaXJlY3RseSBhcyB0aGUgbGluZQotKwkJIHl1bSAtLWVu YWJsZXJlcG89JyotZGVidWdpbmZvJyBpbnN0YWxsIE5BTUUtZGVidWdpbmZvLkFSQ0gKLSsJICAg ICB3b3VsZCBiZSBtb3JlIGNvbXBsaWNhdGVkIHRoYW4ganVzdDoKLSsJCSBkZWJ1Z2luZm8taW5z dGFsbCBOQU1FLVZFUlNJT04tUkVMRUFTRS5BUkNICi0rCSAgICAgRG8gbm90IHN1cHBseSB0aGUg cnBtIGJhc2UgbmFtZSAoZGVyaXZlZCBmcm9tIC5zcmMucnBtIG5hbWUpIGFzCi0rCSAgICAgZGVi dWdpbmZvLWluc3RhbGwgaXMgdW5hYmxlIHRvIGluc3RhbGwgdGhlIGRlYnVnaW5mbyBwYWNrYWdl IGlmCi0rCSAgICAgdGhlIGJhc2UgbmFtZSBQS0cgYmluYXJ5IHJwbSBpcyBub3QgaW5zdGFsbGVk IHdoaWxlIGZvciBleGFtcGxlCi0rCSAgICAgUEtHLWxpYnMgd291bGQgYmUgaW5zdGFsbGVkIChS SCBCdWcgNDY3OTAxKS4KLSsJICAgICBGVVRVUkU6IEFmdGVyIG11bHRpcGxlIGRlYnVnaW5mbyB2 ZXJzaW9ucyBzaW11bHRhbmVvdXNseSBpbnN0YWxsZWQKLSsJICAgICBnZXQgc3VwcG9ydGVkIHRo ZSBzdXBwb3J0IGZvciB0aGUgVkVSU0lPTi1SRUxFQVNFIHRhZ3MgaGFuZGxpbmcKLSsJICAgICBt YXkgbmVlZCBhbiB1cGRhdGUuICAqLwotKwotKwkgIGlmIChtaXNzaW5nX3JwbV9oYXNoID09IE5V TEwpCi0rCSAgICB7Ci0rCSAgICAgIC8qIERFTF9GIGlzIHBhc3NlZCBOVUxMIGFzIE1JU1NJTkdf UlBNX0xJU1QncyBIVEFCX0RFTEVURQotKwkJIHNob3VsZCBub3QgZGVhbGxvY2F0ZSB0aGUgZW50 cmllcy4gICovCi0rCi0rCSAgICAgIG1pc3NpbmdfcnBtX2hhc2ggPSBodGFiX2NyZWF0ZV9hbGxv YyAoNjQsIGh0YWJfaGFzaF9zdHJpbmcsCi0rCQkJICAgICAgIChpbnQgKCopIChjb25zdCB2b2lk ICosIGNvbnN0IHZvaWQgKikpIHN0cmVxLAotKwkJCQkJCSAgICBOVUxMLCB4Y2FsbG9jLCB4ZnJl ZSk7Ci0rCSAgICB9Ci0rCSAgc2xvdCA9IChjaGFyICoqKSBodGFiX2ZpbmRfc2xvdCAobWlzc2lu Z19ycG1faGFzaCwgZGVidWdpbmZvLCBJTlNFUlQpOwotKwkgIC8qIFhDQUxMT0MgbmV2ZXIgcmV0 dXJucyBOVUxMLiAgKi8KLSsJICBnZGJfYXNzZXJ0IChzbG90ICE9IE5VTEwpOwotKwkgIGlmICgq c2xvdCA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgbWlzc2luZ19ycG0gKm1pc3Np bmdfcnBtOwotKwotKwkgICAgICAqc2xvdCA9IGRlYnVnaW5mbzsKLSsKLSsJICAgICAgbWlzc2lu Z19ycG0gPSB4bWFsbG9jIChzaXplb2YgKCptaXNzaW5nX3JwbSkgKyBzdHJsZW4gKGRlYnVnaW5m bykpOwotKwkgICAgICBzdHJjcHkgKG1pc3NpbmdfcnBtLT5ycG0sIGRlYnVnaW5mbyk7Ci0rCSAg ICAgIG1pc3NpbmdfcnBtLT5uZXh0ID0gbWlzc2luZ19ycG1fbGlzdDsKLSsJICAgICAgbWlzc2lu Z19ycG1fbGlzdCA9IG1pc3NpbmdfcnBtOwotKwkgICAgICBtaXNzaW5nX3JwbV9saXN0X2VudHJp ZXMrKzsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB4ZnJlZSAoZGVidWdpbmZvKTsKLSsJICBj b3VudCsrOwotKwl9Ci0rCi0rICAgICAgcnBtZGJGcmVlSXRlcmF0b3IgKG1pKTsKLSsgICAgfQot KwotKyAgcnBtdHNGcmVlICh0cyk7Ci0rCi0rICByZXR1cm4gY291bnQ7Ci0rfQotKwotK3N0YXRp YyBpbnQKLSttaXNzaW5nX3JwbV9saXN0X2NvbXBhciAoY29uc3QgY2hhciAqY29uc3QgKmFwLCBj b25zdCBjaGFyICpjb25zdCAqYnApCi0rewotKyAgcmV0dXJuIHN0cmNvbGwgKCphcCwgKmJwKTsK LSt9Ci0rCi0rLyogSXQgcmV0dXJucyBhIE5VTEwtdGVybWluYXRlZCBhcnJheSBvZiBzdHJpbmdz IG5lZWRpbmcgdG8gYmUgRlJFRWQuICBJdCBtYXkKLSsgICBhbHNvIHJldHVybiBvbmx5IE5VTEwu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rbWlzc2luZ19ycG1fbGlzdF9wcmludCAodm9pZCkKLSt7 Ci0rICBjaGFyICoqYXJyYXksICoqYXJyYXlfaXRlcjsKLSsgIHN0cnVjdCBtaXNzaW5nX3JwbSAq bGlzdF9pdGVyOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotKwotKyAgaWYgKG1pc3Np bmdfcnBtX2xpc3RfZW50cmllcyA9PSAwKQotKyAgICByZXR1cm47Ci0rCi0rICBhcnJheSA9IHht YWxsb2MgKHNpemVvZiAoKmFycmF5KSAqIG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyk7Ci0rICBj bGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFycmF5KTsKLSsKLSsgIGFycmF5X2l0ZXIg PSBhcnJheTsKLSsgIGZvciAobGlzdF9pdGVyID0gbWlzc2luZ19ycG1fbGlzdDsgbGlzdF9pdGVy ICE9IE5VTEw7Ci0rICAgICAgIGxpc3RfaXRlciA9IGxpc3RfaXRlci0+bmV4dCkKLSsgICAgewot KyAgICAgICphcnJheV9pdGVyKysgPSBsaXN0X2l0ZXItPnJwbTsKLSsgICAgfQotKyAgZ2RiX2Fz c2VydCAoYXJyYXlfaXRlciA9PSBhcnJheSArIG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyk7Ci0r Ci0rICBxc29ydCAoYXJyYXksIG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcywgc2l6ZW9mICgqYXJy YXkpLAotKwkgKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgbWlzc2luZ19y cG1fbGlzdF9jb21wYXIpOwotKwotKyAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIk1pc3Npbmcgc2Vw YXJhdGUgZGVidWdpbmZvcywgdXNlOiAlcyIpLAotKwkJICAgICAiZGVidWdpbmZvLWluc3RhbGwi KTsKLSsgIGZvciAoYXJyYXlfaXRlciA9IGFycmF5OyBhcnJheV9pdGVyIDwgYXJyYXkgKyBtaXNz aW5nX3JwbV9saXN0X2VudHJpZXM7Ci0rICAgICAgIGFycmF5X2l0ZXIrKykKLSsgICAgewotKyAg ICAgIHB1dGNoYXJfdW5maWx0ZXJlZCAoJyAnKTsKLSsgICAgICBwdXRzX3VuZmlsdGVyZWQgKCph cnJheV9pdGVyKTsKLSsgICAgfQotKyAgcHV0Y2hhcl91bmZpbHRlcmVkICgnXG4nKTsKLSsKLSsg IHdoaWxlIChtaXNzaW5nX3JwbV9saXN0ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBsaXN0X2l0 ZXIgPSBtaXNzaW5nX3JwbV9saXN0OwotKyAgICAgIG1pc3NpbmdfcnBtX2xpc3QgPSBsaXN0X2l0 ZXItPm5leHQ7Ci0rICAgICAgeGZyZWUgKGxpc3RfaXRlcik7Ci0rICAgIH0KLSsgIG1pc3Npbmdf cnBtX2xpc3RfZW50cmllcyA9IDA7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotK30K LSsKLStzdGF0aWMgdm9pZAotK21pc3NpbmdfcnBtX2NoYW5nZSAodm9pZCkKLSt7Ci0rICBkZWJ1 Z19mbHVzaF9taXNzaW5nICgpOwotKwotKyAgZ2RiX2Fzc2VydCAobWlzc2luZ19ycG1fbGlzdCA9 PSBOVUxMKTsKLSsgIGlmIChtaXNzaW5nX3JwbV9oYXNoICE9IE5VTEwpCi0rICAgIHsKLSsgICAg ICBodGFiX2RlbGV0ZSAobWlzc2luZ19ycG1faGFzaCk7Ci0rICAgICAgbWlzc2luZ19ycG1faGFz aCA9IE5VTEw7Ci0rICAgIH0KLSt9Ci0rCi0rZW51bSBtaXNzaW5nX2V4ZWMKLSsgIHsKLSsgICAg LyogSW5pdCBzdGF0ZS4gIEVYRUNfQkZEIGFsc28gc3RpbGwgY291bGQgYmUgTlVMTC4gICovCi0r ICAgIE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQsCi0rICAgIC8qIFdlIHNhdyBhIG5vbi1OVUxMIEVY RUNfQkZEIGJ1dCBSUE0gaGFzIG5vIGluZm8gYWJvdXQgaXQuICAqLwotKyAgICBNSVNTSU5HX0VY RUNfTk9UX0ZPVU5ELAotKyAgICAvKiBXZSBmb3VuZCBFWEVDX0JGRCBieSBSUE0gYW5kIHdlIGVp dGhlciBoYXZlIGl0cyBzeW1ib2xzIChlaXRoZXIgZW1iZWRkZWQKLSsgICAgICAgb3Igc2VwYXJh dGUpIG9yIHRoZSBtYWluIGV4ZWN1dGFibGUncyBSUE0gaXMgbm93IGNvbnRhaW5lZCBpbgotKyAg ICAgICBNSVNTSU5HX1JQTV9IQVNILiAgKi8KLSsgICAgTUlTU0lOR19FWEVDX0VOTElTVEVECi0r ICB9OwotK3N0YXRpYyBlbnVtIG1pc3NpbmdfZXhlYyBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VY RUNfTk9UX1RSSUVEOwotKwotK3ZvaWQKLStkZWJ1Z19mbHVzaF9taXNzaW5nICh2b2lkKQotK3sK LSsgIG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQgKCk7Ci0rfQotKwogKy8qIFRoaXMgTUlTU0lOR19G SUxFUEFJUl9IQVNIIHRyYWNrZXIgaXMgdXNlZCBvbmx5IGZvciB0aGUgZHVwbGljaXRlIG1lc3Nh Z2VzCiArICAgICB5dW0gLS1lbmFibGVyZXBvPScqLWRlYnVnaW5mbycgaW5zdGFsbCAuLi4KICsg ICBhdm9pZGFuY2UuICAqLwpAQCAtMTA4NiwxMyArNzA1LDExIEBAIEluZGV4OiBnZGItNi44LjUw LjIwMDkwMjI2L2dkYi9zeW1maWxlLmMKICsgICAgICAvKiBBbGwgdGhlaXIgbWVtb3J5IGNhbWUg anVzdCBmcm9tIG1pc3NpbmdfZmlsZXBhaXJfT0JTVEFDSy4gICovCiArICAgICAgbWlzc2luZ19m aWxlcGFpcl9oYXNoID0gTlVMTDsKICsgICAgfQotKyAgbWlzc2luZ19leGVjID0gTUlTU0lOR19F WEVDX05PVF9UUklFRDsKICt9CiArCiArc3RhdGljIHZvaWQKICtkZWJ1Z19wcmludF9leGVjdXRh YmxlX2NoYW5nZWQgKHZvaWQpCiArewotKyAgbWlzc2luZ19ycG1fY2hhbmdlICgpOwogKyAgbWlz c2luZ19maWxlcGFpcl9jaGFuZ2UgKCk7CiArfQogKwpAQCAtMTE1MSwzNyArNzY4LDIwIEBAIElu ZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9zeW1maWxlLmMKICsgICAgfQogKyAgKnNsb3Qg PSBtaXNzaW5nX2ZpbGVwYWlyOwogKwotKyAgaWYgKG1pc3NpbmdfZXhlYyA9PSBNSVNTSU5HX0VY RUNfTk9UX1RSSUVEKQotKyAgICB7Ci0rICAgICAgY2hhciAqZXhlY19maWxlbmFtZTsKKysgIC8q IFdlIGRvIG5vdCBjb2xsZWN0IGFuZCBmbHVzaCB0aGVzZSBtZXNzYWdlcyBhcyBlYWNoIHN1Y2gg bWVzc2FnZQorKyAgICAgYWxyZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAg Ki8KICsKLSsgICAgICBleGVjX2ZpbGVuYW1lID0gZ2V0X2V4ZWNfZmlsZSAoMCk7Ci0rICAgICAg aWYgKGV4ZWNfZmlsZW5hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChtaXNzaW5nX3JwbV9lbmxp c3QgKGV4ZWNfZmlsZW5hbWUpID09IDApCi0rCSAgICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VY RUNfTk9UX0ZPVU5EOwotKwkgIGVsc2UKLSsJICAgIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhF Q19FTkxJU1RFRDsKLSsJfQotKyAgICB9Ci0rICBpZiAobWlzc2luZ19leGVjICE9IE1JU1NJTkdf RVhFQ19FTkxJU1RFRCkKLSsgICAgaWYgKG1pc3NpbmdfcnBtX2VubGlzdCAoYmluYXJ5KSA9PSAw ICYmIG1pc3NpbmdfcnBtX2VubGlzdCAoZGVidWcpID09IDApCi0rICAgICAgewotKwkvKiBXZSBk byBub3QgY29sbGVjdCBhbmQgZmx1c2ggdGhlc2UgbWVzc2FnZXMgYXMgZWFjaCBzdWNoIG1lc3Nh Z2UKLSsJICAgYWxyZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAgKi8KLSsK LSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAgICBfKCJNaXNzaW5nIHNl cGFyYXRlIGRlYnVnaW5mbyBmb3IgJXNcbiIpLCBiaW5hcnkpOwotKyAgICAgICAgaWYgKGRlYnVn ICE9IE5VTEwpCi0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJUcnk6ICVz ICVzXG4iKSwKLSsJCQkgICAgICAieXVtIC0tZW5hYmxlcmVwbz0nKi1kZWJ1Z2luZm8nIGluc3Rh bGwiLCBkZWJ1Zyk7Ci0rICAgICAgfQorKyAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAorKwkJICAgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzXG4iKSwgYmlu YXJ5KTsKKysgIGlmIChkZWJ1ZyAhPSBOVUxMKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csIF8oIlRyeTogJXMgJXNcbiIpLAorKwkJCSJ5dW0gLS1lbmFibGVyZXBvPScqLWRl YnVnaW5mbycgaW5zdGFsbCIsIGRlYnVnKTsKICt9CiArCiAgc3RhdGljIGNoYXIgKgogIGdldF9k ZWJ1Z19saW5rX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB1bnNpZ25lZCBsb25nICpj cmMzMl9vdXQpCiAgewotQEAgLTEzNjQsMzIgKzIxNzgsMzYgQEAgc3RhdGljIGNoYXIgKgorQEAg LTEzNjQsMzIgKzE4OTQsMzYgQEAgc3RhdGljIGNoYXIgKgogIGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgYXNlY3Rpb24gKnNlY3Q7CkBA IC0xMjI2LDcgKzgyNiw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9zeW1maWxl LmMKICAgICAgfQogIAogICAgYmFzZW5hbWUgPSBnZXRfZGVidWdfbGlua19pbmZvIChvYmpmaWxl LCAmY3JjMzIpOwotQEAgLTEzOTcsNyArMjIxNSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZSAoc3RydWN0IG9iamZpbGUKK0BAIC0xMzk3LDcgKzE5MzEsNyBAQCBmaW5kX3NlcGFyYXRlX2Rl YnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCiAgICBpZiAoYmFzZW5hbWUgPT0gTlVMTCkKICAgICAg LyogVGhlcmUncyBubyBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLCBoZW5jZSB0aGVyZSdzIG5vIHdheSB3 ZSBjb3VsZAogICAgICAgICBsb2FkIGl0ID0+IG5vIHdhcm5pbmcuICAqLwpAQCAtMTIzNSw3ICs4 MzUsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvc3ltZmlsZS5jCiAgCiAgICBk aXIgPSB4c3RyZHVwIChvYmpmaWxlLT5uYW1lKTsKICAKLUBAIC0xNDEzLDIzICsyMjMxLDE5IEBA IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKK0BAIC0xNDEzLDIzICsx OTQ3LDE5IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKICAgIGdk Yl9hc3NlcnQgKGkgPj0gMCAmJiBJU19ESVJfU0VQQVJBVE9SIChkaXJbaV0pKTsKICAgIGRpcltp KzFdID0gJ1wwJzsKICAKQEAgLTEyNjYsNyArODY2LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTAyMjYvZ2RiL3N5bWZpbGUuYwogIAogICAgLyogVGhlbiB0cnkgaW4gdGhlIHN1YmRpcmVjdG9y eSBuYW1lZCBERUJVR19TVUJESVJFQ1RPUlkuICAqLwogICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRp cik7Ci1AQCAtMTQzOCwxMSArMjI1Miw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3Ry dWN0IG9iamZpbGUKK0BAIC0xNDM4LDExICsxOTY4LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19m aWxlIChzdHJ1Y3Qgb2JqZmlsZQogICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKICAK ICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2Jq ZmlsZS0+bmFtZSkpCkBAIC0xMjc5LDcgKzg3OSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw MjI2L2dkYi9zeW1maWxlLmMKICAKICAgIC8qIFRoZW4gdHJ5IGluIHRoZSBnbG9iYWwgZGVidWdm aWxlIGRpcmVjdG9yeS4gICovCiAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJl Y3RvcnkpOwotQEAgLTE0NTEsMTEgKzIyNjEsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUg KHN0cnVjdCBvYmpmaWxlCitAQCAtMTQ1MSwxMSArMTk3Nyw3IEBAIGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZSAoc3RydWN0IG9iamZpbGUKICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7 CiAgCiAgICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIs IG9iamZpbGUtPm5hbWUpKQpAQCAtMTI5Miw3ICs4OTIsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4y MDA5MDIyNi9nZGIvc3ltZmlsZS5jCiAgCiAgICAvKiBJZiB0aGUgZmlsZSBpcyBpbiB0aGUgc3lz cm9vdCwgdHJ5IHVzaW5nIGl0cyBiYXNlIHBhdGggaW4gdGhlCiAgICAgICBnbG9iYWwgZGVidWdm aWxlIGRpcmVjdG9yeS4gICovCi1AQCAtMTQ3MCwyMCArMjI3NiwxOCBAQCBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCitAQCAtMTQ3MCwyMCArMTk5MiwxOCBAQCBmaW5k X3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCiAgICAgICAgc3RyY2F0IChkZWJ1 Z2ZpbGUsIGJhc2VuYW1lKTsKICAKICAgICAgICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlz dHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQpAQCAtMTMyMSw3ICs5MjEsNyBA QCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvc3ltZmlsZS5jCiAgfQogIAogIAotQEAg LTQyMTUsNCArNTAxOSwxNiBAQCBTaG93IHByaW50aW5nIG9mIHN5bWJvbCBsb2FkaW5nIG1lc3Nh Z2VzCitAQCAtNDIxNiw0ICs0NzM2LDE2IEBAIFNob3cgcHJpbnRpbmcgb2Ygc3ltYm9sIGxvYWRp bmcgbWVzc2FnZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNl dHByaW50bGlzdCwgJnNob3dwcmludGxpc3QpOwpAQCAtMTMzOCwxMSArOTM4LDkgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3N5bWZpbGUuYwogKwogKyAgb2JzZXJ2ZXJfYXR0YWNo X2V4ZWN1dGFibGVfY2hhbmdlZCAoZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkKTsKICB9 Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvc3ltZmlsZS5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dkYi9zeW1maWxlLmgJMjAwOS0wMi0yNyAwMDow NDozMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9zeW1maWxl LmgJMjAwOS0wMi0yOCAwNzozMTo1OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNzIsNiArMzcyLDE0 IEBAIGV4dGVybiBpbnQgc3ltZmlsZV9tYXBfb2Zmc2V0c190b19zZWdtZW4KKy0tLSAuL2dkYi9z eW1maWxlLmgJMjAwOS0wMy0wNyAwMTo0NTo1MS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9z eW1maWxlLmgJMjAwOS0wMy0wNyAwMjoxNjoxOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNzIsNiAr MzcyLDEzIEBAIGV4dGVybiBpbnQgc3ltZmlsZV9tYXBfb2Zmc2V0c190b19zZWdtZW4KICBzdHJ1 Y3Qgc3ltZmlsZV9zZWdtZW50X2RhdGEgKmdldF9zeW1maWxlX3NlZ21lbnRfZGF0YSAoYmZkICph YmZkKTsKICB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzeW1maWxlX3Nl Z21lbnRfZGF0YSAqZGF0YSk7CiAgCkBAIC0xMzUyLDIwICs5NTAsMTcgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTAyMjYvZ2RiL3N5bWZpbGUuaAogK2V4dGVybiBjaGFyICpidWlsZF9pZF90b19m aWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZCwKICsJCQkJICAgY2hhciAqKmxpbmtf cmV0dXJuLCBpbnQgYWRkX2RlYnVnX3N1ZmZpeCk7CiArZXh0ZXJuIHZvaWQgZGVidWdfcHJpbnRf bWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1Zyk7Ci0rZXh0ZXJu IHZvaWQgZGVidWdfZmx1c2hfbWlzc2luZyAodm9pZCk7CiArCiAgLyogRnJvbSBkd2FyZjJyZWFk LmMgKi8KICAKICBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7 Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAJMjAwOS0wMi0yNyAwMDowNDozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44 LjUwLjIwMDkwMjI2L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAwOS0wMi0yOCAwNzozMTo1 OC4wMDAwMDAwMDAgKzAxMDAKKy0tLSAuL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAwOS0w My0wNyAwMTo0NTo1MS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAJMjAwOS0wMy0wNyAwMjoxMDoxMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMjMwLDYgKzEy MzAsMTYgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291 bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQogICAgICB9Ci0rICAgICMgVHVybiBvZmYg dGhlIG1pc3NpbmcgUlBNcyB3YXJuaW5ncyBhcyB0aGUgdGVzdHN1aXRlIGRvZXMgbm90IGV4cGVj dCBpdC4KKysgICAgIyBUdXJuIG9mZiB0aGUgbWlzc2luZyB3YXJuaW5ncyBhcyB0aGUgdGVzdHN1 aXRlIGRvZXMgbm90IGV4cGVjdCBpdC4KICsgICAgc2VuZF9nZGIgInNldCBidWlsZC1pZC12ZXJi b3NlIDBcbiIKICsgICAgZ2RiX2V4cGVjdCAxMCB7CiArCS1yZSAiJGdkYl9wcm9tcHQgJCIgewpA QCAtMTM3OCwyNCArOTczLDMgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAogICAgICByZXR1cm4gMDsKICB9CiAgCi1JbmRleDogZ2RiLTYuOC41 MC4yMDA5MDIyNi9nZGIvdHVpL3R1aS1pbnRlcnAuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02Ljgu NTAuMjAwOTAyMjYub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDA5LTAyLTIxIDE3OjE0OjUw LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3R1aS90dWktaW50 ZXJwLmMJMjAwOS0wMi0yOCAwNzozMTo1OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zMCw2ICszMCw3 IEBACi0gI2luY2x1ZGUgInR1aS90dWkuaCIKLSAjaW5jbHVkZSAidHVpL3R1aS1pby5oIgotICNp bmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgInN5bWZpbGUuaCIKLSAKLSAvKiBTZXQg dG8gMSB3aGVuIHRoZSBUVUkgbW9kZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHdlIGZpcnN0IHN0 YXJ0Ci0gICAgZ2RiLiAgKi8KLUBAIC0xMjgsNiArMTI5LDggQEAgdHVpX2NvbW1hbmRfbG9vcCAo dm9pZCAqZGF0YSkKLSAgICAgICBjaGFyICphX3Byb21wdDsKLSAgICAgICBjaGFyICpnZGJfcHJv bXB0ID0gZ2V0X3Byb21wdCAoKTsKLSAKLSsgICAgICBkZWJ1Z19mbHVzaF9taXNzaW5nICgpOwot KwotICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMg YW5kIHdoYXQgZnVuY3Rpb24KLSAgICAgICAgICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBh IHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvCi0gICAgICAgICAgZGlzcGxheXMgdGhlIGZp cnN0IHByb21wdC4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA1 YzM2MWZkLi5mN2Q4YTA4IDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAt MTMsNyArMTMsNyBAQCBWZXJzaW9uOiA2LjguNTAuMjAwOTAzMDIKIAogIyBUaGUgcmVsZWFzZSBh bHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4K ICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBk ZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAzJXs/X3dp dGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7P2Rpc3R9CitSZWxlYXNlOiA0JXs/X3dpdGhfdXBzdHJl YW06LnVwc3RyZWFtfSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKwogR3JvdXA6IERldmVsb3Bt ZW50L0RlYnVnZ2VycwpAQCAtMjczLDYgKzI3Myw3IEBAIFBhdGNoMjcxOiBnZGItNi41LWJ6MjQz ODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRlc3QucGF0Y2gKIAogIyBOZXcgbG9jYXRpbmcgb2Yg dGhlIG1hdGNoaW5nIGJpbmFyaWVzIGZyb20gdGhlIHB1cmUgY29yZSBmaWxlIChidWlsZC1pZCku CiBQYXRjaDI3NDogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorUGF0Y2gzNTM6IGdkYi02 LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCiAKICMgRml4IGhhcmR3YXJlIHdhdGNocG9pbnRz IGFmdGVyIGluZmVyaW9yIGZvcmtzLW9mZiBzb21lIHByb2Nlc3MuCiAjIFRocmVhZGVkIGBzZXQg Zm9sbG93LWZvcmstbW9kZSBjaGlsZCcgc3RpbGwgbm90IGZpeGVkIHRoZXJlLCBnbGliYyBmaXhl cyByZXFkLgpAQCAtNTMxLDYgKzUzMiw3IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhw LmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDI2NiAtcDEKICVwYXRjaDI3MSAt cDEKICVwYXRjaDI3NCAtcDEKKyVwYXRjaDM1MyAtcDEKICVwYXRjaDI4MCAtcDEKICVwYXRjaDI4 MiAtcDEKICVwYXRjaDI4NCAtcDEKQEAgLTgzNiw2ICs4MzgsOSBAQCBmaQogJWVuZGlmCiAKICVj aGFuZ2Vsb2cKKyogU2F0IE1hciAgNyAyMDA5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDYuOC41MC4yMDA5MDMwMi00CistIFNwbGl0IGBnZGItNi42LWJ1aWxk aWQtbG9jYXRlLnBhdGNoJyB0byBgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gnLgor CiAqIFNhdCBNYXIgIDcgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4gLSA2LjguNTAuMjAwOTAzMDItMwogLSBBcmNoZXIgdXBkYXRlIHRvIHRoZSBzbmFwc2hv dDogNmNmMTZjMDcxMWU4NDQwOTRhYjY5NGIzZDkyOWY3YmQzMGI0OWY2MQogLSBGaXggY3Jhc2gg b24gdGhlIGlubGluZWQgZnVuY3Rpb25zIHN1cHBvcnQuCg==