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] fix-dup-patch: Rebase to FSF GDB 7.2.50.20110320 (which is a 7.3 pre-release). Date: Thu, 23 Jul 2026 18:29:53 GMT Message-ID: <178483139398.1.6984455472122543240.rpms-gdb-48cf710500f7@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 48cf710500f7b60bee2ee3d9962438462daaefd0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNDhjZjcxMDUwMGY3YjYwYmVlMmVlM2Q5OTYyNDM4NDYyZGFhZWZkMAog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wMy0yMFQyMTo0NDoyMCswMTowMAogICAg ICAgICAgICBTdGF0cyAgOiArNDc2NS8tMTgwNiBpbiAyMCBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvNDhjZjcxMDUw MGY3YjYwYmVlMmVlM2Q5OTYyNDM4NDYyZGFhZWZkMD9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiA3LjIuNTAuMjAxMTAz MjAgKHdoaWNoIGlzIGEgNy4zIHByZS1yZWxlYXNlKS4KTWVyZ2UgYXJjaGVyLXNlcmdpb2RqLXN0 YXAsIHRoZSBTeXN0ZW1UYXAgcHJvYmVzIGJyZWFrcG9pbnRzIGZlYXR1cmUuCltzdGFwXSBGaXgg LU8yIHdhcm5pbmdzLgpGaXggQWRhIHN1cHBvcnQgY3Jhc2ggb24gdW5pbml0aWFsaXplZCBnZGJh cmNoLgoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBhZTI3 NGM1Li5hNWVkYTNmIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAg LTEsMiArMSwyIEBACiAvbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLS9nZGIt Ny4yLjUwLjIwMTEwMzA1LnRhci5iejIKKy9nZGItNy4yLjUwLjIwMTEwMzIwLnRhci5iejIKCmRp ZmYgLS1naXQgYS9nZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0Y2gg Yi9nZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0Y2gKaW5kZXggMWQ5 YzYxYi4uOTFkYzY5YSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRo cmVhZC10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjMtYnoyMDI2ODktZXhlYy1mcm9tLXB0aHJlYWQt dGVzdC5wYXRjaApAQCAtOTIsNyArOTIsNyBAQAogK2dkYl9ydW5fY21kCiArCiArZ2RiX3Rlc3Rf bXVsdGlwbGUge30gIlByb2dyYW0gZXhpdGVkIiB7Ci0rICAgLXJlICJcclxuUHJvZ3JhbSBleGl0 ZWQgbm9ybWFsbHkuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAtcmUgIlxyXG5cXFxbSW5mZXJp b3IgLiogZXhpdGVkIG5vcm1hbGx5XFxcXVxyXG4kZ2RiX3Byb21wdCAkIiB7CiArICAgICAgIHBh c3MgIlByb2dyYW0gZXhpdGVkIgogKyAgIH0KICt9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1pbmZl cmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2ggYi9nZGItNi4zLWluZmVyaW9yLW5vdGlm aWNhdGlvbi0yMDA1MDcyMS5wYXRjaAppbmRleCBhNzg5YjFiLi4wZWIzOTdjIDEwMDY0NAotLS0g YS9nZGItNi4zLWluZmVyaW9yLW5vdGlmaWNhdGlvbi0yMDA1MDcyMS5wYXRjaAorKysgYi9nZGIt Ni4zLWluZmVyaW9yLW5vdGlmaWNhdGlvbi0yMDA1MDcyMS5wYXRjaApAQCAtOSwxMCArOSwxMCBA QAogCiAJKiBnZGIuYmFzZS9hdHRhY2gtMzIuZXhwOiBGaXggZm9yZ290dGVuICRHREJGTEFHUyBh cyBzZXQuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYXR0YWNoLTMyLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXR0YWNoLTMyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmMJMjAwOC0xMi0wNyAxMDowNjowMy4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXR0YWNoLTMyLmMJMjAxMS0wMy0yMCAyMDoxNTo1Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAg KzEsMjAgQEAKICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRz aWRlIG9mIGdkYiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBz aW1wbHkgc3BpbnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTM0LDEwICszNCwxMCBAQCBJbmRl eDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMi5j CiArICAgIH0KICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gtMzIuZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMi5leHAJMjAw OC0xMi0wNyAxMDowODo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIw L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmV4cAkyMDExLTAzLTIwIDIwOjIwOjAz LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwyNDUgQEAKICsjIENvcHlyaWdodCAyMDA1IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTUzLDcgKzE1Myw3IEBAIEluZGV4 OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmV4 cAogKwogKyAgICAjIEFsbG93IHRoZSB0ZXN0IHByb2Nlc3MgdG8gZXhpdCwgdG8gY2xlYW51cCBh ZnRlciBvdXJzZWx2ZXMuCiArCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIlByb2dyYW0gZXhp dGVkIG5vcm1hbGx5LiIgImFmdGVyIGF0dGFjaC0zMiwgZXhpdCIKKysgICAgZ2RiX3Rlc3QgImNv bnRpbnVlIiB7XFtJbmZlcmlvciAuKiBleGl0ZWQgbm9ybWFsbHlcXX0gImFmdGVyIGF0dGFjaC0z MiwgZXhpdCIKICsKICsgICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgbGVhdmUgYSBwcm9jZXNzIGFy b3VuZCB0byBjb25mdXNlCiArICAgICMgdGhlIG5leHQgdGVzdCBydW4gKGFuZCBwcmV2ZW50IHRo ZSBjb21waWxlIGJ5IGtlZXBpbmcKQEAgLTIzNCw3ICsyMzQsNyBAQCBJbmRleDogZ2RiLTYuOC41 MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMi5leHAKICsgICAgIyBH ZXQgcmlkIG9mIHRoZSBwcm9jZXNzCiArICAgIAogKyAgICBnZGJfdGVzdCAicCBzaG91bGRfZXhp dCA9IDEiCi0rICAgIGdkYl90ZXN0ICJjIiAiUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuIgorKyAg ICBnZGJfdGVzdCAiYyIge1xbSW5mZXJpb3IgLiogZXhpdGVkIG5vcm1hbGx5XF19CiArICAgCiAr ICAgICMgQmUgcGFyYW5vaWQKICsgICAKQEAgLTI4NCwxMCArMjg0LDEwIEBAIEluZGV4OiBnZGIt Ni44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmV4cAogK2Rv X2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNi44LjUwLjIwMDgx MTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyYi5jCitJbmRleDogZ2RiLTcuMi41 MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMmIuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gtMzJiLmMJ MjAwOC0xMi0wNyAxMDowNjowMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyYi5jCTIwMTEtMDMtMjAgMjA6MTU6 NTcuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDI0IEBACiArLyogVGhpcyBwcm9ncmFtIGlz IGludGVuZGVkIHRvIGJlIHN0YXJ0ZWQgb3V0c2lkZSBvZiBnZGIsIGFuZCB0aGVuCiArICAgYXR0 YWNoZWQgdG8gYnkgZ2RiLiAgVGh1cywgaXQgc2ltcGx5IHNwaW5zIGluIGEgbG9vcC4gIFRoZSBs b29wCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaCBiL2dkYi02 LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKaW5kZXggOTgyOGFmYS4uMGI0YTJkYiAxMDA2NDQK LS0tIGEvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaAorKysgYi9nZGItNi4zLXRlc3Qt cGllLTIwMDUwMTA3LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAzMDUvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDExMDMwNS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCTIwMTEtMDMtMDMgMTc6 NTc6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1 aXRlL2NvbmZpZ3VyZS5hYwkyMDExLTAzLTA1IDA4OjI2OjUzLjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDEx LTAzLTAzIDE3OjU3OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAg KzAxMDAKIEBAIC05Nyw2ICs5Nyw2IEBAIEFDX09VVFBVVChbTWFrZWZpbGUgXAogICAgZ2RiLmhw L2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgXAogICAgZ2RiLmhw L2dkYi5kZWZlY3RzL01ha2VmaWxlIFwKQEAgLTEwLDEwICsxMCwxMCBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwogKyAgZ2RiLm9iamMvTWFr ZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFr ZWZpbGUgZ2RiLnBpZS9NYWtlZmlsZSBcCiAgICBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZl cnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBcCiAgICBnZGIudGhyZWFkcy9NYWtlZmls ZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZV0pCi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUw LjIwMTEwMzA1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMS0wMy0wMyAxNzo1Nzo1 NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUv Y29uZmlndXJlCTIwMTEtMDMtMDUgMDg6MjY6NTguMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu Mi41MC4yMDExMDMyMC5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTEtMDMtMDMgMTc6 NTc6NTUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1 aXRlL2NvbmZpZ3VyZQkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEwMAogQEAgLTM0 NDgsNyArMzQ0OCw3IEBAIGRvbmUKICAKICAKQEAgLTMxLDEwICszMSwxMCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQogICAgICAiZ2RiLnB5dGhv bi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIucHl0aG9uL01ha2Vm aWxlIiA7OwogICAgICAiZ2RiLnJldmVyc2UvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05G SUdfRklMRVMgZ2RiLnJldmVyc2UvTWFrZWZpbGUiIDs7CiAgICAgICJnZGIuc3RhYnMvTWFrZWZp bGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLnN0YWJzL01ha2VmaWxlIiA7Owot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5j CitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9h dHRhY2guYwkyMDExLTAzLTA1IDA4OjI2OjI4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIwMTEtMDMtMjAgMjA6 MjE6NDMuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDIwIEBACiArLyogVGhpcyBwcm9ncmFt IGlzIGludGVuZGVkIHRvIGJlIHN0YXJ0ZWQgb3V0c2lkZSBvZiBnZGIsIGFuZCB0aGVuCiArICAg YXR0YWNoZWQgdG8gYnkgZ2RiLiAgVGh1cywgaXQgc2ltcGx5IHNwaW5zIGluIGEgbG9vcC4gIFRo ZSBsb29wCkBAIC01NiwxMCArNTYsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCiArICAgIH0KICsgIHJldHVybiAwOwogK30KLUlu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMK K0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gy LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9h dHRhY2gyLmMJMjAxMS0wMy0wNSAwODoyNjoyOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMJMjAxMS0wMy0yMCAy MDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMjQgQEAKICsvKiBUaGlzIHByb2dy YW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4KICsg ICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29wLiAg VGhlIGxvb3AKQEAgLTg1LDEwICs4NSwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoMi5jCiArICAgIH0KICsgIHJldHVybiAoMCk7CiAr fQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFr LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVh ay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YnJlYWsuYwkyMDExLTAzLTA1IDA4OjI2OjI4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMJMjAxMS0wMy0yMCAyMDoy MTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMTQ2IEBACiArLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTIzNiwxMCArMjM2LDEw IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVh ay5jCiArICAgIH0KICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAz MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4y MDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMJMjAxMS0wMy0wNSAwODoyNjoy OC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9icmVhazEuYwkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEwMAogQEAg LTAsMCArMSw0NCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCkBAIC0yODUsMTAgKzI4NSwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKICt2b2lkIG1hcmtlcjMgKGEsIGIp IGNoYXIgKmEsICpiOyB7fQkvKiBzZXQgYnJlYWtwb2ludCAxOCBoZXJlICovCiArdm9pZCBtYXJr ZXI0IChkKSBsb25nIGQ7IHt9CQkvKiBzZXQgYnJlYWtwb2ludCAxMyBoZXJlICovCiArI2VuZGlm Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1h a2VyLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9j b3JlbWFrZXIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2NvcmVtYWtlci5jCTIwMTEtMDMtMDUgMDg6MjY6MjguMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJ MjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMTQyIEBACiAr LyogQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTkKICsgICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTQzMiwxMSArNDMyLDExIEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFrZXIuYwogKyAg cmV0dXJuIDA7CiArfQogKwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2F0dGFjaC5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDExLTAzLTA1IDA4OjI2OjI4LjAwMDAw MDAwMCArMDEwMAotQEAgLTAsMCArMSw0MjMgQEAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dk Yi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTEtMDMtMjAgMjA6MjU6NTMuMDAwMDAw MDAwICswMTAwCitAQCAtMCwwICsxLDQxNyBAQAogKyMgICBDb3B5cmlnaHQgMTk5NywgMTk5OSwg MjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBA IC02OTksMTMgKzY5OSw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9hdHRhY2guZXhwCiArCiArICAgIyBBbGxvdyB0aGUgdGVzdCBwcm9jZXNzIHRv IGV4aXQsIHRvIGNsZWFudXAgYWZ0ZXIgb3Vyc2VsdmVzLgogKyAgICMKLSsgICBzZW5kX2dkYiAi Y29udGludWVcbiIKLSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIlByb2dyYW0gZXhpdGVk IG5vcm1hbGx5LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3Bhc3Mg ImFmdGVyIGF0dGFjaDIsIGV4aXQifQotKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwg ImFmdGVyIGF0dGFjaDIsIGV4aXQifQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7ZmFpbCAiKHRp bWVvdXQpIGFmdGVyIGF0dGFjaDIsIGV4aXQifQotKyAgIH0KKysgICBnZGJfdGVzdCAiY29udGlu dWUiIHtcW0luZmVyaW9yIC4qIGV4aXRlZCBub3JtYWxseVxdfSAiYWZ0ZXIgYXR0YWNoMiwgZXhp dCIKICsKICsgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBsZWF2ZSBhIHByb2Nlc3MgYXJvdW5kIHRv IGNvbmZ1c2UKICsgICAjIHRoZSBuZXh0IHRlc3QgcnVuIChhbmQgcHJldmVudCB0aGUgY29tcGls ZSBieSBrZWVwaW5nCkBAIC04MzEsNyArODI1LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAz MDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKICsgICAjIEdldCByaWQgb2YgdGhl IHByb2Nlc3MKICsgICAjCiArICAgZ2RiX3Rlc3QgInAgc2hvdWxkX2V4aXQgPSAxIiAiLioiCi0r ICAgZ2RiX3Rlc3QgImMiICIuKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LioiCisrICAgZ2RiX3Rl c3QgImMiIHtcW0luZmVyaW9yIC4qIGV4aXRlZCBub3JtYWxseVxdfQogKyAgIAogKyAgICMgQmUg cGFyYW5vaWQKICsgICAjCkBAIC04NjAsMTAgKzg1NCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAogK2RvX2NhbGxfYXR0YWNo X3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMS0wMy0wNSAwODoyNjoyOC4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBp ZS9icmVhay5leHAJMjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAg KzEsOTY2IEBACiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkwLCAxOTkxLCAxOTkyLCAxOTk0LCAx OTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0 CkBAIC0xODMxLDEwICsxODI1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKICsgICAgc2VuZF9nZGIgInNldCBhcmdzIG1haW5c biIKICsgICAgZ2RiX2V4cGVjdCAtcmUgIi4qJGdkYl9wcm9tcHQgJCIge30KICt9Ci1JbmRleDog Z2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCitJ bmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUv Y29yZWZpbGUuZXhwCTIwMTEtMDMtMDUgMDg6MjY6MjguMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTEt MDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDIzMyBAQAogKyMgQ29w eXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIw MDAKICsjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjA2OSwxMCArMjA2Mywx MCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29y ZWZpbGUuZXhwCiArZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAu KiBcXCguKlxcKS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIChyZWluaXQpIgogKwogK2dkYl90ZXN0 ICJjb3JlIiAiTm8gY29yZSBmaWxlIG5vdy4iCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4KK0luZGV4OiBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIu NTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCTIwMTEtMDMtMDUg MDg6MjY6MjguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVz dHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4JMjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAg KzAxMDAKIEBAIC0wLDAgKzEsMTkgQEAKICtWUEFUSCA9IEBzcmNkaXJACiArc3JjZGlyID0gQHNy Y2RpckAKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaCBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCmluZGV4IDAzOGFhODQuLjJmZmFkZTEgMTAw NjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCisrKyBiL2dkYi02LjYt YnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAyMTMvZ2RiL2V2ZW50LXRvcC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9n ZGIvZXZlbnQtdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcv Z2RiL2V2ZW50LXRvcC5jCTIwMTEtMDEtMDEgMTY6MzM6MDMuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMi41MC4yMDExMDIxMy9nZGIvZXZlbnQtdG9wLmMJMjAxMS0wMi0xMyAxOToyMTo0OS4w MDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2V2ZW50LXRv cC5jCTIwMTEtMDMtMTYgMTY6MTg6NTguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4y MDExMDMyMC9nZGIvZXZlbnQtdG9wLmMJMjAxMS0wMy0yMCAxNToyMjo1MS4wMDAwMDAwMDAgKzAx MDAKIEBAIC0zMyw2ICszMyw3IEBACiAgI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiICAgICAv KiBmb3IgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICovCiAgI2luY2x1ZGUgIm1haW4uaCIKQEAg LTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvZXZlbnQtdG9w LmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMgb24gZGlzcGxheWlu ZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3VycmVudF9pbnRlcnBf ZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9lbGZy ZWFkLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9lbGZyZWFkLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTAyLTEz IDE5OjIxOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2Vs ZnJlYWQuYwkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTQyLDYgKzQy LDcgQEAKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTAz LTIwIDE1OjIyOjM0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2Ri L2VsZnJlYWQuYwkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAorQEAgLTQ5LDYg KzQ5LDcgQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJnZGJjbWQuaCIKICAj aW5jbHVkZSAib2JzZXJ2ZXIuaCIKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAyMTMvZ2RiL2VsZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJl YWQgKHZvaWQpOwogIAotQEAgLTEzNzQsOCArMTM3NSwzNjEgQEAgYnVpbGRfaWRfdG9fZmlsZW5h bWUgKHN0cnVjdCBidWlsZF9pZCAqYgorQEAgLTE2MjMsOCArMTYyNCwzNjEgQEAgYnVpbGRfaWRf dG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgogICAgcmV0dXJuIHJldHZhbDsKICB9CiAg CkBAIC00MDMsNyArNDAzLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2VsZnJl YWQuYwogICAgIGF2b2lkYW5jZS4gICovCiAgCiAgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKLUBA IC0xNDI5LDExICsxNzgzLDE3IEBAIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQorQEAg LTE2NzgsMTEgKzIwMzIsMTcgQEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCiAgICAg ICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1lIGp1c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09C U1RBQ0suICAqLwogICAgICAgIG1pc3NpbmdfZmlsZXBhaXJfaGFzaCA9IE5VTEw7CiAgICAgIH0K QEAgLTQyMSw3ICs0MjEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvZWxmcmVh ZC5jCiAgICBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAoKTsKICB9CiAgCi1AQCAtMTUwMCwxNCAr MTg2MCwzNSBAQCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCitAQCAt MTc0OSwxNCArMjEwOSwzNSBAQCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5h cnksCiAgCiAgICAqc2xvdCA9IG1pc3NpbmdfZmlsZXBhaXI7CiAgCkBAIC00NjQsMTEgKzQ2NCwx MSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvZWxmcmVhZC5jCiAgfQogIAogIHN0 YXRpYyBjaGFyICoKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9zeW1maWxlLmgKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDExLTAyLTEzIDE5OjIxOjQ0 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL3N5bWZpbGUuaAky MDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTU2MCw2ICs1NjAsOCBAQCBl eHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCistLS0gZ2RiLTcuMi41MC4y MDExMDMyMC5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMS0wMy0yMCAxNToxOTo1Mi4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9zeW1maWxlLmgJMjAxMS0wMy0yMCAx NToyMjo1MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC02MTcsNiArNjE3LDggQEAgZXh0ZXJuIHN0cnVj dCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZQogIGV4dGVybiBjaGFyICpidWlsZF9pZF90b19m aWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZCwKICAJCQkJICAgY2hhciAqKmxpbmtf cmV0dXJuLCBpbnQgYWRkX2RlYnVnX3N1ZmZpeCk7CiAgZXh0ZXJuIHZvaWQgZGVidWdfcHJpbnRf bWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1Zyk7CkBAIC00Nzcs MTEgKzQ3NywxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvc3ltZmlsZS5oCiAg CiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEz L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEw MjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAyLTEzIDE5OjIxOjQ0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTEzOTUsNyAr MTM5NSw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKKy0tLSBnZGItNy4yLjUwLjIw MTEwMzIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAzLTIwIDE1OjE5OjUy LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAorQEAgLTEzOTcs NyArMTM5Nyw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcg IkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtNDkwLDEwICs0 OTAsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAogICAgICBzZW5kX2dkYiAic2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJf ZXhwZWN0IDEwIHsKICAJLXJlICIkZ2RiX3Byb21wdCAkIiB7Ci1JbmRleDogZ2RiLTcuMi41MC4y MDExMDIxMy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAJMjAxMS0wMi0xMyAxOToyMTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUw LjIwMTEwMjEzL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDItMTMgMTk6 MjE6NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDMtMjAgMTU6MTk6NTIuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTIyMSw3ICsy MjEsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIH0KICAg ICAgCX0KQEAgLTUwMywxMCArNTAzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNl dCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiLiox OTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9w cm9tcHQkIiB7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvdHVpL3R1aS1pbnRlcnAu YworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJ MjAxMS0wMS0wMSAxNjozMzo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MjEzL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTEtMDItMTMgMTk6MjE6NDkuMDAwMDAwMDAwICsw MTAwCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIw MTEtMDEtMDEgMTY6MzM6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEw MAogQEAgLTMxLDYgKzMxLDcgQEAKICAjaW5jbHVkZSAidHVpL3R1aS5oIgogICNpbmNsdWRlICJ0 dWkvdHVpLWlvLmgiCkBAIC01MjQsMTAgKzUyNCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDIxMy9nZGIvdHVpL3R1aS1pbnRlcnAuYwogICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0 aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24KICAgICAgICAgICBpdCB3 aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvCiAg ICAgICAgICAgZGlzcGxheXMgdGhlIGZpcnN0IHByb21wdC4gICovCi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDIxMy9nZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2Ri L2FjbG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2Ri L2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMjEzL2dkYi9hY2xvY2FsLm00CTIwMTEtMDItMTMgMTk6MjE6NDkuMDAwMDAw MDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi9hY2xvY2FsLm00CTIw MTEtMDItMTUgMjI6MDU6NTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvYWNsb2NhbC5tNAkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAogQEAg LTE5LDYgKzE5LDE2MiBAQCBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJ CiAgSWYgeW91IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBi dWlsZCBzeXN0ZW0gZW50aXJlbHkuCiAgVG8gZG8gc28sIHVzZSB0aGUgcHJvY2VkdXJlIGRvY3Vt ZW50ZWQgYnkgdGhlIHBhY2thZ2UsIHR5cGljYWxseSBgYXV0b3JlY29uZicuXSldKQpAQCAtNjkx LDEwICs2OTEsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2FjbG9jYWwubTQK ICAjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIwogICMgVGhpcyBmaWxlIGlzIGZyZWUgc29m dHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLUluZGV4OiBnZGItNy4yLjUwLjIw MTEwMjEzL2dkYi9jb25maWcuaW4KK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9jb25m aWcuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2NvbmZp Zy5pbgkyMDExLTAxLTE0IDE0OjM4OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAu MjAxMTAyMTMvZ2RiL2NvbmZpZy5pbgkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTEtMDMtMTcg MTQ6MTk6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvY29u ZmlnLmluCTIwMTEtMDMtMjAgMTU6MjI6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtNDYsNiArNDYs OSBAQAogIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3Vu ZGVmIERFRkFVTFRfQkZEX1ZFQwpAQCAtNzA1LDcgKzcwNSw3IEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTEwMjEzL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBv ZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMg cmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjI5LDYgKzIzMiw5IEBACitA QCAtMjMzLDYgKzIzNiw5IEBACiAgLyogRGVmaW5lIGlmIFB5dGhvbiAyLjcgaXMgYmVpbmcgdXNl ZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJQWVRIT04yXzcKICAKQEAgLTcxNSwxMCArNzE1LDEwIEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgaWYg bGlidW53aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJVTldJ TkQKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWd1cmUKK0luZGV4OiBn ZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDExLTAyLTExIDEwOjU3OjI0LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2NvbmZpZ3VyZQkyMDExLTAy LTEzIDE5OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3Jp Zy9nZGIvY29uZmlndXJlCTIwMTEtMDMtMTcgMTQ6MTk6MDkuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDExMDMyMC9nZGIvY29uZmlndXJlCTIwMTEtMDMtMjAgMTU6MjM6MjkuMDAw MDAwMDAwICswMTAwCiBAQCAtNjgyLDYgKzY4Miw5IEBAIFJFUE9SVF9CVUdTX1RPCiAgUEtHVkVS U0lPTgogIFRBUkdFVF9PQlMKQEAgLTc0Nyw3ICs3NDcsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDExMDIxMy9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NTMs NiArMTY2MCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE2NTIsNiArMTY1OSw4IEBAIE9w dGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2Ri XQogICAgLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMK QEAgLTc1Niw3ICs3NTYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvY29uZmln dXJlCiAgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2lu ZGluZyBzdXBwb3J0CiAgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBs aWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnJhcnkKLUBAIC0xNjg4LDYgKzE2OTcsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25t ZW50IHZhcmlhYmxlczoKK0BAIC0xNjg3LDYgKzE2OTYsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVu dmlyb25tZW50IHZhcmlhYmxlczoKICAgIENQUEZMQUdTICAgIEMvQysrL09iamVjdGl2ZSBDIHBy ZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAg IHlvdSBoYXZlIGhlYWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGly PgogICAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3NjYsNyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUg YFlldCBBbm90aGVyIEMgQ29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMg dG8KICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29u IC15JywgYGJ5YWNjJywgYHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1l bnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC03ODg1LDYg Kzc4OTcsNDg2IEBAIF9BQ0VPRgorQEAgLTc4ODQsNiArNzg5Niw0ODYgQEAgX0FDRU9GCiAgZmkK ICAKICAKQEAgLTEyNTMsMTAgKzEyNTMsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMv Z2RiL2NvbmZpZ3VyZQogIAogIAogIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKLUluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIw MTEwMjEzLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTAyLTExIDEwOjU3OjI1LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTAy LTEzIDE5OjIyOjMwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3Jp Zy9nZGIvY29uZmlndXJlLmFjCTIwMTEtMDMtMTcgMTQ6MTk6MTAuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvY29uZmlndXJlLmFjCTIwMTEtMDMtMjAgMTU6MjM6 MTcuMDAwMDAwMDAwICswMTAwCiBAQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcwogICAgICAgICAgICAgICAgW1JlbG9jYXRlZCBkaXJl Y3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKICBdKQpAQCAtMTQ1NSwxMiArMTQ1NSwxMiBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvY29uZmlndXJlLmFjCiArZmkKICsgCiAgQUNf Q09ORklHX1NVQkRJUlModGVzdHN1aXRlKQotIEFDX0NPTkZJR19TVUJESVJTKGNvbW1vbikKICAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9hY2luY2x1ZGUubTQKKyAjIENoZWNrIHdo ZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9hY2luY2x1ZGUubTQKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTA1LTI3IDA1OjQw OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2FjaW5jbHVk ZS5tNAkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAu MjAxMTAzMjAub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcgMDU6NDA6NDUuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvYWNpbmNsdWRlLm00CTIwMTEt MDMtMjAgMTU6MjI6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMSwzICsxLDUgQEAKICsjIHNlcmlh bCAxCiArCkBAIC0xNDc2LDEwICsxNDc2LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEz L2dkYi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERDCiAgIyBAbWFpbmRl eCBQUk9HX0NDX1NUREMKICAjIEBvdmluZGV4IENDCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIx My9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvY29yZWxvdy5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxMy5vcmlnL2dkYi9jb3JlbG93LmMJ MjAxMS0wMi0xMyAxOToyMTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MjEzL2dkYi9jb3JlbG93LmMJMjAxMS0wMi0xMyAxOToyMTo0OS4wMDAwMDAwMDAgKzAxMDAKKy0t LSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDExLTAzLTIwIDE1OjE5 OjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2NvcmVsb3cu YwkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTMyMCw3ICszMjAsNyBA QCBidWlsZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZyb21fdHR5KQogICAgICAgICAgc3ltZmlsZV9v YmpmaWxlLT5mbGFncyB8PSBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEOwogICAgICB9CgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUucGF0Y2gKaW5kZXggM2Q4ZTVkZS4uNzIwYmYyMSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBA IC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2NvcmVsb3cuYwor SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvY29yZWxvdy5jCTIwMTEtMDEtMDUgMjM6MjI6 NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvY29yZWxvdy5j CTIwMTEtMDEtMTcgMTU6NTI6MDYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEx MDMyMC5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wMi0yNiAwMzowNzowNy4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9jb3JlbG93LmMJMjAxMS0wMy0yMCAxNTox OTo1Mi4wMDAwMDAwMDAgKzAxMDAKIEBAIC00Nyw2ICs0Nyw5IEBACiAgI2luY2x1ZGUgImZpbGVu YW1lcy5oIgogICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKQEAgLTkwLDExICs5MCwxMSBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvY29yZWxvdy5jCiArCQkJICAgTlVMTCwgTlVMTCwg TlVMTCwKICsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKICB9Ci1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDEx Ny5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wMS0xNyAxNTo1MDo0MS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0w MS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTIyMCw2ICsxNTIyMCwyNyBAQCBp bmZvcm1hdGlvbiBmaWxlcy4KKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDExLTAzLTIwIDE1OjE3OjQ0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjIuNTAuMjAxMTAzMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTAzLTIwIDE1OjE5OjUyLjAw MDAwMDAwMCArMDEwMAorQEAgLTE1MzQzLDYgKzE1MzQzLDI3IEBAIGluZm9ybWF0aW9uIGZpbGVz LgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyMiwxMCArMTIyLDEwIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTEwMTE3L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAY2luZGV4IEBjb2Rley5nbnVfZGVi dWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGluayBzZWN0aW9ucwogIEEgZGVidWcg bGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlIG5hbWVkCi1J bmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvc29saWItc3ZyNC5jCitJbmRleDogZ2RiLTcu Mi41MC4yMDExMDMyMC9nZGIvc29saWItc3ZyNC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDExMDExNy5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMS0wMS0xNyAxNTo0NzozNy4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zb2xpYi1zdnI0LmMJMjAx MS0wMS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIw Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDExLTAzLTIwIDE1OjE3OjQzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3NvbGliLXN2cjQuYwkyMDExLTAzLTIwIDE1 OjE5OjUyLjAwMDAwMDAwMCArMDEwMAogQEAgLTExNzksOSArMTE3OSw0OSBAQCBzdnI0X2N1cnJl bnRfc29zICh2b2lkKQogIAkJICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2RlKSk7CiAgCSAgZWxz ZQpAQCAtMTc5LDEzICsxNzksMTMgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Nv bGliLXN2cjQuYwogIAkgICAgfQogIAkgIHhmcmVlIChidWZmZXIpOwogIAotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAxMTcvZ2RiL2VsZnJlYWQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAv Z2RiL2VsZnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9n ZGIvZWxmcmVhZC5jCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMTcgMTU6NTI6MDYuMDAwMDAw MDAwICswMTAwCi1AQCAtMzgsNiArMzgsMTAgQEAKLSAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKLSAj aW5jbHVkZSAicHN5bXByaXYuaCIKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2Vs ZnJlYWQuYwkyMDExLTAzLTIwIDE1OjE3OjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTIwIDE1OjIyOjM0LjAwMDAwMDAwMCAr MDEwMAorQEAgLTQ1LDYgKzQ1LDEwIEBACisgI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKKyAjaW5j bHVkZSAiYXJjaC11dGlscy5oIgogICNpbmNsdWRlICJnZGJ0eXBlcy5oIgogKyNpbmNsdWRlICJs aWJiZmQuaCIKICsjaW5jbHVkZSAiZ2RiY29yZS5oIgpAQCAtMTk0LDggKzE5NCw4IEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9lbGZyZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5p dGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBAIC04MjMsMTYgKzgyNyw2NSBAQCByZXNvbHZl X2dudV9pZnVuYyAoY29uc3QgY2hhciAqZnVuY3Rpb25fCi0gICByZXR1cm4gMDsKK0BAIC0xMDcy LDE2ICsxMDc2LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgKHN0cnUK KyAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscyk7CiAgfQogIAogKy8qIExv Y2F0ZSBOVF9HTlVfQlVJTERfSUQgYW5kIHJldHVybiBpdHMgbWF0Y2hpbmcgZGVidWcgZmlsZW5h bWUuCkBAIC0yNjIsNyArMjYyLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2Vs ZnJlYWQuYwogIHsKICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTg0OCw2ICs5 MDEsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKK0BAIC0xMDk3LDYgKzExNTAs MzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKICAgIHJldHVybiByZXR2YWw7CiAg fQogIApAQCAtNjExLDcgKzYxMSw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9l bGZyZWFkLmMKICAvKiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRj aGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBpbnQKLUBAIC04NjIsNyArMTI1 Nyw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKK0BAIC0xMTEx LDcgKzE1MDYsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAg ICBpZiAoYWJmZCA9PSBOVUxMKQogICAgICByZXR1cm4gMDsKICAKQEAgLTYyMCw3ICs2MjAsNyBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICBpZiAoZm91 bmQgPT0gTlVMTCkKICAgICAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlk LCBmaWxlIHNraXBwZWQiKSwgZmlsZW5hbWUpOwotQEAgLTg4MCwxNCArMTI3NSwxNiBAQCBidWls ZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTEyOSwxNCArMTUyNCwx NiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICByZXR1cm4g cmV0dmFsOwogIH0KICAKQEAgLTY0MSw3ICs2NDEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg c28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAgICAgICBjYXVzZSAi Ly5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTkxOCw3ICsxMzE1LDEwIEBAIGJ1aWxk X2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BAIC0xMTY3LDcgKzE1NjQsMTAg QEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAogIAkqcysrID0gJy8n OwogICAgICAgIHdoaWxlIChzaXplLS0gPiAwKQogIAlzICs9IHNwcmludGYgKHMsICIlMDJ4Iiwg KHVuc2lnbmVkKSAqZGF0YSsrKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgLyogbHJlYWxwYXRoKCkgaXMgZXhw ZW5zaXZlIGV2ZW4gZm9yIHRoZSB1c3VhbGx5IG5vbi1leGlzdGVudCBmaWxlcy4gICovCiAgICAg ICAgaWYgKGFjY2VzcyAobGluaywgRl9PSykgPT0gMCkKLUBAIC05MzEsMjYgKzEzMzEsMjAxIEBA IGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BAIC0xMTgwLDI2ICsx NTgwLDIwMSBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAgCX0K ICAKICAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCkBAIC03MjMsOSArNzIzLDkgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2VsZnJlYWQuYwogKwogKyAgcmV0dmFsID0gb2JzdGFj a19hbGxvYyAoJm1pc3NpbmdfZmlsZXBhaXJfb2JzdGFjaywgc2l6ZSk7CiArICBtZW1zZXQgKHJl dHZhbCwgMCwgc2l6ZSk7Ci0gICByZXR1cm4gcmV0dmFsOwotIH0KLSAKKysgIHJldHVybiByZXR2 YWw7CisrfQorKwogK3N0YXRpYyBoYXNodmFsX3QKICttaXNzaW5nX2ZpbGVwYWlyX2hhc2hfZnVu YyAoY29uc3Qgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIgKmVsZW0pCiArewpAQCAtNzM1LDkgKzcz NSw5IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9lbGZyZWFkLmMKICsgIGlmIChl bGVtLT5kZWJ1ZyAhPSBOVUxMKQogKyAgICByZXR2YWwgXj0gaHRhYl9oYXNoX3N0cmluZyAoZWxl bS0+ZGVidWcpOwogKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCisgICByZXR1cm4gcmV0dmFs OworIH0KKyAKICtzdGF0aWMgaW50CiArbWlzc2luZ19maWxlcGFpcl9lcSAoY29uc3Qgc3RydWN0 IG1pc3NpbmdfZmlsZXBhaXIgKmVsZW0xLAogKwkJICAgICAgIGNvbnN0IHN0cnVjdCBtaXNzaW5n X2ZpbGVwYWlyICplbGVtMikKQEAgLTg1OSw3ICs4NTksNyBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDExMDExNy9nZGIvZWxmcmVhZC5jCiAgICAgICAgeGZyZWUgKGJ1aWxkX2lkKTsKICAgICAgICAv KiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAg aWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCAmJiBzdHJjbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZp bGUtPm5hbWUpID09IDApCi1AQCAtOTYwLDcgKzE1MzUsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVn X2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMTIwOSw3ICsxNzg0LDcgQEAgZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgogIAkgIHhmcmVlIChidWlsZF9pZF9uYW1lKTsK ICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkKQEAgLTg2OCw5ICs4 NjgsOSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgICAgIH0K ICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC0xMTQ4LDkgKzE3MjMsMTAgQEAgZWxmX3N5bWZpbGVf cmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0MDcsOSArMTk4MiwxMCBAQCBlbGZf c3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgICAgICBgLm5vdGUuZ251LmJ1 aWxkLWlkJy4gICovCi0gICBpZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmls ZSkpCisgICBlbHNlIGlmICghb2JqZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKSkK ICAgICAgewogLSAgICAgIGNoYXIgKmRlYnVnZmlsZTsKICsgICAgICBjaGFyICpkZWJ1Z2ZpbGUs ICpidWlsZF9pZF9maWxlbmFtZTsKQEAgLTg4MSw3ICs4ODEsNyBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgaWYgKGRlYnVnZmlsZSA9PSBOVUxM KQogIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rIChv YmpmaWxlKTsKLUBAIC0xMTYyLDYgKzE3MzgsMTIgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbAorQEAgLTE0MjEsNiArMTk5NywxMiBAQCBlbGZfc3ltZmlsZV9yZWFk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChh YmZkLCBzeW1maWxlX2ZsYWdzLCBvYmpmaWxlKTsKICAJICB4ZnJlZSAoZGVidWdmaWxlKTsKICAJ fQpAQCAtODk0LDEwICs4OTQsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2Vs ZnJlYWQuYwogICAgICB9CiAgfQogIAotQEAgLTEzMzcsNCArMTkxOSwxNiBAQCB2b2lkCi0gX2lu aXRpYWxpemVfZWxmcmVhZCAodm9pZCkKLSB7Ci0gICBhZGRfc3ltdGFiX2ZucyAoJmVsZl9zeW1f Zm5zKTsKK0BAIC0xODc5LDQgKzI0NjEsMTYgQEAgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkK KyAKKyAgIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmls ZV9kYXRhICgpOworICAgZ251X2lmdW5jX2Zuc19wID0gJmVsZl9nbnVfaWZ1bmNfZm5zOwogKwog KyAgYWRkX3NldHNob3dfemludGVnZXJfY21kICgiYnVpbGQtaWQtdmVyYm9zZSIsIG5vX2NsYXNz LCAmYnVpbGRfaWRfdmVyYm9zZSwKICsJCQkgICAgXygiXApAQCAtOTExLDExICs5MTEsMTEgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2VsZnJlYWQuYwogKwogKyAgb2JzZXJ2ZXJf YXR0YWNoX2V4ZWN1dGFibGVfY2hhbmdlZCAoZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2Vk KTsKICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvc3ltZmlsZS5oCitJbmRleDog Z2RiLTcuMi41MC4yMDExMDMyMC9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDExMDExNy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMS0wMS0xMSAyMjo1MzoyNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zeW1maWxlLmgJMjAxMS0w MS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01NTQsNiArNTU0LDEzIEBAIHZvaWQg ZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKKy0tLSBnZGItNy4yLjUwLjIwMTEw MzIwLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDExLTAzLTIwIDE1OjE3OjQzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3N5bWZpbGUuaAkyMDExLTAzLTIwIDE1OjE5 OjUyLjAwMDAwMDAwMCArMDEwMAorQEAgLTYxMSw2ICs2MTEsMTMgQEAgdm9pZCBmcmVlX3N5bWZp bGVfc2VnbWVudF9kYXRhIChzdHJ1Y3QgcwogIAogIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5j cmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lkKTsKICAKQEAgLTkyOSwxMSArOTI5LDExIEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zeW1maWxlLmgKICAvKiBGcm9tIGR3YXJmMnJl YWQuYyAqLwogIAogIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAq KTsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK K0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDExLTAxLTE3IDE1OjQ3OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIu NTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAxLTE3IDE1OjUyOjA2 LjAwMDAwMDAwMCArMDEwMAotQEAgLTEzOTUsNiArMTM5NSwxNiBAQCBwcm9jIGRlZmF1bHRfZ2Ri X3N0YXJ0IHsgfSB7CistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAJMjAxMS0wMy0yMCAxNToxNzo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMy0yMCAxNTox OTo1Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMzk3LDYgKzEzOTcsMTYgQEAgcHJvYyBkZWZhdWx0 X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0 byAwLiIKICAJfQogICAgICB9CkBAIC05NTAsMTAgKzk1MCwxMCBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJldHVybiAwOwogIH0K ICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBv cnQuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIv dGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTAxLTAxIDE2OjMzOjUyLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAJMjAxMS0wMS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4y LjUwLjIwMTEwMzIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0w My0wNyAxNzowMzowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDMtMjAgMTU6MTk6NTIuMDAwMDAw MDAwICswMTAwCiBAQCAtMjIxLDYgKzIyMSwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0 IHsgYXJncyB9IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTk3MSwxMyArOTcxLDEzIEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAg CiAgICAgIGRldGVjdF9hc3luYwogIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL29i amZpbGVzLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTEt MDEtMTAgMjE6Mzg6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvb2JqZmlsZXMuaAkyMDExLTAxLTE3IDE1OjUyOjI2LjAwMDAwMDAwMCArMDEwMAotQEAgLTQz NCw2ICs0MzQsMTAgQEAgc3RydWN0IG9iamZpbGUKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9y aWcvZ2RiL29iamZpbGVzLmgJMjAxMS0wMy0wNyAxNzoxNzoyOS4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5oCTIwMTEtMDMtMjAgMTU6MjA6Mjku MDAwMDAwMDAwICswMTAwCitAQCAtNDQxLDYgKzQ0MSwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQogIAot ICNkZWZpbmUgT0JKRl9VU0VSTE9BREVECSgxIDw8IDMpCS8qIFVzZXIgbG9hZGVkICovCisgI2Rl ZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwgNCkKICAKICsvKiBUaGlzIGZpbGUgd2FzIGxv YWRlZCBhY2NvcmRpbmcgdG8gdGhlIEJVSUxEX0lEX0NPUkVfTE9BRFMgcnVsZXMuICAqLwogKwoK ZGlmZiAtLWdpdCBhL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaCBiL2dk Yi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaAppbmRleCA2NGJjNjg2Li5kNzI2 M2ZmIDEwMDY0NAotLS0gYS9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNoLWluZm8ucGF0Y2gK KysrIGIvZ2RiLTYuNi1iejIzNTE5Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNoCkBAIC0zLDExICsz LDExIEBACiAJUG9ydCB0byBHREItNi44cHJlLgogCVJlbW92ZSB0aGUgYFsnIGNoYXJhY3RlciBm cm9tIHRoZSBHREItNi44IGRlZmF1bHQgbWVzc2FnZS4KIAotSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xp bnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMzoyOC4wMDAwMDAw MDAgKzAxMDAKLUBAIC03MjQsNyArNzI0LDcgQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4g IFRyeSBcInNldCBkZQorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvbGludXgtbmF0 LmMJMjAxMS0wMy0yMCAxNjo1OTo1MS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTEwMzIwL2dkYi9saW51eC1uYXQuYwkyMDExLTAzLTIwIDE2OjU5OjUxLjAwMDAwMDAwMCArMDEw MAorQEAgLTcxNiw3ICs3MTYsNyBAQCBob2xkaW5nIHRoZSBjaGlsZCBzdG9wcGVkLiAgVHJ5IFwi c2V0IGRlCiAgCSAgICAgIHJlbW92ZV9icmVha3BvaW50c19waWQgKEdFVF9QSUQgKGluZmVyaW9y X3B0aWQpKTsKICAJICAgIH0KICAKQEAgLTE2LDEwICsxNiwxMCBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKICAJICAgIHsKICAJICAgICAgdGFyZ2V0X3Rlcm1p bmFsX291cnMgKCk7CiAgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRsb2csCi1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNo LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9y ay1kZXRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9mb3JrLWRldGFjaC5jCTIwMTAtMDEtMTUgMDM6MjI6NTIuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0 YWNoLmMJMjAxMS0wMy0yMCAxNjo1OTo1MS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsNTcg QEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgog KwpAQCAtNzgsMTAgKzc4LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guYwogKyAgICB9CiArICByZXR1cm4gMDsKICt9Ci1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0 YWNoLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9mb3JrLWRldGFjaC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guZXhwCTIwMTAtMDEtMTUgMDM6MjI6NTIuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ZvcmstZGV0YWNoLmV4cAkyMDExLTAzLTIwIDE3OjEyOjIyLjAwMDAwMDAwMCArMDEwMAogQEAg LTAsMCArMSwzNiBAQAogKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCkBAIC0xMTcsNSArMTE3LDUgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAKICtnZGJfcnVuX2NtZAogKyMg YFN0YXJ0aW5nIHByb2dyYW06IC4qJyBwcmVmaXggaXMgYXZhaWxhYmxlIHNpbmNlIGdkYi02Ljcu CiArZ2RiX3Rlc3QgIiIgXAotKyAgICAgICAgICJEZXRhY2hpbmcgYWZ0ZXIgZm9yayBmcm9tIGNo aWxkIHByb2Nlc3MuKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5XFwuLioiIFwKKysgICAgICAgICAi RGV0YWNoaW5nIGFmdGVyIGZvcmsgZnJvbSBjaGlsZCBwcm9jZXNzLipcXFxbSW5mZXJpb3IgLiog ZXhpdGVkIG5vcm1hbGx5XFxcXSIgXAogKyAgICAgICAgICJJbmZvIG1lc3NhZ2UgY2F1Z2h0IgoK ZGlmZiAtLWdpdCBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2ggYi9nZGIt Ni44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCmluZGV4IDIxNmE5NWQuLmI1ZWI1MTQg MTAwNjQ0Ci0tLSBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKKysrIGIv Z2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2JmZC9lbGYtYmZkLmgKK0luZGV4OiBnZGItNy4yLjUw LjIwMTEwMzIwL2JmZC9lbGYtYmZkLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvYmZkL2VsZi1iZmQuaAkyMDEwLTA2LTI3IDA2OjA3OjUxLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvYmZkL2VsZi1iZmQuaAkyMDEwLTA3LTEyIDIzOjAw OjA0LjAwMDAwMDAwMCArMDIwMAotQEAgLTIxNzEsOCArMjE3MSwxMCBAQCBleHRlcm4gRWxmX0lu dGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmln L2JmZC9lbGYtYmZkLmgJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYtYmZkLmgJMjAxMS0wMy0yMCAxNToyNDowMi4wMDAw MDAwMDAgKzAxMDAKK0BAIC0yMTkzLDggKzIxOTMsMTAgQEAgZXh0ZXJuIEVsZl9JbnRlcm5hbF9Q aGRyICogX2JmZF9lbGZfZmluZAogIC8qIEV4cG9ydGVkIGludGVyZmFjZSBmb3Igd3JpdGluZyBl bGYgY29yZWZpbGUgbm90ZXMuICovCiAgZXh0ZXJuIGNoYXIgKmVsZmNvcmVfd3JpdGVfbm90ZQog ICAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3Qgdm9pZCAq LCBpbnQpOwpAQCAtMTQsMTEgKzE0LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2Jm ZC9lbGYtYmZkLmgKICBleHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9wcnN0YXR1cwogICAgKGJm ZCAqLCBjaGFyICosIGludCAqLCBsb25nLCBpbnQsIGNvbnN0IHZvaWQgKik7CiAgZXh0ZXJuIGNo YXIgKiBlbGZjb3JlX3dyaXRlX3BzdGF0dXMKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2Jm ZC9lbGYuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvYmZkL2VsZi5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2JmZC9lbGYuYwkyMDEwLTA1LTE4IDA1OjMx OjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvYmZkL2VsZi5jCTIw MTAtMDctMTIgMjI6NTE6MTcuMDAwMDAwMDAwICswMjAwCi1AQCAtODU4MiwxMyArODU4MiwxMiBA QCBlbGZjb3JlX3dyaXRlX25vdGUgKGJmZCAqYWJmZCwKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIw Lm9yaWcvYmZkL2VsZi5jCTIwMTEtMDMtMjAgMTU6MTc6NDIuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLmMJMjAxMS0wMy0yMCAxNToyNDowMi4wMDAwMDAw MDAgKzAxMDAKK0BAIC04ODE0LDEzICs4ODE0LDEyIEBAIGVsZmNvcmVfd3JpdGVfbm90ZSAoYmZk ICphYmZkLAogICAgcmV0dXJuIGJ1ZjsKICB9CiAgCkBAIC0zNCw3ICszNCw3IEBAIEluZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzExL2JmZC9lbGYuYwogIHsKICAgIGNvbnN0IGNoYXIgKm5vdGVfbmFt ZSA9ICJDT1JFIjsKICAgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRf ZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7Ci1AQCAtODU5Niw0OCArODU5NSw1NSBAQCBlbGZjb3Jl X3dyaXRlX3BycHNpbmZvIChiZmQgICphYmZkLAorQEAgLTg4MjgsNDggKzg4MjcsNTUgQEAgZWxm Y29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKICAgIGlmIChiZWQtPmVsZl9iYWNrZW5k X3dyaXRlX2NvcmVfbm90ZSAhPSBOVUxMKQogICAgICB7CiAgICAgICAgY2hhciAqcmV0OwpAQCAt MTA5LDExICsxMDksMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvYmZkL2VsZi5jCiAg CiAgI2lmIGRlZmluZWQgKEhBVkVfUFJTVEFUVVNfVCkKICBjaGFyICoKLUluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAv Z2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmln L2dkYi9saW51eC1uYXQuYwkyMDEwLTA3LTEyIDIzOjA1OjIyLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDctMTIgMjI6NTc6MzQu MDAwMDAwMDAwICswMjAwCi1AQCAtNDQ2Niw2ICs0NDY2LDEzMSBAQCBsaW51eF9zcHVfbWFrZV9j b3JlZmlsZV9ub3RlcyAoYmZkICpvYmZkCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dk Yi9saW51eC1uYXQuYwkyMDExLTAzLTIwIDE1OjE3OjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjIuNTAuMjAxMTAzMjAvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDMtMjAgMTU6MjU6MzYuMDAw MDAwMDAwICswMTAwCitAQCAtNDYwMyw2ICs0NjAzLDEzMSBAQCBsaW51eF9zcHVfbWFrZV9jb3Jl ZmlsZV9ub3RlcyAoYmZkICpvYmZkCiAgICByZXR1cm4gYXJncy5ub3RlX2RhdGE7CiAgfQogIApA QCAtMjQ1LDExICsyNDUsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2xpbnV4 LW5hdC5jCiAgLyogRmlsbHMgdGhlICJ0b19tYWtlX2NvcmVmaWxlX25vdGUiIHRhcmdldCB2ZWN0 b3IuICBCdWlsZHMgdGhlIG5vdGUKICAgICBzZWN0aW9uIGZvciBhIGNvcmVmaWxlLCBhbmQgcmV0 dXJucyBpdCBpbiBhIG1hbGxvYyBidWZmZXIuICAqLwogIAotQEAgLTQ0ODQsMjYgKzQ2MDksMTEg QEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAorQEAgLTQ2MjEsMjYg KzQ3NDYsMTEgQEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAogIAog ICAgaWYgKGdldF9leGVjX2ZpbGUgKDApKQogICAgICB7Ci0tICAgICAgc3RybmNweSAoZm5hbWUs IHN0cnJjaHIgKGdldF9leGVjX2ZpbGUgKDApLCAnLycpICsgMSwgc2l6ZW9mIChmbmFtZSkpOwor LSAgICAgIHN0cm5jcHkgKGZuYW1lLCBsYmFzZW5hbWUgKGdldF9leGVjX2ZpbGUgKDApKSwgc2l6 ZW9mIChmbmFtZSkpOwogLSAgICAgIHN0cm5jcHkgKHBzYXJncywgZ2V0X2V4ZWNfZmlsZSAoMCks IHNpemVvZiAocHNhcmdzKSk7CiAtICAgICAgaWYgKGdldF9pbmZlcmlvcl9hcmdzICgpKQogLQl7 CkBAIC0yNzUsMTEgKzI3NSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGlu dXgtbmF0LmMKICAgICAgfQogIAogICAgLyogRHVtcCBpbmZvcm1hdGlvbiBmb3IgdGhyZWFkcy4g ICovCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvcHJvY2ZzLmMKK0luZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMC0wNy0wNyAxODoxNToxNi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9wcm9jZnMuYwkyMDEwLTA3LTEyIDIz OjA1OjIzLjAwMDAwMDAwMCArMDIwMAotQEAgLTU3NzAsNiArNTc3MCw3IEBAIHByb2Nmc19tYWtl X25vdGVfc2VjdGlvbiAoYmZkICpvYmZkLCBpbnQKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9y aWcvZ2RiL3Byb2Nmcy5jCTIwMTEtMDMtMDkgMTM6NDg6NTUuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDExMDMyMC9nZGIvcHJvY2ZzLmMJMjAxMS0wMy0yMCAxNToyNDowMi4wMDAw MDAwMDAgKzAxMDAKK0BAIC01NzUyLDYgKzU3NTIsNyBAQCBwcm9jZnNfbWFrZV9ub3RlX3NlY3Rp b24gKGJmZCAqb2JmZCwgaW50CiAgICBub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRl X3BycHNpbmZvIChvYmZkLAogIAkJCQkJICAgICAgIG5vdGVfZGF0YSwKICAJCQkJCSAgICAgICBu b3RlX3NpemUsCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1iejQ0Mjc2NS10aHJlYWRlZC1leGVjLXRl c3QucGF0Y2ggYi9nZGItNi44LWJ6NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVzdC5wYXRjaAppbmRl eCA5ODY4OTRkLi4xMDA2NTg4IDEwMDY0NAotLS0gYS9nZGItNi44LWJ6NDQyNzY1LXRocmVhZGVk LWV4ZWMtdGVzdC5wYXRjaAorKysgYi9nZGItNi44LWJ6NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVz dC5wYXRjaApAQCAtMTcwLDQgKzE3MCw0IEBAIGRpZmYgLXVwIC11IC1YIC9yb290L2prcmF0b2No Ly5kaWZmaS5saXN0IC1ydXAgZ2RiLTYuOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzCiArZ2Ri X3J1bl9jbWQgJHtiaW5maWxlX25vdGhyZWFkc30gJHtiaW5maWxlX3RocmVhZHN9IDAKICAKICBn ZGJfdGVzdF9tdWx0aXBsZSB7fSAiUHJvZ3JhbSBleGl0ZWQiIHsKLSAgICAtcmUgIlxyXG5Qcm9n cmFtIGV4aXRlZCBub3JtYWxseS5cclxuJGdkYl9wcm9tcHQgJCIgeworICAgIC1yZSAiXHJcblxc XFtJbmZlcmlvciAuKiBleGl0ZWQgbm9ybWFsbHlcXFxdXHJcbiRnZGJfcHJvbXB0ICQiIHsKCmRp ZmYgLS1naXQgYS9nZGItYWRhLWdkYmFyY2gtY3Jhc2gucGF0Y2ggYi9nZGItYWRhLWdkYmFyY2gt Y3Jhc2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxZmNlMQot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hZGEtZ2RiYXJjaC1jcmFzaC5wYXRjaApAQCAtMCwwICsx LDQ5IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMy9tc2cw MDk0Ni5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIGFkYTogRml4IHJhc2hlcyBvbiBnZGJhcmNoIGdh cmJhZ2UKKworSGkgSm9lbCwKKworZm9yIGdkYi5hZGEvc3RyX3JlZl9jbXAuZXhwIG9uIHg4Nl82 NC1mZWRvcmExNS1saW51eC1nbnUgaXQgdHVybnM6CisKKyhnZGIpIHByaW50IFN0cmluZ19WYXIg KDEgLi4gMykgPSAiSGVsIgorRVJST1I6IFByb2Nlc3Mgbm8gbG9uZ2VyIGV4aXN0cworVU5SRVNP TFZFRDogZ2RiLmFkYS9zdHJfcmVmX2NtcC5leHA6IHByaW50IFN0cmluZ19WYXIgKDEgLi4gMykg PSAiSGVsIgorLT4KKyhnZGIpIHByaW50IFN0cmluZ19WYXIgKDEgLi4gMykgPSAiSGVsIgorJDEg PSBmYWxzZQorKGdkYikgRkFJTDogZ2RiLmFkYS9zdHJfcmVmX2NtcC5leHA6IHByaW50IFN0cmlu Z19WYXIgKDEgLi4gMykgPSAiSGVsIgorCitHREIgY3Jhc2hlcyB0aGUgZm9ybWVyIHdheSB3aXRo b3V0IHRoaXMgZml4IG9uOgorCWdjYy1nbmF0LTQuNi4wLTAuMTQuZmMxNS54ODZfNjQKKwlnY2Mt Z25hdC00LjUuMS00LmZjMTQueDg2XzY0CisKK0kgY2Fubm90IHRlc3QgRlNGIGdjYyA8PTQuNSBt eXNlbGYgYXMgaXRzIEFkYSBidWlsZCBlcnJvcnMgb3V0IGZvciBtZSBvbjoKKwl1aW50cC5hZGI6 MjQyOjIyOiBleHBlY3QgdHlwZSAiSG51bSIgZGVmaW5lZCBhdCBsaW5lIDkxCisKK0dEQiBQQVNT ZXMgb24gdGhlc2UgR05BVHMgZXZlbiB3aXRob3V0IHRoaXMgZml4IGJ1dCB0aGF0IGlzIG5vdCB0 aGUgcG9pbnQ6CisJR05BVCA0LjcuMCAyMDExMDMyMCAoZXhwZXJpbWVudGFsKQorCUdOQVQgNC42 LjAgMjAxMTAzMjAgKHByZXJlbGVhc2UpCisKK1RoaXMgaXMgb25seSBhIHN1Z2dlc3Rpb24sIEkg ZG8gbm90IGtub3cgbXVjaCBhYm91dCB0aGUgYWRhLSogY29kZS4KKworCitUaGFua3MsCitKYW4K KworCitnZGIvCisyMDExLTAzLTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisKKwkqIGFkYS1sYW5nLmMgKHJlcGxhY2Vfb3BlcmF0b3Jfd2l0aF9jYWxsKTog Q29weSBhbHNvIEdEQkFSQ0guCisKKy0tLSBhL2dkYi9hZGEtbGFuZy5jCisrKysgYi9nZGIvYWRh LWxhbmcuYworQEAgLTM2NjEsNiArMzY2MSw3IEBAIHJlcGxhY2Vfb3BlcmF0b3Jfd2l0aF9jYWxs IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKmV4cHAsIGludCBwYywgaW50IG5hcmdzLAorIAorICAgbmV3 ZXhwLT5uZWx0cyA9IGV4cC0+bmVsdHMgKyA3IC0gb3BsZW47CisgICBuZXdleHAtPmxhbmd1YWdl X2RlZm4gPSBleHAtPmxhbmd1YWdlX2RlZm47CisrICBuZXdleHAtPmdkYmFyY2ggPSBleHAtPmdk YmFyY2g7CisgICBtZW1jcHkgKG5ld2V4cC0+ZWx0cywgZXhwLT5lbHRzLCBFWFBfRUxFTV9UT19C WVRFUyAocGMpKTsKKyAgIG1lbWNweSAobmV3ZXhwLT5lbHRzICsgcGMgKyA3LCBleHAtPmVsdHMg KyBwYyArIG9wbGVuLAorICAgICAgICAgICBFWFBfRUxFTV9UT19CWVRFUyAoZXhwLT5uZWx0cyAt IHBjIC0gb3BsZW4pKTsKKwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVw LWRpc2FibGVkLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0 Y2gKaW5kZXggODE2NjFjYS4uOGQxNmU2YSAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRk b25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAt ZGlzYWJsZWQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIy Mi9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvYnJlYWtw b2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIyMi5vcmlnL2dkYi9icmVh a3BvaW50LmMJMjAxMS0wMi0yMyAwMDoxMjo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMjIyL2dkYi9icmVha3BvaW50LmMJMjAxMS0wMi0yMyAwMDoxMzowNC4wMDAwMDAw MDAgKzAxMDAKLUBAIC0xMDU0Nyw2ICsxMDU0Nyw1MCBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2Nh dGlvbnMgKHN0cnVjdCBicmVhCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi9icmVh a3BvaW50LmMJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTEwMzIwL2dkYi9icmVha3BvaW50LmMJMjAxMS0wMy0yMCAxNToyODo0OC4wMDAwMDAw MDAgKzAxMDAKK0BAIC0xMDY3OCw2ICsxMDY3OCw1MCBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2Nh dGlvbnMgKHN0cnVjdCBicmVhCiAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDEpOwog IH0KICAKQEAgLTUzLDI1ICs1MywyNSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIyMi9nZGIv YnJlYWtwb2ludC5jCiAgLyogUmVzZXQgYSBicmVha3BvaW50IGdpdmVuIGl0J3Mgc3RydWN0IGJy ZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3ZSByZXR1cm4gZW5kcyB1cCBiZWluZyB0 aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3JzLgogICAgIFVudXNlZCBpbiB0aGlzIGNh c2UuICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMjIvZ2RiL2JyZWFrcG9pbnQuaAorSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2JyZWFrcG9pbnQuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuNTAuMjAxMTAyMjIub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDItMjMgMDA6 MTI6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIyMi9nZGIvYnJlYWtw b2ludC5oCTIwMTEtMDItMjMgMDA6MTM6MTYuMDAwMDAwMDAwICswMTAwCi1AQCAtMTE5Miw0ICsx MTkyLDcgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQorLS0tIGdk Yi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDMtMjAgMTU6MTc6 NDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvYnJlYWtwb2lu dC5oCTIwMTEtMDMtMjAgMTU6Mjk6MzMuMDAwMDAwMDAwICswMTAwCitAQCAtMTIxMCw0ICsxMjEw LDcgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYgogIAotIGV4dGVy biBpbnQgZ2V0X251bWJlcl9vcl9yYW5nZSAoY2hhciAqKnBwKTsKKyBleHRlcm4gaW50IHVzZXJf YnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKICAKICtleHRlcm4gdm9pZCBicmVh a3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkJCSAgc3RydWN0 IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQ T0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMjIvZ2RiL29iamZpbGVzLmMKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi41MC4yMDExMDIyMi5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDEtMTAgMjE6Mzg6 NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIyMi9nZGIvb2JqZmlsZXMu YwkyMDExLTAyLTIzIDAwOjEzOjA0LjAwMDAwMDAwMCArMDEwMAotQEAgLTg0Niw2ICs4NDYsMTEg QEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIAkJCQlvYmpfc2Vj dGlvbl9hZGRyIChzKSk7Ci0gICAgIH0KKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2Ri L29iamZpbGVzLmMJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDMtMjAgMTU6Mjk6MDUuMDAwMDAw MDAwICswMTAwCitAQCAtODUxLDYgKzg1MSwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0 IG9iamZpbGUgKm9iamZpCisgICAgIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fcmVs b2NhdGVfcHJvYmUgKG9iamZpbGUsCisgCQkJCQkJICAgIG5ld19vZmZzZXRzLCBkZWx0YSk7CiAg CiArICAvKiBGaW5hbCBjYWxsIG9mIGJyZWFrcG9pbnRfcmVfc2V0IGNhbiBrZWVwIGJyZWFrcG9p bnQgbG9jYXRpb25zIGRpc2FibGVkIGlmCiArICAgICB0aGVpciBhZGRyZXNzZXMgbWF0Y2guICAq LwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4 IDY5MGIwMjUuLjRiNGE2YTYgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2Ri LWFyY2hlci5wYXRjaApAQCAtMiwyMiArMiwxMTYgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2dk Yi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNo ZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1pdCBlODAyZTFmYjIzZDQ1 NWQ2NzVkY2EwZjRkN2Q2YzhkZjE4NDY3NzE5Citjb21taXQgNmIyYTBiZjc1ODI2M2QyMmJmMmIz YmQyZTAyNjY1Y2YwYzI0YjBiZQogCiBicmFuY2ggYGFyY2hlcicgLSB0aGUgbWVyZ2Ugb2YgYnJh bmNoZXM6CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKIGFyY2hlci1qYW5rcmF0b2NodmlsLXdh dGNocG9pbnQzCiBhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwogYXJjaGVyLXRyb21leS1weXRo b24KK2FyY2hlci1zZXJnaW9kai1zdGFwCiAjVE9ETz86YXJjaGVyLXRyb21leS1vcHRpb25hbC1w c3ltdGFiIChjaGVycnktcGlja2VkIGZyb20gcG9zdC03LjIgbWFzdGVyKQogI1RPRE8/OmFyY2hl ci10cm9tZXktdGhyZWFkZWQtZHdhcmYKIAogCitkaWZmIC0tZ2l0IGEvYmZkL2VsZi1iZmQuaCBi L2JmZC9lbGYtYmZkLmgKK2luZGV4IDIxZWMzOGYuLjUwYzEyNzIgMTAwNjQ0CistLS0gYS9iZmQv ZWxmLWJmZC5oCisrKysgYi9iZmQvZWxmLWJmZC5oCitAQCAtMTQ3Niw2ICsxNDc2LDEzIEBAIGVu dW0KKyAgIFRhZ19jb21wYXRpYmlsaXR5ID0gMzIKKyB9OworIAorK3N0cnVjdCBzZHRfbm90ZQor K3sKKysgIHN0cnVjdCBzZHRfbm90ZSAqbmV4dDsKKysgIGJmZF9zaXplX3R5cGUgc2l6ZTsKKysg IGJmZF9ieXRlIGRhdGFbMV07CisrfTsKKysKKyAvKiBTb21lIHByaXZhdGUgZGF0YSBpcyBzdGFz aGVkIGF3YXkgZm9yIGZ1dHVyZSB1c2UgdXNpbmcgdGhlIHRkYXRhIHBvaW50ZXIKKyAgICBpbiB0 aGUgYmZkIHN0cnVjdHVyZS4gICovCisgCitAQCAtMTYzMyw2ICsxNjQwLDggQEAgc3RydWN0IGVs Zl9vYmpfdGRhdGEKKyAgIGJmZF9zaXplX3R5cGUgYnVpbGRfaWRfc2l6ZTsKKyAgIGJmZF9ieXRl ICpidWlsZF9pZDsKKyAKKysgIHN0cnVjdCBzZHRfbm90ZSAqc2R0X25vdGVfaGVhZDsKKysKKyAg IC8qIFRydWUgaWYgdGhlIGJmZCBjb250YWlucyBzeW1ib2xzIHRoYXQgaGF2ZSB0aGUgU1RUX0dO VV9JRlVOQworICAgICAgc3ltYm9sIHR5cGUuICBVc2VkIHRvIHNldCB0aGUgb3NhYmkgZmllbGQg aW4gdGhlIEVMRiBoZWFkZXIKKyAgICAgIHN0cnVjdHVyZS4gICovCitkaWZmIC0tZ2l0IGEvYmZk L2VsZi5jIGIvYmZkL2VsZi5jCitpbmRleCBmNjlhYmYyLi4zYzAzOGViIDEwMDY0NAorLS0tIGEv YmZkL2VsZi5jCisrKysgYi9iZmQvZWxmLmMKK0BAIC04NDE2LDYgKzg0MTYsMzcgQEAgZWxmb2Jq X2dyb2tfZ251X25vdGUgKGJmZCAqYWJmZCwgRWxmX0ludGVybmFsX05vdGUgKm5vdGUpCisgICAg IH0KKyB9CisgCisrI2RlZmluZSBTRFRfTk9URV9UWVBFIDMKKysKKytzdGF0aWMgYmZkX2Jvb2xl YW4KKytlbGZvYmpfZ3Jva19zdGFwc2R0X25vdGVfMSAoYmZkICphYmZkLCBFbGZfSW50ZXJuYWxf Tm90ZSAqbm90ZSkKKyt7CisrICBzdHJ1Y3Qgc2R0X25vdGUgKmN1ciA9CisrICAgIChzdHJ1Y3Qg c2R0X25vdGUgKikgYmZkX2FsbG9jIChhYmZkLCBzaXplb2YgKHN0cnVjdCBzZHRfbm90ZSkKKysJ CQkJICAgKyBub3RlLT5kZXNjc3opOworKworKyAgY3VyLT5uZXh0ID0gKHN0cnVjdCBzZHRfbm90 ZSAqKSAoZWxmX3RkYXRhIChhYmZkKSktPnNkdF9ub3RlX2hlYWQ7CisrICBjdXItPnNpemUgPSAo YmZkX3NpemVfdHlwZSkgbm90ZS0+ZGVzY3N6OworKyAgbWVtY3B5IChjdXItPmRhdGEsIG5vdGUt PmRlc2NkYXRhLCBub3RlLT5kZXNjc3opOworKworKyAgZWxmX3RkYXRhIChhYmZkKS0+c2R0X25v dGVfaGVhZCA9IGN1cjsKKysKKysgIHJldHVybiBUUlVFOworK30KKysKKytzdGF0aWMgYmZkX2Jv b2xlYW4KKytlbGZvYmpfZ3Jva19zdGFwc2R0X25vdGUgKGJmZCAqYWJmZCwgRWxmX0ludGVybmFs X05vdGUgKm5vdGUpCisreworKyAgc3dpdGNoIChub3RlLT50eXBlKQorKyAgICB7CisrICAgIGNh c2UgU0RUX05PVEVfVFlQRToKKysgICAgICByZXR1cm4gZWxmb2JqX2dyb2tfc3RhcHNkdF9ub3Rl XzEgKGFiZmQsIG5vdGUpOworKworKyAgICBkZWZhdWx0OgorKyAgICAgIHJldHVybiBUUlVFOwor KyAgICB9CisrfQorKworIHN0YXRpYyBiZmRfYm9vbGVhbgorIGVsZmNvcmVfbmV0YnNkX2dldF9s d3BpZCAoRWxmX0ludGVybmFsX05vdGUgKm5vdGUsIGludCAqbHdwaWRwKQorIHsKK0BAIC05MTg5 LDYgKzkyMjAsMTIgQEAgZWxmX3BhcnNlX25vdGVzIChiZmQgKmFiZmQsIGNoYXIgKmJ1Ziwgc2l6 ZV90IHNpemUsIGZpbGVfcHRyIG9mZnNldCkKKyAJICAgICAgaWYgKCEgZWxmb2JqX2dyb2tfZ251 X25vdGUgKGFiZmQsICZpbikpCisgCQlyZXR1cm4gRkFMU0U7CisgCSAgICB9CisrCSAgZWxzZSBp ZiAoaW4ubmFtZXN6ID09IHNpemVvZiAic3RhcHNkdCIKKysJCSAgICYmIHN0cmNtcCAoaW4ubmFt ZWRhdGEsICJzdGFwc2R0IikgPT0gMCkKKysJICAgIHsKKysJICAgICAgaWYgKCEgZWxmb2JqX2dy b2tfc3RhcHNkdF9ub3RlIChhYmZkLCAmaW4pKQorKwkJcmV0dXJuIEZBTFNFOworKwkgICAgfQor IAkgIGJyZWFrOworIAl9CisgCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01h a2VmaWxlLmluCi1pbmRleCAwMGQ2MjRmLi42MzVhY2QzIDEwMDY0NAoraW5kZXggNDg5YjFlOS4u YzMzMmIxYiAxMDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxl LmluCi1AQCAtODA4LDcgKzgwOCw4IEBAIGFubm90YXRlLmggc2ltLXJlZ25vLmggZGljdGlvbmFy eS5oIGRmcC5oIG1haW4uaCBmcmFtZS11bndpbmQuaAlcCitAQCAtNzE2LDggKzcxNiw4IEBAIFNG SUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQu YyBhZGEtdGFza3MuYyBcCisgCXNlbnRpbmVsLWZyYW1lLmMgXAorIAlzZXJpYWwuYyBzZXItYmFz ZS5jIHNlci11bml4LmMgXAorIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwKKy0J c3RhYnNyZWFkLmMgc3RhY2suYyBzdGQtcmVncy5jIHN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5 bW1pc2MuYyBcCistCXN5bXRhYi5jIFwKKysJc3RhYnNyZWFkLmMgc3RhY2suYyBzdGFwLXByb2Jl LmMgc3RkLXJlZ3MuYyBcCisrCXN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5bW1pc2MuYyBzeW10 YWIuYyBcCisgCXRhcmdldC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMg XAorIAl0aHJlYWQuYyB0b3AuYyB0cmFjZXBvaW50LmMgXAorIAl0cmFkLWZyYW1lLmMgXAorQEAg LTgwMSw3ICs4MDEsOCBAQCBhbm5vdGF0ZS5oIHNpbS1yZWduby5oIGRpY3Rpb25hcnkuaCBkZnAu aCBtYWluLmggZnJhbWUtdW53aW5kLmgJXAogIHJlbW90ZS1maWxlaW8uaCBpMzg2LWxpbnV4LXRk ZXAuaCB2YXgtdGRlcC5oIG9iamMtbGFuZy5oIFwKICBzZW50aW5lbC1mcmFtZS5oIGJjYWNoZS5o IHN5bWZpbGUuaCB3aW5kb3dzLXRkZXAuaCBsaW51eC10ZGVwLmggXAogIGdkYl91c2xlZXAuaCBq aXQuaCB4bWwtc3lzY2FsbC5oIG1pY3JvYmxhemUtdGRlcC5oIFwKQEAgLTI3LDcgKzEyMSwxNiBA QCBpbmRleCAwMGQ2MjRmLi42MzVhY2QzIDEwMDY0NAogIAogICMgSGVhZGVyIGZpbGVzIHRoYXQg YWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgogIAot QEAgLTEzMTcsNiArMTMxOCwxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZp Zy5zdGF0dXMKK0BAIC04ODYsNyArODg3LDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQo Q09ORklHX09CUykgJChZWU9CSikgXAorIAlwcm9sb2d1ZS12YWx1ZS5vIG1lbW9yeS1tYXAubyBt ZW1yYW5nZS5vIHhtbC1zdXBwb3J0Lm8geG1sLXN5c2NhbGwubyBcCisgCXRhcmdldC1kZXNjcmlw dGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCisgCWlu ZmVyaW9yLm8gb3NkYXRhLm8gZ2RiX3VzbGVlcC5vIHJlY29yZC5vIGdjb3JlLm8gXAorLQlqaXQu byBwcm9nc3BhY2UubworKwlqaXQubyBwcm9nc3BhY2UubyBzdGFwLXByb2JlLm8KKyAKKyBUU09C UyA9IGluZmxvdy5vCisgCitAQCAtMTMwNyw2ICsxMzA4LDEyIEBAIHN0YW1wLWg6ICQoc3JjZGly KS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENPTkZJR19MSU5LUz0gXAogIAkgICQoU0hF TEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTQwLDExICsxNDMsMjYgQEAgaW5kZXggMDBkNjI0Zi4u NjM1YWNkMyAxMDA2NDQKICBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlIGNvbmZp Z3VyZS50Z3QgY29uZmlndXJlLmhvc3QKICAJJChTSEVMTCkgY29uZmlnLnN0YXR1cyAtLXJlY2hl Y2sKICAKK2RpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCitpbmRleCBmZWViZjYxLi4y NzlhMWM5IDEwMDY0NAorLS0tIGEvZ2RiL05FV1MKKysrKyBiL2dkYi9ORVdTCitAQCAtMzYsNiAr MzYsMTAgQEAKKyAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIE9wZW5DTCBDIGxhbmd1YWdlICho dHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5jbCkKKyAgIGhhcyBiZWVuIGludGVncmF0ZWQgaW50 byBHREIuCisgCisrKiBHREIgbm93IGhhcyBzdXBwb3J0IGZvciBTeXN0ZW1UYXAgPHN5cy9zZHQu aD4gcHJvYmVzLiAgWW91IGNhbiBzZXQgYQorKyAgYnJlYWtwb2ludCB1c2luZyB0aGUgbmV3ICJw cm9iZToiIGxpbmVzcGVjIGFuZCBpbnNwZWN0IHRoZSBwcm9iZQorKyAgYXJndW1lbnRzIHVzaW5n IHRoZSBuZXcgJF9wcm9iZV9hcmcgZmFtaWx5IG9mIGNvbnZlbmllbmNlIHZhcmlhYmxlcy4KKysK KyAqIFB5dGhvbiBzY3JpcHRpbmcKKyAKKyAgICoqIFBhcmFtZXRlcnMgY2FuIG5vdyBiZSBiZSBz dWItY2xhc3NlZCBpbiBQeXRob24sIGFuZCBpbiBwYXJ0aWN1bGFyCiBkaWZmIC0tZ2l0IGEvZ2Ri L2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5kZXggZDBhMTAxNC4uMzI1MzdjYiAxMDA2 NDQKK2luZGV4IGVkNTFhYjAuLjY4NTE4MTAgMTAwNjQ0CiAtLS0gYS9nZGIvYWRhLWxhbmcuYwog KysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMTM4OSw2ICsxMTM4OSw3IEBAIGFkYV9vcGVyYXRv cl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxl bnAsCitAQCAtMTEzOTAsNiArMTEzOTAsNyBAQCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChjb25zdCBz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5wLAogIAogIHN0YXRpYyBp bnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3Ms CkBAIC01Miw3ICsxNzAsNyBAQCBpbmRleCBkMGExMDE0Li4zMjUzN2NiIDEwMDY0NAogIAkJICAg IGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRh KSwKICAJCSAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xMTQwMywxMiArMTE0MDQsMTUgQEAgYWRh X29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorQEAgLTEx NDA0LDEyICsxMTQwNSwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCiAgCWJyZWFrOwogIAogICAgICAgIGRlZmF1bHQ6CkBAIC0yOTIsNiAr NDEwLDI5IEBAIGluZGV4IGE4NjlmODUuLmM1OWRhYTAgMTAwNjQ0CiAgfQogIAwKICAKK2RpZmYg LS1naXQgYS9nZGIvYXgtZ2RiLmMgYi9nZGIvYXgtZ2RiLmMKK2luZGV4IGQxNzM2ZTEuLjNlNTQ3 MTYgMTAwNjQ0CistLS0gYS9nZGIvYXgtZ2RiLmMKKysrKyBiL2dkYi9heC1nZGIuYworQEAgLTIw MDEsNyArMjAwMSw4IEBAIGdlbl9leHByIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCB1bmlvbiBl eHBfZWxlbWVudCAqKnBjLAorIAorICAgICBjYXNlIE9QX0lOVEVSTkFMVkFSOgorICAgICAgIHsK Ky0JY29uc3QgY2hhciAqbmFtZSA9IGludGVybmFsdmFyX25hbWUgKCgqcGMpWzFdLmludGVybmFs dmFyKTsKKysJc3RydWN0IGludGVybmFsdmFyICp2YXIgPSAoKnBjKVsxXS5pbnRlcm5hbHZhcjsK KysJY29uc3QgY2hhciAqbmFtZSA9IGludGVybmFsdmFyX25hbWUgKHZhcik7CisgCXN0cnVjdCB0 cmFjZV9zdGF0ZV92YXJpYWJsZSAqdHN2OworIAorIAkoKnBjKSArPSAzOworQEAgLTIwMTUsNyAr MjAxNiw3IEBAIGdlbl9leHByIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCB1bmlvbiBleHBfZWxl bWVudCAqKnBjLAorIAkgICAgdmFsdWUtPmtpbmQgPSBheHNfcnZhbHVlOworIAkgICAgdmFsdWUt PnR5cGUgPSBidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5fbG9uZ19sb25nOwor IAkgIH0KKy0JZWxzZQorKwllbHNlIGlmICghIGNvbXBpbGVfaW50ZXJuYWx2YXJfdG9fYXggKHZh ciwgYXgsIHZhbHVlKSkKKyAJICBlcnJvciAoXygiJCVzIGlzIG5vdCBhIHRyYWNlIHN0YXRlIHZh cmlhYmxlOyBHREIgYWdlbnQgIgorIAkJICAgImV4cHJlc3Npb25zIGNhbm5vdCB1c2UgY29udmVu aWVuY2UgdmFyaWFibGVzLiIpLCBuYW1lKTsKKyAgICAgICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2Js b2NrLmMgYi9nZGIvYmxvY2suYwogaW5kZXggNzc2YWU1My4uMzU0NGNmMiAxMDA2NDQKIC0tLSBh L2dkYi9ibG9jay5jCkBAIC0zMzAsMTAgKzQ3MSwxMCBAQCBpbmRleCAwN2Q1YmM3Li5mYWQ4OWIx IDEwMDY0NAogKwogICNlbmRpZiAvKiBCTE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2Nr ZnJhbWUuYyBiL2dkYi9ibG9ja2ZyYW1lLmMKLWluZGV4IGI5YWFmNTQuLmUxZjMyNDIgMTAwNjQ0 CitpbmRleCA1YmM1OTMwLi4zYjU0NmE3IDEwMDY0NAogLS0tIGEvZ2RiL2Jsb2NrZnJhbWUuYwog KysrIGIvZ2RiL2Jsb2NrZnJhbWUuYwotQEAgLTE2MCw2ICsxNjAsNyBAQCBzdGF0aWMgQ09SRV9B RERSIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IDA7CitAQCAtMTYzLDYgKzE2Myw3IEBAIHN0YXRp YyBDT1JFX0FERFIgY2FjaGVfcGNfZnVuY3Rpb25fbG93ID0gMDsKICBzdGF0aWMgQ09SRV9BRERS IGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwogIHN0YXRpYyBjaGFyICpjYWNoZV9wY19mdW5j dGlvbl9uYW1lID0gMDsKICBzdGF0aWMgc3RydWN0IG9ial9zZWN0aW9uICpjYWNoZV9wY19mdW5j dGlvbl9zZWN0aW9uID0gTlVMTDsKQEAgLTM0MSw3ICs0ODIsNyBAQCBpbmRleCBiOWFhZjU0Li5l MWYzMjQyIDEwMDY0NAogIAogIC8qIENsZWFyIGNhY2hlLCBlLmcuIHdoZW4gc3ltYm9sIHRhYmxl IGlzIGRpc2NhcmRlZC4gICovCiAgCi1AQCAtMTcwLDYgKzE3MSw3IEBAIGNsZWFyX3BjX2Z1bmN0 aW9uX2NhY2hlICh2b2lkKQorQEAgLTE3Myw2ICsxNzQsNyBAQCBjbGVhcl9wY19mdW5jdGlvbl9j YWNoZSAodm9pZCkKICAgIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwogICAgY2FjaGVfcGNf ZnVuY3Rpb25fbmFtZSA9IChjaGFyICopIDA7CiAgICBjYWNoZV9wY19mdW5jdGlvbl9zZWN0aW9u ID0gTlVMTDsKQEAgLTM0OSwxNiArNDkwLDM0IEBAIGluZGV4IGI5YWFmNTQuLmUxZjMyNDIgMTAw NjQ0CiAgfQogIAogIC8qIEZpbmRzIHRoZSAiZnVuY3Rpb24iICh0ZXh0IHN5bWJvbCkgdGhhdCBp cyBzbWFsbGVyIHRoYW4gUEMgYnV0Ci1AQCAtMTg1LDcgKzE4Nyw3IEBAIGNsZWFyX3BjX2Z1bmN0 aW9uX2NhY2hlICh2b2lkKQorQEAgLTE4MCwxNyArMTgyLDE5IEBAIGNsZWFyX3BjX2Z1bmN0aW9u X2NhY2hlICh2b2lkKQorICAgICpOQU1FIGFuZC9vciAqQUREUkVTUyBjb25kaXRpb25hbGx5IGlm IHRoYXQgcG9pbnRlciBpcyBub24tbnVsbC4KKyAgICBJZiBFTkRBRERSIGlzIG5vbi1udWxsLCB0 aGVuIHNldCAqRU5EQUREUiB0byBiZSB0aGUgZW5kIG9mIHRoZQorICAgIGZ1bmN0aW9uIChleGNs dXNpdmUpLCBidXQgcGFzc2luZyBFTkRBRERSIGFzIG5vbi1udWxsIG1lYW5zIHRoYXQKKy0gICB0 aGUgZnVuY3Rpb24gbWlnaHQgY2F1c2Ugc3ltYm9scyB0byBiZSByZWFkLiAgVGhpcyBmdW5jdGlv biBlaXRoZXIKKy0gICBzdWNjZWVkcyBvciBmYWlscyAobm90IGhhbGZ3YXkgc3VjY2VlZHMpLiAg SWYgaXQgc3VjY2VlZHMsIGl0IHNldHMKKy0gICAqTkFNRSwgKkFERFJFU1MsIGFuZCAqRU5EQURE UiB0byByZWFsIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIDEuCistICAgSWYgaXQgZmFpbHMsIGl0 IHNldHMgKk5BTUUsICpBRERSRVNTLCBhbmQgKkVOREFERFIgdG8gemVybyBhbmQKKy0gICByZXR1 cm5zIDAuICAqLworKyAgIHRoZSBmdW5jdGlvbiBtaWdodCBjYXVzZSBzeW1ib2xzIHRvIGJlIHJl YWQuICBJZiBJU19HTlVfSUZVTkNfUCBpcyBwcm92aWRlZAorKyAgICpJU19HTlVfSUZVTkNfUCBp cyBzZXQgdG8gMSBvbiByZXR1cm4gaWYgdGhlIGZ1bmN0aW9uIGlzIFNUVF9HTlVfSUZVTkMuCisr ICAgVGhpcyBmdW5jdGlvbiBlaXRoZXIgc3VjY2VlZHMgb3IgZmFpbHMgKG5vdCBoYWxmd2F5IHN1 Y2NlZWRzKS4gIElmIGl0CisrICAgc3VjY2VlZHMsIGl0IHNldHMgKk5BTUUsICpBRERSRVNTLCBh bmQgKkVOREFERFIgdG8gcmVhbCBpbmZvcm1hdGlvbiBhbmQKKysgICByZXR1cm5zIDEuICBJZiBp dCBmYWlscywgaXQgc2V0cyAqTkFNRSwgKkFERFJFU1MsICpFTkRBRERSIGFuZAorKyAgICpJU19H TlVfSUZVTkNfUCB0byB6ZXJvIGFuZCByZXR1cm5zIDAuICAqLwogIAogIC8qIEJhY2t3YXJkIGNv bXBhdGliaWxpdHksIG5vIHNlY3Rpb24gYXJndW1lbnQuICAqLwogIAotLWludAotK2VudW0gZmlu ZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX3R5cGUKLSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENP UkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKLSAJCQkgIENPUkVf QUREUiAqZW5kYWRkcikKKyBpbnQKKy1maW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQURE UiBwYywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKKy0JCQkgIENPUkVfQUREUiAq ZW5kYWRkcikKKytmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb25fZ251X2lmdW5jIChDT1JFX0FERFIg cGMsIGNoYXIgKipuYW1lLAorKwkJCQkgICAgQ09SRV9BRERSICphZGRyZXNzLCBDT1JFX0FERFIg KmVuZGFkZHIsCisrCQkJCSAgICBpbnQgKmlzX2dudV9pZnVuY19wKQogIHsKLUBAIC0yMzcsNiAr MjM5LDcgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipu YW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb247 CisgICBzdHJ1Y3Qgc3ltYm9sICpmOworQEAgLTI0MCw2ICsyNDQsNyBAQCBmaW5kX3BjX3BhcnRp YWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVz cywKICAJICBjYWNoZV9wY19mdW5jdGlvbl9oaWdoID0gQkxPQ0tfRU5EIChTWU1CT0xfQkxPQ0tf VkFMVUUgKGYpKTsKICAJICBjYWNoZV9wY19mdW5jdGlvbl9uYW1lID0gU1lNQk9MX0xJTktBR0Vf TkFNRSAoZik7CiAgCSAgY2FjaGVfcGNfZnVuY3Rpb25fc2VjdGlvbiA9IHNlY3Rpb247CkBAIC0z NjYsMTIgKzUyNSwxMyBAQCBpbmRleCBiOWFhZjU0Li5lMWYzMjQyIDEwMDY0NAogIAkgIGdvdG8g cmV0dXJuX2NhY2hlZF92YWx1ZTsKICAJfQogICAgICB9Ci1AQCAtMjU5LDEyICsyNjIsMTMgQEAg ZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JF X0FERFIgKmFkZHJlc3MsCitAQCAtMjYyLDEyICsyNjcsMTUgQEAgZmluZF9wY19wYXJ0aWFsX2Z1 bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCiAg CSphZGRyZXNzID0gMDsKICAgICAgICBpZiAoZW5kYWRkciAhPSBOVUxMKQogIAkqZW5kYWRkciA9 IDA7Ci0tICAgICAgcmV0dXJuIDA7Ci0rICAgICAgcmV0dXJuIEZJTkRfUENfUEFSVElBTF9GVU5D VElPTl9OT1RfRk9VTkQ7CisrICAgICAgaWYgKGlzX2dudV9pZnVuY19wICE9IE5VTEwpCisrCSpp c19nbnVfaWZ1bmNfcCA9IDA7CisgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KICAKICAgIGNhY2hl X3BjX2Z1bmN0aW9uX2xvdyA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKQEAgLTM4 MSwyOSArNTQxLDQzIEBAIGluZGV4IGI5YWFmNTQuLmUxZjMyNDIgMTAwNjQ0CiAgCiAgICAvKiBJ ZiB0aGUgbWluaW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0IGZvciB0aGUgY2FjaGUuCiAg ICAgICBPdGhlcndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5leHQgbWluaW1hbCBzeW1ib2wg aW4gdGhlIHNhbWUKLUBAIC0zMjcsNyArMzMxLDggQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9u IChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCitAQCAtMzMw LDkgKzMzOCwyMiBAQCBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hh ciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKICAJKmVuZGFkZHIgPSBjYWNoZV9wY19mdW5j dGlvbl9oaWdoOwogICAgICB9CiAgCi0tICByZXR1cm4gMTsKLSsgIHJldHVybiBjYWNoZV9wY19m dW5jdGlvbl9pc19nbnVfaWZ1bmMgPyBGSU5EX1BDX1BBUlRJQUxfRlVOQ1RJT05fR05VX0lGVU5D Ci0rCQkJCQk6IEZJTkRfUENfUEFSVElBTF9GVU5DVElPTl9OT1JNQUw7CisrICBpZiAoaXNfZ251 X2lmdW5jX3ApCisrICAgICppc19nbnVfaWZ1bmNfcCA9IGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2du dV9pZnVuYzsKKysKKyAgIHJldHVybiAxOwogIH0KICAKKysvKiBTZWUgZmluZF9wY19wYXJ0aWFs X2Z1bmN0aW9uX2dudV9pZnVuYywgb25seSB0aGUgSVNfR05VX0lGVU5DX1AgcGFyYW1ldGVyCisr ICAgaXMgb21pdHRlZCBoZXJlIGZvciBiYWNrd2FyZCBBUEkgY29tcGF0aWJpbGl0eS4gICovCisr CisraW50CisrZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipu YW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisrCQkJICBDT1JFX0FERFIgKmVuZGFkZHIpCisrewor KyAgcmV0dXJuIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbl9nbnVfaWZ1bmMgKHBjLCBuYW1lLCBh ZGRyZXNzLCBlbmRhZGRyLCBOVUxMKTsKKyt9CisrCiAgLyogUmV0dXJuIHRoZSBpbm5lcm1vc3Qg c3RhY2sgZnJhbWUgZXhlY3V0aW5nIGluc2lkZSBvZiBCTE9DSywgb3IgTlVMTAorICAgIGlmIHRo ZXJlIGlzIG5vIHN1Y2ggZnJhbWUuICBJZiBCTE9DSyBpcyBOVUxMLCBqdXN0IHJldHVybiBOVUxM LiAgKi8KKyAKIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQu YwotaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKK2luZGV4IGM1NWU1YzAuLjFhNzFjZjgg MTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5jCi1A QCAtNjMsNiArNjMsNyBAQAorQEAgLTYyLDYgKzYyLDggQEAKKyAjaW5jbHVkZSAiaml0LmgiCiAg I2luY2x1ZGUgInhtbC1zeXNjYWxsLmgiCiAgI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCisrI2lu Y2x1ZGUgImdkYl9yZWdleC5oIgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCiAgI2luY2x1ZGUg ImNsaS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAicmVnY2FjaGUuaCIKICAKICAvKiByZWFkbGlu ZSBpbmNsdWRlIGZpbGVzICovCi0gI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAt MTA1LDYgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIGJyZWFrX2NvbW1hbmRfMSAoY2hhciAqLCBpbnQs IGludCk7CitAQCAtMTA2LDYgKzEwOCw5IEBAIHN0YXRpYyB2b2lkIGJyZWFrX2NvbW1hbmRfMSAo Y2hhciAqLCBpbnQsIGludCk7CiAgCiAgc3RhdGljIHZvaWQgbWVudGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKik7CiAgCkBAIC00MTMsMjEgKzU4NywxMyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYy IDEwMDY0NAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBnZGJ0ayBzb3VyY2VzIGFuZCB0 aHVzIGNhbiBub3QgYmUgbWFkZQogICAgIHN0YXRpYy4gICovCiAgc3RydWN0IGJyZWFrcG9pbnQg KnNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi1AQCAtMjE4LDYg KzIyMiwxMCBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlX3RyYWNlX2NvbW1hbmQgKGNoYXIgKiwgaW50 KTsKLSAKLSBzdGF0aWMgdm9pZCB0cmFjZV9wYXNzX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLSAK LStzdGF0aWMgdm9pZCBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQg KmIpOwotKwotK3N0YXRpYyB2b2lkIGdudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIpOwotKwotIC8qIEFzc3VtaW5nIHdlJ3JlIGNyZWF0aW5nIGEgc3Rh dGljIHRyYWNlcG9pbnQsIGRvZXMgUyBsb29rIGxpa2UgYQotICAgIHN0YXRpYyB0cmFjZXBvaW50 IG1hcmtlciBzcGVjICgiLW0gTUFSS0VSX0lEIik/ICAqLwotICNkZWZpbmUgaXNfbWFya2VyX3Nw ZWMocykJCQkJCQlcCi1AQCAtMTE0OSw2ICsxMTU3LDIyIEBAIHdhdGNocG9pbnRfaW5fdGhyZWFk X3Njb3BlIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC0xMTU4LDYgKzExNjMsMjUgQEAgd2F0 Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpiKQogIAkgICAgICAm JiAhaXNfZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlkKSkpOwogIH0KICAKKysvKiBTZXQgd2F0Y2hw b2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3RvcCwgZXZlbiBpbmNsdWRpbmcgaXRzIHBvc3Np YmxlCisrICAgYXNzb2NpYXRlZCBicF93YXRjaHBvaW50X3Njb3BlIGJyZWFrcG9pbnQuICAqLwor KwogK3N0YXRpYyB2b2lkCiArd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9zdG9wIChzdHJ1Y3QgYnJl YWtwb2ludCAqYikKICt7CkBAIC00NDcsNyArNjEzLDcgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2 MiAxMDA2NDQKICAvKiBBc3N1bWluZyB0aGF0IEIgaXMgYSB3YXRjaHBvaW50OgogICAgIC0gUmVw YXJzZSB3YXRjaHBvaW50IGV4cHJlc3Npb24sIGlmIFJFUEFSU0UgaXMgbm9uLXplcm8KICAgICAt IEV2YWx1YXRlIGV4cHJlc3Npb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gQi0+dmFsCi1AQCAt MTIwOCwxMiArMTIzMiwxNyBAQCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQg KmIsIGludCByZXBhcnNlKQorQEAgLTEyMTcsMTIgKzEyNDEsMTcgQEAgdXBkYXRlX3dhdGNocG9p bnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKICAgIHN0cnVjdCBmcmFtZV9p ZCBzYXZlZF9mcmFtZV9pZDsKICAgIGludCBmcmFtZV9zYXZlZDsKICAKQEAgLTQ2NSw3ICs2MzEs NyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogICAgaWYgKGItPmRpc3Bvc2l0aW9u ID09IGRpc3BfZGVsX2F0X25leHRfc3RvcCkKICAgICAgcmV0dXJuOwogICAKLUBAIC0xNDQzLDEz ICsxNDcyLDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQg cmVwYXJzZSkKK0BAIC0xNDUyLDEzICsxNDgxLDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVj dCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKICBXYXRjaHBvaW50ICVkIGRlbGV0ZWQgYmVj YXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2tcblwKICBpbiB3aGljaCBpdHMgZXhw cmVzc2lvbiBpcyB2YWxpZC5cbiIpLAogIAkJICAgICAgIGItPm51bWJlcik7CkBAIC00ODAsNyAr NjQ2LDQyIEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgICAgIH0KICAKICAgIC8q IFJlc3RvcmUgdGhlIHNlbGVjdGVkIGZyYW1lLiAgKi8KLUBAIC0xODQwLDYgKzE4NjMsNyBAQCBp bnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCitAQCAtMTUwMCw2ICsxNTIzLDI0IEBA IHNob3VsZF9iZV9pbnNlcnRlZCAoc3RydWN0IGJwX2xvY2F0aW9uICpibCkKKyAgIHJldHVybiAx OworIH0KKyAKKysvKiBTZXQgb3IgY2xlYXIgYSBTeXN0ZW1UYXAgc2VtYXBob3JlLiAgQVJDSCBp cyB0aGUgdGFyZ2V0CisrICAgYXJjaGl0ZWN0dXJlOyBBRERSRVNTIGlzIHRoZSBhZGRyZXNzIG9m IHRoZSBzZW1hcGhvcmUsIGFuZCBTRVRUSU5HCisrICAgaXMgZWl0aGVyIHplcm8gb3Igb25lLiAg Ki8KKysKKytzdGF0aWMgdm9pZAorK21vZGlmeV9zZW1hcGhvcmUgKHN0cnVjdCBnZGJhcmNoICph cmNoLCBDT1JFX0FERFIgYWRkcmVzcywgaW50IHNldHRpbmcpCisreworKyAgZ2RiX2J5dGUgYnl0 ZXNbc2l6ZW9mIChMT05HRVNUKV07CisrICAvKiBUaGUgQUJJIHNwZWNpZmllcyAidW5zaWduZWQg c2hvcnQiLiAgKi8KKysgIHN0cnVjdCB0eXBlICp0eXBlID0gYnVpbHRpbl90eXBlIChhcmNoKS0+ YnVpbHRpbl91bnNpZ25lZF9zaG9ydDsKKysKKysgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ5 dGVzLCBUWVBFX0xFTkdUSCAodHlwZSksCisrCQkJICBnZGJhcmNoX2J5dGVfb3JkZXIgKGFyY2gp LCBzZXR0aW5nKTsKKysKKysgIC8qIElnbm9yZSBlcnJvcnMuICBGSVhNRS4gICovCisrICB0YXJn ZXRfd3JpdGVfbWVtb3J5IChhZGRyZXNzLCBieXRlcywgVFlQRV9MRU5HVEggKHR5cGUpKTsKKyt9 CisrCisgLyogSW5zZXJ0IGEgbG93LWxldmVsICJicmVha3BvaW50IiBvZiBzb21lIHR5cGUuICBC TCBpcyB0aGUgYnJlYWtwb2ludAorICAgIGxvY2F0aW9uLiAgQW55IGVycm9yIG1lc3NhZ2VzIGFy ZSBwcmludGVkIHRvIFRNUF9FUlJPUl9TVFJFQU07IGFuZAorICAgIERJU0FCTEVEX0JSRUFLUywg YW5kIEhXX0JSRUFLUE9JTlRfRVJST1IgYXJlIHVzZWQgdG8gcmVwb3J0IHByb2JsZW1zLgorQEAg LTE1OTUsNiArMTYzNiw5IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9u ICpibCwKKyAJICBlbHNlCisgCSAgICB2YWwgPSB0YXJnZXRfaW5zZXJ0X2JyZWFrcG9pbnQgKGJs LT5nZGJhcmNoLAorIAkJCQkJICAgICZibC0+dGFyZ2V0X2luZm8pOworKworKwkgIGlmIChibC0+ c2VtYXBob3JlICE9IDApCisrCSAgICBtb2RpZnlfc2VtYXBob3JlIChibC0+Z2RiYXJjaCwgYmwt PnNlbWFwaG9yZSwgMSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0xODQ5LDYgKzE4OTMs NyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCiAgICBpbnQgdmFsID0gMDsK ICAgIGludCBkaXNhYmxlZF9icmVha3MgPSAwOwogICAgaW50IGh3X2JyZWFrcG9pbnRfZXJyb3Ig PSAwOwpAQCAtNDg4LDcgKzY4OSw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAg CiAgICBzdHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1lbV9maWxlb3BlbiAoKTsK ICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0 ZSAodG1wX2Vycm9yX3N0cmVhbSk7Ci1AQCAtMTg2Nyw5ICsxODkxLDEzIEBAIGluc2VydF9icmVh a3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xODc2LDkgKzE5MjEsMTMgQEAgaW5zZXJ0X2Jy ZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQogICAgICAgIC8qIEZvciB0YXJnZXRzIHRoYXQgc3Vw cG9ydCBnbG9iYWwgYnJlYWtwb2ludHMsIHRoZXJlJ3Mgbm8gbmVlZAogIAkgdG8gc2VsZWN0IGFu IGluZmVyaW9yIHRvIGluc2VydCBicmVha3BvaW50IHRvLiAgSW4gZmFjdCwgZXZlbgogIAkgaWYg d2UgYXJlbid0IGF0dGFjaGVkIHRvIGFueSBwcm9jZXNzIHlldCwgd2Ugc2hvdWxkIHN0aWxsCkBA IC01MDQsNyArNzA1LDcgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAJY29udGlu dWU7CiAgCiAgICAgICAgdmFsID0gaW5zZXJ0X2JwX2xvY2F0aW9uIChibCwgdG1wX2Vycm9yX3N0 cmVhbSwgJmRpc2FibGVkX2JyZWFrcywKLUBAIC0xODkzLDEzICsxOTIxLDE5IEBAIGluc2VydF9i cmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xOTAyLDEzICsxOTUxLDE5IEBAIGluc2Vy dF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKICAKICAgICAgICBpZiAoYnB0LT5kaXNwb3Np dGlvbiA9PSBkaXNwX2RlbF9hdF9uZXh0X3N0b3ApCiAgCWNvbnRpbnVlOwpAQCAtNTMwLDcgKzcz MSwxMDQgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgICBpZiAoc29tZV9m YWlsZWQpCiAgCXsKICAJICBmb3IgKGxvYyA9IGJwdC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4 dCkKLUBAIC0zNDc5LDYgKzM1MTMsOCBAQCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCitA QCAtMjA5MCwxNSArMjE0NSwyNCBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEKKyAg IC8qIE1pbmltYWwgc3ltYm9sKHMpIGZvciAibG9uZ2ptcCIsICJzaWdsb25nam1wIiwgZXRjLiAo aWYgYW55KS4gICovCisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvbmdqbXBfbXN5bVtOVU1f TE9OR0pNUF9OQU1FU107CisgCisrICAvKiBTeXN0ZW1UYXAgcHJvYmUgcG9pbnQgZm9yIGxvbmdq bXAgKGlmIGFueSkuICAqLworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKmxvbmdqbXBfcHJv YmU7CisrCisgICAvKiBNaW5pbWFsIHN5bWJvbCBmb3IgInN0ZDo6dGVybWluYXRlKCkiIChpZiBh bnkpLiAgKi8KKyAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqdGVybWluYXRlX21zeW07CisgCisg ICAvKiBNaW5pbWFsIHN5bWJvbCBmb3IgIl9VbndpbmRfRGVidWdIb29rIiAoaWYgYW55KS4gICov CisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmV4Y2VwdGlvbl9tc3ltOworKworKyAgLyogU3lz dGVtVGFwIHByb2JlIHBvaW50IGZvciB1bndpbmRpbmcgKGlmIGFueSkuICAqLworKyAgY29uc3Qg c3RydWN0IHN0YXBfcHJvYmUgKmV4Y2VwdGlvbl9wcm9iZTsKKyB9OworIAorIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb2JqZmlsZV9kYXRhICpicmVha3BvaW50X29iamZpbGVfa2V5OworIAorKy8qIFN5 c3RlbVRhcCBwcm9iZSBub3QgZm91bmQgc2VudGluZWwuICAqLworK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc3RhcF9wcm9iZSBwcm9iZV9ub3RfZm91bmQ7CisrCisgLyogTWluaW1hbCBzeW1ib2wgbm90 IGZvdW5kIHNlbnRpbmVsLiAgKi8KKyBzdGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sIG1zeW1f bm90X2ZvdW5kOworIAorQEAgLTIyMDYsNiArMjI3MCwyOSBAQCBjcmVhdGVfbG9uZ2ptcF9tYXN0 ZXJfYnJlYWtwb2ludCAodm9pZCkKKyAKKyAgICAgICBicF9vYmpmaWxlX2RhdGEgPSBnZXRfYnJl YWtwb2ludF9vYmpmaWxlX2RhdGEgKG9iamZpbGUpOworIAorKyAgICAgIGlmIChicF9vYmpmaWxl X2RhdGEtPmxvbmdqbXBfcHJvYmUgIT0gJnByb2JlX25vdF9mb3VuZCkKKysJeworKwkgIGlmIChi cF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUgPT0gTlVMTCkKKysJICAgIGJwX29iamZpbGVf ZGF0YS0+bG9uZ2ptcF9wcm9iZQorKwkgICAgICA9IGZpbmRfcHJvYmVfaW5fb2JqZmlsZSAob2Jq ZmlsZSwgImxpYmMiLCAibG9uZ2ptcCIpOworKworKwkgIGlmIChicF9vYmpmaWxlX2RhdGEtPmxv bmdqbXBfcHJvYmUpCisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOworKwkg ICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUp OworKworKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFyY2gsCisr CQkJCQkgICAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUtPmFkZHJlc3MsCisrCQkJ CQkgICAgICBicF9sb25nam1wX21hc3Rlcik7CisrCSAgICAgIGItPmFkZHJfc3RyaW5nID0geHN0 cmR1cCAoInByb2JlOmxpYmM6bG9uZ2ptcCIpOworKwkgICAgICBiLT5lbmFibGVfc3RhdGUgPSBi cF9kaXNhYmxlZDsKKysKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisrCSAgZWxzZQorKwkg ICAgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Byb2JlID0gJnByb2JlX25vdF9mb3VuZDsKKysJ fQorKworICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fTE9OR0pNUF9OQU1FUzsgaSsrKQorIAl7 CisgCSAgc3RydWN0IGJyZWFrcG9pbnQgKmI7CitAQCAtMjMxNCw2ICsyNDAxLDMxIEBAIGNyZWF0 ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCisgCisgICAgICAgYnBfb2JqZmls ZV9kYXRhID0gZ2V0X2JyZWFrcG9pbnRfb2JqZmlsZV9kYXRhIChvYmpmaWxlKTsKKyAKKysgICAg ICAvKiBXZSBwcmVmZXIgdGhlIFN5c3RlbVRhcCBwcm9iZSBwb2ludCBpZiBpdCBleGlzdHMuICAq LworKyAgICAgIGlmIChicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZSAhPSAmcHJvYmVf bm90X2ZvdW5kKQorKwl7CisrCSAgaWYgKGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0aW9uX3Byb2Jl ID09IE5VTEwpCisrCSAgICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZQorKwkgICAg ICA9IGZpbmRfcHJvYmVfaW5fb2JqZmlsZSAob2JqZmlsZSwgImxpYmdjYyIsICJ1bndpbmQiKTsK KysKKysJICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmUpCisrCSAgICB7Cisr CSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOworKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKworKwkgICAgICBiID0gY3JlYXRl X2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFyY2gsCisrCQkJCQkgICAgICBicF9vYmpmaWxlX2Rh dGEtPmV4Y2VwdGlvbl9wcm9iZS0+YWRkcmVzcywKKysJCQkJCSAgICAgIGJwX2V4Y2VwdGlvbl9t YXN0ZXIpOworKwkgICAgICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCJwcm9iZTpsaWJnY2M6 dW53aW5kIik7CisrCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOworKwkgICAg ICBjb250aW51ZTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICBicF9vYmpmaWxlX2RhdGEtPmV4 Y2VwdGlvbl9wcm9iZSA9ICZwcm9iZV9ub3RfZm91bmQ7CisrCX0KKysKKysgICAgICAvKiBPdGhl cndpc2UsIHRyeSB0aGUgaG9vayBmdW5jdGlvbi4gICovCisrCisgICAgICAgaWYgKG1zeW1fbm90 X2ZvdW5kX3AgKGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0aW9uX21zeW0pKQorIAljb250aW51ZTsK KyAKK0BAIC0yNTMyLDYgKzI2NDQsOSBAQCByZW1vdmVfYnJlYWtwb2ludF8xIChzdHJ1Y3QgYnBf bG9jYXRpb24gKmJsLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKKyAJICAgIHZhbCA9IHRhcmdldF9y ZW1vdmVfaHdfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gsICZibC0+dGFyZ2V0X2luZm8pOworIAkg IGVsc2UKKyAJICAgIHZhbCA9IHRhcmdldF9yZW1vdmVfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gs ICZibC0+dGFyZ2V0X2luZm8pOworKworKwkgIGlmIChibC0+c2VtYXBob3JlICE9IDApCisrCSAg ICBtb2RpZnlfc2VtYXBob3JlIChibC0+Z2RiYXJjaCwgYmwtPnNlbWFwaG9yZSwgMCk7CisgCX0K KyAgICAgICBlbHNlCisgCXsKK0BAIC0zNDg4LDYgKzM2MDMsOCBAQCBwcmludF9pdF90eXBpY2Fs IChicHN0YXQgYnMpCiAgICAgIGNhc2UgYnBfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9mYXN0 X3RyYWNlcG9pbnQ6CiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgpAQCAtNTM5LDcgKzgzNyw3IEBA IGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgcmVz dWx0ID0gUFJJTlRfVU5LTk9XTjsKICAgICAgICBicmVhazsKLUBAIC0zNzA0LDYgKzM3NDAsOCBA QCB3YXRjaHBvaW50X2NoZWNrICh2b2lkICpwKQorQEAgLTM3MTMsNiArMzgzMCw4IEBAIHdhdGNo cG9pbnRfY2hlY2sgKHZvaWQgKnApCiAgICBnZGJfYXNzZXJ0IChicy0+YnJlYWtwb2ludF9hdCAh PSBOVUxMKTsKICAgIGIgPSBicy0+YnJlYWtwb2ludF9hdDsKICAKQEAgLTU0OCw3ICs4NDYsNyBA QCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogICAgLyogSWYgdGhpcyBpcyBhIGxvY2Fs IHdhdGNocG9pbnQsIHdlIG9ubHkgd2FudCB0byBjaGVjayBpZiB0aGUKICAgICAgIHdhdGNocG9p bnQgZnJhbWUgaXMgaW4gc2NvcGUgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSB0aHJlYWQK ICAgICAgIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB3YXRjaHBvaW50LiAgKi8KLUBAIC0z ODEzLDEzICszODUxLDcgQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKK0BAIC0zODIyLDEz ICszOTQxLDcgQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKICAJCSAgICIgZGVsZXRlZCBi ZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpblxuXAogIHdoaWNoIGl0cyBl eHByZXNzaW9uIGlzIHZhbGlkLlxuIik7ICAgICAKICAKQEAgLTU2Myw3ICs4NjEsNyBAQCBpbmRl eCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAogICAgICAgIHJldHVybiBXUF9ERUxFVEVEOwog ICAgICB9Ci1AQCAtNDAyNCw5ICs0MDU2LDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJw c3RhdCBicykKK0BAIC00MDMzLDkgKzQxNDYsNyBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAo YnBzdGF0IGJzKQogIAkgICAgY2FzZSAwOgogIAkgICAgICAvKiBFcnJvciBmcm9tIGNhdGNoX2Vy cm9ycy4gICovCiAgCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiV2F0Y2hwb2ludCAlZCBkZWxl dGVkLlxuIiksIGItPm51bWJlcik7CkBAIC01NzQsNyArODcyLDcgQEAgaW5kZXggNWJjYWI4Ny4u NTI5ZWE2MiAxMDA2NDQKICAJICAgICAgLyogV2UndmUgYWxyZWFkeSBwcmludGVkIHdoYXQgbmVl ZHMgdG8gYmUgcHJpbnRlZC4gICovCiAgCSAgICAgIGJzLT5wcmludF9pdCA9IHByaW50X2l0X2Rv bmU7CiAgCSAgICAgIGJyZWFrOwotQEAgLTQyMzIsNyArNDI2Miw3IEBAIGJwc3RhdF9zdG9wX3N0 YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC00MjQ2LDcgKzQzNTcsNyBA QCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAgCSAg ICAgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3aWxsIGhhbmRsZSB0aGUKICAJ ICAgICBvdXQtb2Ytc2NvcGUgZXZlbnQuICBXZSdsbCBnZXQgdG8gdGhlIHdhdGNocG9pbnQgbmV4 dAogIAkgICAgIGl0ZXJhdGlvbi4gICovCkBAIC01ODMsNyArODgxLDcgQEAgaW5kZXggNWJjYWI4 Ny4uNTI5ZWE2MiAxMDA2NDQKICAJICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+d2F0Y2hwb2lu dF90cmlnZ2VyZWQgPSB3YXRjaF90cmlnZ2VyZWRfeWVzOwogIAl9CiAgICAgIH0KLUBAIC00MzU0 LDcgKzQzODQsNyBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorQEAgLTQzNjgsNyArNDQ3OSw3 IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQpCiAgLyogRGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRz IHRvIGRvIHdpdGggdGhpcyBicHN0YXQuICAqLwogIAogIHN0cnVjdCBicHN0YXRfd2hhdApAQCAt NTkyLDcgKzg5MCw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgewogICAgc3Ry dWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAgIC8qIFdlIG5lZWQgdG8gZGVmZXIgY2FsbGluZyBg c29saWJfYWRkJywgYXMgYWRkaW5nIG5ldyBzeW1ib2xzCi1AQCAtNDM2MiwxMiArNDM5MiwxMyBA QCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorQEAgLTQzNzYsMTIgKzQ0ODcsMTMgQEAgYnBzdGF0 X3doYXQgKGJwc3RhdCBicykKICAgICAgIGFuZCBoZW5jZSBtYXkgY2xlYXIgdW5wcm9jZXNzZWQg ZW50cmllcyBpbiB0aGUgQlMgY2hhaW4uICAqLwogICAgaW50IHNobGliX2V2ZW50ID0gMDsKICAg IGludCBqaXRfZXZlbnQgPSAwOwpAQCAtNjA3LDQyICs5MDUsNTAgQEAgaW5kZXggNWJjYWI4Ny4u NTI5ZWE2MiAxMDA2NDQKICAgICAgewogICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlv bi4gIEFmdGVyIHByb2Nlc3NpbmcgZWFjaCBCUywgd2UgY2hlY2sKICAJIGlmIGl0cyBhY3Rpb24g b3ZlcnJpZGVzIGFsbCB3ZSd2ZSBzZWVtIHNvIGZhci4gICovCi1AQCAtNDQ5Nyw2ICs0NTI4LDIw IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtNDUxMSw2ICs0NjIzLDE2IEBAIGJwc3Rh dF93aGF0IChicHN0YXQgYnMpCiAgCSAgICAgb3V0IGFscmVhZHkuICAqLwogIAkgIGludGVybmFs X2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAgCQkJICBfKCJicHN0YXRfd2hhdDogdHJhY2Vw b2ludCBlbmNvdW50ZXJlZCIpKTsKICsJICBicmVhazsKICsJY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXI6Ci0rCSAgLyogU2tpcCB0aGUgY3VycmVudCBicmVha3BvaW50IGJ1dCBvdGhlcndpc2Ug bm90aGluZyBoYXBwZW5zLiAgR0RCIGlzCi0rCSAgICAgaW5zZXJ0aW5nIG5ldyBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXJfcmV0dXJuIGF0IHRoaXMgcG9pbnQgYnV0Ci0rCSAgICAgYnBfZ251X2lmdW5j X3Jlc29sdmVyIGlzIGJlaW5nIGtlcHQgdGhlcmUgYXMgYW5vdGhlcgotKwkgICAgIGJwX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm4gbWF5IGJlIGluc2VydGVkIGluIHRoZSBtZWFudGltZS4gICov CisrCSAgLyogU3RlcCBvdmVyIGl0IChhbmQgaW5zZXJ0IGJwX2dudV9pZnVuY19yZXNvbHZlcl9y ZXR1cm4pLiAgKi8KICsJICB0aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NJTkdMRTsKICsJICBi cmVhazsKICsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgotKwkgIC8qIFRoZSB3 aG9sZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgd2l0aCBpdHMgYXNzb2NpYXRlZAotKwkgICAgIGJw X2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4gcmVsYXRlZF9icmVha3BvaW50J3MgaGFzIGJlZW4K LSsJICAgICByZXNvbHZlZCBub3csIGFsbCB0aGVzZSBoZWxwZXIgYnJlYWtwb2ludHMgYXJlIGJl aW5nIHJlbW92ZWQgYW5kCi0rCSAgICAgbmV3IGZpbmFsIGJwX2JyZWFrcG9pbnQgaXMgYmVpbmcg cHV0IGF0IHRoZSB0YXJnZXQgbG9jYXRpb24uICAqLworKwkgIC8qIFRoZSBicmVha3BvaW50IHdp bGwgYmUgcmVtb3ZlZCwgZXhlY3V0aW9uIHdpbGwgcmVzdGFydCBmcm9tIHRoZQorKwkgICAgIFBD IG9mIHRoZSBmb3JtZXIgYnJlYWtwb2ludC4gICovCisrCSAgdGhpc19hY3Rpb24gPSBCUFNUQVRf V0hBVF9LRUVQX0NIRUNLSU5HOwogKwkgIGJyZWFrOwogIAlkZWZhdWx0OgogIAkgIGludGVybmFs X2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAgCQkJICBfKCJicHN0YXRfd2hhdDogdW5oYW5k bGVkIGJwdHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOwotQEAgLTQ1MzQsNiArNDU3OSwyMSBAQCBi cHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorQEAgLTQ1MTksNiArNDY0MSw5IEBAIGJwc3RhdF93aGF0 IChicHN0YXQgYnMpCisgICAgICAgcmV0dmFsLm1haW5fYWN0aW9uID0gbWF4IChyZXR2YWwubWFp bl9hY3Rpb24sIHRoaXNfYWN0aW9uKTsKKyAgICAgfQorIAorKyAgLyogVGhlc2Ugb3BlcmF0aW9u cyBtYXkgYWZmZWN0IHRoZSBicy0+YnJlYWtwb2ludF9hdCBzdGF0ZSBzbyB0aGV5IGFyZQorKyAg ICAgZGVsYXllZCBhZnRlciBNQUlOX0FDVElPTiBpcyBkZWNpZGVkIGFib3ZlLiAgKi8KKysKKyAg IGlmIChzaGxpYl9ldmVudCkKKyAgICAgeworICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCitAQCAt NDU0OCw2ICs0NjczLDIzIEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCiAgICAgICAgaGFuZGxl X2ppdF9ldmVudCAoKTsKICAgICAgfQogIAogKyAgZm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5V TEw7IGJzID0gYnMtPm5leHQpCiArICAgIHsKLSsgICAgICBpZiAoYnMtPmJyZWFrcG9pbnRfYXQg PT0gTlVMTCkKKysgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGJzLT5icmVha3BvaW50X2F0 OworKworKyAgICAgIGlmIChiID09IE5VTEwpCiArCWNvbnRpbnVlOwotKyAgICAgIHN3aXRjaCAo YnMtPmJyZWFrcG9pbnRfYXQtPnR5cGUpCisrICAgICAgc3dpdGNoIChiLT50eXBlKQogKwl7CiAr CWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgotKwkgIGdudV9pZnVuY19yZXNvbHZlcl9zdG9w IChicy0+YnJlYWtwb2ludF9hdCk7CisrCSAgZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKGIpOwog KwkgIGJyZWFrOwogKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0rCSAgZ251 X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChicy0+YnJlYWtwb2ludF9hdCk7CisrCSAgZ251 X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChiKTsKICsJICBicmVhazsKICsJfQogKyAgICB9 CkBAIC02NTAsMTYgKzk1NiwxNiBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogICAg cmV0dXJuIHJldHZhbDsKICB9CiAgCi1AQCAtNDY4OSw2ICs0NzQ5LDggQEAgYnB0eXBlX3N0cmlu ZyAoZW51bSBicHR5cGUgdHlwZSkKK0BAIC00NzAzLDYgKzQ4NDUsOCBAQCBicHR5cGVfc3RyaW5n IChlbnVtIGJwdHlwZSB0eXBlKQogICAgICB7YnBfZmFzdF90cmFjZXBvaW50LCAiZmFzdCB0cmFj ZXBvaW50In0sCiAgICAgIHticF9zdGF0aWNfdHJhY2Vwb2ludCwgInN0YXRpYyB0cmFjZXBvaW50 In0sCiAgICAgIHticF9qaXRfZXZlbnQsICJqaXQgZXZlbnRzIn0sCi0rICAgIHticF9nbnVfaWZ1 bmNfcmVzb2x2ZXIsICJnbnUtaWZ1bmMgcmVzb2x2ZXIifSwKLSsgICAge2JwX2dudV9pZnVuY19y ZXNvbHZlcl9yZXR1cm4sICJnbnUtZnVuYyByZXNvbHZlciByZXR1cm4ifSwKKysgICAge2JwX2du dV9pZnVuY19yZXNvbHZlciwgIlNUVF9HTlVfSUZVTkMgcmVzb2x2ZXIifSwKKysgICAge2JwX2du dV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJTVFRfR05VX0lGVU5DIHJlc29sdmVyIHJldHVybiJ9 LAogICAgfTsKICAKICAgIGlmICgoKGludCkgdHlwZSA+PSAoc2l6ZW9mIChicHR5cGVzKSAvIHNp emVvZiAoYnB0eXBlc1swXSkpKQotQEAgLTQ4MjMsNiArNDg4NSw4IEBAIHByaW50X29uZV9icmVh a3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00ODM3LDYgKzQ5ODEs OCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIs CiAgICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9zdGF0aWNf dHJhY2Vwb2ludDoKICAgICAgICBjYXNlIGJwX2ppdF9ldmVudDoKQEAgLTY2OCw3ICs5NzQsNyBA QCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAlpZiAob3B0cy5hZGRyZXNzcHJpbnQp CiAgCSAgewogIAkgICAgYW5ub3RhdGVfZmllbGQgKDQpOwotQEAgLTUwOTgsNyArNTE2Miw4IEBA IHVzZXJfc2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9pbnQgKmIpCitA QCAtNTExMiw3ICs1MjU4LDggQEAgdXNlcl9zZXR0YWJsZV9icmVha3BvaW50IChjb25zdCBzdHJ1 Y3QgYnJlYWtwb2ludCAqYikKICAJICB8fCBiLT50eXBlID09IGJwX2NhdGNocG9pbnQKICAJICB8 fCBiLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQKICAJICB8fCBpc190cmFjZXBvaW50 IChiKQpAQCAtNjc4LDcgKzk4NCw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAg fQogIAogIC8qIFJldHVybiB0cnVlIGlmIHRoaXMgYnJlYWtwb2ludCB3YXMgc2V0IGJ5IHRoZSB1 c2VyLCBmYWxzZSBpZiBpdCBpcwotQEAgLTU1OTQsNiArNTY1OSw4IEBAIGFsbG9jYXRlX2JwX2xv Y2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorQEAgLTU2MDgsNiArNTc1NSw4IEBAIGFs bG9jYXRlX2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQogICAgICBjYXNlIGJw X2xvbmdqbXBfbWFzdGVyOgogICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgogICAg ICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CkBAIC02ODcsNyArOTkzLDcgQEAgaW5kZXggNWJj YWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3 YXJlX2JyZWFrcG9pbnQ7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJl YWtwb2ludDoKLUBAIC01NjgzLDYgKzU3NTAsNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91 dF9sb2NhdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTY5Nyw2ICs1ODQ2LDcg QEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAogICAgYi0+b3BzID0gTlVMTDsKICAgIGItPmNvbmRpdGlvbl9ub3RfcGFyc2VkID0g MDsKICAgIGItPnB5X2JwX29iamVjdCA9IE5VTEw7CkBAIC02OTUsMjkgKzEwMDEsMzkgQEAgaW5k ZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAKICAgIC8qIEFkZCB0aGlzIGJyZWFrcG9pbnQg dG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCBhIGxpc3Qgb2YKICAgICAgIGJyZWFrcG9p bnRzIHdpbGwgY29tZSBvdXQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBudW1iZXJzLiAgKi8KLUBA IC01NzAxLDcgKzU3NjksNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91dF9sb2NhdGlvbiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTcxMyw5ICs1ODYzLDEyIEBAIHNldF9yYXdf YnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAg IHJldHVybiBiOworIH0KICAKLSAvKiBJbml0aWFsaXplIGxvYy0+ZnVuY3Rpb25fbmFtZS4gICov CistLyogSW5pdGlhbGl6ZSBsb2MtPmZ1bmN0aW9uX25hbWUuICAqLworKy8qIEluaXRpYWxpemUg bG9jLT5mdW5jdGlvbl9uYW1lLiAgRVhQTElDSVRfTE9DIHNheXMgbm8gaW5kaXJlY3QgZnVuY3Rp b24KKysgICByZXNvbHV0aW9ucyBzaG91bGQgYmUgbWFkZSBhcyB0aGUgdXNlciBzcGVjaWZpZWQg dGhlIGxvY2F0aW9uIGV4cGxpY2l0bHkKKysgICBlbm91Z2guICAqLworKwogIHN0YXRpYyB2b2lk CiAtc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAq bG9jKQogK3NldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRp b24gKmxvYywgaW50IGV4cGxpY2l0X2xvYykKICB7CiAgICBnZGJfYXNzZXJ0IChsb2MtPm93bmVy ICE9IE5VTEwpOwogIAotQEAgLTU3MDksOCArNTc3NywyOSBAQCBzZXRfYnJlYWtwb2ludF9sb2Nh dGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCitAQCAtNTcyMyw4ICs1ODc2 LDMzIEBAIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRp b24gKmxvYykKICAgICAgICB8fCBsb2MtPm93bmVyLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFr cG9pbnQKICAgICAgICB8fCBpc190cmFjZXBvaW50IChsb2MtPm93bmVyKSkKICAgICAgewogLSAg ICAgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAobG9jLT5hZGRyZXNzLCAmKGxvYy0+ZnVuY3Rp b25fbmFtZSksIAogLQkJCQlOVUxMLCBOVUxMKTsKLSsgICAgICBpZiAoZmluZF9wY19wYXJ0aWFs X2Z1bmN0aW9uIChsb2MtPmFkZHJlc3MsICYobG9jLT5mdW5jdGlvbl9uYW1lKSwgTlVMTCwKLSsJ CQkJICAgIE5VTEwpID09IEZJTkRfUENfUEFSVElBTF9GVU5DVElPTl9HTlVfSUZVTkMKLSsJICAm JiAhZXhwbGljaXRfbG9jKQorKyAgICAgIGludCBpc19nbnVfaWZ1bmM7CisrCisrICAgICAgZmlu ZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9pZnVuYyAobG9jLT5hZGRyZXNzLCAmbG9jLT5mdW5j dGlvbl9uYW1lLAorKwkJCQkJICBOVUxMLCBOVUxMLCAmaXNfZ251X2lmdW5jKTsKKysKKysgICAg ICBpZiAoaXNfZ251X2lmdW5jICYmICFleHBsaWNpdF9sb2MpCiArCXsKICsJICBzdHJ1Y3QgYnJl YWtwb2ludCAqYiA9IGxvYy0+b3duZXI7CiArCiArCSAgZ2RiX2Fzc2VydCAobG9jLT5wc3BhY2Ug PT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsJICBpZiAocmVzb2x2ZV9nbnVfaWZ1bmMgKGxv Yy0+ZnVuY3Rpb25fbmFtZSwgJmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MpKQorKwkgIGlmIChnbnVf aWZ1bmNfcmVzb2x2ZV9uYW1lIChsb2MtPmZ1bmN0aW9uX25hbWUsCisrCQkJCSAgICAgICZsb2Mt PnJlcXVlc3RlZF9hZGRyZXNzKSkKICsJICAgIHsKICsJICAgICAgLyogUmVjYWxjdWxhdGUgQURE UkVTUyBiYXNlZCBvbiBuZXcgUkVRVUVTVEVEX0FERFJFU1MuICAqLwogKwkgICAgICBsb2MtPmFk ZHJlc3MgPSBhZGp1c3RfYnJlYWtwb2ludF9hZGRyZXNzIChsb2MtPmdkYmFyY2gsCkBAIC03MzYs NyArMTA1MiwxNSBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogICAgICAgIGlmIChs b2MtPmZ1bmN0aW9uX25hbWUpCiAgCWxvYy0+ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAgKGxvYy0+ ZnVuY3Rpb25fbmFtZSk7CiAgICAgIH0KLUBAIC01Nzg1LDcgKzU4NzQsOCBAQCBzZXRfcmF3X2Jy ZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTU3ODcsNiArNTk2NSw3IEBA IHNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICBiLT5sb2Mt PnJlcXVlc3RlZF9hZGRyZXNzID0gc2FsLnBjOworICAgYi0+bG9jLT5hZGRyZXNzID0gYWRqdXN0 ZWRfYWRkcmVzczsKKyAgIGItPmxvYy0+cHNwYWNlID0gc2FsLnBzcGFjZTsKKysgIGItPmxvYy0+ c2VtYXBob3JlID0gc2FsLnNlbWFwaG9yZTsKKyAKKyAgIC8qIFN0b3JlIHRoZSBwcm9ncmFtIHNw YWNlIHRoYXQgd2FzIHVzZWQgdG8gc2V0IHRoZSBicmVha3BvaW50LCBmb3IKKyAgICAgIGJyZWFr cG9pbnQgcmVzZXR0aW5nLiAgKi8KK0BAIC01Nzk5LDcgKzU5NzgsOCBAQCBzZXRfcmF3X2JyZWFr cG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgYi0+bG9jLT5zZWN0aW9uID0gc2Fs LnNlY3Rpb247CiAgICBiLT5saW5lX251bWJlciA9IHNhbC5saW5lOwogIApAQCAtNzQ2LDcgKzEw NzAsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAogICAgYnJlYWtwb2ludHNf Y2hhbmdlZCAoKTsKICAKLUBAIC02OTAyLDcgKzY5OTIsNyBAQCBjbG9uZV9tb21lbnRhcnlfYnJl YWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCitAQCAtNjkxNiwxMyArNzA5NiwxNCBA QCBjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCiAg CiAgICBjb3B5ID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKG9yaWctPmdk YmFyY2gsIG9yaWctPnR5cGUpOwogICAgY29weS0+bG9jID0gYWxsb2NhdGVfYnBfbG9jYXRpb24g KGNvcHkpOwpAQCAtNzU1LDcgKzEwNzksMTQgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2 NDQKICAKICAgIGNvcHktPmxvYy0+Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2RiYXJjaDsKICAgIGNv cHktPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNz OwotQEAgLTcwMDIsNiArNzA5Miw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQor ICAgY29weS0+bG9jLT5hZGRyZXNzID0gb3JpZy0+bG9jLT5hZGRyZXNzOworICAgY29weS0+bG9j LT5zZWN0aW9uID0gb3JpZy0+bG9jLT5zZWN0aW9uOworICAgY29weS0+bG9jLT5wc3BhY2UgPSBv cmlnLT5sb2MtPnBzcGFjZTsKKysgIGNvcHktPmxvYy0+c2VtYXBob3JlID0gb3JpZy0+bG9jLT5z ZW1hcGhvcmU7CisgCisgICBpZiAob3JpZy0+c291cmNlX2ZpbGUgPT0gTlVMTCkKKyAgICAgY29w eS0+c291cmNlX2ZpbGUgPSBOVUxMOworQEAgLTcwMTYsNiArNzE5Nyw3IEBAIG1lbnRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpiKQogIAlkb19jbGVhbnVwcyAodWlfb3V0X2NoYWluKTsKICAJYnJl YWs7CiAgICAgICAgY2FzZSBicF9icmVha3BvaW50OgpAQCAtNzYzLDcgKzEwOTQsNyBAQCBpbmRl eCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAlpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAodWlv dXQpKQogIAkgIHsKICAJICAgIHNheV93aGVyZSA9IDA7Ci1AQCAtNzAxMiw2ICs3MTAzLDggQEAg bWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNzAyNiw2ICs3MjA4LDggQEAgbWVu dGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgCWVsc2UKICAJICBwcmludGZfZmlsdGVyZWQg KF8oIkJyZWFrcG9pbnQiKSk7CiAgCXByaW50Zl9maWx0ZXJlZCAoXygiICVkIiksIGItPm51bWJl cik7CkBAIC03NzIsNyArMTEwMyw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAg CXNheV93aGVyZSA9IDE7CiAgCWJyZWFrOwogICAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtw b2ludDoKLUBAIC03MDcxLDYgKzcxNjQsNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAq YikKK0BAIC03MDg1LDYgKzcyNjksNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikK ICAgICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgogICAgICAgIGNhc2UgYnBfc3RkX3Rlcm1p bmF0ZV9tYXN0ZXI6CiAgICAgICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVyOgpAQCAtNzgwLDcg KzExMTEsMTEgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAJYnJlYWs7CiAgICAg ICAgfQogIAotQEAgLTcxMzEsNyArNzIyNSw4IEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50 IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC03MTQyLDEwICs3MzI3LDEyIEBAIGFkZF9sb2Nh dGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAgIGxvYy0+YWRkcmVz cyA9IGFkanVzdF9icmVha3BvaW50X2FkZHJlc3MgKGxvYy0+Z2RiYXJjaCwKKyAJCQkJCSAgICBs b2MtPnJlcXVlc3RlZF9hZGRyZXNzLCBiLT50eXBlKTsKKyAgIGxvYy0+cHNwYWNlID0gc2FsLT5w c3BhY2U7CisrICBsb2MtPnNlbWFwaG9yZSA9IHNhbC0+c2VtYXBob3JlOwogICAgZ2RiX2Fzc2Vy dCAobG9jLT5wc3BhY2UgIT0gTlVMTCk7CiAgICBsb2MtPnNlY3Rpb24gPSBzYWwtPnNlY3Rpb247 CiAgCkBAIC03OTAsNyArMTEyNSw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAg ICByZXR1cm4gbG9jOwogIH0KICAMCi1AQCAtODU2Niw2ICs4NjYxLDcgQEAgd2F0Y2hfY29tbWFu ZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbGFnLCBpbnQgZnJvbV90dHksCitAQCAtODU4MCw2 ICs4NzY3LDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbGFnLCBp bnQgZnJvbV90dHksCiAgICBiID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24g KE5VTEwsIGJwX3R5cGUpOwogICAgc2V0X2JyZWFrcG9pbnRfbnVtYmVyIChpbnRlcm5hbCwgYik7 CiAgICBiLT50aHJlYWQgPSB0aHJlYWQ7CkBAIC03OTgsNyArMTEzMyw3IEBAIGluZGV4IDViY2Fi ODcuLjUyOWVhNjIgMTAwNjQ0CiAgICBiLT5kaXNwb3NpdGlvbiA9IGRpc3BfZG9udHRvdWNoOwog ICAgYi0+ZXhwID0gZXhwOwogICAgYi0+ZXhwX3ZhbGlkX2Jsb2NrID0gZXhwX3ZhbGlkX2Jsb2Nr OwotQEAgLTk3MjgsNiArOTgyNCw5IEBAIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCAoaW50 IHNob3VsZF9pbnNlcnQpCitAQCAtOTc0Miw2ICs5OTMwLDkgQEAgdXBkYXRlX2dsb2JhbF9sb2Nh dGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAgICAgICBpbnQga2VlcF9pbl90YXJnZXQg PSAwOwogICAgICAgIGludCByZW1vdmVkID0gMDsKICAKQEAgLTgwOCw3ICsxMTQzLDcgQEAgaW5k ZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3 aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUgbmVlZGVkLgogIAkgU3RvcCBlaXRoZXIgYXQg b3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERfTE9DLiAgKi8KICAgICAgICB3aGlsZSAobG9j cCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQKLUBAIC0xMDA0NCwxMiArMTAxNDMs MjAgQEAgZGVsZXRlX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtMTAw NTgsMTIgKzEwMjQ5LDIwIEBAIGRlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAq YnB0KQogIAogICAgLyogQXQgbGVhc3QgYXZvaWQgdGhpcyBzdGFsZSByZWZlcmVuY2UgdW50aWwg dGhlIHJlZmVyZW5jZSBjb3VudGluZwogICAgICAgb2YgYnJlYWtwb2ludHMgZ2V0cyByZXNvbHZl ZC4gICovCkBAIC04MzQsMzAgKzExNjksMTYgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2 NDQKICAgICAgfQogIAogICAgb2JzZXJ2ZXJfbm90aWZ5X2JyZWFrcG9pbnRfZGVsZXRlZCAoYnB0 LT5udW1iZXIpOwotQEAgLTEwMzgwLDYgKzEwNDg3LDkgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9j YXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAgICAgcmV0dXJuOwotIAotICAgYi0+bG9j ID0gTlVMTDsKLSsgIHhmcmVlIChiLT5zb3VyY2VfZmlsZSk7Ci0rICBiLT5zb3VyY2VfZmlsZSA9 IE5VTEw7Ci0rICBiLT5saW5lX251bWJlciA9IDA7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgc2Fs cy5uZWx0czsgKytpKQotICAgICB7Ci1AQCAtMTA0MDcsMTEgKzEwNTE3LDcgQEAgdXBkYXRlX2Jy ZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAJICAgIH0KLSAJfQot IAotLSAgICAgIGlmIChiLT5zb3VyY2VfZmlsZSAhPSBOVUxMKQotLQl4ZnJlZSAoYi0+c291cmNl X2ZpbGUpOwotLSAgICAgIGlmIChzYWxzLnNhbHNbaV0uc3ltdGFiID09IE5VTEwpCi0tCWItPnNv dXJjZV9maWxlID0gTlVMTDsKLS0gICAgICBlbHNlCi0rICAgICAgaWYgKHNhbHMuc2Fsc1tpXS5z eW10YWIgIT0gTlVMTCAmJiBiLT5zb3VyY2VfZmlsZSA9PSBOVUxMKQotIAliLT5zb3VyY2VfZmls ZSA9IHhzdHJkdXAgKHNhbHMuc2Fsc1tpXS5zeW10YWItPmZpbGVuYW1lKTsKK0BAIC0xMDM3Niw3 ICsxMDU3NSw3IEBAIHVwZGF0ZV9zdGF0aWNfdHJhY2Vwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQg KmIsIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKQorICAgcmV0dXJuIHNhbDsKKyB9CiAgCi0g ICAgICAgaWYgKGItPmxpbmVfbnVtYmVyID09IDApCi1AQCAtMTA0OTQsNiArMTA2MDAsNyBAQCBi cmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCistc3RhdGljIHZvaWQKKyt2b2lkCisg dXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAJCQkg ICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzKQorIHsKK0BAIC0xMDUwOCw2ICsxMDcw Nyw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF90 cmFjZXBvaW50OgogICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9z dGF0aWNfdHJhY2Vwb2ludDoKQEAgLTg2NSw3ICsxMTg2LDcgQEAgaW5kZXggNWJjYWI4Ny4uNTI5 ZWE2MiAxMDA2NDQKICAgICAgICAvKiBEbyBub3QgYXR0ZW1wdCB0byByZS1zZXQgYnJlYWtwb2lu dHMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAuICAqLwogICAgICAgIGlmIChiLT5lbmFibGVfc3Rh dGUgPT0gYnBfc3RhcnR1cF9kaXNhYmxlZCkKICAJcmV0dXJuIDA7Ci1AQCAtMTA2NjQsNiArMTA3 NzEsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitAQCAtMTA2NzgsNiAr MTA4NzgsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgICAgIGNhc2Ug YnBfZXhjZXB0aW9uOgogICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6CiAgICAgIGNhc2Ug YnBfaml0X2V2ZW50OgpAQCAtODczLDcgKzExOTQsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYy IDEwMDY0NAogICAgICAgIGJyZWFrOwogICAgICB9CiAgCi1AQCAtMTA4MjgsMTEgKzEwOTM2LDI1 IEBAIG1hcF9icmVha3BvaW50X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikg KHN0cnVjdCBicmVha3BvaW50ICosCitAQCAtMTA4NDQsMTEgKzExMDQ1LDI1IEBAIG1hcF9icmVh a3BvaW50X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikgKHN0cnVjdCBicmVh a3BvaW50ICosCiAgCSAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRtcCkKICAJICAgIGlmIChi LT5udW1iZXIgPT0gbnVtKQogIAkgICAgICB7CkBAIC05MDMsNyArMTIyNCw3IEBAIGluZGV4IDVi Y2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgCQlicmVhazsKICAJICAgICAgfQogIAkgIGlmIChtYXRj aCA9PSAwKQotQEAgLTExOTQ5LDYgKzEyMDcxLDI0IEBAIGFsbF90cmFjZXBvaW50cyAoKQorQEAg LTExOTc5LDYgKzEyMTk0LDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9pZCkKICAgIHJldHVybiB0 cF92ZWM7CiAgfQogIApAQCAtOTI4LDExNSArMTI0OSw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVh NjIgMTAwNjQ0CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFr LCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5l ZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTIwMzQsNiArMTIxNzQs MTA3IEBAIGl0ZXJhdGVfb3Zlcl9icmVha3BvaW50cyAoaW50ICgqY2FsbGJhY2spIChzdHJ1Y3Qg YnJlYWtwb2ludCAqLCB2b2lkICopLAotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotK3N0YXRpYyB2 b2lkCi0rZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKQotK3sK LSsgIHN0cnVjdCBicmVha3BvaW50ICpiX3JldHVybjsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpw cmV2X2ZyYW1lID0gZ2V0X3ByZXZfZnJhbWUgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKLSsgIHN0 cnVjdCBmcmFtZV9pZCBwcmV2X2ZyYW1lX2lkID0gZ2V0X3N0YWNrX2ZyYW1lX2lkIChwcmV2X2Zy YW1lKTsKLSsgIENPUkVfQUREUiBwcmV2X3BjID0gZ2V0X2ZyYW1lX3BjIChwcmV2X2ZyYW1lKTsK LSsgIGludCB0aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKTsKLSsK LSsgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29sdmVyKTsKLSsKLSsg IGZvciAoYl9yZXR1cm4gPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7IGJfcmV0dXJuICE9IGI7Ci0r ICAgICAgIGJfcmV0dXJuID0gYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCkKLSsgICAgewot KyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm4pOwotKyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT5sb2MgIT0gTlVMTCAmJiBi X3JldHVybi0+bG9jLT5uZXh0ID09IE5VTEwpOwotKyAgICAgIGdkYl9hc3NlcnQgKGZyYW1lX2lk X3AgKGJfcmV0dXJuLT5mcmFtZV9pZCkpOwotKwotKyAgICAgIGlmIChiX3JldHVybi0+dGhyZWFk ID09IHRocmVhZF9pZAotKwkgICYmIGJfcmV0dXJuLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzID09 IHByZXZfcGMKLSsJICAmJiBmcmFtZV9pZF9lcSAoYl9yZXR1cm4tPmZyYW1lX2lkLCBwcmV2X2Zy YW1lX2lkKSkKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChiX3JldHVybiA9PSBiKQotKyAg ICB7Ci0rICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0rCi0rICAgICAgLyogTm8g bmVlZCB0byBjYWxsIGZpbmRfcGNfbGluZSBmb3Igc3ltYm9scyByZXNvbHZpbmcgYXMgdGhpcyBp cyBvbmx5Ci0rCSBhIGhlbHBlciBicmVha3BvaW50ZXIgbmV2ZXIgc2hvd24gdG8gdGhlIHVzZXIu ICAqLwotKwotKyAgICAgIGluaXRfc2FsICgmc2FsKTsKLSsgICAgICBzYWwucHNwYWNlID0gY3Vy cmVudF9pbmZlcmlvciAoKS0+cHNwYWNlOwotKyAgICAgIHNhbC5wYyA9IHByZXZfcGM7Ci0rICAg ICAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNhbC5wYyk7Ci0rICAgICAgc2FsLmV4 cGxpY2l0X3BjID0gMTsKLSsgICAgICBiX3JldHVybiA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2lu dCAoZ2V0X2ZyYW1lX2FyY2ggKHByZXZfZnJhbWUpLCBzYWwsCi0rCQkJCQkgICBwcmV2X2ZyYW1l X2lkLAotKwkJCQkJICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybik7Ci0rCi0rICAgICAg LyogQWRkIG5ldyBiX3JldHVybiB0byB0aGUgcmluZyBsaXN0IGItPnJlbGF0ZWRfYnJlYWtwb2lu dC4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCA9 PSBiX3JldHVybik7Ci0rICAgICAgYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGItPnJl bGF0ZWRfYnJlYWtwb2ludDsKLSsgICAgICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBiX3JldHVy bjsKLSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dudV9pZnVuY19yZXNvbHZlcl9yZXR1 cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCi0rewotKyAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwotKyAgc3RydWN0 IHR5cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9m dW5jX2Z1bmM7Ci0rICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KGZ1bmNfZnVuY190eXBlKTsKLSsgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhy ZWFkX3JlZ2NhY2hlIChpbmZlcmlvcl9wdGlkKTsKLSsgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7Ci0r ICBDT1JFX0FERFIgcmVzb2x2ZWRfYWRkcmVzcywgcmVzb2x2ZWRfcGM7Ci0rICBzdHJ1Y3Qgc3lt dGFiX2FuZF9saW5lIHNhbDsKLSsgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzOwotKwot KyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuKTsK LSsKLSsgIHZhbHVlID0gYWxsb2NhdGVfdmFsdWUgKHZhbHVlX3R5cGUpOwotKyAgZ2RiYXJjaF9y ZXR1cm5fdmFsdWUgKGdkYmFyY2gsIGZ1bmNfZnVuY190eXBlLCB2YWx1ZV90eXBlLCByZWdjYWNo ZSwKLSsJCQl2YWx1ZV9jb250ZW50c19yYXcgKHZhbHVlKSwgTlVMTCk7Ci0rICByZXNvbHZlZF9h ZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwotKyAgcmVzb2x2ZWRfcGMgPSBnZGJh cmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJCSAgICByZXNv bHZlZF9hZGRyZXNzLAotKwkJCQkJCSAgICAmY3VycmVudF90YXJnZXQpOwotKwotKyAgd2hpbGUg KGItPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGJyZWFr cG9pbnQgKmJfbmV4dCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsKLSsgICAgICBzd2l0Y2gg KGItPnR5cGUpCi0rCXsKLSsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6Ci0rCSAgYnJlYWs7 Ci0rCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSsJICBkZWxldGVfYnJlYWtw b2ludCAoYik7Ci0rCSAgYnJlYWs7Ci0rCWRlZmF1bHQ6Ci0rCSAgaW50ZXJuYWxfZXJyb3IgKF9f RklMRV9fLCBfX0xJTkVfXywKLSsJCQkgIF8oImhhbmRsZV9pbmZlcmlvcl9ldmVudDogSW52YWxp ZCAiCi0rCQkJICAgICJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gYnJlYWtwb2ludCB0eXBlICVkIiks Ci0rCQkJICAoaW50KSBiLT50eXBlKTsKLSsJfQotKyAgICAgIGIgPSBiX25leHQ7Ci0rICAgIH0K LSsgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29sdmVyKTsKLSsKLSsg IGdkYl9hc3NlcnQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSA9PSBiLT5wc3BhY2UpOwotKyAgZ251 X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJjaCwgYi0+YWRkcl9zdHJpbmcsIHJlc29sdmVkX3Bj KTsKLSsKLSsgIHNhbCA9IGZpbmRfcGNfbGluZSAocmVzb2x2ZWRfcGMsIDApOwotKyAgc2Fscy5u ZWx0cyA9IDE7Ci0rICBzYWxzLnNhbHMgPSAmc2FsOwotKwotKyAgYi0+dHlwZSA9IGJwX2JyZWFr cG9pbnQ7Ci0rICB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKGIsIHNhbHMpOwotK30KLSsK LSB2b2lkCi0gX2luaXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKLSB7Ci1AQCAtMTI1NjgsNCAr MTI4MDksNyBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBh bHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCitAQCAtMTI1OTgsNCArMTI4MzEsNyBAQCBp bmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0 ZWQgbW9kZSBpcyBvZmYuIiksCiAgICBhdXRvbWF0aWNfaGFyZHdhcmVfYnJlYWtwb2ludHMgPSAx OwogIAogICAgb2JzZXJ2ZXJfYXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJyZWFrcG9pbnRfYWJv dXRfdG9fcHJvY2VlZCk7CkBAIC0xMDQ1LDE5ICsxMjU4LDUxIEBAIGluZGV4IDViY2FiODcuLjUy OWVhNjIgMTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50Lmgg Yi9nZGIvYnJlYWtwb2ludC5oCi1pbmRleCBhMGZlYTIxLi40YjI0NzAxIDEwMDY0NAoraW5kZXgg YmQwOTcxMy4uNTg3ZTNhMSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmgKICsrKyBiL2dk Yi9icmVha3BvaW50LmgKLUBAIC0xNDgsNiArMTQ4LDkgQEAgZW51bSBicHR5cGUKK0BAIC0xNDks NiArMTQ5LDE5IEBAIGVudW0gYnB0eXBlCiAgCiAgICAgIC8qIEV2ZW50IGZvciBKSVQgY29tcGls ZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KICAgICAgYnBfaml0X2V2ZW50LAog KworKyAgICAvKiBCcmVha3BvaW50IGlzIHBsYWNlZCBhdCB0aGUgU1RUX0dOVV9JRlVOQyByZXNv bHZlci4gIFdoZW4gaGl0IEdEQgorKyAgICAgICBpbnNlcnRzIG5ldyBicF9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuIGF0IHRoZSBjYWxsZXIuCisrICAgICAgIGJwX2dudV9pZnVuY19yZXNvbHZl ciBpcyBzdGlsbCBiZWluZyBrZXB0IGhlcmUgYXMgYSBkaWZmZXJlbnQgdGhyZWFkCisrICAgICAg IG1heSBzdGlsbCBoaXQgaXQgYmVmb3JlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4gaXMg aGl0IGJ5IHRoZQorKyAgICAgICBvcmlnaW5hbCB0aHJlYWQuICAqLwogKyAgICBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXIsCisrCisrICAgIC8qIE9uIGl0cyBoaXQgR0RCIG5vdyBrbm93IHRoZSByZXNv bHZlZCBhZGRyZXNzIG9mIHRoZSB0YXJnZXQKKysgICAgICAgU1RUX0dOVV9JRlVOQyBmdW5jdGlv bi4gIEFzc29jaWF0ZWQgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGNhbiBiZQorKyAgICAgICBkZWxl dGVkIG5vdyBhbmQgdGhlIGJyZWFrcG9pbnQgbW92ZWQgdG8gdGhlIHRhcmdldCBmdW5jdGlvbiBl bnRyeQorKyAgICAgICBwb2ludC4gICovCiArICAgIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1 cm4sCiAgICB9OwogIAogIC8qIFN0YXRlcyBvZiBlbmFibGVtZW50IG9mIGJyZWFrcG9pbnQuICAq LworQEAgLTM0NSw2ICszNTgsMTEgQEAgc3RydWN0IGJwX2xvY2F0aW9uCisgICAgICBwcm9jZXNz b3IncyBhcmNoaXRlY3R1YWwgY29uc3RyYWludHMuICAqLworICAgQ09SRV9BRERSIHJlcXVlc3Rl ZF9hZGRyZXNzOworIAorKyAgLyogSWYgdGhlIGxvY2F0aW9uIGNvbWVzIGZyb20gYSBTeXN0ZW1U YXAgcHJvYmUgcG9pbnQsIGFuZCB0aGUgcHJvYmUKKysgICAgIGhhcyBhbiBhc3NvY2lhdGVkIHNl bWFwaG9yZSB2YXJpYWJsZSwgdGhlbiB0aGlzIGlzIHRoZSBhZGRyZXNzIG9mCisrICAgICB0aGUg c2VtYXBob3JlLiAgT3RoZXJ3aXNlLCB0aGlzIGlzIHplcm8uICAqLworKyAgQ09SRV9BRERSIHNl bWFwaG9yZTsKKysKKyAgIGNoYXIgKmZ1bmN0aW9uX25hbWU7CisgCisgICAvKiBEZXRhaWxzIG9m IHRoZSBwbGFjZWQgYnJlYWtwb2ludCwgd2hlbiBpbnNlcnRlZC4gICovCitAQCAtODg4LDYgKzkw Niw5IEBAIGV4dGVybiBpbnQgYnJlYWtwb2ludF90aHJlYWRfbWF0Y2ggKHN0cnVjdCBhZGRyZXNz X3NwYWNlICosCisgCisgZXh0ZXJuIHZvaWQgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqLCBp bnQsIGludCk7CisgCisrZXh0ZXJuIHZvaWQgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChz dHJ1Y3QgYnJlYWtwb2ludCAqYiwKKysJCQkJCSBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2Fs cyk7CisrCisgZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpOworIAorIGV4dGVy biB2b2lkIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAoc3RydWN0IGJyZWFrcG9pbnQgKik7CiBk aWZmIC0tZ2l0IGEvZ2RiL2MtdHlwZXByaW50LmMgYi9nZGIvYy10eXBlcHJpbnQuYwogaW5kZXgg YzcwZmE0Yi4uNmJjMzM5NyAxMDA2NDQKIC0tLSBhL2dkYi9jLXR5cGVwcmludC5jCkBAIC0xMDgw LDYgKzEzMjUsMTggQEAgaW5kZXggYzcwZmE0Yi4uNmJjMzM5NyAxMDA2NDQKICAJZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwogIAogIAljX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCitkaWZmIC0tZ2l0IGEvZ2RiL2NvZmZy ZWFkLmMgYi9nZGIvY29mZnJlYWQuYworaW5kZXggYjExZGQ3My4uMDg2OGE3OSAxMDA2NDQKKy0t LSBhL2dkYi9jb2ZmcmVhZC5jCisrKysgYi9nZGIvY29mZnJlYWQuYworQEAgLTIxOTMsNiArMjE5 Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBjb2ZmX3N5bV9mbnMgPQorIAorICAg ZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBzeW1fcmVsb2NhdGU6IFJlbG9jYXRlIGEgZGVi dWcKKyAJCQkJICAgc2VjdGlvbi4gICovCisrICBOVUxMLAkJCQkvKiBzeW1fcHJvYmVfZm5zICov CisgICAmcHN5bV9mdW5jdGlvbnMKKyB9OworIAogZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVj dG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgogaW5kZXgg MTFjZjJlNi4uOWEyYThmOCAxMDA2NDQKIC0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmls ZS5pbgpAQCAtMTExMSw2ICsxMzY4LDI2IEBAIGluZGV4IDExY2YyZTYuLjlhMmE4ZjggMTAwNjQ0 CiAgCiAgRkxBR1NfVE9fUEFTUyA9IFwKICAJInByZWZpeD0kKHByZWZpeCkiIFwKK2RpZmYgLS1n aXQgYS9nZGIvZGJ4cmVhZC5jIGIvZ2RiL2RieHJlYWQuYworaW5kZXggODI0MmNmOC4uYjJkYjY5 OSAxMDA2NDQKKy0tLSBhL2dkYi9kYnhyZWFkLmMKKysrKyBiL2dkYi9kYnhyZWFkLmMKK0BAIC0x LDYgKzEsNiBAQAorIC8qIFJlYWQgZGJ4IHN5bWJvbCB0YWJsZXMgYW5kIGNvbnZlcnQgdG8gaW50 ZXJuYWwgZm9ybWF0LCBmb3IgR0RCLgorICAgIENvcHlyaWdodCAoQykgMTk4NiwgMTk4NywgMTk4 OCwgMTk4OSwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwKKy0gICAxOTk2LCAx OTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA4LCAyMDA5 LCAyMDEwLgorKyAgIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIw MDMsIDIwMDQsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEuCisgICAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorQEAgLTM1ODYs NiArMzU4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMgPQor ICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBm cm9tIGEgZmlsZS4gICovCisgICBOVUxMLAorICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkv KiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLworKyAgTlVMTCwJCQkJLyogc3ltX3Byb2Jl X2ZucyAqLworICAgJnBzeW1fZnVuY3Rpb25zCisgfTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvZGVm cy5oIGIvZ2RiL2RlZnMuaAogaW5kZXggOTQwOWRkZS4uZjBmYTRjNyAxMDA2NDQKIC0tLSBhL2dk Yi9kZWZzLmgKQEAgLTExMjUsNyArMTQwMiw3IEBAIGluZGV4IDk0MDlkZGUuLmYwZmE0YzcgMTAw NjQ0CiAgZXh0ZXJuIGNoYXIgKnhmdWxscGF0aCAoY29uc3QgY2hhciAqKTsKICAKIGRpZmYgLS1n aXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggYTVl YWE3Mi4uNmNjOThkYyAxMDA2NDQKK2luZGV4IGZjYmJkNmMuLjg3Njc0OWQgMTAwNjQ0CiAtLS0g YS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCiBAQCAtMTE3 Nyw2ICsxMTc3LDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgpAQCAtMTE0NSw3ICsxNDIyLDEw NyBAQCBpbmRleCBhNWVhYTcyLi42Y2M5OGRjIDEwMDY0NAogIEBjIHJlc29sdmUgdGhlIHNpdHVh dGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNvZGV7LS10 dWl9Ci1AQCAtMjA2NzcsOCArMjA2ODcsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3Ig ZXhhbXBsZToKK0BAIC0zMjg2LDYgKzMyOTYsNyBAQCBhbGwgYnJlYWtwb2ludHMgaW4gdGhhdCBy YW5nZSBhcmUgb3BlcmF0ZWQgb24uCisgKiBDb25kaXRpb25zOjogICAgICAgICAgICAgICAgICBC cmVhayBjb25kaXRpb25zCisgKiBCcmVhayBDb21tYW5kczo6ICAgICAgICAgICAgICBCcmVha3Bv aW50IGNvbW1hbmQgbGlzdHMKKyAqIFNhdmUgQnJlYWtwb2ludHM6OiAgICAgICAgICAgIEhvdyB0 byBzYXZlIGJyZWFrcG9pbnRzIGluIGEgZmlsZQorKyogU3RhdGljIFByb2JlIFBvaW50czo6ICAg ICAgICAgTGlzdGluZyBzdGF0aWMgcHJvYmUgcG9pbnRzCisgKiBFcnJvciBpbiBCcmVha3BvaW50 czo6ICAgICAgICBgYENhbm5vdCBpbnNlcnQgYnJlYWtwb2ludHMnJworICogQnJlYWtwb2ludC1y ZWxhdGVkIFdhcm5pbmdzOjogYGBCcmVha3BvaW50IGFkZHJlc3MgYWRqdXN0ZWQuLi4nJworIEBl bmQgbWVudQorQEAgLTQ0OTksNiArNDUxMCw1MCBAQCBhbmQgcmVtb3ZlIHRoZSBicmVha3BvaW50 IGRlZmluaXRpb25zIHlvdSdyZSBub3QgaW50ZXJlc3RlZCBpbiwgb3IKKyB0aGF0IGNhbiBubyBs b25nZXIgYmUgcmVjcmVhdGVkLgorIEBlbmQgdGFibGUKKyAKKytAbm9kZSBTdGF0aWMgUHJvYmUg UG9pbnRzCisrQHN1YnNlY3Rpb24gU3RhdGljIFByb2JlIFBvaW50cworKworK0BjaW5kZXggU3lz dGVtVGFwIHN0YXRpYyBwcm9iZSBwb2ludAorK0BjaW5kZXggc2R0LXByb2JlCisrVGhlIEBzY3tn bnV9L0xpbnV4IHRvb2wgQGNvZGV7U3lzdGVtVGFwfSBwcm92aWRlcyBhIHdheSBmb3IKKythcHBs aWNhdGlvbnMgdG8gZW1iZWQgc3RhdGljIHByb2JlcywgdXNpbmcgQGZpbGV7c2R0Lmh9LiAgQHZh bHVle0dEQk59CisrY2FuIGxpc3QgdGhlIGF2YWlsYWJsZSBwcm9iZXMsIGFuZCB5b3UgY2FuIHB1 dCBicmVha3BvaW50cyBhdCB0aGUKKytwcm9iZSBwb2ludHMgKEBweHJlZntTcGVjaWZ5IExvY2F0 aW9ufSkuCisrCisrWW91IGNhbiBleGFtaW5lIHRoZSBhdmFpbGFibGUgQGNvZGV7U3lzdGVtVGFw fSBzdGF0aWMgcHJvYmVzIHVzaW5nCisrQGNvZGV7aW5mbyBwcm9iZXN9OgorKworK0B0YWJsZSBA Y29kZQorK0BraW5kZXggaW5mbyBwcm9iZXMKKytAaXRlbSBpbmZvIHByb2JlcyBbQHZhcntwcm92 aWRlcn0gW0B2YXJ7bmFtZX0gW0B2YXJ7b2JqZmlsZX1dXV0KKytMaXN0IHRoZSBhdmFpbGFibGUg QGNvZGV7U3lzdGVtVGFwfSBzdGF0aWMgcHJvYmVzLgorKworK0lmIGdpdmVuLCBAdmFye3Byb3Zp ZGVyfSBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHNlbGVjdCB3aGljaAorK3Byb3Zp ZGVycyB0byBsaXN0LiAgSWYgb21pdHRlZCwgYWxsIHByb3ZpZGVycyBhcmUgbGlzdGVkLgorKwor K0lmIGdpdmVuLCBAdmFye25hbWV9IGlzIGEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gc2Vs ZWN0IHdoaWNoCisrcHJvYmVzIHRvIGxpc3QuICBJZiBvbWl0dGVkLCBhbGwgcHJvYmVzIGFyZSBs aXN0ZWQuCisrCisrSWYgZ2l2ZW4sIEB2YXJ7b2JqZmlsZX0gaXMgYSByZWd1bGFyIGV4cHJlc3Np b24gdXNlZCB0byBzZWxlY3Qgd2hpY2gKKytvYmplY3QgZmlsZXMgKGV4ZWN1dGFibGUgb3Igc2hh cmVkIGxpYnJhcmllcykgdG8gZXhhbWluZS4gIElmIG5vdAorK2dpdmVuLCBhbGwgb2JqZWN0IGZp bGVzIGFyZSBjb25zaWRlcmVkLgorK0BlbmQgdGFibGUKKysKKytAdmluZGV4ICRfcHJvYmVfYXJn QHJ7LCBjb252ZW5pZW5jZSB2YXJpYWJsZX0KKytBIHByb2JlIG1heSBzcGVjaWZ5IHVwIHRvIHRl biBhcmd1bWVudHMuICBUaGVzZSBhcmUgYXZhaWxhYmxlIGF0IHRoZQorK3BvaW50IGF0IHdoaWNo IHRoZSBwcm9iZSBpcyBkZWZpbmVkLS0tdGhhdCBpcywgd2hlbiB0aGUgY3VycmVudCBQQyBpcwor K2F0IHRoZSBwcm9iZSdzIGxvY2F0aW9uLiAgVGhlIGFyZ3VtZW50cyBhcmUgYXZhaWxhYmxlIHVz aW5nIHRoZQorK2NvbnZlbmllbmNlIHZhcmlhYmxlcyAoQHB4cmVme0NvbnZlbmllbmNlIFZhcnN9 KQorK0Bjb2RleyRfcHJvYmVfYXJnMH1AZG90c3t9QGNvZGV7JF9wcm9iZV9hcmc5fS4gIEVhY2gg cHJvYmUgYXJndW1lbnQgaXMKKythbiBpbnRlZ2VyIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplOyB0 eXBlcyBhcmUgbm90IHByZXNlcnZlZC4gIFRoZQorK2NvbnZlbmllbmNlIHZhcmlhYmxlIEBjb2Rl eyRfcHJvYmVfYXJnY30gaG9sZHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMKKythdCB0aGUgY3Vy cmVudCBwcm9iZSBwb2ludC4KKysKKytUaGVzZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBhdmFpbGFi bGUsIGJ1dCBhdHRlbXB0cyB0byBhY2Nlc3MgdGhlbSBhdAorK2FueSBsb2NhdGlvbiBvdGhlciB0 aGFuIGEgcHJvYmUgcG9pbnQgd2lsbCBjYXVzZSBAdmFsdWV7R0RCTn0gdG8gZ2l2ZQorK2FuIGVy cm9yLgorKworKworIEBjICBAaWZjbGVhciBCQVJFVEFSR0VUCisgQG5vZGUgRXJyb3IgaW4gQnJl YWtwb2ludHMKKyBAc3Vic2VjdGlvbiBgYENhbm5vdCBpbnNlcnQgYnJlYWtwb2ludHMnJworQEAg LTY0MTEsNiArNjQ2NiwyOSBAQCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5LCBl LmcuLCBpZiB0aGVyZSBhcmUgc2V2ZXJhbAorIGZ1bmN0aW9ucyB3aXRoIGlkZW50aWNhbCBuYW1l cyBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorIEBlbmQgdGFibGUKKyAKKytAY2luZGV4IFN5 c3RlbVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQKKytAaXRlbSBwcm9iZTpAcntbfUB2YXJ7b2JqZmls ZX06QHJ7XX1AcntbfUB2YXJ7cHJvdmlkZXJ9OkBye119QHZhcntuYW1lfQorK1RoZSBAc2N7Z251 fS9MaW51eCB0b29sIEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMgYSB3YXkgZm9yCisrYXBwbGlj YXRpb25zIHRvIGVtYmVkIHN0YXRpYyBwcm9iZXMuICBUaGlzIGZvcm0gb2YgbGluZXNwZWMgc3Bl Y2lmaWVzCisrdGhlIGxvY2F0aW9uIG9mIHN1Y2ggYSBzdGF0aWMgcHJvYmUuICBTZWUKKytAdXJl ZntodHRwOi8vc291cmNld2FyZS5vcmcvc3lzdGVtdGFwL3dpa2kvQWRkaW5nVXNlclNwYWNlUHJv YmluZ1RvQXBwc30KKytmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdGF0aWMgcHJvYmVzLgorKwor K0lmIEB2YXJ7b2JqZmlsZX0gaXMgZ2l2ZW4sIG9ubHkgcHJvYmVzIGNvbWluZyBmcm9tIHRoYXQg c2hhcmVkIGxpYnJhcnkKKytvciBleGVjdXRhYmxlIGFyZSBjb25zaWRlcmVkLiAgSWYgQHZhcntw cm92aWRlcn0gaXMgZ2l2ZW4sIHRoZW4gb25seQorK3Byb2JlcyBmcm9tIHRoYXQgcHJvdmlkZXIg YXJlIGNvbnNpZGVyZWQuCisrCisrQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50c30sIGZvciBtb3Jl IGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgYW5kIHVzaW5nCisrc3RhdGljIHByb2Jlcy4KKysKKytT b21lIHByb2JlcyBoYXZlIGFuIGFzc29jaWF0ZWQgc2VtYXBob3JlIHZhcmlhYmxlOyBmb3IgaW5z dGFuY2UsIHRoaXMKKytoYXBwZW5zIGF1dG9tYXRpY2FsbHkgaWYgeW91IGRlZmluZWQgeW91ciBw cm9iZSB1c2luZyBhIERUcmFjZS1zdHlsZQorK0BmaWxley5kfSBmaWxlLiAgSWYgeW91ciBwcm9i ZSBoYXMgYSBzZW1hcGhvcmUsIEB2YWx1ZXtHREJOfSB3aWxsCisrYXV0b21hdGljYWxseSBlbmFi bGUgaXQgd2hlbiB5b3Ugc3BlY2lmeSBhIGJyZWFrcG9pbnQgdXNpbmcgdGhlCisrQHNhbXB7cHJv YmU6fSBub3RhdGlvbi4gIEJ1dCwgaWYgeW91IHB1dCBhIGJyZWFrcG9pbnQgYXQgYSBwcm9iZSdz CisrbG9jYXRpb24gYnkgc29tZSBvdGhlciBtZXRob2QgKGUuZy4sIEBjb2Rle2JyZWFrIGZpbGU6 bGluZX0pLCB0aGVuCisrQHZhbHVle0dEQk59IHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgc2V0IHRo ZSBzZW1hcGhvcmUuCisrCisgQGVuZCB0YWJsZQorIAorIAorQEAgLTg0OTcsNiArODU3NSwxMCBA QCB0byBtYXRjaCB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBkYXRhIHdhcyBwcmludGVkLgorIFRo ZSB2YXJpYWJsZSBAY29kZXskX2V4aXRjb2RlfSBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUg ZXhpdCBjb2RlIHdoZW4KKyB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCB0ZXJtaW5hdGVzLgor IAorK0BpdGVtICRfcHJvYmVfYXJnYworK0BpdGVteCAkX3Byb2JlX2FyZzBAZG90c3t9JF9wcm9i ZV9hcmc5CisrQXJndW1lbnRzIHRvIGEgU3lzdGVtVGFwIHN0YXRpYyBwcm9iZS4gIEB4cmVme1N0 YXRpYyBQcm9iZSBQb2ludHN9LgorKworIEBpdGVtICRfc2RhdGEKKyBAdmluZGV4ICRfc2RhdGFA cnssIGluc3BlY3QsIGNvbnZlbmllbmNlIHZhcmlhYmxlfQorIFRoZSB2YXJpYWJsZSBAY29kZXsk X3NkYXRhfSBjb250YWlucyBleHRyYSBjb2xsZWN0ZWQgc3RhdGljIHRyYWNlcG9pbnQKK0BAIC0y MDY4OSw4ICsyMDc3MSw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgog IAogIEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9KSBweXRob24KQEAgLTExNTQsNyArMTUz MSw3IEBAIGluZGV4IGE1ZWFhNzIuLjZjYzk4ZGMgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAog IDIzCi1AQCAtMjA2OTEsNiArMjA2OTksMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBj YW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKK0BAIC0yMDcwMyw2ICsyMDc4 MywxNCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5n IEBjb2Rle21haW50IHNldAogIHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle29ufSwgdGhl IGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCiAgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNv ZGV7b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMKICBkaXNhYmxlZC4KQEAgLTEx NjksNyArMTU0Niw3IEBAIGluZGV4IGE1ZWFhNzIuLjZjYzk4ZGMgMTAwNjQ0CiAgQGVuZCB0YWJs ZQogIAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5dGhvbiBzY3JpcHQgZnJv bSB0aGUgQHZhbHVle0dEQk59Ci1AQCAtMjA3MTIsNiArMjA3MjgsMTQgQEAgYW5kIHRodXMgaXMg YWx3YXlzIGF2YWlsYWJsZS4KK0BAIC0yMDcyNCw2ICsyMDgxMiwxNCBAQCBhbmQgdGh1cyBpcyBh bHdheXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9uIGFwaQogIEBjaW5kZXggcHJvZ3JhbW1p bmcgaW4gcHl0aG9uCiAgCkBAIC0xMzMwLDcgKzE3MDcsNyBAQCBpbmRleCBkMTZjODY1Li45NDZh ZDk1IDEwMDY0NAogIFRoaXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4g IERvIG5vdCB1c2UuICAKICBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgogZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmMgYi9nZGIvZHdhcmYyZXhwci5jCi1pbmRleCBhZmU2 ZGRlLi5kMzY0YjE0IDEwMDY0NAoraW5kZXggOGQxODEwZS4uNGEzZTJmMiAxMDA2NDQKIC0tLSBh L2dkYi9kd2FyZjJleHByLmMKICsrKyBiL2dkYi9kd2FyZjJleHByLmMKIEBAIC05MDUsNiArOTA1 LDEzIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwK QEAgLTEzNjksNyArMTc0Niw3IEBAIGluZGV4IDc4ZmY1M2YuLmM4M2YyM2QgMTAwNjQ0CiAgICAv KiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vyc2lvbiwgdmlhIERX X09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Ms IGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dk Yi9kd2FyZjJsb2MuYwotaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQKK2luZGV4IDlmZDhk ZjAuLmNiZmI2ZDYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBiL2dkYi9kd2Fy ZjJsb2MuYwogQEAgLTEzNCw2ICsxMzQsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgpAQCAt MTQwMiw3ICsxNzc5LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQKICsgICAgICBn ZGJfYXNzZXJ0IChzeW1iYXRvbiAhPSBOVUxMKTsKICsgICAgICAqc3RhcnQgPSBzeW1iYXRvbi0+ ZGF0YTsKICsgICAgICAqbGVuZ3RoID0gc3ltYmF0b24tPnNpemU7Ci0gICAgIH0KKysgICAgfQog KyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX21p c3NpbmdfZnVuY3MpCiArICAgIHsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KnN5bWJhdG9uOwpAQCAtMTQxMSw3ICsxNzg4LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAx MDA2NDQKICsgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiA9PSBOVUxMKTsKICsgICAgICAqc3Rh cnQgPSBOVUxMOwogKyAgICAgICpsZW5ndGggPSAwOwkvKiB1bnVzZWQgKi8KLSsgICAgfQorICAg ICB9CiArICBlbHNlCiArICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAr CQkgICAgXygiVW5zdXBwb3J0ZWQgU1lNQk9MX0NPTVBVVEVEX09QUyAlcCBmb3IgXCIlc1wiIiks CkBAIC0xNDI1LDggKzE4MDIsOCBAQCBpbmRleCBlNTE2ZGZhLi4xMmY2YTE5IDEwMDY0NAogIH0K ICAKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gIENv bXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtMjg2LDYgKzI5OSwxNTkgQEAgZHdhcmZfZXhwcl9kd2Fy Zl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVfdCBkaWVfb2Zmc2V0 KQotIAkJCSAgICBjdHgtPmdldF9mcmFtZV9wYywgY3R4LT5iYXRvbik7CitAQCAtMjg2LDYgKzI5 OSwxNzIgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0 ICpjdHgsIHNpemVfdCBkaWVfb2Zmc2V0KQorIAkJICAgICBjdHgtPmdldF9mcmFtZV9wYywgY3R4 LT5iYXRvbik7CiAgfQogIAogK3N0YXRpYyBDT1JFX0FERFIKQEAgLTE0OTEsNiArMTg2OCw3IEBA IGluZGV4IGU1MTZkZmEuLjEyZjZhMTkgMTAwNjQ0CiArICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250 ZXh0ICpjdHg7CiArICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiBiYXRvbjsKICsgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpOworKyAgdm9s YXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7CiArCiArICBiYXRvbi5mcmFtZSA9IGZyYW1l OwogKyAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OwpAQCAtMTUxMiw3ICsxODkwLDE3IEBAIGluZGV4 IGU1MTZkZmEuLjEyZjZhMTkgMTAwNjQ0CiArICBjdHgtPmR3YXJmX2NhbGwgPSBkd2FyZl9leHBy X2R3YXJmX2NhbGw7CiArICBjdHgtPmdldF9vYmplY3RfYWRkcmVzcyA9IGR3YXJmX2V4cHJfb2Jq ZWN0X2FkZHJlc3M7CiArCi0rICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7Cisr ICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKKysgICAgeworKyAgICAgIGR3YXJm X2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsKKysgICAgfQorKyAgaWYgKGV4LnJlYXNvbiA8 IDApCisrICAgIHsKKysgICAgICBpZiAoZXguZXJyb3IgPT0gTk9UX0FWQUlMQUJMRV9FUlJPUikK KysJcmV0dXJuIE5VTEw7CisrICAgICAgZWxzZQorKwl0aHJvd19leGNlcHRpb24gKGV4KTsKKysg ICAgfQogKwogKyAgLyogSXQgd2FzIHVzZWQgb25seSBkdXJpbmcgZHdhcmZfZXhwcl9ldmFsLiAg Ki8KICsgIGN0eC0+YmF0b24gPSBOVUxMOwpAQCAtMTUzMiw2ICsxOTIwLDggQEAgaW5kZXggZTUx NmRmYS4uMTJmNmExOSAxMDA2NDQKICsKICsgIGN0eCA9IGR3YXJmX2V4cHJfcHJlcF9jdHggKGdl dF9zZWxlY3RlZF9mcmFtZSAoTlVMTCksIGRsYmF0b24tPmRhdGEsCiArCQkJICAgICBkbGJhdG9u LT5zaXplLCBkbGJhdG9uLT5wZXJfY3UpOworKyAgaWYgKGN0eCA9PSBOVUxMKQorKyAgICB0aHJv d19lcnJvciAoTk9UX0FWQUlMQUJMRV9FUlJPUiwgXygiVmFsdWUgbm90IGF2YWlsYWJsZSIpKTsK ICsgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQogKyAgICBlcnJvciAoXygiRFdfT1BfKnBpZWNl IGlzIHVuc3VwcG9ydGVkIGZvciBEV19GT1JNX2Jsb2NrIikpOwogKwpAQCAtMTU4NSw3ICsxOTc1 LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQKICBzdHJ1Y3QgcGllY2VfY2xvc3Vy ZQogIHsKICAgIC8qIFJlZmVyZW5jZSBjb3VudC4gICovCi1AQCAtMTA0NSwxMCArMTIxMSw4IEBA IGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTEwNzIsMTEgKzEyNTEsOCBAQCBkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKICAJCQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkKICB7CiAgICBzdHJ1Y3QgdmFs dWUgKnJldHZhbDsKQEAgLTE1OTMsMTcgKzE5ODMsMTcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmEx OSAxMDA2NDQKICAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKICAgIHN0cnVjdCBj bGVhbnVwICpvbGRfY2hhaW47CiAtICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9w ZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKKy0gIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGV4OwogIAogICAgaWYgKGJ5dGVfb2Zmc2V0IDwgMCkKICAgICAgaW52YWxpZF9zeW50aGV0aWNf cG9pbnRlciAoKTsKLUBAIC0xMDYxLDI1ICsxMjI1LDEwIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAor QEAgLTEwODksMzggKzEyNjUsMTQgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICAgICAgcmV0dXJu IHJldHZhbDsKICAgICAgfQogIAogLSAgYmF0b24uZnJhbWUgPSBmcmFtZTsKIC0gIGJhdG9uLnBl cl9jdSA9IHBlcl9jdTsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVw LCAwKTsKLSAKKy0KIC0gIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7CiAtICBvbGRf Y2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7CiAtCkBA IC0xNjE4LDEzICsyMDA4LDMxIEBAIGluZGV4IGU1MTZkZmEuLjEyZjZhMTkgMTAwNjQ0CiAtICBj dHgtPmdldF9mcmFtZV9wYyA9IGR3YXJmX2V4cHJfZnJhbWVfcGM7CiAtICBjdHgtPmdldF90bHNf YWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7CiAtICBjdHgtPmR3YXJmX2NhbGwgPSBk d2FyZl9leHByX2R3YXJmX2NhbGw7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxf Y2xlYW51cCwgMCk7CisgCistICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKKy0g ICAgeworLSAgICAgIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsKKy0gICAgfQor LSAgaWYgKGV4LnJlYXNvbiA8IDApCiArICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChmcmFt ZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKKysgIGlmIChjdHggPT0gTlVMTCkKKyAgICAgeworLSAg ICAgIGlmIChleC5lcnJvciA9PSBOT1RfQVZBSUxBQkxFX0VSUk9SKQorLQl7CistCSAgcmV0dmFs ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworLQkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFi bGUgKHJldHZhbCwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKKy0JICByZXR1cm4gcmV0dmFsOwor LQl9CistICAgICAgZWxzZQorLQl0aHJvd19leGNlcHRpb24gKGV4KTsKKysgICAgICByZXR2YWwg PSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrICAgICAgbWFya192YWx1ZV9ieXRlc191bmF2YWls YWJsZSAocmV0dmFsLCAwLCBUWVBFX0xFTkdUSCAodHlwZSkpOworKyAgICAgIHJldHVybiByZXR2 YWw7CisgICAgIH0KICAKLS0gIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsKICAg IGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQotICAgICB7Ci0gICAgICAgc3RydWN0IHBpZWNlX2Ns b3N1cmUgKmM7Ci1AQCAtMTEyMyw2ICsxMjcyLDE1IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Y19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAg LTExNjYsNiArMTMxOCwxNSBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJICAgIENPUkVfQUREUiBh ZGRyZXNzID0gZHdhcmZfZXhwcl9mZXRjaF9hZGRyZXNzIChjdHgsIDApOwogIAkgICAgaW50IGlu X3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5IChjdHgsIDAp OwogIApAQCAtMTY0MCw3ICsyMDQ4LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQK ICAJICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwogIAkgICAgVkFMVUVf TFZBTCAocmV0dmFsKSA9IGx2YWxfbWVtb3J5OwogIAkgICAgaWYgKGluX3N0YWNrX21lbW9yeSkK LUBAIC0yODA3LDExICsyOTY1LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1 Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTI4NTAsMTEg KzMwMTEsNTEgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5 bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJICAgICAgIGRsYmF0b24tPnBlcl9j dSk7CiAgfQogIApAQCAtMTcxNSw3ICsyMTIzLDcgQEAgaW5kZXggOTZhNDkwZS4uYjBlYmIwNiAx MDA2NDQKICAvKiBDb21waWxlIGEgRFdBUkYgbG9jYXRpb24gZXhwcmVzc2lvbiB0byBhbiBhZ2Vu dCBleHByZXNzaW9uLgogICAgIAogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIv ZHdhcmYycmVhZC5jCi1pbmRleCBkMTIwMjhmLi4zZjQ1YWZmIDEwMDY0NAoraW5kZXggODEwZjY2 YS4uZjhkMjBhYyAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKICsrKyBiL2dkYi9kd2Fy ZjJyZWFkLmMKIEBAIC0xMjExLDYgKzEyMTEsOSBAQCBzdGF0aWMgdm9pZCBmaWxsX2luX2xvY2xp c3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LApAQCAtMjE3Nyw3ICsyNTg1LDcgQEAgaW5k ZXggZDEyMDI4Zi4uM2Y0NWFmZiAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGll LCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC0xMDc4NiwxMCArMTA5OTQsMTIgQEAgdmFyX2RlY29k ZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAor QEAgLTEwODM1LDEwICsxMTA0MywxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2 YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNl ZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQK ICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5s ZXNzIHBlcmZvcm1hbmNlCkBAIC0yMTkyLDcgKzI2MDAsNyBAQCBpbmRleCBkMTIwMjhmLi4zZjQ1 YWZmIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FSRiBpbmZvcm1h dGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAtMTA4MjcsNiArMTEwMzcsOCBA QCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTA4NzYsNiArMTEwODYsOCBAQCBuZXdfc3lt Ym9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UsCiAgICAgICAgZWxzZQogIAlzeW0gPSBPQlNUQUNLX1pBTExPQyAoJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7CiAgICAgICAgT0JKU1RBVCAo b2JqZmlsZSwgbl9zeW1zKyspOwpAQCAtMjIwMSw3ICsyNjA5LDcgQEAgaW5kZXggZDEyMDI4Zi4u M2Y0NWFmZiAxMDA2NDQKICAKICAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5k IHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwogICAgICAgIFNZTUJPTF9T RVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKLUBAIC0xMTU5OSw2ICsxMTgxMSw5IEBA IHJlYWRfdHlwZV9kaWVfMSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorQEAgLTExNjQ4LDYgKzExODYwLDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgYnJlYWs7CiAgICAgIH0K ICAKQEAgLTIyMTEsNyArMjYxOSw3IEBAIGluZGV4IGQxMjAyOGYuLjNmNDVhZmYgMTAwNjQ0CiAg ICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC0xNDQxOSw2MSArMTQ2MzQsOTkgQEAgZmls bF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKK0BAIC0xNDQ2OCw2MSAr MTQ2ODMsOTkgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwK ICAgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwogIH0KICAKQEAgLTIz NTQsNyArMjc2Miw3IEBAIGluZGV4IGQxMjAyOGYuLjNmNDVhZmYgMTAwNjQ0CiAgICAgIH0KICB9 CiAgCi1AQCAtMTQ4MTksNiArMTUwNzIsMjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2 b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitAQCAtMTQ4NjgsNiArMTUxMjEs MjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9p ZCAqaXRlbV9yaHMpCiAgICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9mc19yaHMtPm9mZnNl dDsKICB9CiAgCkBAIC0yMzgwLDcgKzI3ODgsNyBAQCBpbmRleCBkMTIwMjhmLi4zZjQ1YWZmIDEw MDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZl IGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5j ZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTQ4NDQsNiArMTUxMTYsOCBAQCBzZXRfZGllX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCitAQCAtMTQ4OTMsNiArMTUxNjUsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogICAgaHRhYl90ICp0eXBlX2hh c2hfcHRyOwogIApAQCAtMjM5MCwxOCArMjc5OCw1NiBAQCBpbmRleCBkMTIwMjhmLi4zZjQ1YWZm IDEwMDY0NAogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBh cmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJl Y2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwogZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFk LmMgYi9nZGIvZWxmcmVhZC5jCi1pbmRleCBjNTkxMzRiLi5jMmM4MjI5IDEwMDY0NAoraW5kZXgg ZTYzOGEzNi4uYzE4OTNmZSAxMDA2NDQKIC0tLSBhL2dkYi9lbGZyZWFkLmMKICsrKyBiL2dkYi9l bGZyZWFkLmMKLUBAIC0zNyw2ICszNyw3IEBACitAQCAtMzcsNiArMzcsMTQgQEAKICAjaW5jbHVk ZSAiY29tcGxhaW50cy5oIgogICNpbmNsdWRlICJkZW1hbmdsZS5oIgogICNpbmNsdWRlICJwc3lt cHJpdi5oIgogKyNpbmNsdWRlICJnZGJ0eXBlcy5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNp bmNsdWRlICJpbmZjYWxsLmgiCisrI2luY2x1ZGUgImdkYnRocmVhZC5oIgorKyNpbmNsdWRlICJy ZWdjYWNoZS5oIgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCisrI2luY2x1ZGUgImFyY2gtdXRp bHMuaCIKKysjaW5jbHVkZSAiZ2RidHlwZXMuaCIKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6 ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBAIC0xODMsNyArMTg0LDggQEAgcmVjb3JkX21pbmltYWxf c3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9sZW4sIGludCBjb3B5X25hbWUsCitA QCAtNTUsOCArNjMsMzAgQEAgc3RydWN0IGVsZmluZm8KKyAgICAgYXNlY3Rpb24gKm1kZWJ1Z3Nl Y3Q7CS8qIFNlY3Rpb24gcG9pbnRlciBmb3IgLm1kZWJ1ZyBzZWN0aW9uICovCisgICB9OworIAor Ky8qIFBlci1vYmpmaWxlIGRhdGEgZm9yIFN5c3RlbXRhcCBwcm9iZSBpbmZvLiAgKi8KKysKKytz dGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqc3RhcF9wcm9iZV9rZXkgPSBOVUxMOwor KworKy8qIFBlci1vYmpmaWxlIGRhdGEgYWJvdXQgU3lzdGVtdGFwIHByb2Jlcy4gICovCisrCisr c3RydWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUKKysgIHsKKysgICAgLyogVGhlIG51bWJlciBv ZiBwcm9iZXMgaW4gdGhpcyBvYmpmaWxlLiAgKi8KKysgICAgaW50IHN0YXBfbnVtX3Byb2JlczsK KysKKysgICAgLyogVGhlIHByb2JlcyB0aGVtc2VsdmVzLiAgKi8KKysgICAgc3RydWN0IHN0YXBf cHJvYmUgKnByb2JlczsKKysgIH07CisrCisgc3RhdGljIHZvaWQgZnJlZV9lbGZpbmZvICh2b2lk ICopOworIAorKy8qIE1pbmltYWwgc3ltYm9scyBsb2NhdGVkIGF0IHRoZSBHT1QgZW50cmllcyBm b3IgLnBsdCAtIHRoYXQgaXMgdGhlIHJlYWwKKysgICBwb2ludGVyIHdoZXJlIHRoZSBnaXZlbiBl bnRyeSB3aWxsIGp1bXAgdG8uICBJdCBnZXRzIHVwZGF0ZWQgYnkgdGhlIHJlYWwKKysgICBmdW5j dGlvbiBhZGRyZXNzIGR1cmluZyBsYXp5IGxkLnNvIHJlc29sdmluZyBpbiB0aGUgaW5mZXJpb3Iu ICBUaGVzZQorKyAgIG1pbmltYWwgc3ltYm9scyBhcmUgaW5kZXhlZCBmb3IgPHRhYj4tY29tcGxl dGlvbi4gICovCisrCisrI2RlZmluZSBTWU1CT0xfR09UX1BMVF9TVUZGSVggIkBnb3QucGx0Igor KworIC8qIExvY2F0ZSB0aGUgc2VnbWVudHMgaW4gQUJGRC4gICovCisgCisgc3RhdGljIHN0cnVj dCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqCitAQCAtMTg0LDcgKzIxNCw4IEBAIHJlY29yZF9taW5p bWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuLCBpbnQgY29weV9uYW1l LAogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSk7CiAgCkBAIC0yNDExLDcgKzI4NTcsNyBAQCBpbmRleCBjNTkxMzRiLi5jMmM4MjI5IDEw MDY0NAogICAgICBhZGRyZXNzID0gZ2RiYXJjaF9zbWFzaF90ZXh0X2FkZHJlc3MgKGdkYmFyY2gs IGFkZHJlc3MpOwogIAogICAgcmV0dXJuIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sX2Z1bGwg KG5hbWUsIG5hbWVfbGVuLCBjb3B5X25hbWUsIGFkZHJlc3MsCi1AQCAtMzkxLDcgKzM5MywxMCBA QCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKK0BA IC0zOTMsNyArNDI0LDEwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGludCB0eXBlLAogIAkgICAgewogIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xP QkFMIHwgQlNGX1dFQUspKQogIAkJewpAQCAtMjQyMywxMSArMjg2OSwxNiBAQCBpbmRleCBjNTkx MzRiLi5jMmM4MjI5IDEwMDY0NAogIAkJfQogIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBd ID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQogIAkJICAgICAgIHx8ICgoc3ltLT5mbGFn cyAmIEJTRl9MT0NBTCkKLUBAIC01NzQsNiArNTc5LDI1MCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKLSAgICAgfQorQEAgLTU3Nyw2ICs2MTEs NDY3IEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBl LAorICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwogIH0KICAKLSsvKiBGSVhNRTogRGVsYXkgaXQg dGhyb3VnaCBlbGZfc3ltX2Zucy4gICovCisrLyogQnVpbGQgbWluaW1hbCBzeW1ib2xzIG5hbWVk IGBmdW5jdGlvbkBnb3QucGx0JyAoc2VlIFNZTUJPTF9HT1RfUExUX1NVRkZJWCkKKysgICBmb3Ig bGF0ZXIgbG9vayB1cHMgb2Ygd2hpY2ggZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHVzZXIgcmVxdWVz dHMKKysgICBhIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24uICBBcyB0aGUgU1RUX0dOVV9JRlVOQyB0 eXBlIGlzIGZvdW5kIGF0IHRoZSB0YXJnZXQKKysgICBsaWJyYXJ5IGRlZmluaW5nIGBmdW5jdGlv bicgd2UgY2Fubm90IHlldCBrbm93IHdoaWxlIHJlYWRpbmcgT0JKRklMRSB3aGljaAorKyAgIG9m IHRoZSBTWU1CT0xfR09UX1BMVF9TVUZGSVggZW50cmllcyB3aWxsIGJlIG5lZWRlZCBhbmQgbGF0 ZXIKKysgICBEWU5fU1lNQk9MX1RBQkxFIGlzIG5vIGxvbmdlciBlYXNpbHkgYXZhaWxhYmxlIGZv ciBPQkpGSUxFLiAgKi8KICsKICtzdGF0aWMgdm9pZAogK2VsZl9yZWxfcGx0X3JlYWQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBhc3ltYm9sICoqZHluX3N5bWJvbF90YWJsZSkKQEAgLTI0Nzcs OCArMjkyOCw3IEBAIGluZGV4IGM1OTEzNGIuLmMyYzgyMjkgMTAwNjQ0CiArICAgICAgY29uc3Qg Y2hhciAqbmFtZSwgKm5hbWVfZ290X3BsdDsKICsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW07CiArICAgICAgQ09SRV9BRERSIGFkZHJlc3M7Ci0rICAgICAgY29uc3QgY2hhciAqc3Vm Zml4ID0gIkBnb3QucGx0IjsKLSsgICAgICBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbiAoc3Vm Zml4KTsKKysgICAgICBjb25zdCBzaXplX3QgZ290X3N1ZmZpeF9sZW4gPSBzdHJsZW4gKFNZTUJP TF9HT1RfUExUX1NVRkZJWCk7CiArICAgICAgc2l6ZV90IG5hbWVfbGVuOwogKwogKyAgICAgIG5h bWUgPSBiZmRfYXN5bWJvbF9uYW1lICgqcmVscGx0LT5yZWxvY2F0aW9uW3JlbG9jXS5zeW1fcHRy X3B0cik7CkBAIC0yNDk1LDE2ICsyOTQ1LDE3IEBAIGluZGV4IGM1OTEzNGIuLmMyYzgyMjkgMTAw NjQ0CiArCSBPQkpGSUxFIHRoZSBzeW1ib2wgaXMgdW5kZWZpbmVkIGFuZCB0aGUgb2JqZmlsZSBo YXZpbmcgTkFNRSBkZWZpbmVkCiArCSBtYXkgbm90IHlldCBoYXZlIGJlZW4gbG9hZGVkLiAgKi8K ICsKLSsgICAgICBpZiAoc3RyaW5nX2J1ZmZlcl9zaXplIDwgbmFtZV9sZW4gKyBzdWZmaXhfbGVu KQorKyAgICAgIGlmIChzdHJpbmdfYnVmZmVyX3NpemUgPCBuYW1lX2xlbiArIGdvdF9zdWZmaXhf bGVuKQogKwl7Ci0rCSAgc3RyaW5nX2J1ZmZlcl9zaXplID0gMiAqIChuYW1lX2xlbiArIHN1ZmZp eF9sZW4pOworKwkgIHN0cmluZ19idWZmZXJfc2l6ZSA9IDIgKiAobmFtZV9sZW4gKyBnb3Rfc3Vm Zml4X2xlbik7CiArCSAgc3RyaW5nX2J1ZmZlciA9IHhyZWFsbG9jIChzdHJpbmdfYnVmZmVyLCBz dHJpbmdfYnVmZmVyX3NpemUpOwogKwl9CiArICAgICAgbWVtY3B5IChzdHJpbmdfYnVmZmVyLCBu YW1lLCBuYW1lX2xlbik7Ci0rICAgICAgbWVtY3B5ICgmc3RyaW5nX2J1ZmZlcltuYW1lX2xlbl0s IHN1ZmZpeCwgc3VmZml4X2xlbik7CisrICAgICAgbWVtY3B5ICgmc3RyaW5nX2J1ZmZlcltuYW1l X2xlbl0sIFNZTUJPTF9HT1RfUExUX1NVRkZJWCwKKysJICAgICAgZ290X3N1ZmZpeF9sZW4pOwog KwotKyAgICAgIG1zeW0gPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKHN0cmluZ19idWZmZXIsIG5h bWVfbGVuICsgc3VmZml4X2xlbiwgMSwKLSsJCQkJICAgIGFkZHJlc3MsIG1zdF9zbG90X2dvdF9w bHQsIGdvdF9wbHQsCisrICAgICAgbXN5bSA9IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoc3RyaW5n X2J1ZmZlciwgbmFtZV9sZW4gKyBnb3Rfc3VmZml4X2xlbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxLCBhZGRyZXNzLCBtc3Rfc2xvdF9nb3RfcGx0LCBnb3RfcGx0LAog KwkJCQkgICAgb2JqZmlsZSk7CiArICAgICAgaWYgKG1zeW0pCiArCU1TWU1CT0xfU0laRSAobXN5 bSkgPSBwdHJfc2l6ZTsKQEAgLTI1MTMsMjMgKzI5NjQsNjQgQEAgaW5kZXggYzU5MTM0Yi4uYzJj ODIyOSAxMDA2NDQKICsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKICt9CiArCi0rLyogRnVuY3Rp b24gZG9lcyBub3QgY2hlY2sgZm9yIHBvc3NpYmx5IGNyZWF0ZWQgZHVwbGljaXRpZXMgaW4gdGhl IGNhY2hlLgotKyAgIENoZWNrIGl0IGJ5IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIGZpcnN0 LiAgKi8KKysvKiBUaGUgZGF0YSBwb2ludGVyIGlzIGh0YWJfdCBmb3IgZ251X2lmdW5jX3JlY29y ZF9jYWNoZV91bmNoZWNrZWQuICAqLworKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZmlsZV9k YXRhICplbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YTsKKysKKysvKiBNYXAgZnVuY3Rp b24gbmFtZXMgdG8gQ09SRV9BRERSIGluIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRh LiAgKi8KKysKKytzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZQorK3sKKysgIC8qIFRoaXMgaXMg YWx3YXlzIGEgZnVuY3Rpb24gZW50cnkgYWRkcmVzcywgbm90IGEgZnVuY3Rpb24gZGVzY3JpcHRv ci4gICovCisrICBDT1JFX0FERFIgYWRkcjsKKysKKysgIGNoYXIgbmFtZVsxXTsKKyt9OworKwor Ky8qIGh0YWJfaGFzaCBmb3IgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2RhdGEuICAqLwor KworK3N0YXRpYyBoYXNodmFsX3QKKytlbGZfZ251X2lmdW5jX2NhY2hlX2hhc2ggKGNvbnN0IHZv aWQgKmFfdm9pZHApCisreworKyAgY29uc3Qgc3RydWN0IGVsZl9nbnVfaWZ1bmNfY2FjaGUgKmEg PSBhX3ZvaWRwOworKworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGEtPm5hbWUpOworK30K KysKKysvKiBodGFiX2VxIGZvciBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YS4gICov CisrCisrc3RhdGljIGludAorK2VsZl9nbnVfaWZ1bmNfY2FjaGVfZXEgKGNvbnN0IHZvaWQgKmFf dm9pZHAsIGNvbnN0IHZvaWQgKmJfdm9pZHApCisreworKyAgY29uc3Qgc3RydWN0IGVsZl9nbnVf aWZ1bmNfY2FjaGUgKmEgPSBhX3ZvaWRwOworKyAgY29uc3Qgc3RydWN0IGVsZl9nbnVfaWZ1bmNf Y2FjaGUgKmIgPSBiX3ZvaWRwOworKworKyAgcmV0dXJuIHN0cmNtcCAoYS0+bmFtZSwgYi0+bmFt ZSkgPT0gMDsKKyt9CisrCisrLyogUmVjb3JkIHRoZSB0YXJnZXQgZnVuY3Rpb24gYWRkcmVzcyBv ZiBhIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24gTkFNRSBpcyB0aGUKKysgICBmdW5jdGlvbiBlbnRy eSBhZGRyZXNzIEFERFIuICBSZXR1cm4gMSBpZiBOQU1FIGFuZCBBRERSIGFyZSBjb25zaWRlcmVk IGFzCisrICAgdmFsaWQgYW5kIHRoZXJlZm9yZSB0aGV5IHdlcmUgc3VjY2Vzc2Z1bGx5IHJlY29y ZGVkLCByZXR1cm4gMCBvdGhlcndpc2UuCisrCisrICAgRnVuY3Rpb24gZG9lcyBub3QgZXhwZWN0 IGEgZHVwbGljYXRlIGVudHJ5LiAgVXNlCisrICAgZWxmX2dudV9pZnVuY19yZXNvbHZlX2J5X2Nh Y2hlIGZpcnN0IHRvIGNoZWNrIGlmIHRoZSBlbnRyeSBmb3IgTkFNRSBhbHJlYWR5CisrICAgZXhp c3RzLiAgKi8KICsKLStzdGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStnbnVfaWZ1bmNf cmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKLSsJCQkJ ICBDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKKytzdGF0aWMgaW50CisrZWxmX2dudV9pZnVu Y19yZWNvcmRfY2FjaGUgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRyKQogK3sKLSsg IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OworKyAgc3RydWN0IG1pbmlt YWxfc3ltYm9sICptc3ltOwogKyAgYXNlY3Rpb24gKnNlY3Q7CiArICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZTsKLSsgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsKKysgIGh0YWJf dCBodGFiOworKyAgc3RydWN0IGVsZl9nbnVfaWZ1bmNfY2FjaGUgZW50cnlfbG9jYWwsICplbnRy eV9wOworKyAgdm9pZCAqKnNsb3Q7CiArCi0rICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9s X2J5X3BjIChmdW5jdGlvbl9hZGRyZXNzKTsKKysgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1i b2xfYnlfcGMgKGFkZHIpOwogKyAgaWYgKG1zeW0gPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7 Ci0rICBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJlc3Mp Ci0rICAgIHJldHVybiBOVUxMOworKyAgICByZXR1cm4gMDsKKysgIGlmIChTWU1CT0xfVkFMVUVf QUREUkVTUyAobXN5bSkgIT0gYWRkcikKKysgICAgcmV0dXJuIDA7CiArICAvKiBtaW5pbWFsIHN5 bWJvbHMgaGF2ZSBhbHdheXMgU1lNQk9MX09CSl9TRUNUSU9OIG5vbi1OVUxMLiAgKi8KICsgIHNl Y3QgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT50aGVfYmZkX3NlY3Rpb247CiArICBvYmpm aWxlID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3ltKS0+b2JqZmlsZTsKQEAgLTI1MzgsNjcgKzMw MzAsMTA1IEBAIGluZGV4IGM1OTEzNGIuLmMyYzgyMjkgMTAwNjQ0CiArICAgICByZXNvbHV0aW9u IGFuZCBpdCBoYXMgbm8gdXNlIGZvciBHREIuICBCZXNpZGVzICIudGV4dCIgdGhpcyBzeW1ib2wg Y2FuCiArICAgICByZXNpZGUgYWxzbyBpbiAiLm9wZCIgZm9yIHBwYzY0IGZ1bmN0aW9uIGRlc2Ny aXB0b3IuICAqLwogKyAgaWYgKHN0cmNtcCAoYmZkX2dldF9zZWN0aW9uX25hbWUgKG9iamZpbGUt Pm9iZmQsIHNlY3QpLCAiLnBsdCIpID09IDApCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgZnVu Y3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUp Ci0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1 bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9u YW1lKTsKLSsKLSsgIC8qIENyZWF0ZSBuZXcgYWxpYXMgIkBnbnUtaWZ1bmMtdGd0IiBmb3IgTVNZ TS4gICovCi0rICBtc3ltX25ldyA9IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoZnVuY3Rpb25fbmFt ZV9nbnVfaWZ1bmNfdGd0LAotKwkJCQkgICAgc3RybGVuIChmdW5jdGlvbl9uYW1lX2dudV9pZnVu Y190Z3QpLCAxLAotKwkJCQkgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pLAotKwkJCQkg ICAgTVNZTUJPTF9UWVBFIChtc3ltKSwgc2VjdCwgb2JqZmlsZSk7Ci0rICAvKiBTaG91bGQgbm90 IGhhcHBlbi4gICovCi0rICBpZiAobXN5bV9uZXcgPT0gTlVMTCkKICsgICAgcmV0dXJuIDA7CiAr Ci0rICAvKiBvYmpmaWxlLT5tc3ltYm9scyBhcnJheSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBvbiBv YnN0YWNrIGFuZCBpdCBjYW5ub3QgYmUKLSsgICAgIGVhc2lseSBleHRlbmRlZC4gIFRoZXJlZm9y ZSA8dGFiPi1jb21wbGV0aW9uIG9uIHN5bWJvbCBuYW1lcyB3aWxsIG5ldmVyCi0rICAgICBzaG93 IHRoZSBAZ251LWlmdW5jLXRndCBzeW1ib2wuICBMaW5rIGl0IGF0IGxlYXN0IHRvIHRoZSBoYXNo IHRhYmxlIHNvCi0rICAgICB0aGF0IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIGNhbiBmaW5k IGl0LiAgKi8KLSsgIGFkZF9taW5zeW1fdG9faGFzaF90YWJsZSAobXN5bV9uZXcsIG9iamZpbGUt Pm1zeW1ib2xfaGFzaCk7Ci0rICAgIAotKyAgTVNZTUJPTF9TSVpFIChtc3ltX25ldykgPSBNU1lN Qk9MX1NJWkUgKG1zeW0pOwotKyAgcmV0dXJuIG1zeW1fbmV3OworKyAgaHRhYiA9IG9iamZpbGVf ZGF0YSAob2JqZmlsZSwgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2RhdGEpOworKyAgaWYg KGh0YWIgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGh0YWIgPSBodGFiX2NyZWF0ZV9hbGxvY19l eCAoMSwgZWxmX2dudV9pZnVuY19jYWNoZV9oYXNoLAorKwkJCQkgICBlbGZfZ251X2lmdW5jX2Nh Y2hlX2VxLAorKwkJCQkgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJCQkg ICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCisrCQkJCSAgIGR1bW15X29ic3RhY2tfZGVhbGxv Y2F0ZSk7CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgZWxmX29iamZpbGVfZ251 X2lmdW5jX2NhY2hlX2RhdGEsIGh0YWIpOworKyAgICB9CisrCisrICBlbnRyeV9sb2NhbC5hZGRy ID0gYWRkcjsKKysgIG9ic3RhY2tfZ3JvdyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgJmVu dHJ5X2xvY2FsLAorKwkJb2Zmc2V0b2YgKHN0cnVjdCBlbGZfZ251X2lmdW5jX2NhY2hlLCBuYW1l KSk7CisrICBvYnN0YWNrX2dyb3dfc3RyMCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgbmFt ZSk7CisrICBlbnRyeV9wID0gb2JzdGFja19maW5pc2ggKCZvYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2spOworKworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChodGFiLCBlbnRyeV9wLCBJTlNFUlQp OworKyAgaWYgKCpzbG90ICE9IE5VTEwpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgZWxmX2dudV9p ZnVuY19jYWNoZSAqZW50cnlfZm91bmRfcCA9ICpzbG90OworKyAgICAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsKKysKKysgICAgICBpZiAoZW50cnlfZm91bmRf cC0+YWRkciAhPSBhZGRyKQorKwl7CisrCSAgLyogVGhpcyBjYXNlIGluZGljYXRlcyBidWdneSBp bmZlcmlvciBwcm9ncmFtLCB0aGUgcmVzb2x2ZWQgYWRkcmVzcworKwkgICAgIHNob3VsZCBuZXZl ciBjaGFuZ2UuICAqLworKworKwkgICAgd2FybmluZyAoXygiZ251LWluZGlyZWN0LWZ1bmN0aW9u IFwiJXNcIiBoYXMgY2hhbmdlZCBpdHMgcmVzb2x2ZWQgIgorKwkJICAgICAgICJmdW5jdGlvbl9h ZGRyZXNzIGZyb20gJXMgdG8gJXMiKSwKKysJCSAgICAgbmFtZSwgcGFkZHJlc3MgKGdkYmFyY2gs IGVudHJ5X2ZvdW5kX3AtPmFkZHIpLAorKwkJICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcikp OworKwl9CisrCisrICAgICAgLyogTmV3IEVOVFJZX1AgaXMgaGVyZSBsZWFrZWQvZHVwbGljYXRl IGluIHRoZSBPQkpGSUxFIG9ic3RhY2suICAqLworKyAgICB9CisrICAqc2xvdCA9IGVudHJ5X3A7 CisrCisrICByZXR1cm4gMTsKICt9CiArCi0rLyogQ2hlY2sgZmlyc3QgdGhlIGNhY2hlIGlmIGl0 IC0gdW5saWtlbHkgLSBoYXMgbm90IGJlZW4gcG9wdWxhdGVkIHNpbmNlCi0rICAgYnBfZ251X2lm dW5jX3Jlc29sdmVyIGhhcyBiZWVuIGNyZWF0ZWQuICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3Vu Y2hlY2tlZAotKyAgIGNvdWxkIGNyZWF0ZSBhIGR1cGxpY2F0ZSBzeW1ib2wgb3RoZXJ3aXNlLiAg Ki8KKysvKiBUcnkgdG8gZmluZCB0aGUgdGFyZ2V0IHJlc29sdmVkIGZ1bmN0aW9uIGVudHJ5IGFk ZHJlc3Mgb2YgYSBTVFRfR05VX0lGVU5DCisrICAgZnVuY3Rpb24gTkFNRS4gIElmIHRoZSBhZGRy ZXNzIGlzIGZvdW5kIGl0IGlzIHN0b3JlZCB0byAqQUREUl9QIChpZiBBRERSX1AKKysgICBpcyBu b3QgTlVMTCkgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIDEuICBJdCByZXR1cm5zIDAgb3RoZXJ3 aXNlLgogKwotK3ZvaWQKLStnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKLSsJCQlDT1JFX0FERFIgZnVuY3Rp b25fYWRkcmVzcykKKysgICBPbmx5IHRoZSBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0 YSBoYXNoIHRhYmxlIGlzIHNlYXJjaGVkIGJ5IHRoaXMKKysgICBmdW5jdGlvbi4gICovCisrCisr c3RhdGljIGludAorK2VsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9ieV9jYWNoZSAoY29uc3QgY2hhciAq bmFtZSwgQ09SRV9BRERSICphZGRyX3ApCiArewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpt c3ltOworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CiArCi0rICBtc3ltID0gcmVzb2x2ZV9n bnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOwotKyAgaWYgKG1zeW0gPT0gTlVMTCkK LSsgICAgZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGZ1bmN0aW9uX25hbWUsIGZ1 bmN0aW9uX2FkZHJlc3MpOwotKyAgZWxzZSBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0p ICE9IGZ1bmN0aW9uX2FkZHJlc3MpCisrICBBTExfUFNQQUNFX09CSkZJTEVTIChjdXJyZW50X3By b2dyYW1fc3BhY2UsIG9iamZpbGUpCiArICAgIHsKLSsgICAgICAvKiBUaGlzIGNhc2UgaW5kaWNh dGVzIGJ1Z2d5IGluZmVyaW9yIHByb2dyYW0uICBHREIgd291bGQgbmVlZCB0byB1cGRhdGUKLSsJ IGl0cyBNU1lNIGNhY2hlIHN5bWJvbCBmb3IgZnVuY3Rpb25fYWRkcmVzcy4gIEFueXdheSBGVU5D VElPTl9OQU1FIGlzCi0rCSBuZXZlciBub3JtYWxseSBmb3VuZCBpbiB0aGUgY2FzZSBhcyBpbiBz dWNoIGNhc2Ugbm8KLSsJIGJwX2dudV9pZnVuY19yZXNvbHZlciB3b3VsZCBiZSBjcmVhdGVkIGlu IHRoZSBmaXJzdCBwbGFjZS4gICovCi0rCi0rICAgICAgd2FybmluZyAoXygiZ251LWluZGlyZWN0 LWZ1bmN0aW9uIFwiJXNcIiBoYXMgY2hhbmdlZCBpdHMgcmVzb2x2ZWQgIgotKwkJICJmdW5jdGlv bl9hZGRyZXNzIGZyb20gJXMgdG8gJXM7IEdEQiBpcyB1c2luZyB0aGUgZm9ybWVyIG9uZSIpLAot KwkgICAgICAgZnVuY3Rpb25fbmFtZSwgcGFkZHJlc3MgKGdkYmFyY2gsIFNZTUJPTF9WQUxVRV9B RERSRVNTIChtc3ltKSksCi0rCSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgZnVuY3Rpb25fYWRk cmVzcykpOworKyAgICAgIGh0YWJfdCBodGFiOworKyAgICAgIHN0cnVjdCBlbGZfZ251X2lmdW5j X2NhY2hlICplbnRyeV9wOworKyAgICAgIHZvaWQgKipzbG90OworKworKyAgICAgIGh0YWIgPSBv YmpmaWxlX2RhdGEgKG9iamZpbGUsIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhKTsK KysgICAgICBpZiAoaHRhYiA9PSBOVUxMKQorKwljb250aW51ZTsKKysKKysgICAgICBlbnRyeV9w ID0gYWxsb2NhIChzaXplb2YgKCplbnRyeV9wKSArIHN0cmxlbiAobmFtZSkpOworKyAgICAgIHN0 cmNweSAoZW50cnlfcC0+bmFtZSwgbmFtZSk7CisrCisrICAgICAgc2xvdCA9IGh0YWJfZmluZF9z bG90IChodGFiLCBlbnRyeV9wLCBOT19JTlNFUlQpOworKyAgICAgIGlmIChzbG90ID09IE5VTEwp CisrCWNvbnRpbnVlOworKyAgICAgIGVudHJ5X3AgPSAqc2xvdDsKKysgICAgICBnZGJfYXNzZXJ0 IChlbnRyeV9wICE9IE5VTEwpOworKworKyAgICAgIGlmIChhZGRyX3ApCisrCSphZGRyX3AgPSBl bnRyeV9wLT5hZGRyOworKyAgICAgIHJldHVybiAxOwogKyAgICB9CisrCisrICByZXR1cm4gMDsK ICt9CiArCi0rc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0rcmVzb2x2ZV9nbnVfaWZ1 bmNfYnlfZ290IChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorKy8qIFRyeSB0byBmaW5kIHRo ZSB0YXJnZXQgcmVzb2x2ZWQgZnVuY3Rpb24gZW50cnkgYWRkcmVzcyBvZiBhIFNUVF9HTlVfSUZV TkMKKysgICBmdW5jdGlvbiBOQU1FLiAgSWYgdGhlIGFkZHJlc3MgaXMgZm91bmQgaXQgaXMgc3Rv cmVkIHRvICpBRERSX1AgKGlmIEFERFJfUAorKyAgIGlzIG5vdCBOVUxMKSBhbmQgdGhlIGZ1bmN0 aW9uIHJldHVybnMgMS4gIEl0IHJldHVybnMgMCBvdGhlcndpc2UuCisrCisrICAgT25seSB0aGUg U1lNQk9MX0dPVF9QTFRfU1VGRklYIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgYnkgdGhpcyBmdW5j dGlvbi4KKysgICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUgbXVzdCBoYXZlIGJlZW4g YWxyZWFkeSBjYWxsZWQgZm9yIE5BTUUgdG8KKysgICBwcmV2ZW50IGNhY2hlIGVudHJpZXMgZHVw bGljYXRlcy4gICovCisrCisrc3RhdGljIGludAorK2VsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9ieV9n b3QgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiAqYWRkcl9wKQogK3sKLSsgIGNoYXIgKmZ1 bmN0aW9uX25hbWVfZ290X3BsdDsKKysgIGNoYXIgKm5hbWVfZ290X3BsdDsKICsgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlOworKyAgY29uc3Qgc2l6ZV90IGdvdF9zdWZmaXhfbGVuID0gc3RybGVu IChTWU1CT0xfR09UX1BMVF9TVUZGSVgpOwogKwotKyAgZnVuY3Rpb25fbmFtZV9nb3RfcGx0ID0g YWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpICsgc3RybGVuICgiQGdvdC5wbHQiKQotKwkJ CQkgICsgMSk7Ci0rICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2dvdF9wbHQsICIlc0Bnb3QucGx0 IiwgZnVuY3Rpb25fbmFtZSk7CisrICBuYW1lX2dvdF9wbHQgPSBhbGxvY2EgKHN0cmxlbiAobmFt ZSkgKyBnb3Rfc3VmZml4X2xlbiArIDEpOworKyAgc3ByaW50ZiAobmFtZV9nb3RfcGx0LCAiJXMi IFNZTUJPTF9HT1RfUExUX1NVRkZJWCwgbmFtZSk7CiArCiArICBBTExfUFNQQUNFX09CSkZJTEVT IChjdXJyZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCiArICAgIHsKQEAgLTI2MDYsMTIgKzMx MzYsMTIgQEAgaW5kZXggYzU5MTM0Yi4uYzJjODIyOSAxMDA2NDQKICsgICAgICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7CiArICAgICAgc3RydWN0IHR5cGUgKnB0 cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKICsgICAg ICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOwotKyAgICAgIENPUkVf QUREUiBwb2ludGVyX2FkZHJlc3MsIGZ1bmN0aW9uX2FkZHJlc3M7CisrICAgICAgQ09SRV9BRERS IHBvaW50ZXJfYWRkcmVzcywgYWRkcjsKICsgICAgICBhc2VjdGlvbiAqcGx0OwogKyAgICAgIGdk Yl9ieXRlICpidWYgPSBhbGxvY2EgKHB0cl9zaXplKTsKICsgICAgICBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKm1zeW07CiArCi0rICAgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoZnVu Y3Rpb25fbmFtZV9nb3RfcGx0LCBOVUxMLCBvYmpmaWxlKTsKKysgICAgICBtc3ltID0gbG9va3Vw X21pbmltYWxfc3ltYm9sIChuYW1lX2dvdF9wbHQsIE5VTEwsIG9iamZpbGUpOwogKyAgICAgIGlm IChtc3ltID09IE5VTEwpCiArCWNvbnRpbnVlOwogKyAgICAgIGlmIChNU1lNQk9MX1RZUEUgKG1z eW0pICE9IG1zdF9zbG90X2dvdF9wbHQpCkBAIC0yNjI2LDU1ICszMTU2LDE4OCBAQCBpbmRleCBj NTkxMzRiLi5jMmM4MjI5IDEwMDY0NAogKwljb250aW51ZTsKICsgICAgICBpZiAodGFyZ2V0X3Jl YWRfbWVtb3J5IChwb2ludGVyX2FkZHJlc3MsIGJ1ZiwgcHRyX3NpemUpICE9IDApCiArCWNvbnRp bnVlOwotKyAgICAgIGZ1bmN0aW9uX2FkZHJlc3MgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKGJ1 ZiwgcHRyX3R5cGUpOwotKwotKyAgICAgIG1zeW0gPSBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3Vu Y2hlY2tlZCAoZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fYWRkcmVzcyk7Ci0rICAgICAgaWYgKG1z eW0gPT0gTlVMTCkKLSsJY29udGludWU7Ci0rICAgICAgcmV0dXJuIG1zeW07CisrICAgICAgYWRk ciA9IGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAoYnVmLCBwdHJfdHlwZSk7CisrICAgICAgYWRkciA9 IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHIsCisrCQkJ CQkJICZjdXJyZW50X3RhcmdldCk7CisrCisrICAgICAgaWYgKGFkZHJfcCkKKysJKmFkZHJfcCA9 IGFkZHI7CisrICAgICAgaWYgKGVsZl9nbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChuYW1lLCBhZGRy KSkKKysJcmV0dXJuIDE7CiArICAgIH0KICsKLSsgIHJldHVybiBOVUxMOworKyAgcmV0dXJuIDA7 CisrfQorKworKy8qIFRyeSB0byBmaW5kIHRoZSB0YXJnZXQgcmVzb2x2ZWQgZnVuY3Rpb24gZW50 cnkgYWRkcmVzcyBvZiBhIFNUVF9HTlVfSUZVTkMKKysgICBmdW5jdGlvbiBOQU1FLiAgSWYgdGhl IGFkZHJlc3MgaXMgZm91bmQgaXQgaXMgc3RvcmVkIHRvICpBRERSX1AgKGlmIEFERFJfUAorKyAg IGlzIG5vdCBOVUxMKSBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMS4gIEl0IHJldHVybnMgMCBv dGhlcndpc2UuCisrCisrICAgQm90aCB0aGUgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2Rh dGEgaGFzaCB0YWJsZSBhbmQKKysgICBTWU1CT0xfR09UX1BMVF9TVUZGSVggbG9jYXRpb25zIGFy ZSBzZWFyY2hlZCBieSB0aGlzIGZ1bmN0aW9uLiAgKi8KKysKKytzdGF0aWMgaW50CisrZWxmX2du dV9pZnVuY19yZXNvbHZlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiAqYWRkcl9w KQorK3sKKysgIGlmIChlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUgKG5hbWUsIGFkZHJf cCkpCisrICAgIHJldHVybiAxOworKyAgCisrICBpZiAoZWxmX2dudV9pZnVuY19yZXNvbHZlX2J5 X2dvdCAobmFtZSwgYWRkcl9wKSkKKysgICAgcmV0dXJuIDE7CisrCisrICByZXR1cm4gMDsKICt9 CiArCi0rc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStyZXNvbHZlX2dudV9pZnVuY19ieV9jYWNo ZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSkKKysvKiBDYWxsIFNUVF9HTlVfSUZVTkMgLSBh IGZ1bmN0aW9uIHJldHVybmluZyBhZGRyZXNzcyBvZiBhIHJlYWwgZnVuY3Rpb24gdG8KKysgICBj YWxsLiAgUEMgaXMgdGhlU1RUX0dOVV9JRlVOQyByZXNvbHZpbmcgZnVuY3Rpb24gZW50cnkuICBU aGUgdmFsdWUgcmV0dXJuZWQKKysgICBpcyB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIHJlc29sdmVk IFNUVF9HTlVfSUZVTkMgdGFyZ2V0IGZ1bmN0aW9uIHRvIGNhbGwuCisrICAgKi8KKysKKytzdGF0 aWMgQ09SRV9BRERSCisrZWxmX2dudV9pZnVuY19yZXNvbHZlX2FkZHIgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCiArewotKyAgY2hhciAqZnVuY3Rpb25fbmFtZV9nbnVf aWZ1bmNfdGd0OworKyAgY2hhciAqbmFtZV9hdF9wYzsKKysgIENPUkVfQUREUiBzdGFydF9hdF9w YywgYWRkcmVzczsKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0IHZhbHVlICpmdW5jdGlv biwgKmFkZHJlc3NfdmFsOwogKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxs b2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMt dGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVz QGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9uYW1lKTsKKysgIC8qIFRyeSBmaXJzdCBhbnkgbm9u LWludHJ1c2l2ZSBtZXRob2RzIHdpdGhvdXQgYW4gaW5mZXJpb3IgY2FsbC4gICovCiArCi0rICBy ZXR1cm4gbG9va3VwX21pbmltYWxfc3ltYm9sIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3Qs IE5VTEwsIE5VTEwpOworKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1l X2F0X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCisrICAgICAgJiYgc3RhcnRfYXRfcGMgPT0gcGMp CisrICAgIHsKKysgICAgICBpZiAoZWxmX2dudV9pZnVuY19yZXNvbHZlX25hbWUgKG5hbWVfYXRf cGMsICZhZGRyZXNzKSkKKysJcmV0dXJuIGFkZHJlc3M7CisrICAgIH0KKysgIGVsc2UKKysgICAg bmFtZV9hdF9wYyA9IE5VTEw7CisrCisrICBmdW5jdGlvbiA9IGFsbG9jYXRlX3ZhbHVlIChmdW5j X2Z1bmNfdHlwZSk7CisrICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24sIHBjKTsKKysKKysg IC8qIFNUVF9HTlVfSUZVTkMgcmVzb2x2ZXIgZnVuY3Rpb25zIGhhdmUgbm8gcGFyYW1ldGVycy4g IEZVTkNUSU9OIGlzIHRoZQorKyAgICAgZnVuY3Rpb24gZW50cnkgYWRkcmVzcy4gIEFERFJFU1Mg bWF5IGJlIGEgZnVuY3Rpb24gZGVzY3JpcHRvci4gICovCisrCisrICBhZGRyZXNzX3ZhbCA9IGNh bGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwpOworKyAgYWRkcmVzcyA9IHZh bHVlX2FzX2FkZHJlc3MgKGFkZHJlc3NfdmFsKTsKKysgIGFkZHJlc3MgPSBnZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyZXNzLAorKwkJCQkJCSZjdXJyZW50 X3RhcmdldCk7CisrCisrICBpZiAobmFtZV9hdF9wYykKKysgICAgZWxmX2dudV9pZnVuY19yZWNv cmRfY2FjaGUgKG5hbWVfYXRfcGMsIGFkZHJlc3MpOworKworKyAgcmV0dXJuIGFkZHJlc3M7CiAr fQogKwotK2ludAotK3Jlc29sdmVfZ251X2lmdW5jIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1l LCBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NwKQorKy8qIEhhbmRsZSBpbmZlcmlvciBoaXQg b2YgYnBfZ251X2lmdW5jX3Jlc29sdmVyLCBzZWUgaXRzIGRlZmluaXRpb24uICAqLworKworK3N0 YXRpYyB2b2lkCisrZWxmX2dudV9pZnVuY19yZXNvbHZlcl9zdG9wIChzdHJ1Y3QgYnJlYWtwb2lu dCAqYikKICt7Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisrICBzdHJ1Y3QgYnJl YWtwb2ludCAqYl9yZXR1cm47CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAqcHJldl9mcmFtZSA9IGdl dF9wcmV2X2ZyYW1lIChnZXRfY3VycmVudF9mcmFtZSAoKSk7CisrICBzdHJ1Y3QgZnJhbWVfaWQg cHJldl9mcmFtZV9pZCA9IGdldF9zdGFja19mcmFtZV9pZCAocHJldl9mcmFtZSk7CisrICBDT1JF X0FERFIgcHJldl9wYyA9IGdldF9mcmFtZV9wYyAocHJldl9mcmFtZSk7CisrICBpbnQgdGhyZWFk X2lkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CisrCisrICBnZGJfYXNzZXJ0 IChiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZlcik7CiArCi0rICBtc3ltID0gcmVzb2x2 ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOwotKyAgaWYgKG1zeW0gIT0gTlVM TCkKKysgIGZvciAoYl9yZXR1cm4gPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7IGJfcmV0dXJuICE9 IGI7CisrICAgICAgIGJfcmV0dXJuID0gYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCkKICsg ICAgewotKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9WQUxVRV9BRERSRVNTICht c3ltKTsKLSsgICAgICByZXR1cm4gMTsKKysgICAgICBnZGJfYXNzZXJ0IChiX3JldHVybi0+dHlw ZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuKTsKKysgICAgICBnZGJfYXNzZXJ0IChi X3JldHVybi0+bG9jICE9IE5VTEwgJiYgYl9yZXR1cm4tPmxvYy0+bmV4dCA9PSBOVUxMKTsKKysg ICAgICBnZGJfYXNzZXJ0IChmcmFtZV9pZF9wIChiX3JldHVybi0+ZnJhbWVfaWQpKTsKKysKKysg ICAgICBpZiAoYl9yZXR1cm4tPnRocmVhZCA9PSB0aHJlYWRfaWQKKysJICAmJiBiX3JldHVybi0+ bG9jLT5yZXF1ZXN0ZWRfYWRkcmVzcyA9PSBwcmV2X3BjCisrCSAgJiYgZnJhbWVfaWRfZXEgKGJf cmV0dXJuLT5mcmFtZV9pZCwgcHJldl9mcmFtZV9pZCkpCisrCWJyZWFrOwogKyAgICB9CiArCi0r ICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChmdW5jdGlvbl9uYW1lKTsKLSsgIGlm IChtc3ltICE9IE5VTEwpCisrICBpZiAoYl9yZXR1cm4gPT0gYikKICsgICAgewotKyAgICAgICpm dW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKTsKLSsgICAgICBy ZXR1cm4gMTsKKysgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKysKKysgICAgICAv KiBObyBuZWVkIHRvIGNhbGwgZmluZF9wY19saW5lIGZvciBzeW1ib2xzIHJlc29sdmluZyBhcyB0 aGlzIGlzIG9ubHkKKysJIGEgaGVscGVyIGJyZWFrcG9pbnRlciBuZXZlciBzaG93biB0byB0aGUg dXNlci4gICovCisrCisrICAgICAgaW5pdF9zYWwgKCZzYWwpOworKyAgICAgIHNhbC5wc3BhY2Ug PSBjdXJyZW50X2luZmVyaW9yICgpLT5wc3BhY2U7CisrICAgICAgc2FsLnBjID0gcHJldl9wYzsK KysgICAgICBzYWwuc2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBjKTsKKysgICAgICBz YWwuZXhwbGljaXRfcGMgPSAxOworKyAgICAgIGJfcmV0dXJuID0gc2V0X21vbWVudGFyeV9icmVh a3BvaW50IChnZXRfZnJhbWVfYXJjaCAocHJldl9mcmFtZSksIHNhbCwKKysJCQkJCSAgIHByZXZf ZnJhbWVfaWQsCisrCQkJCQkgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuKTsKKysKKysg ICAgICAvKiBBZGQgbmV3IGJfcmV0dXJuIHRvIHRoZSByaW5nIGxpc3QgYi0+cmVsYXRlZF9icmVh a3BvaW50LiAgKi8KKysgICAgICBnZGJfYXNzZXJ0IChiX3JldHVybi0+cmVsYXRlZF9icmVha3Bv aW50ID09IGJfcmV0dXJuKTsKKysgICAgICBiX3JldHVybi0+cmVsYXRlZF9icmVha3BvaW50ID0g Yi0+cmVsYXRlZF9icmVha3BvaW50OworKyAgICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGJf cmV0dXJuOwogKyAgICB9CisrfQogKwotKyAgcmV0dXJuIDA7CisrLyogSGFuZGxlIGluZmVyaW9y IGhpdCBvZiBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuLCBzZWUgaXRzIGRlZmluaXRpb24u ICAqLworKworK3N0YXRpYyB2b2lkCisrZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3Rv cCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisreworKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBnZXRfZnJhbWVfYXJjaCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOworKyAgc3RydWN0IHR5cGUg KmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1 bmM7CisrICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ1bmNf ZnVuY190eXBlKTsKKysgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3Jl Z2NhY2hlIChpbmZlcmlvcl9wdGlkKTsKKysgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7CisrICBDT1JF X0FERFIgcmVzb2x2ZWRfYWRkcmVzcywgcmVzb2x2ZWRfcGM7CisrICBzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lIHNhbDsKKysgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzOworKworKyAgZ2Ri X2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuKTsKKysKKysg IHZhbHVlID0gYWxsb2NhdGVfdmFsdWUgKHZhbHVlX3R5cGUpOworKyAgZ2RiYXJjaF9yZXR1cm5f dmFsdWUgKGdkYmFyY2gsIGZ1bmNfZnVuY190eXBlLCB2YWx1ZV90eXBlLCByZWdjYWNoZSwKKysJ CQl2YWx1ZV9jb250ZW50c19yYXcgKHZhbHVlKSwgTlVMTCk7CisrICByZXNvbHZlZF9hZGRyZXNz ID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOworKyAgcmVzb2x2ZWRfcGMgPSBnZGJhcmNoX2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJCSAgICByZXNvbHZlZF9h ZGRyZXNzLAorKwkJCQkJCSAgICAmY3VycmVudF90YXJnZXQpOworKworKyAgd2hpbGUgKGItPnJl bGF0ZWRfYnJlYWtwb2ludCAhPSBiKQorKyAgICB7CisrICAgICAgc3RydWN0IGJyZWFrcG9pbnQg KmJfbmV4dCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKKysKKysgICAgICBzd2l0Y2ggKGItPnR5 cGUpCisrCXsKKysJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CisrCSAgYnJlYWs7CisrCWNh c2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKKysJICBkZWxldGVfYnJlYWtwb2ludCAo Yik7CisrCSAgYnJlYWs7CisrCWRlZmF1bHQ6CisrCSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9f LCBfX0xJTkVfXywKKysJCQkgIF8oImhhbmRsZV9pbmZlcmlvcl9ldmVudDogSW52YWxpZCAiCisr CQkJICAgICJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gYnJlYWtwb2ludCB0eXBlICVkIiksCisrCQkJ ICAoaW50KSBiLT50eXBlKTsKKysJfQorKyAgICAgIGIgPSBiX25leHQ7CisrICAgIH0KKysgIGdk Yl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29sdmVyKTsKKysKKysgIGdkYl9h c3NlcnQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSA9PSBiLT5wc3BhY2UpOworKyAgZWxmX2dudV9p ZnVuY19yZWNvcmRfY2FjaGUgKGItPmFkZHJfc3RyaW5nLCByZXNvbHZlZF9wYyk7CisrCisrICBz YWwgPSBmaW5kX3BjX2xpbmUgKHJlc29sdmVkX3BjLCAwKTsKKysgIHNhbHMubmVsdHMgPSAxOwor KyAgc2Fscy5zYWxzID0gJnNhbDsKKysKKysgIGItPnR5cGUgPSBicF9icmVha3BvaW50OworKyAg dXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChiLCBzYWxzKTsKICt9CiArCiAgc3RydWN0IGJ1 aWxkX2lkCiAgICB7CiAgICAgIHNpemVfdCBzaXplOwotQEAgLTgxNCw2ICsxMDYzLDggQEAgZWxm X3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdz KQorQEAgLTgxNyw2ICsxMzEyLDggQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQogIAkgICAgICAgYmZkX2Vycm1zZyAoYmZkX2dl dF9lcnJvciAoKSkpOwogIAogICAgICAgIGVsZl9zeW10YWJfcmVhZCAob2JqZmlsZSwgU1RfRFlO QU1JQywgZHluc3ltY291bnQsIGR5bl9zeW1ib2xfdGFibGUsIDApOwpAQCAtMjY4MywyMyArMzM0 NiwzMTEgQEAgaW5kZXggYzU5MTM0Yi4uYzJjODIyOSAxMDA2NDQKICAgICAgfQogIAogICAgLyog QWRkIHN5bnRoZXRpYyBzeW1ib2xzIC0gZm9yIGluc3RhbmNlLCBuYW1lcyBmb3IgYW55IFBMVCBl bnRyaWVzLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5kZXgg MDliNDFhMC4uN2MwYThmOSAxMDA2NDQKLS0tLSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9ldmFs LmMKLUBAIC00NCw2ICs0NCw3IEBACi0gI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0gI2luY2x1ZGUg InB5dGhvbi9weXRob24uaCIKLSAjaW5jbHVkZSAid3JhcHBlci5oIgotKyNpbmNsdWRlICJkd2Fy ZjJsb2MuaCIKLSAKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotIAotQEAgLTQ4OSwyNyArNDkw LDIxNyBAQCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2 YWx1ZSAqZWxlbWVudCwKK0BAIC0xMDcxLDcgKzE1NjgsMjQzIEBAIGVsZnN0YWJfb2Zmc2V0X3Nl Y3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpw c3QpCisgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKyAJICAgICAgIF8oImVs Zi9zdGFiIHNlY3Rpb24gaW5mb3JtYXRpb24gbWlzc2luZyBmb3IgJXMiKSwgZmlsZW5hbWUpOwog IH0KLSAKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS12YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVj dCB2YWx1ZSAqYXJyYXksCisrCisrLyogSGVscGVyIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIHRoZSBp bmZvcm1hdGlvbiBjb250YWluZWQgaW4gYQorKyAgIFN5c3RlbXRhcCdzIHByb2JlLiAgQmFzaWNh bGx5LCB0aGUgaW5mb3JtYXRpb24gY29uc2lzdHMgaW46CisrCisrICAgLSBQcm9iZSdzIFBDIGFk ZHJlc3M7CisrICAgLSBMaW5rLXRpbWUgc2VjdGlvbiBhZGRyZXNzIG9mIGAuc3RhcHNkdC5iYXNl JyBzZWN0aW9uOworKyAgIC0gTGluay10aW1lIGFkZHJlc3Mgb2YgdGhlIHNlbWFwaG9yZSB2YXJp YWJsZSwgb3IgWkVSTyBpZiB0aGUKKysgICAgIHByb2JlIGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lh dGVkIHNlbWFwaG9yZTsKKysgICAtIFByb2JlJ3MgcHJvdmlkZXIgbmFtZTsKKysgICAtIFByb2Jl J3MgbmFtZTsKKysgICAtIFByb2JlJ3MgYXJndW1lbnQgZm9ybWF0LiAgKi8KKysKKytzdGF0aWMg dm9pZAorK2hhbmRsZV9wcm9iZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZHRf bm90ZSAqZWwsCisrCSAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpyZXQsIENPUkVfQUREUiBiYXNl KQorK3sKKysgIGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7CisrICBpbnQgc2l6ZSA9IGJmZF9n ZXRfYXJjaF9zaXplIChhYmZkKSAvIDg7CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKyAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVp bHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKKysgIENPUkVfQUREUiBiYXNl X3JlZjsKKysKKysgIC8qIFByb3ZpZGVyIGFuZCB0aGUgbmFtZSBvZiB0aGUgcHJvYmUuICAqLwor KyAgcmV0LT5wcm92aWRlciA9IChjb25zdCBjaGFyICopICZlbC0+ZGF0YVszICogc2l6ZV07Cisr ICByZXQtPm5hbWUgPSBtZW1jaHIgKHJldC0+cHJvdmlkZXIsICdcMCcsCisrCQkgICAgICAodW5z aWduZWQgbG9uZyAqKSBlbC0+ZGF0YQorKwkJICAgICAgKyBlbC0+c2l6ZSAtICh1bnNpZ25lZCBs b25nICopIHJldC0+cHJvdmlkZXIpOworKyAgLyogTWFraW5nIHN1cmUgdGhlcmUgaXMgYSBuYW1l LiAgKi8KKysgIGlmICghcmV0LT5uYW1lKQorKyAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsIF8oImNvcnJ1cHQgcHJvYmUgd2hlbiByZWFkaW5nIGAlcyciKSwKKysJICAgICAgIG9i amZpbGUtPm5hbWUpOworKyAgZWxzZQorKyAgICArK3JldC0+bmFtZTsKKysKKysgIC8qIFJldHJp ZXZpbmcgdGhlIHByb2JlJ3MgYWRkcmVzcy4gICovCisrICByZXQtPmFkZHJlc3MgPSBleHRyYWN0 X3R5cGVkX2FkZHJlc3MgKChjb25zdCBnZGJfYnl0ZSAqKSAmZWwtPmRhdGFbMF0sCisrCQkJCQlw dHJfdHlwZSk7CisrICAvKiBMaW5rLXRpbWUgc2hfYWRkciBvZiBgLnN0YXBzZHQuYmFzZScgc2Vj dGlvbi4gICovCisrICBiYXNlX3JlZiA9IGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAoKGNvbnN0IGdk Yl9ieXRlICopICZlbC0+ZGF0YVtzaXplXSwKKysJCQkJICAgIHB0cl90eXBlKTsKKysgIC8qIFNl bWFwaG9yZSBhZGRyZXNzLiAgKi8KKysgIHJldC0+c2VtX2FkZHIgPSBleHRyYWN0X3R5cGVkX2Fk ZHJlc3MgKChjb25zdCBnZGJfYnl0ZSAqKSAmZWwtPmRhdGFbMiAqIHNpemVdLAorKwkJCQkJIHB0 cl90eXBlKTsKKysKKysgIHJldC0+YWRkcmVzcyArPSAoQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rp b25fb2Zmc2V0cywKKysJCQkgICAgIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKQorKwkJICAgKyBi YXNlIC0gYmFzZV9yZWYpOworKyAgaWYgKHJldC0+c2VtX2FkZHIpCisrICAgIHJldC0+c2VtX2Fk ZHIgKz0gKEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsCisrCQkJCVNFQ1RfT0ZG X0RBVEEgKG9iamZpbGUpKQorKwkJICAgICAgKyBiYXNlIC0gYmFzZV9yZWYpOworKworKyAgLyog QXJndW1lbnRzLiAgV2UgY2FuIG9ubHkgZXh0cmFjdCB0aGUgYXJndW1lbnQgZm9ybWF0IGlmIHRo ZXJlIGlzIGEgdmFsaWQKKysgICAgIG5hbWUgZm9yIHRoaXMgcHJvYmUuICAqLworKyAgaWYgKHJl dC0+bmFtZSkKKysgICAgeworKyAgICAgIHJldC0+YXJncyA9IG1lbWNociAocmV0LT5uYW1lLCAn XDAnLAorKwkJCSAgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEKKysJCQkgICsgZWwtPnNpemUg LSAodW5zaWduZWQgbG9uZyAqKSByZXQtPm5hbWUpOworKworKyAgICAgIGlmIChyZXQtPmFyZ3Mr KyAhPSBOVUxMCisrCSAgfHwgbWVtY2hyIChyZXQtPmFyZ3MsICdcMCcsICh1bnNpZ25lZCBsb25n ICopIGVsLT5kYXRhCisrCQkgICAgICsgZWwtPnNpemUgLSAodW5zaWduZWQgbG9uZyAqKSByZXQt Pm5hbWUpCisrCSAgIT0gZWwtPmRhdGEgKyBlbC0+c2l6ZSAtIDEpCisrCWNvbXBsYWludCAoJnN5 bWZpbGVfY29tcGxhaW50cywgXygiY29ycnVwdCBwcm9iZSB3aGVuIHJlYWRpbmcgYCVzJyIpLAor KwkJICAgb2JqZmlsZS0+bmFtZSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgcmV0LT5hcmdzID0g TlVMTDsKKyt9CisrCisrI2RlZmluZSBTVEFQX0JBU0VfU0VDVElPTl9OQU1FICIuc3RhcHNkdC5i YXNlIgorKworK3N0YXRpYyB2b2lkCisrZ2V0X2Jhc2VfYWRkcmVzc18xIChiZmQgKmFiZmQsIGFz ZWN0aW9uICpzZWN0LCB2b2lkICpvYmopCisreworKyAgYmZkX3ZtYSAqYmFzZSA9IChiZmRfdm1h ICopIG9iajsKKysKKysgIGlmICgqYmFzZSA9PSAoYmZkX3ZtYSkgLTEKKysgICAgICAmJiAoc2Vj dC0+ZmxhZ3MgJiAoU0VDX0RBVEEgfCBTRUNfQUxMT0MgfCBTRUNfSEFTX0NPTlRFTlRTKSkKKysg ICAgICAmJiBzZWN0LT5uYW1lICYmICFzdHJjbXAgKHNlY3QtPm5hbWUsIFNUQVBfQkFTRV9TRUNU SU9OX05BTUUpKQorKyAgICAqYmFzZSA9IHNlY3QtPnZtYTsKKyt9CisrCisrc3RhdGljIGJmZF92 bWEKKytnZXRfYmFzZV9hZGRyZXNzIChiZmQgKm9iZmQpCisreworKyAgYmZkX3ZtYSBiYXNlID0g KGJmZF92bWEpIC0xOworKworKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChvYmZkLCBnZXRfYmFz ZV9hZGRyZXNzXzEsICh2b2lkICopICZiYXNlKTsKKysKKysgIHJldHVybiBiYXNlOworK30KKysK KysvKiBGSVhNRSBKVVNUIEZPUiBURVNUSU5HICoqLworK3N0YXRpYyBpbnQKKytlbGZfZ2V0X3By b2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgICBj b25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpOworKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c3RhcF9wcm9iZSAqCisrZWxmX2dldF9wcm9iZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBp bnQgKm51bV9wcm9iZXMpCisreworKyAgc3RydWN0IHN0YXBfcHJvYmUgKnJldCA9IE5VTEw7Cisr ICBzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqcHJvYmVzX3Blcl9vYmpmaWxlOworKwor KyAgLyogSW5pdGlhbGx5LCBubyBwcm9iZXMuICAqLworKyAgKm51bV9wcm9iZXMgPSAwOworKwor KyAgLyogSGF2ZSB3ZSBwYXJzZWQgdGhpcyBvYmpmaWxlJ3MgcHJvYmVzIGFscmVhZHk/ICAqLwor KyAgcHJvYmVzX3Blcl9vYmpmaWxlCisrICAgID0gKHN0cnVjdCBzdGFwX3Byb2JlX3Blcl9vYmpm aWxlICopIG9iamZpbGVfZGF0YSAob2JqZmlsZSwKKysJCQkJCQkgICAgICBzdGFwX3Byb2JlX2tl eSk7CisrCisrICBpZiAoIXByb2Jlc19wZXJfb2JqZmlsZSkKKysgICAgeworKyAgICAgIC8qIElm IHdlIGFyZSBoZXJlLCB0aGVuIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UgYXJlIHBhcnNpbmcg dGhlCisrCSBwcm9iZSdzIGluZm9ybWF0aW9uLiAgV2UgYmFzaWNhbGx5IGhhdmUgdG8gY291bnQg aG93IG1hbnkgcHJvYmVzCisrCSB0aGUgb2JqZmlsZSBoYXMsIGFuZCB0aGVuIGZpbGwgaW4gdGhl IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbgorKwkgZm9yIGVhY2ggb25lLiAgKi8KKysKKysgICAgICBi ZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOworKyAgICAgIGJmZF92bWEgYmFzZSA9IGdldF9iYXNl X2FkZHJlc3MgKG9iZmQpOworKyAgICAgIHN0cnVjdCBzZHRfbm90ZSAqaXRlcjsKKysgICAgICBp bnQgaTsKKysgICAgICBpbnQgbiA9IDA7CisrCisrICAgICAgaWYgKCEgZWxmX3RkYXRhIChvYmZk KS0+c2R0X25vdGVfaGVhZCkKKysJLyogVGhlcmUgaXNuJ3QgYW55IHByb2JlIGhlcmUuICAqLwor KwlyZXR1cm4gTlVMTDsKKysKKysgICAgICAvKiBBbGxvY2F0aW5nIHNwYWNlIGZvciBwcm9iZSBp bmZvLiAgKi8KKysgICAgICBmb3IgKGl0ZXIgPSBlbGZfdGRhdGEgKG9iZmQpLT5zZHRfbm90ZV9o ZWFkOworKwkgICBpdGVyOworKwkgICBpdGVyID0gaXRlci0+bmV4dCwgKytuKTsKKysKKysgICAg ICByZXQgPSB4Y2FsbG9jIChuLCBzaXplb2YgKHN0cnVjdCBzdGFwX3Byb2JlKSk7CisrCisrICAg ICAgLyogUGFyc2luZyBlYWNoIHByb2JlJ3MgaW5mb3JtYXRpb24uICAqLworKyAgICAgIGZvciAo aXRlciA9IGVsZl90ZGF0YSAob2JmZCktPnNkdF9ub3RlX2hlYWQsIGkgPSAwOworKwkgICBpdGVy OworKwkgICBpdGVyID0gaXRlci0+bmV4dCwgaSsrKQorKwkvKiBXZSBmaXJzdCBoYXZlIHRvIGhh bmRsZSBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZQorKwkgICBwcm9iZSB3aGljaCBpcyBw cmVzZW50IGluIHRoZSBzZWN0aW9uLiAgKi8KKysJaGFuZGxlX3Byb2JlIChvYmpmaWxlLCBpdGVy LCAmcmV0W2ldLCBiYXNlKTsKKysKKysgICAgICAvKiBDcmVhdGluZyBhIGNhY2hlIGZvciB0aGVz ZSBwcm9iZXMgaW4gdGhlIG9iamZpbGUncyByZWdpc3RyeS4gICovCisrICAgICAgcHJvYmVzX3Bl cl9vYmpmaWxlID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmls ZSkpOworKworKyAgICAgIHByb2Jlc19wZXJfb2JqZmlsZS0+c3RhcF9udW1fcHJvYmVzID0gbjsK KysgICAgICBwcm9iZXNfcGVyX29iamZpbGUtPnByb2JlcyA9IHJldDsKKysKKysgICAgICBzZXRf b2JqZmlsZV9kYXRhIChvYmpmaWxlLCBzdGFwX3Byb2JlX2tleSwgcHJvYmVzX3Blcl9vYmpmaWxl KTsKKysgICAgfQorKyAgZWxzZQorKyAgICByZXQgPSBwcm9iZXNfcGVyX29iamZpbGUtPnByb2Jl czsKKysKKysgICpudW1fcHJvYmVzID0gcHJvYmVzX3Blcl9vYmpmaWxlLT5zdGFwX251bV9wcm9i ZXM7CisrCisrICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW50CisrZWxmX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJICAgICAgY29u c3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQorK3sKKysgIGNvbnN0IGNoYXIgKnBhcmdzID0g cHJvYmUtPmFyZ3M7CisrCisrICBpZiAoIXBhcmdzIHx8ICEqcGFyZ3MgfHwgKnBhcmdzID09ICc6 JykKKysgICAgLyogTm8gYXJndW1lbnRzLiAgKi8KKysgICAgcmV0dXJuIDA7CisrCisrICByZXR1 cm4gc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyt9CisrCisrc3RhdGlj IHN0cnVjdCB2YWx1ZSAqCisrZWxmX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwK KysJCQkgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkgICAgIGludCBuKQorK3sK KysgIHJldHVybiBzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLCBwcm9iZSwg ZnJhbWUsIG4pOworK30KKysKKytzdGF0aWMgdm9pZAorK2VsZl9jb21waWxlX3RvX2F4IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCSAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSwKKysJCSAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJICAgc3RydWN0IGF4c192YWx1 ZSAqdmFsdWUsCisrCQkgICBpbnQgbikKKyt7CisrICBzdGFwX2NvbXBpbGVfdG9fYXggKG9iamZp bGUsIHByb2JlLCBleHByLCB2YWx1ZSwgbik7CisrfQorKworK3N0YXRpYyB2b2lkCisrZWxmX3N5 bWZpbGVfcmVsb2NhdGVfcHJvYmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCSAgICBz dHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKKysJCQkgICAgc3RydWN0IHNlY3Rp b25fb2Zmc2V0cyAqZGVsdGEpCisreworKyAgaW50IGk7CisrICBzdHJ1Y3Qgc3RhcF9wcm9iZV9w ZXJfb2JqZmlsZSAqcAorKyAgICA9IChzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqKSBv YmpmaWxlX2RhdGEgKG9iamZpbGUsCisrCQkJCQkJICAgICAgc3RhcF9wcm9iZV9rZXkpOworKwor KyAgaWYgKCFwKQorKyAgICAvKiBObyBwcm9iZSB0byByZWxvY2F0ZS4gICovCisrICAgIHJldHVy bjsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBwLT5zdGFwX251bV9wcm9iZXM7IGkrKykKKysgICAg eworKyAgICAgIHAtPnByb2Jlc1tpXS5hZGRyZXNzICs9IEFOT0ZGU0VUIChkZWx0YSwgU0VDVF9P RkZfVEVYVCAob2JqZmlsZSkpOworKyAgICAgIGlmIChwLT5wcm9iZXNbaV0uc2VtX2FkZHIpCisr CXAtPnByb2Jlc1tpXS5zZW1fYWRkciArPSBBTk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX0RBVEEg KG9iamZpbGUpKTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZAorK3N0YXBfcHJvYmVfa2V5 X2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQorK3sKKysgIGludCBpOwor KyAgc3RydWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUgKmRhdGEgPSAoc3RydWN0IHN0YXBfcHJv YmVfcGVyX29iamZpbGUgKikgZDsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBkYXRhLT5zdGFwX251 bV9wcm9iZXM7IGkrKykKKysgICAgc3RhcF9mcmVlX3BhcnNlZF9hcmdzIChkYXRhLT5wcm9iZXNb aV0ucGFyc2VkX2FyZ3MpOworKyAgeGZyZWUgKGRhdGEtPnByb2Jlcyk7CisrICB4ZnJlZSAoZGF0 YSk7CisrfQorKworIAwKKytzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgZWxmX3By b2JlX2ZucyA9CisreworKyAgZWxmX2dldF9wcm9iZXMsCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLwor KyAgZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCwJLyogc3ltX2dldF9wcm9iZV9hcmd1bWVu dF9jb3VudCAqLworKyAgZWxmX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50LAkvKiBzeW1fZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQgKi8KKysgIGVsZl9jb21waWxlX3RvX2F4LAkJLyogc3ltX2NvbXBp bGVfdG9fYXggKi8KKysgIGVsZl9zeW1maWxlX3JlbG9jYXRlX3Byb2JlLAkvKiBzeW1fcmVsb2Nh dGVfcHJvYmUgKi8KKyt9OworKworIC8qIFJlZ2lzdGVyIHRoYXQgd2UgYXJlIGFibGUgdG8gaGFu ZGxlIEVMRiBvYmplY3QgZmlsZSBmb3JtYXRzLiAgKi8KKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0 IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQorQEAgLTEwODYsNiArMTgxOSw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CisgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJ CS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KKyAgIE5VTEwsCisg ICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4g ICovCisrICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9wcm9iZV9mbnMgKi8KKyAgICZwc3ltX2Z1 bmN0aW9ucworIH07CisgCitAQCAtMTEwNCw2ICsxODM4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBzeW1fZm5zIGVsZl9zeW1fZm5zX2xhenlfcHN5bXMgPQorICAgZWxmX3N5bWZpbGVfc2VnbWVu dHMsCQkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCisgICBOVUxM LAorICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rp b24uICAqLworKyAgJmVsZl9wcm9iZV9mbnMsCQkvKiBzeW1fcHJvYmVfZm5zICovCisgICAmcHN5 bV9mdW5jdGlvbnMKKyB9OworIAorQEAgLTExMjEsMTEgKzE4NTYsMjcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleCA9CisgICBlbGZfc3ltZmlsZV9z ZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KKyAg IE5VTEwsCisgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcg c2VjdGlvbi4gICovCisrICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9wcm9iZV9mbnMgKi8KKyAg ICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucworIH07CisgCisrLyogU1RUX0dOVV9JRlVOQyBy ZXNvbHZlciB2ZWN0b3IgdG8gYmUgaW5zdGFsbGVkIHRvIGdudV9pZnVuY19mbnNfcC4gICovCisr Cisrc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbnVfaWZ1bmNfZm5zID0K Kyt7CisrICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYWRkciwKKysgIGVsZl9nbnVfaWZ1bmNfcmVz b2x2ZV9uYW1lLAorKyAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9zdG9wLAorKyAgZWxmX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcAorK307CisrCisgdm9pZAorIF9pbml0aWFsaXplX2Vs ZnJlYWQgKHZvaWQpCisgeworKyAgc3RhcF9wcm9iZV9rZXkKKysgICAgPSByZWdpc3Rlcl9vYmpm aWxlX2RhdGFfd2l0aF9jbGVhbnVwIChOVUxMLCBzdGFwX3Byb2JlX2tleV9mcmVlKTsKKyAgIGFk ZF9zeW10YWJfZm5zICgmZWxmX3N5bV9mbnMpOworKworKyAgZWxmX29iamZpbGVfZ251X2lmdW5j X2NhY2hlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CisrICBnbnVfaWZ1bmNfZm5z X3AgPSAmZWxmX2dudV9pZnVuY19mbnM7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9n ZGIvZXZhbC5jCitpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAorLS0tIGEvZ2RiL2V2YWwu YworKysrIGIvZ2RiL2V2YWwuYworQEAgLTQ0LDYgKzQ0LDcgQEAKKyAjaW5jbHVkZSAib2JqZmls ZXMuaCIKKyAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJ3cmFwcGVyLmgi CisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisg CitAQCAtNDg5LDI3ICs0OTAsMjE3IEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVl ICphcnJheSwgc3RydWN0IHZhbHVlICplbGVtZW50LAorIH0KKyAKKyBzdGF0aWMgc3RydWN0IHZh bHVlICoKKy12YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCiAtCQkgICAg c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKICt2 YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCAqcG9zLAogKwkJICAgIGludCBuYXJncywgZW51bSBub3NpZGUgbm9zaWRlKQpA QCAtMzE4Miw3ICs0MTMzLDcgQEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKICsKICB9 CiBkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQotaW5kZXggMDI3NDVjOC4u M2E3MzBlNyAxMDA2NDQKK2luZGV4IGQ5Y2YzY2YuLjNlMTFlNTcgMTAwNjQ0CiAtLS0gYS9nZGIv Zi1leHAueQogKysrIGIvZ2RiL2YtZXhwLnkKIEBAIC0yOTMsNyArMjkzLDkgQEAgYXJnbGlzdCA6 CXN1YnJhbmdlCkBAIC0zNDE5LDcgKzQzNzAsNyBAQCBpbmRleCAzMjgwZGRjLi4xMjhkNmJjIDEw MDY0NAogICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEv Z2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAw NjQ0CitpbmRleCAyYjM2MWVmLi4wMWUxYzBkIDEwMDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIuYwog KysrIGIvZ2RiL2ZpbmR2YXIuYwogQEAgLTM1LDYgKzM1LDcgQEAKQEAgLTM0MzAsNyArNDM4MSw3 IEBAIGluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAwNjQ0CiAgCiAgLyogQmFzaWMgYnl0ZS1zd2Fw cGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBhCiAgICAgaG9z dC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hp Y2ggaXMKLUBAIC0zOTksOCArNDAwLDExIEBAIHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1 Y3Qgc3ltYm9sICpzeW0pCitAQCAtNDA4LDggKzQwOSwxMSBAQCBzeW1ib2xfcmVhZF9uZWVkc19m cmFtZSAoc3RydWN0IHN5bWJvbCAqc3ltKQogIAogIC8qIEdpdmVuIGEgc3RydWN0IHN5bWJvbCBm b3IgYSB2YXJpYWJsZSwKICAgICBhbmQgYSBzdGFjayBmcmFtZSBpZCwgcmVhZCB0aGUgdmFsdWUg b2YgdGhlIHZhcmlhYmxlCkBAIC0zNDQ0LDcgKzQzOTUsNyBAQCBpbmRleCA2NDYzMzQyLi45NTFj MmZlIDEwMDY0NAogIAogIHN0cnVjdCB2YWx1ZSAqCiAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotQEAgLTQwOCwxNiArNDEyLDYg QEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKQorQEAgLTQxNywxNiArNDIxLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1i b2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgc3RydWN0IHZhbHVlICp2Owog ICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1CT0xfVFlQRSAodmFyKTsKICAgIENPUkVfQUREUiBh ZGRyOwpAQCAtMzQ2MSw3ICs0NDEyLDcgQEAgaW5kZXggNjQ2MzM0Mi4uOTUxYzJmZSAxMDA2NDQK ICAKICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2Vy dCAoZnJhbWUpOwotQEAgLTQyNyw3ICs0MjEsNyBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5 bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDM2LDcgKzQzMCw3IEBA IHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKICAgICAgY2FzZSBMT0NfQ09OU1Q6CiAgICAgICAgLyogUHV0IHRoZSBjb25zdGFudCBi YWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlw ZSk7CkBAIC0zNDcwLDcgKzQ0MjEsNyBAQCBpbmRleCA2NDYzMzQyLi45NTFjMmZlIDEwMDY0NAog IAkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKICAJCQkg ICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CiAgICAgICAgVkFMVUVfTFZBTCAodikg PSBub3RfbHZhbDsKLUBAIC00NTIsMTIgKzQ0NiwxMiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0 IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDYxLDEyICs0NTUs MTIgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQogIAogICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKICAgICAgICB2ID0gYWxs b2NhdGVfdmFsdWUgKHR5cGUpOwpAQCAtMzQ4NSw3ICs0NDM2LDcgQEAgaW5kZXggNjQ2MzM0Mi4u OTUxYzJmZSAxMDA2NDQKICAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCiAgCWFkZHIgPSBz eW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAogIAkJ CQkJIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNDcwLDcgKzQ2NCw2IEBAIHJlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK K0BAIC00NzksNyArNDczLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGlmICghYWRkcikKICAJcmV0dXJuIDA7 CiAgICAgICAgYWRkciArPSBTWU1CT0xfVkFMVUUgKHZhcik7CkBAIC0zNDkzLDcgKzQ0NDQsNyBA QCBpbmRleCA2NDYzMzQyLi45NTFjMmZlIDEwMDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBj YXNlIExPQ19SRUZfQVJHOgotQEAgLTQ4NCwxNCArNDc3LDEyIEBAIHJlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC00OTMsMTQg KzQ4NiwxMiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCiAgCWFyZ3JlZiArPSBTWU1CT0xfVkFMVUUgKHZhcik7CiAgCXJlZiA9 IHZhbHVlX2F0IChsb29rdXBfcG9pbnRlcl90eXBlICh0eXBlKSwgYXJncmVmKTsKICAJYWRkciA9 IHZhbHVlX2FzX2FkZHJlc3MgKHJlZik7CkBAIC0zNTA4LDcgKzQ0NTksNyBAQCBpbmRleCA2NDYz MzQyLi45NTFjMmZlIDEwMDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIExPQ19UWVBF REVGOgotQEAgLTQ5OSw3ICs0OTAsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNTA4LDcgKzQ5OSw2IEBAIHJlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK ICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfQkxPQ0s6CkBAIC0zNTE2LDcgKzQ0Njcs NyBAQCBpbmRleCA2NDYzMzQyLi45NTFjMmZlIDEwMDY0NAogICAgICAgIGlmIChvdmVybGF5X2Rl YnVnZ2luZykKICAJYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcwogIAkgIChCTE9DS19T VEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIp KTsKLUBAIC01MjQsNyArNTE0LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTUzMyw3ICs1MjMsNiBAQCByZWFkX3Zh cl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAg CSAgICAgIGVycm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2YXJpYWJsZSBub3QgYXZhaWxhYmxl LiIpKTsKICAKICAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOwpAQCAtMzUy NCw3ICs0NDc1LDcgQEAgaW5kZXggNjQ2MzM0Mi4uOTUxYzJmZSAxMDA2NDQKICAJICB9CiAgCWVs c2UKICAJICB7Ci1AQCAtNTYzLDcgKzU1Miw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01NzIsNyArNTYxLDYgQEAg cmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQogIAlpZiAob2JqX3NlY3Rpb24KICAJICAgICYmIChvYmpfc2VjdGlvbi0+dGhlX2JmZF9z ZWN0aW9uLT5mbGFncyAmIFNFQ19USFJFQURfTE9DQUwpICE9IDApCiAgCSAgYWRkciA9IHRhcmdl dF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKG9ial9zZWN0aW9uLT5vYmpmaWxlLCBhZGRyKTsKQEAg LTM1MzIsNyArNDQ4Myw3IEBAIGluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAwNjQ0CiAgICAgICAg fQogICAgICAgIGJyZWFrOwogIAotQEAgLTU3OCw2ICs1NjYsMTAgQEAgcmVhZF92YXJfdmFsdWUg KHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTU4Nyw2 ICs1NzUsMTAgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBAIC0zNTQzLDEyICs0 NDk0LDEzIEBAIGluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAwNjQ0CiAgICBWQUxVRV9MVkFMICh2 KSA9IGx2YWxfbWVtb3J5OwogICAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOwogICAgcmV0 dXJuIHY7Ci1AQCAtNjE3LDEwICs2MDksMTEgQEAgc3RydWN0IHZhbHVlICoKK0BAIC02MjYsMTEg KzYxOCwxMiBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0 eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgewogICAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwogLSAgc3Ry dWN0IHR5cGUgKnR5cGUxID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CiAgICBzdHJ1Y3QgdmFsdWUg KnY7CisgICBpbnQgb3B0aW0sIHVuYXZhaWwsIG9rOwogIAogLSAgaWYgKGdkYmFyY2hfY29udmVy dF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUxKSkKICsgIHR5cGUgPSBjaGVja190 eXBlZGVmICh0eXBlKTsKQEAgLTM1NTcsMTUgKzQ1MDksMTUgQEAgaW5kZXggNjQ2MzM0Mi4uOTUx YzJmZSAxMDA2NDQKICAgICAgewogICAgICAgIC8qIFRoZSBJU0EvQUJJIG5lZWQgdG8gc29tZXRo aW5nIHdlaXJkIHdoZW4gb2J0YWluaW5nIHRoZQogICAgICAgICAgIHNwZWNpZmllZCB2YWx1ZSBm cm9tIHRoaXMgcmVnaXN0ZXIuICBJdCBtaWdodCBuZWVkIHRvCi1AQCAtNjM0LDcgKzYyNyw3IEBA IHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNjQzLDcgKzYzNiw3IEBAIHZhbHVlX2Zyb21fcmVn aXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCisgICAgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX3JlZ2lzdGVyOwogICAgICAgIFZB TFVFX0ZSQU1FX0lEICh2KSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwogICAgICAgIFZBTFVFX1JF R05VTSAodikgPSByZWdudW07Ci0gICAgICAgZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2Ri YXJjaCwKLS0JCQkJIGZyYW1lLCByZWdudW0sIHR5cGUxLCB2YWx1ZV9jb250ZW50c19yYXcgKHYp KTsKLSsJCQkJIGZyYW1lLCByZWdudW0sIHR5cGUsIHZhbHVlX2NvbnRlbnRzX3JhdyAodikpOwor LSAgICAgIG9rID0gZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2RiYXJjaCwgZnJhbWUsIHJl Z251bSwgdHlwZTEsCisrICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJh cmNoLCBmcmFtZSwgcmVnbnVtLCB0eXBlLAorIAkJCQkgICAgICB2YWx1ZV9jb250ZW50c19yYXcg KHYpLCAmb3B0aW0sCisgCQkJCSAgICAgICZ1bmF2YWlsKTsKICAgICAgfQotICAgZWxzZQotICAg ICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYmluaXQuaW4gYi9nZGIvZ2RiaW5pdC5pbgogaW5kZXgg ZmZiN2Y1My4uYTJlN2U5NCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJpbml0LmluCkBAIC01NDE5LDUw ICs2MzcxLDE1IEBAIGluZGV4IDgxOWM2YjguLmJlZjhhMzUgMTAwNjQ0CiAgICAgcmF0aGVyIHRo YW4gc2V0dGluZyBpdCBkaXJlY3RseSB0byBjaGVjayB0aGF0IHRoZSBsZW5ndGggaXMgb25seQog ICAgIHNldCBvbmNlLiAgSXQgYWxzbyBlbmFibGVzIHRoZSAnbWFpbnQgc2V0L3Nob3cgc2hvdy1k ZWJ1Zy1yZWdzJyAKIGRpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwot aW5kZXggNzVkZTU2Yy4uMmE2NGEwZSAxMDA2NDQKK2luZGV4IGQ0MjI0OGUuLmNhMjM3MDQgMTAw NjQ0CiAtLS0gYS9nZGIvaW5mY2FsbC5jCiArKysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtMjI4LDYg KzIyOCw1NiBAQCB2YWx1ZV9hcmdfY29lcmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3Ry dWN0IHZhbHVlICphcmcsCitAQCAtMjI4LDYgKzIyOCwyMSBAQCB2YWx1ZV9hcmdfY29lcmNlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICphcmcsCiAgICByZXR1cm4gdmFs dWVfY2FzdCAodHlwZSwgYXJnKTsKICB9CiAgCi0rLyogQ2FsbCBnbnUtaWZ1bmMgKFNUVF9HTlVf SUZVTkMgLSBhIGZ1bmN0aW9uIHJldHVybmluZyBhZGRyZXNzcyBvZiBhIHJlYWwKLSsgICBmdW5j dGlvbiB0byBjYWxsKS4gIFBDIGlzIHRoZSBnbnUtaWZ1bmMgZnVuY3Rpb24gZW50cnkuICBGdW5j dGlvbiByZXR1cm5zCi0rICAgZnVuY3Rpb24gZW50cnkgb2YgdGhlIGdudS1pZnVuYy1yZXNvbHZl ZCBmdW5jdGlvbiB0byBjYWxsLiAgSWYgUkVUVkFMX1RZUEVQCi0rICAgaXMgbm90IE5VTEwgZmls bCBpbiAqUkVUVkFMX1RZUEVQIHdpdGggcmV0dXJuIHR5cGUgb2YgdGhlIGdudS1pZnVuYy1yZXNv bHZlZAotKyAgIGZ1bmN0aW9uIHRvIGNhbGwuICBLZWVwICpSRVRWQUxfVFlQRVAgaW50YWN0IGlm IHRoZSByZXR1cm4gdHlwZSBjb3VsZCBub3QgYmUKLSsgICBmb3VuZC4gICovCi0rCi0rc3RhdGlj IENPUkVfQUREUgotK2dudV9pZnVuY19yZXNvbHZlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Q09SRV9BRERSIHBjKQotK3sKLSsgIGNoYXIgKm5hbWVfYXRfcGM7Ci0rICBDT1JFX0FERFIgc3Rh cnRfYXRfcGMsIGFkZHJlc3M7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3R5cGUgPSBidWls dGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKLSsgIHN0cnVjdCB2YWx1ZSAq ZnVuY3Rpb24sICphZGRyZXNzX3ZhbDsKLSsKLSsgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rp b24gKHBjLCAmbmFtZV9hdF9wYywgJnN0YXJ0X2F0X3BjLCBOVUxMKQotKyAgICAgICYmIHN0YXJ0 X2F0X3BjID09IHBjKQotKyAgICB7Ci0rICAgICAgaWYgKHJlc29sdmVfZ251X2lmdW5jIChuYW1l X2F0X3BjLCAmYWRkcmVzcykpCi0rCXJldHVybiBhZGRyZXNzOwotKyAgICB9Ci0rICBlbHNlCi0r ICAgIG5hbWVfYXRfcGMgPSBOVUxMOwotKwotKyAgZnVuY3Rpb24gPSBhbGxvY2F0ZV92YWx1ZSAo ZnVuY19mdW5jX3R5cGUpOwotKyAgc2V0X3ZhbHVlX2FkZHJlc3MgKGZ1bmN0aW9uLCBwYyk7Ci0r Ci0rICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8gYXJndW1lbnRzLiAgRlVOQ1RJT04gaXMgdGhlIGZ1 bmN0aW9uIGVudHJ5IGFkZHJlc3MKLSsgICAgIHdoaWxlIEFERFJFU1MgaXMgYSBwb3NzaWJsZSBm dW5jdGlvbiBkZXNjcmlwdG9yLi4gICovCi0rICBhZGRyZXNzX3ZhbCA9IGNhbGxfZnVuY3Rpb25f YnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwpOwotKyAgYWRkcmVzcyA9IHZhbHVlX2FzX2FkZHJl c3MgKGFkZHJlc3NfdmFsKTsKLSsKLSsgIGlmIChuYW1lX2F0X3BjKQotKyAgICBnbnVfaWZ1bmNf cmVjb3JkX2NhY2hlIChnZGJhcmNoLCBuYW1lX2F0X3BjLCBhZGRyZXNzKTsKLSsKLSsgIHJldHVy biBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyZXNzLCAm Y3VycmVudF90YXJnZXQpOwotK30KKysvKiBSZXR1cm4gdGhlIHJldHVybiB0eXBlIG9mIGEgZnVu Y3Rpb24gd2l0aCBpdHMgZmlyc3QgaW5zdHJ1Y3Rpb24gZXhhY3RseSBhdAorKyAgIHRoZSBQQyBh ZGRyZXNzLiAgUmV0dXJuIE5VTEwgb3RoZXJ3aXNlLiAgKi8KICsKICtzdGF0aWMgc3RydWN0IHR5 cGUgKgogK2ZpbmRfZnVuY3Rpb25fcmV0dXJuX3R5cGUgKENPUkVfQUREUiBwYykKQEAgLTU0Nzks NyArNjM5Niw3IEBAIGluZGV4IDc1ZGU1NmMuLjJhNjRhMGUgMTAwNjQ0CiAgLyogRGV0ZXJtaW5l IGEgZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJvbSBpdHMgdmFsdWUu CiAgICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZhbGlkIGZvciBjYWxs aW5nLiAgKi8KICAKLUBAIC0yMzYsNyArMjg2LDYgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1 Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBlKQorQEAgLTIzNiw3 ICsyNTEsNiBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIHN0 cnVjdCB0eXBlICoqcmV0dmFsX3R5cGUpCiAgewogICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKICAgIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOwpAQCAtNTQ4Nyw3ICs2NDA0LDcgQEAgaW5k ZXggNzVkZTU2Yy4uMmE2NGEwZSAxMDA2NDQKICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0g TlVMTDsKICAgIENPUkVfQUREUiBmdW5hZGRyOwogIAotQEAgLTI0NCwyNCArMjkzLDM0IEBAIGZp bmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipy ZXR2YWxfdHlwZSkKK0BAIC0yNDQsMjQgKzI1OCwzNCBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0 cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIHN0cnVjdCB0eXBlICoqcmV0dmFsX3R5cGUpCiAgICAgICBw YXJ0IG9mIGl0LiAgKi8KICAKICAgIC8qIERldGVybWluZSBhZGRyZXNzIHRvIGNhbGwuICAqLwpA QCAtNTUxOSw3ICs2NDM2LDcgQEAgaW5kZXggNzVkZTU2Yy4uMmE2NGEwZSAxMDA2NDQKIC0JICBm dW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVu YWRkciwKIC0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKIC0JICB2YWx1ZV90eXBlID0gVFlQRV9U QVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIGZ1bmFkZHIgPSBnbnVfaWZ1bmNfcmVzb2x2ZSAoZ2Ri YXJjaCwgZnVuYWRkcik7CisrCSAgZnVuYWRkciA9IGdudV9pZnVuY19yZXNvbHZlX2FkZHIgKGdk YmFyY2gsIGZ1bmFkZHIpOwogKwogKwkgIC8qIFNraXAgcXVlcnlpbmcgdGhlIGZ1bmN0aW9uIHN5 bWJvbCBpZiBubyBSRVRWQUxfVFlQRSBoYXMgYmVlbgogKwkgICAgIGFza2VkIGZvci4gICovCkBA IC01NTMyLDggKzY0NDksMTk0IEBAIGluZGV4IDc1ZGU1NmMuLjJhNjRhMGUgMTAwNjQ0CiAgICAg IHsKICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugb2YgZnVuY3Rpb25zIGxhY2tpbmcgZGVidWdn aW5nIGluZm8uCiAgICAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBjaGFyYWN0ZXJzIHNpbmNlIHRo ZWlyIGFkZHJlc3NlcyBhcmUgY2hhci4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIv Z2RiL2luZnJ1bi5jCitpbmRleCA3Y2VlN2M4Li43NTFjOWVmIDEwMDY0NAorLS0tIGEvZ2RiL2lu ZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUg ImlubGluZS1mcmFtZS5oIgorICNpbmNsdWRlICJqaXQuaCIKKyAjaW5jbHVkZSAidHJhY2Vwb2lu dC5oIgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCisrI2luY2x1ZGUgIm9iamZpbGVzLmgiCisg CisgLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zICovCisgCitAQCAtMjI0Nyw3ICsy MjQ5LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRfc2Fs IChzdHJ1Y3QgZ2RiYXJjaCAqLAorIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkKTsKKyBzdGF0aWMg dm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwg Q09SRV9BRERSKTsKKyBzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKKy0JCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICos IHN0cnVjdCBzeW1ib2wgKik7CisrCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKKyAKKyBz dGF0aWMgdm9pZCBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUg KmVjcyk7Cisgc3RhdGljIHZvaWQgcHJlcGFyZV90b193YWl0IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcyk7CitAQCAtNDE2NCw5ICs0MTY2LDE3IEBAIHByb2Nlc3NfZXZlbnRf c3RvcF90ZXN0OgorIAorIAlpZiAod2hhdC5pc19sb25nam1wKQorIAkgIHsKKy0JICAgIGlmICgh Z2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKKy0JCXx8ICFnZGJhcmNoX2dl dF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKKy0JCQkJCQlmcmFtZSwgJmptcF9idWZfcGMpKQor KwkgICAgc3RydWN0IHZhbHVlICphcmdfdmFsdWU7CisrCisrCSAgICAvKiBJZiB3ZSBzZXQgdGhl IGxvbmdqbXAgYnJlYWtwb2ludCB2aWEgYSBTeXN0ZW1UYXAgcHJvYmUsCisrCSAgICAgICB0aGVu IHVzZSBpdCB0byBleHRyYWN0IHRoZSBhcmd1bWVudHMuICBUaGUgZGVzdGluYXRpb24KKysJICAg ICAgIFBDIGlzIHRoZSB0aGlyZCBhcmd1bWVudCB0byB0aGUgcHJvYmUuICAqLworKwkgICAgYXJn X3ZhbHVlID0gc3RhcF9zYWZlX2V2YWx1YXRlX2F0X3BjIChmcmFtZSwgMik7CisrCSAgICBpZiAo YXJnX3ZhbHVlKQorKwkgICAgICBqbXBfYnVmX3BjID0gdmFsdWVfYXNfYWRkcmVzcyAoYXJnX3Zh bHVlKTsKKysJICAgIGVsc2UgaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJh cmNoKQorKwkJICAgICB8fCAhZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQgKGdkYmFyY2gsCisr CQkJCQkJICAgICBmcmFtZSwgJmptcF9idWZfcGMpKQorIAkgICAgICB7CisgCQlpZiAoZGVidWdf aW5mcnVuKQorIAkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCitAQCAtNDE4NCwx MiArNDE5NCw3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorIAkgICAgaW5zZXJ0X2xvbmdq bXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFyY2gsIGptcF9idWZfcGMpOworIAkgIH0KKyAJZWxz ZQorLQkgIHsKKy0JICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24g KGZyYW1lKTsKKy0KKy0JICAgIGlmIChmdW5jKQorLQkgICAgICBjaGVja19leGNlcHRpb25fcmVz dW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKKy0JICB9CisrCSAgY2hlY2tfZXhjZXB0aW9uX3Jlc3Vt ZSAoZWNzLCBmcmFtZSk7CisgCWtlZXBfZ29pbmcgKGVjcyk7CisgCXJldHVybjsKKyAKK0BAIC01 MjYzLDE1ICs1MjY4LDY0IEBAIGluc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHAsCisgICAgIH0KKyB9CisgCisrLyogQSBoZWxwZXIgZm9yIGNo ZWNrX2V4Y2VwdGlvbl9yZXN1bWUgdGhhdCBzZXRzIGFuCisrICAgZXhjZXB0aW9uLWJyZWFrcG9p bnQgYmFzZWQgb24gYSBTeXN0ZW1UYXAgcHJvYmUuICAqLworKworK3N0YXRpYyB2b2lkCisraW5z ZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwK KysJCQkJICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkJICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQor K3sKKysgIHN0cnVjdCB2YWx1ZSAqYXJnX3ZhbHVlOworKyAgQ09SRV9BRERSIGhhbmRsZXI7Cisr ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7CisrCisrICBhcmdfdmFsdWUgPSBzdGFwX3NhZmVfZXZh bHVhdGVfYXRfcGMgKGZyYW1lLCAxKTsKKysgIGlmICghYXJnX3ZhbHVlKQorKyAgICByZXR1cm47 CisrCisrICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAoYXJnX3ZhbHVlKTsKKysKKysgIGlm IChkZWJ1Z19pbmZydW4pCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJ CQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKKysJCQkodW5zaWduZWQgbG9u ZykgaGFuZGxlcik7CisrCisrICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAo Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKKysJCQkJICAgICAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlv bl9yZXN1bWUpOworKyAgYnAtPnRocmVhZCA9IHRwLT5udW07CisrICBpbmZlcmlvcl90aHJlYWQg KCktPmNvbnRyb2wuZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gYnA7CisrfQorKworIC8q IFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVkLiAg Q2hlY2sgdG8KKyAgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMg b2YgaW50ZXJlc3QsIGFuZCBpZiBzbywKKyAgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVh a3BvaW50IHRoZXJlLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorIGNoZWNrX2V4Y2VwdGlvbl9yZXN1 bWUgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzLAorLQkJCXN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwgc3RydWN0IHN5bWJvbCAqZnVuYykKKysJCQlzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCisgeworICAgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKKysgIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlOworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAgc3Ry dWN0IHN5bWJvbCAqZnVuYzsKKysKKysgIC8qIEZpcnN0IHNlZSBpZiB0aGlzIGV4Y2VwdGlvbiB1 bndpbmRpbmcgYnJlYWtwb2ludCB3YXMgc2V0IHZpYSBhCisrICAgICBTeXN0ZW1UYXAgcHJvYmUg cG9pbnQuICBJZiBzbywgdGhlIHByb2JlIGhhcyB0d28gYXJndW1lbnRzOiB0aGUKKysgICAgIENG QSBhbmQgdGhlIEhBTkRMRVIuICBXZSBpZ25vcmUgdGhlIENGQSwgZXh0cmFjdCB0aGUgaGFuZGxl ciwgYW5kCisrICAgICBzZXQgYSBicmVha3BvaW50IHRoZXJlLiAgKi8KKysgIHByb2JlID0gZmlu ZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksICZvYmpmaWxlKTsKKysgIGlmIChw cm9iZSkKKysgICAgeworKyAgICAgIGluc2VydF9leGNlcHRpb25fcmVzdW1lX2Zyb21fcHJvYmUg KGVjcy0+ZXZlbnRfdGhyZWFkLCBwcm9iZSwKKysJCQkJCSAgb2JqZmlsZSwgZnJhbWUpOworKyAg ICAgIHJldHVybjsKKysgICAgfQorKworKyAgZnVuYyA9IGdldF9mcmFtZV9mdW5jdGlvbiAoZnJh bWUpOworKyAgaWYgKCFmdW5jKQorKyAgICByZXR1cm47CisgCisgICBUUllfQ0FUQ0ggKGUsIFJF VFVSTl9NQVNLX0VSUk9SKQorICAgICB7CitAQCAtNjI1Myw3ICs2MzA3LDggQEAgc3RhdGljIHN0 cnVjdCBsdmFsX2Z1bmNzIHNpZ2luZm9fdmFsdWVfZnVuY3MgPQorICAgIGlmIHRoZXJlJ3Mgbm8g b2JqZWN0IGF2YWlsYWJsZS4gICovCisgCisgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCistc2lnaW5m b19tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFy ICp2YXIpCisrc2lnaW5mb19tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3Ry dWN0IGludGVybmFsdmFyICp2YXIsCisrCQkgICAgdm9pZCAqaWdub3JlKQorIHsKKyAgIGlmICh0 YXJnZXRfaGFzX3N0YWNrCisgICAgICAgJiYgIXB0aWRfZXF1YWwgKGluZmVyaW9yX3B0aWQsIG51 bGxfcHRpZCkKK0BAIC02ODI2LDYgKzY4ODEsMTMgQEAgc2hvd19zY2hlZHVsZV9tdWx0aXBsZSAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKyAJCQkgICAgIm9mIGFsbCBwcm9j ZXNzZXMgaXMgJXMuXG4iKSwgdmFsdWUpOworIH0KKyAKKytzdGF0aWMgY29uc3Qgc3RydWN0IGlu dGVybmFsdmFyX2Z1bmNzIHNpZ2luZm9fZnVuY3MgPQorK3sKKysgIHNpZ2luZm9fbWFrZV92YWx1 ZSwKKysgIE5VTEwsCisrICBOVUxMCisrfTsKKysKKyB2b2lkCisgX2luaXRpYWxpemVfaW5mcnVu ICh2b2lkKQorIHsKK0BAIC03MDk4LDcgKzcxNjAsNyBAQCBUZWxscyBnZGIgd2hldGhlciB0byBk ZXRhY2ggdGhlIGNoaWxkIG9mIGEgZm9yay4iKSwKKyAgICAgIHZhbHVlIHdpdGggYSB2b2lkIHR5 cGVkIHZhbHVlLCBhbmQgd2hlbiB3ZSBnZXQgaGVyZSwgZ2RiYXJjaAorICAgICAgaXNuJ3QgaW5p dGlhbGl6ZWQgeWV0LiAgQXQgdGhpcyBwb2ludCwgd2UncmUgcXVpdGUgc3VyZSB0aGVyZQorICAg ICAgaXNuJ3QgYW5vdGhlciBjb252ZW5pZW5jZSB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1lLiAg Ki8KKy0gIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfc2lnaW5mbyIsIHNpZ2luZm9f bWFrZV92YWx1ZSk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3NpZ2luZm8i LCAmc2lnaW5mb19mdW5jcywgTlVMTCk7CisgCisgICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAo Im9ic2VydmVyIiwgbm9fY2xhc3MsCisgCQkJICAgJm9ic2VydmVyX21vZGVfMSwgXygiXAorZGlm ZiAtLWdpdCBhL2dkYi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKK2luZGV4IDM5NTk0MDIu LjI0YmY1MzQgMTAwNjQ0CistLS0gYS9nZGIvbGluZXNwZWMuYworKysrIGIvZ2RiL2xpbmVzcGVj LmMKK0BAIC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVk ZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgorKyNpbmNsdWRlICJzdGFw LXByb2JlLmgiCisgCisgLyogV2Ugc2hhcmUgdGhpcyBvbmUgd2l0aCBzeW10YWIuYywgYnV0IGl0 IGlzIG5vdCBleHBvcnRlZCB3aWRlbHkuICAqLworIAorQEAgLTc1Niw2ICs3NTcsNyBAQCBrZWVw X25hbWVfaW5mbyAoY2hhciAqcHRyKQorICAgIFBDIHJldHVybmVkIGlzIDAuCisgICAgRklMRTpG VU5DVElPTiAtLSBsaWtld2lzZSwgYnV0IHByZWZlciBmdW5jdGlvbnMgaW4gdGhhdCBmaWxlLgor ICAgICpFWFBSIC0tIGxpbmUgaW4gd2hpY2ggYWRkcmVzcyBFWFBSIGFwcGVhcnMuCisrICAgcHJv YmU6W09CSkZJTEU6XVtQUk9WSURFUjpdTkFNRSAtLSBhIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUK KyAKKyAgICBUaGlzIG1heSBhbGwgYmUgZm9sbG93ZWQgYnkgYW4gImlmIEVYUFIiLCB3aGljaCB3 ZSBpZ25vcmUuCisgCitAQCAtODIzLDYgKzgyNSw5IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiph cmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAor ICAgaWYgKCoqYXJncHRyID09ICcqJykKKyAgICAgcmV0dXJuIGRlY29kZV9pbmRpcmVjdCAoYXJn cHRyKTsKKyAKKysgIGlmIChzdHJuY21wICgqYXJncHRyLCAicHJvYmU6IiwgNikgPT0gMCkKKysg ICAgcmV0dXJuIHBhcnNlX3N0YXBfcHJvYmUgKGFyZ3B0cik7CisrCisgICBpc19xdW90ZWQgPSAo c3RyY2hyIChnZXRfZ2RiX2NvbXBsZXRlcl9xdW90ZV9jaGFyYWN0ZXJzICgpLAorIAkJICAgICAg ICoqYXJncHRyKSAhPSBOVUxMKTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9n ZGIvbGludXgtbmF0LmMKLWluZGV4IDkyMmEyY2YuLmY3ZjU3OTggMTAwNjQ0CitpbmRleCA3MzI4 MTJkLi4wM2IzZDE5IDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysgYi9nZGIvbGlu dXgtbmF0LmMKIEBAIC0xMjU0LDYgKzEyNTQsNjQgQEAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWRf dCBmaWx0ZXIsCkBAIC01NjE3LDggKzY3MjAsMjAgQEAgaW5kZXggNDJjYjJmYy4uMDVhYzExZCAx MDA2NDQKICAvKiBDcmVhdGUgYSBwcm90b3R5cGUgZ2VuZXJpYyBHTlUvTGludXggdGFyZ2V0LiAg VGhlIGNsaWVudCBjYW4KICAgICBvdmVycmlkZSBpdCB3aXRoIGxvY2FsIG1ldGhvZHMuICAqLwog IHN0cnVjdCB0YXJnZXRfb3BzICogbGludXhfdGFyZ2V0ICh2b2lkKTsKK2RpZmYgLS1naXQgYS9n ZGIvbWFjaG9yZWFkLmMgYi9nZGIvbWFjaG9yZWFkLmMKK2luZGV4IGRiZjlhZTQuLjNkYjllMTYg MTAwNjQ0CistLS0gYS9nZGIvbWFjaG9yZWFkLmMKKysrKyBiL2dkYi9tYWNob3JlYWQuYworQEAg LTg0OSw2ICs4NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgbWFjaG9fc3ltX2Zu cyA9IHsKKyAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3Jt YXRpb24gZnJvbSBhIGZpbGUuICAqLworICAgTlVMTCwKKyAgIG1hY2hvX3N5bWZpbGVfcmVsb2Nh dGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCisrICBOVUxMLAkJCQkvKiBzeW1f Z2V0X3Byb2JlcyAqLworICAgJnBzeW1fZnVuY3Rpb25zCisgfTsKKyAKIGRpZmYgLS1naXQgYS9n ZGIvbWFpbi5jIGIvZ2RiL21haW4uYwotaW5kZXggNmJlNDgwNS4uMWIwMDc1OSAxMDA2NDQKK2lu ZGV4IGZmMzA1YTEuLjI2N2YwYjAgMTAwNjQ0CiAtLS0gYS9nZGIvbWFpbi5jCiArKysgYi9nZGIv bWFpbi5jCiBAQCAtMzksNiArMzksNyBAQApAQCAtNTYzOCw3ICs2NzUzLDcgQEAgaW5kZXggNmJl NDgwNS4uMWIwMDc1OSAxMDA2NDQKICAgIC8qIFRoZXNlIGFyZSBzdGF0aWMgc28gdGhhdCB3ZSBj YW4gdGFrZSB0aGVpciBhZGRyZXNzIGluIGFuCiAgICAgICBpbml0aWFsaXplci4gICovCiAgICBz dGF0aWMgaW50IHByaW50X2hlbHA7Ci1AQCAtNDQ4LDEwICs0NTEsMTQgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKK0BAIC00NTEsMTAgKzQ1NCwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQogICAgICAgIHsiYXJncyIsIG5vX2FyZ3VtZW50LCAmc2V0X2FyZ3MsIDF9LAogICAg ICAgIHsibCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnbCd9LAogICAgICAgIHsicmV0dXJuLWNo aWxkLXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAmcmV0dXJuX2NoaWxkX3Jlc3VsdCwgMX0sCkBAIC01 NjU0LDcgKzY3NjksNyBAQCBpbmRleCA2YmU0ODA1Li4xYjAwNzU5IDEwMDY0NAogICAgICAgIHsK ICAJaW50IG9wdGlvbl9pbmRleDsKICAKLUBAIC00NjksNiArNDc2LDkgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKK0BAIC00NzIsNiArNDc5LDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKICAJICBjYXNlIDA6CiAgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBh IGZsYWcuICAqLwogIAkgICAgYnJlYWs7CkBAIC01NjY0LDcgKzY3NzksNyBAQCBpbmRleCA2YmU0 ODA1Li4xYjAwNzU5IDEwMDY0NAogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3ltYXJnID0gb3B0 YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NjQsNyArNjc0LDMxIEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNjY3LDcgKzY3NywzMSBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhl IGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBm b3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC01Njk3LDcgKzY4MTIsNyBAQCBpbmRleCA2YmU0ODA1 Li4xYjAwNzU5IDEwMDY0NAogICAgICB7CiAgICAgICAgLyogVGhlIHJlbWFpbmluZyBvcHRpb25z IGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQogIAkgaW5mZXJpb3IuICBUaGUg Zmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKLUBAIC05MTMsNyAr OTQ3LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC05MTYsNyArOTUwLDggQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAKICAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0 b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KICAgICAgIHJlYWQuICAq LwpAQCAtNTcwNyw3ICs2ODIyLDcgQEAgaW5kZXggNmJlNDgwNS4uMWIwMDc1OSAxMDA2NDQKICAK ICAgIGlmIChiYXRjaF9mbGFnKQogICAgICB7Ci1AQCAtOTI0LDEzICs5NTksMjUgQEAgY2FwdHVy ZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC05MjcsMTMgKzk2MiwyNSBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQogICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICovCiAg ICBkb19jbGVhbnVwcyAocHJlX3N0YXRfY2hhaW4pOwogIApAQCAtNTczOSw3ICs2ODU0LDcgQEAg aW5kZXggNmJlNDgwNS4uMWIwMDc1OSAxMDA2NDQKICAgICAgfQogICAgLyogTm8gZXhpdCAtLSBl eGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9Ci1AQCAtOTYyLDcgKzEwMDksMTIg QEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitAQCAtOTY1LDcgKzEw MTIsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgICBmcHV0 c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5c blwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJv Y2Vzcy1pZF1dXG5cCkBAIC01NzUzLDcgKzY4NjgsNyBAQCBpbmRleCA2YmU0ODA1Li4xYjAwNzU5 IDEwMDY0NAogIE9wdGlvbnM6XG5cblwKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVy ZWQgKF8oIlwKLUBAIC0xMDAwLDcgKzEwNTIsMTMgQEAgT3B0aW9uczpcblxuXAorQEAgLTEwMDMs NyArMTA1NSwxMyBAQCBPcHRpb25zOlxuXG5cCiAgICAtLW53CQkgICAgIERvIG5vdCB1c2UgYSB3 aW5kb3cgaW50ZXJmYWNlLlxuXAogICAgLS1ueCAgICAgICAgICAgICAgIERvIG5vdCByZWFkICIp LCBzdHJlYW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAoZ2RiaW5pdCwgc3RyZWFtKTsKQEAgLTU3 ODEsMTAgKzY4OTYsMTAgQEAgaW5kZXggYTQwMTg0Ni4uMjZkY2E4YyAxMDA2NDQKICAKICAgICAg ICB2YXJvYmpfdXBkYXRlX29uZSAodmFyLCBwcmludF92YWx1ZXMsIDEgLyogZXhwbGljaXQgKi8p OwogZGlmZiAtLWdpdCBhL2dkYi9taW5zeW1zLmMgYi9nZGIvbWluc3ltcy5jCi1pbmRleCA4NDk3 OTkxLi40NjM1ODUzIDEwMDY0NAoraW5kZXggNGFlN2YyNy4uOTdkNDI1ZSAxMDA2NDQKIC0tLSBh L2dkYi9taW5zeW1zLmMKICsrKyBiL2dkYi9taW5zeW1zLmMKLUBAIC0zMzgsOCArMzM4LDkgQEAg bG9va3VwX21pbmltYWxfc3ltYm9sX3RleHQgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmpm aWxlICpvYmpmKQorQEAgLTMzMyw4ICszMzMsOSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4 dCAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamYpCiAgCSAgICAgICBtc3lt Ym9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQogIAkgICAgewogIAkgICAgICBpZiAoc3RyY21wIChT WU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgbmFtZSkgPT0gMCAmJgpAQCAtNTc5NiwxMSAr NjkxMSwxMSBAQCBpbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAogIAkJewogIAkJICBzd2l0 Y2ggKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkpCiAgCQkgICAgewotQEAgLTcwMSw2ICs3MDIsMTYg QEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMpCitAQCAtNjk2LDYg KzY5Nyw2OSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKICAg IHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwog IH0KICAKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9uIGltcGxlbWVu dGluZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KKysvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBD IGlzIGluIGFuIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24gcmVzb2x2ZXIuICAqLwogKwogK2ludAog K2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCkBAIC01ODEwLDEwICs2OTI1LDYzIEBA IGluZGV4IDg0OTc5OTEuLjQ2MzU4NTMgMTAwNjQ0CiArICByZXR1cm4gbXN5bWJvbCAmJiBNU1lN Qk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYzsKICt9CiArCisrLyogU2Vl IGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9hZGRyIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4g ICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVfYWRkciAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKKyt7CisrICBlcnJvciAoXygi R0RCIGNhbm5vdCByZXNvbHZlIFNUVF9HTlVfSUZVTkMgc3ltYm9sIGF0IGFkZHJlc3MgJXMgd2l0 aG91dCAiCisrCSAgICJ0aGUgRUxGIHN1cHBvcnQgY29tcGlsZWQgaW4uIiksCisrCSBwYWRkcmVz cyAoZ2RiYXJjaCwgcGMpKTsKKyt9CisrCisrLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9u YW1lIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCisrCisrc3RhdGljIGludAorK3N0 dWJfZ251X2lmdW5jX3Jlc29sdmVfbmFtZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJ CQkgICAgIENPUkVfQUREUiAqZnVuY3Rpb25fYWRkcmVzc19wKQorK3sKKysgIGVycm9yIChfKCJH REIgY2Fubm90IHJlc29sdmUgU1RUX0dOVV9JRlVOQyBzeW1ib2wgXCIlc1wiIHdpdGhvdXQgIgor KwkgICAidGhlIEVMRiBzdXBwb3J0IGNvbXBpbGVkIGluLiIpLAorKwkgZnVuY3Rpb25fbmFtZSk7 CisrfQorKworKy8qIFNlZSBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgZm9yIGl0cyByZWFs IGltcGxlbWVudGF0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N0dWJfZ251X2lmdW5jX3Jl c29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKQorK3sKKysgIGludGVybmFsX2Vycm9y IChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgIF8oImVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfc3Rv cCBjYW5ub3QgYmUgcmVhY2hlZC4iKSk7CisrfQorKworKy8qIFNlZSBlbGZfZ251X2lmdW5jX3Jl c29sdmVyX3JldHVybl9zdG9wIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCisrCisr c3RhdGljIHZvaWQKKytzdHViX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydWN0 IGJyZWFrcG9pbnQgKmIpCisreworKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVf XywKKysJCSAgXygiZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCBjYW5ub3QgYmUg cmVhY2hlZC4iKSk7CisrfQorKworKy8qIFNlZSBlbGZfZ251X2lmdW5jX2ZucyBmb3IgaXRzIHJl YWwgaW1wbGVtZW50YXRpb24uICAqLworKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ251X2lmdW5j X2ZucyBzdHViX2dudV9pZnVuY19mbnMgPQorK3sKKysgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVf YWRkciwKKysgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVfbmFtZSwKKysgIHN0dWJfZ251X2lmdW5j X3Jlc29sdmVyX3N0b3AsCisrICBzdHViX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCwK Kyt9OworKworKy8qIEEgcGxhY2Vob2xkZXIgZm9yICZlbGZfZ251X2lmdW5jX2Zucy4gICovCisr CisrY29uc3Qgc3RydWN0IGdudV9pZnVuY19mbnMgKmdudV9pZnVuY19mbnNfcCA9ICZzdHViX2du dV9pZnVuY19mbnM7CisrCiAgLyogRmluZCB0aGUgbWluaW1hbCBzeW1ib2wgbmFtZWQgTkFNRSwg YW5kIHJldHVybiBib3RoIHRoZSBtaW5zeW0KICAgICBzdHJ1Y3QgYW5kIGl0cyBvYmpmaWxlLiAg VGhpcyBvbmx5IGNoZWNrcyB0aGUgbGlua2FnZSBuYW1lLiAgU2V0cwogICAgICpPQkpGSUxFX1Ag YW5kIHJldHVybnMgdGhlIG1pbmltYWwgc3ltYm9sLCBpZiBpdCBpcyBmb3VuZC4gIElmIGl0Ci1A QCAtNzcwLDYgKzc4MSw3IEBAIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFy ICpuYW1lLCBDT1JFX0FERFIgYWRkcmVzcywKK0BAIC03NjUsNiArODI5LDcgQEAgcHJpbV9yZWNv cmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRyZXNzLAog ICAgc3dpdGNoIChtc190eXBlKQogICAgICB7CiAgICAgIGNhc2UgbXN0X3RleHQ6CkBAIC01ODIx LDcgKzY5ODksNyBAQCBpbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAogICAgICBjYXNlIG1z dF9maWxlX3RleHQ6CiAgICAgIGNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6CiAgICAgICAgc2Vj dGlvbiA9IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpOwotQEAgLTEyMzUsNyArMTI0Nyw4IEBAIGZp bmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgQ09S RV9BRERSIHBjKQorQEAgLTEyMzAsNyArMTI5NSw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90 YXJnZXQgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgQ09SRV9BRERSIHBjKQogICAgICB7CiAg ICAgICAgQUxMX01TWU1CT0xTIChvYmpmaWxlLCBtc3ltYm9sKQogICAgICAgIHsKQEAgLTU4MzEs OCArNjk5OSwzNiBAQCBpbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAogIAkgICAgJiYgc3Ry Y21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKICAJCSAgICAgICBTWU1CT0xfTElO S0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKICAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJF U1MgKG1zeW1ib2wpOworZGlmZiAtLWdpdCBhL2dkYi9taXBzcmVhZC5jIGIvZ2RiL21pcHNyZWFk LmMKK2luZGV4IDc0ZDc5NWQuLjdlMDUzMTcgMTAwNjQ0CistLS0gYS9nZGIvbWlwc3JlYWQuYwor KysrIGIvZ2RiL21pcHNyZWFkLmMKK0BAIC00MDIsNiArNDAyLDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBzeW1fZm5zIGVjb2ZmX3N5bV9mbnMgPQorICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRz LAkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCisgICBOVUxMLAor ICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24u ICAqLworKyAgTlVMTCwJCQkJLyogc3ltX3Byb2JlX2ZucyAqLworICAgJnBzeW1fZnVuY3Rpb25z CisgfTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvb2JqZmlsZXMuYyBiL2dkYi9vYmpmaWxlcy5jCitp bmRleCBmMzI1OWRkLi4xMzA5Y2RiIDEwMDY0NAorLS0tIGEvZ2RiL29iamZpbGVzLmMKKysrKyBi L2dkYi9vYmpmaWxlcy5jCitAQCAtODQ2LDYgKzg0NiwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMpKTsKKyAg ICAgfQorIAorKyAgLyogUmVsb2NhdGluZyBTeXN0ZW10YXAgcHJvYmVzLiAgKi8KKysgIGlmIChv YmpmaWxlLT5zZiAmJiBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKKysgICAgb2JqZmlsZS0+ c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmlsZSwKKysJCQkJCQkg ICAgbmV3X29mZnNldHMsIGRlbHRhKTsKKysKKyAgIC8qIERhdGEgY2hhbmdlZC4gICovCisgICBy ZXR1cm4gMTsKKyB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9wLXZhbHBy aW50LmMKLWluZGV4IDYxOGZjMTcuLjExODBiMmYgMTAwNjQ0CitpbmRleCBkMmVmYTViLi5kOThi M2E0IDEwMDY0NAogLS0tIGEvZ2RiL3AtdmFscHJpbnQuYwogKysrIGIvZ2RiL3AtdmFscHJpbnQu YwogQEAgLTM5LDYgKzM5LDcgQEAKQEAgLTU5MTIsMTAgKzcxMDgsMTAgQEAgaW5kZXggNjE4ZmMx Ny4uMTE4MGIyZiAxMDA2NDQKICB9CiAgDAogZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2Ri L3BhcnNlLmMKLWluZGV4IDg1NmMyNGQuLjZkYjcxYzMgMTAwNjQ0CitpbmRleCAwMmE3ZDg5Li44 MWYzZjBjIDEwMDY0NAogLS0tIGEvZ2RiL3BhcnNlLmMKICsrKyBiL2dkYi9wYXJzZS5jCi1AQCAt NDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9s ICptc3ltYm9sKQorQEAgLTQ4Nyw5ICs0ODcsMjIgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVj dCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKICAgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21f ZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgJmN1cnJlbnRfdGFyZ2V0KTsKICAgIGlmIChw YyAhPSBhZGRyKQogICAgICB7CkBAIC01OTI5LDggKzcxMjUsOSBAQCBpbmRleCA4NTZjMjRkLi42 ZGI3MWMzIDEwMDY0NAogKwkgICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChpZnVuY19tc3ltKSA9 PSBwYykKICsJewogKwkgIC8qIEEgZnVuY3Rpb24gZGVzY3JpcHRvciBoYXMgYmVlbiByZXNvbHZl ZCBidXQgUEMgaXMgc3RpbGwgaW4gdGhlCi0rCSAgICAgZ251LWlmdW5jIHJlc29sdmVyIGJvZHkg KHN1Y2ggYXMgYmVjYXVzZSBpbmZlcmlvciBkb2VzIG5vdCBydW4gdG8KLSsJICAgICBiZSBhYmxl IHRvIGNhbGwgaXQpLiAgKi8KKysJICAgICBTVFRfR05VX0lGVU5DIHJlc29sdmVyIGJvZHkgKHN1 Y2ggYXMgYmVjYXVzZSBpbmZlcmlvciBkb2VzIG5vdAorKwkgICAgIHJ1biB0byBiZSBhYmxlIHRv IGNhbGwgaXQpLiAgKi8KKysKICsJICB0eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwogKwl9CiAr ICAgICAgZWxzZQpAQCAtNTkzOCw3ICs3MTM1LDcgQEAgaW5kZXggODU2YzI0ZC4uNmRiNzFjMyAx MDA2NDQKICAgICAgICBzZWN0aW9uID0gTlVMTDsKICAgICAgICBhZGRyID0gcGM7CiAgICAgIH0K LUBAIC01MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKm1zeW1ib2wpCitAQCAtNTIxLDYgKzUzNCwxMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAo c3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQogICAgICAgIHdyaXRlX2V4cF9lbHRfdHlw ZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z190ZXh0X3N5bWJvbCk7CiAgICAgICAg YnJlYWs7CiAgCkBAIC01OTUwLDcgKzcxNDcsNyBAQCBpbmRleCA4NTZjMjRkLi42ZGI3MWMzIDEw MDY0NAogICAgICBjYXNlIG1zdF9kYXRhOgogICAgICBjYXNlIG1zdF9maWxlX2RhdGE6CiAgICAg IGNhc2UgbXN0X2JzczoKLUBAIC01MjgsNiArNTQ1LDEwIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCitAQCAtNTI4LDYgKzU0NiwxMCBAQCB3cml0 ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQogICAgICAgIHdy aXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z19kYXRhX3N5 bWJvbCk7CiAgICAgICAgYnJlYWs7CiAgCkBAIC01OTYxLDcgKzcxNTgsNyBAQCBpbmRleCA4NTZj MjRkLi42ZGI3MWMzIDEwMDY0NAogICAgICBkZWZhdWx0OgogICAgICAgIHdyaXRlX2V4cF9lbHRf dHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z191bmtub3duX3N5bWJvbCk7CiAg ICAgICAgYnJlYWs7Ci1AQCAtMTQ4MCw2ICsxNTAxLDcgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUg KngsIGNvbnN0IGNoYXIgKnksIC4uLikKK0BAIC0xNDgwLDYgKzE1MDIsNyBAQCBwYXJzZXJfZnBy aW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogIAogIGludAogIG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNTk2OSw3 ICs3MTY2LDcgQEAgaW5kZXggODU2YzI0ZC4uNmRiNzFjMyAxMDA2NDQKICAJCQkgaW50ICgqb2Jq ZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkgICAgICB2b2lkICpk YXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNTIxLDcgKzE1NDMsNyBAQCBvcGVyYXRvcl9j aGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTIx LDcgKzE1NDQsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50IHBvcywKICAJICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZWx0c1twb3MgKyAyICsg YXJnXS50eXBlOwogIAkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUg KHR5cGUpOwogIApAQCAtNTk3OCw3ICs3MTc1LDcgQEAgaW5kZXggODU2YzI0ZC4uNmRiNzFjMyAx MDA2NDQKICAJICAgICAgcmV0dXJuIDE7CiAgCSAgfQogICAgICAgIH0KLUBAIC0xNTM5LDcgKzE1 NjEsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50IHBvcywKK0BAIC0xNTM5LDcgKzE1NjIsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAKICAJLyogQ2hlY2sgb2JqZmlsZSB3 aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KICAJICAgU1lNQk9MX09CSl9TRUNU SU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KQEAgLTU5ODgsNyArNzE4NSw3IEBAIGluZGV4 IDg1NmMyNGQuLjZkYjcxYzMgMTAwNjQ0CiAgCSAgcmV0dXJuIDE7CiAgCiAgCS8qIENoZWNrIG9i amZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICov Ci1AQCAtMTU1MiwyNCArMTU3NSwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTUyLDI0ICsxNTc2LDI3IEBAIG9wZXJh dG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAog ICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUg c2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAgLTYwMjQsNyArNzIyMSw3IEBAIGluZGV4IDg1NmMy NGQuLjZkYjcxYzMgMTAwNjQ0CiAgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAg LTE1ODQsNyArMTYxMCw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAor QEAgLTE1ODQsNyArMTYxMSw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LAogIAogICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1 YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCkBAIC02MDM1 LDcgKzcyMzIsNyBAQCBpbmRleCA4NTZjMjRkLi42ZGI3MWMzIDEwMDY0NAogIAlyZXR1cm4gMTsK ICAKICAgICAgICBlbmRwb3MgPSBwb3M7Ci1AQCAtMTYxNSw4ICsxNjQzLDI5IEBAIGV4cF91c2Vz X29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQorQEAgLTE2MTUsOCArMTY0NCwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7CiAgICBnZGJfYXNzZXJ0IChv YmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwogIApAQCAt NjI0MywxMCArNzQ0MCwxMCBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVjIDEwMDY0NAogIAogICAg cmV0dXJuIHJldDsKIGRpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9wcmludGNtZC5j Ci1pbmRleCAxMjI0OWEwLi42OWFhZTAxIDEwMDY0NAoraW5kZXggODEzNjBhZC4uOGZhOWE5OSAx MDA2NDQKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysgYi9nZGIvcHJpbnRjbWQuYwotQEAgLTk3 MCw2ICs5NzAsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChjaGFyICpleHAsIGludCBpbnNwZWN0LCBp bnQgdm9pZHByaW50KQorQEAgLTk3Nyw2ICs5NzcsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChjaGFy ICpleHAsIGludCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQogICAgZWxzZQogICAgICB2YWwgPSBh Y2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCkBAIC02MjU4LDcgKzc0NTUsNyBAQCBpbmRleCAx MjI0OWEwLi42OWFhZTAxIDEwMDY0NAogICAgaWYgKHZvaWRwcmludCB8fCAodmFsICYmIHZhbHVl X3R5cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZ UEVfQ09ERV9WT0lEKSkKICAgICAgewotQEAgLTE0NzEsNiArMTQ3NiwyNCBAQCB4X2NvbW1hbmQg KGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTE0NzgsNiArMTQ4MywyNCBAQCB4X2NvbW1h bmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9p bnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CiAgICAgIH0KICB9CkBAIC02 MjgzLDcgKzc0ODAsNyBAQCBpbmRleCAxMjI0OWEwLi42OWFhZTAxIDEwMDY0NAogIAwKICAKICAv KiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAgLTI4NjQs NCArMjg4Nyw4IEBAIFNob3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51 bWJlciB3aXRoIDxzeW1ib2w+LiIpLCBOVUxMLAorQEAgLTI4NzIsNCArMjg5NSw4IEBAIFNob3cg cHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1ib2w+ LiIpLCBOVUxMLAogICAgYWRkX2NvbSAoImV2YWwiLCBub19jbGFzcywgZXZhbF9jb21tYW5kLCBf KCJcCiAgQ29udmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIsIGFyZzMs IC4uLiwgYXJnbiB0b1xuXAogIGEgY29tbWFuZCBsaW5lLCBhbmQgY2FsbCBpdC4iKSk7CkBAIC03 MzE4LDcgKzg1MTUsNyBAQCBpbmRleCBjMDEwNDIwLi4zZjRhMjYxIDEwMDY0NAogIAogIAwKIGRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMK LWluZGV4IDUxNWVhZWMuLjVkNDgzZWQgMTAwNjQ0CitpbmRleCA0MzgxZDUyLi41ZGZmM2UyIDEw MDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5LXZh bHVlLmMKIEBAIC0yOCw2ICsyOCw3IEBACkBAIC03MzYxLDcgKzg1NTgsNyBAQCBpbmRleCA1MTVl YWVjLi41ZDQ4M2VkIDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhv bi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5kZXggM2IxMGQ4Yy4uNzQ4NWQxNCAxMDA2NDQK K2luZGV4IDkwZDVkYzguLmVjNDgyM2UgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5j CiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCiBAQCAtNDksOCArNDksMTEgQEAgc3RhdGljIGlu dCBnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSAxOwpAQCAtNzM3Niw3ICs4NTczLDcgQEAgaW5k ZXggM2IxMGQ4Yy4uNzQ4NWQxNCAxMDA2NDQKICAKICBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0 aG9kc1tdOwogIAotQEAgLTcyMyw2ICs3MjYsNTMgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQp CitAQCAtNzY5LDYgKzc3Miw1MyBAQCBnZGJweV9wcmludF9zdGFjayAodm9pZCkKICAKICAvKiBS ZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgogICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAq LwpAQCAtNzQzMCw3ICs4NjI3LDcgQEAgaW5kZXggM2IxMGQ4Yy4uNzQ4NWQxNCAxMDA2NDQKICAK ICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFjZSAoUHlPYmpl Y3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTExMDgsNiArMTE1OCw4IEBAIHN0 YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorQEAgLTExOTQsNiArMTI0NCw4IEBAIHN0 YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQogICAgICAiR2V0IGEgdmFsdWUgZnJvbSBo aXN0b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbikgZXhlY3V0ZV9nZGJfY29t bWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgIkV4ZWN1dGUgYSBnZGIg Y29tbWFuZCIgfSwKQEAgLTc0NDAsMTAgKzg2MzcsMTAgQEAgaW5kZXggM2IxMGQ4Yy4uNzQ4NWQx NCAxMDA2NDQKICAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKICAKIGRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAotaW5k ZXggNThkOTdmYy4uOTNkNTZlZiAxMDA2NDQKK2luZGV4IGNlMGViMzUuLjE0NTcyZjQgMTAwNjQ0 CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1A QCAtMzAsNiArMzAsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChz dHJ1Y3QgY29tbWFuZF9saW5lICopOworQEAgLTMyLDYgKzMyLDggQEAgdm9pZCBldmFsX3B5dGhv bl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKICAKICB2b2lk IHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpOwog IApAQCAtNzQ2Niw4ICs4NjYzLDIwIEBAIGluZGV4IDQzMmRhOTkuLjc4YzZiMWMgMTAwNjQ0CiAg fQogIAogIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUg dGhlIGVudHJ5LXBvaW50CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbXJlYWQuYyBiL2dkYi9zb21yZWFk LmMKK2luZGV4IDcwODMxYTAuLmJhZjY4ZWEgMTAwNjQ0CistLS0gYS9nZGIvc29tcmVhZC5jCisr KysgYi9nZGIvc29tcmVhZC5jCitAQCAtNDM5LDYgKzQzOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucyA9CisgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8q IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KKyAgIE5VTEwsCisgICBk ZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICov CisrICBOVUxMLAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLworICAgJnBzeW1fZnVuY3Rpb25zCisg fTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCi1pbmRleCA2ZTU5 Y2QwLi4wZWFjYWM5IDEwMDY0NAoraW5kZXggMDg4OGI2OS4uYzNlZmQ1YiAxMDA2NDQKIC0tLSBh L2dkYi9zdGFjay5jCiArKysgYi9nZGIvc3RhY2suYwogQEAgLTM2Niw2ICszNjYsNyBAQCBwcmlu dF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUsCkBAIC03NDkyLDYgKzg3MDEsMjE0NyBAQCBpbmRleCA2ZTU5Y2QwLi4wZWFjYWM5IDEwMDY0 NAogIAkJICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91dCwgInZhbHVlIiwgc3RiKTsKICAJICAg ICAgICB9CiAgCSAgICAgIGVsc2UKK2RpZmYgLS1naXQgYS9nZGIvc3RhcC1wcm9iZS5jIGIvZ2Ri L3N0YXAtcHJvYmUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmViMmZi N2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9zdGFwLXByb2JlLmMKK0BAIC0wLDAgKzEsMTkz OSBAQAorKy8qIFN5c3RlbXRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCisrCisrICAgQ29weXJp Z2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisrCisrI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAic3RhcC1wcm9iZS5o IgorKyNpbmNsdWRlICJ2ZWMuaCIKKysjaW5jbHVkZSAidWktb3V0LmgiCisrI2luY2x1ZGUgImdk Yl9yZWdleC5oIgorKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRlICJhcmNoLXV0aWxz LmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCisrI2lu Y2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysjaW5jbHVkZSAiYXgu aCIKKysjaW5jbHVkZSAiYXgtZ2RiLmgiCisrI2luY2x1ZGUgInVzZXItcmVncy5oIgorKyNpbmNs dWRlICJjb21wbGFpbnRzLmgiCisrI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKysKKysjaW5j bHVkZSA8Y3R5cGUuaD4KKysKKytlbnVtIHN0YXBfYXJnX2JpdG5lc3MKKyt7CisrICBTVEFQX0FS R19CSVRORVNTX1VOREVGSU5FRCwKKysgIFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfVU5TSUdORUQs CisrICBTVEFQX0FSR19CSVRORVNTXzMyQklUX1NJR05FRCwKKysgIFNUQVBfQVJHX0JJVE5FU1Nf NjRCSVRfVU5TSUdORUQsCisrICBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRCwKKyt9Owor KworK3N0cnVjdCBzdGFwX3Byb2JlX2FyZworK3sKKysgIC8qIFRoZSBiaXRuZXNzIG9mIHRoaXMg YXJndW1lbnQuICAqLworKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5lc3M7CisrCisrICAv KiBUaGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGlzIGFyZ3VtZW50LiAgKi8KKysgIGNoYXIgKmFy Z19zdHI7CisrfTsKKysKKysjZGVmaW5lIFNUQVBfTUFYX0FSR1MgMTAKKysKKytzdHJ1Y3Qgc3Rh cF9hcmdzX2luZm8KKyt7CisrICAvKiBUaGUgbnVtYmVyIG9mIHZhbGlkIHBhcnNlZCBhcmd1bWVu dHMuICAqLworKyAgaW50IG5fYXJnczsKKysKKysgIC8qIFRoZSBwcm9iZSB0byB3aGljaCB0aGVz ZSBhcmd1bWVudHMgYmVsb25nLiAgKi8KKysgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKKysK KysgIC8qIEluZm9ybWF0aW9uIGFib3V0IGVhY2ggYXJndW1lbnQuICAqLworKyAgc3RydWN0IHN0 YXBfcHJvYmVfYXJnICphcmc7CisrfTsKKysKKysvKiBTdHJ1Y3QgdGhhdCBjb250YWlucyBhbGwg dGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBldmFsdWF0ZQorKyAgIGFuIGV4cHJlc3Npb24u ICAqLworKworK3N0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbworK3sKKysgIC8qIFRoZSBjb25z dGFudCBwb2ludGVyIHdoaWNoIGhvbGRzIHRoZSBleHByZXNzaW9uLiBUaGlzIGlzIHByaW1hcmls eQorKyAgICAgdXNlZCBmb3IgcHJpbnRpbmcgZXJyb3IgbWVzc2FnZXMuICBFdmFsdWF0aW9uIGZ1 bmN0aW9ucyBzaG91bGQKKysgICAgIG5vdCBtb2RpZnkgdGhpcyBwb2ludGVyIGRpcmVjdGx5OyBp bnN0ZWFkLCB0aGV5IHNob3VsZCB1c2UgdGhlCisrICAgICBFWFBfQlVGRkVSIHBvaW50ZXIgYmVs b3cuICAqLworKyAgY29uc3QgY2hhciAqc2F2ZWRfZXhwcjsKKysKKysgIC8qIE1vZGlmaWFibGUg dmVyc2lvbiBvZiB0aGUgYWJvdmUgcG9pbnRlci4gICovCisrICBjaGFyICpleHBfYnVmOworKwor KyAgLyogVGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgZ2RiYXJjaC4gICovCisrICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaDsKKysKKysgIC8qIFRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGZy YW1lLCB1c2VkIHdoZW4gYWNjZXNzaW5nIHJlZ2lzdGVycycKKysgICAgIGNvbnRlbnRzLiAgKi8K KysgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKKysKKysgIC8qIFRoZSBiaXRuZXNzIHNwZWNp ZmllZCBmb3IgdGhpcyBhcmd1bWVudC4gICovCisrICBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0 bmVzczsKKysKKysgIC8qIEZsYWcgdG8gaW5kaWNhdGUgaWYgd2UgYXJlIGNvbXBpbGluZyBhbiBh Z2VudCBleHByZXNzaW9uLiAgKi8KKysgIGludCBjb21waWxpbmdfcDsKKysKKysgIC8qIElmIHRo ZSBhYm92ZSBmbGFnIGlzIHRydWUgKG9uZSksIHRoaXMgZmllbGQgd2lsbCBjb250YWluIHRoZQor KyAgICAgcG9pbnRlciB0byB0aGUgYWdlbnQgZXhwcmVzc2lvbi4gICovCisrICBzdHJ1Y3QgYWdl bnRfZXhwciAqYWV4cHI7CisrCisrICAvKiBUaGUgdmFsdWUgd2UgYXJlIG1vZGlmeWluZyAoZm9y IGFnZW50IGV4cHJlc3Npb24pLiAgKi8KKysgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlOworK307 CisrCisrLyogVGhpcyBkdW1teSB2YXJpYWJsZSBpcyB1c2VkIHdoZW4gcGFyc2luZyBhIHByb2Jl J3MgYXJndW1lbnQgZmFpbHMuCisrICAgSW4gdGhpcyBjYXNlLCB0aGUgbnVtYmVyIG9mIGFyZ3Vt ZW50cyBmb3IgdGhpcyBwcm9iZSBpcyB6ZXJvLCBzbyB0aGF0J3MKKysgICB3aHkgdGhpcyB2YXJp YWJsZSBpcyB1c2VmdWwuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gZHVt bXlfc3RhcF9hcmdzX2luZm8gPQorKyAgeyAwLCBOVUxMLCBOVUxMIH07CisrCisrLyogRXZhbHVh dGlvbiBmdW5jdGlvbiBmb3IgcHJvYmUncyBhcmd1bWVudCBleHByZXNzaW9ucy4gIExIUyByZXBy ZXNlbnRzCisrICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwgYW5kIFBSRUMgaXMg dGhlIHByZWNlZGVuY2Ugb2YgdGhlCisrICAgbGFzdCBvcGVyYXRvciBpZGVudGlmaWVkIGJlZm9y ZSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4gICovCisrCisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisr c3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yIChzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2lu Zm8gKmV2YWxfaW5mbywKKysJCQkJc3RydWN0IHZhbHVlICpsaHMsIGludCBwcmVjKTsKKysKKytz dGF0aWMgc3RydWN0IHZhbHVlICoKKytzdGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKHN0cnVj dCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvKTsKKysKKytzdGF0aWMgdm9pZAorK3N0 YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKGNoYXIgKipzLCBpbnQgaW5zaWRlX3BhcmVuKQorK3sK KysgIGlmIChpbnNpZGVfcGFyZW4pCisrICAgICpzID0gc2tpcF9zcGFjZXMgKCpzKTsKKyt9Cisr Cisrc3RhdGljIGludAorK3N0YXBfcGFyc2VfYXJnIChjb25zdCBjaGFyICoqcCkKKyt7CisrICBj aGFyICpjdXIgPSAoY2hhciAqKSAqcDsKKysgIGludCBkb25lID0gMDsKKysgIGludCBwYXJlbl9v cGVuID0gMDsKKysKKysgIHdoaWxlICghZG9uZSkKKysgICAgeworKyAgICAgIHN3aXRjaCAoKmN1 cikKKysJeworKwljYXNlICcgJzogY2FzZSAwOgorKwkgIC8qIElmIHdlJ3JlIGhlcmUsIHRoZW4g d2UgaGF2ZSBhbHJlYWR5IHBhcnNlZCBldmVyeXRoaW5nCisrCSAgICAgZnJvbSB0aGlzIGFyZ3Vt ZW50LiAgKi8KKysJICBpZiAocGFyZW5fb3BlbikKKysJICAgIHJldHVybiAwOworKwkgIGRvbmUg PSAxOworKwkgIGJyZWFrOworKworKwljYXNlICcoJzoKKysJICArK3BhcmVuX29wZW47CisrCSAg KytjdXI7CisrCSAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7 CisrCSAgYnJlYWs7CisrCisrCWNhc2UgJyknOgorKwkgIGlmICghcGFyZW5fb3BlbikKKysJICAg IHJldHVybiAwOworKworKwkgIC0tcGFyZW5fb3BlbjsKKysJICArK2N1cjsKKysJICBpZiAocGFy ZW5fb3BlbikKKysJICAgIGN1ciA9IHNraXBfc3BhY2VzIChjdXIpOworKwkgIGJyZWFrOworKwor KwljYXNlICcrJzogY2FzZSAnLSc6CisrCWNhc2UgJyonOiBjYXNlICcvJzoKKysJY2FzZSAnPic6 IGNhc2UgJzwnOiBjYXNlICd8JzogY2FzZSAnJic6CisrCWNhc2UgJ14nOiBjYXNlICchJzoKKysJ ICAgIHsKKysJICAgICAgY2hhciBjID0gKmN1cjsKKysKKysJICAgICAgKytjdXI7CisrCSAgICAg IHN3aXRjaCAoKmN1cikKKysJCXsKKysJCWNhc2UgJz4nOgorKwkJICBpZiAoYyAhPSAnPCcgJiYg YyAhPSAnPicpCisrCQkgICAgcmV0dXJuIDA7CisrCisrCQkgICsrY3VyOworKwkJICBicmVhazsK KysKKysJCWNhc2UgJzwnOgorKwkJICBpZiAoYyAhPSAnPCcpCisrCQkgICAgcmV0dXJuIDA7Cisr CisrCQkgICsrY3VyOworKwkJICBicmVhazsKKysKKysJCWNhc2UgJz0nOgorKwkJICBpZiAoYyAh PSAnPScgJiYgYyAhPSAnPCcgJiYgYyAhPSAnPicgJiYgYyAhPSAnIScpCisrCQkgICAgcmV0dXJu IDA7CisrCisrCQkgICsrY3VyOworKwkJICBicmVhazsKKysKKysJCWNhc2UgJ3wnOgorKwkJICBp ZiAoYyAhPSAnfCcpCisrCQkgICAgcmV0dXJuIDA7CisrCisrCQkgICsrY3VyOworKwkJICBicmVh azsKKysKKysJCWNhc2UgJyYnOgorKwkJICBpZiAoYyAhPSAnJicpCisrCQkgICAgcmV0dXJuIDA7 CisrCisrCQkgICsrY3VyOworKwkJICBicmVhazsKKysKKysJCWRlZmF1bHQ6CisrCQkgIGJyZWFr OworKwkJfQorKwkgICAgICAvKiBJbmZpeCBvcGVyYXRvcnMgdGFrZSB0d28gYXJndW1lbnRzLCBv bmUgb24gZWl0aGVyCisrCQkgc2lkZS4gIFNraXBwaW5nIHRoZSB3aGl0ZXNwYWNlcyB0aGF0IG1h eSBoYXBwZW4gb24gdGhlCisrCQkgcmlnaHQgc2lkZS4gICovCisrCSAgICAgIHN0YXBfc2tpcF93 aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOworKwkgICAgfQorKwkgIGJyZWFrOwor KworKwljYXNlICclJzoKKysJICAgIHsKKysJICAgICAgKytjdXI7CisrCSAgICAgIHN0YXBfc2tp cF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOworKwkgICAgICBpZiAoKmN1ciA+ PSAnYScgJiYgKmN1ciA8PSAneicpCisrCQl7CisrCQkgIC8qIFdlJ3JlIGRlYWxpbmcgd2l0aCBh IHJlZ2lzdGVyIG5hbWUuICAqLworKwkJICB3aGlsZSAoaXNhbG51bSAoKmN1cikpCisrCQkgICAg KytjdXI7CisrCisrCQkgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29w ZW4pOworKworKwkJICAvKiBTb21lIHJlZ2lzdGVycyAoZS5nLiBmbG9hdGluZy1wb2ludCByZWdp c3RlciBzdGFjaworKwkJICAgICByZWdpc3RlcnMgb24gSW50ZWwgaTM4NikgaGF2ZSB0aGUgZm9s bG93aW5nIHN5bnRheDoKKysKKysJCSAgICAgYCVzdCgwKScsIGAlc3QoMSknLCBhbmQgc28gb24u CisrCisrCQkgICAgIFNvIGl0J3Mgb2sgdG8gZXhwZWN0IHBhcmVudGhlc2lzIGhlcmUuICAqLwor KwkJICBpZiAoKmN1ciA9PSAnKCcpCisrCQkgICAgeworKwkJICAgICAgKytjdXI7CisrCQkgICAg ICBzdGFwX3NraXBfd2hpdGVzcGFjZV9jb25kICgmY3VyLCBwYXJlbl9vcGVuKTsKKysJCSAgICAg IGlmICghaXNkaWdpdCAoKmN1cikpCisrCQkJLyogVGhpcyBpcyBhbiBlcnJvciwgc2luY2Ugd2Ug b25seSBleHBlY3QgbnVtYmVycworKwkJCSAgIGluc2lkZSB0aGlzIHBhcmVudGhlc2lzLiAgKi8K KysJCQlyZXR1cm4gMDsKKysJCSAgICAgICsrY3VyOworKwkJICAgICAgc3RhcF9za2lwX3doaXRl c3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7CisrCQkgICAgICBpZiAoKmN1ciAhPSAnKScp CisrCQkJLyogV2Ugb25seSBleHBlY3Qgb25lIG51bWJlci4gICovCisrCQkJcmV0dXJuIDA7Cisr CQkgICAgICArK2N1cjsKKysJCSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIs IHBhcmVuX29wZW4pOworKwkJICAgIH0KKysJCX0KKysJICAgIH0KKysJICBicmVhazsKKysKKysJ Y2FzZSAnJCc6CisrCSAgICB7CisrCSAgICAgIC8qIFRoaXMgaXMgYW4gaW50ZWdlciBjb25zdGFu dC4gICovCisrCSAgICAgICsrY3VyOworKwkgICAgICBzdGFwX3NraXBfd2hpdGVzcGFjZV9jb25k ICgmY3VyLCBwYXJlbl9vcGVuKTsKKysKKysJICAgICAgd2hpbGUgKGlzZGlnaXQgKCpjdXIpKQor KwkJKytjdXI7CisrCisrCSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBh cmVuX29wZW4pOworKwkgICAgfQorKwkgIGJyZWFrOworKworKwljYXNlICcwJzogY2FzZSAnMSc6 IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CisrCWNhc2UgJzUnOiBjYXNlICc2JzogY2Fz ZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKKysJICAgIHsKKysJICAgICAgY2hhciAqb2xkID0g Y3VyOworKworKwkgICAgICAvKiBOdW1iZXIuICAqLworKwkgICAgICB3aGlsZSAoaXNkaWdpdCAo KmN1cikpCisrCQkrK2N1cjsKKysKKysJICAgICAgLyogV2UgaGF2ZSB0byBkbyBhIGxvb2thaGVh ZCBoZXJlLCBiZWNhdXNlIHRoZSB1c2VyIG1heQorKwkJIGlucHV0IGAyICsgMicgKHdpdGggc3Bh Y2VzKSwgYW5kIHRoaXMgaXMgbm90IGFuIGVycm9yLiAgKi8KKysJICAgICAgY3VyID0gc2tpcF9z cGFjZXMgKGN1cik7CisrCisrCSAgICAgIHN3aXRjaCAoKmN1cikKKysJCXsKKysJCWNhc2UgJysn OiBjYXNlICctJzoKKysJCSAgLyogV2UgbWF5IGZpbmQgdGhlIGBAJyBzaWduLCBhbmQgaXQgbWVh bnMgdGhhdCB0aGUKKysJCSAgICAgYXJndW1lbnQgaGFzIGZpbmlzaGVkLCBzbyB3ZSBzaG91bGRu J3QgYWR2YW5jZSB0aGUKKysJCSAgICAgcG9pbnRlci4gICovCisrCQkgIGlmIChjdXJbMV0gJiYg KGN1clsxXSA9PSAnNCcgfHwgY3VyWzFdID09ICc4JykKKysJCSAgICAgICYmIGN1clsyXSAmJiBj dXJbMl0gPT0gJ0AnKQorKwkJICAgIHsKKysJCSAgICAgIGN1ciA9IG9sZDsKKysJCSAgICAgIGdv dG8gZmluOworKwkJICAgIH0KKysJCSAgYnJlYWs7CisrCisrCQljYXNlICcqJzogY2FzZSAnLyc6 IGNhc2UgJz4nOiBjYXNlICc8JzoKKysJCWNhc2UgJ3wnOiBjYXNlICcmJzogY2FzZSAnXic6IGNh c2UgJyEnOgorKwkJICAvKiBUaGlzIGlzIGEgYmluYXJ5IG9wZXJhdGlvbiwgd2hpY2ggbWVhbnMg d2UnbGwKKysJCSAgICAgaGF2ZSB0byBmaW5kIGFub3RoZXIgbnVtYmVyIGFmdGVyIHRoZSBvcGVy YXRvci4gICovCisrCQkgIGJyZWFrOworKworKwkJY2FzZSAnKCc6CisrCQkgIC8qIFdlIG1heSBh bHNvIGhhdmUgc2VudGVuY2VzIGluIHRoZSBmb3JtOgorKworKwkJICAgICBgNCAoJXJheCknICAq LworKwkJICBicmVhazsKKysJCX0KKysJICAgIH0KKytmaW46CisrCSAgYnJlYWs7CisrCX0KKysg ICAgfQorKworKyAgKnAgPSBjdXI7CisrCisrICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIHZv aWQKKytzdGFwX2ZyZWVfYXJnc19pbmZvICh2b2lkICphcmdzX2luZm9fcHRyKQorK3sKKysgIHN0 cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYSA9IChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKikgYXJnc19p bmZvX3B0cjsKKysgIGludCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IFNUQVBfTUFYX0FSR1M7 IGkrKykKKysgICAgeworKyAgICAgIHhmcmVlIChhLT5hcmctPmFyZ19zdHIpOworKyAgICB9Cisr CisrICB4ZnJlZSAoYS0+YXJnKTsKKysgIHhmcmVlIChhKTsKKyt9CisrCisrdm9pZAorK3N0YXBf cGFyc2VfcHJvYmVfYXJndW1lbnRzIChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpCisreworKyAg c3RydWN0IHN0YXBfYXJnc19pbmZvICphcmdzX2luZm87CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFj a190bzsKKysgIGNvbnN0IGNoYXIgKmN1ciA9IHByb2JlLT5hcmdzOworKyAgaW50IGN1cnJlbnRf YXJnID0gLTE7CisrICBlbnVtCisrICAgIHsKKysgICAgICBORVdfQVJHLAorKyAgICAgIEJJVE5F U1MsCisrICAgICAgUEFSU0VfQVJHLAorKyAgICB9IGN1cnJlbnRfc3RhdGU7CisrCisrICAvKiBG b3Igbm93LCB3ZSBhc3N1bWUgZXZlcnl0aGluZyBpcyBub3QgZ29pbmcgdG8gd29yay4gICovCisr ICBwcm9iZS0+cGFyc2VkX2FyZ3MgPSAmZHVtbXlfc3RhcF9hcmdzX2luZm87CisrCisrICBpZiAo IWN1ciB8fCAhKmN1ciB8fCAqY3VyID09ICc6JykKKysgICAgcmV0dXJuOworKworKyAgYXJnc19p bmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8pKTsKKysgIGJhY2tf dG8gPSBtYWtlX2NsZWFudXAgKHN0YXBfZnJlZV9hcmdzX2luZm8sIGFyZ3NfaW5mbyk7CisrICBh cmdzX2luZm8tPmFyZyA9IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0 YXBfcHJvYmVfYXJnKSk7CisrCisrICAvKiBPaywgbGV0J3Mgc3RhcnQuICAqLworKyAgY3VycmVu dF9zdGF0ZSA9IE5FV19BUkc7CisrCisrICB3aGlsZSAoKmN1cikKKysgICAgeworKyAgICAgIHN3 aXRjaCAoY3VycmVudF9zdGF0ZSkKKysJeworKwljYXNlIE5FV19BUkc6CisrCSAgKytjdXJyZW50 X2FyZzsKKysKKysJICBpZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJHUykKKysJICAgIHsK KysJICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJCSBfKCJwcm9iZSBg JXMnIGhhcyBtb3JlIGFyZ3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKKysJCQkgICAiYWxsb3dl ZCIpLCBwcm9iZS0+bmFtZSk7CisrCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysJICAg ICAgcmV0dXJuOworKwkgICAgfQorKworKwkgIGN1cnJlbnRfc3RhdGUgPSBCSVRORVNTOworKwkg IGJyZWFrOworKworKwljYXNlIEJJVE5FU1M6CisrCSAgICB7CisrCSAgICAgIGVudW0gc3RhcF9h cmdfYml0bmVzcyBiOworKwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKKysKKysJICAgICAgLyog V2UgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIGxpa2U6CisrCisrCQkgTkBPUAorKworKwkJIFdo ZXJlIGBOJyBjYW4gYmUgWyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRhdG9yeSwgc28KKysJ CSB3ZSBjaGVjayBpdCBoZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28gdG8gdGhlIG5leHQK KysJCSBzdGF0ZS4gICovCisrCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYgY3VyWzFdICYmIGN1 clsyXSAhPSAnQCcpCisrCQkgICYmIGN1clsxXSAhPSAnQCcpCisrCQl7CisrCQkgIGN1cnJlbnRf c3RhdGUgPSBQQVJTRV9BUkc7CisrCQkgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5iaXRu ZXNzCisrCQkgICAgPSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRDsKKysJCSAgYnJlYWs7Cisr CQl9CisrCisrCSAgICAgIGlmICgqY3VyID09ICctJykKKysJCXsKKysJCSAgLyogRGlzY2FyZCB0 aGUgYC0nLiAgKi8KKysJCSAgKytjdXI7CisrCQkgIGdvdF9taW51cyA9IDE7CisrCQl9CisrCisr CSAgICAgIGlmICgqY3VyID09ICc0JykKKysJCWIgPSBnb3RfbWludXMgPyBTVEFQX0FSR19CSVRO RVNTXzMyQklUX1NJR05FRAorKwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfVU5TSUdORUQ7 CisrCSAgICAgIGVsc2UgaWYgKCpjdXIgPT0gJzgnKQorKwkJYiA9IGdvdF9taW51cyA/IFNUQVBf QVJHX0JJVE5FU1NfNjRCSVRfU0lHTkVECisrCQkgIDogU1RBUF9BUkdfQklUTkVTU182NEJJVF9V TlNJR05FRDsKKysJICAgICAgZWxzZQorKwkJeworKwkJICAvKiBXZSBoYXZlIGFuIGVycm9yLCBi ZWNhdXNlIHdlIGRvbid0IGV4cGVjdCBhbnl0aGluZworKwkJICAgICBleGNlcHQgNCBhbmQgOC4g ICovCisrCQkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCQkgICAgIF8oInVu cmVjb2duaXplZCBiaXRuZXNzIGAlYycgZm9yIHByb2JlIGAlcyciKSwKKysJCQkgICAgICpjdXIs IHByb2JlLT5uYW1lKTsKKysJCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKwkJICByZXR1cm47 CisrCQl9CisrCisrCSAgICAgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5iaXRuZXNzID0g YjsKKysJICAgICAgLyogRGlzY2FyZCB0aGUgbnVtYmVyIGFuZCB0aGUgYEAnIHNpZ24uICAqLwor KwkgICAgICBjdXIgKz0gMjsKKysJICAgICAgLyogTW92ZSBvbi4gICovCisrCSAgICAgIGN1cnJl bnRfc3RhdGUgPSBQQVJTRV9BUkc7CisrCSAgICB9CisrCSAgYnJlYWs7CisrCisrCWNhc2UgUEFS U0VfQVJHOgorKwkgICAgeworKwkgICAgICBjb25zdCBjaGFyICpzdGFydCA9IGN1cjsKKysKKysJ ICAgICAgaWYgKCFzdGFwX3BhcnNlX2FyZyAoJmN1cikpCisrCQl7CisrCQkgIC8qIFdlIGhhdmUg dHJpZWQgdG8gcGFyc2UgdGhpcyBhcmd1bWVudCwgYnV0IGl0J3MKKysJCSAgICAgbWFsZm9ybWVk LiAgVGhpcyBpcyBhbiBlcnJvci4gICovCisrCQkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysJ CSAgcmV0dXJuOworKwkJfQorKworKwkgICAgICBhcmdzX2luZm8tPmFyZ1tjdXJyZW50X2FyZ10u YXJnX3N0cgorKwkJPSBzYXZlc3RyaW5nIChzdGFydCwgY3VyIC0gc3RhcnQpOworKwkgICAgICAv KiBTdGFydCBpdCBvdmVyIGFnYWluLiAgKi8KKysJICAgICAgY3VyID0gc2tpcF9zcGFjZXMgKChj aGFyICopIGN1cik7CisrCSAgICAgIGN1cnJlbnRfc3RhdGUgPSBORVdfQVJHOworKwkgICAgfQor KwkgIGJyZWFrOworKwl9CisrCisrICAgICAgaWYgKCEqY3VyICYmIGN1cnJlbnRfc3RhdGUgIT0g TkVXX0FSRykKKysJeworKwkgIC8qIFdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgYXJndW1lbnQg c3RyaW5nLCBidXQgd2UncmUKKysJICAgICBzdGlsbCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9j ZXNzIG9mIHBhcnNpbmcgYW4gYXJndW1lbnQuCisrCSAgICAgSXQgbWVhbnMgdGhlIGFyZ3VtZW50 IHN0cmluZyBpcyBtYWxmb3JtZWQuICAqLworKwkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxh aW50cywKKysJCSAgICAgXygibWFsZm9ybWVkIGFyZ3VtZW50IGZvciBwcm9iZSBgJXMnIiksCisr CQkgICAgIHByb2JlLT5uYW1lKTsKKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisrCSAgcmV0 dXJuOworKwl9CisrICAgIH0KKysKKysgIGFyZ3NfaW5mby0+bl9hcmdzID0gY3VycmVudF9hcmcg KyAxOworKyAgYXJnc19pbmZvLT5hcmcgPSB4cmVhbGxvYyAoYXJnc19pbmZvLT5hcmcsCisrCQkJ ICAgICAgYXJnc19pbmZvLT5uX2FyZ3MKKysJCQkgICAgICAqIHNpemVvZiAoc3RydWN0IHN0YXBf cHJvYmVfYXJnKSk7CisrICBhcmdzX2luZm8tPnByb2JlID0gcHJvYmU7CisrCisrICBwcm9iZS0+ cGFyc2VkX2FyZ3MgPSBhcmdzX2luZm87CisrCisrICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3Rv KTsKKyt9CisrCisraW50Cisrc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKGNvbnN0IHN0 cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKKyt7CisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykK KysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBw cm9iZSk7CisrCisrICByZXR1cm4gcHJvYmUtPnBhcnNlZF9hcmdzLT5uX2FyZ3M7CisrfQorKwor Ky8qIFJldHVybnMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgbGV2ZWwgb2YgT1AsIG9yIHplcm8g aWYgdGhlIG9wZXJhdG9yCisrICAgY29kZSB3YXMgbm90IHJlY29nbml6ZWQuCisrICAgVGhlIGxl dmVscyB3ZXJlIHRha2VuIGZyb20gdGhlIGdhcyBtYW51YWwuICAqLworKworK3N0YXRpYyBpbnQK KytzdGFwX2dldF9vcGVyYXRvcl9wcmVjIChlbnVtIGV4cF9vcGNvZGUgb3ApCisreworKyAgc3dp dGNoIChvcCkKKysgICAgeworKyAgICBjYXNlIEJJTk9QX0xPR0lDQUxfT1I6CisrICAgICAgcmV0 dXJuIDE7CisrCisrICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6CisrICAgICAgcmV0dXJuIDI7 CisrCisrICAgIGNhc2UgQklOT1BfQUREOiBjYXNlIEJJTk9QX1NVQjoKKysgICAgY2FzZSBCSU5P UF9FUVVBTDogY2FzZSBCSU5PUF9OT1RFUVVBTDoKKysgICAgY2FzZSBCSU5PUF9MRVNTOiBjYXNl IEJJTk9QX0xFUToKKysgICAgY2FzZSBCSU5PUF9HVFI6IGNhc2UgQklOT1BfR0VROgorKyAgICAg IHJldHVybiAzOworKworKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfSU9SOiBjYXNlIEJJTk9QX0JJ VFdJU0VfQU5EOgorKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOiBjYXNlIFVOT1BfTE9HSUNB TF9OT1Q6CisrICAgICAgcmV0dXJuIDQ7CisrCisrICAgIGNhc2UgQklOT1BfTVVMOiBjYXNlIEJJ Tk9QX0RJVjogY2FzZSBCSU5PUF9SRU06CisrICAgIGNhc2UgQklOT1BfTFNIOiBjYXNlIEJJTk9Q X1JTSDoKKysgICAgICByZXR1cm4gNTsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICByZXR1cm4g MDsKKysgICAgfQorK30KKysKKysvKiBHaXZlbiBTLCB0aGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBv cGVyYXRvciBpbiBpdCBhbmQgZmlsbHMgdGhlIE9QCisrICAgcG9pbnRlciB3aXRoIGl0cyBjb2Rl LiAgUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIHplcm8gaWYgdGhlIG9wZXJhdG9yCisrICAgd2FzIG5v dCByZWNvZ25pemVkLiAgKi8KKysKKytzdGF0aWMgaW50Cisrc3RhcF9nZXRfb3Bjb2RlIChjaGFy ICoqcywgZW51bSBleHBfb3Bjb2RlICpvcCkKKyt7CisrICBjaGFyIGMgPSAqKnM7CisrICBpbnQg cmV0ID0gMTsKKysKKysgICpzICs9IDE7CisrCisrICBzd2l0Y2ggKGMpCisrICAgIHsKKysgICAg Y2FzZSAnKic6CisrICAgICAgKm9wID0gQklOT1BfTVVMOworKyAgICAgIGJyZWFrOworKworKyAg ICBjYXNlICcvJzoKKysgICAgICAqb3AgPSBCSU5PUF9ESVY7CisrICAgICAgYnJlYWs7CisrCisr ICAgIGNhc2UgJyUnOgorKyAgICAgIHsKKysJaWYgKGlzYWxwaGEgKCoqcykpCisrCSAgeworKwkg ICAgLyogRGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgbmFtZS4gICovCisrCSAgICByZXQgPSAwOwor KwkgICAgYnJlYWs7CisrCSAgfQorKworKwkqb3AgPSBCSU5PUF9SRU07CisrICAgICAgfQorKyAg ICBicmVhazsKKysKKysgICAgY2FzZSAnPCc6CisrICAgICAgKm9wID0gQklOT1BfTEVTUzsKKysg ICAgICBpZiAoKipzID09ICc8JykKKysJeworKwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1Bf TFNIOworKwl9CisrICAgICAgZWxzZSBpZiAoKipzID09ICc9JykKKysJeworKwkgICpzICs9IDE7 CisrCSAgKm9wID0gQklOT1BfTEVROworKwl9CisrICAgICAgZWxzZSBpZiAoKipzID09ICc+JykK KysJeworKwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfTk9URVFVQUw7CisrCX0KKysgICAg YnJlYWs7CisrCisrICAgIGNhc2UgJz4nOgorKyAgICAgICpvcCA9IEJJTk9QX0dUUjsKKysgICAg ICBpZiAoKipzID09ICc+JykKKysJeworKwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfUlNI OworKwl9CisrICAgICAgZWxzZSBpZiAoKipzID09ICc9JykKKysJeworKwkgICpzICs9IDE7Cisr CSAgKm9wID0gQklOT1BfR0VROworKwl9CisrICAgIGJyZWFrOworKworKyAgICBjYXNlICd8JzoK KysgICAgICAqb3AgPSBCSU5PUF9CSVRXSVNFX0lPUjsKKysgICAgICBpZiAoKipzID09ICd8JykK KysJeworKwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfTE9HSUNBTF9PUjsKKysJfQorKyAg ICBicmVhazsKKysKKysgICAgY2FzZSAnJic6CisrICAgICAgKm9wID0gQklOT1BfQklUV0lTRV9B TkQ7CisrICAgICAgaWYgKCoqcyA9PSAnJicpCisrCXsKKysJICAqcyArPSAxOworKwkgICpvcCA9 IEJJTk9QX0xPR0lDQUxfQU5EOworKwl9CisrICAgIGJyZWFrOworKworKyAgICBjYXNlICdeJzoK KysgICAgICAqb3AgPSBCSU5PUF9CSVRXSVNFX1hPUjsKKysgICAgICBicmVhazsKKysKKysgICAg Y2FzZSAnISc6CisrICAgICAgKm9wID0gVU5PUF9MT0dJQ0FMX05PVDsKKysgICAgICBicmVhazsK KysKKysgICAgY2FzZSAnKyc6CisrICAgICAgKm9wID0gQklOT1BfQUREOworKyAgICAgIGJyZWFr OworKworKyAgICBjYXNlICctJzoKKysgICAgICAqb3AgPSBCSU5PUF9TVUI7CisrICAgICAgYnJl YWs7CisrCisrICAgIGNhc2UgJz0nOgorKyAgICAgIGlmICgqKnMgIT0gJz0nKQorKwl7CisrCSAg cmV0ID0gMDsKKysJICBicmVhazsKKysJfQorKyAgICAgICpvcCA9IEJJTk9QX0VRVUFMOworKyAg ICAgIGJyZWFrOworKworKyAgICBkZWZhdWx0OgorKyAgICAgIC8qIFdlIGRpZG4ndCBmaW5kIGFu eSBvcGVyYXRvci4gICovCisrICAgICAgKnMgLT0gMTsKKysgICAgICByZXR1cm4gMDsKKysgICAg fQorKworKyAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIHZvaWQKKytzdGFwX29wY29kZV90 b19heCAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8sCisrCQkgICBlbnVt IGV4cF9vcGNvZGUgb3Bjb2RlKQorK3sKKysgIHN0cnVjdCBhZ2VudF9leHByICpleHByID0gZXZh bF9pbmZvLT5hZXhwcjsKKysKKysgIHN3aXRjaCAob3Bjb2RlKQorKyAgICB7CisrICAgIGNhc2Ug QklOT1BfTVVMOgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX211bCk7CisrICAgICAgYnJl YWs7CisrCisrICAgIGNhc2UgQklOT1BfRElWOgorKyAgICAgIC8qIEZJWE1FOiBTaG91bGQgd2Ug c2lnbi1leHRlbmQgdGhlIG9wZXJhbmRzPyAgKi8KKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFv cF9kaXZfc2lnbmVkKTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBCSU5PUF9SRU06Cisr ICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfcmVtX3Vuc2lnbmVkKTsKKysgICAgICBicmVhazsK KysKKysgICAgY2FzZSBCSU5PUF9MRVNTOgorKyAgICAgIC8qIEZJWE1FOiBTaG91bGQgd2Ugc2ln bi1leHRlbmQgdGhlIG9wZXJhbmRzPyAgKi8KKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9s ZXNzX3NpZ25lZCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfTEVROgorKyAg ICAgIC8qIEEgPD0gQiBpcyAhKEIgPCBBKSAqLworKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9w X3N3YXApOworKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xlc3Nfc2lnbmVkKTsKKysgICAg ICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sb2dfbm90KTsKKysgICAgICBicmVhazsKKysKKysgICAg Y2FzZSBCSU5PUF9HVFI6CisrICAgICAgLyogQSA+IEIgaXMgQiA8IEEgKi8KKysgICAgICBheF9z aW1wbGUgKGV4cHIsIGFvcF9zd2FwKTsKKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sZXNz X3NpZ25lZCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfR0VROgorKyAgICAg IC8qIEEgPj0gQiBpcyAhKEEgPCBCKSAqLworKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xl c3Nfc2lnbmVkKTsKKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sb2dfbm90KTsKKysgICAg ICBicmVhazsKKysKKysgICAgY2FzZSBCSU5PUF9OT1RFUVVBTDoKKysgICAgICBheF9zaW1wbGUg KGV4cHIsIGFvcF9lcXVhbCk7CisrICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfbG9nX25vdCk7 CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfTFNIOgorKyAgICAgIGF4X3NpbXBs ZSAoZXhwciwgYW9wX2xzaCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfUlNI OgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX3JzaF91bnNpZ25lZCk7CisrICAgICAgYnJl YWs7CisrCisrICAgIGNhc2UgQklOT1BfQklUV0lTRV9JT1I6CisrICAgICAgYXhfc2ltcGxlIChl eHByLCBhb3BfYml0X29yKTsKKysgICAgICBicmVhazsKKysgICAgIAorKyAgICBjYXNlIEJJTk9Q X0xPR0lDQUxfT1I6CisrICAgICAgLyogRklYTUU6ID8/Pz8/ICovCisrLy8gICAgICBheF9zaW1w bGUgKGV4cHIsIGFvcF8KKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBCSU5PUF9CSVRXSVNF X0FORDoKKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9iaXRfYW5kKTsKKysgICAgICBicmVh azsKKysKKysgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKKysgICAgICAvKiBGSVhNRTogPz8/ PyAqLworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgorKyAg ICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2JpdF94b3IpOworKyAgICAgIGJyZWFrOworKworKyAg ICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6CisrICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfbG9n X25vdCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfQUREOgorKyAgICAgIGF4 X3NpbXBsZSAoZXhwciwgYW9wX2FkZCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklO T1BfU1VCOgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX3N1Yik7CisrICAgICAgYnJlYWs7 CisrCisrICAgIGNhc2UgQklOT1BfRVFVQUw6CisrICAgICAgYXhfc2ltcGxlIChleHByLCBhb3Bf ZXF1YWwpOworKyAgICAgIGJyZWFrOworKworKyAgICBkZWZhdWx0OgorKyAgICAgIGVycm9yIChf KCJJbnZhbGlkIG9wZXJhdG9yLiIpKTsKKysgICAgfQorK30KKysKKysvKiBSZXR1cm5zIDEgaWYg KlMgaXMgYW4gb3BlcmF0b3IsIHplcm8gb3RoZXJ3aXNlLiAgKi8KKysKKytzdGF0aWMgaW50Cisr c3RhcF9pc19vcGVyYXRvciAoY2hhciAqcykKKyt7CisrICBjaGFyIG9wOworKworKyAgaWYgKCFz IHx8ICEqcykKKysgICAgcmV0dXJuIDA7CisrCisrICBvcCA9ICpzOworKworKyAgaWYgKCpzID09 ICclJyAmJiBpc2FscGhhIChzWzFdKSkKKysgICAgLyogUmVnaXN0ZXIgbmFtZS4gICovCisrICAg IHJldHVybiAwOworKworKyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0gJy0nIHx8IG9wID09 ICcqJyB8fCBvcCA9PSAnLycKKysJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0gJzwnIHx8IG9wID09 ICchJyB8fCBvcCA9PSAnXicKKysJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0gJyYnIHx8IG9wID09 ICclJyB8fCBvcCA9PSAnPScpOworK30KKysKKysvKiBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhl IHZhbHVlIG9mIHRoZSByZWdpc3RlciB3aG9zZQorKyAgIG5hbWUgc3RhcnRzIGluIHRoZSBleHBy ZXNzaW9uIGJ1ZmZlci4gIEl0IGFsc28gYXBwbGllcyBhbnkgcmVnaXN0ZXIKKysgICBkaXNwbGFj ZW1lbnRzIChlLmcuLCBgLTQoJWVheCknKSwgYW5kIGluZGlyZWN0cyB0aGUgY29udGVudHMgb2Yg dGhlCisrICAgcmVnaXN0ZXIgKGUuZy4sIGAoJWVheCknKS4gIEl0IHJldHVybnMgUkVUIGlmIHRo ZSBvcGVyYXRpb24gaGFzIHN1Y2NlZWRlZCwKKysgICBvciBjYWxscyBgZXJyb3InIG90aGVyd2lz ZS4gICovCisrCisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisrc3RhcF9mZXRjaF9yZWdfdmFsdWUg KHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvLAorKwkJICAgICAgc3RydWN0 IHZhbHVlICpkaXNwbGFjZW1lbnQpCisreworKyAgY29uc3QgY2hhciAqc3RhcnQ7CisrICBjaGFy ICpzID0gZXZhbF9pbmZvLT5leHBfYnVmOworKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBl dmFsX2luZm8tPmdkYmFyY2g7CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBldmFsX2lu Zm8tPmZyYW1lOworKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5lc3MgPSBldmFsX2luZm8t PmJpdG5lc3M7CisrI2RlZmluZSBSRUdfTkFNRV9NQVhfU0laRSAyMAorKyAgY2hhciByZWduYW1l W1JFR19OQU1FX01BWF9TSVpFICsgMV07CisrICBpbnQgbGVuLCByZWdudW0sIGluZGlyZWN0X3Ag PSAwOworKyAgc3RydWN0IHZhbHVlICpyZXQ7CisrICAKKysgIC8qIFRoZSBmdW5jdGlvbiB3aGlj aCBjYWxsZWQgdXMgZGlkIG5vdCBjaGVjayBpZiB0aGUgZXhwcmVzc2lvbgorKyAgICAgYnVmZmVy IHdhcyBlbXB0eS4gICovCisrICBnZGJfYXNzZXJ0IChzICYmICpzKTsKKysKKysgIC8qIFZhbGlk IHJlZ2lzdGVyIG5hbWUgb24geDg2IHBsYXRmb3JtcyBhcmU6CisrCisrICAgICBbcGFyZW5dJXth LXowLTl9W3BhcmVuXQorKworKyAgICAgTGV0J3MgY2hlY2sgZm9yIHRoYXQgaGVyZS4gICovCisr ICBpZiAoKnMgPT0gJygnKQorKyAgICB7CisrICAgICAgKytzOworKyAgICAgIGlmICghKnMgfHwg KnMgIT0gJyUnCisrCSAgfHwgKCpzID09ICclJyAmJiAhaXNhbHBoYSAoc1sxXSkpKQorKwllcnJv ciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJICAg ICAgIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrICAgICAgKytzOworKyAgICAgIC8qIFRoZSBw cmVzZW5jZSBvZiBwYXJlbnRoZXNpcyBtZWFucyB0aGF0IHdlIHdhbnQgdG8gaW5kaXJlY3QKKysJ IHRoZSByZWdpc3Rlci4gICovCisrICAgICAgaW5kaXJlY3RfcCA9IDE7CisrICAgIH0KKysgIGVs c2UgaWYgKCpzID09ICclJykKKysgICAgeworKyAgICAgICsrczsKKysgICAgICBpZiAoISpzIHx8 ICFpc2FscGhhICgqcykpCisrCWVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgb24gZXhw cmVzc2lvbiBgJXMnLiIpLAorKwkgICAgICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysgICAg fQorKyAgZWxzZQorKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIG9uIGV4cHJl c3Npb24gYCVzJy4iKSwKKysJICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysKKysgIGlmIChk aXNwbGFjZW1lbnQgJiYgIWluZGlyZWN0X3ApCisrICAgIC8qIFdlIGNhbm5vdCBhcHBseSBkaXNw bGFjZW1lbnQgdG8gbm9uLWluZGlyZWN0IHJlZ2lzdGVyIGFjY2Vzcy4gICovCisrICAgIGVycm9y IChfKCJUcnlpbmcgdG8gYXBwbHkgZGlzcGxhY2VtZW50IHdpdGhvdXQgaW5kaXJlY3RpbmcgcmVn aXN0ZXIgIgorKwkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGV2YWxfaW5mby0+c2F2ZWRf ZXhwcik7CisrCisrICAvKiBPaywgbGV0J3MgY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSByZWdp c3RlciBuYW1lLiAgKi8KKysgIHN0YXJ0ID0gczsKKysgIHdoaWxlIChpc2FsbnVtICgqcykpCisr ICAgICsrczsKKysKKysgIGxlbiA9IHMgLSBzdGFydDsKKysKKysgIGlmICgqcyA9PSAnKScpCisr ICAgICsrczsKKysKKysgIGlmIChsZW4gPj0gUkVHX05BTUVfTUFYX1NJWkUpCisrICAgIGVycm9y IChfKCJUaGUgcmVnaXN0ZXIgbmFtZSBpcyBncmVhdGVyIHRoYW4gdGhlIHN1cHBvcnRlZCBzaXpl ICIKKysJICAgICAib24gZXhwcmVzc2lvbiBgJXMnLiIpLCBldmFsX2luZm8tPnNhdmVkX2V4cHIp OworKworKyAgc3RybmNweSAocmVnbmFtZSwgc3RhcnQsIGxlbik7CisrICByZWduYW1lW2xlbl0g PSAnXDAnOworKworKyAgLyogVHJhbnNsYXRpbmcgdGhlIHJlZ2lzdGVyIG5hbWUgaW50byB0aGUg Y29ycmVzcG9uZGluZyBudW1iZXIuICAqLworKyAgcmVnbnVtID0gdXNlcl9yZWdfbWFwX25hbWVf dG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pOworKworKyAgaWYgKHJlZ251bSA9PSAt MSkKKysgICAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIgbmFtZSBgJXMnIG9uIGV4cHJlc3Np b24gYCVzJy4iKSwKKysJICAgcmVnbmFtZSwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysKKysg IGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKyAgICBheF9yZWcgKGV2YWxfaW5mby0+YWV4 cHIsIHJlZ251bSk7CisrICBlbHNlCisrICAgIHJldCA9IHZhbHVlX29mX3JlZ2lzdGVyIChyZWdu dW0sIGZyYW1lKTsKKysKKysgIGlmIChpbmRpcmVjdF9wKQorKyAgICB7CisrICAgICAgc3RydWN0 IHR5cGUgKnQgPSBOVUxMOworKyAgICAgIGVudW0gYWdlbnRfb3AgYW9wOworKworKyAgICAgIC8q IElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB0aGUgcmVnaXN0ZXIgbXVzdCBiZSBpbmRp cmVjdGVkLAorKwkgd2Ugc2hvdWxkIGtub3cgd2hhdCdzIHRoZSBjb3JyZWN0IHR5cGUgdG8gY2Fz dCBpdCBiZWZvcmUgbWFraW5nCisrCSB0aGUgaW5kaXJlY3Rpb24uICBUaGlzIHR5cGUgY29ycmVz cG9uZHMgdG8gdGhlIGJpdG5lc3Mgc3BlY2lmaWVkCisrCSBiZWZvcmUgdGhlIGBAJyBzaWduIG9u IHRoZSBhcmd1bWVudCBzdHJpbmcsIG9yIGl0IGRlZmF1bHRzIHRvCisrCSBgdW5zaWduZWQgbG9u ZycgaWYgdGhlIGBAJyB3ZXJlIG5vdCBwcmVzZW50LiAgKi8KKysKKysgICAgICBzd2l0Y2ggKGJp dG5lc3MpCisrCXsKKysJY2FzZSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRDoKKysJICBpZiAo ZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICAgIGFvcCA9IGFvcF9yZWYzMjsKKysJICBlbHNl CisrCSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQorKwkgICAgICAoYnVpbHRpbl90eXBlIChn ZGJhcmNoKS0+YnVpbHRpbl91bnNpZ25lZF9sb25nKTsKKysJICBicmVhazsKKysKKysJY2FzZSBT VEFQX0FSR19CSVRORVNTXzMyQklUX1NJR05FRDoKKysJICBpZiAoZXZhbF9pbmZvLT5jb21waWxp bmdfcCkKKysJICAgIGFvcCA9IGFvcF9yZWYzMjsKKysJICBlbHNlCisrCSAgICB0ID0gbG9va3Vw X3BvaW50ZXJfdHlwZQorKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9p bnQzMik7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgU1RBUF9BUkdfQklUTkVTU18zMkJJVF9VTlNJ R05FRDoKKysJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICAgIGFvcCA9IGFvcF9y ZWYzMjsKKysJICBlbHNlCisrCSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQorKwkgICAgICAo YnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50MzIpOworKwkgIGJyZWFrOworKwor KwljYXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfU0lHTkVEOgorKwkgIGlmIChldmFsX2luZm8t PmNvbXBpbGluZ19wKQorKwkgICAgYW9wID0gYW9wX3JlZjY0OworKwkgIGVsc2UKKysJICAgIHQg PSBsb29rdXBfcG9pbnRlcl90eXBlCisrCSAgICAgIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2ludDY0KTsKKysJICBicmVhazsKKysKKysJY2FzZSBTVEFQX0FSR19CSVRORVNTXzY0 QklUX1VOU0lHTkVEOgorKwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgICAgYW9w ID0gYW9wX3JlZjY0OworKwkgIGVsc2UKKysJICAgIHQgPSBsb29rdXBfcG9pbnRlcl90eXBlCisr CSAgICAgIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQ2NCk7CisrCSAgYnJl YWs7CisrCisrCWRlZmF1bHQ6CisrCSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVf XywKKysJCQkgIF8oIlVuZGVmaW5lZCBiaXRuZXNzIGZvciBwcm9iZS4iKSk7CisrCSAgYnJlYWs7 CisrCX0KKysKKysgICAgICBpZiAoZGlzcGxhY2VtZW50KQorKwl7CisrCSAgaWYgKGV2YWxfaW5m by0+Y29tcGlsaW5nX3ApCisrCSAgICB7CisrCSAgICAgIGF4X2NvbnN0X2wgKGV2YWxfaW5mby0+ YWV4cHIsIHZhbHVlX2FzX2xvbmcgKGRpc3BsYWNlbWVudCkpOworKwkgICAgICAvKiBGSVhNRTog SXMgdGhpcyBjb3JyZWN0PyAgKi8KKysJICAgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHBy LCBhb3BfYWRkKTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICByZXQgPSB2YWx1ZV9wdHJhZGQg KHJldCwgdmFsdWVfYXNfbG9uZyAoZGlzcGxhY2VtZW50KSk7CisrCX0KKysKKysgICAgICBpZiAo ZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHByLCBh b3ApOworKyAgICAgIGVsc2UKKysJeworKwkgIHJldCA9IHZhbHVlX2Nhc3QgKHQsIHJldCk7Cisr CSAgcmV0ID0gdmFsdWVfaW5kIChyZXQpOworKwl9CisrICAgIH0KKysKKysgIC8qIFVwZGF0aW5n IHRoZSBleHByZXNzaW9uIGJ1ZmZlciBwb2ludGVyLCBiZWNhdXNlIHdlIGhhdmUgbWFkZQorKyAg ICAgc29tZSBtb2RpZmljYXRpb25zIHRvIGl0IGJlZm9yZS4gICovCisrICBldmFsX2luZm8tPmV4 cF9idWYgPSBzOworKworKyAgcmV0dXJuIGV2YWxfaW5mby0+Y29tcGlsaW5nX3AgPyAoc3RydWN0 IHZhbHVlICopIDEgOiByZXQ7CisrfQorKworKy8qIFRoaXMgZnVuY3Rpb24gdHJpZXMgdG8gZXZh bHVhdGUgYSBzaW5nbGUgb3BlcmFuZCBvZiB0aGUgZXhwcmVzc2lvbi4KKysKKysgICBTaW5nbGUg b3BlcmFuZHMgY2FuIGJlOgorKworKyAgIC0gdW5hcnkgb3BlcmF0b3JzIGAtJyBhbmQgYH4nOwor KyAgIC0gaW50ZWdlciBjb25zdGFudHMgKGJlZ2lubmluZyB3aXRoIGAkJyk7CisrICAgLSByZWdp c3RlciBhY2Nlc3MsIHdpdGgvb3V0IGRpc3BsYWNlbWVudCBhbmQgaW5kaXJlY3Rpb24uICAqLwor KworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3N0YXBfZXZhbHVhdGVfc2luZ2xlX29wZXJhbmQg KHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvKQorK3sKKysgIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoID0gZXZhbF9pbmZvLT5nZGJhcmNoOworKyAgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lID0gZXZhbF9pbmZvLT5mcmFtZTsKKysgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBi aXRuZXNzID0gZXZhbF9pbmZvLT5iaXRuZXNzOworKyAgc3RydWN0IHZhbHVlICpyZXM7CisrCisr ICBzd2l0Y2ggKCpldmFsX2luZm8tPmV4cF9idWYpCisrICAgIHsKKysgICAgY2FzZSAnLSc6IGNh c2UgJ34nOgorKwl7CisrCSAgY2hhciBjID0gKmV2YWxfaW5mby0+ZXhwX2J1ZjsKKysKKysJICAv KiBUaGlzIGlzIGEgYmluYXJ5IG9wZXJhdG9yIChlaXRoZXIgYC0nIG9yIGB+JykuCisrCisrCSAg ICAgSWYgaXQgaXMgZm9sbG93ZWQgYnkgYSBwYXJlbnRoZXNpcywgYW5kIHRoaXMgcGFyZW50aGVz aXMKKysJICAgICBpcyBOT1QgZm9sbG93ZWQgYnkgYSBgJScsIHRoZW4gd2UgYXJlIGRlYWxpbmcg d2l0aCBhbiBleHByZXNzaW9uCisrCSAgICAgbGlrZSBgLSgyICsgMyknIG9yIGB+KDIgKyAzKScu ICBXZSBqdXN0IGhhdmUgdG8gdHJlYXQgc2VwYXJhdGVseQorKwkgICAgIGFuZCByZXR1cm4gdGhl IHJlc3VsdCBhZnRlciBhcHBseWluZyB0aGUgb3BlcmF0aW9uIChgLScgb3IgYH4nKS4KKysKKysJ ICAgICBJZiBpdCBpcyBmb2xsb3dlZCBieSBhIGRpZ2l0LCB0aGVuIHdlIGhhdmUgb25seSBvbmUg Y2hvaWNlOiAgaXQKKysJICAgICBpcyBhIGRpc3BsYWNlbWVudCBhcmd1bWVudCBmb3IgYSByZWdp c3RlciBhY2Nlc3MsIGxpa2UKKysJICAgICBgLTQoJWVheCknLiAgSXQgYWxzbyBtZWFucyB0aGF0 IHRoZSBvcGVyYXRvciBjYW4gKm9ubHkqIGJlIGAtJywKKysJICAgICBhbmQgdGhlIGNoYXJhY3Rl cnMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG51bWJlciAqbXVzdCogYmUgYCglJy4KKysKKysJICAg ICBJZiBpdCBpcyBmb2xsb3dlZCBieSBhIGAkJywgdGhlbiBpdCBpcyBhbiBpbnRlZ2VyIGNvbnN0 YW50LCBhbmQKKysJICAgICB3ZSBzaG91bGQgYXBwbHkgdGhlIGNvcnJlY3Qgb3BlcmF0aW9uIHRv IGl0LiAgKi8KKysKKysJICArK2V2YWxfaW5mby0+ZXhwX2J1ZjsKKysJICBldmFsX2luZm8tPmV4 cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysJICBpZiAoKmV2YWxf aW5mby0+ZXhwX2J1ZgorKwkgICAgICAmJiAqZXZhbF9pbmZvLT5leHBfYnVmID09ICcoJworKwkg ICAgICAmJiBldmFsX2luZm8tPmV4cF9idWZbMV0gIT0gJyUnKQorKwkgICAgeworKwkgICAgICBz dHJ1Y3QgdmFsdWUgKnRtcF9yZXM7CisrCisrCSAgICAgIC8qIFdlJ3JlIG5vdCBkZWFsaW5nIHdp dGggYSByZWdpc3RlciBuYW1lLCBidXQgd2l0aCBhbgorKwkJIGV4cHJlc3Npb24gbGlrZSBgLSgy ICsgMyknIG9yIGB+KDIgKyAzKScuICBXZSBmaXJzdCBoYXZlCisrCQkgdG8gZXZhbHVhdGUgdGhl IHJpZ2h0IHNpZGUgb2YgdGhlIGV4cHJlc3Npb24gKGkuZS4sIHRoZQorKwkJIHBhcmVudGhlc2lz KSwgYW5kIHRoZW4gYXBwbHkgdGhlIHNwZWNpZmllZCBvcGVyYXRpb24KKysJCSAoZWl0aGVyIGAt JyBvciBgficpIHRvIGl0LiAgKi8KKysJICAgICAgdG1wX3JlcyA9IHN0YXBfZXZhbHVhdGVfY29u ZGl0aW9uYWxseSAoZXZhbF9pbmZvKTsKKysKKysJICAgICAgaWYgKGMgPT0gJy0nKQorKwkJewor KwkJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJCSAgICB7CisrCQkgICAgICAvKiBX ZSBoYXZlIHRvIGFkZCBgLTEnIHRvIHRoZSBzdGFjaywgYW5kIG11bHRpcGx5CisrCQkJIHRoZSB0 d28gdmFsdWVzLiAgKi8KKysJCSAgICAgIGF4X2NvbnN0X2wgKGV2YWxfaW5mby0+YWV4cHIsIC0x KTsKKysJCSAgICAgIGF4X3NpbXBsZSAoZXZhbF9pbmZvLT5hZXhwciwgYW9wX211bCk7CisrCQkg ICAgfQorKwkJICBlbHNlCisrCQkgICAgcmVzID0gdmFsdWVfbmVnICh0bXBfcmVzKTsKKysJCX0K KysJICAgICAgZWxzZQorKwkJeworKwkJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJ CSAgICBheF9zaW1wbGUgKGV2YWxfaW5mby0+YWV4cHIsIGFvcF9iaXRfbm90KTsKKysJCSAgZWxz ZQorKwkJICAgIHJlcyA9IHZhbHVlX2NvbXBsZW1lbnQgKHRtcF9yZXMpOworKwkJfQorKwkgICAg fQorKwkgIGVsc2UgaWYgKGlzZGlnaXQgKCpldmFsX2luZm8tPmV4cF9idWYpKQorKwkgICAgewor KwkgICAgICBpbnQgbnVtYmVyOworKworKwkgICAgICAvKiBUaGlzIGlzIGEgbnVtYmVyLCBzbyBp dCBNVVNUIGJlIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50LgorKwkJIFRoZSBvbmx5IG9wZXJhdG9y IGFsbG93ZWQgaGVyZSBpcyBgLScsIGl0IE1VU1QgYmUKKysJCSBmb2xsb3dlZCBieSBhIG51bWJl ciwgYW5kIHRoZSBudW1iZXIgTVVTVCBiZSBmb2xsb3dlZCBieQorKwkJIGAoJScuICAqLworKwkg ICAgICBpZiAoYyAhPSAnLScpCisrCQllcnJvciAoXygiSW52YWxpZCBvcGVyYXRvciBgJWMnIGZv ciByZWdpc3RlciBkaXNwbGFjZW1lbnQgIgorKwkJCSAib24gZXhwcmVzc2lvbiBgJXMnLiIpLCBj LCBldmFsX2luZm8tPnNhdmVkX2V4cHIpOworKworKwkgICAgICBudW1iZXIgPSBzdHJ0b2wgKGV2 YWxfaW5mby0+ZXhwX2J1ZiwKKysJCQkgICAgICAgJmV2YWxfaW5mby0+ZXhwX2J1ZiwgMCkgKiAt MTsKKysKKysJICAgICAgaWYgKCEqZXZhbF9pbmZvLT5leHBfYnVmCisrCQkgIHx8ICpldmFsX2lu Zm8tPmV4cF9idWYgIT0gJygnCisrCQkgIHx8ICgqZXZhbF9pbmZvLT5leHBfYnVmID09ICcoJwor KwkJICAgICAgJiYgZXZhbF9pbmZvLT5leHBfYnVmWzFdICE9ICclJykpCisrCQllcnJvciAoXygi SW52YWxpZCBtZXRob2Qgb2YgaW5kaXJlY3RpbmcgYSByZWdpc3RlciBvbiAiCisrCQkJICJleHBy ZXNzaW9uIGAlcycuIiksIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrCisrCSAgICAgIHJlcwor KwkJPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f aW50LAorKwkJCQkgICAgICBudW1iZXIpOworKworKwkgICAgICByZXMgPSBzdGFwX2ZldGNoX3Jl Z192YWx1ZSAoZXZhbF9pbmZvLCByZXMpOworKwkgICAgfQorKwkgIGVsc2UgaWYgKCpldmFsX2lu Zm8tPmV4cF9idWYgPT0gJyQnKQorKwkgICAgeworKwkgICAgICBpbnQgbnVtYmVyOworKworKwkg ICAgICAvKiBMYXN0IGNhc2UuICBXZSBhcmUgZGVhbGluZyB3aXRoIGFuIGludGVnZXIgY29uc3Rh bnQsIHNvCisrCQkgd2UgbXVzdCByZWFkIGl0IGFuZCB0aGVuIGFwcGx5IHRoZSBuZWNlc3Nhcnkg b3BlcmF0aW9uLAorKwkJIGVpdGhlciBgLScgb3IgYH4nLiAgKi8KKysJICAgICAgKytldmFsX2lu Zm8tPmV4cF9idWY7CisrCSAgICAgIG51bWJlciA9IHN0cnRvbCAoZXZhbF9pbmZvLT5leHBfYnVm LAorKwkJCSAgICAgICAmZXZhbF9pbmZvLT5leHBfYnVmLCAwKTsKKysKKysJICAgICAgaWYgKCFl dmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkJcmVzCisrCQkgID0gdmFsdWVfZnJvbV9sb25nZXN0 IChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJCW51bWJlcik7Cisr CisrCSAgICAgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkJYXhfY29uc3RfbCAoZXZh bF9pbmZvLT5hZXhwciwgbnVtYmVyKTsKKysKKysJICAgICAgZXZhbF9pbmZvLT5leHBfYnVmID0g c2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1Zik7CisrCisrCSAgICAgIGlmIChjID09ICct JykKKysJCXsKKysJCSAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCQkgICAgYXhfc2lt cGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfbG9nX25vdCk7CisrCQkgIGVsc2UKKysJCSAgICBy ZXMgPSB2YWx1ZV9uZWcgKHJlcyk7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCXsKKysJCSAgaWYg KGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCQkgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFl eHByLCBhb3BfYml0X25vdCk7CisrCQkgIGVsc2UKKysJCSAgICByZXMgPSB2YWx1ZV9jb21wbGVt ZW50IChyZXMpOworKwkJfQorKwkgICAgfQorKwkgIGVsc2UKKysJICAgIGVycm9yIChfKCJJbnZh bGlkIG9wZXJhbmQgdG8gdW5hcnkgb3BlcmF0b3IgYCVjJyBvbiAiCisrCQkgICAgICJleHByZXNz aW9uIGAlcycuIiksIGMsIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrCX0KKysgICAgICBicmVh azsKKysKKysgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2Ug JzQnOgorKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAn OSc6CisrICAgICAgeworKwlpbnQgbnVtYmVyID0gc3RydG9sIChldmFsX2luZm8tPmV4cF9idWYs ICZldmFsX2luZm8tPmV4cF9idWYsIDApOworKworKwkvKiBUaGlzIGlzIGEgcmVnaXN0ZXIgZGlz cGxhY2VtZW50IHdpdGggYSBwb3NpdGl2ZSB2YWx1ZS4gIFdlIHJlYWQKKysJICAgdGhlIG51bWJl ciwgYW5kIHRoZW4gY2hlY2sgZm9yIHRoZSBtYW5kYXRvcnkgYCglJyBwYXJ0LiAgKi8KKysJaWYg KCEqZXZhbF9pbmZvLT5leHBfYnVmCisrCSAgICB8fCAhKCpldmFsX2luZm8tPmV4cF9idWYgPT0g JygnCisrCQkgJiYgZXZhbF9pbmZvLT5leHBfYnVmWzFdID09ICclJykpCisrCSAgZXJyb3IgKF8o IkludmFsaWQgcmVnaXN0ZXIgYWNjZXNzIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJCSBldmFs X2luZm8tPnNhdmVkX2V4cHIpOworKworKwlyZXMgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0 aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50LAorKwkJCQkgIG51bWJlcik7CisrCisrCXJl cyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChldmFsX2luZm8sIHJlcyk7CisrICAgICAgfQorKyAg ICBicmVhazsKKysKKysgICAgY2FzZSAnJCc6CisrICAgICAgeworKwlpbnQgbnVtYmVyOworKwor KwkvKiBUaGlzIGlzIGFuIGludGVnZXIgY29uc3RhbnQuICBXZSBqdXN0IGhhdmUgdG8gcmVhZCB0 aGUgbnVtYmVyCisrCSAgIGFuZCByZXR1cm4gaXQuICAqLworKwkrK2V2YWxfaW5mby0+ZXhwX2J1 ZjsKKysJZXZhbF9pbmZvLT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1 Zik7CisrCisrCW51bWJlciA9IHN0cnRvbCAoZXZhbF9pbmZvLT5leHBfYnVmLCAmZXZhbF9pbmZv LT5leHBfYnVmLCAwKTsKKysKKysJaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCSAgYXhf Y29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsKKysJZWxzZQorKwkgIHJlcyA9IHZh bHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisr CQkJCSAgICBudW1iZXIpOworKworKwlldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAo ZXZhbF9pbmZvLT5leHBfYnVmKTsKKysgICAgICB9CisrICAgIGJyZWFrOworKworKyAgICBjYXNl ICcoJzogY2FzZSAnJSc6CisrICAgICAgeworKwkvKiBSZWdpc3RlciBhY2Nlc3MsIHdpdGggb3Ig d2l0aG91dCBpbmRpcmVjdGlvbi4gICovCisrCXJlcyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChl dmFsX2luZm8sIC8qZGlzcGxhY2VtZW50PSovTlVMTCk7CisrICAgICAgfQorKyAgICBicmVhazsK KysKKysgICAgZGVmYXVsdDoKKysgICAgICB7CisrCWVycm9yIChfKCJPcGVyYXRvciBgJWMnIG5v dCByZWNvZ25pemVkIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJICAgICAgICpldmFsX2luZm8t PmV4cF9idWYsIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrICAgICAgfQorKyAgICB9CisrCisr ICByZXR1cm4gZXZhbF9pbmZvLT5jb21waWxpbmdfcCA/IChzdHJ1Y3QgdmFsdWUgKikgMSA6IHJl czsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcg dGhlIG5lY2Vzc2FyeSB0eXBlIG9mIGV2YWx1YXRpb24KKysgICBkZXBlbmRpbmcgb24gd2hhdCBp cyB0aGUgbmV4dCAidGhpbmciIGluIHRoZSBidWZmZXIuICBWYWxpZCB2YWx1ZXMgYXJlOgorKwor KyAgIC0gVW5hcnkgb3BlcmF0b3JzOworKyAgIC0gSW50ZWdlciBjb25zdGFudHM7CisrICAgLSBS ZWdpc3RlciBkaXNwbGFjZW1lbnQsIGluZGlyZWN0aW9uLCBhbmQgZGlyZWN0IGFjY2VzczsKKysg ICAtIFBhcmVudGhlc2l6ZWQgb3BlcmFuZC4gICovCisrCisrc3RhdGljIHN0cnVjdCB2YWx1ZSAq Cisrc3RhcF9ldmFsdWF0ZV9jb25kaXRpb25hbGx5IChzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2lu Zm8gKmV2YWxfaW5mbykKKyt7CisrICBjaGFyICpzID0gZXZhbF9pbmZvLT5leHBfYnVmOworKyAg c3RydWN0IHZhbHVlICpyZXQgPSBOVUxMOworKworKyAgaWYgKCpzID09ICctJyB8fCAqcyA9PSAn ficgLyogVW5hcnkgb3BlcmF0b3JzLiAgKi8KKysgICAgICB8fCAqcyA9PSAnJCcgLyogTnVtYmVy IChpbnRlZ2VyIGNvbnN0YW50KS4gICovCisrICAgICAgfHwgKGlzZGlnaXQgKCpzKSAmJiBzWzFd ID09ICcoJyAmJiBzWzJdID09ICclJykgLyogRGlzcGxhY2VtZW50LiAgKi8KKysgICAgICB8fCAo KnMgPT0gJygnICYmIHNbMV0gPT0gJyUnKSAvKiBSZWdpc3RlciBpbmRpcmVjdGlvbi4gICovCisr ICAgICAgfHwgKCpzID09ICclJyAmJiBpc2FscGhhIChzWzFdKSkpIC8qIFJlZ2lzdGVyIHZhbHVl LiAgKi8KKysgICAgLyogVGhpcyBpcyBhIHNpbmdsZSBvcGVyYW5kLCBzbyBqdXN0IGV2YWx1YXRl IGl0IGFuZCByZXR1cm4uICAqLworKyAgICByZXQgPSBzdGFwX2V2YWx1YXRlX3NpbmdsZV9vcGVy YW5kIChldmFsX2luZm8pOworKyAgZWxzZSBpZiAoKnMgPT0gJygnKQorKyAgICB7CisrICAgICAg LyogV2UgYXJlIGRlYWxpbmcgd2l0aCBhIHBhcmVudGhlc2l6ZWQgb3BlcmFuZC4gIEl0IG1lYW5z IHdlCisrCSBoYXZlIHRvIGV2YWx1YXRlIGl0IGFzIGl0IHdhcyBhIHNlcGFyYXRlIGV4cHJlc3Np b24sIHdpdGhvdXQKKysJIGxlZnQtc2lkZSBvciBwcmVjZWRlbmNlLiAgKi8KKysgICAgICArK2V2 YWxfaW5mby0+ZXhwX2J1ZjsKKysgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNl cyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysKKysgICAgICByZXQgPSBzdGFwX2V2YWx1YXRlX3By b2JlX2FyZ3VtZW50XzIgKGV2YWxfaW5mbywKKysJCQkJCSAgICAvKmxocz0qL05VTEwsIC8qcHJl Yz0qLzApOworKworKyAgICAgIGlmICgqZXZhbF9pbmZvLT5leHBfYnVmICE9ICcpJykKKysJZXJy b3IgKF8oIk1pc3NpZ24gY2xvc2UtcGFyZW4gb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkgICAg ICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysgICAgICArK2V2YWxfaW5mby0+ZXhwX2J1ZjsK KysgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBf YnVmKTsKKysgICAgfQorKyAgZWxzZQorKyAgICBlcnJvciAoXygiQ2Fubm90IGV2YWx1YXRlIGV4 cHJlc3Npb24gYCVzJy4iKSwKKysJICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysKKysgIHJl dHVybiByZXQ7CisrfQorKworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3N0YXBfZXZhbHVhdGVf cHJvYmVfYXJndW1lbnRfMiAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8s CisrCQkJCXN0cnVjdCB2YWx1ZSAqbGhzLCBpbnQgcHJlYykKKyt7CisrICBzdHJ1Y3QgdmFsdWUg KnJocyA9IE5VTEw7CisrICBpbnQgY29tcGlsaW5nX3AgPSBldmFsX2luZm8tPmNvbXBpbGluZ19w OworKworKyAgLyogVGhpcyBpcyBhbiBvcGVyYXRvci1wcmVjZWRlbmNlIHBhcnNlciBhbmQgZXZh bHVhdG9yLgorKworKyAgICAgV2Ugd29yayB3aXRoIGxlZnQtIGFuZCByaWdodC1zaWRlcyBvZiBl eHByZXNzaW9ucywgYW5kCisrICAgICBldmFsdWF0ZSB0aGVtIGRlcGVuZGluZyBvbiB0aGUgcHJl Y2VkZW5jZSBvZiB0aGUgb3BlcmF0b3JzCisrICAgICB3ZSBmaW5kLiAgKi8KKysKKysgIGV2YWxf aW5mby0+ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2luZm8tPmV4cF9idWYpOworKworKyAg aWYgKCFsaHMpCisrICAgIC8qIFdlIHdlcmUgY2FsbGVkIHdpdGhvdXQgYSBsZWZ0LXNpZGUsIGVp dGhlciBiZWNhdXNlIHRoaXMgaXMgdGhlCisrICAgICAgIGZpcnN0IGNhbGwsIG9yIGJlY2F1c2Ug d2Ugd2VyZSBjYWxsZWQgdG8gZXZhbHVhdGUgYSBwYXJlbnRoZXNpemVkCisrICAgICAgIGV4cHJl c3Npb24uICBJdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXI7IHdlIGhhdmUgdG8gZXZhbHVhdGUgdGhl CisrICAgICAgIGxlZnQtc2lkZSBpbiBvcmRlciB0byBjb250aW51ZSB0aGUgcHJvY2Vzcy4gICov CisrICAgIGxocyA9IHN0YXBfZXZhbHVhdGVfY29uZGl0aW9uYWxseSAoZXZhbF9pbmZvKTsKKysK KysgIC8qIFN0YXJ0IHRvIGV2YWx1YXRlIHRoZSByaWdodC1zaWRlLCBhbmQgdG8gImpvaW4iIGxl ZnQgYW5kIHJpZ2h0IHNpZGVzCisrICAgICBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGlvbiBzcGVj aWZpZWQuCisrCisrICAgICBUaGlzIGxvb3Agc2hhbGwgY29udGludWUgdW50aWwgd2UgcnVuIG91 dCBvZiBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dCwKKysgICAgIG9yIHVudGlsIHdlIGZpbmQgYSBj bG9zZS1wYXJlbnRoZXNpcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSd2ZSByZWFjaGVkCisrICAgICB0 aGUgZW5kIG9mIGEgc3ViLWV4cHJlc3Npb24uICAqLworKyAgd2hpbGUgKGV2YWxfaW5mby0+ZXhw X2J1ZgorKwkgJiYgKmV2YWxfaW5mby0+ZXhwX2J1ZgorKwkgJiYgKmV2YWxfaW5mby0+ZXhwX2J1 ZiAhPSAnKScpCisrICAgIHsKKysgICAgICBjaGFyICp0bXBfZXhwX2J1ZjsKKysgICAgICBlbnVt IGV4cF9vcGNvZGUgb3Bjb2RlOworKyAgICAgIGludCBjdXJfcHJlYzsKKysKKysgICAgICBpZiAo IXN0YXBfaXNfb3BlcmF0b3IgKGV2YWxfaW5mby0+ZXhwX2J1ZikpCisrCWVycm9yIChfKCJJbnZh bGlkIG9wZXJhdG9yIGAlYycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkgICAgICAgKmV2YWxf aW5mby0+ZXhwX2J1ZiwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysKKysgICAgICAvKiBXZSBo YXZlIHRvIHNhdmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gYnVmZmVyIGJl Y2F1c2UKKysJIHRoZSBgc3RhcF9nZXRfb3Bjb2RlJyBtb2RpZmllcyBpdCBpbiBvcmRlciB0byBn ZXQgdGhlIGN1cnJlbnQKKysJIG9wZXJhdG9yLiAgSWYgdGhpcyBvcGVyYXRvcidzIHByZWNlZGVu Y2UgaXMgbG93ZXIgdGhhbiBQUkVDLCB3ZQorKwkgc2hvdWxkIHJldHVybiBhbmQgbm90IGFkdmFu Y2UgdGhlIGV4cHJlc3Npb24gYnVmZmVyIHBvaW50ZXIuICAqLworKyAgICAgIHRtcF9leHBfYnVm ID0gZXZhbF9pbmZvLT5leHBfYnVmOworKyAgICAgIHN0YXBfZ2V0X29wY29kZSAoJnRtcF9leHBf YnVmLCAmb3Bjb2RlKTsKKysKKysgICAgICBjdXJfcHJlYyA9IHN0YXBfZ2V0X29wZXJhdG9yX3By ZWMgKG9wY29kZSk7CisrICAgICAgaWYgKGN1cl9wcmVjIDwgcHJlYykKKysJLyogSWYgdGhlIHBy ZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9yIHRoYXQgd2UgYXJlIHNlZWluZyBub3cgaXMKKysJICAg bG93ZXIgdGhhbiB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgZmlyc3Qgb3BlcmF0b3Igc2VlbiBiZWZv cmUKKysJICAgdGhpcyBldmFsdWF0aW9uIHByb2Nlc3MgYmVnYW4sIGl0IG1lYW5zIHdlIHNob3Vs ZCBzdG9wIGV2YWx1YXRpbmcKKysJICAgYW5kIHJldHVybi4gICovCisrCWJyZWFrOworKworKyAg ICAgIGV2YWxfaW5mby0+ZXhwX2J1ZiA9IHRtcF9leHBfYnVmOworKyAgICAgIGV2YWxfaW5mby0+ ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2luZm8tPmV4cF9idWYpOworKworKyAgICAgIC8q IEV2YWx1YXRlIHRoZSByaWdodC1zaWRlIG9mIHRoZSBleHByZXNzaW9uLiAgKi8KKysgICAgICBy aHMgPSBzdGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKGV2YWxfaW5mbyk7CisrCisrICAgICAg LyogV2hpbGUgd2Ugc3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBldmFsdWF0ZSBhbm90aGVy CisrCSByaWdodC1zaWRlLCBidXQgdXNpbmcgdGhlIGN1cnJlbnQgcmlnaHQtc2lkZSBhcyBhIGxl ZnQtc2lkZS4gICovCisrICAgICAgd2hpbGUgKCpldmFsX2luZm8tPmV4cF9idWYKKysJICAgICAm JiBzdGFwX2lzX29wZXJhdG9yIChldmFsX2luZm8tPmV4cF9idWYpKQorKwl7CisrCSAgZW51bSBl eHBfb3Bjb2RlIGxvb2thaGVhZF9vcGNvZGU7CisrCSAgaW50IGxvb2thaGVhZF9wcmVjOworKwor KwkgIC8qIFNhdmluZyB0aGUgY3VycmVudCBleHByZXNzaW9uIGJ1ZmZlciBwb3NpdGlvbi4gIFRo ZSBleHBsYW5hdGlvbgorKwkgICAgIGlzIHRoZSBzYW1lIGFzIGFib3ZlLiAgKi8KKysJICB0bXBf ZXhwX2J1ZiA9IGV2YWxfaW5mby0+ZXhwX2J1ZjsKKysJICBzdGFwX2dldF9vcGNvZGUgKCZ0bXBf ZXhwX2J1ZiwgJmxvb2thaGVhZF9vcGNvZGUpOworKwkgIGxvb2thaGVhZF9wcmVjID0gc3RhcF9n ZXRfb3BlcmF0b3JfcHJlYyAobG9va2FoZWFkX29wY29kZSk7CisrCisrCSAgaWYgKGxvb2thaGVh ZF9wcmVjIDw9IHByZWMpCisrCSAgICAvKiBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGFuIG9wZXJh dG9yIHdob3NlIHByZWNlZGVuY2UgaXMgbG93ZXIKKysJICAgICAgIHRoYW4gdGhlIGZpcnN0IG9u ZSwganVzdCBhYmFuZG9uIHRoZSBhdHRlbXB0LiAgKi8KKysJICAgIGJyZWFrOworKworKwkgIHJo cyA9IHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoZXZhbF9pbmZvLAorKwkJCQkJCXJo cywgbG9va2FoZWFkX3ByZWMpOworKwl9CisrCisrICAgICAgLyogTm93LCAiam9pbiIgYm90aCBs ZWZ0IGFuZCByaWdodCBzaWRlcyBpbnRvIG9uZSBsZWZ0LXNpZGUsIHVzaW5nCisrCSB0aGUgc3Bl Y2lmaWVkIG9wZXJhdG9yLiAgKi8KKysgICAgICBpZiAoY29tcGlsaW5nX3ApCisrCXN0YXBfb3Bj b2RlX3RvX2F4IChldmFsX2luZm8sIG9wY29kZSk7CisrICAgICAgZWxzZQorKwlsaHMgPSB2YWx1 ZV9iaW5vcCAobGhzLCByaHMsIG9wY29kZSk7CisrICAgIH0KKysKKysgIHJldHVybiBsaHM7Cisr fQorKworKy8qIFRoaXMgZnVuY3Rpb24gZmlsbHMgdGhlIG5lY2Vzc2FyeSBhcmd1bWVudHMgZm9y IHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uCisrICAgdG8gd29yay4gICovCisrCisrI2RlZmluZSBU RVNUIDAKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3Vt ZW50XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQljb25zdCBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmUsCisrCQkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJaW50IG4p CisreworKyAgc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvIGV2YWxfaW5mbzsKKysgIGNoYXIg KnMgPSAoY2hhciAqKSBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ1tuXS5hcmdfc3RyOworKyAgc3Ry dWN0IHZhbHVlICpyZXMsICp2c1s0XTsKKysjaWYgVEVTVCAvKlRFU1RJTkcqLworKyAgY29uc3Qg Y2hhciAqYXJnc1s0XSA9IHsgIiQyIiwKKysgICAgICAiJDIgKyAkMyAqICQ0ICsgJDUiLAorKyAg ICAgICItKCQyICsgJDMpIiwKKysgICAgICAiKH4oJDIpICogJDMpIC8gKCQxICsgJDEpIiB9Owor KyAgaW50IGk7CisrI2VuZGlmCisrCisrICAvKiBGaWxsaW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlv biBmb3IgZXZhbHVhdGlvbiBmdW5jdGlvbi4gICovCisrICBldmFsX2luZm8uc2F2ZWRfZXhwciA9 IHM7CisrICBldmFsX2luZm8uZXhwX2J1ZiA9IHM7CisrICBldmFsX2luZm8uZ2RiYXJjaCA9IGdl dF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKyAgZXZhbF9pbmZvLmZyYW1lID0gZnJhbWU7Cisr ICBldmFsX2luZm8uYml0bmVzcyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmJpdG5lc3M7 CisrICAvKiBXZSBhcmUgbm90IGNvbXBpbGluZyB0byBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8K KysgIGV2YWxfaW5mby5jb21waWxpbmdfcCA9IDA7CisrICBldmFsX2luZm8uYWV4cHIgPSBOVUxM OworKworKyAgcmVzID0gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yICgmZXZhbF9pbmZv LAorKwkJCQkJLypsaHM9Ki9OVUxMLCAvKnByZWM9Ki8wKTsKKysjaWYgVEVTVCAvKiBURVNUSU5H ICovCisrICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorKyAgICB7CisrICAgICAgZXZhbF9pbmZv LnNhdmVkX2V4cHIgPSAoY29uc3QgY2hhciAqKSBhcmdzW2ldOworKyAgICAgIGV2YWxfaW5mby5l eHBfYnVmID0gKGNoYXIgKikgYXJnc1tpXTsKKysgICAgICB2c1tpXSA9IHN0YXBfZXZhbHVhdGVf cHJvYmVfYXJndW1lbnRfMiAoJmV2YWxfaW5mbywKKysJCQkJCSAgICAgIC8qbGhzPSovTlVMTCwg LypwcmVjPSovMCk7CisrCisrICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rkb3V0LCAi JWxkXG4iLCB2YWx1ZV9hc19sb25nICh2c1tpXSkpOworKyAgICB9CisrI2VuZGlmCisrCisrICBp ZiAoIXJlcykKKysgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBldmFsdWF0ZSBleHByZXNzaW9uIGAl cycuIiksCisrCSAgIGV2YWxfaW5mby5zYXZlZF9leHByKTsKKysKKysgIHJldHVybiByZXM7Cisr fQorKworK3N0cnVjdCB2YWx1ZSAqCisrc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJICAgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlLAorKwkJCSAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkgICAgICBp bnQgbikKKyt7CisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKKysgICAgc3RhcF9wYXJzZV9w cm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBwcm9iZSk7CisrCisrICBpZiAo IXByb2JlLT5wYXJzZWRfYXJncy0+YXJnCisrICAgICAgfHwgbiA+PSBwcm9iZS0+cGFyc2VkX2Fy Z3MtPm5fYXJncykKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICByZXR1cm4gc3RhcF9ldmFsdWF0 ZV9wcm9iZV9hcmd1bWVudF8xIChvYmpmaWxlLCBwcm9iZSwgZnJhbWUsIG4pOworK30KKysKKytz dGF0aWMgdm9pZAorK3N0YXBfY29tcGlsZV90b19heF8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKysJCSAgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCSAgICAgIHN0 cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJICAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUs CisrCQkgICAgICBpbnQgbikKKyt7CisrICBzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gZXZh bF9pbmZvOworKyAgY2hhciAqcyA9IChjaGFyICopIHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25d LmFyZ19zdHI7CisrCisrICAvKiBGaWxsaW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgZXZh bHVhdGlvbiBmdW5jdGlvbi4gICovCisrICBldmFsX2luZm8uc2F2ZWRfZXhwciA9IHM7CisrICBl dmFsX2luZm8uZXhwX2J1ZiA9IHM7CisrICBldmFsX2luZm8uZ2RiYXJjaCA9IGV4cHItPmdkYmFy Y2g7CisrICBldmFsX2luZm8uZnJhbWUgPSBOVUxMOworKyAgZXZhbF9pbmZvLmJpdG5lc3MgPSBw cm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ1tuXS5iaXRuZXNzOworKyAgLyogV2UgYXJlIGNvbXBpbGlu ZyB0byBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8KKysgIGV2YWxfaW5mby5jb21waWxpbmdfcCA9 IDE7CisrICBldmFsX2luZm8uYWV4cHIgPSBleHByOworKworKyAgc3RhcF9ldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudF8yICgmZXZhbF9pbmZvLAorKwkJCQkgIC8qbGhzPSovTlVMTCwgLypwcmVjPSov MCk7CisrfQorKworK3ZvaWQKKytzdGFwX2NvbXBpbGVfdG9fYXggKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorKwkJICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCSAgICBz dHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKysJCSAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwK KysJCSAgICBpbnQgbikKKyt7CisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKKysgICAgc3Rh cF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBwcm9iZSk7Cisr CisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncy0+YXJnCisrICAgICAgfHwgbiA+PSBwcm9iZS0+ cGFyc2VkX2FyZ3MtPm5fYXJncykKKysgICAgcmV0dXJuOworKworKyAgc3RhcF9jb21waWxlX3Rv X2F4XzEgKG9iamZpbGUsIHByb2JlLCBleHByLCB2YWx1ZSwgbik7CisrfQorKworKy8qIFNlZSBk b2N1bWVudGF0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCisrc3RydWN0IHZhbHVlICoKKytz dGFwX3NhZmVfZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IG4p CisreworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGU7CisrICBpbnQgbl9wcm9iZXM7CisrCisrICBwcm9iZSA9IGZpbmRfcHJvYmVf YnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7CisrICBpZiAoIXByb2JlKQor KyAgICByZXR1cm4gTlVMTDsKKysgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNmICYmIG9iamZpbGUt PnNmLT5zeW1fcHJvYmVfZm5zKTsKKysKKysgIG5fcHJvYmVzCisrICAgID0gb2JqZmlsZS0+c2Yt PnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKG9iamZpbGUsCisr CQkJCQkJCQlwcm9iZSk7CisrICBpZiAobiA+PSBuX3Byb2JlcykKKysgICAgcmV0dXJuIE5VTEw7 CisrCisrICByZXR1cm4gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9w cm9iZV9hcmd1bWVudCAob2JqZmlsZSwKKysJCQkJCQkJCSAgcHJvYmUsCisrCQkJCQkJCQkgIGZy YW1lLAorKwkJCQkJCQkJICBuKTsKKyt9CisrCisrdm9pZAorK3N0YXBfZnJlZV9wYXJzZWRfYXJn cyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncykKKyt7CisrICBpZiAoIXBhcnNl ZF9hcmdzCisrICAgICAgfHwgcGFyc2VkX2FyZ3MgPT0gJmR1bW15X3N0YXBfYXJnc19pbmZvCisr ICAgICAgfHwgcGFyc2VkX2FyZ3MtPm5fYXJncyA9PSAwKQorKyAgICByZXR1cm47CisrCisrICB4 ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZyk7CisrICB4ZnJlZSAocGFyc2VkX2FyZ3MpOworK30KKysK KysvKiBBIGhlbHBlciBmdW5jdGlvbiB0byBleHRyYWN0IGFuIGFyZ3VtZW50IGZyb20gKkFSRy4g IEFuIGFyZ3VtZW50IGlzCisrICAgZGVsaW1pdGVkIGJ5IHdoaXRlc3BhY2UuICBUaGUgcmV0dXJu IHZhbHVlIGlzIGVpdGhlciBOVUxMIGlmIG5vCisrICAgYXJndW1lbnQgd2FzIGZvdW5kLCBvciBh biB4bWFsbG9jJ2Qgc3RyaW5nLiAgKi8KKysKKytzdGF0aWMgY2hhciAqCisrZXh0cmFjdF9hcmcg KGNoYXIgKiphcmcpCisreworKyAgY2hhciAqcmVzdWx0LCAqY29weTsKKysKKysgIGlmICghKmFy ZykKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGUgYXJn dW1lbnQuICAqLworKyAgKmFyZyA9IHNraXBfc3BhY2VzICgqYXJnKTsKKysgIGlmICghICoqYXJn KQorKyAgICByZXR1cm4gTlVMTDsKKysgIHJlc3VsdCA9ICphcmc7CisrCisrICAvKiBGaW5kIHRo ZSBlbmQgb2YgdGhlIGFyZ3VtZW50LiAgKi8KKysgICphcmcgPSBza2lwX3RvX3NwYWNlICgqYXJn ICsgMSk7CisrCisrICBpZiAocmVzdWx0ID09ICphcmcpCisrICAgIHJldHVybiBOVUxMOworKwor KyAgY29weSA9IHhtYWxsb2MgKCphcmcgLSByZXN1bHQgKyAxKTsKKysgIG1lbWNweSAoY29weSwg cmVzdWx0LCAqYXJnIC0gcmVzdWx0KTsKKysgIGNvcHlbKmFyZyAtIHJlc3VsdF0gPSAnXDAnOwor KworKyAgcmV0dXJuIGNvcHk7CisrfQorKworKy8qIEEgdXRpbGl0eSBzdHJ1Y3R1cmUuICBBIFZF QyBvZiB0aGVzZSBpcyBidWlsdCB3aGVuIGhhbmRsaW5nICJpbmZvCisrICAgcHJvYmVzIi4gICov CisrCisrc3RydWN0IHN0YXBfcHJvYmVfYW5kX29iamZpbGUKKyt7CisrICAvKiBUaGUgcHJvYmUu ICAqLworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAgLyogVGhlIHByb2Jl J3Mgb2JqZmlsZS4gICovCisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKyt9OworKworK3R5 cGVkZWYgc3RydWN0IHN0YXBfcHJvYmVfYW5kX29iamZpbGUgc3RhcF9lbnRyeTsKKytERUZfVkVD X08gKHN0YXBfZW50cnkpOworKworKy8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb2xsZWN0X3By b2JlcyB0aGF0IGNvbXBpbGVzIGEgcmVnZXhwIGFuZAorKyAgIHRocm93cyBhbiBleGNlcHRpb24g b24gZXJyb3IuICBUaGlzIGluc3RhbGxzIGEgY2xlYW51cCB0byBmcmVlIHRoZQorKyAgIHJlc3Vs dGluZyBwYXR0ZXJuIG9uIHN1Y2Nlc3MuICBJZiBSWCBpcyBOVUxMLCB0aGlzIGRvZXMgbm90aGlu Zy4gICovCisrCisrc3RhdGljIHZvaWQKKytjb21waWxlX3J4X29yX2Vycm9yIChyZWdleF90ICpw YXR0ZXJuLCBjb25zdCBjaGFyICpyeCwgY29uc3QgY2hhciAqbWVzc2FnZSkKKyt7CisrICBpbnQg Y29kZTsKKysKKysgIGlmICghcngpCisrICAgIHJldHVybjsKKysKKysgIGNvZGUgPSByZWdjb21w IChwYXR0ZXJuLCByeCwgUkVHX05PU1VCKTsKKysgIGlmIChjb2RlID09IDApCisrICAgIG1ha2Vf cmVnZnJlZV9jbGVhbnVwIChwYXR0ZXJuKTsKKysgIGVsc2UKKysgICAgeworKyAgICAgIGNoYXIg KmVyciA9IGdldF9yZWdjb21wX2Vycm9yIChjb2RlLCBwYXR0ZXJuKTsKKysKKysgICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBlcnIpOworKyAgICAgIGVycm9yIChfKCIlczogJXMiKSwgbWVzc2Fn ZSwgZXJyKTsKKysgICAgfQorK30KKysKKysvKiBNYWtlIGEgdmVjdG9yIG9mIHByb2JlcyBtYXRj aGluZyBPQkpOQU1FLCBQUk9WSURFUiwgYW5kIFBST0JFLgorKyAgIEVhY2ggYXJndW1lbnQgaXMg YSByZWdleHAsIG9yIE5VTEwsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmcuICAqLworKworK3N0YXRp YyBWRUMgKHN0YXBfZW50cnkpICoKKytjb2xsZWN0X3Byb2JlcyAoY2hhciAqb2JqbmFtZSwgY2hh ciAqcHJvdmlkZXIsIGNoYXIgKnByb2JlKQorK3sKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl OworKyAgVkVDIChzdGFwX2VudHJ5KSAqcmVzdWx0ID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwOworKyAgcmVnZXhfdCBvYmpfcGF0LCBwcm92X3BhdCwgcHJvYmVfcGF0OworKwor KyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKHN0YXBfZW50cnkpLCAmcmVz dWx0KTsKKysKKysgIGNvbXBpbGVfcnhfb3JfZXJyb3IgKCZwcm92X3BhdCwgcHJvdmlkZXIsIF8o IkludmFsaWQgcHJvdmlkZXIgcmVnZXhwIikpOworKyAgY29tcGlsZV9yeF9vcl9lcnJvciAoJnBy b2JlX3BhdCwgcHJvYmUsIF8oIkludmFsaWQgcHJvYmUgcmVnZXhwIikpOworKyAgY29tcGlsZV9y eF9vcl9lcnJvciAoJm9ial9wYXQsIG9iam5hbWUsIF8oIkludmFsaWQgb2JqZWN0IGZpbGUgcmVn ZXhwIikpOworKworKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorKyAgeworKyAgICBjb25zdCBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOworKyAgICBpbnQgaSwgbnVtX3Byb2JlczsKKysKKysg ICAgaWYgKCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKKysg ICAgICBjb250aW51ZTsKKysKKysgICAgaWYgKG9iam5hbWUpCisrICAgICAgeworKwlpZiAocmVn ZXhlYyAoJm9ial9wYXQsIG9iamZpbGUtPm5hbWUsIDAsIE5VTEwsIDApICE9IDApCisrCSAgY29u dGludWU7CisrICAgICAgfQorKworKyAgICBwcm9iZXMgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2Jl X2Zucy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1fcHJvYmVzKTsKKysgICAgZm9yIChp ID0gMDsgaSA8IG51bV9wcm9iZXM7ICsraSkKKysgICAgICB7CisrCXN0YXBfZW50cnkgZW50cnk7 CisrCisrCWlmIChwcm92aWRlcikKKysJICB7CisrCSAgICBpZiAocmVnZXhlYyAoJnByb3ZfcGF0 LCBwcm9iZXNbaV0ucHJvdmlkZXIsIDAsIE5VTEwsIDApICE9IDApCisrCSAgICAgIGNvbnRpbnVl OworKwkgIH0KKysKKysJaWYgKHByb2JlKQorKwkgIHsKKysJICAgIGlmIChyZWdleGVjICgmcHJv YmVfcGF0LCBwcm9iZXNbaV0ubmFtZSwgMCwgTlVMTCwgMCkgIT0gMCkKKysJICAgICAgY29udGlu dWU7CisrCSAgfQorKworKwllbnRyeS5wcm9iZSA9ICZwcm9iZXNbaV07CisrCWVudHJ5Lm9iamZp bGUgPSBvYmpmaWxlOworKwlWRUNfc2FmZV9wdXNoIChzdGFwX2VudHJ5LCByZXN1bHQsICZlbnRy eSk7CisrICAgICAgfQorKyAgfQorKworKyAgZGlzY2FyZF9jbGVhbnVwcyAoY2xlYW51cCk7Cisr ICByZXR1cm4gcmVzdWx0OworK30KKysKKysvKiBBIHFzb3J0IGNvbXBhcmlzb24gZnVuY3Rpb24g Zm9yIHN0YXBfZW50cnkgb2JqZWN0cy4gICovCisrCisrc3RhdGljIGludAorK2NvbXBhcmVfZW50 cmllcyAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKyt7CisrICBjb25zdCBzdGFwX2Vu dHJ5ICplYSA9IGE7CisrICBjb25zdCBzdGFwX2VudHJ5ICplYiA9IGI7CisrICBpbnQgdjsKKysK KysgIHYgPSBzdHJjbXAgKGVhLT5wcm9iZS0+cHJvdmlkZXIsIGViLT5wcm9iZS0+cHJvdmlkZXIp OworKyAgaWYgKHYpCisrICAgIHJldHVybiB2OworKworKyAgdiA9IHN0cmNtcCAoZWEtPnByb2Jl LT5uYW1lLCBlYi0+cHJvYmUtPm5hbWUpOworKyAgaWYgKHYpCisrICAgIHJldHVybiB2OworKwor KyAgaWYgKGVhLT5wcm9iZS0+YWRkcmVzcyA8IGViLT5wcm9iZS0+YWRkcmVzcykKKysgICAgcmV0 dXJuIC0xOworKyAgaWYgKGVhLT5wcm9iZS0+YWRkcmVzcyA+IGViLT5wcm9iZS0+YWRkcmVzcykK KysgICAgcmV0dXJuIDE7CisrCisrICByZXR1cm4gc3RyY21wIChlYS0+b2JqZmlsZS0+bmFtZSwg ZWItPm9iamZpbGUtPm5hbWUpOworK30KKysKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgImlu Zm8gcHJvYmVzIiBjb21tYW5kLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9fcHJvYmVzX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorK3sKKysgIGNoYXIgKnByb3ZpZGVyLCAq cHJvYmUgPSBOVUxMLCAqb2JqbmFtZSA9IE5VTEw7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51 cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKKysgIFZFQyAoc3RhcF9lbnRy eSkgKml0ZW1zOworKyAgaW50IGksIGFkZHJfd2lkdGgsIGFueV9mb3VuZDsKKysgIHN0YXBfZW50 cnkgKmVudHJ5OworKworKyAgcHJvdmlkZXIgPSBleHRyYWN0X2FyZyAoJmFyZyk7CisrICBpZiAo cHJvdmlkZXIpCisrICAgIHsKKysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBwcm92aWRlcik7 CisrCisrICAgICAgcHJvYmUgPSBleHRyYWN0X2FyZyAoJmFyZyk7CisrICAgICAgaWYgKHByb2Jl KQorKwl7CisrCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcHJvYmUpOworKworKwkgIG9iam5hbWUg PSBleHRyYWN0X2FyZyAoJmFyZyk7CisrCSAgaWYgKG9iam5hbWUpCisrCSAgICBtYWtlX2NsZWFu dXAgKHhmcmVlLCBvYmpuYW1lKTsKKysJfQorKyAgICB9CisrCisrICBpdGVtcyA9IGNvbGxlY3Rf cHJvYmVzIChvYmpuYW1lLCBwcm92aWRlciwgcHJvYmUpOworKyAgbWFrZV9jbGVhbnVwIChWRUNf Y2xlYW51cCAoc3RhcF9lbnRyeSksICZpdGVtcyk7CisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3Rh YmxlX2JlZ2luX2VuZCAodWlvdXQsIDUsCisrCQkJCSAgICAgICBWRUNfbGVuZ3RoIChzdGFwX2Vu dHJ5LCBpdGVtcyksCisrCQkJCSAgICAgICAiU3lzdGVtVGFwUHJvYmVzIik7CisrCisrICBpZiAo ISBWRUNfZW1wdHkgKHN0YXBfZW50cnksIGl0ZW1zKSkKKysgICAgcXNvcnQgKFZFQ19hZGRyZXNz IChzdGFwX2VudHJ5LCBpdGVtcyksCisrCSAgIFZFQ19sZW5ndGggKHN0YXBfZW50cnksIGl0ZW1z KSwKKysJICAgc2l6ZW9mIChzdGFwX2VudHJ5KSwKKysJICAgY29tcGFyZV9lbnRyaWVzKTsKKysK KysgIGFkZHJfd2lkdGggPSA0ICsgKGdkYmFyY2hfcHRyX2JpdCAoZ2V0X2N1cnJlbnRfYXJjaCAo KSkgLyA0KTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAxMCwgdWlfbGVmdCwg InByb3ZpZGVyIiwgXygiUHJvdmlkZXIiKSk7CisrICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91 dCwgMTAsIHVpX2xlZnQsICJuYW1lIiwgXygiTmFtZSIpKTsKKysgIHVpX291dF90YWJsZV9oZWFk ZXIgKHVpb3V0LCBhZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwgImFkZHIiLCBfKCJXaGVyZSIpKTsK KysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBhZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwg InNlbWFwaG9yZSIsCisrCQkgICAgICAgXygiU2VtYXBob3JlIikpOworKyAgdWlfb3V0X3RhYmxl X2hlYWRlciAodWlvdXQsIDMwLCB1aV9sZWZ0LCAib2JqZWN0IiwgXygiT2JqZWN0IikpOworKyAg dWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRl IChzdGFwX2VudHJ5LCBpdGVtcywgaSwgZW50cnkpOyArK2kpCisrICAgIHsKKysgICAgICBzdHJ1 Y3QgY2xlYW51cCAqaW5uZXI7CisrCisrICAgICAgaW5uZXIgPSBtYWtlX2NsZWFudXBfdWlfb3V0 X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJwcm9iZSIpOworKworKyAgICAgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAicHJvdmlkZXIiLCBlbnRyeS0+cHJvYmUtPnByb3ZpZGVyKTsKKysg ICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgIm5hbWUiLCBlbnRyeS0+cHJvYmUtPm5h bWUpOworKyAgICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0LCAiYWRkciIsIGdldF9j dXJyZW50X2FyY2ggKCksCisrCQkJICAgICAgZW50cnktPnByb2JlLT5hZGRyZXNzKTsKKysgICAg ICBpZiAoZW50cnktPnByb2JlLT5zZW1fYWRkciA9PSAwKQorKwl1aV9vdXRfZmllbGRfc2tpcCAo dWlvdXQsICJzZW1hcGhvcmUiKTsKKysgICAgICBlbHNlCisrICAgICAgdWlfb3V0X2ZpZWxkX2Nv cmVfYWRkciAodWlvdXQsICJzZW1hcGhvcmUiLCBnZXRfY3VycmVudF9hcmNoICgpLAorKwkJCSAg ICAgIGVudHJ5LT5wcm9iZS0+c2VtX2FkZHIpOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCAib2JqZWN0IiwgZW50cnktPm9iamZpbGUtPm5hbWUpOworKyAgICAgIHVpX291dF90 ZXh0ICh1aW91dCwgIlxuIik7CisrCisrICAgICAgZG9fY2xlYW51cHMgKGlubmVyKTsKKysgICAg fQorKworKyAgYW55X2ZvdW5kID0gISBWRUNfZW1wdHkgKHN0YXBfZW50cnksIGl0ZW1zKTsKKysg IGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKysKKysgIGlmICghIGFueV9mb3VuZCkKKysgICAgdWlf b3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyBwcm9iZXMgbWF0Y2hlZC5cbiIpKTsKKyt9Cisr CisrDAorKworK2NvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICoKKytmaW5kX3Byb2JlX2luX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJICAgICAgIGNvbnN0IGNoYXIgKnByb3Zp ZGVyLAorKwkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCisreworKyAgY29uc3Qgc3RydWN0IHN0 YXBfcHJvYmUgKnByb2JlczsKKysgIGludCBpLCBudW1fcHJvYmVzOworKworKyAgaWYgKCEgb2Jq ZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKKysgICAgcmV0dXJuIE5V TEw7CisrCisrICBwcm9iZXMgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9w cm9iZXMgKG9iamZpbGUsICZudW1fcHJvYmVzKTsKKysgIGZvciAoaSA9IDA7IGkgPCBudW1fcHJv YmVzOyArK2kpCisrICAgIHsKKysgICAgICBpZiAoc3RyY21wIChwcm9iZXNbaV0ucHJvdmlkZXIs IHByb3ZpZGVyKSAhPSAwKQorKwljb250aW51ZTsKKysKKysgICAgICBpZiAoc3RyY21wIChwcm9i ZXNbaV0ubmFtZSwgbmFtZSkgIT0gMCkKKysJY29udGludWU7CisrCisrICAgICAgcmV0dXJuICZw cm9iZXNbaV07CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMOworK30KKysKKytzdHJ1Y3Qgc3lt dGFic19hbmRfbGluZXMKKytwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRyKQorK3sKKysg IGNoYXIgKmFyZyA9IGV4dHJhY3RfYXJnIChhcmdwdHIpOworKyAgY2hhciAqb2JqZmlsZV9uYW1l ID0gTlVMTCwgKnByb3ZpZGVyID0gTlVMTCwgKm5hbWUsICpwOworKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXA7CisrICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgcmVzdWx0OworKyAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGU7CisrCisrICByZXN1bHQuc2FscyA9IE5VTEw7CisrICByZXN1bHQu bmVsdHMgPSAwOworKworKyAgLyogVGhlIGNhbGxlciBlbnN1cmVkIHRoYXQgdGhpcyBzdGFydHMg d2l0aCAncHJvYmU6Jy4gICovCisrICBnZGJfYXNzZXJ0IChhcmcgJiYgc3RybmNtcCAoYXJnLCAi cHJvYmU6IiwgNikgPT0gMCk7CisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJn KTsKKysgIGFyZyArPSA2OworKworKyAgLyogRXh0cmFjdCBlYWNoIHdvcmQgZnJvbSB0aGUgYXJn dW1lbnQsIHNlcGFyYXRlZCBieSAiOiJzLiAgKi8KKysgIHAgPSBzdHJjaHIgKGFyZywgJzonKTsK KysgIGlmIChwID09IE5VTEwpCisrICAgIHsKKysgICAgICAvKiBUaGlzIGlzIGBwcm9iZTpuYW1l Jy4gICovCisrICAgICAgbmFtZSA9IGFyZzsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAg ICAgY2hhciAqaG9sZCA9IHAgKyAxOworKworKyAgICAgICpwID0gJ1wwJzsKKysgICAgICBwID0g c3RyY2hyIChob2xkLCAnOicpOworKyAgICAgIGlmIChwID09IE5VTEwpCisrCXsKKysJICAvKiBU aGlzIGlzIGBwcm9iZTpwcm92aWRlcjpuYW1lJy4gICovCisrCSAgcHJvdmlkZXIgPSBhcmc7Cisr CSAgbmFtZSA9IGhvbGQ7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICAvKiBUaGlzIGlzIGBw cm9iZTpvYmpmaWxlOnByb3ZpZGVyOm5hbWUnLiAgKi8KKysJICAqcCA9ICdcMCc7CisrCSAgb2Jq ZmlsZV9uYW1lID0gYXJnOworKwkgIHByb3ZpZGVyID0gaG9sZDsKKysJICBuYW1lID0gcCArIDE7 CisrCX0KKysgICAgfQorKworKyAgaWYgKCpuYW1lID09ICdcMCcpCisrICAgIGVycm9yIChfKCJu byBwcm9iZSBuYW1lIHNwZWNpZmllZCIpKTsKKysgIGlmIChwcm92aWRlciAmJiAqcHJvdmlkZXIg PT0gJ1wwJykKKysgICAgZXJyb3IgKF8oImludmFsaWQgcHJvdmlkZXIgbmFtZSIpKTsKKysgIGlm IChvYmpmaWxlX25hbWUgJiYgKm9iamZpbGVfbmFtZSA9PSAnXDAnKQorKyAgICBlcnJvciAoXygi aW52YWxpZCBvYmpmaWxlIG5hbWUiKSk7CisrCisrICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisr ICB7CisrICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7CisrICAgIGludCBpLCBu dW1fcHJvYmVzOworKworKyAgICBpZiAoISBvYmpmaWxlLT5zZiB8fCAhIG9iamZpbGUtPnNmLT5z eW1fcHJvYmVfZm5zKQorKyAgICAgIGNvbnRpbnVlOworKworKyAgICBpZiAob2JqZmlsZV9uYW1l CisrCSYmIEZJTEVOQU1FX0NNUCAob2JqZmlsZS0+bmFtZSwgb2JqZmlsZV9uYW1lKSAhPSAwCisr CSYmIEZJTEVOQU1FX0NNUCAobGJhc2VuYW1lIChvYmpmaWxlLT5uYW1lKSwgb2JqZmlsZV9uYW1l KSAhPSAwKQorKyAgICAgIGNvbnRpbnVlOworKworKyAgICBwcm9iZXMgPSBvYmpmaWxlLT5zZi0+ c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1fcHJvYmVzKTsKKysg ICAgZm9yIChpID0gMDsgaSA8IG51bV9wcm9iZXM7ICsraSkKKysgICAgICB7CisrCXN0cnVjdCBz eW10YWJfYW5kX2xpbmUgKnNhbDsKKysKKysJaWYgKHByb3ZpZGVyICYmIHN0cmNtcCAocHJvYmVz W2ldLnByb3ZpZGVyLCBwcm92aWRlcikgIT0gMCkKKysJICBjb250aW51ZTsKKysKKysJaWYgKHN0 cmNtcCAocHJvYmVzW2ldLm5hbWUsIG5hbWUpICE9IDApCisrCSAgY29udGludWU7CisrCisrCSsr cmVzdWx0Lm5lbHRzOworKwlyZXN1bHQuc2FscyA9IHhyZWFsbG9jIChyZXN1bHQuc2FscywKKysJ CQkJcmVzdWx0Lm5lbHRzICogc2l6ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lKSk7CisrCXNh bCA9ICZyZXN1bHQuc2Fsc1tyZXN1bHQubmVsdHMgLSAxXTsKKysKKysJaW5pdF9zYWwgKHNhbCk7 CisrCisrCXNhbC0+cGMgPSBwcm9iZXNbaV0uYWRkcmVzczsKKysJc2FsLT5leHBsaWNpdF9wYyA9 IDE7CisrCXNhbC0+c2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLT5wYyk7CisrCXNhbC0+ cHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOworKwlzYWwtPnNlbWFwaG9yZSA9IHByb2Jl c1tpXS5zZW1fYWRkcjsKKysgICAgICB9CisrICB9CisrCisrICBpZiAocmVzdWx0Lm5lbHRzID09 IDApCisrICAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCisrCQkgXygiTm8gcHJvYmUg bWF0Y2hpbmcgb2JqZmlsZT1gJXMnLCBwcm92aWRlcj1gJXMnLCBuYW1lPWAlcyciKSwKKysJCSBv YmpmaWxlX25hbWUgPyBvYmpmaWxlX25hbWUgOiBfKCI8YW55PiIpLAorKwkJIHByb3ZpZGVyID8g cHJvdmlkZXIgOiBfKCI8YW55PiIpLAorKwkJIG5hbWUpOworKworKyAgZG9fY2xlYW51cHMgKGNs ZWFudXApOworKworKyAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrDAorKworK2NvbnN0IHN0cnVj dCBzdGFwX3Byb2JlICoKKytmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsIHN0cnVjdCBv YmpmaWxlICoqb2JqZmlsZV9vdXQpCisreworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Cisr CisrICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisrICB7CisrICAgIGNvbnN0IHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZXM7CisrICAgIGludCBpLCBudW1fcHJvYmVzOworKyAgICBzdGFwX2VudHJ5 IGVudHJ5OworKworKyAgICBpZiAoISBvYmpmaWxlLT5zZiB8fCAhIG9iamZpbGUtPnNmLT5zeW1f cHJvYmVfZm5zKQorKyAgICAgIGNvbnRpbnVlOworKworKyAgICAvKiBJZiB0aGlzIHByb3ZlcyB0 b28gaW5lZmZpY2llbnQsIHdlIGNhbiByZXBsYWNlIHdpdGggYSBoYXNoLiAgKi8KKysgICAgcHJv YmVzID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVzIChvYmpmaWxl LCAmbnVtX3Byb2Jlcyk7CisrICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcHJvYmVzOyArK2kpCisr ICAgICAgeworKwlpZiAocHJvYmVzW2ldLmFkZHJlc3MgPT0gcGMpCisrCSAgeworKwkgICAgKm9i amZpbGVfb3V0ID0gb2JqZmlsZTsKKysJICAgIHJldHVybiAmcHJvYmVzW2ldOworKwkgIH0KKysg ICAgICB9CisrICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrLyogVGhpcyBpcyBjYWxs ZWQgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2Ygb25lIG9mIHRoZSAkX3Byb2JlX2FyZyoKKysgICBj b252ZW5pZW5jZSB2YXJpYWJsZXMuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK2Nv bXB1dGVfcHJvYmVfYXJnIChzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwgc3RydWN0IGludGVybmFsdmFy ICppdmFyLAorKwkJICAgdm9pZCAqZGF0YSkKKyt7CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKF8oIk5vIGZyYW1lIHNlbGVjdGVkIikpOworKyAgQ09S RV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7CisrICBpbnQgc2VsID0gKGludCkgKHVp bnRwdHJfdCkgZGF0YTsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworKyAgY29uc3Qgc3Ry dWN0IHN0YXBfcHJvYmUgKnBjX3Byb2JlOworKyAgaW50IG5fcHJvYmVzOworKworKyAgLyogU0VM PT0xMCBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KKysgIGdkYl9hc3NlcnQgKHNlbCA+PSAwICYm IHNlbCA8PSAxMCk7CisrCisrICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAmb2Jq ZmlsZSk7CisrICBpZiAocGNfcHJvYmUgPT0gTlVMTCkKKysgICAgZXJyb3IgKF8oIk5vIFN5c3Rl bVRhcCBwcm9iZSBhdCBQQyAlcyIpLCBjb3JlX2FkZHJfdG9fc3RyaW5nIChwYykpOworKworKyAg bl9wcm9iZXMKKysgICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKKysJCQkJCQkJCXBjX3Byb2JlKTsKKysgIGlmIChz ZWwgPT0gMTApCisrICAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAo YXJjaCktPmJ1aWx0aW5faW50LCBuX3Byb2Jlcyk7CisrCisrICBnZGJfYXNzZXJ0IChzZWwgPj0g MCk7CisrICBpZiAoc2VsID49IG5fcHJvYmVzKQorKyAgICBlcnJvciAoXygiSW52YWxpZCBwcm9i ZSBhcmd1bWVudCAlZCAtLSBwcm9iZSBoYXMgJWQgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAorKwkg ICBzZWwsIG5fcHJvYmVzKTsKKysKKysgIHJldHVybiBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zu cy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLAorKwkJCQkJCQkJICBwY19w cm9iZSwKKysJCQkJCQkJCSAgZnJhbWUsIHNlbCk7CisrfQorKworKy8qIFRoaXMgaXMgY2FsbGVk IHRvIGNvbXBpbGUgb25lIG9mIHRoZSAkX3Byb2JlX2FyZyogY29udmVuaWVuY2UKKysgICB2YXJp YWJsZXMgaW50byBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2Nv bXBpbGVfcHJvYmVfYXJnIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKml2YXIsIHN0cnVjdCBhZ2VudF9l eHByICpleHByLAorKwkJICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsIHZvaWQgKmRhdGEpCisr eworKyAgQ09SRV9BRERSIHBjID0gZXhwci0+c2NvcGU7CisrICBpbnQgc2VsID0gKGludCkgKHVp bnRwdHJfdCkgZGF0YTsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworKyAgY29uc3Qgc3Ry dWN0IHN0YXBfcHJvYmUgKnBjX3Byb2JlOworKyAgaW50IG5fcHJvYmVzOworKworKyAgLyogU0VM PT0xMCBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KKysgIGdkYl9hc3NlcnQgKHNlbCA+PSAwICYm IHNlbCA8PSAxMCk7CisrCisrICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAmb2Jq ZmlsZSk7CisrICBpZiAocGNfcHJvYmUgPT0gTlVMTCkKKysgICAgZXJyb3IgKF8oIk5vIFN5c3Rl bVRhcCBwcm9iZSBhdCBQQyAlcyIpLCBjb3JlX2FkZHJfdG9fc3RyaW5nIChwYykpOworKworKyAg bl9wcm9iZXMKKysgICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKKysJCQkJCQkJCXBjX3Byb2JlKTsKKysgIGlmIChz ZWwgPT0gMTApCisrICAgIHsKKysgICAgICB2YWx1ZS0+a2luZCA9IGF4c19ydmFsdWU7CisrICAg ICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5cGUgKGV4cHItPmdkYmFyY2gpLT5idWlsdGluX2lu dDsKKysgICAgICBheF9jb25zdF9sIChleHByLCBuX3Byb2Jlcyk7CisrICAgICAgcmV0dXJuOwor KyAgICB9CisrCisrICBnZGJfYXNzZXJ0IChzZWwgPj0gMCk7CisrICBpZiAoc2VsID49IG5fcHJv YmVzKQorKyAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAlZCAtLSBwcm9iZSBo YXMgJWQgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAorKwkgICBzZWwsIG5fcHJvYmVzKTsKKysKKysg IC8qIEZJWE1FOiB0aGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBBWCB0cmFuc2xhdGlvbiBpcyBpbXBs ZW1lbnRlZC4gICovCisrICBpZiAoIW9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fY29t cGlsZV90b19heCkKKysgICAgZXJyb3IgKF8oImNhbm5vdCB0cmFuc2xhdGUgYCRfcHJvYmVfYXJn JWQnIHRvIGJ5dGVjb2RlIiksIHNlbCk7CisrICBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+ c3ltX2NvbXBpbGVfdG9fYXggKG9iamZpbGUsIHBjX3Byb2JlLAorKwkJCQkJCSBleHByLCB2YWx1 ZSwgc2VsKTsKKyt9CisrCisrDAorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJf ZnVuY3MgcHJvYmVfZnVuY3MgPQorK3sKKysgIGNvbXB1dGVfcHJvYmVfYXJnLAorKyAgY29tcGls ZV9wcm9iZV9hcmcsCisrICBOVUxMCisrfTsKKysKKyt2b2lkCisrX2luaXRpYWxpemVfc3RhcF9w cm9iZSAodm9pZCkKKyt7CisrICBhZGRfaW5mbyAoInByb2JlcyIsIGluZm9fcHJvYmVzX2NvbW1h bmQsIF8oIlwKKytTaG93IGF2YWlsYWJsZSBzdGF0aWMgcHJvYmVzLlxuXAorK1VzYWdlOiBpbmZv IHByb2JlcyBbUFJPVklERVIgW05BTUUgW09CSkVDVF1dXVxuXAorK0VhY2ggYXJndW1lbnQgaXMg YSByZWd1bGFyIGV4cHJlc3Npb24sIHVzZWQgdG8gc2VsZWN0IHByb2Jlcy5cblwKKytQUk9WSURF UiBtYXRjaGVzIHByb2JlIHByb3ZpZGVyIG5hbWVzLlxuXAorK05BTUUgbWF0Y2hlcyB0aGUgcHJv YmUgbmFtZXMuXG5cCisrT0JKRUNUIG1hdGNoIHRoZSBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJy YXJ5IG5hbWUuIikpOworKworKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9i ZV9hcmdjIiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9pZCAqKSAodWludHB0cl90KSAxMCk7Cisr ICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzAiLCAmcHJvYmVfZnVu Y3MsCisrCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDApOworKyAgY3JlYXRlX2ludGVybmFsdmFy X3R5cGVfbGF6eSAoIl9wcm9iZV9hcmcxIiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9pZCAqKSAo dWludHB0cl90KSAxKTsKKysgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVf YXJnMiIsICZwcm9iZV9mdW5jcywKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgMik7CisrICBj cmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzMiLCAmcHJvYmVfZnVuY3Ms CisrCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDMpOworKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5 cGVfbGF6eSAoIl9wcm9iZV9hcmc0IiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9pZCAqKSAodWlu dHB0cl90KSA0KTsKKysgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJn NSIsICZwcm9iZV9mdW5jcywKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgNSk7CisrICBjcmVh dGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzYiLCAmcHJvYmVfZnVuY3MsCisr CQkJCSh2b2lkICopICh1aW50cHRyX3QpIDYpOworKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVf bGF6eSAoIl9wcm9iZV9hcmc3IiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9pZCAqKSAodWludHB0 cl90KSA3KTsKKysgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJnOCIs ICZwcm9iZV9mdW5jcywKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgOCk7CisrICBjcmVhdGVf aW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzkiLCAmcHJvYmVfZnVuY3MsCisrCQkJ CSh2b2lkICopICh1aW50cHRyX3QpIDkpOworK30KK2RpZmYgLS1naXQgYS9nZGIvc3RhcC1wcm9i ZS5oIGIvZ2RiL3N0YXAtcHJvYmUuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAuLjNhNzk0MWYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9zdGFwLXByb2JlLmgKK0BAIC0w LDAgKzEsMTEwIEBACisrLyogU3lzdGVtdGFwIHByb2JlIHN1cHBvcnQgZm9yIEdEQi4KKysKKysg ICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWYgIWRlZmluZWQgKFNUQVBfUFJPQkVfSCkKKysjZGVm aW5lIFNUQVBfUFJPQkVfSCAxCisrCisrc3RydWN0IHN0YXBfYXJnc19pbmZvOworK3N0cnVjdCBh eHNfdmFsdWU7CisrCisrc3RydWN0IHN0YXBfcHJvYmUKKyt7CisrICAvKiBUaGUgcHJvdmlkZXIg b2YgdGhpcyBwcm9iZS4gICovCisrICBjb25zdCBjaGFyICpwcm92aWRlcjsKKysKKysgIC8qIFRo ZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCisrICBjb25zdCBjaGFyICpuYW1lOworKworKyAgLyog VGhlIGFkZHJlc3Mgd2hlcmUgdGhlIHByb2JlIGlzIGluc2VydGVkLiAgKi8KKysgIENPUkVfQURE UiBhZGRyZXNzOworKworKyAgLyogVGhlIGFkZHJlc3Mgb2YgdGhlIHByb2JlJ3Mgc2VtYXBob3Jl LCBvciAwIGlmIHRoaXMgcHJvYmUgZG9lcyBub3QKKysgICAgIGhhdmUgYW4gYXNzb2NpYXRlZCBz ZW1hcGhvcmUuICAqLworKyAgQ09SRV9BRERSIHNlbV9hZGRyOworKworKyAgLyogUHJvYmUncyBh cmd1bWVudHMuICBVc2VycyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBleGFtaW5lIHRoaXMsIGJ1dAor KyAgICAgc2hvdWxkIGluc3RlYWQgZXh0cmFjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1l bnRzIHVzaW5nIHRoZQorKyAgICAgbWV0aG9kcyBwcm92aWRlZCBpbiBzeW1fcHJvYmVfZm5zLiAg Ki8KKysgIGNvbnN0IGNoYXIgKmFyZ3M7CisrCisrICAvKiBQcm9iZSdzIGFyZ3VtZW50cyBhZnRl ciBwYXJzaW5nLiAgVGhpcyBpcyBhbiBvcGFxdWUgc3RydWN0dXJlIHRoYXQKKysgICAgIHdpbGwg aG9sZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1lbnRzIHBvaW50ZWQgYnkgQVJHUy4gICov CisrICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzOworK307CisrCisrCisrLyog QSBoZWxwZXIgZm9yIGxpbmVzcGVjIHRoYXQgZGVjb2RlcyBhIHN0YXAgcHJvYmUgc3BlY2lmaWNh dGlvbi4gIEl0CisrICAgcmV0dXJucyBhIHN5bXRhYnNfYW5kX2xpbmVzIG9iamVjdCBhbmQgdXBk YXRlcyAqQVJHUFRSIG9yIHRocm93cyBhbgorKyAgIGVycm9yLiAgKi8KKysKKytleHRlcm4gc3Ry dWN0IHN5bXRhYnNfYW5kX2xpbmVzIHBhcnNlX3N0YXBfcHJvYmUgKGNoYXIgKiphcmdwdHIpOwor KworKy8qIFNlYXJjaCBPQkpGSUxFIGZvciBhIHByb2JlIHdpdGggdGhlIGdpdmVuIFBST1ZJREVS IGFuZCBOQU1FLiAgSWYgYQorKyAgIHByb2JlIGlzIGZvdW5kLCByZXR1cm4gaXQuICBJZiBubyBw cm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLworKworK2V4dGVybiBjb25zdCBzdHJ1Y3Qg c3RhcF9wcm9iZSAqZmluZF9wcm9iZV9pbl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKysJCQkJCQkgICAgICAgY29uc3QgY2hhciAqcHJvdmlkZXIsCisrCQkJCQkJICAgICAgIGNv bnN0IGNoYXIgKm5hbWUpOworKworKy8qIEdpdmVuIGEgUEMsIGZpbmQgYW4gYXNzb2NpYXRlZCBT eXN0ZW1UYXAgcHJvYmUuICBJZiBhIHByb2JlIGlzCisrICAgZm91bmQsIHNldCAqT0JKRklMRV9P VVQgdG8gdGhlIHByb2JlJ3Mgb2JqZmlsZSwgYW5kIHJldHVybiB0aGUKKysgICBwcm9iZS4gIElm IG5vIHByb2JlIGlzIGZvdW5kLCByZXR1cm4gTlVMTC4gICovCisrCisrZXh0ZXJuIGNvbnN0IHN0 cnVjdCBzdGFwX3Byb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsCisrCQkJCQkJ ICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKKysKKysvKiBHaXZlbiBQUk9CRSwgdGhp cyBmdW5jdGlvbiB3aWxsIHBhcnNlIGl0cyBhcmd1bWVudHMgYW5kIGZpbGwgdGhlCisrICAgYHN0 cnVjdCBzdGFwX2FyZ3NfaW5mbycgd2l0aCBwcm9wZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlbS4g ICovCisrCisrZXh0ZXJuIHZvaWQgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZSk7CisrCisrLyogR2l2ZW4gUFJPQkUsIHJldHVybnMgdGhlIG51bWJl ciBvZiBhcmd1bWVudHMgcHJlc2VudCBpbiB0aGF0IHByb2JlJ3MKKysgICBhcmd1bWVudCBzdHJp bmcuICAqLworKworK2V4dGVybiBpbnQgc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKGNv bnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSk7CisrCisrLyogR2l2ZW4gUEFSU0VEX0FSR1Ms IGZyZWVzIHRoZSBzcGFjZSBhbGxvY2F0ZWQgdG8gaG9sZCBpbmZvcm1hdGlvbiBhYm91dAorKyAg IHRoZSBwcm9iZSdzIHBhcnNlZCBhcmd1bWVudHMuICAqLworKworK2V4dGVybiB2b2lkIHN0YXBf ZnJlZV9wYXJzZWRfYXJncyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncyk7Cisr CisrLyogRXZhbHVhdGVzIHRoZSBwcm9iZSdzIGFyZ3VtZW50IE4sIHJldHVybmluZyBhIHZhbHVl IGNvcnJlc3BvbmRpbmcKKysgICB0byBpdC4gICovCisrCisrZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq c3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisr CQkJCQkJICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAorKwkJCQkJCSAgIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJCQkgICBpbnQgbik7CisrCisrLyogQ29tcGlsZSB0 aGUgcHJvYmUncyBhcmd1bWVudCBOIHRvIGFnZW50IGV4cHJlc3Npb24uICAqLworKworK2V4dGVy biB2b2lkIHN0YXBfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJ CWNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkJc3RydWN0IGFnZW50X2V4cHIg KmV4cHIsCisrCQkJCXN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAorKwkJCQlpbnQgbik7CisrCisr LyogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGZpbmRzIGEgcHJvYmUgYXQgdGhlIFBDIGlu IEZSQU1FIGFuZAorKyAgIGV2YWx1YXRlcyBhcmd1bWVudCBOLiAgSWYgdGhlcmUgaXMgbm8gcHJv YmUgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYKKysgICB0aGUgcHJvYmUgZG9lcyBub3QgaGF2ZSBl bm91Z2ggYXJndW1lbnRzLCB0aGlzIHJldHVybnMgTlVMTC4gICovCisrCisrZXh0ZXJuIHN0cnVj dCB2YWx1ZSAqc3RhcF9zYWZlX2V2YWx1YXRlX2F0X3BjIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUsCisrCQkJCQkgICAgICAgaW50IG4pOworKworKyNlbmRpZiAvKiAhZGVmaW5lZCAoU1RBUF9Q Uk9CRV9IKSAqLworZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCitp bmRleCBhMDE1MWVhLi43NTJjNDZhIDEwMDY0NAorLS0tIGEvZ2RiL3N5bWZpbGUuaAorKysrIGIv Z2RiL3N5bWZpbGUuaAorQEAgLTMxLDYgKzMxLDExIEBAIHN0cnVjdCBvYmpmaWxlOworIHN0cnVj dCBvYmpfc2VjdGlvbjsKKyBzdHJ1Y3Qgb2JzdGFjazsKKyBzdHJ1Y3QgYmxvY2s7Cisrc3RydWN0 IHN0YXBfcHJvYmU7Cisrc3RydWN0IHZhbHVlOworK3N0cnVjdCBmcmFtZV9pbmZvOworK3N0cnVj dCBhZ2VudF9leHByOworK3N0cnVjdCBheHNfdmFsdWU7CisgCisgLyogQ29tcGFyaXNvbiBmdW5j dGlvbiBmb3Igc3ltYm9sIGxvb2sgdXBzLiAgKi8KKyAKK0BAIC0yOTYsNiArMzAxLDUyIEBAIHN0 cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCisgCQkJCXZvaWQgKmRhdGEpOworIH07CisgCisr LyogU3RydWN0dXJlIG9mIGZ1bmN0aW9ucyB1c2VkIGZvciBTeXN0ZW1UYXAgcHJvYmUgc3VwcG9y dC4gIElmIG9uZSBvZgorKyAgIHRoZXNlIGZ1bmN0aW9ucyBpcyBwcm92aWRlZCwgYWxsIG11c3Qg YmUuICAqLworKworK3N0cnVjdCBzeW1fcHJvYmVfZm5zCisreworKyAgLyogSWYgbm9uLU5VTEws IHJldHVybiBhbiBhcnJheSBvZiBTeXN0ZW1UYXAgcHJvYmUgb2JqZWN0cy4gIFRoZQorKyAgICAg bnVtYmVyIG9mIG9iamVjdHMgaXMgcmV0dXJuZWQgaW4gKk5VTV9QUk9CRVMuICAqLworKyAgY29u c3Qgc3RydWN0IHN0YXBfcHJvYmUgKigqc3ltX2dldF9wcm9iZXMpIChzdHJ1Y3Qgb2JqZmlsZSAq LAorKwkJCQkJICAgICAgaW50ICpudW1fcHJvYmVzKTsKKysKKysgIC8qIFJldHVybiB0aGUgbnVt YmVyIG9mIGFyZ3VtZW50cyBhdmFpbGFibGUgdG8gUFJPQkUuICBQUk9CRSB3aWxsCisrICAgICBo YXZlIGNvbWUgZnJvbSBhIGNhbGwgdG8gdGhpcyBvYmpmaWxlJ3Mgc3ltX2dldF9wcm9iZXMgbWV0 aG9kLgorKyAgICAgSWYgeW91IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2Ygc3ltX2dldF9w cm9iZXMsIHlvdSBtdXN0CisrICAgICBpbXBsZW1lbnQgdGhpcyBtZXRob2QgYXMgd2VsbC4gICov CisrICBpbnQgKCpzeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpOwor KworKyAgLyogRXZhbHVhdGUgdGhlIE50aCBhcmd1bWVudCBhdmFpbGFibGUgdG8gUFJPQkUuICBQ Uk9CRSB3aWxsIGhhdmUKKysgICAgIGNvbWUgZnJvbSBhIGNhbGwgdG8gdGhpcyBvYmpmaWxlJ3Mg c3ltX2dldF9wcm9iZXMgbWV0aG9kLiAgTiB3aWxsCisrICAgICBiZSBiZXR3ZWVuIDAgYW5kIHRo ZSBudW1iZXIgb2YgYXJndW1lbnRzIGF2YWlsYWJsZSB0byB0aGlzIHByb2JlLgorKyAgICAgRlJB TUUgaXMgdGhlIGZyYW1lIGluIHdoaWNoIHRoZSBldmFsdWF0aW9uIGlzIGRvbmU7IHRoZSBmcmFt ZSdzCisrICAgICBQQyB3aWxsIG1hdGNoIHRoZSBhZGRyZXNzIG9mIHRoZSBwcm9iZS4gIElmIHlv dSBwcm92aWRlIGFuCisrICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzeW1fZ2V0X3Byb2JlcywgeW91 IG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kCisrICAgICBhcyB3ZWxsLiAgKi8KKysgIHN0cnVj dCB2YWx1ZSAqKCpzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKKysJCQkJCQljb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCisrCQkJCQkJ c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorKwkJCQkJCWludCBuKTsKKysKKysgIC8qIENvbXBp bGUgdGhlIE50aCBwcm9iZSBhcmd1bWVudCB0byBhbiBhZ2VudCBleHByZXNzaW9uLiAgUFJPQkUK KysgICAgIHdpbGwgaGF2ZSBjb21lIGZyb20gYSBjYWxsIHRvIHRoaXMgb2JqZmlsZSdzIHN5bV9n ZXRfcHJvYmVzCisrICAgICBtZXRob2QuICBOIHdpbGwgYmUgYmV0d2VlbiAwIGFuZCB0aGUgbnVt YmVyIG9mIGFyZ3VtZW50cworKyAgICAgYXZhaWxhYmxlIHRvIHRoaXMgcHJvYmUuICBFWFBSIGFu ZCBWQUxVRSBhcmUgdGhlIGFnZW50IGV4cHJlc3Npb24KKysgICAgIHRoYXQgaXMgYmVpbmcgdXBk YXRlZC4gICovCisrICB2b2lkICgqc3ltX2NvbXBpbGVfdG9fYXgpIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKKysJCQkgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkg ICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJCSAgICAgc3RydWN0IGF4c192YWx1ZSAq dmFsdWUsCisrCQkJICAgICBpbnQgbik7CisrCisrICAvKiBSZWxvY2F0ZSB0aGUgcHJvYmUgc2Vj dGlvbiBvZiBPQkpGSUxFLiAgKi8KKysgIHZvaWQgKCpzeW1fcmVsb2NhdGVfcHJvYmUpIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpu ZXdfb2Zmc2V0cywKKysJCQkgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSk7Cisr fTsKKysKKyAvKiBTdHJ1Y3R1cmUgdG8ga2VlcCB0cmFjayBvZiBzeW1ib2wgcmVhZGluZyBmdW5j dGlvbnMgZm9yIHZhcmlvdXMKKyAgICBvYmplY3QgZmlsZSB0eXBlcy4gICovCisgCitAQCAtMzY2 LDYgKzQxNywxMCBAQCBzdHJ1Y3Qgc3ltX2ZucworIAorICAgYmZkX2J5dGUgKigqc3ltX3JlbG9j YXRlKSAoc3RydWN0IG9iamZpbGUgKiwgYXNlY3Rpb24gKnNlY3RwLCBiZmRfYnl0ZSAqYnVmKTsK KyAKKysgIC8qIElmIG5vbi1OVUxMLCB0aGlzIG9iamZpbGUgaGFzIHByb2JlIHN1cHBvcnQsIGFu ZCBhbGwgdGhlIHByb2JlCisrICAgICBmdW5jdGlvbnMgcmVmZXJyZWQgdG8gaGVyZSB3aWxsIGJl IG5vbi1OVUxMLiAgKi8KKysgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpzeW1fcHJvYmVf Zm5zOworKworICAgLyogVGhlICJxdWljayIgKGFrYSBwYXJ0aWFsKSBzeW1ib2wgZnVuY3Rpb25z IGZvciB0aGlzIHN5bWJvbAorICAgICAgcmVhZGVyLiAgKi8KKyAgIGNvbnN0IHN0cnVjdCBxdWlj a19zeW1ib2xfZnVuY3Rpb25zICpxZjsKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2Ri L3N5bW1pc2MuYwogaW5kZXggNGJlODEwNi4uMDgxYjUzMiAxMDA2NDQKIC0tLSBhL2dkYi9zeW1t aXNjLmMKQEAgLTc1MDcsMTAgKzEwODU3LDE4IEBAIGluZGV4IDRiZTgxMDYuLjA4MWI1MzIgMTAw NjQ0CiAgCSAgbXNfdHlwZSA9ICdTJzsKICAJICBicmVhazsKIGRpZmYgLS1naXQgYS9nZGIvc3lt dGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDYwYmM1ODUuLjVlZTA0NTkgMTAwNjQ0CitpbmRl eCA2MGJjNTg1Li43MzRkMzEyIDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5jCiArKysgYi9nZGIv c3ltdGFiLmMKLUBAIC0zMDA2LDcgKzMwMDYsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVn ZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAorQEAgLTc3 MCw2ICs3NzAsNyBAQCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQorICAg c2FsLT5lbmQgPSAwOworICAgc2FsLT5leHBsaWNpdF9wYyA9IDA7CisgICBzYWwtPmV4cGxpY2l0 X2xpbmUgPSAwOworKyAgc2FsLT5zZW1hcGhvcmUgPSAwOworIH0KKyAMCisgCitAQCAtMzAwNiw3 ICszMDA3LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudW0ga2lu ZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKICAgIHN0YXRpYyBjb25zdCBlbnVtIG1pbmlt YWxfc3ltYm9sX3R5cGUgdHlwZXMzW10KICAgICAgPSB7bXN0X2ZpbGVfZGF0YSwgbXN0X3NvbGli X3RyYW1wb2xpbmUsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKICAgIHN0YXRpYyBjb25zdCBlbnVt IG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZXM0W10KQEAgLTc1MjAsNyArMTA4NzgsNyBAQCBpbmRl eCA2MGJjNTg1Li41ZWUwNDU5IDEwMDY0NAogICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91 cnR5cGUyOwogICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUzOwogZGlmZiAtLWdp dCBhL2dkYi9zeW10YWIuaCBiL2dkYi9zeW10YWIuaAotaW5kZXggZTk0NmM2NS4uZjQwZTNkNCAx MDA2NDQKK2luZGV4IGU5NDZjNjUuLjYyMzlmN2YgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltdGFiLmgK ICsrKyBiL2dkYi9zeW10YWIuaAogQEAgLTI5MCw2ICsyOTAsOSBAQCBlbnVtIG1pbmltYWxfc3lt Ym9sX3R5cGUKQEAgLTc1MjksNDcgKzEwODg3LDY5IEBAIGluZGV4IGU5NDZjNjUuLmY0MGUzZDQg MTAwNjQ0CiAgICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhlY3V0YWJsZSBpbnN0cnVjdGlv bnMgKi8KICsgIG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1dGFibGUgY29kZSByZXR1cm5p bmcgYWRkcmVzcwogKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUgKi8KLSsgIG1zdF9zbG90X2dv dF9wbHQsCisrICBtc3Rfc2xvdF9nb3RfcGx0LAkJLyogR09UIGVudHJpZXMgZm9yIC5wbHQgc2Vj dGlvbnMgKi8KICAgIG1zdF9kYXRhLAkJCS8qIEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRhICov CiAgICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmluaXRpYWxpemVkIGRhdGEgKi8KICAgIG1z dF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChub25yZWxvY2F0YWJsZSkgKi8KLUBAIC05 NTUsMTEgKzk1OCwyNSBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqZmluZF9wY19zZWN0X2Z1bmN0 aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKLSAKLSAvKiBsb29rdXAgZnVu Y3Rpb24gZnJvbSBhZGRyZXNzLCByZXR1cm4gbmFtZSwgc3RhcnQgYWRkciBhbmQgZW5kIGFkZHIu ICAqLwotIAotLWV4dGVybiBpbnQgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIs IGNoYXIgKiosIENPUkVfQUREUiAqLAotLQkJCQkgICAgIENPUkVfQUREUiAqKTsKLStleHRlcm4g ZW51bSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb25fdHlwZQotKyAgewotKyAgICBGSU5EX1BDX1BB UlRJQUxfRlVOQ1RJT05fTk9UX0ZPVU5EID0gMCwKLSsgICAgRklORF9QQ19QQVJUSUFMX0ZVTkNU SU9OX05PUk1BTCwKLSsgICAgRklORF9QQ19QQVJUSUFMX0ZVTkNUSU9OX0dOVV9JRlVOQwotKyAg fSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiwgY2hhciAqKiwgQ09SRV9BRERS ICosIENPUkVfQUREUiAqKTsKK0BAIC05NTMsNiArOTU2LDExIEBAIGV4dGVybiBzdHJ1Y3Qgc3lt Ym9sICpmaW5kX3BjX2Z1bmN0aW9uIChDT1JFX0FERFIpOwogIAotIGV4dGVybiB2b2lkIGNsZWFy X3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IHN5bWJvbCAqZmluZF9w Y19zZWN0X2Z1bmN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKICAKLStl eHRlcm4gaW50IHJlc29sdmVfZ251X2lmdW5jIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAot KwkJCSAgICAgIENPUkVfQUREUiAqZnVuY3Rpb25fYWRkcmVzc3ApOwotKwotK2V4dGVybiBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKnJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlCi0rICAoY29uc3Qg Y2hhciAqZnVuY3Rpb25fbmFtZSk7CisrZXh0ZXJuIGludCBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rp b25fZ251X2lmdW5jIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLAorKwkJCQkJICAgICAgIENP UkVfQUREUiAqYWRkcmVzcywKKysJCQkJCSAgICAgICBDT1JFX0FERFIgKmVuZGFkZHIsCisrCQkJ CQkgICAgICAgaW50ICppc19nbnVfaWZ1bmNfcCk7CiArCi0rZXh0ZXJuIHZvaWQgZ251X2lmdW5j X3JlY29yZF9jYWNoZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCSAgICBjb25zdCBj aGFyICpmdW5jdGlvbl9uYW1lLAotKwkJCQkgICAgQ09SRV9BRERSIGZ1bmN0aW9uX2FkZHJlc3Mp OwotKwotIC8qIGxvb2t1cCBwYXJ0aWFsIHN5bWJvbCB0YWJsZSBieSBhZGRyZXNzIGFuZCBzZWN0 aW9uLiAgKi8KKyAvKiBsb29rdXAgZnVuY3Rpb24gZnJvbSBhZGRyZXNzLCByZXR1cm4gbmFtZSwg c3RhcnQgYWRkciBhbmQgZW5kIGFkZHIuICAqLwogIAotIGV4dGVybiBzdHJ1Y3Qgc3ltdGFiICpm aW5kX3BjX3NlY3Rfc3ltdGFiX3ZpYV9wYXJ0aWFsIChDT1JFX0FERFIsCi1AQCAtMTAzNCw2ICsx MDUxLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3lt Ym9sX2J5X3BjX25hbWUKKyBleHRlcm4gaW50IGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09S RV9BRERSLCBjaGFyICoqLCBDT1JFX0FERFIgKiwKK0BAIC0xMDM0LDYgKzEwNDIsMzUgQEAgZXh0 ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX25h bWUKICAKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluaW1hbF9zeW1i b2xfYnlfcGMgKENPUkVfQUREUik7CiAgCiArZXh0ZXJuIGludCBpbl9nbnVfaWZ1bmNfc3R1YiAo Q09SRV9BRERSIHBjKTsKICsKKysvKiBGdW5jdGlvbnMgZm9yIHJlc29sdmluZyBTVFRfR05VX0lG VU5DIHN5bWJvbHMgd2hpY2ggYXJlIGltcGxlbWVudGVkIG9ubHkKKysgICBmb3IgRUxGIHN5bWJv bCBmaWxlcy4gICovCisrCisrc3RydWN0IGdudV9pZnVuY19mbnMKKyt7CisrICAvKiBTZWUgZWxm X2dudV9pZnVuY19yZXNvbHZlX2FkZHIgZm9yIGl0cyByZWFsIGltcGxlbWVudGF0aW9uLiAgKi8K KysgIENPUkVfQUREUiAoKmdudV9pZnVuY19yZXNvbHZlX2FkZHIpIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIHBjKTsKKysKKysgIC8qIFNlZSBlbGZfZ251X2lmdW5jX3Jlc29s dmVfbmFtZSBmb3IgaXRzIHJlYWwgaW1wbGVtZW50YXRpb24uICAqLworKyAgaW50ICgqZ251X2lm dW5jX3Jlc29sdmVfbmFtZSkgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCisrCQkJCSBDT1JF X0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NfcCk7CisrCisrICAvKiBTZWUgZWxmX2dudV9pZnVuY19y ZXNvbHZlcl9zdG9wIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCisrICB2b2lkICgq Z251X2lmdW5jX3Jlc29sdmVyX3N0b3ApIChzdHJ1Y3QgYnJlYWtwb2ludCAqYik7CisrCisrICAv KiBTZWUgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCBmb3IgaXRzIHJlYWwgaW1w bGVtZW50YXRpb24uICAqLworKyAgdm9pZCAoKmdudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3Rv cCkgKHN0cnVjdCBicmVha3BvaW50ICpiKTsKKyt9OworKworKyNkZWZpbmUgZ251X2lmdW5jX3Jl c29sdmVfYWRkciBnbnVfaWZ1bmNfZm5zX3AtPmdudV9pZnVuY19yZXNvbHZlX2FkZHIKKysjZGVm aW5lIGdudV9pZnVuY19yZXNvbHZlX25hbWUgZ251X2lmdW5jX2Zuc19wLT5nbnVfaWZ1bmNfcmVz b2x2ZV9uYW1lCisrI2RlZmluZSBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCBnbnVfaWZ1bmNfZm5z X3AtPmdudV9pZnVuY19yZXNvbHZlcl9zdG9wCisrI2RlZmluZSBnbnVfaWZ1bmNfcmVzb2x2ZXJf cmV0dXJuX3N0b3AgXAorKyAgZ251X2lmdW5jX2Zuc19wLT5nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0 dXJuX3N0b3AKKysKKytleHRlcm4gY29uc3Qgc3RydWN0IGdudV9pZnVuY19mbnMgKmdudV9pZnVu Y19mbnNfcDsKKysKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICoKICAgICAgbG9va3Vw X21pbmltYWxfc3ltYm9sX2FuZF9vYmpmaWxlIChjb25zdCBjaGFyICosCiAgCQkJCSAgICAgICBz dHJ1Y3Qgb2JqZmlsZSAqKik7CitAQCAtMTA3Miw2ICsxMTA5LDEwIEBAIHN0cnVjdCBzeW10YWJf YW5kX2xpbmUKKyAgIENPUkVfQUREUiBlbmQ7CisgICBpbnQgZXhwbGljaXRfcGM7CisgICBpbnQg ZXhwbGljaXRfbGluZTsKKysKKysgIC8qIElmIG5vbi16ZXJvLCB0aGUgc2VtYXBob3JlIGxvY2F0 aW9uIGFzc29jaWF0ZWQgd2l0aCBhIFN5c3RlbVRhcAorKyAgICAgcHJvYmUuICAqLworKyAgQ09S RV9BRERSIHNlbWFwaG9yZTsKKyB9OworIAorIGV4dGVybiB2b2lkIGluaXRfc2FsIChzdHJ1Y3Qg c3ltdGFiX2FuZF9saW5lICpzYWwpOwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZf NjQtdmxhLXBvaW50ZXItZm9vLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAw Li44M2ZhYWY2CkBAIC04NzcyLDEzICsxMjE1MiwxMyBAQCBpbmRleCBkOGVlNWMwLi5kZTRiYTc1 IDEwMDY0NAogK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVu Yy1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjgwNTMwYQoraW5kZXggMDAwMDAwMC4uZGM2 NzEwZQogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1 bmMtbGliLmMKIEBAIC0wLDAgKzEsMzMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDA5LCAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA5LCAyMDEwLCAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKQEAgLTg4MTEsMTMgKzEyMTkxLDEzIEBAIGluZGV4IDAwMDAwMDAuLjY4MDUz MGEKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi4xMDYyNzFmCitpbmRleCAwMDAwMDAwLi4wZWU3NDFmCiAtLS0gL2Rl di9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCiBAQCAtMCww ICsxLDYxIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4KICsKLSsgICBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC04 ODc4LDExICsxMjI1OCwxMSBAQCBpbmRleCAwMDAwMDAwLi4xMDYyNzFmCiArfQogZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ251LWlmdW5jLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLmRlNTk3ODUKK2luZGV4IDAwMDAwMDAuLjRmY2MzYmYKIC0tLSAvZGV2L251bGwKICsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAotQEAgLTAsMCArMSwxMzAgQEAK LSsjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KK0BAIC0wLDAgKzEsMTQ2IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKQEAgLTg5MTEsNyArMTIyOTEsNyBAQCBpbmRleCAwMDAwMDAwLi5kZTU5Nzg1CiAr c2V0IGxpYmZpbGUgIiR7dGVzdGZpbGV9LWxpYiIKICtzZXQgbGlic3JjICR7bGliZmlsZX0uYwog K3NldCBsaWJfc28gJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2xpYmZpbGV9LnNvCi0rIyAkbGliX28g bXVzdCBub3QgaGF2ZSB7ZGVidWd9LCBpdCB3b3VsZCBvdmVycmlkZSB0aGUgZ251LWlmdW5jIEVM RiBtYXJrZXJzLgorKyMgJGxpYl9vIG11c3Qgbm90IGhhdmUge2RlYnVnfSwgaXQgd291bGQgb3Zl cnJpZGUgdGhlIFNUVF9HTlVfSUZVTkMgRUxGIG1hcmtlcnMuCiArc2V0IGxpYl9vICR7b2JqZGly fS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5vCiArCiArIyBXZSBuZWVkIERXQVJGIGZvciB0aGUgImZp bmFsIiBmdW5jdGlvbiBhcyB3ZSAic3RlcCIgaW50byB0aGUgZnVuY3Rpb24gYW5kIEdEQgpAQCAt ODkxOSwxMyArMTIyOTksMTQgQEAgaW5kZXggMDAwMDAwMC4uZGU1OTc4NQogKyMgaW5mb3JtYXRp b24gKERXQVJGKSBhdmFpbGFibGUuCiArIwogKyMgV2UgbXVzdCBub3QgaGF2ZSBEV0FSRiBmb3Ig dGhlICJnbnVfaWZ1bmMiIGZ1bmN0aW9uIGFzIERXQVJGIGhhcyBubyB3YXkgdG8KLSsjIGV4cHJl c3MgdGhlIGdudS1pZnVuYyB0eXBlIGFuZCBpdCB3b3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgcmVn dWxhciBmdW5jdGlvbgotKyMgZHVlIHRvIERXQVJGIGJ5IEdEQi4gIEluIEVMRiBnbnUtaWZ1bmMg aXMgZXhwcmVzc2VkIGJ5IHRoZSBTVFRfR05VX0lGVU5DIHR5cGUuCisrIyBleHByZXNzIHRoZSBT VFRfR05VX0lGVU5DIHR5cGUgYW5kIGl0IHdvdWxkIGJlIGNvbnNpZGVyZWQgYXMgYSByZWd1bGFy CisrIyBmdW5jdGlvbiBkdWUgdG8gRFdBUkYgYnkgR0RCLiAgSW4gRUxGIGdudS1pZnVuYyBpcyBl eHByZXNzZWQgYnkgdGhlCisrIyBTVFRfR05VX0lGVU5DIHR5cGUuCiArIwogKyMgQm90aCBmdW5j dGlvbnMgbmVlZCB0byBiZSBpbiB0aGUgc2FtZSBzaGFyZWQgbGlicmFyeSBmaWxlIGJ1dAogKyMg Z2RiX2NvbXBpbGVfc2hsaWIgaGFzIG5vIHdheSB0byBzcGVjaWZ5IHNvdXJjZS1zcGVjaWZpYyBj b21waWxhdGlvbiBvcHRpb25zLgogKyMKLSsjIFRoZXJlZm9yZSAkbGliZmlsZSBjb250YWlucyBv bmx5IHRoZSBnbnUtaWZ1bmMgZnVuY3Rpb24gd2l0aCBubyBEV0FSRgorKyMgVGhlcmVmb3JlICRs aWJmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24gd2l0aCBubyBE V0FSRgogKyMgcmVmZXJlbmNpbmcgYWxsIHRoZSBvdGhlciBwYXJ0cyBmcm9tIHRoZSBtYWluIGV4 ZWN1dGFibGUgd2l0aCBEV0FSRi4KICsKICtzZXQgbGliX29wdHMge30KQEAgLTg5MzYsMTAgKzEy MzE3LDggQEAgaW5kZXggMDAwMDAwMC4uZGU1OTc4NQogK30KICsKICtpZiB7IFtnZGJfY29tcGls ZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxpYl9zbyAkbGliX29wdHNdICE9 ICIiCi0rICAgICB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kc3JjZmlsZSAk YmluZmlsZSBleGVjdXRhYmxlICRleGVjX29wdHNdICE9ICIiCi0rICAgICB8fCBbZ2RiX2NvbXBp bGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfbyBvYmplY3Qge31dICE9ICIiCi0r ICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHNyY2ZpbGUgJGxpYl9v IiAkc3RhdGljYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIifSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZCBub3QgY29tcGlsZSBlaXRoZXIgJGxpYnNyYyBvciAkc3JjZmlsZS4iCisrICAg ICB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kc3JjZmlsZSAkYmluZmlsZSBl eGVjdXRhYmxlICRleGVjX29wdHNdICE9ICIifSB7CisrICAgIHVudGVzdGVkICJDb3VsZCBub3Qg Y29tcGlsZSBkeW5hbWljIGV4ZWN1dGFibGUgJGJpbmZpbGUuIgogKyAgICByZXR1cm4gLTEKICt9 CiArCkBAIC04OTg2LDEwICsxMjM2NSwxOCBAQCBpbmRleCAwMDAwMDAwLi5kZTU5Nzg1CiArZ2Ri X3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGluICspP2ZpbmFsIFxcKC4qIiAibmV4 dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCiArCiArCi0rIyBDaGVjayBhbnkgY29tbWFuZHMgbm90 IGRvaW5nIGFuIGluZmVyaW9yIGNhbGwgc3RpbGwgY29tcHV0ZSB3aXRoIGFkZHJlc3Mgb2YKLSsj IHRoZSBnbnUtaWZ1bmMgcmVzb2x2ZXIuCisrIyBDaGVjayBhbnkgY29tbWFuZHMgbm90IGRvaW5n IGFuIGluZmVyaW9yIGNhbGwgYWNjZXNzIHRoZSBhZGRyZXNzIG9mIHRoZQorKyMgU1RUX0dOVV9J RlVOQyByZXNvbHZlciwgbm90IHRoZSB0YXJnZXQgZnVuY3Rpb24uCisrCisraWYge1tpc3Rhcmdl dCBwb3dlcnBjNjQtKl0gJiYgW2lzX2xwNjRfdGFyZ2V0XX0geworKyAgICAjIFdpdGggb25seSBt aW5pbWFsIHN5bWJvbHMgR0RCIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiBkZXNjcmlwdG9ycy4gIFdp dGgKKysgICAgIyBmdWxsIGRlYnVnIGluZm8gdGhlIGZ1bmN0aW9uIGNvZGUgd291bGQgYmUgZGlz cGxheWVkLgorKyAgICBzZXQgZnVuY19wcmVmaXgge1wufQorK30gZWxzZSB7CisrICAgIHNldCBm dW5jX3ByZWZpeCB7fQorK30KICsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7PHRleHQg Z251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhcWzAtOWEt ZlxdKyA8Z251X2lmdW5jPiIgInAgZ251X2lmdW5jIGV4ZWN1dGluZyIKKytnZGJfdGVzdCAicCBn bnVfaWZ1bmMiICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBk ZWJ1ZyBpbmZvPn0gMHhcWzAtOWEtZlxdKyA8JHtmdW5jX3ByZWZpeH1nbnVfaWZ1bmM+IiAicCBn bnVfaWZ1bmMgZXhlY3V0aW5nIgogK2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVf aWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBleGVjdXRpbmciCiArCiAr c2V0IHRlc3QgImluZm8gYWRkciBnbnVfaWZ1bmMiCkBAIC05MDA1LDYgKzEyMzkyLDE1IEBAIGlu ZGV4IDAwMDAwMDAuLmRlNTk3ODUKICsjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93 X2J1Zy5jZ2k/aWQ9NjI0OTY3CiArCiAraWYgIVt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiX3N0dWJd IHsKKysKKysgICAgIyBDb21waWxlICRzdGF0aWNiaW5maWxlIHNlcGFyYXRlbHkgYXMgaXQgbWF5 IGV4aXQgb24gZXJyb3IgKGxkLzEyNTk1KS4KKysKKysgICAgaWYgeyBbZ2RiX2NvbXBpbGUgJHtz cmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfbyBvYmplY3Qge31dICE9ICIiCisrCSB8fCBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHNyY2ZpbGUgJGxpYl9vIiAkc3RhdGlj YmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworKwl1bnRlc3RlZCAiQ291bGQg bm90IGNvbXBpbGUgc3RhdGljIGV4ZWN1dGFibGUgJHN0YXRpY2JpbmZpbGUuIgorKwlyZXR1cm4g LTEKKysgICAgfQorKwogKyAgICBjbGVhbl9yZXN0YXJ0ICRzdGF0aWNleGVjdXRhYmxlCiArCiAr ICAgIGdkYl9icmVha3BvaW50ICJnbnVfaWZ1bmMiCkBAIC05MDcwLDYgKzEyNDY2LDE1OSBAQCBp bmRleCAwMDAwMDAwLi42ZDgyZTczCiArCiArZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3Rh dGljc3RydWN0fQogK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi40N2U0YjM5CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3N0YXAtcHJvYmUuYworQEAgLTAsMCArMSw2OSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLworKworKyNpZiBVU0VfUFJPQkVTCisrCisrI2RlZmluZSBfU0RUX0hBU19T RU1BUEhPUkVTCisrX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV91c2VyX3NlbWFw aG9yZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIu cHJvYmVzIikpKTsKKysjZGVmaW5lIFRFU1QgdGVzdGVfdXNlcl9zZW1hcGhvcmUKKysKKytfX2V4 dGVuc2lvbl9fIHVuc2lnbmVkIHNob3J0IHRlc3RlX3R3b19zZW1hcGhvcmUgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7CisrI2Rl ZmluZSBURVNUMiB0ZXN0ZV90d29fc2VtYXBob3JlCisrCisrI2Vsc2UKKysKKysjZGVmaW5lIFRF U1QgMQorKyNkZWZpbmUgVEVTVDIgMQorKworKyNlbmRpZgorKworKyNpbmNsdWRlIDxzeXMvc2R0 Lmg+CisrCisrLyogV2Ugb25seSBzdXBwb3J0IFN5c3RlbVRhcCBhbmQgb25seSB0aGUgdjMgZm9y bS4gICovCisrI2lmIF9TRFRfTk9URV9UWVBFICE9IDMKKysjZXJyb3IgIm5vdCB1c2luZyBTeXN0 ZW1UYXAgdjMgcHJvYmVzIgorKyNlbmRpZgorKworK3ZvaWQKKyttMSAodm9pZCkKKyt7CisrICBp ZiAoVEVTVDIpCisrICAgIFNUQVBfUFJPQkUgKHRlc3RlLCB0d28pOworK30KKysKKyt2b2lkCisr bTIgKHZvaWQpCisreworKyAgaWYgKFRFU1QyKQorKyAgICBTVEFQX1BST0JFICh0ZXN0ZSwgdHdv KTsKKyt9CisrCisraW50CisrZiAoaW50IHgpCisreworKyAgaWYgKFRFU1QpCisrICAgIFNUQVBf UFJPQkUxKHRlc3RlLCB1c2VyLCB4KTsKKysgIHJldHVybiB4KzU7CisrfQorKworK2ludAorK21h aW4oKQorK3sKKysgIGYoZigyMykpOworKyAgbTEoKTsKKysgIG0yKCk7CisrfQorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uYmMzZDQwYworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9zdGFwLXByb2JlLmV4cAorQEAgLTAsMCArMSw3MiBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgc3RhcC1wcm9iZQorKworKyMgUnVuIHRoZSB0ZXN0 cy4gIFdlIHJ1biB0aGUgdGVzdHMgdHdvIGRpZmZlcmVudCB3YXlzOiBvbmNlIHdpdGggYQorKyMg cGxhaW4gcHJvYmUsIGFuZCBvbmNlIHdpdGggYSBwcm9iZSB0aGF0IGhhcyBhbiBhc3NvY2lhdGVk IHNlbWFwaG9yZS4KKysjIFRoaXMgcmV0dXJucyAtMSBvbiBmYWlsdXJlIHRvIGNvbXBpbGUgb3Ig c3RhcnQsIDAgb3RoZXJ3aXNlLgorK3Byb2Mgc3RhcF90ZXN0IHt7YXJnICIifX0geworKyAgICBn bG9iYWwgdGVzdGZpbGUgaGV4CisrCisrICAgIGlmIHskYXJnICE9ICIifSB7CisrICAgIAlzZXQg YXJnICJhZGRpdGlvbmFsX2ZsYWdzPSRhcmciCisrCXNldCBhZGRlbmR1bSAiLCB3aXRoIHNlbWFw aG9yZSIKKysgICAgfSBlbHNlIHsKKysJc2V0IGFkZGVuZHVtICIsIG5vIHNlbWFwaG9yZSIKKysg ICAgfQorKworKyAgICBpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7 dGVzdGZpbGV9ICR7dGVzdGZpbGV9LmMgXAorKwkgICBbY29uY2F0ICRhcmcgZGVidWddXX0gewor KwlyZXR1cm4gLTEKKysgICAgfQorKworKyAgICBpZiAhW3J1bnRvX21haW5dIHsKKysJcmV0dXJu IC0xCisrICAgIH0KKysKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICJObyBT eXN0ZW1UYXAgcHJvYmUgYXQgUEMgJGhleCIgXAorKwkiY2hlY2sgYXJndW1lbnQgbm90IGF0IHBy b2JlIHBvaW50JGFkZGVuZHVtIgorKworKyAgICBnZGJfdGVzdCAiaW5mbyBwcm9iZXMiIFwKKysJ InRlc3RlICp1c2VyICokaGV4IC4qIiBcCisrCSJpbmZvIHByb2JlcyRhZGRlbmR1bSIKKysgICAg CisrICAgIGlmIHtbcnVudG8gInByb2JlOnRlc3RlOnVzZXIiXX0geworKwlwYXNzICJydW4gdG8g cHJvYmU6dGVzdGU6dXNlciRhZGRlbmR1bSIKKysgICAgfSBlbHNlIHsKKysJZmFpbCAicnVuIHRv IHByb2JlOnRlc3RlOnVzZXIkYWRkZW5kdW0iCisrICAgIH0KKysKKysgICAgIyBUZXN0IHByb2Jl IGFyZ3VtZW50cy4KKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAxIiAi cHJpbnQgXCRfcHJvYmVfYXJnYyRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3By b2JlX2FyZzAgPT0geCIgIiA9IDEiICJjaGVjayBcJF9wcm9iZV9hcmcwJGFkZGVuZHVtIgorKyAg ICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMSIgXAorKyAgICAJIkludmFsaWQgcHJvYmUg YXJndW1lbnQgMSAtLSBwcm9iZSBoYXMgMSBhcmd1bWVudHMgYXZhaWxhYmxlIiBcCisrICAgIAki Y2hlY2sgXCRfcHJvYmVfYXJnMSRhZGRlbmR1bSIKKysKKysgICAgIyBTZXQgYSBicmVha3BvaW50 IHdpdGggbXVsdGlwbGUgcHJvYmUgbG9jYXRpb25zLgorKyAgICBnZGJfdGVzdCAiYnJlYWsgcHJv YmU6dGVzdGU6dHdvIiBcCisrCSJCcmVha3BvaW50IC4qIGF0ICRoZXguKkJyZWFrcG9pbnQgLiog YXQgJGhleC4qIiBcCisrCSJzZXQgbXVsdGktbG9jYXRpb24gcHJvYmUgYnJlYWtwb2ludCRhZGRl bmR1bSIKKysKKysgICAgcmV0dXJuIDAKKyt9CisrCisraWYge1tzdGFwX3Rlc3RdID09IC0xfSB7 CisrICAgIHVudGVzdGVkIHN0YXAtcHJvYmUuZXhwCisrICAgIHJldHVybiAtMQorK30KKytzdGFw X3Rlc3QgIi1EVVNFX1BST0JFUyIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwog bmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmM1ZDVlZTAKQEAgLTkzNTIsMTMg KzEyOTAxLDEzIEBAIGluZGV4IDAwMDAwMDAuLjVkYTczNzgKICtnZGJfdGVzdCAicCB0ZW1wMyIg IiA9ICczJyA8cmVwZWF0cyA0OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAzIgogZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuYwogbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLjAzMWVmOTIKK2luZGV4IDAwMDAwMDAuLjIwYzk5MjkKIC0tLSAv ZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUu YwogQEAgLTAsMCArMSwzMyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCiArCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtOTM5 MSwxMSArMTI5NDAsMTEgQEAgaW5kZXggMDAwMDAwMC4uMDMxZWY5MgogK30KIGRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uNDViYzY1MAoraW5kZXggMDAwMDAwMC4uN2FhZGY0ZQogLS0tIC9k ZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5l eHAKIEBAIC0wLDAgKzEsMzggQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTk0MzMs NiArMTI5ODIsMjggQEAgaW5kZXggMDAwMDAwMC4uNDViYzY1MAogK2dkYl90ZXN0ICJ3YXRjaCB4 IiB7V2F0Y2hwb2ludCBbMC05XSs6IHh9CiArCiArZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkZWxldGUg JGJwbnVtfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVydGhyb3cu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKK2luZGV4IDg5YzAy ZDYuLmE5NzBiYjkgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRo cm93LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKK0BA IC01Myw2ICs1MywxNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hv b2siICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayIgeworICAgICB9CisgfQorIGlmIHshJG9rfSB7 CisrICAgIGdkYl90ZXN0X211bHRpcGxlICJpbmZvIHByb2JlIiAiY2hlY2sgZm9yIHN0YXAgcHJv YmUgaW4gdW53aW5kZXIiIHsKKysJLXJlICIuKmxpYmdjYy4qdW53aW5kLipcclxuJGdkYl9wcm9t cHQgJCIgeworKwkgICAgcGFzcyAiY2hlY2sgZm9yIHN0YXAgcHJvYmUgaW4gdW53aW5kZXIiCisr CSAgICBzZXQgb2sgMQorKwl9CisrCS1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJfQorKyAg ICB9CisrfQorKworK2lmIHshJG9rfSB7CisgICAgIHVuc3VwcG9ydGVkICJuZXh0b3ZlcnRocm93 LmV4cCBjb3VsZCBub3QgZmluZCBfVW53aW5kX0RlYnVnSG9vayIKKyAgICAgcmV0dXJuIC0xCisg fQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlz dC5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5hYWMzYmFhCkBAIC0xMDY5Nyw2ICsxNDI2 OCwxMDEgQEAgaW5kZXggMzBhNzFkZC4uNGJiOGU3ZCAxMDA2NDQKICAJICAgIC1yZSAiLipwcmVf c3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7 CiAgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51 cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKICAJCXNldCBjb21tYW5kICJuZXh0IgorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi5lYmNlZDNjCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYworQEAgLTAsMCArMSwyNiBAQAorKy8qIENv cHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisrCisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysg IGNoYXIgdmxhW2FyZ2NdOworKworKyAgdmxhWzBdID0gMDsJLyogYnJlYWstaGVyZSAqLworKwor KyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12 YXItc3RhbGUtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5 cGUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNzRhMTA0ZQorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBl LmV4cAorQEAgLTAsMCArMSw1NyBAQAorKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKyts b2FkX2xpYiBtaS1zdXBwb3J0LmV4cAorK3NldCBNSUZMQUdTICItaT1taTIiCisrCisrZ2RiX2V4 aXQKKytpZiBbbWlfZ2RiX3N0YXJ0XSB7CisrICAgIGNvbnRpbnVlCisrfQorKworK3NldCB0ZXN0 ZmlsZSAibWkyLXZhci1zdGFsZS10eXBlIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytz ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYge1tidWlsZF9l eGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGVdID09IC0xfSB7Cisr ICAgIHJldHVybiAtMQorK30KKysKKyttaV9kZWxldGVfYnJlYWtwb2ludHMKKyttaV9nZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyttaV9nZGJfbG9hZCAke2JpbmZpbGV9Cisr CisrbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNl dCBpbnRlcm5hbC1lcnJvciBxdWl0IHllcyJ9IFwKKysgIHtcXmRvbmV9IFwKKysgICJtYWludGVu YW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMiCisrCisrbWlfZ2RiX3Rlc3Qgey1pbnRl cnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBjb3Jl ZmlsZSB5ZXMifSBcCisrICB7XF5kb25lfSBcCisrICAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFs LWVycm9yIGNvcmVmaWxlIHllcyIKKysKKytzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAi YnJlYWstaGVyZSJdCisrc2V0IGZ1bmMgIm1haW4iCisrCisrbWlfZ2RiX3Rlc3QgIi1icmVhay1p bnNlcnQgLXQgJHNyY2ZpbGU6JGxpbmUiIFwKKysgICJcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCJc WzAtOVxdK1wiLHR5cGU9XCJicmVha3BvaW50XCIsZGlzcD1cImRlbFwiLGVuYWJsZWQ9XCJ5XCIs YWRkcj1cIiRoZXhcIixmdW5jPVwiJGZ1bmNcKFxcXCguKlxcXClcKT9cIixmaWxlPVwiLipcIixs aW5lPVwiJGxpbmVcIix0aW1lcz1cIjBcIixvcmlnaW5hbC1sb2NhdGlvbj1cIi4qXCJcfSIgXAor KyAgImJyZWFrcG9pbnQgYXQgJGZ1bmMiCisrCisraWYgeyBbbWlfcnVuX2NtZF0gPCAwIH0gewor KyAgICByZXR1cm4gLTEKKyt9CisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAkZnVu YyAiLioiICIuKiIgIlxbMC05XF0rIiB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInN0b3AgYWZ0ZXIg aW5pdGlhbGl6aW5nIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqICJ2bGEiICJ2bGEiICJjcmVh dGUgbG9jYWwgdmFyaWFibGUgdmxhIgorKworK21pX2dkYl90ZXN0ICItdmFyLXVwZGF0ZSAqIiAi XFxeZG9uZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKIGRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAw MDAwMDAwLi4xNTNjMThiCkBAIC0xMTg4MSwxMSArMTU1NDcsMTEgQEAgaW5kZXggMDAwMDAwMC4u MzFmNzY1NgogK2V4dGVybiB2b2lkIG1hcmtlciAodm9pZCk7CiArZXh0ZXJuIHZvaWQgZm9ya29m ZiAoaW50IG5yKTsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotaW5kZXggNDRkNDQ5YS4uZDhjNTBmMiAxMDA2NDQKK2lu ZGV4IDZhMmYxYTIuLmM3NWE3ZjAgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1AQCAtMTQwLDYgKzE0MCwxMSBA QCBwcm9jIGdkYl91bmxvYWQge30gewotIAkJdmVyYm9zZSAiXHRcdEtpbGxpbmcgcHJldmlvdXMg cHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCIKK0BAIC0xNDEsNiArMTQxLDExIEBAIHByb2MgZ2RiX3Vu bG9hZCB7fSB7CisgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVlCiAgCX0K ICsJLXJlICJBIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4uKkFyZSB5b3Ugc3Vy ZSB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGZpbGUuKnkgb3Igbi4gJCJcCkBAIC0xMTkzMSw4ICsx NTU5Nyw0MyBAQCBpbmRleCA4OTFkYTM3Li4yMzZjNWNhIDEwMDY0NAogICAgICB9CiAgICAgIHNl dCBwYXNjYWxfaW5pdF9kb25lIDEKICB9ICAgCitkaWZmIC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIv Z2RiL3RocmVhZC5jCitpbmRleCA2YWQxODA3Li45MWZlMDU2IDEwMDY0NAorLS0tIGEvZ2RiL3Ro cmVhZC5jCisrKysgYi9nZGIvdGhyZWFkLmMKK0BAIC0xNDM4LDcgKzE0MzgsOCBAQCB1cGRhdGVf dGhyZWFkX2xpc3QgKHZvaWQpCisgICAgbm8gdGhyZWFkIGlzIHNlbGVjdGVkLCBvciBubyB0aHJl YWRzIGV4aXN0LiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IHZhbHVlICoKKy10aHJlYWRfaWRfbWFr ZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFy KQorK3RocmVhZF9pZF9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IGludGVybmFsdmFyICp2YXIsCisrCQkgICAgICB2b2lkICppZ25vcmUpCisgeworICAgc3RydWN0 IHRocmVhZF9pbmZvICp0cCA9IGZpbmRfdGhyZWFkX3B0aWQgKGluZmVyaW9yX3B0aWQpOworIAor QEAgLTE0NDksNiArMTQ1MCwxMyBAQCB0aHJlYWRfaWRfbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQorIC8qIENvbW1hbmRzIHdpdGgg YSBwcmVmaXggb2YgYHRocmVhZCcuICAqLworIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICp0aHJl YWRfY21kX2xpc3QgPSBOVUxMOworIAorK3N0YXRpYyBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3Mg dGhyZWFkX2Z1bmNzID0KKyt7CisrICB0aHJlYWRfaWRfbWFrZV92YWx1ZSwKKysgIE5VTEwsCisr ICBOVUxMCisrfTsKKysKKyB2b2lkCisgX2luaXRpYWxpemVfdGhyZWFkICh2b2lkKQorIHsKK0BA IC0xNDk0LDUgKzE1MDIsNSBAQCBTaG93IHByaW50aW5nIG9mIHRocmVhZCBldmVudHMgKHN1Y2gg YXMgdGhyZWFkIHN0YXJ0IGFuZCBleGl0KS4iKSwgTlVMTCwKKyAgICAgICAgICBzaG93X3ByaW50 X3RocmVhZF9ldmVudHMsCisgICAgICAgICAgJnNldHByaW50bGlzdCwgJnNob3dwcmludGxpc3Qp OworIAorLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90aHJlYWQiLCB0aHJlYWRf aWRfbWFrZV92YWx1ZSk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RocmVh ZCIsICZ0aHJlYWRfZnVuY3MsIE5VTEwpOworIH0KIGRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9n ZGIvdG9wLmMKLWluZGV4IGRmMmIxNjMuLjYwNjFiMzMgMTAwNjQ0CitpbmRleCBhMjU1NTBmLi44 N2YwYjQxIDEwMDY0NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMKIEBAIC0zNDMs NiArMzQzLDkgQEAgdm9pZApAQCAtMTE5NDUsNiArMTU2NDYsNDMgQEAgaW5kZXggZGYyYjE2My4u NjA2MWIzMyAxMDA2NDQKICAKICAgIC8qIFdpdGggbXVsdGlwbGUgdGhyZWFkcyBydW5uaW5nIHdo aWxlIHRoZSBvbmUgd2UncmUgZXhhbWluaW5nIGlzCiAgICAgICBzdG9wcGVkLCB0aGUgZGNhY2hl IGNhbiBnZXQgc3RhbGUgd2l0aG91dCB1cyBiZWluZyBhYmxlIHRvIGRldGVjdAorZGlmZiAtLWdp dCBhL2dkYi90cmFjZXBvaW50LmMgYi9nZGIvdHJhY2Vwb2ludC5jCitpbmRleCAzYWUzNWQwLi5l MWQyZTgyIDEwMDY0NAorLS0tIGEvZ2RiL3RyYWNlcG9pbnQuYworKysrIGIvZ2RiL3RyYWNlcG9p bnQuYworQEAgLTQ0OTcsNyArNDQ5Nyw4IEBAIGluZm9fc3RhdGljX3RyYWNlcG9pbnRfbWFya2Vy c19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAgICBhdmFpbGFibGUuICAqLwor IAorIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXNkYXRhX21ha2VfdmFsdWUgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKKytzZGF0YV9tYWtlX3ZhbHVl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIsCisrCQkg IHZvaWQgKmlnbm9yZSkKKyB7CisgICBMT05HRVNUIHNpemU7CisgICBnZGJfYnl0ZSAqYnVmOwor QEAgLTQ2NzYsNiArNDY3NywxMyBAQCB0cmFjZWZyYW1lX2F2YWlsYWJsZV9tZW1vcnkgKFZFQyht ZW1fcmFuZ2VfcykgKipyZXN1bHQsCisgICByZXR1cm4gMDsKKyB9CisgCisrc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyBzZGF0YV9mdW5jcyA9CisreworKyAgc2RhdGFfbWFr ZV92YWx1ZSwKKysgIE5VTEwsCisrICBOVUxMCisrfTsKKysKKyAvKiBtb2R1bGUgaW5pdGlhbGl6 YXRpb24gKi8KKyB2b2lkCisgX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkKK0BAIC00Njg2 LDcgKzQ2OTQsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQorICAgICAgdmFsdWUg d2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCisg ICAgICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBz dXJlIHRoZXJlCisgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRo ZSBzYW1lIG5hbWUuICAqLworLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9zZGF0 YSIsIHNkYXRhX21ha2VfdmFsdWUpOworKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAo Il9zZGF0YSIsICZzZGF0YV9mdW5jcywgTlVMTCk7CisgCisgICB0cmFjZWZyYW1lX251bWJlciA9 IC0xOworICAgdHJhY2Vwb2ludF9udW1iZXIgPSAtMTsKIGRpZmYgLS1naXQgYS9nZGIvdHlwZXBy aW50LmMgYi9nZGIvdHlwZXByaW50LmMKIGluZGV4IDAzZTYzMzIuLmNlNmQxZTAgMTAwNjQ0CiAt LS0gYS9nZGIvdHlwZXByaW50LmMKQEAgLTEyMDAzLDcgKzE1NzQxLDcgQEAgaW5kZXggMDNlNjMz Mi4uY2U2ZDFlMCAxMDA2NDQKICAKICBzdGF0aWMgdm9pZAogZGlmZiAtLWdpdCBhL2dkYi91dGls cy5jIGIvZ2RiL3V0aWxzLmMKLWluZGV4IDkxZTZhZjQuLjg4YjgyZjUgMTAwNjQ0CitpbmRleCBl Njg4ZDE5Li5mMWZjNTA3IDEwMDY0NAogLS0tIGEvZ2RiL3V0aWxzLmMKICsrKyBiL2dkYi91dGls cy5jCiBAQCAtMjI0Myw2ICsyMjQzLDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFu dXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCkBAIC0xMjA3MSw3ICsxNTgwOSw3IEBAIGluZGV4 IDY4ZjY0OWYuLmFhYTQ0ODcgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMu YyBiL2dkYi92YWxvcHMuYwotaW5kZXggMGMwN2U1Yy4uNTc0OWNjZSAxMDA2NDQKK2luZGV4IGI5 ZjU1MDguLjFiN2VkNzYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92YWxv cHMuYwogQEAgLTQ3LDYgKzQ3LDcgQEAKQEAgLTEyMTc0LDcgKzE1OTEyLDcgQEAgaW5kZXggMGMw N2U1Yy4uNTc0OWNjZSAxMDA2NDQKICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFs KSA9PSBsdmFsX3JlZ2lzdGVyKQogICAgICB7Ci1AQCAtMTUyMCw3ICsxNTg4LDE4IEBAIGFkZHJl c3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQorQEAg LTE1MjgsNyArMTU5NiwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21l bW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTEyMTk0LDcgKzE1OTMyLDcgQEAgaW5kZXggMGMw N2U1Yy4uNTc0OWNjZSAxMDA2NDQKICAKICAgICAgICByZXR1cm4gdmFsdWVfZnJvbV9wb2ludGVy IChsb29rdXBfcG9pbnRlcl90eXBlICh0eXBlKSwgYWRkcik7CiAgICAgIH0KLUBAIC0xNjI3LDYg KzE3MDYsNyBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTE2MzUsNiArMTcxNCw3IEBAIHN0cnVjdCB2 YWx1ZSAqCiAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgewogICAg c3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CkBA IC0xMjIwMiw3ICsxNTk0MCw3IEBAIGluZGV4IDBjMDdlNWMuLjU3NDljY2UgMTAwNjQ0CiAgCiAg ICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21ldGhpbmcgcmVxdWlyaW5nIGEgcG9pbnRl ciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gcHVzaGVkIHRvIHRo ZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE2MzYsOCArMTcxNiwxMiBAQCB2YWx1ZV9j b2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKK0BAIC0xNjQ0LDggKzE3MjQsMTIgQEAg dmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgICBpZiAoVkFMVUVfTFZB TCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2Ug YWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikpOwogIApAQCAtMTIyMTYs NyArMTU5NTQsNyBAQCBpbmRleCAwYzA3ZTVjLi41NzQ5Y2NlIDEwMDY0NAogIH0KICAKICAvKiBH aXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlz IGEgcG9pbnRlcgotQEAgLTM2ODAsNiArMzc2NCw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMzY4OCw2ICszNzcyLDgg QEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxl bmd0aCkKICAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91 bmQsIAogIAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsKQEAgLTEyMjk5LDcgKzE2MDM3LDcg QEAgaW5kZXggMjg2ZWY5ZS4uMWZlNThiMSAxMDA2NDQKICAKICAvKiBSZWFkIExFTiBieXRlcyBv ZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUKIGRpZmYgLS1n aXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCAyYWNiMWRmLi5kMWRiOGY1IDEw MDY0NAoraW5kZXggMmFjYjFkZi4uYWJlNzc0ZSAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5jCiAr KysgYi9nZGIvdmFsdWUuYwogQEAgLTQzLDYgKzQzLDcgQEAKQEAgLTEyMzcxLDcgKzE2MTA5LDg2 IEBAIGluZGV4IDJhY2IxZGYuLmQxZGI4ZjUgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlh Ymxlcy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQg aG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTk2Myw2ICsx OTk4LDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAorQEAgLTE1MzAsNyArMTU2NSwxNCBAQCBzdHJ1Y3QgaW50ZXJuYWx2YXIKKyAgICAgICBzdHJ1 Y3QgdmFsdWUgKnZhbHVlOworIAorICAgICAgIC8qIFRoZSBjYWxsLWJhY2sgcm91dGluZSB1c2Vk IHdpdGggSU5URVJOQUxWQVJfTUFLRV9WQUxVRS4gICovCistICAgICAgaW50ZXJuYWx2YXJfbWFr ZV92YWx1ZSBtYWtlX3ZhbHVlOworKyAgICAgIHN0cnVjdAorKyAgICAgICAgeworKwkgIC8qIFRo ZSBmdW5jdGlvbnMgdG8gY2FsbC4gICovCisrCSAgY29uc3Qgc3RydWN0IGludGVybmFsdmFyX2Z1 bmNzICpmdW5jdGlvbnM7CisrCisrCSAgLyogVGhlIGZ1bmN0aW9uJ3MgdXNlci1kYXRhLiAgKi8K KysJICB2b2lkICpkYXRhOworKyAgICAgICAgfSBtYWtlX3ZhbHVlOworIAorICAgICAgIC8qIFRo ZSBpbnRlcm5hbCBmdW5jdGlvbiB1c2VkIHdpdGggSU5URVJOQUxWQVJfRlVOQ1RJT04uICAqLwor ICAgICAgIHN0cnVjdAorQEAgLTE2MjksMTggKzE2NzEsMzcgQEAgY3JlYXRlX2ludGVybmFsdmFy IChjb25zdCBjaGFyICpuYW1lKQorIC8qIENyZWF0ZSBhbiBpbnRlcm5hbCB2YXJpYWJsZSB3aXRo IG5hbWUgTkFNRSBhbmQgcmVnaXN0ZXIgRlVOIGFzIHRoZQorICAgIGZ1bmN0aW9uIHRoYXQgdmFs dWVfb2ZfaW50ZXJuYWx2YXIgdXNlcyB0byBjcmVhdGUgYSB2YWx1ZSB3aGVuZXZlcgorICAgIHRo aXMgdmFyaWFibGUgaXMgcmVmZXJlbmNlZC4gIE5BTUUgc2hvdWxkIG5vdCBub3JtYWxseSBpbmNs dWRlIGEKKy0gICBkb2xsYXIgc2lnbi4gICovCisrICAgZG9sbGFyIHNpZ24uICBEQVRBIGlzIHBh c3NlZCB1bmludGVycHJldGVkIHRvIEZVTiB3aGVuIGl0IGlzCisrICAgY2FsbGVkLiAgQ0xFQU5V UCwgaWYgbm90IE5VTEwsIGlzIGNhbGxlZCB3aGVuIHRoZSBpbnRlcm5hbCB2YXJpYWJsZQorKyAg IGlzIGRlc3Ryb3llZC4gIEl0IGlzIHBhc3NlZCBEQVRBIGFzIGl0cyBvbmx5IGFyZ3VtZW50LiAg Ki8KKyAKKyBzdHJ1Y3QgaW50ZXJuYWx2YXIgKgorLWNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xh enkgKGNoYXIgKm5hbWUsIGludGVybmFsdmFyX21ha2VfdmFsdWUgZnVuKQorK2NyZWF0ZV9pbnRl cm5hbHZhcl90eXBlX2xhenkgKGNvbnN0IGNoYXIgKm5hbWUsCisrCQkJICAgICAgY29uc3Qgc3Ry dWN0IGludGVybmFsdmFyX2Z1bmNzICpmdW5jcywKKysJCQkgICAgICB2b2lkICpkYXRhKQorIHsK KyAgIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyID0gY3JlYXRlX2ludGVybmFsdmFyIChuYW1lKTsK KyAKKyAgIHZhci0+a2luZCA9IElOVEVSTkFMVkFSX01BS0VfVkFMVUU7CistICB2YXItPnUubWFr ZV92YWx1ZSA9IGZ1bjsKKysgIHZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9ucyA9IGZ1bmNzOwor KyAgdmFyLT51Lm1ha2VfdmFsdWUuZGF0YSA9IGRhdGE7CisgICByZXR1cm4gdmFyOworIH0KKyAK KytpbnQKKytjb21waWxlX2ludGVybmFsdmFyX3RvX2F4IChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZh ciwKKysJCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKysJCQkgICBzdHJ1Y3QgYXhzX3Zh bHVlICp2YWx1ZSkKKyt7CisrICBpZiAodmFyLT5raW5kICE9IElOVEVSTkFMVkFSX01BS0VfVkFM VUUKKysgICAgICB8fCB2YXItPnUubWFrZV92YWx1ZS5mdW5jdGlvbnMtPmNvbXBpbGVfdG9fYXgg PT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICB2YXItPnUubWFrZV92YWx1ZS5mdW5jdGlv bnMtPmNvbXBpbGVfdG9fYXggKHZhciwgZXhwciwgdmFsdWUsCisrCQkJCQkgICAgICB2YXItPnUu bWFrZV92YWx1ZS5kYXRhKTsKKysgIHJldHVybiAxOworK30KKysKKyAvKiBMb29rIHVwIGFuIGlu dGVybmFsIHZhcmlhYmxlIHdpdGggbmFtZSBOQU1FLiAgTkFNRSBzaG91bGQgbm90CisgICAgbm9y bWFsbHkgaW5jbHVkZSBhIGRvbGxhciBzaWduLgorIAorQEAgLTE3MTMsNyArMTc3NCw4IEBAIHZh bHVlX29mX2ludGVybmFsdmFyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVy bmFsdmFyICp2YXIpCisgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgSU5URVJOQUxWQVJfTUFL RV9WQUxVRToKKy0gICAgICB2YWwgPSAoKnZhci0+dS5tYWtlX3ZhbHVlKSAoZ2RiYXJjaCwgdmFy KTsKKysgICAgICB2YWwgPSAoKnZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9ucy0+bWFrZV92YWx1 ZSkgKGdkYmFyY2gsIHZhciwKKysJCQkJCQkJdmFyLT51Lm1ha2VfdmFsdWUuZGF0YSk7CisgICAg ICAgYnJlYWs7CisgCisgICAgIGRlZmF1bHQ6CitAQCAtMTkwOSw2ICsxOTcxLDExIEBAIGNsZWFy X2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKKyAgICAgICB4ZnJlZSAodmFy LT51LnN0cmluZyk7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgSU5URVJOQUxWQVJfTUFL RV9WQUxVRToKKysgICAgICBpZiAodmFyLT51Lm1ha2VfdmFsdWUuZnVuY3Rpb25zLT5kZXN0cm95 ICE9IE5VTEwpCisrCXZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9ucy0+ZGVzdHJveSAodmFyLT51 Lm1ha2VfdmFsdWUuZGF0YSk7CisrICAgICAgYnJlYWs7CisrCisgICAgIGRlZmF1bHQ6CisgICAg ICAgYnJlYWs7CisgICAgIH0KK0BAIC0xOTYzLDYgKzIwMzAsMzggQEAgY2FsbF9pbnRlcm5hbF9m dW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICByZXR1cm4gKCppZm4tPmhhbmRs ZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFyZ2MsIGFyZ3YpOwogIH0KICAK QEAgLTEyNDEwLDcgKzE2MjI3LDcgQEAgaW5kZXggMmFjYjFkZi4uZDFkYjhmNSAxMDA2NDQKICAv KiBUaGUgJ2Z1bmN0aW9uJyBjb21tYW5kLiAgVGhpcyBkb2VzIG5vdGhpbmcgLS0gaXQgaXMganVz dCBhCiAgICAgcGxhY2Vob2xkZXIgdG8gbGV0ICJoZWxwIGZ1bmN0aW9uIE5BTUUiIHdvcmsuICBU aGlzIGlzIGFsc28gdXNlZCBhcwogICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3ViLWNv bW1hbmQgdGhhdCBpcyBjcmVhdGVkIHdoZW4KLUBAIC0yMDEwLDExICsyMDc3LDEwIEBAIHByZXNl cnZlX29uZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCitAQCAtMjAxMCwxMSArMjEwOSwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2 YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJICAgIGh0YWJfdCBjb3Bp ZWRfdHlwZXMpCiAgewogICAgaWYgKFRZUEVfT0JKRklMRSAodmFsdWUtPnR5cGUpID09IG9iamZp bGUpCkBAIC0xMjQyNCw3ICsxNjI0MSw3IEBAIGluZGV4IDJhY2IxZGYuLmQxZGI4ZjUgMTAwNjQ0 CiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTIwMjksNyArMjA5NSw3IEBAIHBy ZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorQEAgLTIwMjksNyArMjEyNyw3IEBAIHByZXNlcnZlX29uZV9pbnRl cm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAogICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6CiAgICAgICAgaWYgKHZhci0+dS5pbnRl Z2VyLnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBlKSA9PSBvYmpmaWxl KQogIAl2YXItPnUuaW50ZWdlci50eXBlCkBAIC0xMjQzMyw3ICsxNjI1MCw3IEBAIGluZGV4IDJh Y2IxZGYuLmQxZGI4ZjUgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgSU5URVJO QUxWQVJfVkFMVUU6Ci1AQCAtMzA0Nyw3ICszMTEzLDI0IEBAIHZhbHVlX2Zyb21faGlzdG9yeV9y ZWYgKGNoYXIgKmgsIGNoYXIgKiplbmRwKQorQEAgLTMwNDcsNyArMzE0NSwyNCBAQCB2YWx1ZV9m cm9tX2hpc3RvcnlfcmVmIChjaGFyICpoLCBjaGFyICoqZW5kcCkKICBzdHJ1Y3QgdmFsdWUgKgog IGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTEyNDU5LDcgKzE2Mjc2LDcg QEAgaW5kZXggMmFjYjFkZi4uZDFkYjhmNSAxMDA2NDQKICAKICAgIGlmIChUWVBFX0NPREUgKHZh bHVlX3R5cGVfYXJnX3RtcCkgPT0gVFlQRV9DT0RFX1JFRikKICAgICAgYXJnID0gdmFsdWVfYXRf bGF6eSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdWVfdHlwZV9hcmdfdG1wKSwKLUBAIC0zMTQ1LDQg KzMyMjgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CitAQCAtMzE0 NSw0ICszMjYwLDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOwogICAg YWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlvbl9jb21tYW5kLCBf KCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNvbnZlbmllbmNl IGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAsICZjbWRs aXN0KTsKQEAgLTEyNDcxLDcgKzE2Mjg4LDcgQEAgaW5kZXggMmFjYjFkZi4uZDFkYjhmNSAxMDA2 NDQKICsjZW5kaWYKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAot aW5kZXggMDg4OWNlZi4uMWJlN2YwYiAxMDA2NDQKK2luZGV4IDA4ODljZWYuLjRiNTFhNGEgMTAw NjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3ZhbHVlLmgKIEBAIC00NzMsNiArNDcz LDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0 eXBlICp0eXBlLApAQCAtMTI0ODUsMyArMTYzMDIsMTA1IEBAIGluZGV4IDA4ODljZWYuLjFiZTdm MGIgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXQgKHN0cnVjdCB0eXBlICp0 eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXRfbGF6 eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICAKK0BAIC02OTcsMTAgKzcw MSw1MiBAQCBleHRlcm4gc3RydWN0IGludGVybmFsdmFyICpsb29rdXBfb25seV9pbnRlcm5hbHZh ciAoY29uc3QgY2hhciAqbmFtZSk7CisgCisgZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqY3Jl YXRlX2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKTsKKyAKKy10eXBlZGVmIHN0cnVjdCB2 YWx1ZSAqICgqaW50ZXJuYWx2YXJfbWFrZV92YWx1ZSkgKHN0cnVjdCBnZGJhcmNoICosCistCQkJ CQkJICBzdHJ1Y3QgaW50ZXJuYWx2YXIgKik7CisrLyogQW4gaW50ZXJuYWx2YXIgY2FuIGJlIGR5 bmFtaWNhbGx5IGNvbXB1dGVkIGJ5IHN1cHBseWluZyBhIHZlY3RvciBvZgorKyAgIGZ1bmN0aW9u IHBvaW50ZXJzIHRvIHBlcmZvcm0gdmFyaW91cyBvcGVyYXRpb25zLiAgKi8KKysKKytzdHJ1Y3Qg aW50ZXJuYWx2YXJfZnVuY3MKKyt7CisrICAvKiBDb21wdXRlIHRoZSB2YWx1ZSBvZiB0aGUgdmFy aWFibGUuICBUaGUgREFUQSBhcmd1bWVudCBwYXNzZWQgdG8KKysgICAgIHRoZSBmdW5jdGlvbiBp cyB0aGUgc2FtZSBhcmd1bWVudCB0aGF0IHdhcyBwYXNzZWQgdG8KKysgICAgIGBjcmVhdGVfaW50 ZXJuYWx2YXJfdHlwZV9sYXp5Jy4gICovCisrCisrICBzdHJ1Y3QgdmFsdWUgKigqbWFrZV92YWx1 ZSkgKHN0cnVjdCBnZGJhcmNoICphcmNoLAorKwkJCSAgICAgICBzdHJ1Y3QgaW50ZXJuYWx2YXIg KnZhciwKKysJCQkgICAgICAgdm9pZCAqZGF0YSk7CisrCisrICAvKiBVcGRhdGUgdGhlIGFnZW50 IGV4cHJlc3Npb24gRVhQUiB3aXRoIGJ5dGVjb2RlIHRvIGNvbXB1dGUgdGhlCisrICAgICB2YWx1 ZS4gIFZBTFVFIGlzIHRoZSBhZ2VudCB2YWx1ZSB3ZSBhcmUgdXBkYXRpbmcuICBUaGUgREFUQQor KyAgICAgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXJndW1l bnQgdGhhdCB3YXMKKysgICAgIHBhc3NlZCB0byBgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6 eScuICBJZiB0aGlzIHBvaW50ZXIgaXMKKysgICAgIE5VTEwsIHRoZW4gdGhlIGludGVybmFsdmFy IGNhbm5vdCBiZSBjb21waWxlZCB0byBhbiBhZ2VudAorKyAgICAgZXhwcmVzc2lvbi4gICovCisr CisrICB2b2lkICgqY29tcGlsZV90b19heCkgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLAorKwkJ CSBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKysJCQkgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUs CisrCQkJIHZvaWQgKmRhdGEpOworKworKyAgLyogSWYgbm9uLU5VTEwsIHRoaXMgaXMgY2FsbGVk IHRvIGRlc3Ryb3kgREFUQS4gIFRoZSBEQVRBIGFyZ3VtZW50CisrICAgICBwYXNzZWQgdG8gdGhp cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcmd1bWVudCB0aGF0IHdhcyBwYXNzZWQgdG8KKysgICAg IGBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5Jy4gICovCisrCisrICB2b2lkICgqZGVzdHJv eSkgKHZvaWQgKmRhdGEpOworK307CisrCisgZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqCist ICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5IChjaGFyICpuYW1lLCBpbnRlcm5hbHZhcl9t YWtlX3ZhbHVlIGZ1bik7CisrY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoY29uc3QgY2hh ciAqbmFtZSwKKysJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgKmZ1bmNz LAorKwkJCSAgICAgIHZvaWQgKmRhdGEpOworKworKy8qIENvbXBpbGUgYW4gaW50ZXJuYWwgdmFy aWFibGUgdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4gIFZBUiBpcyB0aGUKKysgICB2YXJpYWJsZSB0 byBjb21waWxlOyBFWFBSIGFuZCBWQUxVRSBhcmUgdGhlIGFnZW50IGV4cHJlc3Npb24gd2UgYXJl CisrICAgdXBkYXRpbmcuICBUaGlzIHdpbGwgcmV0dXJuIDAgaWYgdGhlcmUgaXMgbm8ga25vd24g d2F5IHRvIGNvbXBpbGUKKysgICBWQVIsIGFuZCAxIGlmIFZBUiB3YXMgc3VjY2Vzc2Z1bGx5IGNv bXBpbGVkLiAgSXQgbWF5IGFsc28gdGhyb3cgYW4KKysgICBleGNlcHRpb24gb24gZXJyb3IuICAq LworKworK2V4dGVybiBpbnQgY29tcGlsZV9pbnRlcm5hbHZhcl90b19heCAoc3RydWN0IGludGVy bmFsdmFyICp2YXIsCisrCQkJCSAgICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJCQkg ICAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSk7CisgCisgZXh0ZXJuIHN0cnVjdCBpbnRlcm5h bHZhciAqbG9va3VwX2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKTsKKyAKK2RpZmYgLS1n aXQgYS9nZGIvd2luZG93cy10ZGVwLmMgYi9nZGIvd2luZG93cy10ZGVwLmMKK2luZGV4IDMxZGRk MTQuLmIzNmU0Y2EgMTAwNjQ0CistLS0gYS9nZGIvd2luZG93cy10ZGVwLmMKKysrKyBiL2dkYi93 aW5kb3dzLXRkZXAuYworQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgc3RydWN0IGx2YWxfZnVu Y3MgdGxiX3ZhbHVlX2Z1bmNzID0KKyAgICBpZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUu ICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXRsYl9tYWtlX3ZhbHVlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIpCisrdGxiX21ha2VfdmFs dWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgdm9p ZCAqaWdub3JlKQorIHsKKyAgIGlmICh0YXJnZXRfaGFzX3N0YWNrICYmICFwdGlkX2VxdWFsIChp bmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpKQorICAgICB7CitAQCAtNDI1LDYgKzQyNSwxMyBAQCBp bml0X3czMl9jb21tYW5kX2xpc3QgKHZvaWQpCisgICAgIH0KKyB9CisgCisrc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyB0bGJfZnVuY3MgPQorK3sKKysgIHRsYl9tYWtlX3Zh bHVlLAorKyAgTlVMTCwKKysgIE5VTEwKKyt9OworKworIHZvaWQKKyBfaW5pdGlhbGl6ZV93aW5k b3dzX3RkZXAgKHZvaWQpCisgeworQEAgLTQ1MSw1ICs0NTgsNSBAQCBldmVuIGlmIHRoZWlyIG1l YW5pbmcgaXMgdW5rbm93bi4iKSwKKyAgICAgIHZhbHVlIHdpdGggYSB2b2lkIHR5cGVkIHZhbHVl LCBhbmQgd2hlbiB3ZSBnZXQgaGVyZSwgZ2RiYXJjaAorICAgICAgaXNuJ3QgaW5pdGlhbGl6ZWQg eWV0LiAgQXQgdGhpcyBwb2ludCwgd2UncmUgcXVpdGUgc3VyZSB0aGVyZQorICAgICAgaXNuJ3Qg YW5vdGhlciBjb252ZW5pZW5jZSB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1lLiAgKi8KKy0gIGNy ZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfdGxiIiwgdGxiX21ha2VfdmFsdWUpOworKyAg Y3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90bGIiLCAmdGxiX2Z1bmNzLCBOVUxMKTsK KyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3hjb2ZmcmVhZC5jIGIvZ2RiL3hjb2ZmcmVhZC5jCitpbmRl eCAwODEwODBjLi5mNzFkYmZlIDEwMDY0NAorLS0tIGEvZ2RiL3hjb2ZmcmVhZC5jCisrKysgYi9n ZGIveGNvZmZyZWFkLmMKK0BAIC0zMDkwLDYgKzMwOTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHN5bV9mbnMgeGNvZmZfc3ltX2ZucyA9CisgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8q IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KKyAgIGFpeF9wcm9jZXNz X2xpbmVub3MsCisgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVi dWcgc2VjdGlvbi4gICovCisrICBOVUxMLAkJCQkvKiBzeW1fcHJvYmVfZm5zICovCisgICAmcHN5 bV9mdW5jdGlvbnMKKyB9OworIAoKZGlmZiAtLWdpdCBhL2dkYi1waHlzbmFtZS1wcjExNzM0LTFv ZjIucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMTczNC0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmMmE2OWI3Li4wMDAwMDAwCi0tLSBhL2dkYi1waHlzbmFtZS1wcjEx NzM0LTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTIvbXNnMDAyNjMuaHRtbAotCi1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvY3Atc3VwcG9ydC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9jcC1zdXBwb3J0LmMJMjAxMS0wMi0wNiAyMzox MjoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9jcC1zdXBw b3J0LmMJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNSw2ICszNSw3 IEBACi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSAjaW5jbHVkZSAiZXhwcmVzc2lvbi5oIgot ICNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJsYW5ndWFnZS5oIgotIAotICNpbmNsdWRl ICJzYWZlLWN0eXBlLmgiCi0gCi1AQCAtOTM2LDcgKzkzNyw4IEBAIG1ha2Vfc3ltYm9sX292ZXJs b2FkX2xpc3RfcXVhbGlmaWVkIChjb24KLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgIHsK LSAgICAgaWYgKG9iamZpbGUtPnNmKQotLSAgICAgIG9iamZpbGUtPnNmLT5xZi0+ZXhwYW5kX3N5 bXRhYnNfZm9yX2Z1bmN0aW9uIChvYmpmaWxlLCBmdW5jX25hbWUpOwotKyAgICAgIG9iamZpbGUt PnNmLT5xZi0+ZXhwYW5kX3N5bXRhYnNfZm9yX2Z1bmN0aW9uIChvYmpmaWxlLCBmdW5jX25hbWUs Ci0rCQkJCQkJICAgIGxhbmd1YWdlX2NwbHVzKTsKLSAgIH0KLSAKLSAgIC8qIFNlYXJjaCB1cHdh cmRzIGZyb20gY3VycmVudGx5IHNlbGVjdGVkIGZyYW1lIChzbyB0aGF0IHdlIGNhbgotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAyMDYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDItMDYgMjM6MTI6 MjIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvZHdhcmYycmVh ZC5jCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi1AQCAtMjM3Myw3ICsyMzcz LDggQEAgZHcyX2xvb2t1cF9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIAotIHN0YXRp YyBzdHJ1Y3Qgc3ltdGFiICoKLSBkdzJfbG9va3VwX3N5bWJvbCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGludCBibG9ja19pbmRleCwKLS0JCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGRvbWFpbl9l bnVtIGRvbWFpbikKLSsJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGRvbWFpbl9lbnVtIGRvbWFpbiwK LSsJCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCi0gewotICAgLyogV2UgZG8gYWxsIHRoZSB3 b3JrIGluIHRoZSBwcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgaG9vawotICAgICAgaW5zdGVh ZC4gICovCi1AQCAtMjQ0OSw3ICsyNDUwLDggQEAgZHcyX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgcwotIAotIHN0YXRpYyB2b2lkCi0gZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9m dW5jdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCSBjb25zdCBjaGFyICpmdW5j X25hbWUpCi0rCQkJCSBjb25zdCBjaGFyICpmdW5jX25hbWUsCi0rCQkJCSBlbnVtIGxhbmd1YWdl IGxhbmd1YWdlKQotIHsKLSAgIGR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZyAob2JqZmls ZSwgZnVuY19uYW1lKTsKLSB9Ci1AQCAtMjUwOSw3ICsyNTExLDggQEAgZHcyX2V4cGFuZF9zeW10 YWJzX3dpdGhfZmlsZW5hbWUgKHN0cnVjdAotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqCi0t ZHcyX2ZpbmRfc3ltYm9sX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFy ICpuYW1lKQotK2R3Ml9maW5kX3N5bWJvbF9maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg Y29uc3QgY2hhciAqbmFtZSwKLSsJCSAgICAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCi0gewot ICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OwotICAgb2Zmc2V0X3R5cGUgKnZl YzsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9saW5lc3BlYy5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9saW5lc3BlYy5jCTIwMTEtMDItMDYg MjM6MTI6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvbGlu ZXNwZWMuYwkyMDExLTAyLTA2IDIzOjEyOjI2LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyMjYsNyAr MTIyNiw3IEBAIGRlY29kZV9vYmpjIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3QKLSAKLSBz dGF0aWMgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCi0gZGVjb2RlX2NvbXBvdW5kIChjaGFyICoq YXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwKLS0JCSBjaGFyICpz YXZlZF9hcmcsIGNoYXIgKnAsIGludCAqbm90X2ZvdW5kX3B0cikKLSsJCSBjaGFyICp0aGVfcmVh bF9zYXZlZF9hcmcsIGNoYXIgKnAsIGludCAqbm90X2ZvdW5kX3B0cikKLSB7Ci0gICBzdHJ1Y3Qg c3ltdGFic19hbmRfbGluZXMgdmFsdWVzOwotICAgY2hhciAqcDI7Ci1AQCAtMTIzNyw3ICsxMjM3 LDIzIEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmYKLSAgIHN0cnVj dCBzeW1ib2wgKnN5bV9jbGFzczsKLSAgIHN0cnVjdCB0eXBlICp0OwotICAgY2hhciAqc2F2ZWRf amF2YV9hcmdwdHIgPSBOVUxMOwotKyAgY2hhciAqc2F2ZWRfYXJnOwotIAotKyAgLyogVEhFX1JF QUxfU0FWRURfQVJHIGNhbm5vdCBiZSBhbHRlcmVkLCBzbyBtYWtlIGEgY29weSB0aGF0IGNhbiBi ZS4gICovCi0rICBzYXZlZF9hcmcgPSBhbGxvY2EgKHN0cmxlbiAodGhlX3JlYWxfc2F2ZWRfYXJn KSArIDEpOwotKyAgc3RyY3B5IChzYXZlZF9hcmcsIHRoZV9yZWFsX3NhdmVkX2FyZyk7Ci0rCi0r ICAvKiBJZiB0aGUgdXNlciBzcGVjaWZpZWQgIidmb286OmJhcihiYXopJyIgKG5vdGUgdGhlIHF1 b3RlcyAtLSBvZnRlbgotKyAgICAgYWRkZWQgdG8gd29ya2Fyb3VuZCBjb21wbGV0ZXIgaXNzdWVz KSAtLSBzYXZlZF9hcmcgd2lsbCBiZQotKyAgICAgZW5jYXBzdWxhdGVkIGluIHNpbmdsZS1xdW90 ZXMuICBUaGV5IGFyZSBzdXBlcmZsdW91cywgc28ganVzdCBzdHJpcAotKyAgICAgdGhlbSBvZmYu ICAqLwotKyAgaWYgKCpzYXZlZF9hcmcgPT0gJ1wnJykKLSsgICAgewotKyAgICAgIGNoYXIgKmVu ZCA9IHNraXBfcXVvdGVkIChzYXZlZF9hcmcpOwotKyAgICAgIG1lbW1vdmUgKHNhdmVkX2FyZywg c2F2ZWRfYXJnICsgMSwgZW5kIC0gc2F2ZWRfYXJnKTsKLSsgICAgICBtZW1tb3ZlIChlbmQgLSAy LCBlbmQsIHN0cmxlbiAoc2F2ZWRfYXJnKSArIDEpOwotKyAgICB9Ci0rICAgICAgCi0gICAvKiBG aXJzdCBjaGVjayBmb3IgImdsb2JhbCIgbmFtZXNwYWNlIHNwZWNpZmljYXRpb24sIG9mIHRoZSBm b3JtCi0gICAgICAiOjpmb28iLiAgSWYgZm91bmQsIHNraXAgb3ZlciB0aGUgY29sb25zIGFuZCBq dW1wIHRvIG5vcm1hbAotICAgICAgc3ltYm9sIHByb2Nlc3NpbmcuICBJLmUuIHRoZSB3aG9sZSBs aW5lIHNwZWNpZmljYXRpb24gc3RhcnRzIHdpdGgKLUBAIC0xNDg5LDcgKzE1MDUsNyBAQCBkZWNv ZGVfY29tcG91bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5mCi0gICAgICB1cC4gIFRoZSBxdW90 ZXMgYXJlIGltcG9ydGFudCBpZiBjb3B5IGlzIGVtcHR5LiAgKi8KLSAgIGlmIChub3RfZm91bmRf cHRyKQotICAgICAqbm90X2ZvdW5kX3B0ciA9IDE7Ci0tICBjcGx1c3BsdXNfZXJyb3IgKHNhdmVk X2FyZywKLSsgIGNwbHVzcGx1c19lcnJvciAodGhlX3JlYWxfc2F2ZWRfYXJnLAotIAkJICAgIkNh bid0IGZpbmQgbWVtYmVyIG9mIG5hbWVzcGFjZSwgIgotIAkJICAgImNsYXNzLCBzdHJ1Y3QsIG9y IHVuaW9uIG5hbWVkIFwiJXNcIlxuIiwKLSAJCSAgIGNvcHkpOwotSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAyMDYvZ2RiL3BzeW10YWIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAy MDYub3JpZy9nZGIvcHN5bXRhYi5jCTIwMTEtMDItMDYgMjM6MTI6MTYuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvcHN5bXRhYi5jCTIwMTEtMDItMDYgMjM6MTI6 NTQuMDAwMDAwMDAwICswMTAwCi1AQCAtMzMsNiArMzMsOCBAQAotICNpbmNsdWRlICJyZWFkbGlu ZS9yZWFkbGluZS5oIgotICNpbmNsdWRlICJnZGJfcmVnZXguaCIKLSAjaW5jbHVkZSAiZGljdGlv bmFyeS5oIgotKyNpbmNsdWRlICJsYW5ndWFnZS5oIgotKyNpbmNsdWRlICJjcC1zdXBwb3J0Lmgi Ci0gCi0gI2lmbmRlZiBERVZfVFRZCi0gI2RlZmluZSBERVZfVFRZICIvZGV2L3R0eSIKLUBAIC01 NSw3ICs1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKm1hdGNoX3BhcnQKLSAK LSBzdGF0aWMgc3RydWN0IHBhcnRpYWxfc3ltYm9sICpsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0 cnVjdCBwYXJ0aWFsX3N5bXRhYiAqLAotIAkJCQkJCSAgICAgY29uc3QgY2hhciAqLCBpbnQsCi0t CQkJCQkJICAgICBkb21haW5fZW51bSk7Ci0rCQkJCQkJICAgICBkb21haW5fZW51bSwKLSsJCQkJ CQkgICAgIGVudW0gbGFuZ3VhZ2UpOwotIAotIHN0YXRpYyBjaGFyICpwc3ltdGFiX3RvX2Z1bGxu YW1lIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzKTsKLSAKLUBAIC00MTgsMTUgKzQyMSwzNSBA QCBmaXh1cF9wc3ltYm9sX3NlY3Rpb24gKHN0cnVjdCBwYXJ0aWFsX3N5Ci0gc3RhdGljIHN0cnVj dCBzeW10YWIgKgotIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSAJCQkgICAgaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotLQkJ CSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbiwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKnBzOwotICAgY29uc3QgaW50IHBzeW10YWJfaW5kZXggPSAoYmxvY2tfaW5kZXggPT0g R0xPQkFMX0JMT0NLID8gMSA6IDApOwotIAotICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZp bGUsIHBzKQotICAgewotLSAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3lt Ym9sIChwcywgbmFtZSwgcHN5bXRhYl9pbmRleCwgZG9tYWluKSkKLS0gICAgICByZXR1cm4gUFNZ TVRBQl9UT19TWU1UQUIgKHBzKTsKLSsgICAgaWYgKCFwcy0+cmVhZGluCi0rCSYmIGxvb2t1cF9w YXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIHBzeW10YWJfaW5kZXgsIGRvbWFpbiwgbGFuZ3VhZ2Up KQotKyAgICAgIHsKLSsJc3RydWN0IHN5bWJvbCAqc3ltOwotKwlzdHJ1Y3Qgc3ltdGFiICpzdGFi ID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSsJc3ltID0gTlVMTDsKLSsKLSsJLyogU29tZSBj YXV0aW9uIG11c3QgYmUgb2JzZXJ2ZWQgd2l0aCBvdmVybG9hZGVkIGZ1bmN0aW9ucwotKwkgICBh bmQgbWV0aG9kcywgc2luY2UgdGhlIHBzeW10YWIgd2lsbCBub3QgY29udGFpbiBhbnkgb3Zlcmxv YWQKLSsJICAgaW5mb3JtYXRpb24gKGJ1dCBOQU1FIG1pZ2h0IGNvbnRhaW4gaXQpLiAgKi8KLSsJ aWYgKHN0YWItPnByaW1hcnkpCi0rCSAgewotKwkgICAgc3RydWN0IGJsb2NrdmVjdG9yICpidiA9 IEJMT0NLVkVDVE9SIChzdGFiKTsKLSsJICAgIHN0cnVjdCBibG9jayAqYmxvY2sgPSBCTE9DS1ZF Q1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOwotKwkgIH0KLSsKLSsJaWYgKHN5bSAmJiBzdHJj bXBfaXcgKFNZTUJPTF9TRUFSQ0hfTkFNRSAoc3ltKSwgbmFtZSkgPT0gMCkKLSsJICByZXR1cm4g c3RhYjsKLSsKLSsJLyogS2VlcCBsb29raW5nIHRocm91Z2ggb3RoZXIgcHN5bXRhYnMuICAqLwot KyAgICAgIH0KLSAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwotQEAgLTUxOSwyMiArNTQyLDU4IEBA IHByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZ19wc3ltdGFicyAoc3QKLSAgIC8qIE5vdGhpbmcu ICAqLwotIH0KLSAKLSsvKiBSZXR1cm5zIHRoZSBuYW1lIHVzZWQgdG8gc2VhcmNoIHBzeW10YWJz LiAgVW5saWtlIHN5bXRhYnMsIHBzeW10YWJzIGRvCi0rICAgbm90IGNvbnRhaW4gYW55IG1ldGhv ZC9mdW5jdGlvbiBpbnN0YW5jZSBpbmZvcm1hdGlvbiAoc2luY2UgdGhpcyB3b3VsZAotKyAgIGZv cmNlIHJlYWRpbmcgdHlwZSBpbmZvcm1hdGlvbiB3aGlsZSByZWFkaW5nIHBzeW10YWJzKS4gIFRo ZXJlZm9yZSwKLSsgICBpZiBOQU1FIGNvbnRhaW5zIG92ZXJsb2FkIGluZm9ybWF0aW9uLCBpdCBt dXN0IGJlIHN0cmlwcGVkIGJlZm9yZSBzZWFyY2hpbmcKLSsgICBwc3ltdGFicy4KLSsKLSsgICBU aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSByZXR1cm4gcmVzdWx0LiAg Ki8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rcHN5bXRhYl9zZWFyY2hfbmFtZSAoY29uc3Qg Y2hhciAqbmFtZSwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkKLSt7Ci0rICBzd2l0Y2ggKGxhbmd1 YWdlKQotKyAgICB7Ci0rICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6Ci0rICAgIGNhc2UgbGFuZ3Vh Z2VfamF2YToKLSsgICAgICB7Ci0rICAgICAgIGlmIChzdHJjaHIgKG5hbWUsICcoJykpCi0rICAg ICAgICAgewotKyAgICAgICAgICAgY2hhciAqcmV0ID0gY3BfcmVtb3ZlX3BhcmFtcyAobmFtZSk7 Ci0rICAgICAgICAgICBpZiAocmV0KQotKyAgICAgICAgICAgICByZXR1cm4gcmV0OwotKyAgICAg ICAgIH0KLSsgICAgICB9Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0K LSsKLSsgIHJldHVybiB4c3RyZHVwIChuYW1lKTsKLSt9Ci0rCi0gLyogTG9vaywgaW4gcGFydGlh bF9zeW10YWIgUFNULCBmb3Igc3ltYm9sIHdob3NlIG5hdHVyYWwgbmFtZSBpcyBOQU1FLgotICAg IENoZWNrIHRoZSBnbG9iYWwgc3ltYm9scyBpZiBHTE9CQUwsIHRoZSBzdGF0aWMgc3ltYm9scyBp ZiBub3QuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKgotIGxvb2t1cF9w YXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNoYXIgKm5h bWUsCi0tCQkgICAgICAgaW50IGdsb2JhbCwgZG9tYWluX2VudW0gZG9tYWluKQotKwkJICAgICAg IGludCBnbG9iYWwsIGRvbWFpbl9lbnVtIGRvbWFpbiwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkK LSB7Ci0gICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKipzdGFydCwgKipwc3ltOwotICAgc3RydWN0 IHBhcnRpYWxfc3ltYm9sICoqdG9wLCAqKnJlYWxfdG9wLCAqKmJvdHRvbSwgKipjZW50ZXI7Ci0g ICBpbnQgbGVuZ3RoID0gKGdsb2JhbCA/IHBzdC0+bl9nbG9iYWxfc3ltcyA6IHBzdC0+bl9zdGF0 aWNfc3ltcyk7Ci0gICBpbnQgZG9fbGluZWFyX3NlYXJjaCA9IDE7Ci0rICBjb25zdCBjaGFyICpz ZWFyY2hfbmFtZTsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotIAotICAgaWYgKGxlbmd0 aCA9PSAwKQotICAgICB7Ci0gICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICAgfQotKwotKyAgc2Vh cmNoX25hbWUgPSBwc3ltdGFiX3NlYXJjaF9uYW1lIChuYW1lLCBsYW5ndWFnZSk7Ci0rICBjbGVh bnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgKHZvaWQgKikgc2VhcmNoX25hbWUpOwotICAgc3Rh cnQgPSAoZ2xvYmFsID8KLSAJICAgcHN0LT5vYmpmaWxlLT5nbG9iYWxfcHN5bWJvbHMubGlzdCAr IHBzdC0+Z2xvYmFsc19vZmZzZXQgOgotIAkgICBwc3QtPm9iamZpbGUtPnN0YXRpY19wc3ltYm9s cy5saXN0ICsgcHN0LT5zdGF0aWNzX29mZnNldCk7Ci1AQCAtNTYzLDcgKzYyMiw4IEBAIGxvb2t1 cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3kKLSAJICAgIHsKLSAJICAgICAgZG9f bGluZWFyX3NlYXJjaCA9IDE7Ci0gCSAgICB9Ci0tCSAgaWYgKHN0cmNtcF9pd19vcmRlcmVkIChT WU1CT0xfU0VBUkNIX05BTUUgKCpjZW50ZXIpLCBuYW1lKSA+PSAwKQotKwkgIGlmIChzdHJjbXBf aXdfb3JkZXJlZCAoU1lNQk9MX1NFQVJDSF9OQU1FICgqY2VudGVyKSwKLSsJCQkJIHNlYXJjaF9u YW1lKSA+PSAwKQotIAkgICAgewotIAkgICAgICB0b3AgPSBjZW50ZXI7Ci0gCSAgICB9Ci1AQCAt NTc3LDExICs2MzcsMTQgQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9z eQotIAkJCV8oImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVjayIpKTsKLSAKLSAgICAg ICB3aGlsZSAodG9wIDw9IHJlYWxfdG9wCi0tCSAgICAgJiYgU1lNQk9MX01BVENIRVNfU0VBUkNI X05BTUUgKCp0b3AsIG5hbWUpKQotKwkgICAgICYmIFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1F ICgqdG9wLCBzZWFyY2hfbmFtZSkpCi0gCXsKLSAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWlu IChTWU1CT0xfTEFOR1VBR0UgKCp0b3ApLAotIAkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCp0b3Ap LCBkb21haW4pKQotLQkgICAgcmV0dXJuICgqdG9wKTsKLSsJICAgIHsKLSsJICAgICAgZG9fY2xl YW51cHMgKGNsZWFudXApOwotKwkgICAgICByZXR1cm4gKCp0b3ApOwotKwkgICAgfQotIAkgIHRv cCsrOwotIAl9Ci0gICAgIH0KLUBAIC01OTUsMTEgKzY1OCwxNSBAQCBsb29rdXBfcGFydGlhbF9z eW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5Ci0gCXsKLSAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9t YWluIChTWU1CT0xfTEFOR1VBR0UgKCpwc3ltKSwKLSAJCQkJICAgICBTWU1CT0xfRE9NQUlOICgq cHN5bSksIGRvbWFpbikKLS0JICAgICAgJiYgU1lNQk9MX01BVENIRVNfU0VBUkNIX05BTUUgKCpw c3ltLCBuYW1lKSkKLS0JICAgIHJldHVybiAoKnBzeW0pOwotKwkgICAgICAmJiBTWU1CT0xfTUFU Q0hFU19TRUFSQ0hfTkFNRSAoKnBzeW0sIHNlYXJjaF9uYW1lKSkKLSsJICAgIHsKLSsJICAgICAg ZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwkgICAgICByZXR1cm4gKCpwc3ltKTsKLSsJICAgIH0K LSAJfQotICAgICB9Ci0gCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gICByZXR1cm4gKE5V TEwpOwotIH0KLSAKLUBAIC05MTEsNyArOTc4LDggQEAgZHVtcF9wc3ltdGFic19mb3Jfb2JqZmls ZSAoc3RydWN0IG9iamZpbAotICAgIGJ5IG1hdGNoaW5nIEZVTkNfTkFNRS4gIE1ha2Ugc3VyZSB3 ZSByZWFkIHRoYXQgc3ltYm9sIHRhYmxlIGluLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXJlYWRf c3ltdGFic19mb3JfZnVuY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFy ICpmdW5jX25hbWUpCi0rcmVhZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwKLSsJCQkgICBlbnVtIGxhbmd1YWdlIGxh bmd1YWdlKQotIHsKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHM7Ci0gCi1AQCAtOTIwLDkg Kzk4OCw5IEBAIHJlYWRfc3ltdGFic19mb3JfZnVuY3Rpb24gKHN0cnVjdCBvYmpmaWwKLSAgICAg aWYgKHBzLT5yZWFkaW4pCi0gICAgICAgY29udGludWU7Ci0gCi0tICAgIGlmICgobG9va3VwX3Bh cnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAxLCBWQVJfRE9NQUlOKQotKyAgICBpZiAoKGxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1bmNfbmFtZSwgMSwgVkFSX0RPTUFJTiwgbGFuZ3Vh Z2UpCi0gCSAhPSBOVUxMKQotLQl8fCAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19u YW1lLCAwLCBWQVJfRE9NQUlOKQotKwl8fCAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVu Y19uYW1lLCAwLCBWQVJfRE9NQUlOLCBsYW5ndWFnZSkKLSAJICAgICE9IE5VTEwpKQotICAgICAg IHBzeW10YWJfdG9fc3ltdGFiIChwcyk7Ci0gICB9Ci1AQCAtMTA0MiwxMyArMTExMCwxNCBAQCBw c3ltdGFiX3RvX2Z1bGxuYW1lIChzdHJ1Y3QgcGFydGlhbF9zeW10Ci0gfQotIAotIHN0YXRpYyBj b25zdCBjaGFyICoKLS1maW5kX3N5bWJvbF9maWxlX2Zyb21fcGFydGlhbCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCi0rZmluZF9zeW1ib2xfZmlsZV9mcm9tX3Bh cnRpYWwgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAotKwkJCSAg ICAgICBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlKQotIHsKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRh YiAqcHN0OwotIAotICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHBzdCkKLSAgICAg ewotLSAgICAgIGlmIChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbmFtZSwgMSwgVkFSX0RP TUFJTikpCi0rICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBuYW1lLCAxLCBW QVJfRE9NQUlOLCBsYW5ndWFnZSkpCi0gCXJldHVybiBwc3QtPmZpbGVuYW1lOwotICAgICB9Ci0g ICByZXR1cm4gTlVMTDsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9zeW1maWxlLmgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL3N5bWZpbGUuaAky MDExLTAyLTA2IDIzOjEyOjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAy MDYvZ2RiL3N5bWZpbGUuaAkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAotQEAg LTE2NywxNCArMTY3LDE1IEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCi0gICAvKiBD aGVjayB0byBzZWUgaWYgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIGEgInBhcnRpYWwiIHN5bWJv bCB0YWJsZQotICAgICAgb2YgT0JKRklMRS4gIEtJTkQgc2hvdWxkIGJlIGVpdGhlciBHTE9CQUxf QkxPQ0sgb3IgU1RBVElDX0JMT0NLLAotICAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2Ugd2Fu dCB0byBzZWFyY2ggZ2xvYmFsIHN5bWJvbHMgb3Igc3RhdGljCi0tICAgICBzeW1ib2xzLiAgTkFN RSBpcyB0aGUgbmFtZSBvZiB0aGUgc3ltYm9sIHRvIGxvb2sgZm9yLiAgRE9NQUlOCi0tICAgICBp bmRpY2F0ZXMgd2hhdCBzb3J0IG9mIHN5bWJvbCB0byBzZWFyY2ggZm9yLgotKyAgICAgc3ltYm9s cy4gIE5BTUUgKHZhbGlkIGluIExBTkdVQUdFKSBpcyB0aGUgbmFtZSBvZiB0aGUgc3ltYm9sIHRv IGxvb2sgZm9yLgotKyAgICAgRE9NQUlOIGluZGljYXRlcyB3aGF0IHNvcnQgb2Ygc3ltYm9sIHRv IHNlYXJjaCBmb3IuCi0gCi0gICAgICBSZXR1cm5zIHRoZSBuZXdseS1leHBhbmRlZCBzeW1ib2wg dGFibGUgaW4gd2hpY2ggdGhlIHN5bWJvbCBpcwotICAgICAgZGVmaW5lZCwgb3IgTlVMTCBpZiBu byBzdWNoIHN5bWJvbCB0YWJsZSBleGlzdHMuICAqLwotICAgc3RydWN0IHN5bXRhYiAqKCpsb29r dXBfc3ltYm9sKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCSAgIGludCBraW5kLCBj b25zdCBjaGFyICpuYW1lLAotLQkJCQkgICBkb21haW5fZW51bSBkb21haW4pOwotKwkJCQkgICBk b21haW5fZW51bSBkb21haW4sCi0rCQkJCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpOwotIAot ICAgLyogVGhpcyBpcyBjYWxsZWQgdG8gZXhwYW5kIHN5bWJvbCB0YWJsZXMgYmVmb3JlIGxvb2tp bmcgdXAgYQotICAgICAgc3ltYm9sLiAgQSBiYWNrZW5kIGNhbiBjaG9vc2UgdG8gaW1wbGVtZW50 IHRoaXMgYW5kIHRoZW4gaGF2ZSBpdHMKLUBAIC0yMDAsMTAgKzIwMSwxMSBAQCBzdHJ1Y3QgcXVp Y2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19v ZmZzZXRzLAotIAkJICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhKTsKLSAKLS0gIC8q IEZpbmQgYWxsIHRoZSBzeW1ib2xzIGluIE9CSkZJTEUgbmFtZWQgRlVOQ19OQU1FLCBhbmQgZW5z dXJlIHRoYXQKLS0gICAgIHRoZSBjb3JyZXNwb25kaW5nIHN5bWJvbCB0YWJsZXMgYXJlIGxvYWRl ZC4gICovCi0rICAvKiBGaW5kIGFsbCB0aGUgc3ltYm9scyBpbiBPQkpGSUxFIG5hbWVkIEZVTkNf TkFNRSAodmFsaWQgaW4gTEFOR1VBR0UpLAotKyAgICAgYW5kIGVuc3VyZSB0aGF0IHRoZSBjb3Jy ZXNwb25kaW5nIHN5bWJvbCB0YWJsZXMgYXJlIGxvYWRlZC4gICovCi0gICB2b2lkICgqZXhwYW5k X3N5bXRhYnNfZm9yX2Z1bmN0aW9uKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCSAg ICAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpOwotKwkJCQkgICAgICAgY29uc3QgY2hhciAqZnVu Y19uYW1lLAotKwkJCQkgICAgICAgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSk7Ci0gCi0gICAvKiBS ZWFkIGFsbCBzeW1ib2wgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFLiAgKi8KLSAgIHZv aWQgKCpleHBhbmRfYWxsX3N5bXRhYnMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci1AQCAt MjE3LDggKzIxOSwxMCBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJCQkJY29u c3QgY2hhciAqZmlsZW5hbWUpOwotIAotICAgLyogUmV0dXJuIHRoZSBmaWxlIG5hbWUgb2YgdGhl IGZpbGUgaG9sZGluZyB0aGUgc3ltYm9sIGluIE9CSkZJTEUKLS0gICAgIG5hbWVkIE5BTUUuICBJ ZiBubyBzdWNoIHN5bWJvbCBleGlzdHMgaW4gT0JKRklMRSwgcmV0dXJuIE5VTEwuICAqLwotLSAg Y29uc3QgY2hhciAqKCpmaW5kX3N5bWJvbF9maWxlKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKm5hbWUpOwotKyAgICAgbmFtZWQgTkFNRSAodmFsaWQgaW4gTEFOR1VBR0Up LiAgSWYgbm8gc3VjaCBzeW1ib2wgZXhpc3RzIGluIE9CSkZJTEUsCi0rICAgICByZXR1cm4gTlVM TC4gICovCi0rICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSwKLSsJCQkJICAgZW51bSBsYW5ndWFnZSBsYW5n dWFnZSk7Ci0gCi0gICAvKiBGaW5kIGdsb2JhbCBvciBzdGF0aWMgc3ltYm9scyBpbiBhbGwgdGFi bGVzIHRoYXQgYXJlIGluIE5BTUVTUEFDRSAKLSAgICAgIGFuZCBmb3Igd2hpY2ggTUFUQ0ggKHN5 bWJvbCBuYW1lLCBOQU1FKSA9PSAwLCBwYXNzaW5nIGVhY2ggdG8gCi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDIwNi9nZGIvc3ltdGFiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEw MjA2Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTEtMDItMDYgMjM6MTI6MTYuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvc3ltdGFiLmMJMjAxMS0wMi0wNiAyMzoxMjoy Mi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMzgwLDcgKzEzODAsOCBAQCBsb29rdXBfc3ltYm9sX2F1 eF9xdWljayAoc3RydWN0IG9iamZpbGUgCi0gCi0gICBpZiAoIW9iamZpbGUtPnNmKQotICAgICBy ZXR1cm4gTlVMTDsKLS0gIHN5bXRhYiA9IG9iamZpbGUtPnNmLT5xZi0+bG9va3VwX3N5bWJvbCAo b2JqZmlsZSwga2luZCwgbmFtZSwgZG9tYWluKTsKLSsgIHN5bXRhYiA9IG9iamZpbGUtPnNmLT5x Zi0+bG9va3VwX3N5bWJvbCAob2JqZmlsZSwga2luZCwgbmFtZSwgZG9tYWluLAotKwkJCQkJICAg Y3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UpOwotICAgaWYgKCFzeW10YWIpCi0gICAgIHJl dHVybiBOVUxMOwotIAotQEAgLTE1NTQsNyArMTU1NSw4IEBAIGJhc2ljX2xvb2t1cF90cmFuc3Bh cmVudF90eXBlX3F1aWNrIChzdHIKLSAKLSAgIGlmICghb2JqZmlsZS0+c2YpCi0gICAgIHJldHVy biBOVUxMOwotLSAgc3ltdGFiID0gb2JqZmlsZS0+c2YtPnFmLT5sb29rdXBfc3ltYm9sIChvYmpm aWxlLCBraW5kLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSsgIHN5bXRhYiA9IG9iamZpbGUtPnNm LT5xZi0+bG9va3VwX3N5bWJvbCAob2JqZmlsZSwga2luZCwgbmFtZSwgU1RSVUNUX0RPTUFJTiwK LSsJCQkJCSAgIGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlKTsKLSAgIGlmICghc3ltdGFi KQotICAgICByZXR1cm4gTlVMTDsKLSAKLUBAIC0xNjg2LDcgKzE2ODgsOCBAQCBmaW5kX21haW5f ZmlsZW5hbWUgKHZvaWQpCi0gCi0gICAgIGlmICghb2JqZmlsZS0+c2YpCi0gICAgICAgY29udGlu dWU7Ci0tICAgIHJlc3VsdCA9IG9iamZpbGUtPnNmLT5xZi0+ZmluZF9zeW1ib2xfZmlsZSAob2Jq ZmlsZSwgbmFtZSk7Ci0rICAgIHJlc3VsdCA9IG9iamZpbGUtPnNmLT5xZi0+ZmluZF9zeW1ib2xf ZmlsZSAob2JqZmlsZSwgbmFtZSwKLSsJCQkJCQljdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFn ZSk7Ci0gICAgIGlmIChyZXN1bHQpCi0gICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLUluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQtMS5jYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTcz NC0xLmNjCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDMw IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgICBQbGVhc2UgZW1h aWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoK LSsgICBidWctZ2RiQGdudS5vcmcgICovCi0rCi0rI2luY2x1ZGUgInByMTE3MzQuaCIKLSsKLStp bnQKLSttYWluICgpCi0rewotKyAgcHIxMTczNCAqcCA9IG5ldyBwcjExNzM0OwotKyAgcC0+Zm9v ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC0yLmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEx MDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTIuY2MJMjAxMS0wMi0wNiAyMzoxMjoy Mi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjcgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotKyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFu ZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyAgIGJ1Zy1nZGJAZ251Lm9yZyAgKi8K LSsKLSsjaW5jbHVkZSAicHIxMTczNC5oIgotKwotK3ZvaWQKLStwcjExNzM0Ojpmb28odm9pZCkK LSt7Ci0rfQotKwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvcHIxMTczNC0zLmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9wcjExNzM0LTMuY2MJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAx MDAKLUBAIC0wLDAgKzEsMjcgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotKyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMg dG8gdGhpcyBmaWxlIHRvOgotKyAgIGJ1Zy1nZGJAZ251Lm9yZyAgKi8KLSsKLSsjaW5jbHVkZSAi cHIxMTczNC5oIgotKwotK3ZvaWQKLStwcjExNzM0Ojpmb28gKGludCBhKQotK3sKLSt9Ci0rCi1J bmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTQu Y2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3By MTE3MzQtNC5jYwkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCAr MSwyNyBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rICAgUGxlYXNl IGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUg dG86Ci0rICAgYnVnLWdkYkBnbnUub3JnICAqLwotKwotKyNpbmNsdWRlICJwcjExNzM0LmgiCi0r Ci0rdm9pZAotK3ByMTE3MzQ6OmZvbyAoY2hhciAqYSkKLSt7Ci0rfQotKwotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQuZXhwCTIw MTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDU1IEBACi0rIyBD b3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBDb250 cmlidXRlZCBieSBSZWQgSGF0LCBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2VpdGggU2VpdHouCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgotKwotK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBj b250aW51ZSB9Ci0rCi0rc2V0IHRlc3RmaWxlICJwcjExNzM0IgotK3NldCBjbGFzcyAkdGVzdGZp bGUKLSsKLStzZXQgc3JjZmlsZXMge30KLStmb3Ige3NldCBpIDF9IHskaSA8IDV9IHtpbmNyIGl9 IHsKLSsgICAgbGFwcGVuZCBzcmNmaWxlcyAkdGVzdGZpbGUtJGkuY2MKLSt9Ci0rCi0rcHJlcGFy ZV9mb3JfdGVzdGluZyBwcjExNzM0ICR0ZXN0ZmlsZSAkc3JjZmlsZXMge2MrKyBkZWJ1Z30KLSsK LStpZiB7IVtydW50b19tYWluXX0gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVh a3BvaW50IgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIEFuIGFycmF5IGhvbGRpbmcgdGhlIG92 ZXJsb2FkIHR5cGVzIGZvciB0aGUgbWV0aG9kIHByMTE3MzQ6OmZvby4gIFRoZQotKyMgZmlyc3Qg ZWxlbWVudCBpcyB0aGUgb3ZlcmxvYWRlZCBtZXRob2QgcGFyYW1ldGVyLiAgVGhlIHNlY29uZCBl bGVtZW50Ci0rIyBpcyB0aGUgZXhwZWN0ZWQgc291cmNlIGZpbGUgbnVtYmVyLCBlLmcuICJwcjEx NzM0LT8uY2MiLgotK2FycmF5IHNldCB0ZXN0cyB7Ci0rICAgICJjaGFyKiIgIDQKLSsgICAgImlu dCIgICAgMwotKyAgICAiIiAgICAgICAyCi0rfQotKwotKyMgVGVzdCBlYWNoIG92ZXJsb2FkIGlu c3RhbmNlIHR3aWNlOiBvbmNlIHF1b3RlZCwgb25jZSB1bnF1b3RlZAotK2ZvcmVhY2ggb3ZsZCBb YXJyYXkgbmFtZXMgdGVzdHNdIHsKLSsgICAgc2V0IG1ldGhvZCAiJHtjbGFzc306OmZvb1woJG92 bGRcKSIKLSsgICAgc2V0IHJlc3VsdCAiQnJlYWtwb2ludCAoXFswLTlcXSkuKmZpbGUgLiovJGNs YXNzLSR0ZXN0cygkb3ZsZCkuKiIKLSsgICAgZ2RiX3Rlc3QgImJyZWFrICRtZXRob2QiICRyZXN1 bHQKLSsgICAgZ2RiX3Rlc3QgImJyZWFrICckbWV0aG9kJyIgJHJlc3VsdAotK30KLSsKLStnZGJf ZXhpdAotK3JldHVybiAwCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9wcjExNzM0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL3ByMTE3MzQuaAkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEw MAotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rICAgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0 byB0aGlzIGZpbGUgdG86Ci0rICAgYnVnLWdkYkBnbnUub3JnICAqLwotKwotK2NsYXNzIHByMTE3 MzQKLSt7Ci0rIHB1YmxpYzoKLSsgIHZvaWQgZm9vICgpOwotKyAgdm9pZCBmb28gKGludCk7Ci0r ICB2b2lkIGZvbyAoY2hhciAqKTsKLSt9OwotKwoKZGlmZiAtLWdpdCBhL2dkYi1waHlzbmFtZS1w cjExNzM0LTJvZjIucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMTczNC0yb2YyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VlYzlmLi4wMDAwMDAwCi0tLSBhL2dkYi1waHlz bmFtZS1wcjExNzM0LTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDQ2MC5odG1s Ci0KLUluZGV4OiBnZGItNy4yL2dkYi9saW5lc3BlYy5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi5vcmlnL2dkYi9saW5lc3BlYy5jCTIwMTEtMDItMDMgMjI6NTk6NDYuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi9nZGIvbGluZXNwZWMuYwkyMDExLTAyLTAzIDIzOjAzOjI4LjAwMDAwMDAw MCArMDEwMAotQEAgLTEyMzAsNyArMTIzMCwxMCBAQCBkZWNvZGVfY29tcG91bmQgKGNoYXIgKiph cmdwdHIsIGludCBmdW5mCi0gICAgIHsKLSAgICAgICBjaGFyICplbmQgPSBza2lwX3F1b3RlZCAo c2F2ZWRfYXJnKTsKLSAgICAgICBtZW1tb3ZlIChzYXZlZF9hcmcsIHNhdmVkX2FyZyArIDEsIGVu ZCAtIHNhdmVkX2FyZyk7Ci0tICAgICAgbWVtbW92ZSAoZW5kIC0gMiwgZW5kLCBzdHJsZW4gKHNh dmVkX2FyZykgKyAxKTsKLSsgICAgICBpZiAoJmVuZFstMl0gPj0gc2F2ZWRfYXJnICYmIGVuZFst Ml0gPT0gJ1wnJykKLSsJbWVtbW92ZSAoZW5kIC0gMiwgZW5kLCBzdHJsZW4gKGVuZCkgKyAxKTsK LSsgICAgICBlbHNlCi0rCW1lbW1vdmUgKGVuZCAtIDEsIGVuZCwgc3RybGVuIChlbmQpICsgMSk7 Ci0gICAgIH0KLSAgICAgICAKLSAgIC8qIEZpcnN0IGNoZWNrIGZvciAiZ2xvYmFsIiBuYW1lc3Bh Y2Ugc3BlY2lmaWNhdGlvbiwgb2YgdGhlIGZvcm0KCmRpZmYgLS1naXQgYS9nZGItcGh5c25hbWUt cHIxMjI3My5wYXRjaCBiL2dkYi1waHlzbmFtZS1wcjEyMjczLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBjY2VjNjJiLi4wMDAwMDAwCi0tLSBhL2dkYi1waHlzbmFtZS1wcjEy MjczLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTEyL21zZzAwMjY0Lmh0bWwKLQotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAyMDYvZ2RiL2xpbmVzcGVjLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2xpbmVzcGVjLmMJMjAxMS0wMi0wNiAyMzowNjoyNi4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9saW5lc3BlYy5jCTIwMTEt MDItMDYgMjM6MDg6MjMuMDAwMDAwMDAwICswMTAwCi1AQCAtMTA1Nyw2ICsxMDU3LDEwIEBAIGxv Y2F0ZV9maXJzdF9oYWxmIChjaGFyICoqYXJncHRyLCBpbnQgKmkKLSAJICAgIGVycm9yIChfKCJt YWxmb3JtZWQgdGVtcGxhdGUgc3BlY2lmaWNhdGlvbiBpbiBjb21tYW5kIikpOwotIAkgIHAgPSB0 ZW1wX2VuZDsKLSAJfQotKwotKyAgICAgIGlmIChwWzBdID09ICcoJykKLSsJcCA9IGZpbmRfbWV0 aG9kX292ZXJsb2FkX2VuZCAocCk7Ci0rCi0gICAgICAgLyogQ2hlY2sgZm9yIGEgY29sb24gYW5k IGEgcGx1cyBvciBtaW51cyBhbmQgYSBbICh3aGljaAotICAgICAgICAgIGluZGljYXRlcyBhbiBP YmplY3RpdmUtQyBtZXRob2QpLiAgKi8KLSAgICAgICBpZiAoaXNfb2JqY19tZXRob2RfZm9ybWF0 IChwKSkKLUBAIC0xMjcyLDggKzEyNzYsMTAgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJn cHRyLCBpbnQgZnVuZgotICAgICAgICAgZmluZF9tZXRob2QuCi0gCi0gICAgICAyKSBBQUE6Omlu QSBpc24ndCB0aGUgbmFtZSBvZiBhIGNsYXNzLiAgSW4gdGhhdCBjYXNlLCBlaXRoZXIgdGhlCi0t ICAgICAgICB1c2VyIG1hZGUgYSB0eXBvIG9yIEFBQTo6aW5BIGlzIHRoZSBuYW1lIG9mIGEgbmFt ZXNwYWNlLgotLSAgICAgICAgRWl0aGVyIHdheSwgd2UganVzdCBsb29rIHVwIEFBQTo6aW5BOjpm dW4gd2l0aCBsb29rdXBfc3ltYm9sLgotKyAgICAgICAgdXNlciBtYWRlIGEgdHlwbywgQUFBOjpp bkEgaXMgdGhlIG5hbWUgb2YgYSBuYW1lc3BhY2UsIG9yIGl0IGlzCi0rICAgICAgICB0aGUgbmFt ZSBvZiBhIG1pbmltYWwgc3ltYm9sLgotKyAgICAgICAgV2UganVzdCBsb29rIHVwIEFBQTo6aW5B OjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLiAgSWYgdGhhdCBmYWlscywKLSsgICAgICAgIHRyeSBs b29rdXBfbWluaW1hbF9zeW1ib2wuCi0gCi0gICAgICBUaHVzLCBvdXIgZmlyc3QgdGFzayBpcyB0 byBmaW5kIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBsYXN0IHNldCBvZgotICAgICAgZG91YmxlLWNv bG9ucyBhbmQgZmlndXJlIG91dCBpZiBpdCdzIHRoZSBuYW1lIG9mIGEgY2xhc3MuICBTbyB3ZQot QEAgLTEyOTQsNiArMTMwMCw4IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50 IGZ1bmYKLSAKLSAgIHdoaWxlICgxKQotICAgICB7Ci0rICAgICAgc3RhdGljIGNoYXIgKmJyZWFr X2NoYXJhY3RlcnMgPSAiIFx0XCcoIjsKLSsKLSAgICAgICAvKiBNb3ZlIHBvaW50ZXIgdXAgdG8g bmV4dCBwb3NzaWJsZSBjbGFzcy9uYW1lc3BhY2UgdG9rZW4uICAqLwotIAotICAgICAgIHAgPSBw MiArIDE7CS8qIFJlc3RhcnQgd2l0aCBvbGQgdmFsdWUgKzEuICAqLwotQEAgLTEzMDQsOCArMTMx Miw3IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmYKLSAgICAgICAv KiBQQVNTMjogcDItPiI6OmZ1biIsIHAtPiI6ZnVuIiAqLwotIAotICAgICAgIC8qIE1vdmUgcG9p bnRlciBhaGVhZCB0byBuZXh0IGRvdWJsZS1jb2xvbi4gICovCi0tICAgICAgd2hpbGUgKCpwICYm IChwWzBdICE9ICcgJykgJiYgKHBbMF0gIT0gJ1x0JykgJiYgKHBbMF0gIT0gJ1wnJykKLS0JICAg ICAmJiAoKnAgIT0gJygnKSkKLSsgICAgICB3aGlsZSAoKnAgJiYgc3RyY2hyIChicmVha19jaGFy YWN0ZXJzLCAqcCkgPT0gTlVMTCkKLSAJewotIAkgIGlmIChjdXJyZW50X2xhbmd1YWdlLT5sYV9s YW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSAJICAgIHAgKz0gY3BfdmFsaWRhdGVfb3BlcmF0 b3IgKHApOwotQEAgLTEzMjksOSArMTMzNiwxMiBAQCBkZWNvZGVfY29tcG91bmQgKGNoYXIgKiph cmdwdHIsIGludCBmdW5mCi0gCSAgZWxzZSBpZiAoKHBbMF0gPT0gJzonKSAmJiAocFsxXSA9PSAn OicpKQotIAkgICAgYnJlYWs7CS8qIEZvdW5kIGRvdWJsZS1jb2xvbi4gICovCi0gCSAgZWxzZQot LQkgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGluZyBoZXJlLCB1bnRpbCBwLT4iIiwgYXQg d2hpY2ggcG9pbnQKLS0JICAgICAgIHdlIGV4aXQgdGhpcyBsb29wLiAgKi8KLS0JICAgIHArKzsK LSsJICAgIHsKLSsJICAgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGluZyBoZXJlLCB1bnRp bCBQIHBvaW50cyB0byBvbmUgb2YgdGhlCi0rCQkgYnJlYWsgY2hhcmFjdGVycywgYXQgd2hpY2gg cG9pbnQgd2UgZXhpdCB0aGlzIGxvb3AuICAqLwotKwkgICAgICBpZiAoc3RyY2hyIChicmVha19j aGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKLSsJCXArKzsKLSsJICAgIH0KLSAJfQotIAotICAgICAg IGlmICgqcCAhPSAnOicpCi1AQCAtMTM0MCw3ICsxMzUwLDcgQEAgZGVjb2RlX2NvbXBvdW5kIChj aGFyICoqYXJncHRyLCBpbnQgZnVuZgotIAkJCSAgIHVuc3VjY2Vzc2Z1bGx5IGFsbCB0aGUgY29t cG9uZW50cyBvZiB0aGUKLSAJCQkgICBzdHJpbmcsIGFuZCBwLT4iIihQQVNTMikuICAqLwotIAot LSAgICAgIC8qIFdlIGdldCBoZXJlIGlmIHAgcG9pbnRzIHRvICcgJywgJ1x0JywgJ1wnJywgIjo6 IiBvciAiIihpLmUKLSsgICAgICAvKiBXZSBnZXQgaGVyZSBpZiBwIHBvaW50cyB0byBvbmUgb2Yg dGhlIGJyZWFrIGNoYXJhY3RlcnMgb3IgIiIoaS5lCi0gCSBzdHJpbmcgZW5kZWQpLiAgKi8KLSAg ICAgICAvKiBTYXZlIHJlc3RhcnQgZm9yIG5leHQgdGltZSBhcm91bmQuICAqLwotICAgICAgIHAy ID0gcDsKLUBAIC0xNDkxLDYgKzE1MDEsMTggQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJn cHRyLCBpbnQgZnVuZgotICAgLyogV2UgY291bGRuJ3QgZmluZCBhIGNsYXNzLCBzbyB3ZSdyZSBp biBjYXNlIDIgYWJvdmUuICBXZSBjaGVjayB0aGUKLSAgICAgIGVudGlyZSBuYW1lIGFzIGEgc3lt Ym9sIGluc3RlYWQuICAqLwotIAotKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdl ID09IGxhbmd1YWdlX2NwbHVzCi0rICAgICAgfHwgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3Vh Z2UgPT0gbGFuZ3VhZ2VfamF2YSkKLSsgICAgewotKyAgICAgIGNoYXIgKnBhcmVuID0gc3RyY2hy IChwLCAnKCcpOwotKyAgICAgIGlmIChwYXJlbiAhPSBOVUxMKQotKwlwID0gZmluZF9tZXRob2Rf b3ZlcmxvYWRfZW5kIChwYXJlbik7Ci0rCi0rICAgICAgLyogTWFrZSBzdXJlIHdlIGtlZXAgaW1w b3J0YW50IGtld29yZHMgbGlrZSAiY29uc3QiICovCi0rICAgICAgaWYgKHN0cm5jbXAgKHAsICIg Y29uc3QiLCA2KSA9PSAwKQotKwlwICs9IDY7Ci0rICAgIH0KLSsKLSAgIGNvcHkgPSAoY2hhciAq KSBhbGxvY2EgKHAgLSBzYXZlZF9hcmcyICsgMSk7Ci0gICBtZW1jcHkgKGNvcHksIHNhdmVkX2Fy ZzIsIHAgLSBzYXZlZF9hcmcyKTsKLSAgIC8qIE5vdGU6IGlmIGlzX3F1b3RlZCBzaG91bGQgYmUg dHJ1ZSwgd2Ugc251ZmYgb3V0IHF1b3RlIGhlcmUKLUBAIC0xNTAzLDkgKzE1MjUsMTggQEAgZGVj b2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgotICAgc3ltID0gbG9va3VwX3N5 bWJvbCAoY29weSwgMCwgVkFSX0RPTUFJTiwgMCk7Ci0gICBpZiAoc3ltKQotICAgICByZXR1cm4g c3ltYm9sX2ZvdW5kIChmdW5maXJzdGxpbmUsIGNhbm9uaWNhbCwgY29weSwgc3ltLCBOVUxMKTsK LSsgIGVsc2UKLSsgICAgewotKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKLSsK LSsgICAgICAvKiBDb3VsZG4ndCBmaW5kIGFueSBpbnRlcnByZXRhdGlvbiBhcyBjbGFzc2VzL25h bWVzcGFjZXMuICBBcyBhIGxhc3QKLSsJIHJlc29ydCwgdHJ5IHRoZSBtaW5pbWFsIHN5bWJvbCB0 YWJsZXMuICAqLwotKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGNvcHksIE5V TEwsIE5VTEwpOwotKyAgICAgIGlmIChtc3ltICE9IE5VTEwpCi0rCXJldHVybiBtaW5zeW1fZm91 bmQgKGZ1bmZpcnN0bGluZSwgbXN5bSk7Ci0rICAgIH0gICAgCi0gCi0tICAvKiBDb3VsZG4ndCBm aW5kIGFueSBpbnRlcnByZXRhdGlvbiBhcyBjbGFzc2VzL25hbWVzcGFjZXMsIHNvIGdpdmUKLS0g ICAgIHVwLiAgVGhlIHF1b3RlcyBhcmUgaW1wb3J0YW50IGlmIGNvcHkgaXMgZW1wdHkuICAqLwot KyAgLyogQ291bGRuJ3QgZmluZCBhIG1pbmltYWwgc3ltYm9sLCBlaXRoZXIsIHNvIGdpdmUgdXAu ICAqLwotICAgaWYgKG5vdF9mb3VuZF9wdHIpCi0gICAgICpub3RfZm91bmRfcHRyID0gMTsKLSAg IGNwbHVzcGx1c19lcnJvciAodGhlX3JlYWxfc2F2ZWRfYXJnLAotSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5jYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5jYwkyMDExLTAyLTA2 IDIzOjA3OjE5LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwzNyBAQAotKy8qIFRoaXMgdGVz dCBjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdo dCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLStj bGFzcyBHREIKLSt7Ci0rIHB1YmxpYzoKLSsgICBzdGF0aWMgaW50IHNpbXBsZSAodm9pZCkgeyBy ZXR1cm4gMDsgfQotKyAgIHN0YXRpYyBpbnQgaGFyZGVyIChUIGEpIHsgcmV0dXJuIDE7IH0KLSsg ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KLSsgICBzdGF0aWMgWCBldmVuX2hhcmRlciAoVCBhKSB7 IHJldHVybiBzdGF0aWNfY2FzdDxYPiAoYSk7IH0KLSsgICBpbnQgb3BlcmF0b3IgPT0gKEdEQiBj b25zdCYgb3RoZXIpCi0rICAgeyByZXR1cm4gMTsgfQotK307Ci0rCi0raW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQotK3sKLSsgICBHREI8aW50PiBhLCBiOwotKyAgIGlmIChhID09IGIp Ci0rICAgICByZXR1cm4gR0RCPGNoYXI+OjpoYXJkZXIoJ2EnKSArIEdEQjxpbnQ+OjpoYXJkZXIo MykKLSsJKyBHREI8Y2hhcj46OmV2ZW5faGFyZGVyPGludD4gKCdhJyk7Ci0rICAgcmV0dXJuIEdE QjxpbnQ+OjpzaW1wbGUgKCk7Ci0rfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2 L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIyNzMuZXhwCTIwMTEtMDItMDYgMjM6MDc6MTkuMDAw MDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBDb250cmlidXRlZCBieSBSZWQgSGF0LCBv cmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2VpdGggU2VpdHouCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRl LgotKwotK2lmIHtbc2tpcF9jcGx1c190ZXN0c119IHsgY29udGludWUgfQotKwotK3NldCB0ZXN0 ZmlsZSAicHIxMjI3MyIKLSsjIERvIE5PVCBjb21waWxlIHdpdGggZGVidWcgZmxhZy4KLStwcmVw YXJlX2Zvcl90ZXN0aW5nIHByMTIyNzMgJHRlc3RmaWxlICR0ZXN0ZmlsZS5jYyB7YysrfQotKwot K2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGMrKyIKLSsKLSsjIEEgbGlzdCBvZiBt aW5pbWFsIHN5bWJvbCBuYW1lcyB0byBjaGVjay4KLSsjIE5vdGUgdGhhdCBHREI8Y2hhcj46OmV2 ZW5faGFyZGVyPGludD4oY2hhcikgaXMgcXVvdGVkIGFuZCBpbmNsdWRlcwotKyMgdGhlIHJldHVy biB0eXBlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGlzIGlzIHRoZSBkZW1hbmdsZWQg bmFtZQotKyMgb2YgdGhlIG1pbmltYWwgc3ltYm9sLgotK3NldCBtaW5fc3ltcyBbbGlzdCBcCi0r CQkgICJHREI8aW50Pjo6b3BlcmF0b3IgPT0iIFwKLSsJCSAgIkdEQjxpbnQ+OjpvcGVyYXRvcj09 KEdEQjxpbnQ+IGNvbnN0JikiIFwKLSsJCSAgIkdEQjxjaGFyPjo6aGFyZGVyKGNoYXIpIiBcCi0r CQkgICJHREI8aW50Pjo6aGFyZGVyKGludCkiIFwKLSsJCSAgeyJpbnQgR0RCPGNoYXI+OjpldmVu X2hhcmRlcjxpbnQ+KGNoYXIpIn0gXAotKwkJICAiR0RCPGludD46OnNpbXBsZSgpIl0KLSsKLStm b3JlYWNoIHN5bSAkbWluX3N5bXMgewotKyAgICBpZiB7W2dkYl9icmVha3BvaW50ICRzeW1dfSB7 Ci0rCXBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCAkc3ltIgotKyAgICB9Ci0rfQotKwotK2dk Yl9leGl0CgpkaWZmIC0tZ2l0IGEvZ2RiLXB5dGhvbi1uZXdiYWNrdHJhY2UucGF0Y2ggYi9nZGIt cHl0aG9uLW5ld2JhY2t0cmFjZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg YzA3NzU3Yy4uMDAwMDAwMAotLS0gYS9nZGItcHl0aG9uLW5ld2JhY2t0cmFjZS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvYXJj aGVyLzIwMTEtcTEvbXNnMDAwMjQuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggUkggQlogNjcy MjM1Ci0KLQotQnVnOgotCi1odHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9NjcyMjM1Ci0KLVRoZSBsYXR0ZXIgaGFsZiBvZiB0aGlzIGJ1ZyB3YXMgY2F1c2VkIGJ5IHJl bW92aW5nIHRoZSB2YWx1ZSBmdW5jdGlvbgotZnJvbSBnZGIuU3ltYm9sLiAgVGhpcyBoYXBwZW5l ZCBxdWl0ZSBzb21lIHRpbWUgYWdvLCBzbyBJIGFtIGEgbGl0dGxlCi1zdXJwcmlzZWQgaXQgdG9v ayB0aGlzIGxvbmcgdG8gc3VyZmFjZS4KLQotVGhlIG9sZCBTeW1ib2wudmFsdWUgZnVuY3Rpb24g bmV2ZXIgcmV0dXJuZWQgYW55dGhpbmcgZXhjZXB0IGEgZ2RiLkJsb2NrCi1pZiB0aGUgc3ltYm9s IGhhcHBlbmVkIHRvIHJlcHJlc2VudCBhIGZ1bmN0aW9uIGEgYmxvY2suICBBbnl0aGluZyBlbHNl Ci1yYWlzZWQgYW4gZXJyb3IuICBXYXkgYmFjayB3aGVuLCBJIHJlbW92ZWQgdGhpcyBmdW5jdGlv biBhcyBpdCB3YXMgYW4KLW9idmlvdXMgc3R1YiwgYW5kIGl0IHdhcyBzdXBlcnNlZGVkIGJ5IGZy YW1lLnJlYWRfdmFyKCkgd2hpY2ggaXMgYSBtb3JlCi1hY2N1cmF0ZSBtZXRob2Qgb2YgZGV0ZXJt aW5pbmcgdGhlIHZhbHVlIG9mIGEgc3ltYm9sLgotCi1XaW5kIGZvcndhcmQgdG8gdG9kYXksIGFu ZCBpdCB0dXJucyBvdXQgb25lIG9mIHRoZSB1bnBvcnRlZAotYXJjaGVyLXRyb21leS1weXRob24g c2NyaXB0cyB3ZSBzaGlwIGluIEZlZG9yYSByZWxpZXMgb24gdGhpcyAoc3ltYm9sIC0+Ci1ibG9j aykgQVBJLiAgSSB0aG91Z2h0IGFib3V0IHdheXMgb2YgdHJ5aW5nIHRvIGZpeCB0aGlzLiBJIHRo b3VnaHQgYWJvdXQKLWp1c3QgY2hhbmdpbmcgRnJhbWVXcmFwcGVyIHRvIGp1c3QgdGFrZSBhIGJs b2NrIGluc3RlYWQgb2YgYSBzeW1ib2wKLXJlcHJlc2VudGluZyBhIGZ1bmN0aW9uLiAgQnV0IEZy YW1lV3JhcHBlciBoYXMgYW4gQVBJIHRoYXQgd2Ugc2hpcHBlZC4KLUkgdHJpZWQgdG8gZmluZCB0 aGUgYmxvY2sgdGhyb3VnaCB0aGUgZXhpc3RpbmcgQVBJLCBidXQgdGhhdCBkaWQgbm90Ci13b3Jr IHRvbyB3ZWxsLiAgVGhlIGdkYi5CbG9jayBtZXRob2QgYmxvY2tfZm9yX3BjIGNhbiByZXR1cm4g YSBibG9jawotZnJvbSBhIHBjIGJ1dCB0aGlzIGp1c3QgdHVybmVkIG91dCB0byBiZSBleHBlbnNp dmUgYW5kIGNvbnZvbHV0ZWQuICBJCi1ldmVudHVhbGx5IGp1c3QgZWxlY3RlZCB0byBhZGQgYSBi bG9jaygpIGZ1bmN0aW9uIHRvIGdkYi5TeW1ib2wgd2hpY2gsCi1pZiB0aGUgc3ltYm9sIHJlcHJl c2VudGVkIGEgbWV0aG9kIG9yIGEgZnVuY3Rpb24sIHdvdWxkIHJldHVybiB0aGUgYmxvY2suCi1Z ZXQgSSBhbSBzdGlsbCBub3QgZW50aXJlbHkgc2F0aXNmaWVkLiAgSXQgc2VlbXMgd2VpcmQgdG8g YXNrIHRoZSB1c2VyCi10byByZXRyaWV2ZSBzeW1ib2wgdmFsdWUgZnJvbSBmcmFtZS5yZWFkX3Zh ciBmb3IgbW9zdCBzeW1ib2xzLCBidXQgaW4KLXRoZSBjYXNlIG9mIGEgZnVuY3Rpb24gb3IgbWV0 aG9kLCB1c2UgYmxvY2soKS4gIEkgdHJpZWQgdG8gdXNlIHJlYWRfdmFyCi1mb3IgdGhpcywgYnV0 IGl0IHJldHVybnMgYSBnZGIuVmFsdWUsIGFuZCBJIGNvdWxkIG5vdCBmaWd1cmUgb3V0IGEgd2F5 IHRvCi10cmFuc2Zvcm0gYSBnZGIuVmFsdWUgdG8gYSBnZGIuQmxvY2suCi0KLUJlZm9yZSBJIHN1 Ym1pdCB0aGlzIGZvciB1cHN0cmVhbSByZXZpZXcgSSdkIGxpa2UgdG8gc2VlIGlmIGFueW9uZSBo YXMKLWFueSBjb21tZW50cy4KLQotQ2hlZXJzCi0KLVBoaWwKLQotLS0KLQotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAzMDUvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuNTAuMjAxMTAzMDUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDMtMDUgMDg6Mjc6 MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTEtMDMtMDUgMDg6Mjg6MzMuMDAwMDAwMDAwICswMTAwCi1AQCAtMjI5MTksNiAr MjI5MTksMTMgQEAgVGhlIHJlc3VsdCBpcyBhIEBjb2Rle2dkYi5TeW1ib2x9IG9iamVjdAotIGlz IG5vdCBmb3VuZC4KLSBAZW5kIGRlZnVuCi0gCi0rQSBAY29kZXtnZGIuU3ltYm9sfSBvYmplY3Qg aGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLSsKLStAZGVmbWV0aG9kIFN5bWJvbCBibG9jawot K1JldHVybnMgYSBAY29kZXtnZGIuQmxvY2t9IG9iamVjdCBpZiB0aGUgc3ltYm9sIGlzIGEgZnVu Y3Rpb24gb3IgYQotK21ldGhvZC4gIEB4cmVme0Jsb2NrcyBJbiBQeXRob259LgotK0BlbmQgZGVm bWV0aG9kCi0rCi0gQSBAY29kZXtnZGIuU3ltYm9sfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcg YXR0cmlidXRlczoKLSAKLSBAdGFibGUgQGNvZGUKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1 L2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjUwLjIwMTEwMzA1Lm9yaWcvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQky MDExLTAzLTA1IDA4OjI2OjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAz MDUvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQkyMDExLTAzLTA1IDA4OjI3OjIy LjAwMDAwMDAwMCArMDEwMAotQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJhbWVXcmFwcGVyOgot ICAgICAgICAgICAgIHJldHVybgotIAotICAgICAgICAgZmlyc3QgPSBUcnVlCi0tICAgICAgICBi bG9jayA9IGZ1bmMudmFsdWUKLSsgICAgICAgIGJsb2NrID0gZnVuYy5ibG9jayAoKQotIAotICAg ICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSAgICAgICAgICAgICBpZiBzeW0uaXNfYXJndW1lbnQ6 Ci1AQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBGcmFtZVdyYXBwZXI6Ci0gICAgICAgICAgICAgcmV0 dXJuCi0gCi0gICAgICAgICBmaXJzdCA9IFRydWUKLS0gICAgICAgIGJsb2NrID0gZnVuYy52YWx1 ZQotKyAgICAgICAgYmxvY2sgPSBmdW5jLmJsb2NrICgpCi0gCi0gICAgICAgICBmb3Igc3ltIGlu IGJsb2NrOgotICAgICAgICAgICAgIGlmIG5vdCBzeW0uaXNfYXJndW1lbnQ6Ci1JbmRleDogZ2Ri LTcuMi41MC4yMDExMDMwNS9nZGIvcHl0aG9uL3B5LXN5bWJvbC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi41MC4yMDExMDMwNS5vcmlnL2dkYi9weXRob24vcHktc3ltYm9sLmMJMjAxMS0wMi0y NiAwMzowNzowOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi9w eXRob24vcHktc3ltYm9sLmMJMjAxMS0wMy0wNSAwODoyNzoyMi4wMDAwMDAwMDAgKzAxMDAKLUBA IC0xNjcsNiArMTY3LDI3IEBAIHN5bXB5X2lzX3ZhcmlhYmxlIChQeU9iamVjdCAqc2VsZiwgdm9p ZCAKLSAJCQkgICAgICB8fCBjbGFzcyA9PSBMT0NfT1BUSU1JWkVEX09VVCkpOwotIH0KLSAKLStz dGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9ibG9jayAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bWJvbCA9IE5VTEw7Ci0rCi0rICBT WU1QWV9SRVFVSVJFX1ZBTElEIChzZWxmLCBzeW1ib2wpOwotKwotKyAgaWYgKFNZTUJPTF9DTEFT UyAoc3ltYm9sKSA9PSBMT0NfQkxPQ0spCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc3ltdGFiICpz eW10ID0gU1lNQk9MX1NZTVRBQiAoc3ltYm9sKTsKLSsKLSsgICAgICByZXR1cm4gYmxvY2tfdG9f YmxvY2tfb2JqZWN0IChTWU1CT0xfQkxPQ0tfVkFMVUUgKHN5bWJvbCksCi0rCQkJCSAgICBzeW10 LT5vYmpmaWxlKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhj X1J1bnRpbWVFcnJvciwKLSsJCSAgICAgXygiU3ltYm9sIGlzIG5vdCBhIGJsb2NrIGNsYXNzLiIp KTsKLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSAvKiBHaXZlbiBhIHN5bWJvbCwgYW5kIGEg c3ltYm9sX29iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4KLSAgICBhbGxvY2F0ZWQgYW5k IGluaXRpYWxpemVkLCBwb3B1bGF0ZSB0aGUgc3ltYm9sX29iamVjdCB3aXRoIHRoZQotICAgIHN0 cnVjdCBzeW1ib2wgZGF0YS4gIEFsc28sIHJlZ2lzdGVyIHRoZSBzeW1ib2xfb2JqZWN0IGxpZmUt Y3ljbGUKLUBAIC0zOTYsNiArNDE3LDEzIEBAIGdkYnB5X2luaXRpYWxpemVfc3ltYm9scyAodm9p ZCkKLSAKLSAMCi0gCi0rc3RhdGljIFB5TWV0aG9kRGVmIHN5bWJvbF9vYmplY3RfbWV0aG9kc1td ID0gewotKyAgeyAiYmxvY2siLCBzeW1weV9nZXRfYmxvY2ssIE1FVEhfTk9BUkdTLAotKyAgICAi YmxvY2sgKCkgLT4gZ2RiLkJsb2NrLlxuXAotK1JldHVybiB0aGUgYmxvY2sgb2YgdGhpcyBzeW1i b2wsIGlmIHRoZSBzeW1ib2wgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLiIgfSwKLSsgIHtOVUxMfSAg LyogU2VudGluZWwgKi8KLSt9OwotKwotIHN0YXRpYyBQeUdldFNldERlZiBzeW1ib2xfb2JqZWN0 X2dldHNldFtdID0gewotICAgeyAic3ltdGFiIiwgc3ltcHlfZ2V0X3N5bXRhYiwgTlVMTCwKLSAg ICAgIlN5bWJvbCB0YWJsZSBpbiB3aGljaCB0aGUgc3ltYm9sIGFwcGVhcnMuIiwgTlVMTCB9LAot QEAgLTQ0OSw3ICs0NzcsNyBAQCBQeVR5cGVPYmplY3Qgc3ltYm9sX29iamVjdF90eXBlID0gewot ICAgMCwJCQkJICAvKnRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAwLAkJCQkgIC8qdHBfaXRlciAq LwotICAgMCwJCQkJICAvKnRwX2l0ZXJuZXh0ICovCi0tICAwLAkJCQkgIC8qdHBfbWV0aG9kcyAq LwotKyAgc3ltYm9sX29iamVjdF9tZXRob2RzLAkgIC8qdHBfbWV0aG9kcyAqLwotICAgMCwJCQkJ ICAvKnRwX21lbWJlcnMgKi8KLSAgIHN5bWJvbF9vYmplY3RfZ2V0c2V0CQkgIC8qdHBfZ2V0c2V0 ICovCi0gfTsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1zeW1ib2wuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMwNS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zeW1ib2wuZXhwCTIwMTEtMDItMjIgMjM6 NDg6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktc3ltYm9sLmV4cAkyMDExLTAzLTA1IDA4OjI3OjIyLjAwMDAwMDAw MCArMDEwMAotQEAgLTc2LDYgKzc2LDEwIEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgZnVuYy5w cmludF9uYW1lIiAKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50IGZ1bmMubGlua2FnZV9uYW1lIiAi ZnVuYyIgIlRlc3QgZnVuYy5saW5rYWdlX25hbWUiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBm dW5jLmFkZHJfY2xhc3MgPT0gZ2RiLlNZTUJPTF9MT0NfQkxPQ0siICJUcnVlIiAiVGVzdCBmdW5j LmFkZHJfY2xhc3MiCi0gCi0rIyBUZXN0IGJsb2NrKCkgbWV0aG9kCi0rZ2RiX3B5X3Rlc3Rfc2ls ZW50X2NtZCAicHl0aG9uIGZ1bmMgPSBmcmFtZS5ibG9jaygpLmZ1bmN0aW9uIiAiR2V0IGJsb2Nr IiAwCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBmdW5jLmJsb2NrKCkuZnVuY3Rpb24ubmFtZSIg ImZ1bmMiICJUZXN0IGJsb2NrIG1ldGhvZCIKLSsKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiQnJlYWsgYXQgZW5kLiJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg IkJyZWFrIGF0IGVuZC4iCi0gZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGZyYW1lID0g Z2RiLnNlbGVjdGVkX2ZyYW1lKCkiICJHZXQgRnJhbWUiIDAKCmRpZmYgLS1naXQgYS9nZGItc3Rh cC13YXJuaW5ncy5wYXRjaCBiL2dkYi1zdGFwLXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNzU1CmluZGV4IDAwMDAwMDAuLjhlMDdlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItc3Rh cC13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDU5IEBACitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvYXJjaGVyLzIwMTEtcTEvbXNnMDAxMzYuaHRtbAorU3ViamVjdDogYXJjaGVyLXNlcmdpb2Rq LXN0YXAgLU8yIC1XYWxsIHdhcm5pbmdzPWVycm9ycworCitIaSBTZXJnaW8sCisKK3dpdGggLU8y ICgrc29tZSAtV2FsbCBvciBzbyBvcHRpb25zIHBvc3NpYmx5IC0gd2hhdCBhcHBsaWVzIGZvciBG ZWRvcmEgYnVpbGRzKQorb25lIGdldHM6CisKK2djYy00LjYuMC0wLjE0LmZjMTUueDg2XzY0Citz dGFwLXByb2JlLmM6IEluIGZ1bmN0aW9uIBskQiFGGyhCc3RhcF9mZXRjaF9yZWdfdmFsdWUbJEIh RxsoQjoKK3N0YXAtcHJvYmUuYzo5MjM6MTI6IGVycm9yOiAbJEIhRhsoQmFvcBskQiFHGyhCIG1h eSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj11bmluaXRp YWxpemVkXQorc3RhcC1wcm9iZS5jOjkxOToxMDogZXJyb3I6IBskQiFGGyhCcmV0GyRCIUcbKEIg bWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPXVuaW5p dGlhbGl6ZWRdCitzdGFwLXByb2JlLmM6IEluIGZ1bmN0aW9uIBskQiFGGyhCc3RhcF9ldmFsdWF0 ZV9jb25kaXRpb25hbGx5GyRCIUcbKEI6CitzdGFwLXByb2JlLmM6MTE4NDozOiBlcnJvcjogGyRC IUYbKEJyZXMbJEIhRxsoQiBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rp b24gWy1XZXJyb3I9dW5pbml0aWFsaXplZF0KKworVGhlIGF0dGFjaGVkIHBhdGNoIG5lZWRzIGEg cmV2aWV3LCBJIGhhdmUgb25seSBicmllZmx5IGNoZWNrZWQgaXQgaXMgbm90Citjb21wbGV0ZWx5 IGJvZ3VzLgorCisKK1RoYW5rcywKK0phbgorCisKKy0tLSBhL2dkYi9zdGFwLXByb2JlLmMKKysr KyBiL2dkYi9zdGFwLXByb2JlLmMKK0BAIC03ODAsNyArNzgwLDkgQEAgc3RhcF9mZXRjaF9yZWdf dmFsdWUgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvLAorICNkZWZpbmUg UkVHX05BTUVfTUFYX1NJWkUgMjAKKyAgIGNoYXIgcmVnbmFtZVtSRUdfTkFNRV9NQVhfU0laRSAr IDFdOworICAgaW50IGxlbiwgcmVnbnVtLCBpbmRpcmVjdF9wID0gMDsKKy0gIHN0cnVjdCB2YWx1 ZSAqcmV0OworKyAgLyogR0NDIGZhbHNlIHdhcm5pbmc6IBskQiFGGyhCcmV0GyRCIUcbKEIgbWF5 IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCisrICAgICAqLworKyAgc3Ry dWN0IHZhbHVlICpyZXQgPSBOVUxMOworICAgCisgICAvKiBUaGUgZnVuY3Rpb24gd2hpY2ggY2Fs bGVkIHVzIGRpZCBub3QgY2hlY2sgaWYgdGhlIGV4cHJlc3Npb24KKyAgICAgIGJ1ZmZlciB3YXMg ZW1wdHkuICAqLworQEAgLTg1MSw3ICs4NTMsOSBAQCBzdGFwX2ZldGNoX3JlZ192YWx1ZSAoc3Ry dWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8sCisgICBpZiAoaW5kaXJlY3RfcCkK KyAgICAgeworICAgICAgIHN0cnVjdCB0eXBlICp0ID0gTlVMTDsKKy0gICAgICBlbnVtIGFnZW50 X29wIGFvcDsKKysgICAgICAvKiBHQ0MgZmFsc2Ugd2FybmluZzogGyRCIUYbKEJhb3AbJEIhRxso QiBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24uCisrICAgICAgICAg Ki8KKysgICAgICBlbnVtIGFnZW50X29wIGFvcCA9IDA7CisgCisgICAgICAgLyogSWYgdGhlIHVz ZXIgaGFzIHNwZWNpZmllZCB0aGF0IHRoZSByZWdpc3RlciBtdXN0IGJlIGluZGlyZWN0ZWQsCisg CSB3ZSBzaG91bGQga25vdyB3aGF0J3MgdGhlIGNvcnJlY3QgdHlwZSB0byBjYXN0IGl0IGJlZm9y ZSBtYWtpbmcKK0BAIC05NDksNyArOTUzLDkgQEAgc3RhcF9ldmFsdWF0ZV9zaW5nbGVfb3BlcmFu ZCAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8pCisgICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5mby0+Z2RiYXJjaDsKKyAgIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJhbWU7CisgICBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0 bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKKy0gIHN0cnVjdCB2YWx1ZSAqcmVzOworKyAgLyog R0NDIGZhbHNlIHdhcm5pbmc6IBskQiFGGyhCcmVzGyRCIUcbKEIgbWF5IGJlIHVzZWQgdW5pbml0 aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCisrICAgICAqLworKyAgc3RydWN0IHZhbHVlICpyZXMg PSBOVUxMOworIAorICAgc3dpdGNoICgqZXZhbF9pbmZvLT5leHBfYnVmKQorICAgICB7CisKCmRp ZmYgLS1naXQgYS9nZGItdXBzdHJlYW0ucGF0Y2ggYi9nZGItdXBzdHJlYW0ucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMzQ5ZGYuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3Ry ZWFtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAxMS0wMy9tc2cwMDA3Ny5odG1sCi0KLSMjIyBzcmMvZ2RiL2dk YnNlcnZlci9DaGFuZ2VMb2cJMjAxMS8wMy8wNCAwNjozMTo1NAkxLjQ2MwotIyMjIHNyYy9nZGIv Z2Ric2VydmVyL0NoYW5nZUxvZwkyMDExLzAzLzA1IDAzOjQ1OjI2CTEuNDY0Ci0jIyAtMSwzICsx LDEwIEBACi0rMjAxMS0wMy0wNSAgWWFvIFFpICA8eWFvQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0r CSogTWFrZWZpbGUuaW4gKENMRUFORElSUywgUkVRVUlSRURfU1VCRElSUyk6IE5ldyB2YXJpYWJs ZS4KLSsJKHN1YmRpcl9kbyk6IE5ldyBtYWtlIHRhcmdldC4gIENvcGllZCBmcm9tIGdkYi9NYWtl ZmlsZS4KLSsJKG1haW50YWluZXItY2xlYW4sIHJlYWxjbGVhbiwgZGlzdGNsZWFuLCBjbGVhbik6 IENhbGwgY29ycmVzcG9uZGluZwotKwltYWtlIHRhcmdldHMgaW4gY29tbW9uL01ha2VmaWxlLgot KwotIDIwMTEtMDMtMDQgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnkuY29tPgotIAotIAkqIE1h a2VmaWxlLmluOiBSZW1vdmUgR05VIG1ha2UgZmVhdHVyZSAtLWRpcmVjdG9yeS4KLS0tLSBzcmMv Z2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgkyMDExLzAzLzA0IDA2OjMxOjU0CTEuMTA0Ci0rKysg c3JjL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4JMjAxMS8wMy8wNSAwMzo0NToyNgkxLjEwNQot QEAgLTEzNiw2ICsxMzYsOSBAQAotIExJQkNPTU1PTiA9ICQoTElCQ09NTU9OX0RJUikvbGliY29t bW9uLmEKLSBMSUJDT01NT05fU1JDID0gJChzcmNkaXIpLyQoTElCQ09NTU9OX0RJUikKLSAKLStD TEVBTkRJUlMgPSAkKExJQkNPTU1PTl9ESVIpCi0rUkVRVUlSRURfU1VCRElSUyA9ICQoTElCQ09N TU9OX0RJUikKLSsKLSBTT1VSQ0VTID0gJChTRklMRVMpCi0gVEFHRklMRVMgPSAkKFNPVVJDRVMp ICR7SEZJTEVTfSAke0FMTFBBUkFNfSAke1BPU1NMSUJTfQotIAotQEAgLTI5MSw2ICsyOTQsNyBA QAotIHRhZ3M6IFRBR1MKLSAKLSBjbGVhbjoKLSsJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBE Tz1jbGVhbiAiRE9ESVJTPSQoQ0xFQU5ESVJTKSIgc3ViZGlyX2RvCi0gCXJtIC1mICoubyAke0FE RF9GSUxFU30gKn4KLSAJcm0gLWYgdmVyc2lvbi5jCi0gCXJtIC1mIGdkYnNlcnZlciQoRVhFRVhU KSBnZGJyZXBsYXkkKEVYRUVYVCkgY29yZSBtYWtlLmxvZwotQEAgLTMxNCw2ICszMTgsNyBAQAot IAlybSAtZiBpMzg2LW1teC5jIGkzODYtbW14LWxpbnV4LmMKLSAKLSBtYWludGFpbmVyLWNsZWFu IHJlYWxjbGVhbiBkaXN0Y2xlYW46IGNsZWFuCi0rCUAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykg RE89JEAgIkRPRElSUz0kKENMRUFORElSUykiIHN1YmRpcl9kbwotIAlybSAtZiBubS5oIHRtLmgg eG0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggY29uZmlnLmxvZwotIAlybSAtZiBN YWtlZmlsZQotIAotQEAgLTMyMSw2ICszMjYsMjIgQEAKLSBzdGFtcC1oOiBjb25maWcuaW4gY29u ZmlnLnN0YXR1cwotIAlDT05GSUdfRklMRVM9IiIgQ09ORklHX0hFQURFUlM9Y29uZmlnLmg6Y29u ZmlnLmluICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotIAotK3N1YmRpcl9kbzogZm9yY2UKLSsJ QGZvciBpIGluICQoRE9ESVJTKTsgZG8gXAotKwkJY2FzZSAkJGkgaW4gXAotKwkJJChSRVFVSVJF RF9TVUJESVJTKSkgXAotKwkJCWlmIFsgISAtZiAuLyQkaS9NYWtlZmlsZSBdIDsgdGhlbiBcCi0r CQkJCWVjaG8gIk1pc3NpbmcgJCRpL01ha2VmaWxlIiA+JjIgOyBcCi0rCQkJCWV4aXQgMSA7IFwK LSsJCQlmaSA7OyBcCi0rCQllc2FjIDsgXAotKwkJaWYgWyAtZiAuLyQkaS9NYWtlZmlsZSBdIDsg dGhlbiBcCi0rCQkJaWYgKGNkIC4vJCRpOyBcCi0rCQkJCSQoTUFLRSkgJChGTEFHU19UT19QQVNT KSAkKERPKSkgOyB0aGVuIHRydWUgOyBcCi0rCQkJZWxzZSBleGl0IDEgOyBmaSA7IFwKLSsJCWVs c2UgdHJ1ZSA7IGZpIDsgXAotKwlkb25lCi0rCi0gTWFrZWZpbGU6IE1ha2VmaWxlLmluIGNvbmZp Zy5zdGF0dXMKLSAJQ09ORklHX0hFQURFUlM9IiIgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0g CgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA5M2RiNjlhLi40ODhjNjlh IDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjMsMTEgKzIzLDExIEBA IE5hbWU6IGdkYiV7P193aXRoX2RlYnVnOi1kZWJ1Z30KICMgU2V0IHZlcnNpb24gdG8gY29udGVu dHMgb2YgZ2RiL3ZlcnNpb24uaW4uCiAjIE5PVEU6IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBu dW1iZXJlZCBOLk0gZm9yIG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwogIyBhbmQsIHNpbmNl IEphbnVhcnkgMjAwNSwgWC5ZLlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3RzLCBsaWtlIDYuMy41 MC4yMDA1MDExMiAjIChkYWlseSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBvciA2LjMuMC4yMDA0 MDExMiAoaGVhZCBvZiB0aGUgcmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjogNy4yLjUwLjIwMTEw MzA1CitWZXJzaW9uOiA3LjIuNTAuMjAxMTAzMjAKIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29u dGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3Ry ZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNp ZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAyOCV7P193aXRoX3Vwc3Ry ZWFtOi51cHN0cmVhbX0lez9kaXN0fQorUmVsZWFzZTogMjklez9fd2l0aF91cHN0cmVhbToudXBz dHJlYW19JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBleGNlcHRp b25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTCsgYW5kIExH UEx2MisgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbgogR3JvdXA6IERldmVsb3BtZW50L0RlYnVn Z2VycwpAQCAtMjY0LDcgKzI2NCw3IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMt ZnJvbS1wdGhyZWFkLXRlc3QucGF0Y2gKIAogIyBCYWNrcG9ydGVkIGZpeHVwcyBwb3N0IHRoZSBz b3VyY2UgdGFyYmFsbC4KICNYZHJvcDogSnVzdCBiYWNrcG9ydHMuCi1QYXRjaDIzMjogZ2RiLXVw c3RyZWFtLnBhdGNoCisjUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNl IGZvciBQUEMgUG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCku CiAjPWZlZG9yYXRlc3QrcHBjCkBAIC01NDksMTggKzU0OSwxNSBAQCBQYXRjaDU1NTogZ2RiLWdj YzQ2LXR5cGVkZWYucGF0Y2gKICMgPXB1c2gKIFBhdGNoNTU2OiBnZGItZ2NjNDYtc3RkYXJnLXBy b2xvZ3VlLnBhdGNoCiAKLSMgRml4IFB5dGhvbiBuZXctYmFja3RyYWNlIGNvbW1hbmQgKEJaIDY3 MjIzNSwgUGhpbCBNdWxkb29uKS4KLSMgPXB1c2gKLVBhdGNoNTU3OiBnZGItcHl0aG9uLW5ld2Jh Y2t0cmFjZS5wYXRjaAotCi0jIEZpeCByZWdyZXNzaW9ucyBvbiBDKysgbmFtZXMgcmVzb2x2aW5n IChQUiAxMTczNCwgUFIgMTIyNzMsIEtlaXRoIFNlaXR6KS4KLVBhdGNoNTY1OiBnZGItcGh5c25h bWUtcHIxMTczNC0xb2YyLnBhdGNoCi1QYXRjaDU2NjogZ2RiLXBoeXNuYW1lLXByMTE3MzQtMm9m Mi5wYXRjaAotUGF0Y2g1Njc6IGdkYi1waHlzbmFtZS1wcjEyMjczLnBhdGNoCi0KICMgRml4IGF0 dGFjaC9jb3JlLWxvYWQgb2Ygeyx1bn1wcmVsaW5rZWQgaTM4NiBsaWJzIChidWdyZXBvcnQgYnkg TWljaGFsIFRvbWFuKS4KIFBhdGNoNTcxOiBnZGItcHJlbGluay1yZWxhLnBhdGNoCiAKKyMgW3N0 YXBdIEZpeCAtTzIgd2FybmluZ3MuCitQYXRjaDU3NjogZ2RiLXN0YXAtd2FybmluZ3MucGF0Y2gK KworIyBGaXggQWRhIHN1cHBvcnQgY3Jhc2ggb24gdW5pbml0aWFsaXplZCBnZGJhcmNoLgorUGF0 Y2g1Nzc6IGdkYi1hZGEtZ2RiYXJjaC1jcmFzaC5wYXRjaAorCiBCdWlsZFJlcXVpcmVzOiBuY3Vy c2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQtZGV2ZWwl ez9faXNhfQogUmVxdWlyZXM6IHJlYWRsaW5lJXs/X2lzYX0KIEJ1aWxkUmVxdWlyZXM6IHJlYWRs aW5lLWRldmVsJXs/X2lzYX0KQEAgLTcxNyw3ICs3MTQsNyBAQCBybSAtZiBnZGIvanYtZXhwLmMg Z2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVpZiAwJXshP193aXRo X3Vwc3RyZWFtOjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAt cDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQpAQCAtODI4LDExICs4MjUsOSBAQCBybSAtZiBn ZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0 Y2g1NTQgLXAxCiAlcGF0Y2g1NTUgLXAxCiAlcGF0Y2g1NTYgLXAxCi0lcGF0Y2g1NTcgLXAxCi0l cGF0Y2g1NjUgLXAxCi0lcGF0Y2g1NjYgLXAxCi0lcGF0Y2g1NjcgLXAxCiAlcGF0Y2g1NzEgLXAx CislcGF0Y2g1NzYgLXAxCislcGF0Y2g1NzcgLXAxCiAKICVwYXRjaDM5MCAtcDEKICVwYXRjaDM5 MyAtcDEKQEAgLTEyNTgsNiArMTI1MywxMiBAQCBmaQogJXtfaW5mb2Rpcn0vZ2RiLmluZm8qCiAK ICVjaGFuZ2Vsb2cKKyogU3VuIE1hciAyMCAyMDExIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPiAtIDcuMi41MC4yMDExMDMyMC0yOS5mYzE1CistIFJlYmFzZSB0byBG U0YgR0RCIDcuMi41MC4yMDExMDMyMCAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgorLSBN ZXJnZSBhcmNoZXItc2VyZ2lvZGotc3RhcCwgdGhlIFN5c3RlbVRhcCBwcm9iZXMgYnJlYWtwb2lu dHMgZmVhdHVyZS4KKyAgLSBbc3RhcF0gRml4IC1PMiB3YXJuaW5ncy4KKy0gRml4IEFkYSBzdXBw b3J0IGNyYXNoIG9uIHVuaW5pdGlhbGl6ZWQgZ2RiYXJjaC4KKwogKiBTYXQgTWFyICA1IDIwMTEg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLjUwLjIwMTEw MzA1LTI4LmZjMTUKIC0gUmViYXNlIHRvIEZTRiBHREIgNy4yLjUwLjIwMTEwMzA1ICh3aGljaCBp cyBhIDcuMyBwcmUtcmVsZWFzZSkuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCBkMjlhMmJkLi5mZWMyMWMzIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEsMiArMSwyIEBACiAwNGU1YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYxOTU4ZCAgbGlic3Rk YysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLTE0M2FiMDllODcyNGIwMDU4ZmJmODgyODMy ZjZkMmYzICBnZGItNy4yLjUwLjIwMTEwMzA1LnRhci5iejIKK2NjNDhkNjJiMjNiNTM4MTZlYjk2 MzlhOGU5NTA0ZDQ3ICBnZGItNy4yLjUwLjIwMTEwMzIwLnRhci5iejIK