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.7.90.20140613 (pre-7.8 snapshot). Date: Thu, 23 Jul 2026 18:31:23 GMT Message-ID: <178483148310.1.2021277941801458788.rpms-gdb-eb6cb2db363d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: eb6cb2db363d172ecc38e626d26627cb67712dd3 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogZWI2Y2IyZGIzNjNkMTcyZWNjMzhlNjI2ZDI2NjI3Y2I2 NzcxMmRkMwpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxNC0wNi0xOVQyMjoxNDozMiswMjowMApTdGF0cyAgOiArMTAyNjIvLTE0 MjM5IGluIDcyIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcv cnBtcy9nZGIvYy9lYjZjYjJkYjM2M2QxNzJlY2MzOGU2MjZkMjY2MjdjYjY3NzEyZGQzP2JyYW5j aD1maXgtZHVwLXBhdGNoCgpMb2c6ClJlYmFzZSB0byBGU0YgR0RCIDcuNy45MC4yMDE0MDYxMyAo cHJlLTcuOCBzbmFwc2hvdCkuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdu b3JlCmluZGV4IGM2YWE2ZGMuLjU5NzVkOWMgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIv LmdpdGlnbm9yZQpAQCAtMSwyICsxLDIgQEAKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1 OTc4LnRhci5iejIKLS9nZGItNy43LjEudGFyLmJ6MgorL2dkYi03LjcuOTAuMjAxNDA2MTMudGFy LmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2ggYi9nZGIt Ni4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IGYzOGMwYmYuLjg0MTk1YjggMTAwNjQ0 Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0 LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtMSwyOSArMSwyOSBAQAotSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy43LjUwLjIw MTQwNjA5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCTIwMTQtMDEtMjcg MjI6NDE6MTkuMjgxNTAxNjg4ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVz dHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDE0LTAxLTI3IDIyOjQxOjM5LjczNjUxNzM2MCArMDEwMAot QEAgLTk2LDYgKzk2LDYgQEAgQUNfT1VUUFVUKFtNYWtlZmlsZSBcCistLS0gZ2RiLTcuNy41MC4y MDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCTIwMTQtMDYtMTMgMjA6MDU6 MzMuMDU4NTA2ODE3ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRl L2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjA1OjU5Ljk5MTUzMjU5NSArMDIwMAorQEAgLTk3 LDYgKzk3LDYgQEAgQUNfT1VUUFVUKFtNYWtlZmlsZSBcCiAgICBnZGIuaHAvZ2RiLmFDQy9NYWtl ZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtlZmlsZSBcCi0gICBnZGIuaHAvZ2RiLmRlZmVjdHMv TWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIFwKKyAgIGdkYi5ocC9nZGIuZGVmZWN0cy9N YWtlZmlsZSBnZGIuZ3VpbGUvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIFwKICAgIGdk Yi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgXAog LSAgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxl IGdkYi5wYXNjYWwvTWFrZWZpbGUgXAogKyAgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9N YWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnBpZS9NYWtl ZmlsZSBcCiAgICBnZGIucGVyZi9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZl cnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBcCiAgICBnZGIudGhyZWFkcy9NYWtlZmls ZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZV0pCi1JbmRleDogZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjcuNTAuMjAx NDA2MDkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Ljkw LjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxNC0wMS0yNyAyMjo0MTox OS4yODM1MDE2ODkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUv Y29uZmlndXJlCTIwMTQtMDEtMjcgMjI6NDE6NDkuOTMzNTI1MTcyICswMTAwCistLS0gZ2RiLTcu Ny41MC4yMDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTQtMDYtMTMgMjA6 MDU6MjkuOTU2NTAzODk5ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1 aXRlL2NvbmZpZ3VyZQkyMDE0LTA2LTEzIDIwOjA2OjI0LjQ5MjU1NTcwOSArMDIwMAogQEAgLTM0 NDgsNyArMzQ0OCw3IEBAIGRvbmUKICAKICAKICAKLS1hY19jb25maWdfZmlsZXM9IiRhY19jb25m aWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIu YXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5idHJhY2UvTWFrZWZpbGUgZ2RiLmNl bGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJm Mi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuZ28vTWFrZWZpbGUgZ2RiLnNlcnZl ci9NYWtlZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBnZGIuaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5v YmpkYmcvTWFrZWZpbGUgZ2RiLmhwL2dkYi5iYXNlLWhwL01ha2VmaWxlIGdkYi5ocC9nZGIuYUND L01ha2VmaWxlIGdkYi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIGdkYi5ocC9nZGIuZGVmZWN0cy9N YWtlZmlsZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEy L01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNs L01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGVyZi9N YWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFi cy9NYWtlZmlsZSBnZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnht bC9NYWtlZmlsZSIKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUg Z2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5i YXNlL01ha2VmaWxlIGdkYi5idHJhY2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNw L01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9y dHJhbi9NYWtlZmlsZSBnZGIuZ28vTWFrZWZpbGUgZ2RiLnNlcnZlci9NYWtlZmlsZSBnZGIuamF2 YS9NYWtlZmlsZSBnZGIuaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5vYmpkYmcvTWFrZWZpbGUgZ2Ri LmhwL2dkYi5iYXNlLWhwL01ha2VmaWxlIGdkYi5ocC9nZGIuYUNDL01ha2VmaWxlIGdkYi5ocC9n ZGIuY29tcGF0L01ha2VmaWxlIGdkYi5ocC9nZGIuZGVmZWN0cy9NYWtlZmlsZSBnZGIubGluZXNw ZWMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0 aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxlIGdkYi5vcHQv TWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01ha2VmaWxlIGdkYi5wZXJmL01h a2VmaWxlIGdkYi5weXRob24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0YWJz L01ha2VmaWxlIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1s L01ha2VmaWxlIgorLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBn ZGIuYWRhL01ha2VmaWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJh c2UvTWFrZWZpbGUgZ2RiLmJ0cmFjZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBnZGIuY3Av TWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5kbGFu Zy9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuZ2RiL01ha2VmaWxlIGdkYi5nby9N YWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtl ZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZp bGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2Ri LmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdkYi5ndWlsZS9NYWtlZmlsZSBnZGIubGluZXNwZWMv TWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9N YWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxlIGdkYi5vcHQvTWFr ZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGVyZi9NYWtlZmlsZSBnZGIucHl0aG9uL01h a2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBnZGIudGhyZWFk cy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIKKythY19jb25m aWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIu YXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5idHJh Y2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20v TWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZGxhbmcvTWFrZWZpbGUgZ2RiLmZvcnRy YW4vTWFrZWZpbGUgZ2RiLmdkYi9NYWtlZmlsZSBnZGIuZ28vTWFrZWZpbGUgZ2RiLnNlcnZlci9N YWtlZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBnZGIuaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5vYmpk YmcvTWFrZWZpbGUgZ2RiLmhwL2dkYi5iYXNlLWhwL01ha2VmaWxlIGdkYi5ocC9nZGIuYUNDL01h a2VmaWxlIGdkYi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIGdkYi5ocC9nZGIuZGVmZWN0cy9NYWtl ZmlsZSBnZGIuZ3VpbGUvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIGdkYi5taS9NYWtl ZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgZ2RiLm9iamMvTWFr ZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFr ZWZpbGUgZ2RiLnBpZS9NYWtlZmlsZSBnZGIucGVyZi9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2Vm aWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBnZGIudGhyZWFkcy9N YWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIKICAKICBjYXQgPmNv bmZjYWNoZSA8PFxfQUNFT0YKICAjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNh Y2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKLUBAIC00MTc2LDYgKzQxNzYsNyBAQCBkbwor QEAgLTQxNzksNiArNDE3OSw3IEBAIGRvCiAgICAgICJnZGIub3BlbmNsL01ha2VmaWxlIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5vcGVuY2wvTWFrZWZpbGUiIDs7CiAgICAgICJn ZGIub3B0L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5vcHQvTWFr ZWZpbGUiIDs7CiAgICAgICJnZGIucGFzY2FsL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09O RklHX0ZJTEVTIGdkYi5wYXNjYWwvTWFrZWZpbGUiIDs7CkBAIC0zMSwxMCArMzEsMTAgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKICAgICAgImdk Yi5wZXJmL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5wZXJmL01h a2VmaWxlIiA7OwogICAgICAiZ2RiLnB5dGhvbi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENP TkZJR19GSUxFUyBnZGIucHl0aG9uL01ha2VmaWxlIiA7OwogICAgICAiZ2RiLnJldmVyc2UvTWFr ZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLnJldmVyc2UvTWFrZWZpbGUi IDs7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0 YWNoLmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9h dHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaC5jCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg0NTAxNjkwICswMTAwCisrKysgZ2Ri LTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMJMjAxNC0wNi0x MyAyMDowNTozMy4wNjA1MDY4MTkgKzAyMDAKIEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHBy b2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4K ICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29w LiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiAr fQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFj aDIuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0 dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaDIuYwkyMDE0LTAxLTI3IDIyOjQxOjE5LjI4NDUwMTY5MCArMDEwMAorKysrIGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDE0LTA2 LTEzIDIwOjA1OjMzLjA2MDUwNjgxOSArMDIwMAogQEAgLTAsMCArMSwyNCBAQAogKy8qIFRoaXMg cHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2YgZ2RiLCBhbmQgdGhl bgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBzcGlucyBpbiBhIGxv b3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQogKyAgcmV0dXJuICgw KTsKICt9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YnJlYWsuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9icmVhay5jCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg0NTAxNjkwICswMTAwCisrKysgZ2Ri LTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYwkyMDE0LTA2LTEz IDIwOjA1OjMzLjA2MTUwNjgyMCArMDIwMAogQEAgLTAsMCArMSwxNDYgQEAKICsvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMjM2LDEwICsy MzYsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDogZ2RiLTcuNy41MC4y MDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwkyMDE0LTAxLTI3IDIy OjQxOjE5LjI4NDUwMTY5MCArMDEwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTQtMDYtMTMgMjA6MDU6MzMuMDYxNTA2ODIwICswMjAw CiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3ZvaWQgbWFya2VyMyAo YSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhlcmUgKi8KICt2b2lk IG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEzIGhlcmUgKi8KICsj ZW5kaWYKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9j b3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxNC0wMS0yNyAyMjo0MToxOS4yODQ1MDE2OTAgKzAx MDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFr ZXIuYwkyMDE0LTA2LTEzIDIwOjA1OjMzLjA2MTUwNjgyMCArMDIwMAogQEAgLTAsMCArMSwxNDIg QEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OQogKyAg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0MzIsMTAgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5j CiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVz dHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTQtMDEtMjcgMjI6NDE6MTku Mjg1NTAxNjkxICswMTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvYXR0YWNoLmV4cAkyMDE0LTA2LTEzIDIwOjA1OjMzLjA2MTUwNjgyMCArMDIwMAogQEAg LTAsMCArMSw0MTcgQEAKICsjICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTQsMTAgKzg1NCwxMCBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAogK2RvX2Nh bGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxNC0wMS0yNyAyMjo0 MToxOS4yODY1MDE2OTEgKzAxMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9icmVhay5leHAJMjAxNC0wNi0xMyAyMDowNTozMy4wNjI1MDY4MjEgKzAyMDAK IEBAIC0wLDAgKzEsOTYyIEBACiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkwLCAxOTkxLCAxOTky LCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAyMDAwLCAyMDAyLCAy MDAzLCAyMDA0CkBAIC0xODIxLDEwICsxODIxLDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKICsgICAgc2VuZF9nZGIgInNldCBh cmdzIG1haW5cbiIKICsgICAgZ2RiX2V4cGVjdCAtcmUgIi4qJGdkYl9wcm9tcHQgJCIge30KICt9 Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZp bGUuZXhwCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUv Y29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRl L2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg2NTAxNjkxICswMTAw CisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUu ZXhwCTIwMTQtMDYtMTMgMjA6MDU6MzMuMDYzNTA2ODIyICswMjAwCiBAQCAtMCwwICsxLDIzMyBA QAogKyMgQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgs IDE5OTksIDIwMDAKICsjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjA1OSwx MCArMjA1OSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvY29yZWZpbGUuZXhwCiArZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZI J1xdKiBpbiAuKiBcXCguKlxcKS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIChyZWluaXQpIgogKwog K2dkYl90ZXN0ICJjb3JlIiAiTm8gY29yZSBmaWxlIG5vdy4iCi1JbmRleDogZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4KK0luZGV4OiBnZGItNy43 LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCTIw MTQtMDEtMjcgMjI6NDE6MTkuMjg2NTAxNjkxICswMTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYw OS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4JMjAxNC0wNi0xMyAyMDowNTozMy4w NjM1MDY4MjIgKzAyMDAKIEBAIC0wLDAgKzEsMTkgQEAKICtWUEFUSCA9IEBzcmNkaXJACiArc3Jj ZGlyID0gQHNyY2RpckAKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1w b2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNoIGIvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFt cG9saW5lLWxvb2t1cC1sb2NrLWZpeC5wYXRjaAppbmRleCAwYjM5MzFmLi41OGFhZGJmIDEwMDY0 NAotLS0gYS9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4 LnBhdGNoCisrKyBiL2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9j ay1maXgucGF0Y2gKQEAgLTEsMTEgKzEsMTEgQEAKIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzc5CiAKIAotSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9zeW10YWIuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3N5bXRhYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAxNzowNjoxOS44NTQ2NjM4MDEgKzAyMDAKLSsrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAxNzowNzowNC4zMTc3 MjE0NzEgKzAyMDAKLUBAIC0yMzI3LDYgKzIzMjcsMTMgQEAgZmluZF9wY19zZWN0X2xpbmUgKENP UkVfQUREUiBwYywgc3RydWN0CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9zeW10 YWIuYwkyMDE0LTA2LTEzIDIxOjUyOjA2LjIxOTMzODQwMSArMDIwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3N5bXRhYi5jCTIwMTQtMDYtMTMgMjE6NTU6MDIuNzUzNTMxODg1ICswMjAw CitAQCAtMjM5NCw2ICsyMzk0LDEzIEBAIGZpbmRfcGNfc2VjdF9saW5lIChDT1JFX0FERFIgcGMs IHN0cnVjdAogIAkgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpKTsgKi8KICAJICA7 CiAgCS8qIGZhbGwgdGhyb3VnaCAqLwpAQCAtMTMsOSArMTMsOSBAQCBJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL3N5bXRhYi5jCiArCSAgIGJ1dCB0aGlzIHRleHQgc3ltYm9sIG1h eSBiZSB0aGUgYWRkcmVzcyB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgogKwkgICBBdm9pZCBgZmluZF9w Y19zZWN0X2xpbmUnPC0+YGZpbmRfcGNfbGluZScgaW5maW5pdGUgbG9vcC4KICsJICAgUmVkIEhh dCBCdWcgMjE4Mzc5LiAgKi8KLSsJZWxzZSBpZiAoU1lNQk9MX1ZBTFVFIChtZnVuc3ltKSA9PSBw YykKLSsJICB3YXJuaW5nICgiSW4gc3R1YiBmb3IgJXMgKDB4JXMpOyBpbnRlcmxvY2tlZCwgcGxl YXNlIHN1Ym1pdCB0aGUgYmluYXJ5IHRvIGh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tIiwgU1lN Qk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbC5taW5zeW0pLCBwYWRkcmVzcyAodGFyZ2V0X2dkYmFy Y2ggKCksIHBjKSk7CisrCWVsc2UgaWYgKEJNU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1mdW5zeW0p ID09IHBjKQorKwkgIHdhcm5pbmcgKCJJbiBzdHViIGZvciAlcyAoMHglcyk7IGludGVybG9ja2Vk LCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8gaHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20i LCBNU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbC5taW5zeW0pLCBwYWRkcmVzcyAodGFyZ2V0 X2dkYmFyY2ggKCksIHBjKSk7CiArCS8qIGZhbGwgdGhyb3VnaCAqLwogIAllbHNlCi0gCSAgcmV0 dXJuIGZpbmRfcGNfbGluZSAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1mdW5zeW0pLCAwKTsKKyAJ ICByZXR1cm4gZmluZF9wY19saW5lIChCTVNZTUJPTF9WQUxVRV9BRERSRVNTIChtZnVuc3ltKSwg MCk7CiAgICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYmZkLXZkc284ay5wYXRjaCBiL2dk Yi02LjYtYmZkLXZkc284ay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY1 MDdiMC4uMDAwMDAwMAotLS0gYS9nZGItNi42LWJmZC12ZHNvOGsucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMTkgKzAsMCBAQAotMjAwNy0wOS0yMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBlbGZjb2RlLmggKE5BTUUoX2JmZF9lbGYsYmZkX2Zy b21fcmVtb3RlX21lbW9yeSkpOiBOZXcgdmFyaWFibGVzCi0JWF9TSERSX1NIU1RSVEFCIGFuZCBJ X1NIRFJfU0hTVFJUQUIuICBGaXhlZCB0aGUgQ09OVEVOVFNfU0laRSB0cmltbWluZwotCWNoZWNr IGZvciBpdHMgYWxpZ25lZCBzaXplIGJldHdlZW4gdGhlIGxhc3Qgc2VnbWVudCBhbmQgc3RpbGwg YmVmb3JlCi0JdGhlIHNlY3Rpb24gaGVhZGVyIGVuZC4gIEFkZGVkIHZhcmlhYmxlcyBjaGVjayB0 byBjb3ZlciBhbHNvIHRoZQotCXNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZS4KLQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAtb3JpZy9iZmQvZWxmY29kZS5oCTIwMTItMDItMjkgMDk6MTc6MDgu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9iZmQvZWxmY29kZS5oCTIw MTItMDItMjkgMTA6MjM6MDMuMDAwMDAwMDAwICswMTAwCi1AQCAtMTYyMSw2ICsxNjIxLDggQEAg TkFNRShfYmZkX2VsZixiZmRfZnJvbV9yZW1vdGVfbWVtb3J5KQotICAgRWxmX0ludGVybmFsX0Vo ZHIgaV9laGRyOwkvKiBFbGYgZmlsZSBoZWFkZXIsIGludGVybmFsIGZvcm0gKi8KLSAgIEVsZl9F eHRlcm5hbF9QaGRyICp4X3BoZHJzOwotICAgRWxmX0ludGVybmFsX1BoZHIgKmlfcGhkcnMsICps YXN0X3BoZHI7Ci0rICBFbGZfRXh0ZXJuYWxfU2hkciAqeF9zaGRyczsKLSsgIEVsZl9JbnRlcm5h bF9TaGRyICppX3NoZHJzOwotICAgYmZkICpuYmZkOwotICAgc3RydWN0IGJmZF9pbl9tZW1vcnkg KmJpbTsKLSAgIGludCBjb250ZW50c19zaXplOwotQEAgLTE3NDAsMjQgKzE3NDIsNDYgQEAgTkFN RShfYmZkX2VsZixiZmRfZnJvbV9yZW1vdGVfbWVtb3J5KQotIAotICAgLyogVHJpbSB0aGUgbGFz dCBzZWdtZW50IHNvIHdlIGRvbid0IGJvdGhlciB3aXRoIHplcm9zIGluIHRoZSBsYXN0IHBhZ2UK LSAgICAgIHRoYXQgYXJlIG9mZiB0aGUgZW5kIG9mIHRoZSBmaWxlLiAgSG93ZXZlciwgaWYgdGhl IGV4dHJhIGJpdCBpbiB0aGF0Ci0tICAgICBwYWdlIGluY2x1ZGVzIHRoZSBzZWN0aW9uIGhlYWRl cnMsIGtlZXAgdGhlbS4gICovCi0tICBpZiAoKGJmZF92bWEpIGNvbnRlbnRzX3NpemUgPiBsYXN0 X3BoZHItPnBfb2Zmc2V0ICsgbGFzdF9waGRyLT5wX2ZpbGVzegotLSAgICAgICYmIChiZmRfdm1h KSBjb250ZW50c19zaXplID49IChpX2VoZHIuZV9zaG9mZgotLQkJCQkgICAgICsgaV9laGRyLmVf c2hudW0gKiBpX2VoZHIuZV9zaGVudHNpemUpKQotKyAgICAgcGFnZSBpbmNsdWRlcyB0aGUgc2Vj dGlvbiBoZWFkZXJzIG9zIHRoZSBzZWN0aW9uIGhlYWRlciBzdHJpbmcgdGFibGUsCi0rICAgICBr ZWVwIHRoZW0uICAqLwotKyAgaWYgKChiZmRfdm1hKSBjb250ZW50c19zaXplID4gbGFzdF9waGRy LT5wX29mZnNldCArIGxhc3RfcGhkci0+cF9maWxlc3opCi0rICAgIGNvbnRlbnRzX3NpemUgPSBs YXN0X3BoZHItPnBfb2Zmc2V0ICsgbGFzdF9waGRyLT5wX2ZpbGVzejsKLSsKLSsgIGlmICgoYmZk X3ZtYSkgY29udGVudHNfc2l6ZSA8IGlfZWhkci5lX3Nob2ZmCi0rCQkJCSsgaV9laGRyLmVfc2hu dW0gKiBpX2VoZHIuZV9zaGVudHNpemUpCi0rICAgIGNvbnRlbnRzX3NpemUgPSBpX2VoZHIuZV9z aG9mZiArIGlfZWhkci5lX3NobnVtICogaV9laGRyLmVfc2hlbnRzaXplOwotKwotKyAgLyogVmVy aWZ5IGFsc28gYWxsIHRoZSBzZWN0aW9ucyBmaXQgaW50byBDT05URU5UU19TSVpFLiAgKi8KLSsK LSsgIHhfc2hkcnMgPSBiZmRfbWFsbG9jIChpX2VoZHIuZV9zaG51bSAqIChzaXplb2YgKnhfc2hk cnMgKyBzaXplb2YgKmlfc2hkcnMpKTsKLSsgIGlmICh4X3NoZHJzID09IE5VTEwpCi0gICAgIHsK LS0gICAgICBjb250ZW50c19zaXplID0gbGFzdF9waGRyLT5wX29mZnNldCArIGxhc3RfcGhkci0+ cF9maWxlc3o7Ci0tICAgICAgaWYgKChiZmRfdm1hKSBjb250ZW50c19zaXplIDwgKGlfZWhkci5l X3Nob2ZmCi0tCQkJCSAgICAgKyBpX2VoZHIuZV9zaG51bSAqIGlfZWhkci5lX3NoZW50c2l6ZSkp Ci0tCWNvbnRlbnRzX3NpemUgPSBpX2VoZHIuZV9zaG9mZiArIGlfZWhkci5lX3NobnVtICogaV9l aGRyLmVfc2hlbnRzaXplOwotKyAgICAgIGZyZWUgKHhfcGhkcnMpOwotKyAgICAgIGJmZF9zZXRf ZXJyb3IgKGJmZF9lcnJvcl9ub19tZW1vcnkpOwotKyAgICAgIHJldHVybiBOVUxMOwotICAgICB9 Ci0rICBlcnIgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGVoZHJfdm1hICsgaV9laGRyLmVfc2hvZmYs IChiZmRfYnl0ZSAqKSB4X3NoZHJzLAotKwkJCSAgICBpX2VoZHIuZV9zaG51bSAqIHNpemVvZiAq eF9zaGRycyk7Ci0rICBpZiAoZXJyKQotKyAgICBpX3NoZHJzID0gTlVMTDsKLSAgIGVsc2UKLS0g ICAgY29udGVudHNfc2l6ZSA9IGxhc3RfcGhkci0+cF9vZmZzZXQgKyBsYXN0X3BoZHItPnBfZmls ZXN6OwotKyAgICB7Ci0rICAgICAgaV9zaGRycyA9IChFbGZfSW50ZXJuYWxfU2hkciAqKSAmeF9z aGRyc1tpX2VoZHIuZV9zaG51bV07Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IGlfZWhkci5lX3No bnVtOyArK2kpCi0rCXsKLSsJICBlbGZfc3dhcF9zaGRyX2luICh0ZW1wbCwgJnhfc2hkcnNbaV0s ICZpX3NoZHJzW2ldKTsKLSsKLSsJICBpZiAoKGJmZF92bWEpIGNvbnRlbnRzX3NpemUgPCBpX3No ZHJzW2ldLnNoX29mZnNldCArIGlfc2hkcnNbaV0uc2hfc2l6ZSkKLSsJICAgIGNvbnRlbnRzX3Np emUgPSBpX3NoZHJzW2ldLnNoX29mZnNldCArIGlfc2hkcnNbaV0uc2hfc2l6ZTsKLSsJfQotKyAg ICB9Ci0gCi0gICAvKiBOb3cgd2Uga25vdyB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUgaW1hZ2Ugd2Ug d2FudCByZWFkIGluLiAgKi8KLSAgIGNvbnRlbnRzID0gKGJmZF9ieXRlICopIGJmZF96bWFsbG9j IChjb250ZW50c19zaXplKTsKLSAgIGlmIChjb250ZW50cyA9PSBOVUxMKQotICAgICB7Ci0gICAg ICAgZnJlZSAoeF9waGRycyk7Ci0rICAgICAgZnJlZSAoeF9zaGRycyk7Ci0gICAgICAgYmZkX3Nl dF9lcnJvciAoYmZkX2Vycm9yX25vX21lbW9yeSk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg IH0KLUBAIC0xNzc2LDYgKzE4MDAsNyBAQCBOQU1FKF9iZmRfZWxmLGJmZF9mcm9tX3JlbW90ZV9t ZW1vcnkpCi0gCWlmIChlcnIpCi0gCSAgewotIAkgICAgZnJlZSAoeF9waGRycyk7Ci0rCSAgICBm cmVlICh4X3NoZHJzKTsKLSAJICAgIGZyZWUgKGNvbnRlbnRzKTsKLSAJICAgIGJmZF9zZXRfZXJy b3IgKGJmZF9lcnJvcl9zeXN0ZW1fY2FsbCk7Ci0gCSAgICBlcnJubyA9IGVycjsKLUBAIC0xNzg0 LDEwICsxODA5LDMyIEBAIE5BTUUoX2JmZF9lbGYsYmZkX2Zyb21fcmVtb3RlX21lbW9yeSkKLSAg ICAgICB9Ci0gICBmcmVlICh4X3BoZHJzKTsKLSAKLS0gIC8qIElmIHRoZSBzZWdtZW50cyB2aXNp YmxlIGluIG1lbW9yeSBkaWRuJ3QgaW5jbHVkZSB0aGUgc2VjdGlvbiBoZWFkZXJzLAotKyAgaWYg KGlfc2hkcnMpCi0rICAgIHsKLSsgICAgICBtZW1jcHkgKGNvbnRlbnRzICsgaV9laGRyLmVfc2hv ZmYsIHhfc2hkcnMsCi0rCSAgICAgIGlfZWhkci5lX3NobnVtICogc2l6ZW9mICp4X3NoZHJzKTsK LSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaV9laGRyLmVfc2hudW07ICsraSkKLSsJewotKwkg IGJmZF92bWEgc3RhcnQgPSBpX3NoZHJzW2ldLnNoX29mZnNldDsKLSsJICBiZmRfdm1hIGVuZCA9 IGlfc2hkcnNbaV0uc2hfb2Zmc2V0ICsgaV9zaGRyc1tpXS5zaF9zaXplOwotKwotKwkgIGlmIChl bmQgPiAoYmZkX3ZtYSkgY29udGVudHNfc2l6ZSkKLSsJICAgIGVuZCA9IGNvbnRlbnRzX3NpemU7 Ci0rCSAgZXJyID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChlaGRyX3ZtYSArIHN0YXJ0LCBjb250ZW50 cyArIHN0YXJ0LAotKwkJCQkgICAgZW5kIC0gc3RhcnQpOwotKwkgIGlmIChlcnIpCi0rCSAgICB7 Ci0rCSAgICAgIGlfc2hkcnMgPSBOVUxMOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQot KyAgICB9Ci0rICBmcmVlICh4X3NoZHJzKTsKLSsKLSsgIC8qIElmIHRoZSBzZWdtZW50cyByZWFk YWJsZSBpbiBtZW1vcnkgZGlkbid0IGluY2x1ZGUgdGhlIHNlY3Rpb24gaGVhZGVycywKLSAgICAg IHRoZW4gY2xlYXIgdGhlbSBmcm9tIHRoZSBmaWxlIGhlYWRlci4gICovCi0tICBpZiAoKGJmZF92 bWEpIGNvbnRlbnRzX3NpemUgPCAoaV9laGRyLmVfc2hvZmYKLS0JCQkJICsgaV9laGRyLmVfc2hu dW0gKiBpX2VoZHIuZV9zaGVudHNpemUpKQotKyAgaWYgKGlfc2hkcnMgPT0gTlVMTCkKLSAgICAg ewotICAgICAgIG1lbXNldCAoJnhfZWhkci5lX3Nob2ZmLCAwLCBzaXplb2YgeF9laGRyLmVfc2hv ZmYpOwotICAgICAgIG1lbXNldCAoJnhfZWhkci5lX3NobnVtLCAwLCBzaXplb2YgeF9laGRyLmVf c2hudW0pOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcu cGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCmluZGV4IGZm ZTBiNDAuLjExMzg2NTggMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1h cy1hcmcucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRj aApAQCAtNTgsMTMgKzU4LDEzIEBAIEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKIAkqIGV4ZWMuYyAoZXhlY19maWxlX2F0dGFjaCk6IFBy aW50IGEgbW9yZSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBpZiB0aGUKIAl1c2VyIGRpZCAiZ2RiIGNv cmUiLgogCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXhjZXB0aW9ucy5oCitJbmRl eDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZXhjZXB0aW9ucy5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9leGNlcHRpb25zLmgJMjAxNC0wMi0wNiAxNzoz MTowMC4xNDg1Mjk3MzYgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9leGNlcHRp b25zLmgJMjAxNC0wMi0wNiAxNzozMToxNy41NjA1NDg1MjUgKzAxMDAKLUBAIC05Nyw2ICs5Nyw5 IEBAIGVudW0gZXJyb3JzIHsKLSAgIC8qIEFuIHVuZGVmaW5lZCBjb21tYW5kIHdhcyBleGVjdXRl ZC4gICovCi0gICBVTkRFRklORURfQ09NTUFORF9FUlJPUiwKKy0tLSBnZGItNy43LjUwLjIwMTQw NjA5Lm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDE0LTA2LTEzIDIwOjI2OjQ2Ljk4ODgwNDU1MyAr MDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2V4Y2VwdGlvbnMuaAkyMDE0LTA2LTEz IDIwOjI3OjAxLjkzMDgyMDA1NyArMDIwMAorQEAgLTEwMCw2ICsxMDAsOSBAQCBlbnVtIGVycm9y cyB7CisgICAvKiBSZXF1ZXN0ZWQgZmVhdHVyZSwgbWV0aG9kLCBtZWNoYW5pc20sIGV0Yy4gaXMg bm90IHN1cHBvcnRlZC4gICovCisgICBOT1RfU1VQUE9SVEVEX0VSUk9SLAogIAogKyAgLyogQXR0 ZW1wdCB0byBsb2FkIGEgY29yZSBmaWxlIGFzIGV4ZWN1dGFibGUuICAqLwogKyAgSVNfQ09SRV9F UlJPUiwKQEAgLTcyLDE5ICs3MiwxOSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv ZXhjZXB0aW9ucy5oCiAgICAvKiBBZGQgbW9yZSBlcnJvcnMgaGVyZS4gICovCiAgICBOUl9FUlJP UlMKICB9OwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2V4ZWMuYworSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL2V4ZWMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAu MjAxNDAxMjcub3JpZy9nZGIvZXhlYy5jCTIwMTQtMDItMDYgMTc6MzA6NTguMjY2NTI3NzA4ICsw MTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXhlYy5jCTIwMTQtMDItMDYgMTc6MzE6 MDAuMTQ5NTI5NzM3ICswMTAwCi1AQCAtMzQsNiArMzQsNyBAQAotICNpbmNsdWRlICJnZGJ0aHJl YWQuaCIKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2V4ZWMuYwkyMDE0LTA2LTEz IDIwOjI2OjQ0LjgzMTgwMjMxNSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2V4 ZWMuYwkyMDE0LTA2LTEzIDIwOjI3OjE3LjI4MjgzNjQ1NCArMDIwMAorQEAgLTM1LDYgKzM1LDcg QEAKICAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCiAgI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAjaW5j bHVkZSAiZ2NvcmUuaCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogIAogICNpbmNsdWRlIDxm Y250bC5oPgogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTIyOCwxMiArMjI5 LDI3IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIKK0BAIC0yMzEs MTIgKzIzMiwyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyCiAg CiAgICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMgKGV4ZWNfYmZkLCBiZmRfb2Jq ZWN0LCAmbWF0Y2hpbmcpKQogIAl7CkBAIC0xMTUsMTEgKzExNSwxMSBAQCBJbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvZXhlYy5jCiAgCX0KICAKICAgICAgICBpZiAoYnVpbGRfc2VjdGlv bl90YWJsZSAoZXhlY19iZmQsICZzZWN0aW9ucywgJnNlY3Rpb25zX2VuZCkpCi1JbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9t YWluLmMJMjAxNC0wMi0wNiAxNzozMDo1OC4yNjc1Mjc3MDkgKzAxMDAKLSsrKyBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9tYWluLmMJMjAxNC0wMi0wNiAxNzozMjozMi4yMzI2MjkwNTIgKzAxMDAK LUBAIC0zMDcsNiArMzA3LDM2IEBAIHR5cGVkZWYgc3RydWN0IGNtZGFyZyB7CistLS0gZ2RiLTcu Ny41MC4yMDE0MDYwOS5vcmlnL2dkYi9tYWluLmMJMjAxNC0wNi0xMyAyMDoyNjo0NC44MzE4MDIz MTUgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9tYWluLmMJMjAxNC0wNi0xMyAy MDoyNjo0Ni45OTA4MDQ1NTUgKzAyMDAKK0BAIC0zNDEsNiArMzQxLDM2IEBAIHR5cGVkZWYgc3Ry dWN0IGNtZGFyZyB7CiAgLyogRGVmaW5lIHR5cGUgVkVDIChjbWRhcmdfcykuICAqLwogIERFRl9W RUNfTyAoY21kYXJnX3MpOwogIApAQCAtMTU2LDcgKzE1Niw3IEBAIEluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9tYWluLmMKICBzdGF0aWMgaW50CiAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKICB7Ci1AQCAtODI0LDYgKzg1NCw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CitAQCAtODU0LDYgKzg4NCw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCXsKICAJ ICBzeW1hcmcgPSBhcmd2W29wdGluZF07CiAgCSAgZXhlY2FyZyA9IGFyZ3Zbb3B0aW5kXTsKQEAg LTE2NSw3ICsxNjUsNyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbWFpbi5jCiAg CSAgb3B0aW5kKys7CiAgCX0KICAKLUBAIC05ODcsMTEgKzEwMTksMjUgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKK0BAIC0xMDE3LDExICsxMDQ5LDI1IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCiAgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKICAgICAgICAmJiBzdHJjbXAgKGV4 ZWNhcmcsIHN5bWFyZykgPT0gMCkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKaW5k ZXggNzdiMmNhNC4uNzQ2ODc3ZiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1y cG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTEsOCAr MSw4IEBACi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXZlbnQtdG9wLmMKK0luZGV4 OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9ldmVudC10b3AuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxNC0wMi0wNiAxNzoxODoy Ni45NjU3MTcyMTAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9ldmVudC10b3Au YwkyMDE0LTAyLTA2IDE2OjU5OjIzLjE3NDQ3NDQwNCArMDEwMAotQEAgLTM3LDYgKzM3LDcgQEAK Ky0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTQtMDYtMTMg MjA6MTA6MTkuNjMyNzg3NjQyICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZXZl bnQtdG9wLmMJMjAxNC0wNi0xMyAyMDoxMTo0OS42MDU4Nzg1NTcgKzAyMDAKK0BAIC0zOCw2ICsz OCw3IEBACiAgI2luY2x1ZGUgImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KICAj aW5jbHVkZSAiYW5ub3RhdGUuaCIKICAjaW5jbHVkZSAibWFpbnQuaCIKQEAgLTEwLDcgKzEwLDcg QEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2V2ZW50LXRvcC5jCiAgCiAgLyogcmVh ZGxpbmUgaW5jbHVkZSBmaWxlcy4gICovCiAgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgi Ci1AQCAtMTczLDYgKzE3NCw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhcl93cmFwcGVyIChnZGJf Y2xpZW4KK0BAIC0xNzYsNiArMTc3LDggQEAgcmxfY2FsbGJhY2tfcmVhZF9jaGFyX3dyYXBwZXIg KGdkYl9jbGllbgogIHZvaWQKICBjbGlfY29tbWFuZF9sb29wICh2b2lkICpkYXRhKQogIHsKQEAg LTE5LDIwICsxOSwyMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXZlbnQtdG9w LmMKICAgIGRpc3BsYXlfZ2RiX3Byb21wdCAoMCk7CiAgCiAgICAvKiBOb3cgaXQncyB0aW1lIHRv IHN0YXJ0IHRoZSBldmVudCBsb29wLiAgKi8KLUBAIC0yNDAsNiArMjQzLDggQEAgZGlzcGxheV9n ZGJfcHJvbXB0IChjaGFyICpuZXdfcHJvbXB0KQorQEAgLTI0Myw2ICsyNDYsOCBAQCBkaXNwbGF5 X2dkYl9wcm9tcHQgKGNoYXIgKm5ld19wcm9tcHQpCiAgICAvKiBSZXNldCB0aGUgbmVzdGluZyBk ZXB0aCB1c2VkIHdoZW4gdHJhY2UtY29tbWFuZHMgaXMgc2V0LiAgKi8KICAgIHJlc2V0X2NvbW1h bmRfbmVzdF9kZXB0aCAoKTsKICAKICsgIGRlYnVnX2ZsdXNoX21pc3NpbmcgKCk7CiArCi0gICAv KiBFYWNoIGludGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3BsYXlpbmcgdGhlIGNv bW1hbmQKLSAgICAgIHByb21wdC4gICovCi0gICBpZiAoIWN1cnJlbnRfaW50ZXJwX2Rpc3BsYXlf cHJvbXB0X3AgKCkpCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3ltZmlsZS5oCisg ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmFjdHVh bF9nZGJfcHJvbXB0KTsKKyAKKyAgIC8qIERvIG5vdCBjYWxsIHRoZSBweXRob24gaG9vayBvbiBh biBleHBsaWNpdCBwcm9tcHQgY2hhbmdlIGFzCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9zeW1maWxlLmgJMjAxNC0wMi0wNiAxNzoxODozMy44NjU3MjQ2NjYgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9zeW1maWxlLmgJMjAxNC0wMi0wNiAxNzowODo1Ni4yODIwOTkx NTAgKzAxMDAKLUBAIC01NTcsNiArNTU3LDggQEAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICppbmNy ZW1lbnRfcmVhZGluZworLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvc3ltZmlsZS5o CTIwMTQtMDYtMTMgMjA6MTA6MTkuNjMzNzg3NjQzICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvc3ltZmlsZS5oCTIwMTQtMDYtMTMgMjA6MTA6MzEuMDY2Nzk5MTU4ICswMjAwCitA QCAtNTczLDYgKzU3Myw4IEBAIHZvaWQgbWFwX3N5bWJvbF9maWxlbmFtZXMgKHN5bWJvbF9maWxl bmEKICAvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KICBleHRlcm4gc3RydWN0IGVsZl9idWlsZF9p ZCAqYnVpbGRfaWRfYWRkcl9nZXQgKENPUkVfQUREUiBhZGRyKTsKICBleHRlcm4gdm9pZCBkZWJ1 Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmRlYnVnKTsK QEAgLTQxLDExICs0MSwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3ltZmls ZS5oCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKLUluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Ljkw LjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTAyLTA2IDE3OjE4 OjI2Ljk2OTcxNzIxNCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0 ZS9saWIvZ2RiLmV4cAkyMDE0LTAyLTA2IDE3OjE4OjMzLjg2NjcyNDY2NyArMDEwMAotQEAgLTE1 MDQsNyArMTUwNCw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKKy0tLSBnZGItNy43 LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTA2LTEzIDIw OjEwOjE5LjYzNDc4NzY0NCArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTA2LTEzIDIwOjEwOjMxLjA2Nzc5OTE1OSArMDIwMAorQEAg LTE0OTIsNyArMTQ5Miw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdh cm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtNTQs MTAgKzU0LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKICAgICAgc2VuZF9nZGIgInNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAg Z2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiJGdkYl9wcm9tcHQgJCIgewotSW5kZXg6IGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGIt Ny43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCTIwMTQtMDItMDYgMTc6MTg6MjYuOTcwNzE3MjE1ICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDE0LTAyLTA2 IDE3OjE4OjMzLjg2NzcyNDY2OCArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9n ZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDE0LTA2LTEzIDIwOjEwOjE5LjYzNTc4 NzY0NSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWkt c3VwcG9ydC5leHAJMjAxNC0wNi0xMyAyMDoxMDozMS4wNjg3OTkxNjAgKzAyMDAKIEBAIC0yMTIs NyArMjEyLDcgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB3 YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9CkBAIC02NywyMiArNjcs MjIgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAKICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxu IgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZl cmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi90dWkvdHVpLWludGVycC5jCitJbmRleDogZ2RiLTcuNy41MC4y MDE0MDYwOS9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAu MjAxNDAxMjcub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDE0LTAyLTA2IDE3OjE4OjI2Ljk3 MDcxNzIxNSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3R1aS90dWktaW50ZXJw LmMJMjAxNC0wMi0wNiAxNzoxODozMy44Njc3MjQ2NjggKzAxMDAKLUBAIC0zMCw2ICszMCw3IEBA Ci0gI2luY2x1ZGUgInR1aS90dWkuaCIKLSAjaW5jbHVkZSAidHVpL3R1aS1pby5oIgorLS0tIGdk Yi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDE0LTA2LTEzIDIw OjEwOjMxLjA2ODc5OTE2MCArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3R1aS90 dWktaW50ZXJwLmMJMjAxNC0wNi0xMyAyMDoxMDo0Ny44MDY4MTY1NDIgKzAyMDAKK0BAIC0zMiw2 ICszMiw3IEBACiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5jbHVkZSAiaW5mcnVuLmgi CisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCiArI2luY2x1ZGUgInN5bWZpbGUuaCIKICAKLSAvKiBT ZXQgdG8gMSB3aGVuIHRoZSBUVUkgbW9kZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHdlIGZpcnN0 IHN0YXJ0Ci0gICAgZ2RiLiAgKi8KLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hY2xv Y2FsLm00Cisgc3RhdGljIHN0cnVjdCB1aV9vdXQgKnR1aV91aV9vdXQgKHN0cnVjdCBpbnRlcnAg KnNlbGYpOworIAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2FjbG9jYWwubTQKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAx NC0wMi0wNiAxNzoxODozMy44Njg3MjQ2NjkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9hY2xvY2FsLm00CTIwMTQtMDItMDYgMTc6MDk6NDkuODc3MTU3NDA1ICswMTAwCistLS0g Z2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTQtMDYtMTMgMjA6MTA6 MTkuNjM2Nzg3NjQ2ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvYWNsb2NhbC5t NAkyMDE0LTA2LTEzIDIwOjEwOjMxLjA2OTc5OTE2MSArMDIwMAogQEAgLTExLDYgKzExLDIyMSBA QAogICMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQQogICMgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtMzA1LDEwICszMDUsMTAgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2FjbG9jYWwubTQKICAjIEFNX0FVWF9ESVJf RVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2Nv bmYgLSotCiAgCiAgIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZp Zy5pbgorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29uZmlnLmluCTIwMTQtMDItMDYg MTc6MTg6MjYuOTcxNzE3MjE2ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29u ZmlnLmluCTIwMTQtMDItMDYgMTc6MTg6MzMuODY4NzI0NjY5ICswMTAwCistLS0gZ2RiLTcuNy41 MC4yMDE0MDYwOS5vcmlnL2dkYi9jb25maWcuaW4JMjAxNC0wNi0xMyAyMDoxMDoxOS42Mzc3ODc2 NDcgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25maWcuaW4JMjAxNC0wNi0x MyAyMDoxMDozMS4wNjk3OTkxNjEgKzAyMDAKIEBAIC0zMyw2ICszMyw5IEBACiAgLyogRGVmaW5l IHRvIEJGRCdzIGRlZmF1bHQgdGFyZ2V0IHZlY3Rvci4gKi8KICAjdW5kZWYgREVGQVVMVF9CRkRf VkVDCkBAIC0zMTksNyArMzE5LDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2Nv bmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2Fn ZXMgdG8gdGhlIHVzZXIncyBuYXRpdmUKICAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAg I3VuZGVmIEVOQUJMRV9OTFMKLUBAIC0yMDcsNiArMjEwLDkgQEAKK0BAIC0yMTAsNiArMjEzLDkg QEAKICAvKiBEZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBI QVZFX0xJQlBZVEhPTjJfNwogIApAQCAtMzI5LDExICszMjksMTEgQEAgSW5kZXg6IGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSA8bGlidW53aW5kLWlhNjQuaD4gaGVhZGVyIGZpbGUuICovCiAgI3VuZGVmIEhBVkVfTElCVU5X SU5EX0lBNjRfSAogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZQor SW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29uZmlndXJlCTIwMTQtMDItMDYgMTc6MTg6 MjYuOTc2NzE3MjIxICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlndXJl CTIwMTQtMDItMDYgMTc6MTg6MzMuODcyNzI0NjczICswMTAwCi1AQCAtNjg5LDYgKzY4OSwxMSBA QCBQS0dWRVJTSU9OCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb25maWd1cmUJ MjAxNC0wNi0xMyAyMDoxMDoxOS42NDI3ODc2NTIgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi9jb25maWd1cmUJMjAxNC0wNi0xMyAyMDoxMDozMS4wNzM3OTkxNjUgKzAyMDAKK0BA IC02OTIsNiArNjkyLDExIEBAIFBLR1ZFUlNJT04KICBIQVZFX05BVElWRV9HQ09SRV9UQVJHRVQK ICBUQVJHRVRfT0JTCiAgc3ViZGlycwpAQCAtMzQ1LDcgKzM0NSw3IEBAIEluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUKICBHREJfREFUQURJUgogIERFQlVHRElSCiAgTUFL RUlORk9fRVhUUkFfRkxBR1MKLUBAIC03OTIsNiArNzk3LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgor QEAgLTc5NSw2ICs4MDAsNyBAQCB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291 cmNlcwogIHdpdGhfYXV0b19sb2FkX2RpcgogIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aApAQCAt MzUzLDcgKzM1Myw3IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUK ICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAg LTg0Miw2ICs4NDgsMTEgQEAgQ1BQRkxBR1MKK0BAIC04NDYsNiArODUyLDExIEBAIENQUEZMQUdT CiAgQ1BQCiAgTUFLRUlORk8KICBNQUtFSU5GT0ZMQUdTCkBAIC0zNjUsNyArMzY1LDcgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZQogIFlBQ0MKICBZRkxBR1MKICBY TUtNRicKLUBAIC0xNTEyLDYgKzE1MjMsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNTE2 LDYgKzE1MjcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFstLXdpdGgtYXV0by1sb2FkLWRpcl0KICAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1w YXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2Fk ZWQgZmlsZXMgbG9jYXRpb25zCkBAIC0zNzQsNyArMzc0LDcgQEAgSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZQogICAgLS13aXRoLWxpYnVud2luZC1pYTY0ICAgdXNlIGxp YnVud2luZCBmcmFtZSB1bndpbmRpbmcgZm9yIGlhNjQgdGFyZ2V0cwogICAgLS13aXRoLWN1cnNl cyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0ZXJtY2Fw CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtMTU1OSw2ICsxNTcyLDEz IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorQEAgLTE1NjUsNiAr MTU3OCwxMyBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgIE1B S0VJTkZPICAgIFBhcmVudCBjb25maWd1cmUgZGV0ZWN0cyBpZiBpdCBpcyBvZiBzdWZmaWNpZW50 IHZlcnNpb24uCiAgICBNQUtFSU5GT0ZMQUdTCiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzIGZv ciBNQUtFSU5GTy4KQEAgLTM4OCw3ICszODgsNyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUgYFlldCBBbm90aGVyIEMgQ29tcGls ZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8KICAgICAgICAgICAgICAgIHRo ZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15JywgYGJ5YWNjJywgYHlhY2Mn LgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNz ZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC01MTU0LDYgKzUxNzQsNDkxIEBAIF9BQ0VPRgor QEAgLTUxNjAsNiArNTE4MCw0OTEgQEAgX0FDRU9GCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNQog ICRhc19lY2hvICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+JjY7IH0KICAKQEAgLTg4MCwx MCArODgwLDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUKICAK ICAKICBzdWJkaXJzPSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvY29u ZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9j b25maWd1cmUuYWMJMjAxNC0wMi0wNiAxNzoxODoyNi45Nzc3MTcyMjMgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUuYWMJMjAxNC0wMi0wNiAxNzoxODozMy44NzM3 MjQ2NzQgKzAxMDAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5h YwkyMDE0LTA2LTEzIDIwOjEwOjE5LjY0Mzc4NzY1MyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAx NDA2MDkvZ2RiL2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjEwOjMxLjA3NDc5OTE2NiArMDIw MAogQEAgLTE2NSw2ICsxNjUsMTk5IEBAIEFDX0RFRklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFU SCwgZXNjYXAKICAJICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcy5dKQogIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQpAQCAt MTA4NCwxMSArMTA4NCwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmln dXJlLmFjCiAgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQogIAogICMgQ2hlY2sgd2hldGhl ciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotSW5kZXg6IGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2 MDkvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3Jp Zy9nZGIvY29yZWxvdy5jCTIwMTQtMDItMDYgMTc6MTg6MjYuOTc4NzE3MjI0ICswMTAwCi0rKysg Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCTIwMTQtMDItMDYgMTc6MTg6MzMuODcz NzI0Njc0ICswMTAwCi1AQCAtMzE1LDcgKzMxNSw3IEBAIGJ1aWxkX2lkX2xvY2F0ZV9leGVjIChp bnQgZnJvbV90dHkpCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb3JlbG93LmMJ MjAxNC0wNi0xMyAyMDoxMDoxOS42NDQ3ODc2NTQgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi9jb3JlbG93LmMJMjAxNC0wNi0xMyAyMDoxMDozMS4wNzQ3OTkxNjYgKzAyMDAKK0BA IC0zMTYsNyArMzE2LDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKICAg ICAgICAgIHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MgfD0gT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURF RDsKICAgICAgfQogICAgZWxzZQpAQCAtMTA5NywxMCArMTA5NywxMCBAQCBJbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCiAgCiAgICBkb19jbGVhbnVwcyAoYmFja190byk7 CiAgCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYnVpbGQtaWQuYworSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL2J1aWxkLWlkLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42 LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2J1aWxkLWlkLmMJMjAxNC0wMi0wNiAxNzoxODoyNi44NDI3 MTcwNzcgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9idWlsZC1pZC5jCTIwMTQt MDItMDYgMTc6MDg6MTguMzQxMDYwMjk1ICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5v cmlnL2dkYi9idWlsZC1pZC5jCTIwMTQtMDYtMTMgMjA6MTA6MTkuNjQ0Nzg3NjU0ICswMjAwCisr KysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvYnVpbGQtaWQuYwkyMDE0LTA2LTEzIDIwOjEwOjMx LjA3NTc5OTE2NyArMDIwMAogQEAgLTMyLDYgKzMyLDcgQEAKICAjaW5jbHVkZSAiZ2RiY21kLmgi CiAgI2luY2x1ZGUgIm9ic2VydmVyLmgiCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXggZDNiYzRhNS4u ZWI0ZjFkMyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkv Z2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9n ZGIvY29yZWxvdy5jCTIwMTQtMDEtMjcgMDI6NTc6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCTIwMTQtMDItMDYgMTY6NDY6NTIuMjYxNjQ2 NDk5ICswMTAwCi1AQCAtNDgsNiArNDgsMTAgQEAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9y aWcvZ2RiL2NvcmVsb3cuYwkyMDE0LTA2LTEzIDIwOjA5OjM3LjM2OTc0NTIyMSArMDIwMAorKysr IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvcmVsb3cuYwkyMDE0LTA2LTEzIDIwOjA5OjQyLjQw Nzc1MDI2NSArMDIwMAorQEAgLTQ5LDYgKzQ5LDEwIEBACiAgI2luY2x1ZGUgImdkYl9iZmQuaCIK ICAjaW5jbHVkZSAiY29tcGxldGVyLmgiCiAgI2luY2x1ZGUgImZpbGVzdHVmZi5oIgpAQCAtMTMs NyArMTMsNyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCiAgCiAg I2lmbmRlZiBPX0xBUkdFRklMRQogICNkZWZpbmUgT19MQVJHRUZJTEUgMAotQEAgLTI3MSw2ICsy NzUsNTMgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCitAQCAtMjcy LDYgKzI3Niw1MyBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24KICAg ICAgaW5mZXJpb3JfcHRpZCA9IHB0aWQ7CQkJLyogWWVzLCBtYWtlIGl0IGN1cnJlbnQuICAqLwog IH0KICAKQEAgLTY3LDcgKzY3LDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2Nv cmVsb3cuYwogIC8qIFRoaXMgcm91dGluZSBvcGVucyBhbmQgc2V0cyB1cCB0aGUgY29yZSBmaWxl IGJmZC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC00MDksNiArNDYwLDE0IEBAIGNvcmVfb3Bl biAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKK0BAIC00MTAsNiArNDYxLDE0IEBAIGNv cmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKICAJc3dpdGNoX3RvX3RocmVh ZCAodGhyZWFkLT5wdGlkKTsKICAgICAgfQogIApAQCAtODIsNyArODIsNyBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCiAgICBwb3N0X2NyZWF0ZV9pbmZlcmlvciAo JmNvcmVfb3BzLCBmcm9tX3R0eSk7CiAgCiAgICAvKiBOb3cgZ28gdGhyb3VnaCB0aGUgdGFyZ2V0 IHN0YWNrIGxvb2tpbmcgZm9yIHRocmVhZHMgc2luY2UgdGhlcmUKLUBAIC05ODAsNCArMTAzOSwx MSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQorQEAgLTEwMjksNCArMTA4OCwxMSBAQCBf aW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAKICAgIGFk ZF90YXJnZXRfd2l0aF9jb21wbGV0ZXIgKCZjb3JlX29wcywgZmlsZW5hbWVfY29tcGxldGVyKTsK QEAgLTk0LDExICs5NCwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxv dy5jCiArCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0 KTsKICB9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJ bmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxNC0w Mi0wNiAxNjo0Njo1MS44MDQ2NDU5ODkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxNC0wMi0wNiAxNjo0Njo1Mi4xMTA2NDYzMzEgKzAxMDAKLUBA IC0xNzQxMyw2ICsxNzQxMywyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KKy0tLSBnZGItNy43LjUw LjIwMTQwNjA5Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4 MDc0NTIzMiArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDE0LTA2LTEzIDIwOjA5OjQyLjQxNzc1MDI3NSArMDIwMAorQEAgLTE3NTQ3LDYgKzE3NTQ3 LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyNiwxMSAr MTI2LDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9kb2MvZ2RiLnRleGluZm8K ICBAY2luZGV4IEBjb2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcg bGluayBzZWN0aW9ucwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUg ZXhlY3V0YWJsZSBmaWxlIG5hbWVkCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc29s aWItc3ZyNC5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvc29saWItc3ZyNC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJ MjAxNC0wMS0yNyAwMjo1Nzo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9zb2xpYi1zdnI0LmMJMjAxNC0wMi0wNiAxNjo0OToyNy41MDg4MTkxNzQgKzAxMDAK LUBAIC00Nyw2ICs0Nyw3IEBACistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9zb2xp Yi1zdnI0LmMJMjAxNC0wNi0xMyAyMDowOTozNy4zODI3NDUyMzQgKzAyMDAKKysrKyBnZGItNy43 LjUwLjIwMTQwNjA5L2dkYi9zb2xpYi1zdnI0LmMJMjAxNC0wNi0xMyAyMDowOTo0Mi40MTg3NTAy NzYgKzAyMDAKK0BAIC00OCw2ICs0OCw3IEBACiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAj aW5jbHVkZSAiZ2RiX2JmZC5oIgogICNpbmNsdWRlICJwcm9iZS5oIgpAQCAtMTk0LDExICsxOTQs MTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3NvbGliLXN2cjQuYwogICAgICAg IHhmcmVlIChidWZmZXIpOwogIAogICAgICAgIC8qIElmIHRoaXMgZW50cnkgaGFzIG5vIG5hbWUs IG9yIGl0cyBuYW1lIG1hdGNoZXMgdGhlIG5hbWUKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9lbGZyZWFkLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2VsZnJlYWQuYwky MDE0LTAxLTI3IDAyOjU3OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL2VsZnJlYWQuYwkyMDE0LTAyLTA2IDE2OjQ2OjUyLjI0OTY0NjQ4NiArMDEwMAotQEAg LTEzMTYsOSArMTMxNiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxNC0wNi0x MyAyMDowOTozNy4zODM3NDUyMzUgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9l bGZyZWFkLmMJMjAxNC0wNi0xMyAyMDowOTo0Mi40MTg3NTAyNzYgKzAyMDAKK0BAIC0xMzM1LDkg KzEzMzUsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAogIAkg ICAmJiBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlID09IE5VTEwKICAJICAgJiYgb2Jq ZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKQogICAgICB7CkBA IC0yMTEsNyArMjExLDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2VsZnJlYWQu YwogIAogICAgICAgIGlmIChkZWJ1Z2ZpbGUgPT0gTlVMTCkKICAJZGVidWdmaWxlID0gZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1AQCAtMTMzMiw2ICsx MzMzLDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0x MzUxLDYgKzEzNTIsMTIgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZp bAogIAkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgZGVidWdmaWxlLCBzeW1maWxl X2ZsYWdzLCBvYmpmaWxlKTsKICAJICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiAgCX0KQEAgLTIy NCwxMyArMjI0LDEzIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9lbGZyZWFkLmMK ICAgICAgfQogIH0KICAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zeW1maWxlLmgK K0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDE0LTAxLTI3IDAyOjU3 OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3N5bWZpbGUu aAkyMDE0LTAyLTA2IDE2OjQ2OjUyLjI1MDY0NjQ4NyArMDEwMAotQEAgLTU1NCw2ICs1NTQsMTAg QEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3QgcwotIAotIGV4dGVybiBz dHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lkKTsKKy0tLSBnZGIt Ny43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDE0LTA2LTEzIDIwOjA5OjQyLjQx OTc1MDI3NyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3N5bWZpbGUuaAkyMDE0 LTA2LTEzIDIwOjEwOjA0LjQ3ODc3MjUxMCArMDIwMAorQEAgLTU3MCw2ICs1NzAsMTAgQEAgdm9p ZCBleHBhbmRfc3ltdGFic19tYXRjaGluZyAoZXhwYW5kX3N5bQorIHZvaWQgbWFwX3N5bWJvbF9m aWxlbmFtZXMgKHN5bWJvbF9maWxlbmFtZV9mdHlwZSAqZnVuLCB2b2lkICpkYXRhLAorIAkJCSAg IGludCBuZWVkX2Z1bGxuYW1lKTsKICAKICsvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KICtleHRl cm4gc3RydWN0IGVsZl9idWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZXQgKENPUkVfQUREUiBhZGRy KTsKQEAgLTIzOSwxMSArMjM5LDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9z eW1maWxlLmgKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAogIC8qIE5hbWVzIGZvciBhIGR3 YXJmMiBkZWJ1Z2dpbmcgc2VjdGlvbi4gIFRoZSBmaWVsZCBOT1JNQUwgaXMgdGhlIG5vcm1hbAot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorSW5k ZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCTIwMTQtMDItMDYgMTY6NDY6NTEuNjQzNjQ1ODEwICswMTAwCi0rKysgZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTQtMDItMDYgMTY6NDY6NTIuMjUx NjQ2NDg4ICswMTAwCi1AQCAtMTUwNCw2ICsxNTA0LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3Rh cnQgeyB9IHsKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4NDc0NTIzNiArMDIwMAorKysrIGdkYi03Ljcu NTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTA2LTEzIDIwOjA5OjQy LjQyMDc1MDI3OCArMDIwMAorQEAgLTE0OTIsNiArMTQ5MiwxNiBAQCBwcm9jIGRlZmF1bHRfZ2Ri X3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAu IgogIAl9CiAgICAgIH0KQEAgLTI2MCwxMCArMjYwLDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDAKICB9CiAgCi1J bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4 cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxNC0wMS0yNyAwMjo1Nzo1NC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCTIwMTQtMDItMDYgMTY6NDY6NTIuMjUyNjQ2NDg5ICswMTAwCistLS0gZ2RiLTcuNy41MC4y MDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTQtMDYtMTMg MjA6MDk6MzcuMzg1NzQ1MjM3ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDE0LTA2LTEzIDIwOjA5OjQyLjQyMTc1MDI3OSAr MDIwMAogQEAgLTIxMiw2ICsyMTIsMTYgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFy Z3MgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9 CkBAIC0yODEsMTEgKzI4MSwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogICAgICAjIElmIGFsbG93aW5nIHRoZSBpbmZlcmlv ciB0byBoYXZlIGl0cyBvd24gUFRZIHRoZW4gYXNzaWduIHRoZSBpbmZlcmlvcgogICAgICAjIGl0 cyBvd24gdGVybWluYWwgZGV2aWNlIGhlcmUuCiAgICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9y X3B0eSB9IHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9vYmpmaWxlcy5oCitJbmRl eDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDE0LTAxLTI3IDAyOjU3OjUz LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL29iamZpbGVzLmgJ MjAxNC0wMi0wNiAxNjo0Njo1Mi4xMTM2NDYzMzQgKzAxMDAKLUBAIC00MzYsNiArNDM2LDEwIEBA IHN0cnVjdCBvYmpmaWxlCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9vYmpmaWxl cy5oCTIwMTQtMDYtMTMgMjA6MDk6MzcuMzg1NzQ1MjM3ICswMjAwCisrKysgZ2RiLTcuNy41MC4y MDE0MDYwOS9nZGIvb2JqZmlsZXMuaAkyMDE0LTA2LTEzIDIwOjA5OjQyLjQyMTc1MDI3OSArMDIw MAorQEAgLTQ2NCw2ICs0NjQsMTAgQEAgc3RydWN0IG9iamZpbGUKICAKICAjZGVmaW5lIE9CSkZf Tk9UX0ZJTEVOQU1FICgxIDw8IDYpCiAgCkBAIC0yOTYsMTEgKzI5NiwxMSBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvb2JqZmlsZXMuaAogIC8qIERlY2xhcmF0aW9ucyBmb3IgZnVu Y3Rpb25zIGRlZmluZWQgaW4gb2JqZmlsZXMuYyAqLwogIAogIGV4dGVybiBzdHJ1Y3Qgb2JqZmls ZSAqYWxsb2NhdGVfb2JqZmlsZSAoYmZkICosIGNvbnN0IGNoYXIgKm5hbWUsIGludCk7Ci1JbmRl eDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4 cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3Jl ZmlsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxNC0wMS0yNyAwMjo1Nzo1NC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Y29yZWZpbGUuZXhwCTIwMTQtMDItMDYgMTY6NDY6NTIuMTEzNjQ2MzM0ICswMTAwCi1AQCAtMjgx LDMgKzI4MSwzMyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29yZS1maWxlICRjb3JlZmlsZSIKKy0t LSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmls ZS5leHAJMjAxNC0wNi0xMyAyMDowOTozNy4zODU3NDUyMzcgKzAyMDAKKysrKyBnZGItNy43LjUw LjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTQtMDYtMTMg MjA6MDk6NDIuNDIxNzUwMjc5ICswMjAwCitAQCAtMjkzLDMgKzI5MywzMyBAQCBnZGJfdGVzdF9t dWx0aXBsZSAiY29yZS1maWxlICRjb3JlZmlsZSIKICAJcGFzcyAkdGVzdAogICAgICB9CiAgfQpA QCAtMzM0LDEwICszMzQsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKICsgICAgZ2RiX3Rlc3QgImluZm8gZmlsZXMiICJM b2NhbCBleGVjIGZpbGU6XHJcblxbIFx0XF0qYFtzdHJpbmdfdG9fcmVnZXhwICRkZWJ1Z2Rpci8k YnVpbGRpZF0nLCBmaWxlIHR5cGUgLioiCiArICAgIHBhc3MgJHdob2xldGVzdAogK30KLUluZGV4 OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9idWlsZC1pZC5jCitJbmRleDogZ2RiLTcuNy41MC4y MDE0MDYwOS9nZGIvYnVpbGQtaWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAx Mjcub3JpZy9nZGIvYnVpbGQtaWQuYwkyMDE0LTAxLTI3IDAyOjU3OjUzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmMJMjAxNC0wMi0wNiAxNjo0 Njo1Mi4xMTM2NDYzMzQgKzAxMDAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2J1 aWxkLWlkLmMJMjAxNC0wNi0xMyAyMDowOTozNy4zODY3NDUyMzggKzAyMDAKKysrKyBnZGItNy43 LjUwLjIwMTQwNjA5L2dkYi9idWlsZC1pZC5jCTIwMTQtMDYtMTMgMjA6MDk6NDIuNDIyNzUwMjgw ICswMjAwCiBAQCAtMjcsMTEgKzI3LDY1IEBACiAgI2luY2x1ZGUgInN5bWZpbGUuaCIKICAjaW5j bHVkZSAib2JqZmlsZXMuaCIKQEAgLTExNjAsMTAgKzExNjAsMTAgQEAgSW5kZXg6IGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmMKICsKICsgIG9ic2VydmVyX2F0dGFjaF9leGVjdXRh YmxlX2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCk7CiArfQotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmgKK0luZGV4OiBnZGItNy43LjUwLjIw MTQwNjA5L2dkYi9idWlsZC1pZC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi9idWlsZC1pZC5oCTIwMTQtMDEtMjcgMDI6NTc6NTMuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYnVpbGQtaWQuaAkyMDE0LTAyLTA2IDE2OjQ2 OjUyLjExNDY0NjMzNSArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvYnVp bGQtaWQuaAkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4Njc0NTIzOCArMDIwMAorKysrIGdkYi03Ljcu NTAuMjAxNDA2MDkvZ2RiL2J1aWxkLWlkLmgJMjAxNC0wNi0xMyAyMDowOTo0Mi40MjI3NTAyODAg KzAyMDAKIEBAIC0zMiwxMyArMzIsMTggQEAgZXh0ZXJuIGludCBidWlsZF9pZF92ZXJpZnkgKGJm ZCAqYWJmZCwKICAgICB0aGUgY2FsbGVyLiAgKi8KICAKQEAgLTExODUsMTEgKzExODUsMTEgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmgKICsJCQkJCSAgICAgICBj aGFyICoqYnVpbGRfaWRfZmlsZW5hbWVfcmV0dXJuKTsKICAKICAjZW5kaWYgLyogQlVJTERfSURf SCAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6 IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDItMDYgMTY6NDY6 NTEuODA5NjQ1OTk1ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZHdhcmYycmVh ZC5jCTIwMTQtMDItMDYgMTY6NDk6NTUuNjc5ODUwNDE0ICswMTAwCi1AQCAtMjQyOSw3ICsyNDI5 LDcgQEAgZHdhcmYyX2dldF9kd3pfZmlsZSAodm9pZCkKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5 Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4OTc0NTI0MSArMDIw MAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2LTEzIDIw OjA5OjQyLjQyNTc1MDI4MyArMDIwMAorQEAgLTI0NDYsNyArMjQ0Niw3IEBAIGR3YXJmMl9nZXRf ZHd6X2ZpbGUgKHZvaWQpCiAgICAgIH0KICAKICAgIGlmIChkd3pfYmZkID09IE5VTEwpCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gg Yi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAppbmRleCA2 N2UzNWMyLi5lOGUwNTk1IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0 ZXAtaXMtZGVmYXVsdC5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAt aXMtZGVmYXVsdC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2luZnJ1bi5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9pbmZydW4uYwky MDE0LTAyLTA0IDIzOjQ4OjI3LjI2MjA5Mjg2OSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL2luZnJ1bi5jCTIwMTQtMDItMDQgMjM6NDg6MzEuNjc0MDk2NjEzICswMTAwCi1AQCAt MTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNjaGVkdWxlcl9lbnVt cworLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvaW5mcnVuLmMJMjAxNC0wNi0xMyAy MDowODo1MS4yMjU2OTkyMDMgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9pbmZy dW4uYwkyMDE0LTA2LTEzIDIwOjA4OjU1LjUxNTcwMzQ2NiArMDIwMAorQEAgLTE2NjEsNyArMTY2 MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzY2hlZHVsZXJfZW51bXMKICAgIHNjaGVk bG9ja19zdGVwLAogICAgTlVMTAogIH07CkBAIC0xMSwxMSArMTEsMTEgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCiAgc3RhdGljIHZvaWQKICBzaG93X3NjaGVkdWxl cl9tb2RlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogIAkJICAgICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi1JbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCitJbmRleDogZ2Ri LTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p LWNsaS5leHAJMjAxNC0wMi0wNCAyMzo0ODoyNy4yNjMwOTI4NzEgKzAxMDAKLSsrKyBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJMjAxNC0wMi0wNCAy Mzo0ODozMS42NzQwOTY2MTMgKzAxMDAKLUBAIC0xNjMsNyArMTYzLDcgQEAgbWlfZXhlY3V0ZV90 byAiZXhlYy1jb250aW51ZSIgImJyZWFrcG9pbgorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTQtMDYtMTMgMjA6MDg6NTUuNTE1 NzAzNDY2ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taS1jbGkuZXhwCTIwMTQtMDYtMTMgMjA6MDk6MjQuODYyNzMyODMyICswMjAwCitAQCAtMTgx LDcgKzE4MSw3IEBAIG1pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgIm1haW4iICIKICAj IFRlc3QgdGhhdCB0aGUgdG9rZW4gaXMgb3V0cHV0IGV2ZW4gZm9yIENMSSBjb21tYW5kcwogICMg QWxzbyB0ZXN0IHRoYXQgKnN0b3BwZWQgaW5jbHVkZXMgZnJhbWUgaW5mb3JtYXRpb24uCiAgbWlf Z2RiX3Rlc3QgIjM0IG5leHQiIFwKQEAgLTIzLDExICsyMywxMSBAQCBJbmRleDogZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiArICAgICIuKjM0XFxc XnJ1bm5pbmcuKlxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiMVwiIiBcCiAgICAgICIzNCBuZXh0OiBy dW4iCiAgCi0gaWYgeyEkYXN5bmN9IHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90 ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCisgIyBUZXN0IHRoYXQgdGhlIG5ldyBjdXJy ZW50IHNvdXJjZSBsaW5lIGlzIG91dHB1dCB0byB0aGUgY29uc29sZQorSW5kZXg6IGdkYi03Ljcu NTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkt bG9nZ2luZy5leHAJMjAxNC0wMi0wNCAyMzo0ODoyNy4yNjMwOTI4NzEgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCTIwMTQt MDItMDQgMjM6NDg6MzEuNjc0MDk2NjEzICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCTIwMTQtMDYtMTMgMjA6MDg6 NTEuMjI3Njk5MjA1ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRl L2dkYi5taS9taS1sb2dnaW5nLmV4cAkyMDE0LTA2LTEzIDIwOjA4OjU1LjUxNjcwMzQ2NyArMDIw MAogQEAgLTUzLDcgKzUzLDcgQEAgY2xvc2UgJGNoYW4KICAKICBzZXQgbWlfbG9nX3Byb21wdCAi XFsoXF1nZGJcWylcXSBcW1xyXG5cXSsiCkBAIC00NiwxMCArNDYsMTAgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAKICAgICAg cGFzcyAiUmVkaXJlY3QgbG9nIGZpbGUgY29udGVudHMiCiAgfSBlbHNlIHsKICAgICAgZmFpbCAi UmVkaXJlY3QgbG9nIGZpbGUgY29udGVudHMiCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAorSW5kZXg6IGdkYi03LjcuNTAuMjAx NDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29s ZS5leHAJMjAxNC0wMi0wNCAyMzo0ODozMS42NzUwOTY2NjYgKzAxMDAKLSsrKyBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTQtMDItMDQg MjM6NDg6NTUuOTgxMTI3OTYzICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTQtMDYtMTMgMjA6MDg6NTEuMjI3 Njk5MjA1ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taS1jb25zb2xlLmV4cAkyMDE0LTA2LTEzIDIwOjA4OjU1LjUxNjcwMzQ2NyArMDIwMAogQEAg LTYwLDYgKzYwLDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9Lwog IAogIG1pX3J1bl90b19tYWluCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2lu Zy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaCBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmct c3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKaW5kZXggNzVkZGExYS4uOGNlODEwNyAxMDA2NDQK LS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRj aAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBh dGNoCkBAIC0yMSw0MSArMjEsMjAgQEAKIAogCVBvcnQgdG8gR0RCLTYuOHByZS4KIAotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZmVyaW9yLmgKK0luZGV4OiBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcu b3JpZy9nZGIvaW5mZXJpb3IuaAkyMDE0LTAxLTI3IDIyOjA1OjI4LjgwMTg5NTM0NyArMDEwMAot KysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZmVyaW9yLmgJMjAxNC0wMS0yNyAyMjozMzo0 NS4yMzAxNTc4MTMgKzAxMDAKLUBAIC0xNTUsNyArMTU1LDE1IEBAIGV4dGVybiB2b2lkIHJlb3Bl bl9leGVjX2ZpbGUgKHZvaWQpOwotIC8qIFRoZSBgcmVzdW1lJyByb3V0aW5lIHNob3VsZCBvbmx5 IGJlIGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1bXN0YW5jZXMuCi0gICAgTm9ybWFsbHksIHVzZSBg cHJvY2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBsb3Qgb2YgYm9va2tlZXBpbmcuICAqLwotIAotLWV4 dGVybiB2b2lkIHJlc3VtZSAoaW50LCBlbnVtIGdkYl9zaWduYWwpOwotK2VudW0gcmVzdW1lX3N0 ZXAKLSsgIHsKLSsgICAgLyogY3VycmVudGx5X3N0ZXBwaW5nICgpIHNob3VsZCByZXR1cm4gbm9u LXplcm8gZm9yIG5vbi1jb250aW51ZS4gICovCi0rICAgIFJFU1VNRV9TVEVQX0NPTlRJTlVFID0g MCwKLSsgICAgUkVTVU1FX1NURVBfVVNFUiwJCS8qIFN0ZXBwaW5nIGlzIGludGVudGlvbmFsIGJ5 IHRoZSB1c2VyLiAgKi8KLSsgICAgUkVTVU1FX1NURVBfTkVFREVECQkvKiBTdGVwcGluZyBvbmx5 IGZvciBzb2Z0d2FyZSB3YXRjaHBvaW50cy4gICovCi0rICB9OwotKwotK2V4dGVybiB2b2lkIHJl c3VtZSAoZW51bSByZXN1bWVfc3RlcCwgZW51bSBnZGJfc2lnbmFsKTsKLSAKLSBleHRlcm4gcHRp ZF90IHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApOwotIAotSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4y MDE0MDEyNy5vcmlnL2dkYi9pbmZydW4uYwkyMDE0LTAxLTI3IDIyOjA1OjI4LjgwNDg5NTM0OSAr MDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCTIwMTQtMDEtMjcgMjI6 MzU6MTIuNzgxMjI0Mjc5ICswMTAwCi1AQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW50IGZvbGxv d19mb3JrICh2b2lkKTsKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2luZnJ1bi5j CTIwMTQtMDYtMTMgMDM6NTk6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvaW5mcnVuLmMJMjAxNC0wNi0xMyAyMTozNjo0My42MzcyOTQ3ODIgKzAyMDAKK0BA IC04NCw3ICs4NCw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOwogIHN0YXRpYyB2 b2lkIHNldF9zY2hlZGxvY2tfZnVuYyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LAogIAkJCQlz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYyk7CiAgCiAtc3RhdGljIGludCBjdXJyZW50bHlfc3Rl cHBpbmcgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOwogK3N0YXRpYyBlbnVtIHJlc3VtZV9zdGVw IGN1cnJlbnRseV9zdGVwcGluZyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCk7CiAgCi0gc3RhdGlj IGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFjayAoc3RydWN0IHRocmVh ZF9pbmZvICp0cCwKLSAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0xNjk5LDcgKzE2OTksOCBA QCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKQorIHN0YXRpYyB2b2lkIHhkYl9o YW5kbGVfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsKKyAKK0BAIC0xNzQyLDcg KzE3NDIsOCBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKQogICAgICB9CiAg ICBlbHNlIGlmICgoc2NoZWR1bGVyX21vZGUgPT0gc2NoZWRsb2NrX29uKQogIAkgICB8fCAoc2No ZWR1bGVyX21vZGUgPT0gc2NoZWRsb2NrX3N0ZXAKQEAgLTY1LDE2ICs0NCwxNiBAQCBJbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5mcnVuLmMKICAgICAgewogICAgICAgIC8qIFVzZXIt c2V0dGFibGUgJ3NjaGVkdWxlcicgbW9kZSByZXF1aXJlcyBzb2xvIHRocmVhZCByZXN1bWUuICAq LwogICAgICAgIHJlc3VtZV9wdGlkID0gaW5mZXJpb3JfcHRpZDsKLUBAIC0xNzE3LDcgKzE3MTgs NyBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKQorQEAgLTE3NjAsNyArMTc2 MSw3IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCiAgICAgU1RFUCBub256 ZXJvIGlmIHdlIHNob3VsZCBzdGVwICh6ZXJvIHRvIGNvbnRpbnVlIGluc3RlYWQpLgogICAgIFNJ RyBpcyB0aGUgc2lnbmFsIHRvIGdpdmUgdGhlIGluZmVyaW9yICh6ZXJvIGZvciBub25lKS4gICov CiAgdm9pZAogLXJlc3VtZSAoaW50IHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWcpCiArcmVzdW1l IChlbnVtIHJlc3VtZV9zdGVwIHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWcpCiAgewotICAgaW50 IHNob3VsZF9yZXN1bWUgPSAxOwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwcyA9IG1h a2VfY2xlYW51cCAocmVzdW1lX2NsZWFudXBzLCAwKTsKLUBAIC0xNzUwLDkgKzE3NTEsMTMgQEAg cmVzdW1lIChpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykKKyAgIHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsKK0BAIC0xODAwLDkgKzE4MDEs MTMgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykKICAKICAgIGlmIChk ZWJ1Z19pbmZydW4pCiAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKQEAgLTkw LDY0ICs2OSw1OSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5mcnVuLmMKICAJ CQl0cC0+Y29udHJvbC50cmFwX2V4cGVjdGVkLAogIAkJCXRhcmdldF9waWRfdG9fc3RyIChpbmZl cmlvcl9wdGlkKSwKICAJCQlwYWRkcmVzcyAoZ2RiYXJjaCwgcGMpKTsKLUBAIC0yMTQ3LDcgKzIx NTIsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSBnZGJfc2lnbmFsCitAQCAtMjE4 OCw2ICsyMTkzLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gZ2RiX3NpZ25hbAor ICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQUREUiBwYzsKICAgIHN0cnVjdCBh ZGRyZXNzX3NwYWNlICphc3BhY2U7Ci0gICAvKiBHREIgbWF5IGZvcmNlIHRoZSBpbmZlcmlvciB0 byBzdGVwIGR1ZSB0byB2YXJpb3VzIHJlYXNvbnMuICAqLwotLSAgaW50IGZvcmNlX3N0ZXAgPSAw OwogKyAgZW51bSByZXN1bWVfc3RlcCByZXN1bWVfc3RlcCA9IFJFU1VNRV9TVEVQX0NPTlRJTlVF OwogIAogICAgLyogSWYgd2UncmUgc3RvcHBlZCBhdCBhIGZvcmsvdmZvcmssIGZvbGxvdyB0aGUg YnJhbmNoIHNldCBieSB0aGUKICAgICAgICJzZXQgZm9sbG93LWZvcmstbW9kZSIgY29tbWFuZDsg b3RoZXJ3aXNlLCB3ZSdsbCBqdXN0IHByb2NlZWQKLUBAIC0yMTg3LDEzICsyMTkyLDEzIEBAIHBy b2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIGdkYl9zaWduYWwKK0BAIC0yMjMwLDEzICsyMjM2 LDE5IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIGdkYl9zaWduYWwKKyAJICAgTm90 ZSwgd2UgZG9uJ3QgZG8gdGhpcyBpbiByZXZlcnNlLCBiZWNhdXNlIHdlIHdvbid0CiAgCSAgIGFj dHVhbGx5IGJlIGV4ZWN1dGluZyB0aGUgYnJlYWtwb2ludCBpbnNuIGFueXdheS4KICAJICAgV2Un bGwgYmUgKHVuLSlleGVjdXRpbmcgdGhlIHByZXZpb3VzIGluc3RydWN0aW9uLiAgKi8KLSAKLS0J Zm9yY2Vfc3RlcCA9IDE7CisrCXsKKyAJdHAtPnN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludCA9IDE7 CiArCXJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBfVVNFUjsKKysJfQogICAgICAgIGVsc2UgaWYg KGdkYmFyY2hfc2luZ2xlX3N0ZXBfdGhyb3VnaF9kZWxheV9wIChnZGJhcmNoKQogIAkgICAgICAg JiYgZ2RiYXJjaF9zaW5nbGVfc3RlcF90aHJvdWdoX2RlbGF5IChnZGJhcmNoLAogIAkJCQkJCSAg ICAgZ2V0X2N1cnJlbnRfZnJhbWUgKCkpKQogIAkvKiBXZSBzdGVwcGVkIG9udG8gYW4gaW5zdHJ1 Y3Rpb24gdGhhdCBuZWVkcyB0byBiZSBzdGVwcGVkCiAgCSAgIGFnYWluIGJlZm9yZSByZS1pbnNl cnRpbmcgdGhlIGJyZWFrcG9pbnQsIGRvIHNvLiAgKi8KLS0JZm9yY2Vfc3RlcCA9IDE7CisrCXsK KyAJdHAtPnN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludCA9IDE7CiArCXJlc3VtZV9zdGVwID0gUkVT VU1FX1NURVBfVVNFUjsKKysJfQogICAgICB9CiAgICBlbHNlCiAgICAgIHsKLUBAIC0yMjI1LDEz ICsyMjMwLDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIGdkYl9zaWduYWwKLSAJ IGlzIHJlcXVpcmVkIGl0IHJldHVybnMgVFJVRSBhbmQgc2V0cyB0aGUgY3VycmVudCB0aHJlYWQg dG8KLSAJIHRoZSBvbGQgdGhyZWFkLiAgKi8KLSAgICAgICBpZiAocHJlcGFyZV90b19wcm9jZWVk IChzdGVwKSkKLS0JZm9yY2Vfc3RlcCA9IDE7Ci0rCXJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBf VVNFUjsKK0BAIC0yMjg4LDYgKzIzMDAsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51 bSBnZGJfc2lnbmFsCisgCSAgdHAtPnByZXZfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfY3Vy cmVudF9yZWdjYWNoZSAoKSk7CisgCSAgc3dpdGNoX3RvX3RocmVhZCAoc3RlcF9vdmVyLT5wdGlk KTsKKyAJICB0cCA9IHN0ZXBfb3ZlcjsKKysJICByZXN1bWVfc3RlcCA9IFJFU1VNRV9TVEVQX1VT RVI7CisgCX0KICAgICAgfQogIAotICAgLyogcHJlcGFyZV90b19wcm9jZWVkIG1heSBjaGFuZ2Ug dGhlIGN1cnJlbnQgdGhyZWFkLiAgKi8KLSAgIHRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwotIAot LSAgaWYgKGZvcmNlX3N0ZXApCi0rICBpZiAocmVzdW1lX3N0ZXAgPT0gUkVTVU1FX1NURVBfVVNF UikKLSAgICAgewotICAgICAgIHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQgPSAxOwotICAgICAg IC8qIElmIGRpc3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4gc3RlcCBvdmVyIHRo ZQotQEAgLTIzMTgsOSArMjMyMywxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSBn ZGJfc2lnbmFsCitAQCAtMjM3NSw5ICsyMzg4LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRy LCBlbnVtIGdkYl9zaWduYWwKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0ZS4gICovCiAgICBp bml0X2luZndhaXRfc3RhdGUgKCk7CiAgCi0rICBpZiAoc3RlcCkKKysgIGlmICh0cC0+Y29udHJv bC50cmFwX2V4cGVjdGVkIHx8IHN0ZXApCiArICAgIHJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBf VVNFUjsKICsgIGlmIChyZXN1bWVfc3RlcCA9PSBSRVNVTUVfU1RFUF9DT05USU5VRSAmJiBicHN0 YXRfc2hvdWxkX3N0ZXAgKCkpCiArICAgIHJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBfTkVFREVE OwogKwogICAgLyogUmVzdW1lIGluZmVyaW9yLiAgKi8KLS0gIHJlc3VtZSAoZm9yY2Vfc3RlcCB8 fCBzdGVwIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSwKKy0gIHJlc3VtZSAodHAtPmNvbnRyb2wu dHJhcF9leHBlY3RlZCB8fCBzdGVwIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSwKIC0JICB0cC0+ c3VzcGVuZC5zdG9wX3NpZ25hbCk7CiArICByZXN1bWUgKHJlc3VtZV9zdGVwLCB0cC0+c3VzcGVu ZC5zdG9wX3NpZ25hbCk7CiAgCiAgICAvKiBXYWl0IGZvciBpdCB0byBzdG9wIChpZiBub3Qgc3Rh bmRhbG9uZSkKICAgICAgIGFuZCBpbiBhbnkgY2FzZSBkZWNvZGUgd2h5IGl0IHN0b3BwZWQsIGFu ZCBhY3QgYWNjb3JkaW5nbHkuICAqLwotQEAgLTUzMzIsMTMgKzUzNDEsMTggQEAgc3dpdGNoX2Jh Y2tfdG9fc3RlcHBlZF90aHJlYWQgKHN0cnVjdCBleAorQEAgLTUzNTksMTMgKzUzNzYsMTYgQEAg c3dpdGNoX2JhY2tfdG9fc3RlcHBlZF90aHJlYWQgKHN0cnVjdCBleAogIAogIC8qIElzIHRocmVh ZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGluZz8gICovCiAgCkBAIC0xNTYsMjYg KzEzMCwyMyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5mcnVuLmMKICBjdXJy ZW50bHlfc3RlcHBpbmcgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCiAgewogLSAgcmV0dXJuICgo dHAtPmNvbnRyb2wuc3RlcF9yYW5nZV9lbmQKLS0JICAgJiYgdHAtPmNvbnRyb2wuc3RlcF9yZXN1 bWVfYnJlYWtwb2ludCA9PSBOVUxMKQorKyAgaWYgICAgICgodHAtPmNvbnRyb2wuc3RlcF9yYW5n ZV9lbmQKKyAJICAgJiYgdHAtPmNvbnRyb2wuc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxM KQogLQkgIHx8IHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQKIC0JICB8fCBicHN0YXRfc2hvdWxk X3N0ZXAgKCkpOwotKyAgaWYgKCh0cC0+Y29udHJvbC5zdGVwX3JhbmdlX2VuZAotKyAgICAgICAm JiB0cC0+Y29udHJvbC5zdGVwX3Jlc3VtZV9icmVha3BvaW50ID09IE5VTEwpCi0rICAgICAgfHwg dHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCkKKysJICB8fCB0cC0+Y29udHJvbC50cmFwX2V4cGVj dGVkKQogKyAgICByZXR1cm4gUkVTVU1FX1NURVBfVVNFUjsKLSsKLSsgIGlmIChicHN0YXRfc2hv dWxkX3N0ZXAgKCkpCisrICBpZiAgICAgICAgKGJwc3RhdF9zaG91bGRfc3RlcCAoKSkKICsgICAg cmV0dXJuIFJFU1VNRV9TVEVQX05FRURFRDsKLSsKICsgIHJldHVybiBSRVNVTUVfU1RFUF9DT05U SU5VRTsKICB9CiAgCi0gLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1dCogdGhlIG9u ZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2xpbnV4LW5hdC5jCisgLyogSW5mZXJpb3IgaGFzIHN0ZXBwZWQgaW50byBhIHN1YnJvdXRp bmUgY2FsbCB3aXRoIHNvdXJjZSBjb2RlIHRoYXQKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3Jp Zy9nZGIvbGludXgtbmF0LmMJMjAxNC0wMS0yNyAyMjowNToyOC44MDY4OTUzNTAgKzAxMDAKLSsr KyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9saW51eC1uYXQuYwkyMDE0LTAxLTI3IDIyOjMzOjQ1 LjMzMDE1Nzg4OSArMDEwMAotQEAgLTI2OTcsNyArMjY5NywxMSBAQCBzdGF0aWMgaW50CistLS0g Z2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDE0LTA2LTEzIDAzOjU5 OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2xpbnV4LW5h dC5jCTIwMTQtMDYtMTMgMjE6MzE6MTkuNDQ5OTQ5ODE0ICswMjAwCitAQCAtMjcwOSw3ICsyNzA5 LDExIEBAIHN0YXRpYyBpbnQKICBzZWxlY3Rfc2luZ2xlc3RlcF9sd3BfY2FsbGJhY2sgKHN0cnVj dCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAgewogICAgaWYgKGxwLT5sYXN0X3Jlc3VtZV9r aW5kID09IHJlc3VtZV9zdGVwCkBAIC0xODgsMTEgKzE1OSwxOSBAQCBJbmRleDogZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJuIDE7CiAgICBlbHNlCiAgICAg IHJldHVybiAwOwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2xpbnV4LW5hdC5oCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbGludXgtbmF0LmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTQtMDEtMjcgMjI6 MDU6MjguODA3ODk1MzUxICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbGludXgt bmF0LmgJMjAxNC0wMS0yNyAyMjozMzo0NS4zMzQxNTc4OTIgKzAxMDAKLUBAIC01OSw4ICs1OSw4 IEBAIHN0cnVjdCBsd3BfaW5mbworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvbGlu dXgtbmF0LmgJMjAxNC0wNi0xMyAwMzo1OTozNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9saW51eC1uYXQuaAkyMDE0LTA2LTEzIDIxOjMxOjE5LjQ0OTk0OTgx NCArMDIwMAorQEAgLTE4LDYgKzE4LDcgQEAKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2lu Y2x1ZGUgInRhcmdldC5oIgorKyNpbmNsdWRlICJpbmZydW4uaCIKKyAKKyAjaW5jbHVkZSA8c2ln bmFsLmg+CisgCitAQCAtNTksOCArNjAsOCBAQCBzdHJ1Y3QgbHdwX2luZm8KICAgIC8qIElmIG5v bi16ZXJvLCBhIHBlbmRpbmcgd2FpdCBzdGF0dXMuICAqLwogICAgaW50IHN0YXR1czsKICAKQEAg LTIwMywzICsxODIsMzYgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2xpbnV4LW5h dC5oCiAgCiAgICAvKiBTVE9QUEVEX0JZX1dBVENIUE9JTlQgaXMgbm9uLXplcm8gaWYgdGhpcyBM V1Agc3RvcHBlZCB3aXRoIGEgZGF0YQogICAgICAgd2F0Y2hwb2ludCB0cmFwLiAgKi8KK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pbmZydW4uaAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvaW5mcnVuLmgJMjAxNC0wNi0xMyAwMzo1OTozNi4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pbmZydW4uaAkyMDE0LTA2 LTEzIDIxOjMxOjE5LjQ0OTk0OTgxNCArMDIwMAorQEAgLTg5LDcgKzg5LDE0IEBAIGV4dGVybiB2 b2lkIHByb2NlZWQgKENPUkVfQUREUiwgZW51bSBnZGIKKyAKKyAvKiBUaGUgYHJlc3VtZScgcm91 dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgorICAg IE5vcm1hbGx5LCB1c2UgYHByb2NlZWQnLCB3aGljaCBoYW5kbGVzIGEgbG90IG9mIGJvb2trZWVw aW5nLiAgKi8KKy1leHRlcm4gdm9pZCByZXN1bWUgKGludCwgZW51bSBnZGJfc2lnbmFsKTsKKytl bnVtIHJlc3VtZV9zdGVwCisrICB7CisrICAgIC8qIGN1cnJlbnRseV9zdGVwcGluZyAoKSBzaG91 bGQgcmV0dXJuIG5vbi16ZXJvIGZvciBub24tY29udGludWUuICAqLworKyAgICBSRVNVTUVfU1RF UF9DT05USU5VRSA9IDAsCisrICAgIFJFU1VNRV9TVEVQX1VTRVIsICAgICAgICAgIC8qIFN0ZXBw aW5nIGlzIGludGVudGlvbmFsIGJ5IHRoZSB1c2VyLiAgKi8KKysgICAgUkVTVU1FX1NURVBfTkVF REVEICAgICAgICAgLyogU3RlcHBpbmcgb25seSBmb3Igc29mdHdhcmUgd2F0Y2hwb2ludHMuICAq LworKyAgfTsKKytleHRlcm4gdm9pZCByZXN1bWUgKGVudW0gcmVzdW1lX3N0ZXAsIGVudW0gZ2Ri X3NpZ25hbCk7CisgCisgZXh0ZXJuIHB0aWRfdCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGlu dCBzdGVwKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ25h bC13aGlsZS1zdGVwcGluZy1vdmVyLWJwLW90aGVyLXRocmVhZC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3NpZ25hbC13aGlsZS1zdGVwcGluZy1vdmVyLWJwLW90aGVyLXRocmVhZC5l eHAKK2luZGV4IDJhMzA2MDQuLmVlMWZkMTEgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3NpZ25hbC13aGlsZS1zdGVwcGluZy1vdmVyLWJwLW90aGVyLXRocmVhZC5leHAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnbmFsLXdoaWxlLXN0ZXBwaW5nLW92 ZXItYnAtb3RoZXItdGhyZWFkLmV4cAorQEAgLTk3LDcgKzk3LDcgQEAgZ2RiX3Rlc3QgInNldCBk ZWJ1ZyBpbmZydW4gMSIKKyAKKyBnZGJfdGVzdCBcCisgICAgICJzdGVwIiBcCistICAgICIuKm5l ZWQgdG8gc3RlcC1vdmVyLipyZXN1bWUgXFwoc3RlcD0xLipzaWduYWwgYXJyaXZlZCB3aGlsZSBz dGVwcGluZyBvdmVyIGJyZWFrcG9pbnQuKnN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGhyZWFk LipzdGVwcGVkIHRvIGEgZGlmZmVyZW50IGxpbmUuKmNhbGxtZS4qIiBcCisrICAgICIuKm5lZWQg dG8gc3RlcC1vdmVyLipyZXN1bWUgXFwoc3RlcD1SRVNVTUVfU1RFUF9VU0VSLipzaWduYWwgYXJy aXZlZCB3aGlsZSBzdGVwcGluZyBvdmVyIGJyZWFrcG9pbnQuKnN3aXRjaGluZyBiYWNrIHRvIHN0 ZXBwZWQgdGhyZWFkLipzdGVwcGVkIHRvIGEgZGlmZmVyZW50IGxpbmUuKmNhbGxtZS4qIiBcCisg ICAgICJzdGVwIgorIAorIHNldCBjbnRfYWZ0ZXIgW2dldF92YWx1ZSAiYXJnc1xbJG15X251bWJl clxdIiAiZ2V0IGNvdW50IGFmdGVyIHN0ZXAiXQoKZGlmZiAtLWdpdCBhL2dkYi02LjgtYXR0YWNo LXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaCBiL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxl ZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAppbmRleCBiZjU1MjZhLi43NTlkZWM4IDEwMDY0NAotLS0g YS9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gKKysrIGIvZ2Ri LTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoCkBAIC0xLDggKzEsOCBA QAotSW5kZXg6IGdkYi03LjcvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43Lm9yaWcvZ2RiL2xp bnV4LW5hdC5jCTIwMTQtMDItMDkgMTk6MTM6MzIuOTk4MjE0NTcxICswMTAwCi0rKysgZ2RiLTcu Ny9nZGIvbGludXgtbmF0LmMJMjAxNC0wMi0wOSAxOToxNzozNy41NjE0OTk2MDYgKzAxMDAKLUBA IC0xNzYsNiArMTc2LDkgQEAgYmxvY2tlZC4gICovCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIzOjAzOjM0LjM2NDE3NzYxNCArMDIwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2xpbnV4LW5hdC5jCTIwMTQtMDYtMTMgMjM6MDU6 MDcuNzQ5Mjc5MTIyICswMjAwCitAQCAtMTc4LDYgKzE3OCw5IEBAIGJsb2NrZWQuICAqLwogIHN0 YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyAqbGludXhfb3BzOwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0 X29wcyBsaW51eF9vcHNfc2F2ZWQ7CiAgCkBAIC0xMiw3ICsxMiw3IEBAIEluZGV4OiBnZGItNy43 L2dkYi9saW51eC1uYXQuYwogIC8qIFRoZSBtZXRob2QgdG8gY2FsbCwgaWYgYW55LCB3aGVuIGEg bmV3IHRocmVhZCBpcyBhdHRhY2hlZC4gICovCiAgc3RhdGljIHZvaWQgKCpsaW51eF9uYXRfbmV3 X3RocmVhZCkgKHN0cnVjdCBsd3BfaW5mbyAqKTsKICAKLUBAIC02NTIsNyArNjU1LDE0IEBAIGhv bGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGUKK0BAIC02ODMsNyArNjg2LDE0 IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGUKICAJICBwYXJlbnRf aW5mLT53YWl0aW5nX2Zvcl92Zm9ya19kb25lID0gMDsKICAJfQogICAgICAgIGVsc2UgaWYgKGRl dGFjaF9mb3JrKQpAQCAtMjgsNyArMjgsNyBAQCBJbmRleDogZ2RiLTcuNy9nZGIvbGludXgtbmF0 LmMKICAKICAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRldGFjaCBhYm92ZSBtYWtlcyBQQVJFTlRf SU5GIGRhbmdsaW5nLiAgKi8KICAKLUBAIC0xMDk5LDYgKzExMDksNyBAQCBsaW51eF9uYXRfcG9z dF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCitAQCAtMTEwNyw2ICsxMTE3LDcgQEAgbGludXhf bmF0X3Bvc3RfYXR0YWNoX3dhaXQgKHB0aWRfdCBwdGlkLAogICAgICAgIGlmIChkZWJ1Z19saW51 eF9uYXQpCiAgCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKICAJCQkgICAgIkxOUEFX OiBBdHRhY2hpbmcgdG8gYSBzdG9wcGVkIHByb2Nlc3NcbiIpOwpAQCAtMzYsNyArMzYsNyBAQCBJ bmRleDogZ2RiLTcuNy9nZGIvbGludXgtbmF0LmMKICAKICAgICAgICAvKiBUaGUgcHJvY2VzcyBp cyBkZWZpbml0ZWx5IHN0b3BwZWQuICBJdCBpcyBpbiBhIGpvYiBjb250cm9sCiAgCSBzdG9wLCB1 bmxlc3MgdGhlIGtlcm5lbCBwcmVkYXRlcyB0aGUgVEFTS19TVE9QUEVEIC8KLUBAIC0xNTE4LDYg KzE1MjksOSBAQCBnZXRfcGVuZGluZ19zdGF0dXMgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCitAQCAt MTUyOSw2ICsxNTQwLDkgQEAgZ2V0X3BlbmRpbmdfc3RhdHVzIChzdHJ1Y3QgbHdwX2luZm8gKmxw LAogIAkJCSAgICBnZGJfc2lnbmFsX3RvX3N0cmluZyAoc2lnbm8pKTsKICAgICAgfQogIApAQCAt NDYsNyArNDYsNyBAQCBJbmRleDogZ2RiLTcuNy9nZGIvbGludXgtbmF0LmMKICAgIHJldHVybiAw OwogIH0KICAKLUBAIC0xNjMxLDYgKzE2NDUsOCBAQCBsaW51eF9uYXRfZGV0YWNoIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzCitAQCAtMTY0Miw2ICsxNjU2LDggQEAgbGludXhfbmF0X2RldGFjaCAo c3RydWN0IHRhcmdldF9vcHMgKm9wcwogICAgICB9CiAgICBlbHNlCiAgICAgIGxpbnV4X29wcy0+ dG9fZGV0YWNoIChvcHMsIGFyZ3MsIGZyb21fdHR5KTsKQEAgLTU1LDkgKzU1LDkgQEAgSW5kZXg6 IGdkYi03LjcvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIFJlc3VtZSBMUC4gICovCi1AQCAt MTgxMyw2ICsxODI5LDE0IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpv cHMKLSAgICAgIGxpbnV4X25hdF9yZXN1bWVfY2FsbGJhY2suICAqLwotICAgbHAtPnN0b3BwZWQg PSAwOworQEAgLTE4MjQsNiArMTg0MCwxNCBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzCisgICAgICAgcmV0dXJuOworICAgICB9CiAgCiArICAvKiBBdCB0aGlzIHBv aW50LCB3ZSBhcmUgZ29pbmcgdG8gcmVzdW1lIHRoZSBpbmZlcmlvciBhbmQgaWYgd2UKICsgICAg IGhhdmUgYXR0YWNoZWQgdG8gYSBzdG9wcGVkIHByb2Nlc3MsIHdlIG5vIGxvbmdlciBzaG91bGQg bGVhdmUKQEAgLTY4LDkgKzY4LDkgQEAgSW5kZXg6IGdkYi03LjcvZ2RiL2xpbnV4LW5hdC5jCiAr ICAgIHBpZF93YXNfc3RvcHBlZCA9IDA7CiArCiAgICBpZiAocmVzdW1lX21hbnkpCi0gICAgIGl0 ZXJhdGVfb3Zlcl9sd3BzIChwdGlkLCBsaW51eF9uYXRfcmVzdW1lX2NhbGxiYWNrLCBOVUxMKTsK KyAgICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWQsIGxpbnV4X25hdF9yZXN1bWVfY2FsbGJhY2ss IGxwKTsKICAKLUBAIC0zODY0LDYgKzM4ODgsOCBAQCBsaW51eF9uYXRfbW91cm5faW5mZXJpb3Ig KHN0cnVjdCB0YXJnZXRfCitAQCAtMzg3MCw2ICszODk0LDggQEAgbGludXhfbmF0X21vdXJuX2lu ZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0XwogIAogICAgLyogTGV0IHRoZSBhcmNoLXNwZWNpZmljIG5h dGl2ZSBjb2RlIGtub3cgdGhpcyBwcm9jZXNzIGlzIGdvbmUuICAqLwogICAgbGludXhfbmF0X2Zv cmdldF9wcm9jZXNzIChwaWQpOwpAQCAtNzksMTAgKzc5LDEwIEBAIEluZGV4OiBnZGItNy43L2dk Yi9saW51eC1uYXQuYwogIH0KICAKICAvKiBDb252ZXJ0IGEgbmF0aXZlL2hvc3Qgc2lnaW5mbyBv YmplY3QsIGludG8vZnJvbSB0aGUgc2lnaW5mbyBpbiB0aGUKLUluZGV4OiBnZGItNy43L2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03Ljcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0 dGFjaC1zdG9wcGVkLmV4cAkyMDE0LTAxLTA4IDEwOjIzOjM2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAx NC0wMi0wOSAxOToxMzozMy4zMjEyMTQ5NDUgKzAxMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAxNC0w Ni0xMyAyMzowMzozNC4zNjUxNzc2MTUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMTQtMDYtMTMgMjM6 MDM6MzcuMTYyMTgwNjYwICswMjAwCiBAQCAtNjEsNyArNjEsNjUgQEAgcHJvYyBjb3JlZnVuYyB7 IHRocmVhZHR5cGUgfSB7CiAgICAgIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgogICAgICBnZGJfbG9hZCAke2JpbmZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1xdWl0LW5l dmVyLWFib3J0cy5wYXRjaCBiL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKaW5kZXgg ZjQ1YzcwNy4uM2U2MzdjOSAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0cy5w YXRjaAorKysgYi9nZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoCkBAIC01LDIzICs1LDIz IEBAIFNvbWUgb2YgdGhlIHRocmVhZHMgbWF5IG5vdCBiZSBwcm9wZXJseSBQVFJBQ0VfREVUQUNI ZWQgd2hpY2ggaHVydHMgaWYgdGhleQogc2hvdWxkIGhhdmUgYmVlbiBkZXRhY2hlZCB3aXRoIFNJ R1NUT1AgKGFzIHRoZXkgYXJlIGFjY2lkZW50YWxseSBsZWZ0IHJ1bm5pbmcKIG9uIHRoZSBkZWJ1 Z2dlciB0ZXJtaW5hdGlvbikuCiAKLUluZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv ZGVmcy5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZGVmcy5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZGVmcy5oCTIwMTMtMDgtMDIg MTY6NTg6MzEuNDUzMDE2NTczICswMjAwCi0rKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L2RlZnMuaAkyMDEzLTA4LTAyIDE2OjU4OjQxLjIyMTAzMDQxMiArMDIwMAotQEAgLTE3Nyw2ICsx NzcsNyBAQCBleHRlcm4gaW50IGNoZWNrX3F1aXRfZmxhZyAodm9pZCk7Ci0gLyogU2V0IHRoZSBx dWl0IGZsYWcuICAqLwotIGV4dGVybiB2b2lkIHNldF9xdWl0X2ZsYWcgKHZvaWQpOworLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZGVmcy5oCTIwMTQtMDYtMTMgMjM6MTA6MTguODc2 NjIzMDE4ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZGVmcy5oCTIwMTQtMDYt MTMgMjM6MTA6NTIuNDUwNjYwNTA1ICswMjAwCitAQCAtMTc0LDYgKzE3NCw3IEBAIGV4dGVybiB2 b2lkIHNldF9xdWl0X2ZsYWcgKHZvaWQpOworIC8qIEZsYWcgdGhhdCBmdW5jdGlvbiBxdWl0IHNo b3VsZCBjYWxsIHF1aXRfZm9yY2UuICAqLworIGV4dGVybiB2b2xhdGlsZSBpbnQgc3luY19xdWl0 X2ZvcmNlX3J1bjsKICAKICtleHRlcm4gaW50IHF1aXRfZmxhZ19jbGVhbnVwOwogIGV4dGVybiBp bnQgaW1tZWRpYXRlX3F1aXQ7CiAgCiAgZXh0ZXJuIHZvaWQgcXVpdCAodm9pZCk7Ci1JbmRleDog Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RvcC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5v cmlnL2dkYi90b3AuYwkyMDEzLTA4LTAyIDE2OjU4OjQxLjIyMjAzMDQxNCArMDIwMAotKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90b3AuYwkyMDEzLTA4LTAyIDE2OjU5OjA2LjMyMTA2 NjIyOCArMDIwMAotQEAgLTE0MTUsNyArMTQxNSw5IEBAIHF1aXRfZm9yY2UgKGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3RvcC5jCTIw MTQtMDYtMTMgMjM6MTA6MTUuOTEwNjE5NzE1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdG9wLmMJMjAxNC0wNi0xMyAyMzoxMDoxOC44Nzc2MjMwMjAgKzAyMDAKK0BAIC0xMzc4 LDcgKzEzNzgsOSBAQCBxdWl0X2ZvcmNlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBp ZiAoZXgucmVhc29uIDwgMCkgXAogICAgICBleGNlcHRpb25fcHJpbnQgKGdkYl9zdGRlcnIsIGV4 KQogIApAQCAtMzIsMTEgKzMyLDExIEBAIEluZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvdG9wLmMKICAKICAgIC8qIEdldCBvdXQgb2YgdGZpbmQgbW9kZSwgYW5kIGtpbGwgb3IgZGV0 YWNoIGFsbCBpbmZlcmlvcnMuICAqLwogICAgRE9fVFJZCi1JbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3V0aWxzLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi91dGls cy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdXRp bHMuYwkyMDEzLTA4LTAyIDE2OjU4OjMxLjQ1NTAxNjU3NSArMDIwMAotKysrIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi91dGlscy5jCTIwMTMtMDgtMDIgMTY6NTg6NDEuMjIzMDMwNDE1ICsw MjAwCi1AQCAtMTM2LDYgKzEzNiwxMSBAQCBpbnQgcXVpdF9mbGFnOworLS0tIGdkYi03LjcuOTAu MjAxNDA2MTMub3JpZy9nZGIvdXRpbHMuYwkyMDE0LTA2LTEzIDIzOjEwOjE4Ljg3ODYyMzAyMSAr MDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3V0aWxzLmMJMjAxNC0wNi0xMyAyMzox MDozOC4zMDc2NDQ2NTIgKzAyMDAKK0BAIC0xMjUsNiArMTI1LDExIEBAIGludCBqb2JfY29udHJv bDsKICAKICBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgCkBAIC00NSwzMCArNDUsMjAgQEAgSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi91dGlscy5jCiArCiAraW50IHF1aXRfZmxhZ19j bGVhbnVwOwogKwotICNpZm5kZWYgSEFWRV9QWVRIT04KKyAvKiBOb256ZXJvIG1lYW5zIHRoYXQg c3RyaW5ncyB3aXRoIGNoYXJhY3RlciB2YWx1ZXMgPjB4N0Ygc2hvdWxkIGJlIHByaW50ZWQKKyAg ICBhcyBvY3RhbCBlc2NhcGVzLiAgWmVybyBtZWFucyBqdXN0IHByaW50IHRoZSB2YWx1ZSAoZS5n LiBpdCdzIGFuCisgICAgaW50ZXJuYXRpb25hbCBjaGFyYWN0ZXIsIGFuZCB0aGUgdGVybWluYWwg b3Igd2luZG93IGNhbiBjb3BlLikgICovCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv ZXh0ZW5zaW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2Ri L2V4dGVuc2lvbi5jCTIwMTQtMDYtMTMgMDM6NTk6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvZXh0ZW5zaW9uLmMJMjAxNC0wNi0xMyAyMzoxMTozMi40MzQ3 MDQ4NTMgKzAyMDAKK0BAIC04MTcsNiArODE3LDkgQEAgY2hlY2tfcXVpdF9mbGFnICh2b2lkKQor ICAgaW50IGksIHJlc3VsdCA9IDA7CisgICBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdl X2RlZm4gKmV4dGxhbmc7CiAgCi0gLyogQ2xlYXIgdGhlIHF1aXQgZmxhZy4gICovCi1AQCAtMTU5 LDYgKzE2NCw5IEBAIHNldF9xdWl0X2ZsYWcgKHZvaWQpCi0gaW50Ci0gY2hlY2tfcXVpdF9mbGFn ICh2b2lkKQotIHsKICsgIGlmIChxdWl0X2ZsYWdfY2xlYW51cCkKICsgICAgcmV0dXJuIDA7CiAr Ci0gICAvKiBUaGlzIGlzIHdyaXR0ZW4gaW4gYSBwYXJ0aWN1bGFyIHdheSB0byBhdm9pZCByYWNl cy4gICovCi0gICBpZiAocXVpdF9mbGFnKQorICAgQUxMX0VOQUJMRURfRVhURU5TSU9OX0xBTkdV QUdFUyAoaSwgZXh0bGFuZykKICAgICAgewotSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9weXRob24vcHl0aG9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wOC0wMiAxNjo1ODozMS40NTYwMTY1 NzcgKzAyMDAKLSsrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHl0aG9uL3B5dGhvbi5j CTIwMTMtMDgtMDIgMTY6NTg6NDEuMjI0MDMwNDE2ICswMjAwCi1AQCAtMTkxLDYgKzE5MSw5IEBA IHNldF9xdWl0X2ZsYWcgKHZvaWQpCi0gaW50Ci0gY2hlY2tfcXVpdF9mbGFnICh2b2lkKQotIHsK LSsgIGlmIChxdWl0X2ZsYWdfY2xlYW51cCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICByZXR1cm4g UHlPU19JbnRlcnJ1cHRPY2N1cnJlZCAoKTsKLSB9Ci0gCisgICAgICAgaWYgKGV4dGxhbmctPm9w cy0+Y2hlY2tfcXVpdF9mbGFnICE9IE5VTEwpCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUt YWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1k aXNhYmxlZC5wYXRjaAppbmRleCA2OGE2YTFhLi4xZjg0OWQxIDEwMDY0NAotLS0gYS9nZGItYXJj aGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1h ZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDgtMDIgMTY6Mjk6MTYuMDY1NDAyMTE2 ICswMjAwCi0rKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2JyZWFrcG9pbnQuYwkyMDEz LTA4LTAyIDE2OjI5OjE3LjA3MzQwMzQ1NiArMDIwMAotQEAgLTE1OTYzLDYgKzE1OTYzLDUwIEBA IGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCistLS0gZ2RiLTcuNy41MC4yMDE0MDYw OS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxNC0wNi0xMyAyMDoyNDozNC41NjQ2NjcyMjUgKzAy MDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9icmVha3BvaW50LmMJMjAxNC0wNi0xMyAy MDoyNDozNS42NTA2NjgzNTEgKzAyMDAKK0BAIC0xNjM2NCw2ICsxNjM2NCw1MCBAQCBpbml0aWFs aXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQogIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqZW5hYmxlYnJlYWtsaXN0ID0gTlVMTDsKICAKICB2b2lkCkBAIC01MywxMSArNTMsMTEgQEAg SW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3BvaW50LmMKICBfaW5pdGlh bGl6ZV9icmVha3BvaW50ICh2b2lkKQogIHsKICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj OwotSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3BvaW50LmgKK0luZGV4 OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMy0wOC0wMiAx NjoyOToxNy4wNzQ0MDM0NTcgKzAyMDAKLSsrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv YnJlYWtwb2ludC5oCTIwMTMtMDgtMDIgMTY6Mjk6MzAuMjIxNDIwODk2ICswMjAwCi1AQCAtMTU1 NSw0ICsxNTU1LDcgQEAgZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9mcmVlX29iamZpbGUgKHN0cgor LS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTQtMDYtMTMg MjA6MjQ6MzQuNTY2NjY3MjI3ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvYnJl YWtwb2ludC5oCTIwMTQtMDYtMTMgMjA6MjQ6MzUuNjUxNjY4MzUyICswMjAwCitAQCAtMTU1Myw0 ICsxNTUzLDcgQEAgZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9mcmVlX29iamZpbGUgKHN0cgogIAog IGV4dGVybiBjaGFyICplcF9wYXJzZV9vcHRpb25hbF9pZl9jbGF1c2UgKGNoYXIgKiphcmcpOwog IApAQCAtNjUsMTMgKzY1LDEzIEBAIEluZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv YnJlYWtwb2ludC5oCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwog ICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9vYmpmaWxlcy5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvb2JqZmlsZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9y aWcvZ2RiL29iamZpbGVzLmMJMjAxMy0wOC0wMiAxNjoyOToxNi4wNjg0MDIxMjAgKzAyMDAKLSsr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvb2JqZmlsZXMuYwkyMDEzLTA4LTAyIDE2OjI5 OjE3LjA3NTQwMzQ1OCArMDIwMAotQEAgLTg1MSw2ICs4NTEsMTEgQEAgb2JqZmlsZV9yZWxvY2F0 ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotICAgICBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zu cy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAotIAkJCQkJCSAgICBuZXdfb2Zmc2V0cywg ZGVsdGEpOworLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDE0 LTA2LTEzIDIwOjI0OjM1LjY1MjY2ODM1MyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkv Z2RiL29iamZpbGVzLmMJMjAxNC0wNi0xMyAyMDoyNToxMC44Njc3MDQ4OTEgKzAyMDAKK0BAIC04 MjAsNiArODIwLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkK KyAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykpOworICAgICB9CiAgCiArICAvKiBGaW5hbCBjYWxs IG9mIGJyZWFrcG9pbnRfcmVfc2V0IGNhbiBrZWVwIGJyZWFrcG9pbnQgbG9jYXRpb25zIGRpc2Fi bGVkIGlmCiArICAgICB0aGVpciBhZGRyZXNzZXMgbWF0Y2guICAqLwoKZGlmZiAtLWdpdCBhL2dk Yi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApp bmRleCBkMDk5YjViLi44ZjdjZGVhIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMu cGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDI0ICsxLDI0IEBA Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03 LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMTE4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMy0wMS0xOCAyMzowNzowMy40ODgzNTgz MTUgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9nZGJ0eXBlcy5oCTIwMTMtMDEt MTggMjM6MDg6MTAuMjg2NDUxNTcwICswMTAwCi1AQCAtNDIwLDYgKzQyMCw3IEBAIGVudW0gZmll bGRfbG9jX2tpbmQKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJ MjAxNC0wNi0xMyAyMDoyMzo1NS4yMTA2MjY0MjcgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi9nZGJ0eXBlcy5oCTIwMTQtMDYtMTMgMjA6MjQ6MjYuMTU2NjU4NjIyICswMjAwCitA QCAtNDQwLDYgKzQ0MCw3IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKICAgIHsKLSAgICAgRklFTERf TE9DX0tJTkRfQklUUE9TLAkvKiBiaXRwb3MgKi8KLSAgICAgRklFTERfTE9DX0tJTkRfRU5VTVZB TCwJLyogZW51bXZhbCAqLworICAgICBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCS8qKjwgYml0cG9z ICovCisgICAgIEZJRUxEX0xPQ19LSU5EX0VOVU1WQUwsCS8qKjwgZW51bXZhbCAqLwogKyAgICAv KiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4g ICovCi0gICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkvKiBwaHlzYWRkciAqLwotICAgICBG SUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyogcGh5c25hbWUgKi8KLSAgICAgRklFTERfTE9DX0tJ TkRfRFdBUkZfQkxPQ0sJLyogZHdhcmZfYmxvY2sgKi8KLUBAIC02MTQsNiArNjE1LDcgQEAgc3Ry dWN0IG1haW5fdHlwZQotIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0YXJnZXQpIG9mIHRo ZSBzdGF0aWMgZmllbGQuCi0gCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQg bGFiZWwgb2YgdGhlIHN0YXRpYyBmaWVsZC4gICovCisgICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNB RERSLAkvKio8IHBoeXNhZGRyICovCisgICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkvKio8 IHBoeXNuYW1lICovCisgICAgIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLCS8qKjwgZHdhcmZf YmxvY2sgKi8KK0BAIC02MTcsNiArNjE4LDcgQEAgc3RydWN0IG1haW5fdHlwZQorIAkgICBmaWVs ZC4gIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQgbGFiZWwgb2YgdGhlCisgCSAg IHN0YXRpYyBmaWVsZC4gICovCiAgCiArCS8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBi eSB0aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8KICAJQ09SRV9BRERSIHBoeXNhZGRyOwogIAlj b25zdCBjaGFyICpwaHlzbmFtZTsKICAKLUBAIC0xMjM3LDYgKzEyMzksNyBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTI2Miw2ICsxMjY0LDcgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgRklFTERfRU5V TVZBTF9MVkFMKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmVudW12YWwpCiAgI2RlZmluZSBGSUVM RF9FTlVNVkFMKHRoaXNmbGQpIChGSUVMRF9FTlVNVkFMX0xWQUwgKHRoaXNmbGQpICsgMCkKICAj ZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlz bmFtZSkKQEAgLTI2LDcgKzI2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dk YnR5cGVzLmgKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzZmxkKSAoKHRoaXNm bGQpLmxvYy5waHlzYWRkcikKICAjZGVmaW5lIEZJRUxEX0RXQVJGX0JMT0NLKHRoaXNmbGQpICgo dGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2NrKQogICNkZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlz ZmxkLCBiaXRwb3MpCQkJXAotQEAgLTEyNDgsNiArMTI1MSw3IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMjczLDYgKzEyNzYsNyBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBTRVRfRklFTERfUEhZU05B TUUodGhpc2ZsZCwgbmFtZSkJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklF TERfTE9DX0tJTkRfUEhZU05BTUUsCQlcCiAgICAgRklFTERfU1RBVElDX1BIWVNOQU1FICh0aGlz ZmxkKSA9IChuYW1lKSkKQEAgLTM0LDcgKzM0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTQUREUih0aGlzZmxkLCBh ZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9Q SFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRoaXNmbGQpID0gKGFkZHIp KQotQEAgLTEyNjQsNiArMTI2OCw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5 cGUgKHN0cnUKK0BAIC0xMjg5LDYgKzEyOTMsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlzdHlwZSwgbikg RklFTERfQklUUE9TIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJ RUxEX0VOVU1WQUwodGhpc3R5cGUsIG4pIEZJRUxEX0VOVU1WQUwgKFRZUEVfRklFTEQgKHRoaXN0 eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXN0eXBlLCBu KSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKQEAgLTQy LDExICs0MiwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAog ICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NU QVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9G SUVMRF9EV0FSRl9CTE9DSyh0aGlzdHlwZSwgbikgRklFTERfRFdBUkZfQkxPQ0sgKFRZUEVfRklF TEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlw ZSwgbikgRklFTERfQVJUSUZJQ0lBTChUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQotSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LWxhbmcuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2 MDkvZ2RiL2p2LWxhbmcuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTggMjM6MDc6MDMuNDg4MzU4MzE1ICswMTAwCi0rKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTggMjM6MDg6MTAuMjg2 NDUxNTcwICswMTAwCi1AQCAtNDMwLDcgKzQzMCw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2p2LWxh bmcuYwkyMDE0LTA2LTEzIDIwOjIzOjU1LjIxMTYyNjQyOCArMDIwMAorKysrIGdkYi03LjcuNTAu MjAxNDA2MDkvZ2RiL2p2LWxhbmcuYwkyMDE0LTA2LTEzIDIwOjIzOjU2LjI3ODYyNzUzNCArMDIw MAorQEAgLTQyNyw3ICs0MjcsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFy Y2ggKmdkCiAgCiAgICBmaWVsZHMgPSBOVUxMOwogICAgbmZpZWxkcy0tOwkJCS8qIEZpcnN0IHNl dCB1cCBkdW1teSAiY2xhc3MiIGZpZWxkLiAgKi8KQEAgLTU2LDcgKzU2LDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LWxhbmcuYwogICAgVFlQRV9GSUVMRF9OQU1FICh0eXBl LCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIG5maWVsZHMp ID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVMRF9QUklWQVRFICh0eXBlLCBu ZmllbGRzKTsKLUBAIC00NzgsNyArNDc5LDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVj dCBnZGJhcmNoICpnZAorQEAgLTQ3NSw3ICs0NzYsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAo c3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVDVEVEICh0eXBlLCBp KTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUNDX1NUQVRJQyAqLwpA QCAtNjYsMTEgKzY2LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9qdi1sYW5n LmMKICAgICAgICBlbHNlCiAgCVNFVF9GSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHR5cGUsIGkp LCA4ICogYm9mZnNldCk7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkvKiBGSUVMRF9V TlJFU09MVkVEX0ZMQUcgKi8KLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92YWx1ZS5j CitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdmFsdWUuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTAxLTE4IDIzOjA3OjAz LjQ5MDM1ODMxOSArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHVlLmMJMjAx My0wMS0xOCAyMzowODoxMC4yODc0NTE1NDMgKzAxMDAKLUBAIC0yNjI0LDcgKzI2MjQsOCBAQCB2 YWx1ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCistLS0gZ2RiLTcuNy41MC4y MDE0MDYwOS5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTMgMjA6MjM6NTUuMjEyNjI2NDI5ICsw MjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdmFsdWUuYwkyMDE0LTA2LTEzIDIwOjIz OjU2LjI3OTYyNzUzNSArMDIwMAorQEAgLTI3ODMsNyArMjc4Myw4IEBAIHZhbHVlX3N0YXRpY19m aWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgICAgewogICAgICBjYXNlIEZJRUxEX0xPQ19L SU5EX1BIWVNBRERSOgogICAgICAgIHJldHZhbCA9IHZhbHVlX2F0X2xhenkgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgZmllbGRubyksCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci12bGEtdGVzdHMu cGF0Y2ggYi9nZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xZjg4ODZkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWFyY2hlci12bGEt dGVzdHMucGF0Y2gKQEAgLTAsMCArMSwzNDg4IEBACitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2Fy cmF5LmV4cAkyMDE0LTA2LTEzIDAzOjU5OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAJMjAxNC0w Ni0xNiAyMzozMDozMC4xMDc5NDA0ODMgKzAyMDAKK0BAIC01Niw1ICs1NiwxMSBAQCBnZGJfdGVz dF9tdWx0aXBsZSAiJHRlc3QiICIkdGVzdCIgeworICAgICAgICAgIyBhcmUuICBPYnNlcnZlZCB3 aXRoIChGU0YgR05VIEFkYSA0LjUuMyAyMDExMDEyNCkuCisgICAgICAgICB4ZmFpbCAkdGVzdAor ICAgICB9CisrICAgIC1yZSAiPSBcXChcXClcW1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7CisrCSMg YXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIHJlc29sdmVzIGl0IGFzIGEgZHluYW1pYyB0eXBlIHJl c29sdmVkIGFzIGFuCisrCSMgZW1wdHkgYXJyYXkgWzAuLi0xXS4KKysJIyBEV19BVF91cHBlcl9i b3VuZCA6IChEV19PUF9mYnJlZzogLTQ4OyBEV19PUF9kZXJlZikKKysgICAgICAgIHhmYWlsICR0 ZXN0CisrICAgIH0KKyB9CisgCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9v LlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMDg5NDA0ODQgKzAyMDAKK0BAIC0wLDAgKzEsNDU3IEBA CisrCS5maWxlCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKKysJLnNlY3Rpb24JLmRlYnVnX2FiYnJl diwiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2FiYnJldjA6CisrCS5zZWN0aW9uCS5kZWJ1Z19pbmZv LCIiLEBwcm9nYml0cworKy5MZGVidWdfaW5mbzA6CisrCS5zZWN0aW9uCS5kZWJ1Z19saW5lLCIi LEBwcm9nYml0cworKy5MZGVidWdfbGluZTA6CisrCS50ZXh0CisrLkx0ZXh0MDoKKysuZ2xvYmwg Zm9vCisrCS50eXBlCWZvbywgQGZ1bmN0aW9uCisrZm9vOgorKy5MRkIyOgorKwkuZmlsZSAxICJ4 ODZfNjQtdmxhLXBvaW50ZXIuYyIKKysJLmxvYyAxIDIyIDAKKysJcHVzaHEJJXJicAorKy5MQ0ZJ MDoKKysJbW92cQklcnNwLCAlcmJwCisrLkxDRkkxOgorKwlzdWJxCSQ2NCwgJXJzcAorKy5MQ0ZJ MjoKKysJbW92bAklZWRpLCAtMzYoJXJicCkKKysJLmxvYyAxIDIyIDAKKysJbW92cQklcnNwLCAl cmF4CisrCW1vdnEJJXJheCwgLTQ4KCVyYnApCisrCS5sb2MgMSAyMyAwCisrCW1vdmwJLTM2KCVy YnApLCAlZWR4CisrCW1vdnNscQklZWR4LCVyYXgKKysJc3VicQkkMSwgJXJheAorKwltb3ZxCSVy YXgsIC0yNCglcmJwKQorKwkubG9jIDEgMjQgMAorKwltb3ZzbHEJJWVkeCwlcmF4CisrCWFkZHEJ JDE1LCAlcmF4CisrCWFkZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkkNCwg JXJheAorKwlzdWJxCSVyYXgsICVyc3AKKysJbW92cQklcnNwLCAtNTYoJXJicCkKKysJbW92cQkt NTYoJXJicCksICVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlzYWxx CSQ0LCAlcmF4CisrCW1vdnEJJXJheCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnApLCAlcmF4 CisrCW1vdnEJJXJheCwgLTE2KCVyYnApCisrCS5sb2MgMSAyNyAwCisrCW1vdmwJJDAsIC00KCVy YnApCisrCWptcAkuTDIKKysuTDM6CisrCS5sb2MgMSAyOCAwCisrCW1vdmwJLTQoJXJicCksICVl c2kKKysJbW92bAktNCglcmJwKSwgJWVheAorKwltb3ZsCSVlYXgsICVlY3gKKysJbW92cQktMTYo JXJicCksICVyZHgKKysJbW92c2xxCSVlc2ksJXJheAorKwltb3ZiCSVjbCwgKCVyZHgsJXJheCkK KysJLmxvYyAxIDI3IDAKKysJYWRkbAkkMSwgLTQoJXJicCkKKysuTDI6CisrCW1vdmwJLTQoJXJi cCksICVlYXgKKysJY21wbAktMzYoJXJicCksICVlYXgKKysJamwJLkwzCisrCS5sb2MgMSAzMCAw CisrCS5nbG9ibAlicmVha19oZXJlCisrYnJlYWtfaGVyZToKKysJbW92cQktMTYoJXJicCksICVy YXgKKysJbW92YgkkMCwgKCVyYXgpCisrCW1vdnEJLTQ4KCVyYnApLCAlcnNwCisrCS5sb2MgMSAz MSAwCisrCWxlYXZlCisrCXJldAorKy5MRkUyOgorKwkuc2l6ZQlmb28sIC4tZm9vCisrCS5zZWN0 aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMKKysuTGZyYW1lMDoKKysJLmxvbmcJLkxFQ0lF MC0uTFNDSUUwCisrLkxTQ0lFMDoKKysJLmxvbmcJMHhmZmZmZmZmZgorKwkuYnl0ZQkweDEKKysJ LnN0cmluZwkiIgorKwkudWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgxMAor KwkuYnl0ZQkweGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDkw CisrCS51bGViMTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTA6CisrLkxTRkRFMDoKKysJLmxv bmcJLkxFRkRFMC0uTEFTRkRFMAorKy5MQVNGREUwOgorKwkubG9uZwkuTGZyYW1lMAorKwkucXVh ZAkuTEZCMgorKwkucXVhZAkuTEZFMi0uTEZCMgorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkw LS5MRkIyCisrCS5ieXRlCTB4ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJLnVs ZWIxMjggMHgyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRlCTB4 ZAorKwkudWxlYjEyOCAweDYKKysJLmFsaWduIDgKKysuTEVGREUwOgorKwkuc2VjdGlvbgkuZWhf ZnJhbWUsImEiLEBwcm9nYml0cworKy5MZnJhbWUxOgorKwkubG9uZwkuTEVDSUUxLS5MU0NJRTEK KysuTFNDSUUxOgorKwkubG9uZwkweDAKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJInpSIgorKwku dWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgxMAorKwkudWxlYjEyOCAweDEK KysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4YworKwkudWxlYjEyOCAweDcKKysJLnVsZWIxMjggMHg4 CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5hbGlnbiA4CisrLkxFQ0lFMToKKysu TFNGREUxOgorKwkubG9uZwkuTEVGREUxLS5MQVNGREUxCisrLkxBU0ZERTE6CisrCS5sb25nCS5M QVNGREUxLS5MZnJhbWUxCisrCS5sb25nCS5MRkIyCisrCS5sb25nCS5MRkUyLS5MRkIyCisrCS51 bGViMTI4IDB4MAorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkwLS5MRkIyCisrCS5ieXRlCTB4 ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJLnVsZWIxMjggMHgyCisrCS5ieXRl CTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRlCTB4ZAorKwkudWxlYjEyOCAweDYK KysJLmFsaWduIDgKKysuTEVGREUxOgorKwkudGV4dAorKy5MZXRleHQwOgorKwkuc2VjdGlvbgku ZGVidWdfbG9jLCIiLEBwcm9nYml0cworKy5MZGVidWdfbG9jMDoKKysuTExTVDA6CisrCS5xdWFk CS5MRkIyLS5MdGV4dDAKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnZhbHVlCTB4MgorKwku Ynl0ZQkweDc3CisrCS5zbGViMTI4IDgKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnF1YWQJ LkxDRkkxLS5MdGV4dDAKKysJLnZhbHVlCTB4MgorKwkuYnl0ZQkweDc3CisrCS5zbGViMTI4IDE2 CisrCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCisrCS5xdWFkCS5MRkUyLS5MdGV4dDAKKysJLnZhbHVl CTB4MgorKwkuYnl0ZQkweDc2CisrCS5zbGViMTI4IDE2CisrCS5xdWFkCTB4MAorKwkucXVhZAkw eDAKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8KKysuTGRlYnVnX3JlbGF0aXZlOgorKwkubG9uZwku TGRlYnVnX2VuZCAtIC5MZGVidWdfc3RhcnQKKysuTGRlYnVnX3N0YXJ0OgorKwkudmFsdWUJMHgy CisrCS5sb25nCS5MZGVidWdfYWJicmV2MAorKwkuYnl0ZQkweDgKKysJLnVsZWIxMjggMHgxCisr CS5sb25nCS5MQVNGMgorKwkuYnl0ZQkweDEKKysJLmxvbmcJLkxBU0YzCisrCS5sb25nCS5MQVNG NAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQwCisrCS5sb25nCS5MZGVidWdfbGlu ZTAKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJmb28iCisrCS5ieXRl CTB4MQorKwkuYnl0ZQkweDE2CisrCS5ieXRlCTB4MQorKwkucXVhZAkuTEZCMgorKwkucXVhZAku TEZFMgorKwkubG9uZwkuTExTVDAKKysJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRp dmUKKysJLnVsZWIxMjggMHgzCisrCS5sb25nCS5MQVNGNQorKwkuYnl0ZQkweDEKKysJLmJ5dGUJ MHgxNQorKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQorKwkuYnl0ZQkweDIK KysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtNTIKKysuTHRhZ19wb2ludGVyOgorKwkudWxlYjEy OCAweDQKKysJLmJ5dGUJMHg4CS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkubG9uZwkuTHRhZ19h cnJheV90eXBlIC0gLmRlYnVnX2luZm8JLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOCAweDUJ LyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3ZhcmlhYmxlKSAqLworKwkubG9uZwkuTEFTRjAK KysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTgKKysjaWYgMQorKwkubG9uZwkuTHRhZ19wb2ludGVy IC0gLmRlYnVnX2luZm8KKysjZWxzZQorKwkvKiBEZWJ1Z2dpbmcgb25seTogU2tpcCB0aGUgdHlw ZWRlZiBpbmRpcmVjdGlvbi4gICovCisrCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdf aW5mbworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0 ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC0zMgorKyNpZiAwCisr CS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNlbHNlCisrCS5ieXRlCTB4OTYJLyogRFdf T1Bfbm9wICovCisrI2VuZGlmCisrCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTog ZW5kICovCisrCS51bGViMTI4IDB4NgorKwkuc3RyaW5nCSJpIgorKwkuYnl0ZQkweDEKKysJLmJ5 dGUJMHgxOQorKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQorKwkuYnl0ZQkw eDIKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtMjAKKysJLmJ5dGUJMHgwCisrLkx0eXBlX2lu dDoKKysJLnVsZWIxMjggMHg3CisrCS5ieXRlCTB4NAorKwkuYnl0ZQkweDUKKysJLnN0cmluZwki aW50IgorKy5MdGFnX2FycmF5X3R5cGU6CisrCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVy OiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8KKysJLmxvbmcJLkx0eXBlX2NoYXIgLSAuTGRlYnVn X3JlbGF0aXZlCisrCS5sb25nCS5MdHlwZV91bG9uZyAtIC5MZGVidWdfcmVsYXRpdmUJLyogRFdf QVRfc2libGluZzogRFdfRk9STV9yZWY0ICovCisrMToJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjog RFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCisrCS5ieXRlCTJmIC0gM2YJLyogbGVuZ3RoICovCisr MzoKKysJLmJ5dGUJMHg5NwkvKiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzICovCisrI2lmIDEK KysJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCisrI2Vsc2UKKysJLmJ5dGUJMHg5NgkvKiBE V19PUF9ub3AgKi8KKysjZW5kaWYKKysyOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JN X2Jsb2NrMTogZW5kICovCisrCS51bGViMTI4IDB4OQorKwkubG9uZwkuTHR5cGVfY2hhciAtIC5M ZGVidWdfcmVsYXRpdmUJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCisrCS5ieXRlCTB4 MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC00MAorKwkuYnl0ZQkweDYKKysJLmJ5dGUJMHgw CisrLkx0eXBlX3Vsb25nOgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4 NworKy5MdHlwZV9jaGFyOgorKwkudWxlYjEyOCAweGIKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4 NgorKwkubG9uZwkuTEFTRjEKKysJLmJ5dGUJMHgwCisrLkxkZWJ1Z19lbmQ6CisrCS5zZWN0aW9u CS5kZWJ1Z19hYmJyZXYKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTEKKysJLmJ5dGUJ MHgxCisrCS51bGViMTI4IDB4MjUKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4MTMKKysJ LnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjgg MHgxYgorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMQorKwkudWxlYjEyOCAweDEKKysJ LnVsZWIxMjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMAorKwkudWxlYjEy OCAweDYKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDIKKysJLnVsZWIx MjggMHgyZQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHgzZgorKwkudWxlYjEyOCAweGMKKysJ LnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4 IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDI3Cisr CS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEy OCAweDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDQwCisrCS51bGViMTI4IDB4Ngor KwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMworKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgw CisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDUKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4 IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJ LnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEy OCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweDQJLyogLkx0YWdfcG9pbnRlciBhYmJyZXYgKi8KKysJLnVs ZWIxMjggMHgwZgkvKiBEV19UQUdfcG9pbnRlcl90eXBlICovCisrCS5ieXRlCTB4MAorKwkudWxl YjEyOCAweDBiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4 MTMKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDUKKysJLnVsZWIxMjgg MHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxl YjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4 YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVsZWIxMjggMHgyCisrCS51 bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NgorKwku dWxlYjEyOCAweDM0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHg4 CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVs ZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAw eDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHg3CisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxl YjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgz CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8KKysJLnVsZWIxMjgg MHgxCisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDQ5CS8qIERXX0FUX3R5cGUgKi8KKysJLnVs ZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjggMHgxCS8qIERXX0FUX3Np YmxpbmcgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgg MHg1MAkvKiBEV19BVF9kYXRhX2xvY2F0aW9uICovCisrCS51bGViMTI4IDB4YQkvKiBEV19GT1JN X2Jsb2NrMSAqLworKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4OQorKwku dWxlYjEyOCAweDIxCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDQ5CS8qIERXX0FUX3R5cGUg Ki8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjggMHgyZgor KwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGEK KysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4 IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkuYnl0ZQkweDAKKysJLmJ5 dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjgg MHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLmJ5dGUJMHgwCisrCS5ieXRl CTB4MAorKwkuYnl0ZQkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVzLCIiLEBwcm9nYml0 cworKwkubG9uZwkweDE2CisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19pbmZvMAorKwku bG9uZwkweGE4CisrCS5sb25nCTB4MmQKKysJLnN0cmluZwkiZm9vIgorKwkubG9uZwkweDAKKysJ LnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCisrCS5sb25nCTB4MmMKKysJLnZh bHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5ieXRlCTB4OAorKwkuYnl0ZQkweDAK KysJLnZhbHVlCTB4MAorKwkudmFsdWUJMHgwCisrCS5xdWFkCS5MdGV4dDAKKysJLnF1YWQJLkxl dGV4dDAtLkx0ZXh0MAorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisrCS5zZWN0aW9uCS5kZWJ1 Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQorKy5MQVNGMDoKKysJLnN0cmluZwkiYXJyYXkiCisrLkxB U0Y1OgorKwkuc3RyaW5nCSJzaXplIgorKy5MQVNGMzoKKysJLnN0cmluZwkieDg2XzY0LXZsYS1w b2ludGVyLmMiCisrLkxBU0Y2OgorKwkuc3RyaW5nCSJhcnJheV90IgorKy5MQVNGMToKKysJLnN0 cmluZwkiY2hhciIKKysuTEFTRjQ6CisrCS5zdHJpbmcJImdkYi5hcmNoIgorKy5MQVNGMjoKKysJ LnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCisrCS5pZGVu dAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKKysJLnNlY3Rp b24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXIuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwODk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSw0 MyBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CisrCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpZiAwCisr Cisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisreworKyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6 ZV07CisrICBhcnJheV90IGFycmF5OworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwg c2l6ZTsgaSsrKQorKyAgICBhcnJheVtpXSA9IGk7CisrCisrICBhcnJheVswXSA9IDA7CS8qIGJy ZWFrLWhlcmUgKi8KKyt9CisrCisrI2Vsc2UKKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysg IGZvbyAoMjYpOworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjEw ODk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSw2NiBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKworK2lmICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKKysgICAgdmVyYm9zZSAi U2tpcHBpbmcgb3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIHRlc3QgbWFkZSBv bmx5IGZvciB4ODZfNjQuIgorKyAgICByZXR1cm4KKyt9CisrCisrc2V0IHRlc3RmaWxlIHg4Nl82 NC12bGEtcG9pbnRlcgorK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCisrc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KKytzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 LWZvby5vCisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNt ZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0geworKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKytp ZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9i amZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEK Kyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50b19tYWluXSB7 CisrICAgIHVudGVzdGVkIHg4Nl82NC12bGEtcG9pbnRlcgorKyAgICByZXR1cm4gLTEKKyt9Cisr CisrZ2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImJyZWFrX2hlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBj aGFyIFxcKFxcKlxcKVxcXFsyNlxcXF0iICJmaXJzdDogd2hhdGlzIGFycmF5IgorK2dkYl90ZXN0 ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFsyNlxcXF0iICJmaXJzdDog cHR5cGUgYXJyYXkiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hhciBc XFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgImZpcnN0OiB3aGF0aXMgKmFycmF5IgorK2dkYl90ZXN0 ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgImZp cnN0OiBwdHlwZSAqYXJyYXkiCisrCisrZ2RiX3Rlc3QgInAgKCphcnJheSlcWzFcXSIgIlxcJFxb MC05XF0gPSAxICdcXFxcMDAxJyIKKytnZGJfdGVzdCAicCAoKmFycmF5KVxbMlxdIiAiXFwkXFsw LTlcXSA9IDIgJ1xcXFwwMDInIgorK2dkYl90ZXN0ICJwICgqYXJyYXkpXFszXF0iICJcXCRcWzAt OVxdID0gMyAnXFxcXDAwMyciCisrZ2RiX3Rlc3QgInAgKCphcnJheSlcWzRcXSIgIlxcJFxbMC05 XF0gPSA0ICdcXFxcMDA0JyIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtf aGVyZSIKKysKKytnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwp XFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlzIGFycmF5IgorK2dkYl90ZXN0ICJwdHlwZSBhcnJh eSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIGFycmF5 IgorKworK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxl IGxlbmd0aFxcXF0iICJzZWNvbmQ6IHdoYXRpcyAqYXJyYXkiCisrZ2RiX3Rlc3QgInB0eXBlICph cnJheSIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZSBsZW5ndGhcXFxdIiAic2Vjb25kOiBwdHlw ZSAqYXJyYXkiCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMJMjAxNC0w Ni0xNiAyMzozMDozMC4xMDg5NDA0ODQgKzAyMDAKK0BAIC0wLDAgKzEsNDU1IEBACisrCS5maWxl CSJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKKysJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJv Z2JpdHMKKysuTGRlYnVnX2FiYnJldjA6CisrCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9n Yml0cworKy5MZGVidWdfaW5mbzA6CisrCS5zZWN0aW9uCS5kZWJ1Z19saW5lLCIiLEBwcm9nYml0 cworKy5MZGVidWdfbGluZTA6CisrCS50ZXh0CisrLkx0ZXh0MDoKKysuZ2xvYmwgZm9vCisrCS50 eXBlCWZvbywgQGZ1bmN0aW9uCisrZm9vOgorKy5MRkIyOgorKwkuZmlsZSAxICJ4ODZfNjQtdmxh LXR5cGVkZWYuYyIKKysJLmxvYyAxIDIyIDAKKysJcHVzaHEJJXJicAorKy5MQ0ZJMDoKKysJbW92 cQklcnNwLCAlcmJwCisrLkxDRkkxOgorKwlzdWJxCSQ2NCwgJXJzcAorKy5MQ0ZJMjoKKysJbW92 bAklZWRpLCAtMzYoJXJicCkKKysJLmxvYyAxIDIyIDAKKysJbW92cQklcnNwLCAlcmF4CisrCW1v dnEJJXJheCwgLTQ4KCVyYnApCisrCS5sb2MgMSAyMyAwCisrCW1vdmwJLTM2KCVyYnApLCAlZWR4 CisrCW1vdnNscQklZWR4LCVyYXgKKysJc3VicQkkMSwgJXJheAorKwltb3ZxCSVyYXgsIC0yNCgl cmJwKQorKwkubG9jIDEgMjQgMAorKwltb3ZzbHEJJWVkeCwlcmF4CisrCWFkZHEJJDE1LCAlcmF4 CisrCWFkZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkkNCwgJXJheAorKwlz dWJxCSVyYXgsICVyc3AKKysJbW92cQklcnNwLCAtNTYoJXJicCkKKysJbW92cQktNTYoJXJicCks ICVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4 CisrCW1vdnEJJXJheCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnApLCAlcmF4CisrCW1vdnEJ JXJheCwgLTE2KCVyYnApCisrCS5sb2MgMSAyNyAwCisrCW1vdmwJJDAsIC00KCVyYnApCisrCWpt cAkuTDIKKysuTDM6CisrCS5sb2MgMSAyOCAwCisrCW1vdmwJLTQoJXJicCksICVlc2kKKysJbW92 bAktNCglcmJwKSwgJWVheAorKwltb3ZsCSVlYXgsICVlY3gKKysJbW92cQktMTYoJXJicCksICVy ZHgKKysJbW92c2xxCSVlc2ksJXJheAorKwltb3ZiCSVjbCwgKCVyZHgsJXJheCkKKysJLmxvYyAx IDI3IDAKKysJYWRkbAkkMSwgLTQoJXJicCkKKysuTDI6CisrCW1vdmwJLTQoJXJicCksICVlYXgK KysJY21wbAktMzYoJXJicCksICVlYXgKKysJamwJLkwzCisrCS5sb2MgMSAzMCAwCisrCS5nbG9i bAlicmVha19oZXJlCisrYnJlYWtfaGVyZToKKysJbW92cQktMTYoJXJicCksICVyYXgKKysJbW92 YgkkMCwgKCVyYXgpCisrCW1vdnEJLTQ4KCVyYnApLCAlcnNwCisrCS5sb2MgMSAzMSAwCisrCWxl YXZlCisrCXJldAorKy5MRkUyOgorKwkuc2l6ZQlmb28sIC4tZm9vCisrCS5zZWN0aW9uCS5kZWJ1 Z19mcmFtZSwiIixAcHJvZ2JpdHMKKysuTGZyYW1lMDoKKysJLmxvbmcJLkxFQ0lFMC0uTFNDSUUw CisrLkxTQ0lFMDoKKysJLmxvbmcJMHhmZmZmZmZmZgorKwkuYnl0ZQkweDEKKysJLnN0cmluZwki IgorKwkudWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgxMAorKwkuYnl0ZQkw eGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDkwCisrCS51bGVi MTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTA6CisrLkxTRkRFMDoKKysJLmxvbmcJLkxFRkRF MC0uTEFTRkRFMAorKy5MQVNGREUwOgorKwkubG9uZwkuTGZyYW1lMAorKwkucXVhZAkuTEZCMgor KwkucXVhZAkuTEZFMi0uTEZCMgorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkwLS5MRkIyCisr CS5ieXRlCTB4ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJLnVsZWIxMjggMHgy CisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRlCTB4ZAorKwkudWxl YjEyOCAweDYKKysJLmFsaWduIDgKKysuTEVGREUwOgorKwkuc2VjdGlvbgkuZWhfZnJhbWUsImEi LEBwcm9nYml0cworKy5MZnJhbWUxOgorKwkubG9uZwkuTEVDSUUxLS5MU0NJRTEKKysuTFNDSUUx OgorKwkubG9uZwkweDAKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJInpSIgorKwkudWxlYjEyOCAw eDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgxMAorKwkudWxlYjEyOCAweDEKKysJLmJ5dGUJ MHgzCisrCS5ieXRlCTB4YworKwkudWxlYjEyOCAweDcKKysJLnVsZWIxMjggMHg4CisrCS5ieXRl CTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5hbGlnbiA4CisrLkxFQ0lFMToKKysuTFNGREUxOgor KwkubG9uZwkuTEVGREUxLS5MQVNGREUxCisrLkxBU0ZERTE6CisrCS5sb25nCS5MQVNGREUxLS5M ZnJhbWUxCisrCS5sb25nCS5MRkIyCisrCS5sb25nCS5MRkUyLS5MRkIyCisrCS51bGViMTI4IDB4 MAorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkwLS5MRkIyCisrCS5ieXRlCTB4ZQorKwkudWxl YjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4NAorKwku bG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRlCTB4ZAorKwkudWxlYjEyOCAweDYKKysJLmFsaWdu IDgKKysuTEVGREUxOgorKwkudGV4dAorKy5MZXRleHQwOgorKwkuc2VjdGlvbgkuZGVidWdfbG9j LCIiLEBwcm9nYml0cworKy5MZGVidWdfbG9jMDoKKysuTExTVDA6CisrCS5xdWFkCS5MRkIyLS5M dGV4dDAKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnZhbHVlCTB4MgorKwkuYnl0ZQkweDc3 CisrCS5zbGViMTI4IDgKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnF1YWQJLkxDRkkxLS5M dGV4dDAKKysJLnZhbHVlCTB4MgorKwkuYnl0ZQkweDc3CisrCS5zbGViMTI4IDE2CisrCS5xdWFk CS5MQ0ZJMS0uTHRleHQwCisrCS5xdWFkCS5MRkUyLS5MdGV4dDAKKysJLnZhbHVlCTB4MgorKwku Ynl0ZQkweDc2CisrCS5zbGViMTI4IDE2CisrCS5xdWFkCTB4MAorKwkucXVhZAkweDAKKysJLnNl Y3Rpb24JLmRlYnVnX2luZm8KKysJLmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRlYnVnX3N0YXJ0Cisr LkxkZWJ1Z19zdGFydDoKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2FiYnJldjAKKysJ LmJ5dGUJMHg4CisrCS51bGViMTI4IDB4MQorKwkubG9uZwkuTEFTRjIKKysJLmJ5dGUJMHgxCisr CS5sb25nCS5MQVNGMworKwkubG9uZwkuTEFTRjQKKysJLnF1YWQJLkx0ZXh0MAorKwkucXVhZAku TGV0ZXh0MAorKwkubG9uZwkuTGRlYnVnX2xpbmUwCisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkw eDEKKysJLnN0cmluZwkiZm9vIgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHgxNgorKwkuYnl0ZQkw eDEKKysJLnF1YWQJLkxGQjIKKysJLnF1YWQJLkxGRTIKKysJLmxvbmcJLkxMU1QwCisrCS5sb25n CTB4ODMKKysJLnVsZWIxMjggMHgzCisrCS5sb25nCS5MQVNGNQorKwkuYnl0ZQkweDEKKysJLmJ5 dGUJMHgxNQorKwkubG9uZwkweDgzCisrCS5ieXRlCTB4MgorKwkuYnl0ZQkweDkxCisrCS5zbGVi MTI4IC01MgorKy5MdGFnX3R5cGVkZWY6CisrCS51bGViMTI4IDB4NAorKwkubG9uZwkuTEFTRjYK KysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTcKKysJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5k ZWJ1Z19pbmZvCisrCS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1IChEV19UQUdfdmFy aWFibGUpICovCisrCS5sb25nCS5MQVNGMAorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHgxOAorKyNp ZiAxCisrCS5sb25nCS5MdGFnX3R5cGVkZWYgLSAuZGVidWdfaW5mbworKyNlbHNlCisrCS8qIERl YnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAgKi8KKysJLmxvbmcJ Lkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCisrI2VuZGlmCisrCS8qIERXX0FUX2xvY2F0 aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KKysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4OTEK KysJLnNsZWIxMjggLTMyCisrI2lmIDAKKysJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCisr I2Vsc2UKKysJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KKysjZW5kaWYKKysJLyogRFdfQVRf bG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVsZWIxMjggMHg2CisrCS5zdHJp bmcJImkiCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE5CisrCS5sb25nCTB4ODMKKysJLmJ5dGUJ MHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTIwCisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDcKKysJLmJ5dGUJMHg0CisrCS5ieXRlCTB4NQorKwkuc3RyaW5nCSJpbnQiCisrLkx0YWdf YXJyYXlfdHlwZToKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19h cnJheV90eXBlKSAqLworKwkubG9uZwkweGEwICsgKDJmIC0gMWYpCS8qIERXX0FUX3R5cGU6IERX X0ZPUk1fcmVmNCAqLworKwkubG9uZwkweDlkICsgKDJmIC0gMWYpCS8qIERXX0FUX3NpYmxpbmc6 IERXX0ZPUk1fcmVmNCAqLworKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxv Y2sxOiBzdGFydCAqLworKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLworKzM6CisrCS5ieXRl CTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLworKwkuYnl0ZQkweDYJLyogRFdf T1BfZGVyZWYgKi8KKysyOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTog ZW5kICovCisrCS51bGViMTI4IDB4OQorKwkubG9uZwkweDlkICsgKDJiIC0gMWIpCS8qIERXX0FU X3R5cGU6IERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xl YjEyOCAtNDAKKysJLmJ5dGUJMHg2CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGEKKysJLmJ5 dGUJMHg4CisrCS5ieXRlCTB4NworKwkudWxlYjEyOCAweGIKKysJLmJ5dGUJMHgxCisrCS5ieXRl CTB4NgorKwkubG9uZwkuTEFTRjEKKysJLmJ5dGUJMHgwCisrLkxkZWJ1Z19lbmQ6CisrCS5zZWN0 aW9uCS5kZWJ1Z19hYmJyZXYKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTEKKysJLmJ5 dGUJMHgxCisrCS51bGViMTI4IDB4MjUKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4MTMK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIx MjggMHgxYgorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMQorKwkudWxlYjEyOCAweDEK KysJLnVsZWIxMjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMAorKwkudWxl YjEyOCAweDYKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDIKKysJLnVs ZWIxMjggMHgyZQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHgzZgorKwkudWxlYjEyOCAweGMK KysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkudWxlYjEyOCAweDNhCisrCS51bGVi MTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDI3 CisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxl YjEyOCAweDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDQwCisrCS51bGViMTI4IDB4 NgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMworKwkuYnl0ZQkweDAKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDUKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIK KysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxl YjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisr CS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDQKKysJLnVsZWIxMjggMHgxNgorKwkuYnl0ZQkweDAK KysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGVi MTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5 CisrCS51bGViMTI4IDB4MTMKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAw eDUKKysJLnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGVi MTI4IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNi CisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVs ZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51 bGViMTI4IDB4NgorKwkudWxlYjEyOCAweDM0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMK KysJLnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGVi MTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgx MworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkw eDAKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIK KysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgw CisrCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkg Ki8KKysJLnVsZWIxMjggMHgxCisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDQ5CS8qIERXX0FU X3R5cGUgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgg MHgxCS8qIERXX0FUX3NpYmxpbmcgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQg Ki8KKysJLnVsZWIxMjggMHg1MAkvKiBEV19BVF9kYXRhX2xvY2F0aW9uICovCisrCS51bGViMTI4 IDB4YQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51 bGViMTI4IDB4OQorKwkudWxlYjEyOCAweDIxCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDQ5 CS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJ LnVsZWIxMjggMHgyZgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAor KwkudWxlYjEyOCAweGEKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHhiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwku Ynl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDI0Cisr CS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4 M2UKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLmJ5 dGUJMHgwCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3B1Ym5h bWVzLCIiLEBwcm9nYml0cworKwkubG9uZwkweDE2CisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxk ZWJ1Z19pbmZvMAorKwkubG9uZwkweGE4CisrCS5sb25nCTB4MmQKKysJLnN0cmluZwkiZm9vIgor KwkubG9uZwkweDAKKysJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCisrCS5s b25nCTB4MmMKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5ieXRlCTB4 OAorKwkuYnl0ZQkweDAKKysJLnZhbHVlCTB4MAorKwkudmFsdWUJMHgwCisrCS5xdWFkCS5MdGV4 dDAKKysJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisr CS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQorKy5MQVNGMDoKKysJLnN0cmlu ZwkiYXJyYXkiCisrLkxBU0Y1OgorKwkuc3RyaW5nCSJzaXplIgorKy5MQVNGMzoKKysJLnN0cmlu ZwkieDg2XzY0LXZsYS10eXBlZGVmLmMiCisrLkxBU0Y2OgorKwkuc3RyaW5nCSJhcnJheV90Igor Ky5MQVNGMToKKysJLnN0cmluZwkiY2hhciIKKysuTEFTRjQ6CisrCS5zdHJpbmcJImdkYi5hcmNo IgorKy5MQVNGMjoKKysJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4z LjItNykiCisrCS5pZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMu Mi03KSIKKysJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cworSW5kZXg6IGdk Yi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVk ZWYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIw MAorQEAgLTAsMCArMSw0MyBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworKworKyNpZiAwCisrCisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisreworKyAgdHlwZWRlZiBj aGFyIGFycmF5X3Rbc2l6ZV07CisrICBhcnJheV90IGFycmF5OworKyAgaW50IGk7CisrCisrICBm b3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorKyAgICBhcnJheVtpXSA9IGk7CisrCisrICBhcnJh eVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KKyt9CisrCisrI2Vsc2UKKysKKytpbnQKKyttYWlu ICh2b2lkKQorK3sKKysgIGZvbyAoMjYpOworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKKyt9 CisrCisrI2VuZGlmCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAkyMDE0LTA2 LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSw2NCBAQAorKyMgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0aW9uIGFjY2Vzc2Vk IHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50ZXJtZWRpYXRlLgorKworK2lmICFbaXN0YXJnZXQg Ing4Nl82NC0qLSoiXSB0aGVuIHsKKysgICAgdmVyYm9zZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4ODZfNjQuIgorKyAg ICByZXR1cm4KKyt9CisrCisrc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlwZWRlZgorK3NldCBz cmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwor K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytzZXQgYmlub2Jq ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCisraWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9 IiBvYmplY3Qge31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0 ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKytn ZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9h ZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHVudGVzdGVkIHg4Nl82 NC12bGEtdHlwZWRlZgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgImJy ZWFrX2hlcmUiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCisr CisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRp cyBhcnJheSIKKysKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZc XFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgorKworK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0iICJc XCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCisrZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxcJFxb MC05XF0gPSAyICdcXFxcMDAyJyIKKytnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFswLTlc XSA9IDMgJ1xcXFwwMDMnIgorK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxdID0g NCAnXFxcXDAwNCciCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUi CisrCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25kOiB3 aGF0aXMgYXJyYXkiCisrCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxc Wzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCTIw MTQtMDYtMTMgMDM6NTk6MzcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMJMjAxNC0wNi0xNiAyMzozMDozMC4x MDk5NDA0ODQgKzAyMDAKK0BAIC0xNyw2ICsxNywxMyBAQAorIAorIGludCBhcnJheVtdID0gezEs IDIsIDMsIDR9OworIAorKyNpZmRlZiBfX0dOVUNfXworK3N0cnVjdAorKyAgeworKyAgICBpbnQg YVswXTsKKysgIH0gdW5ib3VuZDsKKysjZW5kaWYKKysKKyBpbnQKKyBtYWluICh2b2lkKQorIHsK K0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlp ZHguZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCTIwMTQtMDYtMTMgMDM6NTk6MzcuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fy cmF5aWR4LmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIwMAorQEAgLTQ5LDQg KzQ5LDEyIEBAIGdkYl90ZXN0ICJwcmludCBhcnJheSIgXAorICAgICAgICAgICJcXHtcXFxbMFxc XF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxbMlxcXF0gPSAzLCBcXFxbM1xcXF0gPSA0XFx9IiBc CisgICAgICAgICAgIlByaW50IGFycmF5IHdpdGggYXJyYXktaW5kZXhlcyBvbiIKKyAKKy0KKytz ZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0gJnVuYm91bmQuYVxbMFxdIgorK2dkYl90ZXN0X211bHRp cGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICIgPSAxXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJ cGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9sIFwidW5ib3VuZFwiIGluIGN1 cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKwl1bnN1cHBvcnRlZCAiJHRlc3Qg KG5vIEdDQykiCisrICAgIH0KKyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZp ZWxkLWFkZHJlc3MuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIwMAorQEAgLTAs MCArMSwyMCBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK3N0 cnVjdCB7CisrICBpbnQgZmllbGQ7CisrfSBzdGF0aWNzdHJ1Y3QgPSB7IDEgfTsKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZp ZWxkLWFkZHJlc3MuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAkyMDE0LTA2LTE2IDIz OjMwOjMwLjEwOTk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSwyNiBAQAorKyMgQ29weXJpZ2h0IDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworK3NldCB0ZXN0IGludGVybmFsLXZhci1maWVsZC1hZGRyZXNzCisrc2V0 IGJpbmZpbGUgJHt0ZXN0fS54CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7dGVzdH0uYyIgIltzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2JpbmZpbGV9XSIgb2JqZWN0 IHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0 IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICRiaW5maWxl CisrCisrZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQorK2dkYl90ZXN0 IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYwkyMDE0LTA2LTE2IDIz OjMwOjMwLjExMDk0MDQ4NSArMDIwMAorQEAgLTAsMCArMSwzMSBAQAorKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIw MTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKytpbnQK KyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgY2hhciBzWzIgKyBhcmdjXTsK KysgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7CisrCisrICBtZW1zZXQgKHMsIDAsIHNpemVvZiAo cykpOworKyAgc1swXSA9ICdYJzsKKysKKysgIGYgKHMpOworKyAgcmV0dXJuIDA7CisrfQorSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUu ZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS1mcmFtZS5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTA5NDA0ODUgKzAyMDAKK0BAIC0w LDAgKzEsMzggQEAKKysjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc2V0IHRlc3RmaWxl IHZsYS1mcmFtZQorK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9CisrCisraWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHtleGVjdXRhYmxlfV0gfSB7CisrICAgIHJl dHVybiAtMQorK30KKysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgcmV0dXJuIC0xCisrfQor KworK3NldCB0ZXN0ICJjb250aW51ZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7 CisrICAgIC1yZSAiQ29udGludWluZ1xcLlxyXG5cclxuUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwg U0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0XFwuXHJcbjB4MCsgaW4gXFw/XFw/IFxcKFxcKVxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCXVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKwlyZXR1cm4KKysg ICAgfQorK30KKysKKytnZGJfdGVzdCAiYnQgZnVsbCIgIlxyXG4gK3MgPSBcIlhcXFxcMDAwXCJc clxuLioiCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS1vdmVyZmxvdy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTEwOTQwNDg1 ICswMjAwCitAQCAtMCwwICsxLDMwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworK2ludAorK21haW4gKGludCBhcmdj LCBjaGFyICoqYXJndikKKyt7CisrICBpbnQgYXJyYXlbYXJnY107CisrCisrICBhcnJheVswXSA9 IGFycmF5WzBdOworKworKyAgYWJvcnQgKCk7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLW92ZXJmbG93LmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjExMDk0MDQ4NSArMDIwMAorQEAg LTAsMCArMSwxMDkgQEAKKysjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFdlIGNvdWxk IGNyYXNoIGluOgorKyMgIzAgIGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGJsPTB4MCkgYXQgLi4v Li4vZ2RiL2Jsb2NrLmM6NjkKKysjICMxICBpbiBkd2FyZl9ibG9ja19nZXRfZnJhbWVfYmFzZSAo Li4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzo5NworKyMgICA5NwkgIGZyYW1lZnVuYyA9 IGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGdldF9mcmFtZV9ibG9jayAoZnJhbWUsIE5VTEwpKTsK KysjICMyICBpbiBleGVjdXRlX3N0YWNrX29wICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJleHBy LmM6NDk2CisrIyAjMyAgaW4gZHdhcmZfYmxvY2tfZXhlY19jb3JlICgpIGF0IC4uLy4uL2dkYi9k d2FyZjJibG9jay5jOjE1NgorKyMgIzQgIGR3YXJmX2Jsb2NrX2V4ZWMgKC4uLikgYXQgLi4vLi4v Z2RiL2R3YXJmMmJsb2NrLmM6MjA2CisrIyAjNSAgaW4gcmFuZ2VfdHlwZV9jb3VudF9ib3VuZF9p bnRlcm5hbCAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMuYzoxNDMwCisrIyAjNiAgaW4gY3Jl YXRlX2FycmF5X3R5cGUgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6ODQwCisrIyAuLi4K KysjICMyMSBpbiBwc3ltdGFiX3RvX3N5bXRhYiAoLi4uKSBhdCAuLi8uLi9nZGIvc3ltZmlsZS5j OjI5MgorKyMgLi4uCisrIyAjMjkgaW4gYmFja3RyYWNlX2NvbW1hbmRfMSAoKSBhdCAuLi8uLi9n ZGIvc3RhY2suYzoxMjczCisrCisrc2V0IHRlc3RmaWxlIHZsYS1vdmVyZmxvdworK3NldCBzaGZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIuc2gKKytzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisr c2V0IGYgW29wZW4gInxnZXRjb25mIFBBR0VTSVpFIiAiciJdCisrZ2V0cyAkZiBwYWdlc2l6ZQor K2Nsb3NlICRmCisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisrc2V0IHBpZF9vZl9n ZGIgW2V4cF9waWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxlaWRdXQorKworK2lmIHsgW3J1bnRv X21haW5dIDwgMCB9IHsKKysgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93CisrICAgIHJldHVybiAt MQorK30KKysKKysjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ugc3RheSBhdCBtYWlu LgorKworK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKKysgICAgZ2xvYmFsIHBpZF9vZl9n ZGIgcGFnZXNpemUKKysgICAgc2V0IGZkIFtvcGVuICIvcHJvYy8kcGlkX29mX2dkYi9zdGF0bSJd CisrICAgIGdldHMgJGZkIGxpbmUKKysgICAgY2xvc2UgJGZkCisrICAgICMgbnVtYmVyIG9mIHBh Z2VzIG9mIHZpcnR1YWwgbWVtb3J5CisrICAgIHNjYW4gJGxpbmUgIiVkIiBkcnMKKysgICAgcmV0 dXJuICRkcnMKKyt9CisrCisrc2V0IHBhZ2VzX2ZvdW5kIFttZW1vcnlfdl9wYWdlc19nZXRdCisr CisrIyBzMzkweCB3aXRoIGdsaWJjLWRlYnVnaW5mby5zMzkweCBpbnN0YWxsZWQgdXNlZCBhcHBy b3guIDE2TUIuCisrc2V0IG1iX3Jlc2VydmUgNDAKKyt2ZXJib3NlIC1sb2cgInBhZ2VzX2ZvdW5k ID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jlc2VydmUiCisrc2V0IGtiX2ZvdW5k IFtleHByICRwYWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEwMjRdCisrc2V0IGtiX3Blcm1pdCBb ZXhwciAka2JfZm91bmQgKyAxICogMTAyNCArICRtYl9yZXNlcnZlICogMTAyNF0KKyt2ZXJib3Nl IC1sb2cgImtiX2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJtaXQgPSAka2JfcGVybWl0IgorKwor KyMgQ3JlYXRlIHRoZSB1bGltaXQgd3JhcHBlci4KKytzZXQgZiBbb3BlbiAkc2hmaWxlICJ3Il0K KytwdXRzICRmICIjISAvYmluL3NoIgorK3B1dHMgJGYgInVsaW1pdCAtdiAka2JfcGVybWl0Igor K3B1dHMgJGYgImV4ZWMgJEdEQiBcIlwkQFwiIgorK2Nsb3NlICRmCisrcmVtb3RlX2V4ZWMgaG9z dCAiY2htb2QgK3ggJHNoZmlsZSIKKysKKytnZGJfZXhpdAorK3NldCBHREJvbGQgJEdEQgorK3Nl dCBHREIgIiRzaGZpbGUiCisrZ2RiX3N0YXJ0Cisrc2V0IEdEQiAkR0RCb2xkCisrCisrZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKwor K3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3QgZmlsZWlkXV0KKysK KysjIENoZWNrIHRoZSBzaXplIGFnYWluIGFmdGVyIHRoZSBzZWNvbmQgcnVuLgorKyMgV2UgbXVz dCBub3Qgc3RvcCBpbiBtYWluIGFzIGl0IHdvdWxkIGNhY2hlIGBhcnJheScgYW5kIG5ldmVyIGNy YXNoIGxhdGVyLgorKworK2dkYl9ydW5fY21kCisrCisrdmVyYm9zZSAtbG9nICJrYl9mb3VuZCBi ZWZvcmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8g MTAyNF0iCisrCisrZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0FCUlQs IEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgorKworK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQg aW4gYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAy NF0iCisrCisrIyBgYWJvcnQnIGNhbiBnZXQgZXhwcmVzc2VkIGFzIGAqX19HSV9hYm9ydCcuCisr Z2RiX3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4gXFwoLioiICJCYWNr dHJhY2UgYWZ0ZXIgYWJvcnQoKSIKKysKKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFm dGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEw MjRdIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjExMDk0MDQ4NSArMDIwMAorQEAgLTAsMCArMSw1 NSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CisrCisrICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRl IDxzdHJpbmcuaD4KKysKKyt2b2lkCisrbWFya2VyICh2b2lkKQorK3sKKyt9CisrCisrdm9pZAor K2JhciAoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50IHNpemUpCisreworKyAgbWVtc2V0 IChhLCAnMScsIHNpemUpOworKyAgbWVtc2V0IChiLCAnMicsIHNpemUpOworKyAgbWVtc2V0IChj LCAnMycsIDQ4KTsKKyt9CisrCisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisreworKyAgY2hhciB0 ZW1wMVtzaXplXTsKKysgIGNoYXIgdGVtcDNbNDhdOworKworKyAgdGVtcDFbc2l6ZSAtIDFdID0g J1wwJzsKKysgIHsKKysgICAgY2hhciB0ZW1wMltzaXplXTsKKysKKysgICAgYmFyICh0ZW1wMSwg dGVtcDIsIHRlbXAzLCBzaXplKTsKKysKKysgICAgbWFya2VyICgpOwkvKiBicmVhay1oZXJlICov CisrICB9CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZm9vICgyNik7CisrICBm b28gKDc4KTsKKysgIHJldHVybiAwOworK30KK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTEw OTQwNDg1ICswMjAwCitAQCAtMCwwICsxLDYyIEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr IworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrCisrc2V0IHRlc3RmaWxlIHZsYQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0 ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfZXhpdAorK2dkYl9zdGFy dAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7Ymlu ZmlsZX0KKysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgdmxhCisrICAgIHJl dHVybiAtMQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJl YWstaGVyZSJdCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCisr CisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJz dDogd2hhdGlzIHRlbXAxIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hhciBc XFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMiIKKytnZGJfdGVzdCAid2hhdGlzIHRlbXAz IiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDMiCisrCisrZ2Ri X3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlw ZSB0ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxd IiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBj aGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInAgdGVt cDEiICIgPSAnMScgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAxIgorK2dk Yl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDI2IHRpbWVzPiIgImZpcnN0OiBwcmlu dCB0ZW1wMiIKKytnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8cmVwZWF0cyA0OCB0aW1lcz4i ICJmaXJzdDogcHJpbnQgdGVtcDMiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrLWhlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFs3 OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMSIKKytnZGJfdGVzdCAid2hhdGlzIHRlbXAyIiAi dHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAyIgorK2dkYl90ZXN0 ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vjb25kOiB3aGF0aXMg dGVtcDMiCisrCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxc XSIgInNlY29uZDogcHR5cGUgdGVtcDEiCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAyIiAidHlwZSA9 IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDIiCisrZ2RiX3Rlc3QgInB0eXBl IHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDMiCisr CisrZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25k OiBwcmludCB0ZW1wMSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0 aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMn IDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3Qu UworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1ib3VuZC1sb2NsaXN0LlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMTE5NDA0ODcgKzAyMDAK K0BAIC0wLDAgKzEsMjQ2IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysvKiBXZSB3aWxsIGBicmVhayAqbWFp bicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rpb24uICAqLworKyNkZWZpbmUgbWFpbl9sZW5n dGggMQorKworKwkuc2VjdGlvbgkuZGF0YQorK3ZhcmRhdGE6CisrCS8qIFNlZSBEV19PUF9saXQz ICsgMSAoMC1iYXNlZCkuICAqLworKwkuc3RyaW5nCQkic2Vlbm5vdHNlZW4iCisrCisrCS5zZWN0 aW9uCS5kZWJ1Z19pbmZvCisrLkxjdTFfYmVnaW46CisrCS40Ynl0ZQkJLkxjdTFfZW5kIC0gLkxj dTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFydDoK KysJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8KKysJLjRieXRlCQkuTGRl YnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLworKwkuYnl0ZQkJ NAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCisrCisrCS8qIENVIGRpZSAqLworKwku dWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS40Ynl0ZQkJ Lkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLyogVXNlIEMrKyB0byBleHBsb2l0 IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAiIi4gICovCisrCS5ieXRlCQk0CQkJLyogRFdf QVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KKysJLjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93X3Bj ICovCisrCS5ieXRlCQltYWluX2xlbmd0aAkJLyogRFdfQVRfaGlnaF9wYyAqLworKworKy5MYXJy YXlfdHlwZToKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8K KysJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCisr CS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90eXBlICovCisrCS40Ynl0 ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMAkJ CS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS40Ynl0ZQkJLkxsZW5fdmFyLS5MY3UxX2JlZ2lu CS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVu IG9mIGRpZSAqLworKworKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBhbiBv cHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KKysuTGFycmF5Yl90eXBlOgorKwkudWxlYjEyOAky CQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLworKwkuNGJ5dGUJCS5MY2hhcl90eXBl LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJl djogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9i ZWdpbgkvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQg Ki8KKysJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5k ICovCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLworKworKwkvKiBE V19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyByZWdpc3Rlci4gICovCisrLkxhcnJheXJl Z190eXBlOgorKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwor KwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KKysKKysJ LnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aCBibG9jayAq LworKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KKysJ LmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8q IERXX0FUX3VwcGVyX2JvdW5kICovCisrMToJLmJ5dGUJCTB4NTAJCQkvKiBEV19PUF9yZWcwICov CisrMjoKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCisrCisrLkx1 aW50X3R5cGU6CisrCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8K KysJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1lICovCisrCS5ieXRlCQk0CQkJLyog RFdfQVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk3CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysK KysuTGNoYXJfdHlwZToKKysJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlw ZSAqLworKwkuNGJ5dGUJCS5MY2hhcl9zdHIJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTEJ CQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5dGUJCTYJCQkvKiBEV19BVF9lbmNvZGluZyAq LworKworKy5MbGVuX3ZhcjoKKysJLnVsZWIxMjgJNQkJCS8qIEFiYnJldjogRFdfVEFHX3Zhcmlh YmxlIGFydGlmaWNpYWwgKi8KKysJLmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCisr CS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuNGJ5 dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8qIERXX0FUX2xvY2F0aW9uICovCisrCisrCS8q IG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9yIGJfc3RyaW5nLiAgKi8KKysuTGxlbmJfdmFyOgor KwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgYXJ0aWZpY2lhbCBubyBE V19BVF9sb2NhdGlvbiAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KKysJ LjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCisrCS51 bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwor Kwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCisrCS40Ynl0ZQkJLkxhcnJh eV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KKysJLmJ5dGUJCTJmIC0gMWYJCQkv KiBEV19BVF9sb2NhdGlvbiAqLworKzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCisr CS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCisrMjoKKysKKysJLyogRFdfQVRfdXBw ZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICovCisr CS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAq LworKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCisrCS40Ynl0ZQkJLkxh cnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkyZiAtIDFm CQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAq LworKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLworKzI6CisrCisrCS8qIERXX0FU X3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8KKysJLnVsZWIxMjgJNgkJ CS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCisrCS5zdHJpbmcJ CSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCS5MYXJyYXlyZWdfdHlw ZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdf QVRfbG9jYXRpb24gKi8KKysxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLworKwkuNGJ5 dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLworKzI6CisrCisrCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIENVICovCisrLkxjdTFfZW5kOgorKworKwkuc2VjdGlvbgkuZGVidWdf bG9jCisrLkxsb2NsaXN0OgorKy5MbGVuX2xvY2xpc3Q6CisrCS40Ynl0ZQkwCQkJIyBMb2NhdGlv biBsaXN0IGJlZ2luIGFkZHJlc3MKKysJLjRieXRlCW1haW5fbGVuZ3RoCQkjIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MKKysJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXpl CisrMToJLmJ5dGUJMHgzMwkjIERXX09QX2xpdDMKKysJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNr X3ZhbHVlCisrMjoKKysJLnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2lu ICgqLkxMU1QyKQorKwkucXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgq LkxMU1QyKQorKworKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2CisrLkxkZWJ1Z19hYmJyZXYwOgor KwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERX X1RBR19jb21waWxlX3VuaXQgKi8KKysJLmJ5dGUJCTB4MQkJCS8qIGhhc19jaGlsZHJlbiAqLwor KwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLnVsZWIxMjgJMHhlCQkJ LyogRFdfRk9STV9zdHJwICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAq LworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4MTEJ CQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICov CisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4YgkJ CS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJ LmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJl diBjb2RlICovCisrCS51bGViMTI4CTB4MQkJCS8qIFRBRzogRFdfVEFHX2FycmF5X3R5cGUgKi8K KysJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAqLworKwkudWxlYjEyOAkweDQ5CQkJ LyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCisrCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkw eDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vIGNo aWxkcmVuICovCisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4 CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xv d2VyX2JvdW5kICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVs ZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrCS51bGViMTI4CTB4MTMJCQkv KiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJNAkJCS8qIEFiYnJldiBj b2RlICovCisrCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCisrCS5ieXRl CQkweDAJCQkvKiBub19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1l ICovCisrCS51bGViMTI4CTB4ZQkJCS8qIERXX0ZPUk1fc3RycCAqLworKwkudWxlYjEyOAkweGIJ CQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk1CQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwor KwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERX X0FUX2FydGlmaWNpYWwgKi8KKysJLnVsZWIxMjgJMHgwYwkJCS8qIERXX0ZPUk1fZmxhZyAqLwor KwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyog RFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwor KwkudWxlYjEyOAkweDA2CQkJLyogRFdfRk9STV9kYXRhNCAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxl YjEyOAk2CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192 YXJpYWJsZSAqLworKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJ MHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEz CQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MgkJCS8qIERXX0FUX2xvY2F0aW9u ICovCisrCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisr CS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDM0CQkJLyogRFdf VEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLworKwkudWxl YjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLworKwkudWxlYjEyOAkweDBjCQkJLyog RFdfRk9STV9mbGFnICovCisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCisrCS51 bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJ OAkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFu Z2VfdHlwZSB3aXRoIGJsb2NrICovCisrCS5ieXRlCQkweDAJCQkvKiBubyBjaGlsZHJlbiAqLwor KwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyog RFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAq LworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4MmYJ CQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLworKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Js b2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwor Ky8qIFN0cmluZyB0YWJsZSAqLworKwkuc2VjdGlvbiAuZGVidWdfc3RyCisrLkxwcm9kdWNlcjoK KysJLnN0cmluZwkJIkdOVSBDIDMuMy4zIgorKy5MY2hhcl9zdHI6CisrCS5zdHJpbmcJCSJjaGFy IgorKy5MdWludF9zdHI6CisrCS5zdHJpbmcJCSJ1bnNpZ25lZCBpbnQiCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3Qu ZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTExOTQwNDg3ICsw MjAwCitAQCAtMCwwICsxLDYzIEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBU ZXN0IHByaW50aW5nIHZhcmlhYmxlIHdpdGggZHluYW1pYyBib3VuZHMgd2hpY2ggcmVmZXJlbmNl IGEgZGlmZmVyZW50CisrIyAoYXJ0aWZpY2lhbCBpbiB0aGUgR0NDIGNhc2UpIHZhcmlhYmxlIGNv bnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMgbG9jYXRpb24uCisrIyBUaGlzIHRlc3RjYXNlIHVzZXMg dmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0aGUgcmVmZXJlbmNlZCB2YXJpYWJsZToKKysjIGh0dHA6 Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjIKKysKKysjIFRoaXMg dGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5k IHVzZSBnYXMuCisrIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4K KytpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUq XQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1v cGVuYnNkKl0KKysgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYgIVtpc3Rh cmdldCBwb3dlcnBjLSotZWFiaSpdfSB7CisrICAgIHJldHVybiAwCisrfQorKworK3NldCB0ZXN0 ZmlsZSBkdzItYm91bmQtbG9jbGlzdAorK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9IFtsaXN0ICR7dGVzdGZpbGV9LlMgbWFpbi5jXSB7fV0gfSB7 CisrICAgIHJldHVybiAtMQorK30KKysKKysjIFZlcmlmeSBpdCBiZWhhdmVzIGF0IGxlYXN0IGFz IGFuIHVuYm91bmQgYXJyYXkgd2l0aG91dCBpbmZlcmlvci4KKysKKytzZXQgdGVzdCAicCBhX3N0 cmluZyIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiID0gMHhc WzAtOWEtZlxdKyBcInNlZW5ub3RzZWVuXCJcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0 ZXN0CisrICAgIH0KKysgICAgLXJlICJObyByZWdpc3RlcnNcXC5cclxuJGdkYl9wcm9tcHQgJCIg eworKwlrZmFpbCAidmxhcmVncmVzc2lvbiIgJHRlc3QKKysgICAgfQorK30KKysKKytnZGJfdGVz dCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcW3ZhcmlhYmxlIGxlbmd0aFxdfQorKwor KyMgTm90IHJ1bnRvX21haW4gYXMgZHcyLWJvdW5kLWxvY2xpc3QuUyBoYW5kbGVzIG9ubHkgdGhl IGZpcnN0IGJ5dGUgb2YgbWFpbi4KKytpZiAhW3J1bnRvICIqbWFpbiJdIHsKKysgICAgcmV0dXJu IC0xCisrfQorKworK2dkYl90ZXN0ICJwIGFfc3RyaW5nIiB7ID0gInNlZW4ifQorK2dkYl90ZXN0 ICJwdHlwZSBhX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbNFxdfQorKworK2dkYl90ZXN0ICJwIGJf c3RyaW5nIiB7ID0gKDB4WzAtOWEtZl0rICk/InNlZW5ub3RzZWVuIn0KKytnZGJfdGVzdCAicHR5 cGUgYl9zdHJpbmciIHt0eXBlID0gY2hhciBcW1xdfQorKworKyMgVGhlIHJlZ2lzdGVyIGNvbnRh aW5zIHVucHJlZGljdGFibGUgdmFsdWUgLSB0aGUgYXJyYXkgc2l6ZS4KKytnZGJfdGVzdCAicHR5 cGUgcmVnX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbLT9bMC05XStcXX0KK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJpcHBlZC5jCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTExOTQwNDg3ICswMjAwCitAQCAtMCwwICsx LDQyIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KKysKKysgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIAorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysgICBV U0EuICAqLworKworKworKy8qIFRoZSBmdW5jdGlvbiBgZnVuYzEnIHRyYWNlZCBpbnRvIG11c3Qg aGF2ZSBkZWJ1ZyBpbmZvIG9uIG9mZnNldCA+IDA7CisrICAgKERXX1VOU05EIChhdHRyKSkuICBU aGlzIGlzIHRoZSByZWFzb24gb2YgYGZ1bmMwJyBleGlzdGVuY2UuICAqLworKworK3ZvaWQKKytm dW5jMChpbnQgYSwgaW50IGIpCisreworK30KKysKKysvKiBgZnVuYzEnIGJlaW5nIHRyYWNlZCBp bnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0byBkdW1wLiAgKi8KKysKKyt2b2lkCisrZnVu YzEoaW50IGEsIGludCBiKQorK3sKKysgIGZ1bmMwIChhLGIpOworK30KKysKKytpbnQKKyttYWlu KHZvaWQpCisreworKyAgZnVuYzEgKDEsIDIpOworKyAgcmV0dXJuIDA7CisrfQorSW5kZXg6IGdk Yi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3RyaXBwZWQuZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTExOTQwNDg3ICswMjAwCitA QCAtMCwwICsxLDc5IEBACisrIyBDb3B5cmlnaHQgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrIyAKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K KysKKysjIE1pbmltYWwgRFdBUkYtMiB1bml0IHRlc3QKKysKKysjIFRoaXMgdGVzdCBjYW4gb25s eSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIuCisrIyBGb3Igbm93IHBp Y2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KKytpZiB7IVtpc3RhcmdldCAqLSotbGlu dXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KKysgICAgJiYgIVtpc3Rh cmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7 CisrICAgIHJldHVybiAwICAKKyt9CisrCisrc2V0IHRlc3RmaWxlICJkdzItc3RyaXBwZWQiCisr c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0ueAorKworK3JlbW90ZV9leGVjIGJ1aWxkICJybSAtZiAke2JpbmZpbGV9 IgorKworKyMgZ2V0IHRoZSB2YWx1ZSBvZiBnY2NfY29tcGlsZWQKKytpZiBbZ2V0X2NvbXBpbGVy X2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBUaGlzIHRlc3Qg Y2FuIG9ubHkgYmUgcnVuIG9uIGdjYyBhcyB3ZSB1c2UgYWRkaXRpb25hbF9mbGFncz1GSVhNRQor K2lmIHskZ2NjX2NvbXBpbGVkID09IDB9IHsKKysgICAgcmV0dXJuIDAKKyt9CisrCisraWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1nZ2RiM31dICE9ICIiIH0gewor KyAgICByZXR1cm4gLTEKKyt9CisrCisrcmVtb3RlX2V4ZWMgYnVpbGQgIm9iamNvcHkgLVIgLmRl YnVnX2xvYyAke2JpbmZpbGV9IgorK3NldCBzdHJpcF9vdXRwdXQgW3JlbW90ZV9leGVjIGJ1aWxk ICJvYmpkdW1wIC1oICR7YmluZmlsZX0iXQorKworK3NldCB0ZXN0ICJzdHJpcHBpbmcgdGVzdCBm aWxlIHByZXNlcnZhdGlvbiIKKytpZiBbIHJlZ2V4cCAiLmRlYnVnX2luZm8gIiAkc3RyaXBfb3V0 cHV0XSAgeworKyAgICBwYXNzICIkdGVzdCAoLmRlYnVnX2luZm8gcHJlc2VydmVkKSIKKyt9IGVs c2UgeworKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2luZm8gZ290IGFsc28gc3RyaXBwZWQpIgor K30KKysKKytzZXQgdGVzdCAic3RyaXBwaW5nIHRlc3QgZmlsZSBmdW5jdGlvbmFsaXR5IgorK2lm IFsgcmVnZXhwICIuZGVidWdfbG9jICIgJHN0cmlwX291dHB1dF0gIHsKKysgICAgZmFpbCAiJHRl c3QgKC5kZWJ1Z19sb2Mgc3RpbGwgcHJlc2VudCkiCisrfSBlbHNlIHsKKysgICAgcGFzcyAiJHRl c3QgKC5kZWJ1Z19sb2Mgc3RyaXBwZWQpIgorK30KKysKKytnZGJfZXhpdAorK2dkYl9zdGFydAor K2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7YmluZmls ZX0KKysKKysjIEZvciBDIHByb2dyYW1zLCAic3RhcnQiIHNob3VsZCBzdG9wIGluIG1haW4oKS4K KysKKytnZGJfdGVzdCAic3RhcnQiIFwKKysgICAgICAgICAiLiptYWluIFxcKFxcKSBhdCAuKiIg XAorKyAgICAgICAgICJzdGFydCIKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgICAgICAgICJmdW5j LiogXFwoLipcXCkgYXQgLioiIFwKKysgICAgICAgICAic3RlcCIKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRh LWxvY2F0aW9uLlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMJMjAxNC0wNi0xNiAy MzozMDozMC4xMTI5NDA0ODggKzAyMDAKK0BAIC0wLDAgKzEsODMgQEAKKysvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBEZWJ1ZyBpbmZvcm1hdGlvbiAqLworKwor Kwkuc2VjdGlvbiAuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkvKiBDVSBoZWFkZXIgKi8K KysJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRp b24gVW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9u ICovCisrCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYgc2Vj dGlvbiAqLworKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLworKworKwkvKiBDVSBkaWUg Ki8KKysJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KKysJ LmFzY2lpCSJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmNcMCIJLyogRFdfQVRfbmFt ZSAqLworKwkuYXNjaWkJIkdOVSBDIDQuMy4yXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJ LmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgKi8KKysKKysuTHR5cGVfdWNoYXI6Cisr CS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAqLworKwkuYXNj aWkJCSJzb21lX3N0cnVjdFwwIgkJLyogRFdfQVRfbmFtZSAqLworKworKwkudWxlYjEyOAkzCQkJ LyogQWJicmV2OiBEV19UQUdfbWVtYmVyICovCisrCS5hc2NpaQkJImZpZWxkXDAiCQkvKiBEV19B VF9uYW1lICovCisrCS5ieXRlCQkwCQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8K KysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2Ygc29tZV9zdHJ1Y3QgKi8KKysK KysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysKKysuTGN1MV9lbmQ6 CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysuTGFi YnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEy OAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhhc19j aGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4 CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9w cm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxl YjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdf Rk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUg Ki8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAqLworKwkuYnl0 ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1l ICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisr CS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDBkCQkJLyogRFdf VEFHX21lbWJlciAqLworKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEy OAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3Ry aW5nICovCisrCS51bGViMTI4CTB4MzgJCQkvKiBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiAq LworKwkudWxlYjEyOAkweDBiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0 YS1sb2NhdGlvbi5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODggKzAyMDAKK0BAIC0w LDAgKzEsMzcgQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRoaXMgdGVzdCBj YW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBn YXMuCisrIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KKytpZiB7 IVtpc3RhcmdldCAqLSotbGludXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQorKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNk Kl0KKysgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYgIVtpc3RhcmdldCBw b3dlcnBjLSotZWFiaSpdfSB7CisrICAgIHJldHVybiAwICAKKyt9CisrCisrc2V0IHRlc3RmaWxl ICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uIgorK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LlMKKytzZXQgYmluZmlsZSAke3Rlc3RmaWxlfS54CisrCisraWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICJbc3RhbmRhcmRfb3V0cHV0X2ZpbGUg JHtiaW5maWxlfV0iIG9iamVjdCB7bm9kZWJ1Z31dICE9ICIiIH0geworKyAgICByZXR1cm4gLTEK Kyt9CisrCisrY2xlYW5fcmVzdGFydCAkYmluZmlsZQorKworK2dkYl90ZXN0ICJwdHlwZSBzdHJ1 Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0IHNvbWVfc3RydWN0IHtcW1xyXG4gXHRcXSp2 b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdk Yi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1u by10eXBlLlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODggKzAyMDAKK0BAIC0wLDAgKzEs MTIxIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KKysKKysgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrLyogRGVi dWcgaW5mb3JtYXRpb24gKi8KKysKKysJLnNlY3Rpb24JLmRhdGEKKyt2YXJkYXRhOgorKwkucmVw dAkJMTI5CisrCS5hc2NpaQkJIngiCisrCS5lbmRyCisrCS5hc2NpaQkJIlVOU0VFTlwwIgorKwor Kwkuc2VjdGlvbgkuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkuNGJ5dGUJCS5MY3UxX2Vu ZCAtIC5MY3UxX3N0YXJ0CS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFf c3RhcnQ6CisrCS4yYnl0ZQkJMgkJCS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICovCisrCS40Ynl0 ZQkJLkxkZWJ1Z19hYmJyZXYwCQkvKiBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24gKi8KKysJ LmJ5dGUJCTQJCQkvKiBQb2ludGVyIFNpemUgKGluIGJ5dGVzKSAqLworKworKwkvKiBDVSBkaWUg Ki8KKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwku YXNjaWkJCSJHTlUgQyAzLjMuM1wwIgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLmJ5dGUJCTIJ CQkvKiBEV19BVF9sYW5ndWFnZSAoQykgLSAgKi8KKysKKysuTGFycmF5X3R5cGU6CisrCS51bGVi MTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBlICovCisrCS40Ynl0ZQkJLkxjaGFy X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKworKwkudWxlYjEyOAk4CQkJLyog QWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0IERXX0FUX3R5cGUgKi8KKysJLmJ5 dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkuYnl0ZQkJMTI4CQkJLyogRFdfQVRf dXBwZXJfYm91bmQgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGll ICovCisrCisrLkxjaGFyX3R5cGU6CisrCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19i YXNlX3R5cGUgKi8KKysJLmFzY2lpCQkiY2hhclwwIgkJLyogRFdfQVRfbmFtZSAqLworKwkuYnl0 ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkuYnl0ZQkJNgkJCS8qIERXX0FUX2VuY29k aW5nICovCisrCisrCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19G T1JNX3N0cmluZyAqLworKwkuYXNjaWkJCSJub3R5cGVfc3RyaW5nXDAiCS8qIERXX0FUX25hbWUg Ki8KKysJLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFfYmVnaW4gLyogRFdfQVRfdHlwZSAqLwor KwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJCQkv KiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXJkYXRhCQkJLyogICA8YWRkcj4gKi8KKysy OgorKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworKy5MY3UxX2Vu ZDoKKysKKysJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgorKy5MZGVidWdfYWJicmV2MDoKKysJLnVs ZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdf Y29tcGlsZV91bml0ICovCisrCS5ieXRlCQkweDEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVs ZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS51bGViMTI4CTB4OAkJCS8qIERX X0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwor KwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrCS51bGVi MTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEJCQkvKiBUQUc6IERXX1RB R19hcnJheV90eXBlICovCisrCS5ieXRlCQkweDEJCQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KKysJ LnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERX X0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk0CQkJLyogQWJicmV2IGNvZGUg Ki8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTB4 MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8K KysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHhiCQkJ LyogRFdfQVRfYnl0ZV9zaXplICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEg Ki8KKysJLnVsZWIxMjgJMHgzZQkJCS8qIERXX0FUX2VuY29kaW5nICovCisrCS51bGViMTI4CTB4 YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K KysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJNgkJCS8qIEFi YnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KKysJ LmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FU X25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIx MjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1f cmVmNCAqLworKwkudWxlYjEyOAkweDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLworKwkudWxlYjEy OAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk4CQkJ LyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyMQkJCS8qIERXX1RBR19zdWJyYW5nZV90 eXBlIHdpdGhvdXQgRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMHgwCQkJLyogbm8gY2hpbGRyZW4g Ki8KKysJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS51bGViMTI4 CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3Vw cGVyX2JvdW5kICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3Ig Ki8KKysKKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODgg KzAyMDAKK0BAIC0wLDAgKzEsMzkgQEAKKysjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKytsb2Fk X2xpYiBkd2FyZi5leHAKKysKKysjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1 Zy5jZ2k/aWQ9ODA2OTIwCisrIyByZWFkX3N1YnJhbmdlX3R5cGUgPFRZUEVfQ09ERSAoYmFzZV90 eXBlKSA9PSBUWVBFX0NPREVfVk9JRD4gcmVpbml0aWFsaXphdGlvbgorKyMgb2YgQkFTRV9UWVBF IHdhcyBkb25lIHRvbyBsYXRlLCBpdCBhZmZlY3RzIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGhv dXQKKysjIHNwZWNpZmllZCBEV19BVF90eXBlLCBwcmVzZW50IG9ubHkgaW4gWExGIHByb2R1Y2Vk IGNvZGUuCisrCisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgorK2lmIHshW2R3YXJmMl9zdXBwb3J0XX0gewor KyAgICByZXR1cm4gMCAgCisrfQorKworK3NldCB0ZXN0ZmlsZSBkdzItc3VicmFuZ2Utbm8tdHlw ZQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKKytzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxl fS54Cisrc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7ZXhlY3V0YWJsZX1dCisr CisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIG9iamVjdCB7fV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytj bGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrCisrZ2RiX3Rlc3QgInB0eXBlIG5vdHlwZV9zdHJp bmciIHt0eXBlID0gY2hhciBcWzEyOVxdfQorK2dkYl90ZXN0ICJwIG5vdHlwZV9zdHJpbmciICIg PSAneCcgPHJlcGVhdHMgMTI5IHRpbWVzPiIKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhw CTIwMTQtMDYtMTYgMjM6MzA6MzAuMTEyOTQwNDg4ICswMjAwCitAQCAtMCwwICsxLDQyIEBACisr IyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAorKworKyMgVGhpcyBmaWxl IHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t Pi4KKysKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgQXJyYXkg ZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKKysjIHNwZWNpZmllZCBpbiB0aGUgbnVtYmVyIG9m IGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBpbnN0ZWFkLgorKyMgT3JpZ2luYWwg cHJvYmxlbToKKysjIChnZGIpIHAgYzQwcHQoMSkKKysjICQxID0gJzAtaGVsbG8nLCAnICcgPHJl cGVhdHMgMzMgdGltZXM+CisrIyAoZ2RiKSBwIGM0MHB0KDIpCisrIyB3YXJuaW5nOiBGb3J0cmFu IGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50IHNpemUKKysKKytzZXQg dGVzdGZpbGUgZHdhcmYtc3RyaWRlCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisrCisr aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtz cmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1 bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9p bnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrLWhlcmUiICIuKmJyZWFrLWhlcmUuKiIKKytnZGJfdGVzdCAicCBjNDBwdCgxKSIgIiA9 ICcwLWhlbGxvLioiCisrZ2RiX3Rlc3QgInAgYzQwcHQoMikiICIgPSAnMS1oZWxsby4qIgorSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZjkwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODgg KzAyMDAKK0BAIC0wLDAgKzEsNDAgQEAKKyshIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCisrIQorKyEgRmlsZSB3cml0dGVuIGJ5IEFsYW4gTWF0c3Vva2EuCisrCisrcHJvZ3Jh bSByZXBybworKworKyAgdHlwZSBzbWFsbF9zdHJpZGUKKysgICAgIGNoYXJhY3Rlcio0MCBsb25n X3N0cmluZworKyAgICAgaW50ZWdlciAgICAgIHNtYWxsX3BhZAorKyAgZW5kIHR5cGUgc21hbGxf c3RyaWRlCisrCisrICB0eXBlKHNtYWxsX3N0cmlkZSksIGRpbWVuc2lvbiAoMjApLCB0YXJnZXQg OjogdW5wbGVhc2FudAorKyAgY2hhcmFjdGVyKjQwLCBwb2ludGVyLCBkaW1lbnNpb24oOik6OiBj NDBwdAorKworKyAgaW50ZWdlciBpCisrCisrICBkbyBpID0gMCwxOQorKyAgICAgdW5wbGVhc2Fu dChpKzEpJXNtYWxsX3BhZCA9IGkrMQorKyAgICAgdW5wbGVhc2FudChpKzEpJWxvbmdfc3RyaW5n ID0gY2hhciAoaWNoYXIoJzAnKSArIGkpIC8vICctaGVsbG8nCisrICBlbmQgZG8KKysKKysgIGM0 MHB0ID0+IHVucGxlYXNhbnQlbG9uZ19zdHJpbmcKKysKKysgIHByaW50ICosIGM0MHB0ICAhIGJy ZWFrLWhlcmUKKysKKytlbmQgcHJvZ3JhbSByZXBybworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkw Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTM5NDA0 ODggKzAyMDAKK0BAIC0wLDAgKzEsMjQgQEAKKyshIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQor KyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZv ciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5 IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KKysKKytzdWJyb3V0 aW5lIGJhcgorKyAgcmVhbCA6OiBkdW1teQorKyAgZHVtbXkgPSAxCisrZW5kIHN1YnJvdXRpbmUg YmFyCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCTIwMTQtMDYt MTYgMjM6MzA6MzAuMTEzOTQwNDg4ICswMjAwCitAQCAtMCwwICsxLDM3IEBACisrIyBDb3B5cmln aHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAorKworK3NldCB0ZXN0ZmlsZSAiZHluYW1p Yy1vdGhlci1mcmFtZSIKKytzZXQgc3JjZmlsZTEgJHt0ZXN0ZmlsZX0uZjkwCisrc2V0IHNyY2Zp bGUyICR7dGVzdGZpbGV9LXN0dWIuZjkwCisrc2V0IG9iamZpbGUyIFtzdGFuZGFyZF9vdXRwdXRf ZmlsZSAke3Rlc3RmaWxlfS1zdHViLm9dCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKytz ZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtleGVjdXRhYmxlfV0KKysKKytpZiB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUyfSIgIiR7b2JqZmls ZTJ9IiBvYmplY3Qge2Y5MH1dICE9ICIiCisrICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1ZyBmOTB9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBp bGUgJHtzcmNmaWxlMX0gb3IgJHtzcmNmaWxlMn0iCisrICAgIHJldHVybiAtMQorK30KKysKKytj bGVhbl9yZXN0YXJ0ICR7ZXhlY3V0YWJsZX0KKysKKytpZiAhW3J1bnRvIGJhcl9dIHRoZW4gewor KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBiYXJfIgorKyAgICBjb250aW51ZQorK30KKysK KytnZGJfdGVzdCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1l LmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAkyMDE0LTA2LTE2IDIzOjMwOjMwLjExMzk0MDQ4 OCArMDIwMAorQEAgLTAsMCArMSwzNiBAQAorKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisr ISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9y IGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKworK3N1YnJvdXRp bmUgZm9vIChzdHJpbmcpCisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBiYXIKKysgICAg ZW5kIHN1YnJvdXRpbmUKKysgIGVuZCBpbnRlcmZhY2UKKysgIGNoYXJhY3RlciBzdHJpbmcqKCop CisrICBjYWxsIGJhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBzdG9wLWhlcmUK KytlbmQgc3Vicm91dGluZSBmb28KKytwcm9ncmFtIHRlc3QKKysgIGludGVyZmFjZQorKyAgICBz dWJyb3V0aW5lIGZvbyAoc3RyaW5nKQorKyAgICBjaGFyYWN0ZXIgc3RyaW5nKigqKQorKyAgICBl bmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgY2FsbCBmb28gKCdoZWxsbycpCisr ZW5kCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTQtMDYtMTYgMjM6Mzc6NDUuNTY4MzYyNTYzICsw MjAwCitAQCAtMCwwICsxLDE1MSBAQAorKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMgCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuICAKKysKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRhaW5zIHRlc3RzIGZvciBkeW5hbWljYWxseQorKyMg YWxsb2NhdGVkIEZvcnRyYW4gYXJyYXlzLgorKyMgSXQgZGVwZW5kcyBvbiB0aGUgR0NDIGR5bmFt aWMgRm9ydHJhbiBhcnJheXMgRFdBUkYgc3VwcG9ydDoKKysjIAlodHRwOi8vZ2NjLmdudS5vcmcv YnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyMjQ0CisrCisrc2V0IHRlc3RmaWxlICJkeW5hbWlj IgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBx dWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Zp bGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9Cisr CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZhcngtaW5pdCIKKytnZGJfdGVzdCAicCB2YXJ4IiAiXFwkXFswLTlcXSogPSA8 bm90IGFsbG9jYXRlZD4iICJwIHZhcnggdW5hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZh cngiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKKytn ZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ug bm90IGFsbG9jYXRlZCIgInAgdmFyeCgxLDUsMTcpIHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJw IHZhcngoMSw1LDE3KT0xIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxv Y2F0ZWQiICJwIHZhcngoMSw1LDE3KT0xIHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2 YXJ4KDEsNSwxNykiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRl ZCIgInB0eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIKKysjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAw KSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4p CisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkg XFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0ZWQiCisrIyBJbnRlbCBGb3J0 cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCisrZ2RiX3Rl c3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYg dmFyeCBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZhcngtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1maWxsZWQi CisrZ2RiX3Rlc3QgInAgdmFyeCgyLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDYiCisrZ2RiX3Rl c3QgInAgdmFyeCgxLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDciCisrZ2RiX3Rlc3QgInAgdmFy eCgyLCA2LCAxOCkiICJcXCRcWzAtOVxdKiA9IDgiCisrZ2RiX3Rlc3QgInAgdmFyeCg2LCAxNSwg MjgpIiAiXFwkXFswLTlcXSogPSA5IgorK2dkYl90ZXN0ICJwIHZhcnYiICJcXCRcWzAtOVxdKiA9 IDxub3QgYXNzb2NpYXRlZD4iICJwIHZhcnYgdW5hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlw ZSB2YXJ2IiAidHlwZSA9IDxub3QgYXNzb2NpYXRlZD4iICJwdHlwZSB2YXJ2IHVuYXNzb2NpYXRl ZCIKKysKKytzZXQgdGVzdCAib3V0cHV0IHZhcngiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3Qg JHRlc3QgeworKyAgICAtcmUgIl5vdXRwdXQgdmFyeFxyXG5cWygpICw2Nzg5LlxdKiRnZGJfcHJv bXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2YXJ2LWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCgzLCA3LCAxOSki ICJcXCRcWzAtOVxdKiA9IDYiICJwIHZhcngoMywgNywgMTkpIHdpdGggdmFydiBhc3NvY2lhdGVk IgorK2dkYl90ZXN0ICJwIHZhcnYoMywgNywgMTkpIiAiXFwkXFswLTlcXSogPSA2IiAicCB2YXJ2 KDMsIDcsIDE5KSBhc3NvY2lhdGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAw OCB1c2VzIC0xIHRoZXJlLCBHQ0MgdXNlcyAxLgorK2dkYl90ZXN0ICJwIGwiICJcXCRcWzAtOVxd KiA9IChcXC5UUlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlmIHZhcnYgYXNzb2NpYXRlZCIKKytn ZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2 LDU6MTUsMTc6MjhcXCkiICJwdHlwZSB2YXJ4IHdpdGggdmFydiBhc3NvY2lhdGVkIgorKyMgSW50 ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCB1c2VzIHRoZSBwb2ludGVyIHR5cGUuCisrZ2Ri X3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9 NFxcKXxcXCo0KSBcXCg2LDU6MTUsMTc6MjhcXClcXCk/IiAicHR5cGUgdmFydiBhc3NvY2lhdGVk IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWZpbGxlZCJd CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtZmlsbGVkIgorK2dkYl90ZXN0ICJw IHZhcngoMywgNywgMTkpIiAiXFwkXFswLTlcXSogPSAxMCIgInAgdmFyeCgzLCA3LCAxOSkgd2l0 aCB2YXJ2IGZpbGxlZCIKKytnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0q ID0gMTAiICJwIHZhcnYoMywgNywgMTkpIGZpbGxlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAidmFydi1kZWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2YXJ2LWRlYXNzb2NpYXRlZCIKKysjIFRoZSBsYXR0ZXIgb25lIGlzIGZvciB0 aGUgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBwb2ludGVyIHR5cGUuCisrZ2RiX3Rl c3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gKDxub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFj Y2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBp cyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5 cGUgdmFydiIgInR5cGUgPSAoPG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNzIGl0fFVu YWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5vdCBhc3Nv Y2lhdGVkLikiICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicCBsIiAiXFwk XFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2IGRlYXNzb2NpYXRlZCIKKytnZGJf dGVzdCAicCB2YXJ2KDEsNSwxNykiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90 IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnYoMSw1LDE3KSIgIm5vIHN1Y2ggdmVj dG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmFyeC1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZhcngtZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxb MC05XF0qID0gPG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IGRlYWxsb2NhdGVkIgorK2dkYl90ZXN0 ICJwdHlwZSB2YXJ4IiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZhcnggZGVhbGxv Y2F0ZWQiCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwuRkFMU0VcXC4iICJwIGwg aWYgdmFyeCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICJubyBzdWNo IHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgInAgdmFyeCgxLDUsMTcpIGRl YWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiICJubyBzdWNoIHZlY3Rv ciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgInB0eXBlIHZhcngoMSw1LDE3KSBkZWFs bG9jYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeS1w YXNzZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LXBhc3NlZCIKKysjICQx ID0gKCggKCAxLCAxLCAxLCAxLCAxLCAxKSAoIDEsIDEsIDEsIDEsIDEsIDEpIC0tLSAsIDEpICkg KCAoIDEsIDEsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFyeSIgIlxcJFxbMC05XF0q ID0gXFwoXFsoKTEsIC5cXSpcXCkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhcnktZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeS1m aWxsZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnkiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8 XFwqNCkgXFwoMTAsMTBcXCkiCisrZ2RiX3Rlc3QgInAgdmFyeSgxLCAxKSIgIlxcJFxbMC05XF0q ID0gOCIKKytnZGJfdGVzdCAicCB2YXJ5KDIsIDIpIiAiXFwkXFswLTlcXSogPSA5IgorK2dkYl90 ZXN0ICJwIHZhcnkoMSwgMykiICJcXCRcWzAtOVxdKiA9IDEwIgorKyMgJDEgPSAoKCAoIDMsIDMs IDMsIDMsIDMsIDMpICggMywgMywgMywgMywgMywgMykgLS0tICwgMykgKSAoICggMywgMywgLi4u KSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2YXJ3IiAiXFwkXFswLTlcXSogPSBcXChcWygpMywg LlxdKlxcKSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydy1h bG1vc3RmaWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ3LWFsbW9zdGZp bGxlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFydyIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxc XCo0KSBcXCg1LDQsM1xcKSIKKytnZGJfdGVzdCAicCB2YXJ3KDMsMSwxKT0xIiAiXFwkXFswLTlc XSogPSAxIgorKyMgJDEgPSAoKCAoIDYsIDUsIDEsIDUsIDUsIDUpICggNSwgNSwgNSwgNSwgNSwg NSkgLS0tICwgNSkgKSAoICggNSwgNSwgLi4uKSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2YXJ3 IiAiXFwkXFswLTlcXSogPSBcXCggKlxcKCAqXFwoICo2LCAqNSwgKjEsXFsoKTUsIC5cXSpcXCki ICJwIHZhcncgZmlsbGVkIgorKyMgInVwIiB3b3JrcyB3aXRoIEdDQyBidXQgb3RoZXIgRm9ydHJh biBjb21waWxlcnMgbWF5IGNvcHkgdGhlIHZhbHVlcyBpbnRvIHRoZQorKyMgb3V0ZXIgZnVuY3Rp b24gb25seSBvbiB0aGUgZXhpdCBvZiB0aGUgaW5uZXIgZnVuY3Rpb24uCisrIyBXZSBuZWVkIGJv dGggdmFyaWFudHMgYXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoIHdlIG9wdGlvbmFsbHkgbWF5IHN0 aWxsIGJlCisrIyBleGVjdXRpbmcgdGhlIGNhbGxlciBsaW5lIG9yIG5vdCBhZnRlciBgZmluaXNo Jy4KKytnZGJfdGVzdCAiZmluaXNoIiAiLiooY2FsbCBiYXIgXFwoeSwgeFxcKXxjYWxsIGZvbyBc XCh4LCB6XFwoMjo2LCA0OjcsIDY6OFxcKVxcKSkiCisrZ2RiX3Rlc3QgInAgeigyLDQsNSkiICJc XCRcWzAtOVxdKiA9IDMiCisrZ2RiX3Rlc3QgInAgeigyLDQsNikiICJcXCRcWzAtOVxdKiA9IDYi CisrZ2RiX3Rlc3QgInAgeigyLDQsNykiICJcXCRcWzAtOVxdKiA9IDUiCisrZ2RiX3Rlc3QgInAg eig0LDQsNikiICJcXCRcWzAtOVxdKiA9IDEiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAidmFyei1hbG1vc3RmaWxsZWQiCisrIyBHQ0MgdXNlcyB0aGUgcG9pbnRlciB0eXBlIGhl cmUsIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3QuCisrZ2RiX3Rlc3Qg InB0eXBlIHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxc XCo0KSBcXChcXCpcXClcXCk/IgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBo YXMgYSBidWcgaGVyZSAtICgyOjExLDc6NykKKysjIGFzIGl0IHByb2R1Y2VzIERXX0FUX2xvd2Vy X2JvdW5kID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnQi ICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCgyOjEx LDc6XFwqXFwpXFwpPyIKKytnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlcXSogPSBcXChcXCki CisrZ2RiX3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgorK2dkYl90ZXN0ICJw IHZhcnooMykiICJcXCRcWzAtOVxdKiA9IDQiCisrIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDEpCisr Z2RiX3Rlc3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgorKyMgbWFwcyB0byBmb286 OnZhcnkoMiwyKQorK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIKKysj IG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKKytnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAt OVxdKiA9IDEwIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9keW5hbWljLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAkyMDE0LTA2LTE2IDIzOjMwOjMwLjExMzk0 MDQ4OCArMDIwMAorQEAgLTAsMCArMSw5OCBAQAorKyEgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysh CisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUg Zm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2Ug YnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKworK3N1YnJv dXRpbmUgYmF6CisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZhcnggKDosIDosIDop CisrICByZWFsLCBwb2ludGVyIDo6IHZhcnYgKDosIDosIDopCisrICByZWFsLCB0YXJnZXQgOjog dmFydSAoMSwgMiwgMykKKysgIGxvZ2ljYWwgOjogbAorKyAgYWxsb2NhdGUgKHZhcnggKDE6Niwg NToxNSwgMTc6MjgpKSAgICAgICAgICAgICEgdmFyeC1pbml0CisrICBsID0gYWxsb2NhdGVkICh2 YXJ4KQorKyAgdmFyeCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEg dmFyeC1hbGxvY2F0ZWQKKysgIHZhcngoMSwgNSwgMTcpID0gNworKyAgdmFyeCgyLCA2LCAxOCkg PSA4CisrICB2YXJ4KDYsIDE1LCAyOCkgPSA5CisrICB2YXJ2ID0+IHZhcnggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWZpbGxlZAorKyAgbCA9IGFzc29jaWF0ZWQgKHZh cnYpCisrICB2YXJ2KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2 YXJ2LWFzc29jaWF0ZWQKKysgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAhIHZhcnYtZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIGRlYWxs b2NhdGUgKHZhcngpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZGVhc3NvY2lh dGVkCisrICBsID0gYWxsb2NhdGVkICh2YXJ4KQorKyAgdmFydSg6LCA6LCA6KSA9IDEwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAorKyAgYWxsb2NhdGUgKHZh cnYgKDE6NiwgNToxNSwgMTc6MjgpKQorKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCisrICB2YXJ2 KDosIDosIDopID0gNgorKyAgdmFydigxLCA1LCAxNykgPSA3CisrICB2YXJ2KDIsIDYsIDE4KSA9 IDgKKysgIHZhcnYoNiwgMTUsIDI4KSA9IDkKKysgIGRlYWxsb2NhdGUgKHZhcnYpCisrICBsID0g YXNzb2NpYXRlZCAodmFydikKKysgIHZhcnYgPT4gdmFydQorKyAgdmFydigxLCAxLCAxKSA9IDYK KysgIHZhcnYoMSwgMiwgMykgPSA3CisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKytlbmQgc3Vi cm91dGluZSBiYXoKKytzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykKKysgIHJlYWwgOjogdmFy eSAoOiwgOikKKysgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKKysgIHZhcnkoOiwgOikgPSA0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2VkCisrICB2YXJ5KDEsIDEp ID0gOAorKyAgdmFyeSgyLCAyKSA9IDkKKysgIHZhcnkoMSwgMykgPSAxMAorKyAgdmFydyg6LCA6 LCA6KSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeS1maWxsZWQKKysgIHZh cncoMSwgMSwgMSkgPSA2CisrICB2YXJ3KDIsIDIsIDIpID0gNyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgISB2YXJ3LWFsbW9zdGZpbGxlZAorK2VuZCBzdWJyb3V0aW5lIGZvbworK3N1YnJv dXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQorKyAgcmVhbCA6OiB2YXJ6ICgqKQorKyAgcmVhbCA6OiB2 YXJ0ICgyOjExLCA3OiopCisrICB2YXJ6KDE6MykgPSA0CisrICB2YXJ6KDIpID0gNSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZpbGxlZAorKyAgdmFydCgy LDcpID0gdmFydCgyLDcpCisrZW5kIHN1YnJvdXRpbmUgYmFyCisrcHJvZ3JhbSB0ZXN0CisrICBp bnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCisrICAgIHJlYWwgOjog dmFyeSAoOiwgOikKKysgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQorKyAgICBlbmQgc3Vicm91 dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgaW50ZXJmYWNlCisrICAgIHN1YnJvdXRpbmUgYmFy ICh2YXJ6LCB2YXJ0KQorKyAgICByZWFsIDo6IHZhcnogKCopCisrICAgIHJlYWwgOjogdmFydCAo MjoxMSwgNzoqKQorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgcmVh bCA6OiB4ICgxMCwgMTApLCB5ICg1KSwgeig4LCA4LCA4KQorKyAgeCg6LDopID0gMQorKyAgeSg6 KSA9IDIKKysgIHooOiw6LDopID0gMworKyAgY2FsbCBiYXoKKysgIGNhbGwgZm9vICh4LCB6KDI6 NiwgNDo3LCA2OjgpKQorKyAgY2FsbCBiYXIgKHksIHgpCisrICBpZiAoeCAoMSwgMSkgLm5lLiA4 IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0Cisr ICBpZiAoeCAoMSwgMykgLm5lLiAxMCkgY2FsbCBhYm9ydAorKyAgaWYgKHogKDIsIDQsIDYpIC5u ZS4gNiAub3IuIHogKDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQsIDcpIC5uZS4gNSkgY2Fs bCBhYm9ydAorKyAgaWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwgMi8pKSkgY2FsbCBhYm9y dAorKyAgY2FsbCBmb28gKHRyYW5zcG9zZSAoeCksIHopCisrICBpZiAoeCAoMSwgMSkgLm5lLiA4 IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0Cisr ICBpZiAoeCAoMywgMSkgLm5lLiAxMCkgY2FsbCBhYm9ydAorK2VuZAorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5l eHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0wLDAgKzEsNTkgQEAK KysjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjIAorKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjIAor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisrCisrIyBUaGlzIGZp bGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+LgorKworKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBj b250YWlucyB0ZXN0cyBmb3IgRm9ydHJhbgorKyMgc3RyaW5ncyB3aXRoIGR5bmFtaWMgbGVuZ3Ro LgorKworK3NldCB0ZXN0ZmlsZSAic3RyaW5nIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5 MAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisr Z2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4gewor KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29u dGludWUKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhci1p bml0Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWluaXQiCisrZ2RiX3Rlc3Qg InB0eXBlIGMiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9MVxcKXxcXCoxKSIKKytnZGJfdGVz dCAicHR5cGUgZCIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD04XFwpfFxcKjgpIgorK2dkYl90 ZXN0ICJwdHlwZSBlIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkiCisrZ2Ri X3Rlc3QgInB0eXBlIGYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3 LDg6MTBcXCkiCisrZ2RiX3Rlc3QgInB0eXBlICplIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRz IG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIgorK2dkYl90ZXN0ICJwdHlwZSAqZiIgInR5cGUgPSBj aGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIFxcKDdcXCkiCisrZ2RiX3Rlc3QgInAgYyIgIlxc JFxbMC05XF0qID0gJ2MnIgorK2dkYl90ZXN0ICJwIGQiICJcXCRcWzAtOVxdKiA9ICdkICAgICAg ICciCisrZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2cgICAnIgorK2dkYl90ZXN0ICJw IGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcs ICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdo ICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAg JywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKSIKKytnZGJfdGVzdCAicCAq ZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKKytn ZGJfdGVzdCAicCAqZiIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVy IHZhbHVlLiIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWZp bmlzaCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCisrZ2RiX3Rl c3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKKytnZGJfdGVzdCAi cCBmIiAiXFwkXFswLTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAgJywgJ2YgICAnLCAn ZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJwICpmIHJlLXNldCIK K0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdHJpbmcuZjkwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTE0OTQwNDg5ICswMjAwCitA QCAtMCwwICsxLDM3IEBACisrISBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgor KyEKKyshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHluYW1pYy5l eHAuCisrISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVk aGF0LmNvbT4uCisrISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc3Vicm91dGluZSBmb28gKGUs IGYpCisrICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCisrICBjaGFyYWN0ZXIgKGxlbj04KSA6OiBk CisrICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCisrICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBmICgx OjcsIDg6MTApCisrICBjID0gJ2MnCisrICBkID0gJ2QnCisrICBlID0gJ2UnICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAorKyAgZiA9ICdmJworKyAgZigx LDkpID0gJ2YyJworKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFyLWZpbmlzaAorK2VuZCBzdWJyb3V0aW5lIGZvbworKyAgY2hhcmFjdGVyIChsZW49 NCkgOjogZywgaCAoMTo3LCA4OjEwKQorKyAgZyA9ICdnJworKyAgaCA9ICdoJworKyAgY2FsbCBm b28gKGcsIGgpCisrZW5kCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAJMjAxNC0wNi0xNiAyMzozMDoz MC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0wLDAgKzEsNzIgQEAKKysjIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEgfQorKwor K3NldCB0ZXN0ZmlsZSAic3VicmFuZ2UiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisr aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtz cmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1 bnRvIE1BSU5fX10geworKyAgICBwZXJyb3IgIkNvdWxkbid0IHJ1biB0byBNQUlOX18iCisrICAg IGNvbnRpbnVlCisrfQorKworKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciB2ZXJzaW9uIGJl aW5nIHVzZWQsIHRoZSBuYW1lIG9mIHRoZSA0LWJ5dGUgaW50ZWdlcgorKyMgYW5kIHJlYWwgdHlw ZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuICBGb3IgaW5zdGFuY2UsIGdmb3J0cmFuLTQu MSB1c2VzCisrIyAiaW50NCIgd2hlcmVhcyBnZm9ydHJhbi00LjMgdXNlcyAiaW50KGtpbmQ9NCki LgorK3NldCBpbnQ0ICIoaW50NHxpbnRlZ2VyXFwoa2luZD00XFwpKSIKKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstc3RhdGljIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiYnJlYWstc3RhdGljIiAiLipicmVhay1zdGF0aWMuKiIKKysKKytmb3Jl YWNoIHZhciB7YSBhbGxvYyBwdHJ9IHsKKysgICAgZ2xvYmFsIHBmX3ByZWZpeAorKyAgICBzZXQg b2xkX3ByZWZpeCAkcGZfcHJlZml4CisrICAgIGxhcHBlbmQgcGZfcHJlZml4ICIkdmFyOiIKKysK KysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorKyAgICBnZGJf dGVzdCAicCAkdmFyICgyLCAyOjMpIiB7ID0gXCgyMiwgMzJcKX0KKysgICAgc2V0dXBfa2ZhaWwg IiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorKyAgICBnZGJfdGVzdCAicCAkdmFyICgyOjMs IDMpIiB7ID0gXCgzMiwgMzNcKX0KKysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVz c2lvbi85OTk5IgorKyAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAzMVwp fQorKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisrICAgIGdk Yl90ZXN0ICJwICR2YXIgKDIsIDoyKSIgeyA9IFwoMTIsIDIyXCl9CisrICAgIHNldHVwX2tmYWls ICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKKysgICAgZ2RiX3Rlc3QgInAgJHZhciAoMywg MjoyKSIgeyA9IFwoMjNcKX0KKysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lv bi85OTk5IgorKyAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoMywgMjoyKSIgIiA9ICRpbnQ0IFxc KDI6MlxcKSIKKysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5Igor KyAgICBnZGJfdGVzdCAicCAkdmFyICg0LCA6KSIgeyA9IFwoMTQsIDI0LCAzNFwpfQorKyAgICBz ZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisrICAgIGdkYl90ZXN0ICJw ICR2YXIgKDosIDopIiB7ID0gXChcKCAqMTEsIDEyLCAxMywgMTRcKSBcKCAqMjEsIDIyLCAyMywg MjRcKSBcKCAqMzEsIDMyLCAzMywgMzRcKSAqXCl9CisrICAgIHNldHVwX2tmYWlsICIqLSotKiIg InZsYXJlZ3Jlc3Npb24vOTk5OSIKKysgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDopIiAi ID0gJGludDQgXFwoNCwzXFwpIgorKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNz aW9uLzk5OTkiCisrICAgIGdkYl90ZXN0ICJwICR2YXIgKDopIiAiV3JvbmcgbnVtYmVyIG9mIHN1 YnNjcmlwdHMiCisrICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIK KysgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOiwgOikiICJXcm9uZyBudW1iZXIgb2Ygc3Vic2Ny aXB0cyIKKysKKysgICAgc2V0IHBmX3ByZWZpeCAkb2xkX3ByZWZpeAorK30KKysKKytnZGJfdGVz dF9ub19vdXRwdXQge3NldCAkYT1hfQorK2RlbGV0ZV9icmVha3BvaW50cworK2dkYl91bmxvYWQK KytzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisrZ2RiX3Rlc3Qge3Ag JGEgKDMsIDI6Mil9IHsgPSBcKDIzXCl9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAJMjAxNC0wNi0x NiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0wLDAgKzEsMjggQEAKKyshIENvcHlyaWdo dCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrISAKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrISAKKyshIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKytwcm9ncmFtIHRlc3QKKysgIGludGVnZXIsIHRhcmdldCA6 OiBhICg0LCAzKQorKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogYWxsb2MgKDosIDopCisrICBp bnRlZ2VyLCBwb2ludGVyIDo6IHB0ciAoOiwgOikKKysgIGRvIDEgaSA9IDEsIDQKKysgIGRvIDEg aiA9IDEsIDMKKysgICAgYSAoaSwgaikgPSBqICogMTAgKyBpCisrMSBjb250aW51ZQorKyAgYWxs b2NhdGUgKGFsbG9jICg0LCAzKSkKKysgIGFsbG9jID0gYQorKyAgcHRyID0+IGEKKysgIHdyaXRl ICgqLCopIGEgICAgICAgICAgICAgICAgICEgYnJlYWstc3RhdGljCisrZW5kCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWky LXZhci1zdGFsZS10eXBlLmMJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BA IC0wLDAgKzEsMjYgQEAKKysvKiBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK2ludAorK21haW4gKGludCBhcmdj LCBjaGFyICoqYXJndikKKyt7CisrICBjaGFyIHZsYVthcmdjXTsKKysKKysgIHZsYVswXSA9IDA7 CS8qIGJyZWFrLWhlcmUgKi8KKysKKysgIHJldHVybiAwOworK30KK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXIt c3RhbGUtdHlwZS5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0w LDAgKzEsNTcgQEAKKysjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrbG9hZF9saWIgbWkt c3VwcG9ydC5leHAKKytzZXQgTUlGTEFHUyAiLWk9bWkyIgorKworK2dkYl9leGl0CisraWYgW21p X2dkYl9zdGFydF0geworKyAgICBjb250aW51ZQorK30KKysKKytzZXQgdGVzdGZpbGUgIm1pMi12 YXItc3RhbGUtdHlwZSIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUg W3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9XQorK2lmIHtbYnVpbGRfZXhlY3V0YWJs ZSAke3Rlc3RmaWxlfS5leHAgJHRlc3RmaWxlICRzcmNmaWxlXSA9PSAtMX0geworKyAgICByZXR1 cm4gLTEKKyt9CisrCisrbWlfZGVsZXRlX2JyZWFrcG9pbnRzCisrbWlfZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrbWlfZ2RiX2xvYWQgJHtiaW5maWxlfQorKworK21pX2dk Yl90ZXN0IHstaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlICJtYWludGVuYW5jZSBzZXQgaW50ZXJu YWwtZXJyb3IgcXVpdCB5ZXMifSBcCisrICB7XF5kb25lfSBcCisrICAibWFpbnRlbmFuY2Ugc2V0 IGludGVybmFsLWVycm9yIHF1aXQgeWVzIgorKworK21pX2dkYl90ZXN0IHstaW50ZXJwcmV0ZXIt ZXhlYyBjb25zb2xlICJtYWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgY29yZWZpbGUgeWVz In0gXAorKyAge1xeZG9uZX0gXAorKyAgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBj b3JlZmlsZSB5ZXMiCisrCisrc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWhl cmUiXQorK3NldCBmdW5jICJtYWluIgorKworK21pX2dkYl90ZXN0ICItYnJlYWstaW5zZXJ0IC10 ICRzcmNmaWxlOiRsaW5lIiBcCisrICAiXFxeZG9uZSxia3B0PVx7bnVtYmVyPVwiXFswLTlcXStc Iix0eXBlPVwiYnJlYWtwb2ludFwiLGRpc3A9XCJkZWxcIixlbmFibGVkPVwieVwiLGFkZHI9XCIk aGV4XCIsZnVuYz1cIiRmdW5jXChcXFwoLipcXFwpXCk/XCIsZmlsZT1cIi4qXCIsZnVsbG5hbWU9 XCIuKlwiLGxpbmU9XCIkbGluZVwiLFxbXlxyXG5cXSosb3JpZ2luYWwtbG9jYXRpb249XCIuKlwi XH0iIFwKKysgICJicmVha3BvaW50IGF0ICRmdW5jIgorKworK2lmIHsgW21pX3J1bl9jbWRdIDwg MCB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhp dCIgJGZ1bmMgIi4qIiAiLioiICJcWzAtOVxdKyIgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJzdG9w IGFmdGVyIGluaXRpYWxpemluZyB2bGEiCisrCisrbWlfY3JlYXRlX3Zhcm9iaiAidmxhIiAidmxh IiAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYSIKKysKKyttaV9nZGJfdGVzdCAiLXZhci11cGRh dGUgKiIgIlxcXmRvbmUsY2hhbmdlbGlzdD0uKiIgIi12YXItdXBkYXRlICoiCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rl ci1mdW5jLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjExNTk0 MDQ5MCArMDIwMAorQEAgLTAsMCArMSwyMiBAQAorKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisrCisraW50CisrZnVuYyAoaW50ICphcnIpCisreworKyAgcmV0dXJuIGFyclswXTsK Kyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJy YXktZnJvbS1yZWdpc3Rlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCTIwMTQtMDYtMTYgMjM6MzA6MzAu MTE1OTQwNDkwICswMjAwCitAQCAtMCwwICsxLDI4IEBACisrLyogVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKysKKytleHRlcm4gaW50IGZ1bmMgKGludCAqYXJyKTsKKysKKytpbnQKKytt YWluICh2b2lkKQorK3sKKysgIGludCBhcnJbXSA9IHsgNDIgfTsKKysKKysgIGZ1bmMgKGFycik7 CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5leHAKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4 cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjExNTk0MDQ5MCArMDIwMAorQEAgLTAsMCArMSwzMyBAQAor KyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysjCisrIyBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0 aW5nIGFycmF5LWZyb20tcmVnaXN0ZXIuZXhwICJhcnJheS1mcm9tLXJlZ2lzdGVyIiAgICAgIFwK KysJCQkgIHthcnJheS1mcm9tLXJlZ2lzdGVyLmMgYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmN9 IFwKKysJCQkgIHtkZWJ1ZyBvcHRpbWl6ZT0tTzJ9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQor KworK2lmICFbcnVudG8gZnVuY10gdGhlbiB7CisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJf dGVzdCAicCBhcnIiICJcXCRcWzAtOVxdKyA9IFxcKGludCBcXCpcXCkgKjB4XFswLTlhLWZcXSsi CisrCisrIyBTZWVuIHJlZ3Jlc3Npb246CisrIyBBZGRyZXNzIHJlcXVlc3RlZCBmb3IgaWRlbnRp ZmllciAiYXJyIiB3aGljaCBpcyBpbiByZWdpc3RlciAkcmRpCisrZ2RiX3Rlc3QgInAgYXJyXFsw XF0iICJcXCRcWzAtOVxdKyA9IDQyIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rl c3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCTIwMTQtMDYtMTYgMjM6MzA6 MzAuMTE1OTQwNDkwICswMjAwCitAQCAtMCwwICsxLDEwNCBAQAorKyMgQ29weXJpZ2h0IDIwMDgs IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKysgICAgc3RyYWNlICR0 cmFjZWxldmVsCisrfQorKworK2xvYWRfbGliICJwYXNjYWwuZXhwIgorKworK3NldCB0ZXN0Zmls ZSAiYXJyYXlzIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LnBhcworK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0kRVhFRVhUCisrCisrIyBUaGVzZSB0ZXN0cyBv bmx5IHdvcmsgd2l0aCBmcGMsIHVzaW5nIHRoZSAtZ3czIGNvbXBpbGUtb3B0aW9uCisrcGFzY2Fs X2luaXQKKytpZiB7ICRwYXNjYWxfY29tcGlsZXJfaXNfZnBjICE9IDEgfSB7CisrICByZXR1cm4g LTEKKyt9CisrCisrIyBEZXRlY3QgaWYgdGhlIGZwYyB2ZXJzaW9uIGlzIGJlbG93IDIuMy4wCisr c2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzIDEKKytpZiB7ICgkZnBj dmVyc2lvbl9tYWpvciA8IDIpIHx8ICggKCRmcGN2ZXJzaW9uX21ham9yID09IDIpICYmICgkZnBj dmVyc2lvbl9taW5vciA8IDMpKX0gIHsKKysgIHNldCBmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9k eW5hbWljX2FycmF5cyAwCisrfQorKworKworK2lmIHtbZ2RiX2NvbXBpbGVfcGFzY2FsICItZ3cz ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg W2xpc3QgZGVidWcgXV0gIT0gIiIgfSB7CisrICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQK KytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJf bG9hZCAke2JpbmZpbGV9Cisrc2V0IGJwX2xvY2F0aW9uMSBbZ2RiX2dldF9saW5lX251bWJlciAi c2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KKytzZXQgYnBfbG9jYXRpb24yIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJzZXQgYnJlYWtwb2ludCAyIGhlcmUiXQorKworKworK2lmIHsgW2dkYl9icmVha3Bv aW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjF9XSB9IHsKKysgICAgcGFzcyAic2V0dGluZyBi cmVha3BvaW50IDEiCisrfQorK2lmIHsgW2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9s b2NhdGlvbjJ9XSB9IHsKKysgICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50IDIiCisrfQorKwor KyMgVmVyaWZ5IHRoYXQgInN0YXJ0IiBsYW5kcyBpbnNpZGUgdGhlIHJpZ2h0IHByb2NlZHVyZS4K KytpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7CisrICAgIHVudGVzdGVkIHN0YXJ0CisrICAg IHJldHVybiAtMQorK30KKysKKytnZGJfdGVzdCAiIiAiLiogYXQgLioke3NyY2ZpbGV9LioiICJz dGFydCIKKysKKytnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2NhdGlvbjF9 LioiICJHb2luZyB0byBmaXJzdCBicmVha3BvaW50IgorKworK2dkYl90ZXN0ICJwcmludCBTdGF0 QXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwg NjAsIDYxXFx9IiAiUHJpbnQgc3RhdGljIGFycmF5IG9mIGludGVnZXIgdHlwZSIKKytnZGJfdGVz dCAicHJpbnQgU3RhdEFyckludF8iICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2 LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQcmludCBzdGF0aWMgYXJyYXkgb2YgaW50ZWdlciIK KysKKytnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2NhdGlvbjJ9LioiICJH b2luZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKKysKKytnZGJfdGVzdCAicHJpbnQgU3RhdEFyckNo YXIiICIuKiA9ICdhYmNkZWZnaGlqa2wnIiAiUHJpbnQgc3RhdGljIGFycmF5IG9mIGNoYXIiCisr Z2RiX3Rlc3QgInByaW50IFN0YXQyZEFyckludCIgIi4qID0gXFx7XFx7MCwgMSwgMiwgMywgNFxc fSwgXFx7MSwgMiwgMywgNCwgNVxcfSwgXFx7MiwgMywgNCwgNSwgNlxcfSwgXFx7MywgNCwgNSwg NiwgN1xcfSwgXFx7NCwgNSwgNiwgNywgOFxcfSwgXFx7NSwgNiwgNywgOCwgOVxcfSwgXFx7Niwg NywgOCwgOSwgMTBcXH0sIFxcezcsIDgsIDksIDEwLCAxMVxcfSwgXFx7OCwgOSwgMTAsIDExLCAx MlxcfSwgXFx7OSwgMTAsIDExLCAxMiwgMTNcXH0sIFxcezEwLCAxMSwgMTIsIDEzLCAxNFxcfSwg XFx7MTEsIDEyLCAxMywgMTQsIDE1XFx9XFx9IiAiUHJpbnQgc3RhdGljIDItZGltZW5zaW9uYWwg YXJyYXkgb2YgaW50ZWdlciIKKysKKytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5h bWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoiCisrfQorK2dkYl90ZXN0 ICJwcmludCBEeW5BcnJJbnQiICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1 NywgNTgsIDU5LCA2MCwgNjEsIDYyXFx9IiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBpbnRlZ2Vy IHR5cGUiCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0g MH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAicHJpbnQgRHluQXJy SW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYw LCA2MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIiCisrCisraWYgeyAk ZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0geworKyAgc2V0dXBf eGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAicHJpbnQgcyIgIi4qID0gJ3Rlc3QnIzAnc3Ry aW5nJyIgIlByaW50IHN0cmluZyBjb250YWluaW5nIG51bGwtY2hhciIKKysKKytpZiB7ICRmcGNf Z2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFp bCAiKi0qLSoiCisrfQorK2dkYl90ZXN0ICJwcmludCBEeW5BcnJTdHIiICIuKiA9IFxceydkc3Ry MCcsICdkc3RyMScsICdkc3RyMicsICdkc3RyMycsICdkc3RyNCcsICdkc3RyNScsICdkc3RyNics ICdkc3RyNycsICdkc3RyOCcsICdkc3RyOScsICdkc3RyMTAnLCAnZHN0cjExJywgJ2RzdHIxMidc XH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIHN0cmluZyIKKysKKytpZiB7ICRmcGNfZ2VuZXJh dGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0q LSoiCisrfQorK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyU3RyIiAiLiogPSBcXHsnc3RyMCcsICdz dHIxJywgJ3N0cjInLCAnc3RyMycsICdzdHI0JywgJ3N0cjUnLCAnc3RyNicsICdzdHI3JywgJ3N0 cjgnLCAnc3RyOScsICdzdHIxMCcsICdzdHIxMScsICdzdHIxMidcXH0iICJQcmludCBzdGF0aWMg YXJyYXkgb2Ygc3RyaW5nIgorKworK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFt aWNfYXJyYXlzID09IDB9IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3Qg InByaW50IER5bkFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2xtJyIgIlByaW50IGR5bmFtaWMg YXJyYXkgb2YgY2hhciIKKysKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3Vp dGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEx NTk0MDQ5MCArMDIwMAorQEAgLTAsMCArMSw4MiBAQAorK3sKKysgQ29weXJpZ2h0IDIwMDgsIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor K30KKysKKytwcm9ncmFtIGFycmF5czsKKysKKyt7JG1vZGUgb2JqZnBjfXskaCt9CisrCisrdXNl cyBzeXN1dGlsczsKKysKKyt0eXBlIFRTdGF0QXJySW50PSBhcnJheVswLi4xMV0gb2YgaW50ZWdl cjsKKysgICAgIFREeW5BcnJJbnQ9IGFycmF5IG9mIGludGVnZXI7CisrICAgICBUU3RhdEFyclN0 cj0gYXJyYXlbMC4uMTJdIG9mIHN0cmluZzsKKysgICAgIFREeW5BcnJTdHI9IGFycmF5IG9mIHN0 cmluZzsKKysgICAgIFREeW5BcnJDaGFyID0gYXJyYXkgb2YgY2hhcjsKKysgICAgIFRTdGF0QXJy Q2hhciA9IGFycmF5IFswLi4xMV0gb2YgY2hhcjsKKysKKysgICAgIFRTdGF0MmRBcnJJbnQgPSBh cnJheVswLi4xMSwwLi40XSBvZiBpbnRlZ2VyOworKworK3ZhciBTdGF0QXJySW50OiBUU3RhdEFy ckludDsKKysgICAgU3RhdEFyckludF86IEFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOworKyAgICBE eW5BcnJJbnQ6ICBURHluQXJySW50OworKyAgICBEeW5BcnJJbnRfOiBBcnJheSBvZiBpbnRlZ2Vy OworKyAgICBTdGF0QXJyU3RyOiBUU3RhdEFyclN0cjsKKysgICAgRHluQXJyU3RyOiBURHluQXJy U3RyOworKyAgICBTdGF0QXJyQ2hhcjogVFN0YXRBcnJDaGFyOworKyAgICBEeW5BcnJDaGFyOiBU RHluQXJyQ2hhcjsKKysKKysgICAgU3RhdDJkQXJySW50OiBUU3RhdDJkQXJySW50OworKworKyAg ICBzOiBzdHJpbmc7CisrCQorKyAgICBpLGogOiBpbnRlZ2VyOworKworK2JlZ2luCisrICBmb3Ig aSA6PSAwIHRvIDExIGRvCisrICAgIGJlZ2luCisrICAgIFN0YXRBcnJJbnRbaV06PSBpKzUwOwor KyAgICBTdGF0QXJySW50X1tpXTo9IGkrNTA7CisrICAgIFN0YXRBcnJDaGFyW2ldOj0gY2hyKG9y ZCgnYScpK2kpOworKyAgICBmb3IgaiA6PSAwIHRvIDQgZG8KKysgICAgICBTdGF0MmRBcnJJbnRb aSxqXTo9aStqOworKyAgICBlbmQ7CisrICB3cml0ZWxuKFN0YXRBcnJJbnRfWzBdKTsKKysgIHdy aXRlbG4oU3RhdEFyckludFswXSk7IHsgc2V0IGJyZWFrcG9pbnQgMSBoZXJlIH0KKysgIHdyaXRl bG4oU3RhdEFyckNoYXJbMF0pOworKyAgd3JpdGVsbihTdGF0MmRBcnJJbnRbMCwwXSk7CisrCisr ICBzZXRsZW5ndGgoRHluQXJySW50LDEzKTsKKysgIHNldGxlbmd0aChEeW5BcnJJbnRfLDEzKTsK KysgIHNldGxlbmd0aChEeW5BcnJTdHIsMTMpOworKyAgc2V0bGVuZ3RoKER5bkFyckNoYXIsMTMp OworKyAgZm9yIGkgOj0gMCB0byAxMiBkbworKyAgICBiZWdpbgorKyAgICBEeW5BcnJJbnRbaV06 PSBpKzUwOworKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKKysgICAgRHluQXJyQ2hhcltpXTo9 IGNocihvcmQoJ2EnKStpKTsKKysgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50dG9zdHIoaSk7 CisrICAgIER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOworKyAgICBlbmQ7CisrICB3 cml0ZWxuKER5bkFyckludF9bMV0pOworKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0pOyAKKysgIHdy aXRlbG4oRHluQXJyU3RyWzFdKTsgCisrICB3cml0ZWxuKFN0YXRBcnJTdHJbMV0pOworKyAgd3Jp dGVsbihEeW5BcnJDaGFyWzFdKTsKKysKKysgIHMgOj0gJ3Rlc3QnIzAnc3RyaW5nJzsKKysgIHdy aXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0KKytlbmQuCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxNC0w Ni0xNiAyMzozMDoyOS4yNzg5Mzk3MDAgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTc5NDA0OTIgKzAy MDAKK0BAIC0xNTksNiArMTU5LDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CisgCSAgICBzZW5k X2dkYiAieVxuIgorIAkgICAgZXhwX2NvbnRpbnVlCisgCX0KKysJLXJlICJBIHByb2dyYW0gaXMg YmVpbmcgZGVidWdnZWQgYWxyZWFkeS4uKkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjaGFuZ2Ug dGhlIGZpbGUuKnkgb3Igbi4gJCJcCisrCSAgICB7IHNlbmRfZ2RiICJ5XG4iCisrCQl2ZXJib3Nl ICJcdFx0VW5sb2FkaW5nIHN5bWJvbHMgZm9yIHByb2dyYW0gYmVpbmcgZGVidWdnZWQiCisrCSAg ICBleHBfY29udGludWUKKysJfQorIAktcmUgIkRpc2NhcmQgc3ltYm9sIHRhYmxlIGZyb20gLip5 IG9yIG4uKiQiIHsKKyAJICAgIHNlbmRfZ2RiICJ5XG4iCisgCSAgICBleHBfY29udGludWUKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv cGFzY2FsLmV4cAkyMDE0LTA2LTEzIDAzOjU5OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAkyMDE0LTA2LTE2IDIz OjMwOjMwLjExNzk0MDQ5MiArMDIwMAorQEAgLTM3LDYgKzM3LDkgQEAgcHJvYyBwYXNjYWxfaW5p dCB7fSB7CisgICAgIGdsb2JhbCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjCisgICAgIGdsb2JhbCBn cGNfY29tcGlsZXIKKyAgICAgZ2xvYmFsIGZwY19jb21waWxlcgorKyAgICBnbG9iYWwgZnBjdmVy c2lvbl9tYWpvcgorKyAgICBnbG9iYWwgZnBjdmVyc2lvbl9taW5vcgorKyAgICBnbG9iYWwgZnBj dmVyc2lvbl9yZWxlYXNlCisgICAgIGdsb2JhbCBlbnYKKyAgCisgICAgIGlmIHsgJHBhc2NhbF9p bml0X2RvbmUgPT0gMSB9IHsKK0BAIC02NCw2ICs2NywyMCBAQCBwcm9jIHBhc2NhbF9pbml0IHt9 IHsKKyAJICAgIHNldCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjIDEKKyAJICAgIHZlcmJvc2UgLWxv ZyAiRnJlZSBQYXNjYWwgY29tcGlsZXIgZm91bmQiCisgCX0KKysKKysJIyBEZXRlY3QgdGhlIGZw Yy12ZXJzaW9uCisrCWlmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgPT0gMSB9IHsKKysJICAg IHNldCBmcGN2ZXJzaW9uX21ham9yIDEKKysJICAgIHNldCBmcGN2ZXJzaW9uX21pbm9yIDAKKysJ ICAgIHNldCBmcGN2ZXJzaW9uX3JlbGVhc2UgMAorKwkgICAgc2V0IGZwY3ZlcnNpb24gWyByZW1v dGVfZXhlYyBob3N0ICRmcGNfY29tcGlsZXIgIi1pViIgXSAKKysJICAgIGlmIFtyZWdleHAgey4q KFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/fSAkZnBjdmVyc2lvbl0geworKyAgICAgICAg ICAgICAgcmVnc3ViIHsuKihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBj dmVyc2lvbiB7XDF9IGZwY3ZlcnNpb25fbWFqb3IKKysgICAgICAgICAgICAgIHJlZ3N1YiB7Lioo WzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLj9cbj8uP30gJGZwY3ZlcnNpb24ge1wyfSBmcGN2 ZXJzaW9uX21pbm9yCisrICAgICAgICAgICAgICByZWdzdWIgey4qKFswLTldKylcLihbMC05XSsp XC4oWzAtOV0rKS4/XG4/Lj99ICRmcGN2ZXJzaW9uIHtcM30gZnBjdmVyc2lvbl9yZWxlYXNlCisr CSAgICB9CisrICAgICAgICAgICAgdmVyYm9zZSAtbG9nICJGcmVlcGFzY2FsIHZlcnNpb246ICRm cGN2ZXJzaW9uX21ham9yLiRmcGN2ZXJzaW9uX21pbm9yLiRmcGN2ZXJzaW9uX3JlbGVhc2UiCisr CX0KKyAgICAgfQorICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCisgfSAgIAoKZGlmZiAtLWdp dCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDY2OTRkYzAuLmM2 YmU1MWMgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRj aApAQCAtMiwzNyArMiwyNCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVj dEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFn ZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDIxYzhhYzhmYWE0MjU2ZjI3ZDQ3NTFkOGYw ZDJiMjE4ZjJkMjMyYTgKK2NvbW1pdCBiODgyMzBlZGY0ZTJkYTk0OGQ2MzNjMjgzYmEwODkzYmYy MmJkN2FlCiAKLWJyYW5jaCBqYW5rcmF0b2NodmlsL2ZlZG9yYWdkYjc3IC0gdGhlIG1lcmdlIG9m IGJyYW5jaGVzOgotamFua3JhdG9jaHZpbC92bGEKIHRyb21leS9weXRob24KIAogCiBkaWZmIC0t Z2l0IGEvUkVBRE1FLmFyY2hlciBiL1JFQURNRS5hcmNoZXIKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi41YWU1ODdlCitpbmRleCAwMDAwMDAwLi4xNzNiOGVhCiAtLS0gL2Rl di9udWxsCiArKysgYi9SRUFETUUuYXJjaGVyCi1AQCAtMCwwICsxLDEzIEBACi0rTWVyZ2UgZm9y IEZlZG9yYSAyMTogaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvY2dpdC9nZGIuZ2l0Lwot KwotK2phbmtyYXRvY2h2aWwvdmxhCi0rdHJvbWV5L3B5dGhvbgotKwotKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0BAIC0w LDAgKzEsMiBAQAogK1RoaXMgYnJhbmNoIG9yaWdpbmFsbHkgaGVsZCB0aGUgUHl0aG9uIGNvZGUg Zm9yIGdkYi4gIEl0IHN0aWxsIGV4aXN0cwogK2JlY2F1c2UgYSBzbWFsbCBhbW91bnQgb2YgY29k ZSBoZXJlIGhhcyBub3QgeWV0IGJlZW4gbWVyZ2VkIHVwc3RyZWFtLgotKwotKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLStD IHZhcmlhYmxlIGxlbmd0aCBhcnJheXMgLyBEV19GT1JNX2Jsb2NrIC8gRm9ydHJhbiBkeW5hbWlj IGFycmF5cy4KLStpbXBsZW1lbnRhdGlvbiBwbGFuOiAgICAgICAgICAgICBodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLzIwMTItMTEvbXNnMDAwOTQuaHRtbAotK2V4cGxhbmF0aW9uIG9mIGl0 cyBtZXJnZSBzdGF0dXM6IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIvMjAxMS0wMy9tc2cw MDAyMS5odG1sCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmlu Ci1pbmRleCA4MjRiMjZiLi41NmYwNTJhIDEwMDY0NAoraW5kZXggZWEyN2NmNS4uYmMwNDAyNCAx MDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAt MTM3Miw2ICsxMzcyLDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0 YXR1cworQEAgLTE0NzYsNiArMTQ3NiwxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmlu IGNvbmZpZy5zdGF0dXMKICAJICBDT05GSUdfTElOS1M9IFwKICAJICAkKFNIRUxMKSBjb25maWcu c3RhdHVzCiAgCkBAIC00MiwxODAgKzI5LDM5IEBAIGluZGV4IDgyNGIyNmIuLjU2ZjA1MmEgMTAw NjQ0CiArCSAgQ09ORklHX0hFQURFUlM9IFwKICsJICAkKFNIRUxMKSBjb25maWcuc3RhdHVzCiAr Ci0gY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZp Z3VyZS5ob3N0IGRldmVsb3BtZW50LnNoCisgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZp Z3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0IC4uL2JmZC9kZXZlbG9wbWVudC5zaAog IAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawogIAotZGlmZiAtLWdpdCBhL2dkYi9h ZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKLWluZGV4IGU3MGEzM2IuLjk3N2YzZTIgMTAwNjQ0 Ci0tLS0gYS9nZGIvYWRhLWxhbmcuYwotKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMjcwMyw2 ICsxMjcwMyw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCi0gCi0gc3RhdGljIGludAotIGFkYV9vcGVyYXRv cl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCSAgICBpbnQgKCp0 eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkgICAgaW50ICgq b2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAotIAkJ ICAgIHZvaWQgKmRhdGEpCi0gewotQEAgLTEyNzE3LDEyICsxMjcxOCwxNSBAQCBhZGFfb3BlcmF0 b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0gCWJyZWFrOwotIAot ICAgICAgIGRlZmF1bHQ6Ci0tCXJldHVybiBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoZXhwLCBw b3MsIG9iamZpbGVfZnVuYywgZGF0YSk7Ci0rCXJldHVybiBvcGVyYXRvcl9jaGVja19zdGFuZGFy ZCAoZXhwLCBwb3MsIHR5cGVfZnVuYywgb2JqZmlsZV9mdW5jLAotKwkJCQkJZGF0YSk7Ci0gICAg IH0KLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhl eSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0gCi0tICBpZiAodHlwZSAmJiBUWVBFX09CSkZJ TEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBlX2Z1bmMpICh0eXBl LCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5 cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpG SUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVybiAxOwotIAotZGlmZiAtLWdpdCBhL2dkYi9i bG9jay5jIGIvZ2RiL2Jsb2NrLmMKLWluZGV4IDJhZTZlZTIuLjM3NmExZTggMTAwNjQ0Ci0tLS0g YS9nZGIvYmxvY2suYwotKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC02OTMsMyArNjkzLDIxIEBAIGJs b2NrX2l0ZXJfbWF0Y2hfbmV4dCAoY29uc3QgY2hhciAqbmFtZSwKLSAKLSAgIHJldHVybiBibG9j a19pdGVyX21hdGNoX3N0ZXAgKGl0ZXJhdG9yLCBuYW1lLCBjb21wYXJlLCAwKTsKLSB9Ci0rCi0r LyogUmV0dXJuIE9CSkZJTEUgaW4gd2hpY2ggQkxPQ0sgaXMgbG9jYXRlZCBvciBOVUxMIGlmIHdl IGNhbm5vdCBmaW5kIGl0IGZvcgotKyAgIHdoYXRldmVyIHJlYXNvbi4gICovCi0rCi0rc3RydWN0 IG9iamZpbGUgKgotK2Jsb2NrX29iamZpbGUgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCi0r ewotKyAgc3RydWN0IHN5bWJvbCAqZnVuYzsKLSsKLSsgIGlmIChibG9jayA9PSBOVUxMKQotKyAg ICByZXR1cm4gTlVMTDsKLSsKLSsgIGZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChibG9j ayk7Ci0rICBpZiAoZnVuYyA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIHJldHVy biBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2JqZmlsZTsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2Js b2NrLmggYi9nZGIvYmxvY2suaAotaW5kZXggY2ExNDNhOS4uMGYwNjVmOCAxMDA2NDQKLS0tLSBh L2dkYi9ibG9jay5oCi0rKysgYi9nZGIvYmxvY2suaAotQEAgLTI3OSw0ICsyNzksNiBAQCBleHRl cm4gc3RydWN0IHN5bWJvbCAqYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFyICpuYW1l LAotICAgICAgICAoc3ltKTsJCQkJCQlcCi0gICAgICAgIChzeW0pID0gYmxvY2tfaXRlcmF0b3Jf bmV4dCAoJihpdGVyKSkpCi0gCi0rZXh0ZXJuIHN0cnVjdCBvYmpmaWxlICpibG9ja19vYmpmaWxl IChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSsKLSAjZW5kaWYgLyogQkxPQ0tfSCAqLwot ZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1pbmRleCA2 NmE2OWI1Li45NTJlMWM1IDEwMDY0NAotLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwotKysrIGIvZ2Ri L2JyZWFrcG9pbnQuYwotQEAgLTE1NzM0LDYgKzE1NzM0LDI0IEBAIGFsbF90cmFjZXBvaW50cyAo dm9pZCkKLSAgIHJldHVybiB0cF92ZWM7Ci0gfQotIAotKyNpZiAwCi0rLyogQ2FsbCB0eXBlX21h cmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmls ZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLSticmVha3BvaW50X3R5cGVzX21hcmtfdXNlZCAodm9p ZCkKLSt7Ci0rICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKLSsKLSsgIEFMTF9CUkVBS1BPSU5UUyAo YikKLSsgICAgewotKyAgICAgIGlmIChiLT5leHApCi0rCWV4cF90eXBlc19tYXJrX3VzZWQgKGIt PmV4cCk7Ci0rICAgICAgaWYgKGItPnZhbCkKLSsJdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUg KGItPnZhbCkpOwotKyAgICB9Ci0rfQotKyNlbmRpZgotKwotIAwKLSAvKiBUaGlzIGhlbHAgc3Ry aW5nIGlzIHVzZWQgZm9yIHRoZSBicmVhaywgaGJyZWFrLCB0YnJlYWsgYW5kIHRoYnJlYWsKLSAg ICBjb21tYW5kcy4gIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0 aW9uLgotQEAgLTE2Njk5LDQgKzE2NzE3LDcgQEAgYWdlbnQtcHJpbnRmIFwicHJpbnRmIGZvcm1h dCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBhcmduXG5cCi0gCi0gICBvYnNlcnZl cl9hdHRhY2hfYWJvdXRfdG9fcHJvY2VlZCAoYnJlYWtwb2ludF9hYm91dF90b19wcm9jZWVkKTsK LSAgIG9ic2VydmVyX2F0dGFjaF90aHJlYWRfZXhpdCAocmVtb3ZlX3RocmVhZGVkX2JyZWFrcG9p bnRzKTsKLSsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90 eXBlc19tYXJrX3VzZWQpOwotKyNlbmRpZgotIH0KLWRpZmYgLS1naXQgYS9nZGIvYy10eXBlcHJp bnQuYyBiL2dkYi9jLXR5cGVwcmludC5jCi1pbmRleCA0ZWRjOWVjLi4yOTJlZGRiIDEwMDY0NAot LS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKLSsrKyBiL2dkYi9jLXR5cGVwcmludC5jCi1AQCAtNjg5 LDcgKzY4OSwxMyBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0 eXBlLAotIAotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIChpc192ZWN0b3IgPwotIAkJCQkg ICAiIF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSgiIDogIlsiKSk7Ci0tCWlmIChnZXRfYXJy YXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi0rCWlmIChUWVBFX1JB TkdFX0RBVEEgKFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpLT5oaWdoLmtpbmQKLSsJICAgICE9IFJB TkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQpCi0rCSAgewotKwkgICAgLyogTm8gXygpIC0gcHJpbnRl ZCBzb3VyY2VzIHNob3VsZCBub3QgYmUgbG9jYWxlIGRlcGVuZGVudC4gICovCi0rCSAgICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2YXJpYWJsZSIpOwotKwkgIH0KLSsJZWxzZSBpZiAoZ2V0 X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpKQotIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVzIiwgCi0gCQkJICAgIHBsb25nZXN0IChoaWdoX2JvdW5k IC0gbG93X2JvdW5kICsgMSkpOwotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIChpc192ZWN0 b3IgPyAiKSkpIiA6ICJdIikpOwotZGlmZiAtLWdpdCBhL2dkYi9jbGVhbnVwcy5jIGIvZ2RiL2Ns ZWFudXBzLmMKLWluZGV4IGU1MjkxYWIuLjQ4MjA5NzIgMTAwNjQ0Ci0tLS0gYS9nZGIvY2xlYW51 cHMuYwotKysrIGIvZ2RiL2NsZWFudXBzLmMKLUBAIC0yNjEsOSArMjYxLDExIEBAIHNhdmVfZmlu YWxfY2xlYW51cHMgKHZvaWQpCi0gc3RhdGljIHZvaWQKLSByZXN0b3JlX215X2NsZWFudXBzIChz dHJ1Y3QgY2xlYW51cCAqKnBteV9jaGFpbiwgc3RydWN0IGNsZWFudXAgKmNoYWluKQotIHsKLSsj aWYgMCAvKiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEgKi8KLSAgIGlmICgqcG15X2NoYWluICE9 IFNFTlRJTkVMX0NMRUFOVVApCi0gICAgIGludGVybmFsX3dhcm5pbmcgKF9fRklMRV9fLCBfX0xJ TkVfXywKLSAJCSAgICAgIF8oInJlc3RvcmVfbXlfY2xlYW51cHMgaGFzIGZvdW5kIGEgc3RhbGUg Y2xlYW51cCIpKTsKLSsjZW5kaWYKLSAKLSAgICpwbXlfY2hhaW4gPSBjaGFpbjsKLSB9CiBkaWZm IC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGIvZ2RiL2RhdGEtZGlyZWN0 b3J5L01ha2VmaWxlLmluCi1pbmRleCBlNTM1MzE2Li40NDRkZTlkIDEwMDY0NAoraW5kZXggYjlm Y2MwMy4uM2MyYWZlMiAxMDA2NDQKIC0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgogKysrIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi1AQCAtNjMsMTMgKzYzLDIx IEBAIFBZVEhPTl9GSUxFUyA9IFwKLSAJZ2RiL3Byb21wdC5weSBcCitAQCAtNjYsNiArNjYsOCBA QCBQWVRIT05fRklMRVMgPSBcCisgCWdkYi94bWV0aG9kLnB5IFwKICAJZ2RiL2NvbW1hbmQvYm91 bmRfcmVnaXN0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvX19pbml0X18ucHkgXAogKwlnZGIvY29t bWFuZC9pZ25vcmVfZXJyb3JzLnB5IFwKICsJZ2RiL2NvbW1hbmQvcGFob2xlLnB5IFwKKyAJZ2Ri L2NvbW1hbmQveG1ldGhvZHMucHkgXAogIAlnZGIvY29tbWFuZC9mcmFtZV9maWx0ZXJzLnB5IFwK ICAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVycy5weSBcCi0gCWdkYi9jb21tYW5kL3ByZXR0eV9w cmludGVycy5weSBcCitAQCAtNzMsNyArNzUsMTAgQEAgUFlUSE9OX0ZJTEVTID0gXAogIAlnZGIv Y29tbWFuZC9wcm9tcHQucHkgXAogIAlnZGIvY29tbWFuZC9leHBsb3JlLnB5IFwKICAJZ2RiL2Z1 bmN0aW9uL19faW5pdF9fLnB5IFwKIC0JZ2RiL2Z1bmN0aW9uL3N0cmZucy5weQogKwlnZGIvZnVu Y3Rpb24vc3RyZm5zLnB5IFwKLSsJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwKICsJZ2RiL2Z1 bmN0aW9uL2NhbGxlcl9pcy5weSBcCiArCWdkYi9mdW5jdGlvbi9pbl9zY29wZS5weSBcCi0rCWdk Yi9wcmludGluZy5weSBcCi0rCWdkYi9wcm9tcHQucHkgXAogKwlnZGIvdHlwZXMucHkKICAKLSBT WVNURU1fR0RCSU5JVF9ESVIgPSBzeXN0ZW0tZ2RiaW5pdAotIFNZU1RFTV9HREJJTklUX0lOU1RB TExfRElSID0gJChERVNURElSKSQoR0RCX0RBVEFESVIpLyQoU1lTVEVNX0dEQklOSVRfRElSKQor IEdVSUxFX0RJUiA9IGd1aWxlCisgR1VJTEVfSU5TVEFMTF9ESVIgPSAkKERFU1RESVIpJChHREJf REFUQURJUikvJChHVUlMRV9ESVIpCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBi L2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IDc0ZGRjZjUuLmM0NWUxZWIgMTAwNjQ0CitpbmRl eCBhMGZiNjZkLi4zZmFlNjFlIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysr IGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTEyMjIsNiArMTIyMiwxNiBAQCBmb3IgcmVtb3Rl IGRlYnVnZ2luZy4KK0BAIC0xMjI1LDYgKzEyMjUsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcu CiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5w dXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0 byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC0yMzIsNyArNzgsMTEgQEAgaW5kZXggNzRkZGNm NS4uYzQ1ZTFlYiAxMDA2NDQKICBAYyByZXNvbHZlIHRoZSBzaXR1YXRpb24gb2YgdGhlc2UgZXZl bnR1YWxseQogIEBpdGVtIC10dWkKICBAY2luZGV4IEBjb2Rley0tdHVpfQotQEAgLTIzNTIxLDgg KzIzNTMxLDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitkaWZmIC0t Z2l0IGEvZ2RiL2RvYy9weXRob24udGV4aSBiL2dkYi9kb2MvcHl0aG9uLnRleGkKK2luZGV4IDQ2 ODg3ODMuLmEzMjEzM2EgMTAwNjQ0CistLS0gYS9nZGIvZG9jL3B5dGhvbi50ZXhpCisrKysgYi9n ZGIvZG9jL3B5dGhvbi50ZXhpCitAQCAtODgsOCArODgsNiBAQCBjb250YWluaW5nIEBjb2Rle2Vu ZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtHREJQfSkgcHl0 aG9uCkBAIC0yNDEsNjkzOCArOTEsMzE1IEBAIGluZGV4IDc0ZGRjZjUuLmM0NWUxZWIgMTAwNjQ0 CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMjM1MzYsNiArMjM1NDQsMTQgQEAgY29udHJv bGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7ZnVsbH0s IHRoZW4KLSBmdWxsIFB5dGhvbiBzdGFjayBwcmludGluZyBpcyBlbmFibGVkOyBpZiBAY29kZXtu b25lfSwgdGhlbiBQeXRob24gc3RhY2sKLSBhbmQgbWVzc2FnZSBwcmludGluZyBpcyBkaXNhYmxl ZDsgaWYgQGNvZGV7bWVzc2FnZX0sIHRoZSBkZWZhdWx0LCBvbmx5Ci0gdGhlIG1lc3NhZ2UgY29t cG9uZW50IG9mIHRoZSBlcnJvciBpcyBwcmludGVkLgorZGlmZiAtLWdpdCBhL2dkYi9nZGItZ2Ri LmdkYi5pbiBiL2dkYi9nZGItZ2RiLmdkYi5pbgoraW5kZXggMDVhMzhiMi4uOTgwMWZkZiAxMDA2 NDQKKy0tLSBhL2dkYi9nZGItZ2RiLmdkYi5pbgorKysrIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCitA QCAtMSw1ICsxLDE1IEBACisgZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgZGVi dWdnaW5nIGdkYi5cbgorIAorKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBhbmQgInJlcXVp cmUiIGNvbW1hbmQuCisrcHl0aG9uCisrZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCisrZ2Ri LmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCisrZ2RiLnB5dGhvbmxp YmRpciA9IGdkYi5kYXRhZGlyCisrZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGlyICsgJy9nZGIn XQorK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKKytlbmQKKytzb3VyY2UgQHNyY2Rp ckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKICsKLStAa2luZGV4IG1haW50IHNldCBweXRo b24gYXV0by1sb2FkCi0rQGl0ZW0gbWFpbnQgc2V0IHB5dGhvbiBhdXRvLWxvYWQKLStCeSBkZWZh dWx0LCBAdmFsdWV7R0RCTn0gd2lsbCBhdHRlbXB0IHRvIGF1dG9tYXRpY2FsbHkgbG9hZCBQeXRo b24KLStjb2RlIHdoZW4gYW4gb2JqZWN0IGZpbGUgaXMgb3BlbmVkLiAgVGhpcyBjYW4gYmUgY29u dHJvbGxlZCB1c2luZwotK0Bjb2Rle21haW50IHNldCBweXRob24gYXV0by1sb2FkfTogaWYgQGNv ZGV7b259LCB0aGUgZGVmYXVsdCwgdGhlbgotK1B5dGhvbiBhdXRvLWxvYWRpbmcgaXMgZW5hYmxl ZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24KLSthdXRvLWxvYWRpbmcgaXMgZGlzYWJsZWQu Ci0gQGVuZCB0YWJsZQorIGlmICEkZ2RiX2luaXRfZG9uZQorICAgc2V0IHZhcmlhYmxlICRnZGJf aW5pdF9kb25lID0gMQogIAotIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5dGhv biBzY3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9vYnNl cnZlci50ZXhpIGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi1pbmRleCA2MWFjYmIyLi5hYzM3MzI0 IDEwMDY0NAotLS0tIGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi0rKysgYi9nZGIvZG9jL29ic2Vy dmVyLnRleGkKLUBAIC0yNTMsNiArMjUzLDExIEBAIFRoZSB0cmFjZSBzdGF0ZSB2YXJpYWJsZSBA dmFye3Rzdn0gaXMgZGVsZXRlZC4gIElmIEB2YXJ7dHN2fSBpcwotIFRoZSB0cmFjZSBzdGF0ZSB2 YWx1ZSBAdmFye3Rzdn0gaXMgbW9kaWZpZWQuCi0gQGVuZCBkZWZ0eXBlZnVuCitkaWZmIC0tZ2l0 IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKK2luZGV4IDEwODc1OWQuLmE2MjRjMWIgMTAwNjQ0 CistLS0gYS9nZGIvbWFpbi5jCisrKysgYi9nZGIvbWFpbi5jCitAQCAtMzcsNiArMzcsNyBAQAog IAotK0BjIEBkZWZ0eXBlZnVuIHZvaWQgbWFya191c2VkICh2b2lkKQotK0BjIE1hcmsgYW55IHBv c3NpYmx5IHJlY2xhaW1hYmxlIG9iamVjdHMgYXMgdXNlZCBkdXJpbmcgYSBtYXJrLWFuZC1zd2Vl cCBnYXJiYWdlCi0rQGMgY29sbGVjdG9yIHBhc3MuICBDdXJyZW50bHkgb25seSBAY29kZXt0eXBl X21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KLStAYyBAZW5kIGRlZnR5cGVmdW4KLSsK LSBAZGVmdHlwZWZ1biB2b2lkIHRlc3Rfbm90aWZpY2F0aW9uIChpbnQgQHZhcntzb21lYXJnfSkK LSBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFsIHRlc3RpbmcuICBEbyBub3QgdXNl LiAgCi0gU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KLWRpZmYgLS1naXQgYS9n ZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwotaW5kZXggMzZjOWY2Ni4uMWYyMTc2 NiAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJleHByLmMKLSsrKyBiL2dkYi9kd2FyZjJleHByLmMK LUBAIC0xNDc4LDYgKzE0NzgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4LAotIAkgIH0KLSAJICBicmVhazsKKyAjaW5jbHVkZSAiaW50ZXJwcy5o IgorICNpbmNsdWRlICJtYWluLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKyAjaW5j bHVkZSAic291cmNlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgorICNpbmNsdWRlICJv YmpmaWxlcy5oIgorQEAgLTM1OSw2ICszNjAsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQorICAgY2hhciAqY2RhcmcgPSBOVUxMOworICAgY2hhciAqdHR5YXJnID0gTlVMTDsKICAKLSsJ Y2FzZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOgotKwkgIGlmIChjdHgtPmZ1bmNzLT5nZXRf b2JqZWN0X2FkZHJlc3MgPT0gTlVMTCkKLSsJICAgIGVycm9yIChfKCJEV0FSRi0yIGV4cHJlc3Np b24gZXJyb3I6IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgbXVzdCAiCi0rCSAgICAgICAgICAg ImhhdmUgYSB2YWx1ZSB0byBwdXNoLiIpKTsKLSsJICByZXN1bHQgPSAoY3R4LT5mdW5jcy0+Z2V0 X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7Ci0rCSAgcmVzdWx0X3ZhbCA9IHZhbHVlX2Zy b21fdWxvbmdlc3QgKGFkZHJlc3NfdHlwZSwgcmVzdWx0KTsKLSsJICBicmVhazsKKysgIGludCBw eXRob25fc2NyaXB0ID0gMDsKICsKLSAJZGVmYXVsdDoKLSAJICBlcnJvciAoXygiVW5oYW5kbGVk IGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwotIAl9Ci1kaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDM5ZGFkZjMuLjhjZWJi ZTggMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5oCi0rKysgYi9nZGIvZHdhcmYyZXhwci5o Ci1AQCAtODQsMTIgKzg0LDggQEAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcwotICAg ICAgVGhpcyBjYW4gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFu Z2UuICAqLwotICAgQ09SRV9BRERSICgqZ2V0X2FkZHJfaW5kZXgpICh2b2lkICpiYXRvbiwgdW5z aWduZWQgaW50IGluZGV4KTsKKyAgIC8qIFRoZXNlIGFyZSBzdGF0aWMgc28gdGhhdCB3ZSBjYW4g dGFrZSB0aGVpciBhZGRyZXNzIGluIGFuCisgICAgICBpbml0aWFsaXplci4gICovCisgICBzdGF0 aWMgaW50IHByaW50X2hlbHA7CitAQCAtNTY2LDEwICs1NjksMTQgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKKyAgICAgICB7ImFyZ3MiLCBub19hcmd1bWVudCwgJnNldF9hcmdzLCAxfSwK KyAgICAgICB7ImwiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ2wnfSwKKyAgICAgICB7InJldHVy bi1jaGlsZC1yZXN1bHQiLCBub19hcmd1bWVudCwgJnJldHVybl9jaGlsZF9yZXN1bHQsIDF9LAor KyNpZiBIQVZFX1BZVEhPTgorKyAgICAgIHsicHl0aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQJ30s CisrICAgICAgeyJQIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrI2VuZGlmCisgICAgICAgezAs IG5vX2FyZ3VtZW50LCAwLCAwfQorICAgICB9OwogIAotLSNpZiAwCi0tICAvKiBOb3QgeWV0IGlt cGxlbWVudGVkLiAgKi8KLS0KLSAgIC8qIFJldHVybiB0aGUgYG9iamVjdCBhZGRyZXNzJyBmb3Ig RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCi0gICBDT1JFX0FERFIgKCpnZXRfb2JqZWN0 X2FkZHJlc3MpICh2b2lkICpiYXRvbik7Ci0tI2VuZGlmCi0gfTsKKy0gICAgd2hpbGUgKDEpCisr ICAgIHdoaWxlICghcHl0aG9uX3NjcmlwdCkKKyAgICAgICB7CisgCWludCBvcHRpb25faW5kZXg7 CiAgCi0gLyogVGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggZGQ5MjFlYy4uMDFhODU2NiAxMDA2 NDQKLS0tLSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAtMzA2 LDYgKzMwNiw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCi0gewotICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lOwotICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OwotKyAg LyogRnJvbSBEV19UQUdfdmFyaWFibGUncyBEV19BVF9sb2NhdGlvbiAobm90IERXX1RBR190eXBl J3MKLSsgICAgIERXX0FUX2RhdGFfbG9jYXRpb24pIGZvciBEV19PUF9wdXNoX29iamVjdF9hZGRy ZXNzLiAgKi8KLSsgIENPUkVfQUREUiBvYmplY3RfYWRkcmVzczsKLSB9OworQEAgLTU4Nyw2ICs1 OTQsOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAkgIGNhc2UgMDoKKyAJICAgIC8q IExvbmcgb3B0aW9uIHRoYXQganVzdCBzZXRzIGEgZmxhZy4gICovCisgCSAgICBicmVhazsKKysJ ICBjYXNlICdQJzoKKysJICAgIHB5dGhvbl9zY3JpcHQgPSAxOworKwkgICAgYnJlYWs7CisgCSAg Y2FzZSBPUFRfU0U6CisgCSAgICBzeW1hcmcgPSBvcHRhcmc7CisgCSAgICBleGVjYXJnID0gb3B0 YXJnOworQEAgLTc5MSw3ICs4MDEsMzEgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAK LSAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICAqLwot QEAgLTQzMyw3ICs0MzYsNyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJv bCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCisgICAvKiBOb3cgdGhhdCBnZGJfaW5pdCBoYXMg Y3JlYXRlZCB0aGUgaW5pdGlhbCBpbmZlcmlvciwgd2UncmUgaW4KKyAgICAgIHBvc2l0aW9uIHRv IHNldCBhcmdzIGZvciB0aGF0IGluZmVyaW9yLiAgKi8KKy0gIGlmIChzZXRfYXJncykKKysgIGlm IChweXRob25fc2NyaXB0KQorKyAgICB7CisrICAgICAgLyogVGhlIGZpcnN0IGFyZ3VtZW50IGlz IGEgcHl0aG9uIHNjcmlwdCB0byBldmFsdWF0ZSwgYW5kCisrCSBzdWJzZXF1ZW50IGFyZ3VtZW50 cyBhcmUgcGFzc2VkIHRvIHRoZSBzY3JpcHQgZm9yCisrCSBwcm9jZXNzaW5nIHRoZXJlLiAgKi8K KysgICAgICBpZiAob3B0aW5kID49IGFyZ2MpCisrCXsKKysJICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRlcnIsCisrCQkJICAgICAgXygiJXM6IFB5dGhvbiBzY3JpcHQgZmlsZSBuYW1lIHJl cXVpcmVkXG4iKSwKKysJCQkgICAgICBhcmd2WzBdKTsKKysJICBleGl0ICgxKTsKKysJfQorKwor KyAgICAgIC8qIEZJWE1FOiBzaG91bGQgaGFuZGxlIGluZmVyaW9yIEkvTyBpbnRlbGxpZ2VudGx5 IGhlcmUuCisrCSBFLmcuLCBzaG91bGQgYmUgcG9zc2libGUgdG8gcnVuIGdkYiBpbiBwaXBlbGlu ZSBhbmQgaGF2ZQorKwkgUHl0aG9uIChhbmQgZ2RiKSBvdXRwdXQgZ28gdG8gc3RkZXJyIG9yIGZp bGU7IGFuZCBpZiBhCisrCSBwcm9tcHQgaXMgbmVlZGVkLCBvcGVuIHRoZSB0dHkuICAqLworKyAg ICAgIHF1aWV0ID0gMTsKKysgICAgICAvKiBGSVhNRTogc2hvdWxkIHJlYWQgLmdkYmluaXQgaWYs IGFuZCBvbmx5IGlmLCBhIHByb21wdCBpcworKwkgcmVxdWVzdGVkIGJ5IHRoZSBzY3JpcHQuICBU aG91Z2guLi4gbWF5YmUgdGhpcyBpcyBub3QKKysJIGlkZWFsPyAgKi8KKysgICAgICAvKiBGSVhN RTogbGlrZXdpc2UsIHJlYWRpbmcgaW4gaGlzdG9yeS4gICovCisrICAgICAgaW5oaWJpdF9nZGJp bml0ID0gMTsKKysgICAgfQorKyAgZWxzZSBpZiAoc2V0X2FyZ3MpCisgICAgIHsKKyAgICAgICAv KiBUaGUgcmVtYWluaW5nIG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3Ig dGhlCisgCSBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFu ZCB0aGUgcmVzdAorQEAgLTEwNzcsNyArMTExMSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCiAgCi0gICBpZiAoKmxlbmd0aCA9PSAwKQotICAgICBlcnJvciAoXygiQ291bGQgbm90IGZp bmQgdGhlIGZyYW1lIGJhc2UgZm9yIFwiJXNcIi4iKSwKLS0JICAgU1lNQk9MX05BVFVSQUxfTkFN RSAoZnJhbWVmdW5jKSk7Ci0rCSAgIFNZTUJPTF9QUklOVF9OQU1FIChmcmFtZWZ1bmMpKTsKLSB9 CisgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmls ZXMgaGF2ZSBiZWVuCisgICAgICByZWFkLiAgKi8KKy0gIGluaXRfaGlzdG9yeSAoKTsKKysgIGlm ICghcHl0aG9uX3NjcmlwdCkKKysgICAgaW5pdF9oaXN0b3J5ICgpOwogIAotIC8qIEhlbHBlciBm dW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhlIENGQSBm b3IKLUBAIC01MDAsNiArNTAzLDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dCAqY3R4LCBjdV9vZmZzZXQgZGllX29mZnNldCkKLSAJCSAgICAgY3R4 LT5mdW5jcy0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9uKTsKLSB9CisgICBpZiAoYmF0Y2hfZmxh ZykKKyAgICAgeworQEAgLTEwODgsMTMgKzExMjMsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKKyAgIC8qIFNob3cgdGltZSBhbmQvb3Igc3BhY2UgdXNhZ2UuICAqLworICAgZG9fY2xl YW51cHMgKHByZV9zdGF0X2NoYWluKTsKICAKLStzdGF0aWMgQ09SRV9BRERSCi0rZHdhcmZfZXhw cl9vYmplY3RfYWRkcmVzcyAodm9pZCAqYmF0b24pCi0rewotKyAgc3RydWN0IGR3YXJmX2V4cHJf YmF0b24gKmRlYmF0b24gPSBiYXRvbjsKLSsKLSsgIC8qIFRoZSBtZXNzYWdlIGlzIHN1cHByZXNz ZWQgaW4gRFdBUkZfQkxPQ0tfRVhFQy4gICovCi0rICBpZiAoZGViYXRvbi0+b2JqZWN0X2FkZHJl c3MgPT0gMCkKLSsgICAgZXJyb3IgKF8oIkNhbm5vdCByZXNvbHZlIERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3MgZm9yIGEgbWlzc2luZyBvYmplY3QiKSk7CistICAvKiBOT1RFOiBjYWduZXkvMTk5 OS0xMS0wNzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKKy0gICAgIG1vdmlu ZyB0aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCgp CistICAgICBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0aGluZyBo b2xkaW5nIGJhY2sgdGhhdAorLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0gaGFzIGJl ZW4gZWxpbWluYXRlZC4gICovCistICB3aGlsZSAoMSkKKysjaWYgSEFWRV9QWVRIT04KKysgIGlm IChweXRob25fc2NyaXB0KQorICAgICB7CistICAgICAgY2F0Y2hfZXJyb3JzIChjYXB0dXJlZF9j b21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOworKyAgICAgIGV4dGVybiBpbnQg cGFnaW5hdGlvbl9lbmFibGVkOworKyAgICAgIHBhZ2luYXRpb25fZW5hYmxlZCA9IDA7CisrICAg ICAgcnVuX3B5dGhvbl9zY3JpcHQgKGFyZ2MgLSBvcHRpbmQsICZhcmd2W29wdGluZF0pOworKyAg ICAgIHJldHVybiAxOworKyAgICB9CisrICBlbHNlCisrI2VuZGlmCisrICAgIHsKKysgICAgICAv KiBOT1RFOiBjYWduZXkvMTk5OS0xMS0wNzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZv ciBub3QKKysJIG1vdmluZyB0aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVk X2NvbW1hbmRfbG9vcCgpCisrCSBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUg bWFpbiB0aGluZyBob2xkaW5nIGJhY2sgdGhhdAorKwkgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgp IC0gaGFzIGJlZW4gZWxpbWluYXRlZC4gKi8KKysgICAgICB3aGlsZSAoMSkKKysJeworKwkgIGNh dGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFuZF9sb29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxM KTsKKysJfQorICAgICB9CisgICAvKiBObyBleGl0IC0tIGV4aXQgaXMgdGhyb3VnaCBxdWl0X2Nv bW1hbmQuICAqLworIH0KK0BAIC0xMTI4LDYgKzExNzUsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0pCisgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisgVGhpcyBp cyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKKyAgICAgZ2RiIFtvcHRpb25zXSBbZXhl Y3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCisrICAgIGdkYiBbb3B0 aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cbiIp LCBzdHJlYW0pOworKyNpZiBIQVZFX1BZVEhPTgorKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAor KyAgICBnZGIgW29wdGlvbnNdIFstLXB5dGhvbnwtUF0gc2NyaXB0LWZpbGUgW3NjcmlwdC1hcmd1 bWVudHMgLi4uXVxuIiksIHN0cmVhbSk7CisrI2VuZGlmCisrICBmcHV0c191bmZpbHRlcmVkIChf KCJcblwKKyAgICAgZ2RiIFtvcHRpb25zXSAtLWFyZ3MgZXhlY3V0YWJsZS1maWxlIFtpbmZlcmlv ci1hcmd1bWVudHMgLi4uXVxuXG5cCisgIiksIHN0cmVhbSk7CisgICBmcHV0c191bmZpbHRlcmVk IChfKCJcCitAQCAtMTE3Myw2ICsxMjI2LDEzIEBAIE91dHB1dCBhbmQgdXNlciBpbnRlcmZhY2Ug Y29udHJvbDpcblxuXAorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorICAgLS1kYnggICAgICAg ICAgICAgIERCWCBjb21wYXRpYmlsaXR5IG1vZGUuXG5cCisgICAtLXhkYiAgICAgICAgICAgICAg WERCIGNvbXBhdGliaWxpdHkgbW9kZS5cblwKKysiKSwgc3RyZWFtKTsKKysjaWYgSEFWRV9QWVRI T04KKysgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKKysgIC0tcHl0aG9uLCAtUCAgICAgICBGb2xs b3dpbmcgYXJndW1lbnQgaXMgUHl0aG9uIHNjcmlwdCBmaWxlOyByZW1haW5pbmdcblwKKysgICAg ICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBzY3JpcHQuXG4iKSwgc3Ry ZWFtKTsKKysjZW5kaWYKKysgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKKyAgIC1xLCAtLXF1aWV0 LCAtLXNpbGVudFxuXAorICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9u IG51bWJlciBvbiBzdGFydHVwLlxuXG5cCisgIiksIHN0cmVhbSk7CitkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weSBiL2dkYi9weXRob24vbGli L2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi42ZmE0OGZmCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CitAQCAtMCwwICsxLDM3IEBACisrIyBJZ25vcmUg ZXJyb3JzIGluIHVzZXIgY29tbWFuZHMuCiArCi0rICByZXR1cm4gZGViYXRvbi0+b2JqZWN0X2Fk ZHJlc3M7Ci0rfQorKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwotKy8qIEFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIHdlIGFyZSBjdXJyZW50bHkg cmVmZXJyaW5nIHRvLiAgSXQgaXMgc2V0IGZyb20KLSsgICBEV19UQUdfdmFyaWFibGUncyBEV19B VF9sb2NhdGlvbiAobm90IERXX1RBR190eXBlJ3MgRFdfQVRfZGF0YV9sb2NhdGlvbikgZm9yCi0r ICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCisrIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgogKwotK3N0YXRpYyBDT1JFX0FERFIgb2JqZWN0X2FkZHJlc3M7CisraW1wb3J0IGdk YgogKwotKy8qIENhbGxlcnMgdXNlIG9iamVjdF9hZGRyZXNzX3NldCB3aGlsZSB0aGVpciBjYWxs ZXJzIHVzZSB0aGUgcmVzdWx0IHNldCBzbyB3ZQotKyAgIGNhbm5vdCBydW4gdGhlIGNsZWFudXAg YXQgdGhlIGxvY2FsIGJsb2NrIG9mIG91ciBkaXJlY3QgY2FsbGVyLiAgU3RpbGwgd2UKLSsgICBz aG91bGQgcmVzZXQgT0JKRUNUX0FERFJFU1MgYXQgbGVhc3QgZm9yIHRoZSBuZXh0IEdEQiBjb21t YW5kLiAgKi8KKytjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAg ICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVycm9ycy4KKytPbmx5 IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCisrVGhpcyBpcyBwcmltYXJpbHkgdXNl ZnVsIGluIHNjcmlwdHMuIiIiCiArCi0rc3RhdGljIHZvaWQKLStvYmplY3RfYWRkcmVzc19jbGVh bnVwICh2b2lkICpwcmV2X3NhdmVfdm9pZHApCi0rewotKyAgQ09SRV9BRERSICpwcmV2X3NhdmUg PSBwcmV2X3NhdmVfdm9pZHA7CisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAgICBz dXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJpZ25vcmUtZXJyb3Jz IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiLkNPTU1BTkRfT0JTQ1VSRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkKICsKLSsgIG9i amVjdF9hZGRyZXNzID0gKnByZXZfc2F2ZTsKLSsgIHhmcmVlIChwcmV2X3NhdmUpOwotK30KKysg ICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgICAgICB0cnk6CisrICAg ICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90dHkpCisrICAgICAgICBleGNlcHQ6Cisr ICAgICAgICAgICAgcGFzcwogKwotKy8qIFNldCB0aGUgYmFzZSBhZGRyZXNzIC0gRFdfQVRfbG9j YXRpb24gLSBvZiBhIHZhcmlhYmxlLiAgSXQgaXMgYmVpbmcgbGF0ZXIKLSsgICB1c2VkIHRvIGRl cml2ZSBvdGhlciBvYmplY3QgYWRkcmVzc2VzIGJ5IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Mu CisrSWdub3JlRXJyb3JzQ29tbWFuZCAoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL3BhaG9sZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5w eQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjYzNmY5OWQKKy0tLSAvZGV2 L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQorQEAgLTAs MCArMSw4MSBAQAorKyMgcGFob2xlIGNvbW1hbmQgZm9yIGdkYgogKwotKyAgIEl0IHdvdWxkIGJl IHVzZWZ1bCB0byBzYW5pdHkgY2hlY2sgQUREUkVTUyAtIHN1Y2ggYXMgZm9yIHNvbWUgb2JqZWN0 cyB3aXRoCi0rICAgdW5zZXQgdmFsdWVfcmF3X2FkZHJlc3MgLSBidXQgc29tZSB2YWxpZCBhZGRy ZXNzZXMgbWF5IGJlIHplcm8gKHN1Y2ggYXMgZmlyc3QKLSsgICBvYmplY3RzIGluIHJlbG9jYXRh YmxlIC5vIGZpbGVzKS4gICovCisrIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rdm9pZAotK29iamVjdF9hZGRyZXNzX3Nl dCAoQ09SRV9BRERSIGFkZHJlc3MpCi0rewotKyAgQ09SRV9BRERSICpwcmV2X3NhdmU7CisrIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgcHJldl9zYXZlID0geG1hbGxvYyAoc2l6 ZW9mICpwcmV2X3NhdmUpOwotKyAgKnByZXZfc2F2ZSA9IG9iamVjdF9hZGRyZXNzOwotKyAgbWFr ZV9jbGVhbnVwIChvYmplY3RfYWRkcmVzc19jbGVhbnVwLCBwcmV2X3NhdmUpOworK2ltcG9ydCBn ZGIKICsKLSsgIG9iamVjdF9hZGRyZXNzID0gYWRkcmVzczsKLSt9CisrY2xhc3MgUGFob2xlIChn ZGIuQ29tbWFuZCk6CisrICAgICIiIlNob3cgdGhlIGhvbGVzIGluIGEgc3RydWN0dXJlLgorK1Ro aXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSB0eXBlIG5hbWUuCisrSXQgcHJp bnRzIHRoZSB0eXBlIGFuZCBkaXNwbGF5cyBjb21tZW50cyBzaG93aW5nIHdoZXJlIGhvbGVzIGFy ZS4iIiIKICsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBsb2NhdGlvbiBsaXN0IGF0IERMTEJBVE9OIGV4 cGVjdGluZyBpdCBwcm9kdWNlcyBleGFjdGx5IG9uZQotKyAgIENPUkVfQUREUiByZXN1bHQgc3Rv cmVkIHRvICpBRERSUCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICBJZiB0aGUgcmVzdWx0Ci0r ICAgY291bGQgbm90IGJlIGZvdW5kIHJldHVybiB6ZXJvIGFuZCBrZWVwICpBRERSUCB1bmNoYW5n ZWQuICAqLwotKwotK2ludAotK2R3YXJmX2xvY2xpc3RfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJm Ml9sb2NsaXN0X2JhdG9uICpkbGxiYXRvbiwKLSsJCQkgIHN0cnVjdCB0eXBlICp0eXBlLCBDT1JF X0FERFIgKmFkZHJwKQotK3sKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGdldF9zZWxl Y3RlZF9mcmFtZSAoTlVMTCk7Ci0rICBjb25zdCBnZGJfYnl0ZSAqZGF0YTsKLSsgIHNpemVfdCBz aXplOwotKyAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0rICBpZiAoIWRsbGJhdG9uKQotKyAgICBy ZXR1cm4gMDsKLSsKLSsgIGRhdGEgPSBkd2FyZjJfZmluZF9sb2NhdGlvbl9leHByZXNzaW9uIChk bGxiYXRvbiwgJnNpemUsCi0rCQkJCQkgIGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrIChmcmFt ZSkpOwotKyAgaWYgKGRhdGEgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICB2YWwgPSBk d2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHR5cGUsIGZyYW1lLCBkYXRhLCBzaXplLCBkbGxiYXRv bi0+cGVyX2N1KTsKLSsgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQotKyAgICByZXR1 cm4gMDsKLSsKLSsgICphZGRycCA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7Ci0rICByZXR1cm4g MTsKLSt9Ci0rCi0gLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzYy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICoKLUBAIC0xMjE1LDEwICsxMjk3LDEy IEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9l eHByX2NvbnRleHQgKmN0eCwKLSAKLSAgIHNhdmVkX2N0eC5nZGJhcmNoID0gY3R4LT5nZGJhcmNo OwotICAgc2F2ZWRfY3R4LmFkZHJfc2l6ZSA9IGN0eC0+YWRkcl9zaXplOwotKyAgc2F2ZWRfY3R4 LnJlZl9hZGRyX3NpemUgPSBjdHgtPnJlZl9hZGRyX3NpemU7Ci0gICBzYXZlZF9jdHgub2Zmc2V0 ID0gY3R4LT5vZmZzZXQ7Ci0gICBzYXZlZF9jdHguYmF0b24gPSBjdHgtPmJhdG9uOwotICAgY3R4 LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAoZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChiYXRv bl9sb2NhbC5wZXJfY3UpKTsKLSAgIGN0eC0+YWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRy X3NpemUgKGJhdG9uX2xvY2FsLnBlcl9jdSk7Ci0rICBjdHgtPnJlZl9hZGRyX3NpemUgPSBkd2Fy ZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKGJhdG9uX2xvY2FsLnBlcl9jdSk7Ci0gICBjdHgtPm9m ZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKGJhdG9uX2xvY2FsLnBlcl9jdSk7Ci0g ICBjdHgtPmJhdG9uID0gJmJhdG9uX2xvY2FsOwotIAotQEAgLTEyMjYsMTAgKzEzMTAsNzggQEAg ZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4LAotIAotICAgY3R4LT5nZGJhcmNoID0gc2F2ZWRfY3R4LmdkYmFyY2g7Ci0g ICBjdHgtPmFkZHJfc2l6ZSA9IHNhdmVkX2N0eC5hZGRyX3NpemU7Ci0rICBjdHgtPnJlZl9hZGRy X3NpemUgPSBzYXZlZF9jdHgucmVmX2FkZHJfc2l6ZTsKLSAgIGN0eC0+b2Zmc2V0ID0gc2F2ZWRf Y3R4Lm9mZnNldDsKLSAgIGN0eC0+YmF0b24gPSBzYXZlZF9jdHguYmF0b247Ci0gfQotIAotK3N0 YXRpYyBDT1JFX0FERFIgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCAodm9pZCAqYmF0b24sIHVu c2lnbmVkIGludCBpbmRleCk7Ci0rCi0rLyogRXZhbHVhdGUgRFdBUkYgZXhwcmVzc2lvbiBhdCBE QVRBIC4uLiBEQVRBICsgU0laRSB3aXRoIGl0cyByZXN1bHQgcmVhZGFibGUKLSsgICBieSBkd2Fy Zl9leHByX2ZldGNoIChSRVRWQUwsIDApLiAgRlJBTUUgcGFyYW1ldGVyIGNhbiBiZSBOVUxMIHRv IGNhbGwKLSsgICBnZXRfc2VsZWN0ZWRfZnJhbWUgdG8gZmluZCBpdC4gIFJldHVybmVkIGR3YXJm X2V4cHJfY29udGV4dCBmcmVlaW5nIGlzCi0rICAgcHVzaGVkIG9uIHRoZSBjbGVhbnVwIGNoYWlu LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2R3YXJmX2V4cHJfcHJlcF9jdHggKHN0cnVjdCBkd2Fy Zl9leHByX2NvbnRleHQgKmN0eCwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJICAgICBj b25zdCBnZGJfYnl0ZSAqZGF0YSwgc2l6ZV90IHNpemUsCi0rCQkgICAgIHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnBlcl9jdSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiBiYXRv bjsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChw ZXJfY3UpOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7Ci0rCi0rICBiYXRv bi5mcmFtZSA9IGZyYW1lOwotKyAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OwotKyAgYmF0b24ub2Jq ZWN0X2FkZHJlc3MgPSBvYmplY3RfYWRkcmVzczsKLSsKLSsgIGN0eC0+Z2RiYXJjaCA9IGdldF9v YmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgY3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1 X2FkZHJfc2l6ZSAocGVyX2N1KTsKLSsgIGN0eC0+cmVmX2FkZHJfc2l6ZSA9IGR3YXJmMl9wZXJf Y3VfcmVmX2FkZHJfc2l6ZSAocGVyX2N1KTsKLSsgIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9j dV90ZXh0X29mZnNldCAocGVyX2N1KTsKLSsgIGN0eC0+YmF0b24gPSAmYmF0b247Ci0rICBjdHgt PmZ1bmNzID0gJmR3YXJmX2V4cHJfY3R4X2Z1bmNzOwotKwotKyAgZHdhcmZfZXhwcl9ldmFsIChj dHgsIGRhdGEsIHNpemUpOwotK30KLSsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBleHByZXNzaW9uIGF0 IERMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkgb25lCi0rICAgQ09SRV9BRERS IHJlc3VsdCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICAqLwotKwotK0NPUkVfQUREUgotK2R3 YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkbGJh dG9uKQotK3sKLSsgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKLSsgIENPUkVfQURE UiByZXR2YWw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsKLSsgIGN0eCA9IG5ld19k d2FyZl9leHByX2NvbnRleHQgKCk7Ci0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdh cmZfZXhwcl9jb250ZXh0IChjdHgpOwotKwotKyAgZHdhcmZfZXhwcl9wcmVwX2N0eCAoY3R4LCBn ZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAotKwkJICAgICAgIGRsYmF0 b24tPnNpemUsIGRsYmF0b24tPnBlcl9jdSk7Ci0rCi0rICBpZiAoY3R4LT5udW1fcGllY2VzID4g MCkKLSsgICAgZXJyb3IgKF8oIkRXX09QXypwaWVjZSBpcyB1bnN1cHBvcnRlZCBmb3IgRFdfRk9S TV9ibG9jayIpKTsKLSsKLSsgIHJldHZhbCA9IGR3YXJmX2V4cHJfZmV0Y2hfYWRkcmVzcyAoY3R4 LCAwKTsKLSsKLSsgIGlmIChjdHgtPmxvY2F0aW9uID09IERXQVJGX1ZBTFVFX1JFR0lTVEVSKQot KyAgICB7Ci0rICAgICAgLyogSW5saW5lZCBkd2FyZl9leHByX3JlYWRfcmVnIGFzIHdlIG5vIGxv bmdlciBoYXZlIHRoZSBiYXRvbi4gKi8KLSsKLSsgICAgICBpbnQgZ2RiX3JlZ251bSA9IGdkYmFy Y2hfZHdhcmYyX3JlZ190b19yZWdudW0gKGN0eC0+Z2RiYXJjaCwgcmV0dmFsKTsKLSsgICAgICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IGJ1aWx0aW5fdHlwZSAoY3R4LT5nZGJhcmNoKS0+YnVpbHRpbl9k YXRhX3B0cjsKLSsgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBnZXRfc2VsZWN0ZWRf ZnJhbWUgKE5VTEwpOwotKwotKyAgICAgIHJldHZhbCA9IGFkZHJlc3NfZnJvbV9yZWdpc3RlciAo dHlwZSwgZ2RiX3JlZ251bSwgZnJhbWUpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFj a190byk7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAvKiBDYWxsYmFjayBmdW5jdGlv biBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLgotICAgIEZldGNoIHRoZSBhZGRyZXNzIGlu ZGV4ZWQgYnkgRFdfT1BfR05VX2FkZHJfaW5kZXguICAqLwotIAotQEAgLTIyMDUsNyArMjM1Nyw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNzIGR3YXJmX2V4 cHJfY3R4X2Z1bmNzID0KLSAgIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKLSAgIGR3YXJmX2V4cHJf Z2V0X2Jhc2VfdHlwZSwKLSAgIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUs Ci0tICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4Ci0rICBkd2FyZl9leHByX2dldF9hZGRyX2lu ZGV4LAotKyAgZHdhcmZfZXhwcl9vYmplY3RfYWRkcmVzcwotIH07Ci0gCi0gLyogRXZhbHVhdGUg YSBsb2NhdGlvbiBkZXNjcmlwdGlvbiwgc3RhcnRpbmcgYXQgREFUQSBhbmQgd2l0aCBsZW5ndGgK LUBAIC0yMjIwLDcgKzIzNzMsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJCQkgICAgICAgTE9O R0VTVCBieXRlX29mZnNldCkKLSB7Ci0gICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKLS0gIHN0cnVj dCBkd2FyZl9leHByX2JhdG9uIGJhdG9uOwotICAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAq Y3R4OwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2NoYWluOwotICAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci1A QCAtMjIzMiwyOSArMjM4NCwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAgIGlmIChzaXplID09 IDApCi0gICAgIHJldHVybiBhbGxvY2F0ZV9vcHRpbWl6ZWRfb3V0X3ZhbHVlICh0eXBlKTsKLSAK LS0gIGJhdG9uLmZyYW1lID0gZnJhbWU7Ci0tICBiYXRvbi5wZXJfY3UgPSBwZXJfY3U7Ci0tCi0g ICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotICAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotICAgdmFsdWVfY2hhaW4gPSBt YWtlX2NsZWFudXBfdmFsdWVfZnJlZV90b19tYXJrICh2YWx1ZV9tYXJrICgpKTsKLSAKLS0gIGN0 eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotLSAgY3R4LT5hZGRyX3Np emUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1KTsKLS0gIGN0eC0+cmVmX2FkZHJf c2l6ZSA9IGR3YXJmMl9wZXJfY3VfcmVmX2FkZHJfc2l6ZSAocGVyX2N1KTsKLS0gIGN0eC0+b2Zm c2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVyX2N1KTsKLS0gIGN0eC0+YmF0b24g PSAmYmF0b247Ci0tICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4cHJfY3R4X2Z1bmNzOwotLQotICAg VFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCi0gICAgIHsKLS0gICAgICBkd2FyZl9l eHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7Ci0rICAgICAgZHdhcmZfZXhwcl9wcmVwX2N0eCAo Y3R4LCBmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKLSAgICAgfQotICAgaWYgKGV4LnJlYXNv biA8IDApCi0gICAgIHsKLSAgICAgICBpZiAoZXguZXJyb3IgPT0gTk9UX0FWQUlMQUJMRV9FUlJP UikKLSAJewotLQkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIAkgIHJldHZhbCA9IGFsbG9j YXRlX3ZhbHVlICh0eXBlKTsKLSAJICBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlIChyZXR2 YWwsIDAsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gCSAgcmV0dXJuIHJldHZhbDsKLUBAIC0yMzI5 LDYgKzI0NzAsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gCSAgICBpbnQgaW5fc3RhY2tfbWVt b3J5ID0gZHdhcmZfZXhwcl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7Ci0gCi0gCSAg ICBkb19jbGVhbnVwcyAodmFsdWVfY2hhaW4pOwotKwotKwkgICAgLyogRnJhbWUgbWF5IGJlIG5l ZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAqLwotKwkgICAgbWFrZV9j bGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7Ci0rCSAgICBzZWxlY3RfZnJhbWUgKGZy YW1lKTsKLSsKLSsJICAgIC8qIG9iamVjdF9hZGRyZXNzX3NldCBjYWxsZWQgaGVyZSBpcyByZXF1 aXJlZCBpbiBBTExPQ0FURV9WQUxVRSdzCi0rCSAgICAgICBDSEVDS19UWVBFREVGIGZvciB0aGUg b2JqZWN0J3MgcG9zc2libGUKLSsJICAgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAq LwotKwkgICAgb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRyZXNzKTsKLSsKLSAJICAgIHJldHZhbCA9 IHZhbHVlX2F0X2xhenkgKHR5cGUsIGFkZHJlc3MgKyBieXRlX29mZnNldCk7Ci0gCSAgICBpZiAo aW5fc3RhY2tfbWVtb3J5KQotIAkgICAgICBzZXRfdmFsdWVfc3RhY2sgKHJldHZhbCwgMSk7Ci1A QCAtNDI0MSw4ICs0MzkyLDcgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBz eW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJICAgICAgIGRsYmF0 b24tPnBlcl9jdSk7Ci0gfQotIAotLS8qIFRoZSBzZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25zIHVz ZWQgd2l0aCB0aGUgRFdBUkYtMiBleHByZXNzaW9uCi0tICAgZXZhbHVhdG9yIGFuZCBsb2NhdGlv biBsaXN0cy4gICovCi0rLyogVGhlIHNldCBvZiBsb2NhdGlvbiBmdW5jdGlvbnMgdXNlZCB3aXRo IHRoZSBEV0FSRi0yIGxvY2F0aW9uIGxpc3RzLiAgKi8KLSBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2Nv bXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKLSAgIGxvY2xpc3RfcmVhZF92YXJp YWJsZSwKLSAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZV9hdF9lbnRyeSwKLWRpZmYgLS1naXQgYS9n ZGIvZHdhcmYybG9jLmggYi9nZGIvZHdhcmYybG9jLmgKLWluZGV4IDc4NmU3N2MuLjU1ZmY0ZTYg MTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYybG9jLmgKLSsrKyBiL2dkYi9kd2FyZjJsb2MuaAotQEAg LTEzNyw2ICsxMzcsMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCi0gCi0gZXh0ZXJu IGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNzOwot IGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9m dW5jczsKLStleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX21p c3NpbmdfZnVuY3M7Ci0rCi0rZXh0ZXJuIHZvaWQgb2JqZWN0X2FkZHJlc3Nfc2V0IChDT1JFX0FE RFIgYWRkcmVzcyk7Ci0rCi0rZXh0ZXJuIENPUkVfQUREUiBkd2FyZl9sb2NleHByX2JhdG9uX2V2 YWwKLSsgIChzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24pOwotKwotK2V4dGVy biBpbnQgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0 b24gKmRsbGJhdG9uLAotKwkJCQkgICAgIHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgKmFk ZHJwKTsKLSAKLSBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9ibG9ja19vcHMgZHdhcmYyX2Js b2NrX2ZyYW1lX2Jhc2VfbG9jZXhwcl9mdW5jczsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJv bF9ibG9ja19vcHMgZHdhcmYyX2Jsb2NrX2ZyYW1lX2Jhc2VfbG9jbGlzdF9mdW5jczsKLWRpZmYg LS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggMjNiY2Zl MC4uY2E5ZmZkYSAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2Fy ZjJyZWFkLmMKLUBAIC0xNzM4LDYgKzE3MzgsOSBAQCBzdGF0aWMgdm9pZCBmaWxsX2luX2xvY2xp c3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotIAkJCQkgICBzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKmJhdG9uLAotIAkJCQkgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRy KTsKLSAKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpkd2FyZjJfYXR0cl90 b19sb2NsaXN0X2JhdG9uCi0rICAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpOwotKwotIHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21w dXRlZCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKLSAJCQkJCSBzdHJ1Y3Qgc3ltYm9s ICpzeW0sCi0gCQkJCQkgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi1AQCAtMTc3MSw2ICsxNzc0LDkg QEAgc3RhdGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKLSAKLSBzdGF0aWMg dm9pZCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICopOwotIAotK3N0YXRpYyB2b2lkIGZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3Up OwotKwotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8g Kiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotQEAgLTE3 OTksNiArMTgwNSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnNl dCAoc2VjdF9vZmZzZXQsCi0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci0gCi0rc3RhdGljIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbgot KyAgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsK LSsKLSBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAqZHVtbXkpOwotIAot IHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq cGVyX2N1LAotQEAgLTEzMjI3LDYgKzEzMjM2LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIG5ld19z eW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7Ci0gfQotIAotKy8qIENyZWF0ZSBhIG5ldyBhcnJh eSBkaW1lbnNpb24gcmVmZXJlbmNpbmcgaXRzIHRhcmdldCB0eXBlIFRZUEUuCi0rCi0rICAgTXVs dGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSBzdGFj ayBvZgotKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyByZWZlcmVuY2VkIGJ5IHRo ZWlyIFRZUEVfVEFSR0VUX1RZUEUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rY3Jl YXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlw ZSAqcmFuZ2VfdHlwZSwKLSsJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotK3sKLSsgIHR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgdHlw ZSwgcmFuZ2VfdHlwZSk7Ci0rCi0rICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0cmlidXRlcyBu ZWVkIHRvIGJlIGZldGNoZWQgYnkKLSsgICAgIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCA8bXVs dGlfZjc3X3N1YnNjcmlwdD4ncyBjYWxsIG9mCi0rICAgICB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgb25seSBmb3IgdGhlIGlubmVybW9zdCBhcnJheSB0eXBlLiAgKi8KLSsgIGZldGNoX2RpZV90 eXBlX2F0dHJzIChkaWUsIHR5cGUsIGN1KTsKLSsKLSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBh dHRyaWJ1dGVzIGFyZSBjaGVja2VkIGZvciBhbGxvY2F0ZWQvYXNzb2NpYXRlZAotKyAgICAgdmFs aWRpdHkgd2hpbGUgYWNjZXNzaW5nIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLLiAgKi8KLSsg IGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHJhbmdlX3R5cGUsIGN1KTsKLSsKLSsgIHJldHVy biB0eXBlOwotK30KLSsKLSAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdfVEFH X2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KLSAgICB0aGUgRElFJ3MgdHlwZSBmaWVsZC4g IEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAotICAgIGFycmF5cy4g ICovCi1AQCAtMTMyNDAsNyArMTMyNzIsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCB0eXBlICplbGVtZW50 X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKLSAgIHN0cnVjdCB0eXBlICoqcmFuZ2Vf dHlwZXMgPSBOVUxMOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIGludCBuZGltID0g MDsKLSsgIGludCBuZGltID0gMCwgaTsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotICAg Y29uc3QgY2hhciAqbmFtZTsKLSAKLUBAIC0xMzI5MywxNyArMTMzMjUsMTkgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICB0 eXBlID0gZWxlbWVudF90eXBlOwotIAotICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3Up ID09IERXX09SRF9jb2xfbWFqb3IpCi0tICAgIHsKLS0gICAgICBpbnQgaSA9IDA7Ci0tCi0tICAg ICAgd2hpbGUgKGkgPCBuZGltKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5 cGUsIHJhbmdlX3R5cGVzW2krK10pOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB3 aGlsZSAobmRpbS0tID4gMCkKLS0JdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBl LCByYW5nZV90eXBlc1tuZGltXSk7Ci0tICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IG5kaW07 IGkrKykKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUs IHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsgIGVsc2UgLyogKHJlYWRfYXJyYXlfb3JkZXIg KGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3IpICovCi0rICAgIGZvciAoaSA9IG5kaW0gLSAx OyBpID49IDA7IGktLSkKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNp b24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsKLSsgIC8qIERhdGEgbG9jYXRp b25zIHNob3VsZCBiZSBzZXQgb25seSBmb3IgdGhlIG91dGVybW9zdCBkaW1lbnNpb24gYXMgdGhl eQotKyAgICAgd291bGQgYmUgY29uZnVzaW5nIGZvciB0aGUgZGVyZWZlcmVuY2VkIG9mZnNldCBv biB0aGUgaW5uZXIgb25lcy4gICovCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf ZGF0YV9sb2NhdGlvbiwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0r ICAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAodHlwZSkKLSsgICAgICA9IGR3YXJm Ml9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBF X0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOwotIAotICAgLyogVW5kZXJzdGFuZCBEd2Fy ZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KLSAgICAgIHRo ZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0 byB0aGUKLUBAIC0xMzk0MiwyOSArMTM5NzYsMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotICAgc3RydWN0IHR5 cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsKLSAgIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwotKyAgaW50IGxlbmd0 aDsKLSsKLSsgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2lu dDsKLSsgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklMRSwgbm90IGFzIGEg cGVybWFuZW50IHR5cGUuICAqLwotKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUp OwotKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cu ICAqLwotKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRl eF90eXBlLCAwLCAtMSk7Ci0rCi0rICAvKiBDL0MrKyBzaG91bGQgcHJvYmFibHkgaGF2ZSB0aGUg bG93IGJvdW5kIDAgYnV0IEMvQysrIGRvZXMgbm90IHVzZQotKyAgICAgRFdfVEFHX3N0cmluZ190 eXBlLiAgKi8KLSsgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7Ci0gCi0gICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3UpOwotLSAgaWYgKGF0 dHIpCi0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotICAgICB7Ci0t ICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOwotKyAgICAgIC8qIFNlY3VyaXR5IGNoZWNr IGZvciBhIHNpemUgb3ZlcmZsb3cuICAqLwotKyAgICAgIGlmIChEV19CTE9DSyAoYXR0ciktPnNp emUgKyAyIDwgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKQotKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdl X3R5cGUpID0gMTsKLSsgICAgICAvKiBFeHRlbmQgdGhlIERXQVJGIGJsb2NrIGJ5IGEgbmV3IERX X09QX2RlcmVmL0RXX09QX2RlcmVmX3NpemUKLSsJIGluc3RydWN0aW9uIGFzIERXX0FUX3N0cmlu Z19sZW5ndGggc3BlY2lmaWVzIHRoZSBsZW5ndGggbG9jYXRpb24sIG5vdAotKwkgaXRzIHZhbHVl LiAgKi8KLSsgICAgICBlbHNlCi0rCXsKLSsJICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g Kmxlbmd0aF9iYXRvbiA9IE5VTEw7Ci0rCSAgc3RydWN0IGR3YXJmX2Jsb2NrICpibGsgPSBEV19C TE9DSyAoYXR0cik7Ci0rCi0rCSAgLyogVHVybiBhbnkgc2luZ2xlIERXX09QX3JlZyogaW50byBE V19PUF9icmVnKigwKSBidXQgY2xlYXJpbmcKLSsJICAgICBEV19PUF9kZXJlZiogaW4gc3VjaCBj YXNlLiAgKi8KLSsKLSsJICBpZiAoYmxrLT5zaXplID09IDEgJiYgYmxrLT5kYXRhWzBdID49IERX X09QX3JlZzAKLSsJICAgICAgJiYgYmxrLT5kYXRhWzBdIDw9IERXX09QX3JlZzMxKQotKwkgICAg bGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwot KwkgIGVsc2UgaWYgKGJsay0+c2l6ZSA+IDEgJiYgYmxrLT5kYXRhWzBdID09IERXX09QX3JlZ3gp Ci0rCSAgICB7Ci0rCSAgICAgIFVMT05HRVNUIHVsb25nZXN0OwotKwkgICAgICBjb25zdCBnZGJf Ynl0ZSAqZW5kOwotKwotKwkgICAgICBlbmQgPSBzYWZlX3JlYWRfdWxlYjEyOCAoJmJsay0+ZGF0 YVsxXSwgJmJsay0+ZGF0YVtibGstPnNpemVdLAotKwkJCQkgICAgICAgJnVsb25nZXN0KTsKLSsJ ICAgICAgaWYgKGVuZCA9PSAmYmxrLT5kYXRhW2Jsay0+c2l6ZV0pCi0rCQlsZW5ndGhfYmF0b24g PSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7Ci0rCSAgICB9Ci0rCi0r CSAgaWYgKGxlbmd0aF9iYXRvbiA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgYXR0 cmlidXRlICpzaXplX2F0dHI7Ci0rCSAgICAgIGdkYl9ieXRlICpkYXRhOwotKwotKwkgICAgICBs ZW5ndGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAotKwkJ CQkJICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikpOwotKwkgICAgICBsZW5ndGhfYmF0b24tPnBl cl9jdSA9IGN1LT5wZXJfY3U7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+c2l6ZSA9IERXX0JMT0NL IChhdHRyKS0+c2l6ZSArIDI7Ci0rCSAgICAgIGRhdGEgPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNv bXBfdW5pdF9vYnN0YWNrLAotKwkJCQkgICAgbGVuZ3RoX2JhdG9uLT5zaXplKTsKLSsJICAgICAg bGVuZ3RoX2JhdG9uLT5kYXRhID0gZGF0YTsKLSsJICAgICAgbWVtY3B5IChkYXRhLCBEV19CTE9D SyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRyKS0+c2l6ZSk7Ci0rCi0rCSAgICAgIC8qIERX X0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRoIERXX0FUX1NUUklOR19MRU5HVEgK LSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdlciB0byBmZXRjaC4gICovCi0rCSAg ICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwot KwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+ c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOwotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6 ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7Ci0rCQkgIGlmIChkYXRhW0RXX0JMT0NLIChh dHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChzaXplX2F0dHIpKQotKwkJICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgICAgXygiRFdfQVRfc3RyaW5nX2xlbmd0 aCdzIERXX0FUX2J5dGVfc2l6ZSAiCi0rCQkJCSAiaW50ZWdlciBleGNlZWRzIHRoZSBieXRlIHNp emUgc3RvcmFnZSIpKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBkYXRhW0RXX0JM T0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKLSsJCSAgZGF0YVtEV19CTE9DSyAoYXR0 ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKLSsJICAgID0gUkFOR0VfQk9VTkRfS0lO RF9EV0FSRl9CTE9DSzsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUu ZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247Ci0rCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBl KSA9IDE7Ci0rCX0KLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgLyogQ2hlY2sgZm9y IHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLiAgKi8KLSsgICAgICBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwl7Ci0rCSAgLyogV2UgY3VycmVudGx5IGRv IG5vdCBzdXBwb3J0IGEgY29uc3RhbnQgYWRkcmVzcyB3aGVyZSB0aGUgbG9jYXRpb24KLSsJICAg ICBzaG91bGQgYmUgcmVhZCBmcm9tIC0gYXR0cl9mb3JtX2lzX2Jsb2NrIGlzIGV4cGVjdGVkIGlu c3RlYWQuICBTZWUKLSsJICAgICBEV0FSRiBmb3IgdGhlIERXX0FUX1NUUklOR19MRU5HVEggdnMu IERXX0FUX0JZVEVfU0laRSBkaWZmZXJlbmNlLgotKwkgICAgICovCi0rCSAgLyogUEFTU1RIUlUg Ki8KLSsJfQotKwotICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3Np emUsIGN1KTsKLS0gICAgICBpZiAoYXR0cikKLS0gICAgICAgIHsKLS0gICAgICAgICAgbGVuZ3Ro ID0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgICAgfQotKyAgICAgIGlmIChhdHRyICYmIGF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikpCi0rCXsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5 cGUpLT5oaWdoLmtpbmQKLSsJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsJ ICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQotKwkJ CQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKwkgIFRZUEVfRFlO QU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRy X2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUp ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSAgICAgICBlbHNl Ci0tICAgICAgICB7Ci0tICAgICAgICAgIGxlbmd0aCA9IDE7Ci0tICAgICAgICB9Ci0rCVRZUEVf SElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwotICAgICB9Ci0gCi0tICBpbmRleF90eXBlID0g b2JqZmlsZV90eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7Ci0tICByYW5nZV90eXBlID0gY3Jl YXRlX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Ci0gICBjaGFyX3R5 cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJj aCk7Ci0gICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdl X3R5cGUpOwotIAotQEAgLTE0Mjg5LDcgKzE0NDA4LDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgdHlw ZSAqYmFzZV90eXBlLCAqb3JpZ19iYXNlX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBMT05HRVNUIGxvdywgaGlnaDsKLSsg IExPTkdFU1QgbG93OwotICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOwotICAgY29uc3QgY2hh ciAqbmFtZTsKLSAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKLUBAIC0xNDM0OCw0MiArMTQ0Njcs NiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSAJCQkJICAgICAgIi0gRElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwK LSAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxlX25hbWUgKGN1LT5vYmpmaWxl KSk7Ci0gCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1 KTsKLS0gIGlmIChhdHRyKQotLSAgICB7Ci0tICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAo YXR0cikgfHwgYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikpCi0tICAgICAgICB7Ci0tICAgICAgICAg IC8qIEdDQyBlbmNvZGVzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkIG9yIGR5bmFtaWMgbGVuZ3Ro Ci0tICAgICAgICAgICAgIHdpdGggYSBEV19GT1JNX2Jsb2NrMSBhdHRyaWJ1dGUgb3IgYSByZWZl cmVuY2UgYXR0cmlidXRlLgotLSAgICAgICAgICAgICBGSVhNRTogR0RCIGRvZXMgbm90IHlldCBr bm93IGhvdyB0byBoYW5kbGUgZHluYW1pYwotLSAgICAgICAgICAgICBhcnJheXMgcHJvcGVybHks IHRyZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQKLS0gICAgICAgICAgICAgbGVu Z3RoIGZvciBub3cuCi0tCi0tICAgICAgICAgICAgIEZJWE1FOiBqaW1iLzIwMDMtMDktMjI6IEdE QiBkb2VzIG5vdCByZWFsbHkga25vdwotLSAgICAgICAgICAgICBob3cgdG8gaGFuZGxlIGFycmF5 cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKLS0gICAgICAgICAgICAgZWl0aGVyOyB3ZSBqdXN0IHJl cHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3RoCi0tICAgICAgICAgICAgIGFycmF5cy4gIENob29z ZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3VuZCBnaXZlbgotLSAgICAgICAgICAgICB0aGUgbG93 ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUuICAqLwotLSAgICAgICAgICBoaWdoID0gbG93 IC0gMTsKLS0gICAgICAgIH0KLS0gICAgICBlbHNlCi0tICAgICAgICBoaWdoID0gZHdhcmYyX2dl dF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7 Ci0tICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0tICAg ICAgaWYgKGF0dHIpCi0tCXsKLS0JICBpbnQgY291bnQgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3Rh bnRfdmFsdWUgKGF0dHIsIDEpOwotLQkgIGhpZ2ggPSBsb3cgKyBjb3VudCAtIDE7Ci0tCX0KLS0g ICAgICBlbHNlCi0tCXsKLS0JICAvKiBVbnNwZWNpZmllZCBhcnJheSBsZW5ndGguICAqLwotLQkg IGhpZ2ggPSBsb3cgLSAxOwotLQl9Ci0tICAgIH0KLS0KLSAgIC8qIER3YXJmLTIgc3BlY2lmaWNh dGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5cGVzCi0gICAgICB3 aXRob3V0IHNwZWNpZnlpbmcgYSBiYXNlIHR5cGUuCi0gICAgICBJbiB0aGF0IGNhc2UsIHRoZSBi YXNlIHR5cGUgbXVzdCBiZSBzZXQgdG8gdGhlIHR5cGUgb2YKLUBAIC0xNDQyMiwyNCArMTQ1MDUs MTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotIAl9Ci0gICAgIH0KLSAKLS0gIG5lZ2F0aXZlX21hc2sgPQotKyAgLyog TE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLwotKyAg cmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgMCwg LTEpOwotKyAgVFlQRV9VTlNJR05FRCAocmFuZ2VfdHlwZSkgPSAwOwotKwotKyAgbmVnYXRpdmVf bWFzayA9IAotICAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICog VEFSR0VUX0NIQVJfQklUIC0gMSk7Ci0tICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkg JiYgKGxvdyAmIG5lZ2F0aXZlX21hc2spKQotLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKLS0g IGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2sp KQotLSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7Ci0gCi0tICByYW5nZV90eXBlID0gY3JlYXRl X3JhbmdlX3R5cGUgKE5VTEwsIG9yaWdfYmFzZV90eXBlLCBsb3csIGhpZ2gpOwotKyAgLyogRXhj bHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cu ICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBp biBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQotKyAgICAgZXhpc3RpbmcgRFdBUkYgZHluYW1pYyBi b3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFjY2VzcwotKyAgICAgZXJyb3Jz LiAgKi8KLSAKLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBsZW5ndGggYXQgbGVhc3Qg YXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVj ayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVudGVkIGF0Ci0tICAgICBs ZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAgKi8KLS0gIGlmIChhdHRy ICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0tICAgIFRZUEVfSElHSF9CT1VORF9VTkRF RklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9sb3dlcl9ib3VuZCwgY3UpOwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotKyAgICB7Ci0rICAgICAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3 YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1 KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAvKiBGb3Ig c2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2luZy4g ICovCi0rICAgICAgbG93ID0gMDsKLSsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zv cm1faXNfcmVmIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotKyAgICB7 Ci0rICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwotKyAgICAgIHN0cnVjdCBkd2Fy ZjJfY3UgKnRhcmdldF9jdSA9IGN1OwotKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9s b2NfYXR0cjsKLSsKLSsgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChk aWUsIGF0dHIsICZ0YXJnZXRfY3UpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2Jq ZmlsZSA9PSBjdS0+b2JqZmlsZSk7Ci0rICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0 dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOwotKwotKyAgICAgIFRZ UEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9E V0FSRl9MT0NMSVNUOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51 LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0 X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9E QVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBlCi0rICAgICAgICA9IGRp ZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfRFlOQU1JQyAocmFu Z2VfdHlwZSkgPSAxOwotKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9V UFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KLSsgICAgICBsb3cgPSAwOwotKyAgICB9 Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3Rh bnQgKGF0dHIpKQotKwlsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIs IDApOwotKyAgICAgIGVsc2UKLSsJewotKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf Zm9ydHJhbikKLSsJICAgIHsKLSsJICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91 bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KLSsJICAgICAgbG93ID0gMTsKLSsJICAgIH0KLSsJ ICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIEFjY29yZGluZyB0byBEV0FSRiB3ZSBzaG91bGQg YXNzdW1lIHRoZSB2YWx1ZSAwIG9ubHkgZm9yCi0rCQkgTEFOR1VBR0VfQyBhbmQgTEFOR1VBR0Vf Q1BMVVMuICAqLwotKwkgICAgICBsb3cgPSAwOwotKwkgICAgfQotKwl9Ci0rICAgICAgaWYgKCFU WVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChsb3cgJiBuZWdhdGl2ZV9tYXNrKSkKLSsJbG93 IHw9IG5lZ2F0aXZlX21hc2s7Ci0rICAgICAgVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpID0g bG93OwotKyAgICAgIGlmIChsb3cgPj0gMCkKLSsJVFlQRV9VTlNJR05FRCAocmFuZ2VfdHlwZSkg PSAxOwotKyAgICB9Ci0gCi0tICAvKiBBZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBvbiBubyBi b3VuZGFyeSBhdHRyaWJ1dGVzLiAgKi8KLS0gIGlmIChhdHRyID09IE5VTEwgJiYgY3UtPmxhbmd1 YWdlICE9IGxhbmd1YWdlX2FkYSkKLS0gICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFu Z2VfdHlwZSkgPSAxOwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3VwcGVyX2Jv dW5kLCBjdSk7Ci0rICBpZiAoIWF0dHIgfHwgKCFhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYm ICFhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpCi0rCQkmJiAhYXR0cl9mb3JtX2lzX3JlZiAo YXR0cikpKQotKyAgICB7Ci0rICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Nv dW50LCBjdSk7Ci0rICAgICAgLyogSXQgZG9lcyBub3QgaHVydCBidXQgaXQgaXMgbmVlZGxlc3Ns eSBpbmVmZmVjdGl2ZSBpbiBjaGVja190eXBlZGVmLiAgKi8KLSsgICAgICBpZiAoYXR0ciAmJiAo YXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSB8fCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIp KSkKLSsgICAgICAJewotKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAocmFuZ2Vf dHlwZSkgPSAxOwotKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAg ICAgLyogUGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQuICAqLwot KyAgICB9Ci0rCi0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1 LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0rICAgIHsKLSsgICAgICBUWVBFX1JBTkdFX0RB VEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NL OwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9ibG9j ayA9Ci0rCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7Ci0rICAg ICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0 dHIgJiYgYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdl X2FkYSkKLSsgICAgewotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAg ICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmli dXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0rCi0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVf cmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0 YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0 ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsK LSsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5H RV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJf YXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAg ICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QudHlw ZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1KTsKLSsgICAgICBU WVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0r ICAgICAgTE9OR0VTVCBoaWdoOwotKwotKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19j b25zdGFudCAoYXR0cikpCi0rCWhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUg KGF0dHIsIDApOwotKyAgICAgIGVsc2UKLSsJewotKwkgIC8qIEFkYSBleHBlY3RzIGFuIGVtcHR5 IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLwotKwkgIGlmIChjdS0+bGFuZ3Vh Z2UgIT0gbGFuZ3VhZ2VfYWRhKQotKwkgICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFu Z2VfdHlwZSkgPSAxOwotKwkgIGhpZ2ggPSBsb3cgLSAxOwotKwl9Ci0rICAgICAgaWYgKCFUWVBF X1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCi0rCWhpZ2gg fD0gbmVnYXRpdmVfbWFzazsKLSsgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0g aGlnaDsKLSsgICAgfQotKwotKyAgLyogRFdfQVRfYml0X3N0cmlkZSBpcyBjdXJyZW50bHkgdW5z dXBwb3J0ZWQgYXMgd2UgY291bnQgaW4gYnl0ZXMuICAqLwotKyAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2J5dGVfc3RyaWRlLCBjdSk7Ci0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0rICAgIHsK LSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0r ICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Ci0rICAgICAgVFlQRV9SQU5H RV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9ibG9jayA9Ci0rCQkJCQlk d2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7Ci0rICAgICAgVFlQRV9EWU5B TUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9m b3JtX2lzX3JlZiAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRf bG9jX2F0dHI7Ci0rCi0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAo ZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9i amZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9h dHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKLSsKLSsgICAgICBU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rICAgICAgICA9 IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAg ICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdl dF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUu dS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRh cmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0K LSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsgICAg ewotKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRy X2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAo cmFuZ2VfdHlwZSkgPT0gMCkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJ ICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBvcnRlZCB2YWx1ZSAwIikp OwotKyAgICB9Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotICAgaWYgKG5h bWUpCi1AQCAtMTczNjEsMTEgKzE3NTgzLDE0IEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLSAgICAgIChpLmUuIHdoZW4g dGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9uIGlzCi0gICAgICByZWZl cmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9jaywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBt aWdodAotICAgICAgbm90IGJlIHdvcnRod2hpbGUuICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24n dCB1bmxlc3MgcGVyZm9ybWFuY2UKLS0gICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cgbWUgb3Ro ZXJ3aXNlLiAgKi8KLSsgICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cgbWUgb3RoZXJ3aXNlLgot KyAgICAgCi0rICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlkZW4gYnkgZHdhcmYyX3N5 bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KLSAKLSAgIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRl ZCAoYXR0ciwgc3ltLCBjdSwgMCk7Ci0gCi0tICBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoc3lt KS0+bG9jYXRpb25faGFzX2xvY2xpc3QpCi0rICBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoc3lt KSAhPSBOVUxMCi0rICAgICAgJiYgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKS0+bG9jYXRpb25f aGFzX2xvY2xpc3QpCi0gICAgIGN1LT5oYXNfbG9jbGlzdCA9IDE7Ci0gfQotIAotQEAgLTE4MjEy LDYgKzE4NDM3LDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSsgIGlmICh0aGlz X3R5cGUpCi0rICAgIGZpbmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7Ci0rCi0gICByZXR1cm4gdGhp c190eXBlOwotIH0KLSAKLUBAIC0yMDg5NCw2NiArMjExMjIsMTA5IEBAIGZpbGxfaW5fbG9jbGlz dF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCi0gICBiYXRvbi0+ZnJvbV9kd28gPSBjdS0+ ZHdvX3VuaXQgIT0gTlVMTDsKLSB9Ci0gCi0tc3RhdGljIHZvaWQKLS1kd2FyZjJfc3ltYm9sX21h cmtfY29tcHV0ZWQgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wg KnN5bSwKLS0JCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBpbnQgaXNfYmxvY2spCi0rLyog Q29udmVydCBEV19CTE9DSyBpbnRvIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbi4gIEFUVFIg bXVzdCBiZSBhIERXX0JMT0NLCi0rICAgYXR0cmlidXRlIHR5cGUuICAqLwotKwotK3N0YXRpYyBz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKgotK2R3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCi0rCQkJICAgICAgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0rewotKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29i amZpbGUtPm9iamZpbGU7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOwot KwotKyAgZ2RiX2Fzc2VydCAoYXR0ciA9PSBOVUxMIHx8IGF0dHJfZm9ybV9pc19ibG9jayAoYXR0 cikpOwotKwotKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLCBzaXplb2YgKCpiYXRvbikpOwotKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0r ICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKLSsKLSsgIC8qIE5vdGUgdGhhdCB3ZSdyZSBq dXN0IGNvcHlpbmcgdGhlIGJsb2NrJ3MgZGF0YSBwb2ludGVyCi0rICAgICBoZXJlLCBub3QgdGhl IGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKLSsgICAgIGluZm9f YnVmZmVyIGZvciBTWU0ncyBvYmpmaWxlOyByaWdodCBub3cgd2UgbmV2ZXIgcmVsZWFzZQotKyAg ICAgdGhhdCBidWZmZXIsIGJ1dCB3aGVuIHdlIGRvIGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5 Ci0rICAgICBuZWVkIHRvIGNoYW5nZS4gICovCi0rICBpZiAoYXR0ciAhPSBOVUxMKQotKyAgICB7 Ci0rICAgICAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0rICAgICAgYmF0 b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAg ewotKyAgICAgIGJhdG9uLT5zaXplID0gMDsKLSsgICAgICBiYXRvbi0+ZGF0YSA9IE5VTEw7Ci0r ICAgIH0KLSsgIGdkYl9hc3NlcnQgKGJhdG9uLT5zaXplID09IDAgfHwgYmF0b24tPmRhdGEgIT0g TlVMTCk7Ci0rCi0rICByZXR1cm4gYmF0b247Ci0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24gKgotK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCi0rCQkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9iamZp bGU7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiA9IGN1X2RlYnVnX2xv Y19zZWN0aW9uIChjdSk7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwot IAotLSAgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKLSsgIC8qIERXX0FU X2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUgbWlzc2luZyBpZiB0aGUgcmVm ZXJlbmNlZAotKyAgICAgdmFyaWFibGUgaGFzIGJlZW4gb3B0aW1pemVkIG91dC4gICovCi0rICBp ZiAoIWF0dHIpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKLSsKLSsgIGlmICghKGF0dHJf Zm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKLSAgICAgICAvKiAuZGVidWdfbG9jeywuZHdv fSBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotIAkg dGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhl Ci0gCSBvdGhlciBicmFuY2guICAqLwotLSAgICAgICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJm Ml9zZWN0aW9uX3NpemUgKG9iamZpbGUsIHNlY3Rpb24pKQotLSAgICB7Ci0tICAgICAgc3RydWN0 IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbjsKLSsgICAgICAmJiBEV19VTlNORCAoYXR0cikg PCBkd2FyZjJfc2VjdGlvbl9zaXplIChvYmpmaWxlLCBzZWN0aW9uKSkpCi0rICAgIHJldHVybiBO VUxMOwotIAotLSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7 Ci0rICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0r CQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7Ci0gCi0tICAgICAgZmls bF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgYmF0b24sIGF0dHIpOwotKyAgZmlsbF9pbl9sb2NsaXN0 X2JhdG9uIChjdSwgYmF0b24sIGF0dHIpOwotIAotLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9 PSAwKQotLQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkgICBfKCJMb2NhdGlv biBsaXN0IHVzZWQgd2l0aG91dCAiCi0tCQkgICAgICJzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFk ZHJlc3MuIikpOwotKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCi0rICAgIGNvbXBsYWludCAo JnN5bWZpbGVfY29tcGxhaW50cywKLSsJICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRo b3V0ICIKLSsJCSAic3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKLSsKLSsgIHJl dHVybiBiYXRvbjsKLSt9Ci0rCi0rLyogU1lNIG1heSBnZXQgaXRzIFNZTUJPTF9DTEFTUyBvdmVy cmlkZW4gb24gaW52YWxpZCBBVFRSIGNvbnRlbnQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZHdh cmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBz dHJ1Y3Qgc3ltYm9sICpzeW0sCi0rCQkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgaW50IGlz X2Jsb2NrKQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlzdF9iYXRv bjsKLSAKLSsgIGxvY2xpc3RfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uIChh dHRyLCBjdSk7Ci0rICBpZiAobG9jbGlzdF9iYXRvbikKLSsgICAgewotICAgICAgIFNZTUJPTF9B Q0xBU1NfSU5ERVggKHN5bSkgPSAoaXNfYmxvY2sKLSAJCQkJICAgPyBkd2FyZjJfbG9jbGlzdF9i bG9ja19pbmRleAotIAkJCQkgICA6IGR3YXJmMl9sb2NsaXN0X2luZGV4KTsKLS0gICAgICBTWU1C T0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05f QkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOwotKyAgICB9Ci0rICBlbHNlIGlmIChhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgU1lNQk9MX0FDTEFTU19JTkRFWCAo c3ltKSA9IChpc19ibG9jawotKwkJCQkgICA/IGR3YXJmMl9sb2NleHByX2Jsb2NrX2luZGV4Ci0r CQkJCSAgIDogZHdhcmYyX2xvY2V4cHJfaW5kZXgpOwotKyAgICAgIFNZTUJPTF9MT0NBVElPTl9C QVRPTiAoc3ltKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSAg ICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICpiYXRvbjsKLS0KLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCi0tCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv bikpOwotLSAgICAgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotLSAgICAgIGdkYl9hc3Nl cnQgKGJhdG9uLT5wZXJfY3UpOwotLQotLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0 dHIpKQotLQl7Ci0tCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sn cyBkYXRhIHBvaW50ZXIKLS0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUg c3RpbGwgcG9pbnRpbmcgaW50byB0aGUKLS0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2Jq ZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKLS0JICAgICB0aGF0IGJ1ZmZlciwgYnV0 IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLS0JICAgICBuZWVkIHRvIGNo YW5nZS4gICovCi0tCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0tCSAg YmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0tCX0KLS0gICAgICBlbHNlCi0t CXsKLS0JICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24g ZGVzY3JpcHRpb24iLAotLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKLS0JICBi YXRvbi0+c2l6ZSA9IDA7Ci0tCX0KLSsgICAgICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3Nf Y29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAotKwkJCQkJICAgICBTWU1CT0xfTkFU VVJBTF9OQU1FIChzeW0pKTsKLSAKLSAgICAgICBTWU1CT0xfQUNMQVNTX0lOREVYIChzeW0pID0g KGlzX2Jsb2NrCi0gCQkJCSAgID8gZHdhcmYyX2xvY2V4cHJfYmxvY2tfaW5kZXgKLSAJCQkJICAg OiBkd2FyZjJfbG9jZXhwcl9pbmRleCk7Ci0tICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChz eW0pID0gYmF0b247Ci0rICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gZHdhcmYy X2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoTlVMTCwgY3UpOwotICAgICB9Ci0gfQotIAotQEAgLTIx MzI2LDYgKzIxNTk3LDI1IEBAIHBlcl9jdV9vZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQg Kml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSAJICAmJiBvZnNfbGhzLT5vZmZzZXQu c2VjdF9vZmYgPT0gb2ZzX3Jocy0+b2Zmc2V0LnNlY3Rfb2ZmKTsKLSB9Ci0gCi0rLyogRmlsbCBp biBnZW5lcmljIGF0dHJpYnV0ZXMgYXBwbGljYWJsZSBmb3IgdHlwZSBESUVzLiAgKi8KLSsKLStz dGF0aWMgdm9pZAotK2ZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IHR5cGUgKnR5cGUsCi0rCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSt7Ci0r ICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotKwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2FsbG9jYXRlZCwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp Ci0rICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUp KTsKLSsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7 Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgVFlQRV9BU1NPQ0lBVEVE ICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdk Yl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7Ci0rfQotKwotIC8qIFNldCB0 aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFz aAotICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUu Ci0gCi1AQCAtMjEzNTAsNiArMjE2NDAsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7Ci0gICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotIAotKyAgZmV0Y2hfZGllX3R5cGVfYXR0 cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRo YXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKLSAgICAgIGluaXRpYWxpemVkIChp ZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCi0gICAgICB3 ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFyZWEg aXMKLWRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5kZXggYmZiZTMxOS4u M2ZkYzVkNSAxMDA2NDQKLS0tLSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9ldmFsLmMKLUBAIC00 MSw2ICs0MSw3IEBACi0gI2luY2x1ZGUgImdkYl9vYnN0YWNrLmgiCi0gI2luY2x1ZGUgIm9iamZp bGVzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9j LmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLUBAIC0zOTcsMjcgKzM5OCwyMjIg QEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgdmFsdWUg KmVsZW1lbnQsCi0gfQotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXZhbHVlX2Y5MF9zdWJh cnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKLS0JCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotK3ZhbHVlX2Y5MF9zdWJhcnJheSAoc3Ry dWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0rCQkg ICAgaW50IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gewotLSAgaW50IHBjID0gKCpwb3Mp ICsgMTsKLS0gIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwotLSAgc3RydWN0IHR5cGUg KnJhbmdlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9JTkRFWF9UWVBFICh2YWx1ZV90eXBlIChhcnJh eSkpKTsKLS0gIGVudW0gZjkwX3JhbmdlX3R5cGUgcmFuZ2VfdHlwZSA9IGxvbmdlc3RfdG9faW50 IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci0tIAotLSAgKnBvcyArPSAzOwotLQotLSAgaWYg KHJhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JP VU5EX0RFRkFVTFQpCi0tICAgIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZSk7Ci0r ICAvKiBUeXBlIHRvIHVzZSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCB2YWx1ZSBBUlJBWS4gICov Ci0rICBzdHJ1Y3QgdHlwZSAqbmV3X2FycmF5X3R5cGU7Ci0rCi0rICAvKiBUeXBlIGJlaW5nIGl0 ZXJhdGVkIGZvciBlYWNoIGRpbWVuc2lvbi4gICovCi0rICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnR5 cGVfbGFzdF90YXJnZXQ7Ci0rCi0rICAvKiBQb2ludGVyIGluIHRoZSBsYXN0IGhvbGRlciB0byB0 aGUgdHlwZSBvZiBjdXJyZW50IGRpbWVuc2lvbi4gICovCi0rICBzdHJ1Y3QgdHlwZSAqKnR5cGVw ID0gJm5ld19hcnJheV90eXBlOwotKwotKyAgc3RydWN0IHN1YnNjcmlwdF9pbmRleAotKyAgICB7 Ci0rICAgICAgZW51bSB7IFNVQlNDUklQVF9SQU5HRSwgU1VCU0NSSVBUX05VTUJFUiB9IGtpbmQ7 Ci0rICAgICAgdW5pb24KLSsJewotKwkgIHN0cnVjdCBzdWJzY3JpcHRfcmFuZ2UKLSsJICAgIHsK LSsJICAgICAgZW51bSBmOTBfcmFuZ2VfdHlwZSBmOTBfcmFuZ2VfdHlwZTsKLSsJICAgICAgTE9O R0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0rCSAgICB9Ci0rCSAgcmFuZ2U7Ci0rCSAgTE9O R0VTVCBudW1iZXI7Ci0rCX07Ci0rICAgIH0KLSsgICpzdWJzY3JpcHRfYXJyYXk7Ci0rICBzdHJ1 Y3QgdHlwZSAqKnR5cGVfYXJyYXk7Ci0rICBpbnQgaTsKLSsgIHN0cnVjdCBjbGVhbnVwICpvbGRf Y2hhaW47Ci0rICBDT1JFX0FERFIgdmFsdWVfYnl0ZV9hZGRyZXNzLCB2YWx1ZV9ieXRlX29mZnNl dCA9IDA7Ci0rICBodGFiX3QgY29waWVkX3R5cGVzOwotKyAgc3RydWN0IHZhbHVlICpzYXZlZF9h cnJheTsKLSsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsK LSsgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFycmF5KSk7Ci0rCi0r ICBpZiAodmFsdWVfb3B0aW1pemVkX291dCAoYXJyYXkpCi0rICAgICAgfHwgKFZBTFVFX0xWQUwg KGFycmF5KSAhPSBub3RfbHZhbAotKyAgICAgICAgICAmJiBWQUxVRV9MVkFMIChhcnJheSkgIT0g bHZhbF9tZW1vcnkKLSsJICAmJiBWQUxVRV9MVkFMIChhcnJheSkgIT0gbHZhbF9pbnRlcm5hbHZh cl9jb21wb25lbnQKLSsJICAmJiBWQUxVRV9MVkFMIChhcnJheSkgIT0gbHZhbF9pbnRlcm5hbHZh cikpCi0rICAgIGVycm9yIChfKCJ2YWx1ZSBiZWluZyBzdWJyYW5nZWQgbXVzdCBiZSBpbiBtZW1v cnkiKSk7Ci0rICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLSsg IGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7Ci0rCi0rICBjb3Bp ZWRfdHlwZXMgPSBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKE5VTEwpOwotKyAgdHlwZSA9IGNv cHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7Ci0rICBodGFiX2RlbGV0ZSAo Y29waWVkX3R5cGVzKTsKLSsKLSsgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19hcnJheV9kaW1zICh0 eXBlKSkKLSsgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOwotKwot KyAgaWYgKFRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSICh0eXBlKSkKLSsgICAgewotKyAgICAg IHZhbHVlX2J5dGVfYWRkcmVzcyA9IChUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAodHlwZSkKLSsJ CQkgICAgKyB2YWx1ZV9vZmZzZXQgKGFycmF5KSk7Ci0rICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9O X0lTX0FERFIgKHR5cGUpID0gMDsKLSsgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxP Q0sgKHR5cGUpID0gTlVMTDsKLSsgICAgfQotICAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1 ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSkp OwotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JM T0NLICh0eXBlKSA9PSBOVUxMKTsKLSsgICAgICB2YWx1ZV9ieXRlX2FkZHJlc3MgPSB2YWx1ZV9h ZGRyZXNzIChhcnJheSk7Ci0rICAgIH0KLSsKLSsgIG5ld19hcnJheV90eXBlID0gdHlwZTsKLSsK LSsgIHN1YnNjcmlwdF9hcnJheSA9IGFsbG9jYSAoc2l6ZW9mICgqc3Vic2NyaXB0X2FycmF5KSAq IG5hcmdzKTsKLSsKLSsgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rCi0rICAvKiBOb3cgdGhh dCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lvbiAKLSsg ICAgIGxldCB1cyBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGlu IHRoZSBhcnJheS4gICovCi0rCi0rICAvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdo dC4gICovCi0rICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsgICAgewotKyAgICAgIHN0 cnVjdCBzdWJzY3JpcHRfaW5kZXggKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKLSsKLSsg ICAgICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0UpCi0rCXsKLSsJ ICBpbnQgcGMgPSAoKnBvcykgKyAxOwotKwkgIHN0cnVjdCBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdl OwotKwotKwkgIGluZGV4LT5raW5kID0gU1VCU0NSSVBUX1JBTkdFOwotKwkgIHJhbmdlID0gJmlu ZGV4LT5yYW5nZTsKLSsKLSsJICAqcG9zICs9IDM7Ci0rCSAgcmFuZ2UtPmY5MF9yYW5nZV90eXBl ID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0KTsKLSsKLSsJICBpZiAo cmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVAotKwkgICAgICB8fCBy YW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQotKwkgICAgcmFuZ2Ut Pmxvd19ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBl eHAsCi0rCQkJCQkJCSAgICAgICBwb3MsIG5vc2lkZSkpOwotKwotKwkgIGlmIChyYW5nZS0+Zjkw X3JhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQKLSsJICAgICAgfHwgcmFuZ2UtPmY5MF9y YW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJICAgIHJhbmdlLT5oaWdoX2JvdW5k ID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKLSsJCQkJ CQkJCXBvcywgbm9zaWRlKSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBzdHJ1Y3QgdmFs dWUgKnZhbDsKLSAKLS0gIGlmIChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVCB8fCBy YW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKLS0gICAgaGlnaF9ib3VuZCA9IFRZUEVf SElHSF9CT1VORCAocmFuZ2UpOwotKwkgIGluZGV4LT5raW5kID0gU1VCU0NSSVBUX05VTUJFUjsK LSsKLSsJICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGlu dGVnZXIgaW4gRjc3LiAgKi8KLSsJICB2YWwgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lv biAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0rCSAgaW5kZXgtPm51bWJlciA9IHZhbHVlX2FzX2xvbmcg KHZhbCk7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogSW50ZXJuYWwgdHlwZSBvZiBhcnJheSBpcyBh cnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8KLSsgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAw OyBpLS0pCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0X2luZGV4ICppbmRleCA9ICZz dWJzY3JpcHRfYXJyYXlbaV07Ci0rICAgICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBF X0lOREVYX1RZUEUgKHR5cGUpOwotKwotKyAgICAgIHN3aXRjaCAoaW5kZXgtPmtpbmQpCi0rCXsK LSsJY2FzZSBTVUJTQ1JJUFRfUkFOR0U6Ci0rCSAgewotKwkgICAgc3RydWN0IHN1YnNjcmlwdF9y YW5nZSAqcmFuZ2UgPSAmaW5kZXgtPnJhbmdlOwotKwkgICAgQ09SRV9BRERSIGJ5dGVfb2Zmc2V0 OwotKwotKwkgICAgaWYgKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVM VAotKwkJfHwgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKLSsJ ICAgICAgcmFuZ2UtPmxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKTsKLSsK LSsJICAgIGlmIChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCi0r CQl8fCByYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQotKwkgICAg ICByYW5nZS0+aGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSk7Ci0rCi0r CSAgICBpZiAocmFuZ2UtPmxvd19ib3VuZCA8IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKQot KwkJfHwgKCFUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKQotKwkJICAgICYm IHJhbmdlLT5oaWdoX2JvdW5kID4gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpCi0rCSAg ICAgIGVycm9yIChfKCJzbGljZSBvdXQgb2YgcmFuZ2UiKSk7Ci0rCi0rCSAgICBieXRlX29mZnNl dCA9ICgocmFuZ2UtPmxvd19ib3VuZCAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSkKLSsJ CQkgICAqIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpKTsKLSsJICAgIFRZUEVf TE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IHJhbmdlLT5sb3dfYm91bmQ7Ci0rCSAgICBUWVBFX0hJ R0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gcmFuZ2UtPmhpZ2hfYm91bmQ7Ci0rCSAgICBpZiAocmFu Z2UtPmY5MF9yYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCi0rCQl8fCByYW5nZS0+Zjkw X3JhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQotKwkgICAgICBUWVBFX0hJR0hfQk9V TkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDA7Ci0rCi0rCSAgICB0eXBlcCA9ICZUWVBFX1RB UkdFVF9UWVBFICh0eXBlKTsKLSsJICAgIHZhbHVlX2J5dGVfb2Zmc2V0ICs9IGJ5dGVfb2Zmc2V0 OwotKwkgICAgdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwotKwkgIH0KLSsJICBicmVh azsKLSsKLSsJY2FzZSBTVUJTQ1JJUFRfTlVNQkVSOgotKwkgIHsKLSsJICAgIENPUkVfQUREUiBi eXRlX29mZnNldDsKLSsKLSsJICAgIGlmIChpbmRleC0+bnVtYmVyIDwgVFlQRV9MT1dfQk9VTkQg KHJhbmdlX3R5cGUpCi0rCQl8fCAoIVRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5 cGUpCi0rCQkgICAgJiYgaW5kZXgtPm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlw ZSkpKQotKwkgICAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKLSsKLSsJ ICAgIGJ5dGVfb2Zmc2V0ID0gKChpbmRleC0+bnVtYmVyIC0gVFlQRV9MT1dfQk9VTkQgKHJhbmdl X3R5cGUpKQotKwkJCSAgICogVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodHlwZSkpOwot KwotKwkgICAgdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwotKwkgICAgKnR5cGVwID0g dHlwZTsKLSsJICAgIHZhbHVlX2J5dGVfb2Zmc2V0ICs9IGJ5dGVfb2Zmc2V0OwotKwkgIH0KLSsJ ICBicmVhazsKLSsJfQotKyAgICB9Ci0rCi0rICB0eXBlX2xhc3RfdGFyZ2V0ID0gdHlwZTsKLSsg IHR5cGVfYXJyYXkgPSBhbGxvY2EgKHNpemVvZiAoKnR5cGVfYXJyYXkpICogbmFyZ3MpOwotKyAg aSA9IDA7Ci0rICBmb3IgKHR5cGUgPSBuZXdfYXJyYXlfdHlwZTsgdHlwZSAhPSB0eXBlX2xhc3Rf dGFyZ2V0OwotKyAgICAgICB0eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpCi0rICAgIHR5 cGVfYXJyYXlbaSsrXSA9IHR5cGU7Ci0rICB3aGlsZSAoaSA+IDApCi0rICAgIHsKLSsgICAgICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IHR5cGVfYXJyYXlbLS1pXTsKLSsKLSsgICAgICAvKiBGb3JjZSBU WVBFX0xFTkdUSCAodHlwZSkgcmVjYWxjdWxhdGlvbi4gICovCi0rICAgICAgVFlQRV9UQVJHRVRf U1RVQiAodHlwZSkgPSAxOwotKyAgICAgIGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotKyAgICB9Ci0r Ci0rICBzYXZlZF9hcnJheSA9IGFycmF5OwotKyAgYXJyYXkgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5 IChuZXdfYXJyYXlfdHlwZSk7Ci0rICBWQUxVRV9MVkFMIChhcnJheSkgPSBWQUxVRV9MVkFMIChz YXZlZF9hcnJheSk7Ci0rICBpZiAoVkFMVUVfTFZBTCAoc2F2ZWRfYXJyYXkpID09IGx2YWxfaW50 ZXJuYWx2YXJfY29tcG9uZW50KQotKyAgICBWQUxVRV9MVkFMIChhcnJheSkgPSBsdmFsX2ludGVy bmFsdmFyOwotICAgZWxzZQotLSAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVh dGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSsgICAgVkFMVUVfTFZB TCAoYXJyYXkpID0gVkFMVUVfTFZBTCAoc2F2ZWRfYXJyYXkpOwotKyAgVkFMVUVfRlJBTUVfSUQg KGFycmF5KSA9IFZBTFVFX0ZSQU1FX0lEIChzYXZlZF9hcnJheSk7Ci0rICBpZiAoVkFMVUVfTFZB TCAoYXJyYXkpICE9IGx2YWxfaW50ZXJuYWx2YXIpCi0rICAgIHNldF92YWx1ZV9hZGRyZXNzIChh cnJheSwgdmFsdWVfYnl0ZV9hZGRyZXNzICsgdmFsdWVfYnl0ZV9vZmZzZXQpOwotKwotKyAgaWYg KCF2YWx1ZV9sYXp5IChzYXZlZF9hcnJheSkKLSsgICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdWVf dHlwZSAoc2F2ZWRfYXJyYXkpKSA+IDAKLSsgICAgICAmJiBUWVBFX0xFTkdUSCAobmV3X2FycmF5 X3R5cGUpID4gMCkKLSsgICAgewotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfTEVOR1RIIChuZXdf YXJyYXlfdHlwZSkKLSsJCSAgPD0gVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKHNhdmVkX2FycmF5 KSkpOwotKyAgICAgIC8qIEZJWE1FOiBJdCBzaW11bGF0ZXMgbm9uLXB1YmxpYyBhbGxvY2F0ZV92 YWx1ZV9jb250ZW50cy4gICovCi0rICAgICAgdmFsdWVfY29udGVudHNfYWxsX3JhdyAoYXJyYXkp OwotKyAgICAgIHNldF92YWx1ZV9sYXp5IChhcnJheSwgMCk7Ci0rCi0rICAgICAgbWVtY3B5ICh2 YWx1ZV9jb250ZW50c193cml0ZWFibGUgKGFycmF5KSwKLSsJICAgICAgdmFsdWVfY29udGVudHMg KHNhdmVkX2FycmF5KSArIHZhbHVlX2J5dGVfb2Zmc2V0LAotKwkgICAgICBUWVBFX0xFTkdUSCAo bmV3X2FycmF5X3R5cGUpKTsKLSsgICAgfQotIAotLSAgcmV0dXJuIHZhbHVlX3NsaWNlIChhcnJh eSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0rICBkb19jbGVhbnVw cyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBhcnJheTsKLSB9Ci0gCi0gCi1AQCAtNzE0LDYgKzkx MCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAotICAgaW50IHNhdmVfcG9zMTsKLSAgIHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uID0gTlVMTDsK LSAgIGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9j aGFpbjsKLSAKLSAgIHBjID0gKCpwb3MpKys7Ci0gICBvcCA9IGV4cC0+ZWx0c1twY10ub3Bjb2Rl OwotQEAgLTE3ODAsNiArMTk3Nyw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAotIAotICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlw ZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAgICAgIGFyZzEgPSBldmFsdWF0ZV9z dWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgb2xkX2NoYWluID0g bWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVjdF9hZGRyZXNzX3Nl dCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwot IAotQEAgLTE4MDAsMjMgKzE5OTksMTMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwot IAkgICAgfQotIAl9IAotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIAotICAgICAg IHN3aXRjaCAoY29kZSkKLSAJewotIAljYXNlIFRZUEVfQ09ERV9BUlJBWToKLS0JICBpZiAoZXhw LT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0UpCi0tCSAgICByZXR1cm4gdmFsdWVf ZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbm9zaWRlKTsKLS0JICBlbHNlCi0tCSAgICBn b3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7Ci0tCi0gCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKLS0J ICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0UpCi0tCSAgICByZXR1 cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbm9zaWRlKTsKLS0JICBlbHNl Ci0tCSAgICB7Ci0tCSAgICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAo ZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCSAgICAgIHJldHVybiB2YWx1ZV9zdWJzY3JpcHQgKGFyZzEs IHZhbHVlX2FzX2xvbmcgKGFyZzIpKTsKLS0JICAgIH0KLSsJICByZXR1cm4gdmFsdWVfZjkwX3N1 YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7Ci0gCi0gCWNhc2UgVFlQRV9D T0RFX1BUUjoKLSAJY2FzZSBUWVBFX0NPREVfRlVOQzoKLUBAIC0yMjI5LDQ5ICsyNDE4LDYgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCX0K LSAgICAgICByZXR1cm4gKGFyZzEpOwotIAotLSAgICBtdWx0aV9mNzdfc3Vic2NyaXB0OgotLSAg ICAgIHsKLS0JTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0tCWlu dCBuZGltZW5zaW9ucyA9IDEsIGk7Ci0tCXN0cnVjdCB2YWx1ZSAqYXJyYXkgPSBhcmcxOwotLQot LQlpZiAobmFyZ3MgPiBNQVhfRk9SVFJBTl9ESU1TKQotLQkgIGVycm9yIChfKCJUb28gbWFueSBz dWJzY3JpcHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7Ci0tCi0tCW5k aW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0tCi0tCWlmIChuYXJncyAh PSBuZGltZW5zaW9ucykKLS0JICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMi KSk7Ci0tCi0tCWdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0tCi0tCS8qIE5vdyB0aGF0IHdlIGtu b3cgd2UgaGF2ZSBhIGxlZ2FsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9uIAotLQkgICBsZXQg dXMgYWN0dWFsbHkgZmluZCBvdXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4aXN0cyBpbiB0aGUgYXJy YXkuICAqLwotLQotLQkvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCi0t CWZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotLQkgIHsKLS0JICAgIC8qIEV2YWx1YXRlIGVh Y2ggc3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLwotLQkg ICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRl KTsKLS0KLS0JICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCi0tCi0tCSAg ICBzdWJzY3JpcHRfYXJyYXlbaV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsKLS0JICB9Ci0tCi0t CS8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICov Ci0tCWZvciAoaSA9IG5hcmdzOyBpID4gMDsgaS0tKQotLQkgIHsKLS0JICAgIHN0cnVjdCB0eXBl ICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLS0JICAg IExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwotLQotLQkgICAgYXJyYXkg PSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKLS0JCQkJCSAgICAgIGY3 N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwotLQkgIH0KLS0KLS0JcmV0dXJuIGFycmF5 OwotLSAgICAgIH0KLS0KLSAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSAgICAgICBhcmcx ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwotICAgICAg IGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotQEAgLTI1MDMsMTUgKzI2NDksMjMgQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAgaWYg KGV4cGVjdF90eXBlICYmIFRZUEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIp Ci0gCWV4cGVjdF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0 X3R5cGUpKTsKLSAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhw LCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2Ns ZWFudXAsIDApOwotKyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3Mg KGFyZzEpKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkp OwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0RQVFIKLSAJ ICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRU1CRVJQVFIpCi0gCWVycm9yIChf KCJBdHRlbXB0IHRvIGRlcmVmZXJlbmNlIHBvaW50ZXIgIgotIAkJICJ0byBtZW1iZXIgd2l0aG91 dCBhbiBvYmplY3QiKSk7Ci0gICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi0tCWdvdG8g bm9zaWRlcmV0OwotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgZ290byBu b3NpZGVyZXQ7Ci0rCX0KLSAgICAgICBpZiAodW5vcF91c2VyX2RlZmluZWRfcCAob3AsIGFyZzEp KQotLQlyZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsKLSsJewotKwkgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgIHJldHVybiB2YWx1ZV94X3Vub3AgKGFyZzEsIG9w LCBub3NpZGUpOwotKwl9Ci0gICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lE RV9FRkZFQ1RTKQotIAl7Ci0gCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy ZzEpKTsKLUBAIC0yNTIwLDEyICsyNjc0LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgIC8qIEluIEMgeW91IGNhbiBkZXJlZmVyZW5j ZSBhbiBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAqLwotIAkgICAgICB8fCBUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotIAkgICAgKQotLQkgICAgcmV0dXJuIHZhbHVlX3pl cm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAotLQkJCSAgICAgICBsdmFsX21lbW9yeSk7Ci0r CSAgICB7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgICAgICByZXR1cm4g dmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0rCQkJCSBsdmFsX21lbW9yeSk7 Ci0rCSAgICB9Ci0gCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5U KQotLQkgICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5jaW5nIGFuIGludC4gICovCi0tCSAgICBy ZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2lu dCwKLS0JCQkgICAgICAgbHZhbF9tZW1vcnkpOwotKwkgICAgewotKwkgICAgICBkb19jbGVhbnVw cyAob2xkX2NoYWluKTsKLSsJICAgICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5jaW5nIGFuIGlu dC4gICovCi0rCSAgICAgIHJldHVybiB2YWx1ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2Ri YXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQkgbHZhbF9tZW1vcnkpOwotKwkgICAgfQotIAkgIGVs c2UKLSAJICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9p bnRlciB2YWx1ZS4iKSk7Ci0gCX0KLUBAIC0yNTM1LDkgKzI2OTUsMTQgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSBkby4gICJsb25nIGxv bmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAotIAkgQlVJTFRJTl9UWVBFX0xPTkdF U1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwotICAgICAgIGlmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCi0tCXJldHVybiB2YWx1ZV9hdF9sYXp5IChidWlsdGlu X3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAotLQkJCSAgICAgIChDT1JFX0FERFIp IHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKLS0gICAgICByZXR1cm4gdmFsdWVfaW5kIChhcmcx KTsKLSsJewotKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgIHJldHVybiB2YWx1ZV9h dF9sYXp5IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQko Q09SRV9BRERSKSB2YWx1ZV9hc19hZGRyZXNzIChhcmcxKSk7Ci0rCX0KLSsgICAgICBhcmcxID0g dmFsdWVfaW5kIChhcmcxKTsKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgICAg ICByZXR1cm4gYXJnMTsKLSAKLSAgICAgY2FzZSBVTk9QX0FERFI6Ci0gICAgICAgLyogQysrOiBj aGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcnMuICAqLwotQEAgLTI5NjcsNyAr MzEzMiw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLAotIHsKLSAgIGVudW0gZXhwX29wY29kZSBvcDsKLSAgIGludCBwYzsKLS0gIHN0cnVj dCB2YWx1ZSAqdmFsOwotKyAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwotICAgc3RydWN0IHN5 bWJvbCAqdmFyOwotICAgc3RydWN0IHR5cGUgKnR5cGU7Ci0gCi1AQCAtMjk3OCwxMyArMzE0Mywx OCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwKLSAgICAgewotICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLSAgICAgICB2YXIgPSBleHAtPmVs dHNbcGMgKyAyXS5zeW1ib2w7Ci0rICAgICAgLyogYWRkcmVzc19vZl92YXJpYWJsZSB3aWxsIGNh bGwgb2JqZWN0X2FkZHJlc3Nfc2V0IGZvciBjaGVja190eXBlZGVmLgotKwkgQ2FsbCBpdCBvbmx5 IGlmIHJlcXVpcmVkIGFzIGl0IGNhbiBlcnJvci1vdXQgb24gVkFSIGluIHJlZ2lzdGVyLiAgKi8K LSsgICAgICBpZiAoVFlQRV9EWU5BTUlDIChTWU1CT0xfVFlQRSAodmFyKSkpCi0rCXZhbCA9IGFk ZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwotICAgICAg IHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1CT0xfVFlQRSAodmFyKSk7Ci0gICAgICAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0gCSAgJiYgIVRZUEVfVkVDVE9SICh0 eXBlKQotIAkgICYmIENBU1RfSVNfQ09OVkVSU0lPTiAoZXhwLT5sYW5ndWFnZV9kZWZuKSkKLSAJ ewotIAkgICgqcG9zKSArPSA0OwotLQkgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwg ZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwotKwkgIGlmICghdmFsKQotKwkgICAgdmFsID0gYWRk cmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7Ci0gCSAgcmV0 dXJuIHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKSwKLSAJCQkgICAgIHZhbCk7Ci0gCX0KLUBAIC0zMDQyLDkgKzMyMTIsMTMgQEAgZXZhbHVh dGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQot IAotICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLSAgICAgICAoKnBvcykgKz0gNDsKLS0gICAgICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAoU1lNQk9MX1RZUEUgKGV4cC0+ZWx0c1twYyArIDJdLnN5bWJv bCkpOwotLSAgICAgIHJldHVybgotLQl2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExP TkdFU1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8g Y2FsbCByZWFkX3Zhcl92YWx1ZSBidXQgdGhlIG9iamVjdCBldmFsdWF0aW9uIG1heQotKwkgbmVl ZCB0byBoYXZlIGV4ZWN1dGVkIG9iamVjdF9hZGRyZXNzX3NldCB3aGljaCBuZWVkcyB2YWxpZAot KwkgU1lNQk9MX1ZBTFVFX0FERFJFU1Mgb2YgdGhlIHN5bWJvbC4gIFN0aWxsIFZBTFVFIHJldHVy bmVkIGJ5Ci0rCSByZWFkX3Zhcl92YWx1ZSB3ZSBsZWZ0IGFzIGxhenkuICAqLwotKyAgICAgIHR5 cGUgPSB2YWx1ZV90eXBlIChyZWFkX3Zhcl92YWx1ZSAoZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9s LAotKwkJCQkJZGVwcmVjYXRlZF9zYWZlX2dldF9zZWxlY3RlZF9mcmFtZSAoKSkpOwotKyAgICAg IHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVO R1RIICh0eXBlKSk7Ci0gCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgdmFsID0gZXZhbHVhdGVfc3Vi ZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7Ci1AQCAt MzA3NSwxOCArMzI0OSwyNSBAQCBwYXJzZV9hbmRfZXZhbF90eXBlIChjaGFyICpwLCBpbnQgbGVu Z3RoKQotIGludAotIGNhbGNfZjc3X2FycmF5X2RpbXMgKHN0cnVjdCB0eXBlICphcnJheV90eXBl KQotIHsKLS0gIGludCBuZGltZW4gPSAxOwotLSAgc3RydWN0IHR5cGUgKnRtcF90eXBlOwotKyAg c3dpdGNoIChUWVBFX0NPREUgKGFycmF5X3R5cGUpKQotKyAgICB7Ci0rICAgIGNhc2UgVFlQRV9D T0RFX1NUUklORzoKLSsgICAgICByZXR1cm4gMTsKLSAKLS0gIGlmICgoVFlQRV9DT0RFIChhcnJh eV90eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkpKQotLSAgICBlcnJvciAoXygiQ2FuJ3QgZ2V0IGRp bWVuc2lvbnMgZm9yIGEgbm9uLWFycmF5IHR5cGUiKSk7Ci0rICAgIGNhc2UgVFlQRV9DT0RFX0FS UkFZOgotKyAgICAgIHsKLSsJaW50IG5kaW1lbiA9IDE7Ci0gCi0tICB0bXBfdHlwZSA9IGFycmF5 X3R5cGU7Ci0rCXdoaWxlICgoYXJyYXlfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5 cGUpKSkKLSsJICB7Ci0rCSAgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSA9PSBUWVBFX0NP REVfQVJSQVkpCi0rCSAgICAgICsrbmRpbWVuOwotKwkgIH0KLSsJcmV0dXJuIG5kaW1lbjsKLSsg ICAgICB9Ci0gCi0tICB3aGlsZSAoKHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5 cGUpKSkKLS0gICAgewotLSAgICAgIGlmIChUWVBFX0NPREUgKHRtcF90eXBlKSA9PSBUWVBFX0NP REVfQVJSQVkpCi0tCSsrbmRpbWVuOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGVycm9yIChfKCJD YW4ndCBnZXQgZGltZW5zaW9ucyBmb3IgYSBub24tYXJyYXkvbm9uLXN0cmluZyB0eXBlIikpOwot ICAgICB9Ci0tICByZXR1cm4gbmRpbWVuOwotKwotIH0KLWRpZmYgLS1naXQgYS9nZGIvZi1leHAu eSBiL2dkYi9mLWV4cC55Ci1pbmRleCA3YTk0YjE1Li5hNmJhNzg0IDEwMDY0NAotLS0tIGEvZ2Ri L2YtZXhwLnkKLSsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjk3LDcgKzI5Nyw5IEBAIGFyZ2xpc3Qg OglzdWJyYW5nZQotIAkJCXsgYXJnbGlzdF9sZW4gPSAxOyB9Ci0gCTsKLSAgICAKLS1hcmdsaXN0 CToJYXJnbGlzdCAnLCcgZXhwICAgJXByZWMgQUJPVkVfQ09NTUEKLSthcmdsaXN0CToJYXJnbGlz dCAnLCcgZXhwICAgICAgICVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJeyBhcmdsaXN0X2xlbisrOyB9 Ci0rCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UgICVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyBhcmds aXN0X2xlbisrOyB9Ci0gCTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmggYi9nZGIvZi1s YW5nLmgKLWluZGV4IDJkNjdhNDguLjRkMmY0MTEgMTAwNjQ0Ci0tLS0gYS9nZGIvZi1sYW5nLmgK LSsrKyBiL2dkYi9mLWxhbmcuaAotQEAgLTI5LDYgKzI5LDEwIEBAIGV4dGVybiB2b2lkIGZfZXJy b3IgKGNoYXIgKik7CS8qIERlZmluZWQgaW4gZi1leHAueSAqLwotIGV4dGVybiB2b2lkIGZfcHJp bnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBp bnQsCi0gCQkJICBpbnQsIGNvbnN0IHN0cnVjdCB0eXBlX3ByaW50X29wdGlvbnMgKik7Ci0gCi0r ZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19z dHJlYW0KLSsgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci0r ZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3Qg dHlwZSAqdHlwZSk7Ci0rCi0gZXh0ZXJuIHZvaWQgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICos IGNvbnN0IGdkYl9ieXRlICosIGludCwgQ09SRV9BRERSLAotIAkJCSBzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsCi0gCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAotZGlmZiAtLWdpdCBhL2dkYi9mLXR5 cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50LmMKLWluZGV4IDgzNTZhYWIuLjUwNTAyNTUgMTAw NjQ0Ci0tLS0gYS9nZGIvZi10eXBlcHJpbnQuYwotKysrIGIvZ2RiL2YtdHlwZXByaW50LmMKLUBA IC0zMCw2ICszMCw3IEBACi0gI2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5jbHVkZSAidGFyZ2V0 LmgiCi0gI2luY2x1ZGUgImYtbGFuZy5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSAj aW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci1AQCAtNDcsNiArNDgsMzQg QEAgdm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVj dCB1aV9maWxlICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoKLStmX29iamVj dF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwK LSsJCQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25zdCBjaGFyICpt c2c7Ci0rCi0rICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSk7Ci0r ICBpZiAobXNnICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBBc3N1bWluZyB0aGUgY29udGVu dCBwcmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCi0rICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7Ci0rICAgIH0KLSsKLSsgIHJl dHVybiBtc2c7Ci0rfQotKwotK3ZvaWQKLStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3Jf ZXJyb3IgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGNvbnN0IGNoYXIgKm1zZzsKLSsKLSsg IG1zZyA9IG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKLSsgIGlmIChtc2cg IT0gTlVMTCkKLSsgICAgewotKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0IGJlY2F1 c2UgdGhlICVzLiIpLCBfKG1zZykpOwotKyAgICB9Ci0rfQotKwotIC8qIExFVkVMIGlzIHRoZSBk ZXB0aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLwotIAotIHZvaWQKLUBAIC01Niw2ICs4NSw5IEBA IGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmluZywg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgIGVudW0gdHlwZV9jb2RlIGNvZGU7Ci0gICBpbnQg ZGVtYW5nbGVkX2FyZ3M7Ci0gCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3By aW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0g ICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBsZXZlbCk7Ci0gICBjb2Rl ID0gVFlQRV9DT0RFICh0eXBlKTsKLSAgIGlmICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZhcnN0 cmluZyAhPSAnXDAnKQotQEAgLTE2Miw2ICsxOTQsOSBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19z dWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAotICAg UVVJVDsKLSAKLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9UWVBFREVGKQot KyAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBl KSkKLSAgICAgewotICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLWRpZmYgLS1naXQgYS9nZGIv Zi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggZDhjNzY3Zi4uNGFhMGQ1ZSAx MDA2NDQKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBA IC01MSwxNSArNTEsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJ TVMgKyAxXVsyXTsKLSAvKiBUaGUgZm9sbG93aW5nIG1hY3JvIGdpdmVzIHVzIHRoZSBzaXplIG9m IHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKLSAgICBuIGlzIDEgYmFzZWQuICAqLwotIAotLSNk ZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVsxXSkKLSsjZGVm aW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzFdKQotIAotLS8q IFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Igcm93IG4gd2hlcmUgbiBpcyAx LWJhc2VkLiAgKi8KLSsvKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBlbGVtZW50IHNpemUg Zm9yIHJvdyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gICovCi0gCi0tI2RlZmluZSBGNzdfRElNX09G RlNFVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCi0rI2RlZmluZSBGNzdfRElNX0JZ VEVfU1RSSURFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSAKLSBpbnQKLSBmNzdf Z2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIHsKLSsgIGZfb2JqZWN0X2FkZHJl c3NfZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7Ci0rCi0gICBpZiAoVFlQRV9BUlJBWV9MT1dF Ul9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQg bWF5IG5vdCBiZSAnKicgaW4gRjc3IikpOwotIAotQEAgLTY5LDE0ICs3MSwxNyBAQCBmNzdfZ2V0 X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIGludAotIGY3N19nZXRfdXBwZXJib3Vu ZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlk X29yX2Vycm9yICh0eXBlKTsKLSsKLSAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VO REVGSU5FRCAodHlwZSkpCi0gICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6 ZSBhcnJheSBvbiBvdXIgaGFuZHMuICBBc3N1bWUgdGhhdAotLQkgdXBwZXJfYm91bmQgPT0gbG93 ZXJfYm91bmQgc28gdGhhdCB3ZSBzaG93IGF0IGxlYXN0IDEgZWxlbWVudC4KLS0JIElmIHRoZSB1 c2VyIHdhbnRzIHRvIHNlZSBtb3JlIGVsZW1lbnRzLCBsZXQgaGltIG1hbnVhbGx5IGFzayBmb3Ig J2VtCi0tCSBhbmQgd2UnbGwgc3Vic2NyaXB0IHRoZSBhcnJheSBhbmQgc2hvdyBoaW0uICAqLwot KyAgICAgIC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFz IHR5cGVfbGVuZ3RoX2dldAotKwkgYWxyZWFkeSBhc3N1bWVzIGEgbGVuZ3RoIHplcm8gb2YgYXJy YXlzIHdpdGggdW5kZXJmaW5lZCBib3VuZHMgVkFMQUREUgotKwkgcGFzc2VkIHRvIHRoZSBGb3J0 cmFuIGZ1bmN0aW9ucyBkb2VzIG5vdCBjb250YWluZWQgdGhlIHJlYWwgaW5mZXJpb3IKLSsJIG1l bW9yeSBjb250ZW50LiAgVXNlciBzaG91bGQgcmVxdWVzdCBwcmludGluZyBvZiBzcGVjaWZpYyBh cnJheQotKwkgZWxlbWVudHMgaW5zdGVhZC4gICovCi0gCi0tICAgICAgcmV0dXJuIGY3N19nZXRf bG93ZXJib3VuZCAodHlwZSk7Ci0rICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlw ZSkgLSAxOwotICAgICB9Ci0gCi0gICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxV RSAodHlwZSk7Ci1AQCAtMTMyLDI0ICsxMzcsMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29m ZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQotICAg ICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7Ci0gICAgICAgbG93ZXIg PSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKLSAKLS0gICAgICBGNzdfRElNX1NJWkUg KG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKLSsgICAgICBGNzdfRElNX0NPVU5UIChuZGlt ZW4pID0gdXBwZXIgLSBsb3dlciArIDE7Ci0rCi0rICAgICAgRjc3X0RJTV9CWVRFX1NUUklERSAo bmRpbWVuKSA9Ci0rICAgICAgICBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0bXBfdHlw ZSk7Ci0gCi0gICAgICAgdG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSk7Ci0g ICAgICAgbmRpbWVuKys7Ci0gICAgIH0KLSAKLS0gIC8qIE5vdyB3ZSBtdWx0aXBseSBlbHRsZW4g YnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAotKyAgLyogTm93IHdlIG11bHRp cGx5IGVsdGxlbiBieSBhbGwgdGhlIEJZVEVfU1RSSURFcywgc28gdGhhdCBsYXRlciB3ZQotICAg ICAgY2FuIHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBVcCB0aWxsIG5vdyB3 ZSAKLS0gICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQgd2Ug YWxzbyAKLSsgICAgIGtub3cgYW4gZWx0bGVuIHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQg d2UgYWxzbyAKLSAgICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQgdG8gZ2V0IHRvIHRo ZSBuZXh0IGl0ZW0uICAqLwotIAotICAgbmRpbWVuLS07Ci0gICBlbHRsZW4gPSBUWVBFX0xFTkdU SCAodG1wX3R5cGUpOwotLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47Ci0rICBp ZiAoRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKyAgICBGNzdfRElNX0JZVEVf U1RSSURFIChuZGltZW4pID0gZWx0bGVuOwotICAgd2hpbGUgKC0tbmRpbWVuID4gMCkKLSAgICAg ewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEpOwotLSAgICAgIEY3 N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotKyAgICAgIGVsdGxlbiAqPSBGNzdfRElN X0NPVU5UIChuZGltZW4gKyAxKTsKLSsgICAgICBpZiAoRjc3X0RJTV9CWVRFX1NUUklERSAobmRp bWVuKSA9PSAwKQotKwlGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVuOwotICAg ICB9Ci0gfQotIAotQEAgLTE3MSwzNyArMTgxLDM1IEBAIGY3N19wcmludF9hcnJheV8xIChpbnQg bnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAotIAotICAgaWYgKG5zcyAh PSBuZGltZW5zaW9ucykKLSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7Ci0tCSAgIChpIDwgRjc3 X0RJTV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOwotLQkgICBp KyspCi0rICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0 cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIoICIpOwotIAkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGltZW5z aW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0gCQkJICAgICB2YWxhZGRyLAotLQkJCSAg ICAgZW1iZWRkZWRfb2Zmc2V0ICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAotKwkJCSAgICAg ZW1iZWRkZWRfb2Zmc2V0ICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5zcyksCi0gCQkJICAg ICBhZGRyZXNzLAotIAkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsIGVsdHMp OwotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikgIik7Ci0gCX0KLS0gICAgICBpZiAo KmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX1NJWkUgKG5zcykpIAot KyAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8IEY3N19ESU1fQ09V TlQgKG5zcykpCi0gCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwotICAgICB9Ci0g ICBlbHNlCi0gICAgIHsKLS0gICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJTV9TSVpFIChuc3Mp ICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8 IEY3N19ESU1fQ09VTlQgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKLSAJ ICAgaSsrLCAoKmVsdHMpKyspCi0gCXsKLSAJICB2YWxfcHJpbnQgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpLAotIAkJICAgICB2YWxhZGRyLAotLQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICog Rjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKLSsJCSAgICAgZW1iZWRkZWRfb2Zmc2V0ICsg aSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAgYWRkcmVzcywg c3RyZWFtLCByZWN1cnNlLAotIAkJICAgICB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2Up OwotIAotLQkgIGlmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkKLSsJICBpZiAoaSAh PSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiLCAiKTsKLSAKLSAJICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEp Ci0tCSAgICAgICYmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCi0rCSAgICAgICYm IChpICE9IChGNzdfRElNX0NPVU5UIChuc3MpIC0gMSkpKQotIAkgICAgZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiLi4uIik7Ci0gCX0KLSAgICAgfQotQEAgLTI2Nyw2ICsyNzUsOSBAQCBmX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQg ZW1iZWRkZWRfb2Zmc2V0LAotICAgQ09SRV9BRERSIGFkZHI7Ci0gICBpbnQgaW5kZXg7Ci0gCi0r ICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwg c3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0gICBDSEVDS19UWVBFREVGICh0eXBl KTsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKLSAgICAgewotZGlmZiAtLWdpdCBhL2dk Yi9maW5kdmFyLmMgYi9nZGIvZmluZHZhci5jCi1pbmRleCAwNjQ3YzBmLi5hMmEwYTRmIDEwMDY0 NAotLS0tIGEvZ2RiL2ZpbmR2YXIuYwotKysrIGIvZ2RiL2ZpbmR2YXIuYwotQEAgLTM0LDYgKzM0 LDcgQEAKLSAjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5j bHVkZSAibGFuZ3VhZ2UuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gCi0gLyogQmFzaWMg Ynl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBh Ci0gICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0 IEFERFIgd2hpY2ggaXMKLUBAIC00MTYsNyArNDE3LDEwIEBAIG1pbnN5bV9sb29rdXBfaXRlcmF0 b3JfY2IgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpjYl9kYXRhKQotIH0KLSAKLSAv KiBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhv b2sgaW4KLS0gICB0aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3b3JrIGluIG1vc3Qg c2l0dWF0aW9ucy4gICovCi0rICAgdGhlIGxhbmd1YWdlIHZlY3RvciB3aGljaCBzaG91bGQgd29y ayBpbiBtb3N0IHNpdHVhdGlvbnMuCi0rICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRy ZXNzIG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKLSsgICB2YWx1ZSB0 byByZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERS RVNTIHBvc3NpYmx5IAotKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwotIAotIHN0cnVjdCB2YWx1 ZSAqCi0gZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi1AQCAtNDI1LDEzICs0MjksNiBAQCBkZWZhdWx0X3JlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAg IHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBDT1JFX0FERFIgYWRk cjsKLSAKLS0gIC8qIENhbGwgY2hlY2tfdHlwZWRlZiBvbiBvdXIgdHlwZSB0byBtYWtlIHN1cmUg dGhhdCwgaWYgVFlQRSBpcwotLSAgICAgYSBUWVBFX0NPREVfVFlQRURFRiwgaXRzIGxlbmd0aCBp cyBzZXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHR5cGUKLS0gICAgIGluc3RlYWQgb2Yg emVyby4gIEhvd2V2ZXIsIHdlIGRvIG5vdCByZXBsYWNlIHRoZSB0eXBlZGVmIHR5cGUgYnkgdGhl Ci0tICAgICB0YXJnZXQgdHlwZSwgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgdGhlIHR5cGVkZWYg aW4gb3JkZXIgdG8gYmUgYWJsZSB0bwotLSAgICAgc2V0IHRoZSByZXR1cm5lZCB2YWx1ZSB0eXBl IGRlc2NyaXB0aW9uIGNvcnJlY3RseS4gICovCi0tICBjaGVja190eXBlZGVmICh0eXBlKTsKLS0K LSAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKLSAgICAgZ2RiX2Fzc2VydCAo ZnJhbWUpOwotIAotQEAgLTU5OSw2ICs1OTYsOSBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgICAgICBicmVh azsKLSAgICAgfQotIAotKyAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUn cyBDSEVDS19UWVBFREVGIGZvcgotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUy4gICov Ci0rICBvYmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOwotICAgdiA9IHZhbHVlX2F0X2xhenkgKHR5 cGUsIGFkZHIpOwotICAgcmV0dXJuIHY7Ci0gfQotQEAgLTcwMiwxMCArNzAyLDExIEBAIHN0cnVj dCB2YWx1ZSAqCi0gdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBy ZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlwZTEg PSBjaGVja190eXBlZGVmICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLS0gIGlmIChn ZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0rICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rCi0rICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3Jl Z2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZSkpCi0gICAgIHsKLSAgICAgICBpbnQgb3B0 aW0sIHVuYXZhaWwsIG9rOwotIAotQEAgLTcyMCw3ICs3MjEsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lz dGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQotICAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9yZWdpc3RlcjsKLSAgICAgICBWQUxV RV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSAgICAgICBWQUxVRV9SRUdO VU0gKHYpID0gcmVnbnVtOwotLSAgICAgIG9rID0gZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAo Z2RiYXJjaCwgZnJhbWUsIHJlZ251bSwgdHlwZTEsCi0rICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lz dGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBmcmFtZSwgcmVnbnVtLCB0eXBlLAotIAkJCQkgICAgICB2 YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCi0gCQkJCSAgICAgICZ1bmF2YWlsKTsKLSAK LWRpZmYgLS1naXQgYS9nZGIvZ2RiLWdkYi5nZGIuaW4gYi9nZGIvZ2RiLWdkYi5nZGIuaW4KLWlu ZGV4IDA1YTM4YjIuLjk4MDFmZGYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RiLWdkYi5nZGIuaW4KLSsr KyBiL2dkYi9nZGItZ2RiLmdkYi5pbgotQEAgLTEsNSArMSwxNSBAQAotIGVjaG8gU2V0dGluZyB1 cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSAKLSsjIFNldCB1cCB0aGUg UHl0aG9uIGxpYnJhcnkgYW5kICJyZXF1aXJlIiBjb21tYW5kLgotK3B5dGhvbgotK2Zyb20gb3Mu cGF0aCBpbXBvcnQgYWJzcGF0aAotK2dkYi5kYXRhZGlyID0gYWJzcGF0aCAoJ0BzcmNkaXJAL3B5 dGhvbi9saWInKQotK2dkYi5weXRob25saWJkaXIgPSBnZGIuZGF0YWRpcgotK2dkYi5fX3BhdGhf XyA9IFtnZGIuZGF0YWRpciArICcvZ2RiJ10KLStzeXMucGF0aC5pbnNlcnQoMCwgZ2RiLmRhdGFk aXIpCi0rZW5kCi0rc291cmNlIEBzcmNkaXJAL3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5Ci0r Ci0gaWYgISRnZGJfaW5pdF9kb25lCi0gICBzZXQgdmFyaWFibGUgJGdkYl9pbml0X2RvbmUgPSAx Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXgg OGUzMDkwZC4uNzU4YjNjNSAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIv Z2RidHlwZXMuYwotQEAgLTQwLDYgKzQwLDggQEAKLSAjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgot ICNpbmNsdWRlICJiY2FjaGUuaCIKLSAjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0rI2luY2x1ZGUg Im9ic2VydmVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmV4cHIuaCIKLSAKLSAvKiBJbml0aWFsaXpl IEJBRE5FU1MgY29uc3RhbnRzLiAgKi8KLSAKLUBAIC0xODgsNiArMTkwLDQzIEBAIGFsbG9jX3R5 cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgcmV0dXJuIHR5cGU7Ci0gfQotIAotKyNp ZiAwCi0rLyogRGVjbGFyZSBUWVBFIGFzIGRpc2NhcmRhYmxlIG9uIG5leHQgZ2FyYmFnZSBjb2xs ZWN0aW9uIGJ5IGZyZWVfYWxsX3R5cGVzLgotKyAgIFlvdSBtdXN0IGNhbGwgdHlwZV9tYXJrX3Vz ZWQgZHVyaW5nIGVhY2ggZnJlZV9hbGxfdHlwZXMgdG8gcHJvdGVjdCBUWVBFIGZyb20KLSsgICBi ZWluZyBkZWFsbG9jYXRlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfdHlwZV9hc19kaXNj YXJkYWJsZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgdm9pZCAqKnNsb3Q7Ci0rCi0rICBn ZGJfYXNzZXJ0ICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOwotKwotKyAgVFlQRV9ESVNDQVJE QUJMRSAodHlwZSkgPSAxOwotKyAgVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUpID0gdHlwZV9k aXNjYXJkYWJsZV9hZ2VfY3VycmVudDsKLSsKLSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodHlw ZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZSwgSU5TRVJUKTsKLSsgIGdkYl9hc3NlcnQgKCEqc2xv dCk7Ci0rICAqc2xvdCA9IHR5cGU7Ci0rfQotKyNlbmRpZgotKwotKy8qIEFsbG9jYXRlIGEgbmV3 IHR5cGUgbGlrZSBhbGxvY190eXBlIGJ1dCBwcmVzZXJ2ZSBmb3IgaXQgdGhlIGRpc2NhcmRhYmls aXR5Ci0rICAgc3RhdGUgb2YgUEFSRU5UX1RZUEUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdHlw ZSAqCi0rYWxsb2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSkKLSt7 Ci0rICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGUgPSBhbGxvY190eXBlX2NvcHkgKHBhcmVudF90eXBl KTsKLSsKLSsjaWYgMAotKyAgaWYgKFRZUEVfRElTQ0FSREFCTEUgKHBhcmVudF90eXBlKSkKLSsg ICAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBlKTsKLSsjZW5kaWYKLSsKLSsgIHJl dHVybiBuZXdfdHlwZTsKLSt9Ci0rCi0gLyogQWxsb2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lh dGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21lIGRlZmF1bHRzLiAg U3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLSAgICBvbiB0aGUgaGVh cC4gICovCi1AQCAtMzI4LDcgKzM2Nyw3IEBAIG1ha2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8 fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCi0gICAg IHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAgICAgbnR5cGUg PSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0 eXBlcHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC00MDEsNyArNDQwLDcgQEAgbWFrZV9yZWZlcmVu Y2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKLSAKLSAg IGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxv Y2F0ZSBvbmUuICAqLwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5 cGUpOwotKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOwotICAgICAg IGlmICh0eXBlcHRyKQotIAkqdHlwZXB0ciA9IG50eXBlOwotICAgICB9Ci1AQCAtODI0LDYgKzg2 Myw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVj dCB0eXBlICppbmRleF90eXBlLAotICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVv ZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBl KSA9IGxvd19ib3VuZDsKLSAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9i b3VuZDsKLSsgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7Ci0gCi0gICBpZiAo bG93X2JvdW5kID49IDApCi0gICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1A QCAtOTQ0LDYgKzk4NCwxMCBAQCBnZXRfYXJyYXlfYm91bmRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwg TE9OR0VTVCAqbG93X2JvdW5kLCBMT05HRVNUICpoaWdoX2JvdW5kKQotICAgcmV0dXJuIDE7Ci0g fQotIAotK3N0YXRpYyBMT05HRVNUIHR5cGVfbGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSwKLSsJCQkJaW50IGZ1bGxfc3Bhbik7Ci0rCi0rCi0g LyogQ3JlYXRlIGFuIGFycmF5IHR5cGUgdXNpbmcgZWl0aGVyIGEgYmxhbmsgdHlwZSBzdXBwbGll ZCBpbgotICAgIFJFU1VMVF9UWVBFLCBvciBjcmVhdGluZyBhIG5ldyB0eXBlLCBpbmhlcml0aW5n IHRoZSBvYmpmaWxlIGZyb20KLSAgICBSQU5HRV9UWVBFLgotQEAgLTk2NywyNiArMTAxMSwzMSBA QCBjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLAotIAotICAgVFlQ RV9DT0RFIChyZXN1bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7Ci0gICBUWVBFX1RBUkdFVF9U WVBFIChyZXN1bHRfdHlwZSkgPSBlbGVtZW50X3R5cGU7Ci0tICBpZiAoZ2V0X2Rpc2NyZXRlX2Jv dW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKLS0gICAgbG93 X2JvdW5kID0gaGlnaF9ib3VuZCA9IDA7Ci0tICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUp OwotLSAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxlbmd0aC4gIEFkYSBh cnJheXMgY2FuIGJlCi0tICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGlnaF9ib3VuZCBiZWlu ZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KLS0gICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBh cnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICAqLwotLSAgaWYgKGhpZ2hfYm91bmQgPCBsb3df Ym91bmQpCi0tICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwotLSAgZWxzZQotLSAg ICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0gICAgICBUWVBFX0xFTkdUSCAoZWxlbWVu dF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0gICBUWVBFX05GSUVMRFMg KHJlc3VsdF90eXBlKSA9IDE7Ci0gICBUWVBFX0ZJRUxEUyAocmVzdWx0X3R5cGUpID0KLSAgICAg KHN0cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0 IGZpZWxkKSk7Ci0gICBUWVBFX0lOREVYX1RZUEUgKHJlc3VsdF90eXBlKSA9IHJhbmdlX3R5cGU7 Ci0gICBUWVBFX1ZQVFJfRklFTEROTyAocmVzdWx0X3R5cGUpID0gLTE7Ci0gCi0tICAvKiBUWVBF X0ZMQUdfVEFSR0VUX1NUVUIgd2lsbCB0YWtlIGNhcmUgb2YgemVybyBsZW5ndGggYXJyYXlzLiAg Ki8KLSsgIC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1bnRpbWUgaW5mb3JtYXRpb24g bGlrZQotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBub3QgYmVpbmcgYXZhaWxhYmxl IGR1cmluZyB0aGUKLSsgICAgIENSRUFURV9BUlJBWV9UWVBFIHRpbWUuICAqLwotKyAgaWYgKFRZ UEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9IFJBTkdFX0JPVU5EX0tJTkRf Q09OU1RBTlQKLSsgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtp bmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVfRFlOQU1JQyAo ZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IDA7Ci0rICBl bHNlCi0rICAgIHsKLSsgICAgICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUpOwotKyAgICAg IFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHJlc3VsdF90eXBl LCBlbGVtZW50X3R5cGUsCi0rCQkJCQkJICAgMCk7Ci0rICAgIH0KLSAgIGlmIChUWVBFX0xFTkdU SCAocmVzdWx0X3R5cGUpID09IDApCi0tICAgIFRZUEVfVEFSR0VUX1NUVUIgKHJlc3VsdF90eXBl KSA9IDE7Ci0rICAgIHsKLSsgICAgICAvKiBUaGUgcmVhbCBzaXplIHdpbGwgYmUgY29tcHV0ZWQg Zm9yIHNwZWNpZmljIGluc3RhbmNlcyBieQotKwkgQ0hFQ0tfVFlQRURFRi4gICovCi0rICAgICAg VFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKLSsgICAgfQotIAotICAgcmV0dXJu IHJlc3VsdF90eXBlOwotIH0KLUBAIC0xNTA4LDYgKzE1NTcsMTA1IEBAIHN0dWJfbm9uYW1lX2Nv bXBsYWludCAodm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1 YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7Ci0gfQotIAotKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5 IGxlbmd0aCBvZiBhcnJheSBUWVBFLgotKwotKyAgIFRBUkdFVF9UWVBFIHNob3VsZCBiZSBzZXQg dG8gYGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMKLSsgICBhIHBl cmZvcm1hbmNlIGhpbnQuICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZVTExfU1BBTiB0 byByZXR1cm4gdGhlCi0rICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGluZyBvZiB0aGUg bGFzdCBlbGVtZW50IC0gaXQgbWF5IGRpZmZlciBmcm9tIHRoZQotKyAgIGNsZWFyZWQgRlVMTF9T UEFOIHJldHVybiB2YWx1ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16ZXJvCi0rICAg VFlQRV9CWVRFX1NUUklERSB2YWx1ZXMuICAqLwotKwotK3N0YXRpYyBMT05HRVNUCi0rdHlwZV9s ZW5ndGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLCBp bnQgZnVsbF9zcGFuKQotK3sKLSsgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotKyAgTE9OR0VT VCBieXRlX3N0cmlkZSA9IDA7CS8qIGA9IDAnIGZvciBhIGZhbHNlIEdDQyB3YXJuaW5nLiAgKi8K LSsgIExPTkdFU1QgY291bnQsIGVsZW1lbnRfc2l6ZSwgcmV0dmFsOwotKwotKyAgaWYgKFRZUEVf Q09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgJiYgVFlQRV9DT0RFICh0eXBl KSAhPSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpOwot KwotKyAgLyogQXZvaWQgZXhlY3V0aW5nIFRZUEVfSElHSF9CT1VORCBmb3IgaW52YWxpZCAodW5h bGxvY2F0ZWQvdW5hc3NvY2lhdGVkKQotKyAgICAgRm9ydHJhbiBhcnJheXMuICBUaGUgYWxsb2Nh dGVkIGRhdGEgd2lsbCBuZXZlciBiZSB1c2VkIHNvIHRoZXkgY2FuIGJlCi0rICAgICB6ZXJvLWxl bmd0aC4gICovCi0rICBpZiAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpKQot KyAgICByZXR1cm4gMDsKLSsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUp OwotKyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKLSsgICAgICB8 fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKLSsgICAgcmV0dXJuIDA7 Ci0rICBjb3VudCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VO RCAocmFuZ2VfdHlwZSkgKyAxOwotKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYg YW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCi0rICBpZiAoY291bnQgPCAw KQotKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxpZCBib3VuZHMg JXMuLiVzIiksCi0rCSAgICAgVFlQRV9FUlJPUl9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVf TE9XX0JPVU5EIChyYW5nZV90eXBlKSksCi0rCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VO RCAocmFuZ2VfdHlwZSkpKTsKLSsgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBj b3VudCA9PSAwIHJpZ2h0LiAgKi8KLSsgIGlmIChjb3VudCA8PSAwKQotKyAgICByZXR1cm4gMDsK LSsgIGlmIChmdWxsX3NwYW4gfHwgY291bnQgPiAxKQotKyAgICB7Ci0rICAgICAgLyogV2UgZG8g bm90IHVzZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJlIGFzIHdlIHdh bnQgdG8KLSsgICAgICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCi0rICAgICAgYnl0ZV9z dHJpZGUgPSBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsgICAgICBpZiAoYnl0ZV9z dHJpZGUgPT0gMCkKLSsgICAgICAgIHsKLSsJICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsJ ICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp OwotKwkgIGJ5dGVfc3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwg MSk7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFr ZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAotKyAgICAgZXhjZWVkcyBV SU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCi0rICAgICAo VUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxs eSBub3QgZ3VhcmFudGVlZAotKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVz ZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAotKyAgICAgd2l0aCBpdHMgaGln aC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91 bmQgaXMKLSsgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlm IGhpZ2hfYm91bmQtbG93X2JvdW5kKzEKLSsgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRv IDAuICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KLSsgICAgIGlu Y3JlYXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGlu dCB0byBVTE9OR0VTVC4KLSsgICAgICovCi0rCi0rICBpZiAoZnVsbF9zcGFuKQotKyAgICB7Ci0r ICAgICAgcmV0dmFsID0gY291bnQgKiBieXRlX3N0cmlkZTsKLSsgICAgICBpZiAoY291bnQgPT0g MCB8fCByZXR2YWwgLyBjb3VudCAhPSBieXRlX3N0cmlkZSB8fCByZXR2YWwgPiBVSU5UX01BWCkK LSsJcmV0dmFsID0gMDsKLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0rICBpZiAodGFy Z2V0X3R5cGUgPT0gTlVMTCkKLSsgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rICBlbGVtZW50X3NpemUgPSB0eXBlX2xlbmd0aF9nZXQg KHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsgIHJldHZhbCA9IChjb3VudCAtIDEpICogYnl0ZV9z dHJpZGUgKyBlbGVtZW50X3NpemU7Ci0rICBpZiAocmV0dmFsIDwgZWxlbWVudF9zaXplCi0rICAg ICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKLSsgICAgICAgICAgJiYgKHJldHZhbCAtIGVsZW1lbnRf c2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCi0rICAgICAgfHwgcmV0dmFsID4gVUlO VF9NQVgpCi0rICAgIHJldHZhbCA9IDA7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsvKiBQ cmVwYXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4gIEN1cnJlbnRs eSB0aGlzIGZ1bmN0aW9uCi0rICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZTkFNSUMgZmxh Zy4gICovCi0rCi0rdm9pZAotK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sK LSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7ICsr aSkKLSsgICAgaWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkgJiYgVFlQRV9EWU5BTUlDIChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSkKLSsgICAgICBicmVhazsKLSsKLSsgIC8qIEZJWE1F OiBjcGx1c19zdHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLwotKyAgaWYgKGkgPCBUWVBFX05GSUVM RFMgKHR5cGUpCi0rICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkgJiYgVFlQRV9E WU5BTUlDIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKLSsgICAgICB8fCAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkp KQotKyAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKLSt9Ci0rCi0gLyogRmluZCB0aGUgcmVh bCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlYWwgdHlwZSwKLSAg ICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzLCBhbmQgY29tcGxldGluZyBv cGFxdWUgb3Igc3R1YgotICAgIHR5cGVzLiAgQ29tcGxldGlvbiBjaGFuZ2VzIHRoZSBUWVBFIGFy Z3VtZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTY3NCw1MiArMTgyMiwzNyBAQCBjaGVja190 eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgaWYg KFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpKQotKyAgLyogY29weV90eXBlX3JlY3Vyc2l2ZSBhdXRv bWF0aWNhbGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5nIG9ubHkKLSsgICAg IGNvbnN0YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9u LiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQotKyAgICB7Ci0rICAgICAgaHRhYl90 IGNvcGllZF90eXBlczsKLSsKLSsgICAgICBjb3BpZWRfdHlwZXMgPSBjcmVhdGVfY29waWVkX3R5 cGVzX2hhc2ggKE5VTEwpOwotKyAgICAgIHR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlICh0eXBl LCBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGh0YWJfZGVsZXRlIChjb3BpZWRfdHlwZXMpOwotKwot KyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfRFlOQU1JQyAodHlwZSkgPT0gMCk7Ci0rICAgICAgLyog Rm9yY2UgVFlQRV9MRU5HVEggKHR5cGUpIHJlY2FsY3VsYXRpb24uICAqLwotKyAgICAgIFRZUEVf RFlOQU1JQyAodHlwZSkgPSAxOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAo dHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKLSAgICAgewotLSAgICAgIHN0cnVjdCB0eXBl ICpyYW5nZV90eXBlOwotICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgICAgICBpZiAoVFlQRV9EWU5B TUlDICh0eXBlKSkKLSsJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJnZXRfdHlwZTsKLSAg ICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJHRVRfU1RVQiAodGFy Z2V0X3R5cGUpKQotIAl7Ci0gCSAgLyogTm90aGluZyB3ZSBjYW4gZG8uICAqLwotIAl9Ci0gICAg ICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLS0JICAgICAg ICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQotLQkgICAgICAgJiYgKFRZUEVfQ09ERSAocmFu Z2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCi0tCQkgICA9PSBUWVBFX0NPREVfUkFO R0UpKQotKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKQot IAl7Ci0gCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBlLCBi YXNlZCBvbiBpdHMKLS0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlw ZSdzIGxlbmd0aC4KLS0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMgd2hl cmUgdGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4g ICovCi0tCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAocmFuZ2Vf dHlwZSk7Ci0tCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JPVU5EIChy YW5nZV90eXBlKTsKLS0JICBVTE9OR0VTVCBsZW47Ci0tCi0tCSAgaWYgKGhpZ2hfYm91bmQgPCBs b3dfYm91bmQpCi0tCSAgICBsZW4gPSAwOwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgLyog Rm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAK LS0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29kZSBiZWxvdyBhc3N1 bWVzCi0tCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01B WCArIDEsCi0tCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywgYnV0 IGlzIHVzdWFsbHkgdHJ1ZQotLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJl IHVuc2lnbmVkIHdpdGggaXRzCi0tCQkgaGlnaC1vcmRlciBiaXQgb24pLiAgSXQgdXNlcyB0aGUg ZmFjdCB0aGF0Ci0tCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2VudGFi bGUgaW4KLS0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92 ZXJmbG93cywKLS0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRl c3RzIGlmIHdlIAotLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2Yg VFlQRV9MRU5HVEgKLS0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gICovCi0tCSAg ICAgIFVMT05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKLS0JICAg ICAgVUxPTkdFU1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0tCi0tCSAgICAg IGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7Ci0tCSAgICAgIGlmICh0bGVuID09IDAg fHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCi0tCQkgIHx8IGxlbiA+IFVJTlRf TUFYKQotLQkJbGVuID0gMDsKLS0JICAgIH0KLS0JICBUWVBFX0xFTkdUSCAodHlwZSkgPSBsZW47 Ci0rCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0IHR5cGUncyBsZW5ndGgu ICAqLwotKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3RoX2dldCAodHlwZSwgdGFy Z2V0X3R5cGUsIDApOwotIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKLSAJfQotICAg ICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQotQEAgLTE3 MjcsNiArMTg2MCw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotIAkgIFRZ UEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0gCSAgVFlQRV9U QVJHRVRfU1RVQiAodHlwZSkgPSAwOwotIAl9Ci0rICAgICAgVFlQRV9EWU5BTUlDICh0eXBlKSA9 IDA7Ci0gICAgIH0KLSAKLSAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0eXBlLCBpbnN0 YW5jZV9mbGFncywgTlVMTCk7Ci1AQCAtMzYzMiwzMyArMzc2Niw0MiBAQCB0eXBlX3BhaXJfZXEg KGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSB9Ci0gCi0gLyog QWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdh bGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9ic3Rh Y2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLwotKyAg IHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAotIGNyZWF0ZV9jb3Bp ZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotLSAgcmV0dXJuIGh0 YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotLQkJ CSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgICBoYXNo dGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0 ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyogTlVMTCBPQkpG SUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQgaW4KLSsJIE9C SkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJU1RPUllfQ0hB SU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAt IHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgxLCB0eXBlX3Bh aXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewot KyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0 IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQg YnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRl X2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotKwkJCQkgICB4ZnJl ZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2Fs bG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwotKyAgICB9Ci0gfQot IAotLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwgaWYgaXQgaXMgYXNzb2Np YXRlZCB3aXRoCi0tICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1c2lu ZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgotLSAgIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIFRZ UEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMKLS0gICBub3QgYXNzb2Np YXRlZCB3aXRoIE9CSkZJTEUuICAqLwotKy8qIEEgaGVscGVyIGZvciBjb3B5X3R5cGVfcmVjdXJz aXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMgdXNlZAotKyAgIG9ubHkg Zm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICovCi0gCi0tc3RydWN0IHR5cGUgKgotLWNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLS0JCSAgICAgc3RydWN0 IHR5cGUgKnR5cGUsCi0tCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0rc3RhdGljIHN0cnVj dCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCAKLSsJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgICBodGFiX3QgY29waWVk X3R5cGVzKQotIHsKLSAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFpcjsKLSAgIHZvaWQg KipzbG90OwotICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotIAotLSAgaWYgKCEgVFlQRV9PQkpG SUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9PV05FRCAodHlwZSkgJiYg IVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOwotIAotICAgLyogVGhpcyB0 eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7 Ci1AQCAtMzY3Myw5ICszODE2LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBlX2Fy Y2ggKHR5cGUpKTsKLSAKLSAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUgaGFz aCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQotLSAgICAgd2UgZW5jb3VudGVyIHRoaXMgdHlw ZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICovCi0tICBzdG9yZWQKLS0g ICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHN0 cnVjdCB0eXBlX3BhaXIpKTsKLSsgICAgIHdlIGVuY291bnRlciB0aGlzIHR5cGUgYWdhaW4gZHVy aW5nIGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKLSsgICAgIGJlIGFsbG9j YXRlZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1vdmluZyBPQkpGSUxF LCB0aGlzCi0rICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJlZSBpcyBjYWxsZWQg Zm9yIGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KLSsgIHN0b3JlZCA9IHhtYWxsb2MgKHNpemVv ZiAoKnN0b3JlZCkpOwotICAgc3RvcmVkLT5vbGQgPSB0eXBlOwotICAgc3RvcmVkLT5uZXcgPSBu ZXdfdHlwZTsKLSAgICpzbG90ID0gc3RvcmVkOwotQEAgLTM2ODYsNiArMzgzMCwyMSBAQCBjb3B5 X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVfT0JKRklM RV9PV05FRCAobmV3X3R5cGUpID0gMDsKLSAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNo ID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci0gCi0rI2lmIDAKLSsgIC8qIFRZUEVfTUFJTl9UWVBF IG1lbW9yeSBjb3B5IGFib3ZlIHJld3JvdGUgdGhlIFRZUEVfRElTQ0FSREFCTEUgZmxhZyBzbyB3 ZQotKyAgICAgbmVlZCB0byBpbml0aWFsaXplIGl0IGFnYWluLiAgQW5kIGV2ZW4gaWYgVFlQRSB3 YXMgYWxyZWFkeSBkaXNjYXJkYWJsZQotKyAgICAgTkVXX1RZUEUgc28gZmFyIGlzIG5vdCByZWdp c3RlcmVkIGluIFRZUEVfRElTQ0FSREFCTEVfVEFCTEUuICAqLwotKyAgVFlQRV9ESVNDQVJEQUJM RSAobmV3X3R5cGUpID0gMDsKLSsgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7 Ci0rI2VuZGlmCi0rCi0rICAvKiBQcmUtY2xlYXIgdGhlIGZpZWxkcyBwcm9jZXNzZWQgYnkgZGVs ZXRlX21haW5fdHlwZS4gIElmIERXQVJGIGJsb2NrCi0rICAgICBldmFsdWF0aW9ucyBiZWxvdyBj YWxsIGVycm9yIHdlIHdvdWxkIGxlYXZlIGFuIHVuZnJlZWFibGUgVFlQRS4gICovCi0rICBUWVBF X1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSBOVUxMOwotKyAgVFlQRV9WUFRSX0JBU0VUWVBFIChu ZXdfdHlwZSkgPSBOVUxMOwotKyAgVFlQRV9ORklFTERTIChuZXdfdHlwZSkgPSAwOwotKyAgVFlQ RV9GSUVMRFMgKG5ld190eXBlKSA9IE5VTEw7Ci0rCi0gICBpZiAoVFlQRV9OQU1FICh0eXBlKSkK LSAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsK LSAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKLUBAIC0zNjk0LDEyICszODUzLDQ4IEBAIGNv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgVFlQRV9JTlNU QU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7Ci0gICBU WVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAotKyAgaWYgKFRZ UEVfQUxMT0NBVEVEIChuZXdfdHlwZSkpCi0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0ICghVFlQ RV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkpOwotKwotKyAgICAgIGlmICghZHdhcmZfbG9jZXhw cl9iYXRvbl9ldmFsIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVf Tk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gMTsKLSsgICAgICBUWVBFX0FMTE9DQVRFRCAobmV3 X3R5cGUpID0gTlVMTDsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5 cGUpKQotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSk7Ci0rCi0rICAgICAgaWYgKCFkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwgKFRZUEVf QVNTT0NJQVRFRCAobmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSA9IDE7Ci0rICAgICAgVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSBOVUxMOwot KyAgICB9Ci0rCi0rICBpZiAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSIChuZXdfdHlwZSkK LSsgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSkKLSsg ICAgewotKyAgICAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQotKyAgICAgICAg ICB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCi0rCVRZUEVfREFUQV9MT0NBVElP Tl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpID0gTlVMTDsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBU WVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpID0gMTsKLSsJICBUWVBFX0RBVEFf TE9DQVRJT05fQUREUiAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJ CSAgICAoVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkpOwotKwl9Ci0r ICAgIH0KLSsKLSAgIC8qIENvcHkgdGhlIGZpZWxkcy4gICovCi0gICBpZiAoVFlQRV9ORklFTERT ICh0eXBlKSkKLSAgICAgewotICAgICAgIGludCBpLCBuZmllbGRzOwotIAotKyAgICAgIC8qIFRZ UEVfQ09ERV9SQU5HRSB1c2VzIFRZUEVfUkFOR0VfREFUQSBvZiB0aGUgdW5pb24gd2l0aCBUWVBF X0ZJRUxEUy4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBF X0NPREVfUkFOR0UpOwotKwotICAgICAgIG5maWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUpOwot KyAgICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxkczsKLSAgICAgICBUWVBFX0ZJ RUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKLSAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQotIAl7Ci1AQCAtMzcwOCw4ICszOTAzLDgg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCSAgVFlQ RV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUs IGkpOwotIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQotIAkgICAgVFlQRV9GSUVM RF9UWVBFIChuZXdfdHlwZSwgaSkKLS0JICAgICAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpm aWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotLQkJCQkgICAgIGNvcGllZF90eXBlcyk7 Ci0rCSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGkpLAotKwkJCQkgICAgICAgY29waWVkX3R5cGVzKTsKLSAJICBpZiAoVFlQRV9G SUVMRF9OQU1FICh0eXBlLCBpKSkKLSAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkp ID0gCi0gCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwotQEAgLTM3 NDAsMjQgKzM5MzUsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotIAl9Ci0gICAgIH0KLSAKLSsgIC8qIEJvdGggRklFTERfTE9DX0tJTkRfRFdBUkZf QkxPQ0sgYW5kIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCB3ZXJlCi0rICAgICBwb3Nz aWJseSBjb252ZXJ0ZWQuICAqLwotKyAgVFlQRV9EWU5BTUlDIChuZXdfdHlwZSkgPSAwOwotKwot ICAgLyogRm9yIHJhbmdlIHR5cGVzLCBjb3B5IHRoZSBib3VuZHMgaW5mb3JtYXRpb24uICAqLwot LSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQotKyAgaWYgKFRZUEVf Q09ERSAobmV3X3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLSAgICAgewotICAgICAgIFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91 bmRzKSk7Ci0gICAgICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0Vf REFUQSAodHlwZSk7Ci0rCi0rICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+bG93LmtpbmQpCi0rCXsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkg IGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNv Ci0rCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBF REVGLgotKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBh cmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9D QVRFRCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAg ICB8fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCi0rCSAgICB7Ci0rCSAgICAgIC8qIFdlIHNob3Vs ZCBzZXQgMSBmb3IgRm9ydHJhbiBidXQgaG93IHRvIGZpbmQgdGhlIGxhbmd1YWdlPyAgKi8KLSsJ ICAgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7Ci0rCSAgICAgIFRZUEVfTE9XX0JP VU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB7 Ci0rCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9u X2V2YWwKLSsJCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9ibG9j ayk7Ci0rCSAgICAgIGlmIChUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID49IDApCi0rCQlUWVBF X1VOU0lHTkVEIChuZXdfdHlwZSkgPSAxOwotKwkgICAgfQotKwkgIFRZUEVfUkFOR0VfREFUQSAo bmV3X3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJl YWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAg IENPUkVfQUREUiBhZGRyOwotKwotKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRv bicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgICBpdCBpcyBleHBlY3Rl ZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgICBUWVBFX05P VF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQ RS4KLSsJICAgICAgICovCi0rCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBl KQotKwkgICAgICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19z dGFja19mcmFtZXMgKCkKLSsJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJ CSAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xp c3QsCi0rCQkgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlz dC50eXBlLCAmYWRkcikpCi0rCSAgICAgIHsKLSsJCVRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkg PSBhZGRyOwotKwkJaWYgKFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPj0gMCkKLSsJCSAgVFlQ RV9VTlNJR05FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAg ICB7Ci0rCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhvdyB0byBmaW5kIHRo ZSBsYW5ndWFnZT8gICovCi0rCQlUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gMDsKLSsJCVRZ UEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgICAgfQotKwkgICAg VFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9D T05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBzd2l0Y2ggKFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQpCi0rCXsKLSsJY2FzZSBSQU5HRV9CT1VO RF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9vIGJv dW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBj b25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQg VFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICovCi0r CSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFU RUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCi0rCSAgICB7 Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5l d190eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKG5ld190eXBl KSA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlw ZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkgICAgICAgKFRZUEVfUkFOR0VfREFU QSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAo bmV3X3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIGJy ZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKLSsJICB7Ci0rCSAg ICBDT1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0 b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhwZWN0 ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQRV9O T1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZ UEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlw ZSkKLSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNf c3RhY2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCi0r CQkgICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0 LmxvY2xpc3QsCi0rCQkgICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5k d2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkgICAgICAgJmFkZHIpKQotKwkgICAgICBUWVBFX0hJR0hf Qk9VTkQgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCVRZUEVf SElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0r CQlUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOwotKwkgICAgICB9Ci0r CSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRf S0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBzd2l0Y2gg KFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kKQotKwl7Ci0rCWNh c2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVhazsKLSsJY2FzZSBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgIGl0IGlzIGV4cGVjdGVk IHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICBUWVBFX05PVF9B TExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4K LSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBF X05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVz ICgpKQotKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUpID0gMDsKLSsJICBlbHNlCi0r CSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2 YWwKLSsJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZf YmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS5raW5k Ci0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJlYWs7Ci0rCWNhc2Ug UkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAgIENPUkVfQUREUiBh ZGRyID0gMDsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24nIGlzIHRv byBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUg bWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQRV9OT1RfQUxMT0NB VEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCi0rCSAg ICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsJCSYm ICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFja19mcmFtZXMgKCkp Ci0rCSAgICAgIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAotKwkgICAgICAgKFRZUEVfUkFOR0Vf REFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdCwKLSsJ CVRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3Qu dHlwZSwKLSsJCSZhZGRyKTsKLSsJICAgIFRZUEVfQllURV9TVFJJREUgKG5ld190eXBlKSA9IGFk ZHI7Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAot KwkgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgfQotKwkgIGJyZWFrOwot Kwl9Ci0rCi0rICAgICAgLyogQ29udmVydCBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQg aW50byBhIHJlZ3VsYXIgYm91bmQuICAqLwotKyAgICAgIGlmIChUWVBFX1JBTkdFX0hJR0hfQk9V TkRfSVNfQ09VTlQgKG5ld190eXBlKSkKLSsJewotKwkgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5 cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKQotKwkJCQkgICAgICAgKyBUWVBFX0hJR0hf Qk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5U IChuZXdfdHlwZSkgPSAwOwotKwl9Ci0gICAgIH0KLSAKLSAgIC8qIENvcHkgcG9pbnRlcnMgdG8g b3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKQotICAgICBU WVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5cGVfcmVjdXJzaXZl IChvYmpmaWxlLCAKLS0JCQkgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLS0JCQkgICBjb3Bp ZWRfdHlwZXMpOwotKyAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAob2JqZmlsZSwgCi0rCQkJ ICAgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkgICAgIGNvcGllZF90eXBlcyk7Ci0g ICBpZiAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkKLSAgICAgVFlQRV9WUFRSX0JBU0VUWVBF IChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLAotLQkJ CSAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCi0tCQkJICAgY29waWVkX3R5cGVzKTsKLSsg ICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsCi0rCQkJICAgICBUWVBFX1ZQVFJf QkFTRVRZUEUgKHR5cGUpLAotKwkJCSAgICAgY29waWVkX3R5cGVzKTsKLSsKLSsgIGlmIChUWVBF X0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0rICAgIHsKLSsgICAgICBzdHJ1 Y3QgdHlwZSAqbmV3X2luZGV4X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKG5ld190eXBlKTsKLSsK LSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAobmV3X2luZGV4X3R5cGUpID09IDApCi0rCVRZ UEVfQllURV9TVFJJREUgKG5ld19pbmRleF90eXBlKQotKwkgID0gVFlQRV9MRU5HVEggKFRZUEVf VEFSR0VUX1RZUEUgKG5ld190eXBlKSk7Ci0rICAgIH0KLSsKLSAgIC8qIE1heWJlIGNvcHkgdGhl IHR5cGVfc3BlY2lmaWMgYml0cy4KLSAKLSAgICAgIE5PVEUgZHJvdy8yMDA1LTEyLTA5OiBXZSBk byBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMgbGlrZQotQEAgLTM3NzQsNiArNDEyOSwx NyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIHJl dHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0rLyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBU WVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nCi0rICAgbWFsbG9jLCBhIHNh dmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZ UEVTKSwKLSsgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4g ICovCi0rCi0rc3RydWN0IHR5cGUgKgotK2NvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBl ICp0eXBlLAotKwkJICAgICBodGFiX3QgY29waWVkX3R5cGVzKQotK3sKLSsgIHJldHVybiBjb3B5 X3R5cGVfcmVjdXJzaXZlXzEgKFRZUEVfT0JKRklMRSAodHlwZSksIHR5cGUsIGNvcGllZF90eXBl cyk7Ci0rfQotKwotIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhh dCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQotICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgot ICAgIAotQEAgLTQzMzAsNiArNDY5NiwxMyBAQCB2b2lkCi0gX2luaXRpYWxpemVfZ2RidHlwZXMg KHZvaWQpCi0gewotICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0 X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7Ci0rCi0rI2lmIDAKLSsgIHR5cGVfZGlzY2FyZGFi bGVfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMjAsIHR5cGVfZGlzY2FyZGFibGVfaGFzaCwK LSsJCQkJCSAgICAgdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCwgTlVMTCwKLSsJCQkJCSAgICAgeGNh bGxvYywgeGZyZWUpOwotKyNlbmRpZgotKwotICAgb2JqZmlsZV90eXBlX2RhdGEgPSByZWdpc3Rl cl9vYmpmaWxlX2RhdGEgKCk7Ci0gCi0gICBhZGRfc2V0c2hvd196dWludGVnZXJfY21kICgib3Zl cmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2RlYnVnLAotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0 eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWluZGV4IDYxZGRlZmYuLmZjNmYyNzYgMTAwNjQ0Ci0t LS0gYS9nZGIvZ2RidHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0yMjYsNiArMjI2 LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX1RB UkdFVF9TVFVCKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCi0gCi0r LyogVHlwZSBuZWVkcyB0byBiZSBldmFsdWF0ZWQgb24gZWFjaCBDSEVDS19UWVBFREVGIGFuZCBp dHMgcmVzdWx0cyBtdXN0IG5vdCBiZQotKyAgIHN0aWNreS4gICovCi0rCi0rI2RlZmluZSBUWVBF X0RZTkFNSUModCkJCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZHluYW1pYykKLSsKLSAvKiBT dGF0aWMgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhZCAK LSAgICBhIHN0YXRpYyBtb2RpZmllci4KLSAgICBOb3RlOiBUaGlzIG1heSBiZSB1bm5lY2Vzc2Fy eSwgc2luY2Ugc3RhdGljIGRhdGEgbWVtYmVycwotQEAgLTMwOSw2ICszMTQsNTAgQEAgZW51bSB0 eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKLSAKLSAjZGVmaW5lIFRZUEVfRkxBR19FTlVNKHQpIChU WVBFX01BSU5fVFlQRSAodCktPmZsYWdfZmxhZ19lbnVtKQotIAotKyNpZiAwCi0rLyogRGVmaW5l IHRoaXMgdHlwZSBhcyBiZWluZyByZWNsYWltYWJsZSBkdXJpbmcgZnJlZV9hbGxfdHlwZXMuICBU eXBlIGlzCi0rICAgcmVxdWlyZWQgdG8gYmUgaGF2ZSBUWVBFX09CSkZJTEUgc2V0IHRvIE5VTEwu ICBTZXR0aW5nIHRoaXMgZmxhZyByZXF1aXJlcwotKyAgIGluaXRpYWxpemluZyBUWVBFX0RJU0NB UkRBQkxFX0FHRSwgc2VlIGFsbG9jX3R5cGVfZGlzY2FyZGFibGUuICAqLwotKwotKyNkZWZpbmUg VFlQRV9ESVNDQVJEQUJMRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxl KQotKwotKy8qIE1hcmtlciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9t YXJrX3VzZWQgYnkgdGhpcwotKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVj dGluZyBwYXNzLiAgQ3VycmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCi0rICAgYnkgVFlQRV9ESVND QVJEQUJMRV9BR0VfQ1VSUkVOVC4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FH RSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKLSsjZW5kaWYK LSsKLSsvKiBJcyBISUdIX0JPVU5EIGEgbG93LWJvdW5kIHJlbGF0aXZlIGNvdW50ICgxKSBvciB0 aGUgaGlnaCBib3VuZCBpdHNlbGYgKDApPyAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfUkFOR0VfSElH SF9CT1VORF9JU19DT1VOVChyYW5nZV90eXBlKSBcCi0rICAoVFlQRV9NQUlOX1RZUEUgKHJhbmdl X3R5cGUpLT5mbGFnX3JhbmdlX2hpZ2hfYm91bmRfaXNfY291bnQpCi0rCi0rLyogTm90IGFsbG9j YXRlZC4gIFRZUEVfQUxMT0NBVEVEKHQpIG11c3QgYmUgTlVMTCBpbiBzdWNoIGNhc2UuICBJZiB0 aGlzIGZsYWcKLSsgICBpcyB1bnNldCBhbmQgVFlQRV9BTExPQ0FURUQodCkgaXMgTlVMTCB0aGVu IHRoZSB0eXBlIGlzIGFsbG9jYXRlZC4gIElmIHRoaXMKLSsgICBmbGFnIGlzIHVuc2V0IGFuZCBU WVBFX0FMTE9DQVRFRCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0cyBEV0FSRiBibG9jawotKyAgIGRl dGVybWluZXMgdGhlIGFjdHVhbCBhbGxvY2F0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZ UEVfTk9UX0FMTE9DQVRFRCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0 ZWQpCi0rCi0rLyogTm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBO VUxMIGluIHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FT U09DSUFURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgotKyAg IHRoaXMgZmxhZyBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRo ZW4gaXRzIERXQVJGIGJsb2NrCi0rICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9u IHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQodCkJKFRZUEVfTUFJ Tl9UWVBFICh0KS0+ZmxhZ19ub3RfYXNzb2NpYXRlZCkKLSsKLSsvKiBBZGRyZXNzIG9mIHRoZSBh Y3R1YWwgZGF0YSBhcyBmb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4gIEl0cyBkd2FyZiBibG9jayBt dXN0Ci0rICAgbm90IGJlIGV2YWx1YXRlZCB1bmxlc3MgYm90aCBUWVBFX05PVF9BTExPQ0FURUQg YW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlCi0rICAgZmFsc2UuICBJZiBUWVBFX0RBVEFfTE9D QVRJT05fSVNfQUREUiBzZXQgdGhlbiBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiB2YWx1ZQotKyAg IGlzIHRoZSBhY3R1YWwgZGF0YSBhZGRyZXNzIHZhbHVlLiAgSWYgdW5zZXQgYW5kCi0rICAgVFlQ RV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIGlzIE5VTEwgdGhlbiB0aGUgdmFsdWUgaXMgdGhl IG5vcm1hbAotKyAgIHZhbHVlX3Jhd19hZGRyZXNzLiAgSWYgdW5zZXQgYW5kIFRZUEVfREFUQV9M T0NBVElPTl9EV0FSRl9CTE9DSyBpcyBub3QgTlVMTAotKyAgIHRoZW4gaXRzIERXQVJGIGJsb2Nr IGRldGVybWluZXMgdGhlIGFjdHVhbCBkYXRhIGFkZHJlc3MuICAqLwotKwotKyNkZWZpbmUgVFlQ RV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIodCkgXAotKyAgKFRZUEVfTUFJTl9UWVBFICh0KS0+Zmxh Z19kYXRhX2xvY2F0aW9uX2lzX2FkZHIpCi0rCi0gLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMg aXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCi0gICAgY29uc3QgbW9kaWZpZXIu ICAqLwotIAotQEAgLTQyNSw2ICs0NzQsMTUgQEAgc3RydWN0IG1haW5fdHlwZQotICAgLyogVHJ1 ZSBpZiB0aGlzIHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgotICAg ICAgInN0cnVjdCIuICAqLwotICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAx OwotKyNpZiAwCi0rICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZSA6IDE7Ci0rICB1bnNp Z25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZV9hZ2UgOiAxOwotKyNlbmRpZgotKyAgdW5zaWduZWQg aW50IGZsYWdfZHluYW1pYyA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxhZ19yYW5nZV9oaWdoX2Jv dW5kX2lzX2NvdW50IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hbGxvY2F0ZWQgOiAx OwotKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2Fzc29jaWF0ZWQgOiAxOwotKyAgdW5zaWduZWQg aW50IGZsYWdfZGF0YV9sb2NhdGlvbl9pc19hZGRyIDogMTsKLSAKLSAgIC8qIFRydWUgaWYgdGhp cyBpcyBhbiBlbnVtIHR5cGUgd2l0aCBkaXNqb2ludCB2YWx1ZXMuICBUaGlzIGFmZmVjdHMKLSAg ICAgIGhvdyB0aGUgZW51bSBpcyBwcmludGVkLiAgKi8KLUBAIC01MDUsNiArNTYzLDIwIEBAIHN0 cnVjdCBtYWluX3R5cGUKLSAKLSAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKLSAKLSsgIC8q IEZvciBEV19BVF9kYXRhX2xvY2F0aW9uLiAgKi8KLSsgIHVuaW9uCi0rICAgIHsKLSsgICAgICBz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmX2Jsb2NrOwotKyAgICAgIENPUkVfQURE UiBhZGRyOwotKyAgICB9Ci0rICBkYXRhX2xvY2F0aW9uOwotKwotKyAgLyogRm9yIERXX0FUX2Fs bG9jYXRlZC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFsbG9jYXRlZDsK LSsKLSsgIC8qIEZvciBEV19BVF9hc3NvY2lhdGVkLiAgKi8KLSsgIHN0cnVjdCBkd2FyZjJfbG9j ZXhwcl9iYXRvbiAqYXNzb2NpYXRlZDsKLSsKLSAgIC8qIEZvciBzdHJ1Y3R1cmUgYW5kIHVuaW9u IHR5cGVzLCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQuCi0gICAgICBGb3Igc2V0IGFuZCBw YXNjYWwgYXJyYXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmllbGQiLAotICAgICAgd2hvc2UgdHlw ZSBpcyB0aGUgZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBhcnJheS4KLUBAIC01ODcsMTMgKzY1 OSwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gCi0gICAgIHN0cnVjdCByYW5nZV9ib3VuZHMKLSAg ICAgewotKyAgICAgIHN0cnVjdAotKwl7Ci0rCSAgdW5pb24KLSsJICAgIHsKLSsJICAgICAgTE9O R0VTVCBjb25zdGFudDsKLSsJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2Fy Zl9ibG9jazsKLSsJICAgICAgc3RydWN0Ci0rCQl7Ci0rCQkgIHN0cnVjdCBkd2FyZjJfbG9jbGlz dF9iYXRvbiAqbG9jbGlzdDsKLSsJCSAgc3RydWN0IHR5cGUgKnR5cGU7Ci0rCQl9Ci0rCSAgICAg IGR3YXJmX2xvY2xpc3Q7Ci0rCSAgICB9Ci0rCSAgdTsKLSsJICBlbnVtIHJhbmdlX2JvdW5kX2tp bmQKLSsJICAgIHsKLSsJICAgICAgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVCwKLSsJICAgICAg UkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSywKLSsJICAgICAgUkFOR0VfQk9VTkRfS0lORF9E V0FSRl9MT0NMSVNUCi0rCSAgICB9Ci0rCSAga2luZDsKLSsJfQotICAgICAgIC8qIExvdyBib3Vu ZCBvZiByYW5nZS4gICovCi0tCi0tICAgICAgTE9OR0VTVCBsb3c7Ci0tCi0rICAgICAgbG93LAot ICAgICAgIC8qIEhpZ2ggYm91bmQgb2YgcmFuZ2UuICAqLwotLQotLSAgICAgIExPTkdFU1QgaGln aDsKLSsgICAgICBoaWdoLAotKyAgICAgIC8qIEJ5dGUgc3RyaWRlIG9mIHJhbmdlLiAgKi8KLSsg ICAgICBieXRlX3N0cmlkZTsKLSAKLSAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIg dGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhpZ2ggYXJlCi0gICAgICAgICAgdmFsaWQuICBXaGVuIHRy dWUsIHRoZSByZXNwZWN0aXZlIHJhbmdlIHZhbHVlIGlzCi1AQCAtMTA1Myw5ICsxMTQ2LDkgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Ci0gI2Rl ZmluZSBUWVBFX1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cG9pbnRlcl90eXBl Ci0gI2RlZmluZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5yZWZl cmVuY2VfdHlwZQotICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRoaXN0eXBlKS0+Y2hh aW4KLS0vKiBOb3RlIHRoYXQgaWYgdGhpc3R5cGUgaXMgYSBUWVBFREVGIHR5cGUsIHlvdSBoYXZl IHRvIGNhbGwgY2hlY2tfdHlwZWRlZi4KLS0gICBCdXQgY2hlY2tfdHlwZWRlZiBkb2VzIHNldCB0 aGUgVFlQRV9MRU5HVEggb2YgdGhlIFRZUEVERUYgdHlwZSwKLS0gICBzbyB5b3Ugb25seSBoYXZl IHRvIGNhbGwgY2hlY2tfdHlwZWRlZiBvbmNlLiAgU2luY2UgYWxsb2NhdGVfdmFsdWUKLSsvKiBO b3RlIHRoYXQgaWYgdGhpc3R5cGUgaXMgYSBUWVBFREVGLCBBUlJBWSBvciBTVFJJTkcgdHlwZSwg eW91IGhhdmUgdG8gY2FsbAotKyAgIGNoZWNrX3R5cGVkZWYuICBCdXQgY2hlY2tfdHlwZWRlZiBk b2VzIHNldCB0aGUgVFlQRV9MRU5HVEggb2YgdGhlIFRZUEVERUYKLSsgICB0eXBlLCBzbyB5b3Ug b25seSBoYXZlIHRvIGNhbGwgY2hlY2tfdHlwZWRlZiBvbmNlLiAgU2luY2UgYWxsb2NhdGVfdmFs dWUKLSAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkp IGlzIHNhZmUuICAqLwotICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUpICh0aGlzdHlwZSkt Pmxlbmd0aAotIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVfQ09ERV9UWVBFREVG LCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTEwNjMsMTEgKzExNTYsMTYgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Ci0gI2RlZmluZSBU WVBFX0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29kZQotICNkZWZp bmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVs ZHMKLSAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlw ZSktPmZsZHNfYm5kcy5maWVsZHMKLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9C TE9DSyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5k d2FyZl9ibG9jawotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmRhdGFfbG9jYXRpb24uYWRkcgotKyNkZWZpbmUgVFlQ RV9BTExPQ0FURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFsbG9jYXRl ZAotKyNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhp c3R5cGUpLT5hc3NvY2lhdGVkCi0gCi0gI2RlZmluZSBUWVBFX0lOREVYX1RZUEUodHlwZSkgVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCAwKQotICNkZWZpbmUgVFlQRV9SQU5HRV9EQVRBKHRoaXN0eXBl KSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5ib3VuZHMKLS0jZGVmaW5lIFRZ UEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93 Ci0tI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJh bmdlX3R5cGUpLT5oaWdoCi0rI2RlZmluZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBF X1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy51LmNvbnN0YW50Ci0rI2RlZmluZSBUWVBFX0hJ R0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLnUu Y29uc3RhbnQKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREUocmFuZ2VfdHlwZSkgVFlQRV9SQU5H RV9EQVRBKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmNvbnN0YW50Ci0gI2RlZmluZSBUWVBF X0xPV19CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAotICAgIFRZUEVfUkFOR0VfREFUQShy YW5nZV90eXBlKS0+bG93X3VuZGVmaW5lZAotICNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVG SU5FRChyYW5nZV90eXBlKSBcCi1AQCAtMTA4NCw3ICsxMTgyLDE0IEBAIGV4dGVybiB2b2lkIGFs bG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICAgIChUWVBFX0hJR0hfQk9V TkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCi0gCi0gI2RlZmluZSBUWVBFX0FSUkFZ X0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0xPV19CT1VORChUWVBF X0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkKLSsgIFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVY X1RZUEUgKGFycmF5dHlwZSkpCi0rCi0rLyogVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9U WVBFIChhcnJheXR5cGUpKSB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlCi0rICAgZWxlbWVudCBzaXpl IGlmIG5vIHNwZWNpZmljIHN0cmlkZSB2YWx1ZSBpcyBrbm93bi4gICovCi0rI2RlZmluZSBUWVBF X0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFKGFycmF5dHlwZSkJCVwKLSsgIChUWVBFX0JZVEVfU1RS SURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpID09IDAJXAotKyAgID8gVFlQRV9MRU5H VEggKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5dHlwZSkpCQlcCi0rICAgOiBUWVBFX0JZVEVfU1RS SURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpKQotIAotIC8qIEMrKyAqLwotIAotQEAg LTE1MzMsNiArMTYzOCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBl IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkgICAgICAgc3RydWN0IHR5cGUg Kik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0 IHR5cGUgKiwgTE9OR0VTVCwgTE9OR0VTVCk7Ci0gCi0rZXh0ZXJuIENPUkVfQUREUiB0eXBlX3Jh bmdlX2FueV9maWVsZF9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUsCi0rCQkJCQkJ aW50IGZpZWxkbm8pOwotKwotK2V4dGVybiBpbnQgdHlwZV9yYW5nZV9oaWdoX2JvdW5kX2ludGVy bmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7Ci0rCi0rZXh0ZXJuIGludCB0eXBlX3Jhbmdl X2NvdW50X2JvdW5kX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7Ci0rCi0rZXh0 ZXJuIENPUkVfQUREUiB0eXBlX3JhbmdlX2J5dGVfc3RyaWRlX2ludGVybmFsIChzdHJ1Y3QgdHlw ZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQkgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUpOwotKwot K2V4dGVybiB2b2lkIGZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKTsKLSsKLSBleHRl cm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHR5cGUgKiwKLSAJCQkJCXN0cnVjdCB0eXBlICopOwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9v a3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBMT05HRVNULCBMT05HRVNUKTsK LUBAIC0xNTc4LDYgKzE2OTUsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0 cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOwotIAotIGV4dGVybiBpbnQgaXNfdW5pcXVlX2Fu Y2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7Ci0gCi0rI2lmIDAKLStleHRl cm4gdm9pZCB0eXBlX21hcmtfdXNlZCAoc3RydWN0IHR5cGUgKnR5cGUpOwotKyNlbmRpZgotKwot IC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KLSAKLSAjZGVmaW5lIExFTkdUSF9NQVRDSChidikg KChidiktPnJhbmtbMF0pCi1AQCAtMTY1Niw4ICsxNzc3LDcgQEAgZXh0ZXJuIHZvaWQgbWFpbnRl bmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwotIAotIGV4dGVybiBodGFiX3QgY3JlYXRl X2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0gCi0tZXh0ZXJu IHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLS0JCQkJCSBzdHJ1Y3QgdHlwZSAqdHlwZSwKLStleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0eXBlLAotIAkJCQkJIGh0YWJfdCBjb3BpZWRf dHlwZXMpOwotIAotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY29weV90eXBlIChjb25zdCBzdHJ1Y3Qg dHlwZSAqdHlwZSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKLWluZGV4 IDBjODM0OWUuLmEwN2Y0MWEgMTAwNjQ0Ci0tLS0gYS9nZGIvbWFpbi5jCi0rKysgYi9nZGIvbWFp bi5jCi1AQCAtMzcsNiArMzcsNyBAQAotIAotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0gI2luY2x1 ZGUgIm1haW4uaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJzb3Vy Y2UuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRo b24uaCIKLUBAIC0zMjUsNiArMzI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAg IGNoYXIgKmNkYXJnID0gTlVMTDsKLSAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7Ci0gCi0rICBpbnQg cHl0aG9uX3NjcmlwdCA9IDA7Ci0rCi0gICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQgd2Ug Y2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbgotICAgICAgaW5pdGlhbGl6ZXIuICAqLwotICAg c3RhdGljIGludCBwcmludF9oZWxwOwotQEAgLTUzMSwxMCArNTM0LDE0IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCi0gICAgICAgeyJhcmdzIiwgbm9fYXJndW1lbnQsICZzZXRfYXJncywg MX0sCi0gICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCi0gICAgICAgeyJy ZXR1cm4tY2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0LCAx fSwKLSsjaWYgSEFWRV9QWVRIT04KLSsgICAgICB7InB5dGhvbiIsIG5vX2FyZ3VtZW50LCAwLCAn UCd9LAotKyAgICAgIHsiUCIsIG5vX2FyZ3VtZW50LCAwLCAnUCd9LAotKyNlbmRpZgotICAgICAg IHswLCBub19hcmd1bWVudCwgMCwgMH0KLSAgICAgfTsKLSAKLS0gICAgd2hpbGUgKDEpCi0rICAg IHdoaWxlICghcHl0aG9uX3NjcmlwdCkKLSAgICAgICB7Ci0gCWludCBvcHRpb25faW5kZXg7Ci0g Ci1AQCAtNTUyLDYgKzU1OSw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCSAgY2Fz ZSAwOgotIAkgICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMgYSBmbGFnLiAgKi8KLSAJ ICAgIGJyZWFrOwotKwkgIGNhc2UgJ1AnOgotKwkgICAgcHl0aG9uX3NjcmlwdCA9IDE7Ci0rCSAg ICBicmVhazsKLSAJICBjYXNlIE9QVF9TRToKLSAJICAgIHN5bWFyZyA9IG9wdGFyZzsKLSAJICAg IGV4ZWNhcmcgPSBvcHRhcmc7Ci1AQCAtNzYxLDcgKzc3MSwzMSBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQotIAotICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhlIGlu aXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCi0gICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBmb3Ig dGhhdCBpbmZlcmlvci4gICovCi0tICBpZiAoc2V0X2FyZ3MpCi0rICBpZiAocHl0aG9uX3Njcmlw dCkKLSsgICAgewotKyAgICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHB5dGhvbiBzY3Jp cHQgdG8gZXZhbHVhdGUsIGFuZAotKwkgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0 byB0aGUgc2NyaXB0IGZvcgotKwkgcHJvY2Vzc2luZyB0aGVyZS4gICovCi0rICAgICAgaWYgKG9w dGluZCA+PSBhcmdjKQotKwl7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLAot KwkJCSAgICAgIF8oIiVzOiBQeXRob24gc2NyaXB0IGZpbGUgbmFtZSByZXF1aXJlZFxuIiksCi0r CQkJICAgICAgYXJndlswXSk7Ci0rCSAgZXhpdCAoMSk7Ci0rCX0KLSsKLSsgICAgICAvKiBGSVhN RTogc2hvdWxkIGhhbmRsZSBpbmZlcmlvciBJL08gaW50ZWxsaWdlbnRseSBoZXJlLgotKwkgRS5n Liwgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHJ1biBnZGIgaW4gcGlwZWxpbmUgYW5kIGhhdmUKLSsJ IFB5dGhvbiAoYW5kIGdkYikgb3V0cHV0IGdvIHRvIHN0ZGVyciBvciBmaWxlOyBhbmQgaWYgYQot KwkgcHJvbXB0IGlzIG5lZWRlZCwgb3BlbiB0aGUgdHR5LiAgKi8KLSsgICAgICBxdWlldCA9IDE7 Ci0rICAgICAgLyogRklYTUU6IHNob3VsZCByZWFkIC5nZGJpbml0IGlmLCBhbmQgb25seSBpZiwg YSBwcm9tcHQgaXMKLSsJIHJlcXVlc3RlZCBieSB0aGUgc2NyaXB0LiAgVGhvdWdoLi4uIG1heWJl IHRoaXMgaXMgbm90Ci0rCSBpZGVhbD8gICovCi0rICAgICAgLyogRklYTUU6IGxpa2V3aXNlLCBy ZWFkaW5nIGluIGhpc3RvcnkuICAqLwotKyAgICAgIGluaGliaXRfZ2RiaW5pdCA9IDE7Ci0rICAg IH0KLSsgIGVsc2UgaWYgKHNldF9hcmdzKQotICAgICB7Ci0gICAgICAgLyogVGhlIHJlbWFpbmlu ZyBvcHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQotIAkgaW5mZXJp b3IuICBUaGUgZmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKLUBA IC0xMDQ3LDcgKzEwODEsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAotICAgLyog UmVhZCBpbiB0aGUgb2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZpbGVzIGhhdmUg YmVlbgotICAgICAgcmVhZC4gICovCi0tICBpbml0X2hpc3RvcnkgKCk7Ci0rICBpZiAoIXB5dGhv bl9zY3JpcHQpCi0rICAgIGluaXRfaGlzdG9yeSAoKTsKLSAKLSAgIGlmIChiYXRjaF9mbGFnKQot ICAgICB7Ci1AQCAtMTA1OCwxMyArMTA5MywyNSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQotICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICovCi0gICBkb19jbGVhbnVw cyAocHJlX3N0YXRfY2hhaW4pOwotIAotLSAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRo ZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90Ci0tICAgICBtb3ZpbmcgdGhpcyBsb29w IGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AoKQotLSAgICAgaW50 byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNr IHRoYXQKLS0gICAgIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVuIGVsaW1pbmF0 ZWQuICAqLwotLSAgd2hpbGUgKDEpCi0rI2lmIEhBVkVfUFlUSE9OCi0rICBpZiAocHl0aG9uX3Nj cmlwdCkKLSAgICAgewotLSAgICAgIGNhdGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFuZF9sb29w LCAwLCAiIiwgUkVUVVJOX01BU0tfQUxMKTsKLSsgICAgICBleHRlcm4gaW50IHBhZ2luYXRpb25f ZW5hYmxlZDsKLSsgICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAwOwotKyAgICAgIHJ1bl9weXRo b25fc2NyaXB0IChhcmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRdKTsKLSsgICAgICByZXR1cm4g MTsKLSsgICAgfQotKyAgZWxzZQotKyNlbmRpZgotKyAgICB7Ci0rICAgICAgLyogTk9URTogY2Fn bmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90Ci0rCSBt b3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xv b3AoKQotKwkgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcg aG9sZGluZyBiYWNrIHRoYXQKLSsJIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVu IGVsaW1pbmF0ZWQuICovCi0rICAgICAgd2hpbGUgKDEpCi0rCXsKLSsJICBjYXRjaF9lcnJvcnMg KGNhcHR1cmVkX2NvbW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rCX0KLSAg ICAgfQotICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8K LSB9Ci1AQCAtMTA5OSw2ICsxMTQ2LDEyIEBAIHByaW50X2dkYl9oZWxwIChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtKQotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotIFRoaXMgaXMgdGhlIEdOVSBk ZWJ1Z2dlci4gIFVzYWdlOlxuXG5cCi0gICAgIGdkYiBbb3B0aW9uc10gW2V4ZWN1dGFibGUtZmls ZSBbY29yZS1maWxlIG9yIHByb2Nlc3MtaWRdXVxuXAotKyAgICBnZGIgW29wdGlvbnNdIC0tYXJn cyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG4iKSwgc3RyZWFtKTsK LSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSsgICAgZ2RiIFtv cHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3JpcHQtYXJndW1lbnRzIC4uLl1c biIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gICAg IGdkYiBbb3B0aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRz IC4uLl1cblxuXAotICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAg LTExNDQsNiArMTE5NywxMyBAQCBPdXRwdXQgYW5kIHVzZXIgaW50ZXJmYWNlIGNvbnRyb2w6XG5c blwKLSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAgIC0tZGJ4ICAgICAgICAgICAgICBEQlgg Y29tcGF0aWJpbGl0eSBtb2RlLlxuXAotICAgLS14ZGIgICAgICAgICAgICAgIFhEQiBjb21wYXRp YmlsaXR5IG1vZGUuXG5cCi0rIiksIHN0cmVhbSk7Ci0rI2lmIEhBVkVfUFlUSE9OCi0rICBmcHV0 c191bmZpbHRlcmVkIChfKCJcCi0rICAtLXB5dGhvbiwgLVAgICAgICAgRm9sbG93aW5nIGFyZ3Vt ZW50IGlzIFB5dGhvbiBzY3JpcHQgZmlsZTsgcmVtYWluaW5nXG5cCi0rICAgICAgICAgICAgICAg ICAgICAgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gc2NyaXB0LlxuIiksIHN0cmVhbSk7Ci0rI2Vu ZGlmCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gICAtLXF1aWV0ICAgICAgICAgICAgRG8g bm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cblwKLSAiKSwgc3RyZWFtKTsK LSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLWRpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5j IGIvZ2RiL3AtdmFscHJpbnQuYwotaW5kZXggYTg3ZjFmNC4uMGY5MzI3MSAxMDA2NDQKLS0tLSBh L2dkYi9wLXZhbHByaW50LmMKLSsrKyBiL2dkYi9wLXZhbHByaW50LmMKLUBAIC0zOCw2ICszOCw3 IEBACi0gI2luY2x1ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJjcC1zdXBwb3J0LmgiCi0gI2lu Y2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIC8q IERlY29yYXRpb25zIGZvciBQYXNjYWwuICAqLwotQEAgLTczLDggKzc0LDMxIEBAIHBhc2NhbF92 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAg IHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7Ci0gICBDT1JFX0FERFIgYWRkcjsKLSAgIGludCB3YW50 X3NwYWNlID0gMDsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgc3RydWN0IHR5cGUg KnNhdmVkX3R5cGUgPSB0eXBlOwotKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNz OwotKyAgCi0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAg YWRkcmVzcyArPSBlbWJlZGRlZF9vZmZzZXQ7Ci0rICB0eXBlID0gb2JqZWN0X2FkZHJlc3NfZ2V0 X2RhdGEgKHR5cGUsICZhZGRyZXNzKTsKLSsgIGlmICh0eXBlID09IE5VTEwpCi0rICAgIHsKLSsg ICAgICBmcHV0c19maWx0ZXJlZCAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHNhdmVk X3R5cGUpLCBzdHJlYW0pOwotKyAgICAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKLSsgICAgICBkb19j bGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICBpZiAoYWRkcmVz cyAhPSBzYXZlZF9hZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0KQotKyAgICB7Ci0rICAgICAgc2l6 ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLS0gIENIRUNLX1RZUEVERUYgKHR5 cGUpOwotKyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5ndGgpOwotKyAgICAgIG1ha2VfY2xl YW51cCAoeGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsKLSsgICAgICByZWFkX21lbW9yeSAo YWRkcmVzcywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0aCk7Ci0rICAgICAgZW1iZWRkZWRf b2Zmc2V0ID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBhZGRyZXNzIC09IGVtYmVkZGVkX29m ZnNldDsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKLSAgICAgewotICAgICBjYXNlIFRZ UEVfQ09ERV9BUlJBWToKLUBAIC0xMzAsOCArMTU0LDggQEAgcGFzY2FsX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJewotIAkJICBpID0g MDsKLSAJCX0KLS0JICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRy LCBlbWJlZGRlZF9vZmZzZXQsCi0tCQkJCQlhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsCi0rCSAg ICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRfdHlwZSwgdmFsYWRkciwgZW1iZWRk ZWRfb2Zmc2V0LAotKwkJCQkJc2F2ZWRfYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLAotIAkJCQkJ b3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkpOwotIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJ9Iik7Ci0gCSAgICB9Ci1AQCAtMTY5LDYgKzE5Myw3IEBAIHBhc2NhbF92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJewotIAkg IC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0by4gICovCi0gCSAgcHJp bnRfYWRkcmVzc19kZW1hbmdsZSAob3B0aW9ucywgZ2RiYXJjaCwgYWRkciwgc3RyZWFtLCBkZW1h bmdsZSk7Ci0rCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIAkgIHJldHVybjsKLSAJfQotIAot QEAgLTI3MSw2ICsyOTYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCSAgICB9Ci0gCX0KLSAKLSsgICAgICBkb19jbGVh bnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuOwotIAotICAgICBjYXNlIFRZUEVfQ09ERV9S RUY6Ci1AQCAtNDExLDYgKzQzNyw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAgICBUWVBFX0NPREUgKHR5cGUpKTsK LSAgICAgfQotICAgZ2RiX2ZsdXNoIChzdHJlYW0pOwotKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OwotIH0KLSAMCi0gdm9pZAotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMK LWluZGV4IDExNzEyODkuLjJhZmRiODUgMTAwNjQ0Ci0tLS0gYS9nZGIvcGFyc2UuYwotKysrIGIv Z2RiL3BhcnNlLmMKLUBAIC0xNzczLDYgKzE3NzMsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAq eCwgY29uc3QgY2hhciAqeSwgLi4uKQotIAotIGludAotIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJk IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCSBpbnQgKCp0eXBlX2Z1bmMp IChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJIGludCAoKm9iamZpbGVfZnVu YykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCi0g CQkJIHZvaWQgKmRhdGEpCi1AQCAtMTgxMiw3ICsxODEzLDcgQEAgb3BlcmF0b3JfY2hlY2tfc3Rh bmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0gCSAgICBzdHJ1Y3QgdHlw ZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsKLSAJICAgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKLSAKLS0JICAgIGlmIChvYmpmaWxlICYm ICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCi0rCSAgICBpZiAob2JqZmlsZSAmJiBv YmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAJICAgICAg cmV0dXJuIDE7Ci0gCSAgfQotICAgICAgIH0KLUBAIC0xODMwLDcgKzE4MzEsOCBAQCBvcGVyYXRv cl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAJ LyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KLSAJ ICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JaWYgKCgq b2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0r CWlmIChvYmpmaWxlX2Z1bmMKLSsJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRB QiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0gCSAgcmV0dXJuIDE7Ci0gCi0gCS8qIENoZWNr IG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4g ICovCi1AQCAtMTg0MywyNCArMTg0NSwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3Mg Zm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0g Ci0tICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBl X2Z1bmMgJiYgKCp0eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBp ZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYm ICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVy biAxOwotLSAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkK LSsgIGlmIChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZp bGUsIGRhdGEpKQotICAgICByZXR1cm4gMTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBD YWxsIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcgcmVm ZXJlbmNlZCBieSBFWFAuCi0tICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGgg TlVMTCBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KLS0gICBhcmJpdHJhcnkgY2Fs bGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVy bnMKLS0gICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVlIGlz IGltbWVkaWF0ZWx5IHJldHVybmVkIHRvCi0tICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJv IGlzIHJldHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4KLS0gICAqLwot Ky8qIENhbGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpG SUxFIGZvdW5kIGJlaW5nCi0rICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25zIGFy ZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAotKyAgIE9CSkZJTEUuICBGdW5j dGlvbnMgZ2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRl ci4KLSsgICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVlIHRo ZW4gKGFueSBvdGhlcikgbm9uLXplcm8KLSsgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5l ZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKLSsgICBhZnRlciBp dGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLwotIAotIHN0YXRpYyBpbnQKLSBleHBfaXRl cmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSsJICAgICBpbnQgKCp0eXBlX2Z1bmMpIChz dHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCSAgICAgaW50ICgqb2JqZmlsZV9mdW5j KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAotIAkgICAgIHZvaWQgKmRh dGEpCi0gewotQEAgLTE4NzUsNyArMTg4MCw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLAotIAotICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwotICAgICAgIGlmIChl eHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3Ms Ci0tCQkJCQkJCSAgIG9iamZpbGVfZnVuYywgZGF0YSkpCi0rCQkJCQkJCSAgIHR5cGVfZnVuYywK LSsJCQkJCQkJICAgb2JqZmlsZV9mdW5jLAotKwkJCQkJCQkgICBkYXRhKSkKLSAJcmV0dXJuIDE7 Ci0gCi0gICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE5MDYsOCArMTkxMywyOSBAQCBleHBfdXNl c19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKLSB7Ci0gICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2Jh Y2tsaW5rID09IE5VTEwpOwotIAotLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIGV4cF91c2Vz X29iamZpbGVfaXRlciwgb2JqZmlsZSk7Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVM TCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZv ciBleHBfdHlwZXNfbWFya191c2VkLiAgKi8KLSsKLSsjaWYgMAotK3N0YXRpYyBpbnQKLStleHBf dHlwZXNfbWFya191c2VkX2l0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICp1bnVzZWQpCi0r ewotKyAgdHlwZV9tYXJrX3VzZWQgKHR5cGUpOwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZl cnNhbC4gICovCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBm b3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCi0rCi0rdm9pZAotK2V4cF90eXBlc19t YXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApCi0rewotKyAgZXhwX2l0ZXJhdGUgKGV4 cCwgZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyLCBOVUxMLCBOVUxMKTsKLSB9Ci0rI2VuZGlmCi0g Ci0gdm9pZAotIF9pbml0aWFsaXplX3BhcnNlICh2b2lkKQotZGlmZiAtLWdpdCBhL2dkYi9wYXJz ZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKLWluZGV4IGMzZjI2MDcuLmZhMGFmN2IgMTAw NjQ0Ci0tLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAotKysrIGIvZ2RiL3BhcnNlci1kZWZzLmgKLUBA IC0yNDUsNiArMjQ1LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChj b25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAotIAkJCQkgICAgICBpbnQgKik7 Ci0gCi0gZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwgaW50IHBvcywKLSsJCQkJICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBl ICp0eXBlLAotKwkJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAotIAkJCQkgICAgaW50ICgqb2JqZmls ZV9mdW5jKQotIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEp LAotIAkJCQkgICAgdm9pZCAqZGF0YSk7Ci1AQCAtMzMxLDYgKzMzMyw3IEBAIHN0cnVjdCBleHBf ZGVzY3JpcHRvcgotICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0dXJuZWQg dG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCi0gICAgICAgIHNob3VsZCBiZSByZXR1cm5l ZC4gICovCi0gICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKLSsJCQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwg dm9pZCAqZGF0YSksCi0gCQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCi0gCQkJCQkJdm9pZCAqZGF0YSksCi0gCQkJICAgdm9pZCAqZGF0YSk7Ci1kaWZm IC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5kZXggMTBkM2MyMy4u NTc1OWQ1YyAxMDA2NDQKLS0tLSBhL2dkYi9wcmludGNtZC5jCi0rKysgYi9nZGIvcHJpbnRjbWQu YwotQEAgLTUwLDYgKzUwLDcgQEAKLSAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgotICNpbmNs dWRlICJmb3JtYXQuaCIKLSAjaW5jbHVkZSAic291cmNlLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxv Yy5oIgotIAotICNpZmRlZiBUVUkKLSAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyogRm9yIHR1aV9h Y3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NzksNiArOTgwLDExIEBAIHByaW50X2NvbW1hbmRfMSAo Y29uc3QgY2hhciAqZXhwLCBpbnQgdm9pZHByaW50KQotICAgZWxzZQotICAgICB2YWwgPSBhY2Nl c3NfdmFsdWVfaGlzdG9yeSAoMCk7Ci0gCi0rICAvKiBEbyBub3QgdHJ5IHRvIE9CSkVDVF9BRERS RVNTX1NFVCBoZXJlIGFueXRoaW5nLiAgV2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlCi0rICAgICBz b3VyY2UgdmFyaWFibGUgYmFzZSBhZGRyZXNzZXMgYXMgZm91bmQgYnkgUkVBRF9WQVJfVkFMVUUu ICBUaGUgdmFsdWUgaGVyZQotKyAgICAgY2FuIGJlIGFscmVhZHkgYSBjYWxjdWxhdGVkIGV4cHJl c3Npb24gYWRkcmVzcyBpbmFwcHJvcHJpYXRlIGZvcgotKyAgICAgRFdfT1BfcHVzaF9vYmplY3Rf YWRkcmVzcy4gICovCi0rCi0gICBpZiAodm9pZHByaW50IHx8ICh2YWwgJiYgdmFsdWVfdHlwZSAo dmFsKSAmJgotIAkJICAgIFRZUEVfQ09ERSAodmFsdWVfdHlwZSAodmFsKSkgIT0gVFlQRV9DT0RF X1ZPSUQpKQotICAgICB7Ci1AQCAtMTA2MCw2ICsxMDY2LDkgQEAgb3V0cHV0X2NvbW1hbmRfY29u c3QgKGNvbnN0IGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQotIAotICAgdmFsID0gZXZhbHVhdGVf ZXhwcmVzc2lvbiAoZXhwcik7Ci0gCi0rICBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21l bW9yeSkKLSsgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKSk7 Ci0rCi0gICBhbm5vdGF0ZV92YWx1ZV9iZWdpbiAodmFsdWVfdHlwZSAodmFsKSk7Ci0gCi0gICBn ZXRfZm9ybWF0dGVkX3ByaW50X29wdGlvbnMgKCZvcHRzLCBmb3JtYXQpOwotQEAgLTE0OTQsNiAr MTUwMywyNCBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQotIAlzZXRfaW50 ZXJuYWx2YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7 Ci0gICAgIH0KLSB9Ci0rCi0rI2lmIDAKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkg VFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK3ByaW50X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgZGlz cGxheSAqZDsKLSsKLSsgIGlmIChsYXN0X2V4YW1pbmVfdmFsdWUpCi0rICAgIHR5cGVfbWFya191 c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFsdWUpKTsKLSsKLSsgIGZvciAoZCA9IGRp c3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQotKyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4 cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7Ci0rfQotKyNlbmRpZgotKwotIAwKLSAKLSAvKiBB ZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAgLTE5OTUsNiAr MjAyMiwxMCBAQCBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0 cnVjdCBzeW1ib2wgKnZhciwKLSAgICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRz OwotIAotICAgICAgIHZhbCA9IHJlYWRfdmFyX3ZhbHVlICh2YXIsIGZyYW1lKTsKLSsKLSsgICAg ICBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsKLSsgICAgICBzZWxlY3Rf ZnJhbWUgKGZyYW1lKTsKLSsKLSAgICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7 Ci0gICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwotICAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHZh bCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKLUBAIC0yNjUxLDQg KzI2ODIsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1i ZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKLSAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xhc3Ms IGV2YWxfY29tbWFuZCwgXygiXAotIENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBh cmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ24gdG9cblwKLSBhIGNvbW1hbmQgbGluZSwgYW5kIGNh bGwgaXQuIikpOwotKwotKyNpZiAwCi0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmlu dF90eXBlc19tYXJrX3VzZWQpOwotKyNlbmRpZgotIH0KLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvaWdub3JlX2Vycm9ycy5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjZmYTQ4ZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL2lnbm9yZV9lcnJvcnMucHkKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIElnbm9yZSBlcnJvcnMg aW4gdXNlciBjb21tYW5kcy4KLSsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0r aW1wb3J0IGdkYgotKwotK2NsYXNzIElnbm9yZUVycm9yc0NvbW1hbmQgKGdkYi5Db21tYW5kKToK LSsgICAgIiIiRXhlY3V0ZSBhIHNpbmdsZSBjb21tYW5kLCBpZ25vcmluZyBhbGwgZXJyb3JzLgot K09ubHkgb25lLWxpbmUgY29tbWFuZHMgYXJlIHN1cHBvcnRlZC4KLStUaGlzIGlzIHByaW1hcmls eSB1c2VmdWwgaW4gc2NyaXB0cy4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsg ICAgICAgIHN1cGVyIChJZ25vcmVFcnJvcnNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoImlnbm9y ZS1lcnJvcnMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZGIuQ09NTUFORF9PQlNDVVJFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FLi4uCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9DT01NQU5EKQot KwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAgIHRyeToK LSsgICAgICAgICAgICBnZGIuZXhlY3V0ZSAoYXJnLCBmcm9tX3R0eSkKLSsgICAgICAgIGV4Y2Vw dDoKLSsgICAgICAgICAgICBwYXNzCi0rCi0rSWdub3JlRXJyb3JzQ29tbWFuZCAoKQotZGlmZiAt LWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weSBiL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjYzNmY5OWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL3BhaG9sZS5weQotQEAgLTAsMCArMSw4MSBAQAotKyMgcGFob2xlIGNvbW1hbmQgZm9y IGdkYgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStp bXBvcnQgZ2RiCi0rCi0rY2xhc3MgUGFob2xlIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlNob3cg dGhlIGhvbGVzIGluIGEgc3RydWN0dXJlLgotK1RoaXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBh cmd1bWVudCwgYSB0eXBlIG5hbWUuCi0rSXQgcHJpbnRzIHRoZSB0eXBlIGFuZCBkaXNwbGF5cyBj b21tZW50cyBzaG93aW5nIHdoZXJlIGhvbGVzIGFyZS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9f IChzZWxmKToKLSsgICAgICAgIHN1cGVyIChQYWhvbGUsIHNlbGYpLl9faW5pdF9fICgicGFob2xl IiwgZ2RiLkNPTU1BTkRfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZGIuQ09NUExFVEVfU1lNQk9MKQotKwotKyAgICBkZWYgbWF5YmVfcHJpbnRfaG9sZShz ZWxmLCBiaXRwb3MsIGZpZWxkX2JpdHBvcyk6Ci0rICAgICAgICBpZiBiaXRwb3MgIT0gZmllbGRf Yml0cG9zOgotKyAgICAgICAgICAgIGhvbGUgPSBmaWVsZF9iaXRwb3MgLSBiaXRwb3MKLSsgICAg ICAgICAgICBwcmludCAnICAvKiBYWFggJWQgYml0IGhvbGUsIHRyeSB0byBwYWNrICovJyAlIGhv bGUKLSsKLSsgICAgZGVmIHBhaG9sZSAoc2VsZiwgdHlwZSwgbGV2ZWwsIG5hbWUpOgotKyAgICAg ICAgaWYgbmFtZSBpcyBOb25lOgotKyAgICAgICAgICAgIG5hbWUgPSAnJwotKyAgICAgICAgdGFn ID0gdHlwZS50YWcKLSsgICAgICAgIGlmIHRhZyBpcyBOb25lOgotKyAgICAgICAgICAgIHRhZyA9 ICcnCi0rICAgICAgICBwcmludCAnJXNzdHJ1Y3QgJXMgeycgJSAoJyAnICogKDIgKiBsZXZlbCks IHRhZykKLSsgICAgICAgIGJpdHBvcyA9IDAKLSsgICAgICAgIGZvciBmaWVsZCBpbiB0eXBlLmZp ZWxkcyAoKToKLSsgICAgICAgICAgICAjIFNraXAgc3RhdGljIGZpZWxkcy4KLSsgICAgICAgICAg ICBpZiBub3QgaGFzYXR0ciAoZmllbGQsICgnYml0cG9zJykpOgotKyAgICAgICAgICAgICAgICBj b250aW51ZQotKwotKyAgICAgICAgICAgIGZ0eXBlID0gZmllbGQudHlwZS5zdHJpcF90eXBlZGVm cygpCi0rCi0rICAgICAgICAgICAgc2VsZi5tYXliZV9wcmludF9ob2xlKGJpdHBvcywgZmllbGQu Yml0cG9zKQotKyAgICAgICAgICAgIGJpdHBvcyA9IGZpZWxkLmJpdHBvcwotKyAgICAgICAgICAg IGlmIGZpZWxkLmJpdHNpemUgPiAwOgotKyAgICAgICAgICAgICAgICBmaWVsZHNpemUgPSBmaWVs ZC5iaXRzaXplCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgIyBUQVJHRVRf Q0hBUl9CSVQgaGVyZS4uLgotKyAgICAgICAgICAgICAgICBmaWVsZHNpemUgPSA4ICogZnR5cGUu c2l6ZW9mCi0rCi0rICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQKLSsgICAgICAgICAgICBw cmludCAnIC8qICUzZCAlM2QgKi8nICUgKGludCAoYml0cG9zIC8gOCksIGludCAoZmllbGRzaXpl IC8gOCkpLAotKyAgICAgICAgICAgIGJpdHBvcyA9IGJpdHBvcyArIGZpZWxkc2l6ZQotKwotKyAg ICAgICAgICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6Ci0rICAgICAg ICAgICAgICAgIHNlbGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBmaWVsZC5uYW1lKQotKyAg ICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgIHByaW50ICcgJyAqICgyICsgMiAqIGxl dmVsKSwKLSsgICAgICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChzdHIgKGZ0eXBlKSwgZmll bGQubmFtZSkKLSsKLSsgICAgICAgIGlmIGxldmVsID09IDA6Ci0rICAgICAgICAgICAgc2VsZi5t YXliZV9wcmludF9ob2xlKGJpdHBvcywgOCAqIHR5cGUuc2l6ZW9mKQotKwotKyAgICAgICAgcHJp bnQgJyAnICogKDE0ICsgMiAqIGxldmVsKSwKLSsgICAgICAgIHByaW50ICd9ICVzJyAlIG5hbWUK LSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICB0eXBl ID0gZ2RiLmxvb2t1cF90eXBlIChhcmcpCi0rICAgICAgICB0eXBlID0gdHlwZS5zdHJpcF90eXBl ZGVmcyAoKQotKyAgICAgICAgaWYgdHlwZS5jb2RlICE9IGdkYi5UWVBFX0NPREVfU1RSVUNUOgot KyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvciwgJyVzIGlzIG5vdCBhIHN0cnVjdCB0eXBlJyAl IGFyZwotKyAgICAgICAgcHJpbnQgJyAnICogMTQsCi0rICAgICAgICBzZWxmLnBhaG9sZSAodHlw ZSwgMCwgJycpCi0rCi0rUGFob2xlKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vY2FsbGVyX2lzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxl cl9pcy5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJiOWM1YzcKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMu cHkKLUBAIC0wLDAgKzEsNTggQEAKLSsjIENhbGxlci1pcyBmdW5jdGlvbnMuCi0rCi0rIyBDb3B5 cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgcmUKLSsKLStj bGFzcyBDYWxsZXJJcyAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhl IGNhbGxpbmcgZnVuY3Rpb24ncyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgotK1RoaXMgZnVu Y3Rpb24gdGFrZXMgb25lIG9yIHR3byBhcmd1bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3VtZW50IGlz IHRoZSBuYW1lIG9mIGEgZnVuY3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKLStuYW1l IGlzIGVxdWFsIHRvIHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgot K1RoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFu eSBzdGFjayBmcmFtZXMKLSt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9u LiAgVGhlIGRlZmF1bHQgaXMgMS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsg ICAgICAgIHN1cGVyIChDYWxsZXJJcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQotKwot KyAgICBkZWYgaW52b2tlIChzZWxmLCBuYW1lLCBuZnJhbWVzID0gMSk6Ci0rICAgICAgICBmcmFt ZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKQotKyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6Ci0r ICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlciAoKQotKyAgICAgICAgICAgIG5mcmFtZXMg PSBuZnJhbWVzIC0gMQotKyAgICAgICAgcmV0dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJp bmcgKCkKLSsKLStjbGFzcyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJS ZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmlu Zy4KLStUaGlzIGZ1bmN0aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgotK1RoZSBmaXJz dCBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rp b24ncwotK25hbWUgaXMgbWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJl dHVybnMgVHJ1ZS4KLStUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVu Y3Rpb24gaG93IG1hbnkgc3RhY2sgZnJhbWVzCi0rdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2Fs bGluZyBmdW5jdGlvbi4gIFRoZSBkZWZhdWx0IGlzIDEuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRf XyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoQ2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18g KCJjYWxsZXJfbWF0Y2hlcyIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFt ZXMgPSAxKToKLSsgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAg ICB3aGlsZSBuZnJhbWVzID4gMDoKLSsgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgp Ci0rICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCi0rICAgICAgICByZXR1cm4gcmUu bWF0Y2ggKG5hbWUuc3RyaW5nICgpLCBmcmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQotKwotK0Nh bGxlcklzKCkKLStDYWxsZXJNYXRjaGVzKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9n ZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUu cHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIEluLXNjb3BlIGZ1bmN0aW9uLgotKwotKyMgQ29weXJp Z2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgSW5TY29wZSAo Z2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJp YWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KLStUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVh Y2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgotKwotKyAgICBkZWYgX19pbml0X18g KHNlbGYpOgotKwlzdXBlciAoSW5TY29wZSwgc2VsZikuX19pbml0X18gKCJpbl9zY29wZSIpCi0r Ci0rICAgIGRlZiBpbnZva2UgKHNlbGYsICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykg PT0gMDoKLSsJICAgIHJhaXNlIFR5cGVFcnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9u ZSBhcmd1bWVudCIKLSsKLSsgICAgICAgICMgZ2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0 IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4KLSsJIyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KLSsJ d2FudGVkID0gc2V0IChtYXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rCWZvdW5k ID0gc2V0ICgpCi0rCWJsb2NrID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCi0rCXdo aWxlIGJsb2NrOgotKwkgICAgZm9yIHN5bSBpbiBibG9jazoKLSsJCWlmIChzeW0uaXNfYXJndW1l bnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0rCQkgICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3lt LmlzX3ZhcmlhYmxlKToKLSsJCSAgICBpZiBzeW0ubmFtZSBpbiB3YW50ZWQ6Ci0rCQkJZm91bmQu YWRkIChzeW0ubmFtZSkKLSsKLSsJICAgIGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwotKwly ZXR1cm4gd2FudGVkID09IGZvdW5kCi0rCi0rSW5TY29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vcHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLWluZGV4IDE2YmI0NDIuLjhj ZjZkZWIgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwotKysrIGIvZ2RiL3B5dGhv bi9weS10eXBlLmMKLUBAIC0yOSw2ICsyOSw4IEBACi0gI2luY2x1ZGUgImxhbmd1YWdlLmgiCi0g I2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJ0eXBlcHJpbnQuaCIKLSsjaW5jbHVkZSAib2Jz ZXJ2ZXIuaCIKLSsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotIAotIHR5cGVkZWYgc3RydWN0IHB5 dHlfdHlwZV9vYmplY3QKLSB7Ci1AQCAtMzcsMTEgKzM5LDE5IEBAIHR5cGVkZWYgc3RydWN0IHB5 dHlfdHlwZV9vYmplY3QKLSAKLSAgIC8qIElmIGEgVHlwZSBvYmplY3QgaXMgYXNzb2NpYXRlZCB3 aXRoIGFuIG9iamZpbGUsIGl0IGlzIGtlcHQgb24gYQotICAgICAgZG91Ymx5LWxpbmtlZCBsaXN0 LCByb290ZWQgaW4gdGhlIG9iamZpbGUuICBUaGlzIGxldHMgdXMgY29weSB0aGUKLS0gICAgIHVu ZGVybHlpbmcgc3RydWN0IHR5cGUgd2hlbiB0aGUgb2JqZmlsZSBpcyBkZWxldGVkLiAgKi8KLSsg ICAgIHVuZGVybHlpbmcgc3RydWN0IHR5cGUgd2hlbiB0aGUgb2JqZmlsZSBpcyBkZWxldGVkLgot KwotKyAgICAgV2l0aCBOVUxMIG9iamZpbGUgVHlwZSBzdGlsbCBjYW4gYmUgZG91Ymx5LWxpbmtl ZCBpbiB0aGUgbGlzdAotKyAgICAgUFlUWV9PQkpFQ1RTX0RJU0NBUkRBQkxFLiAgKi8KLSAgIHN0 cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpwcmV2OwotICAgc3RydWN0IHB5dHlfdHlwZV9vYmplY3Qg Km5leHQ7Ci0gfSB0eXBlX29iamVjdDsKLSAKLSsjaWYgMAotKy8qIEZpcnN0IGVsZW1lbnQgb2Yg YSBkb3VibHktbGlua2VkIGxpc3Qgb2YgVFlQRV9ESVNDQVJEQUJMRSBUeXBlcy4gICovCi0rc3Rh dGljIHR5cGVfb2JqZWN0ICpweXR5X29iamVjdHNfZGlzY2FyZGFibGU7Ci0rI2VuZGlmCi0rCi0g c3RhdGljIFB5VHlwZU9iamVjdCB0eXBlX29iamVjdF90eXBlCi0gICAgIENQWUNIRUNLRVJfVFlQ RV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJ0eXBlX29iamVjdCIpOwotIAotQEAgLTEwMjQsOCArMTAz NCw2MyBAQCB0eXB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVy LCBpbnQgb3ApCi0gCi0gDAotIAotKy8qIEtleSBhc3NvY2lhdGVkIHdpdGggZWFjaCBvYmpmaWxl IHBvaW50aW5nIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mCi0rICAgYSBkb3VibHktbGlua2VkIGxp c3Qgb2YgVHlwZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZmlsZS4gICovCi0gc3RhdGljIGNv bnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKnR5cHlfb2JqZmlsZV9kYXRhX2tleTsKLSAKLSsvKiBM aW5rIFRZUEVfT0JKIHRvIGl0cyBhcHByb3ByaWF0ZSBsaXN0LiAgRWl0aGVyIHRvIGl0cyBvYmpm aWxlIGFzc29jaWF0ZWQgb25lCi0rICAgb3IgYXQgbGVhc3QgdG8gdGhlIGdsb2JhbCBsaXN0IGZv ciBUWVBFX0RJU0NBUkRBQkxFIFR5cGVzLiAgUGVybWFuZW50IHR5cGVzCi0rICAgZG8gbm90IGdl dCBsaW5rZWQgYW55d2hlcmUuICAqLwotK3N0YXRpYyB2b2lkCi0rdHlweV9saW5rICh0eXBlX29i amVjdCAqdHlwZV9vYmopCi0rewotKyAgdHlwZV9vYmotPnByZXYgPSBOVUxMOwotKwotKyAgaWYg KHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7 Ci0rICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGVfb2Jq LT50eXBlKTsKLSsKLSsgICAgICB0eXBlX29iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmls ZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKLSsgICAgICBpZiAodHlwZV9vYmotPm5leHQpCi0r CXR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmo7Ci0rICAgICAgc2V0X29iamZpbGVfZGF0 YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iaik7Ci0rICAgIH0KLSsj aWYgMAotKyAgZWxzZSBpZiAodHlwZV9vYmotPnR5cGUgJiYgVFlQRV9ESVNDQVJEQUJMRSAodHlw ZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAgdHlwZV9vYmotPm5leHQgPSBweXR5X29iamVj dHNfZGlzY2FyZGFibGU7Ci0rICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0KQotKwl0eXBlX29iai0+ bmV4dC0+cHJldiA9IHR5cGVfb2JqOwotKyAgICAgIHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9 IHR5cGVfb2JqOwotKyAgICB9Ci0rI2VuZGlmCi0rICBlbHNlCi0rICAgIHR5cGVfb2JqLT5uZXh0 ID0gTlVMTDsKLSt9Ci0rCi0rLyogVW5saW5rIFRZUEVfT0JKIGZyb20gaXRzIGN1cnJlbnQgbGlz dC4gIFBlcm1hbmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAotKyAgIGFueXdoZXJlIGFuZCB0aGlz IGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICovCi0rc3RhdGljIHZvaWQKLSt0eXB5 X3VubGluayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQotK3sKLSsgIGlmICh0eXBlX29iai0+cHJl dikKLSsgICAgdHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBlX29iai0+bmV4dDsKLSsgIGVsc2Ug aWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAg ICB7Ci0rICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwotKyAgICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7Ci0rCi0r ICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0 eXBlX29iai0+bmV4dCk7Ci0rICAgIH0KLSsjaWYgMAotKyAgZWxzZSBpZiAocHl0eV9vYmplY3Rz X2Rpc2NhcmRhYmxlID09IHR5cGVfb2JqKQotKyAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUg PSB0eXBlX29iai0+bmV4dDsKLSsjZW5kaWYKLSsKLSsgIGlmICh0eXBlX29iai0+bmV4dCkKLSsg ICAgdHlwZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iai0+cHJldjsKLSt9Ci0rCi0gc3RhdGlj IHZvaWQKLSBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lk ICpkYXR1bSkKLSB7Ci1AQCAtMTA0NiwxMiArMTExMSwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKLSAgICAgewotICAgICAgIHR5 cGVfb2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0OwotIAotLSAgICAgIGh0YWJfZW1wdHkgKGNvcGll ZF90eXBlcyk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5cGUpID09 IG9iamZpbGUpOwotKyAgICAgIHR5cHlfdW5saW5rIChvYmopOwotIAotLSAgICAgIG9iai0+dHlw ZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIG9iai0+dHlwZSwgY29waWVkX3R5cGVz KTsKLSsgICAgICBvYmotPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmotPnR5cGUsIGNv cGllZF90eXBlcyk7Ci0gCi0tICAgICAgb2JqLT5uZXh0ID0gTlVMTDsKLS0gICAgICBvYmotPnBy ZXYgPSBOVUxMOwotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9 PSBOVUxMKTsKLSsgICAgICB0eXB5X2xpbmsgKG9iaik7Ci0gCi0gICAgICAgb2JqID0gbmV4dDsK LSAgICAgfQotQEAgLTEwNjIsNDMgKzExMjgsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0t c2V0X3R5cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBlKQotK3R5cHlfZGVh bGxvYyAoUHlPYmplY3QgKm9iaikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBlOwotLSAgb2JqLT5w cmV2ID0gTlVMTDsKLS0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCi0tICAgIHsK LS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0r ICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotIAotLSAgICAg IG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5 KTsKLS0gICAgICBpZiAob2JqLT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYgPSBvYmo7Ci0tICAg ICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmop OwotLSAgICB9Ci0tICBlbHNlCi0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0rICB0eXB5X3VubGlu ayAodHlwZV9vYmopOwotKwotKyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2ZyZWUgKG9iaik7Ci0g fQotIAotKyNpZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVy ZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCi0gc3RhdGljIHZvaWQKLS10eXB5 X2RlYWxsb2MgKFB5T2JqZWN0ICpvYmopCi0rdHlweV90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0g ewotLSAgdHlwZV9vYmplY3QgKnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOwotLQotLSAgaWYg KHR5cGUtPnByZXYpCi0tICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0OwotLSAgZWxz ZSBpZiAodHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQotLSAgICB7Ci0t ICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwotLSAgICAgIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKLS0KLS0gICAgICBpZiAo b2JqZmlsZSkKLS0Jc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFf a2V5LCB0eXBlLT5uZXh0KTsKLS0gICAgfQotLSAgaWYgKHR5cGUtPm5leHQpCi0tICAgIHR5cGUt Pm5leHQtPnByZXYgPSB0eXBlLT5wcmV2OwotKyAgdHlwZV9vYmplY3QgKnR5cGVfb2JqOwotIAot LSAgUHlfVFlQRSAodHlwZSktPnRwX2ZyZWUgKHR5cGUpOwotKyAgZm9yICh0eXBlX29iaiA9IHB5 dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKLSsgICAgICAgdHlwZV9vYmogIT0gTlVMTDsKLSsgICAg ICAgdHlwZV9vYmogPSB0eXBlX29iai0+bmV4dCkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHR5cGVf b2JqLT50eXBlKTsKLSB9Ci0rI2VuZGlmCi0gCi0gLyogUmV0dXJuIG51bWJlciBvZiBmaWVsZHMg KCJsZW5ndGgiIG9mIHRoZSBmaWVsZCBkaWN0aW9uYXJ5KS4gICovCi0gCi1AQCAtMTMxOCw3ICsx MzY5LDEwIEBAIHR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICp0eXBlKQotIAotICAg dHlwZV9vYmogPSBQeU9iamVjdF9OZXcgKHR5cGVfb2JqZWN0LCAmdHlwZV9vYmplY3RfdHlwZSk7 Ci0gICBpZiAodHlwZV9vYmopCi0tICAgIHNldF90eXBlICh0eXBlX29iaiwgdHlwZSk7Ci0rICAg IHsKLSsgICAgICB0eXBlX29iai0+dHlwZSA9IHR5cGU7Ci0rICAgICAgdHlweV9saW5rICh0eXBl X29iaik7Ci0rICAgIH0KLSAKLSAgIHJldHVybiAoUHlPYmplY3QgKikgdHlwZV9vYmo7Ci0gfQot ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHktdmFsdWUu YwotaW5kZXggNGFiNzgyZC4uZWVkOTFiODc4IDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9weS12 YWx1ZS5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLUBAIC0yOSw2ICsyOSw3IEBACi0g I2luY2x1ZGUgImV4cHJlc3Npb24uaCIKLSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2luY2x1ZGUg InB5dGhvbi5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotIAotICNpZmRlZiBIQVZFX1BZVEhP TgotIAotQEAgLTE1MDMsMTIgKzE1MDQsMjggQEAgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9i amVjdCAqb2JqKQotICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2JqLCAmdmFsdWVfb2Jq ZWN0X3R5cGUpOwotIH0KLSAKLSsjaWYgMAotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFu eSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rcHl0aG9uX3R5cGVzX21hcmtfdXNlZCAodm9pZCkKLSt7Ci0rICB2YWx1ZV9v YmplY3QgKml0ZXI7Ci0rCi0rICBmb3IgKGl0ZXIgPSB2YWx1ZXNfaW5fcHl0aG9uOyBpdGVyOyBp dGVyID0gaXRlci0+bmV4dCkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGl0ZXIt PnZhbHVlKSk7Ci0rfQotKyNlbmRpZgotKwotIGludAotIGdkYnB5X2luaXRpYWxpemVfdmFsdWVz ICh2b2lkKQotIHsKLSAgIGlmIChQeVR5cGVfUmVhZHkgKCZ2YWx1ZV9vYmplY3RfdHlwZSkgPCAw KQotICAgICByZXR1cm4gLTE7Ci0gCi0rI2lmIDAKLSsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3Vz ZWQgKHB5dGhvbl90eXBlc19tYXJrX3VzZWQpOwotKyNlbmRpZgotICAgcmV0dXJuIGdkYl9weW1v ZHVsZV9hZGRvYmplY3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIsCi0gCQkJCSAoUHlPYmplY3QgKikg JnZhbHVlX29iamVjdF90eXBlKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24u YyBiL2dkYi9weXRob24vcHl0aG9uLmMKLWluZGV4IDMzN2MxNzAuLjg3M2MwZGMgMTAwNjQ0Ci0t LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCi0rKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCi1AQCAt NjcsNiArNjcsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2RicHlfc2hvdWxkX3ByaW50X3N0YWNr ID0gcHl0aG9uX2V4Y3BfbWVzc2FnZTsKLSAjaW5jbHVkZSAibGluZXNwZWMuaCIKLSAjaW5jbHVk ZSAic291cmNlLmgiCi0gI2luY2x1ZGUgInZlcnNpb24uaCIKLSsjaW5jbHVkZSAiaW5mZXJpb3Iu aCIKLSsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInRhcmdldC5oIgotICNpbmNs dWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLUBAIC0xMTE2LDYgKzEx MTgsNTYgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCi0gCi0gLyogUmV0dXJuIHRoZSBjdXJy ZW50IFByb2dzcGFjZS4KLSAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KLSsvKiBUcnVlIGlm ICdnZGIgLVAnIHdhcyB1c2VkLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgcnVu bmluZ19weXRob25fc2NyaXB0OwotKwotKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBh IGNhbGwgdG8gJ2dkYi5jbGknLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgaW5f Y2xpOwotKwotKy8qIEVudGVyIHRoZSBjb21tYW5kIGxvb3AuICAqLwotKwotK3N0YXRpYyBQeU9i amVjdCAqCi0rZ2RicHlfY2xpIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIp Ci0rewotKyAgaWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2NsaSkKLSsgICAgcmV0 dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGludm9rZSBDTEkg cmVjdXJzaXZlbHkiKTsKLSsgIAotKyAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKGN1cnJlbnRf dWlvdXQpKQotKyAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3IsIF8o IkNhbm5vdCBpbnZva2UgQ0xJIGZyb20gTUkuIikpOwotKwotKyAgaW5fY2xpID0gMTsKLSsgIGN1 cnJlbnRfaW50ZXJwX2NvbW1hbmRfbG9vcCAoKTsKLSsgIGluX2NsaSA9IDA7Ci0rCi0rICBQeV9S RVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyogU2V0IHVwIHRoZSBQeXRob24gYXJndW1lbnQgdmVjdG9y IGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4gIFRoaXMgaXMKLSsgICB1c2VkIHRvIGltcGxlbWVudCAn Z2RiIC1QJy4gICovCi0rCi0rdm9pZAotK3J1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCi0rewotKyAgRklMRSAqaW5wdXQ7Ci0rCi0rICAvKiBXZSBuZXZlciBmcmVlIHRo aXMsIHNpbmNlIHdlIHBsYW4gdG8gZXhpdCBhdCB0aGUgZW5kLiAgKi8KLSsgIGVuc3VyZV9weXRo b25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsgIHJ1 bm5pbmdfcHl0aG9uX3NjcmlwdCA9IDE7Ci0rICBQeVN5c19TZXRBcmd2IChhcmdjIC0gMSwgYXJn diArIDEpOwotKyAgaW5wdXQgPSBmb3BlbiAoYXJndlswXSwgInIiKTsKLSsgIGlmICghIGlucHV0 KQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiY291bGQgbm90IG9wZW4gJXM6ICVz XG4iLCBhcmd2WzBdLCBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAg fQotKyAgUHlSdW5fU2ltcGxlRmlsZSAoaW5wdXQsIGFyZ3ZbMF0pOwotKyAgZmNsb3NlIChpbnB1 dCk7Ci0rICBleGl0ICgwKTsKLSt9Ci0rCi0rDAotKwotIAotIHN0YXRpYyBQeU9iamVjdCAqCi0g Z2RicHlfZ2V0X2N1cnJlbnRfcHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3Qg KnVudXNlZDIpCi1AQCAtMTgzMSw2ICsxODgzLDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1l dGhvZHNbXSA9Ci0gRXZhbHVhdGUgY29tbWFuZCwgYSBzdHJpbmcsIGFzIGEgZ2RiIENMSSBjb21t YW5kLiAgT3B0aW9uYWxseSByZXR1cm5zXG5cCi0gYSBQeXRob24gU3RyaW5nIGNvbnRhaW5pbmcg dGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCBpZiB0b19zdHJpbmcgaXNcblwKLSBzZXQgdG8gVHJ1 ZS4iIH0sCi0rICB7ICJjbGkiLCBnZGJweV9jbGksIE1FVEhfTk9BUkdTLAotKyAgICAiRW50ZXIg dGhlIGdkYiBDTEkiIH0sCi0gICB7ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhf VkFSQVJHUywKLSAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKLSAKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAotaW5k ZXggOTZiZjdjMi4uNzlhZDZjOSAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLmgKLSsr KyBiL2dkYi9weXRob24vcHl0aG9uLmgKLUBAIC0xMDgsNiArMTA4LDggQEAgdm9pZCBldmFsX3B5 dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKLSAKLSB2 b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFt ZSk7Ci0gCi0rdm9pZCBydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK LSsKLSBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09S RV9BRERSIGFkZHJlc3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJl Y3Vyc2UsCi1kaWZmIC0tZ2l0IGEvZ2RiL3N0YWNrLmMgYi9nZGIvc3RhY2suYwotaW5kZXggMzE0 ZTRkYS4uZDA3YTljMiAxMDA2NDQKLS0tLSBhL2dkYi9zdGFjay5jCi0rKysgYi9nZGIvc3RhY2su YwotQEAgLTUzNyw2ICs1MzcsMTAgQEAgcHJpbnRfZnJhbWVfYXJncyAoc3RydWN0IHN5bWJvbCAq ZnVuYywgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotICAgc3RiID0gbWVtX2ZpbGVvcGVuICgp OwotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlIChzdGIpOwotIAot KyAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZTkFN SUMuICAqLwotKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7Ci0rICBz ZWxlY3RfZnJhbWUgKGZyYW1lKTsKLSsKLSAgIGlmIChmdW5jKQotICAgICB7Ci0gICAgICAgc3Ry dWN0IGJsb2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFkYS9wYWNrZWRfYXJyYXkuZXhwCi1pbmRleCBhZmMxNDc1Li43ZTk0YzQ5IDEwMDY0NAotLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCi1AQCAtNTYsNSArNTYsMTEgQEAgZ2RiX3Rl c3RfbXVsdGlwbGUgIiR0ZXN0IiAiJHRlc3QiIHsKLSAgICAgICAgICMgYXJlLiAgT2JzZXJ2ZWQg d2l0aCAoRlNGIEdOVSBBZGEgNC41LjMgMjAxMTAxMjQpLgotICAgICAgICAgeGZhaWwgJHRlc3QK LSAgICAgfQotKyAgICAtcmUgIj0gXFwoXFwpXFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgewotKwkj IGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSByZXNvbHZlcyBpdCBhcyBhIGR5bmFtaWMgdHlwZSBy ZXNvbHZlZCBhcyBhbgotKwkjIGVtcHR5IGFycmF5IFswLi4tMV0uCi0rCSMgRFdfQVRfdXBwZXJf Ym91bmQgOiAoRFdfT1BfZmJyZWc6IC00ODsgRFdfT1BfZGVyZWYpCi0rICAgICAgICB4ZmFpbCAk dGVzdAotKyAgICB9Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXZsYS1wb2ludGVyLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXItZm9vLlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44 M2ZhYWY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtcG9pbnRlci1mb28uUwotQEAgLTAsMCArMSw0NTcgQEAKLSsJLmZpbGUJIng4Nl82NC12 bGEtcG9pbnRlci5jIgotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwotKy5M ZGVidWdfYWJicmV2MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCi0rLkxk ZWJ1Z19pbmZvMDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCi0rLkxkZWJ1 Z19saW5lMDoKLSsJLnRleHQKLSsuTHRleHQwOgotKy5nbG9ibCBmb28KLSsJLnR5cGUJZm9vLCBA ZnVuY3Rpb24KLStmb286Ci0rLkxGQjI6Ci0rCS5maWxlIDEgIng4Nl82NC12bGEtcG9pbnRlci5j IgotKwkubG9jIDEgMjIgMAotKwlwdXNocQklcmJwCi0rLkxDRkkwOgotKwltb3ZxCSVyc3AsICVy YnAKLSsuTENGSTE6Ci0rCXN1YnEJJDY0LCAlcnNwCi0rLkxDRkkyOgotKwltb3ZsCSVlZGksIC0z NiglcmJwKQotKwkubG9jIDEgMjIgMAotKwltb3ZxCSVyc3AsICVyYXgKLSsJbW92cQklcmF4LCAt NDgoJXJicCkKLSsJLmxvYyAxIDIzIDAKLSsJbW92bAktMzYoJXJicCksICVlZHgKLSsJbW92c2xx CSVlZHgsJXJheAotKwlzdWJxCSQxLCAlcmF4Ci0rCW1vdnEJJXJheCwgLTI0KCVyYnApCi0rCS5s b2MgMSAyNCAwCi0rCW1vdnNscQklZWR4LCVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJYWRkcQkk MTUsICVyYXgKLSsJc2hycQkkNCwgJXJheAotKwlzYWxxCSQ0LCAlcmF4Ci0rCXN1YnEJJXJheCwg JXJzcAotKwltb3ZxCSVyc3AsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwlh ZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJbW92cQkl cmF4LCAtNTYoJXJicCkKLSsJbW92cQktNTYoJXJicCksICVyYXgKLSsJbW92cQklcmF4LCAtMTYo JXJicCkKLSsJLmxvYyAxIDI3IDAKLSsJbW92bAkkMCwgLTQoJXJicCkKLSsJam1wCS5MMgotKy5M MzoKLSsJLmxvYyAxIDI4IDAKLSsJbW92bAktNCglcmJwKSwgJWVzaQotKwltb3ZsCS00KCVyYnAp LCAlZWF4Ci0rCW1vdmwJJWVheCwgJWVjeAotKwltb3ZxCS0xNiglcmJwKSwgJXJkeAotKwltb3Zz bHEJJWVzaSwlcmF4Ci0rCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQotKwkubG9jIDEgMjcgMAotKwlh ZGRsCSQxLCAtNCglcmJwKQotKy5MMjoKLSsJbW92bAktNCglcmJwKSwgJWVheAotKwljbXBsCS0z NiglcmJwKSwgJWVheAotKwlqbAkuTDMKLSsJLmxvYyAxIDMwIDAKLSsJLmdsb2JsCWJyZWFrX2hl cmUKLSticmVha19oZXJlOgotKwltb3ZxCS0xNiglcmJwKSwgJXJheAotKwltb3ZiCSQwLCAoJXJh eCkKLSsJbW92cQktNDgoJXJicCksICVyc3AKLSsJLmxvYyAxIDMxIDAKLSsJbGVhdmUKLSsJcmV0 Ci0rLkxGRTI6Ci0rCS5zaXplCWZvbywgLi1mb28KLSsJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIi LEBwcm9nYml0cwotKy5MZnJhbWUwOgotKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKLSsuTFNDSUUw OgotKwkubG9uZwkweGZmZmZmZmZmCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSIiCi0rCS51bGVi MTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS5ieXRlCTB4YwotKwkudWxl YjEyOCAweDcKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4OTAKLSsJLnVsZWIxMjggMHgxCi0r CS5hbGlnbiA4Ci0rLkxFQ0lFMDoKLSsuTFNGREUwOgotKwkubG9uZwkuTEVGREUwLS5MQVNGREUw Ci0rLkxBU0ZERTA6Ci0rCS5sb25nCS5MZnJhbWUwCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5M RkUyLS5MRkIyCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhl Ci0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJ MHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4Ngot KwkuYWxpZ24gOAotKy5MRUZERTA6Ci0rCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRz Ci0rLkxmcmFtZTE6Ci0rCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQotKy5MU0NJRTE6Ci0rCS5sb25n CTB4MAotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkielIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xl YjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDMKLSsJLmJ5 dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwku dWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUxOgotKy5MU0ZERTE6Ci0rCS5sb25nCS5M RUZERTEtLkxBU0ZERTEKLSsuTEFTRkRFMToKLSsJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKLSsJ LmxvbmcJLkxGQjIKLSsJLmxvbmcJLkxGRTItLkxGQjIKLSsJLnVsZWIxMjggMHgwCi0rCS5ieXRl CTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAK LSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJ MS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZE RTE6Ci0rCS50ZXh0Ci0rLkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2di aXRzCi0rLkxkZWJ1Z19sb2MwOgotKy5MTFNUMDoKLSsJLnF1YWQJLkxGQjItLkx0ZXh0MAotKwku cXVhZAkuTENGSTAtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIx MjggOAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwku dmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJLkxDRkkxLS5M dGV4dDAKLSsJLnF1YWQJLkxGRTItLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzYK LSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVi dWdfaW5mbwotKy5MZGVidWdfcmVsYXRpdmU6Ci0rCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1 Z19zdGFydAotKy5MZGVidWdfc3RhcnQ6Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19h YmJyZXYwCi0rCS5ieXRlCTB4OAotKwkudWxlYjEyOCAweDEKLSsJLmxvbmcJLkxBU0YyCi0rCS5i eXRlCTB4MQotKwkubG9uZwkuTEFTRjMKLSsJLmxvbmcJLkxBU0Y0Ci0rCS5xdWFkCS5MdGV4dDAK LSsJLnF1YWQJLkxldGV4dDAKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAotKwkudWxlYjEyOCAweDIK LSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJImZvbyIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTYK LSsJLmJ5dGUJMHgxCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyCi0rCS5sb25nCS5MTFNU MAotKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQotKwkudWxlYjEyOCAweDMK LSsJLmxvbmcJLkxBU0Y1Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE1Ci0rCS5sb25nCS5MdHlw ZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5z bGViMTI4IC01MgotKy5MdGFnX3BvaW50ZXI6Ci0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDgJ LyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdf aW5mbwkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1 IChEV19UQUdfdmFyaWFibGUpICovCi0rCS5sb25nCS5MQVNGMAotKwkuYnl0ZQkweDEKLSsJLmJ5 dGUJMHgxOAotKyNpZiAxCi0rCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVidWdfaW5mbwotKyNl bHNlCi0rCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAg Ki8KLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCi0rI2VuZGlmCi0rCS8q IERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMHgzCi0r CS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTMyCi0rI2lmIDAKLSsJLmJ5dGUJMHg2CS8qIERXX09Q X2RlcmVmICovCi0rI2Vsc2UKLSsJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KLSsjZW5kaWYK LSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjgg MHg2Ci0rCS5zdHJpbmcJImkiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE5Ci0rCS5sb25nCS5M dHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0r CS5zbGViMTI4IC0yMAotKwkuYnl0ZQkweDAKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOCAweDcK LSsJLmJ5dGUJMHg0Ci0rCS5ieXRlCTB4NQotKwkuc3RyaW5nCSJpbnQiCi0rLkx0YWdfYXJyYXlf dHlwZToKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90 eXBlKSAqLwotKwkubG9uZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmxvbmcJ Lkx0eXBlX3Vsb25nIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JN X3JlZjQgKi8KLSsxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3Rh cnQgKi8KLSsJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KLSszOgotKwkuYnl0ZQkweDk3CS8q IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KLSsjaWYgMQotKwkuYnl0ZQkweDYJLyogRFdf T1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLwotKyNlbmRp ZgotKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJ LnVsZWIxMjggMHg5Ci0rCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBE V19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJ LnNsZWIxMjggLTQwCi0rCS5ieXRlCTB4NgotKwkuYnl0ZQkweDAKLSsuTHR5cGVfdWxvbmc6Ci0r CS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHg3Ci0rLkx0eXBlX2NoYXI6Ci0r CS51bGViMTI4IDB4YgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHg2Ci0rCS5sb25nCS5MQVNGMQot KwkuYnl0ZQkweDAKLSsuTGRlYnVnX2VuZDoKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKwku dWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgy NQotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweGIKLSsJLnVs ZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDFiCi0rCS51bGViMTI4IDB4 ZQotKwkudWxlYjEyOCAweDExCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEyCi0rCS51 bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEwCi0rCS51bGViMTI4IDB4NgotKwkuYnl0ZQkweDAK LSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweDJlCi0rCS5ieXRlCTB4 MQotKwkudWxlYjEyOCAweDNmCi0rCS51bGViMTI4IDB4YwotKwkudWxlYjEyOCAweDMKLSsJLnVs ZWIxMjggMHg4Ci0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4 M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MjcKLSsJLnVsZWIxMjggMHhjCi0rCS51 bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjgg MHgxCi0rCS51bGViMTI4IDB4NDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MQotKwku dWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0r CS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4 ZQotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51 bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjgg MHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4NAkvKiAuTHRhZ19wb2ludGVyIGFiYnJldiAqLwotKwkudWxlYjEyOCAweDBmCS8qIERXX1RB R19wb2ludGVyX3R5cGUgKi8KLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MGIKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NQotKwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkK LSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIx MjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEK LSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHgy NAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEy OCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0r CS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6 IDggKERXX1RBR19hcnJheV90eXBlKSAqLwotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxCi0r CS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZP Uk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLwotKwkudWxlYjEy OCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFf bG9jYXRpb24gKi8KLSsJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg5Ci0rCS51bGViMTI4IDB4MjEKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEz CS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDJmCi0rCS51bGViMTI4IDB4YQotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YQotKwkudWxlYjEyOCAweDI0Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4 M2UKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgz Ci0rCS51bGViMTI4IDB4ZQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot Kwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCi0rCS5sb25nCTB4MTYKLSsJ LnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2luZm8wCi0rCS5sb25nCTB4YTgKLSsJLmxvbmcJ MHgyZAotKwkuc3RyaW5nCSJmb28iCi0rCS5sb25nCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfYXJh bmdlcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgyYwotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5M ZGVidWdfaW5mbzAKLSsJLmJ5dGUJMHg4Ci0rCS5ieXRlCTB4MAotKwkudmFsdWUJMHgwCi0rCS52 YWx1ZQkweDAKLSsJLnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCi0rCS5x dWFkCTB4MAotKwkucXVhZAkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0 cywxCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJhcnJheSIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJInNp emUiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsuTEFTRjY6 Ci0rCS5zdHJpbmcJImFycmF5X3QiCi0rLkxBU0YxOgotKwkuc3RyaW5nCSJjaGFyIgotKy5MQVNG NDoKLSsJLnN0cmluZwkiZ2RiLmFyY2giCi0rLkxBU0YyOgotKwkuc3RyaW5nCSJHTlUgQyA0LjMu MiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKLSsJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4y IDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ss IiIsQHByb2diaXRzCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZTJjOGY3Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5j Ci1AQCAtMCwwICsxLDQzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rI2lmIDAKLSsKLSt2b2lkCi0rZm9vIChpbnQgc2l6ZSkKLSt7Ci0rICB0eXBlZGVmIGNo YXIgYXJyYXlfdFtzaXplXTsKLSsgIGFycmF5X3QgYXJyYXk7Ci0rICBpbnQgaTsKLSsKLSsgIGZv ciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCi0rICAgIGFycmF5W2ldID0gaTsKLSsKLSsgIGFycmF5 WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwotK30KLSsKLSsjZWxzZQotKwotK2ludAotK21haW4g KHZvaWQpCi0rewotKyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30K LSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRl ci5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kMjQzY2YxCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRl ci5leHAKLUBAIC0wLDAgKzEsNjYgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStp ZiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0gdGhlbiB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5n IG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0IG1hZGUgb25seSBmb3Ig eDg2XzY0LiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXBv aW50ZXIKLStzZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUwotK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 Ci0rc2V0IGJpbm9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubwot K2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAi JHtiaW5vYmpmaWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIg IiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVk ICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1 bnRlc3RlZCB4ODZfNjQtdmxhLXBvaW50ZXIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9i cmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJi cmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChc XCpcXClcXFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAi cHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0 eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxc WzI2XFxcXSIgImZpcnN0OiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXki ICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlICphcnJheSIKLSsKLStnZGJf dGVzdCAicCAoKmFycmF5KVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgotK2dkYl90 ZXN0ICJwICgqYXJyYXkpXFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCi0rZ2RiX3Rl c3QgInAgKCphcnJheSlcWzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAzJyIKLStnZGJfdGVz dCAicCAoKmFycmF5KVxbNFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQnIgotKwotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMg YXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3 aGF0aXMgYXJyYXkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwq XFwpXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgIndoYXRp cyAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiB3aGF0aXMgKmFycmF5 IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vj b25kOiBwdHlwZSAqYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94 ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtdHlwZWRlZi1mb28uUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY2 ZjdhMzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLWZvby5TCi1AQCAtMCwwICsxLDQ1NSBAQAotKwkuZmlsZQkieDg2XzY0LXZs YS10eXBlZGVmLmMiCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxk ZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKLSsuTGRl YnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVn X2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6Ci0rLmdsb2JsIGZvbwotKwkudHlwZQlmb28sIEBm dW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJLmZpbGUgMSAieDg2XzY0LXZsYS10eXBlZGVmLmMi Ci0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVyYnAKLSsuTENGSTA6Ci0rCW1vdnEJJXJzcCwgJXJi cAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVyc3AKLSsuTENGSTI6Ci0rCW1vdmwJJWVkaSwgLTM2 KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAotKwltb3ZxCSVyYXgsIC00 OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwltb3ZsCS0zNiglcmJwKSwgJWVkeAotKwltb3ZzbHEJ JWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgKLSsJbW92cQklcmF4LCAtMjQoJXJicCkKLSsJLmxv YyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlhZGRxCSQx NSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJc3VicQklcmF4LCAl cnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCWFk ZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJheAotKwltb3ZxCSVy YXgsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwltb3ZxCSVyYXgsIC0xNigl cmJwKQotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtNCglcmJwKQotKwlqbXAJLkwyCi0rLkwz OgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00KCVyYnApLCAlZXNpCi0rCW1vdmwJLTQoJXJicCks ICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmR4Ci0rCW1vdnNs cQklZXNpLCVyYXgKLSsJbW92YgklY2wsICglcmR4LCVyYXgpCi0rCS5sb2MgMSAyNyAwCi0rCWFk ZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCWNtcGwJLTM2 KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwkubG9jIDEgMzAgMAotKwkuZ2xvYmwJYnJlYWtfaGVy ZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmF4Ci0rCW1vdmIJJDAsICglcmF4 KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAotKwkubG9jIDEgMzEgMAotKwlsZWF2ZQotKwlyZXQK LSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZvbwotKwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIs QHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5sb25nCS5MRUNJRTAtLkxTQ0lFMAotKy5MU0NJRTA6 Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJIiIKLSsJLnVsZWIx MjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLmJ5dGUJMHhjCi0rCS51bGVi MTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJ LmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5MRUZERTAtLkxBU0ZERTAK LSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFtZTAKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxG RTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUK LSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkw eDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0r CS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMK LSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi0rLkxTQ0lFMToKLSsJLmxvbmcJ MHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJ6UiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGVi MTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRlCTB4MwotKwkuYnl0 ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51 bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJRTE6Ci0rLkxTRkRFMToKLSsJLmxvbmcJLkxF RkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgotKwkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQotKwku bG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0uTEZCMgotKwkudWxlYjEyOCAweDAKLSsJLmJ5dGUJ MHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAot KwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkx LS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRF MToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2Jp dHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTEZCMi0uTHRleHQwCi0rCS5x dWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEy OCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCi0rCS52 YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkuTENGSTEtLkx0 ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3Ngot Kwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1 Z19pbmZvCi0rCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAotKy5MZGVidWdfc3Rh cnQ6Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCi0rCS5ieXRlCTB4OAot KwkudWxlYjEyOCAweDEKLSsJLmxvbmcJLkxBU0YyCi0rCS5ieXRlCTB4MQotKwkubG9uZwkuTEFT RjMKLSsJLmxvbmcJLkxBU0Y0Ci0rCS5xdWFkCS5MdGV4dDAKLSsJLnF1YWQJLkxldGV4dDAKLSsJ LmxvbmcJLkxkZWJ1Z19saW5lMAotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHgxCi0rCS5zdHJp bmcJImZvbyIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTYKLSsJLmJ5dGUJMHgxCi0rCS5xdWFk CS5MRkIyCi0rCS5xdWFkCS5MRkUyCi0rCS5sb25nCS5MTFNUMAotKwkubG9uZwkweDgzCi0rCS51 bGViMTI4IDB4MwotKwkubG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTUKLSsJ LmxvbmcJMHg4MwotKwkuYnl0ZQkweDIKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtNTIKLSsu THRhZ190eXBlZGVmOgotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxBU0Y2Ci0rCS5ieXRlCTB4 MQotKwkuYnl0ZQkweDE3Ci0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwot KwkudWxlYjEyOCAweDUJLyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3ZhcmlhYmxlKSAqLwot KwkubG9uZwkuTEFTRjAKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTgKLSsjaWYgMQotKwkubG9u ZwkuTHRhZ190eXBlZGVmIC0gLmRlYnVnX2luZm8KLSsjZWxzZQotKwkvKiBEZWJ1Z2dpbmcgb25s eTogU2tpcCB0aGUgdHlwZWRlZiBpbmRpcmVjdGlvbi4gICovCi0rCS5sb25nCS5MdGFnX2FycmF5 X3R5cGUgLSAuZGVidWdfaW5mbwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9S TV9ibG9jazE6IHN0YXJ0ICovCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4 IC0zMgotKyNpZiAwCi0rCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKyNlbHNlCi0rCS5i eXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCi0rI2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9uOiBE V19GT1JNX2Jsb2NrMTogZW5kICovCi0rCS51bGViMTI4IDB4NgotKwkuc3RyaW5nCSJpIgotKwku Ynl0ZQkweDEKLSsJLmJ5dGUJMHgxOQotKwkubG9uZwkweDgzCi0rCS5ieXRlCTB4MgotKwkuYnl0 ZQkweDkxCi0rCS5zbGViMTI4IC0yMAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg3Ci0rCS5i eXRlCTB4NAotKwkuYnl0ZQkweDUKLSsJLnN0cmluZwkiaW50IgotKy5MdGFnX2FycmF5X3R5cGU6 Ci0rCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkg Ki8KLSsJLmxvbmcJMHhhMCArICgyZiAtIDFmKQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQg Ki8KLSsJLmxvbmcJMHg5ZCArICgyZiAtIDFmKQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3Jl ZjQgKi8KLSsxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQg Ki8KLSsJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KLSszOgotKwkuYnl0ZQkweDk3CS8qIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KLSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICov Ci0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwku dWxlYjEyOCAweDkKLSsJLmxvbmcJMHg5ZCArICgyYiAtIDFiKQkvKiBEV19BVF90eXBlOiBEV19G T1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTQwCi0r CS5ieXRlCTB4NgotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwku Ynl0ZQkweDcKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDYKLSsJLmxv bmcJLkxBU0YxCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwkuc2VjdGlvbgkuZGVidWdf YWJicmV2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0rCS5ieXRlCTB4MQotKwku dWxlYjEyOCAweDI1Ci0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MWIKLSsJ LnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4 IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJLnVsZWIxMjggMHg2Ci0r CS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4MmUK LSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4 IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNwotKwkudWxlYjEy OCAweGMKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMgot KwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIx MjggMHgxCi0rCS51bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxl YjEyOCAweDMKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJ LnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwot KwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDB4MTYKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEy OCAweDEzCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51bGVi MTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJ LnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEy OCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4Mgot KwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDYK LSsJLnVsZWIxMjggMHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4 IDB4OAotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0r CS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIx MjggMHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4NwotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEy OCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51bGVi MTI4IDB4MQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0r CS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBEV19B VF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGVi MTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyogRFdf Rk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkK LSsJLnVsZWIxMjggMHgyMQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90 eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4 MmYKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHhhCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgwCi0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJv Z2JpdHMKLSsJLmxvbmcJMHgxNgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAK LSsJLmxvbmcJMHhhOAotKwkubG9uZwkweDJkCi0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJMHgw Ci0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCi0r CS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJ MHgwCi0rCS52YWx1ZQkweDAKLSsJLnZhbHVlCTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5xdWFk CS5MZXRleHQwLS5MdGV4dDAKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgku ZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5Igot Ky5MQVNGNToKLSsJLnN0cmluZwkic2l6ZSIKLSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82NC12 bGEtdHlwZWRlZi5jIgotKy5MQVNGNjoKLSsJLnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6Ci0r CS5zdHJpbmcJImNoYXIiCi0rLkxBU0Y0OgotKwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFTRjI6 Ci0rCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwku aWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5z ZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLmI4MDljNGUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS10eXBlZGVmLmMKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAy MDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWYgMAotKwotK3ZvaWQKLStmb28gKGludCBz aXplKQotK3sKLSsgIHR5cGVkZWYgY2hhciBhcnJheV90W3NpemVdOwotKyAgYXJyYXlfdCBhcnJh eTsKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKLSsgICAgYXJy YXlbaV0gPSBpOwotKwotKyAgYXJyYXlbMF0gPSAwOwkvKiBicmVhay1oZXJlICovCi0rfQotKwot KyNlbHNlCi0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAo NzgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLmIwNTQxMWUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotQEAgLTAsMCArMSw2NCBAQAotKyMgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0aW9uIGFjY2Vzc2Vk IHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50ZXJtZWRpYXRlLgotKwotK2lmICFbaXN0YXJnZXQg Ing4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4ODZfNjQuIgotKyAg ICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlwZWRlZgotK3NldCBz cmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwot K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStzZXQgYmlub2Jq ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCi0raWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9 IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0 ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStn ZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9h ZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHVudGVzdGVkIHg4Nl82 NC12bGEtdHlwZWRlZgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgImJy ZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0r Ci0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRp cyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZc XFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0iICJc XCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxcJFxb MC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFswLTlc XSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxdID0g NCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUi Ci0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25kOiB3 aGF0aXMgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxc Wzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5j Ci1pbmRleCA1OGJlMDhjLi4wNGUzNmNkIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hcnJheWlkeC5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMK LUBAIC0xNyw2ICsxNywxMyBAQAotIAotIGludCBhcnJheVtdID0gezEsIDIsIDMsIDR9OwotIAot KyNpZmRlZiBfX0dOVUNfXwotK3N0cnVjdAotKyAgewotKyAgICBpbnQgYVswXTsKLSsgIH0gdW5i b3VuZDsKLSsjZW5kaWYKLSsKLSBpbnQKLSBtYWluICh2b2lkKQotIHsKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYXJyYXlpZHguZXhwCi1pbmRleCAzNTQ1NGUzLi42MTQ0ZDM2IDEwMDY0NAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYXJyYXlpZHguZXhwCi1AQCAtNDksNCArNDksMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFy cmF5IiBcCi0gICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsy XFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKLSAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0 aCBhcnJheS1pbmRleGVzIG9uIgotIAotLQotK3NldCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAmdW5i b3VuZC5hXFswXF0iCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUg IiA9IDFcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJl ICJObyBzeW1ib2wgXCJ1bmJvdW5kXCIgaW4gY3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKLSsgICAgfQotK30KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNz LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZWI3Yjg1Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRy ZXNzLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLStzdHJ1Y3QgewotKyAgaW50IGZpZWxkOwotK30gc3RhdGljc3RydWN0ID0geyAx IH07Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmll bGQtYWRkcmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVs ZC1hZGRyZXNzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMzYzll OTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwt dmFyLWZpZWxkLWFkZHJlc3MuZXhwCi1AQCAtMCwwICsxLDI2IEBACi0rIyBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3QgaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MKLStzZXQg YmluZmlsZSAke3Rlc3R9LngKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHt0ZXN0fS5jIiAiW3N0YW5kYXJkX291dHB1dF9maWxlICR7YmluZmlsZX1dIiBvYmplY3Qg e2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3Qg cHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUK LSsKLStnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1Y3QgPSBzdGF0aWNzdHJ1Y3R9Ci0rZ2RiX3Rlc3Qg e3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS92bGEtZnJhbWUuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41NzUwZjY4Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5jCi1AQCAtMCwwICsx LDMxIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1 ZGUgPHN0cmluZy5oPgotKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7 Ci0rICBjaGFyIHNbMiArIGFyZ2NdOwotKyAgdm9pZCAoKmYpIChjaGFyICopID0gMDsKLSsKLSsg IG1lbXNldCAocywgMCwgc2l6ZW9mIChzKSk7Ci0rICBzWzBdID0gJ1gnOwotKwotKyAgZiAocyk7 Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEtZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuZXhwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDc3MzZjNwotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuZXhwCi1AQCAtMCwwICsxLDM4 IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0ZmlsZSB2bGEtZnJh bWUKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7ZXhlY3V0YWJsZX1dIH0gewotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQg dGVzdCAiY29udGludWUiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAt cmUgIkNvbnRpbnVpbmdcXC5cclxuXHJcblByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1Ys IFNlZ21lbnRhdGlvbiBmYXVsdFxcLlxyXG4weDArIGluIFxcP1xcPyBcXChcXClcclxuJGdkYl9w cm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJcclxuJGdkYl9wcm9t cHQgJCIgewotKwl1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKLSsJcmV0dXJuCi0rICAgIH0KLSt9 Ci0rCi0rZ2RiX3Rlc3QgImJ0IGZ1bGwiICJcclxuICtzID0gXCJYXFxcXDAwMFwiXHJcbi4qIgot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uYzVkNWVlMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwotQEAgLTAsMCArMSwzMCBAQAotKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0 IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStp bnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgaW50IGFycmF5W2FyZ2Nd OwotKwotKyAgYXJyYXlbMF0gPSBhcnJheVswXTsKLSsKLSsgIGFib3J0ICgpOwotKwotKyAgcmV0 dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJm bG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI0YTYwOGYKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAotQEAgLTAsMCArMSwx MDkgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFdlIGNvdWxkIGNyYXNoIGlu OgotKyMgIzAgIGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGJsPTB4MCkgYXQgLi4vLi4vZ2RiL2Js b2NrLmM6NjkKLSsjICMxICBpbiBkd2FyZl9ibG9ja19nZXRfZnJhbWVfYmFzZSAoLi4uKSBhdCAu Li8uLi9nZGIvZHdhcmYyYmxvY2suYzo5NwotKyMgICA5NwkgIGZyYW1lZnVuYyA9IGJsb2NrX2xp bmthZ2VfZnVuY3Rpb24gKGdldF9mcmFtZV9ibG9jayAoZnJhbWUsIE5VTEwpKTsKLSsjICMyICBp biBleGVjdXRlX3N0YWNrX29wICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJleHByLmM6NDk2Ci0r IyAjMyAgaW4gZHdhcmZfYmxvY2tfZXhlY19jb3JlICgpIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9j ay5jOjE1NgotKyMgIzQgIGR3YXJmX2Jsb2NrX2V4ZWMgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJm MmJsb2NrLmM6MjA2Ci0rIyAjNSAgaW4gcmFuZ2VfdHlwZV9jb3VudF9ib3VuZF9pbnRlcm5hbCAo Li4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMuYzoxNDMwCi0rIyAjNiAgaW4gY3JlYXRlX2FycmF5 X3R5cGUgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6ODQwCi0rIyAuLi4KLSsjICMyMSBp biBwc3ltdGFiX3RvX3N5bXRhYiAoLi4uKSBhdCAuLi8uLi9nZGIvc3ltZmlsZS5jOjI5MgotKyMg Li4uCi0rIyAjMjkgaW4gYmFja3RyYWNlX2NvbW1hbmRfMSAoKSBhdCAuLi8uLi9nZGIvc3RhY2su YzoxMjczCi0rCi0rc2V0IHRlc3RmaWxlIHZsYS1vdmVyZmxvdwotK3NldCBzaGZpbGUgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIuc2gKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IGYgW29w ZW4gInxnZXRjb25mIFBBR0VTSVpFIiAiciJdCi0rZ2V0cyAkZiBwYWdlc2l6ZQotK2Nsb3NlICRm Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IHBpZF9vZl9nZGIgW2V4cF9w aWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxlaWRdXQotKwotK2lmIHsgW3J1bnRvX21haW5dIDwg MCB9IHsKLSsgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93Ci0rICAgIHJldHVybiAtMQotK30KLSsK LSsjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ugc3RheSBhdCBtYWluLgotKwotK3By b2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKLSsgICAgZ2xvYmFsIHBpZF9vZl9nZGIgcGFnZXNp emUKLSsgICAgc2V0IGZkIFtvcGVuICIvcHJvYy8kcGlkX29mX2dkYi9zdGF0bSJdCi0rICAgIGdl dHMgJGZkIGxpbmUKLSsgICAgY2xvc2UgJGZkCi0rICAgICMgbnVtYmVyIG9mIHBhZ2VzIG9mIHZp cnR1YWwgbWVtb3J5Ci0rICAgIHNjYW4gJGxpbmUgIiVkIiBkcnMKLSsgICAgcmV0dXJuICRkcnMK LSt9Ci0rCi0rc2V0IHBhZ2VzX2ZvdW5kIFttZW1vcnlfdl9wYWdlc19nZXRdCi0rCi0rIyBzMzkw eCB3aXRoIGdsaWJjLWRlYnVnaW5mby5zMzkweCBpbnN0YWxsZWQgdXNlZCBhcHByb3guIDE2TUIu Ci0rc2V0IG1iX3Jlc2VydmUgNDAKLSt2ZXJib3NlIC1sb2cgInBhZ2VzX2ZvdW5kID0gJHBhZ2Vz X2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jlc2VydmUiCi0rc2V0IGtiX2ZvdW5kIFtleHByICRw YWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEwMjRdCi0rc2V0IGtiX3Blcm1pdCBbZXhwciAka2Jf Zm91bmQgKyAxICogMTAyNCArICRtYl9yZXNlcnZlICogMTAyNF0KLSt2ZXJib3NlIC1sb2cgImti X2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJtaXQgPSAka2JfcGVybWl0IgotKwotKyMgQ3JlYXRl IHRoZSB1bGltaXQgd3JhcHBlci4KLStzZXQgZiBbb3BlbiAkc2hmaWxlICJ3Il0KLStwdXRzICRm ICIjISAvYmluL3NoIgotK3B1dHMgJGYgInVsaW1pdCAtdiAka2JfcGVybWl0IgotK3B1dHMgJGYg ImV4ZWMgJEdEQiBcIlwkQFwiIgotK2Nsb3NlICRmCi0rcmVtb3RlX2V4ZWMgaG9zdCAiY2htb2Qg K3ggJHNoZmlsZSIKLSsKLStnZGJfZXhpdAotK3NldCBHREJvbGQgJEdEQgotK3NldCBHREIgIiRz aGZpbGUiCi0rZ2RiX3N0YXJ0Ci0rc2V0IEdEQiAkR0RCb2xkCi0rCi0rZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK3NldCBwaWRf b2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3QgZmlsZWlkXV0KLSsKLSsjIENoZWNr IHRoZSBzaXplIGFnYWluIGFmdGVyIHRoZSBzZWNvbmQgcnVuLgotKyMgV2UgbXVzdCBub3Qgc3Rv cCBpbiBtYWluIGFzIGl0IHdvdWxkIGNhY2hlIGBhcnJheScgYW5kIG5ldmVyIGNyYXNoIGxhdGVy LgotKwotK2dkYl9ydW5fY21kCi0rCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCBiZWZvcmUgYWJv cnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAyNF0iCi0r Ci0rZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0FCUlQsIEFib3J0ZWQu LioiICJFbnRlciBhYm9ydCgpIgotKwotK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgaW4gYWJvcnQo KSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAyNF0iCi0rCi0r IyBgYWJvcnQnIGNhbiBnZXQgZXhwcmVzc2VkIGFzIGAqX19HSV9hYm9ydCcuCi0rZ2RiX3Rlc3Qg ImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4gXFwoLioiICJCYWNrdHJhY2UgYWZ0 ZXIgYWJvcnQoKSIKLSsKLSt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFmdGVyIGFib3J0 KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTFmM2Vk MQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYwotQEAg LTAsMCArMSw1NSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot KyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSt2b2lkCi0rbWFya2VyICh2b2lkKQotK3sKLSt9Ci0r Ci0rdm9pZAotK2JhciAoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50IHNpemUpCi0rewot KyAgbWVtc2V0IChhLCAnMScsIHNpemUpOwotKyAgbWVtc2V0IChiLCAnMicsIHNpemUpOwotKyAg bWVtc2V0IChjLCAnMycsIDQ4KTsKLSt9Ci0rCi0rdm9pZAotK2ZvbyAoaW50IHNpemUpCi0rewot KyAgY2hhciB0ZW1wMVtzaXplXTsKLSsgIGNoYXIgdGVtcDNbNDhdOwotKwotKyAgdGVtcDFbc2l6 ZSAtIDFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltzaXplXTsKLSsKLSsgICAgYmFy ICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCBzaXplKTsKLSsKLSsgICAgbWFya2VyICgpOwkvKiBicmVh ay1oZXJlICovCi0rICB9Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgZm9vICgy Nik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZGE3Mzc4Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKLUBAIC0wLDAgKzEsNjIg QEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMK LSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhCi0rc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0g ewotKyAgICB1bnRlc3RlZCB2bGEKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAi dHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDEiCi0rZ2Ri X3Rlc3QgIndoYXRpcyB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJmaXJz dDogd2hhdGlzIHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBc XFxbNDhcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVt cDEiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAxIgotK2dkYl90 ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUg dGVtcDIiCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIg ImZpcnN0OiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVw ZWF0cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDEiCi0rZ2RiX3Rlc3QgInAgdGVtcDIi ICIgPSAnMicgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAyIgotK2dkYl90 ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZpcnN0OiBwcmludCB0 ZW1wMyIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStn ZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgInNl Y29uZDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hh ciBcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDIiCi0rZ2RiX3Rlc3QgIndo YXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1w MyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAi c2Vjb25kOiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hh ciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMiIKLStnZGJfdGVzdCAicHR5cGUgdGVt cDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMyIKLSsKLStn ZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHBy aW50IHRlbXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDc4IHRpbWVz PiIgInNlY29uZDogcHJpbnQgdGVtcDIiCi0rZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJl cGVhdHMgNDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uYWFjM2JhYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKLUBAIC0wLDAgKzEsMjQ2IEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24g Ki8KLSsKLSsvKiBXZSB3aWxsIGBicmVhayAqbWFpbicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1 Y3Rpb24uICAqLwotKyNkZWZpbmUgbWFpbl9sZW5ndGggMQotKwotKwkuc2VjdGlvbgkuZGF0YQot K3ZhcmRhdGE6Ci0rCS8qIFNlZSBEV19PUF9saXQzICsgMSAoMC1iYXNlZCkuICAqLwotKwkuc3Ry aW5nCQkic2Vlbm5vdHNlZW4iCi0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVn aW46Ci0rCS40Ynl0ZQkJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBp bGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVy c2lvbiBudW1iZXIgKi8KLSsJLjRieXRlCQkuTGRlYnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRv IEFiYnJldi4gU2VjdGlvbiAqLwotKwkuYnl0ZQkJNAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0 ZXMpICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19U QUdfY29tcGlsZV91bml0ICovCi0rCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVj ZXIgKi8KLSsJLyogVXNlIEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFt ZSAiIi4gICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KLSsJ LjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS5ieXRlCQltYWluX2xlbmd0aAkJ LyogRFdfQVRfaGlnaF9wYyAqLwotKwotKy5MYXJyYXlfdHlwZToKLSsJLnVsZWIxMjgJMgkJCS8q IEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8KLSsJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1 MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERX X1RBR19zdWJyYW5nZV90eXBlICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4J LyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0r CS40Ynl0ZQkJLkxsZW5fdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0r CS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91 cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8K LSsuTGFycmF5Yl90eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlf dHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUg Ki8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8K LSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS5i eXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLjRieXRlCQkuTGxlbmJfdmFyLS5M Y3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9m IGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVu Y2luZyByZWdpc3Rlci4gICovCi0rLkxhcnJheXJlZ190eXBlOgotKwkudWxlYjEyOAkyCQkJLyog QWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3Ux X2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdf VEFHX3N1YnJhbmdlX3R5cGUgd2l0aCBibG9jayAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBlLS5M Y3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9i b3VuZCAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rMToJ LmJ5dGUJCTB4NTAJCQkvKiBEV19PUF9yZWcwICovCi0rMjoKLSsJLmJ5dGUJCTAJCQkvKiBFbmQg b2YgY2hpbGRyZW4gb2YgZGllICovCi0rCi0rLkx1aW50X3R5cGU6Ci0rCS51bGViMTI4CTQJCQkv KiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBE V19BVF9uYW1lICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRl CQk3CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsKLSsuTGNoYXJfdHlwZToKLSsJLnVsZWIxMjgJ NAkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl9zdHIJ CS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJ LmJ5dGUJCTYJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKy5MbGVuX3ZhcjoKLSsJLnVsZWIx MjgJNQkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KLSsJLmJ5dGUJ CTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFf YmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0 CS8qIERXX0FUX2xvY2F0aW9uICovCi0rCi0rCS8qIG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9y IGJfc3RyaW5nLiAgKi8KLSsuTGxlbmJfdmFyOgotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBE V19UQUdfdmFyaWFibGUgYXJ0aWZpY2lhbCBubyBEV19BVF9sb2NhdGlvbiAqLwotKwkuYnl0ZQkJ MQkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9i ZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RB R192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBE V19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FU X3R5cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5i eXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFk ZHI+ICovCi0rMjoKLSsKLSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4g b3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERX X1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkv KiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBE V19BVF90eXBlICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsx OgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAg IDxhZGRyPiAqLwotKzI6Ci0rCi0rCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5n IHJlZ2lzdGVyLiAgKi8KLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxl IERXX0ZPUk1fc3RyaW5nICovCi0rCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFt ZSAqLwotKwkuNGJ5dGUJCS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBl ICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJ MwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAq LwotKzI6Ci0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxj dTFfZW5kOgotKwotKwkuc2VjdGlvbgkuZGVidWdfbG9jCi0rLkxsb2NsaXN0OgotKy5MbGVuX2xv Y2xpc3Q6Ci0rCS40Ynl0ZQkwCQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MKLSsJLjRi eXRlCW1haW5fbGVuZ3RoCQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MKLSsJLnZhbHVlCTJm LTFmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rMToJLmJ5dGUJMHgzMwkjIERXX09QX2xp dDMKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rMjoKLSsJLnF1YWQJMHgwCSMg TG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQotKwkucXVhZAkweDAJIyBM b2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1QyKQotKwotKwkuc2VjdGlvbiAuZGVi dWdfYWJicmV2Ci0rLkxkZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNv ZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5 dGUJCTB4MQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRf cHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51bGVi MTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVs ZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19B VF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3Ig Ki8KLSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MQkJ CS8qIFRBRzogRFdfVEFHX2FycmF5X3R5cGUgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxk cmVuX3llcyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEy OAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkv KiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5 cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJ CQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8K LSsJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4 YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVy X2JvdW5kICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkv KiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwot KwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4ZQkJCS8qIERX X0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJ LnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyog RFdfQVRfZW5jb2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLwotKwotKwkudWxlYjEyOAk1CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJ MHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRy ZW4gKi8KLSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLnVsZWIx MjgJMHgwYwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRf dHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4 CTB4MDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweDA2CQkJLyogRFdfRk9S TV9kYXRhNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2IGNvZGUgKi8K LSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJ Lyogbm9fY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwku dWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyog RFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51 bGViMTI4CTB4MgkJCS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4CTB4YQkJCS8qIERX X0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29k ZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5ieXRlCQkw eDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZp Y2lhbCAqLwotKwkudWxlYjEyOAkweDBjCQkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4 CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3Jl ZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51 bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRoIGJsb2NrICovCi0rCS5i eXRlCQkweDAJCQkvKiBubyBjaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRf dHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4 CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLwot KwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKy8qIFN0cmluZyB0YWJsZSAqLwotKwkuc2Vj dGlvbiAuZGVidWdfc3RyCi0rLkxwcm9kdWNlcjoKLSsJLnN0cmluZwkJIkdOVSBDIDMuMy4zIgot Ky5MY2hhcl9zdHI6Ci0rCS5zdHJpbmcJCSJjaGFyIgotKy5MdWludF9zdHI6Ci0rCS5zdHJpbmcJ CSJ1bnNpZ25lZCBpbnQiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1ib3VuZC1sb2NsaXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQt bG9jbGlzdC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44MTVlZDkz Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5k LWxvY2xpc3QuZXhwCi1AQCAtMCwwICsxLDU0IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rCi0rIyBUZXN0IHByaW50aW5nIHZhcmlhYmxlIHdpdGggZHluYW1pYyBib3VuZHMgd2hpY2gg cmVmZXJlbmNlIGEgZGlmZmVyZW50Ci0rIyAoYXJ0aWZpY2lhbCBpbiB0aGUgR0NDIGNhc2UpIHZh cmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMgbG9jYXRpb24uCi0rIyBUaGlzIHRlc3Rj YXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0aGUgcmVmZXJlbmNlZCB2YXJpYWJsZToK LSsjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjIKLSsK LSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERX QVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkg dGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0 ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFy Z2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAg JiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwot K3NldCB0ZXN0ZmlsZSBkdzItYm91bmQtbG9jbGlzdAotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9IFtsaXN0ICR7dGVzdGZpbGV9LlMgbWFpbi5j XSB7fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFZlcmlmeSBpdCBiZWhhdmVzIGF0 IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJyYXkgd2l0aG91dCBpbmZlcmlvci4KLSsKLStnZGJfdGVz dCAicCBhX3N0cmluZyIgeyA9IDB4WzAtOWEtZl0rICJzZWVubm90c2VlbiJ9Ci0rZ2RiX3Rlc3Qg InB0eXBlIGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFtcXX0KLSsKLSsjIE5vdCBydW50b19tYWlu IGFzIGR3Mi1ib3VuZC1sb2NsaXN0LlMgaGFuZGxlcyBvbmx5IHRoZSBmaXJzdCBieXRlIG9mIG1h aW4uCi0raWYgIVtydW50byAiKm1haW4iXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJf dGVzdCAicCBhX3N0cmluZyIgeyA9ICJzZWVuIn0KLStnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmci IHt0eXBlID0gY2hhciBcWzRcXX0KLSsKLStnZGJfdGVzdCAicCBiX3N0cmluZyIgeyA9ICgweFsw LTlhLWZdKyApPyJzZWVubm90c2VlbiJ9Ci0rZ2RiX3Rlc3QgInB0eXBlIGJfc3RyaW5nIiB7dHlw ZSA9IGNoYXIgXFtcXX0KLSsKLSsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRpY3RhYmxl IHZhbHVlIC0gdGhlIGFycmF5IHNpemUuCi0rZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJpbmciIHt0 eXBlID0gY2hhciBcWy0/WzAtOV0rXF19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJp cHBlZC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWYwMmQ5MAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5j Ci1AQCAtMCwwICsxLDQyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywKLSsgICBVU0EuICAqLwotKwotKwotKy8qIFRoZSBmdW5jdGlvbiBgZnVuYzEnIHRyYWNl ZCBpbnRvIG11c3QgaGF2ZSBkZWJ1ZyBpbmZvIG9uIG9mZnNldCA+IDA7Ci0rICAgKERXX1VOU05E IChhdHRyKSkuICBUaGlzIGlzIHRoZSByZWFzb24gb2YgYGZ1bmMwJyBleGlzdGVuY2UuICAqLwot KwotK3ZvaWQKLStmdW5jMChpbnQgYSwgaW50IGIpCi0rewotK30KLSsKLSsvKiBgZnVuYzEnIGJl aW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0byBkdW1wLiAgKi8KLSsK LSt2b2lkCi0rZnVuYzEoaW50IGEsIGludCBiKQotK3sKLSsgIGZ1bmMwIChhLGIpOwotK30KLSsK LStpbnQKLSttYWluKHZvaWQpCi0rewotKyAgZnVuYzEgKDEsIDIpOwotKyAgcmV0dXJuIDA7Ci0r fQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xYzZlODRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAotQEAgLTAsMCArMSw3OSBA QAotKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMg Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBNaW5pbWFs IERXQVJGLTIgdW5pdCB0ZXN0Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRh cmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4g MCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLXN0cmlwcGVkIgotK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 LngKLSsKLStyZW1vdGVfZXhlYyBidWlsZCAicm0gLWYgJHtiaW5maWxlfSIKLSsKLSsjIGdldCB0 aGUgdmFsdWUgb2YgZ2NjX2NvbXBpbGVkCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmls ZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1 biBvbiBnY2MgYXMgd2UgdXNlIGFkZGl0aW9uYWxfZmxhZ3M9RklYTUUKLStpZiB7JGdjY19jb21w aWxlZCA9PSAwfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZ2dkYjN9XSAhPSAiIiB9IHsKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK3JlbW90ZV9leGVjIGJ1aWxkICJvYmpjb3B5IC1SIC5kZWJ1Z19sb2MgJHtiaW5m aWxlfSIKLStzZXQgc3RyaXBfb3V0cHV0IFtyZW1vdGVfZXhlYyBidWlsZCAib2JqZHVtcCAtaCAk e2JpbmZpbGV9Il0KLSsKLStzZXQgdGVzdCAic3RyaXBwaW5nIHRlc3QgZmlsZSBwcmVzZXJ2YXRp b24iCi0raWYgWyByZWdleHAgIi5kZWJ1Z19pbmZvICIgJHN0cmlwX291dHB1dF0gIHsKLSsgICAg cGFzcyAiJHRlc3QgKC5kZWJ1Z19pbmZvIHByZXNlcnZlZCkiCi0rfSBlbHNlIHsKLSsgICAgZmFp bCAiJHRlc3QgKC5kZWJ1Z19pbmZvIGdvdCBhbHNvIHN0cmlwcGVkKSIKLSt9Ci0rCi0rc2V0IHRl c3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgZnVuY3Rpb25hbGl0eSIKLStpZiBbIHJlZ2V4cCAiLmRl YnVnX2xvYyAiICRzdHJpcF9vdXRwdXRdICB7Ci0rICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfbG9j IHN0aWxsIHByZXNlbnQpIgotK30gZWxzZSB7Ci0rICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfbG9j IHN0cmlwcGVkKSIKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBGb3Ig QyBwcm9ncmFtcywgInN0YXJ0IiBzaG91bGQgc3RvcCBpbiBtYWluKCkuCi0rCi0rZ2RiX3Rlc3Qg InN0YXJ0IiBcCi0rICAgICAgICAgIi4qbWFpbiBcXChcXCkgYXQgLioiIFwKLSsgICAgICAgICAi c3RhcnQiCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICAgICAgICAiZnVuYy4qIFxcKC4qXFwpIGF0 IC4qIiBcCi0rICAgICAgICAgInN0ZXAiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZmNkZDg0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5T Ci1AQCAtMCwwICsxLDgzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsJLnNlY3Rpb24gLmRlYnVnX2luZm8K LSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAu TGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFy dDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5dGUJLkxhYmJyZXYx X2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkv KiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGViMTI4IDEJCQkJLyog QWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQkiZHcyLXN0cnVjdC1tZW1i ZXItZGF0YS1sb2NhdGlvbi5jXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmFzY2lpCSJHTlUgQyA0 LjMuMlwwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTEJCQkJLyogRFdfQVRfbGFu Z3VhZ2UgKEMpICovCi0rCi0rLkx0eXBlX3VjaGFyOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2 OiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsJLmFzY2lpCQkic29tZV9zdHJ1Y3RcMCIJCS8q IERXX0FUX25hbWUgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX21lbWJl ciAqLwotKwkuYXNjaWkJCSJmaWVsZFwwIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMAkJ CS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIHNvbWVfc3RydWN0ICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9m IGNoaWxkcmVuIG9mIENVICovCi0rCi0rLkxjdTFfZW5kOgotKwotKy8qIEFiYnJldiB0YWJsZSAq LwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEy OAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21w aWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJ MHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJ MHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xh bmd1YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MTMJCQkv KiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4g Ki8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkv KiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2 IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIgKi8KLSsJLmJ5dGUJ CTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDM4 CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHgwYgkJCS8q IERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlv bi5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYzM1MjA5Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1i ZXItZGF0YS1sb2NhdGlvbi5leHAKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGlj aCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGlu ZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1l YWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVy biAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0 aW9uIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgYmluZmlsZSAke3Rlc3RmaWxl fS54Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICJbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtiaW5maWxlfV0iIG9iamVjdCB7bm9kZWJ1Z31d ICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkYmluZmls ZQotKwotK2dkYl90ZXN0ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0 IHNvbWVfc3RydWN0IHtcW1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10eXBlLlMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUwotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjlkYmJmM2MKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCi1AQCAt MCwwICsxLDEyMSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot Ky8qIERlYnVnIGluZm9ybWF0aW9uICovCi0rCi0rCS5zZWN0aW9uCS5kYXRhCi0rdmFyZGF0YToK LSsJLnJlcHQJCTEyOQotKwkuYXNjaWkJCSJ4IgotKwkuZW5kcgotKwkuYXNjaWkJCSJVTlNFRU5c MCIKLSsKLSsJLnNlY3Rpb24JLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLjRieXRlCQku TGN1MV9lbmQgLSAuTGN1MV9zdGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwot Ky5MY3UxX3N0YXJ0OgotKwkuMmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwot KwkuNGJ5dGUJCS5MZGVidWdfYWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9u ICovCi0rCS5ieXRlCQk0CQkJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLyog Q1UgZGllICovCi0rCS51bGViMTI4CTEJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQg Ki8KLSsJLmFzY2lpCQkiR05VIEMgMy4zLjNcMCIJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5i eXRlCQkyCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpIC0gICovCi0rCi0rLkxhcnJheV90eXBlOgot KwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJ CS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJ OAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aG91dCBEV19BVF90eXBlICov Ci0rCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLmJ5dGUJCTEyOAkJCS8q IERXX0FUX3VwcGVyX2JvdW5kICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVu IG9mIGRpZSAqLwotKwotKy5MY2hhcl90eXBlOgotKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBE V19UQUdfYmFzZV90eXBlICovCi0rCS5hc2NpaQkJImNoYXJcMCIJCS8qIERXX0FUX25hbWUgKi8K LSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBEV19B VF9lbmNvZGluZyAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFi bGUgRFdfRk9STV9zdHJpbmcgKi8KLSsJLmFzY2lpCQkibm90eXBlX3N0cmluZ1wwIgkvKiBEV19B VF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5 cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRl CQkzCQkJLyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ ICovCi0rMjoKLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsu TGN1MV9lbmQ6Ci0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGRlYnVnX2FiYnJldjA6 Ci0rCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyog RFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYnl0ZQkJMHgxCQkJLyogaGFzX2NoaWxkcmVuICov Ci0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkweDgJ CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3Vh Z2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwot KwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogVEFH OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuYnl0ZQkJMHgxCQkJLyogRFdfY2hpbGRyZW5feWVz ICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJ CQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJ LmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJl diBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5i eXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9u YW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4 CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JN X2RhdGExICovCi0rCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxl YjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTYJ CQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxl ICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkv KiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0r CS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBE V19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJ LnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIx MjgJOAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3Vi cmFuZ2VfdHlwZSB3aXRob3V0IERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vIGNo aWxkcmVuICovCi0rCS51bGViMTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwku dWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MmYJCQkvKiBE V19BVF91cHBlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10eXBlLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jZWM2NzNjCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuZXhwCi1AQCAt MCwwICsxLDM5IEBACi0rIyBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rbG9hZF9saWIgZHdhcmYu ZXhwCi0rCi0rIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTgw NjkyMAotKyMgcmVhZF9zdWJyYW5nZV90eXBlIDxUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0gVFlQ RV9DT0RFX1ZPSUQ+IHJlaW5pdGlhbGl6YXRpb24KLSsjIG9mIEJBU0VfVFlQRSB3YXMgZG9uZSB0 b28gbGF0ZSwgaXQgYWZmZWN0cyBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0Ci0rIyBzcGVj aWZpZWQgRFdfQVRfdHlwZSwgcHJlc2VudCBvbmx5IGluIFhMRiBwcm9kdWNlZCBjb2RlLgotKwot KyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdB UkYtMiBhbmQgdXNlIGdhcy4KLStpZiB7IVtkd2FyZjJfc3VwcG9ydF19IHsKLSsgICAgcmV0dXJu IDAgIAotK30KLSsKLStzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5cGUKLStzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3NldCBi aW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQotKwotK2lmIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBv YmplY3Qge31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFy dCAkZXhlY3V0YWJsZQotKwotK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3RyaW5nIiB7dHlwZSA9 IGNoYXIgXFsxMjlcXX0KLStnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAiID0gJ3gnIDxyZXBl YXRzIDEyOSB0aW1lcz4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k d2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUu ZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDdiOGJlYQotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhw Ci1AQCAtMCwwICsxLDQyIEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIyAKLSsjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT QS4gIAotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBn ZGIgdGVzdHN1aXRlLiAgQXJyYXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKLSsjIHNwZWNp ZmllZCBpbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBp bnN0ZWFkLgotKyMgT3JpZ2luYWwgcHJvYmxlbToKLSsjIChnZGIpIHAgYzQwcHQoMSkKLSsjICQx ID0gJzAtaGVsbG8nLCAnICcgPHJlcGVhdHMgMzMgdGltZXM+Ci0rIyAoZ2RiKSBwIGM0MHB0KDIp Ci0rIyB3YXJuaW5nOiBGb3J0cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBl bGVtZW50IHNpemUKLSsKLStzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCi0rc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uZjkwCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxl fS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7Ci0rICAgIHJldHVy biAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKmJyZWFrLWhlcmUuKiIKLStnZGJf dGVzdCAicCBjNDBwdCgxKSIgIiA9ICcwLWhlbGxvLioiCi0rZ2RiX3Rlc3QgInAgYzQwcHQoMiki ICIgPSAnMS1oZWxsby4qIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHdhcmYtc3RyaWRlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRl LmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU0OTJiM2EKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5 MAotQEAgLTAsMCArMSw0MCBAQAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT QS4KLSshCi0rISBGaWxlIHdyaXR0ZW4gYnkgQWxhbiBNYXRzdW9rYS4KLSsKLStwcm9ncmFtIHJl cHJvCi0rCi0rICB0eXBlIHNtYWxsX3N0cmlkZQotKyAgICAgY2hhcmFjdGVyKjQwIGxvbmdfc3Ry aW5nCi0rICAgICBpbnRlZ2VyICAgICAgc21hbGxfcGFkCi0rICBlbmQgdHlwZSBzbWFsbF9zdHJp ZGUKLSsKLSsgIHR5cGUoc21hbGxfc3RyaWRlKSwgZGltZW5zaW9uICgyMCksIHRhcmdldCA6OiB1 bnBsZWFzYW50Ci0rICBjaGFyYWN0ZXIqNDAsIHBvaW50ZXIsIGRpbWVuc2lvbig6KTo6IGM0MHB0 Ci0rCi0rICBpbnRlZ2VyIGkKLSsKLSsgIGRvIGkgPSAwLDE5Ci0rICAgICB1bnBsZWFzYW50KGkr MSklc21hbGxfcGFkID0gaSsxCi0rICAgICB1bnBsZWFzYW50KGkrMSklbG9uZ19zdHJpbmcgPSBj aGFyIChpY2hhcignMCcpICsgaSkgLy8gJy1oZWxsbycKLSsgIGVuZCBkbwotKwotKyAgYzQwcHQg PT4gdW5wbGVhc2FudCVsb25nX3N0cmluZwotKwotKyAgcHJpbnQgKiwgYzQwcHQgICEgYnJlYWst aGVyZQotKwotK2VuZCBwcm9ncmFtIHJlcHJvCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uMjYxY2UxNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwCi1AQCAtMCww ICsxLDI0IEBACi0rISBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyEKLSsh IEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHluYW1pYy5leHAuCi0r ISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4uCi0rISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rc3Vicm91dGluZSBiYXIKLSsgIHJlYWwg OjogZHVtbXkKLSsgIGR1bW15ID0gMQotK2VuZCBzdWJyb3V0aW5lIGJhcgotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTVhODJlZQotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAotQEAgLTAs MCArMSwzNyBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsK LStzZXQgdGVzdGZpbGUgImR5bmFtaWMtb3RoZXItZnJhbWUiCi0rc2V0IHNyY2ZpbGUxICR7dGVz dGZpbGV9LmY5MAotK3NldCBzcmNmaWxlMiAke3Rlc3RmaWxlfS1zdHViLmY5MAotK3NldCBvYmpm aWxlMiBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tc3R1Yi5vXQotK3NldCBleGVj dXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7 ZXhlY3V0YWJsZX1dCi0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlMn0iICIke29iamZpbGUyfSIgb2JqZWN0IHtmOTB9XSAhPSAiIgotKyAgICAgfHwg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTF9ICR7b2JqZmlsZTJ9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZTF9IG9yICR7c3JjZmlsZTJ9IgotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFibGV9Ci0rCi0raWYg IVtydW50byBiYXJfXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYmFyXyIK LSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3QgImJ0IiB7Zm9vIFwoc3RyaW5nPSdoZWxs bycuKn0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3Ro ZXItZnJhbWUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZy YW1lLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJiYzYzN2QKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhl ci1mcmFtZS5mOTAKLUBAIC0wLDAgKzEsMzYgQEAKLSshIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxl IGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNl IGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJy b3V0aW5lIGZvbyAoc3RyaW5nKQotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgYmFyCi0r ICAgIGVuZCBzdWJyb3V0aW5lCi0rICBlbmQgaW50ZXJmYWNlCi0rICBjaGFyYWN0ZXIgc3RyaW5n KigqKQotKyAgY2FsbCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgc3RvcC1o ZXJlCi0rZW5kIHN1YnJvdXRpbmUgZm9vCi0rcHJvZ3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UKLSsg ICAgc3Vicm91dGluZSBmb28gKHN0cmluZykKLSsgICAgY2hhcmFjdGVyIHN0cmluZyooKikKLSsg ICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGNhbGwgZm9vICgnaGVsbG8n KQotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTc5ZTk0YQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAotQEAgLTAsMCArMSwxNTIgQEAKLSsj IENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUg d2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ LgotKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250 YWlucyB0ZXN0cyBmb3IgZHluYW1pY2FsbHkKLSsjIGFsbG9jYXRlZCBGb3J0cmFuIGFycmF5cy4K LSsjIEl0IGRlcGVuZHMgb24gdGhlIEdDQyBkeW5hbWljIEZvcnRyYW4gYXJyYXlzIERXQVJGIHN1 cHBvcnQ6Ci0rIyAJaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0y MjI0NAotKwotK3NldCB0ZXN0ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0r aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50 ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVu IHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAg IGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ4LWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWluaXQiCi0rZ2Ri X3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3Qg YWxsb2NhdGVkPiIgInAgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeCIg InR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmFy eCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICIoQ2Fubm90IGFjY2Vz cyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJy YXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLStn ZGJfdGVzdCAicCB2YXJ4KDEsNSwxNyk9MSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBh Y2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9j YXRlZFxcLiIgInAgdmFyeCgxLDUsMTcpPTEgdW5hbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBl IHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9i amVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInB0 eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2YXJ4LWFsbG9jYXRlZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAs IDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4pCi0rZ2Ri X3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1 OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENv bXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAg bCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFyeCBh bGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngt ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1maWxsZWQiCi0rZ2Ri X3Rlc3QgInAgdmFyeCgyLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDYiCi0rZ2RiX3Rlc3QgInAg dmFyeCgxLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDciCi0rZ2RiX3Rlc3QgInAgdmFyeCgyLCA2 LCAxOCkiICJcXCRcWzAtOVxdKiA9IDgiCi0rZ2RiX3Rlc3QgInAgdmFyeCg2LCAxNSwgMjgpIiAi XFwkXFswLTlcXSogPSA5IgotKyMgVGhlIGxhdHRlciBvbmUgaXMgZm9yIHRoZSBJbnRlbCBGb3J0 cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlwZS4KLStnZGJfdGVzdCAicCB2YXJ2IiAi XFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58Lioo Q2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhl IG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IHVuYXNzb2NpYXRlZCIKLStnZGJf dGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNz b2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3Qp IGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicHR5cGUgdmFydiB1bmFz c29jaWF0ZWQiCi0rCi0rc2V0IHRlc3QgIm91dHB1dCB2YXJ4IgotK2dkYl90ZXN0X211bHRpcGxl ICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJeb3V0cHV0IHZhcnhcclxuXFsoKSAsNjc4OS5cXSok Z2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1hc3NvY2lhdGVkIl0KLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmFydi1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwIHZhcngoMywg NywgMTkpIiAiXFwkXFswLTlcXSogPSA2IiAicCB2YXJ4KDMsIDcsIDE5KSB3aXRoIHZhcnYgYXNz b2NpYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIg InAgdmFydigzLCA3LCAxOSkgYXNzb2NpYXRlZCIKLSsjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIg MTAuMS4wMDggdXNlcyAtMSB0aGVyZSwgR0NDIHVzZXMgMS4KLStnZGJfdGVzdCAicCBsIiAiXFwk XFswLTlcXSogPSAoXFwuVFJVRVxcLnw0Mjk0OTY3Mjk1KSIgInAgbCBpZiB2YXJ2IGFzc29jaWF0 ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwq NCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCB3aXRoIHZhcnYgYXNzb2NpYXRlZCIK LSsjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggdXNlcyB0aGUgcG9pbnRlciB0eXBl LgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChc XChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpXFwpPyIgInB0eXBlIHZhcnYgYXNz b2NpYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1m aWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWZpbGxlZCIKLStnZGJf dGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcngoMywgNywg MTkpIHdpdGggdmFydiBmaWxsZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJcXCRc WzAtOVxdKiA9IDEwIiAicCB2YXJ2KDMsIDcsIDE5KSBmaWxsZWQiCi0rCi0rZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtZGVhc3NvY2lhdGVkIl0KLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmFydi1kZWFzc29jaWF0ZWQiCi0rIyBUaGUgbGF0dGVyIG9uZSBp cyBmb3IgdGhlIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggcG9pbnRlciB0eXBlLgot K2dkYl90ZXN0ICJwIHZhcnYiICJcXCRcWzAtOVxdKiA9ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlz IG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhl IG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVkLikiICJwIHZhcnYg ZGVhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9ICg8KG9iamVjdHx0 aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0 byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVk LikiICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCBsIiAiXFwkXFswLTlc XSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAi cCB2YXJ2KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBv YmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkXFwuIgot K2dkYl90ZXN0ICJwdHlwZSB2YXJ2KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUg dG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBh c3NvY2lhdGVkXFwuIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ4LWRlYWxsb2NhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1kZWFs bG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4IiAiXFwkXFswLTlcXSogPSA8KG9iamVjdHx0aGUg YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0 ICJwdHlwZSB2YXJ4IiAidHlwZSA9IDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFsbG9jYXRl ZD4iICJwdHlwZSB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwIGwiICJcXCRcWzAtOVxd KiA9IFxcLkZBTFNFXFwuIiAicCBsIGlmIHZhcnggZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInAg dmFyeCgxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2Jq ZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicCB2 YXJ4KDEsNSwxNykgZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngoMSw1LDE3KSIg IihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0 aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInB0eXBlIHZhcngoMSw1LDE3 KSBkZWFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmFyeS1wYXNzZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LXBhc3NlZCIK LSsjICQxID0gKCggKCAxLCAxLCAxLCAxLCAxLCAxKSAoIDEsIDEsIDEsIDEsIDEsIDEpIC0tLSAs IDEpICkgKCAoIDEsIDEsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFyeSIgIlxcJFxb MC05XF0qID0gXFwoXFsoKTEsIC5cXSpcXCkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZhcnktZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyeS1maWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnkiICJ0eXBlID0gcmVhbChcXChraW5k PTRcXCl8XFwqNCkgXFwoMTAsMTBcXCkiCi0rZ2RiX3Rlc3QgInAgdmFyeSgxLCAxKSIgIlxcJFxb MC05XF0qID0gOCIKLStnZGJfdGVzdCAicCB2YXJ5KDIsIDIpIiAiXFwkXFswLTlcXSogPSA5Igot K2dkYl90ZXN0ICJwIHZhcnkoMSwgMykiICJcXCRcWzAtOVxdKiA9IDEwIgotKyMgJDEgPSAoKCAo IDMsIDMsIDMsIDMsIDMsIDMpICggMywgMywgMywgMywgMywgMykgLS0tICwgMykgKSAoICggMywg MywgLi4uKSAuLi4pIC4uLikKLStnZGJfdGVzdCAicCB2YXJ3IiAiXFwkXFswLTlcXSogPSBcXChc WygpMywgLlxdKlxcKSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmFydy1hbG1vc3RmaWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ3LWFs bW9zdGZpbGxlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydyIgInR5cGUgPSByZWFsKFxcKGtpbmQ9 NFxcKXxcXCo0KSBcXCg1LDQsM1xcKSIKLStnZGJfdGVzdCAicCB2YXJ3KDMsMSwxKT0xIiAiXFwk XFswLTlcXSogPSAxIgotKyMgJDEgPSAoKCAoIDYsIDUsIDEsIDUsIDUsIDUpICggNSwgNSwgNSwg NSwgNSwgNSkgLS0tICwgNSkgKSAoICggNSwgNSwgLi4uKSAuLi4pIC4uLikKLStnZGJfdGVzdCAi cCB2YXJ3IiAiXFwkXFswLTlcXSogPSBcXCggKlxcKCAqXFwoICo2LCAqNSwgKjEsXFsoKTUsIC5c XSpcXCkiICJwIHZhcncgZmlsbGVkIgotKyMgInVwIiB3b3JrcyB3aXRoIEdDQyBidXQgb3RoZXIg Rm9ydHJhbiBjb21waWxlcnMgbWF5IGNvcHkgdGhlIHZhbHVlcyBpbnRvIHRoZQotKyMgb3V0ZXIg ZnVuY3Rpb24gb25seSBvbiB0aGUgZXhpdCBvZiB0aGUgaW5uZXIgZnVuY3Rpb24uCi0rIyBXZSBu ZWVkIGJvdGggdmFyaWFudHMgYXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoIHdlIG9wdGlvbmFsbHkg bWF5IHN0aWxsIGJlCi0rIyBleGVjdXRpbmcgdGhlIGNhbGxlciBsaW5lIG9yIG5vdCBhZnRlciBg ZmluaXNoJy4KLStnZGJfdGVzdCAiZmluaXNoIiAiLiooY2FsbCBiYXIgXFwoeSwgeFxcKXxjYWxs IGZvbyBcXCh4LCB6XFwoMjo2LCA0OjcsIDY6OFxcKVxcKSkiCi0rZ2RiX3Rlc3QgInAgeigyLDQs NSkiICJcXCRcWzAtOVxdKiA9IDMiCi0rZ2RiX3Rlc3QgInAgeigyLDQsNikiICJcXCRcWzAtOVxd KiA9IDYiCi0rZ2RiX3Rlc3QgInAgeigyLDQsNykiICJcXCRcWzAtOVxdKiA9IDUiCi0rZ2RiX3Rl c3QgInAgeig0LDQsNikiICJcXCRcWzAtOVxdKiA9IDEiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmFyei1hbG1vc3RmaWxsZWQiCi0rIyBHQ0MgdXNlcyB0aGUgcG9pbnRlciB0 eXBlIGhlcmUsIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3QuCi0rZ2Ri X3Rlc3QgInB0eXBlIHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9 NFxcKXxcXCo0KSBcXChcXCpcXClcXCk/IgotKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4x LjAwOCBoYXMgYSBidWcgaGVyZSAtICgyOjExLDc6NykKLSsjIGFzIGl0IHByb2R1Y2VzIERXX0FU X2xvd2VyX2JvdW5kID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCi0rZ2RiX3Rlc3QgInB0eXBl IHZhcnQiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBc XCgyOjExLDc6XFwqXFwpXFwpPyIKLStnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlcXSogPSBc XChcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgotK2dkYl90 ZXN0ICJwIHZhcnooMykiICJcXCRcWzAtOVxdKiA9IDQiCi0rIyBtYXBzIHRvIGZvbzo6dmFyeSgx LDEpCi0rZ2RiX3Rlc3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgotKyMgbWFwcyB0 byBmb286OnZhcnkoMiwyKQotK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0g OSIKLSsjIG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKLStnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJc XCRcWzAtOVxdKiA9IDEwIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGY0MzU2NAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAotQEAgLTAsMCArMSw5 OCBAQAotKyEgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r IQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlz IGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3Jp Z2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+Lgot KyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3N1YnJvdXRpbmUgYmF6Ci0rICByZWFsLCB0YXJn ZXQsIGFsbG9jYXRhYmxlIDo6IHZhcnggKDosIDosIDopCi0rICByZWFsLCBwb2ludGVyIDo6IHZh cnYgKDosIDosIDopCi0rICByZWFsLCB0YXJnZXQgOjogdmFydSAoMSwgMiwgMykKLSsgIGxvZ2lj YWwgOjogbAotKyAgYWxsb2NhdGUgKHZhcnggKDE6NiwgNToxNSwgMTc6MjgpKSAgICAgICAgICAg ICEgdmFyeC1pbml0Ci0rICBsID0gYWxsb2NhdGVkICh2YXJ4KQotKyAgdmFyeCg6LCA6LCA6KSA9 IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1hbGxvY2F0ZWQKLSsgIHZhcngo MSwgNSwgMTcpID0gNwotKyAgdmFyeCgyLCA2LCAxOCkgPSA4Ci0rICB2YXJ4KDYsIDE1LCAyOCkg PSA5Ci0rICB2YXJ2ID0+IHZhcnggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2 YXJ4LWZpbGxlZAotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2YXJ2KDMsIDcsIDE5KSA9 IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWFzc29jaWF0ZWQKLSsgIHZhcnYg PT4gbnVsbCAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZmlsbGVkCi0r ICBsID0gYXNzb2NpYXRlZCAodmFydikKLSsgIGRlYWxsb2NhdGUgKHZhcngpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIHZhcnYtZGVhc3NvY2lhdGVkCi0rICBsID0gYWxsb2NhdGVkICh2 YXJ4KQotKyAgdmFydSg6LCA6LCA6KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICEg dmFyeC1kZWFsbG9jYXRlZAotKyAgYWxsb2NhdGUgKHZhcnYgKDE6NiwgNToxNSwgMTc6MjgpKQot KyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2YXJ2KDosIDosIDopID0gNgotKyAgdmFydigx LCA1LCAxNykgPSA3Ci0rICB2YXJ2KDIsIDYsIDE4KSA9IDgKLSsgIHZhcnYoNiwgMTUsIDI4KSA9 IDkKLSsgIGRlYWxsb2NhdGUgKHZhcnYpCi0rICBsID0gYXNzb2NpYXRlZCAodmFydikKLSsgIHZh cnYgPT4gdmFydQotKyAgdmFydigxLCAxLCAxKSA9IDYKLSsgIHZhcnYoMSwgMiwgMykgPSA3Ci0r ICBsID0gYXNzb2NpYXRlZCAodmFydikKLStlbmQgc3Vicm91dGluZSBiYXoKLStzdWJyb3V0aW5l IGZvbyAodmFyeSwgdmFydykKLSsgIHJlYWwgOjogdmFyeSAoOiwgOikKLSsgIHJlYWwgOjogdmFy dyAoOiwgOiwgOikKLSsgIHZhcnkoOiwgOikgPSA0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhcnktcGFzc2VkCi0rICB2YXJ5KDEsIDEpID0gOAotKyAgdmFyeSgyLCAyKSA9IDkK LSsgIHZhcnkoMSwgMykgPSAxMAotKyAgdmFydyg6LCA6LCA6KSA9IDUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICEgdmFyeS1maWxsZWQKLSsgIHZhcncoMSwgMSwgMSkgPSA2Ci0rICB2YXJ3 KDIsIDIsIDIpID0gNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ3LWFsbW9zdGZp bGxlZAotK2VuZCBzdWJyb3V0aW5lIGZvbwotK3N1YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQot KyAgcmVhbCA6OiB2YXJ6ICgqKQotKyAgcmVhbCA6OiB2YXJ0ICgyOjExLCA3OiopCi0rICB2YXJ6 KDE6MykgPSA0Ci0rICB2YXJ6KDIpID0gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgISB2YXJ6LWFsbW9zdGZpbGxlZAotKyAgdmFydCgyLDcpID0gdmFydCgyLDcpCi0rZW5kIHN1 YnJvdXRpbmUgYmFyCi0rcHJvZ3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UKLSsgICAgc3Vicm91dGlu ZSBmb28gKHZhcnksIHZhcncpCi0rICAgIHJlYWwgOjogdmFyeSAoOiwgOikKLSsgICAgcmVhbCA6 OiB2YXJ3ICg6LCA6LCA6KQotKyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5kIGludGVyZmFjZQot KyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQotKyAgICByZWFs IDo6IHZhcnogKCopCi0rICAgIHJlYWwgOjogdmFydCAoMjoxMSwgNzoqKQotKyAgICBlbmQgc3Vi cm91dGluZQotKyAgZW5kIGludGVyZmFjZQotKyAgcmVhbCA6OiB4ICgxMCwgMTApLCB5ICg1KSwg eig4LCA4LCA4KQotKyAgeCg6LDopID0gMQotKyAgeSg6KSA9IDIKLSsgIHooOiw6LDopID0gMwot KyAgY2FsbCBiYXoKLSsgIGNhbGwgZm9vICh4LCB6KDI6NiwgNDo3LCA2OjgpKQotKyAgY2FsbCBi YXIgKHksIHgpCi0rICBpZiAoeCAoMSwgMSkgLm5lLiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5v ci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0Ci0rICBpZiAoeCAoMSwgMykgLm5lLiAxMCkg Y2FsbCBhYm9ydAotKyAgaWYgKHogKDIsIDQsIDYpIC5uZS4gNiAub3IuIHogKDMsIDUsIDcpIC5u ZS4gNyAub3IuIHogKDIsIDQsIDcpIC5uZS4gNSkgY2FsbCBhYm9ydAotKyAgaWYgKGFueSAoeSAu bmUuICgvNCwgNSwgNCwgMiwgMi8pKSkgY2FsbCBhYm9ydAotKyAgY2FsbCBmb28gKHRyYW5zcG9z ZSAoeCksIHopCi0rICBpZiAoeCAoMSwgMSkgLm5lLiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5v ci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0Ci0rICBpZiAoeCAoMywgMSkgLm5lLiAxMCkg Y2FsbCBhYm9ydAotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjM5ZGUyYzQKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAotQEAgLTAsMCArMSw1OSBA QAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMg Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFRoaXMg ZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4uCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0 IGNvbnRhaW5zIHRlc3RzIGZvciBGb3J0cmFuCi0rIyBzdHJpbmdzIHdpdGggZHluYW1pYyBsZW5n dGguCi0rCi0rc2V0IHRlc3RmaWxlICJzdHJpbmciCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u ZjkwCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotKwotK2lm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsK LStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7 Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBj b250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFy LWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXItaW5pdCIKLStnZGJfdGVz dCAicHR5cGUgYyIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD0xXFwpfFxcKjEpIgotK2dkYl90 ZXN0ICJwdHlwZSBkIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPThcXCl8XFwqOCkiCi0rZ2Ri X3Rlc3QgInB0eXBlIGUiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSIKLStn ZGJfdGVzdCAicHR5cGUgZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIFxc KDcsODoxMFxcKSIKLStnZGJfdGVzdCAicHR5cGUgKmUiICJBdHRlbXB0IHRvIHRha2UgY29udGVu dHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCi0rZ2RiX3Rlc3QgInB0eXBlICpmIiAidHlwZSA9 IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoN1xcKSIKLStnZGJfdGVzdCAicCBjIiAi XFwkXFswLTlcXSogPSAnYyciCi0rZ2RiX3Rlc3QgInAgZCIgIlxcJFxbMC05XF0qID0gJ2QgICAg ICAgJyIKLStnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZyAgICciCi0rZ2RiX3Rlc3Qg InAgZiIgIlxcJFxbMC05XF0qID0gXFwoXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAg JywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywg J2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKCAnaCAgICcsICdoICAgJywgJ2gg ICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwpIgotK2dkYl90ZXN0ICJw ICplIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIgot K2dkYl90ZXN0ICJwICpmIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50 ZXIgdmFsdWUuIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXIt ZmluaXNoIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZpbmlzaCIKLStnZGJf dGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0IgotK2dkYl90ZXN0 ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2YgICAnLCAnZiAgICcs ICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIgInAgKmYgcmUtc2V0 IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLjIyNmRjNWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAotKyEgQ29weXJpZ2h0 IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRy YW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVu IGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRo ZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+LgotKwotK3N1YnJvdXRpbmUgZm9vIChlLCBmKQotKyAgY2hhcmFjdGVyIChsZW49MSkgOjog YwotKyAgY2hhcmFjdGVyIChsZW49OCkgOjogZAotKyAgY2hhcmFjdGVyIChsZW49KikgOjogZQot KyAgY2hhcmFjdGVyIChsZW49KikgOjogZiAoMTo3LCA4OjEwKQotKyAgYyA9ICdjJwotKyAgZCA9 ICdkJwotKyAgZSA9ICdlJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEg dmFyLWluaXQKLSsgIGYgPSAnZicKLSsgIGYoMSw5KSA9ICdmMicKLSsgIGMgPSAnYycgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhci1maW5pc2gKLStlbmQgc3Vicm91 dGluZSBmb28KLSsgIGNoYXJhY3RlciAobGVuPTQpIDo6IGcsIGggKDE6NywgODoxMCkKLSsgIGcg PSAnZycKLSsgIGggPSAnaCcKLSsgIGNhbGwgZm9vIChnLCBoKQotK2VuZAotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi5jODE5ZTIzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3N1YnJhbmdlLmV4cAotQEAgLTAsMCArMSw2MCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFBhaG9sZSwg c2VsZikuX19pbml0X18gKCJwYWhvbGUiLCBnZGIuQ09NTUFORF9OT05FLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9TWU1CT0wpCiArCi0raWYg eyBbc2tpcF9mb3J0cmFuX3Rlc3RzXSB9IHsgcmV0dXJuIC0xIH0KKysgICAgZGVmIG1heWJlX3By aW50X2hvbGUoc2VsZiwgYml0cG9zLCBmaWVsZF9iaXRwb3MpOgorKyAgICAgICAgaWYgYml0cG9z ICE9IGZpZWxkX2JpdHBvczoKKysgICAgICAgICAgICBob2xlID0gZmllbGRfYml0cG9zIC0gYml0 cG9zCisrICAgICAgICAgICAgcHJpbnQgJyAgLyogWFhYICVkIGJpdCBob2xlLCB0cnkgdG8gcGFj ayAqLycgJSBob2xlCiArCi0rc2V0IHRlc3RmaWxlICJzdWJyYW5nZSIKLStzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTB9XSB9IHsKLSsgICAgcmV0dXJuIC0x Ci0rfQorKyAgICBkZWYgcGFob2xlIChzZWxmLCB0eXBlLCBsZXZlbCwgbmFtZSk6CisrICAgICAg ICBpZiBuYW1lIGlzIE5vbmU6CisrICAgICAgICAgICAgbmFtZSA9ICcnCisrICAgICAgICB0YWcg PSB0eXBlLnRhZworKyAgICAgICAgaWYgdGFnIGlzIE5vbmU6CisrICAgICAgICAgICAgdGFnID0g JycKKysgICAgICAgIHByaW50ICclc3N0cnVjdCAlcyB7JyAlICgnICcgKiAoMiAqIGxldmVsKSwg dGFnKQorKyAgICAgICAgYml0cG9zID0gMAorKyAgICAgICAgZm9yIGZpZWxkIGluIHR5cGUuZmll bGRzICgpOgorKyAgICAgICAgICAgICMgU2tpcCBzdGF0aWMgZmllbGRzLgorKyAgICAgICAgICAg IGlmIG5vdCBoYXNhdHRyIChmaWVsZCwgKCdiaXRwb3MnKSk6CisrICAgICAgICAgICAgICAgIGNv bnRpbnVlCiArCi0raWYgIVtydW50byBNQUlOX19dIHsKLSsgICAgcGVycm9yICJDb3VsZG4ndCBy dW4gdG8gTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KKysgICAgICAgICAgICBmdHlwZSA9IGZp ZWxkLnR5cGUuc3RyaXBfdHlwZWRlZnMoKQogKwotKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxl ciB2ZXJzaW9uIGJlaW5nIHVzZWQsIHRoZSBuYW1lIG9mIHRoZSA0LWJ5dGUgaW50ZWdlcgotKyMg YW5kIHJlYWwgdHlwZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuICBGb3IgaW5zdGFuY2Us IGdmb3J0cmFuLTQuMSB1c2VzCi0rIyAiaW50NCIgd2hlcmVhcyBnZm9ydHJhbi00LjMgdXNlcyAi aW50KGtpbmQ9NCkiLgotK3NldCBpbnQ0ICIoaW50NHxpbnRlZ2VyXFwoa2luZD00XFwpKSIKKysg ICAgICAgICAgICBzZWxmLm1heWJlX3ByaW50X2hvbGUoYml0cG9zLCBmaWVsZC5iaXRwb3MpCisr ICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0cG9zCisrICAgICAgICAgICAgaWYgZmllbGQu Yml0c2l6ZSA+IDA6CisrICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IGZpZWxkLmJpdHNpemUK KysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVCBo ZXJlLi4uCisrICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IDggKiBmdHlwZS5zaXplb2YKICsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstc3RhdGljIl0KLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstc3RhdGljIiAiLipicmVhay1zdGF0aWMu KiIKKysgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVAorKyAgICAgICAgICAgIHByaW50ICcg LyogJTNkICUzZCAqLycgJSAoaW50IChiaXRwb3MgLyA4KSwgaW50IChmaWVsZHNpemUgLyA4KSks CisrICAgICAgICAgICAgYml0cG9zID0gYml0cG9zICsgZmllbGRzaXplCiArCi0rZm9yZWFjaCB2 YXIge2EgYWxsb2MgcHRyfSB7Ci0rICAgIGdsb2JhbCBwZl9wcmVmaXgKLSsgICAgc2V0IG9sZF9w cmVmaXggJHBmX3ByZWZpeAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHZhcjoiCisrICAgICAg ICAgICAgaWYgZnR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKKysgICAgICAgICAg ICAgICAgc2VsZi5wYWhvbGUgKGZ0eXBlLCBsZXZlbCArIDEsIGZpZWxkLm5hbWUpCisrICAgICAg ICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgcHJpbnQgJyAnICogKDIgKyAyICogbGV2ZWwp LAorKyAgICAgICAgICAgICAgICBwcmludCAnJXMgJXMnICUgKHN0ciAoZnR5cGUpLCBmaWVsZC5u YW1lKQogKwotKyAgICBnZGJfdGVzdCAicCAkdmFyICgyLCAyOjMpIiB7ID0gXCgyMiwgMzJcKX0K LSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoMjozLCAzKSIgeyA9IFwoMzIsIDMzXCl9Ci0rICAgIGdk Yl90ZXN0ICJwICR2YXIgKDEsIDI6KSIgeyA9IFwoMjEsIDMxXCl9Ci0rICAgIGdkYl90ZXN0ICJw ICR2YXIgKDIsIDoyKSIgeyA9IFwoMTIsIDIyXCl9Ci0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDMs IDI6MikiIHsgPSBcKDIzXCl9Ci0rICAgIGdkYl90ZXN0ICJwdHlwZSAkdmFyICgzLCAyOjIpIiAi ID0gJGludDQgXFwoMjoyXFwpIgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg0LCA6KSIgeyA9IFwo MTQsIDI0LCAzNFwpfQotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6KSIgeyA9IFwoXCggKjEx LCAxMiwgMTMsIDE0XCkgXCggKjIxLCAyMiwgMjMsIDI0XCkgXCggKjMxLCAzMiwgMzMsIDM0XCkg KlwpfQotKyAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoOiwgOikiICIgPSAkaW50NCBcXCg0LDNc XCkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDopIiAiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlw dHMiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDosIDosIDopIiAiV3JvbmcgbnVtYmVyIG9mIHN1 YnNjcmlwdHMiCisrICAgICAgICBpZiBsZXZlbCA9PSAwOgorKyAgICAgICAgICAgIHNlbGYubWF5 YmVfcHJpbnRfaG9sZShiaXRwb3MsIDggKiB0eXBlLnNpemVvZikKICsKLSsgICAgc2V0IHBmX3By ZWZpeCAkb2xkX3ByZWZpeAotK30KKysgICAgICAgIHByaW50ICcgJyAqICgxNCArIDIgKiBsZXZl bCksCisrICAgICAgICBwcmludCAnfSAlcycgJSBuYW1lCiArCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0 IHtzZXQgJGE9YX0KLStkZWxldGVfYnJlYWtwb2ludHMKLStnZGJfdW5sb2FkCi0rZ2RiX3Rlc3Qg e3AgJGEgKDMsIDI6Mil9IHsgPSBcKDIzXCl9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJh bmdlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ3NDdlYTkKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkw Ci1AQCAtMCwwICsxLDI4IEBACi0rISBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEgCi0rISBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICAgIGRl ZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgdHlwZSA9IGdkYi5sb29r dXBfdHlwZSAoYXJnKQorKyAgICAgICAgdHlwZSA9IHR5cGUuc3RyaXBfdHlwZWRlZnMgKCkKKysg ICAgICAgIGlmIHR5cGUuY29kZSAhPSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKKysgICAgICAgICAg ICByYWlzZSBUeXBlRXJyb3IsICclcyBpcyBub3QgYSBzdHJ1Y3QgdHlwZScgJSBhcmcKKysgICAg ICAgIHByaW50ICcgJyAqIDE0LAorKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5cGUsIDAsICcnKQog KwotK3Byb2dyYW0gdGVzdAotKyAgaW50ZWdlciwgdGFyZ2V0IDo6IGEgKDQsIDMpCi0rICBpbnRl Z2VyLCBhbGxvY2F0YWJsZSA6OiBhbGxvYyAoOiwgOikKLSsgIGludGVnZXIsIHBvaW50ZXIgOjog cHRyICg6LCA6KQotKyAgZG8gMSBpID0gMSwgNAotKyAgZG8gMSBqID0gMSwgMwotKyAgICBhIChp LCBqKSA9IGogKiAxMCArIGkKLSsxIGNvbnRpbnVlCi0rICBhbGxvY2F0ZSAoYWxsb2MgKDQsIDMp KQotKyAgYWxsb2MgPSBhCi0rICBwdHIgPT4gYQotKyAgd3JpdGUgKCosKikgYSAgICAgICAgICAg ICAgICAgISBicmVhay1zdGF0aWMKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAot aW5kZXggMWQwMjc3OS4uZjlmNWJlNCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdk Yi9zZWxmdGVzdC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAK LUBAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7Ci0gCQlzZXQg ZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9uIgotIAkJc2V0 IGNvbW1hbmQgInN0ZXAiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qcHl0aG9uX3NjcmlwdCA9IDAu KiRnZGJfcHJvbXB0ICQiIHsKLSsJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhvbl9z Y3JpcHQgaW5pdGlhbGl6YXRpb24iCi0rCQlzZXQgY29tbWFuZCAic3RlcCIKLSsJICAgIH0KLSAJ ICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiok Z2RiX3Byb21wdCAkIiB7Ci0gCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1h bmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKLSAJCXNldCBjb21tYW5k ICJuZXh0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUt dHlwZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMKKytQYWhv bGUoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMu cHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CiBuZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWJjZWQzYworaW5kZXggMDAwMDAwMC4uMmI5YzVj NwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFs ZS10eXBlLmMKLUBAIC0wLDAgKzEsMjYgQEAKLSsvKiBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2ludAotK21h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBjaGFyIHZsYVthcmdjXTsKKysrKyBi L2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK0BAIC0wLDAgKzEsNTgg QEAKKysjIENhbGxlci1pcyBmdW5jdGlvbnMuCiArCi0rICB2bGFbMF0gPSAwOwkvKiBicmVhay1o ZXJlICovCisrIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXIt c3RhbGUtdHlwZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ODMy NmMwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0 YWxlLXR5cGUuZXhwCi1AQCAtMCwwICsxLDU3IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKICsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCkBAIC03MTg2LDE1NyArNDEzLDU3IEBAIGluZGV4IDAwMDAwMDAuLjg4 MzI2YzAKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStsb2FkX2xpYiBtaS1zdXBw b3J0LmV4cAotK3NldCBNSUZMQUdTICItaT1taTIiCi0rCi0rZ2RiX2V4aXQKLStpZiBbbWlfZ2Ri X3N0YXJ0XSB7Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAibWkyLXZhci1z dGFsZS10eXBlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSBbc3Rh bmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0raWYge1tidWlsZF9leGVjdXRhYmxlICR7 dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGVdID09IC0xfSB7Ci0rICAgIHJldHVybiAt MQotK30KLSsKLSttaV9kZWxldGVfYnJlYWtwb2ludHMKLSttaV9nZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKLSttaV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rbWlfZ2RiX3Rl c3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1l cnJvciBxdWl0IHllcyJ9IFwKLSsgIHtcXmRvbmV9IFwKLSsgICJtYWludGVuYW5jZSBzZXQgaW50 ZXJuYWwtZXJyb3IgcXVpdCB5ZXMiCi0rCi0rbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVj IGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBjb3JlZmlsZSB5ZXMifSBc Ci0rICB7XF5kb25lfSBcCi0rICAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFsLWVycm9yIGNvcmVm aWxlIHllcyIKLSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJd Ci0rc2V0IGZ1bmMgIm1haW4iCi0rCi0rbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgLXQgJHNy Y2ZpbGU6JGxpbmUiIFwKLSsgICJcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCJcWzAtOVxdK1wiLHR5 cGU9XCJicmVha3BvaW50XCIsZGlzcD1cImRlbFwiLGVuYWJsZWQ9XCJ5XCIsYWRkcj1cIiRoZXhc IixmdW5jPVwiJGZ1bmNcKFxcXCguKlxcXClcKT9cIixmaWxlPVwiLipcIixmdWxsbmFtZT1cIi4q XCIsbGluZT1cIiRsaW5lXCIsXFteXHJcblxdKixvcmlnaW5hbC1sb2NhdGlvbj1cIi4qXCJcfSIg XAotKyAgImJyZWFrcG9pbnQgYXQgJGZ1bmMiCi0rCi0raWYgeyBbbWlfcnVuX2NtZF0gPCAwIH0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAk ZnVuYyAiLioiICIuKiIgIlxbMC05XF0rIiB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInN0b3AgYWZ0 ZXIgaW5pdGlhbGl6aW5nIHZsYSIKLSsKLSttaV9jcmVhdGVfdmFyb2JqICJ2bGEiICJ2bGEiICJj cmVhdGUgbG9jYWwgdmFyaWFibGUgdmxhIgotKwotK21pX2dkYl90ZXN0ICItdmFyLXVwZGF0ZSAq IiAiXFxeZG9uZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MjlmNDU3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLUBAIC0wLDAgKzEs MjIgQEAKLSsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0r Ci0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2ludAotK2Z1bmMg KGludCAqYXJyKQotK3sKLSsgIHJldHVybiBhcnJbMF07Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uMzA5MGU3ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytpbXBvcnQgZ2RiCisraW1wb3J0IHJl CiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKytjbGFzcyBDYWxsZXJJcyAoZ2Ri LkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24n cyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgorK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9y IHR3byBhcmd1bWVudHMuCisrVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGEgZnVu Y3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKKytuYW1lIGlzIGVxdWFsIHRvIHRoaXMg YXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgorK1RoZSBvcHRpb25hbCBzZWNv bmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMKKyt0 byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMg MS4iIiIKICsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAgICBkZWYgX19pbml0X18gKHNl bGYpOgorKyAgICAgICAgc3VwZXIgKENhbGxlcklzLCBzZWxmKS5fX2luaXRfXyAoImNhbGxlcl9p cyIpCiArCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrICAgIGRlZiBpbnZv a2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVj dGVkX2ZyYW1lICgpCisrICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKKysgICAgICAgICAgICBm cmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAx CisrICAgICAgICByZXR1cm4gZnJhbWUubmFtZSAoKSA9PSBuYW1lLnN0cmluZyAoKQogKwotK2V4 dGVybiBpbnQgZnVuYyAoaW50ICphcnIpOworK2NsYXNzIENhbGxlck1hdGNoZXMgKGdkYi5GdW5j dGlvbik6CisrICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MgbmFt ZSBtYXRjaGVzIGEgc3RyaW5nLgorK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9yIHR3byBhcmd1 bWVudHMuCisrVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgcmVndWxhciBleHByZXNzaW9uOyBpZiB0 aGUgY2FsbGluZyBmdW5jdGlvbidzCisrbmFtZSBpcyBtYXRjaGVkIGJ5IHRoaXMgYXJndW1lbnQs IHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgorK1RoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1l bnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMKKyt0byB0cmF2ZXJz ZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMgMS4iIiIKICsK LStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCBhcnJbXSA9IHsgNDIgfTsKKysgICAgZGVm IF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVyIChDYWxsZXJNYXRjaGVzLCBzZWxmKS5f X2luaXRfXyAoImNhbGxlcl9tYXRjaGVzIikKICsKLSsgIGZ1bmMgKGFycik7CisrICAgIGRlZiBp bnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAgIGZyYW1lID0gZ2RiLnNl bGVjdGVkX2ZyYW1lICgpCisrICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKKysgICAgICAgICAg ICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMg LSAxCisrICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3RyaW5nICgpLCBmcmFtZS5uYW1l ICgpKSBpcyBub3QgTm9uZQogKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAorK0NhbGxlcklzKCkKKytDYWxsZXJNYXRj aGVzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUu cHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMmRlNzE4CitpbmRleCAwMDAwMDAwLi5kZWJiM2Ji CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1y ZWdpc3Rlci5leHAKLUBAIC0wLDAgKzEsMzMgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuCi0rIwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3Vp dGUuCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyBhcnJheS1mcm9tLXJlZ2lzdGVyLmV4 cCAiYXJyYXktZnJvbS1yZWdpc3RlciIgICAgICBcCi0rCQkJICB7YXJyYXktZnJvbS1yZWdpc3Rl ci5jIGFycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jfSBcCi0rCQkJICB7ZGVidWcgb3B0aW1pemU9 LU8yfV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIGZ1bmNdIHRoZW4g ewotKyAgICByZXR1cm4gLTEKLSt9CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24v aW5fc2NvcGUucHkKK0BAIC0wLDAgKzEsNDcgQEAKKysjIEluLXNjb3BlIGZ1bmN0aW9uLgogKwot K2dkYl90ZXN0ICJwIGFyciIgIlxcJFxbMC05XF0rID0gXFwoaW50IFxcKlxcKSAqMHhcWzAtOWEt ZlxdKyIKKysjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKLSsjIFNlZW4gcmVncmVzc2lvbjoKLSsjIEFkZHJlc3MgcmVxdWVzdGVkIGZvciBpZGVu dGlmaWVyICJhcnIiIHdoaWNoIGlzIGluIHJlZ2lzdGVyICRyZGkKLStnZGJfdGVzdCAicCBhcnJc WzBcXSIgIlxcJFxbMC05XF0rID0gNDIiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmNjYzZlMWUKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCi1AQCAtMCwwICsx LDEwNCBAQAotKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rIwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiArIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgpA QCAtNzM1MCwxODMgKzQ3NywxNDEgQEAgaW5kZXggMDAwMDAwMC4uY2NjNmUxZQogKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJh Y2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rbG9hZF9saWIgInBhc2NhbC5leHAiCi0rCi0rc2V0IHRl c3RmaWxlICJhcnJheXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0ucGFzCi0rc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfSRFWEVFWFQKLSsKLSsjIFRoZXNlIHRl c3RzIG9ubHkgd29yayB3aXRoIGZwYywgdXNpbmcgdGhlIC1ndzMgY29tcGlsZS1vcHRpb24KLStw YXNjYWxfaW5pdAotK2lmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgIT0gMSB9IHsKLSsgIHJl dHVybiAtMQotK30KLSsKLSsjIERldGVjdCBpZiB0aGUgZnBjIHZlcnNpb24gaXMgYmVsb3cgMi4z LjAKLStzZXQgZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgMQotK2lmIHsg KCRmcGN2ZXJzaW9uX21ham9yIDwgMikgfHwgKCAoJGZwY3ZlcnNpb25fbWFqb3IgPT0gMikgJiYg KCRmcGN2ZXJzaW9uX21pbm9yIDwgMykpfSAgewotKyAgc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZf Zm9yX2R5bmFtaWNfYXJyYXlzIDAKLSt9Ci0rCi0rCi0raWYge1tnZGJfY29tcGlsZV9wYXNjYWwg Ii1ndzMgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSBbbGlzdCBkZWJ1ZyBdXSAhPSAiIiB9IHsKLSsgIHJldHVybiAtMQotK30KLSsKLStnZGJf ZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgot K2dkYl9sb2FkICR7YmluZmlsZX0KLStzZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJzZXQgYnJlYWtwb2ludCAxIGhlcmUiXQotK3NldCBicF9sb2NhdGlvbjIgW2dkYl9nZXRf bGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDIgaGVyZSJdCisraW1wb3J0IGdkYgogKworK2Ns YXNzIEluU2NvcGUgKGdkYi5GdW5jdGlvbik6CisrICAgICIiIlJldHVybiBUcnVlIGlmIGFsbCB0 aGUgZ2l2ZW4gdmFyaWFibGVzIG9yIG1hY3JvcyBhcmUgaW4gc2NvcGUuCisrVGFrZXMgb25lIGFy Z3VtZW50IGZvciBlYWNoIHZhcmlhYmxlIG5hbWUgdG8gYmUgY2hlY2tlZC4iIiIKICsKLStpZiB7 IFtnZGJfYnJlYWtwb2ludCAke3NyY2ZpbGV9OiR7YnBfbG9jYXRpb24xfV0gfSB7Ci0rICAgIHBh c3MgInNldHRpbmcgYnJlYWtwb2ludCAxIgotK30KLStpZiB7IFtnZGJfYnJlYWtwb2ludCAke3Ny Y2ZpbGV9OiR7YnBfbG9jYXRpb24yfV0gfSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2lu dCAyIgotK30KKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysJc3VwZXIgKEluU2NvcGUsIHNl bGYpLl9faW5pdF9fICgiaW5fc2NvcGUiKQogKwotKyMgVmVyaWZ5IHRoYXQgInN0YXJ0IiBsYW5k cyBpbnNpZGUgdGhlIHJpZ2h0IHByb2NlZHVyZS4KLStpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAg fSB7Ci0rICAgIHVudGVzdGVkIHN0YXJ0Ci0rICAgIHJldHVybiAtMQotK30KKysgICAgZGVmIGlu dm9rZSAoc2VsZiwgKnZhcnMpOgorKyAgICAgICAgaWYgbGVuICh2YXJzKSA9PSAwOgorKwkgICAg cmFpc2UgVHlwZUVycm9yLCAiaW5fc2NvcGUgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Igog KwotK2dkYl90ZXN0ICIiICIuKiBhdCAuKiR7c3JjZmlsZX0uKiIgInN0YXJ0IgorKyAgICAgICAg IyBnZGIuVmFsdWUgaXNuJ3QgaGFzaGFibGUgc28gaXQgY2FuJ3QgYmUgcHV0IGluIGEgbWFwLgor KwkjIENvbnZlcnQgdG8gc3RyaW5nIGZpcnN0LgorKwl3YW50ZWQgPSBzZXQgKG1hcCAobGFtYmRh IHg6IHguc3RyaW5nICgpLCB2YXJzKSkKKysJZm91bmQgPSBzZXQgKCkKKysJYmxvY2sgPSBnZGIu c2VsZWN0ZWRfZnJhbWUgKCkuYmxvY2sgKCkKKysJd2hpbGUgYmxvY2s6CisrCSAgICBmb3Igc3lt IGluIGJsb2NrOgorKwkJaWYgKHN5bS5pc19hcmd1bWVudCBvciBzeW0uaXNfY29uc3RhbnQKKysJ CSAgICAgIG9yIHN5bS5pc19mdW5jdGlvbiBvciBzeW0uaXNfdmFyaWFibGUpOgorKwkJICAgIGlm IHN5bS5uYW1lIGluIHdhbnRlZDoKKysJCQlmb3VuZC5hZGQgKHN5bS5uYW1lKQogKwotK2dkYl90 ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMX0uKiIgIkdvaW5nIHRvIGZp cnN0IGJyZWFrcG9pbnQiCisrCSAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxvY2sKICsKLStnZGJf dGVzdCAicHJpbnQgU3RhdEFyckludCIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwg NTYsIDU3LCA1OCwgNTksIDYwLCA2MVxcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBpbnRlZ2Vy IHR5cGUiCi0rZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJJbnRfIiAiLiogPSBcXHs1MCwgNTEsIDUy LCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJpbnQgc3RhdGljIGFy cmF5IG9mIGludGVnZXIiCisrCXJldHVybiB3YW50ZWQgPT0gZm91bmQKICsKLStnZGJfdGVzdCAi Y29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2NhdGlvbjJ9LioiICJHb2luZyB0byBzZWNvbmQg YnJlYWtwb2ludCIKKytJblNjb3BlICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24u YyBiL2dkYi9weXRob24vcHl0aG9uLmMKK2luZGV4IDM2OWEyNDkuLjBmMTM2YTggMTAwNjQ0Cist LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAt OTUsNiArOTUsOCBAQCBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gZXh0ZW5z aW9uX2xhbmd1YWdlX3B5dGhvbiA9CisgI2luY2x1ZGUgImxpbmVzcGVjLmgiCisgI2luY2x1ZGUg InNvdXJjZS5oIgorICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisrI2luY2x1ZGUgImluZmVyaW9yLmgi CisrI2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVk ZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1ZGUgImludGVycHMuaCIKK0BAIC0xMjIyLDYgKzEyMjQs NTYgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCisgCisgLyogUmV0dXJuIHRoZSBjdXJyZW50 IFByb2dzcGFjZS4KKyAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KKysvKiBUcnVlIGlmICdn ZGIgLVAnIHdhcyB1c2VkLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgcnVubmlu Z19weXRob25fc2NyaXB0OwogKwotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyQ2hhciIgIi4qID0g J2FiY2RlZmdoaWprbCciICJQcmludCBzdGF0aWMgYXJyYXkgb2YgY2hhciIKLStnZGJfdGVzdCAi cHJpbnQgU3RhdDJkQXJySW50IiAiLiogPSBcXHtcXHswLCAxLCAyLCAzLCA0XFx9LCBcXHsxLCAy LCAzLCA0LCA1XFx9LCBcXHsyLCAzLCA0LCA1LCA2XFx9LCBcXHszLCA0LCA1LCA2LCA3XFx9LCBc XHs0LCA1LCA2LCA3LCA4XFx9LCBcXHs1LCA2LCA3LCA4LCA5XFx9LCBcXHs2LCA3LCA4LCA5LCAx MFxcfSwgXFx7NywgOCwgOSwgMTAsIDExXFx9LCBcXHs4LCA5LCAxMCwgMTEsIDEyXFx9LCBcXHs5 LCAxMCwgMTEsIDEyLCAxM1xcfSwgXFx7MTAsIDExLCAxMiwgMTMsIDE0XFx9LCBcXHsxMSwgMTIs IDEzLCAxNCwgMTVcXH1cXH0iICJQcmludCBzdGF0aWMgMi1kaW1lbnNpb25hbCBhcnJheSBvZiBp bnRlZ2VyIgorKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBhIGNhbGwgdG8gJ2dkYi5j bGknLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgaW5fY2xpOwogKwotK2lmIHsg JGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVw X3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyckludCIgIi4qID0gXFx7 NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjJcXH0iICJQ cmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIgdHlwZSIKLStpZiB7ICRmcGNfZ2VuZXJhdGVz X2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFpbCAiKi0qLSoi Ci0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnRfIiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1 MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MlxcfSIgIlByaW50IGR5bmFtaWMg YXJyYXkgb2YgaW50ZWdlciIKKysvKiBFbnRlciB0aGUgY29tbWFuZCBsb29wLiAgKi8KICsKLStp ZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBz ZXR1cF94ZmFpbCAiKi0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBzIiAiLiogPSAndGVzdCcj MCdzdHJpbmcnIiAiUHJpbnQgc3RyaW5nIGNvbnRhaW5pbmcgbnVsbC1jaGFyIgorK3N0YXRpYyBQ eU9iamVjdCAqCisrZ2RicHlfY2xpIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNl ZDIpCisreworKyAgaWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2NsaSkKKysgICAg cmV0dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGludm9rZSBD TEkgcmVjdXJzaXZlbHkiKTsKKysgIAorKyAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKGN1cnJl bnRfdWlvdXQpKQorKyAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3Is IF8oIkNhbm5vdCBpbnZva2UgQ0xJIGZyb20gTUkuIikpOwogKwotK2lmIHsgJGZwY19nZW5lcmF0 ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSot KiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyclN0ciIgIi4qID0gXFx7J2RzdHIwJywgJ2Rz dHIxJywgJ2RzdHIyJywgJ2RzdHIzJywgJ2RzdHI0JywgJ2RzdHI1JywgJ2RzdHI2JywgJ2RzdHI3 JywgJ2RzdHI4JywgJ2RzdHI5JywgJ2RzdHIxMCcsICdkc3RyMTEnLCAnZHN0cjEyJ1xcfSIgIlBy aW50IGR5bmFtaWMgYXJyYXkgb2Ygc3RyaW5nIgorKyAgaW5fY2xpID0gMTsKKysgIGN1cnJlbnRf aW50ZXJwX2NvbW1hbmRfbG9vcCAoKTsKKysgIGluX2NsaSA9IDA7CiArCi0raWYgeyAkZnBjX2dl bmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0gewotKyAgc2V0dXBfeGZhaWwg IiotKi0qIgorKyAgUHlfUkVUVVJOX05PTkU7CiArfQotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJy U3RyIiAiLiogPSBcXHsnc3RyMCcsICdzdHIxJywgJ3N0cjInLCAnc3RyMycsICdzdHI0JywgJ3N0 cjUnLCAnc3RyNicsICdzdHI3JywgJ3N0cjgnLCAnc3RyOScsICdzdHIxMCcsICdzdHIxMScsICdz dHIxMidcXH0iICJQcmludCBzdGF0aWMgYXJyYXkgb2Ygc3RyaW5nIgogKwotK2lmIHsgJGZwY19n ZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWls ICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyckNoYXIiICIuKiA9ICdhYmNkZWZn aGlqa2xtJyIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2YgY2hhciIKKysvKiBTZXQgdXAgdGhlIFB5 dGhvbiBhcmd1bWVudCB2ZWN0b3IgYW5kIGV2YWx1YXRlIGEgc2NyaXB0LiAgVGhpcyBpcworKyAg IHVzZWQgdG8gaW1wbGVtZW50ICdnZGIgLVAnLiAgKi8KICsKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9h cnJheXMucGFzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjk1NjAyZAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMK LUBAIC0wLDAgKzEsODIgQEAKKyt2b2lkCisrcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBj aGFyICoqYXJndikKICt7Ci0rIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAgRklMRSAqaW5wdXQ7 CiArCi0rIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAvKiBXZSBuZXZlciBmcmVlIHRoaXMsIHNpbmNlIHdl IHBsYW4gdG8gZXhpdCBhdCB0aGUgZW5kLiAgKi8KKysgIGVuc3VyZV9weXRob25fZW52IChnZXRf Y3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKICsKLSsgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisrICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOworKyAgUHlTeXNfU2V0QXJn diAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKKysgIGlucHV0ID0gZm9wZW4gKGFyZ3ZbMF0sICJyIik7 CisrICBpZiAoISBpbnB1dCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgImNvdWxk IG5vdCBvcGVuICVzOiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVycm5vKSk7CisrICAgICAg ZXhpdCAoMSk7CisrICAgIH0KKysgIFB5UnVuX1NpbXBsZUZpbGUgKGlucHV0LCBhcmd2WzBdKTsK KysgIGZjbG9zZSAoaW5wdXQpOworKyAgZXhpdCAoMCk7CiArfQogKwotK3Byb2dyYW0gYXJyYXlz OwotKwotK3skbW9kZSBvYmpmcGN9eyRoK30KLSsKLSt1c2VzIHN5c3V0aWxzOwotKwotK3R5cGUg VFN0YXRBcnJJbnQ9IGFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOwotKyAgICAgVER5bkFyckludD0g YXJyYXkgb2YgaW50ZWdlcjsKLSsgICAgIFRTdGF0QXJyU3RyPSBhcnJheVswLi4xMl0gb2Ygc3Ry aW5nOwotKyAgICAgVER5bkFyclN0cj0gYXJyYXkgb2Ygc3RyaW5nOwotKyAgICAgVER5bkFyckNo YXIgPSBhcnJheSBvZiBjaGFyOwotKyAgICAgVFN0YXRBcnJDaGFyID0gYXJyYXkgWzAuLjExXSBv ZiBjaGFyOwotKwotKyAgICAgVFN0YXQyZEFyckludCA9IGFycmF5WzAuLjExLDAuLjRdIG9mIGlu dGVnZXI7Ci0rCi0rdmFyIFN0YXRBcnJJbnQ6IFRTdGF0QXJySW50OwotKyAgICBTdGF0QXJySW50 XzogQXJyYXlbMC4uMTFdIG9mIGludGVnZXI7Ci0rICAgIER5bkFyckludDogIFREeW5BcnJJbnQ7 Ci0rICAgIER5bkFyckludF86IEFycmF5IG9mIGludGVnZXI7Ci0rICAgIFN0YXRBcnJTdHI6IFRT dGF0QXJyU3RyOwotKyAgICBEeW5BcnJTdHI6IFREeW5BcnJTdHI7Ci0rICAgIFN0YXRBcnJDaGFy OiBUU3RhdEFyckNoYXI7Ci0rICAgIER5bkFyckNoYXI6IFREeW5BcnJDaGFyOwotKwotKyAgICBT dGF0MmRBcnJJbnQ6IFRTdGF0MmRBcnJJbnQ7Ci0rCi0rICAgIHM6IHN0cmluZzsKLSsJCi0rICAg IGksaiA6IGludGVnZXI7Ci0rCi0rYmVnaW4KLSsgIGZvciBpIDo9IDAgdG8gMTEgZG8KLSsgICAg YmVnaW4KLSsgICAgU3RhdEFyckludFtpXTo9IGkrNTA7Ci0rICAgIFN0YXRBcnJJbnRfW2ldOj0g aSs1MDsKLSsgICAgU3RhdEFyckNoYXJbaV06PSBjaHIob3JkKCdhJykraSk7Ci0rICAgIGZvciBq IDo9IDAgdG8gNCBkbwotKyAgICAgIFN0YXQyZEFyckludFtpLGpdOj1pK2o7Ci0rICAgIGVuZDsK LSsgIHdyaXRlbG4oU3RhdEFyckludF9bMF0pOwotKyAgd3JpdGVsbihTdGF0QXJySW50WzBdKTsg eyBzZXQgYnJlYWtwb2ludCAxIGhlcmUgfQotKyAgd3JpdGVsbihTdGF0QXJyQ2hhclswXSk7Ci0r ICB3cml0ZWxuKFN0YXQyZEFyckludFswLDBdKTsKKysMCiArCi0rICBzZXRsZW5ndGgoRHluQXJy SW50LDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJJbnRfLDEzKTsKLSsgIHNldGxlbmd0aChEeW5B cnJTdHIsMTMpOwotKyAgc2V0bGVuZ3RoKER5bkFyckNoYXIsMTMpOwotKyAgZm9yIGkgOj0gMCB0 byAxMiBkbwotKyAgICBiZWdpbgotKyAgICBEeW5BcnJJbnRbaV06PSBpKzUwOwotKyAgICBEeW5B cnJJbnRfW2ldOj0gaSs1MDsKLSsgICAgRHluQXJyQ2hhcltpXTo9IGNocihvcmQoJ2EnKStpKTsK LSsgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50dG9zdHIoaSk7Ci0rICAgIER5bkFyclN0cltp XTo9J2RzdHInK2ludHRvc3RyKGkpOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxuKER5bkFyckludF9b MV0pOwotKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0pOyAKLSsgIHdyaXRlbG4oRHluQXJyU3RyWzFd KTsgCi0rICB3cml0ZWxuKFN0YXRBcnJTdHJbMV0pOwotKyAgd3JpdGVsbihEeW5BcnJDaGFyWzFd KTsKKyAKKyBzdGF0aWMgUHlPYmplY3QgKgorIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFjZSAo UHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorQEAgLTE5MTAsNiArMTk2Miw4 IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorIEV2YWx1YXRlIGNvbW1hbmQs IGEgc3RyaW5nLCBhcyBhIGdkYiBDTEkgY29tbWFuZC4gIE9wdGlvbmFsbHkgcmV0dXJuc1xuXAor IGEgUHl0aG9uIFN0cmluZyBjb250YWluaW5nIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgaWYg dG9fc3RyaW5nIGlzXG5cCisgc2V0IHRvIFRydWUuIiB9LAorKyAgeyAiY2xpIiwgZ2RicHlfY2xp LCBNRVRIX05PQVJHUywKKysgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAorICAgeyAicGFyYW1l dGVyIiwgZ2RicHlfcGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgICJSZXR1cm4gYSBnZGIg cGFyYW1ldGVyJ3MgdmFsdWUiIH0sCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24u aCBiL2dkYi9weXRob24vcHl0aG9uLmgKK2luZGV4IDllOTk5OTIuLmM3NzZlNTkgMTAwNjQ0Cist LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCitAQCAt MjUsNCArMjUsNiBAQAorIC8qIFRoaXMgaXMgYWxsIHRoYXQgcHl0aG9uIGV4cG9ydHMgdG8gZ2Ri LiAgKi8KKyBleHRlcm4gY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuIGV4dGVu c2lvbl9sYW5ndWFnZV9weXRob247CisgCisrZXh0ZXJuIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQg KGludCBhcmdjLCBjaGFyICoqYXJndik7CiArCi0rICBzIDo9ICd0ZXN0JyMwJ3N0cmluZyc7Ci0r ICB3cml0ZWxuKHMpOyB7IHNldCBicmVha3BvaW50IDIgaGVyZSB9Ci0rZW5kLgorICNlbmRpZiAv KiBHREJfUFlUSE9OX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2Vs ZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAoraW5kZXggOTEx NDJmZS4uNzI0Njc5ZiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKK0BAIC05Miw2 ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRp b24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9uIgorIAkJc2V0IGNvbW1hbmQg InN0ZXAiCisgCSAgICB9CisrCSAgICAtcmUgIi4qcHl0aG9uX3NjcmlwdCA9IDAuKiRnZGJfcHJv bXB0ICQiIHsKKysJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhvbl9zY3JpcHQgaW5p dGlhbGl6YXRpb24iCisrCQlzZXQgY29tbWFuZCAic3RlcCIKKysJICAgIH0KKyAJICAgIC1yZSAi LipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21w dCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNf Y2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKKyAJCXNldCBjb21tYW5kICJuZXh0Igog ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCiBpbmRleCAzNTE3ODI0Li40ZmEyYmQ4 IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cApAQCAt NzUzOCw3ICs2MjMsNyBAQCBpbmRleCAzNTE3ODI0Li40ZmEyYmQ4IDEwMDY0NAogKwogK2dkYl90 ZXN0ICJweXRob24gcHJpbnQgKCdyZXN1bHQgPSAlcycgJSAoZjAuYmxvY2sgKCkpKSIgIjxnZGIu QmxvY2sgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidGVzdCBGcmFtZS5ibG9jayIK IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotaW5kZXggZWQzMzJkYi4uMDY0NjZl YyAxMDA2NDQKK2luZGV4IDEzNDMzZmQuLmIxNDYxNjUgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktdmFsdWUuZXhwCiBAQCAtMzg1LDYgKzM4NSwxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0 ZXJfZGVhdGgge30gewpAQCAtNzU1Nyw3ICs2NDIsNyBAQCBpbmRleCBlZDMzMmRiLi4wNjQ2NmVj IDEwMDY0NAogICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRp b25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAogICMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3Qg YmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcgYQogICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0 byBwcm9jZWVkLgotQEAgLTUxMiw2ICs1MjEsNyBAQCB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCitA QCAtNTE0LDYgKzUyMyw3IEBAIHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKICB0ZXN0X2luZmVyaW9y X2Z1bmN0aW9uX2NhbGwKICB0ZXN0X2xhenlfc3RyaW5ncwogIHRlc3RfdmFsdWVfYWZ0ZXJfZGVh dGgKQEAgLTc1NjUsNjE4ICs2NTAsMyBAQCBpbmRleCBlZDMzMmRiLi4wNjQ2NmVjIDEwMDY0NAog IAogICMgVGVzdCBlaXRoZXIgQyBvciBDKysgdmFsdWVzLiAKICAKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotaW5kZXgg MjcxM2RkZi4uNTMzYjgxYiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLUBAIC0xNTAsNiArMTUwLDExIEBAIHBy b2MgZ2RiX3VubG9hZCB7fSB7Ci0gCSAgICBzZW5kX2dkYiAieVxuIgotIAkgICAgZXhwX2NvbnRp bnVlCi0gCX0KLSsJLXJlICJBIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4uKkFy ZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGZpbGUuKnkgb3Igbi4gJCJcCi0rCSAg ICB7IHNlbmRfZ2RiICJ5XG4iCi0rCQl2ZXJib3NlICJcdFx0VW5sb2FkaW5nIHN5bWJvbHMgZm9y IHByb2dyYW0gYmVpbmcgZGVidWdnZWQiCi0rCSAgICBleHBfY29udGludWUKLSsJfQotIAktcmUg IkRpc2NhcmQgc3ltYm9sIHRhYmxlIGZyb20gLip5IG9yIG4uKiQiIHsKLSAJICAgIHNlbmRfZ2Ri ICJ5XG4iCi0gCSAgICBleHBfY29udGludWUKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xp Yi9wYXNjYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotaW5kZXggMWI0OTRl ZS4uM2JiOGFkOSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKLUBAIC0zNyw2ICszNyw5IEBAIHByb2Mg cGFzY2FsX2luaXQge30gewotICAgICBnbG9iYWwgcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYwotICAg ICBnbG9iYWwgZ3BjX2NvbXBpbGVyCi0gICAgIGdsb2JhbCBmcGNfY29tcGlsZXIKLSsgICAgZ2xv YmFsIGZwY3ZlcnNpb25fbWFqb3IKLSsgICAgZ2xvYmFsIGZwY3ZlcnNpb25fbWlub3IKLSsgICAg Z2xvYmFsIGZwY3ZlcnNpb25fcmVsZWFzZQotICAgICBnbG9iYWwgZW52Ci0gIAotICAgICBpZiB7 ICRwYXNjYWxfaW5pdF9kb25lID09IDEgfSB7Ci1AQCAtNjQsNiArNjcsMjAgQEAgcHJvYyBwYXNj YWxfaW5pdCB7fSB7Ci0gCSAgICBzZXQgcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYyAxCi0gCSAgICB2 ZXJib3NlIC1sb2cgIkZyZWUgUGFzY2FsIGNvbXBpbGVyIGZvdW5kIgotIAl9Ci0rCi0rCSMgRGV0 ZWN0IHRoZSBmcGMtdmVyc2lvbgotKwlpZiB7ICRwYXNjYWxfY29tcGlsZXJfaXNfZnBjID09IDEg fSB7Ci0rCSAgICBzZXQgZnBjdmVyc2lvbl9tYWpvciAxCi0rCSAgICBzZXQgZnBjdmVyc2lvbl9t aW5vciAwCi0rCSAgICBzZXQgZnBjdmVyc2lvbl9yZWxlYXNlIDAKLSsJICAgIHNldCBmcGN2ZXJz aW9uIFsgcmVtb3RlX2V4ZWMgaG9zdCAkZnBjX2NvbXBpbGVyICItaVYiIF0gCi0rCSAgICBpZiBb cmVnZXhwIHsuKihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKykuP30gJGZwY3ZlcnNpb25dIHsK LSsgICAgICAgICAgICAgIHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLj9c bj8uP30gJGZwY3ZlcnNpb24ge1wxfSBmcGN2ZXJzaW9uX21ham9yCi0rICAgICAgICAgICAgICBy ZWdzdWIgey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99ICRmcGN2ZXJzaW9u IHtcMn0gZnBjdmVyc2lvbl9taW5vcgotKyAgICAgICAgICAgICAgcmVnc3ViIHsuKihbMC05XSsp XC4oWzAtOV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBjdmVyc2lvbiB7XDN9IGZwY3ZlcnNpb25f cmVsZWFzZQotKwkgICAgfQotKyAgICAgICAgICAgIHZlcmJvc2UgLWxvZyAiRnJlZXBhc2NhbCB2 ZXJzaW9uOiAkZnBjdmVyc2lvbl9tYWpvci4kZnBjdmVyc2lvbl9taW5vci4kZnBjdmVyc2lvbl9y ZWxlYXNlIgotKwl9Ci0gICAgIH0KLSAgICAgc2V0IHBhc2NhbF9pbml0X2RvbmUgMQotIH0gICAK LWRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9nZGIvdG9wLmMKLWluZGV4IGQwNjg0NTAuLmUyYjQx MTAgMTAwNjQ0Ci0tLS0gYS9nZGIvdG9wLmMKLSsrKyBiL2dkYi90b3AuYwotQEAgLTMzMSw2ICsz MzEsOSBAQCBwcmVwYXJlX2V4ZWN1dGVfY29tbWFuZCAodm9pZCkKLSAKLSAgIG1hcmsgPSB2YWx1 ZV9tYXJrICgpOwotICAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF92YWx1ZV9mcmVlX3RvX21hcmsg KG1hcmspOwotKyNpZiAwCi0rICBmcmVlX2FsbF90eXBlcyAoKTsKLSsjZW5kaWYKLSAKLSAgIC8q IFdpdGggbXVsdGlwbGUgdGhyZWFkcyBydW5uaW5nIHdoaWxlIHRoZSBvbmUgd2UncmUgZXhhbWlu aW5nIGlzCi0gICAgICBzdG9wcGVkLCB0aGUgZGNhY2hlIGNhbiBnZXQgc3RhbGUgd2l0aG91dCB1 cyBiZWluZyBhYmxlIHRvIGRldGVjdAotZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuYyBiL2dk Yi90eXBlcHJpbnQuYwotaW5kZXggMDk5OTNkZC4uOWZjYjNiMyAxMDA2NDQKLS0tLSBhL2dkYi90 eXBlcHJpbnQuYwotKysrIGIvZ2RiL3R5cGVwcmludC5jCi1AQCAtMzQsNiArMzQsNyBAQAotICNp bmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJ2 YWxwcmludC5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAjaW5jbHVkZSA8ZXJybm8uaD4K LSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgotQEAgLTM2 Myw2ICszNjQsOSBAQCB2b2lkCi0gdHlwZV9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGNoYXIgKnZhcnN0cmluZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAJICAgIGludCBzaG93 KQotIHsKLSsgIGlmIChzaG93ID49IDAgJiYgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2Ug IT0gbGFuZ3VhZ2VfYWRhKQotKyAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rCi0g ICBMQV9QUklOVF9UWVBFICh0eXBlLCB2YXJzdHJpbmcsIHN0cmVhbSwgc2hvdywgMCwgJmRlZmF1 bHRfcHR5cGVfZmxhZ3MpOwotIH0KLSAKLUBAIC00MTAsNiArNDE0LDcgQEAgd2hhdGlzX2V4cCAo Y2hhciAqZXhwLCBpbnQgc2hvdykKLSAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7 Ci0gICBzdHJ1Y3QgdHlwZV9wcmludF9vcHRpb25zIGZsYWdzID0gZGVmYXVsdF9wdHlwZV9mbGFn czsKLSAKLSsgIC8qIFJlcXVpcmVkIGF0IGxlYXN0IGZvciB0aGUgb2JqZWN0X2FkZHJlc3Nfc2V0 IGNhbGwuICAqLwotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOwotIAotICAgaWYgKGV4cCkKLUBAIC00NTcsNiArNDYyLDcgQEAgd2hhdGlzX2V4cCAoY2hh ciAqZXhwLCBpbnQgc2hvdykKLSAgIGVsc2UKLSAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3Rv cnkgKDApOwotIAotKyAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAodmFs KSk7Ci0gICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKLSAKLSAgIGdldF91c2VyX3ByaW50X29w dGlvbnMgKCZvcHRzKTsKLWRpZmYgLS1naXQgYS9nZGIvdXRpbHMuYyBiL2dkYi91dGlscy5jCi1p bmRleCBlMDYyZTg5Li43NzMyNDJkIDEwMDY0NAotLS0tIGEvZ2RiL3V0aWxzLmMKLSsrKyBiL2dk Yi91dGlscy5jCi1AQCAtMTc0NSw2ICsxNzQ1LDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtl X2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCi0gICByZXR1cm4gYmFja190bzsKLSB9 Ci0gCi0rLyogSGVscGVyIGZvciBtYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8uICAqLwot KwotK3N0YXRpYyB2b2lkCi0rZG9fcmVzdG9yZV9zZWxlY3RlZF9mcmFtZV9jbGVhbnVwICh2b2lk ICphcmcpCi0rewotKyAgc3RydWN0IGZyYW1lX2lkICpmcmFtZV9pZHAgPSBhcmc7Ci0rCi0rICBz ZWxlY3RfZnJhbWUgKGZyYW1lX2ZpbmRfYnlfaWQgKCpmcmFtZV9pZHApKTsKLSsKLSsgIHhmcmVl IChmcmFtZV9pZHApOwotK30KLSsKLSsvKiBQcm92aWRlIGNsZWFudXAgZm9yIHJlc3RvcmluZyBj dXJyZW50bHkgc2VsZWN0ZWQgZnJhbWUuICBVc2UgZnJhbWVfaWQgZm9yCi0rICAgdGhlIGNhc2Ug dGhlIGN1cnJlbnQgZnJhbWUgYmVjb21lcyBzdGFsZSBpbiB0aGUgbWVhbnRpbWUuICAqLwotKwot K3N0cnVjdCBjbGVhbnVwICoKLSttYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAo dm9pZCkKLSt7Ci0rICBzdHJ1Y3QgZnJhbWVfaWQgKmZyYW1lX2lkcDsKLSsKLSsgIC8qIGdldF9z ZWxlY3RlZF9mcmFtZS0+Z2V0X2N1cnJlbnRfZnJhbWUgd291bGQgZXJyb3Igb3RoZXJ3aXNlLiAg Ki8KLSsgIGlmICghaGFzX3N0YWNrX2ZyYW1lcyAoKSkKLSsgICAgcmV0dXJuIG1ha2VfY2xlYW51 cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSsKLSsgIGZyYW1lX2lkcCA9IHhtYWxsb2MgKHNpemVv ZiAoKmZyYW1lX2lkcCkpOwotKyAgKmZyYW1lX2lkcCA9IGdldF9mcmFtZV9pZCAoZ2V0X3NlbGVj dGVkX2ZyYW1lIChOVUxMKSk7Ci0rCi0rICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb19yZXN0b3Jl X3NlbGVjdGVkX2ZyYW1lX2NsZWFudXAsIGZyYW1lX2lkcCk7Ci0rfQotKwotIC8qIFNldCB0aGUg c2NyZWVuIHNpemUgYmFzZWQgb24gTElORVNfUEVSX1BBR0UgYW5kIENIQVJTX1BFUl9MSU5FLiAg Ki8KLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2dkYi91dGlscy5oIGIvZ2RiL3V0aWxz LmgKLWluZGV4IDhiYmNjNWYuLjEzNDJkNjggMTAwNjQ0Ci0tLS0gYS9nZGIvdXRpbHMuaAotKysr IGIvZ2RiL3V0aWxzLmgKLUBAIC0zODIsNCArMzgyLDYgQEAgZXh0ZXJuIFVMT05HRVNUIGFsaWdu X2Rvd24gKFVMT05HRVNUIHYsIGludCBuKTsKLSAKLSBleHRlcm4gTE9OR0VTVCBnZGJfc2lnbl9l eHRlbmQgKExPTkdFU1QgdmFsdWUsIGludCBiaXQpOwotIAotK2V4dGVybiBzdHJ1Y3QgY2xlYW51 cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKHZvaWQpOwotKwotICNlbmRp ZiAvKiBVVElMU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJp dGguYwotaW5kZXggOGU4NjNlMy4uOTdhOGIwZiAxMDA2NDQKLS0tLSBhL2dkYi92YWxhcml0aC5j Ci0rKysgYi9nZGIvdmFsYXJpdGguYwotQEAgLTE5NSw3ICsxOTUsMTAgQEAgdmFsdWVfc3Vic2Ny aXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBpbnQgbG93 ZXJib3VuZCkKLSAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoYXJyYXkpKTsKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSAgIHVuc2lnbmVkIGludCBlbHRf c2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7Ci0tICB1bnNpZ25lZCBpbnQgZWx0X29mZnMg PSBlbHRfc2l6ZSAqIGxvbmdlc3RfdG9faW50IChpbmRleCAtIGxvd2VyYm91bmQpOwotKyAgdW5z aWduZWQgaW50IGVsdF9zdHJpZGUKLSsgICAgPSAoVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRF WF9UWVBFIChhcnJheV90eXBlKSkgPT0gMAotKyAgICAgICA/IGVsdF9zaXplIDogVFlQRV9CWVRF X1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSkpOwotKyAgdW5zaWduZWQgaW50 IGVsdF9vZmZzID0gZWx0X3N0cmlkZSAqIGxvbmdlc3RfdG9faW50IChpbmRleCAtIGxvd2VyYm91 bmQpOwotICAgc3RydWN0IHZhbHVlICp2OwotIAotICAgaWYgKGluZGV4IDwgbG93ZXJib3VuZCB8 fCAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotQEAg LTI1NSw2ICsyNTgsMTAgQEAgaW50Ci0gYmlub3BfdXNlcl9kZWZpbmVkX3AgKGVudW0gZXhwX29w Y29kZSBvcCwKLSAJCSAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0IHZhbHVlICphcmcy KQotIHsKLSsgIC8qIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCB1c2VyIGRlZmluZWQgb3BzIGZv ciBkeW5hbWljIHR5cGVzLiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFy ZzEpKSB8fCBUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZzIpKSkKLSsgICAgcmV0dXJuIDA7 Ci0rCi0gICByZXR1cm4gYmlub3BfdHlwZXNfdXNlcl9kZWZpbmVkX3AgKG9wLCB2YWx1ZV90eXBl IChhcmcxKSwgdmFsdWVfdHlwZSAoYXJnMikpOwotIH0KLSAKLWRpZmYgLS1naXQgYS9nZGIvdmFs b3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IDUzODJjNDkuLjBkZTgwMDkgMTAwNjQ0Ci0tLS0g YS9nZGIvdmFsb3BzLmMKLSsrKyBiL2dkYi92YWxvcHMuYwotQEAgLTQyLDYgKzQyLDcgQEAKLSAj aW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSBleHRlcm4gdW5zaWdu ZWQgaW50IG92ZXJsb2FkX2RlYnVnOwotIC8qIExvY2FsIGZ1bmN0aW9ucy4gICovCi1AQCAtOTAw LDYgKzkwMSw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgcmV0dXJuIHZh bDsKLSB9Ci0gCi0rLyogb2JqZWN0X2FkZHJlc3Nfc2V0IG11c3QgYmUgYWxyZWFkeSBjYWxsZWQg YmVmb3JlIHRoaXMgZnVuY3Rpb24uICAqLwotKwotK2NvbnN0IGNoYXIgKgotK29iamVjdF9hZGRy ZXNzX2RhdGFfbm90X3ZhbGlkIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICAvKiBBdHRyaWJ1 dGVzIGFyZSBwcmVzZW50IG9ubHkgYXQgdGhlIHRhcmdldCB0eXBlIG9mIGEgdHlwZWRlZi4gIE1h a2UgdGhlCi0rICAgICBjYWxsIGNvbmRpdGlvbmFsIGFzIGl0IHdvdWxkIG90aGVyd2lzZSBsb29w IHRocm91Z2ggdHlwZV9sZW5ndGhfZ2V0LiAgKi8KLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9UWVBFREVGKQotKyAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSsKLSsgIC8q IERXX0FUX2Fzc29jaWF0ZWQgaGFzIGEgcHJlZmVyZW5jZSBvdmVyIERXX0FUX2FsbG9jYXRlZC4g ICovCi0rICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAodHlwZSkKLSsgICAgICB8fCAoVFlQRV9B U1NPQ0lBVEVEICh0eXBlKSAhPSBOVUxMCi0rCSAgJiYgMCA9PSBkd2FyZl9sb2NleHByX2JhdG9u X2V2YWwgKFRZUEVfQVNTT0NJQVRFRCAodHlwZSkpKSkKLSsgICAgcmV0dXJuIE5fKCJvYmplY3Qg aXMgbm90IGFzc29jaWF0ZWQiKTsKLSsKLSsgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUp Ci0rICAgICAgfHwgKFRZUEVfQUxMT0NBVEVEICh0eXBlKSAhPSBOVUxMCi0rCSAgJiYgMCA9PSBk d2FyZl9sb2NleHByX2JhdG9uX2V2YWwgKFRZUEVfQUxMT0NBVEVEICh0eXBlKSkpKQotKyAgICBy ZXR1cm4gTl8oIm9iamVjdCBpcyBub3QgYWxsb2NhdGVkIik7Ci0rCi0rICByZXR1cm4gTlVMTDsK LSt9Ci0rCi0rLyogUmV0dXJuIG5vbi1OVUxMIGNoZWNrX3R5cGVkZWYgcmVzdWx0IG9uIFRZUEUg aWYgdGhlIHZhcmlhYmxlIGlzIHZhbGlkLiAgSWYKLSsgICBpdCBpcyB2YWxpZCB0aGUgZnVuY3Rp b24gbWF5IHN0b3JlIHRoZSBkYXRhIGFkZHJlc3MgKERXX0FUX0RBVEFfTE9DQVRJT04pIG9mCi0r ICAgVFlQRSBhdCAqQUREUkVTU19SRVRVUk4uICBZb3UgbXVzdCBzZXQgKkFERFJFU1NfUkVUVVJO IGZyb20KLSsgICB2YWx1ZV9yYXdfYWRkcmVzcyAoVkFMKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLiAgSWYgbm8KLSsgICBEV19BVF9EQVRBX0xPQ0FUSU9OIGlzIHByZXNlbnQgZm9yIFRZ UEUgdGhlIGFkZHJlc3MgYXQgKkFERFJFU1NfUkVUVVJOIGlzCi0rICAgbGVmdCB1bmNoYW5nZWQu ICBBRERSRVNTX1JFVFVSTiBtdXN0IG5vdCBiZSBOVUxMLCB1c2UKLSsgICBvYmplY3RfYWRkcmVz c19kYXRhX25vdF92YWxpZCAoKSBmb3IganVzdCB0aGUgZGF0YSB2YWxpZGl0eSBjaGVjay4gICov Ci0rCi0rc3RydWN0IHR5cGUgKgotK29iamVjdF9hZGRyZXNzX2dldF9kYXRhIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgQ09SRV9BRERSICphZGRyZXNzX3JldHVybikKLSt7Ci0rICBnZGJfYXNzZXJ0IChh ZGRyZXNzX3JldHVybiAhPSBOVUxMKTsKLSsKLSsgIG9iamVjdF9hZGRyZXNzX3NldCAoKmFkZHJl c3NfcmV0dXJuKTsKLSsKLSsgIC8qIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAvIFRZ UEVfREFUQV9MT0NBVElPTl9BRERSIGFyZSBwcmVzZW50IG9ubHkKLSsgICAgIGF0IHRoZSB0YXJn ZXQgdHlwZSBvZiBhIHR5cGVkZWYuICAqLwotKyAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7Ci0rCi0r ICBpZiAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpICE9IE5VTEwpCi0rICAg IHsKLSsgICAgICAvKiBEbyBub3QgdHJ5IHRvIGV2YWx1YXRlIERXX0FUX2RhdGFfbG9jYXRpb24g YXMgaXQgbWF5IGV2ZW4gY3Jhc2gKLSsJIChpdCB3b3VsZCBqdXN0IHJldHVybiB0aGUgdmFsdWUg emVybyBpbiB0aGUgZ2ZvcnRyYW4gY2FzZSkuICAqLwotKyAgICAgIHJldHVybiBOVUxMOwotKyAg ICB9Ci0rCi0rICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgKHR5cGUpKQotKyAgICAq YWRkcmVzc19yZXR1cm4gPSBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAodHlwZSk7Ci0rICBlbHNl IGlmIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpICE9IE5VTEwpCi0rICAg ICphZGRyZXNzX3JldHVybgotKyAgICAgID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBF X0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpKTsKLSsKLSsgIHJldHVybiB0eXBlOwot K30KLSsKLSAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZhbHVlX2F0LCB2YWx1ZV9hdF9sYXp5LCBh bmQgdmFsdWVfYXRfbGF6eV9zdGFjay4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1A QCAtMTM2NSw3ICsxNDI1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wg KnZhciwgY29uc3Qgc3RydWN0IGJsb2NrICpiKQotICAgaWYgKChWQUxVRV9MVkFMICh2YWwpID09 IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCi0gICAgICAgfHwgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKLSAgICAgewotLSAgICAgIENPUkVfQUREUiBhZGRyID0g dmFsdWVfYWRkcmVzcyAodmFsKTsKLSsgICAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsgICAgICBp ZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKLSsJewotKwkgIGFkZHIgPSB2YWx1 ZV9yYXdfYWRkcmVzcyAodmFsKTsKLSsJICBpZiAoIW9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0 eXBlLCAmYWRkcikpCi0rCSAgICBlcnJvciAoXygiQ2FuJ3QgdGFrZSBhZGRyZXNzIG9mIG1lbW9y eSBsdmFsdWUgXCIlc1wiLiIpLAotKwkJICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwotKwkg IHNldF92YWx1ZV9hZGRyZXNzICh2YWwsIGFkZHIpOwotKwl9Ci0rCi0rICAgICAgYWRkciA9IHZh bHVlX2FkZHJlc3MgKHZhbCk7Ci0gCi0gICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAo bG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwotICAgICB9Ci1AQCAtMTQ3Miw2ICsx NTQzLDcgQEAgc3RydWN0IHZhbHVlICoKLSB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1 ZSAqYXJnMSkKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZzEpKTsKLSsgIENPUkVfQUREUiBhZGRyZXNzOwotIAotICAgLyogSWYgdGhlIHVz ZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgotICAg ICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVu IHRoaXMgd291bGQKLUBAIC0xNDgxLDggKzE1NTMsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChz dHJ1Y3QgdmFsdWUgKmFyZzEpCi0gICBpZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1v cnkpCi0gICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3Qg bG9jYXRlZCBpbiBtZW1vcnkuIikpOwotIAotKyAgYWRkcmVzcyA9IHZhbHVlX3Jhd19hZGRyZXNz IChhcmcxKTsKLSsgIGlmICghb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUsICZhZGRyZXNz KSkKLSsgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9mIG5vbi12YWxpZCB2 YWx1ZS4iKSk7Ci0rCi0gICByZXR1cm4gdmFsdWVfZnJvbV9wb2ludGVyIChsb29rdXBfcG9pbnRl cl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCi0tCQkJICAgICB2YWx1ZV9hZGRyZXNz IChhcmcxKSk7Ci0rCQkJICAgICBhZGRyZXNzICsgdmFsdWVfb2Zmc2V0IChhcmcxKSk7Ci0gfQot IAotIC8qIEdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwgcmV0dXJuIGEgdmFsdWUg d2hpY2ggaXMgYSBwb2ludGVyCi1AQCAtMzU3MSw2ICszNjQ3LDggQEAgdmFsdWVfc2xpY2UgKHN0 cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKLSAJCQkJCVRZUEVf VEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAotIAkJCQkJbG93Ym91bmQsIAotIAkJCQkJbG93Ym91 bmQgKyBsZW5ndGggLSAxKTsKLSsgIFRZUEVfQllURV9TVFJJREUgKHNsaWNlX3JhbmdlX3R5cGUp ID0gVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSk7Ci0rCi0gCi0gICAgIHsKLSAgICAgICBz dHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbHByaW50LmMgYi9nZGIvdmFscHJpbnQuYwotaW5kZXggMDE4 ODljNS4uZTI1ZTNjOCAxMDA2NDQKLS0tLSBhL2dkYi92YWxwcmludC5jCi0rKysgYi9nZGIvdmFs cHJpbnQuYwotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKLSAj aW5jbHVkZSAiY2hhcnNldC5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlICJkd2Fy ZjJsb2MuaCIKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLUBAIC0yOTAsNyArMjkxLDYgQEAg dmFsX3ByaW50X3NjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICBjYXNlIFRZ UEVfQ09ERV9TVFJVQ1Q6Ci0gICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgotICAgICBjYXNlIFRZ UEVfQ09ERV9TRVQ6Ci0tICAgIGNhc2UgVFlQRV9DT0RFX1NUUklORzoKLSAgICAgICByZXR1cm4g MDsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gMTsKLUBAIC0xNjI1LDYgKzE2MjUsNyBA QCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAotIHsKLSAgIHVu c2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7Ci0gICB1bnNpZ25lZCBsZW47Ci0rICBzdHJ1 Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqZWx0dHlwZSwgKmlu ZGV4X3R5cGU7Ci0gICB1bnNpZ25lZCBlbHRsZW47Ci0gICAvKiBQb3NpdGlvbiBvZiB0aGUgYXJy YXkgZWxlbWVudCB3ZSBhcmUgZXhhbWluaW5nIHRvIHNlZQotQEAgLTE2MzMsOSArMTYzNCwzMyBA QCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAotICAgLyogTnVt YmVyIG9mIHJlcGV0aXRpb25zIHdlIGhhdmUgZGV0ZWN0ZWQgc28gZmFyLiAgKi8KLSAgIHVuc2ln bmVkIGludCByZXBzOwotICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIENPUkVfQUREUiBzYXZlZF9hZGRyZXNzID0gYWRkcmVz czsKLSsgIAotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKLSsg IHR5cGUgPSBvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAodHlwZSwgJmFkZHJlc3MpOwotKyAgaWYg KCF0eXBlKQotKyAgICB7Ci0rICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNzX2Rh dGFfbm90X3ZhbGlkICh0eXBlKSwgc3RyZWFtKTsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190 byk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRy ZXNzKQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsK LSAKLS0gIGVsdHR5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLS0gIGVsdGxlbiA9IFRZ UEVfTEVOR1RIIChjaGVja190eXBlZGVmIChlbHR0eXBlKSk7Ci0rICAgICAgdmFsYWRkciA9IHht YWxsb2MgKGxlbmd0aCk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICop IHZhbGFkZHIpOwotKyAgICAgIHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFs YWRkciwgbGVuZ3RoKTsKLSsgICAgfQotKwotKyAgLyogU2tpcCB0eXBlZGVmcyBidXQgZG8gbm90 IHJlc29sdmUgVFlQRV9EWU5BTUlDLiAgKi8KLSsgIGVsdHR5cGUgPSBzYXZlZF90eXBlOwotKyAg d2hpbGUgKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX1RZUEVERUYpCi0rICAgIGVs dHR5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChlbHR0eXBlKTsKLSsgIGVsdHR5cGUgPSBUWVBFX1RB UkdFVF9UWVBFIChlbHR0eXBlKTsKLSsKLSsgIGVsdGxlbiA9IFRZUEVfQVJSQVlfQllURV9TVFJJ REVfVkFMVUUgKHR5cGUpOwotICAgaW5kZXhfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7 Ci0gCi0gICBpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91 bmQpKQotQEAgLTE3MjIsNiArMTc0Nyw4IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3Ry dWN0IHR5cGUgKnR5cGUsCi0gICAgIHsKLSAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIuLi4iKTsKLSAgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIH0KLSAKLSAv KiBSZWFkIExFTiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxh Y2luZyB0aGUKLWRpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCA4 NTQyMzE2Li5mNzVjZjM3IDEwMDY0NAotLS0tIGEvZ2RiL3ZhbHVlLmMKLSsrKyBiL2dkYi92YWx1 ZS5jCi1AQCAtNDMsNiArNDMsNyBAQAotICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCi0gI2luY2x1 ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKLSAKLSAvKiBQcm90b3R5cGVzIGZvciBleHBvcnRlZCBmdW5jdGlvbnMuICAqLwotIAot QEAgLTE2MjMsMTIgKzE2MjQsMTUgQEAgdm9pZAotIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRp b24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAotIAkJCSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1 ZSAqd2hvbGUpCi0gewotKyAgQ09SRV9BRERSIGFkZHI7Ci0rCi0gICBpZiAod2hvbGUtPmx2YWwg PT0gbHZhbF9pbnRlcm5hbHZhcikKLSAgICAgVkFMVUVfTFZBTCAoY29tcG9uZW50KSA9IGx2YWxf aW50ZXJuYWx2YXJfY29tcG9uZW50OwotICAgZWxzZQotICAgICBWQUxVRV9MVkFMIChjb21wb25l bnQpID0gd2hvbGUtPmx2YWw7Ci0gCi0gICBjb21wb25lbnQtPmxvY2F0aW9uID0gd2hvbGUtPmxv Y2F0aW9uOwotKwotICAgaWYgKHdob2xlLT5sdmFsID09IGx2YWxfY29tcHV0ZWQpCi0gICAgIHsK LSAgICAgICBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24u Y29tcHV0ZWQuZnVuY3M7Ci1AQCAtMTYzNiw2ICsxNjQwLDEyIEBAIHNldF92YWx1ZV9jb21wb25l bnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAotICAgICAgIGlmIChmdW5jcy0+ Y29weV9jbG9zdXJlKQotICAgICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9z dXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hvbGUpOwotICAgICB9Ci0rCi0rICBhZGRyID0g dmFsdWVfcmF3X2FkZHJlc3MgKGNvbXBvbmVudCk7Ci0rICBvYmplY3RfYWRkcmVzc19nZXRfZGF0 YSAodmFsdWVfdHlwZSAod2hvbGUpLCAmYWRkcik7Ci0rICBpZiAoY29tcG9uZW50LT5sdmFsICE9 IGx2YWxfaW50ZXJuYWx2YXIKLSsgICAgICAmJiBjb21wb25lbnQtPmx2YWwgIT0gbHZhbF9pbnRl cm5hbHZhcl9jb21wb25lbnQpCi0rICAgIHNldF92YWx1ZV9hZGRyZXNzIChjb21wb25lbnQsIGFk ZHIpOwotIH0KLSAKLSAMCi1AQCAtMTc2OSw2ICsxNzc5LDMxIEBAIHNob3dfdmFsdWVzIChjaGFy ICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCi0gICAgICAgbnVtX2V4cFsxXSA9ICdcMCc7Ci0gICAg IH0KLSB9Ci0rCi0rLyogU2FuaXR5IGNoZWNrIGZvciBtZW1vcnkgbGVha3MgYW5kIHByb3BlciB0 eXBlcyByZWZlcmVuY2UgY291bnRpbmcuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdmFsdWVfaGlz dG9yeV9jbGVhbnVwICh2b2lkICp1bnVzZWQpCi0rewotKyAgd2hpbGUgKHZhbHVlX2hpc3Rvcnlf Y2hhaW4pCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdmFsdWVfaGlzdG9yeV9jaHVuayAqY2h1bmsg PSB2YWx1ZV9oaXN0b3J5X2NoYWluOwotKyAgICAgIGludCBpOwotKwotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFIChjaHVuay0+dmFsdWVzKTsgaSsrKQotKyAgICAgIAl2YWx1ZV9m cmVlIChjaHVuay0+dmFsdWVzW2ldKTsKLSsKLSsgICAgICB2YWx1ZV9oaXN0b3J5X2NoYWluID0g Y2h1bmstPm5leHQ7Ci0rICAgICAgeGZyZWUgKGNodW5rKTsKLSsgICAgfQotKyAgdmFsdWVfaGlz dG9yeV9jb3VudCA9IDA7Ci0rCi0rICAvKiBGcmVlIHRoZSB1bnJlZmVyZW5jZWQgdHlwZXMgYWJv dmUuICAqLwotKyAgZnJlZV9hbGxfdmFsdWVzICgpOwotKyNpZiAwCi0rICBmcmVlX2FsbF90eXBl cyAoKTsKLSsjZW5kaWYKLSt9Ci0gDAotIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFy ZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgotICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNz aWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMjMwNCw2ICsyMzM5LDM4IEBAIGNhbGxf aW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcmV0dXJuICgq aWZuLT5oYW5kbGVyKSAoZ2RiYXJjaCwgbGFuZ3VhZ2UsIGlmbi0+Y29va2llLCBhcmdjLCBhcmd2 KTsKLSB9Ci0gCi0rI2lmIDAKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMg cmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK3ZhbHVlX3R5cGVzX21hcmtfdXNlZCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgaW50ZXJuYWx2 YXIgKnZhcjsKLSsgIHN0cnVjdCB2YWx1ZV9oaXN0b3J5X2NodW5rICpjaHVuazsKLSsKLSsgIGZv ciAodmFyID0gaW50ZXJuYWx2YXJzOyB2YXIgIT0gTlVMTDsgdmFyID0gdmFyLT5uZXh0KQotKyAg ICBzd2l0Y2ggKHZhci0+a2luZCkKLSsgICAgICB7Ci0rICAgICAgY2FzZSBJTlRFUk5BTFZBUl9W QUxVRToKLSsJdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKHZhci0+dS52YWx1ZSkpOwotKwli cmVhazsKLSsKLSsgICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6Ci0rCXR5cGVfbWFya191 c2VkICh2YXItPnUuaW50ZWdlci50eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgfQotKwotKyAgZm9y IChjaHVuayA9IHZhbHVlX2hpc3RvcnlfY2hhaW47IGNodW5rICE9IE5VTEw7IGNodW5rID0gY2h1 bmstPm5leHQpCi0rICAgIHsKLSsgICAgICBpbnQgaTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRSAoY2h1bmstPnZhbHVlcyk7IGkrKykKLSsJaWYgKGNodW5rLT52YWx1ZXNb aV0pCi0rCSAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGNodW5rLT52YWx1ZXNbaV0pKTsK LSsgICAgfQotK30KLSsjZW5kaWYKLSsKLSAvKiBUaGUgJ2Z1bmN0aW9uJyBjb21tYW5kLiAgVGhp cyBkb2VzIG5vdGhpbmcgLS0gaXQgaXMganVzdCBhCi0gICAgcGxhY2Vob2xkZXIgdG8gbGV0ICJo ZWxwIGZ1bmN0aW9uIE5BTUUiIHdvcmsuICBUaGlzIGlzIGFsc28gdXNlZCBhcwotICAgIHRoZSBp bXBsZW1lbnRhdGlvbiBvZiB0aGUgc3ViLWNvbW1hbmQgdGhhdCBpcyBjcmVhdGVkIHdoZW4KLUBA IC0yMzUxLDExICsyNDE4LDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2 YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkgICAgaHRhYl90IGNvcGllZF90eXBl cykKLSB7Ci0gICBpZiAoVFlQRV9PQkpGSUxFICh2YWx1ZS0+dHlwZSkgPT0gb2JqZmlsZSkKLS0g ICAgdmFsdWUtPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCB2YWx1ZS0+dHlw ZSwgY29waWVkX3R5cGVzKTsKLSsgICAgdmFsdWUtPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZl ICh2YWx1ZS0+dHlwZSwgY29waWVkX3R5cGVzKTsKLSAKLSAgIGlmIChUWVBFX09CSkZJTEUgKHZh bHVlLT5lbmNsb3NpbmdfdHlwZSkgPT0gb2JqZmlsZSkKLS0gICAgdmFsdWUtPmVuY2xvc2luZ190 eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKLS0JCQkJCQkgdmFsdWUtPmVuY2xv c2luZ190eXBlLAotKyAgICB2YWx1ZS0+ZW5jbG9zaW5nX3R5cGUgPSBjb3B5X3R5cGVfcmVjdXJz aXZlICh2YWx1ZS0+ZW5jbG9zaW5nX3R5cGUsCi0gCQkJCQkJIGNvcGllZF90eXBlcyk7Ci0gfQot IAotQEAgLTIzNzAsNyArMjQzNiw3IEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0 IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgICBjYXNlIElO VEVSTkFMVkFSX0lOVEVHRVI6Ci0gICAgICAgaWYgKHZhci0+dS5pbnRlZ2VyLnR5cGUgJiYgVFlQ RV9PQkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBlKSA9PSBvYmpmaWxlKQotIAl2YXItPnUuaW50 ZWdlci50eXBlCi0tCSAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCB2YXItPnUuaW50 ZWdlci50eXBlLCBjb3BpZWRfdHlwZXMpOwotKwkgID0gY29weV90eXBlX3JlY3Vyc2l2ZSAodmFy LT51LmludGVnZXIudHlwZSwgY29waWVkX3R5cGVzKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAg Y2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0zNDc5LDEwICszNTQ1LDI3IEBAIHJlYWRqdXN0 X2luZGlyZWN0X3ZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICpl bmNfdHlwZSwKLSBzdHJ1Y3QgdmFsdWUgKgotIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJn KQotIHsKLS0gIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2FyZ190bXAgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChhcmcpKTsKLSsgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2FyZ190bXA7 Ci0gICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKLSAgIHN0cnVjdCB0eXBlICplbmNfdHlwZTsKLSAK LSsgIGlmIChUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZykpKQotKyAgICB7Ci0rICAgICAg c3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOwotKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOwotKwotKyAgICAgIHZhbHVlX3R5cGVfYXJn X3RtcCA9IHZhbHVlX3R5cGUgKGFyZyk7Ci0rICAgICAgYWRkcmVzcyA9IHZhbHVlX3Jhd19hZGRy ZXNzIChhcmcpOwotKyAgICAgIHZhbHVlX3R5cGVfYXJnX3RtcCA9IG9iamVjdF9hZGRyZXNzX2dl dF9kYXRhICh2YWx1ZV90eXBlX2FyZ190bXAsCi0rCQkJCQkJICAgICZhZGRyZXNzKTsKLSsgICAg ICBpZiAoISB2YWx1ZV90eXBlX2FyZ190bXApCi0rCWVycm9yIChfKCJBdHRlbXB0IHRvIGNvZXJj ZSBub24tdmFsaWQgdmFsdWUuIikpOwotKyAgICAgIGFyZyA9IHZhbHVlX2F0X2xhenkgKHZhbHVl X3R5cGVfYXJnX3RtcCwgYWRkcmVzcyk7Ci0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsK LSsgICAgfQotKyAgZWxzZQotKyAgICB2YWx1ZV90eXBlX2FyZ190bXAgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChhcmcpKTsKLSsKLSAgIHJldHZhbCA9IGNvZXJjZV9yZWZfaWZfY29tcHV0 ZWQgKGFyZyk7Ci0gICBpZiAocmV0dmFsKQotICAgICByZXR1cm4gcmV0dmFsOwotQEAgLTM1OTAs NyArMzY3Myw4IEBAIGludAotIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQot IHsKLSAgIGdkYl9hc3NlcnQgKHZhbHVlX2xhenkgKHZhbCkpOwotLSAgYWxsb2NhdGVfdmFsdWVf Y29udGVudHMgKHZhbCk7Ci0rICBpZiAoVkFMVUVfTFZBTCAodmFsKSAhPSBsdmFsX21lbW9yeSkK LSsgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0gICBpZiAodmFsdWVfYml0c2l6 ZSAodmFsKSkKLSAgICAgewotICAgICAgIC8qIFRvIHJlYWQgYSBsYXp5IGJpdGZpZWxkLCByZWFk IHRoZSBlbnRpcmUgZW5jbG9zaW5nIHZhbHVlLiAgVGhpcwotQEAgLTM2MjUsMTMgKzM3MDksMjQg QEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCi0gICAgIH0KLSAgIGVsc2Ug aWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCi0gICAgIHsKLS0gICAgICBDT1JF X0FERFIgYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7Ci0tICAgICAgc3RydWN0IHR5cGUgKnR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSk7Ci0rICAgICAg Q09SRV9BRERSIGFkZHIgPSB2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKTsKLSsKLSsgICAgICBpZiAo b2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHZhbHVlX3R5cGUgKHZhbCksICZhZGRyKSkKLSsJewot KwkgIHN0cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCk7Ci0rCSAg aW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmICh0eXBlKSk7Ci0gCi0tICAg ICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSkKLS0JcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwg dmFsdWVfc3RhY2sgKHZhbCksCi0tCQkJICAgYWRkciwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAo dmFsKSwKLS0JCQkgICBUWVBFX0xFTkdUSCAodHlwZSkpOwotKwkgIGlmIChsZW5ndGgpCi0rCSAg ICB7Ci0rCSAgICAgIC8qIERlbGF5IGl0IGFmdGVyIG9iamVjdF9hZGRyZXNzX2dldF9kYXRhIGFi b3ZlLiAgKi8KLSsJICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0rCSAgICAg IGFkZHIgKz0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotKwkgICAgICByZWFkX3ZhbHVlX21lbW9yeSAo dmFsLCAwLCB2YWx1ZV9zdGFjayAodmFsKSwKLSsJCQkJIGFkZHIsIHZhbHVlX2NvbnRlbnRzX2Fs bF9yYXcgKHZhbCksIGxlbmd0aCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICAvKiBKdXN0IHRvIGJl IHN1cmUgaXQgaGFzIGJlZW4gY2FsbGVkLiAgKi8KLSsgICAgICBhbGxvY2F0ZV92YWx1ZV9jb250 ZW50cyAodmFsKTsKLSAgICAgfQotICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFs X3JlZ2lzdGVyKQotICAgICB7Ci1AQCAtMzgxNCw0ICszOTA5LDEwIEBAIENoZWNrIHdoZXRoZXIg YW4gZXhwcmVzc2lvbiBpcyB2b2lkLlxuXAotIFVzYWdlOiAkX2lzdm9pZCAoZXhwcmVzc2lvbilc blwKLSBSZXR1cm4gMSBpZiB0aGUgZXhwcmVzc2lvbiBpcyB2b2lkLCB6ZXJvIG90aGVyd2lzZS4i KSwKLSAJCQkgaXN2b2lkX2ludGVybmFsX2ZuLCBOVUxMKTsKLSsKLSsgIG1ha2VfZmluYWxfY2xl YW51cCAodmFsdWVfaGlzdG9yeV9jbGVhbnVwLCBOVUxMKTsKLSsKLSsjaWYgMAotKyAgb2JzZXJ2 ZXJfYXR0YWNoX21hcmtfdXNlZCAodmFsdWVfdHlwZXNfbWFya191c2VkKTsKLSsjZW5kaWYKLSB9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAotaW5kZXggNTkyNGIyZi4u ZWFlMzU1MyAxMDA2NDQKLS0tLSBhL2dkYi92YWx1ZS5oCi0rKysgYi9nZGIvdmFsdWUuaAotQEAg LTU3MSw2ICs1NzEsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9kZWNmbG9h dCAoc3RydWN0IHR5cGUgKnR5cGUsCi0gCQkJCQkgIGNvbnN0IGdkYl9ieXRlICpkZWNieXRlcyk7 Ci0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9oaXN0b3J5X3JlZiAoY2hhciAqLCBj aGFyICoqKTsKLSAKLStleHRlcm4gY29uc3QgY2hhciAqb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3Rf dmFsaWQgKHN0cnVjdCB0eXBlICp0eXBlKTsKLStleHRlcm4gc3RydWN0IHR5cGUgKm9iamVjdF9h ZGRyZXNzX2dldF9kYXRhIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCSAgICAgQ09SRV9BRERS ICphZGRyZXNzX3JldHVybik7Ci0rCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXQgKHN0 cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7Ci0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq dmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKLSAKCmRp ZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoIGIvZ2RiLWF0dGFj aC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRjaAppbmRleCAxZjU4ZDM0Li45MWQyOTU5IDEwMDY0NAot LS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCisrKyBiL2dkYi1hdHRhY2gt ZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKQEAgLTM3LDEwICszNywxMCBAQCBnZGIvZ2Ric2VydmVy LwogCShsaW51eF9jcmVhdGVfaW5mZXJpb3IsIGxpbnV4X3RyYWNlZm9ya19jaGlsZCk6IENhbGwg aXQgaW5zdGVhZCBvZgogCWRpcmVjdCBwdHJhY2UuCiAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5 L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIw MTQwMTI3Lm9yaWcvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwkyMDE0LTAyLTA2IDE3OjQwOjMy LjUzMDE0NTk2MCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbW1vbi9saW51 eC1wdHJhY2UuYwkyMDE0LTAyLTA2IDE3OjQ4OjE2LjMyOTY0NDUzNCArMDEwMAorLS0tIGdkYi03 LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTQtMDYtMTMg MjA6Mjg6MDQuMzc1ODg0ODI4ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvY29t bW9uL2xpbnV4LXB0cmFjZS5jCTIwMTQtMDYtMTMgMjA6Mjg6NTcuNTE0OTQwMDc5ICswMjAwCiBA QCAtMzIsNiArMzIsMTAgQEAKICAKICAjaW5jbHVkZSA8c3RkaW50Lmg+CkBAIC01MiwxNiArNTIs MTYgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2Uu YwogIC8qIFN0b3JlcyB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCBwdHJhY2Ugb3B0aW9ucy4gIEEg dmFsdWUgb2YKICAgICAtMSBtZWFucyB3ZSBkaWQgbm90IGNoZWNrIGZvciBmZWF0dXJlcyB5ZXQu ICBBIHZhbHVlIG9mIDAgbWVhbnMKICAgICB0aGVyZSBhcmUgbm8gc3VwcG9ydGVkIGZlYXR1cmVz LiAgKi8KLUBAIC01Niw2ICs2MCw4IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBp ZF90IHBpZCwKLSAgICAgYnVmZmVyX3htbF9wcmludGYgKGJ1ZmZlciwgXygid2FybmluZzogcHJv Y2VzcyAlZCBpcyBhIHpvbWJpZSAiCi0gCQkJCSAiLSB0aGUgcHJvY2VzcyBoYXMgYWxyZWFkeSB0 ZXJtaW5hdGVkXG4iKSwKK0BAIC01Niw2ICs2MCw4IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hfZmFp bF9yZWFzb24gKHBpZF90IHAKKyAgICAgYnVmZmVyX3htbF9wcmludGYgKGJ1ZmZlciwgXygicHJv Y2VzcyAlZCBpcyBhIHpvbWJpZSAiCisgCQkJCSAiLSB0aGUgcHJvY2VzcyBoYXMgYWxyZWFkeSB0 ZXJtaW5hdGVkIiksCiAgCQkgICAgICAgKGludCkgcGlkKTsKICsKICsgIGxpbnV4X3B0cmFjZV9j cmVhdGVfd2FybmluZ3MgKGJ1ZmZlcik7CiAgfQogIAogICNpZiBkZWZpbmVkIF9faTM4Nl9fIHx8 IGRlZmluZWQgX194ODZfNjRfXwotQEAgLTU0MiwzICs1NDgsMTkgQEAgbGludXhfcHRyYWNlX2lu aXRfd2FybmluZ3MgKHZvaWQpCitAQCAtNTUxLDMgKzU1NywxOSBAQCBsaW51eF9wdHJhY2VfaW5p dF93YXJuaW5ncyAodm9pZCkKICAKICAgIGxpbnV4X3B0cmFjZV90ZXN0X3JldF90b19ueCAoKTsK ICB9CkBAIC04MSwyMyArODEsMjMgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2Nv bW1vbi9saW51eC1wdHJhY2UuYwogKwkJCSAiKGdkYikgc2hlbGwgc3VkbyBzZXRzZWJvb2wgZGVu eV9wdHJhY2U9MCIpKTsKICsjZW5kaWYgLyogSEFWRV9MSUJTRUxJTlVYICovCiArfQotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAorSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIw MTQtMDItMDYgMTc6NDA6MzUuNTA2MTQ5MTYyICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTQtMDItMDYgMTc6NDg6MDAuNjAxNjI3OTk1 ICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb21tb24vbGludXgtcHRy YWNlLmgJMjAxNC0wNi0xMyAyMDoyODoxNC4zNzU4OTUyMDIgKzAyMDAKKysrKyBnZGItNy43LjUw LjIwMTQwNjA5L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxNC0wNi0xMyAyMDoyODozMy4y OTg5MTQwNDcgKzAyMDAKIEBAIC04NSw2ICs4NSw3IEBAIHN0cnVjdCBidWZmZXI7CiAgCi0gZXh0 ZXJuIHZvaWQgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkLCBzdHJ1Y3Qg YnVmZmVyICpidWZmZXIpOworIGV4dGVybiB2b2lkIGxpbnV4X3B0cmFjZV9hdHRhY2hfZmFpbF9y ZWFzb24gKHBpZF90IHBpZCwgc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKICBleHRlcm4gdm9pZCBs aW51eF9wdHJhY2VfaW5pdF93YXJuaW5ncyAodm9pZCk7CiArZXh0ZXJuIHZvaWQgbGludXhfcHRy YWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKICBleHRlcm4gdm9p ZCBsaW51eF9lbmFibGVfZXZlbnRfcmVwb3J0aW5nIChwaWRfdCBwaWQpOworIGV4dGVybiB2b2lk IGxpbnV4X2Rpc2FibGVfZXZlbnRfcmVwb3J0aW5nIChwaWRfdCBwaWQpOwogIGV4dGVybiBpbnQg bGludXhfc3VwcG9ydHNfdHJhY2Vmb3JrICh2b2lkKTsKLSBleHRlcm4gaW50IGxpbnV4X3N1cHBv cnRzX3RyYWNlY2xvbmUgKHZvaWQpOwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2Nv bmZpZ3VyZS5hYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZ3VyZS5hYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29uZmlndXJlLmFj CTIwMTQtMDItMDYgMTc6NDA6MzIuNTMyMTQ1OTYyICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvY29uZmlndXJlLmFjCTIwMTQtMDItMDYgMTc6NDA6MzUuNTA3MTQ5MTYzICswMTAw Ci1AQCAtMTk3NSw2ICsxOTc1LDEwIEBAIGNhc2UgJGhvc3Rfb3MgaW4KKy0tLSBnZGItNy43LjUw LjIwMTQwNjA5Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjI4OjA0LjM3Nzg4 NDgzMCArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZ3VyZS5hYwkyMDE0 LTA2LTEzIDIwOjI4OjE0LjM3Njg5NTIwMyArMDIwMAorQEAgLTIxMzgsNiArMjEzOCwxMCBAQCBj YXNlICRob3N0X29zIGluCiAgZXNhYwogIEFDX0RFRklORV9VTlFVT1RFRChHREJJTklULCIkZ2Ri aW5pdCIsW1RoZSAuZ2RiaW5pdCBmaWxlbmFtZS5dKQogIApAQCAtMTA4LDEwICsxMDgsMTAgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZS5hYwogIGRubCBIYW5kbGUg b3B0aW9uYWwgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZC4KICAKICAjIFN1cHBvcnQgZm9y IC0td2l0aC1zeXNyb290IGlzIGEgY29weSBvZiBHREJfQUNfV0lUSF9ESVIsCi1JbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdkYi03 LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMJMjAx NC0wMi0wNiAxNzo0MDozMi41MzIxNDU5NjIgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTQtMDItMDYgMTc6NDA6MzUuNTA3MTQ5MTYz ICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9nZGJzZXJ2ZXIvY29uZmln dXJlLmFjCTIwMTQtMDYtMTMgMjA6Mjg6MDQuMzc3ODg0ODMwICswMjAwCisrKysgZ2RiLTcuNy41 MC4yMDE0MDYwOS9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjI4OjE0 LjM3Njg5NTIwMyArMDIwMAogQEAgLTQ1NCw2ICs0NTQsMTAgQEAgaWYgJHdhbnRfaXBhIDsgdGhl bgogICAgIGZpCiAgZmkKQEAgLTEyMywxMSArMTIzLDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCiAgQUNfU1VCU1QoR0RCU0VSVkVSX0RF UEZJTEVTKQogIEFDX1NVQlNUKEdEQlNFUlZFUl9MSUJTKQogIEFDX1NVQlNUKHNydl94bWxidWls dGluKQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cu YworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZ2Ric2VydmVyL2xp bnV4LWxvdy5jCTIwMTQtMDItMDYgMTc6NDA6MzIuNTM0MTQ1OTY0ICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTQtMDItMDYgMTc6NDk6 MzIuMzg1NzI2NTE0ICswMTAwCi1AQCAtNTQzLDYgKzU0MywyOSBAQCBhZGRfbHdwIChwdGlkX3Qg cHRpZCkKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2dkYnNlcnZlci9saW51eC1s b3cuYwkyMDE0LTA2LTEzIDIwOjI4OjA0LjM3OTg4NDgzMiArMDIwMAorKysrIGdkYi03LjcuNTAu MjAxNDA2MDkvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDE0LTA2LTEzIDIwOjI4OjE0LjM3 Nzg5NTIwNCArMDIwMAorQEAgLTU0MSw2ICs1NDEsMjkgQEAgYWRkX2x3cCAocHRpZF90IHB0aWQp CiAgICByZXR1cm4gbHdwOwogIH0KICAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBJbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCiAgLyogU3RhcnQgYW4gaW5m ZXJpb3IgcHJvY2VzcyBhbmQgcmV0dXJucyBpdHMgcGlkLgogICAgIEFMTEFSR1MgaXMgYSB2ZWN0 b3Igb2YgcHJvZ3JhbS1uYW1lIGFuZCBhcmdzLiAqLwogIAotQEAgLTU4NCw3ICs2MDcsNyBAQCBs aW51eF9jcmVhdGVfaW5mZXJpb3IgKGNoYXIgKnByb2dyYW0sIGNoCitAQCAtNTgyLDcgKzYwNSw3 IEBAIGxpbnV4X2NyZWF0ZV9pbmZlcmlvciAoY2hhciAqcHJvZ3JhbSwgY2gKICAgIGlmIChwaWQg PT0gMCkKICAgICAgewogICAgICAgIGNsb3NlX21vc3RfZmRzICgpOwpAQCAtMTY2LDEwICsxNjYs MTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cu YwogIAogICNpZm5kZWYgX19BTkRST0lEX18gLyogQmlvbmljIGRvZXNuJ3QgdXNlIFNJR1JUTUlO IHRoZSB3YXkgZ2xpYmMgZG9lcy4gICovCiAgICAgICAgc2lnbmFsIChfX1NJR1JUTUlOICsgMSwg U0lHX0RGTCk7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5mLXB0cmFjZS5jCitJ bmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvaW5mLXB0cmFjZS5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9pbmYtcHRyYWNlLmMJMjAxNC0wMi0wNiAx Nzo0MDozMi41MzUxNDU5NjUgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pbmYt cHRyYWNlLmMJMjAxNC0wMi0wNiAxNzo0MDozNS41MTAxNDkxNjcgKzAxMDAKKy0tLSBnZGItNy43 LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2luZi1wdHJhY2UuYwkyMDE0LTA2LTEzIDIwOjI4OjA0LjM4 MDg4NDgzMyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2luZi1wdHJhY2UuYwky MDE0LTA2LTEzIDIwOjI4OjE0LjM3Nzg5NTIwNCArMDIwMAogQEAgLTEwNSw3ICsxMDUsMTUgQEAg c3RhdGljIHZvaWQKICBpbmZfcHRyYWNlX21lICh2b2lkKQogIHsKQEAgLTE4NiwxMSArMTg2LDEx IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pbmYtcHRyYWNlLmMKICB9CiAgCiAg LyogU3RhcnQgYSBuZXcgaW5mZXJpb3IgVW5peCBjaGlsZCBwcm9jZXNzLiAgRVhFQ19GSUxFIGlz IHRoZSBmaWxlIHRvCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbGludXgtbmF0LmMK K0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxNC0wMi0wNiAx Nzo0MDozMi41MzcxNDU5NjggKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9saW51 eC1uYXQuYwkyMDE0LTAyLTA2IDE3OjQwOjM1LjUxMTE0OTE2OCArMDEwMAotQEAgLTEyODMsNiAr MTI4Myw3IEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKKy0tLSBn ZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTQtMDYtMTMgMjA6Mjg6 MDQuMzgyODg0ODM1ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvbGludXgtbmF0 LmMJMjAxNC0wNi0xMyAyMDoyOTozNC41NTQ5Nzc5OTUgKzAyMDAKK0BAIC0xMjg1LDYgKzEyODUs NyBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CiAgI2lmZGVmIEhB VkVfUEVSU09OQUxJVFkKICAgIGludCBwZXJzb25hbGl0eV9vcmlnID0gMCwgcGVyc29uYWxpdHlf c2V0ID0gMDsKICAjZW5kaWYgLyogSEFWRV9QRVJTT05BTElUWSAqLwpAQCAtMTk4LDkgKzE5OCw5 IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9saW51eC1uYXQuYwogIAogICAgLyog VGhlIGZvcmtfY2hpbGQgbWVjaGFuaXNtIGlzIHN5bmNocm9ub3VzIGFuZCBjYWxscyB0YXJnZXRf d2FpdCwgc28KICAgICAgIHdlIGhhdmUgdG8gbWFzayB0aGUgYXN5bmMgbW9kZS4gICovCi1AQCAt MTMwNyw3ICsxMzA4LDEwIEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJn ZXQKK0BAIC0xMzA5LDcgKzEzMTAsMTAgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3Ry dWN0IHRhcmdldAogICAgLyogTWFrZSBzdXJlIHdlIHJlcG9ydCBhbGwgc2lnbmFscyBkdXJpbmcg c3RhcnR1cC4gICovCi0gICBsaW51eF9uYXRfcGFzc19zaWduYWxzICgwLCBOVUxMKTsKKyAgIGxp bnV4X25hdF9wYXNzX3NpZ25hbHMgKG9wcywgMCwgTlVMTCk7CiAgCiAtICBsaW51eF9vcHMtPnRv X2NyZWF0ZV9pbmZlcmlvciAob3BzLCBleGVjX2ZpbGUsIGFsbGFyZ3MsIGVudiwgZnJvbV90dHkp OwogKyAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCkBAIC0yMTAsNyArMjEwLDcg QEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2xpbnV4LW5hdC5jCiAgCiAgI2lmZGVm IEhBVkVfUEVSU09OQUxJVFkKICAgIGlmIChwZXJzb25hbGl0eV9zZXQpCi1AQCAtMTMxOSw2ICsx MzIzLDI0IEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKK0BAIC0x MzIxLDYgKzEzMjUsMjQgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdl dAogIAkJIHNhZmVfc3RyZXJyb3IgKGVycm5vKSk7CiAgICAgIH0KICAjZW5kaWYgLyogSEFWRV9Q RVJTT05BTElUWSAqLwpAQCAtMjM1LDExICsyMzUsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1JbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvY29uZmlnLmluCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9jb25maWcuaW4JMjAxNC0wMi0wNiAxNzo0MDozMi41MzgxNDU5NjkgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcuaW4JMjAxNC0wMi0wNiAxNzo0MDozNS41MTExNDkx NjggKzAxMDAKLUBAIC0yMTMsNiArMjEzLDkgQEAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9y aWcvZ2RiL2NvbmZpZy5pbgkyMDE0LTA2LTEzIDIwOjI4OjA0LjM4Mzg4NDgzNiArMDIwMAorKysr IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy5pbgkyMDE0LTA2LTEzIDIwOjI5OjU3LjM3 ODAwMjA2NyArMDIwMAorQEAgLTIxNiw2ICsyMTYsOSBAQAogIC8qIERlZmluZSBpZiBsaWJycG0g bGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlJQTQogIApAQCAtMjQ5 LDkgKzI0OSw5IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcuaW4KICAv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1pYTY0Lmg+IGhlYWRlciBm aWxlLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKICAKLUBAIC0zNDUsNiArMzQ4 LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNicmsnIGZ1bmN0aW9uLiAq LwotICN1bmRlZiBIQVZFX1NCUksKK0BAIC0zNTEsNiArMzU0LDkgQEAKKyAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgYHNjbV9uZXdfc21vYicgZnVuY3Rpb24uICovCisgI3VuZGVmIEhB VkVfU0NNX05FV19TTU9CCiAgCiArLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxp bnV4L3NlbGludXguaD4gaGVhZGVyIGZpbGUuICovCiArI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJ TlVYX0gKQEAgLTI1OSwxMSArMjU5LDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGxvY2FsZScg ZnVuY3Rpb24uICovCiAgI3VuZGVmIEhBVkVfU0VUTE9DQUxFCiAgCi1JbmRleDogZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvY29uZmlndXJlCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIv Y29uZmlndXJlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9j b25maWd1cmUJMjAxNC0wMi0wNiAxNzo0MDozMi41NDExNDU5NzIgKzAxMDAKLSsrKyBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUJMjAxNC0wMi0wNiAxNzo0MDozNS41MTUxNDkxNzIg KzAxMDAKLUBAIC0xMjg2MSw2ICsxMjg2MSw2NCBAQCBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G CistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb25maWd1cmUJMjAxNC0wNi0xMyAy MDoyODowNC4zODc4ODQ4NDAgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25m aWd1cmUJMjAxNC0wNi0xMyAyMDoyODoxNC4zODM4OTUyMTAgKzAyMDAKK0BAIC0xMzI4Miw2ICsx MzI4Miw2NCBAQCBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAgX0FDRU9GCiAgCiAgCkBAIC0z MjgsMTEgKzMyOCwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlndXJl CiAgCiAgIyBTdXBwb3J0IGZvciAtLXdpdGgtc3lzcm9vdCBpcyBhIGNvcHkgb2YgR0RCX0FDX1dJ VEhfRElSLAogICMgZXhjZXB0IHRoYXQgdGhlIGFyZ3VtZW50IHRvIC0td2l0aC1zeXNyb290IGlz IG9wdGlvbmFsLgotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25m aWcuaW4KK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9nZGJzZXJ2ZXIvY29uZmlnLmlu CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9nZGJzZXJ2ZXIv Y29uZmlnLmluCTIwMTQtMDItMDYgMTc6NDA6MzIuNTQyMTQ1OTczICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2NvbmZpZy5pbgkyMDE0LTAyLTA2IDE3OjU0OjA2 LjkyMzAyMTc5OSArMDEwMAotQEAgLTc4LDYgKzc4LDkgQEAKKy0tLSBnZGItNy43LjUwLjIwMTQw NjA5Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAxNC0wNi0xMyAyMDoyODowNC4zODk4 ODQ4NDIgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9nZGJzZXJ2ZXIvY29uZmln LmluCTIwMTQtMDYtMTMgMjA6Mjg6MTQuMzgzODk1MjEwICswMjAwCitAQCAtODEsNiArODEsOSBA QAogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWNoZWNrJyBsaWJyYXJ5ICgtbG1j aGVjaykuICovCiAgI3VuZGVmIEhBVkVfTElCTUNIRUNLCiAgCkBAIC0zNDIsNyArMzQyLDcgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4KICAvKiBE ZWZpbmUgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBicmFuY2ggdHJhY2luZy4gKi8KICAjdW5kZWYg SEFWRV9MSU5VWF9CVFJBQ0UKICAKLUBAIC0xNTEsNiArMTU0LDkgQEAKK0BAIC0xNTQsNiArMTU3 LDkgQEAKICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rJyBmdW5jdGlv bi4gKi8KICAjdW5kZWYgSEFWRV9SRUFETElOSwogIApAQCAtMzUyLDEwICszNTIsMTAgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4KICAvKiBEZWZp bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNndHR5Lmg+IGhlYWRlciBmaWxlLiAqLwogICN1bmRl ZiBIQVZFX1NHVFRZX0gKICAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9nZGJzZXJ2 ZXIvY29uZmlndXJlCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZ2Ric2VydmVyL2Nv bmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZ2Ri c2VydmVyL2NvbmZpZ3VyZQkyMDE0LTAyLTA2IDE3OjQwOjMyLjU0MzE0NTk3NCArMDEwMAotKysr IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUJMjAxNC0wMi0wNiAx Nzo0MDozNS41MTYxNDkxNzMgKzAxMDAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2Ri L2dkYnNlcnZlci9jb25maWd1cmUJMjAxNC0wNi0xMyAyMDoyODowNC4zOTA4ODQ4NDQgKzAyMDAK KysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlCTIwMTQtMDYt MTMgMjA6Mjg6MTQuMzg0ODk1MjExICswMjAwCiBAQCAtNjE3MCw2ICs2MTcwLDY0IEBAIGlmICR3 YW50X2lwYSA7IHRoZW4KICAgICBmaQogIGZpCgpkaWZmIC0tZ2l0IGEvZ2RiLWJmZC1kZW1hbmds ZWQtbmFtZXMucGF0Y2ggYi9nZGItYmZkLWRlbWFuZ2xlZC1uYW1lcy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmJkODM0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWJmZC1kZW1hbmdsZWQtbmFtZXMucGF0Y2gKQEAgLTAsMCArMSwyMDcgQEAKK1JlOiBBU0FOIGNy YXNoIHJlZ3Jlc3Npb24gW1JlOiBbUEFUQ0ggMi8yXSBtb3ZlIHRoZSBkZW1hbmdsZWRfbmFtZXNf aGFzaCBpbnRvIHRoZSBwZXItQkZEXQoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDE0LTA2L21zZzAwNTUwLmh0bWwKKworSmFuPiAuL2NvbmZpZ3VyZSAuLi4gLWZzYW5p dGl6ZT1hZGRyZXNzCitKYW4+IGVjaG8gJ3ZvaWQgZigpe31tYWluKCl7fSd8Z2NjIC14IGMrKyAt IC1nO0FTQU5fT1BUSU9OUz1zeW1ib2xpemU9MSBBU0FOX1NZTUJPTElaRVJfUEFUSD0vdXNyL2Jp bi9sbHZtLXN5bWJvbGl6ZXIgLi9nZGIgLWJhdGNoIGEub3V0IC1leCAnZmlsZSBhLm91dCcKKwor UmVhZGlseSBzZWVuIHdpdGggdmFsZ3JpbmQgYXMgd2VsbC4KKworSGVyZSdzIG15IHByb3Bvc2Vk IGZpeC4KKworVG9tCisKK2NvbW1pdCAzYTkzYTY3YWQwZWEzNDk1ZjY3Yzk3MDg2NzMzNDViNzNk ZTJkODA2CitBdXRob3I6IFRvbSBUcm9tZXkgPHRyb21leUByZWRoYXQuY29tPgorRGF0ZTogICBN b24gSnVuIDE2IDAzOjE3OjE5IDIwMTQgLTA2MDAKKworICAgIGZpeCBtZW1vcnkgZXJyb3JzIHdp dGggZGVtYW5nbGVkIG5hbWUgaGFzaAorICAgIAorICAgIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9u IHRoYXQgSmFuIHBvaW50ZWQgb3V0LgorICAgIAorICAgIFRoZSBidWcgaXMgdGhhdCBzb21lIG5h bWVzIHdlcmUgYWxsb2NhdGVkIGJ5IGR3YXJmMnJlYWQgb24gdGhlIG9iamZpbGUKKyAgICBvYnN0 YWNrLCBidXQgdGhlbiBwYXNzZWQgdG8gU1lNQk9MX1NFVF9OQU1FUyB3aXRoIGNvcHlfbmFtZT0w LiAgVGhpcworICAgIHZpb2xhdGVzIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgbmFtZXMgbXVzdCBo YXZlIGEgbGlmZXRpbWUgdGllZCB0byB0aGUKKyAgICBsaWZldGltZSBvZiB0aGUgQkZELgorICAg IAorICAgIFRoZSBmaXggaXMgdG8gYWxsb2NhdGUgbmFtZXMgb24gdGhlIHBlci1CRkQgb2JzdGFj ay4KKyAgICAKKyAgICBJIGxvb2tlZCBhdCBhbGwgY2FsbGVycywgZGlyZWN0IG9yIGluZGlyZWN0 LCBvZiBTWU1CT0xfU0VUX05BTUVTIHRoYXQKKyAgICBwYXNzIGNvcHlfbmFtZT0wLiAgTm90ZSB0 aGF0IG9ubHkgdGhlIEVMRiBhbmQgRFdBUkYgcmVhZGVycyBkbyB0aGlzOworICAgIG90aGVyIHN5 bWJvbCByZWFkZXJzIHdlcmUgbmV2ZXIgdXBkYXRlZCAoYW5kIHBlcmhhcHMgY2Fubm90IGJlLAor ICAgIGRlcGVuZGluZyBvbiB0aGUgZGV0YWlscyBvZiB0aGUgZm9ybWF0cykuICBUaGlzIGlzIHdo eSB0aGUgcGF0Y2ggaXMKKyAgICByZWxhdGl2ZWx5IHNtYWxsLgorICAgIAorICAgIEJ1aWx0IGFu ZCByZWd0ZXN0ZWQgb24geDg2LTY0IEZlZG9yYSAyMC4KKyAgICAKKyAgICAyMDE0LTA2LTE2ICBU b20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgICAgCisgICAgCSogZHdhcmYycmVhZC5j IChmaXh1cF9nb19wYWNrYWdpbmcsIGR3YXJmMl9jb21wdXRlX25hbWUpCisgICAgCShkd2FyZjJf cGh5c25hbWUsIHJlYWRfcGFydGlhbF9kaWUpCisgICAgCShndWVzc19wYXJ0aWFsX2RpZV9zdHJ1 Y3R1cmVfbmFtZSwgZml4dXBfcGFydGlhbF9kaWUpCisgICAgCShndWVzc19mdWxsX2RpZV9zdHJ1 Y3R1cmVfbmFtZSwgYW5vbnltb3VzX3N0cnVjdF9wcmVmaXgpCisgICAgCShkd2FyZjJfbmFtZSk6 IFVzZSBwZXItQkZEIG9ic3RhY2suCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9D aGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTMgQEAKKyAyMDE0LTA2LTE2ICBUb20gVHJvbWV5ICA8dHJv bWV5QHJlZGhhdC5jb20+CisgCisrCSogZHdhcmYycmVhZC5jIChmaXh1cF9nb19wYWNrYWdpbmcs IGR3YXJmMl9jb21wdXRlX25hbWUpCisrCShkd2FyZjJfcGh5c25hbWUsIHJlYWRfcGFydGlhbF9k aWUpCisrCShndWVzc19wYXJ0aWFsX2RpZV9zdHJ1Y3R1cmVfbmFtZSwgZml4dXBfcGFydGlhbF9k aWUpCisrCShndWVzc19mdWxsX2RpZV9zdHJ1Y3R1cmVfbmFtZSwgYW5vbnltb3VzX3N0cnVjdF9w cmVmaXgpCisrCShkd2FyZjJfbmFtZSk6IFVzZSBwZXItQkZEIG9ic3RhY2suCisrCisrMjAxNC0w Ni0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorKworIAkqIG1pbnN5bXMuaCAo cHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wpCisgCShwcmltX3JlY29yZF9taW5pbWFsX3N5bWJv bF9hbmRfaW5mbyk6IFVwZGF0ZSBjb21tZW50cy4KKyAKKy0tLSBhL2dkYi9kd2FyZjJyZWFkLmMK KysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKK0BAIC03NzQ1LDkgKzc3NDUsMTAgQEAgZml4dXBfZ29f cGFja2FnaW5nIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIGlmIChwYWNrYWdlX25hbWUgIT0g TlVMTCkKKyAgICAgeworICAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZp bGU7CistICAgICAgY29uc3QgY2hhciAqc2F2ZWRfcGFja2FnZV9uYW1lID0gb2JzdGFja19jb3B5 MCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkJCQkgICAgICBwYWNrYWdlX25hbWUs CistCQkJCQkJICAgICAgc3RybGVuIChwYWNrYWdlX25hbWUpKTsKKysgICAgICBjb25zdCBjaGFy ICpzYXZlZF9wYWNrYWdlX25hbWUKKysJPSBvYnN0YWNrX2NvcHkwICgmb2JqZmlsZS0+cGVyX2Jm ZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCSBwYWNrYWdlX25hbWUsCisrCQkJIHN0cmxlbiAocGFj a2FnZV9uYW1lKSk7CisgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBpbml0X3R5cGUgKFRZUEVf Q09ERV9NT0RVTEUsIDAsIDAsCisgCQkJCSAgICAgc2F2ZWRfcGFja2FnZV9uYW1lLCBvYmpmaWxl KTsKKyAgICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CitAQCAtODM2NSw2ICs4MzY2LDggQEAgZHdh cmYyX2NvbXB1dGVfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwKKyAJICBsb25nIGxlbmd0aDsKKyAJ ICBjb25zdCBjaGFyICpwcmVmaXg7CisgCSAgc3RydWN0IHVpX2ZpbGUgKmJ1ZjsKKysJICBjaGFy ICppbnRlcm1lZGlhdGVfbmFtZTsKKysJICBjb25zdCBjaGFyICpjYW5vbmljYWxfbmFtZSA9IE5V TEw7CisgCisgCSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7CisgCSAgYnVm ID0gbWVtX2ZpbGVvcGVuICgpOworQEAgLTg1NDEsMTkgKzg1NDQsMjUgQEAgZHdhcmYyX2NvbXB1 dGVfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwKKyAJCX0KKyAJICAgIH0KKyAKKy0JICBuYW1lID0g dWlfZmlsZV9vYnNhdmVzdHJpbmcgKGJ1ZiwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0J CQkJICAgICAgICZsZW5ndGgpOworKwkgIGludGVybWVkaWF0ZV9uYW1lID0gdWlfZmlsZV94c3Ry ZHVwIChidWYsICZsZW5ndGgpOworIAkgIHVpX2ZpbGVfZGVsZXRlIChidWYpOworIAorIAkgIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCistCSAgICB7CistCSAgICAgIGNvbnN0 IGNoYXIgKmNuYW1lCistCQk9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAobmFtZSwgY3UsCist CQkJCQkgICAgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7CisrCSAgICBjYW5vbmljYWxfbmFt ZQorKwkgICAgICA9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAoaW50ZXJtZWRpYXRlX25hbWUs IGN1LAorKwkJCQkJICAmb2JqZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrKTsKKysKKysJ ICAvKiBJZiB3ZSBvbmx5IGNvbXB1dGVkIElOVEVSTUVESUFURV9OQU1FLCBvciBpZgorKwkgICAg IElOVEVSTUVESUFURV9OQU1FIGlzIGFscmVhZHkgY2Fub25pY2FsLCB0aGVuIHdlIG5lZWQgdG8K KysJICAgICBjb3B5IGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBvYnN0YWNrLiAgKi8KKysJICBpZiAo Y2Fub25pY2FsX25hbWUgPT0gTlVMTCB8fCBjYW5vbmljYWxfbmFtZSA9PSBpbnRlcm1lZGlhdGVf bmFtZSkKKysJICAgIG5hbWUgPSBvYnN0YWNrX2NvcHkwICgmb2JqZmlsZS0+cGVyX2JmZC0+c3Rv cmFnZV9vYnN0YWNrLAorKwkJCQkgIGludGVybWVkaWF0ZV9uYW1lLAorKwkJCQkgIHN0cmxlbiAo aW50ZXJtZWRpYXRlX25hbWUpKTsKKysJICBlbHNlCisrCSAgICBuYW1lID0gY2Fub25pY2FsX25h bWU7CisgCistCSAgICAgIGlmIChjbmFtZSAhPSBOVUxMKQorLQkJbmFtZSA9IGNuYW1lOworLQkg ICAgfQorKwkgIHhmcmVlIChpbnRlcm1lZGlhdGVfbmFtZSk7CisgCX0KKyAgICAgfQorIAorQEAg LTg1NjIsNyArODU3MSw3IEBAIGR3YXJmMl9jb21wdXRlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUs CisgCisgLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiBESUUsIGJhc2VkIG9u IGl0cyBEV19BVF9uYW1lLgorICAgIElmIHNjb3BlIHF1YWxpZmllcnMgYXJlIGFwcHJvcHJpYXRl IHRoZXkgd2lsbCBiZSBhZGRlZC4gIFRoZSByZXN1bHQKKy0gICB3aWxsIGJlIGFsbG9jYXRlZCBv biB0aGUgb2JqZmlsZV9vYnN0YWNrLCBvciBOVUxMIGlmIHRoZSBESUUgZG9lcworKyAgIHdpbGwg YmUgYWxsb2NhdGVkIG9uIHRoZSBzdG9yYWdlX29ic3RhY2ssIG9yIE5VTEwgaWYgdGhlIERJRSBk b2VzCisgICAgbm90IGhhdmUgYSBuYW1lLiAgTkFNRSBtYXkgZWl0aGVyIGJlIGZyb20gYSBwcmV2 aW91cyBjYWxsIHRvCisgICAgZHdhcmYyX25hbWUgb3IgTlVMTC4KKyAKK0BAIC04Njc3LDcgKzg2 ODYsOCBAQCBkd2FyZjJfcGh5c25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgcmV0dmFsID0gY2Fub247CisgCisg ICBpZiAobmVlZF9jb3B5KQorLSAgICByZXR2YWwgPSBvYnN0YWNrX2NvcHkwICgmb2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLCByZXR2YWwsIHN0cmxlbiAocmV0dmFsKSk7CisrICAgIHJldHZhbCA9 IG9ic3RhY2tfY29weTAgKCZvYmpmaWxlLT5wZXJfYmZkLT5zdG9yYWdlX29ic3RhY2ssCisrCQkJ ICAgIHJldHZhbCwgc3RybGVuIChyZXR2YWwpKTsKKyAKKyAgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKKyAgIHJldHVybiByZXR2YWw7CitAQCAtMTU1MDgsNyArMTU1MTgsNyBAQCByZWFkX3BhcnRp YWxfZGllIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAorIAkgICAgZGVm YXVsdDoKKyAJICAgICAgcGFydF9kaWUtPm5hbWUKKyAJCT0gZHdhcmYyX2Nhbm9uaWNhbGl6ZV9u YW1lIChEV19TVFJJTkcgKCZhdHRyKSwgY3UsCistCQkJCQkgICAgJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjayk7CisrCQkJCQkgICAgJm9iamZpbGUtPnBlcl9iZmQtPnN0b3JhZ2Vfb2JzdGFjayk7 CisgCSAgICAgIGJyZWFrOworIAkgICAgfQorIAkgIGJyZWFrOworQEAgLTE1NzkzLDcgKzE1ODAz LDcgQEAgZ3Vlc3NfcGFydGlhbF9kaWVfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2Rp ZV9pbmZvICpzdHJ1Y3RfcGRpLAorIAkgIGlmIChhY3R1YWxfY2xhc3NfbmFtZSAhPSBOVUxMKQor IAkgICAgeworIAkgICAgICBzdHJ1Y3RfcGRpLT5uYW1lCistCQk9IG9ic3RhY2tfY29weTAgKCZj dS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJPSBvYnN0YWNrX2NvcHkwICgmY3UtPm9i amZpbGUtPnBlcl9iZmQtPnN0b3JhZ2Vfb2JzdGFjaywKKyAJCQkJIGFjdHVhbF9jbGFzc19uYW1l LAorIAkJCQkgc3RybGVuIChhY3R1YWxfY2xhc3NfbmFtZSkpOworIAkgICAgICB4ZnJlZSAoYWN0 dWFsX2NsYXNzX25hbWUpOworQEAgLTE1ODc5LDggKzE1ODg5LDkgQEAgZml4dXBfcGFydGlhbF9k aWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKKyAJICBlbHNlCisgCSAgICBi YXNlID0gZGVtYW5nbGVkOworIAorLQkgIHBhcnRfZGllLT5uYW1lID0gb2JzdGFja19jb3B5MCAo JmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCistCQkJCQkgIGJhc2UsIHN0cmxlbiAoYmFz ZSkpOworKwkgIHBhcnRfZGllLT5uYW1lCisrCSAgICA9IG9ic3RhY2tfY29weTAgKCZjdS0+b2Jq ZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCSAgICAgYmFzZSwgc3RybGVuIChi YXNlKSk7CisgCSAgeGZyZWUgKGRlbWFuZ2xlZCk7CisgCX0KKyAgICAgfQorQEAgLTE4NTU3LDcg KzE4NTY4LDcgQEAgZ3Vlc3NfZnVsbF9kaWVfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAJCQkgICYmIGFjdHVhbF9uYW1lW2FjdHVh bF9uYW1lX2xlbgorIAkJCQkJIC0gZGllX25hbWVfbGVuIC0gMV0gPT0gJzonKQorIAkJCW5hbWUg PQorLQkJCSAgb2JzdGFja19jb3B5MCAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisr CQkJICBvYnN0YWNrX2NvcHkwICgmY3UtPm9iamZpbGUtPnBlcl9iZmQtPnN0b3JhZ2Vfb2JzdGFj aywKKyAJCQkJCSBhY3R1YWxfbmFtZSwKKyAJCQkJCSBhY3R1YWxfbmFtZV9sZW4gLSBkaWVfbmFt ZV9sZW4gLSAyKTsKKyAJCSAgICB9CitAQCAtMTg2MDMsNyArMTg2MTQsNyBAQCBhbm9ueW1vdXNf c3RydWN0X3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorICAgaWYgKGJhc2UgPT0gTlVMTCB8fCBiYXNlID09IERXX1NUUklORyAoYXR0cikgfHwgYmFz ZVstMV0gIT0gJzonKQorICAgICByZXR1cm4gIiI7CisgCistICByZXR1cm4gb2JzdGFja19jb3B5 MCAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrICByZXR1cm4gb2JzdGFja19jb3B5 MCAoJmN1LT5vYmpmaWxlLT5wZXJfYmZkLT5zdG9yYWdlX29ic3RhY2ssCisgCQkJRFdfU1RSSU5H IChhdHRyKSwgJmJhc2VbLTFdIC0gRFdfU1RSSU5HIChhdHRyKSk7CisgfQorIAorQEAgLTE4OTQz LDggKzE4OTU0LDkgQEAgZHdhcmYyX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKKyAJICAgICAgY2hhciAqYmFzZTsKKyAKKyAJICAgICAgLyogRklYTUU6 IHdlIGFscmVhZHkgZGlkIHRoaXMgZm9yIHRoZSBwYXJ0aWFsIHN5bWJvbC4uLiAqLworLQkgICAg ICBEV19TVFJJTkcgKGF0dHIpID0gb2JzdGFja19jb3B5MCAoJmN1LT5vYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssCistCQkJCQkJZGVtYW5nbGVkLCBzdHJsZW4gKGRlbWFuZ2xlZCkpOworKwkgICAg ICBEV19TVFJJTkcgKGF0dHIpCisrCQk9IG9ic3RhY2tfY29weTAgKCZjdS0+b2JqZmlsZS0+cGVy X2JmZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCQkgZGVtYW5nbGVkLCBzdHJsZW4gKGRlbWFuZ2xl ZCkpOworIAkgICAgICBEV19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDE7CisgCSAgICAg IHhmcmVlIChkZW1hbmdsZWQpOworIAorQEAgLTE4OTY3LDcgKzE4OTc5LDcgQEAgZHdhcmYyX25h bWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgewor ICAgICAgIERXX1NUUklORyAoYXR0cikKKyAJPSBkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgKERX X1NUUklORyAoYXR0ciksIGN1LAorLQkJCQkgICAgJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2spOworKwkJCQkgICAgJmN1LT5vYmpmaWxlLT5wZXJfYmZkLT5zdG9yYWdlX29ic3RhY2spOwor ICAgICAgIERXX1NUUklOR19JU19DQU5PTklDQUwgKGF0dHIpID0gMTsKKyAgICAgfQorICAgcmV0 dXJuIERXX1NUUklORyAoYXR0cik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTMzMTc2LWZvcnRyYW4t b21wLXN0ZXAucGF0Y2ggYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaAppbmRl eCAxOTc4ZDVlLi4xYWQ0MmI5IDEwMDY0NAotLS0gYS9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAt c3RlcC5wYXRjaAorKysgYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaApAQCAt MjEsMTEgKzIxLDExIEBAIGRlYnVnZ2luZyBwcm9ibGVtIG9mIEdPTVAgb3V0c2lkZSBvZiB0aGUg c2NvcGUgb2YgdGhpcyBCdWcuCiAKIAogCi1JbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2luZnJ1bi5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaW5mcnVuLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9pbmZydW4uYwky MDEzLTA4LTAyIDE3OjEwOjA4LjQ0Njk2Mjk1OCArMDIwMAotKysrIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9pbmZydW4uYwkyMDEzLTA4LTAyIDE3OjEwOjQ5LjEwOTAxNjY4NSArMDIwMAot QEAgLTQ5MzAsNiArNDkzMCwxNiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTQtMDYtMTMgMjE6NTk6MTAuODM1 ODA1NTEyICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaW5mcnVuLmMJMjAxNC0w Ni0xMyAyMTo1OTozMS4wNjQ4MjkxMjEgKzAyMDAKK0BAIC00ODIwLDYgKzQ4MjAsMTYgQEAgcHJv Y2Vzc19ldmVudF9zdG9wX3Rlc3QgKHN0cnVjdCBleGVjdXRpbwogIAogICAgICAgIGlmIChlY3Mt PmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVSX0FMTCkK ICAJewpAQCAtMzYsMTMgKzM2LDEzIEBAIEluZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvaW5mcnVuLmMKICsJICAgICAgIHx8IHN0cnN0ciAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3Rv cF9mbiksICIub21wX2ZuLiIpID09IE5VTEwpCiArCSAgICAgIC8qIGdjYy00LjcuMi05LmZjMTku eDg2XzY0IHVzZXMgYSBuZXcgZm9ybWF0LiAgKi8KICsJICAgICAgJiYgKHN0b3BmID09IE5VTEwK LSsJCSAgfHwgc3Ryc3RyIChTWU1CT0xfTElOS0FHRV9OQU1FIChzdG9wZiksICIuX29tcF9mbi4i KSA9PSBOVUxMKSkKKysJCSAgfHwgc3Ryc3RyIChNU1lNQk9MX0xJTktBR0VfTkFNRSAoc3RvcGYp LCAiLl9vbXBfZm4uIikgPT0gTlVMTCkpCiArewkvKiAiLm9tcF9mbi4iICovCiArCiAgCSAgLyog V2UncmUgZG9pbmcgYSAibmV4dCIuCiAgCiAgCSAgICAgTm9ybWFsIChmb3J3YXJkKSBleGVjdXRp b246IHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlCi1AQCAtNDk2NSw2ICs0OTc1LDcgQEAgcHJvY2Vz c19ldmVudF9zdG9wX3Rlc3Q6CitAQCAtNDg1NSw2ICs0ODY1LDcgQEAgcHJvY2Vzc19ldmVudF9z dG9wX3Rlc3QgKHN0cnVjdCBleGVjdXRpbwogIAogIAkgIGtlZXBfZ29pbmcgKGVjcyk7CiAgCSAg cmV0dXJuOwpAQCAtNTAsMTAgKzUwLDEwIEBAIEluZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvaW5mcnVuLmMKICAJfQogIAogICAgICAgIC8qIElmIHdlIGFyZSBpbiBhIGZ1bmN0aW9u IGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4gdGhlCi1JbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMy0wOC0wMiAxNzoxMDozNy4wNjMwMDA1NzEgKzAyMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0 ZXAuZXhwCTIwMTQtMDYtMTMgMjE6NTk6MjIuODAxODE5NDgxICswMjAwCiBAQCAtMCwwICsxLDMx IEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsK QEAgLTg2LDEwICs4NiwxMCBAQCBJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKICsKICtnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAic3VjY2VzcyJdCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InN1Y2Nlc3MiICIuKnN1Y2Nlc3MuKiIKLUluZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAorSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1z dGVwLmY5MAkyMDEzLTA4LTAyIDE3OjEwOjM3LjA2MzAwMDU3MSArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAJMjAxNC0w Ni0xMyAyMTo1OToyMi44MDE4MTk0ODEgKzAyMDAKIEBAIC0wLDAgKzEsMzIgQEAKICshIENvcHly aWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBh L2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaCBiL2dkYi1iejU0MTg2Ni1yd2F0 Y2gtYmVmb3JlLXJ1bi5wYXRjaAppbmRleCBlNjA3M2ViLi43YmZlNDExIDEwMDY0NAotLS0gYS9n ZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKKysrIGIvZ2RiLWJ6NTQxODY2LXJ3 YXRjaC1iZWZvcmUtcnVuLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgKK0luZGV4OiBnZGItNy43LjUwLjIw MTQwNjA5L2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTQtMDItMDYg MTc6MzA6MjMuMDIxNDg5NzM2ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29u ZmlnL2kzODYvbGludXg2NC5taAkyMDE0LTAyLTA2IDE3OjMwOjQ0Ljk4NDUxMzQwMyArMDEwMAor LS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAky MDE0LTA2LTEzIDIwOjI1OjM3LjM1NjczMjMzNSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2 MDkvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxNC0wNi0xMyAyMDoyNjowNy45ODQ3NjQw OTggKzAyMDAKIEBAIC01LDcgKzUsNyBAQCBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmst Y2hpbGQubyBcCiAgCXByb2Mtc2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIGxpbnV4LWZvcmsu byBcCiAgCWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vIGxpbnV4LWJ0cmFjZS5vIFwKQEAg LTExLDEwICsxMSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlnL2kz ODYvbGludXg2NC5taAogIE5BVF9DREVQUyA9ICQoc3JjZGlyKS9wcm9jLXNlcnZpY2UubGlzdAog IAogICMgVGhlIGR5bmFtaWNhbGx5IGxvYWRlZCBsaWJ0aHJlYWRfZGIgbmVlZHMgYWNjZXNzIHRv IHN5bWJvbHMgaW4gdGhlCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlnL2kz ODYvbGludXgubWgKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25maWcvaTM4Ni9s aW51eC5taAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29u ZmlnL2kzODYvbGludXgubWgJMjAxNC0wMi0wNiAxNzozMDoxNS44OTM0ODIwNTYgKzAxMDAKLSsr KyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcvaTM4Ni9saW51eC5taAkyMDE0LTAyLTA2 IDE3OjMwOjIzLjAyMTQ4OTczNiArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9n ZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxNC0wNi0xMyAyMDoyNTozNy4zNTY3MzIzMzUgKzAy MDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25maWcvaTM4Ni9saW51eC5taAkyMDE0 LTA2LTEzIDIwOjI2OjA3Ljk4NDc2NDA5OCArMDIwMAogQEAgLTEsNiArMSw2IEBACiAgIyBIb3N0 OiBJbnRlbCAzODYgcnVubmluZyBHTlUvTGludXguCiAgCkBAIC0yMywxMCArMjMsMTAgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4Lm1oCiAgTkFUREVQ RklMRVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAogIAlpMzg2LW5hdC5vIGkzODYtbGlu dXgtbmF0Lm8gXAogIAlwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBcCi1JbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAorSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcvaTM4Ni9ubS1saW51eC5oCTIwMTQtMDItMDYg MTc6MzA6MjMuMDIxNDg5NzM2ICswMTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvY29u ZmlnL2kzODYvbm0tbGludXguaAkyMDE0LTA2LTEzIDIwOjI2OjA3Ljk4NDc2NDA5OCArMDIwMAog QEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggaTM4Ni4K ICsKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29u ZmlnL2kzODYvbm0tbGludXguaAogKyNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0 Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAor SW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQu aAkyMDE0LTAyLTA2IDE3OjMwOjIzLjAyMTQ4OTczNiArMDEwMAorKysrIGdkYi03LjcuNTAuMjAx NDA2MDkvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAkyMDE0LTA2LTEzIDIwOjI2OjA3Ljk4 NDc2NDA5OCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBH TlUvTGludXggYW1kNjQuCiArCkBAIC04OSwyNSArODksMjYgQEAgSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAogKyNkZWZpbmUgdGFyZ2V0X2Nh bl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2VuZGlmIC8q IE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3RhcmdldC5o CitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGFyZ2V0LmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTQtMDItMDYgMTc6MzA6 MTUuODk0NDgyMDU3ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGFyZ2V0LmgJ MjAxNC0wMi0wNiAxNzozMDoyMy4wMjI0ODk3MzcgKzAxMDAKLUBAIC0xNTIxLDggKzE1MjEsMTAg QEAgZXh0ZXJuIGNoYXIgKnRhcmdldF90aHJlYWRfbmFtZSAoc3RydWN0CistLS0gZ2RiLTcuNy41 MC4yMDE0MDYwOS5vcmlnL2dkYi90YXJnZXQuaAkyMDE0LTA2LTEzIDIwOjI2OjA3Ljk4NTc2NDA5 OSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3RhcmdldC5oCTIwMTQtMDYtMTMg MjA6MjY6MzQuOTE1NzkyMDk1ICswMjAwCitAQCAtMTcyOCw5ICsxNzI4LDExIEBAIGV4dGVybiBj aGFyICp0YXJnZXRfdGhyZWFkX25hbWUgKHN0cnVjdAogICAgIGJwX2hhcmR3YXJlX2JyZWFrcG9p bnQuICBDTlQgaXMgdGhlIG51bWJlciBvZiBzdWNoIHdhdGNocG9pbnRzIHVzZWQgc28gZmFyCiAg ICAgKGluY2x1ZGluZyB0aGlzIG9uZT8pLiAgT1RIRVJUWVBFIGlzIHdobyBrbm93cyB3aGF0Li4u ICAqLwogIAogKyNpZm5kZWYgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludAogICNk ZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludChUWVBFLENOVCxPVEhFUlRZ UEUpIFwKLSAgKCpjdXJyZW50X3RhcmdldC50b19jYW5fdXNlX2h3X2JyZWFrcG9pbnQpIChUWVBF LCBDTlQsIE9USEVSVFlQRSk7CisgICgqY3VycmVudF90YXJnZXQudG9fY2FuX3VzZV9od19icmVh a3BvaW50KSAoJmN1cnJlbnRfdGFyZ2V0LCAgXAorIAkJCQkJICAgICBUWVBFLCBDTlQsIE9USEVS VFlQRSk7CiArI2VuZGlmCiAgCiAgLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRlYnVnIHJlZ2lz dGVycyBuZWVkZWQgdG8gd2F0Y2ggdGhlIGdpdmVuCiAgICAgbWVtb3J5IHJlZ2lvbiwgb3IgemVy byBpZiBub3Qgc3VwcG9ydGVkLiAgKi8KLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAorSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LWJl Zm9yZS1ydW4uZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAJMjAxNC0wMi0wNiAxNzozMDoy My4wMjI0ODk3MzcgKzAxMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAkyMDE0LTA2LTEzIDIwOjI2OjA3 Ljk4Njc2NDEwMSArMDIwMAogQEAgLTAsMCArMSw0MCBAQAogKyMgQ29weXJpZ2h0IDIwMDksIDIw MTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWR0 cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoIGIvZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0 LnBhdGNoCmluZGV4IDY5ZWI5MmUuLjM2ODg3MTMgMTAwNjQ0Ci0tLSBhL2dkYi1kdHMtcmhlbDYt cHl0aG9uLWNvbXBhdC5wYXRjaAorKysgYi9nZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0 Y2gKQEAgLTEsOSArMSwxMCBAQAogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVn LmNnaT9pZD0xMDIwMDA0CiAKLWRpZmYgLWR1cCAtcnVOcCBnZGItNy43LW9yaWcvZ2RiL2RhdGEt ZGlyZWN0b3J5L01ha2VmaWxlLmluIGdkYi03LjcvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxl LmluCi0tLS0gZ2RiLTcuNy1vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgkyMDE0 LTAyLTIzIDE4OjEyOjUxLjMzODg2NjM5MSArMDEwMAotKysrIGdkYi03LjcvZ2RiL2RhdGEtZGly ZWN0b3J5L01ha2VmaWxlLmluCTIwMTQtMDItMjMgMTg6MTQ6MzEuMTg3NzU2OTgzICswMTAwCi1A QCAtNTgsOSArNTgsMTIgQEAgUFlUSE9OX0ZJTEVTID0gXAorSW5kZXg6IGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgkyMDE0 LTA2LTEzIDIzOjAyOjM3LjU5NzExNTc4NyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTQtMDYtMTMgMjM6MDM6MjEuMjg1MTYz OTA5ICswMjAwCitAQCAtNjAsNiArNjAsOCBAQCBQWVRIT05fRklMRVMgPSBcCiAgCWdkYi9mcmFt ZXMucHkgXAogIAlnZGIvRnJhbWVJdGVyYXRvci5weSBcCiAgCWdkYi9GcmFtZURlY29yYXRvci5w eSBcCkBAIC0xMiwxMyArMTMsMTggQEAgZGlmZiAtZHVwIC1ydU5wIGdkYi03Ljctb3JpZy9nZGIv ZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gZ2RiLTcuNy9nZGIvZGF0YS1kaXIKICAJZ2RiL3R5 cGVzLnB5IFwKICAJZ2RiL3ByaW50aW5nLnB5IFwKICAJZ2RiL3Byb21wdC5weSBcCitAQCAtNzQs NiArNzYsNyBAQCBQWVRIT05fRklMRVMgPSBcCisgCWdkYi9jb21tYW5kL3ByZXR0eV9wcmludGVy cy5weSBcCisgCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCisgCWdkYi9jb21tYW5kL2V4cGxvcmUu cHkgXAogKwlnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgXAotIAlnZGIvY29tbWFuZC9ib3VuZF9y ZWdpc3RlcnMucHkgXAotIAlnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCi0gCWdkYi9jb21tYW5k L2lnbm9yZV9lcnJvcnMucHkgXAotZGlmZiAtZHVwIC1ydU5wIGdkYi03Ljctb3JpZy9nZGIvcHl0 aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5IGdkYi03LjcvZ2RiL3B5dGhvbi9saWIvZ2RiL0Zy YW1lV3JhcHBlci5weQotLS0tIGdkYi03Ljctb3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVX cmFwcGVyLnB5CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Ny9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CTIwMTQtMDItMjMgMTg6MTQ6MzEu MTg4NzU2OTgxICswMTAwCisgCWdkYi9mdW5jdGlvbi9fX2luaXRfXy5weSBcCisgCWdkYi9mdW5j dGlvbi9zdHJmbnMucHkgXAorIAlnZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5IFwKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBw ZXIucHkJMjAxNC0wNi0xMyAyMzowMjozNy41OTgxMTU3ODggKzAyMDAKIEBAIC0wLDAgKzEsMTIy IEBACiArIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVzLgogKwpAQCAtMTQyLDkgKzE0OCwxMCBAQCBk aWZmIC1kdXAgLXJ1TnAgZ2RiLTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBw ZXIucHkgZ2RiLTcuNy9nZGIvcHl0aAogKwogKyAgICBkZWYgX19nZXRhdHRyX18gKHNlbGYsIG5h bWUpOgogKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNlbGYuZnJhbWUsIG5hbWUpCi1kaWZmIC1k dXAgLXJ1TnAgZ2RiLTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkgZ2Ri LTcuNy9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5Ci0tLS0gZ2RiLTcuNy1vcmlnL2dk Yi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy43L2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAx NC0wMi0yMyAxODoxNDozMS4xODg3NTY5ODEgKzAxMDAKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAxNC0wNi0xMyAyMzow MjozNy41OTgxMTU3ODggKzAyMDAKIEBAIC0wLDAgKzEsNDIgQEAKICsjIEZpbHRlcmluZyBiYWNr dHJhY2UuCiArCkBAIC0xODgsOSArMTk1LDEwIEBAIGRpZmYgLWR1cCAtcnVOcCBnZGItNy43LW9y aWcvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBnZGItNy43L2dkYi9weXRob24vCiAr ICAgICAgICByZXR1cm4gaXRlcgogKyAgICByZXR1cm4gb2xkX2ZyYW1lX2ZpbHRlciAoaXRlcikK ICsKLWRpZmYgLWR1cCAtcnVOcCBnZGItNy43LW9yaWcvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvYmFja3RyYWNlLnB5IGdkYi03LjcvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3Ry YWNlLnB5Ci0tLS0gZ2RiLTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2JhY2t0 cmFjZS5weQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03Ljcv Z2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CTIwMTQtMDItMjMgMTg6MTQ6 MzEuMTg4NzU2OTgxICswMTAwCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2JhY2t0cmFjZS5weQkyMDE0LTA2LTEzIDIz OjAyOjM3LjU5ODExNTc4OCArMDIwMAogQEAgLTAsMCArMSwxMDYgQEAKICsjIE5ldyBiYWNrdHJh Y2UgY29tbWFuZC4KICsKCmRpZmYgLS1naXQgYS9nZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQu cGF0Y2ggYi9nZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKaW5kZXggYzYzODNkYi4u M2MwYzA0MiAxMDA2NDQKLS0tIGEvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCisr KyBiL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Ljkw LjIwMTQwMTI3Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTAyLTA2IDE4OjE4OjA5LjY3NjU3 MjI3MSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0 LTAyLTA2IDE4OjE4OjQyLjY2NDYwNzgyMyArMDEwMAotQEAgLTE3NjQ2LDYgKzE3NjQ2LDI1IEBA IG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2LTEzIDIxOjU2OjU0Ljc0NDY1 MzQ0MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0 LTA2LTEzIDIyOjAxOjUxLjUyOTk5MDY4NCArMDIwMAorQEAgLTE3Njk1LDYgKzE3Njk1LDI2IEBA IG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAgICAgICAvKiBDYWNo ZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFu eSkuICAqLwogICAgICAgIFNZTUJPTF9TRVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlLCAm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKICAgICAgICBsaW5rYWdlbmFtZSA9IGR3YXJmMl9w aHlzbmFtZSAobmFtZSwgZGllLCBjdSk7CkBAIC0xNCwyNCArMTQsMjUgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2R3YXJmMnJlYWQuYwogKwkgICYmIHN0cnN0ciAob2JqZmlsZV9u YW1lIChvYmpmaWxlKSwgIi9saWJjIikgIT0gTlVMTCkKICsJewogKwkgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlX21zeW07Ci0rCSAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOworKwkgIHN0 cnVjdCBib3VuZF9taW5pbWFsX3N5bWJvbCBibXN5bTsKICsKICsJICBpZiAob2JqZmlsZS0+c2Vw YXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluaykKICsJICAgIG9iamZpbGVfbXN5bSA9IG9iamZp bGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbms7CiArCSAgZWxzZQogKwkgICAgb2Jq ZmlsZV9tc3ltID0gb2JqZmlsZTsKLSsJICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sICgi c3Ryc3RyIiwgTlVMTCwgb2JqZmlsZV9tc3ltKTsKLSsJICBpZiAobXN5bSAmJiBNU1lNQk9MX1RZ UEUgKG1zeW0pID09IG1zdF90ZXh0X2dudV9pZnVuYykKKysJICBibXN5bSA9IGxvb2t1cF9taW5p bWFsX3N5bWJvbCAoInN0cnN0ciIsIE5VTEwsIG9iamZpbGVfbXN5bSk7CisrCSAgaWYgKGJtc3lt Lm1pbnN5bSAhPSBOVUxMCisrCSAgICAgICYmIE1TWU1CT0xfVFlQRSAoYm1zeW0ubWluc3ltKSA9 PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCiArCSAgICBsaW5rYWdlbmFtZSA9ICJfX3N0cnN0ciI7CiAr CX0KICsKICAgICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxpbmthZ2VuYW1lLCBzdHJsZW4g KGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7CiAgCiAgICAgICAgLyogRm9ydHJhbiBkb2VzIG5v dCBoYXZlIG1hbmdsaW5nIHN0YW5kYXJkIGFuZCB0aGUgbWFuZ2xpbmcgZG9lcyBkaWZmZXIKLUlu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5j LXN0cnN0ci13b3JrYXJvdW5kLmV4cAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtc3Ryc3RyLXdvcmthcm91bmQuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1z dHJzdHItd29ya2Fyb3VuZC5leHAJMjAxNC0wMi0wNiAxODoxODoxNi4yOTQ1NzkzODEgKzAxMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5j LXN0cnN0ci13b3JrYXJvdW5kLmV4cAkyMDE0LTA2LTEzIDIxOjU5OjQxLjE3NDg0MDg3MSArMDIw MAogQEAgLTAsMCArMSwxMDggQEAKICsjIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItZ25hdC1kd2FyZi1jcmFzaC0x b2YzLnBhdGNoIGIvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtMW9mMy5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZWZhZDMzMi4uMDAwMDAwMAotLS0gYS9nZGItZ25hdC1kd2FyZi1j cmFzaC0xb2YzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUxICswLDAgQEAKLWNvbW1pdCBh ZGRlMmJmZjA3NTdlODkxNzVlZGU0OTNmMDNiODY5NTNkMGQ5MzUyCi1BdXRob3I6IERvdWcgRXZh bnMgPHhkamU0MkBnbWFpbC5jb20+Ci1EYXRlOiAgIFRodSBGZWIgMjAgMDk6MTM6NTMgMjAxNCAt MDgwMAotCi0gICAgRml4IFBSIHN5bXRhYi8xNjU4MQotICAgIAotICAgIAkqIGR3YXJmMnJlYWQu YyAoc3RydWN0IGRpZV9pbmZvKTogTmV3IG1lbWJlciBpbl9wcm9jZXNzLgotICAgIAkocmVzZXRf ZGllX2luX3Byb2Nlc3MpOiBOZXcgZnVuY3Rpb24uCi0gICAgCShwcm9jZXNzX2RpZSk6IFNldCBp dCBhdCB0aGUgc3RhcnQsIHJlc2V0IHdoZW4gcmV0dXJuaW5nLgotICAgIAkoaW5oZXJpdF9hYnN0 cmFjdF9kaWVzKTogT25seSBjYWxsIHByb2Nlc3NfZGllIGlmIG9yaWdpbl9jaGlsZF9kaWUKLSAg ICAJbm90IGFscmVhZHkgYmVpbmcgcHJvY2Vzc2VkLgotICAgIAotICAgIAl0ZXN0c3VpdGUvCi0g ICAgCSogZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLlM6IE5ldyBmaWxlLgotICAgIAkqIGdkYi5kd2Fy ZjIvZHcyLWljeWNsZS5jOiBOZXcgZmlsZS4KLSAgICAJKiBnZGIuZHdhcmYyL2R3Mi1pY3ljbGUu ZXhwOiBOZXcgZmlsZS4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxv ZwotIyMgLTEsMyArMSwxNCBAQAotKzIwMTQtMDItMjAgIGxpbiB6dW9qaWFuICA8bWFuamlhbjIw MDZAZ21haWwuY29tPgotKwkgICAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5j b20+Ci0rCSAgICBEb3VnIEV2YW5zICA8eGRqZTQyQGdtYWlsLmNvbT4KLSsKLSsJUFIgc3ltdGFi LzE2NTgxCi0rCSogZHdhcmYycmVhZC5jIChzdHJ1Y3QgZGllX2luZm8pOiBOZXcgbWVtYmVyIGlu X3Byb2Nlc3MuCi0rCShyZXNldF9kaWVfaW5fcHJvY2Vzcyk6IE5ldyBmdW5jdGlvbi4KLSsJKHBy b2Nlc3NfZGllKTogU2V0IGl0IGF0IHRoZSBzdGFydCwgcmVzZXQgd2hlbiByZXR1cm5pbmcuCi0r CShpbmhlcml0X2Fic3RyYWN0X2RpZXMpOiBPbmx5IGNhbGwgcHJvY2Vzc19kaWUgaWYgb3JpZ2lu X2NoaWxkX2RpZQotKwlub3QgYWxyZWFkeSBiZWluZyBwcm9jZXNzZWQuCi0rCi0gMjAxNC0wMi0y MCAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+Ci0gCi0gCSogd2luZG93 cy1uYXQuYyAoaGFuZGxlX3VubG9hZF9kbGwpOiBBZGQgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4K LS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0xMjI1 LDYgKzEyMjUsOSBAQCBzdHJ1Y3QgZGllX2luZm8KLSAgICAgICAgdHlwZSBkZXJpdmVkIGZyb20g dGhpcyBESUUuICAqLwotICAgICB1bnNpZ25lZCBjaGFyIGJ1aWxkaW5nX2Z1bGxuYW1lIDogMTsK LSAKLSsgICAgLyogVHJ1ZSBpZiB0aGlzIGRpZSBpcyBpbiBwcm9jZXNzLiAgUFIgMTY1ODEuICAq LwotKyAgICB1bnNpZ25lZCBjaGFyIGluX3Byb2Nlc3MgOiAxOwotKwotICAgICAvKiBBYmJyZXYg bnVtYmVyICovCi0gICAgIHVuc2lnbmVkIGludCBhYmJyZXY7Ci0gCi1AQCAtODAwOCwxMSArODAx MSwyOCBAQCBwcm9jZXNzX2ltcG9ydGVkX3VuaXRfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIH0KLSB9Ci0gCi0rLyogUmVzZXQgdGhlIGluX3By b2Nlc3MgYml0IG9mIGEgZGllLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Jlc2V0X2RpZV9pbl9w cm9jZXNzICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IGRpZV9pbmZvICpkaWUgPSBhcmc7Ci0r ICBkaWUtPmluX3Byb2Nlc3MgPSAwOwotK30KLSsKLSAvKiBQcm9jZXNzIGEgZGllIGFuZCBpdHMg Y2hpbGRyZW4uICAqLwotIAotIHN0YXRpYyB2b2lkCi0gcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0rICBzdHJ1Y3QgY2xlYW51cCAq aW5fcHJvY2VzczsKLSsKLSsgIC8qIFdlIHNob3VsZCBvbmx5IGJlIHByb2Nlc3NpbmcgdGhvc2Ug bm90IGFscmVhZHkgaW4gcHJvY2Vzcy4gICovCi0rICBnZGJfYXNzZXJ0ICghZGllLT5pbl9wcm9j ZXNzKTsKLSsKLSsgIGRpZS0+aW5fcHJvY2VzcyA9IDE7Ci0rICBpbl9wcm9jZXNzID0gbWFrZV9j bGVhbnVwIChyZXNldF9kaWVfaW5fcHJvY2VzcyxkaWUpOwotKwotICAgc3dpdGNoIChkaWUtPnRh ZykKLSAgICAgewotICAgICBjYXNlIERXX1RBR19wYWRkaW5nOgotQEAgLTc3NjIsNiArNzc4Miw4 IEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWMKLSAgICAgICBuZXdf c3ltYm9sIChkaWUsIE5VTEwsIGN1KTsKLSAgICAgICBicmVhazsKLSAgICAgfQotKwotKyAgZG9f Y2xlYW51cHMgKGluX3Byb2Nlc3MpOwotIH0KLSAMCi0gLyogRFdBUkYgbmFtZSBjb21wdXRhdGlv bi4gICovCi1AQCAtMTA5NjcsOCArMTA5ODksMTIgQEAgaW5oZXJpdF9hYnN0cmFjdF9kaWVzIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgaWYgKG9m ZnNldHAgPj0gb2Zmc2V0c19lbmQKLSAJICB8fCBvZmZzZXRwLT5zZWN0X29mZiA+IG9yaWdpbl9j aGlsZF9kaWUtPm9mZnNldC5zZWN0X29mZikKLSAJewotLQkgIC8qIEZvdW5kIHRoYXQgT1JJR0lO X0NISUxEX0RJRSBpcyByZWFsbHkgbm90IHJlZmVyZW5jZWQuICAqLwotLQkgIHByb2Nlc3NfZGll IChvcmlnaW5fY2hpbGRfZGllLCBvcmlnaW5fY3UpOwotKwkgIC8qIEZvdW5kIHRoYXQgT1JJR0lO X0NISUxEX0RJRSBpcyByZWFsbHkgbm90IHJlZmVyZW5jZWQuCi0rCSAgICAgQ2hlY2sgd2hldGhl ciB3ZSdyZSBhbHJlYWR5IHByb2Nlc3NpbmcgT1JJR0lOX0NISUxEX0RJRS4KLSsJICAgICBUaGlz IGNhbiBoYXBwZW4gd2l0aCBtdXR1YWxseSByZWZlcmVuY2VkIGFic3RyYWN0X29yaWdpbnMuCi0r CSAgICAgUFIgMTY1ODEuICAqLwotKwkgIGlmICghb3JpZ2luX2NoaWxkX2RpZS0+aW5fcHJvY2Vz cykKLSsJICAgIHByb2Nlc3NfZGllIChvcmlnaW5fY2hpbGRfZGllLCBvcmlnaW5fY3UpOwotIAl9 Ci0gICAgICAgb3JpZ2luX2NoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChvcmlnaW5fY2hpbGRfZGll KTsKLSAgICAgfQotIyMjIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSMjIyBiL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxNC0wMi0yMCAgbGluIHp1b2pp YW4gIDxtYW5qaWFuMjAwNkBnbWFpbC5jb20+Ci0rCSAgICBKb2VsIEJyb2JlY2tlciAgPGJyb2Jl Y2tlckBhZGFjb3JlLmNvbT4KLSsJICAgIERvdWcgRXZhbnMgIDx4ZGplNDJAZ21haWwuY29tPgot KwotKwlQUiBzeW10YWIvMTY1ODEKLSsJKiBnZGIuZHdhcmYyL2R3Mi1pY3ljbGUuUzogTmV3IGZp bGUuCi0rCSogZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLmM6IE5ldyBmaWxlLgotKwkqIGdkYi5kd2Fy ZjIvZHcyLWljeWNsZS5leHA6IE5ldyBmaWxlLgotKwotIDIwMTQtMDItMTkgIFNpdmEgQ2hhbmRy YSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2dsZS5jb20+Ci0gCi0gCSogZ2RiLnB5dGhvbi9weS12 YWx1ZS1jYy5jYzogSW1wcm92ZSB0ZXN0IGNhc2UgdG8gZW5hYmxlIHRlc3RpbmcKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLlMKLUBAIC0w LDAgKzEsMjU4IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0r CS50ZXh0Ci0rCi0rLkx0ZXh0MDoKLSsJLnR5cGUJcF9fdG9wX19taWRkbGVfX2luc2lkZS4zMDYy LCBAZnVuY3Rpb24KLStwX190b3BfX21pZGRsZV9faW5zaWRlLjMwNjI6Ci0rLkxGQjQ6Ci0rCS5m aWxlIDEgInAuYWRiIgotKyAgICAgICAgLjRieXRlIDAKLSsuTEJFNjoKLSsKLSsJLmdsb2JsCXBf X3RvcAotKwkudHlwZQlwX190b3AsIEBmdW5jdGlvbgotK3BfX3RvcDoKLSsuTEZCMjoKLSsgICAg ICAgIC40Ynl0ZSAwCi0rLkxGRTI6Ci0rLkxldGV4dDA6Ci0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19p bmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS40Ynl0ZQkuTGVkZWJ1Z19pbmZv MCAtIC5Mc2RlYnVnX2luZm8wICAvKiBMZW5ndGggb2YgQ1UgSW5mbyAqLwotKy5Mc2RlYnVnX2lu Zm8wOgotKwkuMmJ5dGUJMHg0CS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICovCi0rCS40Ynl0ZQku TGRlYnVnX2FiYnJldjAJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCi0rCS5ieXRl CTB4NAkvKiBQb2ludGVyIFNpemUgKGluIGJ5dGVzKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERJ RSAoMHhiKSBEV19UQUdfY29tcGlsZV91bml0KSAqLwotKwkuYXNjaWkJIkdOVSBBZGEgNC45LjAg MjAxNDAxMjZcMCIgLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMHhkCS8qIERXX0FUX2xh bmd1YWdlICovCi0rCS5hc2NpaQkicC5hZGJcMCIgLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJ Ii90bXBcMCIgIC8qIERXX0FUX2NvbXBfZGlyICovCi0rCS40Ynl0ZQkuTHRleHQwCS8qIERXX0FU X2xvd19wYyAqLwotKwkuNGJ5dGUJLkxldGV4dDAtLkx0ZXh0MAkvKiBEV19BVF9oaWdoX3BjICov Ci0rLlMweDE0MjoKLSsJLnVsZWIxMjggMHg4CS8qIChESUUgKDB4MTQyKSBEV19UQUdfYmFzZV90 eXBlKSAqLwotKwkuYnl0ZQkweDQJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCTB4NQkv KiBEV19BVF9lbmNvZGluZyAqLwotKwkuYXNjaWkJImludGVnZXJcMCIgLyogRFdfQVRfbmFtZSAq LwotKwotKwkudWxlYjEyOCAweDEzCS8qIChESUUgKDB4MWI0KSBEV19UQUdfc3VicHJvZ3JhbSkg Ki8KLSsJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuYXNjaWkJInBfX3RvcFwwIiAvKiBEV19B VF9uYW1lICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKHAuYWRiKSAqLwotKwku Ynl0ZQkweDMJLyogRFdfQVRfZGVjbF9saW5lICovCi0rCS40Ynl0ZQkuTEZCMgkvKiBEV19BVF9s b3dfcGMgKi8KLSsJLjRieXRlCS5MRkUyLS5MRkIyCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVs ZWIxMjggMHgxCS8qIERXX0FUX2ZyYW1lX2Jhc2UgKi8KLSsJLmJ5dGUJMHg5YwkvKiBEV19PUF9j YWxsX2ZyYW1lX2NmYSAqLwotKwkJCS8qIERXX0FUX0dOVV9hbGxfY2FsbF9zaXRlcyAqLwotKwku NGJ5dGUJLlMweDRmYyAtIC5MZGVidWdfaW5mbzAJLyogRFdfQVRfc2libGluZyAqLwotKy5TMHgx ZTA6Ci0rCS51bGViMTI4IDB4MTUJLyogKERJRSAoMHgxZTApIERXX1RBR19zdWJwcm9ncmFtKSAq LwotKwkuYXNjaWkJInBfX3RvcF9fbWlkZGxlXDAiIC8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJ MHgxCS8qIERXX0FUX2RlY2xfZmlsZSAocC5hZGIpICovCi0rCS5ieXRlCTB4NAkvKiBEV19BVF9k ZWNsX2xpbmUgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2lubGluZSAqLwotKwkuNGJ5dGUJLlMw eDM3NCAtIC5MZGVidWdfaW5mbzAJLyogRFdfQVRfc2libGluZyAqLwotKy5TMHgyMDI6Ci0rCS51 bGViMTI4IDB4MTUJLyogKERJRSAoMHgyMDIpIERXX1RBR19zdWJwcm9ncmFtKSAqLwotKwkuYXNj aWkJInBfX3RvcF9fbWlkZGxlX19pbnNpZGVcMCIgLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkw eDEJLyogRFdfQVRfZGVjbF9maWxlIChwLmFkYikgKi8KLSsJLmJ5dGUJMHg1CS8qIERXX0FUX2Rl Y2xfbGluZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfaW5saW5lICovCi0rCS40Ynl0ZQkuUzB4 MjI1CS0gLkxkZWJ1Z19pbmZvMCAvKiBEV19BVF9zaWJsaW5nICovCi0rCS5ieXRlCTAJLyogZW5k IG9mIGNoaWxkcmVuIG9mIERJRSAweDIwMiAqLwotKy5TMHgyMjU6Ci0rCS51bGViMTI4IDB4MTgJ LyogKERJRSAoMHgyMjUpIERXX1RBR19zdWJwcm9ncmFtKSAqLwotKwkuNGJ5dGUJLlMweDIwMiAt IC5MZGVidWdfaW5mbzAJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS40Ynl0ZQkuTEZC NAkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCS5MQkU2LS5MRkI0CS8qIERXX0FUX2hpZ2hf cGMgKi8KLSsJLnVsZWIxMjggMHgxCS8qIERXX0FUX2ZyYW1lX2Jhc2UgKi8KLSsJLmJ5dGUJMHg5 YwkvKiBEV19PUF9jYWxsX2ZyYW1lX2NmYSAqLwotKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc3Rh dGljX2xpbmsgKi8KLSsJLmJ5dGUJMHg1NgkvKiBEV19PUF9yZWc2ICovCi0rCQkJLyogRFdfQVRf R05VX2FsbF9jYWxsX3NpdGVzICovCi0rCS51bGViMTI4IDB4MWEJLyogKERJRSAoMHgyNDcpIERX X1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpICovCi0rCS40Ynl0ZQkuUzB4MWUwIC0gLkxkZWJ1Z19p bmZvMAkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLjRieXRlCS5MRkI0CS8qIERXX0FU X2xvd19wYyAqLwotKwkuNGJ5dGUJLkxCRTYtLkxGQjQJLyogRFdfQVRfaGlnaF9wYyAqLwotKwku Ynl0ZQkweDEJLyogRFdfQVRfY2FsbF9maWxlIChwLmFkYikgKi8KLSsJLmJ5dGUJMHgxNAkvKiBE V19BVF9jYWxsX2xpbmUgKi8KLSsJLjRieXRlCS5TMHgzNzQJLSAuTGRlYnVnX2luZm8wIC8qIERX X0FUX3NpYmxpbmcgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MjQ3 ICovCi0rCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDIyNSAqLwotKwkuYnl0 ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxZTAgKi8KLSsuUzB4Mzc0OgotKwkudWxl YjEyOCAweDIzCS8qIChESUUgKDB4MzgyKSBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKSAqLwot KwkuNGJ5dGUJLlMweDFlMCAtIC5MZGVidWdfaW5mbzAgLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2lu ICovCi0rCS40Ynl0ZQkuTEZCNAkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCS5MQkU2LS5M RkI0CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2NhbGxfZmlsZSAo cC5hZGIpICovCi0rCS5ieXRlCTB4MWQJLyogRFdfQVRfY2FsbF9saW5lICovCi0rCS5ieXRlCTAJ LyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDM4MiAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBj aGlsZHJlbiBvZiBESUUgMHgxYjQgKi8KLSsuUzB4NGZjOgotKwkudWxlYjEyOCAweDI4CS8qIChE SUUgKDB4NTJlKSBEV19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJCQkvKiBEV19BVF9leHRlcm5hbCAq LwotKwkuYXNjaWkJIl9fZ25hdF9yY2hlY2tfUEVfRXhwbGljaXRfUmFpc2VcMCIgLyogRFdfQVRf bmFtZSAqLwotKwkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJCQkvKiBEV19BVF9kZWNsYXJh dGlvbiAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg1MmUgKi8KLSsJ LmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YiAqLwotKy5MZWRlYnVnX2luZm8w OgotKwotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJi cmV2MDoKLSsJLnVsZWIxMjggMHgxCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgx MQkvKiAoVEFHOiBEV19UQUdfY29tcGlsZV91bml0KSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hp bGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4MjUJLyogKERXX0FUX3Byb2R1Y2VyKSAqLwotKwku dWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChE V19BVF9sYW5ndWFnZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwot KwkudWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdf Rk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4IDB4MWIJLyogKERXX0FUX2NvbXBfZGlyKSAqLwot KwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDExCS8q IChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwot KwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDYJLyog KERXX0ZPUk1fZGF0YTQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDgJ LyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDI0CS8qIChUQUc6IERXX1RBR19iYXNl X3R5cGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHhi CS8qIChEV19BVF9ieXRlX3NpemUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRh MSkgKi8KLSsJLnVsZWIxMjggMHgzZQkvKiAoRFdfQVRfZW5jb2RpbmcpICovCi0rCS51bGViMTI4 IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1l KSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkwCi0r CS5ieXRlCTAKLSsJLnVsZWIxMjggMHgxMwkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4MmUJLyogKFRBRzogRFdfVEFHX3N1YnByb2dyYW0pICovCi0rCS5ieXRlCTB4MQkvKiBEV19j aGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjggMHgzZgkvKiAoRFdfQVRfZXh0ZXJuYWwpICovCi0r CS51bGViMTI4IDB4MTkJLyogKERXX0ZPUk1fZmxhZ19wcmVzZW50KSAqLwotKwkudWxlYjEyOCAw eDMJLyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcp ICovCi0rCS51bGViMTI4IDB4M2EJLyogKERXX0FUX2RlY2xfZmlsZSkgKi8KLSsJLnVsZWIxMjgg MHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDNiCS8qIChEV19BVF9kZWNs X2xpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIx MjggMHgxMQkvKiAoRFdfQVRfbG93X3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1f YWRkcikgKi8KLSsJLnVsZWIxMjggMHgxMgkvKiAoRFdfQVRfaGlnaF9wYykgKi8KLSsJLnVsZWIx MjggMHg2CS8qIChEV19GT1JNX2RhdGE0KSAqLwotKwkudWxlYjEyOCAweDQwCS8qIChEV19BVF9m cmFtZV9iYXNlKSAqLwotKwkudWxlYjEyOCAweDE4CS8qIChEV19GT1JNX2V4cHJsb2MpICovCi0r CS51bGViMTI4IDB4MjExNwkvKiAoRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzKSAqLwotKwkudWxl YjEyOCAweDE5CS8qIChEV19GT1JNX2ZsYWdfcHJlc2VudCkgKi8KLSsJLnVsZWIxMjggMHgxCS8q IChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICov Ci0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDE1CS8qIChhYmJyZXYgY29kZSkg Ki8KLSsJLnVsZWIxMjggMHgyZQkvKiAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJLmJ5 dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FUX25h bWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4 IDB4M2EJLyogKERXX0FUX2RlY2xfZmlsZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JN X2RhdGExKSAqLwotKwkudWxlYjEyOCAweDNiCS8qIChEV19BVF9kZWNsX2xpbmUpICovCi0rCS51 bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgyMAkvKiAoRFdf QVRfaW5saW5lKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51 bGViMTI4IDB4MQkvKiAoRFdfQVRfc2libGluZykgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdf Rk9STV9yZWY0KSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHgxOAkvKiAo YWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MmUJLyogKFRBRzogRFdfVEFHX3N1YnByb2dy YW0pICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjggMHgz MQkvKiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19G T1JNX3JlZjQpICovCi0rCS51bGViMTI4IDB4MTEJLyogKERXX0FUX2xvd19wYykgKi8KLSsJLnVs ZWIxMjggMHgxCS8qIChEV19GT1JNX2FkZHIpICovCi0rCS51bGViMTI4IDB4MTIJLyogKERXX0FU X2hpZ2hfcGMpICovCi0rCS51bGViMTI4IDB4NgkvKiAoRFdfRk9STV9kYXRhNCkgKi8KLSsJLnVs ZWIxMjggMHg0MAkvKiAoRFdfQVRfZnJhbWVfYmFzZSkgKi8KLSsJLnVsZWIxMjggMHgxOAkvKiAo RFdfRk9STV9leHBybG9jKSAqLwotKwkudWxlYjEyOCAweDQ4CS8qIChEV19BVF9zdGF0aWNfbGlu aykgKi8KLSsJLnVsZWIxMjggMHgxOAkvKiAoRFdfRk9STV9leHBybG9jKSAqLwotKwkudWxlYjEy OCAweDIxMTcJLyogKERXX0FUX0dOVV9hbGxfY2FsbF9zaXRlcykgKi8KLSsJLnVsZWIxMjggMHgx OQkvKiAoRFdfRk9STV9mbGFnX3ByZXNlbnQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwku dWxlYjEyOCAweDFhCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgxZAkvKiAoVEFH OiBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRy ZW5feWVzICovCi0rCS51bGViMTI4IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0X29yaWdpbikgKi8K LSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDExCS8q IChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwot KwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDYJLyog KERXX0ZPUk1fZGF0YTQpICovCi0rCS51bGViMTI4IDB4NTgJLyogKERXX0FUX2NhbGxfZmlsZSkg Ki8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDU5 CS8qIChEV19BVF9jYWxsX2xpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRh MSkgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAw eDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEy OCAweDIzCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgxZAkvKiAoVEFHOiBEV19U QUdfaW5saW5lZF9zdWJyb3V0aW5lKSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRyZW5feWVz ICovCi0rCS51bGViMTI4IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0X29yaWdpbikgKi8KLSsJLnVs ZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19B VF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxl YjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDYJLyogKERXX0ZP Uk1fZGF0YTQpICovCi0rCS51bGViMTI4IDB4NTgJLyogKERXX0FUX2NhbGxfZmlsZSkgKi8KLSsJ LnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDU5CS8qIChE V19BVF9jYWxsX2xpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8K LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MjgJLyogKGFiYnJldiBjb2RlKSAq LwotKwkudWxlYjEyOCAweDJlCS8qIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKSAqLwotKwkuYnl0 ZQkweDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4M2YJLyogKERXX0FUX2V4 dGVybmFsKSAqLwotKwkudWxlYjEyOCAweDE5CS8qIChEV19GT1JNX2ZsYWdfcHJlc2VudCkgKi8K LSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERX X0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDM0CS8qIChEV19BVF9hcnRpZmljaWFsKSAq LwotKwkudWxlYjEyOCAweDE5CS8qIChEV19GT1JNX2ZsYWdfcHJlc2VudCkgKi8KLSsJLnVsZWIx MjggMHgzYwkvKiAoRFdfQVRfZGVjbGFyYXRpb24pICovCi0rCS51bGViMTI4IDB4MTkJLyogKERX X0ZPUk1fZmxhZ19wcmVzZW50KSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAot KwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsKLSsgICAgICAgIC5zZWN0aW9uIC5kZWJ1Z19saW5lCi0r LkxsaW5lMV9iZWdpbjoKLSsgICAgICAgIC5ieXRlICAgMAotKwotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1pY3ljbGUuYwotQEAgLTAsMCArMSwyNCBA QAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0r Ci0rICAgQ29weXJpZ2h0IDIwMDQtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRHVt bXkgbWFpbiBmdW5jdGlvbi4gICovCi0rCi0raW50Ci0rbWFpbigpCi0rewotKyAgcmV0dXJuIDA7 Ci0rfQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1p Y3ljbGUuZXhwCi1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rIyBUaGlzIHRlc3QgZXhlcmNpc2VzIFBSIDE2NTgxLgotKwotK2xvYWRfbGliIGR3YXJmLmV4 cAotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBv cnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KLStpZiB7IVtkd2FyZjJfc3VwcG9ydF19IHsKLSsgICAg cmV0dXJuIDAKLSt9Ci0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgLlMgLmMKLSsKLStpZiB7IFtwcmVw YXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBcCi0rCSAgW2xpc3Qg JHNyY2ZpbGUgJHNyY2ZpbGUyXSB7bm9kZWJ1Z31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rIyBXZSBhcmUgdHJ5aW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYXJ0aWFsIHN5bXRhYiB0byBz eW10YWIgZXhwYW5zaW9uCi0rIyBmb3IgdGhlIGRlYnVnZ2luZyBpbmZvIGhhbmQtY29kZWQgaW4g b3VyIGFzc2VtYmx5IGZpbGUgZG9lcyBub3QgY2F1c2UKLSsjIHRoZSBkZWJ1Z2dlciB0byBjcmFz aCAoaW5maW5pdGUgcmVjdXJzaW9uKS4gIFRvIGZhY2lsaXRhdGUgdGhlIHRlc3QsCi0rIyBzdGFy dCB0aGUgZGVidWdnZXIgd2l0aCAtcmVhZG5vdy4gIFRoaXMgZm9yY2UgZXhwYW5zaW9uIGFzIHNv b24gYXMKLSsjIHRoZSBvYmpmaWxlIGlzIGxvYWRlZC4KLSsKLStzZXQgc2F2ZWRfZ2RiZmxhZ3Mg JEdEQkZMQUdTCi0rc2V0IEdEQkZMQUdTICIkR0RCRkxBR1MgLXJlYWRub3ciCi0rY2xlYW5fcmVz dGFydCAke3Rlc3RmaWxlfQotK3NldCBHREJGTEFHUyAkc2F2ZWRfZ2RiZmxhZ3MKLSsKLSsjIEFu ZCBqdXN0IHRvIGJlIHN1cmUgdGhhdCB0aGUgZGVidWdnZXIgZGlkIG5vdCBjcmFzaCBhZnRlciBo YXZpbmcKLSsjIGV4cGFuZGVkIG91ciBzeW1ib2xzLCBkbyBhIGxpZmUtY2hlY2suCi0rCi0rZ2Ri X3Rlc3QgImVjaG8gbGlmZSBjaGVja1xcbiIgImxpZmUgY2hlY2siCgpkaWZmIC0tZ2l0IGEvZ2Ri LWduYXQtZHdhcmYtY3Jhc2gtMm9mMy5wYXRjaCBiL2dkYi1nbmF0LWR3YXJmLWNyYXNoLTJvZjMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZjAyNTkuLjAwMDAwMDAKLS0t IGEvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtMm9mMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEy NSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNC0wMi9t c2cwMDcyOS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFt0ZXN0c3VpdGVdIEZpeCBkdzItaWN5Y2xl LmV4cCAtZnNhbml0aXplPWFkZHJlc3MgR0RCIGNyYXNoCi0KLQotLS1XSXlaNDZSMmk4d0R6a1N1 Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlz cG9zaXRpb246IGlubGluZQotCi1IaSBEb3VnLAotCi1pbiBmYWN0IG9idmlvdXMsIEkgd2lsbCBj aGVjayBpdCBpbi4KLQotYmludXRpbHMgcmVhZGVsZiAtd2k6Ci0gPDQ+PGEyPjogQWJicmV2IE51 bWJlcjogMjYgKERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpCi0gICAgPGEzPiAgIERXX0FUX2Fi c3RyYWN0X29yaWdpbjogPDB4NWE+Ci0gICAgPGE3PiAgIERXX0FUX2xvd19wYyAgICAgIDogMHg0 MDA1OTAKLSAgICA8YWI+ICAgRFdfQVRfaGlnaF9wYyAgICAgOiAweDQKLSAgICA8YWY+ICAgRFdf QVRfY2FsbF9maWxlICAgOiAxCi0gICAgPGIwPiAgIERXX0FUX2NhbGxfbGluZSAgIDogMjAKLSAg ICA8YjE+ICAgRFdfQVRfc2libGluZyAgICAgOiA8MHhiOD4KLSA8Mj48Yjg+OiBBYmJyZXYgTnVt YmVyOiAzNSAoRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSkKLSAgICA8Yjk+ICAgRFdfQVRfYWJz dHJhY3Rfb3JpZ2luOiA8MHg1YT4KLSAgICA8YmQ+ICAgRFdfQVRfbG93X3BjICAgICAgOiAweDQw MDU5MAotICAgIDxjMT4gICBEV19BVF9oaWdoX3BjICAgICA6IDB4NAotICAgIDxjNT4gICBEV19B VF9jYWxsX2ZpbGUgICA6IDEKLSAgICA8YzY+ICAgRFdfQVRfY2FsbF9saW5lICAgOiAyOQotCi08 YjE+IERXX0FUX3NpYmxpbmcgcG9pbnRzIHRvIHRoZSBuZXh0IERJRSAtIGJ1dCB0aGF0IERJRSBp cyAyIGxldmVscwotdXB3YXJkcyAtIGRlZmluaXRlbHkgbm90IGEgc2libGluZy4gIFRoaXMgY29u ZnVzZXMgR0RCIHVwIHRvIGEgY3Jhc2g6Ci0KLT09MzIxNDM9PSBFUlJPUjogQWRkcmVzc1Nhbml0 aXplcjogaGVhcC1idWZmZXItb3ZlcmZsb3cgb24gYWRkcmVzcyAweDYwMjQwMDAxOThhYyBhdCBw YyAweGI0ZDEwNCBicCAweDdmZmY2M2U5NmU3MCBzcCAweDdmZmY2M2U5NmU2MAotUkVBRCBvZiBz aXplIDEgYXQgMHg2MDI0MDAwMTk4YWMgdGhyZWFkIFQwCi0gICAgIzAgMHhiNGQxMDMgaW4gcmVh ZF91bnNpZ25lZF9sZWIxMjggKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dk YisweGI0ZDEwMykKLSAgICAjMSAweGIxNWYzYyBpbiBwZWVrX2RpZV9hYmJyZXYgKC9ob21lL2pr cmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweGIxNWYzYykKLSAgICAjMiAweGI0NjE4 NSBpbiBsb2FkX3BhcnRpYWxfZGllcyAoL2hvbWUvamtyYXRvY2gvcmVkaGF0L2dkYi1jbGVhbi9n ZGIvZ2RiKzB4YjQ2MTg1KQotICAgICMzIDB4YjEwM2ZiIGluIHByb2Nlc3NfcHN5bXRhYl9jb21w X3VuaXRfcmVhZGVyICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi9nZGIrMHhi MTAzZmIpCi0gICAgIzQgMHhiMGQyYTkgaW4gaW5pdF9jdXR1X2FuZF9yZWFkX2RpZXMgKC9ob21l L2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweGIwZDJhOSkKLSAgICAjNSAweGIx MTE1ZiBpbiBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0ICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQv Z2RiLWNsZWFuL2dkYi9nZGIrMHhiMTExNWYpCi0gICAgIzYgMHhiMTIzNWYgaW4gZHdhcmYyX2J1 aWxkX3BzeW10YWJzX2hhcmQgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dk YisweGIxMjM1ZikKLSAgICAjNyAweGIwNTUzNiBpbiBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKC9o b21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweGIwNTUzNikKLSAgICAjOCAw eDg2ZDVhNSBpbiByZWFkX3BzeW1zICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dk Yi9nZGIrMHg4NmQ1YTUpCi0gICAgIzkgMHg5YjFjMzcgaW4gcmVxdWlyZV9wYXJ0aWFsX3N5bWJv bHMgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweDliMWMzNykKLSAg ICAjMTAgMHg5YmYyZDAgaW4gcmVhZF9zeW1ib2xzICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2Ri LWNsZWFuL2dkYi9nZGIrMHg5YmYyZDApCi0gICAgIzExIDB4OWMwMTRjIGluIHN5bXNfZnJvbV9v YmpmaWxlXzEgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweDljMDE0 YykKLQotSSBoYXZlIGFkZGVkID09PSBEZWxldGUgYWxsIERXX0FUX3NpYmxpbmcgPT09OgotCWh0 dHBzOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvR0RCVGVzdGNhc2VDb29rYm9vaz9hY3Rpb249 ZGlmZiZyZXYyPTMxJnJldjE9MzAKLQotCi1KYW4KLQotLS1XSXlaNDZSMmk4d0R6a1N1Ci1Db250 ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRp b246IGlubGluZTsgZmlsZW5hbWU9InNpYmxpbmcucGF0Y2giCi0KLWdkYi90ZXN0c3VpdGUvCi0y MDE0LTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0K LQlGaXggZHcyLWljeWNsZS5leHAgLWZzYW5pdGl6ZT1hZGRyZXNzIEdEQiBjcmFzaC4KLQkqIGdk Yi5kd2FyZjIvZHcyLWljeWNsZS5TOiBSZW1vdmUgYWxsIERXX0FUX3NpYmxpbmcuCi0KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWljeWNsZS5TIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1pY3ljbGUuUwotaW5kZXggMWY4NGU0YS4uOTM4ZmYyMCAxMDA2 NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLlMKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLlMKLUBAIC02MywyMSArNjMsMTggQEAg cF9fdG9wOgotIAkudWxlYjEyOCAweDEJLyogRFdfQVRfZnJhbWVfYmFzZSAqLwotIAkuYnl0ZQkw eDljCS8qIERXX09QX2NhbGxfZnJhbWVfY2ZhICovCi0gCQkJLyogRFdfQVRfR05VX2FsbF9jYWxs X3NpdGVzICovCi0tCS40Ynl0ZQkuUzB4NGZjIC0gLkxkZWJ1Z19pbmZvMAkvKiBEV19BVF9zaWJs aW5nICovCi0gLlMweDFlMDoKLSAJLnVsZWIxMjggMHgxNQkvKiAoRElFICgweDFlMCkgRFdfVEFH X3N1YnByb2dyYW0pICovCi0gCS5hc2NpaQkicF9fdG9wX19taWRkbGVcMCIgLyogRFdfQVRfbmFt ZSAqLwotIAkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChwLmFkYikgKi8KLSAJLmJ5dGUJ MHg0CS8qIERXX0FUX2RlY2xfbGluZSAqLwotIAkuYnl0ZQkweDEJLyogRFdfQVRfaW5saW5lICov Ci0tCS40Ynl0ZQkuUzB4Mzc0IC0gLkxkZWJ1Z19pbmZvMAkvKiBEV19BVF9zaWJsaW5nICovCi0g LlMweDIwMjoKLSAJLnVsZWIxMjggMHgxNQkvKiAoRElFICgweDIwMikgRFdfVEFHX3N1YnByb2dy YW0pICovCi0gCS5hc2NpaQkicF9fdG9wX19taWRkbGVfX2luc2lkZVwwIiAvKiBEV19BVF9uYW1l ICovCi0gCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKHAuYWRiKSAqLwotIAkuYnl0ZQkw eDUJLyogRFdfQVRfZGVjbF9saW5lICovCi0gCS5ieXRlCTB4MQkvKiBEV19BVF9pbmxpbmUgKi8K LS0JLjRieXRlCS5TMHgyMjUJLSAuTGRlYnVnX2luZm8wIC8qIERXX0FUX3NpYmxpbmcgKi8KLSAJ LmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MjAyICovCi0gLlMweDIyNToKLSAJ LnVsZWIxMjggMHgxOAkvKiAoRElFICgweDIyNSkgRFdfVEFHX3N1YnByb2dyYW0pICovCi1AQCAt OTUsNyArOTIsNiBAQCBwX190b3A6Ci0gCS40Ynl0ZQkuTEJFNi0uTEZCNAkvKiBEV19BVF9oaWdo X3BjICovCi0gCS5ieXRlCTB4MQkvKiBEV19BVF9jYWxsX2ZpbGUgKHAuYWRiKSAqLwotIAkuYnl0 ZQkweDE0CS8qIERXX0FUX2NhbGxfbGluZSAqLwotLQkuNGJ5dGUJLlMweDM3NAktIC5MZGVidWdf aW5mbzAgLyogRFdfQVRfc2libGluZyAqLwotIAkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBv ZiBESUUgMHgyNDcgKi8KLSAJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MjI1 ICovCi0gCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDFlMCAqLwotQEAgLTE2 Nyw4ICsxNjMsNiBAQCBwX190b3A6Ci0gCS51bGViMTI4IDB4MTgJLyogKERXX0ZPUk1fZXhwcmxv YykgKi8KLSAJLnVsZWIxMjggMHgyMTE3CS8qIChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpICov Ci0gCS51bGViMTI4IDB4MTkJLyogKERXX0ZPUk1fZmxhZ19wcmVzZW50KSAqLwotLQkudWxlYjEy OCAweDEJLyogKERXX0FUX3NpYmxpbmcpICovCi0tCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1f cmVmNCkgKi8KLSAJLmJ5dGUJMAotIAkuYnl0ZQkwCi0gCS51bGViMTI4IDB4MTUJLyogKGFiYnJl diBjb2RlKSAqLwotQEAgLTE4Miw4ICsxNzYsNiBAQCBwX190b3A6Ci0gCS51bGViMTI4IDB4Ygkv KiAoRFdfRk9STV9kYXRhMSkgKi8KLSAJLnVsZWIxMjggMHgyMAkvKiAoRFdfQVRfaW5saW5lKSAq LwotIAkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0tCS51bGViMTI4IDB4MQkv KiAoRFdfQVRfc2libGluZykgKi8KLS0JLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAq LwotIAkuYnl0ZQkwCi0gCS5ieXRlCTAKLSAJLnVsZWIxMjggMHgxOAkvKiAoYWJicmV2IGNvZGUp ICovCi1AQCAtMjE2LDggKzIwOCw2IEBAIHBfX3RvcDoKLSAJLnVsZWIxMjggMHhiCS8qIChEV19G T1JNX2RhdGExKSAqLwotIAkudWxlYjEyOCAweDU5CS8qIChEV19BVF9jYWxsX2xpbmUpICovCi0g CS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLS0JLnVsZWIxMjggMHgxCS8qIChE V19BVF9zaWJsaW5nKSAqLwotLQkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0g CS5ieXRlCTAKLSAJLmJ5dGUJMAotIAkudWxlYjEyOCAweDIzCS8qIChhYmJyZXYgY29kZSkgKi8K LQotLS1XSXlaNDZSMmk4d0R6a1N1LS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0yMG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBhdGNoCmlu ZGV4IGVkMjBkOGIuLmNkMTczNjQgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0y MG9mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIwb2YyNS5wYXRjaApAQCAt NDYzLDExICs0NjMsMTEgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gKIENvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp bGVuYW1lPWJpdHBvcy1tYWluLnBhdGNoCiAKLUluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5n LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtbGFuZy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxNC0wNS0xMiAyMDoyMjowNC43 NjE0NDM0OTUgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMJMjAxNC0wNS0xMiAy MDoyMjowNS43ODE0NDQxMDcgKzAyMDAKLUBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qg dHlwZSAqZGVzY19ib3VuZHNfdHlwZSAoc3QKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcv Z2RiL2FkYS1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMjU3NDcwMTkgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtbGFuZy5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODUw NzQ5NTkxICswMjAwCitAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmRlc2Nf Ym91bmRzX3R5cGUgKHN0CiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqZGVzY19ib3VuZHMgKHN0 cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9hZGEtbGFuZy5jCiAgCiAgc3RhdGljIGludCBmYXRfcG50cl9ib3VuZHNfYml0c2l6ZSAoc3Ry dWN0IHR5cGUgKik7CiAgCi1AQCAtODgsMTMgKzg4LDEzIEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq ZGVzY19kYXRhX3RhcmdldF90eXAKK0BAIC04NiwxMyArODYsMTMgQEAgc3RhdGljIHN0cnVjdCB0 eXBlICpkZXNjX2RhdGFfdGFyZ2V0X3R5cAogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmRlc2Nf ZGF0YSAoc3RydWN0IHZhbHVlICopOwogIApAQCAtNDkyLDcgKzQ5Miw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2FkYS1sYW5nLmMKICAKICBzdGF0aWMgaW50IGRlc2NfYm91bmRfYml0c2l6ZSAo c3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwogIAotQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMg c3RydWN0IHR5cGUgKnN0YXRpY191bndyYXBfdHlwZSAoCitAQCAtMTcyLDcgKzE3Miw3IEBAIHN0 YXRpYyBzdHJ1Y3QgdHlwZSAqc3RhdGljX3Vud3JhcF90eXBlICgKICAKICBzdGF0aWMgc3RydWN0 IHZhbHVlICp1bndyYXBfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTUwMSw3ICs1MDEs NyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgCiAgc3RhdGljIHN0cnVjdCB0 eXBlICpkZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICop OwogIAotQEAgLTE4OSw3ICsxODksOCBAQCBzdGF0aWMgaW50IGFkYV9pc191bmNvbnN0cmFpbmVk X3BhY2tlZF9hCitAQCAtMTg3LDcgKzE4Nyw4IEBAIHN0YXRpYyBpbnQgYWRhX2lzX3VuY29uc3Ry YWluZWRfcGFja2VkX2EKICBzdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1ZV9zdWJzY3JpcHRfcGFj a2VkIChzdHJ1Y3QgdmFsdWUgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKik7CiAgCkBAIC01MTEsNyArNTExLDcgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUg KmNvZXJjZV91bnNwZWNfdmFsX3RvX3R5cGUgKHN0cnVjdCB2YWx1ZSAqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0eXBlICopOwotQEAg LTIxNywxNCArMjE4LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3ZhbF9hdHIgKHN0 cnUKK0BAIC0yMTUsMTQgKzIxNiwxNCBAQCBzdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1ZV92YWxf YXRyIChzdHJ1CiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0YW5kYXJkX2xvb2t1cCAoY29uc3Qg Y2hhciAqLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21haW5fZW51bSk7CiAgCkBAIC01MzAsNyArNTMwLDcgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmFkYV90 b19maXhlZF92YWx1ZV9jcmVhdGUgKHN0cnVjdCB0eXBlICosIENPUkVfQUREUiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKik7 Ci1AQCAtMjQwLDcgKzI0MSw3IEBAIHN0YXRpYyB2b2lkIGFkYV9sYW5ndWFnZV9hcmNoX2luZm8g KHN0cnUKK0BAIC0yMzgsNyArMjM5LDcgQEAgc3RhdGljIHZvaWQgYWRhX2xhbmd1YWdlX2FyY2hf aW5mbyAoc3RydQogIAogIHN0YXRpYyB2b2lkIGNoZWNrX3NpemUgKGNvbnN0IHN0cnVjdCB0eXBl ICopOwogIApAQCAtNTM5LDcgKzUzOSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5n LmMKICAJCQkJCSAgICAgc3RydWN0IHR5cGUgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAq YXNzaWduX2FnZ3JlZ2F0ZSAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB2YWx1ZSAqLCAKLUBAIC01 ODcsNyArNTg4LDcgQEAgY29lcmNlX3Vuc3BlY192YWxfdG9fdHlwZSAoc3RydWN0IHZhbHVlCitA QCAtNjk0LDcgKzY5NSw3IEBAIGNvZXJjZV91bnNwZWNfdmFsX3RvX3R5cGUgKHN0cnVjdCB2YWx1 ZQogIH0KICAKICBzdGF0aWMgY29uc3QgZ2RiX2J5dGUgKgpAQCAtNTQ4LDcgKzU0OCw3IEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICB7CiAgICBpZiAodmFsYWRkciA9PSBOVUxM KQogICAgICByZXR1cm4gTlVMTDsKLUBAIC01OTYsNyArNTk3LDcgQEAgY29uZF9vZmZzZXRfaG9z dCAoY29uc3QgZ2RiX2J5dGUgKnZhbGFkZAorQEAgLTcwMyw3ICs3MDQsNyBAQCBjb25kX29mZnNl dF9ob3N0IChjb25zdCBnZGJfYnl0ZSAqdmFsYWRkCiAgfQogIAogIHN0YXRpYyBDT1JFX0FERFIK QEAgLTU1Nyw3ICs1NTcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgewog ICAgaWYgKGFkZHJlc3MgPT0gMCkKICAgICAgcmV0dXJuIDA7Ci1AQCAtMTYwMiw3ICsxNjAzLDcg QEAgZGVzY19ib3VuZHMgKHN0cnVjdCB2YWx1ZSAqYXJyKQorQEAgLTE3MTEsNyArMTcxMiw3IEBA IGRlc2NfYm91bmRzIChzdHJ1Y3QgdmFsdWUgKmFycikKICAvKiBJZiBUWVBFIGlzIHRoZSB0eXBl IG9mIGFuIGFycmF5LWRlc2NyaXB0b3IgKGZhdCBwb2ludGVyKSwgIHRoZSBiaXQKICAgICBwb3Np dGlvbiBvZiB0aGUgZmllbGQgY29udGFpbmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgYm91bmRzIGRh dGEuICAqLwogIApAQCAtNTY2LDcgKzU2Niw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1s YW5nLmMKICBmYXRfcG50cl9ib3VuZHNfYml0cG9zIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAg ICByZXR1cm4gVFlQRV9GSUVMRF9CSVRQT1MgKGRlc2NfYmFzZV90eXBlICh0eXBlKSwgMSk7Ci1A QCAtMTY2OCw3ICsxNjY5LDcgQEAgZGVzY19kYXRhIChzdHJ1Y3QgdmFsdWUgKmFycikKK0BAIC0x Nzc3LDcgKzE3NzgsNyBAQCBkZXNjX2RhdGEgKHN0cnVjdCB2YWx1ZSAqYXJyKQogIC8qIElmIFRZ UEUgaXMgdGhlIHR5cGUgb2YgYW4gYXJyYXktZGVzY3JpcHRvciAoZmF0IHBvaW50ZXIpLCB0aGUg Yml0CiAgICAgcG9zaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3Mgb2Yg dGhlIGRhdGEuICAqLwogIApAQCAtNTc1LDcgKzU3NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L2FkYS1sYW5nLmMKICBmYXRfcG50cl9kYXRhX2JpdHBvcyAoc3RydWN0IHR5cGUgKnR5cGUpCiAg ewogICAgcmV0dXJuIFRZUEVfRklFTERfQklUUE9TIChkZXNjX2Jhc2VfdHlwZSAodHlwZSksIDAp OwotQEAgLTE3MDMsNyArMTcwNCw3IEBAIGRlc2Nfb25lX2JvdW5kIChzdHJ1Y3QgdmFsdWUgKmJv dW5kcywgaW4KK0BAIC0xODEyLDcgKzE4MTMsNyBAQCBkZXNjX29uZV9ib3VuZCAoc3RydWN0IHZh bHVlICpib3VuZHMsIGluCiAgICAgb2YgdGhlIEl0aCBsb3dlciBib3VuZCBzdG9yZWQgaW4gaXQs IGlmIFdISUNIIGlzIDAsIGFuZCB0aGUgSXRoIHVwcGVyCiAgICAgYm91bmQsIGlmIFdISUNIIGlz IDEuICBUaGUgZmlyc3QgYm91bmQgaXMgST0xLiAgKi8KICAKQEAgLTU4NCw3ICs1ODQsNyBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgZGVzY19ib3VuZF9iaXRwb3MgKHN0cnVj dCB0eXBlICp0eXBlLCBpbnQgaSwgaW50IHdoaWNoKQogIHsKICAgIHJldHVybiBUWVBFX0ZJRUxE X0JJVFBPUyAoZGVzY19iYXNlX3R5cGUgKHR5cGUpLCAyICogaSArIHdoaWNoIC0gMik7Ci1AQCAt MTg5Myw3ICsxODk0LDcgQEAgYWRhX3R5cGVfb2ZfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyLCBp bgorQEAgLTIwMDIsNyArMjAwMyw3IEBAIGFkYV90eXBlX29mX2FycmF5IChzdHJ1Y3QgdmFsdWUg KmFyciwgaW4KICAJICAgICAgICAgemVybywgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgcmVjb21w dXRlZC4gICovCiAgCSAgICAgIGlmIChsbyA8IGhpKQogIAkJewpAQCAtNTkzLDcgKzU5Myw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAJCSAgICAgICAgKGhpIC0gbG8gKyAx KSAqIFRZUEVfRklFTERfQklUU0laRSAoZWx0X3R5cGUsIDApOwogIAogIAkJICBUWVBFX0xFTkdU SCAoYXJyYXlfdHlwZSkgPSAoYXJyYXlfYml0c2l6ZSArIDcpIC8gODsKLUBAIC0yMDQ1LDcgKzIw NDYsNyBAQCBkZWNvZGVfcGFja2VkX2FycmF5X2JpdHNpemUgKHN0cnVjdCB0eXBlCitAQCAtMjE1 NCw3ICsyMTU1LDcgQEAgZGVjb2RlX3BhY2tlZF9hcnJheV9iaXRzaXplIChzdHJ1Y3QgdHlwZQog ICAgIGluIGJpdHMuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCkBAIC02MDIsNyArNjAy LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIHsKICAgIHN0cnVjdCB0eXBl ICpuZXdfZWx0X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGU7Ci1AQCAtMjA5Nyw3ICsy MDk4LDcgQEAgZGVjb2RlX2NvbnN0cmFpbmVkX3BhY2tlZF9hcnJheV90eXBlIChzdAorQEAgLTIy MDYsNyArMjIwNyw3IEBAIGRlY29kZV9jb25zdHJhaW5lZF9wYWNrZWRfYXJyYXlfdHlwZSAoc3QK ICAgIGNoYXIgKm5hbWU7CiAgICBjb25zdCBjaGFyICp0YWlsOwogICAgc3RydWN0IHR5cGUgKnNo YWRvd190eXBlOwpAQCAtNjExLDcgKzYxMSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1s YW5nLmMKICAKICAgIGlmICghcmF3X25hbWUpCiAgICAgIHJhd19uYW1lID0gYWRhX3R5cGVfbmFt ZSAoZGVzY19iYXNlX3R5cGUgKHR5cGUpKTsKLUBAIC0yMTY4LDcgKzIxNjksOCBAQCBkZWNvZGVf Y29uc3RyYWluZWRfcGFja2VkX2FycmF5IChzdHJ1Y3QKK0BAIC0yMjc3LDcgKzIyNzgsOCBAQCBk ZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5IChzdHJ1Y3QKICAgCSBhcnJheSB3aXRoIG5v IHdyYXBwZXIuICBJbiBvcmRlciB0byBpbnRlcnByZXQgdGhlIHZhbHVlIHRocm91Z2gKICAgCSB0 aGUgKGxlZnQtanVzdGlmaWVkKSBwYWNrZWQgYXJyYXkgdHlwZSB3ZSBqdXN0IGJ1aWx0LCB3ZSBt dXN0CiAgIAkgZmlyc3QgbGVmdC1qdXN0aWZ5IGl0LiAgKi8KQEAgLTYyMSw3ICs2MjEsNyBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAgVUxPTkdFU1QgbW9kOwogIAog ICAgICAgIG1vZCA9IGFkYV9tb2R1bHVzICh2YWx1ZV90eXBlIChhcnIpKSAtIDE7Ci1AQCAtMjI2 OSwxNSArMjI3MSwxNiBAQCBoYXNfbmVnYXRpdmVzIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0y Mzc4LDE1ICsyMzgwLDE2IEBAIGhhc19uZWdhdGl2ZXMgKHN0cnVjdCB0eXBlICp0eXBlKQogIAog IHN0cnVjdCB2YWx1ZSAqCiAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3Qg dmFsdWUgKm9iaiwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC02NDQsNyArNjQ0LDcgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnl0ZSBvZiBzb3VyY2UgdGhhdCBhcmUgdW51c2VkICovCiAgICAgIGFjY3Vt U2l6ZTsgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgbWVhbmluZ2Z1bCBiaXRzIGluIGFj Y3VtICovCiAgICB1bnNpZ25lZCBjaGFyICpieXRlczsgICAgICAgICAvKiBGaXJzdCBieXRlIGNv bnRhaW5pbmcgZGF0YSB0byB1bnBhY2sgKi8KLUBAIC0yMzEwLDcgKzIzMTMsNyBAQCBhZGFfdmFs dWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKHN0cnVjdCB2CitAQCAtMjQyMCw3ICsyNDIzLDcgQEAg YWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdgogIAogICAgaWYgKG9iaiAh PSBOVUxMKQogICAgICB7CkBAIC02NTMsNyArNjUzLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv YWRhLWxhbmcuYwogIAogICAgICAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHYsIG9i aik7CiAgICAgICAgc2V0X3ZhbHVlX2JpdHBvcyAodiwgYml0X29mZnNldCArIHZhbHVlX2JpdHBv cyAob2JqKSk7Ci1AQCAtMjQyNiw3ICsyNDI5LDcgQEAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNr ZWRfdmFsIChzdHJ1Y3QgdgorQEAgLTI1MzYsNyArMjUzOSw3IEBAIGFkYV92YWx1ZV9wcmltaXRp dmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKICAgICBub3Qgb3ZlcmxhcC4gICovCiAgc3RhdGljIHZv aWQKICBtb3ZlX2JpdHMgKGdkYl9ieXRlICp0YXJnZXQsIGludCB0YXJnX29mZnNldCwgY29uc3Qg Z2RiX2J5dGUgKnNvdXJjZSwKQEAgLTY2Miw3ICs2NjIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9hZGEtbGFuZy5jCiAgewogICAgdW5zaWduZWQgaW50IGFjY3VtLCBtYXNrOwogICAgaW50IGFj Y3VtX2JpdHMsIGNodW5rX3NpemU7Ci1AQCAtMjUxNiw3ICsyNTE5LDcgQEAgYWRhX3ZhbHVlX2Fz c2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwgcworQEAgLTI2MjYsNyArMjYyOSw3IEBAIGFkYV92 YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1ZSAqdG92YWwsIHMKICAgICAgewogICAgICAgIGludCBs ZW4gPSAodmFsdWVfYml0cG9zICh0b3ZhbCkKICAJCSArIGJpdHMgKyBIT1NUX0NIQVJfQklUIC0g MSkgLyBIT1NUX0NIQVJfQklUOwpAQCAtNjcxLDcgKzY3MSw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL2FkYS1sYW5nLmMKICAgICAgICBnZGJfYnl0ZSAqYnVmZmVyID0gYWxsb2NhIChsZW4pOwog ICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwogICAgICAgIENPUkVfQUREUiB0b19hZGRyID0gdmFs dWVfYWRkcmVzcyAodG92YWwpOwotQEAgLTI1NjEsNyArMjU2NCw3IEBAIHZhbHVlX2Fzc2lnbl90 b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQorQEAgLTI2NzEsNyArMjY3NCw3IEBAIHZhbHVlX2Fz c2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQogICAgICAoTE9OR0VTVCkgICh2YWx1ZV9h ZGRyZXNzIChjb21wb25lbnQpIC0gdmFsdWVfYWRkcmVzcyAoY29udGFpbmVyKSk7CiAgICBpbnQg Yml0X29mZnNldF9pbl9jb250YWluZXIgPSAKICAgICAgdmFsdWVfYml0cG9zIChjb21wb25lbnQp IC0gdmFsdWVfYml0cG9zIChjb250YWluZXIpOwpAQCAtNjgwLDcgKzY4MCw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAgIAogICAgdmFsID0gdmFsdWVfY2FzdCAodmFsdWVf dHlwZSAoY29tcG9uZW50KSwgdmFsKTsKICAKLUBAIC00MDg1LDcgKzQwODgsNyBAQCBlbnN1cmVf bHZhbCAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtNDE5Niw3ICs0MTk5LDcgQEAgZW5zdXJlX2x2 YWwgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbm90X2x2 YWwKICAgICAgICB8fCBWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfaW50ZXJuYWx2YXIpCiAgICAg IHsKQEAgLTY4OSw3ICs2ODksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAg ICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHIgPQogICAgICAgICAgdmFsdWVfYXNfbG9uZyAodmFs dWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGxlbikpOwogIAotQEAgLTQxNTksNyArNDE2 Miw3IEBAIHN0YXRpYyBDT1JFX0FERFIKK0BAIC00MjcwLDcgKzQyNzMsNyBAQCBzdGF0aWMgQ09S RV9BRERSCiAgdmFsdWVfcG9pbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IHR5cGUg KnR5cGUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0 eXBlKTsKQEAgLTY5OCw3ICs2OTgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5j CiAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChsZW4pOwogICAgQ09SRV9BRERSIGFkZHI7CiAg Ci1AQCAtNjE0NSw3ICs2MTQ4LDcgQEAgdmFsdWVfdGFnX2Zyb21fY29udGVudHNfYW5kX2FkZHJl c3MgKHN0cgorQEAgLTYzNzQsNyArNjM3Nyw3IEBAIHZhbHVlX3RhZ19mcm9tX2NvbnRlbnRzX2Fu ZF9hZGRyZXNzIChzdHIKICAJCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIGFkZHJlc3MpCiAgewpA QCAtNzA3LDcgKzcwNyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAgIHN0 cnVjdCB0eXBlICp0YWdfdHlwZTsKICAKICAgIGlmIChmaW5kX3N0cnVjdF9maWVsZCAoIl90YWci LCB0eXBlLCAwLCAmdGFnX3R5cGUsICZ0YWdfYnl0ZV9vZmZzZXQsCi1AQCAtNjYxMCw3ICs2NjEz LDcgQEAgYWRhX2luX3ZhcmlhbnQgKExPTkdFU1QgdmFsLCBzdHJ1Y3QgdHlwZQorQEAgLTY4Mzks NyArNjg0Miw3IEBAIGFkYV9pbl92YXJpYW50IChMT05HRVNUIHZhbCwgc3RydWN0IHR5cGUKICAg ICBvbmx5IGluIHRoYXQgaXQgY2FuIGhhbmRsZSBwYWNrZWQgdmFsdWVzIG9mIGFyYml0cmFyeSB0 eXBlLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTcxNiw3ICs3MTYsNyBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHR5cGUgKmFyZ190eXBlKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwotQEAg LTY2MjIsNyArNjYyNSw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1 ZQorQEAgLTY4NTEsNyArNjg1NCw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVj dCB2YWx1ZQogIAogICAgaWYgKFRZUEVfRklFTERfQklUU0laRSAoYXJnX3R5cGUsIGZpZWxkbm8p ICE9IDApCiAgICAgIHsKQEAgLTcyNSw3ICs3MjUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9h ZGEtbGFuZy5jCiAgICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdf dHlwZSwgZmllbGRubyk7CiAgCiAgICAgICAgcmV0dXJuIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFj a2VkX3ZhbCAoYXJnMSwgdmFsdWVfY29udGVudHMgKGFyZzEpLAotQEAgLTY2NDksOSArNjY1Miw5 IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQorQEAgLTY4NzgsOSAr Njg4MSw5IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQogICAgIFJl dHVybnMgMSBpZiBmb3VuZCwgMCBvdGhlcndpc2UuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTcz Nyw3ICs3MzcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgCQkgICBpbnQg KmluZGV4X3ApCiAgewogICAgaW50IGk7Ci1AQCAtNjY2OSw4ICs2NjcyLDggQEAgZmluZF9zdHJ1 Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cgorQEAgLTY4OTgsOCArNjkwMSw4IEBAIGZp bmRfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBzdHIKICAKICAgIGZvciAoaSA9IDA7 IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpICs9IDEpCiAgICAgIHsKQEAgLTc0OCw3ICs3NDgs NyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAgY29uc3QgY2hhciAq dF9maWVsZF9uYW1lID0gVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKTsKICAKICAgICAgICBpZiAo dF9maWVsZF9uYW1lID09IE5VTEwpCi1AQCAtNjc0MCw3ICs2NzQzLDcgQEAgbnVtX3Zpc2libGVf ZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC02OTY5LDcgKzY5NzIsNyBAQCBudW1fdmlz aWJsZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgIFNlYXJjaGVzIHJlY3Vyc2l2ZWx5 IHRocm91Z2ggd3JhcHBlciBmaWVsZHMgKGUuZy4sICdfcGFyZW50JykuICAqLwogIAogIHN0YXRp YyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzU3LDcgKzc1Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L2FkYS1sYW5nLmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUp CiAgewogICAgaW50IGk7Ci1AQCAtNjc3Myw3ICs2Nzc2LDcgQEAgYWRhX3NlYXJjaF9zdHJ1Y3Rf ZmllbGQgKGNoYXIgKm5hbWUsIHN0cgorQEAgLTcwMDIsNyArNzAwNSw3IEBAIGFkYV9zZWFyY2hf c3RydWN0X2ZpZWxkIChjaGFyICpuYW1lLCBzdHIKICAgICAgICAgICAgaW50IGo7CiAgICAgICAg ICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gYWRhX2NoZWNrX3R5cGVkZWYgKFRZUEVfRklF TERfVFlQRSAodHlwZSwKICAJCQkJCQkJCQlpKSk7CkBAIC03NjYsNyArNzY2LDcgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwg VFlQRV9ORklFTERTIChmaWVsZF90eXBlKTsgaiArPSAxKQogICAgICAgICAgICAgIHsKLUBAIC02 NzkxLDggKzY3OTQsOCBAQCBhZGFfc2VhcmNoX3N0cnVjdF9maWVsZCAoY2hhciAqbmFtZSwgc3Ry CitAQCAtNzAyMCw4ICs3MDIzLDggQEAgYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNoYXIgKm5h bWUsIHN0cgogICAgcmV0dXJuIE5VTEw7CiAgfQogIApAQCAtNzc3LDcgKzc3Nyw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAKICAKICAvKiBSZXR1cm4gZmllbGQgI0lOREVY IGluIEFSRywgd2hlcmUgdGhlIGluZGV4IGlzIHRoYXQgcmV0dXJuZWQgYnkKLUBAIC02ODAxLDcg KzY4MDQsNyBAQCBzdGF0aWMgc3RydWN0IHZhbHVlICphZGFfaW5kZXhfc3RydWN0X2ZpCitAQCAt NzAzMCw3ICs3MDMzLDcgQEAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqYWRhX2luZGV4X3N0cnVjdF9m aQogICAqIElmIGZvdW5kLCByZXR1cm4gdmFsdWUsIGVsc2UgcmV0dXJuIE5VTEwuICAqLwogIAog IHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzg2LDcgKzc4Niw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL2FkYS1sYW5nLmMKICAJCQlzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICByZXR1cm4g YWRhX2luZGV4X3N0cnVjdF9maWVsZF8xICgmaW5kZXgsIGFyZywgb2Zmc2V0LCB0eXBlKTsKLUBA IC02ODEzLDcgKzY4MTYsNyBAQCBhZGFfaW5kZXhfc3RydWN0X2ZpZWxkIChpbnQgaW5kZXgsIHN0 cnVjCitAQCAtNzA0Miw3ICs3MDQ1LDcgQEAgYWRhX2luZGV4X3N0cnVjdF9maWVsZCAoaW50IGlu ZGV4LCBzdHJ1YwogICAqICpJTkRFWF9QLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoK QEAgLTc5NSw3ICs3OTUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgCQkJ ICBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICBpbnQgaTsKLUBAIC02OTAzLDcgKzY5MDYsOCBA QCBhZGFfdmFsdWVfc3RydWN0X2VsdCAoc3RydWN0IHZhbHVlICphcmcsCitAQCAtNzEzMiw3ICs3 MTM1LDggQEAgYWRhX3ZhbHVlX3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqYXJnLAogICAgICB2 ID0gYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZywgMCwgdCk7CiAgICBlbHNlCiAg ICAgIHsKQEAgLTgwNSw3ICs4MDUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5j CiAgICAgICAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGU7CiAgICAgICAgQ09SRV9BRERSIGFkZHJl c3M7CiAgCi1AQCAtNzIxNiw4ICs3MjIwLDggQEAgYWRhX2NvZXJjZV9yZWYgKHN0cnVjdCB2YWx1 ZSAqdmFsMCkKK0BAIC03NDQ5LDggKzc0NTMsOCBAQCBhZGFfY29lcmNlX3JlZiAoc3RydWN0IHZh bHVlICp2YWwwKQogIC8qIFJldHVybiBPRkYgcm91bmRlZCB1cHdhcmQgaWYgbmVjZXNzYXJ5IHRv IGEgbXVsdGlwbGUgb2YKICAgICBBTElHTk1FTlQgKGEgcG93ZXIgb2YgMikuICAqLwogIApAQCAt ODE2LDcgKzgxNiw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICB7CiAgICBy ZXR1cm4gKG9mZiArIGFsaWdubWVudCAtIDEpICYgfihhbGlnbm1lbnQgLSAxKTsKICB9Ci1AQCAt NzU5NiwxMCArNzYwMCw5IEBAIGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNvcmRfdHlwZV8xIChz dHIKK0BAIC03ODMyLDEwICs3ODM2LDkgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90 eXBlXzEgKHN0cgogICAgc3RydWN0IHZhbHVlICptYXJrID0gdmFsdWVfbWFyayAoKTsKICAgIHN0 cnVjdCB2YWx1ZSAqZHZhbDsKICAgIHN0cnVjdCB0eXBlICpydHlwZTsKQEAgLTgyOSw3ICs4Mjks NyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICBpbnQgZjsKICAKICAgIC8q IENvbXB1dGUgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdGhpcyByZWNvcmQgdHlwZSB0aGF0IGFy ZSBnb2luZwotQEAgLTc2NzAsNyArNzY3Myw3IEBAIGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNv cmRfdHlwZV8xIChzdHIKK0BAIC03OTEzLDcgKzc5MTYsNyBAQCBhZGFfdGVtcGxhdGVfdG9fZml4 ZWRfcmVjb3JkX3R5cGVfMSAoc3RyCiAgCSAgICAgdGhhdCBmb2xsb3cgdGhpcyBvbmUuICAqLwog IAkgIGlmIChhZGFfaXNfYWxpZ25lcl90eXBlIChmaWVsZF90eXBlKSkKICAJICAgIHsKQEAgLTgz OCw3ICs4MzgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgCiAgCSAgICAg IGZpZWxkX3ZhbGFkZHIgPSBjb25kX29mZnNldF9ob3N0IChmaWVsZF92YWxhZGRyLCBmaWVsZF9v ZmZzZXQpOwogIAkgICAgICBmaWVsZF9hZGRyZXNzID0gY29uZF9vZmZzZXRfdGFyZ2V0IChmaWVs ZF9hZGRyZXNzLCBmaWVsZF9vZmZzZXQpOwotQEAgLTc3OTksMTEgKzc4MDIsMTEgQEAgYWRhX3Rl bXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgorQEAgLTgwNDksMTEgKzgwNTIsMTEg QEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgogICAgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSA8PSAwKQogICAgICB7CiAgICAgICAgaWYgKFRZUEVfTkFNRSAocnR5cGUp KQpAQCAtODU0LDcgKzg1NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAg ICAgfQogICAgZWxzZQogICAgICB7Ci1AQCAtODE0MCw3ICs4MTQzLDggQEAgdG9fZml4ZWRfYXJy YXlfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLAorQEAgLTgzOTMsNyArODM5Niw4IEBAIHRvX2Zp eGVkX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlMCwKICAJIHR5cGUgd2FzIGEgcmVndWxh ciAobm9uLXBhY2tlZCkgYXJyYXkgdHlwZS4gIEFzIGEgcmVzdWx0LCB0aGUKICAJIGJpdHNpemUg b2YgdGhlIGFycmF5IGVsZW1lbnRzIG5lZWRzIHRvIGJlIHNldCBhZ2FpbiwgYW5kIHRoZSBhcnJh eQogIAkgbGVuZ3RoIG5lZWRzIHRvIGJlIHJlY29tcHV0ZWQgYmFzZWQgb24gdGhhdCBiaXRzaXpl LiAgKi8KQEAgLTg2NCwxMSArODY0LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5n LmMKICAgICAgICBpbnQgZWx0X2JpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUwLCAw KTsKICAKICAgICAgICBUWVBFX0ZJRUxEX0JJVFNJWkUgKHJlc3VsdCwgMCkgPSBUWVBFX0ZJRUxE X0JJVFNJWkUgKHR5cGUwLCAwKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmgKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtbGFuZy5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNy4xLm9yaWcvZ2RiL2FkYS1sYW5nLmgJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmgJMjAxNC0wNS0xMiAyMDoyMjow NS43ODE0NDQxMDcgKzAyMDAKLUBAIC0xODAsNyArMTgwLDcgQEAgZXh0ZXJuIHZvaWQgYWRhX3By aW50X3R5cGUgKHN0cnVjdCB0eXBlCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9h ZGEtbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI2NzQ3MDIwICswMjAwCisrKysgZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvYWRhLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1MDc0OTU5 MSArMDIwMAorQEAgLTE4MSw3ICsxODEsNyBAQCBleHRlcm4gdm9pZCBhZGFfcHJpbnRfdHlwZSAo c3RydWN0IHR5cGUKICBleHRlcm4gdm9pZCBhZGFfcHJpbnRfdHlwZWRlZiAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBzeW1ib2wgKm5ld19zeW1ib2wsCiAgCQkJICAgICAgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pOwogIApAQCAtODc3LDcgKzg3Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L2FkYS1sYW5nLmgKICAJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJICAgY29uc3Qg c3RydWN0IHZhbHVlICosCiAgCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Kik7Ci1AQCAtMTk1LDcgKzE5NSw3IEBAIGV4dGVybiB2b2lkIGFkYV9lbWl0X2NoYXIgKGludCwg c3RydWN0IHQKK0BAIC0xOTYsNyArMTk2LDcgQEAgZXh0ZXJuIHZvaWQgYWRhX2VtaXRfY2hhciAo aW50LCBzdHJ1Y3QgdAogIGV4dGVybiB2b2lkIGFkYV9wcmludGNoYXIgKGludCwgc3RydWN0IHR5 cGUgKiwgc3RydWN0IHVpX2ZpbGUgKik7CiAgCiAgZXh0ZXJuIHZvaWQgYWRhX3ByaW50c3RyIChz dHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLApAQCAtODg2 LDcgKzg4Niw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmgKICAJCQkgIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogIAogIHN0cnVjdCB2YWx1ZSAqYWRhX2Nv bnZlcnRfYWN0dWFsIChzdHJ1Y3QgdmFsdWUgKmFjdHVhbCwKLUBAIC0yNjgsNyArMjY4LDcgQEAg ZXh0ZXJuIGludCBhZGFfaXNfY29uc3RyYWluZWRfcGFja2VkX2FycgorQEAgLTI2Nyw3ICsyNjcs NyBAQCBleHRlcm4gaW50IGFkYV9pc19jb25zdHJhaW5lZF9wYWNrZWRfYXJyCiAgCiAgZXh0ZXJu IHN0cnVjdCB2YWx1ZSAqYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdmFs dWUgKiwKICAJCQkJCQkgICAgIGNvbnN0IGdkYl9ieXRlICosCkBAIC04OTUsMTEgKzg5NSwxMSBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5oCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRl cm4gc3RydWN0IHR5cGUgKmFkYV9jb2VyY2VfdG9fc2ltcGxlX2FycmF5X3R5cGUgKHN0cnVjdCB0 eXBlICopOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLXR5cGVwcmludC5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvYWRhLXR5cGVwcmludC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYWRhLXR5cGVwcmludC5jCTIwMTQtMDUtMTIg MjA6MjI6MDUuNzgxNDQ0MTA3ICswMjAwCi1AQCAtODI5LDggKzgyOSw4IEBAIGFkYV9wcmludF90 eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZTAsIGNvbnMKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjEyNjc0NzAyMCArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDE0LTA2LTE2 IDIzOjI3OjA3Ljg1MTc0OTU5MiArMDIwMAorQEAgLTg2NSw4ICs4NjUsOCBAQCBhZGFfcHJpbnRf dHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgICBjb25zdCBjaGFyICpuYW1lID0g YWRhX3R5cGVfbmFtZSAodHlwZSk7CiAgCiAgCSAgICBpZiAoIWFkYV9pc19yYW5nZV90eXBlX25h bWUgKG5hbWUpKQpAQCAtOTEwLDcgKzkxMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS10 eXBlcHJpbnQuYwogIAkgICAgZWxzZQogIAkgICAgICB7CiAgCQlmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJyYW5nZSAiKTsKLUBAIC04NTEsNyArODUxLDggQEAgYWRhX3ByaW50X3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlMCwgY29ucworQEAgLTg4Nyw3ICs4ODcsOCBAQCBhZGFfcHJpbnRfdHlw ZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgfQogIAlicmVhazsKICAgICAgICBjYXNl IFRZUEVfQ09ERV9GTFQ6CkBAIC05MjAsMTAgKzkyMCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9hZGEtdHlwZXByaW50LmMKICAJYnJlYWs7CiAgICAgICAgY2FzZSBUWVBFX0NPREVfRU5VTToK ICAJaWYgKHNob3cgPCAwKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLXZhbHByaW50LmMKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtdmFscHJpbnQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjcuMS5vcmlnL2dkYi9hZGEtdmFscHJpbnQuYwkyMDE0LTA1LTA1IDIzOjUxOjI0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYWRhLXZhbHByaW50LmMJMjAxNC0w NS0xMiAyMDoyMjowNS43ODI0NDQxMDcgKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL2FkYS12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI3NzQ3MDIxICswMjAw CisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYWRhLXZhbHByaW50LmMJMjAxNC0wNi0xNiAy MzoyNzowNy44NTE3NDk1OTIgKzAyMDAKIEBAIC0zNSwxMSArMzUsMTEgQEAKICAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKICAKQEAgLTEwNzcsMTEgKzEwNzcsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9n ZGIvYWRhLXZhbHByaW50LmMKICAJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBy ZWN1cnNlLAogIAkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCSAgICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKLUluZGV4OiBnZGItNy43LjEv Z2RiL2Fubm90YXRlLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hbm5vdGF0ZS5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2Fubm90YXRlLmMJMjAxNC0wMS0w OCAxMDoyMzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL2Fubm90YXRlLmMJ MjAxNC0wNS0xMiAyMDoyMjowNS43ODI0NDQxMDcgKzAyMDAKLUBAIC01MjMsMjEgKzUyMywyMSBA QCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZvaWQpCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmln L2dkYi9hbm5vdGF0ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI3NzQ3MDIxICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW5ub3RhdGUuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1 MTc0OTU5MiArMDIwMAorQEAgLTUyNCwyMSArNTI0LDIxIEBAIGFubm90YXRlX2ZyYW1lX2VuZCAo dm9pZCkKICB9CiAgDAogIHZvaWQKQEAgLTExMDcsMTAgKzExMDcsMTAgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvYW5ub3RhdGUuYwogIH0KICAKICB2b2lkCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9h bm5vdGF0ZS5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW5ub3RhdGUuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9hbm5vdGF0ZS5oCTIwMTQtMDEtMDggMTA6 MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9hbm5vdGF0ZS5oCTIwMTQt MDUtMTIgMjA6MjI6MDUuNzgyNDQ0MTA3ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9hbm5vdGF0ZS5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI3NzQ3MDIxICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW5ub3RhdGUuaAkyMDE0LTA2LTE2IDIzOjI3OjA3 Ljg1Mjc0OTU5MyArMDIwMAogQEAgLTkyLDggKzkyLDggQEAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVf ZnJhbWVfc291cmNlX2VuZCAodgogIGV4dGVybiB2b2lkIGFubm90YXRlX2ZyYW1lX3doZXJlICh2 b2lkKTsKICBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZvaWQpOwpAQCAtMTEyMiwy NCArMTEyMiwyNCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hbm5vdGF0ZS5oCiAgZXh0ZXJuIHZv aWQgYW5ub3RhdGVfZWx0X3JlcF9lbmQgKHZvaWQpOwogIGV4dGVybiB2b2lkIGFubm90YXRlX2Vs dCAodm9pZCk7CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfYXJyYXlfc2VjdGlvbl9lbmQgKHZvaWQp OwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYXJtLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvYXJtLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4x Lm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjcuMS9nZGIvYXJtLWxpbnV4LW5hdC5jCTIwMTQtMDUtMTIgMjA6MjI6 MDUuNzgyNDQ0MTA3ICswMjAwCi1AQCAtMTA3Myw3ICsxMDczLDcgQEAgYXJtX2xpbnV4X3JlbW92 ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZwotIC8qIEFyZSB3ZSBhYmxlIHRvIHVzZSBhIGhhcmR3 YXJlIHdhdGNocG9pbnQgZm9yIHRoZSBMRU4gYnl0ZXMgc3RhcnRpbmcgYXQgCistLS0gZ2RiLTcu Ny45MC4yMDE0MDYxMy5vcmlnL2dkYi9hcm0tbGludXgtbmF0LmMJMjAxNC0wNi0xNiAyMzoyNzow NS4xMjg3NDcwMjIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hcm0tbGludXgt bmF0LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NTI3NDk1OTMgKzAyMDAKK0BAIC0xMTg3LDcgKzEx ODcsNyBAQCBhcm1fbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCB0CiAgICAgQURE Uj8gICovCiAgc3RhdGljIGludAotLWFybV9saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK2FybV9saW51eF9yZWdpb25fb2tfZm9yX2h3 X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBhcm1fbGludXhfcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwKKy0JCQkJ ICAgICAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQorKwkJCQkgICAgICAgQ09SRV9BRERSIGFk ZHIsIExPTkdFU1QgbGVuKQogIHsKICAgIGNvbnN0IHN0cnVjdCBhcm1fbGludXhfaHdicF9jYXAg KmNhcCA9IGFybV9saW51eF9nZXRfaHdicF9jYXAgKCk7CiAgICBDT1JFX0FERFIgbWF4X3dwX2xl bmd0aCwgYWxpZ25lZF9hZGRyOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9heC1nZGIuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuMS5vcmlnL2dkYi9heC1nZGIuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43ODM0NDQx MDggKzAyMDAKLUBAIC04MiwxMiArODIsMTIgQEAgc3RhdGljIHZvaWQgZ2VuX3RyYWNlZF9wb3Ag KHN0cnVjdCBnZGJhcgorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvYXgtZ2RiLmMJ MjAxNC0wNi0xNiAyMzoyNzowNS4xMjk3NDcwMjIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi9heC1nZGIuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1Mzc0OTU5NCArMDIwMAorQEAg LTgzLDEyICs4MywxMiBAQCBzdGF0aWMgdm9pZCBnZW5fdHJhY2VkX3BvcCAoc3RydWN0IGdkYmFy CiAgc3RhdGljIHZvaWQgZ2VuX3NpZ25fZXh0ZW5kIChzdHJ1Y3QgYWdlbnRfZXhwciAqLCBzdHJ1 Y3QgdHlwZSAqKTsKICBzdGF0aWMgdm9pZCBnZW5fZXh0ZW5kIChzdHJ1Y3QgYWdlbnRfZXhwciAq LCBzdHJ1Y3QgdHlwZSAqKTsKICBzdGF0aWMgdm9pZCBnZW5fZmV0Y2ggKHN0cnVjdCBhZ2VudF9l eHByICosIHN0cnVjdCB0eXBlICopOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvYXgtZ2RiLmMKICBzdGF0aWMgdm9pZCBnZW5fc3ltX29mZnNldCAoc3RydWN0IGFn ZW50X2V4cHIgKiwgc3RydWN0IHN5bWJvbCAqKTsKICBzdGF0aWMgdm9pZCBnZW5fdmFyX3JlZiAo c3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGFnZW50X2V4cHIgKmF4LAogIAkJCSBzdHJ1Y3QgYXhz X3ZhbHVlICp2YWx1ZSwgc3RydWN0IHN5bWJvbCAqdmFyKTsKLUBAIC0xMzUsMTUgKzEzNSwxNiBA QCBzdGF0aWMgdm9pZCBnZW5fZGVyZWYgKHN0cnVjdCBhZ2VudF9leHByCitAQCAtMTM2LDE1ICsx MzYsMTYgQEAgc3RhdGljIHZvaWQgZ2VuX2RlcmVmIChzdHJ1Y3QgYWdlbnRfZXhwcgogIHN0YXRp YyB2b2lkIGdlbl9hZGRyZXNzX29mIChzdHJ1Y3QgYWdlbnRfZXhwciAqLCBzdHJ1Y3QgYXhzX3Zh bHVlICopOwogIHN0YXRpYyB2b2lkIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgICAgICBzdHJ1Y3QgYXhzX3ZhbHVl ICp2YWx1ZSwKQEAgLTExNzQsNyArMTE3NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2F4LWdk Yi5jCiAgCQkJCSAgICAgc3RydWN0IHR5cGUgKnR5cGUpOwogIHN0YXRpYyB2b2lkIGdlbl9zdHJ1 Y3RfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCiAg CQkJICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAotQEAgLTUzOCw3ICs1MzksNyBAQCBnZW5f ZmV0Y2ggKHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0CitAQCAtNTM5LDcgKzU0MCw3IEBA IGdlbl9mZXRjaCAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QKICAgICByaWdodCBzaGlm dCBpdCBieSAtRElTVEFOQ0UgYml0cyBpZiBESVNUQU5DRSA8IDAuICBUaGlzIGdlbmVyYXRlcwog ICAgIHVuc2lnbmVkIChsb2dpY2FsKSByaWdodCBzaGlmdHMuICAqLwogIHN0YXRpYyB2b2lkCkBA IC0xMTgzLDcgKzExODMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9heC1nZGIuYwogIHsKICAg IGlmIChkaXN0YW5jZSA+IDApCiAgICAgIHsKLUBAIC01OTIsNyArNTkzLDcgQEAgZ2VuX2ZyYW1l X2xvY2Fsc19hZGRyZXNzIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTU5Myw3ICs1OTQsNyBAQCBnZW5f ZnJhbWVfbG9jYWxzX2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoCiAgICAgcHJvZ3JhbW1pbmcgaW4g TUwsIGl0IHdvdWxkIGJlIGNsZWFyZXIgd2h5IHRoZXNlIGFyZSB0aGUgc2FtZQogICAgIHRoaW5n LiAgKi8KICBzdGF0aWMgdm9pZApAQCAtMTE5Miw3ICsxMTkyLDcgQEAgSW5kZXg6IGdkYi03Ljcu MS9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBJdCB3b3VsZCBzdWZmaWNlIHRvIHNpbXBseSBwdXNo IHRoZSBvZmZzZXQgYW5kIGFkZCBpdCwgYnV0IHRoaXMKICAgICAgIG1ha2VzIGl0IGVhc2llciB0 byByZWFkIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBvZmZzZXRzIGluIHRoZQotQEAgLTEyNDgsNyAr MTI0OSw3IEBAIGdlbl9hZGRyZXNzX29mIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHMKK0BAIC0x MjQ5LDcgKzEyNTAsNyBAQCBnZW5fYWRkcmVzc19vZiAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBz CiAgc3RhdGljIHZvaWQKICBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCiAgCQkgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLCBz dHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTEyMDEsNyArMTIwMSw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL2F4LWdkYi5jCiAgewogICAgLyogTm90ZSB0aGF0IG9wc1tpXSBmZXRjaGVzIDggPDwgaSBi aXRzLiAgKi8KICAgIHN0YXRpYyBlbnVtIGFnZW50X29wIG9wc1tdCi1AQCAtMTI4MywxMyArMTI4 NCwxMyBAQCBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwCitAQCAtMTI4 NCwxMyArMTI4NSwxMyBAQCBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw CiAgCiAgICAvKiBUaGUgZmlyc3QgYW5kIG9uZS1hZnRlci1sYXN0IGJpdHMgaW4gdGhlIGZpZWxk LCBidXQgcm91bmRlZCBkb3duCiAgICAgICBhbmQgdXAgdG8gYnl0ZSBib3VuZGFyaWVzLiAgKi8K QEAgLTEyMjAsNyArMTIyMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2F4LWdkYi5jCiAgCiAg ICAvKiBUaGUgaW5kZXggaW4gb3BzIG9mIHRoZSBvcGNvZGUgd2UncmUgY29uc2lkZXJpbmcuICAq LwogICAgaW50IG9wOwotQEAgLTE0MDgsNyArMTQwOSw3IEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0 cnVjdCBleHByZXNzaW9uICpleHAKK0BAIC0xNDA5LDcgKzE0MTAsNyBAQCBnZW5fYml0ZmllbGRf cmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwCiAgc3RhdGljIHZvaWQKICBnZW5fcHJpbWl0aXZl X2ZpZWxkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAkJICAgICBzdHJ1Y3QgYWdlbnRfZXhw ciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLApAQCAtMTIyOSw3ICsxMjI5LDcgQEAgSW5k ZXg6IGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBJcyB0aGlzIGEgYml0ZmllbGQ/ ICAqLwogICAgaWYgKFRZUEVfRklFTERfUEFDS0VEICh0eXBlLCBmaWVsZG5vKSkKLUBAIC0xNDMz LDcgKzE0MzQsNyBAQCBnZW5fcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqCitA QCAtMTQzNCw3ICsxNDM1LDcgQEAgZ2VuX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IGV4cHJlc3Np b24gKgogIHN0YXRpYyBpbnQKICBnZW5fc3RydWN0X3JlZl9yZWN1cnNpdmUgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgIHN0cnVjdCBheHNfdmFs dWUgKnZhbHVlLApAQCAtMTIzOCwxMCArMTIzOCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9h eC1nZGIuYwogIHsKICAgIGludCBpLCByc2x0OwogICAgaW50IG5iYXNlcyA9IFRZUEVfTl9CQVNF Q0xBU1NFUyAodHlwZSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9heC1nZW5lcmFsLmMKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9heC1nZW5lcmFsLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy43LjEub3JpZy9nZGIvYXgtZ2VuZXJhbC5jCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9heC1nZW5lcmFsLmMJMjAxNC0wNS0xMiAyMDoy MjowNS43ODM0NDQxMDggKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2F4 LWdlbmVyYWwuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjEyOTc0NzAyMiArMDIwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL2F4LWdlbmVyYWwuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1Mzc0 OTU5NCArMDIwMAogQEAgLTE5NSw3ICsxOTUsNyBAQCBheF96ZXJvX2V4dCAoc3RydWN0IGFnZW50 X2V4cHIgKngsIGludCBuCiAgCiAgLyogQXBwZW5kIGEgdHJhY2VfcXVpY2sgaW5zdHJ1Y3Rpb24g dG8gRVhQUiwgdG8gcmVjb3JkIE4gYnl0ZXMuICAqLwpAQCAtMTI1MSwxMCArMTI1MSwxMCBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi9heC1nZW5lcmFsLmMKICB7CiAgICAvKiBOIG11c3QgZml0IGlu IGEgYnl0ZS4gICovCiAgICBpZiAobiA8IDAgfHwgbiA+IDI1NSkKLUluZGV4OiBnZGItNy43LjEv Z2RiL2F4LmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9heC5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2F4LmgJMjAxNC0wMS0wOCAxMDoyMzozNi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL2F4LmgJMjAxNC0wNS0xMiAyMDoyMjowNS43ODM0 NDQxMDggKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2F4LmgJMjAxNC0w Ni0xNiAyMzoyNzowNS4xMjk3NDcwMjIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi9heC5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODUzNzQ5NTk0ICswMjAwCiBAQCAtMjA3LDcgKzIw Nyw3IEBAIGV4dGVybiB2b2lkIGF4X2V4dCAoc3RydWN0IGFnZW50X2V4cHIgKkUKICBleHRlcm4g dm9pZCBheF96ZXJvX2V4dCAoc3RydWN0IGFnZW50X2V4cHIgKkVYUFIsIGludCBOKTsKICAKQEAg LTEyNjQsMTEgKzEyNjQsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYXguaAogIAogIC8qIEFw cGVuZCBhIGdvdG8gb3AgdG8gRVhQUi4gIE9QIGlzIHRoZSBhY3R1YWwgb3AgKG11c3QgYmUgYW9w X2dvdG8gb3IKICAgICBhb3BfaWZfZ290bykuICBXZSBhc3N1bWUgd2UgZG9uJ3Qga25vdyB0aGUg dGFyZ2V0IG9mZnNldCB5ZXQsCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmMKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9icmVha3BvaW50LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy43LjEub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNTg1 NDQzOTg5ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmMJMjAxNC0wNS0xMiAy MDoyMjowNS43ODU0NDQxMDkgKzAyMDAKLUBAIC02NzU0LDcgKzY3NTQsNyBAQCBicmVha3BvaW50 X2FkZHJlc3NfbWF0Y2ggKHN0cnVjdCBhZGRyZXNzCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9icmVha3BvaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzI3NDcwMjUgKzAyMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9icmVha3BvaW50LmMJMjAxNC0wNi0xNiAyMzoy NzowNy44NTc3NDk1OTcgKzAyMDAKK0BAIC02OTMwLDcgKzY5MzAsNyBAQCBicmVha3BvaW50X2Fk ZHJlc3NfbWF0Y2ggKHN0cnVjdCBhZGRyZXNzCiAgCiAgc3RhdGljIGludAogIGJyZWFrcG9pbnRf YWRkcmVzc19tYXRjaF9yYW5nZSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZTEsIENPUkVf QUREUiBhZGRyMSwKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2Jy ZWFrcG9pbnQuYwogIAkJCQlDT1JFX0FERFIgYWRkcjIpCiAgewogICAgcmV0dXJuICgoZ2RiYXJj aF9oYXNfZ2xvYmFsX2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSkKLUBAIC0xMTM1Myw3 ICsxMTM1Myw3IEBAIGNhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCAoc3RydWN0IHZhbHUKK0BA IC0xMTU0Miw3ICsxMTU0Miw3IEBAIGNhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCAoc3RydWN0 IHZhbHUKICAJCSAgICAgICYmIFRZUEVfQ09ERSAodnR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWSkp CiAgCQl7CiAgCQkgIENPUkVfQUREUiB2YWRkciA9IHZhbHVlX2FkZHJlc3MgKHYpOwpAQCAtMTI4 NiwxMSArMTI4NiwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmMKICAJCSAg aW50IG51bV9yZWdzOwogIAogIAkJICBsZW4gPSAodGFyZ2V0X2V4YWN0X3dhdGNocG9pbnRzCi1J bmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIv YnJlYWtwb2ludC5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNTQ2NDQzOTY2ICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9icmVha3BvaW50LmgJMjAxNC0wNS0xMiAyMDoyMjowNS43ODY0NDQxMTAgKzAy MDAKLUBAIC0yNDIsNyArMjQyLDcgQEAgc3RydWN0IGJwX3RhcmdldF9pbmZvCistLS0gZ2RiLTcu Ny45MC4yMDE0MDYxMy5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxNC0wNi0xNiAyMzoyNzowNS4x MzM3NDcwMjYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9icmVha3BvaW50LmgJ MjAxNC0wNi0xNiAyMzoyNzowNy44NTc3NDk1OTcgKzAyMDAKK0BAIC0yNDQsNyArMjQ0LDcgQEAg c3RydWN0IGJwX3RhcmdldF9pbmZvCiAgCiAgICAvKiBJZiB0aGlzIGlzIGEgcmFuZ2VkIGJyZWFr cG9pbnQsIHRoZW4gdGhpcyBmaWVsZCBjb250YWlucyB0aGUKICAgICAgIGxlbmd0aCBvZiB0aGUg cmFuZ2UgdGhhdCB3aWxsIGJlIHdhdGNoZWQgZm9yIGV4ZWN1dGlvbi4gICovCkBAIC0xMjk5LDcg KzEyOTksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmgKICAKICAgIC8qIElm IHRoZSBicmVha3BvaW50IGxpdmVzIGluIG1lbW9yeSBhbmQgcmVhZGluZyB0aGF0IG1lbW9yeSB3 b3VsZAogICAgICAgZ2l2ZSBiYWNrIHRoZSBicmVha3BvaW50LCBpbnN0ZWFkIG9mIHRoZSBvcmln aW5hbCBjb250ZW50cywgdGhlbgotQEAgLTQxMSw3ICs0MTEsNyBAQCBzdHJ1Y3QgYnBfbG9jYXRp b24KK0BAIC00MTMsNyArNDEzLDcgQEAgc3RydWN0IGJwX2xvY2F0aW9uCiAgICAvKiBGb3IgaGFy ZHdhcmUgd2F0Y2hwb2ludHMsIHRoZSBzaXplIG9mIHRoZSBtZW1vcnkgcmVnaW9uIGJlaW5nCiAg ICAgICB3YXRjaGVkLiAgRm9yIGhhcmR3YXJlIHJhbmdlZCBicmVha3BvaW50cywgdGhlIHNpemUg b2YgdGhlCiAgICAgICBicmVha3BvaW50IHJhbmdlLiAgKi8KQEAgLTEzMDgsMTAgKzEzMDgsMTAg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYnJlYWtwb2ludC5oCiAgCiAgICAvKiBUeXBlIG9mIGhh cmR3YXJlIHdhdGNocG9pbnQuICAqLwogICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB3YXRjaHBv aW50X3R5cGU7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9jLWxhbmcuYworSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2MtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcv Z2RiL2MtbGFuZy5jCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9jLWxhbmcuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NjQ0NDExMCArMDIwMAor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvYy1sYW5nLmMJMjAxNC0wNi0xNiAyMzoy NzowNS4xMzQ3NDcwMjcgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jLWxhbmcu YwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1ODc0OTU5OCArMDIwMAogQEAgLTE5MCw3ICsxOTAsNyBA QCBjX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlLCBzCiAgCiAgdm9pZApAQCAt MTMzOSwxMSArMTMzOSwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9jLWxhbmcuYwogIAogIAkJ aWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKFRZUEVfSU5ERVhfVFlQRSAoZXhwZWN0X3R5cGUpLAog IAkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1JbmRleDogZ2RiLTcuNy4xL2dk Yi9jLWxhbmcuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2MtbGFuZy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2MtbGFuZy5oCTIwMTQtMDUtMDUgMjM6NTE6 MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jLWxhbmcuaAkyMDE0LTA1LTEy IDIwOjIyOjA1Ljc4NjQ0NDExMCArMDIwMAotQEAgLTczLDcgKzczLDcgQEAgZXh0ZXJuIHZvaWQg Y19wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvYy1sYW5nLmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzQ3NDcwMjcgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1ODc0 OTU5OCArMDIwMAorQEAgLTc0LDcgKzc0LDcgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVm IChzdHJ1Y3QgdHlwZQogIAkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7CiAgCiAgZXh0ZXJuIHZv aWQgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosCkBAIC0xMzUy LDcgKzEzNTIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9jLWxhbmcuaAogIAkJCSBzdHJ1Y3Qg dWlfZmlsZSAqLCBpbnQsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCSBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUBAIC05Myw3ICs5Myw3IEBAIGV4dGVybiB2 b2lkIGNfcHJpbnRjaGFyIChpbnQsIHN0cnVjdCB0eXAKK0BAIC05NCw3ICs5NCw3IEBAIGV4dGVy biB2b2lkIGNfcHJpbnRjaGFyIChpbnQsIHN0cnVjdCB0eXAKICBleHRlcm4gdm9pZCBjX3ByaW50 c3RyIChzdHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSwKICAJCQlzdHJ1Y3QgdHlwZSAqZWx0dHlwZSwK ICAJCQljb25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtMTM2MSw3ICsxMzYxLDcgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvYy1sYW5nLmgKICAJCQljb25zdCBjaGFyICp1c2VyX2VuY29kaW5nLAog IAkJCWludCBmb3JjZV9lbGxpcHNlcywKICAJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0aW9ucyk7Ci1AQCAtMTE5LDE0ICsxMTksMTQgQEAgZXh0ZXJuIHZvaWQgY3BfcHJp bnRfY2xhc3NfbWVtYmVyIChjb25zdAorQEAgLTEyMCwxNCArMTIwLDE0IEBAIGV4dGVybiB2b2lk IGNwX3ByaW50X2NsYXNzX21lbWJlciAoY29uc3QKICAJCQkJICAgc3RydWN0IHVpX2ZpbGUgKiwg Y2hhciAqKTsKICAKICBleHRlcm4gdm9pZCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB0eXBlICosCkBAIC0xMzc4LDExICsxMzc4LDExIEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2MtbGFuZy5oCiAgCQkJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJCQlj b25zdCBzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICosCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9jLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9jLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEu b3JpZy9nZGIvYy12YWxwcmludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNy4xL2dkYi9jLXZhbHByaW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNS43ODY0 NDQxMTAgKzAyMDAKLUBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5l cmljX3ZhbF9wcmludF9kZQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvYy12YWxw cmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTM0NzQ3MDI3ICswMjAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvYy12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODU4NzQ5NTk4 ICswMjAwCitAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192 YWxfcHJpbnRfZGUKICAKICB2b2lkCiAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTEzOTEsNyArMTM5MSw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2MtdmFscHJpbnQuYwogIAkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCByZWN1cnNlLAogIAkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxfdmFsdWUsCiAg CSAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi1AQCAtMTQz LDcgKzE0Myw3IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2QKK0BA IC0xNDQsNyArMTQ0LDcgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZAogICAgdW5zaWduZWQgbGVuOwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICp1bnJlc29sdmVk X2VsdHR5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqdW5yZXNvbHZlZF90eXBlID0gdHlwZTsKQEAgLTE0 MDAsNyArMTQwMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2MtdmFscHJpbnQuYwogICAgQ09S RV9BRERSIGFkZHI7CiAgCiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zNzksOSArMzc5 LDkgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZAorQEAgLTM4MCw5 ICszODAsOSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCiAgCSAg LyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiBOT1QgdXNpbmcKICAJ ICAgICAtZnZ0YWJsZV90aHVua3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyCiAgCSAgICAgVFlQ RV9DT0RFX1BUUi4pICAqLwpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9n ZGIvYy12YWxwcmludC5jCiAgCSAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGUgPSBUWVBFX0ZJRUxE X1RZUEUgKHR5cGUsCiAgCQkJCQkJICAgICBWVEJMX0ZOQUREUl9PRkZTRVQpOwogIAkgIENPUkVf QUREUiBhZGRyCi1AQCAtNDYwLDcgKzQ2MCw4IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1 ZSAqdmFsLCBzdHJ1Y3QKK0BAIC00NjEsNyArNDYxLDggQEAgY192YWx1ZV9wcmludCAoc3RydWN0 IHZhbHVlICp2YWwsIHN0cnVjdAogIAkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUsICpyZWFsX3R5cGUsICp2 YWxfdHlwZTsKQEAgLTE0MjMsMTAgKzE0MjMsMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYy12 YWxwcmludC5jCiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzID0gKm9wdGlvbnM7 CiAgCiAgICBvcHRzLmRlcmVmX3JlZiA9IDE7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9jcC1hYmku YworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2NwLWFiaS5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2NwLWFiaS5jCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jcC1hYmkuYwkyMDE0LTA1LTEyIDIwOjIyOjA1 Ljc4NzQ0NDExMCArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvY3AtYWJp LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzQ3NDcwMjcgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9jcC1hYmkuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1OTc0OTU5OSArMDIwMAog QEAgLTY4LDEzICs2OCwxMyBAQCBpc19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1lKQog ICAgcmV0dXJuICgqY3VycmVudF9jcF9hYmkuaXNfb3BlcmF0b3JfbmFtZSkgKG5hbWUpOwogIH0K QEAgLTE0NjIsMTAgKzE0NjIsMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvY3AtYWJpLmMKICB7 CiAgICBzdHJ1Y3QgdHlwZSAqcmV0ID0gTlVMTDsKICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGU7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9jcC1hYmkuaAorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2NwLWFiaS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcv Z2RiL2NwLWFiaS5oCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9jcC1hYmkuaAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvY3AtYWJpLmgJMjAxNC0wNi0xNiAyMzoy NzowNS4xMzU3NDcwMjggKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jcC1hYmku aAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1OTc0OTU5OSArMDIwMAogQEAgLTEwOCw3ICsxMDgsNyBA QCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV92aXJ0dWFsX2ZuX2ZpCiAgCQkJCQkgICAgIHN0 cnVjdCBmbl9maWVsZCAqZiwKICAJCQkJCSAgICAgaW50IGosCkBAIC0xNTIwLDEwICsxNTIwLDEw IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2NwLWFiaS5oCiAgICB2b2lkICgqcHJpbnRfbWV0aG9k X3B0cikgKGNvbnN0IGdkYl9ieXRlICpjb250ZW50cywKICAJCQkgICAgc3RydWN0IHR5cGUgKnR5 cGUsCiAgCQkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwotSW5kZXg6IGdkYi03LjcuMS9n ZGIvY3AtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2NwLXZhbHBy aW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvY3AtdmFscHJpbnQuYwky MDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvY3At dmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1 LjEzNTc0NzAyOCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2NwLXZhbHByaW50 LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NTk3NDk1OTkgKzAyMDAKIEBAIC04Miw3ICs4Miw3IEBA IHN0YXRpYyB2b2lkIGNwX3ByaW50X3N0YXRpY19maWVsZCAoc3RydWMKICAJCQkJICAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAgCkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi9jcC12YWxwcmludC5jCiAgCiAgICAgICAgLyogVWdoLCB3ZSBo YXZlIHRvIGNvbnZlcnQgYmFjayB0byBhIHZhbHVlIGhlcmUuICAqLwogICAgICAgIHZhbHVlID0g dmFsdWVfZnJvbV9jb250ZW50c19hbmRfYWRkcmVzcyAodHlwZSwgdmFsYWRkciArIG9mZnNldCwK LUBAIC00NjIsNyArNDYzLDcgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRzX3J0dGkgKHN0cnVjdCB0 eXBlCitAQCAtNDYzLDcgKzQ2NCw3IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxkc19ydHRpIChzdHJ1 Y3QgdHlwZQogIAogIHN0YXRpYyB2b2lkCiAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLApAQCAtMTU3OSw3ICsxNTc5LDcgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvY3AtdmFscHJpbnQuYwogIAkJQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCiAgCQlpbnQgcmVjdXJzZSwgY29uc3Qgc3RydWN0IHZhbHVlICp2 YWwsCiAgCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKLUBAIC00 NzIsNyArNDczLDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Ywor QEAgLTQ3Myw3ICs0NzQsNyBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjCiAgICAgID0gKHN0cnVjdCB0eXBlICoqKSBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJp bnRfdmJfb2JzdGFjayk7CiAgICBzdHJ1Y3Qgb2JzdGFjayB0bXBfb2JzdGFjayA9IGRvbnRfcHJp bnRfdmJfb2JzdGFjazsKICAgIGludCBpLCBuX2Jhc2VjbGFzc2VzID0gVFlQRV9OX0JBU0VDTEFT U0VTICh0eXBlKTsKQEAgLTE1ODgsNyArMTU4OCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2Nw LXZhbHByaW50LmMKICAgIHN0cnVjdCB0eXBlICp0aGlzdHlwZTsKICAKICAgIGlmIChkb250X3By aW50X3ZiID09IDApCi1AQCAtNDg2LDcgKzQ4Nyw3IEBAIGNwX3ByaW50X3ZhbHVlIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWMKK0BAIC00ODcsNyArNDg4LDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1YwogIAogICAgZm9yIChpID0gMDsgaSA8IG5fYmFzZWNsYXNz ZXM7IGkrKykKICAgICAgewpAQCAtMTU5NywxMiArMTU5NywxMiBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9jcC12YWxwcmludC5jCiAgICAgICAgaW50IHNraXA7CiAgICAgICAgc3RydWN0IHR5cGUg KmJhc2VjbGFzcyA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSk7CiAg ICAgICAgY29uc3QgY2hhciAqYmFzZW5hbWUgPSBUWVBFX05BTUUgKGJhc2VjbGFzcyk7Ci1JbmRl eDogZ2RiLTcuNy4xL2dkYi9kLWxhbmcuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2QtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2QtbGFuZy5oCTIw MTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9kLWxh bmcuaAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAotQEAgLTI1LDcgKzI1LDcg QEAKLSBleHRlcm4gY2hhciAqZF9kZW1hbmdsZSAoY29uc3QgY2hhciAqbWFuZ2xlZCwgaW50IG9w dGlvbnMpOworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZC1sYW5nLmgJMjAxNC0w Ni0xNiAyMzoyNzowNS4xMzU3NDcwMjggKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi9kLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1OTc0OTU5OSArMDIwMAorQEAgLTY5LDcg KzY5LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmRfcGFyc2Vfc3ltYm9sIChzdHJ1YworIC8qIERl ZmluZWQgaW4gZC12YWxwcmludC5jICAqLwogIAogIGV4dGVybiB2b2lkIGRfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAtCQkJIGludCBlbWJl ZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLApAQCAtMTYxMCwxMCArMTYxMCwxMCBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi9kLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkJIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy43LjEv Z2RiL2QtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2QtdmFscHJp bnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9kLXZhbHByaW50LmMJMjAx NC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2QtdmFs cHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAorLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvZC12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTM1 NzQ3MDI4ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZC12YWxwcmludC5jCTIw MTQtMDYtMTYgMjM6Mjc6MDcuODU5NzQ5NTk5ICswMjAwCiBAQCAtMjksNyArMjksNyBAQAogIAog IHN0YXRpYyBpbnQKQEAgLTE2MjMsNyArMTYyMyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2Qt dmFscHJpbnQuYwogIAkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAog IAkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotQEAgLTcxLDkgKzcxLDkgQEAgZHluYW1pY19hcnJh eV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgYworQEAgLTcyLDkgKzcyLDkgQEAgZHluYW1pY19h cnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgYwogIAogIC8qIEltcGxlbWVudHMgdGhlIGxh X3ZhbF9wcmludCByb3V0aW5lIGZvciBsYW5ndWFnZSBELiAgKi8KICB2b2lkCkBAIC0xNjM2LDEw ICsxNjM2LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2QtdmFscHJpbnQuYwogICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7CiAgICBp bnQgcmV0OwotSW5kZXg6IGdkYi03LjcuMS9nZGIvZG91Ymxlc3QuYworSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2RvdWJsZXN0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3Jp Zy9nZGIvZG91Ymxlc3QuYwkyMDE0LTAxLTA4IDEwOjIzOjM2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjcuMS9nZGIvZG91Ymxlc3QuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCAr MDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZG91Ymxlc3QuYwkyMDE0LTA2 LTE2IDIzOjI3OjA1LjEzNjc0NzAyOSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2RvdWJsZXN0LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NjA3NDk2MDAgKzAyMDAKIEBAIC03Njcs NyArNzY3LDcgQEAgZmxvYXRmb3JtYXRfZnJvbV9kb3VibGVzdCAoY29uc3Qgc3RydWN0CiAgICAg YnV0IG5vdCBwYXNzZWQgb24gYnkgR0RCLiAgVGhpcyBzaG91bGQgYmUgZml4ZWQuICAqLwogIApA QCAtMTY2MCwxMSArMTY2MCwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kb3VibGVzdC5jCiAg ICByZXR1cm4gZm9ybWF0OwogIH0KICAKLUluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJmMmxvYy5j CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjEub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNS0xMiAyMDoyMjowNC43 NzM0NDM1MDIgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2R3YXJmMmxvYy5jCTIwMTQtMDUtMTIg MjA6MjI6MDUuNzg4NDQ0MTExICswMjAwCi1AQCAtMTcwOSwxOSArMTcwOSwxOSBAQCBpbnNlcnRf Yml0cyAodW5zaWduZWQgaW50IGRhdHVtLAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9n ZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzc3NDcwMzAgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2 MTc0OTYwMSArMDIwMAorQEAgLTE1NzIsMTkgKzE1NzIsMTkgQEAgaW5zZXJ0X2JpdHMgKHVuc2ln bmVkIGludCBkYXR1bSwKICAgICBCSVRTX0JJR19FTkRJQU4gaXMgdGFrZW4gZGlyZWN0bHkgZnJv bSBnZGJhcmNoLiAgKi8KICAKICBzdGF0aWMgdm9pZApAQCAtMTY5MCw3ICsxNjkwLDcgQEAgSW5k ZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICAKICAgIGRlc3RfYXZhaWwgPSA4IC0gZGVz dF9vZmZzZXRfYml0cyAlIDg7CiAgCi1AQCAtMTc1OSwxMyArMTc1OSwxMyBAQCBzdGF0aWMgdm9p ZAorQEAgLTE2MjIsMTMgKzE2MjIsMTMgQEAgc3RhdGljIHZvaWQKICByZWFkX3BpZWNlZF92YWx1 ZSAoc3RydWN0IHZhbHVlICp2KQogIHsKICAgIGludCBpOwpAQCAtMTcwNiw3ICsxNzA2LDcgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICAgIHNpemVfdCBidWZmZXJfc2l6ZSA9 IDA7CiAgICBnZGJfYnl0ZSAqYnVmZmVyID0gTlVMTDsKICAgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwOwotQEAgLTE3OTIsOCArMTc5Miw4IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFs dWUgKnYpCitAQCAtMTY1NSw4ICsxNjU1LDggQEAgcmVhZF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2 YWx1ZSAqdikKICAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlcyAmJiBvZmZzZXQgPCB0eXBl X2xlbjsgaSsrKQogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAm Yy0+cGllY2VzW2ldOwpAQCAtMTcxNyw3ICsxNzE3LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv ZHdhcmYybG9jLmMKICAgICAgICBjb25zdCBnZGJfYnl0ZSAqaW50ZXJtZWRpYXRlX2J1ZmZlcjsK ICAKICAgICAgICAvKiBDb21wdXRlIHNpemUsIHNvdXJjZSwgYW5kIGRlc3RpbmF0aW9uIG9mZnNl dHMgZm9yIGNvcHlpbmcsIGluCi1AQCAtMTk0MiwxMyArMTk0MiwxMyBAQCBzdGF0aWMgdm9pZAor QEAgLTE4MDUsMTMgKzE4MDUsMTMgQEAgc3RhdGljIHZvaWQKICB3cml0ZV9waWVjZWRfdmFsdWUg KHN0cnVjdCB2YWx1ZSAqdG8sIHN0cnVjdCB2YWx1ZSAqZnJvbSkKICB7CiAgICBpbnQgaTsKQEAg LTE3MzMsNyArMTczMyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJmMmxvYy5jCiAgICBz aXplX3QgYnVmZmVyX3NpemUgPSAwOwogICAgZ2RiX2J5dGUgKmJ1ZmZlciA9IE5VTEw7CiAgICBz dHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBAIC0xOTc2LDggKzE5NzYsOCBAQCB3cml0ZV9waWVj ZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CitAQCAtMTgzOSw4ICsxODM5LDggQEAgd3Jp dGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAogICAgZm9yIChpID0gMDsgaSA8 IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBpKyspCiAgICAgIHsKICAgICAgICBz dHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVjZXNbaV07CkBAIC0xNzQ0LDcgKzE3 NDQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kd2FyZjJsb2MuYwogICAgICAgIGludCBuZWVk X2JpdHdpc2U7CiAgICAgICAgY29uc3QgZ2RiX2J5dGUgKnNvdXJjZV9idWZmZXI7CiAgCi1AQCAt MjEwNyw4ICsyMTA3LDggQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBz dAorQEAgLTE5NzAsOCArMTk3MCw4IEBAIHdyaXRlX3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVl ICp0bywgc3QKICAgICBpbXBsaWNpdCBwb2ludGVyLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0x NzU1LDcgKzE3NTUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kd2FyZjJsb2MuYwogIAkJCSBl bnVtIGR3YXJmX3ZhbHVlX2xvY2F0aW9uIGNoZWNrX2ZvcikKICB7CiAgICBzdHJ1Y3QgcGllY2Vf Y2xvc3VyZSAqYwotQEAgLTIxMjQsNyArMjEyNCw3IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9iaXRz IChjb25zdCBzdHJ1Y3QgdmEKK0BAIC0xOTg3LDcgKzE5ODcsNyBAQCBjaGVja19waWVjZWRfdmFs dWVfYml0cyAoY29uc3Qgc3RydWN0IHZhCiAgICBmb3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXMg JiYgYml0X2xlbmd0aCA+IDA7IGkrKykKICAgICAgewogICAgICAgIHN0cnVjdCBkd2FyZl9leHBy X3BpZWNlICpwID0gJmMtPnBpZWNlc1tpXTsKQEAgLTE3NjQsNyArMTc2NCw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2R3YXJmMmxvYy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQog IAl7Ci1AQCAtMjE2Miw4ICsyMTYyLDggQEAgY2hlY2tfcGllY2VkX3ZhbHVlX2JpdHMgKGNvbnN0 IHN0cnVjdCB2YQorQEAgLTIwMjUsOCArMjAyNSw4IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9iaXRz IChjb25zdCBzdHJ1Y3QgdmEKICB9CiAgCiAgc3RhdGljIGludApAQCAtMTc3NSw3ICsxNzc1LDcg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICB7CiAgICByZXR1cm4gY2hlY2tf cGllY2VkX3ZhbHVlX2JpdHMgKHZhbHVlLCBiaXRfb2Zmc2V0LCBiaXRfbGVuZ3RoLAogIAkJCQkg IERXQVJGX1ZBTFVFX01FTU9SWSk7Ci1AQCAtMjE4MSw4ICsyMTgxLDggQEAgY2hlY2tfcGllY2Vk X3ZhbHVlX2ludmFsaWQgKGNvbnN0IHN0cnVjdAorQEAgLTIwNDQsOCArMjA0NCw4IEBAIGNoZWNr X3BpZWNlZF92YWx1ZV9pbnZhbGlkIChjb25zdCBzdHJ1Y3QKICAgICBhIHN5bnRoZXRpYyBwb2lu dGVyLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0xNzg2LDcgKzE3ODYsNyBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9kd2FyZjJsb2MuYwogIHsKICAgIHJldHVybiBjaGVja19waWVjZWRfdmFsdWVf Yml0cyAodmFsdWUsIGJpdF9vZmZzZXQsIGJpdF9sZW5ndGgsCiAgCQkJCSAgRFdBUkZfVkFMVUVf SU1QTElDSVRfUE9JTlRFUik7Ci1AQCAtMjIwNyw5ICsyMjA3LDEwIEBAIGluZGlyZWN0X3BpZWNl ZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWwKK0BAIC0yMDcwLDkgKzIwNzAsMTAgQEAgaW5kaXJl Y3RfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbAogICAgc3RydWN0IHR5cGUgKnR5cGU7 CiAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7CiAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJf YmF0b24gYmF0b247CkBAIC0xNzk5LDcgKzE3OTksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9k d2FyZjJsb2MuYwogIAogICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKHZhbHVl KSk7CiAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfUFRSKQotQEAgLTIyMjMs NyArMjIyNCw3IEBAIGluZGlyZWN0X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWwKK0BA IC0yMDg2LDcgKzIwODcsNyBAQCBpbmRpcmVjdF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAq dmFsCiAgICBmb3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXMgJiYgYml0X2xlbmd0aCA+IDA7IGkr KykKICAgICAgewogICAgICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwID0gJmMtPnBpZWNl c1tpXTsKQEAgLTE4MDgsNyArMTgwOCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJmMmxv Yy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQogIAl7Ci1AQCAtMjQ5MSw3ICsyNDky LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eQorQEAgLTIzNTcs NyArMjM1OCw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHkKICAJ ICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWUgPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOwogIAkg ICAgZ2RiX2J5dGUgKmNvbnRlbnRzOwogIAkgICAgY29uc3QgZ2RiX2J5dGUgKnZhbF9ieXRlczsK QEAgLTE4MTcsMTEgKzE4MTcsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMK ICAKICAJICAgIGlmIChieXRlX29mZnNldCArIFRZUEVfTEVOR1RIICh0eXBlKSA+IG4pCiAgCSAg ICAgIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKCk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9k d2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFkLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDUt MTIgMjA6MjI6MDUuNzUyNDQ0MDg5ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9kd2FyZjJyZWFk LmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTE0NDQxMTMgKzAyMDAKLUBAIC0xODkzLDEyICsxODkz LDEyIEBAIGR3YXJmMl9jb21wbGV4X2xvY2F0aW9uX2V4cHJfY29tcGxhaW50ICgKKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1 LjE0MTc0NzAzNCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMnJlYWQu YwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2NDc0OTYwNCArMDIwMAorQEAgLTE4ODksMTIgKzE4ODks MTIgQEAgZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKAogIH0KICAKICBz dGF0aWMgdm9pZApAQCAtMTgzOCw3ICsxODM4LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZHdh cmYycmVhZC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1AQCAtMTIxOTAsOCArMTIxOTAsOCBAQCBk d2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCitAQCAtMTIzMjYsOCArMTIz MjYsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCiAgCSAgICAg ICAgIG9iamVjdCwgYW5kIHRoZW4gc3VidHJhY3Qgb2ZmIHRoZSBudW1iZXIgb2YgYml0cyBvZgog IAkgICAgICAgICB0aGUgZmllbGQgaXRzZWxmLiAgVGhlIHJlc3VsdCBpcyB0aGUgYml0IG9mZnNl dCBvZgogIAkgICAgICAgICB0aGUgTFNCIG9mIHRoZSBmaWVsZC4gICovCkBAIC0xODQ5LDExICsx ODQ5LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJmMnJlYWQuYwogIAogIAkgICAgICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zaXplLCBjdSk7CiAgCSAgICAgIGlm IChhdHRyKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvZXZhbC5jCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZXZhbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2V2 YWwuYwkyMDE0LTA1LTEyIDIwOjIyOjA0Ljc3NzQ0MzUwNCArMDIwMAotKysrIGdkYi03LjcuMS9n ZGIvZXZhbC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkyNDQ0MTEzICswMjAwCi1AQCAtMjk4LDcg KzI5OCw4IEBAIGV2YWx1YXRlX3N0cnVjdF90dXBsZSAoc3RydWN0IHZhbHVlICpzdHIKKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2V2YWwuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0 Mzc0NzAzNiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2V2YWwuYwkyMDE0LTA2 LTE2IDIzOjI3OjA3Ljg2NDc0OTYwNCArMDIwMAorQEAgLTI5Nyw3ICsyOTcsOCBAQCBldmFsdWF0 ZV9zdHJ1Y3RfdHVwbGUgKHN0cnVjdCB2YWx1ZSAqc3RyCiAgICB3aGlsZSAoLS1uYXJncyA+PSAw KQogICAgICB7CiAgICAgICAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwpAQCAtMTg2Myw3ICsx ODYzLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZXZhbC5jCiAgICAgICAgYmZkX2J5dGUgKmFk ZHI7CiAgCiAgICAgICAgZmllbGRubysrOwotQEAgLTM2MCw3ICszNjEsNyBAQCBpbml0X2FycmF5 X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCitAQCAtMzU5LDcgKzM2MCw3IEBAIGluaXRf YXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwKICAJCSAgICBlbnVtIG5vc2lkZSBu b3NpZGUsIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCiAgewogICAgTE9O R0VTVCBpbmRleDsKQEAgLTE4NzIsNyArMTg3Miw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2V2 YWwuYwogIAogICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gQklOT1BfQ09NTUEpCiAg ICAgIHsKLUBAIC03MTgsMTEgKzcxOSwxMSBAQCBiaW5vcF9wcm9tb3RlIChjb25zdCBzdHJ1Y3Qg bGFuZ3VhZ2VfZGVmCitAQCAtNTIyLDExICs1MjMsMTEgQEAgYmlub3BfcHJvbW90ZSAoY29uc3Qg c3RydWN0IGxhbmd1YWdlX2RlZgogICAgICAvKiBGSVhNRTogQWxzbyBtaXhlZCBpbnRlZ3JhbC9i b29sZWFucywgd2l0aCByZXN1bHQgYW4gaW50ZWdlci4gICovCiAgICAgIHsKICAgICAgICBjb25z dCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidWlsdGluID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsK QEAgLTE4ODcsNyArMTg4Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2V2YWwuYwogICAgICAg IGludCB1bnNpZ25lZF9vcGVyYXRpb247CiAgCiAgICAgICAgLyogRGV0ZXJtaW5lIHR5cGUgbGVu Z3RoIGFuZCBzaWduZWRuZXNzIGFmdGVyIHByb21vdGlvbiBmb3IKLUBAIC05MDUsNyArOTA2LDcg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTcwOSw3ICs3 MTAsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCiAgICBzdHJ1 Y3QgdmFsdWUgKiphcmd2ZWM7CiAgICBpbnQgY29kZTsKICAgIGludCBpeDsKQEAgLTE4OTYsNyAr MTg5Niw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2V2YWwuYwogICAgc3RydWN0IHR5cGUgKiph cmdfdHlwZXM7CiAgICBpbnQgc2F2ZV9wb3MxOwogICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24g PSBOVUxMOwotQEAgLTEwODUsNyArMTA4Niw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmUKK0BAIC04ODgsNyArODg5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZQogIAkgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gVFlQRV9J TkRFWF9UWVBFICh0eXBlKTsKICAJICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9U QVJHRVRfVFlQRSAodHlwZSk7CiAgCSAgc3RydWN0IHZhbHVlICphcnJheSA9IGFsbG9jYXRlX3Zh bHVlIChleHBlY3RfdHlwZSk7CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9ldmFsLmMKICAJICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgaW5kZXg7CiAg CiAgCSAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZo aWdoX2JvdW5kKSA8IDApCi1AQCAtMjA4MCw3ICsyMDgxLDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTE5MDMsNyArMTkwNCw4IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAgICAgICB7CiAgICAgICAgICBzdHJ1Y3Qg dHlwZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZzEpOwogICAgICAgICAgc3RydWN0IHR5cGUgKnJl YWxfdHlwZTsKQEAgLTE5MTUsMTAgKzE5MTUsMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZXZh bC5jCiAgCXN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgCiAgCWdldF91c2VyX3By aW50X29wdGlvbnMgKCZvcHRzKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2YtbGFuZy5jCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvZi1sYW5nLmMJMjAxNC0wMS0wOCAxMDoyMzozNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy43LjEvZ2RiL2YtbGFuZy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkyNDQ0 MTEzICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9mLWxhbmcuYwkyMDE0 LTA2LTE2IDIzOjI3OjA1LjE0Mzc0NzAzNiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2YtbGFuZy5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY1NzQ5NjA1ICswMjAwCiBAQCAtMTA0 LDcgKzEwNCw3IEBAIGZfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsIHMKICAK ICBzdGF0aWMgdm9pZApAQCAtMTkyOCwyNSArMTkyOCwyNSBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9mLWxhbmcuYwogIAkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMpCiAgewogICAgY29uc3QgY2hhciAqdHlwZV9lbmNvZGluZyA9IGZfZ2V0X2VuY29kaW5nICh0 eXBlKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIv Zi1sYW5nLmgJMjAxNC0wNS0xMiAyMDoyMjowNC43Nzc0NDM1MDQgKzAyMDAKLSsrKyBnZGItNy43 LjEvZ2RiL2YtbGFuZy5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkyNDQ0MTEzICswMjAwCi1AQCAt MzMsNyArMzMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqZl9vYmplY3RfYWRkcmVzc19kYXRhCi0g ICAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwotIGV4dGVybiB2 b2lkIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5cGUgKnR5 cGUpOworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi1sYW5nLmgJMjAxNC0wNi0x NiAyMzoyNzowNS4xNDM3NDcwMzYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9m LWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2NTc0OTYwNSArMDIwMAorQEAgLTMwLDcgKzMw LDcgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZAorIGV4dGVybiB2 b2lkIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsCisgCQkJICBpbnQsIGNvbnN0IHN0cnVjdCB0eXBlX3ByaW50X29wdGlvbnMg Kik7CiAgCiAtZXh0ZXJuIHZvaWQgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdk Yl9ieXRlICosIGludCwgQ09SRV9BRERSLAogK2V4dGVybiB2b2lkIGZfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBMT05HRVNULCBDT1JFX0FERFIsCiAgCQkJIHN0 cnVjdCB1aV9maWxlICosIGludCwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwotSW5kZXg6IGdkYi03LjcuMS9nZGIv Zi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi12YWxwcmludC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDE0LTA1 LTEyIDIwOjIyOjA0Ljc3ODQ0MzUwNSArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvZi12YWxwcmlu dC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkzNDQ0MTE0ICswMjAwCi1AQCAtNDMsNyArNDMsNyBA QCBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0Ci0gCQkJCQkgICAgICBz dHJ1Y3QgdWlfZmlsZSAqKTsKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2YtdmFs cHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0Mzc0NzAzNiArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2YtdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2NTc0OTYw NSArMDIwMAorQEAgLTQxLDcgKzQxLDcgQEAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxw cmludCAodm9pZAorIHN0YXRpYyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50 KTsKICBzdGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3Ry dWN0IHR5cGUgKik7CiAgCiAtaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJ TVMgKyAxXVsyXTsKQEAgLTE5NTQsMTYgKzE5NTQsMTggQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv Zi12YWxwcmludC5jCiAgCiAgLyogQXJyYXkgd2hpY2ggaG9sZHMgb2Zmc2V0cyB0byBiZSBhcHBs aWVkIHRvIGdldCBhIHJvdydzIGVsZW1lbnRzCiAgICAgZm9yIGEgZ2l2ZW4gYXJyYXkuICBBcnJh eSBhbHNvIGhvbGRzIHRoZSBzaXplIG9mIGVhY2ggc3ViYXJyYXkuICAqLwotQEAgLTEyNiw3ICsx MjYsNyBAQCBzdGF0aWMgdm9pZAotIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKK0BAIC03Niw4ICs3Niw4 IEBAIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCisgc3RhdGljIHZvaWQK KyBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnR5cGUp CiAgewotICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOwotLSAgaW50IGVsdGxlbjsKLSsgIExPTkdF U1QgZWx0bGVuOwotICAgaW50IG5kaW1lbiA9IDE7Ci0gICBpbnQgdXBwZXIsIGxvd2VyOworLSAg aW50IHVwcGVyX2JvdW5kID0gLTE7CistICBpbnQgbG93ZXJfYm91bmQgPSAxOworKyAgTE9OR0VT VCB1cHBlcl9ib3VuZCA9IC0xOworKyAgTE9OR0VTVCBsb3dlcl9ib3VuZCA9IDE7CiAgCi1AQCAt MTcxLDEzICsxNzEsMTMgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVj dAorICAgLyogUmVjdXJzaXZlbHkgZ28gYWxsIHRoZSB3YXkgZG93biBpbnRvIGEgcG9zc2libHkg bXVsdGktZGltZW5zaW9uYWwKKyAgICAgIEY3NyBhcnJheSBhbmQgZ2V0IHRoZSBib3VuZHMuICBG b3Igc2ltcGxlIGFycmF5cywgdGhpcyBpcyBwcmV0dHkKK0BAIC0xMDksNyArMTA5LDcgQEAgZjc3 X2dldF9keW5hbWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cgogIHN0YXRpYyB2b2lkCiAgZjc3 X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5 cGUsCiAgCQkgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTE5NzIsMTQgKzE5NzQsMTYg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZi12YWxwcmludC5jCiAgCQkgICBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAog IAkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi0gCQkgICBp bnQgKmVsdHMpCi0geworQEAgLTExOCw3ICsxMTgsNyBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50 IG5zcywgaW50IG5kaW1lbnNpCisgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IFRZUEVfSU5E RVhfVFlQRSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworICAgQ09SRV9BRERSIGFkZHIgPSBhZGRy ZXNzICsgZW1iZWRkZWRfb2Zmc2V0OworICAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBlcmJvdW5k OwogLSAgaW50IGk7CiArICBMT05HRVNUIGk7CiAgCi0gICBpZiAobnNzICE9IG5kaW1lbnNpb25z KQotICAgICB7Ci1AQCAtMjIwLDcgKzIyMCw3IEBAIGY3N19wcmludF9hcnJheV8xIChpbnQgbnNz LCBpbnQgbmRpbWVuc2kKKyAgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dl cmJvdW5kLCAmdXBwZXJib3VuZCk7CisgCitAQCAtMTc1LDcgKzE3NSw3IEBAIGY3N19wcmludF9h cnJheV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2kKICAKICBzdGF0aWMgdm9pZAogIGY3N19wcmlu dF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAt MTk4OCw3ICsxOTkyLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZi12YWxwcmludC5jCiAgCQkg Q09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkgaW50IHJlY3Vy c2UsCiAgCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtMjYzLDggKzI2Myw5IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKK0BAIC0yMTIsOCArMjEyLDkg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQogICAgIGZ1bmN0aW9u OyB0aGV5IGFyZSBpZGVudGljYWwuICAqLwogIAogIHZvaWQKQEAgLTIwMDAsMjkgKzIwMDQsMjAg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZi12YWxwcmludC5jCiAgCSAgICAgY29uc3Qgc3RydWN0 IHZhbHVlICpvcmlnaW5hbF92YWx1ZSwKICAJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucykKICB7Ci1AQCAtMzg5LDcgKzM5MCw3IEBAIGZfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2QKLSAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIoICIpOwotICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IFRZUEVfTkZJRUxEUyAo dHlwZSk7IGluZGV4KyspCi0gICAgICAgICB7Ci0tICAgICAgICAgIGludCBvZmZzZXQgPSBUWVBF X0ZJRUxEX0JJVFBPUyAodHlwZSwgaW5kZXgpIC8gODsKLSsJICBMT05HRVNUIG9mZnNldCA9IFRZ UEVfRklFTERfQklUUE9TICh0eXBlLCBpbmRleCkgLyA4OwotIAotICAgICAgICAgICB2YWxfcHJp bnQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaW5kZXgpLCB2YWxhZGRyLAotIAkJICAgICBlbWJl ZGRlZF9vZmZzZXQgKyBvZmZzZXQsCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9maW5kdmFyLmMKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9maW5kdmFyLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy43LjEub3JpZy9nZGIvZmluZHZhci5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzc4NDQzNTA1 ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9maW5kdmFyLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43 OTM0NDQxMTQgKzAyMDAKLUBAIC02MjMsNyArNjIzLDcgQEAgZGVmYXVsdF92YWx1ZV9mcm9tX3Jl Z2lzdGVyIChzdHJ1Y3QgdHlwZQotIAkJCSAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZmluZHZhci5jCTIwMTQtMDYtMTYgMjM6 Mjc6MDUuMTQ0NzQ3MDM3ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZmluZHZh ci5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY1NzQ5NjA1ICswMjAwCitAQCAtNjI4LDcgKzYyOCw3 IEBAIHN0cnVjdCB2YWx1ZSAqCisgZGVmYXVsdF92YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHR5cGUgKnR5cGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaWQgZnJhbWVfaWQpCiAgewotICAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwogLSAgaW50 IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICsgIExPTkdFU1QgbGVuID0gVFlQRV9MRU5HVEgg KHR5cGUpOwogICAgc3RydWN0IHZhbHVlICp2YWx1ZSA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsK ICAKICAgIFZBTFVFX0xWQUwgKHZhbHVlKSA9IGx2YWxfcmVnaXN0ZXI7Ci1AQCAtNjU2LDEwICs2 NTYsMTAgQEAgdm9pZAorQEAgLTY2MSwxMCArNjYxLDEwIEBAIHZvaWQKICByZWFkX2ZyYW1lX3Jl Z2lzdGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJh bWUpOwpAQCAtMjAzNiw3ICsyMDMxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZmluZHZhci5j CiAgCiAgICBnZGJfYXNzZXJ0IChWQUxVRV9MVkFMICh2YWx1ZSkgPT0gbHZhbF9yZWdpc3Rlcik7 CiAgCi1AQCAtNjc0LDcgKzY3NCw3IEBAIHJlYWRfZnJhbWVfcmVnaXN0ZXJfdmFsdWUgKHN0cnVj dCB2YWx1ZQorQEAgLTY3OSw3ICs2NzksNyBAQCByZWFkX2ZyYW1lX3JlZ2lzdGVyX3ZhbHVlIChz dHJ1Y3QgdmFsdWUKICAgIHdoaWxlIChsZW4gPiAwKQogICAgICB7CiAgICAgICAgc3RydWN0IHZh bHVlICpyZWd2YWwgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdmFsdWUgKGZyYW1lLCByZWdudW0pOwpA QCAtMjA0NSwxMSArMjA0MCwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9maW5kdmFyLmMKICAK ICAgICAgICBpZiAodmFsdWVfb3B0aW1pemVkX291dCAocmVndmFsKSkKICAJewotSW5kZXg6IGdk Yi03LjcuMS9nZGIvZnJhbWUuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2ZyYW1l LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZnJhbWUuYwkyMDE0LTA1LTA1 IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvZnJhbWUuYwkyMDE0 LTA1LTEyIDIwOjIyOjA1Ljc5MzQ0NDExNCArMDIwMAotQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGRl cHJlY2F0ZWRfZnJhbWVfcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGYKKy0tLSBnZGItNy43LjkwLjIw MTQwNjEzLm9yaWcvZ2RiL2ZyYW1lLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNDQ3NDcwMzcgKzAy MDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9mcmFtZS5jCTIwMTQtMDYtMTYgMjM6Mjc6 MDcuODY2NzQ5NjA2ICswMjAwCitAQCAtMTI3Miw3ICsxMjcyLDcgQEAgZGVwcmVjYXRlZF9mcmFt ZV9yZWdpc3Rlcl9yZWFkIChzdHJ1Y3QgZgogIAogIGludAogIGdldF9mcmFtZV9yZWdpc3Rlcl9i eXRlcyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcmVnbnVtLApAQCAtMjA1OCw3ICsy MDUzLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZnJhbWUuYwogIAkJCSAgaW50ICpvcHRpbWl6 ZWRwLCBpbnQgKnVuYXZhaWxhYmxlcCkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci1AQCAtMTI3Niw3ICsxMjc2LDcgQEAgZ2V0X2ZyYW1l X3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaQorQEAgLTEzMDEsNyArMTMwMSw3IEBAIGdl dF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZyYW1lX2kKICAgICAgfQogICAgaWYgKGxl biA+IG1heHNpemUpCiAgICAgIGVycm9yIChfKCJCYWQgZGVidWcgaW5mb3JtYXRpb24gZGV0ZWN0 ZWQ6ICIKQEAgLTIwNjcsMTEgKzIwNjIsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZnJhbWUu YwogIAogICAgLyogQ29weSB0aGUgZGF0YS4gICovCiAgICB3aGlsZSAobGVuID4gMCkKLUluZGV4 OiBnZGItNy43LjEvZ2RiL2ZyYW1lLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9m cmFtZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2ZyYW1lLmgJMjAxNC0w NS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2ZyYW1lLmgJ MjAxNC0wNS0xMiAyMDoyMjowNS43OTM0NDQxMTQgKzAyMDAKLUBAIC01NTYsNyArNTU2LDcgQEAg ZXh0ZXJuIHZvaWQgcHV0X2ZyYW1lX3JlZ2lzdGVyIChzdHJ1Y3QgZgorLS0tIGdkYi03LjcuOTAu MjAxNDA2MTMub3JpZy9nZGIvZnJhbWUuaAkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0NTc0NzAzOCAr MDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2ZyYW1lLmgJMjAxNC0wNi0xNiAyMzoy NzowNy44NjY3NDk2MDYgKzAyMDAKK0BAIC01ODMsNyArNTgzLDcgQEAgZXh0ZXJuIHZvaWQgcHV0 X2ZyYW1lX3JlZ2lzdGVyIChzdHJ1Y3QgZgogICAgIGNvbnRlbnRzIGFyZSBvcHRpbWl6ZWQgb3V0 IG9yIHVuYXZhaWxhYmxlLCBzZXQgKk9QVElNSVpFRFAsCiAgICAgKlVOQVZBSUxBQkxFUCBhY2Nv cmRpbmdseS4gICovCiAgZXh0ZXJuIGludCBnZXRfZnJhbWVfcmVnaXN0ZXJfYnl0ZXMgKHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHJlZ251bSwKQEAgLTIwODAsMTEgKzIwNzUsMTEgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvZnJhbWUuaAogIAkJCQkgICAgIGdkYl9ieXRlICpteWFkZHIs CiAgCQkJCSAgICAgaW50ICpvcHRpbWl6ZWRwLCBpbnQgKnVuYXZhaWxhYmxlcCk7CiAgCi1JbmRl eDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9nZGJ0eXBl cy5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzc5NDQzNTA1ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dk Yi9nZGJ0eXBlcy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk0NDQ0MTE0ICswMjAwCi1AQCAtMjEw OCw3ICsyMTA4LDcgQEAgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKnR5cAor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE2IDIz OjI3OjA1LjE0Njc0NzAzOSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5 cGVzLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NjY3NDk2MDYgKzAyMDAKK0BAIC0yNDYzLDcgKzI0 NjMsNyBAQCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwCiAgICAgbGVh c3QgYXMgbG9uZyBhcyBPQkpGSUxFLiAgKi8KICAKICBzdHJ1Y3QgdHlwZSAqCkBAIC0yMDkzLDcg KzIwODgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5jCiAgCSAgIGNvbnN0IGNo YXIgKm5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogIHsKICAgIHN0cnVjdCB0eXBlICp0 eXBlOwotQEAgLTIzMzksOCArMjMzOSw4IEBAIGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5 cGUgKmJhc2UsIHMKK0BAIC0yNjk0LDggKzI2OTQsOCBAQCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0 cnVjdCB0eXBlICpiYXNlLCBzCiAgCiAgc3RhdGljIGludAogIGlzX3VuaXF1ZV9hbmNlc3Rvcl93 b3JrZXIgKHN0cnVjdCB0eXBlICpiYXNlLCBzdHJ1Y3QgdHlwZSAqZGNsYXNzLApAQCAtMjEwNCw3 ICsyMDk5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZ2RidHlwZXMuYwogIAkJCSAgIENPUkVf QUREUiBhZGRyZXNzLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBpbnQgaSwgY291bnQgPSAw OwotQEAgLTIzNTEsNyArMjM1MSw3IEBAIGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3JrZXIgKHN0cnVj dCB0eXBlICoKK0BAIC0yNzA2LDcgKzI3MDYsNyBAQCBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2Vy IChzdHJ1Y3QgdHlwZSAqCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFTU0VTIChk Y2xhc3MpICYmIGNvdW50IDwgMjsgKytpKQogICAgICB7CiAgICAgICAgc3RydWN0IHR5cGUgKml0 ZXI7CkBAIC0yMTEzLDcgKzIxMDgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5j CiAgCiAgICAgICAgaXRlciA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfQkFTRUNMQVNTIChkY2xhc3Ms IGkpKTsKICAKLUBAIC0yMzkyLDcgKzIzOTIsNyBAQCBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2Vy IChzdHJ1Y3QgdHlwZSAqCitAQCAtMjc0Nyw3ICsyNzQ3LDcgQEAgaXNfdW5pcXVlX2FuY2VzdG9y X3dvcmtlciAoc3RydWN0IHR5cGUgKgogIGludAogIGlzX3VuaXF1ZV9hbmNlc3RvciAoc3RydWN0 IHR5cGUgKmJhc2UsIHN0cnVjdCB2YWx1ZSAqdmFsKQogIHsKQEAgLTIxMjIsNyArMjExNyw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL2dkYnR5cGVzLmMKICAKICAgIHJldHVybiBpc191bmlxdWVf YW5jZXN0b3Jfd29ya2VyIChiYXNlLCB2YWx1ZV90eXBlICh2YWwpLCAmb2Zmc2V0LAogIAkJCQkg ICAgdmFsdWVfY29udGVudHNfZm9yX3ByaW50aW5nICh2YWwpLAotQEAgLTM1MzAsNyArMzUzMCw3 IEBAIHJlY3Vyc2l2ZV9kdW1wX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTM4OTEsNyAr Mzg5MSw3IEBAIHJlY3Vyc2l2ZV9kdW1wX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAogICAgICAg IGJyZWFrOwogICAgICB9CiAgICBwdXRzX2ZpbHRlcmVkICgiXG4iKTsKQEAgLTIxMzEsNyArMjEy Niw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2dkYnR5cGVzLmMKICAgIGlmIChUWVBFX09CSkZJ TEVfT1dORUQgKHR5cGUpKQogICAgICB7CiAgICAgICAgcHJpbnRmaV9maWx0ZXJlZCAoc3BhY2Vz LCAib2JqZmlsZSAiKTsKLUBAIC0zNjU0LDggKzM2NTQsOCBAQCByZWN1cnNpdmVfZHVtcF90eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC00MDE1LDggKzQwMTUsOCBAQCByZWN1cnNpdmVfZHVt cF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAJCQkgIGlkeCwgcGxvbmdlc3QgKFRZUEVfRklF TERfRU5VTVZBTCAodHlwZSwgaWR4KSkpOwogICAgICAgIGVsc2UKICAJcHJpbnRmaV9maWx0ZXJl ZCAoc3BhY2VzICsgMiwKQEAgLTIxNDIsNyArMjEzNyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L2dkYnR5cGVzLmMKICAJCQkgIFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaWR4KSk7CiAgICAg ICAgZ2RiX3ByaW50X2hvc3RfYWRkcmVzcyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpZHgpLCBn ZGJfc3Rkb3V0KTsKICAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgbmFtZSAnJXMnICgiLAotQEAg LTQxNjksNyArNDE2OSw3IEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCitA QCAtNDM1Nyw3ICs0MzU3LDcgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkK ICAKICBzdHJ1Y3QgdHlwZSAqCiAgYXJjaF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK QEAgLTIxNTEsMzIgKzIxNDYsMzIgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZ2RidHlwZXMuYwog IHsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvZ2RidHlw ZXMuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA1LTEyIDIwOjIyOjA1 LjUzMzQ0Mzk1OCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvZ2RidHlwZXMuaAkyMDE0LTA1LTEy IDIwOjIyOjA1Ljc5NTQ0NDExNSArMDIwMAotQEAgLTYwNiw3ICs2MDYsNyBAQCBzdHJ1Y3QgbWFp bl90eXBlCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTQt MDYtMTYgMjM6Mjc6MDUuMTQ3NzQ3MDQwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvZ2RidHlwZXMuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2Nzc0OTYwNyArMDIwMAorQEAgLTYw OCw3ICs2MDgsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCSAgIGdkYmFyY2hfYml0c19iaWdfZW5k aWFuPTAgdGFyZ2V0cywgaXQgaXMgdGhlIGJpdCBvZmZzZXQgdG8KICAJICAgdGhlIExTQi4gICov CiAgCiAtCWludCBiaXRwb3M7CiArCUxPTkdFU1QgYml0cG9zOwogIAotIAkvKiBFbnVtIHZhbHVl LiAgKi8KKyAJLyogKiBFbnVtIHZhbHVlLiAgKi8KICAJTE9OR0VTVCBlbnVtdmFsOwotQEAgLTc5 OCw3ICs3OTgsNyBAQCBzdHJ1Y3QgdHlwZQorQEAgLTgxMCw3ICs4MTAsNyBAQCBzdHJ1Y3QgdHlw ZQogICAgICAgSE9TVF9DSEFSX0JJVC4gIEhvd2V2ZXIsIHRoaXMgd291bGQgc3RpbGwgZmFpbCB0 byBhZGRyZXNzCiAgICAgICBtYWNoaW5lcyBiYXNlZCBvbiBhIHRlcm5hcnkgb3IgZGVjaW1hbCBy ZXByZXNlbnRhdGlvbi4gICovCiAgICAKIC0gIHVuc2lnbmVkIGxlbmd0aDsKICsgIFVMT05HRVNU IGxlbmd0aDsKICAKLSAgIC8qIENvcmUgdHlwZSwgc2hhcmVkIGJ5IGEgZ3JvdXAgb2YgcXVhbGlm aWVkIHR5cGVzLiAgKi8KLSAgIHN0cnVjdCBtYWluX3R5cGUgKm1haW5fdHlwZTsKLUBAIC0xNTQ2 LDExICsxNTQ2LDEyIEBAIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3R5cGVfYXJjaCAoY28K LSBleHRlcm4gc3RydWN0IHR5cGUgKmdldF90YXJnZXRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUp OworICAgLyogKiBDb3JlIHR5cGUsIHNoYXJlZCBieSBhIGdyb3VwIG9mIHF1YWxpZmllZCB0eXBl cy4gICovCisgCitAQCAtMTY0MCwxMSArMTY0MCwxMiBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmdl dF90YXJnZXRfdHlwZSAoc3RyCisgCisgLyogKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29uc3RydWN0 IG9iamZpbGUtb3duZWQgdHlwZXMuICAqLwogIAotIC8qIEhlbHBlciBmdW5jdGlvbiB0byBjb25z dHJ1Y3Qgb2JqZmlsZS1vd25lZCB0eXBlcy4gICovCiAtZXh0ZXJuIHN0cnVjdCB0eXBlICppbml0 X3R5cGUgKGVudW0gdHlwZV9jb2RlLCBpbnQsIGludCwgY29uc3QgY2hhciAqLAogK2V4dGVybiBz dHJ1Y3QgdHlwZSAqaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSwgTE9OR0VTVCwgaW50LCBjb25z dCBjaGFyICosCiAgCQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICopOwpAQCAtMjE4OCwxMCArMjE4 MywxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5oCiAgZXh0ZXJuIHN0cnVjdCB0 eXBlICphcmNoX2ludGVnZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKiwgaW50LCBpbnQsIGNoYXIg Kik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2NoYXJhY3Rlcl90eXBlIChzdHJ1Y3QgZ2Ri YXJjaCAqLCBpbnQsIGludCwgY2hhciAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmFyY2hfYm9v bGVhbl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqLCBpbnQsIGludCwgY2hhciAqKTsKLUluZGV4OiBn ZGItNy43LjEvZ2RiL2dudS12Mi1hYmkuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2dudS12Mi1hYmkuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9nbnUtdjIt YWJpLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEv Z2RiL2dudS12Mi1hYmkuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NTQ0NDExNSArMDIwMAorLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ251LXYyLWFiaS5jCTIwMTQtMDYtMTYgMjM6 Mjc6MDUuMTQ3NzQ3MDQwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ251LXYy LWFiaS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY3NzQ5NjA3ICswMjAwCiBAQCAtODUsNyArODUs NyBAQCBnbnV2Ml9pc19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1lCiAgICAgVFlQRSBp cyB0aGUgdHlwZSBpbiB3aGljaCBGIGlzIGxvY2F0ZWQuICAqLwogIHN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgpAQCAtMjI0MywxMCArMjIzOCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9nbnUtdjIt YWJpLmMKICAJICAgIGdudXYyX2Jhc2VjbGFzc19vZmZzZXQgKHR5cGUsIGksIHZhbGFkZHIsCiAg CQkJCSAgICBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHZhbCk7CiAgCi1JbmRleDogZ2RiLTcu Ny4xL2dkYi9nbnUtdjMtYWJpLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nbnUt djMtYWJpLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZ251LXYzLWFiaS5j CTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9n bnUtdjMtYWJpLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTU0NDQxMTUgKzAyMDAKKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dudS12My1hYmkuYwkyMDE0LTA2LTE2IDIzOjI3OjA1 LjE0ODc0NzA0MCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dudS12My1hYmku YwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2Nzc0OTYwNyArMDIwMAogQEAgLTExMiw3ICsxMTIsNyBA QCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICphCiAgewogICAgc3RydWN0 IHR5cGUgKnQ7CkBAIC0yMzIxLDExICsyMzE2LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2du dS12My1hYmkuYwogICAgICAgIHN0cnVjdCB0eXBlICpiYXNldHlwZTsKICAKICAgICAgICBpZiAo QkFTRVRZUEVfVklBX1ZJUlRVQUwgKGRvbWFpbiwgaSkpCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9n by1sYW5nLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nby1sYW5nLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZ28tbGFuZy5oCTIwMTQtMDUtMDUgMjM6NTE6 MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9nby1sYW5nLmgJMjAxNC0wNS0x MiAyMDoyMjowNS43OTU0NDQxMTUgKzAyMDAKLUBAIC04Myw3ICs4Myw3IEBAIGV4dGVybiB2b2lk IGdvX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICoKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL2dvLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0ODc0NzA0MCArMDIwMAorKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dvLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2 Nzc0OTYwNyArMDIwMAorQEAgLTg1LDcgKzg1LDcgQEAgZXh0ZXJuIHZvaWQgZ29fcHJpbnRfdHlw ZSAoc3RydWN0IHR5cGUgKgogIC8qIERlZmluZWQgaW4gZ28tdmFscHJpbnQuYy4gICovCiAgCiAg ZXh0ZXJuIHZvaWQgZ29fdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCkBAIC0yMzM0LDEwICsyMzI5LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L2dvLWxhbmcuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAg CQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2dvLXZhbHByaW50 LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nby12YWxwcmludC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2dvLXZhbHByaW50LmMJMjAxNC0wMS0wOCAxMDoy MzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL2dvLXZhbHByaW50LmMJMjAx NC0wNS0xMiAyMDoyMjowNS43OTU0NDQxMTUgKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL2dvLXZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNDg3NDcwNDAgKzAy MDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nby12YWxwcmludC5jCTIwMTQtMDYtMTYg MjM6Mjc6MDcuODY4NzQ5NjA4ICswMjAwCiBAQCAtMzcsNyArMzcsNyBAQAogIAogIHN0YXRpYyB2 b2lkCkBAIC0yMzYwLDEwICsyMzU1LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2dvLXZhbHBy aW50LmMKICAJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMp CiAgewogICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9pMzg2 LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaTM4Ni1uYXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMTQtMDUtMDUgMjM6NTE6 MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9pMzg2LW5hdC5jCTIwMTQtMDUt MTIgMjA6MjI6MDUuNzk2NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmln L2dkYi9pMzg2LW5hdC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTQ4NzQ3MDQwICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaTM4Ni1uYXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2 ODc0OTYwOCArMDIwMAogQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgaW50IGkzODZfcmVtb3Zl X2FsaWduZWRfd2F0Y2hwb2luCiAgICAgdmFsaWQgdmFsdWUsIGJvbWJzIHRocm91Z2ggaW50ZXJu YWxfZXJyb3IuICAqLwogIHN0YXRpYyBpbnQgaTM4Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRjaHBv aW50IChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLApAQCAtMjM4NCwzMiArMjM3 OSwzMiBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9pMzg2LW5hdC5jCiAgewogICAgaW50IHJldHZh bCA9IDA7CiAgICBpbnQgbWF4X3dwX2xlbiA9IFRBUkdFVF9IQVNfRFJfTEVOXzggPyA4IDogNDsK LUBAIC02NjIsNyArNjYyLDcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsCi0gICAgYWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8K K0BAIC02NjUsNyArNjY1LDcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdl dF9vcAogIAogIHN0YXRpYyBpbnQKLS1pMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIGludCBsZW4pCi0raTM4Nl9yZWdpb25fb2tfZm9yX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2lu dCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCistCQkJICAgICAgIENPUkVfQUREUiBhZGRyLCBp bnQgbGVuKQorKwkJCSAgICAgICBDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCiAgewogICAg c3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZQogICAgICA9IGkzODZfZGVidWdfcmVn X3N0YXRlIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKLUluZGV4OiBnZGItNy43LjEv Z2RiL2luZi10dHJhY2UuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2luZi10dHJh Y2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9pbmYtdHRyYWNlLmMJMjAx NC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2luZi10 dHJhY2UuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NjQ0NDExNiArMDIwMAotQEAgLTM2NSw3ICsz NjUsNyBAQCBpbmZfdHRyYWNlX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5Ci0gfQorLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvaW5mLXR0cmFjZS5jCTIwMTQtMDYtMTYgMjM6 Mjc6MDUuMTQ5NzQ3MDQxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaW5mLXR0 cmFjZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY4NzQ5NjA4ICswMjAwCitAQCAtMzY5LDcgKzM2 OSw3IEBAIGluZl90dHJhY2VfY2FuX3VzZV9od19icmVha3BvaW50IChzdHJ1Y3QKICAKICBzdGF0 aWMgaW50Ci0taW5mX3R0cmFjZV9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQURE UiBhZGRyLCBpbnQgbGVuKQotK2luZl90dHJhY2VfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50 IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCisgaW5mX3R0cmFjZV9yZWdpb25fb2tfZm9y X2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAorLQkJCQkJQ09SRV9BRERS IGFkZHIsIGludCBsZW4pCisrCQkJCQlDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCiAgewog ICAgcmV0dXJuIDE7CiAgfQotSW5kZXg6IGdkYi03LjcuMS9nZGIvanYtbGFuZy5jCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ny4xLm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDE0LTA1LTEyIDIwOjIyOjA1LjUzNDQ0Mzk1OCArMDIw MAotKysrIGdkYi03LjcuMS9nZGIvanYtbGFuZy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk2NDQ0 MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9qdi1sYW5nLmMJMjAx NC0wNi0xNiAyMzoyNzowNS4xNDk3NDcwNDEgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9qdi1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44Njg3NDk2MDggKzAyMDAKIEBAIC00 MzYsNyArNDM2LDcgQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAog ICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsgaSA8IG5maWVsZHM7IGkrKykK ICAgICAgewpAQCAtMjQyOCwxMSArMjQyMywxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9qdi1s YW5nLmMKICAJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z KQogIHsKICAgIGNvbnN0IGNoYXIgKnR5cGVfZW5jb2RpbmcgPSBqYXZhX2dldF9lbmNvZGluZyAo dHlwZSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9qdi1sYW5nLmgKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9qdi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9n ZGIvanYtbGFuZy5oCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9qdi1sYW5nLmgJMjAxNC0wNS0xMiAyMDoyMjowNS43OTY0NDQxMTYgKzAyMDAK LUBAIC00Miw4ICs0Miw4IEBAIHN0cnVjdCBidWlsdGluX2phdmFfdHlwZQorLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvanYtbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTQ5NzQ3 MDQxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvanYtbGFuZy5oCTIwMTQtMDYt MTYgMjM6Mjc6MDcuODY4NzQ5NjA4ICswMjAwCitAQCAtNDMsOCArNDMsOCBAQCBzdHJ1Y3QgYnVp bHRpbl9qYXZhX3R5cGUKICAKICBleHRlcm4gY29uc3Qgc3RydWN0IGJ1aWx0aW5famF2YV90eXBl ICpidWlsdGluX2phdmFfdHlwZSAoc3RydWN0IGdkYmFyY2ggKik7CiAgCkBAIC0yNDQzLDExICsy NDM4LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2p2LWxhbmcuaAogIAkJCSAgICBjb25zdCBz dHJ1Y3QgdmFsdWUgKiwKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Kik7CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmludC5jCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvanYtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03Ljcu MS5vcmlnL2dkYi9qdi12YWxwcmludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUu Nzk2NDQ0MTE2ICswMjAwCi1AQCAtMjY2LDcgKzI2Niw3IEBAIGphdmFfdmFsdWVfcHJpbnQgKHN0 cnVjdCB2YWx1ZSAqdmFsLCBzdHIKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2p2 LXZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTA3NDcwNDIgKzAyMDAKKysrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9qdi12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY5 NzQ5NjA5ICswMjAwCitAQCAtMjY3LDcgKzI2Nyw3IEBAIGphdmFfdmFsdWVfcHJpbnQgKHN0cnVj dCB2YWx1ZSAqdmFsLCBzdHIKICAKICBzdGF0aWMgdm9pZAogIGphdmFfcHJpbnRfdmFsdWVfZmll bGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0yNDU2 LDcgKzI0NTEsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmludC5jCiAgCQkJIENP UkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAkJCSBpbnQgcmVjdXJz ZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNDU5LDcgKzQ1OSw3IEBAIGph dmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHkKK0BAIC00NjAsNyArNDYwLDcg QEAgamF2YV9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eQogIAogIHZvaWQKICBq YXZhX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LApAQCAtMjQ2NSwxMCArMjQ2MCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmlu dC5jCiAgCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCWNvbnN0IHN0 cnVjdCB2YWx1ZSAqdmFsLAogIAkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9sYW5ndWFnZS5jCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvbGFuZ3VhZ2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9sYW5ndWFnZS5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNy4xL2dkYi9sYW5ndWFnZS5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk3NDQ0MTE2ICsw MjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9sYW5ndWFnZS5jCTIwMTQtMDYt MTYgMjM6Mjc6MDUuMTUwNzQ3MDQyICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv bGFuZ3VhZ2UuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2OTc0OTYwOSArMDIwMAogQEAgLTcyMiw3 ICs3MjIsNyBAQCB1bmtfbGFuZ19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqCiAgCiAg c3RhdGljIHZvaWQKQEAgLTI0ODcsMTEgKzI0ODIsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv bGFuZ3VhZ2UuYwogIAkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAog IAkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvbGFuZ3VhZ2Uu aAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2xhbmd1YWdlLmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjEub3JpZy9nZGIvbGFuZ3VhZ2UuaAkyMDE0LTA1LTA1IDIzOjUxOjI0LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvbGFuZ3VhZ2UuaAkyMDE0LTA1LTEyIDIw OjIyOjA1Ljc5NzQ0NDExNiArMDIwMAotQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbgorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvbGFuZ3VhZ2UuaAkyMDE0 LTA2LTE2IDIzOjI3OjA1LjE1MDc0NzA0MiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2xhbmd1YWdlLmgJMjAxNC0wNi0xNiAyMzoyNzowNy44Njk3NDk2MDkgKzAyMDAKK0BAIC0x ODMsNyArMTgzLDcgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm4KICAJCQkgIHN0cnVjdCB1aV9maWxl ICogc3RyZWFtKTsKICAKICAgICAgdm9pZCAoKmxhX3ByaW50c3RyKSAoc3RydWN0IHVpX2ZpbGUg KiBzdHJlYW0sIHN0cnVjdCB0eXBlICplbHR0eXBlLApAQCAtMjUwMCw3ICsyNDk1LDcgQEAgSW5k ZXg6IGdkYi03LjcuMS9nZGIvbGFuZ3VhZ2UuaAogIAkJCSBjb25zdCBjaGFyICplbmNvZGluZywg aW50IGZvcmNlX2VsbGlwc2VzLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqKTsKICAKLUBAIC0yMjQsNyArMjI0LDcgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm4KK0BAIC0y MjUsNyArMjI1LDcgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm4KICAKICAgICAgdm9pZCAoKmxhX3Zh bF9wcmludCkgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCSAgY29uc3QgZ2RiX2J5dGUgKmNvbnRl bnRzLApAQCAtMjUwOSwxMCArMjUwNCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9sYW5ndWFn ZS5oCiAgCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgIGNv bnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvbTItbGFuZy5jCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ny4xLm9yaWcvZ2RiL20yLWxhbmcuYwkyMDE0LTAxLTA4IDEwOjIzOjM2LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjcuMS9nZGIvbTItbGFuZy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk3NDQ0 MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9tMi1sYW5nLmMJMjAx NC0wNi0xNiAyMzoyNzowNS4xNTE3NDcwNDMgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9tMi1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44Njk3NDk2MDkgKzAyMDAKIEBAIC0x MDQsMTAgKzEwNCwxMCBAQCBtMl9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwK ICAKICBzdGF0aWMgdm9pZApAQCAtMjU0NywxMSArMjU0MiwxMSBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9tMi1sYW5nLmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdzX3ByaW50ZWQgKz0g b3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2NvbW1hID0gMTsKLUlu ZGV4OiBnZGItNy43LjEvZ2RiL20yLWxhbmcuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL20yLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tMi1sYW5n LmgJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2Ri L20yLWxhbmcuaAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NzQ0NDExNiArMDIwMAotQEAgLTMzLDcg KzMzLDcgQEAgZXh0ZXJuIHZvaWQgbTJfcHJpbnRfdHlwZWRlZiAoc3RydWN0IHR5cAorLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvbTItbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUu MTUxNzQ3MDQzICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItbGFuZy5oCTIw MTQtMDYtMTYgMjM6Mjc6MDcuODY5NzQ5NjA5ICswMjAwCitAQCAtMzQsNyArMzQsNyBAQCBleHRl cm4gdm9pZCBtMl9wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwCiAgZXh0ZXJuIGludCBtMl9pc19s b25nX3NldCAoc3RydWN0IHR5cGUgKnR5cGUpOwogIGV4dGVybiBpbnQgbTJfaXNfdW5ib3VuZGVk X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgCkBAIC0yNTYwLDEwICsyNTU1LDEwIEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL20yLWxhbmcuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiwgaW50 LAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL20yLXR5cGVwcmludC5jCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItdHlwZXByaW50LmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjEub3JpZy9nZGIvbTItdHlwZXByaW50LmMJMjAxNC0wMS0wOCAxMDoyMzoz Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL20yLXR5cGVwcmludC5jCTIwMTQt MDUtMTIgMjA6MjI6MDUuNzk3NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9tMi10eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1MTc0NzA0MyArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL20yLXR5cGVwcmludC5jCTIwMTQtMDYtMTYg MjM6Mjc6MDcuODY5NzQ5NjA5ICswMjAwCiBAQCAtMjMzLDkgKzIzMywxMiBAQCBzdGF0aWMgdm9p ZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCSAgbTJfcHJpbnRfYm91bmRzIChUWVBF X0lOREVYX1RZUEUgKHR5cGUpLCBzdHJlYW0sIHNob3csIC0xLCAxKTsKICAJfQpAQCAtMjU4MCwx MCArMjU3NSwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9tMi10eXBlcHJpbnQuYwogICAgICB9 CiAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJdIE9GICIpOwogICAgbTJfcHJpbnRfdHlw ZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksICIiLCBzdHJlYW0sIHNob3csIGxldmVsLCBmbGFn cyk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9tMi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvbTItdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5v cmlnL2dkYi9tMi12YWxwcmludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNy4xL2dkYi9tMi12YWxwcmludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk3 NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9tMi12YWxwcmlu dC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUxNzQ3MDQzICswMjAwCisrKysgZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvbTItdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MDc0OTYxMCAr MDIwMAogQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGludCBwcmludF91bnBhY2tlZF9wb2ludGVy IChzdHJ1YwogIAkJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKICBzdGF0aWMgdm9pZApA QCAtMjY0OSwxMCArMjY0NCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9tMi12YWxwcmludC5j CiAgCiAgCQkgIC8qIExvb2sgZm9yIGEgTlVMTCBjaGFyLiAgKi8KICAJCSAgZm9yICh0ZW1wX2xl biA9IDA7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5jCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvbWVtcmFuZ2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9tZW1yYW5nZS5jCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk3NDQ0MTE2ICsw MjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9tZW1yYW5nZS5jCTIwMTQtMDYt MTYgMjM6Mjc6MDUuMTUxNzQ3MDQzICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv bWVtcmFuZ2UuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MDc0OTYxMCArMDIwMAogQEAgLTIxLDgg KzIxLDggQEAKICAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKICAKQEAgLTI2NjQsMTAgKzI2NTksMTAg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvbWVtcmFuZ2UuYwogIHsKICAgIFVMT05HRVNUIGgsIGw7 CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5oCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvbWVtcmFuZ2UuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dk Yi9tZW1yYW5nZS5oCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9tZW1yYW5nZS5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk4NDQ0MTE3ICswMjAw CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9tZW1yYW5nZS5oCTIwMTQtMDYtMTYg MjM6Mjc6MDUuMTUyNzQ3MDQ0ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbWVt cmFuZ2UuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MDc0OTYxMCArMDIwMAogQEAgLTMwLDcgKzMw LDcgQEAgc3RydWN0IG1lbV9yYW5nZQogICAgQ09SRV9BRERSIHN0YXJ0OwogIApAQCAtMjY4OCwy MyArMjY4MywyMyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5oCiAgCiAgLyogU29y dCByYW5nZXMgYnkgc3RhcnQgYWRkcmVzcywgdGhlbiBjb2FsZXNjZSBjb250aWd1b3VzIG9yCiAg ICAgb3ZlcmxhcHBpbmcgcmFuZ2VzLiAgKi8KLUluZGV4OiBnZGItNy43LjEvZ2RiL21pcHMtbGlu dXgtbmF0LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9taXBzLWxpbnV4LW5hdC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAx NC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL21pcHMt bGludXgtbmF0LmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTg0NDQxMTcgKzAyMDAKLUBAIC01ODgs NyArNTg4LDcgQEAgbWlwc19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0Ci0gICAg dGhlIHNwZWNpZmllZCByZWdpb24gY2FuIGJlIGNvdmVyZWQgYnkgdGhlIHdhdGNoIHJlZ2lzdGVy cy4gICovCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9taXBzLWxpbnV4LW5hdC5j CTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUyNzQ3MDQ0ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvbWlwcy1saW51eC1uYXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MDc0OTYxMCAr MDIwMAorQEAgLTU5MCw3ICs1OTAsNyBAQCBtaXBzX2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNz IChzdHJ1Y3QKICAKICBzdGF0aWMgaW50Ci0tbWlwc19saW51eF9yZWdpb25fb2tfZm9yX2h3X3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK21pcHNfbGludXhfcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCisgbWlwc19s aW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxm LAorLQkJCQkJQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCisrCQkJCQlDT1JFX0FERFIgYWRkciwg TE9OR0VTVCBsZW4pCiAgewogICAgc3RydWN0IHB0X3dhdGNoX3JlZ3MgZHVtbXlfcmVnczsKICAg IGludCBpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvb3BlbmNsLWxhbmcuYworSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL29wZW5jbC1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjEub3JpZy9nZGIvb3BlbmNsLWxhbmcuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjcuMS9nZGIvb3BlbmNsLWxhbmcuYwkyMDE0LTA1LTEyIDIwOjIyOjA1 Ljc5ODQ0NDExNyArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvb3BlbmNs LWxhbmcuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1Mjc0NzA0NCArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL29wZW5jbC1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NzA3NDk2 MTAgKzAyMDAKIEBAIC04MCwxMSArODAsMTEgQEAgYnVpbHRpbl9vcGVuY2xfdHlwZSAoc3RydWN0 IGdkYmFyY2ggKmdkYgogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCkBAIC0yODMxLDEwICsyODI2 LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL29wZW5jbC1sYW5nLmMKICAKICAgICAgICBpZiAo IXZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIgKGMtPnZhbCwKICAJCQkJCSBjLT5pbmRpY2Vz W2ldICogZWxzaXplICsgY29tcF9vZmZzZXQsCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9wLWxhbmcu YworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3AtbGFuZy5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3AtbGFuZy5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9wLWxhbmcuYwkyMDE0LTA1LTEyIDIwOjIyOjA1 Ljc5ODQ0NDExNyArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvcC1sYW5n LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTM3NDcwNDUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9wLWxhbmcuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MTc0OTYxMCArMDIwMAog QEAgLTk2LDggKzk2LDggQEAgcGFzY2FsX21haW5fbmFtZSAodm9pZCkKICAgICBhcmUgbm90IG11 bHRpcGxlIG9mIFRBUkdFVF9DSEFSX0JJVCB0aGVuIHRoZSByZXN1bHRzIGFyZSB3cm9uZwogICAg IGJ1dCB0aGlzIGRvZXMgbm90IGhhcHBlbiBmb3IgRnJlZSBQYXNjYWwgbm9yIGZvciBHUEMuICAq LwpAQCAtMjg4MiwxMSArMjg3NywxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9wLWxhbmcuYwog IAkgIGkgPSByZXAxIC0gMTsKICAJICB0aGluZ3NfcHJpbnRlZCArPSBvcHRpb25zLT5yZXBlYXRf Y291bnRfdGhyZXNob2xkOwogIAkgIG5lZWRfY29tbWEgPSAxOwotSW5kZXg6IGdkYi03LjcuMS9n ZGIvcC1sYW5nLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wLWxhbmcuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9wLWxhbmcuaAkyMDE0LTA1LTA1IDIzOjUx OjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcC1sYW5nLmgJMjAxNC0wNS0x MiAyMDoyMjowNS43OTg0NDQxMTcgKzAyMDAKLUBAIC0zNSw3ICszNSw3IEBAIGV4dGVybiB2b2lk IHBhc2NhbF9wcmludF90eXBlIChzdHJ1Y3QgdHkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL3AtbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUzNzQ3MDQ1ICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcC1sYW5nLmgJMjAxNC0wNi0xNiAyMzoyNzowNy44NzE3 NDk2MTAgKzAyMDAKK0BAIC0zNiw3ICszNiw3IEBAIGV4dGVybiB2b2lkIHBhc2NhbF9wcmludF90 eXBlIChzdHJ1Y3QgdHkKICBleHRlcm4gdm9pZCBwYXNjYWxfcHJpbnRfdHlwZWRlZiAoc3RydWN0 IHR5cGUgKiwgc3RydWN0IHN5bWJvbCAqLAogIAkJCQkgIHN0cnVjdCB1aV9maWxlICopOwogIApA QCAtMjg5NSw3ICsyODkwLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcC1sYW5nLmgKICAJCQkg ICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKICAJCQkgICAgICBjb25zdCBz dHJ1Y3QgdmFsdWUgKiwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqKTsKLUBAIC00OSwxMyArNDksMTMgQEAgZXh0ZXJuIHZvaWQgcGFzY2FsX3R5cGVfcHJpbnRf bWV0aG9kX2FyZworQEAgLTUwLDEzICs1MCwxMyBAQCBleHRlcm4gdm9pZCBwYXNjYWxfdHlwZV9w cmludF9tZXRob2RfYXJnCiAgLyogVGhlc2UgYXJlIGluIHAtbGFuZy5jOiAqLwogIAogIGV4dGVy biBpbnQKQEAgLTI5MTEsNyArMjkwNiw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3AtbGFuZy5o CiAgCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBleHRl cm4gc3RydWN0IHR5cGUgKipjb25zdCAocGFzY2FsX2J1aWx0aW5fdHlwZXNbXSk7Ci1AQCAtNzEs NyArNzEsNyBAQCBleHRlcm4gdm9pZAorQEAgLTcyLDcgKzcyLDcgQEAgZXh0ZXJuIHZvaWQKICAJ CQkJICAgIGNvbnN0IHN0cnVjdCB0eXBlX3ByaW50X29wdGlvbnMgKik7CiAgCiAgZXh0ZXJuIHZv aWQgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICosIGNvbnN0 IGdkYl9ieXRlICosCkBAIC0yOTIwLDEwICsyOTE1LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L3AtbGFuZy5oCiAgCQkJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosCiAgCQkJ CQkgICAgICBpbnQsCiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKiwKLUluZGV4OiBn ZGItNy43LjEvZ2RiL3AtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3AtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9wLXZhbHBy aW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNC43ODA0NDM1MDYgKzAyMDAKLSsrKyBnZGItNy43LjEv Z2RiL3AtdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5OTQ0NDExNyArMDIwMAorLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvcC12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6 Mjc6MDUuMTUzNzQ3MDQ1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcC12YWxw cmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODcxNzQ5NjEwICswMjAwCiBAQCAtNTgsNyArNTgs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlCiAgCiAgdm9pZApA QCAtMjk0NCw3ICsyOTM5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcC12YWxwcmludC5jCiAg ICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOwogICAgQ09SRV9BRERSIGFkZHI7CiAgICBpbnQgd2Fu dF9zcGFjZSA9IDA7Ci1AQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIHBhc2NhbF9vYmpl Y3RfcHJpbnRfc3RhdGljX2YKK0BAIC00NjgsNyArNDY4LDcgQEAgc3RhdGljIHZvaWQgcGFzY2Fs X29iamVjdF9wcmludF9zdGF0aWNfZgogIAkJCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKik7CiAgCiAgc3RhdGljIHZvaWQgcGFzY2FsX29iamVjdF9wcmludF92YWx1 ZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwKQEAgLTI5NTMsNyArMjk0OCw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL3AtdmFscHJpbnQuYwogIAkJCQkgICAgICAgQ09SRV9BRERS LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUg KiwKICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICosCi1AQCAt NTUzLDcgKzU1Myw3IEBAIHBhc2NhbF9vYmplY3RfaXNfdnRibF9tZW1iZXIgKHN0cnVjdCB0eXAK K0BAIC01MjcsNyArNTI3LDcgQEAgcGFzY2FsX29iamVjdF9pc192dGJsX21lbWJlciAoc3RydWN0 IHR5cAogIAogIHZvaWQKICBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjk2Miw3ICsyOTU3LDcg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcC12YWxwcmludC5jCiAgCQkJCSAgQ09SRV9BRERSIGFk ZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkJCSAgaW50IHJlY3Vyc2UsCiAgCQkJ CSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNzI5LDcgKzcyOSw3IEBAIHBhc2NhbF9v YmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QKK0BAIC03MDMsNyArNzAzLDcgQEAgcGFz Y2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdAogIAogIHN0YXRpYyB2b2lkCiAg cGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLApAQCAtMjk3MSw3ICsyOTY2LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv cC12YWxwcmludC5jCiAgCQkJICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sCiAgCQkJICAgaW50IHJlY3Vyc2UsCiAgCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlICp2 YWwsCi1AQCAtNzUyLDExICs3NTIsMTEgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3Ry dWN0IHR5cGUgKgorQEAgLTcyNiwxMSArNzI2LDExIEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFs dWUgKHN0cnVjdCB0eXBlICoKICAKICAgIGZvciAoaSA9IDA7IGkgPCBuX2Jhc2VjbGFzc2VzOyBp KyspCiAgICAgIHsKQEAgLTI5ODUsMjQgKzI5ODAsMjQgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv cC12YWxwcmludC5jCiAgICAgICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7CiAg ICAgICAgaW50IHNraXAgPSAwOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvcHBjLWxpbnV4LW5h dC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHBjLWxpbnV4LW5hdC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA1LTA1 IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcHBjLWxpbnV4LW5h dC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk5NDQ0MTE3ICswMjAwCi1AQCAtMTQ5Niw3ICsxNDk2 LDcgQEAgcHBjX2xpbnV4X2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cAotIH0KKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA2LTE2IDIz OjI3OjA1LjE1NDc0NzA0NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3BwYy1s aW51eC1uYXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MTc0OTYxMCArMDIwMAorQEAgLTE0OTgs NyArMTQ5OCw3IEBAIHBwY19saW51eF9jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdAogIAog IHN0YXRpYyBpbnQKLS1wcGNfbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbikKLStwcGNfbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCisgcHBjX2xpbnV4X3JlZ2lvbl9va19m b3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCistCQkJCSAgICAgICBD T1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgICAgIENPUkVfQUREUiBhZGRyLCBMT05H RVNUIGxlbikKICB7CiAgICAvKiBIYW5kbGUgc3ViLTgtYnl0ZSBxdWFudGl0aWVzLiAgKi8KICAg IGlmIChsZW4gPD0gMCkKLUluZGV4OiBnZGItNy43LjEvZ2RiL3ByaW50Y21kLmMKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wcmludGNtZC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ny4xLm9yaWcvZ2RiL3ByaW50Y21kLmMJMjAxNC0wNS0xMiAyMDoyMjowNS4wOTE0NDM2OTMgKzAy MDAKLSsrKyBnZGItNy43LjEvZ2RiL3ByaW50Y21kLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTk0 NDQxMTcgKzAyMDAKLUBAIC0yODksNyArMjg5LDcgQEAgcHJpbnRfZm9ybWF0dGVkIChzdHJ1Y3Qg dmFsdWUgKnZhbCwgaW50CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9wcmludGNt ZC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTU1NzQ3MDQ3ICswMjAwCisrKysgZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvcHJpbnRjbWQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3Mjc0OTYxMiArMDIw MAorQEAgLTI4OCw3ICsyODgsNyBAQCBwcmludF9mb3JtYXR0ZWQgKHN0cnVjdCB2YWx1ZSAqdmFs LCBpbnQKICAJCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogIHsKICAgIHN0cnVjdCB0eXBlICp0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsKSk7CkBAIC0zMDExLDcgKzMwMDYs NyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9wcmludGNtZC5jCiAgCiAgICBpZiAoVkFMVUVfTFZB TCAodmFsKSA9PSBsdmFsX21lbW9yeSkKICAgICAgbmV4dF9hZGRyZXNzID0gdmFsdWVfYWRkcmVz cyAodmFsKSArIGxlbjsKLUBAIC0zNjcsNyArMzY3LDcgQEAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRl ZCAoY29uc3Qgdm9pZCAqdmFsYQorQEAgLTM2Niw3ICszNjYsNyBAQCBwcmludF9zY2FsYXJfZm9y bWF0dGVkIChjb25zdCB2b2lkICp2YWxhCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAgIExPTkdFU1QgdmFsX2xvbmcgPSAwOwpAQCAtMzAy MCw1OCArMzAxNSwzNiBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9wcmludGNtZC5jCiAgICBlbnVt IGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAg CiAgICAvKiBTdHJpbmcgcHJpbnRpbmcgc2hvdWxkIGdvIHRocm91Z2ggdmFsX3ByaW50X3NjYWxh cl9mb3JtYXR0ZWQuICAqLwotSW5kZXg6IGdkYi03LjcuMS9nZGIvcHJvY2ZzLmMKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03Ljcu MS5vcmlnL2dkYi9wcm9jZnMuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjcuMS9nZGIvcHJvY2ZzLmMJMjAxNC0wNS0xMiAyMDoyMjowNS44MDA0NDQxMTgg KzAyMDAKLUBAIC00OTI0LDcgKzQ5MjQsNyBAQCBwcm9jZnNfcmVtb3ZlX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyCi0gfQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvcHJvY2Zz LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTY3NDcwNDggKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9wcm9jZnMuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3Mjc0OTYxMiArMDIwMAor QEAgLTQ5MTYsNyArNDkxNiw3IEBAIHByb2Nmc19yZW1vdmVfd2F0Y2hwb2ludCAoc3RydWN0IHRh cmdldF8KICAKICBzdGF0aWMgaW50Ci0tcHJvY2ZzX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCi0rcHJvY2ZzX3JlZ2lvbl9va19mb3JfaHdfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQorIHByb2Nmc19yZWdpb25fb2tf Zm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAorLQkJCQkgICAgQ09S RV9BRERSIGFkZHIsIGludCBsZW4pCisrCQkJCSAgICBDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBs ZW4pCiAgewogICAgLyogVGhlIG1hbiBwYWdlIGZvciBwcm9jKDQpIG9uIFNvbGFyaXMgMi42IGFu ZCB1cCBzYXlzIHRoYXQgdGhlCiAgICAgICBzeXN0ZW0gY2FuIHN1cHBvcnQgInRob3VzYW5kcyIg b2YgaGFyZHdhcmUgd2F0Y2hwb2ludHMsIGJ1dCBnaXZlcwotSW5kZXg6IGdkYi03LjcuMS9nZGIv cHl0aG9uL3B5LXByZXR0eXByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9n ZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTQtMDUt MTIgMjA6MjI6MDUuODAwNDQ0MTE4ICswMjAwCi1AQCAtNjg4LDcgKzY4OCw3IEBAIHByaW50X2No aWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKLSAKLSBpbnQKLSBhcHBseV92YWxfcHJl dHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK LS0JCQkgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotKwkJCSAgTE9O R0VTVCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotIAkJCSAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi0gCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZh bCwKLSAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAg LTg0Myw3ICs4NDMsNyBAQCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpzZWxm Ci0gCi0gaW50Ci0gYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0tCQkJICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JF X0FERFIgYWRkcmVzcywKLSsJCQkgIExPTkdFU1QgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIg YWRkcmVzcywKLSAJCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAotIAkJ CSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi0gCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqb3B0aW9ucywKLUluZGV4OiBnZGItNy43LjEvZ2RiL3B5dGhvbi9weXRob24u aAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDE0 LTA1LTEyIDIwOjIyOjA0Ljc4MzQ0MzUwOCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcHl0aG9u L3B5dGhvbi5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAxNDQ0MTE5ICswMjAwCi1AQCAtMTExLDcg KzExMSw3IEBAIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGMKLSB2b2lk IHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIAotIGludCBhcHBs eV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKLS0JCQkgICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVz cywKLSsJCQkgICAgICBMT05HRVNUIGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3Ms Ci0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi0gCQkJICAg ICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi0gCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9yZWdjYWNoZS5j CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQu YwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1Njc0NzA0OCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODcz NzQ5NjEyICswMjAwCitAQCAtNjg3LDcgKzY4Nyw3IEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVj dCAqcHJpbnRlciwgY29uc3QKKyBlbnVtIGV4dF9sYW5nX3JjCisgZ2RicHlfYXBwbHlfdmFsX3By ZXR0eV9wcmludGVyIChjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxh bmcsCisgCQkJCXN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKKy0J CQkJaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCisrCQkJCUxPTkdFU1Qg ZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKyAJCQkJc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IHJlY3Vyc2UsCisgCQkJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAorIAkJ CQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9yZWdjYWNoZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4x Lm9yaWcvZ2RiL3JlZ2NhY2hlLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy43LjEvZ2RiL3JlZ2NhY2hlLmMJMjAxNC0wNS0xMiAyMDoyMjowNS44MDE0NDQx MTkgKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3JlZ2NhY2hlLmMJMjAx NC0wNi0xNiAyMzoyNzowNS4xNTc3NDcwNDkgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9yZWdjYWNoZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODczNzQ5NjEyICswMjAwCiBAQCAt ODk5LDcgKzg5OSw3IEBAIHR5cGVkZWYgdm9pZCAocmVnY2FjaGVfd3JpdGVfZnR5cGUpIChzdHIK ICAKICBzdGF0aWMgZW51bSByZWdpc3Rlcl9zdGF0dXMKQEAgLTMxMTcsMTAgKzMwOTAsMTAgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvcmVnY2FjaGUuYwogIHsKICAgIHN0cnVjdCByZWdjYWNoZV9k ZXNjciAqZGVzY3IgPSByZWdjYWNoZS0+ZGVzY3I7CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9y ZWdjYWNoZS5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcmVnY2FjaGUuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9yZWdjYWNoZS5oCTIwMTQtMDEtMDggMTA6 MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9yZWdjYWNoZS5oCTIwMTQt MDUtMTIgMjA6MjI6MDUuODAxNDQ0MTE5ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9yZWdjYWNoZS5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTU3NzQ3MDQ5ICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcmVnY2FjaGUuaAkyMDE0LTA2LTE2IDIzOjI3OjA3 Ljg3Mzc0OTYxMiArMDIwMAogQEAgLTg5LDkgKzg5LDkgQEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVf cmF3X3dyaXRlX3Vuc2lnbmVkCiAgCiAgZXh0ZXJuIGVudW0gcmVnaXN0ZXJfc3RhdHVzCkBAIC0z MTQ4LDM3ICszMTIxLDM3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3JlZ2NhY2hlLmgKICAKICAv KiBTcGVjaWFsIHJvdXRpbmVzIHRvIHJlYWQvd3JpdGUgdGhlIFBDLiAgKi8KICAKLUluZGV4OiBn ZGItNy43LjEvZ2RiL3JlbW90ZS5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcmVt b3RlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvcmVtb3RlLmMJMjAxNC0w NS0xMiAyMDoyMjowNS4xMTA0NDM3MDQgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3JlbW90ZS5j CTIwMTQtMDUtMTIgMjA6MjI6MDUuODAzNDQ0MTIwICswMjAwCi1AQCAtODQxMyw3ICs4NDEzLDcg QEAgaW50IHJlbW90ZV9od193YXRjaHBvaW50X2xlbmd0aF9saW1pdCA9Ci0gaW50IHJlbW90ZV9o d19icmVha3BvaW50X2xpbWl0ID0gLTE7CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dk Yi9yZW1vdGUuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1OTc0NzA1MSArMDIwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3JlbW90ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc1NzQ5NjE0 ICswMjAwCitAQCAtODI3Miw3ICs4MjcyLDcgQEAgaW50IHJlbW90ZV9od19icmVha3BvaW50X2xp bWl0ID0gLTE7CiAgCiAgc3RhdGljIGludAotLXJlbW90ZV9yZWdpb25fb2tfZm9yX2h3X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK3JlbW90ZV9yZWdpb25fb2tfZm9yX2h3 X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyByZW1vdGVfcmVnaW9u X29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwKKy0JCQkJICAg IENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQorKwkJCQkgICAgQ09SRV9BRERSIGFkZHIsIExPTkdF U1QgbGVuKQogIHsKICAgIGlmIChyZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5ndGhfbGltaXQgPT0g MCkKICAgICAgcmV0dXJuIDA7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9zcHUtbXVsdGlhcmNoLmMK K0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9zcHUtbXVsdGlhcmNoLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTQtMDUtMDUgMjM6 NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9zcHUtbXVsdGlhcmNoLmMJ MjAxNC0wNS0xMiAyMDoyMjowNS44MDM0NDQxMjAgKzAyMDAKLUBAIC0xMTgsNyArMTE4LDcgQEAg c3B1X3RocmVhZF9hcmNoaXRlY3R1cmUgKHN0cnVjdCB0YXJnZXRfbwotIAorLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUu MTU5NzQ3MDUxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvc3B1LW11bHRpYXJj aC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc1NzQ5NjE0ICswMjAwCitAQCAtMTE5LDcgKzExOSw3 IEBAIHNwdV90aHJlYWRfYXJjaGl0ZWN0dXJlIChzdHJ1Y3QgdGFyZ2V0X28KICAvKiBPdmVycmlk ZSB0aGUgdG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IHJvdXRpbmUuICAqLwogIHN0YXRp YyBpbnQKLS1zcHVfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwg aW50IGxlbikKLStzcHVfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgTE9OR0VTVCBsZW4pCisgc3B1X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0 IHRhcmdldF9vcHMgKnNlbGYsCistCQkJCSBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJ IENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKICB7CiAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAq b3BzX2JlbmVhdGggPSBmaW5kX3RhcmdldF9iZW5lYXRoICgmc3B1X29wcyk7CiAgICB3aGlsZSAo b3BzX2JlbmVhdGggJiYgIW9wc19iZW5lYXRoLT50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9p bnQpCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9zdGFjay5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvc3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9zdGFj ay5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzgzNDQzNTA4ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dk Yi9zdGFjay5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAzNDQ0MTIwICswMjAwCi1AQCAtMTgwLDcg KzE4MCw3IEBAIHByaW50X3N0YWNrX2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnIKKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3N0YWNrLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4x NjA3NDcwNTIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9zdGFjay5jCTIwMTQt MDYtMTYgMjM6Mjc6MDcuODc1NzQ5NjE0ICswMjAwCitAQCAtMTc5LDcgKzE3OSw3IEBAIHByaW50 X3N0YWNrX2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnIKICAgICBhcmd1bWVudCAobm90IGp1 c3QgdGhlIGZpcnN0IG5hbWVsZXNzIGFyZ3VtZW50KS4gICovCiAgCiAgc3RhdGljIHZvaWQKQEAg LTMxODcsNyArMzE2MCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3N0YWNrLmMKICAJCQkgICBp bnQgZmlyc3QsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgewogICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotQEAgLTUyNiw3ICs1MjYsNyBAQCBw cmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzCitAQCAtNTI1LDcgKzUyNSw3 IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKICAgIC8qIE9mZnNl dCBvZiBuZXh0IHN0YWNrIGFyZ3VtZW50IGJleW9uZCB0aGUgb25lIHdlIGhhdmUgc2VlbiB0aGF0 IGlzCiAgICAgICBhdCB0aGUgaGlnaGVzdCBvZmZzZXQsIG9yIC0xIGlmIHdlIGhhdmVuJ3QgY29t ZSB0byBhIHN0YWNrCiAgICAgICBhcmd1bWVudCB5ZXQuICAqLwpAQCAtMzE5Niw3ICszMTY5LDcg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvc3RhY2suYwogICAgLyogTnVtYmVyIG9mIGludHMgb2Yg YXJndW1lbnRzIHRoYXQgd2UgaGF2ZSBwcmludGVkIHNvIGZhci4gICovCiAgICBpbnQgYXJnc19w cmludGVkID0gMDsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci1AQCAtNTY0LDggKzU2 NCw4IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKK0BAIC01NTks OCArNTU5LDggQEAgcHJpbnRfZnJhbWVfYXJncyAoc3RydWN0IHN5bWJvbCAqZnVuYywgcwogIAkg ICAgY2FzZSBMT0NfQVJHOgogIAkgICAgY2FzZSBMT0NfUkVGX0FSRzoKICAJICAgICAgewpAQCAt MzIwNyw3ICszMTgwLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvc3RhY2suYwogIAogIAkJLyog Q29tcHV0ZSBhZGRyZXNzIG9mIG5leHQgYXJndW1lbnQgYnkgYWRkaW5nIHRoZSBzaXplIG9mCiAg CQkgICB0aGlzIGFyZ3VtZW50IGFuZCByb3VuZGluZyB0byBhbiBpbnQgYm91bmRhcnkuICAqLwot QEAgLTcwMCw3ICs3MDAsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5j LCBzCitAQCAtNjk1LDcgKzY5NSw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wg KmZ1bmMsIHMKICAgICAgIGVub3VnaCBhYm91dCB0aGUgc3RhY2sgdG8gZmluZCB0aGVtLiAgKi8K ICAgIGlmIChudW0gIT0gLTEpCiAgICAgIHsKQEAgLTMyMTYsMTEgKzMxODksMTEgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvc3RhY2suYwogIAogICAgICAgIGlmIChoaWdoZXN0X29mZnNldCA9PSAt MSkKICAJc3RhcnQgPSBnZGJhcmNoX2ZyYW1lX2FyZ3Nfc2tpcCAoZ2V0X2ZyYW1lX2FyY2ggKGZy YW1lKSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9zeW1taXNjLmMKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9zeW1taXNjLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9n ZGIvc3ltbWlzYy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuMjEyNDQzNzY1ICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9zeW1taXNjLmMJMjAxNC0wNS0xMiAyMDoyMjowNS44MDQ0NDQxMjAgKzAyMDAK LUBAIC01MjksMTEgKzUyOSwxMSBAQCBwcmludF9zeW1ib2wgKHZvaWQgKmFyZ3MpCistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9zeW1taXNjLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4x NjA3NDcwNTIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9zeW1taXNjLmMJMjAx NC0wNi0xNiAyMzoyNzowNy44NzU3NDk2MTQgKzAyMDAKK0BAIC01MzAsMTEgKzUzMCwxMSBAQCBw cmludF9zeW1ib2wgKHZvaWQgKmFyZ3MpCiAgCiAgCWNhc2UgTE9DX0NPTlNUX0JZVEVTOgogIAkg IHsKQEAgLTMyMzUsNjQgKzMyMDgsNjQgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvc3ltbWlzYy5j CiAgCSAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9MRU5HVEggKHR5cGUpOyBpKyspCiAgCSAgICAg IGZwcmludGZfZmlsdGVyZWQgKG91dGZpbGUsICIgJTAyeCIsCiAgCQkJCSh1bnNpZ25lZCkgU1lN Qk9MX1ZBTFVFX0JZVEVTIChzeW1ib2wpW2ldKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL3Rhcmdl dC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGFyZ2V0LmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjEub3JpZy9nZGIvdGFyZ2V0LmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3RhcmdldC5jCTIwMTQtMDUtMTIgMjA6MjI6 MDUuODA0NDQ0MTIwICswMjAwCi1AQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0 X3Rlcm1pbmFsX2luZm8gKGNvbnN0Ci0gc3RhdGljIGludCBkZWZhdWx0X3dhdGNocG9pbnRfYWRk cl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICosCistLS0gZ2RiLTcuNy45MC4yMDE0 MDYxMy5vcmlnL2dkYi90YXJnZXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE2MTc0NzA1MyArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC5jCTIwMTQtMDYtMTYgMjM6Mjc6 MDcuODc2NzQ5NjE1ICswMjAwCitAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgaW50IGRlZmF1bHRf d2F0Y2hwb2ludF9hZGRyX3dpdGhpCiAgCQkJCQkJIENPUkVfQUREUiwgQ09SRV9BRERSLCBpbnQp OwogIAotLXN0YXRpYyBpbnQgZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENP UkVfQUREUiwgaW50KTsKLStzdGF0aWMgaW50IGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50IChDT1JFX0FERFIsIExPTkdFU1QpOworIHN0YXRpYyBpbnQgZGVmYXVsdF9yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICosCistCQkJCQkJQ09SRV9B RERSLCBpbnQpOworKwkJCQkJCUNPUkVfQUREUiwgTE9OR0VTVCk7CiAgCi0gc3RhdGljIHZvaWQg dGNvbXBsYWluICh2b2lkKSBBVFRSSUJVVEVfTk9SRVRVUk47Cisgc3RhdGljIHZvaWQgZGVmYXVs dF9yY21kIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBjaGFyICosIHN0cnVjdCB1aV9maWxlICopOwog IAotQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9h ZGRyZXNzCi0gc3RhdGljIGludCBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3Jhbmdl IChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAorQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgaW50IGRl YnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoCiAgCQkJCQkJICBDT1JFX0FERFIsIENPUkVfQURE UiwgaW50KTsKICAKLS1zdGF0aWMgaW50IGRlYnVnX3RvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hw b2ludCAoQ09SRV9BRERSLCBpbnQpOwotK3N0YXRpYyBpbnQgZGVidWdfdG9fcmVnaW9uX29rX2Zv cl9od193YXRjaHBvaW50IChDT1JFX0FERFIsIExPTkdFU1QpOwotIAotIHN0YXRpYyBpbnQgZGVi dWdfdG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIsIGludCwgaW50 LAotIAkJCQkJCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLUBAIC0zNTkwLDcgKzM1OTAsNyBA QCB0YXJnZXRfZmlsZWlvX3JlYWRfc3RyYWxsb2MgKGNvbnN0IGNoYXIKKyBzdGF0aWMgaW50IGRl YnVnX3RvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNl bGYsCistCQkJCQkJIENPUkVfQUREUiwgaW50KTsKKysJCQkJCQkgQ09SRV9BRERSLCBMT05HRVNU KTsKICAKKyBzdGF0aWMgaW50IGRlYnVnX3RvX2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlv biAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCisgCQkJCQkJICAgIENPUkVfQUREUiwgaW50LCBp bnQsCitAQCAtMjk1MSw3ICsyOTUxLDcgQEAgdGFyZ2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChj b25zdCBjaGFyCiAgCiAgc3RhdGljIGludAotLWRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikKLStkZWZhdWx0X3JlZ2lvbl9va19mb3Jf aHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQorIGRlZmF1bHRfcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwKKy0JCQkJ ICAgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgICBDT1JFX0FERFIgYWRkciwg TE9OR0VTVCBsZW4pCiAgewogICAgcmV0dXJuIChsZW4gPD0gZ2RiYXJjaF9wdHJfYml0ICh0YXJn ZXRfZ2RiYXJjaCAoKSkgLyBUQVJHRVRfQ0hBUl9CSVQpOwogIH0KLUBAIC00NTU3LDcgKzQ1NTcs NyBAQCBkZWJ1Z190b19jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCB0eXBlCi0gfQorQEAgLTM2 NjQsNyArMzY2NCw3IEBAIGRlYnVnX3RvX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoc3RydWN0IHQK ICAKICBzdGF0aWMgaW50Ci0tZGVidWdfdG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgaW50IGxlbikKLStkZWJ1Z190b19yZWdpb25fb2tfZm9yX2h3X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBkZWJ1Z190b19yZWdpb25fb2tf Zm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAorLQkJCQkgICAgICBD T1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgICAgQ09SRV9BRERSIGFkZHIsIExPTkdF U1QgbGVuKQogIHsKICAgIENPUkVfQUREUiByZXR2YWw7CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dk Yi90YXJnZXQuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3RhcmdldC5oCTIwMTQtMDUtMTIgMjA6MjI6 MDUuNTc0NDQzOTgyICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi90YXJnZXQuaAkyMDE0LTA1LTEy IDIwOjIyOjA1LjgwNTQ0NDEyMSArMDIwMAotQEAgLTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgdGFy Z2V0X29wcwotIAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdGFyZ2V0LmgJMjAx NC0wNi0xNiAyMzoyNzowNS4xNjI3NDcwNTQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi90YXJnZXQuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3Njc0OTYxNSArMDIwMAorQEAgLTQ3 NSw3ICs0NzUsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICAvKiBEb2N1bWVudGF0aW9uIG9m IHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAg IHRhcmdldF8qIG1hY3JvLiAgKi8KLS0gICAgaW50ICgqdG9fcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50KSAoQ09SRV9BRERSLCBpbnQpOwotKyAgICBpbnQgKCp0b19yZWdpb25fb2tfZm9yX2h3 X3dhdGNocG9pbnQpIChDT1JFX0FERFIsIExPTkdFU1QpOworICAgICBpbnQgKCp0b19yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQpIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAorLQkJCQkJICAgQ09S RV9BRERSLCBpbnQpCisrCQkJCQkgICBDT1JFX0FERFIsIExPTkdFU1QpCisgICAgICAgVEFSR0VU X0RFRkFVTFRfRlVOQyAoZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpOwogIAot ICAgICBpbnQgKCp0b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24pIChDT1JFX0FERFIs IGludCwgaW50LAotIAkJCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci1JbmRleDogZ2Ri LTcuNy4xL2dkYi90cmFjZXBvaW50LmMKKyAgICAgaW50ICgqdG9fY2FuX2FjY2VsX3dhdGNocG9p bnRfY29uZGl0aW9uKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKK0luZGV4OiBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi90cmFjZXBvaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9n ZGIvdHJhY2Vwb2ludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNy4xL2dkYi90cmFjZXBvaW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNS44MDY0NDQxMjIg KzAyMDAKLUBAIC05MzcsMTMgKzkzNywxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVjdCBjb2xsZWN0 aW9uX2xpc3QgKmNvCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90cmFjZXBvaW50 LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNjM3NDcwNTUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi90cmFjZXBvaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44Nzc3NDk2MTYgKzAy MDAKK0BAIC05MzAsMTMgKzkzMCwxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVjdCBjb2xsZWN0aW9u X2xpc3QgKmNvCiAgc3RhdGljIHZvaWQKICBhZGRfbWVtcmFuZ2UgKHN0cnVjdCBjb2xsZWN0aW9u X2xpc3QgKm1lbXJhbmdlcywgCiAgCSAgICAgIGludCB0eXBlLCBiZmRfc2lnbmVkX3ZtYSBiYXNl LApAQCAtMzMwOCw3ICszMjgxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdHJhY2Vwb2ludC5j CiAgICAgIH0KICAKICAgIC8qIHR5cGU6IG1lbXJhbmdlX2Fic29sdXRlID09IG1lbW9yeSwgb3Ro ZXIgbiA9PSBiYXNlcmVnICovCi1AQCAtOTczLDcgKzk3Myw3IEBAIGNvbGxlY3Rfc3ltYm9sIChz dHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BAIC05NjYsNyArOTY2LDcgQEAgY29sbGVjdF9zeW1i b2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKgogIAkJQ09SRV9BRERSIHNjb3BlLAogIAkJaW50 IHRyYWNlX3N0cmluZykKICB7CkBAIC0zMzE3LDcgKzMyOTAsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi90cmFjZXBvaW50LmMKICAgIHVuc2lnbmVkIGludCByZWc7CiAgICBiZmRfc2lnbmVkX3Zt YSBvZmZzZXQ7CiAgICBpbnQgdHJlYXRfYXNfZXhwciA9IDA7Ci1AQCAtOTk3LDggKzk5Nyw4IEBA IGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BAIC05OTAsOCArOTkw LDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKgogIAkgIGNoYXIg dG1wWzQwXTsKICAKICAJICBzcHJpbnRmX3ZtYSAodG1wLCBvZmZzZXQpOwpAQCAtMzMyOCw3ICsz MzAxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdHJhY2Vwb2ludC5jCiAgCQkJICAgdG1wIC8q IGFkZHJlc3MgKi8pOwogIAl9CiAgICAgICAgLyogQSBzdHJ1Y3QgbWF5IGJlIGEgQysrIGNsYXNz IHdpdGggc3RhdGljIGZpZWxkcywgZ28gdG8gZ2VuZXJhbAotQEAgLTEwMzAsOCArMTAzMCw4IEBA IGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BAIC0xMDIzLDggKzEw MjMsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCiAgICAgICAg b2Zmc2V0ID0gZnJhbWVfb2Zmc2V0ICsgU1lNQk9MX1ZBTFVFIChzeW0pOwogICAgICAgIGlmIChp bmZvX3ZlcmJvc2UpCiAgCXsKQEAgLTMzMzksNyArMzMxMiw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3RyYWNlcG9pbnQuYwogIAkgIHByaW50Zl92bWEgKG9mZnNldCk7CiAgCSAgcHJpbnRmX2Zp bHRlcmVkICgiIGZyb20gZnJhbWUgcHRyIHJlZyAlZFxuIiwgcmVnKTsKICAJfQotQEAgLTEwNDIs OCArMTA0Miw4IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BA IC0xMDM1LDggKzEwMzUsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlz dCAqCiAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICBpZiAoaW5mb192ZXJib3NlKQogIAl7CkBA IC0zMzUwLDcgKzMzMjMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90cmFjZXBvaW50LmMKICAJ ICBwcmludGZfdm1hIChvZmZzZXQpOwogIAkgIHByaW50Zl9maWx0ZXJlZCAoIiBmcm9tIHJlZyAl ZFxuIiwgcmVnKTsKICAJfQotQEAgLTEwNTQsOCArMTA1NCw4IEBAIGNvbGxlY3Rfc3ltYm9sIChz dHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BAIC0xMDQ3LDggKzEwNDcsOCBAQCBjb2xsZWN0X3N5 bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCiAgICAgICAgb2Zmc2V0ID0gZnJhbWVfb2Zm c2V0ICsgU1lNQk9MX1ZBTFVFIChzeW0pOwogICAgICAgIGlmIChpbmZvX3ZlcmJvc2UpCiAgCXsK QEAgLTMzNjEsNyArMzMzNCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3RyYWNlcG9pbnQuYwog IAkgIHByaW50Zl92bWEgKG9mZnNldCk7CiAgCSAgcHJpbnRmX2ZpbHRlcmVkICgiIGZyb20gZnJh bWUgcHRyIHJlZyAlZFxuIiwgcmVnKTsKICAJfQotQEAgLTI3MTMsNyArMjcxMyw4IEBAIHNjb3Bl X2luZm8gKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0yNzA5LDcgKzI3MDksOCBAQCBz Y29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBjb25zdCBjaGFyICpzeW1u YW1lOwogICAgY2hhciAqc2F2ZV9hcmdzID0gYXJnczsKICAgIHN0cnVjdCBibG9ja19pdGVyYXRv ciBpdGVyOwpAQCAtMzM3MSw3ICszMzQ0LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdHJhY2Vw b2ludC5jCiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKICAgIGludCByZWdubzsKICAKLUBA IC0yODQ5LDggKzI4NTAsMTEgQEAgc2NvcGVfaW5mbyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5 KQorQEAgLTI4NDUsOCArMjg0NiwxMSBAQCBzY29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCiAgCQl9CiAgCSAgICB9CiAgCSAgaWYgKFNZTUJPTF9UWVBFIChzeW0pKQpAQCAtMzM4 NSwxMSArMzM1OCwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90cmFjZXBvaW50LmMKICAJfQog ICAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2spKQogIAlicmVhazsKLUluZGV4OiBnZGIt Ny43LjEvZ2RiL3R5cGVwcmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdHlw ZXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvdHlwZXByaW50LmMJ MjAxNC0wNS0xMiAyMDoyMjowNC43OTA0NDM1MTIgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3R5 cGVwcmludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA2NDQ0MTIyICswMjAwCi1AQCAtNDA5LDcg KzQwOSw3IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi90eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE2NDc0 NzA1NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3R5cGVwcmludC5jCTIwMTQt MDYtMTYgMjM6Mjc6MDcuODc3NzQ5NjE2ICswMjAwCitAQCAtNDA1LDcgKzQwNSw3IEBAIHdoYXRp c19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCiAgICBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlID0g TlVMTDsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogICAgaW50IGZ1bGwgPSAwOwpAQCAtMzM5OCwz MSArMzM3MSwzOSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90eXBlcHJpbnQuYwogICAgaW50IHVz aW5nX2VuYyA9IDA7CiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogICAgc3Ry dWN0IHR5cGVfcHJpbnRfb3B0aW9ucyBmbGFncyA9IGRlZmF1bHRfcHR5cGVfZmxhZ3M7Ci1JbmRl eDogZ2RiLTcuNy4xL2dkYi92YWxhcml0aC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvdmFsYXJpdGguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi92YWxhcml0 aC5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzkxNDQzNTEzICswMjAwCi0rKysgZ2RiLTcuNy4xL2dk Yi92YWxhcml0aC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA2NDQ0MTIyICswMjAwCi1AQCAtMTkw LDE1ICsxOTAsMTUgQEAgdmFsdWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMTwor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE2IDIz OjI3OjA1LjE2NDc0NzA1NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbGFy aXRoLmMJMjAxNC0wNi0xNiAyMzoyNzozOS4xMjQ3NzkyNjUgKzAyMDAKK0BAIC0xOTAsMTIgKzE5 MCwxMyBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPCiAgICAgdG8g ZG91YmxlcywgYnV0IG5vIGxvbmdlciBkb2VzLiAgKi8KICAKICBzdHJ1Y3QgdmFsdWUgKgogLXZh bHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBpbmRl eCwgaW50IGxvd2VyYm91bmQpCi0rdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBMT05HRVNUIGxvd2VyYm91bmQpCisrdmFsdWVfc3Vi c2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LAorKwkJ CSAgTE9OR0VTVCBsb3dlcmJvdW5kKQogIHsKICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKICAgIHN0cnVjdCB0eXBlICplbHRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKIC0g IHVuc2lnbmVkIGludCBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7Ci0tICB1bnNp Z25lZCBpbnQgZWx0X3N0cmlkZQorLSAgdW5zaWduZWQgaW50IGVsdF9vZmZzOwogKyAgVUxPTkdF U1QgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwotKyAgVUxPTkdFU1QgZWx0X3N0 cmlkZQotICAgICA9IChUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5 cGUpKSA9PSAwCi0gICAgICAgID8gZWx0X3NpemUgOiBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lO REVYX1RZUEUgKGFycmF5X3R5cGUpKSk7Ci0tICB1bnNpZ25lZCBpbnQgZWx0X29mZnMgPSBlbHRf c3RyaWRlICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7Ci0rICBVTE9OR0VT VCBlbHRfb2ZmcyA9IGVsdF9zdHJpZGUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXggLSBsb3dlcmJv dW5kKTsKKysgIFVMT05HRVNUIGVsdF9vZmZzOworICAgTE9OR0VTVCBlbHRfc3RyaWRlID0gVFlQ RV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSk7CiAgICBzdHJ1Y3Qg dmFsdWUgKnY7CiAgCi0gICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICghVFlQRV9BUlJBWV9V UFBFUl9CT1VORF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCi1AQCAtNjM1LDcgKzYzNSw3IEBA IHZhbHVlX2NvbmNhdCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QKK0BAIC0yMDQsNyArMjA1 LDkgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorICAgaWYgKFRZ UEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCisgICAgIGVycm9yIChfKCJubyBzdWNoIHZl Y3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIpKTsKKyAKKy0gIGVsdF9vZmZzID0g bG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7CisrICBpZiAoaW5kZXggPCBsb3dl cmJvdW5kKQorKyAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKKysgIGVs dF9vZmZzID0gaW5kZXggLSBsb3dlcmJvdW5kOworIAorICAgaWYgKGVsdF9zdHJpZGUgPiAwKQor ICAgICBlbHRfb2ZmcyAqPSBlbHRfc3RyaWRlOworQEAgLTY2Miw3ICs2NjUsNyBAQCB2YWx1ZV9j b25jYXQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0CiAgICBzdHJ1Y3QgdmFsdWUgKmludmFs MTsKICAgIHN0cnVjdCB2YWx1ZSAqaW52YWwyOwogICAgc3RydWN0IHZhbHVlICpvdXR2YWwgPSBO VUxMOwpAQCAtMzQzMSw3ICszNDEyLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsYXJpdGgu YwogICAgaW50IGNvdW50LCBpZHg7CiAgICBjaGFyICpwdHI7CiAgICBjaGFyIGluY2hhcjsKLUBA IC0xNDg4LDcgKzE0ODgsNyBAQCB2YWx1ZV9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1 Y3QKK0BAIC0xNTE1LDcgKzE1MTgsNyBAQCB2YWx1ZV9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcx LCBzdHJ1Y3QKICBpbnQKICB2YWx1ZV9sb2dpY2FsX25vdCAoc3RydWN0IHZhbHVlICphcmcxKQog IHsKQEAgLTM0NDAsNyArMzQyMSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbGFyaXRoLmMK ICAgIGNvbnN0IGdkYl9ieXRlICpwOwogICAgc3RydWN0IHR5cGUgKnR5cGUxOwogIAotQEAgLTE1 MTksMTEgKzE1MTksMTEgQEAgdmFsdWVfbG9naWNhbF9ub3QgKHN0cnVjdCB2YWx1ZSAqYXJnMSkK K0BAIC0xNTQ2LDExICsxNTQ5LDExIEBAIHZhbHVlX2xvZ2ljYWxfbm90IChzdHJ1Y3QgdmFsdWUg KmFyZzEpCiAgc3RhdGljIGludAogIHZhbHVlX3N0cmNtcCAoc3RydWN0IHZhbHVlICphcmcxLCBz dHJ1Y3QgdmFsdWUgKmFyZzIpCiAgewpAQCAtMzQ1NSwxMCArMzQzNiwxMCBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi92YWxhcml0aC5jCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiAg ICAgIHsKLUluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvdmFsb3BzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIv dmFsb3BzLmMJMjAxNC0wNS0xMiAyMDoyMjowNS40NDQ0NDM5MDQgKzAyMDAKLSsrKyBnZGItNy43 LjEvZ2RiL3ZhbG9wcy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA3NDQ0MTIyICswMjAwCistLS0g Z2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi92YWxvcHMuYwkyMDE0LTA2LTE2IDIzOjI3OjA1 LjE2Nzc0NzA1OCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbG9wcy5jCTIw MTQtMDYtMTYgMjM6Mjc6MDcuODc5NzQ5NjE4ICswMjAwCiBAQCAtNTEsMTEgKzUxLDExIEBAIHN0 YXRpYyBpbnQgdHlwZWNtcCAoaW50IHN0YXRpY3AsIGludCB2YXIKICAJCSAgICBzdHJ1Y3QgZmll bGQgdDFbXSwgc3RydWN0IHZhbHVlICp0MltdKTsKICAKQEAgLTM0NzksMjEgKzM0NjAsMjIgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMKICBzdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1 ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICosCiAtCQkJCQkJICAgICBp bnQsIHN0cnVjdCB0eXBlICosCiArCQkJCQkJICAgICBMT05HRVNULCBzdHJ1Y3QgdHlwZSAqLAot IAkJCQkJCSAgICAgY2hhciAqLAorIAkJCQkJCSAgICAgY29uc3QgY2hhciAqLAogIAkJCQkJCSAg ICAgc3RydWN0IHR5cGUgKiwKICAJCQkJCQkgICAgIGludCwgZW51bSBub3NpZGUpOwotQEAgLTEw MCw4ICsxMDAsOCBAQCBzdGF0aWMgQ09SRV9BRERSIGFsbG9jYXRlX3NwYWNlX2luX2luZmVyCitA QCAtMTAwLDkgKzEwMCw5IEBAIHN0YXRpYyBDT1JFX0FERFIgYWxsb2NhdGVfc3BhY2VfaW5faW5m ZXIKICBzdGF0aWMgc3RydWN0IHZhbHVlICpjYXN0X2ludG9fY29tcGxleCAoc3RydWN0IHR5cGUg Kiwgc3RydWN0IHZhbHVlICopOwogIAotIHN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKmZpbmRfbWV0 aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKiwgY29uc3QgY2hhciAqLAotLQkJCQkJICBpbnQsIHN0 cnVjdCB0eXBlICosIGludCAqLAotLQkJCQkJICBzdHJ1Y3QgdHlwZSAqKiwgaW50ICopOwotKwkJ CQkJICBMT05HRVNULCBzdHJ1Y3QgdHlwZSAqLCBpbnQgKiwKLSsJCQkJCSAgc3RydWN0IHR5cGUg KiosIExPTkdFU1QgKik7Cisgc3RhdGljIHZvaWQgZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZh bHVlICoqLCBjb25zdCBjaGFyICosCistCQkJICAgICAgaW50LCBzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgZm5fZmllbGQgKiosIGludCAqLAorKwkJCSAgICAgIExPTkdFU1QsIHN0cnVjdCB0eXBlICos IHN0cnVjdCBmbl9maWVsZCAqKiwgaW50ICosCisgCQkJICAgICAgVkVDICh4bWV0aG9kX3dvcmtl cl9wdHIpICoqLAorLQkJCSAgICAgIHN0cnVjdCB0eXBlICoqLCBpbnQgKik7CisrCQkJICAgICAg c3RydWN0IHR5cGUgKiosIExPTkdFU1QgKik7CiAgCiAgdm9pZCBfaW5pdGlhbGl6ZV92YWxvcHMg KHZvaWQpOwogIAotQEAgLTE4Niw3ICsxODYsNyBAQCBmaW5kX2Z1bmN0aW9uX2luX2luZmVyaW9y IChjb25zdCBjaGFyICpuCitAQCAtMTg3LDcgKzE4Nyw3IEBAIGZpbmRfZnVuY3Rpb25faW5faW5m ZXJpb3IgKGNvbnN0IGNoYXIgKm4KICAgICBzcGFjZS4gICovCiAgCiAgc3RydWN0IHZhbHVlICoK QEAgLTM1MDIsNyArMzQ4NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgewog ICAgc3RydWN0IG9iamZpbGUgKm9iamY7CiAgICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IGZpbmRfZnVu Y3Rpb25faW5faW5mZXJpb3IgKCJtYWxsb2MiLCAmb2JqZik7Ci1AQCAtMjU5LDcgKzI1OSw4IEBA IHZhbHVlX2Nhc3Rfc3RydWN0cyAoc3RydWN0IHR5cGUgKnR5cGUsIHMKK0BAIC0yNjAsNyArMjYw LDggQEAgdmFsdWVfY2FzdF9zdHJ1Y3RzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgcwogICAgaWYgKFRZ UEVfTkFNRSAodDIpICE9IE5VTEwpCiAgICAgIHsKICAgICAgICAvKiBUcnkgZG93bmNhc3Rpbmcg dXNpbmcgdGhlIHJ1bi10aW1lIHR5cGUgb2YgdGhlIHZhbHVlLiAgKi8KQEAgLTM1MTIsNyArMzQ5 NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgICAgICAgc3RydWN0IHR5cGUg KnJlYWxfdHlwZTsKICAKICAgICAgICByZWFsX3R5cGUgPSB2YWx1ZV9ydHRpX3R5cGUgKHYyLCAm ZnVsbCwgJnRvcCwgJnVzaW5nX2VuYyk7Ci1AQCAtMzk4LDEyICszOTksMTIgQEAgdmFsdWVfY2Fz dCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YQorQEAgLTQwMCwxMiArNDAxLDEyIEBAIHZh bHVlX2Nhc3QgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmEKICAgIGlmIChjb2RlMSA9PSBU WVBFX0NPREVfQVJSQVkpCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7CkBAIC0zNTI3LDcgKzM1MDksNyBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAkgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5k LCBuZXdfbGVuZ3RoOwogIAogIAkgIGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBl LCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQotQEAgLTYzNyw3ICs2MzgsNyBAQCB2YWx1 ZV9yZWludGVycHJldF9jYXN0IChzdHJ1Y3QgdHlwZSAqdHlwCitAQCAtNjM5LDcgKzY0MCw3IEBA IHZhbHVlX3JlaW50ZXJwcmV0X2Nhc3QgKHN0cnVjdCB0eXBlICp0eXAKICBzdGF0aWMgaW50CiAg ZHluYW1pY19jYXN0X2NoZWNrXzEgKHN0cnVjdCB0eXBlICpkZXNpcmVkX3R5cGUsCiAgCQkgICAg ICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTM1MzYsNyArMzUxOCw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCQkgICAgICBDT1JFX0FERFIgYWRkcmVzcywKICAJCSAg ICAgIHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgICAgc3RydWN0IHR5cGUgKnNlYXJjaF90eXBl LAotQEAgLTY0OSw4ICs2NTAsOCBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMSAoc3RydWN0IHR5cGUg KmRlc2lyCitAQCAtNjUxLDggKzY1Miw4IEBAIGR5bmFtaWNfY2FzdF9jaGVja18xIChzdHJ1Y3Qg dHlwZSAqZGVzaXIKICAKICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05fQkFTRUNMQVNTRVMgKHNl YXJjaF90eXBlKSAmJiByZXN1bHRfY291bnQgPCAyOyArK2kpCiAgICAgIHsKQEAgLTM1NDcsNyAr MzUyOSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKGNs YXNzX3R5cGVzX3NhbWVfcCAoZGVzaXJlZF90eXBlLCBUWVBFX0JBU0VDTEFTUyAoc2VhcmNoX3R5 cGUsIGkpKSkKICAJewotQEAgLTY4NCw3ICs2ODUsNyBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMSAo c3RydWN0IHR5cGUgKmRlc2lyCitAQCAtNjg2LDcgKzY4Nyw3IEBAIGR5bmFtaWNfY2FzdF9jaGVj a18xIChzdHJ1Y3QgdHlwZSAqZGVzaXIKICBzdGF0aWMgaW50CiAgZHluYW1pY19jYXN0X2NoZWNr XzIgKHN0cnVjdCB0eXBlICpkZXNpcmVkX3R5cGUsCiAgCQkgICAgICBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKQEAgLTM1NTYsNyArMzUzOCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9w cy5jCiAgCQkgICAgICBDT1JFX0FERFIgYWRkcmVzcywKICAJCSAgICAgIHN0cnVjdCB2YWx1ZSAq dmFsLAogIAkJICAgICAgc3RydWN0IHR5cGUgKnNlYXJjaF90eXBlLAotQEAgLTY5NCw3ICs2OTUs NyBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3RydWN0IHR5cGUgKmRlc2lyCitAQCAtNjk2LDcg KzY5Nyw3IEBAIGR5bmFtaWNfY2FzdF9jaGVja18yIChzdHJ1Y3QgdHlwZSAqZGVzaXIKICAKICAg IGZvciAoaSA9IDA7IGkgPCBUWVBFX05fQkFTRUNMQVNTRVMgKHNlYXJjaF90eXBlKSAmJiByZXN1 bHRfY291bnQgPCAyOyArK2kpCiAgICAgIHsKQEAgLTM1NjUsNyArMzU0Nyw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKCEgQkFTRVRZUEVfVklBX1BVQkxJ QyAoc2VhcmNoX3R5cGUsIGkpKQogIAljb250aW51ZTsKLUBAIC03MjUsNyArNzI2LDggQEAgZHlu YW1pY19jYXN0X2NoZWNrXzIgKHN0cnVjdCB0eXBlICpkZXNpcgorQEAgLTcyNyw3ICs3MjgsOCBA QCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3RydWN0IHR5cGUgKmRlc2lyCiAgc3RydWN0IHZhbHVl ICoKICB2YWx1ZV9keW5hbWljX2Nhc3QgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUg KmFyZykKICB7CkBAIC0zNTc1LDcgKzM1NTcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxv cHMuYwogICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSBjaGVja190eXBlZGVmICh0eXBl KTsKICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZykpOwogICAgc3RydWN0IHR5cGUgKmNsYXNzX3R5cGUsICpydHRpX3R5cGU7Ci1AQCAtMTAw NSw3ICsxMDA3LDcgQEAgdmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQQor QEAgLTk1OCw3ICs5NjAsNyBAQCB2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09S RV9BCiAgfQogIAogIHZvaWQKQEAgLTM1ODQsNyArMzU2Niw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3ZhbG9wcy5jCiAgCQkgICBpbnQgc3RhY2ssIENPUkVfQUREUiBtZW1hZGRyLAogIAkJICAg Z2RiX2J5dGUgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKICB7Ci1AQCAtMTE1NSw3ICsxMTU3LDcg QEAgdmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YworQEAgLTEwNTgsNyAr MTA2MCw3IEBAIHZhbHVlX2Fzc2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwgc3RydWMKICAgICAg ICB7CiAgCWNvbnN0IGdkYl9ieXRlICpkZXN0X2J1ZmZlcjsKICAJQ09SRV9BRERSIGNoYW5nZWRf YWRkcjsKQEAgLTM1OTMsNyArMzU3NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5j CiAgICAgICAgICBnZGJfYnl0ZSBidWZmZXJbc2l6ZW9mIChMT05HRVNUKV07CiAgCiAgCWlmICh2 YWx1ZV9iaXRzaXplICh0b3ZhbCkpCi1AQCAtMTIzNCw3ICsxMjM2LDcgQEAgdmFsdWVfYXNzaWdu IChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YworQEAgLTExMzcsNyArMTEzOSw3IEBAIHZhbHVl X2Fzc2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwgc3RydWMKICAJICAgIGlmICh2YWx1ZV9iaXRz aXplICh0b3ZhbCkpCiAgCSAgICAgIHsKICAJCXN0cnVjdCB2YWx1ZSAqcGFyZW50ID0gdmFsdWVf cGFyZW50ICh0b3ZhbCk7CkBAIC0zNjAyLDcgKzM1ODQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi92YWxvcHMuYwogIAkJaW50IGNoYW5nZWRfbGVuOwogIAkJZ2RiX2J5dGUgYnVmZmVyW3NpemVv ZiAoTE9OR0VTVCldOwogIAkJaW50IG9wdGltLCB1bmF2YWlsOwotQEAgLTE3MTUsNyArMTcxNyw3 IEBAIHZhbHVlX2FycmF5IChpbnQgbG93Ym91bmQsIGludCBoaWdoYm91bmQKK0BAIC0xNjA1LDcg KzE2MDcsNyBAQCB2YWx1ZV9hcnJheSAoaW50IGxvd2JvdW5kLCBpbnQgaGlnaGJvdW5kCiAgewog ICAgaW50IG5lbGVtOwogICAgaW50IGlkeDsKQEAgLTM2MTEsNyArMzU5Myw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgICBzdHJ1Y3QgdmFsdWUgKnZhbDsKICAgIHN0cnVjdCB0 eXBlICphcnJheXR5cGU7CiAgCi1AQCAtMTg5MCw3ICsxODkyLDcgQEAgdHlwZWNtcCAoaW50IHN0 YXRpY3AsIGludCB2YXJhcmdzLCBpbnQgbgorQEAgLTE3ODAsNyArMTc4Miw3IEBAIHR5cGVjbXAg KGludCBzdGF0aWNwLCBpbnQgdmFyYXJncywgaW50IG4KICAKICBzdGF0aWMgdm9pZAogIHVwZGF0 ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXN1bHRfcHRyLCBzdHJ1Y3QgdmFsdWUg KnYsCkBAIC0zNjIwLDcgKzM2MDIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwog IAkJICAgICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgaWYg KHYgIT0gTlVMTCkKLUBAIC0xOTE0LDEwICsxOTE2LDEwIEBAIHVwZGF0ZV9zZWFyY2hfcmVzdWx0 IChzdHJ1Y3QgdmFsdWUgKipyZXMKK0BAIC0xODA0LDEwICsxODA2LDEwIEBAIHVwZGF0ZV9zZWFy Y2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXMKICAgICBsb29rdXAgaXMgYW1iaWd1b3VzLiAg Ki8KICAKICBzdGF0aWMgdm9pZApAQCAtMzYzMyw3ICszNjE1LDcgQEAgSW5kZXg6IGdkYi03Ljcu MS9nZGIvdmFsb3BzLmMKICAJCQlzdHJ1Y3QgdHlwZSAqb3V0ZXJtb3N0X3R5cGUpCiAgewogICAg aW50IGk7Ci1AQCAtMTk2Niw3ICsxOTY4LDcgQEAgZG9fc2VhcmNoX3N0cnVjdF9maWVsZCAoY29u c3QgY2hhciAqbmFtZQorQEAgLTE4NTYsNyArMTg1OCw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmll bGQgKGNvbnN0IGNoYXIgKm5hbWUKICAJCSAgIDx2YXJpYW50IGZpZWxkPi4gICovCiAgCiAgCQlz dHJ1Y3QgdmFsdWUgKnYgPSBOVUxMOwpAQCAtMzY0Miw3ICszNjI0LDcgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvdmFsb3BzLmMKICAKICAJCS8qIFRoaXMgaXMgcHJldHR5IGdyb3NzLiAgSW4gRysr LCB0aGUgb2Zmc2V0IGluIGFuCiAgCQkgICBhbm9ueW1vdXMgdW5pb24gaXMgcmVsYXRpdmUgdG8g dGhlIGJlZ2lubmluZyBvZiB0aGUKLUBAIC0yMDA1LDcgKzIwMDcsNyBAQCBkb19zZWFyY2hfc3Ry dWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lCitAQCAtMTg5NSw3ICsxODk3LDcgQEAgZG9fc2Vh cmNoX3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQogIAkJCSAgICAgJiYgKHN0cmNtcF9p dyAobmFtZSwgCiAgCQkJCQkgICAgVFlQRV9CQVNFQ0xBU1NfTkFNRSAodHlwZSwgCiAgCQkJCQkJ CQkgaSkpID09IDApKTsKQEAgLTM2NTEsNyArMzYzMyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0eXBlLCBpKSkK ICAJewotQEAgLTIwNzgsMTEgKzIwODAsMTEgQEAgZG9fc2VhcmNoX3N0cnVjdF9maWVsZCAoY29u c3QgY2hhciAqbmFtZQorQEAgLTE5NjgsMTEgKzE5NzAsMTEgQEAgZG9fc2VhcmNoX3N0cnVjdF9m aWVsZCAoY29uc3QgY2hhciAqbmFtZQogICAgIGZpZWxkcywgbG9vayBmb3IgYSBiYXNlY2xhc3Mg bmFtZWQgTkFNRS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0zNjY1LDcgKzM2 NDcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAogICAgZG9fc2VhcmNoX3N0 cnVjdF9maWVsZCAobmFtZSwgYXJnMSwgb2Zmc2V0LCB0eXBlLCBsb29raW5nX2Zvcl9iYXNlY2xh c3MsCiAgCQkJICAmcmVzdWx0LCAmYm9mZnNldCwgdHlwZSk7Ci1AQCAtMjA5OSw3ICsyMTAxLDcg QEAgc2VhcmNoX3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAqbmFtZSwgcworQEAgLTE5ODksNyAr MTk5MSw3IEBAIHNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUsIHMKICAKICBz dGF0aWMgc3RydWN0IHZhbHVlICoKICBzZWFyY2hfc3RydWN0X21ldGhvZCAoY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IHZhbHVlICoqYXJnMXAsCkBAIC0zNjc0LDcgKzM2NTYsNyBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAkJICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3AsIHN0 cnVjdCB0eXBlICp0eXBlKQogIHsKICAgIGludCBpOwotQEAgLTIxNjMsOCArMjE2NSw4IEBAIHNl YXJjaF9zdHJ1Y3RfbWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTIwNTMsOCArMjA1NSw4 IEBAIHNlYXJjaF9zdHJ1Y3RfbWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAogIAogICAgZm9yIChp ID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7IGkgPj0gMDsgaS0tKQogICAgICB7CkBA IC0zNjg1LDE5ICszNjY3LDIxIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCiAg ICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0eXBlLCBpKSkKICAJewotQEAgLTIzOTEs OCArMjM5Myw4IEBAIHZhbHVlX3N0cnVjdF9lbHRfYml0cG9zIChzdHJ1Y3QgdmFsdWUgKioKK0BA IC0yMjg5LDEwICsyMjkxLDEwIEBAIHZhbHVlX3N0cnVjdF9lbHRfYml0cG9zIChzdHJ1Y3QgdmFs dWUgKioKICAKLSBzdGF0aWMgc3RydWN0IGZuX2ZpZWxkICoKKyBzdGF0aWMgdm9pZAogIGZpbmRf bWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKLS0J CSAgaW50IG9mZnNldCwgc3RydWN0IHR5cGUgKnR5cGUsIGludCAqbnVtX2ZucywKKy0JCSAgaW50 IG9mZnNldCwgc3RydWN0IHR5cGUgKnR5cGUsCisrCQkgIExPTkdFU1Qgb2Zmc2V0LCBzdHJ1Y3Qg dHlwZSAqdHlwZSwKKyAJCSAgc3RydWN0IGZuX2ZpZWxkICoqZm5fbGlzdCwgaW50ICpudW1fZm5z LAorIAkJICBWRUMgKHhtZXRob2Rfd29ya2VyX3B0cikgKip4bV93b3JrZXJfdmVjLAogLQkJICBz dHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBpbnQgKmJvZmZzZXQpCi0rCQkgIExPTkdFU1Qgb2Zmc2V0 LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50ICpudW1fZm5zLAogKwkJICBzdHJ1Y3QgdHlwZSAqKmJh c2V0eXBlLCBMT05HRVNUICpib2Zmc2V0KQogIHsKICAgIGludCBpOwotICAgc3RydWN0IGZuX2Zp ZWxkICpmOwotQEAgLTI0MjUsNyArMjQyNyw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2 YWx1ZSAqKmFyZ3AsIGMKLSAgIC8qIE5vdCBmb3VuZCBpbiBvYmplY3QsIGNoZWNrIGluIGJhc2Ug c3Vib2JqZWN0cy4gICovCisgICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBOVUxMOworQEAgLTIzNDks NyArMjM1MSw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGMKKyAg ICAgIGV4dGVuc2lvbiBtZXRob2RzLiAgKi8KICAgIGZvciAoaSA9IFRZUEVfTl9CQVNFQ0xBU1NF UyAodHlwZSkgLSAxOyBpID49IDA7IGktLSkKICAgICAgewogLSAgICAgIGludCBiYXNlX29mZnNl dDsKQEAgLTM3MDUsMTYgKzM2ODksMTYgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMK ICAKICAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUsIGkpKQogIAl7Ci1AQCAt MjQ2MSw3ICsyNDYzLDcgQEAgZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqYXJncCwg YwotIHN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKgotIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xp c3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKLSAJCQkgICAgICBp bnQgb2Zmc2V0LCBpbnQgKm51bV9mbnMsIAorQEAgLTIzOTIsNyArMjM5NCw3IEBAIHZhbHVlX2Zp bmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgZm5fZmllbGQgKipmbl9saXN0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqbnVtX2ZucywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBWRUMgKHhtZXRob2Rfd29ya2VyX3B0cikgKip4bV93b3JrZXJfdmVjLAogLQkJ CSAgICAgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9mZnNldCkKICsJCQkgICAgICBz dHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBMT05HRVNUICpib2Zmc2V0KQogIHsKICAgIHN0cnVjdCB0 eXBlICp0OwogIAotQEAgLTI1NTEsNyArMjU1Myw3IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0 cnVjdCB2YWx1ZSAqKmFyZ3MKK0BAIC0yNDk2LDcgKzI0OTgsNyBAQCBmaW5kX292ZXJsb2FkX21h dGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCiAgICAvKiBOdW1iZXIgb2Ygb3ZlcmxvYWRlZCBpbnN0 YW5jZXMgYmVpbmcgY29uc2lkZXJlZC4gICovCiAgICBpbnQgbnVtX2ZucyA9IDA7CiAgICBzdHJ1 Y3QgdHlwZSAqYmFzZXR5cGUgPSBOVUxMOwpAQCAtMzcyMywxNiArMzcwNywxNiBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAogICAgc3RydWN0IGNsZWFudXAgKmFsbF9jbGVhbnVw cyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKICAKLUBAIC0zMjIxLDcgKzMy MjMsNyBAQCBjb21wYXJlX3BhcmFtZXRlcnMgKHN0cnVjdCB0eXBlICp0MSwgc3RyCitAQCAtMzMw Nyw3ICszMzA5LDcgQEAgY29tcGFyZV9wYXJhbWV0ZXJzIChzdHJ1Y3QgdHlwZSAqdDEsIHN0cgog ICAgIHRoZSBmb3JtICJET01BSU46Ok5BTUUiLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVl ICoKIC12YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICpkb21haW4s IGludCBvZmZzZXQsCiArdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdHlw ZSAqZG9tYWluLCBMT05HRVNUIG9mZnNldCwKLSAJCQkJc3RydWN0IHR5cGUgKmN1cnR5cGUsIGNo YXIgKm5hbWUsCisgCQkJCXN0cnVjdCB0eXBlICpjdXJ0eXBlLCBjb25zdCBjaGFyICpuYW1lLAog IAkJCQlzdHJ1Y3QgdHlwZSAqaW50eXBlLCAKICAJCQkJaW50IHdhbnRfYWRkcmVzcywKLUBAIC0z MjU1LDcgKzMyNTcsNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0 CitAQCAtMzM0MSw3ICszMzQzLDcgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChz dHJ1Y3QgdAogIAkgIGlmICh3YW50X2FkZHJlc3MpCiAgCSAgICByZXR1cm4gdmFsdWVfZnJvbV9s b25nZXN0CiAgCSAgICAgIChsb29rdXBfbWVtYmVycHRyX3R5cGUgKFRZUEVfRklFTERfVFlQRSAo dCwgaSksIGRvbWFpbiksCkBAIC0zNzQxLDcgKzM3MjUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi92YWxvcHMuYwogIAkgIGVsc2UgaWYgKG5vc2lkZSAhPSBFVkFMX05PUk1BTCkKICAJICAgIHJl dHVybiBhbGxvY2F0ZV92YWx1ZSAoVFlQRV9GSUVMRF9UWVBFICh0LCBpKSk7CiAgCSAgZWxzZQot QEAgLTM0MjMsNyArMzQyNSw3IEBAIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3JlZmVyZW5jZSAoc3Ry dWN0IHQKK0BAIC0zNTA5LDcgKzM1MTEsNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVu Y2UgKHN0cnVjdCB0CiAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHQpIC0gMTsgaSA+ PSAwOyBpLS0pCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdmFsdWUgKnY7CkBAIC0zNzUwLDcgKzM3 MzQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAogICAgICAgIGlmIChCQVNF VFlQRV9WSUFfVklSVFVBTCAodCwgaSkpCiAgCWJhc2Vfb2Zmc2V0ID0gMDsKLUBAIC0zNTEzLDcg KzM1MTUsNyBAQCB2YWx1ZV9tYXliZV9uYW1lc3BhY2VfZWx0IChjb25zdCBzdHJ1Y3QKK0BAIC0z NTk5LDcgKzM2MDEsNyBAQCB2YWx1ZV9tYXliZV9uYW1lc3BhY2VfZWx0IChjb25zdCBzdHJ1Y3QK ICAKICBzdHJ1Y3QgdHlwZSAqCiAgdmFsdWVfcnR0aV9pbmRpcmVjdF90eXBlIChzdHJ1Y3QgdmFs dWUgKnYsIGludCAqZnVsbCwgCkBAIC0zNzU5LDcgKzM3NDMsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi92YWxvcHMuYwogIHsKICAgIHN0cnVjdCB2YWx1ZSAqdGFyZ2V0OwogICAgc3RydWN0IHR5 cGUgKnR5cGUsICpyZWFsX3R5cGUsICp0YXJnZXRfdHlwZTsKLUBAIC0zNTYzLDEyICszNTY1LDEy IEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0IHZhbHVlICoKK0BAIC0zNjQ5LDEy ICszNjUxLDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0IHZhbHVlICoKICBz dHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2Z1bGxfb2JqZWN0IChzdHJ1Y3QgdmFsdWUgKmFyZ3AsIAog IAkJICAgc3RydWN0IHR5cGUgKnJ0eXBlLCAKQEAgLTM3NzQsMTAgKzM3NTgsMTAgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMKICAgIGludCB1c2luZ19lbmMgPSAwOwogICAgc3RydWN0 IHZhbHVlICpuZXdfdmFsOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYworSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy43LjEub3JpZy9nZGIvdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA0Ljc5MjQ0MzUx MyArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1 LjgwNzQ0NDEyMiArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFscHJp bnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE2ODc0NzA1OSArMDIwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44Nzk3NDk2MTggKzAy MDAKIEBAIC0zMDIsNyArMzAyLDcgQEAgdmFsX3ByaW50X3NjYWxhcl90eXBlX3AgKHN0cnVjdCB0 eXBlICp0eQogIGludAogIHZhbHByaW50X2NoZWNrX3ZhbGlkaXR5IChzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLApAQCAtMzc4Nyw3ICszNzcxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJp bnQuYwogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBDSEVDS19UWVBFREVG ICh0eXBlKTsKLUBAIC0zNzUsNyArMzc1LDcgQEAgdmFsX3ByaW50X2ludmFsaWRfYWRkcmVzcyAo c3RydWN0IHVpX2ZpbAorQEAgLTM5OSw3ICszOTksNyBAQCB2YWxfcHJpbnRfbm90X2Fzc29jaWF0 ZWQgKHN0cnVjdCB1aV9maWxlCiAgCiAgdm9pZAogIGdlbmVyaWNfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zNzk2LDcgKzM3ODAsNyBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxwcmludC5jCiAgCQkgICBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxf dmFsdWUsCiAgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywK LUBAIC03MzcsNyArNzM3LDcgQEAgZ2VuZXJpY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBl LCBjbworQEAgLTc2MSw3ICs3NjEsNyBAQCBnZW5lcmljX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvCiAgICAgUkVDVVJTRS4gICovCiAgCiAgdm9pZApAQCAtMzgwNSw3ICszNzg5LDcg QEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwogIAkgICBDT1JFX0FERFIgYWRkcmVz cywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCSAgIGNvbnN0IHN0cnVj dCB2YWx1ZSAqdmFsLAogIAkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucywKLUBAIC05NTgsNyArOTU4LDcgQEAgdmFsX3ByaW50X3R5cGVfY29kZV9mbGFncyAoc3Ry dWN0IHR5cGUgKgorQEAgLTk5OSw3ICs5OTksNyBAQCB2YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdz IChzdHJ1Y3QgdHlwZSAqCiAgCiAgdm9pZAogIHZhbF9wcmludF9zY2FsYXJfZm9ybWF0dGVkIChz dHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTM4MTQsNyArMzc5OCw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3ZhbHByaW50LmMKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkJICAg IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAogIAkJCSAgICBpbnQg c2l6ZSwKLUBAIC0xNDk5LDcgKzE0OTksNyBAQCBwcmludF9kZWNpbWFsX2NoYXJzIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyCitAQCAtMTU0MCw3ICsxNTQwLDcgQEAgcHJpbnRfZGVjaW1hbF9jaGFycyAo c3RydWN0IHVpX2ZpbGUgKnN0cgogIAogIHZvaWQKICBwcmludF9oZXhfY2hhcnMgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMzgyMyw3ICszODA3 LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwogIHsKICAgIGNvbnN0IGdkYl9i eXRlICpwOwogIAotQEAgLTE2MTYsMjMgKzE2MTYsMjMgQEAgbWF5YmVfcHJpbnRfYXJyYXlfaW5k ZXggKHN0cnVjdCB0eXBlICppbgorQEAgLTE2NTcsMjIgKzE2NTcsMjIgQEAgbWF5YmVfcHJpbnRf YXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICppbgogIAogIHZvaWQKICB2YWxfcHJpbnRfYXJyYXlf ZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMzgzOSw3ICszODIzLDYgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwogICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVk ID0gMDsKIC0gIHVuc2lnbmVkIGxlbjsKICsgIFVMT05HRVNUIGxlbjsKLSAgIHN0cnVjdCB0eXBl ICpzYXZlZF90eXBlID0gdHlwZTsKICAgIHN0cnVjdCB0eXBlICplbHR0eXBlLCAqaW5kZXhfdHlw ZTsKIC0gIHVuc2lnbmVkIGVsdGxlbjsKICsgIFVMT05HRVNUIGVsdGxlbjsKQEAgLTM4NTEsOSAr MzgzNCw5IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHByaW50LmMKIC0gIHVuc2lnbmVkIGlu dCByZXBzOwogKyAgVUxPTkdFU1QgcmVwczsKICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2Jv dW5kOwotICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0gICBDT1JFX0FERFIgc2F2ZWRfYWRk cmVzcyA9IGFkZHJlc3M7Ci1AQCAtMTcyNyw3ICsxNzI3LDcgQEAgdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorIAorICAgZWx0dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpOworQEAgLTE3NDMsNyArMTc0Myw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAo c3RydWN0IHR5cGUgKnQKICAJCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlICsgMSwgdmFs LCBvcHRpb25zLAogIAkJICAgICBjdXJyZW50X2xhbmd1YWdlKTsKICAJICBhbm5vdGF0ZV9lbHRf cmVwIChyZXBzKTsKQEAgLTM4NjIsNyArMzg0NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Zh bHByaW50LmMKICAJICBhbm5vdGF0ZV9lbHRfcmVwX2VuZCAoKTsKICAKICAJICBpID0gcmVwMSAt IDE7Ci1AQCAtMjM4Miw3ICsyMzgyLDcgQEAgcHJpbnRfY29udmVydGVkX2NoYXJzX3RvX29ic3Rh Y2sgKHN0cnVjdAorQEAgLTI0MDAsNyArMjQwMCw3IEBAIHByaW50X2NvbnZlcnRlZF9jaGFyc190 b19vYnN0YWNrIChzdHJ1Y3QKICAKICB2b2lkCiAgZ2VuZXJpY19wcmludHN0ciAoc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUsIApAQCAtMzg3MSwxMCArMzg1NCwxMCBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxwcmludC5jCiAgCQkgIGNvbnN0IGNoYXIgKmVuY29k aW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkgIGludCBxdW90ZV9jaGFyLCBpbnQgY19zdHls ZV90ZXJtaW5hdG9yLAogIAkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucykKLUluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHByaW50LmgKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi92YWxwcmludC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcv Z2RiL3ZhbHByaW50LmgJMjAxNC0wMS0wOCAxMDoyMzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy43LjEvZ2RiL3ZhbHByaW50LmgJMjAxNC0wNS0xMiAyMDoyMjowNS44MDg0NDQxMjMgKzAy MDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxNC0wNi0x NiAyMzoyNzowNS4xNjg3NDcwNTkgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92 YWxwcmludC5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc5NzQ5NjE4ICswMjAwCiBAQCAtMTE1LDEx ICsxMTUsMTEgQEAgZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LAogIAkJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwpAQCAtMzky NSwxMCArMzkwOCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxwcmludC5oCiAgCQkJICAg ICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGludCBmb3JjZV9lbGxpcHNlcywKICAJCQkgICAgICBp bnQgcXVvdGVfY2hhciwgaW50IGNfc3R5bGVfdGVybWluYXRvciwKICAJCQkgICAgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucyk7Ci1JbmRleDogZ2RiLTcuNy4xL2dk Yi92YWx1ZS5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsdWUuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDUtMTIgMjA6MjI6MDUu NTM0NDQzOTU4ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCTIwMTQtMDUtMTIgMjA6 MjI6MDUuODA4NDQ0MTIzICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi92 YWx1ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTcxNzQ3MDYyICswMjAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdmFsdWUuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg4MDc0OTYxOSArMDIw MAogQEAgLTY5LDEwICs2OSwxMCBAQCBzdHJ1Y3QgaW50ZXJuYWxfZnVuY3Rpb24KICBzdHJ1Y3Qg cmFuZ2UKICB7CkBAIC0zOTYyLDcgKzM5NDUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1 ZS5jCiAgewogICAgcmFuZ2VfcyB3aGF0OwogICAgaW50IGk7Ci1AQCAtMjQ2LDcgKzI0Niw3IEBA IHN0cnVjdCB2YWx1ZQorQEAgLTI1Miw3ICsyNTIsNyBAQCBzdHJ1Y3QgdmFsdWUKICAgICAgIGx2 YWwgPT0gbHZhbF9yZWdpc3RlciwgdGhpcyBpcyBhIGZ1cnRoZXIgb2Zmc2V0IGZyb20KICAgICAg IGxvY2F0aW9uLmFkZHJlc3Mgd2l0aGluIHRoZSByZWdpc3RlcnMgc3RydWN0dXJlLiAgTm90ZSBh bHNvIHRoZQogICAgICAgbWVtYmVyIGVtYmVkZGVkX29mZnNldCBiZWxvdy4gICovCkBAIC0zOTcx LDcgKzM5NTQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgCiAgICAvKiBPbmx5 IHVzZWQgZm9yIGJpdGZpZWxkczsgbnVtYmVyIG9mIGJpdHMgY29udGFpbmVkIGluIHRoZW0uICAq LwogICAgaW50IGJpdHNpemU7Ci1AQCAtMzE2LDggKzMxNiw4IEBAIHN0cnVjdCB2YWx1ZQorQEAg LTMyMiw4ICszMjIsOCBAQCBzdHJ1Y3QgdmFsdWUKICAgICAgIGB0eXBlJywgYW5kIGBlbWJlZGRl ZF9vZmZzZXQnIGlzIHplcm8sIHNvIGV2ZXJ5dGhpbmcgd29ya3MKICAgICAgIG5vcm1hbGx5LiAg Ki8KICAgIHN0cnVjdCB0eXBlICplbmNsb3NpbmdfdHlwZTsKQEAgLTM5ODIsNyArMzk2NSw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICAKICAgIC8qIFZhbHVlcyBhcmUgc3RvcmVk IGluIGEgY2hhaW4sIHNvIHRoYXQgdGhleSBjYW4gYmUgZGVsZXRlZCBlYXNpbHkKICAgICAgIG92 ZXIgY2FsbHMgdG8gdGhlIGluZmVyaW9yLiAgVmFsdWVzIGFzc2lnbmVkIHRvIGludGVybmFsCi1A QCAtMzQ4LDcgKzM0OCw4IEBAIHZhbHVlX2JpdHNfYXZhaWxhYmxlIChjb25zdCBzdHJ1Y3QgdmFs dWUKK0BAIC0zNTEsNyArMzUxLDggQEAgdmFsdWVfYml0c19hdmFpbGFibGUgKGNvbnN0IHN0cnVj dCB2YWx1ZQogIH0KICAKICBpbnQKQEAgLTM5OTIsNyArMzk3NSw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICByZXR1cm4gdmFsdWVfYml0c19hdmFpbGFibGUgKHZhbHVl LAogIAkJCSAgICAgICBvZmZzZXQgKiBUQVJHRVRfQ0hBUl9CSVQsCi1AQCAtNTU1LDcgKzU1Niw4 IEBAIG1hcmtfdmFsdWVfYml0c191bmF2YWlsYWJsZSAoc3RydWN0IHZhbHUKK0BAIC01NTgsNyAr NTU5LDggQEAgbWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlIChzdHJ1Y3QgdmFsdQogIH0KICAK ICB2b2lkCkBAIC00MDAyLDcgKzM5ODUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5j CiAgewogICAgbWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlICh2YWx1ZSwKICAJCQkgICAgICAg b2Zmc2V0ICogVEFSR0VUX0NIQVJfQklULAotQEAgLTU2OSw3ICs1NzEsNyBAQCBtYXJrX3ZhbHVl X2J5dGVzX3VuYXZhaWxhYmxlIChzdHJ1Y3QgdmFsCitAQCAtNTcyLDcgKzU3NCw3IEBAIG1hcmtf dmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHN0cnVjdCB2YWwKICAKICBzdGF0aWMgaW50CiAgZmlu ZF9maXJzdF9yYW5nZV9vdmVybGFwIChWRUMocmFuZ2VfcykgKnJhbmdlcywgaW50IHBvcywKQEAg LTQwMTEsNyArMzk5NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICBy YW5nZV9zICpyOwogICAgaW50IGk7Ci1AQCAtNzYwLDkgKzc2Miw5IEBAIHZhbHVlX2F2YWlsYWJs ZV9jb250ZW50c19iaXRzX2VxIChjb25zdAorQEAgLTc2Myw5ICs3NjUsOSBAQCB2YWx1ZV9hdmFp bGFibGVfY29udGVudHNfYml0c19lcSAoY29uc3QKICB9CiAgCiAgaW50CkBAIC00MDI0LDcgKzQw MDcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewogICAgcmV0dXJuIHZhbHVl X2F2YWlsYWJsZV9jb250ZW50c19iaXRzX2VxICh2YWwxLCBvZmZzZXQxICogVEFSR0VUX0NIQVJf QklULAogIAkJCQkJICAgdmFsMiwgb2Zmc2V0MiAqIFRBUkdFVF9DSEFSX0JJVCwKLUBAIC05Mjcs MTMgKzkyOSwxMyBAQCBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUKK0BA IC05MzAsMTMgKzkzMiwxMyBAQCBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFs dWUKICAgIHZhbHVlLT50eXBlID0gdHlwZTsKICB9CiAgCkBAIC00MDQwLDcgKzQwMjMsNyBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewogICAgdmFsdWUtPm9mZnNldCA9IG9mZnNl dDsKICB9Ci1AQCAtMTEwMyw4ICsxMTA1LDkgQEAgdmFsdWVfY29udGVudHNfYWxsIChzdHJ1Y3Qg dmFsdWUgKnZhbHVlKQorQEAgLTExMDYsOCArMTEwOCw5IEBAIHZhbHVlX2NvbnRlbnRzX2FsbCAo c3RydWN0IHZhbHVlICp2YWx1ZSkKICAgICBEU1RfT0ZGU0VUK0xFTkdUSCkgcmFuZ2UgYXJlIHdo b2xseSBhdmFpbGFibGUuICAqLwogIAogIHZvaWQKQEAgLTQwNTIsNyArNDAzNSw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICByYW5nZV9zICpyOwogICAgaW50IGk7Ci1A QCAtMTE1Niw4ICsxMTU5LDggQEAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHN0cnVjdCB2YWx1 ZSAqZAorQEAgLTExNTksOCArMTE2Miw4IEBAIHZhbHVlX2NvbnRlbnRzX2NvcHlfcmF3IChzdHJ1 Y3QgdmFsdWUgKmQKICAgICBEU1RfT0ZGU0VUK0xFTkdUSCkgcmFuZ2UgYXJlIHdob2xseSBhdmFp bGFibGUuICAqLwogIAogIHZvaWQKQEAgLTQwNjMsNyArNDA0Niw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICByZXF1aXJlX25vdF9vcHRpbWl6ZWRfb3V0IChzcmMpOwog IAotQEAgLTEyNjIsNyArMTI2NSw3IEBAIHZhbHVlX2VudGlyZWx5X29wdGltaXplZF9vdXQgKGNv bnN0IHN0cnUKK0BAIC0xMjY1LDcgKzEyNjgsNyBAQCB2YWx1ZV9lbnRpcmVseV9vcHRpbWl6ZWRf b3V0IChjb25zdCBzdHJ1CiAgfQogIAogIGludApAQCAtNDA3Miw3ICs0MDU1LDcgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvdmFsdWUuYwogIHsKICAgIGlmICghdmFsdWUtPm9wdGltaXplZF9vdXQp CiAgICAgIHJldHVybiAxOwotQEAgLTEyNzUsNyArMTI3OCw3IEBAIHZhbHVlX2JpdHNfdmFsaWQg KGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmEKK0BAIC0xMjc4LDcgKzEyODEsNyBAQCB2YWx1ZV9iaXRz X3ZhbGlkIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhCiAgCiAgaW50CiAgdmFsdWVfYml0c19zeW50 aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAgLTQwODEsNyArNDA2 NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICBpZiAodmFsdWUtPmx2 YWwgIT0gbHZhbF9jb21wdXRlZAogICAgICAgIHx8ICF2YWx1ZS0+bG9jYXRpb24uY29tcHV0ZWQu ZnVuY3MtPmNoZWNrX3N5bnRoZXRpY19wb2ludGVyKQotQEAgLTEyODUsMjYgKzEyODgsMjYgQEAg dmFsdWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydQorQEAgLTEyODgsMjYgKzEy OTEsMjYgQEAgdmFsdWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydQogIAkJCQkJ CQkJICBsZW5ndGgpOwogIH0KICAKQEAgLTQxMTIsNyArNDA5NSw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICB2YWx1ZS0+cG9pbnRlZF90b19vZmZzZXQgPSB2YWw7CiAg fQotQEAgLTIxNTcsNyArMjE2MCw3IEBAIGdldF9pbnRlcm5hbHZhcl9mdW5jdGlvbiAoc3RydWN0 IGludGVybmEKK0BAIC0yMTU0LDcgKzIxNTcsNyBAQCBnZXRfaW50ZXJuYWx2YXJfZnVuY3Rpb24g KHN0cnVjdCBpbnRlcm5hCiAgfQogIAogIHZvaWQKQEAgLTQxMjEsNyArNDEwNCw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICAJCQkgICBpbnQgYml0c2l6ZSwgc3RydWN0IHZhbHVl ICpuZXd2YWwpCiAgewogICAgZ2RiX2J5dGUgKmFkZHI7Ci1AQCAtMjg2Myw3ICsyODY2LDcgQEAg c2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKgorQEAgLTI4NjAsNyArMjg2 Myw3IEBAIHNldF92YWx1ZV9lbmNsb3NpbmdfdHlwZSAoc3RydWN0IHZhbHVlICoKICAgICBGSUVM RE5PIHNheXMgd2hpY2ggZmllbGQuICAqLwogIAogIHN0cnVjdCB2YWx1ZSAqCkBAIC00MTMwLDcg KzQxMTMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgCQkgICAgICAgaW50IGZp ZWxkbm8sIHN0cnVjdCB0eXBlICphcmdfdHlwZSkKICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnY7Ci1A QCAtMjg5MSw3ICsyODk0LDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUg KmFyZworQEAgLTI4ODgsNyArMjg5MSw3IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0 IHZhbHVlICphcmcKICAJIGJpdC4gIEFzc3VtZSB0aGF0IHRoZSBhZGRyZXNzLCBvZmZzZXQsIGFu ZCBlbWJlZGRlZCBvZmZzZXQKICAJIGFyZSBzdWZmaWNpZW50bHkgYWxpZ25lZC4gICovCiAgCkBA IC00MTM5LDcgKzQxMjIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgICAgICAg aW50IGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICogODsKICAKICAgICAg ICBpZiAoYXJnMS0+b3B0aW1pemVkX291dCkKLUBAIC0yOTE4LDcgKzI5MjEsNyBAQCB2YWx1ZV9w cmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnCitAQCAtMjkxNSw3ICsyOTE4LDcgQEAg dmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZwogICAgICAgIC8qIFRoaXMg ZmllbGQgaXMgYWN0dWFsbHkgYSBiYXNlIHN1Ym9iamVjdCwgc28gcHJlc2VydmUgdGhlCiAgCSBl bnRpcmUgb2JqZWN0J3MgY29udGVudHMgZm9yIGxhdGVyIHJlZmVyZW5jZXMgdG8gdmlydHVhbAog IAkgYmFzZXMsIGV0Yy4gICovCkBAIC00MTQ4LDcgKzQxMzEsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi92YWx1ZS5jCiAgCiAgICAgICAgLyogTGF6eSByZWdpc3RlciB2YWx1ZXMgd2l0aCBvZmZz ZXRzIGFyZSBub3Qgc3VwcG9ydGVkLiAgKi8KICAgICAgICBpZiAoVkFMVUVfTFZBTCAoYXJnMSkg PT0gbHZhbF9yZWdpc3RlciAmJiB2YWx1ZV9sYXp5IChhcmcxKSkKLUBAIC0zMDA4LDcgKzMwMTEs NyBAQCB2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgZmllCitAQCAtMzAxNCw3 ICszMDE3LDcgQEAgdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IGZpZQogIHN0 cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmFyZzFwLCBzdHJ1 Y3QgZm5fZmllbGQgKmYsCiAgCQlpbnQgaiwgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC00MTU3LDcg KzQxNDAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewogICAgc3RydWN0IHZh bHVlICp2OwogICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gVFlQRV9GTl9GSUVMRF9UWVBFIChmLCBq KTsKLUBAIC0zMDY4LDggKzMwNzEsOCBAQCB2YWx1ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoq YXJnMXAsIHN0CitAQCAtMzA3NCw4ICszMDc3LDggQEAgdmFsdWVfZm5fZmllbGQgKHN0cnVjdCB2 YWx1ZSAqKmFyZzFwLCBzdAogIAogIHN0YXRpYyBpbnQKICB1bnBhY2tfdmFsdWVfYml0c19hc19s b25nXzEgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK QEAgLTQxNjgsNyArNDE1MSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICAJCQkg ICAgIExPTkdFU1QgKnJlc3VsdCkKICB7CiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAoZmllbGRfdHlwZSkpOwotQEAgLTMw NzcsNyArMzA4MCw3IEBAIHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmdfMSAoc3RydWN0IHR5cGUK K0BAIC0zMDgzLDcgKzMwODYsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVj dCB0eXBlCiAgICBVTE9OR0VTVCB2YWxtYXNrOwogICAgaW50IGxzYmNvdW50OwogICAgaW50IGJ5 dGVzX3JlYWQ7CkBAIC00MTc3LDcgKzQxNjAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1 ZS5jCiAgCiAgICAvKiBSZWFkIHRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyByZXF1aXJlZDsg dGhlcmUgbWF5IG5vdCBiZQogICAgICAgZW5vdWdoIGJ5dGVzIHRvIHJlYWQgYW4gZW50aXJlIFVM T05HRVNULiAgKi8KLUBAIC0zMTQ3LDcgKzMxNTAsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19s b25nXzEgKHN0cnVjdCB0eXBlCitAQCAtMzE1Myw3ICszMTU2LDcgQEAgdW5wYWNrX3ZhbHVlX2Jp dHNfYXNfbG9uZ18xIChzdHJ1Y3QgdHlwZQogIAogIGludAogIHVucGFja192YWx1ZV9iaXRzX2Fz X2xvbmcgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK QEAgLTQxODYsNyArNDE2OSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICAJCQkg ICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCSAgIExPTkdFU1QgKnJl c3VsdCkKICB7Ci1AQCAtMzE2NSwxMCArMzE2OCwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19s b25nIChzdHJ1Y3QgdHlwZSAqCitAQCAtMzE3MSwxMCArMzE3NCwxMCBAQCB1bnBhY2tfdmFsdWVf Yml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqCiAgCiAgc3RhdGljIGludAogIHVucGFja192YWx1 ZV9maWVsZF9hc19sb25nXzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKQEAgLTQxOTksNyArNDE4Miw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMK ICAgIGludCBiaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBmaWVsZG5vKTsKICAg IHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZG5v KTsKICAKLUBAIC0zMTg0LDcgKzMxODcsNyBAQCB1bnBhY2tfdmFsdWVfZmllbGRfYXNfbG9uZ18x IChzdHJ1Y3QgdHlwCitAQCAtMzE5MCw3ICszMTkzLDcgQEAgdW5wYWNrX3ZhbHVlX2ZpZWxkX2Fz X2xvbmdfMSAoc3RydWN0IHR5cAogIAogIGludAogIHVucGFja192YWx1ZV9maWVsZF9hc19sb25n IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00MjA4LDcg KzQxOTEsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgCQkJICAgIGNvbnN0IHN0 cnVjdCB2YWx1ZSAqdmFsLCBMT05HRVNUICpyZXN1bHQpCiAgewogICAgZ2RiX2Fzc2VydCAodmFs ICE9IE5VTEwpOwotQEAgLTMyMTYsNyArMzIxOSw3IEBAIHVucGFja19maWVsZF9hc19sb25nIChz dHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zMjIyLDcgKzMyMjUsNyBAQCB1bnBhY2tfZmllbGRfYXNf bG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9maWVsZF9i aXRmaWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5vLAogIAkJICAgICAgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00MjE3LDcgKzQyMDAsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi92YWx1ZS5jCiAgewogICAgTE9OR0VTVCBsOwogIAotQEAgLTMyNDMsMTIgKzMyNDYsMTIg QEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTMyNDksMTIg KzMyNTIsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAog IHZvaWQKICBtb2RpZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBnZGJfYnl0ZSAqYWRkciwK QEAgLTQyMzIsMTEgKzQyMTUsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsdWUuYwogIAog ICAgLyogTm9ybWFsaXplIEJJVFBPUy4gICovCiAgICBhZGRyICs9IGJpdHBvcyAvIDg7Ci1JbmRl eDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dmFsdWUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi92YWx1ZS5oCTIwMTQt MDUtMTIgMjA6MjI6MDQuNzkzNDQzNTE0ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi92YWx1ZS5o CTIwMTQtMDUtMTIgMjA6MjI6MDUuODA5NDQ0MTIzICswMjAwCi1AQCAtODIsOCArODIsOCBAQCBl eHRlcm4gdm9pZCBzZXRfdmFsdWVfcGFyZW50IChzdHJ1Y3QgdmFsCistLS0gZ2RiLTcuNy45MC4y MDE0MDYxMy5vcmlnL2dkYi92YWx1ZS5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTcyNzQ3MDYzICsw MjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsdWUuaAkyMDE0LTA2LTE2IDIzOjI3 OjA3Ljg4MDc0OTYxOSArMDIwMAorQEAgLTgzLDggKzgzLDggQEAgZXh0ZXJuIHZvaWQgc2V0X3Zh bHVlX3BhcmVudCAoc3RydWN0IHZhbAogICAgIHdpdGhpbiB0aGUgcmVnaXN0ZXJzIHN0cnVjdHVy ZS4gIE5vdGUgYWxzbyB0aGUgbWVtYmVyCiAgICAgZW1iZWRkZWRfb2Zmc2V0IGJlbG93LiAgKi8K ICAKQEAgLTQyNDcsNyArNDIzMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAK ICAvKiBUaGUgY29tbWVudCBmcm9tICJzdHJ1Y3QgdmFsdWUiIHJlYWRzOiBgYElzIGl0IG1vZGlm aWFibGU/ICBPbmx5CiAgICAgcmVsZXZhbnQgaWYgbHZhbCAhPSBub3RfbHZhbC4nJy4gIFNob3Vs ZG4ndCB0aGUgdmFsdWUgaW5zdGVhZCBiZQotQEAgLTE1MiwxMCArMTUyLDEwIEBAIGV4dGVybiBz dHJ1Y3QgdHlwZSAqdmFsdWVfYWN0dWFsX3R5cGUgKHMKK0BAIC0xNTMsMTAgKzE1MywxMCBAQCBl eHRlcm4gc3RydWN0IHR5cGUgKnZhbHVlX2FjdHVhbF90eXBlIChzCiAgCQkJCSAgICAgICBpbnQg cmVzb2x2ZV9zaW1wbGVfdHlwZXMsCiAgCQkJCSAgICAgICBpbnQgKnJlYWxfdHlwZV9mb3VuZCk7 CiAgCkBAIC00MjYyLDcgKzQyNDUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCiAg CiAgLyogRm9yIGx2YWxfY29tcHV0ZWQgdmFsdWVzLCB0aGlzIHN0cnVjdHVyZSBob2xkcyBmdW5j dGlvbnMgdXNlZCB0bwogICAgIHJldHJpZXZlIGFuZCBzZXQgdGhlIHZhbHVlIChvciBwb3J0aW9u cyBvZiB0aGUgdmFsdWUpLgotQEAgLTE4Myw3ICsxODMsOCBAQCBzdHJ1Y3QgbHZhbF9mdW5jcwor QEAgLTE4NCw3ICsxODQsOCBAQCBzdHJ1Y3QgbHZhbF9mdW5jcwogICAgLyogQ2hlY2sgdGhlIHZh bGlkaXR5IG9mIHNvbWUgYml0cyBpbiBWQUxVRS4gIFRoaXMgc2hvdWxkIHJldHVybiAxCiAgICAg ICBpZiBhbGwgdGhlIGJpdHMgc3RhcnRpbmcgYXQgT0ZGU0VUIGFuZCBleHRlbmRpbmcgZm9yIExF TkdUSCBiaXRzCiAgICAgICBhcmUgdmFsaWQsIG9yIDAgaWYgYW55IGJpdCBpcyBpbnZhbGlkLiAg Ki8KQEAgLTQyNzIsNyArNDI1NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAK ICAgIC8qIFJldHVybiAxIGlmIGFueSBiaXQgaW4gVkFMVUUgaXMgdmFsaWQsIDAgaWYgdGhleSBh cmUgYWxsIGludmFsaWQuICAqLwogICAgaW50ICgqY2hlY2tfYW55X3ZhbGlkKSAoY29uc3Qgc3Ry dWN0IHZhbHVlICp2YWx1ZSk7Ci1AQCAtMjAxLDcgKzIwMiw3IEBAIHN0cnVjdCBsdmFsX2Z1bmNz CitAQCAtMjAyLDcgKzIwMyw3IEBAIHN0cnVjdCBsdmFsX2Z1bmNzCiAgICAvKiBJZiBub24tTlVM TCwgdGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBpbmRpY2F0ZWQgYml0cwog ICAgICAgb2YgVkFMVUUgYXJlIGEgc3ludGhldGljIHBvaW50ZXIuICAqLwogICAgaW50ICgqY2hl Y2tfc3ludGhldGljX3BvaW50ZXIpIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbHVlLApAQCAtNDI4 MSw3ICs0MjY0LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsdWUuaAogIAogICAgLyogUmV0 dXJuIGEgZHVwbGljYXRlIG9mIFZBTFVFJ3MgY2xvc3VyZSwgZm9yIHVzZSBpbiBhIG5ldyB2YWx1 ZS4KICAgICAgIFRoaXMgbWF5IHNpbXBseSByZXR1cm4gdGhlIHNhbWUgY2xvc3VyZSwgaWYgVkFM VUUncyBpcwotQEAgLTIzOCw3ICsyMzksNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0 ZV9jb21wdXRlZF92CitAQCAtMjM5LDcgKzI0MCw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmFs bG9jYXRlX2NvbXB1dGVkX3YKICAgICBPdGhlcndpc2UsIHJldHVybiAxLiAgKi8KICAKICBleHRl cm4gaW50IHZhbHByaW50X2NoZWNrX3ZhbGlkaXR5IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBz dHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTQyOTAsNyArNDI3Myw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3ZhbHVlLmgKICAJCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsKTsKICAKICBleHRl cm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV9vcHRpbWl6ZWRfb3V0X3ZhbHVlIChzdHJ1Y3QgdHlw ZSAqdHlwZSk7Ci1AQCAtNDIwLDEzICs0MjEsMTMgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqY29l cmNlX2FycmF5IChzdHJ1YworQEAgLTQyMSwxMyArNDIyLDEzIEBAIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKmNvZXJjZV9hcnJheSAoc3RydWMKICAgICBiaXRzIGluIHRoZSBnaXZlbiByYW5nZSBhcmUg dmFsaWQsIHplcm8gaWYgYW55IGJpdCBpcyBpbnZhbGlkLiAgKi8KICAKICBleHRlcm4gaW50IHZh bHVlX2JpdHNfdmFsaWQgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsdWUsCkBAIC00MzA2LDcgKzQy ODksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCiAgCiAgLyogR2l2ZW4gYSB2YWx1 ZSwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbnRlbnRzIGJ5dGVzIHN0YXJ0aW5nIGF0CiAgICAg T0ZGU0VUIGFuZCBleHRlbmRpbmcgZm9yIExFTkdUSCBieXRlcyBhcmUgYXZhaWxhYmxlLiAgVGhp cyByZXR1cm5zCi1AQCAtNDM0LDcgKzQzNSw3IEBAIGV4dGVybiBpbnQgdmFsdWVfYml0c19zeW50 aGV0aWNfcG9pbnRlcgorQEAgLTQzNSw3ICs0MzYsNyBAQCBleHRlcm4gaW50IHZhbHVlX2JpdHNf c3ludGhldGljX3BvaW50ZXIKICAgICBieXRlIGlzIHVuYXZhaWxhYmxlLiAgKi8KICAKICBleHRl cm4gaW50IHZhbHVlX2J5dGVzX2F2YWlsYWJsZSAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwK QEAgLTQzMTUsNyArNDI5OCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAKICAv KiBHaXZlbiBhIHZhbHVlLCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29udGVudHMgYml0cyBzdGFy dGluZyBhdAogICAgIE9GRlNFVCBhbmQgZXh0ZW5kaW5nIGZvciBMRU5HVEggYml0cyBhcmUgYXZh aWxhYmxlLiAgVGhpcyByZXR1cm5zCi1AQCAtNDU2LDcgKzQ1Nyw3IEBAIGV4dGVybiBpbnQgdmFs dWVfZW50aXJlbHlfdW5hdmFpbGFibGUgKHMKK0BAIC00NTcsNyArNDU4LDcgQEAgZXh0ZXJuIGlu dCB2YWx1ZV9lbnRpcmVseV91bmF2YWlsYWJsZSAocwogICAgIExFTkdUSCBieXRlcyBhcyB1bmF2 YWlsYWJsZS4gICovCiAgCiAgZXh0ZXJuIHZvaWQgbWFya192YWx1ZV9ieXRlc191bmF2YWlsYWJs ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAgLTQzMjQsNyArNDMwNyw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL3ZhbHVlLmgKICAKICAvKiBNYXJrIFZBTFVFJ3MgY29udGVudCBiaXRzIHN0YXJ0 aW5nIGF0IE9GRlNFVCBhbmQgZXh0ZW5kaW5nIGZvcgogICAgIExFTkdUSCBiaXRzIGFzIHVuYXZh aWxhYmxlLiAgKi8KLUBAIC00NzIsNyArNDczLDcgQEAgZXh0ZXJuIHZvaWQgbWFya192YWx1ZV9i aXRzX3VuYXZhaWxhYmxlCitAQCAtNDczLDcgKzQ3NCw3IEBAIGV4dGVybiB2b2lkIG1hcmtfdmFs dWVfYml0c191bmF2YWlsYWJsZQogICAgIGV4YW1wbGUsIHRvIGNvbXBhcmUgYSBjb21wbGV0ZSBv YmplY3QgdmFsdWUgd2l0aCBpdHNlbGYsIGluY2x1ZGluZwogICAgIGl0cyBlbmNsb3NpbmcgdHlw ZSBjaHVuaywgeW91J2QgZG86CiAgCkBAIC00MzMzLDcgKzQzMTYsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi92YWx1ZS5oCiAgICAgICB2YWx1ZV9hdmFpbGFibGVfY29udGVudHMgKHZhbCwgMCwg dmFsLCAwLCBsZW4pOwogIAogICAgIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHNldCBvZiBhdmFpbGFi bGUgY29udGVudHMgbWF0Y2guICBVbmF2YWlsYWJsZQotQEAgLTQ5OSw5ICs1MDAsOSBAQCBleHRl cm4gdm9pZCBtYXJrX3ZhbHVlX2JpdHNfdW5hdmFpbGFibGUKK0BAIC01MDAsOSArNTAxLDkgQEAg ZXh0ZXJuIHZvaWQgbWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlCiAgICAgZ29uZSwgaXQgd29y a3Mgd2l0aCBjb25zdCB2YWx1ZXMuICBUaGVyZWZvcmUsIHRoaXMgcm91dGluZSBtdXN0IG5vdAog ICAgIGJlIGNhbGxlZCB3aXRoIGxhenkgdmFsdWVzLiAgKi8KICAKQEAgLTQzNDYsNyArNDMyOSw3 IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAKICAvKiBSZWFkIExFTkdUSCBieXRl cyBvZiBtZW1vcnkgc3RhcnRpbmcgYXQgTUVNQUREUiBpbnRvIEJVRkZFUiwgd2hpY2gKICAgICBp cyAob3Igd2lsbCBiZSBjb3BpZWQgdG8pIFZBTCdzIGNvbnRlbnRzIGJ1ZmZlciBvZmZzZXQgYnkK LUBAIC01MTAsNyArNTExLDcgQEAgZXh0ZXJuIGludCB2YWx1ZV9hdmFpbGFibGVfY29udGVudHNf ZXEgKAorQEAgLTUxMSw3ICs1MTIsNyBAQCBleHRlcm4gaW50IHZhbHVlX2F2YWlsYWJsZV9jb250 ZW50c19lcSAoCiAgICAgbWVtb3J5IGlzIGxpa2V3aXNlIHVuYXZhaWxhYmxlLiAgU1RBQ0sgaW5k aWNhdGVzIHdoZXRoZXIgdGhlIG1lbW9yeQogICAgIGlzIGtub3duIHRvIGJlIHN0YWNrIG1lbW9y eS4gICovCiAgCkBAIC00MzU1LDcgKzQzMzgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1 ZS5oCiAgCQkJICAgICAgIGludCBzdGFjaywgQ09SRV9BRERSIG1lbWFkZHIsCiAgCQkJICAgICAg IGdkYl9ieXRlICpidWZmZXIsIHNpemVfdCBsZW5ndGgpOwogIAotQEAgLTU0NCw3ICs1NDUsNyBA QCBleHRlcm4gQ09SRV9BRERSIHVucGFja19wb2ludGVyIChzdHJ1Y3QKK0BAIC01NDUsNyArNTQ2 LDcgQEAgZXh0ZXJuIENPUkVfQUREUiB1bnBhY2tfcG9pbnRlciAoc3RydWN0CiAgCiAgZXh0ZXJu IGludCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSwK ICAJCQkJICAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00MzY0LDcgKzQzNDcsNyBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCiAgCQkJCSAgICAgIGludCBiaXRzaXplLAog IAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCQkgICAg ICBMT05HRVNUICpyZXN1bHQpOwotQEAgLTU1MywxMiArNTU0LDEyIEBAIGV4dGVybiBMT05HRVNU IHVucGFja19maWVsZF9hc19sb25nIChzdHIKK0BAIC01NTQsMTIgKzU1NSwxMiBAQCBleHRlcm4g TE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RyCiAgCQkJCSAgICAgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiAgCQkJCSAgICAgaW50IGZpZWxkbm8pOwogIGV4dGVybiBpbnQgdW5wYWNr X3ZhbHVlX2ZpZWxkX2FzX2xvbmcgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKQEAgLTQ0NjksMTYgKzQ0NTIsNTUgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFs dWUuaAogIAogIC8qIFVzZXIgZnVuY3Rpb24gaGFuZGxlci4gICovCiAgCi1JbmRleDogZ2RiLTcu Ny4xL2dkYi9zMzkwLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv czM5MC1saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9zMzkw LWxpbnV4LW5hdC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDUtMTIgMjA6MjI6NDguNzY3NDcwMDEw ICswMjAwCi1AQCAtNTYzLDcgKzU2Myw3IEBAIHMzOTBfY2FuX3VzZV9od19icmVha3BvaW50IChp bnQgdHlwZSwgaW4KLSB9CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9zMzkwLWxp bnV4LW5hdC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTcyNzQ3MDYzICswMjAwCisrKysgZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvczM5MC1saW51eC1uYXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg4 MTc0OTYyMCArMDIwMAorQEAgLTU2Nyw3ICs1NjcsNyBAQCBzMzkwX2Nhbl91c2VfaHdfYnJlYWtw b2ludCAoc3RydWN0IHRhcmdlCiAgCiAgc3RhdGljIGludAotLXMzOTBfcmVnaW9uX29rX2Zvcl9o d193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGNudCkKLStzMzkwX3JlZ2lvbl9va19m b3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgY250KQorIHMzOTBfcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwKKy0JCQkJ ICBDT1JFX0FERFIgYWRkciwgaW50IGNudCkKKysJCQkJICBDT1JFX0FERFIgYWRkciwgTE9OR0VT VCBjbnQpCiAgewogICAgcmV0dXJuIDE7CiAgfQorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2V4dGVuc2lvbi1wcml2LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL2V4dGVuc2lvbi1wcml2LmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xNzI3NDcwNjMg KzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9leHRlbnNpb24tcHJpdi5oCTIwMTQt MDYtMTYgMjM6Mjc6MDcuODgxNzQ5NjIwICswMjAwCitAQCAtMTc1LDcgKzE3NSw3IEBAIHN0cnVj dCBleHRlbnNpb25fbGFuZ3VhZ2Vfb3BzCisgICBlbnVtIGV4dF9sYW5nX3JjICgqYXBwbHlfdmFs X3ByZXR0eV9wcmludGVyKQorICAgICAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9k ZWZuICosCisgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CistICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKysgICAgIExP TkdFU1QgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKyAgICAgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2 YWwsIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAorICAgICAgY29u c3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlKTsKK0luZGV4OiBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDE0LTA2 LTE2IDIzOjI3OjA1LjE3Mjc0NzA2MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg4MTc0OTYyMCAr MDIwMAorQEAgLTMxNyw3ICszMTcsNyBAQCBleHRlcm4gaW50IGdkYnB5X2F1dG9fbG9hZF9lbmFi bGVkIChjb25zCisgZXh0ZXJuIGVudW0gZXh0X2xhbmdfcmMgZ2RicHlfYXBwbHlfdmFsX3ByZXR0 eV9wcmludGVyCisgICAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICosCisg ICAgc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorLSAgIGludCBl bWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAorKyAgIExPTkdFU1QgZW1iZWRkZWRf b2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKyAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgcmVjdXJzZSwKKyAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKKyAgICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIw MTQwNjEzLm9yaWcvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE3 Mzc0NzA2NCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC1kZWxlZ2F0 ZXMuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg4MTc0OTYyMCArMDIwMAorQEAgLTI2OCw3ICsyNjgs NyBAQCBkZWxlZ2F0ZV93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzCisgfQorIAorIHN0 YXRpYyBpbnQKKy1kZWxlZ2F0ZV9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0 YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgaW50IGFyZzIpCisrZGVsZWdhdGVfcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9B RERSIGFyZzEsIExPTkdFU1QgYXJnMikKKyB7CisgICBzZWxmID0gc2VsZi0+YmVuZWF0aDsKKyAg IHJldHVybiBzZWxmLT50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHNlbGYsIGFyZzEs IGFyZzIpOwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMW9mMjUucGF0Y2gg Yi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjFvZjI1LnBhdGNoCmluZGV4IDdkMGI2ZmUuLjljYTAw MTAgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMW9mMjUucGF0Y2gKKysrIGIv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTIxb2YyNS5wYXRjaApAQCAtNTIsMTAgKzUyLDEwIEBAIENv bnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0 CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3MtZW5zdXJl LXNpemVfdC5wYXRjaAogCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYWxwaGEtdGRl cC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYWxwaGEtdGRlcC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9hbHBoYS10ZGVwLmMJMjAxNC0w Mi0wNiAxODoxODo1MS4wMDU2MTY2NzYgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9hbHBoYS10ZGVwLmMJMjAxNC0wMi0wNiAxODoxODo1My42NzE2MjEzNDkgKzAxMDAKKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDE0LTA2LTEzIDIyOjE0 OjQ5LjcyNTg0NjM4MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FscGhhLXRk ZXAuYwkyMDE0LTA2LTEzIDIyOjE0OjUzLjE2Mzg1MDA4MSArMDIwMAogQEAgLTQxNCw2ICs0MTQs MTMgQEAgYWxwaGFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogICAgICBhY2N1 bXVsYXRlX3NpemUgPSAwOwogICAgZWxzZQpAQCAtNzAsMTEgKzcwLDExIEBAIEluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9hbHBoYS10ZGVwLmMKICAgIHNwIC09IGFjY3VtdWxhdGVfc2l6 ZTsKICAKICAgIC8qIEtlZXAgc3AgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9mIDE2IGFzIHRoZSBB QkkgcmVxdWlyZXMuICAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NwLXZhbHBy aW50LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jcC12YWxwcmludC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9jcC12YWxwcmludC5jCTIw MTQtMDItMDYgMTg6MTg6NTEuMDA2NjE2Njc3ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvY3AtdmFscHJpbnQuYwkyMDE0LTAyLTA2IDE4OjE4OjUzLjY3MTYyMTM0OSArMDEwMAot QEAgLTUzNyw2ICs1MzcsOCBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9jcC12YWxwcmludC5jCTIwMTQt MDYtMTMgMjI6MTQ6NDkuNzI1ODQ2MzgzICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvY3AtdmFscHJpbnQuYwkyMDE0LTA2LTEzIDIyOjE0OjUzLjE2NDg1MDA4MSArMDIwMAorQEAg LTUzOCw2ICs1MzgsOCBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj CiAgCQkgIGdkYl9ieXRlICpidWY7CiAgCQkgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogIApA QCAtODMsMTEgKzgzLDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jcC12YWxw cmludC5jCiAgCQkgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKICAJ CSAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7CiAgCi1JbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvZHdhcmYybG9jLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9kd2FyZjJsb2MuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3Jp Zy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wMi0wNiAxODoxODo1MS4wMDc2MTY2NzggKzAxMDAKLSsr KyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9kd2FyZjJsb2MuYwkyMDE0LTAyLTA2IDE4OjE4OjUz LjY3MjYyMTI5MyArMDEwMAotQEAgLTE4MjEsNiArMTgyMSw4IEBAIHJlYWRfcGllY2VkX3ZhbHVl IChzdHJ1Y3QgdmFsdWUgKnYpCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9kd2Fy ZjJsb2MuYwkyMDE0LTA2LTEzIDIyOjE0OjQ5LjcyNjg0NjM4NCArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2R3YXJmMmxvYy5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY2ODUwMDg0 ICswMjAwCitAQCAtMTY2Niw2ICsxNjY2LDggQEAgcmVhZF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2 YWx1ZSAqdikKICAKICAgICAgICB0aGlzX3NpemUgPSAodGhpc19zaXplX2JpdHMgKyBzb3VyY2Vf b2Zmc2V0X2JpdHMgJSA4ICsgNykgLyA4OwogICAgICAgIHNvdXJjZV9vZmZzZXQgPSBzb3VyY2Vf b2Zmc2V0X2JpdHMgLyA4OwpAQCAtOTYsNyArOTYsNyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvZHdhcmYybG9jLmMKICAgICAgICBpZiAoYnVmZmVyX3NpemUgPCB0aGlzX3NpemUp CiAgCXsKICAJICBidWZmZXJfc2l6ZSA9IHRoaXNfc2l6ZTsKLUBAIC0yMDEyLDYgKzIwMTQsNyBA QCB3cml0ZV9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CitAQCAtMTg1Nyw2ICsx ODU5LDcgQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAogIAl9CiAg ICAgICAgZWxzZQogIAl7CkBAIC0xMDQsMTAgKzEwNCwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvZHdhcmYybG9jLmMKICAJICBpZiAoYnVmZmVyX3NpemUgPCB0aGlzX3NpemUp CiAgCSAgICB7CiAgCSAgICAgIGJ1ZmZlcl9zaXplID0gdGhpc19zaXplOwotSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2ZpbmRjbWQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2ZpbmRjbWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9n ZGIvZmluZGNtZC5jCTIwMTQtMDItMDYgMTg6MTg6NTEuMDA4NjE2Njc5ICswMTAwCi0rKysgZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvZmluZGNtZC5jCTIwMTQtMDItMDYgMTg6MTg6NTMuNjczNjIx MjM5ICswMTAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9maW5kY21kLmMJMjAx NC0wNi0xMyAyMjoxNDo0OS43MjY4NDYzODQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9maW5kY21kLmMJMjAxNC0wNi0xMyAyMjoxNDo1My4xNjY4NTAwODQgKzAyMDAKIEBAIC0x ODUsNiArMTg1LDcgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAqbQog IAkgIHNpemVfdCBjdXJyZW50X29mZnNldCA9IHBhdHRlcm5fYnVmX2VuZCAtIHBhdHRlcm5fYnVm OwogIApAQCAtMTE2LDExICsxMTYsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L2ZpbmRjbWQuYwogIAkgIHBhdHRlcm5fYnVmID0geHJlYWxsb2MgKHBhdHRlcm5fYnVmLCBwYXR0 ZXJuX2J1Zl9zaXplKTsKICAJICBwYXR0ZXJuX2J1Zl9lbmQgPSBwYXR0ZXJuX2J1ZiArIGN1cnJl bnRfb2Zmc2V0OwogIAl9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcC12YWxwcmlu dC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcC12YWxwcmludC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxNC0w Mi0wNiAxODoxODo1MS4wMDg2MTY2NzkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9wLXZhbHByaW50LmMJMjAxNC0wMi0wNiAxODoxODo1My42NzM2MjEyMzkgKzAxMDAKLUBAIC03 OTgsNiArNzk4LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKgor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvcC12YWxwcmludC5jCTIwMTQtMDYtMTMg MjI6MTQ6NDkuNzI4ODQ2Mzg3ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcC12 YWxwcmludC5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY2ODUwMDg0ICswMjAwCitAQCAtNzcyLDYg Kzc3Miw3IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICoKICAJICAg ICAgZ2RiX2J5dGUgKmJ1ZjsKICAJICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgCkBA IC0xMjgsMTIgKzEyOCwxMiBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcC12YWxw cmludC5jCiAgCSAgICAgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsK ICAJICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7CiAgCi1JbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdXRpbHMuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3V0aWxzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcv Z2RiL3V0aWxzLmMJMjAxNC0wMi0wNiAxODoxODo1MS4wMDg2MTY2NzkgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi91dGlscy5jCTIwMTQtMDItMDYgMTg6MTg6NTMuNjc0NjIxMTg2 ICswMTAwCi1AQCAtMzE2OSw2ICszMTY5LDE4IEBAIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGNv bnN0IHZvaWQgKmFkZHIKLSAgIHJldHVybiBzdHI7CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi91dGlscy5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY2ODUwMDg0ICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdXRpbHMuYwkyMDE0LTA2LTEzIDIyOjE1OjE2LjgzOTg3 NTM0MSArMDIwMAorQEAgLTI4MzgsNiArMjgzOCwxOCBAQCBzdHJpbmdfdG9fY29yZV9hZGRyIChj b25zdCBjaGFyICpteV9zdHJpCisgICByZXR1cm4gYWRkcjsKICB9CiAgCiArLyogRW5zdXJlIHRo YXQgdGhlIGlucHV0IE5VTSBpcyBub3QgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gY2FwYWNpdHkg b2YgdGhlCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvdXRpbHMuYwogIGNoYXIgKgogIGdkYl9yZWFscGF0aCAoY29uc3QgY2hhciAqZmlsZW5hbWUp CiAgewotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbG9wcy5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsb3BzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Ljkw LjIwMTQwMTI3Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTQtMDItMDYgMTg6MTg6NTEuMDA5NjE2Njgw ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdmFsb3BzLmMJMjAxNC0wMi0wNiAx ODoxODo1My42NzU2MjExMzUgKzAxMDAKLUBAIC0yMTg0LDYgKzIxODQsNyBAQCBzZWFyY2hfc3Ry dWN0X21ldGhvZCAoY29uc3QgY2hhciAqbmFtZSwKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL3ZhbG9wcy5jCTIwMTQtMDYtMTMgMjI6MTQ6NDkuNzMwODQ2Mzg5ICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsb3BzLmMJMjAxNC0wNi0xMyAyMjoxNDo1My4xNjk4 NTAwODggKzAyMDAKK0BAIC0yMDc0LDYgKzIwNzQsNyBAQCBzZWFyY2hfc3RydWN0X21ldGhvZCAo Y29uc3QgY2hhciAqbmFtZSwKICAJICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgCSAg ICAgIENPUkVfQUREUiBhZGRyZXNzOwogIApAQCAtMTYzLDExICsxNjMsMTEgQEAgSW5kZXg6IGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbG9wcy5jCiAgCSAgICAgIHRtcCA9IHhtYWxsb2MgKFRZ UEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKICAJICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIHRtcCk7CiAgCSAgICAgIGFkZHJlc3MgPSB2YWx1ZV9hZGRyZXNzICgqYXJnMXApOwot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbHVlLmMKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDItMDYgMTg6MTg6NTEuMDEwNjE2NjgxICswMTAwCi0r KysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdmFsdWUuYwkyMDE0LTAyLTA2IDE4OjE5OjEwLjI2 MTYzNzM5OCArMDEwMAotQEAgLTgyMiw2ICs4MjIsNyBAQCBhbGxvY2F0ZV92YWx1ZV9sYXp5IChz dHJ1Y3QgdHlwZSAqdHlwZSkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHVl LmMJMjAxNC0wNi0xMyAyMjoxNDo0OS43MzI4NDYzOTEgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY5ODUwMDg4ICswMjAwCitA QCAtODI0LDYgKzgyNCw3IEBAIGFsbG9jYXRlX3ZhbHVlX2xhenkgKHN0cnVjdCB0eXBlICp0eXBl KQogICAgICAgZGVzY3JpcHRpb24gY29ycmVjdGx5LiAgKi8KICAgIGNoZWNrX3R5cGVkZWYgKHR5 cGUpOwogIApAQCAtMTc1LDcgKzE3NSw3IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi92YWx1ZS5jCiAgICB2YWwgPSAoc3RydWN0IHZhbHVlICopIHh6YWxsb2MgKHNpemVvZiAoc3Ry dWN0IHZhbHVlKSk7CiAgICB2YWwtPmNvbnRlbnRzID0gTlVMTDsKICAgIHZhbC0+bmV4dCA9IGFs bF92YWx1ZXM7Ci1AQCAtODUzLDYgKzg1NCw4IEBAIGFsbG9jYXRlX3ZhbHVlX2xhenkgKHN0cnVj dCB0eXBlICp0eXBlKQorQEAgLTg1NSw2ICs4NTYsOCBAQCBhbGxvY2F0ZV92YWx1ZV9sYXp5IChz dHJ1Y3QgdHlwZSAqdHlwZSkKICBzdGF0aWMgdm9pZAogIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRz IChzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CkBAIC0xODQsNyArMTg0LDcgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbHVlLmMKICAgIGlmICghdmFsLT5jb250ZW50cykKICAgICAg dmFsLT5jb250ZW50cyA9IChnZGJfYnl0ZSAqKSB4emFsbG9jIChUWVBFX0xFTkdUSCAodmFsLT5l bmNsb3NpbmdfdHlwZSkpOwogIH0KLUBAIC0yODU0LDggKzI4NTcsMTIgQEAgdm9pZAorQEAgLTI4 MzEsOCArMjgzNCwxMiBAQCB2b2lkCiAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlIChzdHJ1Y3Qg dmFsdWUgKnZhbCwgc3RydWN0IHR5cGUgKm5ld19lbmNsX3R5cGUpCiAgewogICAgaWYgKFRZUEVf TEVOR1RIIChuZXdfZW5jbF90eXBlKSA+IFRZUEVfTEVOR1RIICh2YWx1ZV9lbmNsb3NpbmdfdHlw ZSAodmFsKSkpIApAQCAtMTk5LDEwICsxOTksMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL3ZhbHVlLmMKICAKICAgIHZhbC0+ZW5jbG9zaW5nX3R5cGUgPSBuZXdfZW5jbF90eXBl OwogIH0KLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi92YXgtdGRlcC5jCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmF4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdmF4LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjE4OjUxLjM3 MDYxNzA2OCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZheC10ZGVwLmMJMjAx NC0wMi0wNiAxODoxODo1My42NzY2MjEwODYgKzAxMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL3ZheC10ZGVwLmMJMjAxNC0wNi0xMyAyMjoxNDo0OS43MzI4NDYzOTEgKzAyMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YXgtdGRlcC5jCTIwMTQtMDYtMTMgMjI6MTQ6 NTMuMTY5ODUwMDg4ICswMjAwCiBAQCAtMjIzLDYgKzIyMyw3IEBAIHZheF9yZXR1cm5fdmFsdWUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmMKICAJICBVTE9OR0VTVCBhZGRyOwogIApAQCAtMjExLDEx ICsyMTEsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZheC10ZGVwLmMKICAJ ICByZWFkX21lbW9yeSAoYWRkciwgcmVhZGJ1ZiwgbGVuKTsKICAJfQogIAotSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2RlZnMuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2RlZnMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZGVm cy5oCTIwMTQtMDItMDYgMTg6MTg6NTEuMzcwNjE3MDY4ICswMTAwCi0rKysgZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvZGVmcy5oCTIwMTQtMDItMDYgMTg6MTg6NTMuNjc3NjIxMDM4ICswMTAwCi1A QCAtNzY4LDQgKzc2OCw2IEBAIGVudW0gYmxvY2tfZW51bQorLS0tIGdkYi03LjcuOTAuMjAxNDA2 MTMub3JpZy9nZGIvZGVmcy5oCTIwMTQtMDYtMTMgMjI6MTQ6NDkuNzMyODQ2MzkxICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZGVmcy5oCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY5 ODUwMDg4ICswMjAwCitAQCAtNzU2LDQgKzc1Niw2IEBAIGVudW0gYmxvY2tfZW51bQogIAogICNp bmNsdWRlICJ1dGlscy5oIgogIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0y Mm9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoCmluZGV4IDg4 NjNiNDIuLjBmMjM4OTUgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUu cGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaApAQCAtOTYsMjkg Kzk2LDExIEBAIENvbnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA3Yml0CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1i aXRwb3Mtd3AucGF0Y2gKIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvYXJtLWxpbnV4LW5hdC5jCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYXJtLWxpbnV4LW5hdC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0 OjE0LjcyODEwMzQ3NiArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYXJtLWxpbnV4LW5hdC5jCTIw MTQtMDUtMzAgMjM6MjQ6MTQuNzgzMTAzNDk5ICswMjAwCi1AQCAtMTEwNSw3ICsxMTA1LDcgQEAg YXJtX2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQwotIAotIC8qIEluc2VydCBh IEhhcmR3YXJlIGJyZWFrcG9pbnQuICAqLwotIHN0YXRpYyBpbnQKLS1hcm1fbGludXhfaW5zZXJ0 X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0rYXJtX2xpbnV4 X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCBydywK LSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5m byAqbHA7Ci1AQCAtMTEyMyw3ICsxMTIzLDcgQEAgYXJtX2xpbnV4X2luc2VydF93YXRjaHBvaW50 IChDT1JFX0FERFIgYQotIAotIC8qIFJlbW92ZSBhIGhhcmR3YXJlIGJyZWFrcG9pbnQuICAqLwot IHN0YXRpYyBpbnQKLS1hcm1fbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLCBpbnQgcncsCi0rYXJtX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCBydywKLSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9u ICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMTE4MCw3ICsxMTgwLDcg QEAgYXJtX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIzOjA5LjYz MDQ0MDY5OSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FybS1saW51eC1uYXQu YwkyMDE0LTA2LTEzIDIyOjIzOjU0LjY2NjQ5MjE5OSArMDIwMAorQEAgLTEyOTYsNyArMTI5Niw3 IEBAIGFybV9saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHN0cnVjdAogIHN0YXRpYyBpbnQK ICBhcm1fbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9v cHMgKnRhcmdldCwKICAJCQkJCUNPUkVfQUREUiBhZGRyLApAQCAtMTI3LDE1MSArMTA5LDExIEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL2FybS1saW51eC1uYXQuYwogIHsKICAgIHJldHVybiBzdGFy dCA8PSBhZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0KLUluZGV4OiBnZGIt Ny43LjEvZ2RiL2kzODYtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIv aTM4Ni1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0MjEwMzQ4MiArMDIwMAotKysrIGdkYi03 LjcuMS9nZGIvaTM4Ni1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc4MzEwMzQ5OSArMDIwMAot QEAgLTU4OSw3ICs1ODksNyBAQCBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9kZWJ1Z19yZWdzIChzdHJ1 Y3QKLSAgICBvZiB0aGUgdHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFp bHVyZS4gICovCi0gCi0gc3RhdGljIGludAotLWkzODZfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVf QUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStpMzg2X2luc2VydF93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCXN0cnVjdCBleHByZXNz aW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUKLUBA IC02MjcsNyArNjI3LDcgQEAgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs Ci0gICAgYWRkcmVzcyBBRERSLCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLCBhbmQgZm9yIGFj Y2Vzc2VzIG9mIHRoZQotICAgIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9u IGZhaWx1cmUuICAqLwotIHN0YXRpYyBpbnQKLS1pMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0raTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQlzdHJ1Y3QgZXhwcmVz c2lvbiAqY29uZCkKLSB7Ci0gICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlCi1J bmRleDogZ2RiLTcuNy4xL2dkYi9pYTY0LWxpbnV4LW5hdC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL2lhNjQtbGludXgtbmF0LmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2lhNjQtbGludXgtbmF0LmMJMjAxNC0wNS0z MCAyMzoyNDoxNC43ODQxMDM1MDAgKzAyMDAKLUBAIC01NDIsNyArNTQyLDcgQEAgaXNfcG93ZXJf b2ZfMiAoaW50IHZhbCkKLSB9Ci0gCi0gc3RhdGljIGludAotLWlhNjRfbGludXhfaW5zZXJ0X3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0raWE2NF9saW51eF9p bnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgcncsCi0g CQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgc3RydWN0IGx3cF9pbmZv ICpscDsKLUBAIC01OTYsNyArNTk2LDcgQEAgaWE2NF9saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAo Q09SRV9BRERSCi0gfQotIAotIHN0YXRpYyBpbnQKLS1pYTY0X2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0raWE2NF9saW51eF9yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJ CQkgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpbnQgaWR4OwotSW5kZXg6 IGdkYi03LjcuMS9nZGIvaW5mLXR0cmFjZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9y aWcvZ2RiL2luZi10dHJhY2UuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0MjEwMzQ4MiArMDIwMAot KysrIGdkYi03LjcuMS9nZGIvaW5mLXR0cmFjZS5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzg0MTAz NTAwICswMjAwCi1AQCAtMzE0LDE0ICszMTQsMTQgQEAgaW5mX3R0cmFjZV9kaXNhYmxlX3BhZ2Vf cHJvdGVjdGlvbnMgKHBpZAotICAgIHR5cGUgVFlQRS4gICovCi0gCi0gc3RhdGljIGludAotLWlu Zl90dHJhY2VfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQg dHlwZSwKLStpbmZfdHRyYWNlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9O R0VTVCBsZW4sIGludCB0eXBlLAotIAkJCSAgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQot IHsKLSAgIGNvbnN0IGludCBwYWdlc2l6ZSA9IGluZl90dHJhY2VfcGFnZV9kaWN0LnBhZ2VzaXpl OwotICAgcGlkX3QgcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSAgIENPUkVf QUREUiBwYWdlX2FkZHI7Ci0tICBpbnQgbnVtX3BhZ2VzOwotLSAgaW50IHBhZ2U7Ci0rICBMT05H RVNUIG51bV9wYWdlczsKLSsgIExPTkdFU1QgcGFnZTsKLSAKLSAgIGdkYl9hc3NlcnQgKHR5cGUg PT0gaHdfd3JpdGUpOwotIAotQEAgLTMzOCwxNCArMzM4LDE0IEBAIGluZl90dHJhY2VfaW5zZXJ0 X3dhdGNocG9pbnQgKENPUkVfQUREUgotICAgIHR5cGUgVFlQRS4gICovCi0gCi0gc3RhdGljIGlu dAotLWluZl90dHJhY2VfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LCBpbnQgdHlwZSwKLStpbmZfdHRyYWNlX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCSAgICAgIHN0cnVjdCBleHByZXNzaW9uICpj b25kKQotIHsKLSAgIGNvbnN0IGludCBwYWdlc2l6ZSA9IGluZl90dHJhY2VfcGFnZV9kaWN0LnBh Z2VzaXplOwotICAgcGlkX3QgcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSAg IENPUkVfQUREUiBwYWdlX2FkZHI7Ci0tICBpbnQgbnVtX3BhZ2VzOwotLSAgaW50IHBhZ2U7Ci0r ICBMT05HRVNUIG51bV9wYWdlczsKLSsgIExPTkdFU1QgcGFnZTsKLSAKLSAgIGdkYl9hc3NlcnQg KHR5cGUgPT0gaHdfd3JpdGUpOwotIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvbWlwcy1saW51eC1u YXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9taXBzLWxpbnV4LW5hdC5j CTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzQ0MTAzNDgzICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9t aXBzLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzg0MTAzNTAwICswMjAwCi1AQCAt NjQ0LDcgKzY0NCw3IEBAIG1pcHNfbGludXhfbmV3X3RocmVhZCAoc3RydWN0IGx3cF9pbmZvICoK LSAgICB3YXRjaC4gIFJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuICAqLwotIAotIHN0YXRpYyBpbnQK LS1taXBzX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwg aW50IHR5cGUsCi0rbWlwc19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs IExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQkgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29u ZCkKLSB7Ci0gICBzdHJ1Y3QgcHRfd2F0Y2hfcmVncyByZWdzOwotQEAgLTY5Nyw3ICs2OTcsNyBA QCBtaXBzX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKLSAgICBSZXR1cm4gemVy byBvbiBzdWNjZXNzLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tbWlwc19saW51eF9yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK21pcHNfbGludXhf cmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUs Ci0gCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgaW50IHJldHZhbDsK LUluZGV4OiBnZGItNy43LjEvZ2RiL250by1wcm9jZnMuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuMS5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL250by1wcm9jZnMuYwkyMDE0LTA1LTMwIDIzOjI0OjE0 Ljc4NTEwMzUwMCArMDIwMAotQEAgLTY5LDEwICs2OSwxMCBAQCBzdGF0aWMgcHRpZF90IGRvX2F0 dGFjaCAocHRpZF90IHB0aWQpOwotIAotIHN0YXRpYyBpbnQgcHJvY2ZzX2Nhbl91c2VfaHdfYnJl YWtwb2ludCAoaW50LCBpbnQsIGludCk7Ci0gCi0tc3RhdGljIGludCBwcm9jZnNfaW5zZXJ0X2h3 X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStzdGF0aWMg aW50IHByb2Nmc19pbnNlcnRfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1Qg bGVuLCBpbnQgdHlwZSwKLSAJCQkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKTsKLSAKLS1zdGF0 aWMgaW50IHByb2Nmc19yZW1vdmVfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCB0eXBlLAotK3N0YXRpYyBpbnQgcHJvY2ZzX3JlbW92ZV9od193YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCQkJc3RydWN0IGV4cHJl c3Npb24gKmNvbmQpOwotIAotIHN0YXRpYyBpbnQgcHJvY2ZzX3N0b3BwZWRfYnlfd2F0Y2hwb2lu dCAodm9pZCk7Ci1AQCAtMTQ5NCwxNCArMTQ5NCwxNCBAQCBwcm9jZnNfY2FuX3VzZV9od19icmVh a3BvaW50IChpbnQgdHlwZSwKLSB9Ci0gCi0gc3RhdGljIGludAotLXByb2Nmc19yZW1vdmVfaHdf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK3Byb2Nmc19y ZW1vdmVfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlw ZSwKLSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHJldHVybiBwcm9j ZnNfaHdfd2F0Y2hwb2ludCAoYWRkciwgLTEsIHR5cGUpOwotIH0KLSAKLSBzdGF0aWMgaW50Ci0t cHJvY2ZzX2luc2VydF9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHR5cGUsCi0rcHJvY2ZzX2luc2VydF9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9O R0VTVCBsZW4sIGludCB0eXBlLAotIAkJCSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0g ewotICAgcmV0dXJuIHByb2Nmc19od193YXRjaHBvaW50IChhZGRyLCBsZW4sIHR5cGUpOwotSW5k ZXg6IGdkYi03LjcuMS9nZGIvcHBjLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvcHBjLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcv Z2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0NTEwMzQ4MyArMDIwMAot KysrIGdkYi03LjcuMS9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzg2 MTAzNTAxICswMjAwCi1AQCAtMTg1MywxMSArMTg1MywxMSBAQCBjYW5fdXNlX3dhdGNocG9pbnRf Y29uZF9hY2NlbCAodm9pZCkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3BwYy1s aW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIzOjA5LjYzNTQ0MDcwNCArMDIwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIzOjU0LjY3 MjQ5MjIwNiArMDIwMAorQEAgLTE4NTcsMTEgKzE4NTcsMTEgQEAgY2FuX3VzZV93YXRjaHBvaW50 X2NvbmRfYWNjZWwgKHZvaWQpCiAgICAgQ09ORElUSU9OX1ZBTFVFIHdpbGwgaG9sZCB0aGUgdmFs dWUgd2hpY2ggc2hvdWxkIGJlIHB1dCBpbiB0aGUKICAgICBEVkMgcmVnaXN0ZXIuICAqLwogIHN0 YXRpYyB2b2lkCkBAIC0yODYsNyArMTI4LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcHBjLWxp bnV4LW5hdC5jCiAgICBDT1JFX0FERFIgYWRkcl9lbmRfZGF0YSwgYWRkcl9lbmRfZHZjOwogIAog ICAgLyogVGhlIERWQyByZWdpc3RlciBjb21wYXJlcyBieXRlcyB3aXRoaW4gZml4ZWQtbGVuZ3Ro IHdpbmRvd3Mgd2hpY2gKLUBAIC0xOTQ0LDcgKzE5NDQsNyBAQCBudW1fbWVtb3J5X2FjY2Vzc2Vz IChzdHJ1Y3QgdmFsdWUgKnYpCitAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgbnVtX21lbW9yeV9hY2Nl c3NlcyAoc3RydWN0IHZhbHVlICp2KQogICAgIG9mIHRoZSBjb25zdGFudC4gICovCiAgc3RhdGlj IGludAogIGNoZWNrX2NvbmRpdGlvbiAoQ09SRV9BRERSIHdhdGNoX2FkZHIsIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kLApAQCAtMjk1LDE2ICsxMzcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9w cGMtbGludXgtbmF0LmMKICB7CiAgICBpbnQgcGMgPSAxLCBudW1fYWNjZXNzZXNfbGVmdCwgbnVt X2FjY2Vzc2VzX3JpZ2h0OwogICAgc3RydWN0IHZhbHVlICpsZWZ0X3ZhbCwgKnJpZ2h0X3ZhbCwg KmxlZnRfY2hhaW4sICpyaWdodF9jaGFpbjsKLUBAIC0yMDExLDcgKzIwMTEsNyBAQCBjaGVja19j b25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzCi0gICAgdGhlIGNvbmRpdGlvbiBleHBy ZXNzaW9uLCB0aHVzIG9ubHkgdHJpZ2dlcmluZyB0aGUgd2F0Y2hwb2ludCB3aGVuIGl0IGlzCi0g ICAgdHJ1ZS4gICovCi0gc3RhdGljIGludAotLXBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2lu dF9jb25kaXRpb24gKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0rcHBjX2xpbnV4 X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1Qg bGVuLCBpbnQgcncsCi0gCQkJCQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIENP UkVfQUREUiBkYXRhX3ZhbHVlOwotQEAgLTIwMjgsNyArMjAyOCw3IEBAIHBwY19saW51eF9jYW5f YWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24KK0BAIC0yMDMzLDcgKzIwMzMsNyBAQCBwcGNfbGlu dXhfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uCiAgCiAgc3RhdGljIHZvaWQKICBjcmVh dGVfd2F0Y2hwb2ludF9yZXF1ZXN0IChzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKnAsIENPUkVf QUREUiBhZGRyLApAQCAtMzEzLDI1ICsxNDYsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9wcGMt bGludXgtbmF0LmMKICAJCQkgICBpbnQgaW5zZXJ0KQogIHsKICAgIGlmIChsZW4gPT0gMQotQEAg LTIwNzMsNyArMjA3Myw3IEBAIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKHN0cnVjdCBwcGNf aHcKLSB9Ci0gCi0gc3RhdGljIGludAotLXBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLStwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHJ3LAotIAkJCSAgICAgc3RydWN0 IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgc3RydWN0IGx3cF9pbmZvICpscDsKLUBAIC0yMTQx LDcgKzIxNDEsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhCi0g fQotIAotIHN0YXRpYyBpbnQKLS1wcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQURE UiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0rcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCBydywKLSAJCQkgICAgIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMjI5Miw3ICsy MjkyLDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKK0BAIC0yMjk5 LDcgKzIyOTksNyBAQCBwcGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50IChzdHJ1Y3QKICBz dGF0aWMgaW50CiAgcHBjX2xpbnV4X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVj dCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCQlDT1JFX0FERFIgYWRkciwKQEAgLTM0MCwxMSAr MTU1LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3BwYy1saW51eC1uYXQuYwogIHsKICAgIGlu dCBtYXNrOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvcHJvY2ZzLmMKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9wcm9jZnMuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0NjEwMzQ4NCArMDIwMAotKysrIGdk Yi03LjcuMS9nZGIvcHJvY2ZzLmMJMjAxNC0wNS0zMCAyMzoyNDoxNC43ODcxMDM1MDEgKzAyMDAK LUBAIC0yNDI4LDcgKzI0MjgsNyBAQCBwcm9jZnNfYWRkcmVzc190b19ob3N0X3BvaW50ZXIgKENP UkVfQURECistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9wcm9jZnMuYwkyMDE0LTA2 LTEzIDIyOjIzOjA5LjYzODQ0MDcwOCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3Byb2Nmcy5jCTIwMTQtMDYtMTMgMjI6MjM6NTQuNjczNDkyMjA3ICswMjAwCitAQCAtMjQyOSw3 ICsyNDI5LDcgQEAgcHJvY2ZzX2FkZHJlc3NfdG9faG9zdF9wb2ludGVyIChDT1JFX0FERAogICNl bmRpZgogIAogIHN0YXRpYyBpbnQKQEAgLTM1Myw3ICsxNjgsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9wcm9jZnMuYwogIHsKICAjaWYgIWRlZmluZWQgKFBDV0FUQ0gpICYmICFkZWZpbmVkIChQ SU9DU1dBVENIKQogICAgLyogSWYgbmVpdGhlciBvciB0aGVzZSBpcyBkZWZpbmVkLCB3ZSBjYW4n dCBzdXBwb3J0IHdhdGNocG9pbnRzLgotQEAgLTQ3NzQsNyArNDc3NCw3IEBAIHByb2Nmc19waWRf dG9fc3RyIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3AKK0BAIC00NzYyLDcgKzQ3NjIsNyBAQCBwcm9j ZnNfcGlkX3RvX3N0ciAoc3RydWN0IHRhcmdldF9vcHMgKm9wCiAgLyogSW5zZXJ0IGEgd2F0Y2hw b2ludC4gICovCiAgCiAgc3RhdGljIGludApAQCAtMzYyLDEwMiArMTc3LDExIEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL3Byb2Nmcy5jCiAgCQkgICAgICAgaW50IGFmdGVyKQogIHsKICAjaWZuZGVm IEFJWDUKLUBAIC00ODk1LDcgKzQ4OTUsNyBAQCBwcm9jZnNfc3RvcHBlZF9kYXRhX2FkZHJlc3Mg KHN0cnVjdCB0YXJnCi0gfQotIAotIHN0YXRpYyBpbnQKLS1wcm9jZnNfaW5zZXJ0X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStwcm9jZnNfaW5zZXJ0X3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJICBz dHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpZiAoIXRhcmdldF9oYXZlX3N0ZXBwYWJs ZV93YXRjaHBvaW50Ci1AQCAtNDkxNyw3ICs0OTE3LDcgQEAgcHJvY2ZzX2luc2VydF93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkcgotIH0KLSAKLSBzdGF0aWMgaW50Ci0tcHJvY2ZzX3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rcHJvY2ZzX3Jl bW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAot IAkJCSAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgcmV0dXJuIHByb2Nmc19zZXRf d2F0Y2hwb2ludCAoaW5mZXJpb3JfcHRpZCwgYWRkciwgMCwgMCwgMCk7Ci1JbmRleDogZ2RiLTcu Ny4xL2dkYi9yZW1vdGUtbTMyci1zZGkuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3JlbW90ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3JlbW90ZS1tMzJy LXNkaS5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4x L2dkYi9yZW1vdGUtbTMyci1zZGkuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc4ODEwMzUwMiArMDIw MAotQEAgLTE0MTUsMTQgKzE0MTUsMTUgQEAgbTMycl9jYW5fdXNlX2h3X3dhdGNocG9pbnQgKGlu dCB0eXBlLCBpbgotICAgIHdhdGNocG9pbnQuICAqLwotIAotIHN0YXRpYyBpbnQKLS1tMzJyX2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rbTMy cl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlw ZSwKLSAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGlm IChyZW1vdGVfZGVidWcpCi0tICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIm0z MnJfaW5zZXJ0X3dhdGNocG9pbnQoJXMsJWQsJWQpXG4iLAotLQkJCXBhZGRyZXNzICh0YXJnZXRf Z2RiYXJjaCAoKSwgYWRkciksIGxlbiwgdHlwZSk7Ci0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgIm0zMnJfaW5zZXJ0X3dhdGNocG9pbnQoJXMsJXMsJWQpXG4iLAotKwkJCXBh ZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgYWRkciksIHBsb25nZXN0IChsZW4pLAotKwkJCXR5 cGUpOwotIAotICAgZm9yIChpID0gMDsgaSA8IE1BWF9BQ0NFU1NfQlJFQUtTOyBpKyspCi0gICAg IHsKLUBAIC0xNDQwLDE0ICsxNDQxLDE1IEBAIG0zMnJfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVf QUREUiBhZGRyLAotIH0KLSAKLSBzdGF0aWMgaW50Ci0tbTMycl9yZW1vdmVfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK20zMnJfcmVtb3ZlX3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJc3RydWN0IGV4 cHJlc3Npb24gKmNvbmQpCi0gewotICAgaW50IGk7Ci0gCi0gICBpZiAocmVtb3RlX2RlYnVnKQot LSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJtMzJyX3JlbW92ZV93YXRjaHBv aW50KCVzLCVkLCVkKVxuIiwKLS0JCQlwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIp LCBsZW4sIHR5cGUpOwotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJtMzJy X3JlbW92ZV93YXRjaHBvaW50KCVzLCVzLCVkKVxuIiwKLSsJCQlwYWRkcmVzcyAodGFyZ2V0X2dk YmFyY2ggKCksIGFkZHIpLCBwbG9uZ2VzdCAobGVuKSwKLSsJCQl0eXBlKTsKLSAKLSAgIGZvciAo aSA9IDA7IGkgPCBNQVhfQUNDRVNTX0JSRUFLUzsgaSsrKQotICAgICB7Ci1JbmRleDogZ2RiLTcu Ny4xL2dkYi9yZW1vdGUtbWlwcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2Ri L3JlbW90ZS1taXBzLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy43LjEvZ2RiL3JlbW90ZS1taXBzLmMJMjAxNC0wNS0zMCAyMzoyNDoxNC43ODkxMDM1MDIg KzAyMDAKLUBAIC0yNDI0LDcgKzI0MjQsNyBAQCBjYWxjdWxhdGVfbWFzayAoQ09SRV9BRERSIGFk ZHIsIGludCBsZW4pCi0gICAgd2F0Y2hwb2ludC4gICovCi0gCi0gc3RhdGljIGludAotLW1pcHNf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStt aXBzX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0 eXBlLAotIAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIGlmIChtaXBzX3NldF9i cmVha3BvaW50IChhZGRyLCBsZW4sIHR5cGUpKQotQEAgLTI0MzYsNyArMjQzNiw3IEBAIG1pcHNf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAotIC8qIFJlbW92ZSBhIHdhdGNocG9p bnQuICAqLwotIAotIHN0YXRpYyBpbnQKLS1taXBzX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rbWlwc19yZW1vdmVfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQlzdHJ1Y3QgZXhwcmVzc2lv biAqY29uZCkKLSB7Ci0gICBpZiAobWlwc19jbGVhcl9icmVha3BvaW50IChhZGRyLCBsZW4sIHR5 cGUpKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvcmVtb3RlLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvcmVtb3RlLmMJMjAxNC0wNS0zMCAyMzoyNDoxNC43NDgxMDM0ODQgKzAy MDAKLSsrKyBnZGItNy43LjEvZ2RiL3JlbW90ZS5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzkxMTAz NTAzICswMjAwCi1AQCAtODMyMiw3ICs4MzIyLDcgQEAgd2F0Y2hwb2ludF90b19aX3BhY2tldCAo aW50IHR5cGUpCi0gfQotIAotIHN0YXRpYyBpbnQKLS1yZW1vdGVfaW5zZXJ0X3dhdGNocG9pbnQg KENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStyZW1vdGVfaW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJICBzdHJ1 Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdl dF9yZW1vdGVfc3RhdGUgKCk7Ci1AQCAtODM0Miw3ICs4MzQyLDcgQEAgcmVtb3RlX2luc2VydF93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9n ZGIvcmVtb3RlLmMJMjAxNC0wNi0xMyAyMjoyMzowOS42NDM0NDA3MTMgKzAyMDAKKysrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9yZW1vdGUuYwkyMDE0LTA2LTEzIDIyOjIzOjU0LjY4MDQ5MjIx NSArMDIwMAorQEAgLTgxOTksNyArODE5OSw3IEBAIHJlbW90ZV9pbnNlcnRfd2F0Y2hwb2ludCAo c3RydWN0IHRhcmdldF8KICAgIHAgPSBzdHJjaHIgKHJzLT5idWYsICdcMCcpOwogICAgYWRkciA9 IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkcik7CiAgICBwICs9IGhleG51bXN0ciAocCwgKFVM T05HRVNUKSBhZGRyKTsKQEAgLTQ2Niw3ICsxOTAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9y ZW1vdGUuYwogIAogICAgcHV0cGt0IChycy0+YnVmKTsKICAgIGdldHBrdCAoJnJzLT5idWYsICZy cy0+YnVmX3NpemUsIDApOwotQEAgLTgzNjIsNyArODM2Miw3IEBAIHJlbW90ZV9pbnNlcnRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIKK0BAIC04MjE5LDcgKzgyMTksNyBAQCByZW1vdGVfaW5z ZXJ0X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfCiAgCiAgc3RhdGljIGludAogIHJlbW90ZV93 YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LCBD T1JFX0FERFIgYWRkciwKQEAgLTQ3NSwxNiArMTk5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv cmVtb3RlLmMKICB7CiAgICBDT1JFX0FERFIgZGlmZiA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAo YWRkciAtIHN0YXJ0KTsKICAKLUBAIC04MzcxLDcgKzgzNzEsNyBAQCByZW1vdGVfd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RyCi0gCi0gCi0gc3RhdGljIGludAotLXJlbW90ZV9yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK3JlbW90 ZV9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlw ZSwKLSAJCQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCByZW1vdGVf c3RhdGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLUBAIC04MzkxLDcgKzgzOTEsNyBAQCBy ZW1vdGVfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCitAQCAtODI0OSw3ICs4MjQ5 LDcgQEAgcmVtb3RlX3JlbW92ZV93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0XwogICAgcCA9IHN0 cmNociAocnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChh ZGRyKTsKICAgIHAgKz0gaGV4bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAtNDkzLDky ICsyMDgsMjkgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcmVtb3RlLmMKICAgIHB1dHBrdCAocnMt PmJ1Zik7CiAgICBnZXRwa3QgKCZycy0+YnVmLCAmcnMtPmJ1Zl9zaXplLCAwKTsKICAKLUluZGV4 OiBnZGItNy43LjEvZ2RiL3MzOTAtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi90YXJnZXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9zMzkw LWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzU0MTAzNDg3ICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzkxMTAzNTAz ICswMjAwCi1AQCAtNTA4LDcgKzUwOCw3IEBAIHMzOTBfZml4X3dhdGNoX3BvaW50cyAoc3RydWN0 IGx3cF9pbmZvICoKLSB9Ci0gCi0gc3RhdGljIGludAotLXMzOTBfaW5zZXJ0X3dhdGNocG9pbnQg KENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStzMzkwX2luc2VydF93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCXN0cnVjdCBl eHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtNTI5LDcg KzUyOSw3IEBAIHMzOTBfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAotIH0KLSAK LSBzdGF0aWMgaW50Ci0tczM5MF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4sIGludCB0eXBlLAotK3MzOTBfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0g ewotICAgc3RydWN0IGx3cF9pbmZvICpscDsKLUluZGV4OiBnZGItNy43LjEvZ2RiL3RhcmdldC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTQtMDUtMzAg MjM6MjQ6MTQuNzUwMTAzNDg1ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi90YXJnZXQuYwkyMDE0 LTA1LTMwIDIzOjI0OjE0Ljc5MjEwMzUwMyArMDIwMAotQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGlj IHZvaWQgdGFyZ2V0X2luZm8gKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgdm9pZCBkZWZhdWx0X3Rl cm1pbmFsX2luZm8gKGNvbnN0IGNoYXIgKiwgaW50KTsKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTQtMDYtMTMgMjI6MjM6MDkuNjQ1NDQwNzE2ICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGFyZ2V0LmMJMjAxNC0wNi0xMyAyMjoyNjoyNC4w Nzc2NjE2MDEgKzAyMDAKK0BAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkIHRhcmdldF9pbmZv IChjaGFyICosIGludCk7Cisgc3RhdGljIHZvaWQgZGVmYXVsdF90ZXJtaW5hbF9pbmZvIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqLCBjb25zdCBjaGFyICosIGludCk7CiAgCiAgc3RhdGljIGludCBkZWZh dWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICosCiAt CQkJCQkJIENPUkVfQUREUiwgQ09SRV9BRERSLCBpbnQpOwogKwkJCQkJCSBDT1JFX0FERFIsIENP UkVfQUREUiwgTE9OR0VTVCk7CiAgCi0gc3RhdGljIGludCBkZWZhdWx0X3JlZ2lvbl9va19mb3Jf aHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBMT05HRVNUKTsKLSAKLUBAIC0xMDMsMTAgKzEwMywx MCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF9od19icmVha3BvaW50Ci0gc3RhdGljIGlu dCBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwKLSAJCQkJ CSAgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwotIAotLXN0YXRpYyBpbnQgZGVidWdfdG9faW5z ZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiwgaW50LCBpbnQsCi0rc3RhdGljIGludCBkZWJ1Z190 b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBMT05HRVNULCBpbnQsCi0gCQkJCSAgICAg ICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSAKLS1zdGF0aWMgaW50IGRlYnVnX3RvX3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LAotK3N0YXRpYyBpbnQgZGVidWdfdG9fcmVt b3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LAotIAkJCQkgICAgICAgc3Ry dWN0IGV4cHJlc3Npb24gKik7Ci0gCi0gc3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dh dGNocG9pbnQgKHZvaWQpOwotQEAgLTExNCwxMSArMTE0LDEyIEBAIHN0YXRpYyBpbnQgZGVidWdf dG9fc3RvcHBlZF9ieV93YXRjaHBvaW4KKyBzdGF0aWMgaW50IGRlZmF1bHRfcmVnaW9uX29rX2Zv cl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAorIAkJCQkJCUNPUkVfQUREUiwg TE9OR0VTVCk7CitAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgZGVidWdfdG9fcmVtb3Zl X3dhdGNocG9pbnQgKHMKICBzdGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNz IChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKik7CiAgCiAgc3RhdGljIGludCBkZWJ1 Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAog LQkJCQkJCSAgQ09SRV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci0rCQkJCQkJICBDT1JFX0FERFIs IENPUkVfQUREUiwKLSsJCQkJCQkgIExPTkdFU1QpOworKwkJCQkJCSAgQ09SRV9BRERSLCBDT1JF X0FERFIsIExPTkdFU1QpOwogIAotIHN0YXRpYyBpbnQgZGVidWdfdG9fcmVnaW9uX29rX2Zvcl9o d193YXRjaHBvaW50IChDT1JFX0FERFIsIExPTkdFU1QpOwotIAotLXN0YXRpYyBpbnQgZGVidWdf dG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIsIGludCwgaW50LAot K3N0YXRpYyBpbnQgZGVidWdfdG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JF X0FERFIsIExPTkdFU1QsIGludCwKLSAJCQkJCQkgICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci0g Ci0gc3RhdGljIHZvaWQgZGVidWdfdG9fdGVybWluYWxfaW5pdCAodm9pZCk7Ci1AQCAtNzM5LDEw ICs3NDAsMTAgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotIAkgICAgKGludCAoKikg KHN0cnVjdCBnZGJhcmNoICosIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqKSkKLSAJICAgIHJldHVy bl9taW51c19vbmUpOwotICAgZGVfZmF1bHQgKHRvX2luc2VydF93YXRjaHBvaW50LAotLQkgICAg KGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQsIHN0cnVjdCBleHByZXNzaW9uICopKQotKwkg ICAgKGludCAoKikgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAq KSkKLSAJICAgIHJldHVybl9taW51c19vbmUpOwotICAgZGVfZmF1bHQgKHRvX3JlbW92ZV93YXRj aHBvaW50LAotLQkgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQsIHN0cnVjdCBleHBy ZXNzaW9uICopKQotKwkgICAgKGludCAoKikgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LCBzdHJ1 Y3QgZXhwcmVzc2lvbiAqKSkKLSAJICAgIHJldHVybl9taW51c19vbmUpOwotICAgZGVfZmF1bHQg KHRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCwKLSAJICAgIChpbnQgKCopICh2b2lkKSkKLUBAIC03 NTUsNyArNzU2LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAgZGVfZmF1bHQg KHRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCwKLSAJICAgIGRlZmF1bHRfcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50KTsKLSAgIGRlX2ZhdWx0ICh0b19jYW5fYWNjZWxfd2F0Y2hwb2lu dF9jb25kaXRpb24sCi0tICAgICAgICAgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQs IHN0cnVjdCBleHByZXNzaW9uICopKQotKyAgICAgICAgICAgIChpbnQgKCopIChDT1JFX0FERFIs IExPTkdFU1QsIGludCwgc3RydWN0IGV4cHJlc3Npb24gKikpCi0gICAgICAgICAgICAgcmV0dXJu X3plcm8pOwotICAgZGVfZmF1bHQgKHRvX3Rlcm1pbmFsX2luaXQsCi0gCSAgICAodm9pZCAoKikg KHZvaWQpKQotQEAgLTM1OTgsNyArMzU5OSw3IEBAIGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193 YXRjaHBvaW50IChDT1IKKyBzdGF0aWMgaW50IGRlYnVnX3RvX3JlZ2lvbl9va19mb3JfaHdfd2F0 Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCisgCQkJCQkJIENPUkVfQUREUiwgTE9O R0VTVCk7CitAQCAtMjk1OSw3ICsyOTU5LDcgQEAgZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dh dGNocG9pbnQgKHN0cgogIHN0YXRpYyBpbnQKICBkZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRo aW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCSAgICAgIENPUkVfQURE UiBhZGRyLApAQCAtNTg3LDE2ICsyMzksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90YXJnZXQu YwogIHsKICAgIHJldHVybiBhZGRyID49IHN0YXJ0ICYmIGFkZHIgPCBzdGFydCArIGxlbmd0aDsK ICB9Ci1AQCAtNDU3MSw3ICs0NTcyLDcgQEAgZGVidWdfdG9fcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50IChDTwotIH0KLSAKLSBzdGF0aWMgaW50Ci0tZGVidWdfdG9fY2FuX2FjY2VsX3dhdGNo cG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAotK2RlYnVn X3RvX2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAoQ09SRV9BRERSIGFkZHIsIExPTkdF U1QgbGVuLCBpbnQgcncsCi0gCQkJCQkgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAg aW50IHJldHZhbDsKLUBAIC00NTgxLDggKzQ1ODIsOCBAQCBkZWJ1Z190b19jYW5fYWNjZWxfd2F0 Y2hwb2ludF9jb25kaXRpb24KK0BAIC0zNjkxLDggKzM2OTEsOCBAQCBkZWJ1Z190b19jYW5fYWNj ZWxfd2F0Y2hwb2ludF9jb25kaXRpb24KICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKICAJCSAgICAgICJ0YXJnZXRfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uICIK QEAgLTYwNyw3ICsyNTAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90YXJnZXQuYwogIAkJICAg ICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25lZCBsb25nKSByZXR2YWwp OwogICAgcmV0dXJuIHJldHZhbDsKICB9Ci1AQCAtNDYxNyw3ICs0NjE4LDcgQEAgZGVidWdfdG9f c3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YQorQEAgLTM3MjcsNyArMzcyNyw3IEBAIGRl YnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGEKICBzdGF0aWMgaW50CiAgZGVi dWdfdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRh cmdldCwKICAJCQkJICAgICAgIENPUkVfQUREUiBhZGRyLApAQCAtNjE2LDcgKzI1OSw3IEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL3RhcmdldC5jCiAgewogICAgaW50IHJldHZhbDsKICAKLUBAIC00 NjI1LDkgKzQ2MjYsOSBAQCBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChz CitAQCAtMzczNSw5ICszNzM1LDkgQEAgZGVidWdfdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9y YW5nZSAocwogIAkJCQkJCQkgc3RhcnQsIGxlbmd0aCk7CiAgCiAgICBmcHJpbnRmX2ZpbHRlcmVk IChnZGJfc3RkbG9nLApAQCAtNjI4LDc5ICsyNzEsMjMgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv dGFyZ2V0LmMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIAotQEAgLTQ2NjIsNyArNDY2Myw3IEBA IGRlYnVnX3RvX3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZ2QKLSB9Ci0gCi0gc3RhdGlj IGludAotLWRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHR5cGUsCi0rZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25k KQotIHsKLSAgIGludCByZXR2YWw7Ci1AQCAtNDY3MCwxNCArNDY3MSwxNCBAQCBkZWJ1Z190b19p bnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkCi0gICByZXR2YWwgPSBkZWJ1Z190YXJnZXQu dG9faW5zZXJ0X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSwgY29uZCk7Ci0gCi0gICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0tCQkgICAgICAidGFyZ2V0X2luc2VydF93YXRj aHBvaW50ICglcywgJWQsICVkLCAlcykgPSAlbGRcbiIsCi0tCQkgICAgICBjb3JlX2FkZHJfdG9f c3RyaW5nIChhZGRyKSwgbGVuLCB0eXBlLAotKwkJICAgICAgInRhcmdldF9pbnNlcnRfd2F0Y2hw b2ludCAoJXMsICVzLCAlZCwgJXMpID0gJWxkXG4iLAotKwkJICAgICAgY29yZV9hZGRyX3RvX3N0 cmluZyAoYWRkciksIHBsb25nZXN0IChsZW4pLCB0eXBlLAotIAkJICAgICAgaG9zdF9hZGRyZXNz X3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25lZCBsb25nKSByZXR2YWwpOwotICAgcmV0dXJuIHJl dHZhbDsKLSB9Ci0gCi0gc3RhdGljIGludAotLWRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rZGVidWdfdG9fcmVtb3ZlX3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJICAgIHN0 cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIGludCByZXR2YWw7Ci1AQCAtNDY4NSw4ICs0 Njg2LDggQEAgZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZAotICAgcmV0 dmFsID0gZGVidWdfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50IChhZGRyLCBsZW4sIHR5cGUs IGNvbmQpOwotIAotICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJICAgICAg InRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludCAoJXMsICVkLCAlZCwgJXMpID0gJWxkXG4iLAotLQkJ ICAgICAgY29yZV9hZGRyX3RvX3N0cmluZyAoYWRkciksIGxlbiwgdHlwZSwKLSsJCSAgICAgICJ0 YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQgKCVzLCAlcywgJWQsICVzKSA9ICVsZFxuIiwKLSsJCSAg ICAgIGNvcmVfYWRkcl90b19zdHJpbmcgKGFkZHIpLCBwbG9uZ2VzdCAobGVuKSwgdHlwZSwKLSAJ CSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGNvbmQpLCAodW5zaWduZWQgbG9uZykgcmV0 dmFsKTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotSW5kZXg6IGdkYi03LjcuMS9nZGIvdGFyZ2V0 LmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90YXJnZXQuaAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjcuMS5vcmlnL2dkYi90YXJnZXQuaAkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc1MDEw MzQ4NSArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvdGFyZ2V0LmgJMjAxNC0wNS0zMCAyMzoyNDox NC43OTMxMDM1MDQgKzAyMDAKLUBAIC00MTIsOCArNDEyLDggQEAgc3RydWN0IHRhcmdldF9vcHMK LSAKLSAgICAgLyogRG9jdW1lbnRhdGlvbiBvZiB3aGF0IHRoZSB0d28gcm91dGluZXMgYmVsb3cg YXJlIGV4cGVjdGVkIHRvIGRvIGlzCi0gICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGNvcnJlc3Bv bmRpbmcgdGFyZ2V0XyogbWFjcm9zLiAgKi8KLS0gICAgaW50ICgqdG9fcmVtb3ZlX3dhdGNocG9p bnQpIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLS0gICAgaW50 ICgqdG9faW5zZXJ0X3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhw cmVzc2lvbiAqKTsKLSsgICAgaW50ICgqdG9fcmVtb3ZlX3dhdGNocG9pbnQpIChDT1JFX0FERFIs IExPTkdFU1QsIGludCwgc3RydWN0IGV4cHJlc3Npb24gKik7Ci0rICAgIGludCAoKnRvX2luc2Vy dF93YXRjaHBvaW50KSAoQ09SRV9BRERSLCBMT05HRVNULCBpbnQsIHN0cnVjdCBleHByZXNzaW9u ICopOwotIAotICAgICBpbnQgKCp0b19pbnNlcnRfbWFza193YXRjaHBvaW50KSAoc3RydWN0IHRh cmdldF9vcHMgKiwKLSAJCQkJICAgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci1AQCAt NDI0LDEzICs0MjQsMTMgQEAgc3RydWN0IHRhcmdldF9vcHMKLSAgICAgaW50IHRvX2hhdmVfY29u dGludWFibGVfd2F0Y2hwb2ludDsKLSAgICAgaW50ICgqdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3Mp IChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKik7CistLS0gZ2RiLTcuNy45MC4yMDE0 MDYxMy5vcmlnL2dkYi90YXJnZXQuaAkyMDE0LTA2LTEzIDIyOjIzOjU0LjY4MzQ5MjIxOSArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC5oCTIwMTQtMDYtMTMgMjI6MjU6 NDEuMzcyNjEzMDM5ICswMjAwCitAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0cnVjdCB0YXJnZXRfb3Bz CisgICAgIGludCAoKnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKSAoc3RydWN0IHRhcmdldF9vcHMg KiwgQ09SRV9BRERSICopCisgICAgICAgVEFSR0VUX0RFRkFVTFRfUkVUVVJOICgwKTsKICAgICAg aW50ICgqdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSkgKHN0cnVjdCB0YXJnZXRfb3Bz ICosCi0tCQkJCQkgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci0rCQkJCQkgICAgQ09S RV9BRERSLCBDT1JFX0FERFIsIExPTkdFU1QpOworLQkJCQkJICAgIENPUkVfQUREUiwgQ09SRV9B RERSLCBpbnQpCisrCQkJCQkgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIExPTkdFU1QpCisgICAg ICAgVEFSR0VUX0RFRkFVTFRfRlVOQyAoZGVmYXVsdF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3Jh bmdlKTsKICAKICAgICAgLyogRG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJvdXRpbmUgaXMgcHJvdmlk ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICB0YXJnZXRfKiBtYWNyby4gICovCi0g ICAgIGludCAoKnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgTE9O R0VTVCk7Ci0gCi0tICAgIGludCAoKnRvX2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbikg KENPUkVfQUREUiwgaW50LCBpbnQsCi0rICAgIGludCAoKnRvX2Nhbl9hY2NlbF93YXRjaHBvaW50 X2NvbmRpdGlvbikgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LAotIAkJCQkJICAgICAgc3RydWN0 IGV4cHJlc3Npb24gKik7Ci0gICAgIGludCAoKnRvX21hc2tlZF93YXRjaF9udW1fcmVnaXN0ZXJz KSAoc3RydWN0IHRhcmdldF9vcHMgKiwKLSAJCQkJCSAgQ09SRV9BRERSLCBDT1JFX0FERFIpOwot SW5kZXg6IGdkYi03LjcuMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYworSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE0LTA1LTMwIDIzOjMwOjQ5LjA4 ODI3NzkzMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE0 LTA1LTMwIDIzOjMwOjU2LjkxMTI4MDcyNSArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMu b3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIzOjA5LjY0NzQ0MDcx OCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMJ MjAxNC0wNi0xMyAyMjoyMzo1NC42ODM0OTIyMTkgKzAyMDAKIEBAIC00MjgsMTQgKzQyOCwxNCBA QCBhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChjb25zdCBzCiAgc3RhdGljIHZvaWQK ICBhYXJjaDY0X3Nob3dfZGVidWdfcmVnX3N0YXRlIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlLApAQCAtNzE5LDcgKzMwNiw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2Fh cmNoNjQtbGludXgtbmF0LmMKICAJCQl0eXBlID09IGh3X3dyaXRlID8gImh3LXdyaXRlLXdhdGNo cG9pbnQiCiAgCQkJOiAodHlwZSA9PSBod19yZWFkID8gImh3LXJlYWQtd2F0Y2hwb2ludCIKICAJ CQkgICA6ICh0eXBlID09IGh3X2FjY2VzcyA/ICJody1hY2Nlc3Mtd2F0Y2hwb2ludCIKLUBAIC04 NjcsOSArODY3LDEwIEBAIGFhcmNoNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAoc3RydWN0IHQK K0BAIC04NjksOSArODY5LDEwIEBAIGFhcmNoNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAoc3Ry dWN0IHQKICAgICBnZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1sb3cuYyBmb3IgbW9yZSBpbmZvcm1h dGlvbi4gICovCiAgCiAgc3RhdGljIHZvaWQKQEAgLTczMiw3ICszMTksNyBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCiAgewogICAgaW50IGFsaWduZWRfbGVuOwog ICAgdW5zaWduZWQgaW50IG9mZnNldDsKLUBAIC0xMDM1LDcgKzEwMzYsNyBAQCBhYXJjaDY0X3Bv aW50X2VuY29kZV9jdHJsX3JlZyAoaW50IHR5cGUsCitAQCAtMTAzOCw3ICsxMDM5LDcgQEAgYWFy Y2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKGludCB0eXBlLAogICAgIFJldHVybiAwIGZvciBh bnkgbm9uLWNvbXBsaWFudCBBRERSIGFuZC9vciBMRU47IHJldHVybiAxIG90aGVyd2lzZS4gICov CiAgCiAgc3RhdGljIGludApAQCAtNzQxLDcgKzMyOCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L2FhcmNoNjQtbGludXgtbmF0LmMKICB7CiAgICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50ID0gaXNf d2F0Y2hwb2ludCA/IEFBUkNINjRfSFdQX0FMSUdOTUVOVAogICAgICA6IEFBUkNINjRfSEJQX0FM SUdOTUVOVDsKLUBAIC0xMjg1LDcgKzEyODYsNyBAQCBhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dh dGNocG9pbnQgKGludCB0CitAQCAtMTI5MCw3ICsxMjkxLDcgQEAgYWFyY2g2NF9oYW5kbGVfYWxp Z25lZF93YXRjaHBvaW50IChpbnQgdAogICAgIFJldHVybiAwIGlmIHN1Y2NlZWQuICAqLwogIAog IHN0YXRpYyBpbnQKQEAgLTc1MCw3ICszMzcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hYXJj aDY0LWxpbnV4LW5hdC5jCiAgCQkJCSAgICAgaW50IGlzX2luc2VydCkKICB7CiAgICBzdHJ1Y3Qg YWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlCi1AQCAtMTMxMCw4ICsxMzExLDggQEAgYWFy Y2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQgKGludAorQEAgLTEzMTUsOCArMTMxNiw4 IEBAIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChpbnQKICAJZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogICJoYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQ6IGlz X2luc2VydDogJWRcbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbmVkX2Fk ZHI6IDB4JTA4bHgsIGFsaWduZWRfbGVuOiAlZFxuIgpAQCAtNzYxLDcgKzM0OCw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKICAKICAgICAgICBpZiAocmV0ICE9 IDApCiAgCXJldHVybiByZXQ7Ci1AQCAtMTMyMyw3ICsxMzI0LDcgQEAgYWFyY2g2NF9oYW5kbGVf dW5hbGlnbmVkX3dhdGNocG9pbnQgKGludAorQEAgLTEzMjgsNyArMTMyOSw3IEBAIGFhcmNoNjRf aGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChpbnQKICAvKiBJbXBsZW1lbnRzIGluc2VydGlv biBhbmQgcmVtb3ZhbCBvZiBhIHNpbmdsZSB3YXRjaHBvaW50LiAgKi8KICAKICBzdGF0aWMgaW50 CkBAIC03NzAsNTQgKzM1Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FhcmNoNjQtbGludXgt bmF0LmMKICB7CiAgICBpZiAoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkICgxIC8qIGlzX3dhdGNo cG9pbnQgKi8gLCBhZGRyLCBsZW4pKQogICAgICByZXR1cm4gYWFyY2g2NF9oYW5kbGVfYWxpZ25l ZF93YXRjaHBvaW50ICh0eXBlLCBhZGRyLCBsZW4sIGlzX2luc2VydCk7Ci1AQCAtMTMzOCwxNSAr MTMzOSwxNSBAQCBhYXJjaDY0X2hhbmRsZV93YXRjaHBvaW50IChpbnQgdHlwZSwgQ09SCi0gICAg b2YgdGhlIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAq LwotIAotIHN0YXRpYyBpbnQKLS1hYXJjaDY0X2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rYWFyY2g2NF9saW51eF9pbnNlcnRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQkJIHN0 cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIGludCByZXQ7Ci0gCi0gICBpZiAoZGVidWdf aHdfcG9pbnRzKQotICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0tCQkJImlu c2VydF93YXRjaHBvaW50IG9uIGVudHJ5IChhZGRyPTB4JTA4bHgsIGxlbj0lZClcbiIsCi0tCQkJ KHVuc2lnbmVkIGxvbmcpIGFkZHIsIGxlbik7Ci0rCQkJImluc2VydF93YXRjaHBvaW50IG9uIGVu dHJ5IChhZGRyPTB4JTA4bHgsIGxlbj0lcylcbiIsCi0rCQkJKHVuc2lnbmVkIGxvbmcpIGFkZHIs IHBsb25nZXN0IChsZW4pKTsKLSAKLSAgIGdkYl9hc3NlcnQgKHR5cGUgIT0gaHdfZXhlY3V0ZSk7 Ci0gCi1AQCAtMTM3MCwxNSArMTM3MSwxNSBAQCBhYXJjaDY0X2xpbnV4X2luc2VydF93YXRjaHBv aW50IChDT1JFX0FECi0gICAgdHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24g ZmFpbHVyZS4gICovCi0gCi0gc3RhdGljIGludAotLWFhcmNoNjRfbGludXhfcmVtb3ZlX3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLSthYXJjaDY0X2xpbnV4 X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBl LAotIAkJCQkgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgaW50IHJldDsKLSAKLSAg IGlmIChkZWJ1Z19od19wb2ludHMpCi0gICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKLS0JCQkicmVtb3ZlX3dhdGNocG9pbnQgb24gZW50cnkgKGFkZHI9MHglMDhseCwgbGVuPSVk KVxuIiwKLS0JCQkodW5zaWduZWQgbG9uZykgYWRkciwgbGVuKTsKLSsJCQkicmVtb3ZlX3dhdGNo cG9pbnQgb24gZW50cnkgKGFkZHI9MHglMDhseCwgbGVuPSVzKVxuIiwKLSsJCQkodW5zaWduZWQg bG9uZykgYWRkciwgcGxvbmdlc3QgKGxlbikpOwotIAotICAgZ2RiX2Fzc2VydCAodHlwZSAhPSBo d19leGVjdXRlKTsKLSAKLUBAIC0xMzk5LDcgKzE0MDAsNyBAQCBhYXJjaDY0X2xpbnV4X3JlbW92 ZV93YXRjaHBvaW50IChDT1JFX0FECi0gLyogSW1wbGVtZW50IHRoZSAidG9fcmVnaW9uX29rX2Zv cl9od193YXRjaHBvaW50IiB0YXJnZXRfb3BzIG1ldGhvZC4gICovCi0gCi0gc3RhdGljIGludAot LWFhcmNoNjRfbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgaW50IGxlbikKLSthYXJjaDY0X2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQotIHsKLSAgIENPUkVfQUREUiBhbGlnbmVkX2Fk ZHI7Ci0gCi1AQCAtMTQ4OSw3ICsxNDkwLDcgQEAgYWFyY2g2NF9saW51eF9zdG9wcGVkX2J5X3dh dGNocG9pbnQgKHZvaQorQEAgLTE0OTcsNyArMTQ5OCw3IEBAIGFhcmNoNjRfbGludXhfc3RvcHBl ZF9ieV93YXRjaHBvaW50IChzdHIKICBzdGF0aWMgaW50CiAgYWFyY2g2NF9saW51eF93YXRjaHBv aW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LAogIAkJCQkJ ICAgIENPUkVfQUREUiBhZGRyLApAQCAtODI2LDMgKzM2NiwxNiBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCiAgewogICAgcmV0dXJuIHN0YXJ0IDw9IGFkZHIgJiYg c3RhcnQgKyBsZW5ndGggLSAxID49IGFkZHI7CiAgfQorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAx NDA2MTMub3JpZy9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCTIwMTQtMDYtMTMgMjI6MjI6MzcuOTE3 NDA0NjExICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGFyZ2V0LWRlbGVnYXRl cy5jCTIwMTQtMDYtMTMgMjI6MjY6MDYuMDkyNjQwOTI0ICswMjAwCitAQCAtMjYxLDcgKzI2MSw3 IEBAIHRkZWZhdWx0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGEKKyB9CisgCisgc3Rh dGljIGludAorLWRlbGVnYXRlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0 YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgQ09SRV9BRERSIGFyZzIsIGludCBhcmcz KQorK2RlbGVnYXRlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRf b3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgQ09SRV9BRERSIGFyZzIsIExPTkdFU1QgYXJnMykK KyB7CisgICBzZWxmID0gc2VsZi0+YmVuZWF0aDsKKyAgIHJldHVybiBzZWxmLT50b193YXRjaHBv aW50X2FkZHJfd2l0aGluX3JhbmdlIChzZWxmLCBhcmcxLCBhcmcyLCBhcmczKTsKCmRpZmYgLS1n aXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQt Yml0cG9zLTI1b2YyNS5wYXRjaAppbmRleCAxYzM5YjllLi4zYTY2YzAxIDEwMDY0NAotLS0gYS9n ZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0yNW9mMjUucGF0Y2gKQEAgLTQ3LDExICs0NywxMSBAQCBDb250ZW50LVR5cGU6IHRleHQv eC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAogQ29udGVudC1EaXNwb3Np dGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Zjc3LWJvdW5kcy5wYXRjaAogCi1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9mLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvZi1sYW5nLmgJMjAxMy0wMS0xOCAyMzozOTo0MC4yMDk1MDA5NjggKzAxMDAKLSsrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9mLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjQwOjA0LjAxMDUzMTE3 NyArMDEwMAotQEAgLTY1LDkgKzY1LDkgQEAgc3RydWN0IGNvbW1vbl9ibG9jaworLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi1sYW5nLmgJMjAxNC0wNi0xNiAyMjo0NTowMC40MDQ0 NzA5NDQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9mLWxhbmcuaAkyMDE0LTA2 LTE2IDIyOjQ1OjEwLjM1MjQ3Nzc2MSArMDIwMAorQEAgLTYyLDkgKzYyLDkgQEAgc3RydWN0IGNv bW1vbl9ibG9jawogICAgc3RydWN0IHN5bWJvbCAqY29udGVudHNbMV07CiAgfTsKICAKQEAgLTYz LDExICs2MywxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi1sYW5nLmgKICAK ICBleHRlcm4gdm9pZCBmNzdfZ2V0X2R5bmFtaWNfYXJyYXlfbGVuZ3RoIChzdHJ1Y3QgdHlwZSAq KTsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXR5cGVwcmludC5jCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi10eXBlcHJpbnQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIz OjM5OjM3LjU2NDQ5NzYyMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtdHlw ZXByaW50LmMJMjAxMy0wMS0xOCAyMzozOTo0MC4yMTA1MDA5NzAgKzAxMDAKLUBAIC0xODAsNyAr MTgwLDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQorLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIyOjQ1 OjAwLjQwNDQ3MDk0NCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2YtdHlwZXBy aW50LmMJMjAxNC0wNi0xNiAyMjo0NToxMC4zNTM0Nzc3NjEgKzAyMDAKK0BAIC0xNjEsNyArMTYx LDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQogIAkJCSAgICAg aW50IHNob3csIGludCBwYXNzZWRfYV9wdHIsIGludCBkZW1hbmdsZWRfYXJncywKICAJCQkgICAg IGludCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpCiAgewpAQCAtNzYsMjUgKzc2LDI1IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXR5cGVwcmludC5jCiAgCiAgICAvKiBObyBz dGF0aWMgdmFyaWFibGVzIGFyZSBwZXJtaXR0ZWQgYXMgYW4gZXJyb3IgY2FsbCBtYXkgb2NjdXIg ZHVyaW5nCiAgICAgICBleGVjdXRpb24gb2YgdGhpcyBmdW5jdGlvbi4gICovCi1AQCAtMjEwLDcg KzIxMCw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUKLSAKLSAg ICAgICBsb3dlcl9ib3VuZCA9IGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSk7Ci0gICAgICAgaWYg KGxvd2VyX2JvdW5kICE9IDEpCS8qIE5vdCB0aGUgZGVmYXVsdC4gICovCi0tCWZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIiVkOiIsIGxvd2VyX2JvdW5kKTsKLSsJZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiJXM6IiwgcGxvbmdlc3QgKGxvd2VyX2JvdW5kKSk7Ci0gCi0gICAgICAgLyogTWFr ZSBzdXJlIHRoYXQsIGlmIHdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5LCB3ZQotICAgICAg ICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4g ICovCi1AQCAtMjIwLDcgKzIyMCw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3Ry dWN0IHR5cGUKLSAgICAgICBlbHNlCi0gCXsKLSAJICB1cHBlcl9ib3VuZCA9IGY3N19nZXRfdXBw ZXJib3VuZCAodHlwZSk7Ci0tCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCB1cHBl cl9ib3VuZCk7Ci0rCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJXMiLCBwbG9uZ2VzdCAo dXBwZXJfYm91bmQpKTsKLSAJfQotIAotICAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCi1AQCAtMjg4LDcgKzI4OCw3IEBAIHZv aWQKK0BAIC0xOTUsNyArMTk1LDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1 Y3QgdHlwZQorIAorICAgICAgICAgICBsb3dlcl9ib3VuZCA9IGY3N19nZXRfbG93ZXJib3VuZCAo dHlwZSk7CisgICAgICAgICAgIGlmIChsb3dlcl9ib3VuZCAhPSAxKQkvKiBOb3QgdGhlIGRlZmF1 bHQuICAqLworLSAgICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkOiIsIGxv d2VyX2JvdW5kKTsKKysJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVzOiIsIHBsb25n ZXN0IChsb3dlcl9ib3VuZCkpOworIAorICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCwgaWYg d2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCisgICAgICAgICAgICAgIHByaW50IG91 dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCitAQCAtMjA1 LDcgKzIwNSw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUKKyAg ICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIHVwcGVyX2JvdW5k ID0gZjc3X2dldF91cHBlcmJvdW5kICh0eXBlKTsKKy0gICAgICAgICAgICAgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIiVkIiwgdXBwZXJfYm91bmQpOworKwkgICAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIlcyIsIHBsb25nZXN0ICh1cHBlcl9ib3VuZCkpOworICAgICAgICAgICAg IH0KKyAKKyAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp ICE9IFRZUEVfQ09ERV9BUlJBWSkKK0BAIC0yNzQsNyArMjc0LDcgQEAgdm9pZAogIGZfdHlwZV9w cmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHNob3csCiAgCQkgICBpbnQgbGV2ZWwpCiAgewpAQCAtMTAzLDcgKzEwMyw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXR5cGVwcmludC5jCiAgICBpbnQgaW5kZXg7CiAgCiAg ICBRVUlUOwotQEAgLTM3MCw3ICszNzAsNyBAQCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0CitAQCAtMzU2LDcgKzM1Niw3IEBAIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3QKICAgICAgICBlbHNlCiAgCXsKICAJICB1cHBlcl9ib3VuZCA9IGY3 N19nZXRfdXBwZXJib3VuZCAodHlwZSk7CkBAIC0xMTIsMjAgKzExMiwyMCBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvZi10eXBlcHJpbnQuYwogIAl9CiAgICAgICAgYnJlYWs7CiAg Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzozOTozNy41 NjQ0OTc2MjAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXZhbHByaW50LmMJ MjAxMy0wMS0xOCAyMzozOTo0MC4yMTA1MDA5NzAgKzAxMDAKLUBAIC01Nyw3ICs1Nyw3IEBAIExP TkdFU1QgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZPUlRSQU4KLSAKLSAjZGVmaW5lIEY3N19E SU1fQllURV9TVFJJREUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTQtMDYtMTYgMjI6NDU6MzQu OTAxNDk1MDY5ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi12YWxwcmludC5j CTIwMTQtMDYtMTYgMjI6NDU6NDQuOTMzNTAyMDY3ICswMjAwCitAQCAtNDYsNyArNDYsNyBAQCBM T05HRVNUIGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOCisgLyogQXJyYXkgd2hpY2gg aG9sZHMgb2Zmc2V0cyB0byBiZSBhcHBsaWVkIHRvIGdldCBhIHJvdydzIGVsZW1lbnRzCisgICAg Zm9yIGEgZ2l2ZW4gYXJyYXkuICBBcnJheSBhbHNvIGhvbGRzIHRoZSBzaXplIG9mIGVhY2ggc3Vi YXJyYXkuICAqLwogIAogLWludAogK0xPTkdFU1QKICBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVj dCB0eXBlICp0eXBlKQogIHsKLSAgIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJv ciAodHlwZSk7Ci1AQCAtNjgsNyArNjgsNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0 eXBlICp0eXBlKQorICAgaWYgKFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0 eXBlKSkKK0BAIC01NSw3ICs1NSw3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUg KnR5cGUpCiAgICByZXR1cm4gVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxVRSAodHlwZSk7CiAg fQogIApAQCAtMTMzLDI0ICsxMzMsNCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv Zi12YWxwcmludC5jCiArTE9OR0VTVAogIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUg KnR5cGUpCiAgewotICAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBl KTsKLUBAIC05Miw4ICs5Miw4IEBAIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5 cGUpCi0gc3RhdGljIHZvaWQKLSBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAo c3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgaW50IHVwcGVyX2JvdW5kID0gLTE7Ci0tICBpbnQg bG93ZXJfYm91bmQgPSAxOwotKyAgTE9OR0VTVCB1cHBlcl9ib3VuZCA9IC0xOwotKyAgTE9OR0VT VCBsb3dlcl9ib3VuZCA9IDE7Ci0gCi0gICAvKiBSZWN1cnNpdmVseSBnbyBhbGwgdGhlIHdheSBk b3duIGludG8gYSBwb3NzaWJseSBtdWx0aS1kaW1lbnNpb25hbAotICAgICAgRjc3IGFycmF5IGFu ZCBnZXQgdGhlIGJvdW5kcy4gIEZvciBzaW1wbGUgYXJyYXlzLCB0aGlzIGlzIHByZXR0eQotQEAg LTEyOCw3ICsxMjgsNyBAQCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0 Ci0gICBzdHJ1Y3QgdHlwZSAqdG1wX3R5cGU7Ci0gICBMT05HRVNUIGVsdGxlbjsKLSAgIGludCBu ZGltZW4gPSAxOwotLSAgaW50IHVwcGVyLCBsb3dlcjsKLSsgIExPTkdFU1QgdXBwZXIsIGxvd2Vy OwotIAotICAgdG1wX3R5cGUgPSB0eXBlOwotIAorICAgaWYgKFRZUEVfQVJSQVlfVVBQRVJfQk9V TkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKCmRpZmYgLS1naXQgYS9nZGItc3RhdGljLXRscy0xb2Yy LnBhdGNoIGIvZ2RiLXN0YXRpYy10bHMtMW9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggY2FkZGFkMC4uMDAwMDAwMAotLS0gYS9nZGItc3RhdGljLXRscy0xb2YyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTQtMDQvbXNnMDAxNTQuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXgg Z2Ric2VydmVyIHFHZXRUTFNBZGRyIGZvciB4ODZfNjQgLW0zMgotCi0KLS0tU3Q3Vkl1RUdaNmRs cHUxMwotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50 LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotSGksCi0KLWdkYnNlcnZlciBtYWtlcyBsaWJ0aHJlYWRf ZGIgdG8gYWNjZXNzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiAgU3VycHJpc2luZ2x5IGl0Ci1kb2Vz IG5vdCBoYXJtIG5vcm1hbGx5LCBldmVuIC1mc2FuaXRpemU9YWRkcmVzcyB3b3JrcyB3aXRoIGN1 cnJlbnQgZ2Ric2VydmVyLgotSSBoYXZlIGZvdW5kIGp1c3QgdmFsZ3JpbmQgZGV0ZWN0cyBpdCBh cyBhIHZlcnkgZmlyc3Qgd2FybmluZyBmb3IgZ2Ric2VydmVyOgotCi1TeXNjYWxsIHBhcmFtIHB0 cmFjZShhZGRyKSBjb250YWlucyB1bmluaXRpYWxpc2VkIGJ5dGUocykKLSAgIGF0IDB4MzcyMUVF Q0VCRTogcHRyYWNlIChwdHJhY2UuYzo0NSkKLSAgIGJ5IDB4NDM2RUU1OiBwc19nZXRfdGhyZWFk X2FyZWEgKGxpbnV4LXg4Ni1sb3cuYzoyNTIpCi0gICBieSAweDU1NTlEMDI6IF9fdGRfdGFfbG9v a3VwX3RoX3VuaXF1ZSAodGRfdGFfbWFwX2x3cDJ0aHIuYzoxNTcpCi0gICBieSAweDU1NTlFQzM6 IHRkX3RhX21hcF9sd3AydGhyICh0ZF90YV9tYXBfbHdwMnRoci5jOjIwNykKLSAgIGJ5IDB4NDNG ODdEOiBmaW5kX29uZV90aHJlYWQgKHRocmVhZC1kYi5jOjI4MSkKLSAgIGJ5IDB4NDQwMDM4OiB0 aHJlYWRfZGJfZ2V0X3Rsc19hZGRyZXNzICh0aHJlYWQtZGIuYzo1MDUpCi0gICBieSAweDQwRjZE MDogaGFuZGxlX3F1ZXJ5IChzZXJ2ZXIuYzoyMDA0KQotICAgYnkgMHg0MTI0Q0Y6IHByb2Nlc3Nf c2VyaWFsX2V2ZW50IChzZXJ2ZXIuYzozNDQ1KQotICAgYnkgMHg0MTM2QjY6IGhhbmRsZV9zZXJp YWxfZXZlbnQgKHNlcnZlci5jOjM4ODkpCi0gICBieSAweDQxOTU3MTogaGFuZGxlX2ZpbGVfZXZl bnQgKGV2ZW50LWxvb3AuYzo0MzQpCi0gICBieSAweDQxOEQzODogcHJvY2Vzc19ldmVudCAoZXZl bnQtbG9vcC5jOjE4OSkKLSAgIGJ5IDB4NDE5QUI3OiBzdGFydF9ldmVudF9sb29wIChldmVudC1s b29wLmM6NTUyKQotICAgCi1SZXByb2R1Y2libGUgd2l0aDoKLWNkIGdkYi90ZXN0c3VpdGUKLWcr KyAtbyBnZGIudGhyZWFkcy90bHMgZ2RiLnRocmVhZHMvdGxzeywyfS5jIC1tMzIgLXB0aHJlYWQK LS4uL2dkYnNlcnZlci9nZGJzZXJ2ZXIgOjEyMzQgZ2RiLnRocmVhZHMvdGxzCi0uLi9nZGIgLWJh dGNoIGdkYi50aHJlYWRzL3RscyAtZXggJ3RhcmdldCByZW1vdGUgOjEyMzQnIC1leCAnYiBzcGlu JyAtZXggYyAtZXggJ3AgYV90aHJlYWRfbG9jYWwnCi0KLUl0IGlzIG1vcmUgZWFzaWx5IHJlcHJv ZHVjaWJsZSBldmVuIHdpdGhvdXQgdmFsZ3JpbmQgdXNpbmcgcy8weDAwLzB4ZmYvIGluIHRoZQot YXR0YWNoZWQgcGF0Y2guICBJdCB3aWxsIHRoZW4gdHVybiB0aGUgb3V0cHV0IG9mIHJlcHJvZHVj ZXIgYWJvdmU6Ci0kMSA9IDAKLS0+Ci1DYW5ub3QgZmluZCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBm b3IgVGhyZWFkIDI5MDQ0LCBleGVjdXRhYmxlIGZpbGUgLi4uL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvdGxzOgotUmVtb3RlIHRhcmdldCBmYWlsZWQgdG8gcHJvY2VzcyBxR2V0VExTQWRkciBy ZXF1ZXN0Ci0KLQotVGhhbmtzLAotSmFuCi0KLS0tU3Q3Vkl1RUdaNmRscHUxMwotQ29udGVudC1U eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBp bmxpbmU7IGZpbGVuYW1lPSIwMGZmLnBhdGNoIgotCi1nZGIvZ2Ric2VydmVyLwotMjAxNC0wNC0x MCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGdk YnNlcnZlciBxR2V0VExTQWRkciBmb3IgeDg2XzY0IC1tMzIuCi0JKiBsaW51eC14ODYtbG93LmMg KFg4Nl82NF9VU0VSX1JFR1MpOiBOZXcuCi0JKHg4Nl9maWxsX2dyZWdzZXQpOiBDYWxsIG1lbXNl dCBmb3IgQlVGIGZpcnN0IGluIHg4Nl82NCAtbTMyIGNhc2UuCi0KLWRpZmYgLS1naXQgYS9nZGIv Z2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5j Ci1pbmRleCAzM2I1ZjI2Li4xMTU2ZTU4IDEwMDY0NAotLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51 eC14ODYtbG93LmMKLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCi1AQCAtMTg1 LDYgKzE4NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgeDg2XzY0X3JlZ21hcFtdID0KLSB9OwotIAot ICNkZWZpbmUgWDg2XzY0X05VTV9SRUdTIChzaXplb2YgKHg4Nl82NF9yZWdtYXApIC8gc2l6ZW9m ICh4ODZfNjRfcmVnbWFwWzBdKSkKLSsjZGVmaW5lIFg4Nl82NF9VU0VSX1JFR1MgKEdTICsgMSkK LSAKLSAjZWxzZSAvKiAhIF9feDg2XzY0X18gKi8KLSAKLUBAIC0zNDMsNiArMzQ0LDEwIEBAIHg4 Nl9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLSAJ ICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRf cmVnbWFwW2ldKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSsKLSsgIC8qIDMyLWJpdCBpbmZl cmlvciByZWdpc3RlcnMgbmVlZCB0byBiZSB6ZXJvLWV4dGVuZGVkLgotKyAgICAgQ2FsbGVycyB3 b3VsZCByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG90aGVyd2lzZS4gICovCi0rICBtZW1zZXQg KGJ1ZiwgMHgwMCwgWDg2XzY0X1VTRVJfUkVHUyAqIDgpOwotICNlbmRpZgotIAotICAgZm9yIChp ID0gMDsgaSA8IEkzODZfTlVNX1JFR1M7IGkrKykKLQotLS1TdDdWSXVFR1o2ZGxwdTEzLS0KLQoK ZGlmZiAtLWdpdCBhL2dkYi1zdGF0aWMtdGxzLTJvZjIucGF0Y2ggYi9nZGItc3RhdGljLXRscy0y b2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmRkMWIzLi4wMDAwMDAw Ci0tLSBhL2dkYi1zdGF0aWMtdGxzLTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjYg KzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDQvbXNn MDAxNTUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggVExTIGFjY2VzcyBmb3IgLXN0YXRpYyAt cHRocmVhZAotCi0KLS0tcXRaRmVoSHNLZ3dTNXJQegotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotSGksCi0K LXRlc3RjYXNlIHJlc3VsdHMgbWF5IGRlcGVuZCBvbiBwYXRjaDoKLQlbcGF0Y2hdIEZpeCBnZGJz ZXJ2ZXIgcUdldFRMU0FkZHIgZm9yIHg4Nl82NCAtbTMyCi0JaHR0cHM6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDE0LTA0L21zZzAwMTU0Lmh0bWwKLQlNZXNzYWdlLUlEOiA8MjAx NDA0MTAxMTQ5MDEuR0ExNjQxMUBob3N0Mi5qYW5rcmF0b2NodmlsLm5ldD4KLQotVGhlcmUgaXM6 Ci0gKiBnZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cCB0byB0ZXN0IC1zdGF0aWMgLXB0aHJl YWQgJ2luZm8gdGhyZWFkcycKLSAqIGdkYi50aHJlYWRzL3Rscy5leHAgdG8gdGVzdCBUTFMgYWNj ZXNzIChfX3RocmVhZCB2YXJpYWJsZXMpCi1idXQgbm8gdGVzdGNhc2UgdG8gdGVzdCBib3RoIHRv Z2V0aGVyIC0gaXQgZXZlbiBkb2VzIG5vdCB3b3JrLgotCi1JIGhhdmUgcG9zdGVkOgotCVRMUyB2 YXJpYWJsZXMgYWNjZXNzIGZvciAtc3RhdGljIC1scHRocmVhZCBleGVjdXRhYmxlcwotCWh0dHBz Oi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1oZWxwLzIwMTQtMDMvbXNnMDAwMjQuaHRtbAotYW5k IHRoZSBHREIgcGF0Y2ggYmVsb3cgaGFzIGJlZW4gY29uZmlybWVkIGFzIE9LIGZvciBjdXJyZW50 IGdsaWJjcy4KLQotRnV0dXJlIGdsaWJjcyBtYXkgaW1wbGVtZW50IG1vcmUgbmF0aXZlIHN1cHBv cnQgZm9yIC1zdGF0aWMgLXB0aHJlYWQgVExTCi0JaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6 aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTY4MjgKLXdoaWNoIHdpbGwgcmVxdWlyZSBhbHNvIHNvbWUg bmV3IEdEQiBzdXBwb3J0LgotCi1TdGlsbCB0aGUgcGF0Y2ggYmVsb3cgaW1wbGVtZW50cyB0aGUg ZmVhdHVyZSBpbiBhIGZ1bGx5IGZ1bmN0aW9uYWwgd2F5IGJhY2t3YXJkCi1jb21wYXRpYmxlIHdp dGggY3VycmVudCBnbGliY3MsIGl0IGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBnbGliYyBzb3Vy Y2UgbGluZToKLQljc3UvbGliYy10bHMuYwotCW1haW5fbWFwLT5sX3Rsc19tb2RpZCA9IDE7Ci0K LU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMn0tZmVkb3JhcmF3aGlkZS1saW51 eC1nbnUuCi0KLQotVGhhbmtzLAotSmFuCi0KLS0tcXRaRmVoSHNLZ3dTNXJQegotQ29udGVudC1U eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBp bmxpbmU7IGZpbGVuYW1lPSJzdGF0aWN0aHJlYWQucGF0Y2giCi0KLWdkYi8KLTIwMTQtMDQtMTAg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBUTFMg YWNjZXNzIGZvciAtc3RhdGljIC1wdGhyZWFkLgotCSogbGludXgtdGhyZWFkLWRiLmMgKHN0cnVj dCB0aHJlYWRfZGJfaW5mbyk6IEFkZCB0ZF90aHJfdGxzYmFzZV9wLgotCSh0cnlfdGhyZWFkX2Ri X2xvYWRfMSk6IEluaXRpYWxpemUgaXQuCi0JKHRocmVhZF9kYl9nZXRfdGhyZWFkX2xvY2FsX2Fk ZHJlc3MpOiBDYWxsIGl0IGlmIExNIGlzIHplcm8uCi0JKiB0YXJnZXQuYyAodGFyZ2V0X3RyYW5z bGF0ZV90bHNfYWRkcmVzcyk6IFJlbW92ZSBMTV9BRERSIHplcm8gY2hlY2suCi0JKiB0YXJnZXQu aCAoc3RydWN0IHRhcmdldF9vcHMpICh0b19nZXRfdGhyZWFkX2xvY2FsX2FkZHJlc3MpOiBBZGQK LQlsb2FkX21vZHVsZV9hZGRyIGNvbW1lbnQuCi0KLWdkYi9nZGJzZXJ2ZXIvCi0yMDE0LTA0LTEw ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlGaXggVExT IGFjY2VzcyBmb3IgLXN0YXRpYyAtcHRocmVhZC4KLQkqIGdkYnNlcnZlci90aHJlYWQtZGIuYyAo c3RydWN0IHRocmVhZF9kYik6IEFkZCB0ZF90aHJfdGxzYmFzZV9wLgotCSh0aHJlYWRfZGJfZ2V0 X3Rsc19hZGRyZXNzKTogQ2FsbCBpdCBpZiBMT0FEX01PRFVMRSBpcyB6ZXJvLgotCSh0aHJlYWRf ZGJfbG9hZF9zZWFyY2gsIHRyeV90aHJlYWRfZGJfbG9hZF8xKTogSW5pdGlhbGl6ZSBpdC4KLQot Z2RiL3Rlc3RzdWl0ZS8KLTIwMTQtMDQtMTAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBUTFMgYWNjZXNzIGZvciAtc3RhdGljIC1wdGhyZWFkLgot CSogZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5jIDxIQVZFX1RMUz4gKHRsc3Zhcik6IE5ldy4K LQk8SEFWRV9UTFM+ICh0aHJlYWRfZnVuY3Rpb24sIG1haW4pOiBJbml0aWFsaXplIGl0LgotCSog Z2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHA6IFRyeSBnZGJfY29tcGlsZV9wdGhyZWFkcyBm b3IgJGhhdmVfdGxzLgotCUFkZCBjbGVhbl9yZXN0YXJ0LgotCTwkaGF2ZV90bHMgIT0gIiI+OiBD aGVjayBUTFNWQVIuCi0KLWRpZmYgLS1naXQgYS9nZGIvbGludXgtdGhyZWFkLWRiLmMgYi9nZGIv bGludXgtdGhyZWFkLWRiLmMKLWluZGV4IGNhNjE0YTMuLjQ1Nzg2MTAgMTAwNjQ0Ci0tLS0gYS9n ZGIvbGludXgtdGhyZWFkLWRiLmMKLSsrKyBiL2dkYi9saW51eC10aHJlYWQtZGIuYwotQEAgLTE5 Niw2ICsxOTYsOSBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8KLSAgIHRkX2Vycl9lICgqdGRfdGhy X3Rsc19nZXRfYWRkcl9wKSAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKnRoLAotIAkJCQkgICAgIHBz YWRkcl90IG1hcF9hZGRyZXNzLAotIAkJCQkgICAgIHNpemVfdCBvZmZzZXQsIHBzYWRkcl90ICph ZGRyZXNzKTsKLSsgIHRkX2Vycl9lICgqdGRfdGhyX3Rsc2Jhc2VfcCkgKGNvbnN0IHRkX3Rocmhh bmRsZV90ICp0aCwKLSsJCQkJdW5zaWduZWQgbG9uZyBpbnQgbW9kaWQsCi0rCQkJCXBzYWRkcl90 ICpiYXNlKTsKLSB9OwotIAotIC8qIExpc3Qgb2Yga25vd24gcHJvY2Vzc2VzIHVzaW5nIHRocmVh ZF9kYiwgYW5kIHRoZSByZXF1aXJlZAotQEAgLTc5OSw2ICs4MDIsNyBAQCB0cnlfdGhyZWFkX2Ri X2xvYWRfMSAoc3RydWN0IHRocmVhZF9kYl9pbmZvICppbmZvKQotICAgaW5mby0+dGRfdGFfZXZl bnRfZ2V0bXNnX3AgPSBkbHN5bSAoaW5mby0+aGFuZGxlLCAidGRfdGFfZXZlbnRfZ2V0bXNnIik7 Ci0gICBpbmZvLT50ZF90aHJfZXZlbnRfZW5hYmxlX3AgPSBkbHN5bSAoaW5mby0+aGFuZGxlLCAi dGRfdGhyX2V2ZW50X2VuYWJsZSIpOwotICAgaW5mby0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wID0g ZGxzeW0gKGluZm8tPmhhbmRsZSwgInRkX3Rocl90bHNfZ2V0X2FkZHIiKTsKLSsgIGluZm8tPnRk X3Rocl90bHNiYXNlX3AgPSBkbHN5bSAoaW5mby0+aGFuZGxlLCAidGRfdGhyX3Rsc2Jhc2UiKTsK LSAKLSAgIGlmICh0aHJlYWRfZGJfZmluZF9uZXdfdGhyZWFkc19zaWxlbnRseSAoaW5mZXJpb3Jf cHRpZCkgIT0gMCkKLSAgICAgewotQEAgLTE4MTEsMjEgKzE4MTUsMzQgQEAgdGhyZWFkX2RiX2dl dF90aHJlYWRfbG9jYWxfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSAKLSAgICAg ICBpbmZvID0gZ2V0X3RocmVhZF9kYl9pbmZvIChwdGlkX2dldF9waWQgKHB0aWQpKTsKLSAKLS0g ICAgICAvKiBnbGliYyBkb2Vzbid0IHByb3ZpZGUgdGhlIG5lZWRlZCBpbnRlcmZhY2UuICAqLwot LSAgICAgIGlmICghaW5mby0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wKQotLQl0aHJvd19lcnJvciAo VExTX05PX0xJQlJBUllfU1VQUE9SVF9FUlJPUiwKLS0JCSAgICAgXygiTm8gVExTIGxpYnJhcnkg c3VwcG9ydCIpKTsKLS0KLS0gICAgICAvKiBDYWxsZXIgc2hvdWxkIGhhdmUgdmVyaWZpZWQgdGhh dCBsbSAhPSAwLiAgKi8KLS0gICAgICBnZGJfYXNzZXJ0IChsbSAhPSAwKTsKLS0KLSAgICAgICAv KiBGaW5hbGx5LCBnZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlLiAgKi8KLS0gICAgICAv KiBOb3RlIHRoZSBjYXN0IHRocm91Z2ggdWludHB0cl90OiB0aGlzIGludGVyZmFjZSBvbmx5IHdv cmtzIGlmCi0tCSBhIHRhcmdldCBhZGRyZXNzIGZpdHMgaW4gYSBwc2FkZHJfdCwgd2hpY2ggaXMg YSBob3N0IHBvaW50ZXIuCi0tCSBTbyBhIDMyLWJpdCBkZWJ1Z2dlciBjYW4gbm90IGFjY2VzcyA2 NC1iaXQgVExTIHRocm91Z2ggdGhpcy4gICovCi0tICAgICAgZXJyID0gaW5mby0+dGRfdGhyX3Rs c19nZXRfYWRkcl9wICgmdGhyZWFkX2luZm8tPnByaXZhdGUtPnRoLAotLQkJCQkJIChwc2FkZHJf dCkodWludHB0cl90KSBsbSwKLS0JCQkJCSBvZmZzZXQsICZhZGRyZXNzKTsKLSsgICAgICBpZiAo bG0gIT0gMCkKLSsJewotKwkgIC8qIGdsaWJjIGRvZXNuJ3QgcHJvdmlkZSB0aGUgbmVlZGVkIGlu dGVyZmFjZS4gICovCi0rCSAgaWYgKCFpbmZvLT50ZF90aHJfdGxzX2dldF9hZGRyX3ApCi0rCSAg ICB0aHJvd19lcnJvciAoVExTX05PX0xJQlJBUllfU1VQUE9SVF9FUlJPUiwKLSsJCQkgXygiTm8g VExTIGxpYnJhcnkgc3VwcG9ydCIpKTsKLSsKLSsJICAvKiBOb3RlIHRoZSBjYXN0IHRocm91Z2gg dWludHB0cl90OiB0aGlzIGludGVyZmFjZSBvbmx5IHdvcmtzIGlmCi0rCSAgICAgYSB0YXJnZXQg YWRkcmVzcyBmaXRzIGluIGEgcHNhZGRyX3QsIHdoaWNoIGlzIGEgaG9zdCBwb2ludGVyLgotKwkg ICAgIFNvIGEgMzItYml0IGRlYnVnZ2VyIGNhbiBub3QgYWNjZXNzIDY0LWJpdCBUTFMgdGhyb3Vn aCB0aGlzLiAgKi8KLSsJICBlcnIgPSBpbmZvLT50ZF90aHJfdGxzX2dldF9hZGRyX3AgKCZ0aHJl YWRfaW5mby0+cHJpdmF0ZS0+dGgsCi0rCQkJCQkgICAgIChwc2FkZHJfdCkodWludHB0cl90KSBs bSwKLSsJCQkJCSAgICAgb2Zmc2V0LCAmYWRkcmVzcyk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsK LSsJICAvKiBJZiBnbGliYyBkb2Vzbid0IHByb3ZpZGUgdGhlIG5lZWRlZCBpbnRlcmZhY2UgdGhy b3cgYW4gZXJyb3IKLSsJICAgICB0aGF0IExNIGlzIHplcm8gLSBub3JtYWxseSBjYXNlcyBpdCBz aG91bGQgbm90IGJlLiAgKi8KLSsJICBpZiAoIWluZm8tPnRkX3Rocl90bHNiYXNlX3ApCi0rCSAg ICB0aHJvd19lcnJvciAoVExTX0xPQURfTU9EVUxFX05PVF9GT1VORF9FUlJPUiwKLSsJCQkgXygi VExTIGxvYWQgbW9kdWxlIG5vdCBmb3VuZCIpKTsKLSsKLSsJICAvKiBHTlUgX19saWJjX3NldHVw X3RscyBpbml0aWFsaXplcyBsX3Rsc19tb2RpZCBhcyAxLiAgKi8KLSsJICBlcnIgPSBpbmZvLT50 ZF90aHJfdGxzYmFzZV9wICgmdGhyZWFkX2luZm8tPnByaXZhdGUtPnRoLAotKwkJCQkJMSwgJmFk ZHJlc3MpOwotKwkgIGFkZHJlc3MgPSAoY2hhciAqKSBhZGRyZXNzICsgb2Zmc2V0OwotKwl9Ci0g Ci0gI2lmZGVmIFRIUkVBRF9EQl9IQVNfVERfTk9UQUxMT0MKLSAgICAgICAvKiBUaGUgbWVtb3J5 IGhhc24ndCBiZWVuIGFsbG9jYXRlZCwgeWV0LiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0 LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IDFiNDhmNzkuLmZjZTY0NmMgMTAwNjQ0Ci0tLS0gYS9n ZGIvdGFyZ2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTc1MywxMCArNzUzLDYgQEAgdGFy Z2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIENPUkVf QUREUiBvZmZzZXQpCi0gCSAgLyogRmV0Y2ggdGhlIGxvYWQgbW9kdWxlIGFkZHJlc3MgZm9yIHRo aXMgb2JqZmlsZS4gICovCi0gCSAgbG1fYWRkciA9IGdkYmFyY2hfZmV0Y2hfdGxzX2xvYWRfbW9k dWxlX2FkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLAotIAkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpmaWxlKTsKLS0JICAvKiBJZiBpdCdzIDAs IHRocm93IHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24uICAqLwotLQkgIGlmIChsbV9hZGRyID09 IDApCi0tCSAgICB0aHJvd19lcnJvciAoVExTX0xPQURfTU9EVUxFX05PVF9GT1VORF9FUlJPUiwK LS0JCQkgXygiVExTIGxvYWQgbW9kdWxlIG5vdCBmb3VuZCIpKTsKLSAKLSAJICBhZGRyID0gdGFy Z2V0LT50b19nZXRfdGhyZWFkX2xvY2FsX2FkZHJlc3MgKHRhcmdldCwgcHRpZCwKLSAJCQkJCQkg ICAgICBsbV9hZGRyLCBvZmZzZXQpOwotZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90 YXJnZXQuaAotaW5kZXggZDdjNmMzZC4uMWFiYTllMSAxMDA2NDQKLS0tLSBhL2dkYi90YXJnZXQu aAotKysrIGIvZ2RiL3RhcmdldC5oCi1AQCAtNjA1LDcgKzYwNSw4IEBAIHN0cnVjdCB0YXJnZXRf b3BzCi0gICAgICAgIHRocmVhZC1sb2NhbCBzdG9yYWdlIGZvciB0aGUgdGhyZWFkIFBUSUQgYW5k IHRoZSBzaGFyZWQgbGlicmFyeQotICAgICAgICBvciBleGVjdXRhYmxlIGZpbGUgZ2l2ZW4gYnkg T0JKRklMRS4gIElmIHRoYXQgYmxvY2sgb2YKLSAgICAgICAgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ug aGFzbid0IGJlZW4gYWxsb2NhdGVkIHlldCwgdGhpcyBmdW5jdGlvbgotLSAgICAgICBtYXkgcmV0 dXJuIGFuIGVycm9yLiAgKi8KLSsgICAgICAgbWF5IHJldHVybiBhbiBlcnJvci4gIExPQURfTU9E VUxFX0FERFIgbWF5IGJlIHplcm8gZm9yIHN0YXRpY2FsbHkKLSsgICAgICAgbGlua2VkIG11bHRp dGhyZWFkZWQgaW5mZXJpb3JzLiAgKi8KLSAgICAgQ09SRV9BRERSICgqdG9fZ2V0X3RocmVhZF9s b2NhbF9hZGRyZXNzKSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSAJCQkJCSAgICAgIHB0aWRf dCBwdGlkLAotIAkJCQkJICAgICAgQ09SRV9BRERSIGxvYWRfbW9kdWxlX2FkZHIsCi1kaWZmIC0t Z2l0IGEvZ2RiL2dkYnNlcnZlci90aHJlYWQtZGIuYyBiL2dkYi9nZGJzZXJ2ZXIvdGhyZWFkLWRi LmMKLWluZGV4IGY2M2UzOWUuLmYyMzM1YWIgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2Ric2VydmVyL3Ro cmVhZC1kYi5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL3RocmVhZC1kYi5jCi1AQCAtODgsNiArODgs OSBAQCBzdHJ1Y3QgdGhyZWFkX2RiCi0gICB0ZF9lcnJfZSAoKnRkX3Rocl90bHNfZ2V0X2FkZHJf cCkgKGNvbnN0IHRkX3RocmhhbmRsZV90ICp0aCwKLSAJCQkJICAgICBwc2FkZHJfdCBtYXBfYWRk cmVzcywKLSAJCQkJICAgICBzaXplX3Qgb2Zmc2V0LCBwc2FkZHJfdCAqYWRkcmVzcyk7Ci0rICB0 ZF9lcnJfZSAoKnRkX3Rocl90bHNiYXNlX3ApIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGgsCi0r CQkJCXVuc2lnbmVkIGxvbmcgaW50IG1vZGlkLAotKwkJCQlwc2FkZHJfdCAqYmFzZSk7Ci0gICBj b25zdCBjaGFyICoqICgqdGRfc3ltYm9sX2xpc3RfcCkgKHZvaWQpOwotIH07Ci0gCi1AQCAtNDk3 LDcgKzUwMCwxMCBAQCB0aHJlYWRfZGJfZ2V0X3Rsc19hZGRyZXNzIChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRocmVhZCwgQ09SRV9BRERSIG9mZnNldCwKLSAgIGlmICh0aHJlYWRfZGIgPT0gTlVMTCB8 fCAhdGhyZWFkX2RiLT5hbGxfc3ltYm9sc19sb29rZWRfdXApCi0gICAgIHJldHVybiBURF9FUlI7 Ci0gCi0tICBpZiAodGhyZWFkX2RiLT50ZF90aHJfdGxzX2dldF9hZGRyX3AgPT0gTlVMTCkKLSsg IC8qIElmIHRkX3Rocl90bHNfZ2V0X2FkZHIgaXMgbWlzc2luZyByYXRoZXIgZG8gbm90IGV4cGVj dCB0ZF90aHJfdGxzYmFzZQotKyAgICAgY291bGQgd29yay4gICovCi0rICBpZiAodGhyZWFkX2Ri LT50ZF90aHJfdGxzX2dldF9hZGRyX3AgPT0gTlVMTAotKyAgICAgIHx8IChsb2FkX21vZHVsZSA9 PSAwICYmIHRocmVhZF9kYi0+dGRfdGhyX3Rsc2Jhc2VfcCA9PSBOVUxMKSkKLSAgICAgcmV0dXJu IC0xOwotIAotICAgbHdwID0gZ2V0X3RocmVhZF9sd3AgKHRocmVhZCk7Ci1AQCAtNTA4LDEyICs1 MTQsMjMgQEAgdGhyZWFkX2RiX2dldF90bHNfYWRkcmVzcyAoc3RydWN0IHRocmVhZF9pbmZvICp0 aHJlYWQsIENPUkVfQUREUiBvZmZzZXQsCi0gCi0gICBzYXZlZF9pbmZlcmlvciA9IGN1cnJlbnRf aW5mZXJpb3I7Ci0gICBjdXJyZW50X2luZmVyaW9yID0gdGhyZWFkOwotLSAgLyogTm90ZSB0aGUg Y2FzdCB0aHJvdWdoIHVpbnRwdHJfdDogdGhpcyBpbnRlcmZhY2Ugb25seSB3b3JrcyBpZgotLSAg ICAgYSB0YXJnZXQgYWRkcmVzcyBmaXRzIGluIGEgcHNhZGRyX3QsIHdoaWNoIGlzIGEgaG9zdCBw b2ludGVyLgotLSAgICAgU28gYSAzMi1iaXQgZGVidWdnZXIgY2FuIG5vdCBhY2Nlc3MgNjQtYml0 IFRMUyB0aHJvdWdoIHRoaXMuICAqLwotLSAgZXJyID0gdGhyZWFkX2RiLT50ZF90aHJfdGxzX2dl dF9hZGRyX3AgKCZsd3AtPnRoLAotLQkJCQkJICAocHNhZGRyX3QpICh1aW50cHRyX3QpIGxvYWRf bW9kdWxlLAotLQkJCQkJICBvZmZzZXQsICZhZGRyKTsKLSsKLSsgIGlmIChsb2FkX21vZHVsZSAh PSAwKQotKyAgICB7Ci0rICAgICAgLyogTm90ZSB0aGUgY2FzdCB0aHJvdWdoIHVpbnRwdHJfdDog dGhpcyBpbnRlcmZhY2Ugb25seSB3b3JrcyBpZgotKwkgYSB0YXJnZXQgYWRkcmVzcyBmaXRzIGlu IGEgcHNhZGRyX3QsIHdoaWNoIGlzIGEgaG9zdCBwb2ludGVyLgotKwkgU28gYSAzMi1iaXQgZGVi dWdnZXIgY2FuIG5vdCBhY2Nlc3MgNjQtYml0IFRMUyB0aHJvdWdoIHRoaXMuICAqLwotKyAgICAg IGVyciA9IHRocmVhZF9kYi0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wICgmbHdwLT50aCwKLSsJCQkJ CSAgICAgKHBzYWRkcl90KSAodWludHB0cl90KSBsb2FkX21vZHVsZSwKLSsJCQkJCSAgICAgIG9m ZnNldCwgJmFkZHIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBHTlUgX19s aWJjX3NldHVwX3RscyBpbml0aWFsaXplcyBsX3Rsc19tb2RpZCBhcyAxLiAgKi8KLSsgICAgICBl cnIgPSB0aHJlYWRfZGItPnRkX3Rocl90bHNiYXNlX3AgKCZsd3AtPnRoLCAxLCAmYWRkcik7Ci0r ICAgICAgYWRkciA9IChjaGFyICopIGFkZHIgKyBvZmZzZXQ7Ci0rICAgIH0KLSsKLSAgIGN1cnJl bnRfaW5mZXJpb3IgPSBzYXZlZF9pbmZlcmlvcjsKLSAgIGlmIChlcnIgPT0gVERfT0spCi0gICAg IHsKLUBAIC01NjUsNiArNTgyLDcgQEAgdGhyZWFkX2RiX2xvYWRfc2VhcmNoICh2b2lkKQotICAg dGRiLT50ZF90YV9zZXRfZXZlbnRfcCA9ICZ0ZF90YV9zZXRfZXZlbnQ7Ci0gICB0ZGItPnRkX3Rh X2V2ZW50X2dldG1zZ19wID0gJnRkX3RhX2V2ZW50X2dldG1zZzsKLSAgIHRkYi0+dGRfdGhyX3Rs c19nZXRfYWRkcl9wID0gJnRkX3Rocl90bHNfZ2V0X2FkZHI7Ci0rICB0ZGItPnRkX3Rocl90bHNi YXNlX3AgPSAmdGRfdGhyX3Rsc2Jhc2U7Ci0gCi0gICByZXR1cm4gMTsKLSB9Ci1AQCAtNjMzLDYg KzY1MSw3IEBAIHRyeV90aHJlYWRfZGJfbG9hZF8xICh2b2lkICpoYW5kbGUpCi0gICBDSEsgKDAs IHRkYi0+dGRfdGFfc2V0X2V2ZW50X3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGFfc2V0X2V2ZW50 IikpOwotICAgQ0hLICgwLCB0ZGItPnRkX3RhX2V2ZW50X2dldG1zZ19wID0gZGxzeW0gKGhhbmRs ZSwgInRkX3RhX2V2ZW50X2dldG1zZyIpKTsKLSAgIENISyAoMCwgdGRiLT50ZF90aHJfdGxzX2dl dF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGhyX3Rsc19nZXRfYWRkciIpKTsKLSsgIENI SyAoMCwgdGRiLT50ZF90aHJfdGxzYmFzZV9wID0gZGxzeW0gKGhhbmRsZSwgInRkX3Rocl90bHNi YXNlIikpOwotIAotICN1bmRlZiBDSEsKLSAKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3N0YXRpY3RocmVhZHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3Rh dGljdGhyZWFkcy5jCi1pbmRleCBmOThmNGYxLi45M2JlZjU2IDEwMDY0NAotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5jCi1AQCAtMjgsMTAgKzI4LDE3IEBACi0gCi0gc2Vt X3Qgc2VtYXBob3JlOwotIAotKyNpZmRlZiBIQVZFX1RMUwotK19fdGhyZWFkIGludCB0bHN2YXI7 Ci0rI2VuZGlmCi0rCi0gdm9pZCAqCi0gdGhyZWFkX2Z1bmN0aW9uICh2b2lkICphcmcpCi0gewot LSAgcHJpbnRmICgiVGhyZWFkIGV4ZWN1dGluZ1xuIik7Ci0rI2lmZGVmIEhBVkVfVExTCi0rICB0 bHN2YXIgPSAyOwotKyNlbmRpZgotKyAgcHJpbnRmICgiVGhyZWFkIGV4ZWN1dGluZ1xuIik7IC8q IHRsc3Zhci1pcy1zZXQgKi8KLSAgIHdoaWxlIChzZW1fd2FpdCAoJnNlbWFwaG9yZSkgIT0gMCkK LSAgICAgewotICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKLUBAIC01Nyw2ICs2NCw5IEBAIG1h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAK LSsjaWZkZWYgSEFWRV9UTFMKLSsgIHRsc3ZhciA9IDE7Ci0rI2VuZGlmCi0gCi0gICAvKiBDcmVh dGUgYSB0aHJlYWQsIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLiAgKi8KLSAgIHsKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAotaW5kZXggODBiMGJhOC4uOWZh NjI1YSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFk cy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHAK LUBAIC0yMiwxMSArMjIsMTYgQEAKLSBzdGFuZGFyZF90ZXN0ZmlsZQotIHNldCBzdGF0aWNfZmxh ZyAiLXN0YXRpYyIKLSAKLS1pZiB7W2dkYl9jb21waWxlX3B0aHJlYWRzICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCi0tCSBleGVjdXRhYmxlIFwKLS0JIFts aXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPSR7c3RhdGljX2ZsYWd9IiBcCi0tCSAgICAgXV0g IT0gIiIgfSB7Ci0tICAgIHJldHVybiAtMQotK2ZvcmVhY2ggaGF2ZV90bHMgeyAiLURIQVZFX1RM UyIgIiIgfSB7Ci0rICAgIGlmIHtbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIFwKLSsJICAgICBleGVjdXRhYmxlIFwKLSsJ ICAgICBbbGlzdCBkZWJ1ZyAiYWRkaXRpb25hbF9mbGFncz0ke3N0YXRpY19mbGFnfSAke2hhdmVf dGxzfSIgXAotKwkJIF1dID09ICIiIH0gewotKwlicmVhawotKyAgICB9Ci0rICAgIGlmIHsgJGhh dmVfdGxzID09ICIiIH0gewotKwlyZXR1cm4gLTEKLSsgICAgfQotIH0KLSAKLSBjbGVhbl9yZXN0 YXJ0ICR7YmluZmlsZX0KLUBAIC04OSwzICs5NCwxOCBAQCBnZGJfdGVzdF9tdWx0aXBsZSAicXVp dCIgIiR0ZXN0IiB7Ci0gICAgICAgICBwYXNzICIkdGVzdCIKLSAgICAgfQotIH0KLStjbGVhbl9y ZXN0YXJ0ICR7YmluZmlsZX0KLSsKLSsKLStpZiB7ICIkaGF2ZV90bHMiICE9ICIiIH0gewotKyAg ICBpZiAhW3J1bnRvX21haW5dIHsKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSsgICAgZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInRsc3Zhci1pcy1zZXQiXQotKyAgICBnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidGxzdmFyLWlzLXNldCIgIi4qIHRsc3Zhci1pcy1zZXQgLioi Ci0rICAgIGdkYl90ZXN0ICJwIHRsc3ZhciIgIiA9IDIiICJ0bHN2YXIgaW4gdGhyZWFkIgotKyAg ICBnZGJfdGVzdCAidGhyZWFkIDEiICIuKiIKLSsgICAgIyBVbndpbmQgZnJvbSBwdGhyZWFkX2pv aW4uCi0rICAgIGdkYl90ZXN0ICJ1cCAxMCIgIiBpbiBtYWluIC4qIgotKyAgICBnZGJfdGVzdCAi cCB0bHN2YXIiICIgPSAxIiAidGxzdmFyIGluIG1haW4iCi0rfQotCi0tLXF0WkZlaEhzS2d3UzVy UHotLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXRlc3RzdWl0ZS1ub2hvc3RpZC5wYXRjaCBiL2dkYi10 ZXN0c3VpdGUtbm9ob3N0aWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRj ODgwYTguLjAwMDAwMDAKLS0tIGEvZ2RiLXRlc3RzdWl0ZS1ub2hvc3RpZC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDUwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDE0LTAyL21zZzAwMTU4Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gdGVzdHN1aXRlOiBG aXggIkVSUk9SOiBubyBmaWxlaWQgZm9yIgotCi0KLS0tYXpMSEZOeU4zMllDUUdDVQotQ29udGVu dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9u OiBpbmxpbmUKLQotSGksCi0KLWEzNWNmYjQwMDdjZWU4Y2I4NDEwNjQxMmNkMTdmNGUxMmYxMzM0 NWIgaXMgdGhlIGZpcnN0IGJhZCBjb21taXQKLWNvbW1pdCBhMzVjZmI0MDA3Y2VlOGNiODQxMDY0 MTJjZDE3ZjRlMTJmMTMzNDViCi1BdXRob3I6IE1hY2llaiBXLiBSb3p5Y2tpIDxtYWNyb0Bjb2Rl c291cmNlcnkuY29tPgotRGF0ZTogICBUaHUgT2N0IDI0IDIzOjMyOjMwIDIwMTMgKzAxMDAKLQot JCBydW50ZXN0IGdkYi5iYXNlL3NvbGliLWRpc2MuZXhwCi1SdW5uaW5nIC4vZ2RiLmJhc2Uvc29s aWItZGlzYy5leHAgLi4uCi1FUlJPUjogbm8gZmlsZWlkIGZvciBob3N0MQotWy4uLl0KLQotCi1K YW4KLQotLS1hekxIRk55TjMyWUNRR0NVCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJz ZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9ImdkYmZp bmlzaC5wYXRjaCIKLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTQtMDItMDYgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCAiRVJST1I6IG5vIGZpbGVpZCBm b3IiIGluIHRoZSB0ZXN0c3VpdGUuCi0JKiBsaWIvZ2RiLmV4cCAoZ2RiX2ZpbmlzaCk6IENoZWNr IGdkYl9zcGF3bl9pZC4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAg Yi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRleCA1MzNiODFiLi41YzUzY2RmIDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAotQEAgLTM3MDgsNyArMzcwOCw4IEBAIHByb2MgZ2RiX2ZpbmlzaCB7IH0gewot ICAgICBnbG9iYWwgY2xlYW5maWxlcwotIAotICAgICAjIEdpdmUgcGVyc2lzdGVudCBnZGJzZXJ2 ZXIgYSBjaGFuY2UgdG8gdGVybWluYXRlIGJlZm9yZSBHREIgaXMga2lsbGVkLgotLSAgICBpZiB7 W2luZm8gZXhpc3RzIGdkYnNlcnZlcl9yZWNvbm5lY3RfcF0gJiYgJGdkYnNlcnZlcl9yZWNvbm5l Y3RfcH0gewotKyAgICBpZiB7W2luZm8gZXhpc3RzIGdkYnNlcnZlcl9yZWNvbm5lY3RfcF0gJiYg JGdkYnNlcnZlcl9yZWNvbm5lY3RfcAotKwkmJiBbaW5mbyBleGlzdHMgZ2RiX3NwYXduX2lkXX0g ewotIAlzZW5kX2dkYiAia2lsbFxuIjsKLSAJZ2RiX2V4cGVjdCAxMCB7Ci0gCSAgICAtcmUgInkg b3IgbiIgewotCi0tLWF6TEhGTnlOMzJZQ1FHQ1UtLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUwMm9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTAyb2YxNS5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyZTNmNS4uMDAwMDAwMAotLS0gYS9n ZGItdXBzdHJlYW0tcHBjNjRsZTAyb2YxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICsw LDAgQEAKLWNvbW1pdCA3MThlZTRkYzliMDk0OTE3MDc0MjBhZTQwM2FkMWNlOGRmZGI2MWIyCi1B dXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTog ICBUaHUgSmFuIDMwIDE5OjEyOjM1IDIwMTQgKzAxMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBB VF9IV0NBUDIgYXV4diBlbnRyeQotICAgIAotICAgIFJlY2VudCBwcGM2NCBMaW51eCBrZXJuZWxz IHByb3ZpZGUgYSBuZXcgYXV4diBlbnRyeSBBVF9IV0NBUDIsCi0gICAgd2hpY2ggaXMgY3VycmVu dGx5IG5vdCByZWNvZ25pemVkIGJ5IEdEQiwgY2F1c2luZyBldmVyeSB1c2Ugb2YKLSAgICAiaW5m byBhdXh2IiB0byBzaG93IGFuIGVycm9yLgotICAgIAotICAgIFRoaXMgY29tbWl0IGFkZHMgdGhl IEFUX0hXQ0FQMiBkZWZpbmUgdG8gaW5jbHVkZS9lbGYvY29tbW9uLmgKLSAgICBhbmQgaGFuZGxl cyBpdCBpbiBHREIuCi0gICAgCi0gICAgaW5jbHVkZS9lbGYvQ2hhbmdlTG9nOgotICAgIAotICAg IAkqIGNvbW1vbi5oIChBVF9IV0NBUDIpOiBEZWZpbmUuCi0gICAgCi0gICAgZ2RiL0NoYW5nZUxv ZzoKLSAgICAKLSAgICAJKiBhdXh2LmMgKGZwcmludF90YXJnZXRfYXV4dik6IEhhbmRsZSBBVF9I V0NBUDIuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0x LDMgKzEsNyBAQAotKzIwMTQtMDEtMzAgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmli bS5jb20+Ci0rCi0rCSogYXV4di5jIChmcHJpbnRfdGFyZ2V0X2F1eHYpOiBIYW5kbGUgQVRfSFdD QVAyLgotKwotIDIwMTQtMDEtMjkgIEpvc2UgRS4gTWFyY2hlc2kgIDxqb3NlLm1hcmNoZXNpQG9y YWNsZS5jb20+Ci0gCi0gCSogc3BhcmM2NC1saW51eC10ZGVwLmMgKHNwYXJjNjRfbGludXhfc3Rl cF90cmFwKTogR2V0IFBDIGZyb20KLS0tLSBhL2dkYi9hdXh2LmMKLSsrKyBiL2dkYi9hdXh2LmMK LUBAIC00NDIsNiArNDQyLDcgQEAgZnByaW50X3RhcmdldF9hdXh2IChzdHJ1Y3QgdWlfZmlsZSAq ZmlsZSwgc3RydWN0IHRhcmdldF9vcHMgKm9wcykKLSAJICBUQUcgKEFUX0lHTk9SRVBQQywgXygi RW50cnkgc2hvdWxkIGJlIGlnbm9yZWQiKSwgZGVjKTsKLSAJICBUQUcgKEFUX0JBU0VfUExBVEZP Uk0sIF8oIlN0cmluZyBpZGVudGlmeWluZyBiYXNlIHBsYXRmb3JtIiksIHN0cik7Ci0gCSAgVEFH IChBVF9SQU5ET00sIF8oIkFkZHJlc3Mgb2YgMTYgcmFuZG9tIGJ5dGVzIiksIGhleCk7Ci0rCSAg VEFHIChBVF9IV0NBUDIsIF8oIkV4dGVuc2lvbiBvZiBBVF9IV0NBUCIpLCBoZXgpOwotIAkgIFRB RyAoQVRfRVhFQ0ZOLCBfKCJGaWxlIG5hbWUgb2YgZXhlY3V0YWJsZSIpLCBzdHIpOwotIAkgIFRB RyAoQVRfU0VDVVJFLCBfKCJCb29sZWFuLCB3YXMgZXhlYyBzZXR1aWQtbGlrZT8iKSwgZGVjKTsK LSAJICBUQUcgKEFUX1NZU0lORk8sIF8oIlNwZWNpYWwgc3lzdGVtIGluZm8vZW50cnkgcG9pbnRz IiksIGhleCk7Ci0jIyMgYS9pbmNsdWRlL2VsZi9DaGFuZ2VMb2cKLSMjIyBiL2luY2x1ZGUvZWxm L0NoYW5nZUxvZwotIyMgLTEsMyArMSw3IEBACi0rMjAxNC0wMS0zMCAgVWxyaWNoIFdlaWdhbmQg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotKwkqIGNvbW1vbi5oIChBVF9IV0NBUDIpOiBEZWZp bmUuCi0rCi0gMjAxMy0xMi0xMyAgS3Vhbi1MaW4gQ2hlbiAgPGt1YW5saW5jaGVudHdAZ21haWwu Y29tPgotIAkgICAgV2VpLUNoZW5nIFdhbmcgIDxjb2xlOTQ1QGdtYWlsLmNvbT4KLSAKLS0tLSBh L2luY2x1ZGUvZWxmL2NvbW1vbi5oCi0rKysgYi9pbmNsdWRlL2VsZi9jb21tb24uaAotQEAgLTk1 OSw2ICs5NTksNyBAQAotICNkZWZpbmUgQVRfQkFTRV9QTEFURk9STSAyNAkJLyogU3RyaW5nIGlk ZW50aWZ5aW5nIHJlYWwgcGxhdGZvcm0sCi0gCQkJCQkgICBtYXkgZGlmZmVyIGZyb20gQVRfUExB VEZPUk0uICAqLwotICNkZWZpbmUgQVRfUkFORE9NCTI1CQkvKiBBZGRyZXNzIG9mIDE2IHJhbmRv bSBieXRlcy4gICovCi0rI2RlZmluZSBBVF9IV0NBUDIJMjYJCS8qIEV4dGVuc2lvbiBvZiBBVF9I V0NBUC4gICovCi0gI2RlZmluZSBBVF9FWEVDRk4JMzEJCS8qIEZpbGVuYW1lIG9mIGV4ZWN1dGFi bGUuICAqLwotIC8qIFBvaW50ZXIgdG8gdGhlIGdsb2JhbCBzeXN0ZW0gcGFnZSB1c2VkIGZvciBz eXN0ZW0gY2FsbHMgYW5kIG90aGVyCi0gICAgbmljZSB0aGluZ3MuICAqLwoKZGlmZiAtLWdpdCBh L2dkYi11cHN0cmVhbS1wcGM2NGxlMDNvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUw M29mMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYjRmY2YuLjAwMDAw MDAKLS0tIGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzNiArMCwwIEBACi1jb21taXQgMzZjMjRkOTUzODI1NzJlOWNmNDA5NTcxMmE4NjEzNjY0 ZDcxNjVjYwotQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNv bT4KLURhdGU6ICAgVHVlIEZlYiA0IDE4OjE5OjUxIDIwMTQgKzAxMDAKLQotICAgIERvY3VtZW50 IHN1cHBvcnQgZm9yIHBvd2VycGM2NGxlLSotbGludXgqIHRhcmdldAotICAgIAotICAgIGdkYi9D aGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogTkVXUzogRG9jdW1lbnQgbmV3IHRhcmdldCBwb3dlcnBj NjRsZS0qLWxpbnV4Ki4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxv ZwotIyMgLTEsMyArMSw3IEBACi0rMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdh bmRAZGUuaWJtLmNvbT4KLSsKLSsJKiBORVdTOiBEb2N1bWVudCBuZXcgdGFyZ2V0IHBvd2VycGM2 NGxlLSotbGludXgqLgotKwotIDIwMTQtMDItMDQgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0Bn bnUub3JnPgotIAotIAkqIHNwYXJjNjRvYnNkLXRkZXAuYyAoc3BhcmM2NG9ic2RfZ3JlZ3NldCk6 IE5ldyB2YXJpYWJsZS4KLUluZGV4OiBnZGItNy43LjEvZ2RiL05FV1MKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy43LjEub3JpZy9nZGIvTkVXUwkyMDE0LTA1LTA5IDE5OjIxOjU3Ljc5ODIzNTAwMiAr MDIwMAotKysrIGdkYi03LjcuMS9nZGIvTkVXUwkyMDE0LTA1LTA5IDE5OjIyOjMwLjIwNjIzOTE0 NSArMDIwMAotQEAgLTEsNiArMSwxMSBAQAotIAkJV2hhdCBoYXMgY2hhbmdlZCBpbiBHREI/Ci0g CSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0rKioqIENoYW5nZXMgc2lu Y2UgR0RCIDcuNwotKwotKyogTmV3IHRhcmdldHMKLStQb3dlclBDNjQgR05VL0xpbnV4IGxpdHRs ZS1lbmRpYW4JcG93ZXJwYzY0bGUtKi1saW51eCoKLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgNy43 Ci0gCi0gKiBHREIgbm93IHN1cHBvcnRzIFN5c3RlbVRhcCBTRFQgcHJvYmVzIG9uIEFBcmNoNjQg R05VL0xpbnV4LgoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDRvZjE1LnBhdGNo IGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNG9mMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDFiNjczMGYuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNG9m MTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEzICswLDAgQEAKLWNvbW1pdCBlNzY1YjQ0 YzM4NTNlZDIyODUwNmZjMjJjMjc2YmVjZDYzMTk4MjM4Ci1BdXRob3I6IFVscmljaCBXZWlnYW5k IDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6MjQ6NDIg MjAxNCArMDEwMAotCi0gICAgUmVmYWN0b3IgcHBjNjQgZnVuY3Rpb24gY2FsbCBhbmQgcmV0dXJu IHZhbHVlIGhhbmRsaW5nCi0gICAgCi0gICAgVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIHBwYzY0 IGZ1bmN0aW9uIGNhbGwgYW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZyBjb2RlCi0gICAgaW4gcHBj LXN5c3YtdGRlcC5jLiAgVGhlIG1haW4gcHJvYmxlbSB0byBiZSBhZGRyZXNzZWQgYnkgdGhpcyBy ZWZhY3RvcmluZwotICAgIGlzIHRoZSBjb2RlIGR1cGxpY2F0aW9uIGNhdXNlZCBieSBjZXJ0YWlu IGFnZ3JlZ2F0ZSB0eXBlczoKLSAgICAKLSAgICBBY2NvcmRpbmcgdG8gdGhlIEFCSSwgc29tZSB0 eXBlcyBhcmUgdG8gYmUgZGVjb21wb3NlZCBpbnRvIGNvbXBvbmVudCB0eXBlcwotICAgIGZvciBw YXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZy4gIEZvciBleGFtcGxlLCBjb21wbGV4 IHR5cGVzIGFyZQotICAgIHRvIGJlIHBhc3NlZCBhcyBpZiB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5 IGNvbXBvbmVudCB3ZXJlIHNlcGFyYXRlIGFyZ3VtZW50cy4KLSAgICBTaW1pbGFybHksIGNlcnRh aW4gT3BlbkNMIHZlY3RvciB0eXBlcyBhcmUgcGFzc2VkIGFzIGlmIHRoZXkgd2VyZSBtdWx0aXBs ZQotICAgIHNlcGFyYXRlIGFyZ3VtZW50cyBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZS4gIFdp dGggdGhlIG5ldyBFTEZ2MiBBQkksCi0gICAgdGhlcmUgaXMgYW5vdGhlciBjYXNlOiAiaG9tb2dl bmVvdXMgYWdncmVnYXRlcyIgKGUuZy4gYSBzdHJ1Y3QgY29udGFpbmluZwotICAgIDQgZmxvYXRz KSBhcmUgcGFzc2VkIGluIG11bHRpcGxlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBhcyB3ZWxs LgotICAgIAotICAgIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGNvZGUgaXMgbm90IHN0cnVj dHVyZWQgdG8gZWFzaWx5IG1vZGVsIHRoZXNlCi0gICAgQUJJIHByb3BlcnRpZXMuICBGb3IgZXhh bXBsZSwgY29kZSB0byBwYXNzIGNvbXBsZXggdmFsdWVzIHJlLWltcGxlbWVudHMKLSAgICBjb2Rl IHRvIHBhc3MgdGhlIHVuZGVybHlpbmcgKGZsb2F0aW5nLXBvaW50KSB0eXBlLiAgVGhpcyBoYXMg YWxyZWFkeQotICAgIGxlZCB0byBzb21lIHVuZm9ydHVuYXRlIGNvZGUgZHVwbGljYXRpb24sIGFu ZCB3aXRoIHRoZSBhZGRpdGlvbiBvZgotICAgIEVMRnYyIEFCSSBzdXBwb3J0LCBJIHdvdWxkIGhh dmUgaGFkIHRvIGFkZCB5ZXQgbW9yZSBzdWNoIGR1cGxpY2F0aW9uLgotICAgIAotICAgIFRvIGF2 b2lkIHRoYXQsIEkndmUgZGVjaWRlZCB0byByZWZhY3RvciB0aGUgY29kZSBpbiBvcmRlciB0byBy ZS11c2UKLSAgICBzdWJyb3V0aW5lcyB0aGF0IGhhbmRsZSB0aGUgImJhc2UiIHR5cGVzIHdoZW4g aGFuZGxpbmcgdGhvc2UgYWdncmVnYXRlCi0gICAgdHlwZXMuICBUaGlzIHdhcyBub3QgaW50ZW5k ZWQgdG8gY2F1c2UgYW55IGRpZmZlcmVuY2Ugb24gY3VycmVudAotICAgIChFTEZ2MSkgQUJJIGNv ZGUsIGJ1dCBpbiBmYWN0IGl0IGZpeGVzIGEgYnVnOgotICAgIAotICAgIEZBSUw6IGdkYi5iYXNl L3ZhcmFyZ3MuZXhwOiBwcmludCBmaW5kX21heF9mbG9hdF9yZWFsKDQsIGZjMSwgZmMyLCBmYzMs IGZjNCkKLSAgICAKLSAgICBUaGlzIHdhcyBjYXVzZWQgYnkgdGhlIG9sZCBjb2RlIGluIHBwYzY0 X3N5c3ZfYWJpX3B1c2hfZmxvYXQgaW5jb3JyZWN0bHkKLSAgICBoYW5kbGluZyBmbG9hdGluZy1w b2ludCBhcmd1bWVudHMgdG8gdmFyYXJnIHJvdXRpbmVzLCB3aGljaCBqdXN0IGhhcHBlbnMKLSAg ICB0byB3b3JrIG91dCBjb3JyZWN0bHkgYXV0b21hdGljYWxseSBpbiB0aGUgcmVmYWN0b3JlZCBj b2RlIC4uLgotICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBjLXN5c3Yt dGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRhdGUgY29tbWVudC4K LSAgICAJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0cnVjdHVyZS4KLSAg ICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCi0gICAgCShwcGM2NF9zeXN2 X2FiaV9wdXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KLSAgICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hf aW50ZWdlcik6IExpa2V3aXNlLgotICAgIAkocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogTGlr ZXdpc2UuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtld2lzZS4KLSAgICAJ KHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KLSAgICAJKHBwYzY0X3N5c3Zf YWJpX3B1c2hfZHVtbXlfY2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91dGluZXMu Ci0gICAgCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlvbi4K LSAgICAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4K LQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxvZwotIyMgLTEsNSArMSwx OSBAQAotIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+ Ci0gCi0rCSogcHBjLXN5c3YtdGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUp OiBVcGRhdGUgY29tbWVudC4KLSsJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRh IHN0cnVjdHVyZS4KLSsJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCi0rCShw cGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KLSsJKHBwYzY0X3N5c3ZfYWJp X3B1c2hfaW50ZWdlcik6IExpa2V3aXNlLgotKwkocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTog TGlrZXdpc2UuCi0rCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtld2lzZS4KLSsJKHBw YzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KLSsJKHBwYzY0X3N5c3ZfYWJpX3B1 c2hfZHVtbXlfY2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91dGluZXMuCi0rCShw cGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlvbi4KLSsJKHBwYzY0 X3N5c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4KLSsKLSsyMDE0LTAy LTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkqIE5FV1M6 IERvY3VtZW50IG5ldyB0YXJnZXQgcG93ZXJwYzY0bGUtKi1saW51eCouCi0gCi0gMjAxNC0wMi0w NCAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+Ci0tLS0gYS9nZGIvcHBjLXN5c3Yt dGRlcC5jCi0rKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCi1AQCAtNjA5LDggKzYwOSw3IEBAIHBw Y19zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1 Y3QgdmFsdWUgKmZ1bmN0aW9uLAotICAgcmV0dXJuIHNwOwotIH0KLSAKLS0vKiBIYW5kbGUgdGhl IHJldHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9hdGluZyBQb2ludCB2YWx1 ZXMKLS0gICBpbiBib3RoIHBwYzMyIGFuZCBwcGM2NCwgd2hpY2ggYXJlIHRoZSBzYW1lLiAgKi8K LSsvKiBIYW5kbGUgdGhlIHJldHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9h dGluZyBQb2ludCB2YWx1ZXMuICAqLwotIHN0YXRpYyBpbnQKLSBnZXRfZGVjaW1hbF9mbG9hdF9y ZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAqdmFsdHlw ZSwKLSAJCQkJc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgZ2RiX2J5dGUgKnJlYWRidWYsCi1A QCAtMTEwMiw4MCArMTEwMSwyODcgQEAgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChD T1JFX0FERFIgY29kZV9hZGRyLCBDT1JFX0FERFIgKmRlc2NfYWRkcikKLSAgIHJldHVybiAxOwot IH0KLSAKLS0vKiBQdXNoIGEgZmxvYXQgaW4gZWl0aGVyIHJlZ2lzdGVycywgb3IgaW4gdGhlIHN0 YWNrLiAgVXNpbmcgdGhlIHBwYyA2NCBiaXQKLS0gICBTeXNWIEFCSS4KLSsvKiBTdHJ1Y3R1cmUg aG9sZGluZyB0aGUgbmV4dCBhcmd1bWVudCBwb3NpdGlvbi4gICovCi0rc3RydWN0IHBwYzY0X3N5 c3ZfYXJncG9zCi0rICB7Ci0rICAgIC8qIFJlZ2lzdGVyIGNhY2hlIGhvbGRpbmcgYXJndW1lbnQg cmVnaXN0ZXJzLiAgSWYgdGhpcyBpcyBOVUxMLAotKyAgICAgICB3ZSBvbmx5IHNpbXVsYXRlIGFy Z3VtZW50IHByb2Nlc3Npbmcgd2l0aG91dCBhY3R1YWxseSB1cGRhdGluZwotKyAgICAgICBhbnkg cmVnaXN0ZXJzIG9yIG1lbW9yeS4gICovCi0rICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7 Ci0rICAgIC8qIE5leHQgYXZhaWxhYmxlIGdlbmVyYWwtcHVycG9zZSBhcmd1bWVudCByZWdpc3Rl ci4gICovCi0rICAgIGludCBncmVnOwotKyAgICAvKiBOZXh0IGF2YWlsYWJsZSBmbG9hdGluZy1w b2ludCBhcmd1bWVudCByZWdpc3Rlci4gICovCi0rICAgIGludCBmcmVnOwotKyAgICAvKiBOZXh0 IGF2YWlsYWJsZSB2ZWN0b3IgYXJndW1lbnQgcmVnaXN0ZXIuICAqLwotKyAgICBpbnQgdnJlZzsK LSsgICAgLyogVGhlIGFkZHJlc3MsIGF0IHdoaWNoIHRoZSBuZXh0IGdlbmVyYWwgcHVycG9zZSBw YXJhbWV0ZXIKLSsgICAgICAgKGludGVnZXIsIHN0cnVjdCwgZmxvYXQsIHZlY3RvciwgLi4uKSBz aG91bGQgYmUgc2F2ZWQuICAqLwotKyAgICBDT1JFX0FERFIgZ3BhcmFtOwotKyAgICAvKiBUaGUg YWRkcmVzcywgYXQgd2hpY2ggdGhlIG5leHQgYnktcmVmZXJlbmNlIHBhcmFtZXRlcgotKyAgICAg ICAobm9uLUFsdGl2ZWMgdmVjdG9yLCB2YXJpYWJseS1zaXplZCB0eXBlKSBzaG91bGQgYmUgc2F2 ZWQuICAqLwotKyAgICBDT1JFX0FERFIgcmVmcGFyYW07Ci0rICB9OwotKwotKy8qIFZBTCBpcyBh IHZhbHVlIG9mIGxlbmd0aCBMRU4uICBTdG9yZSBpdCBpbnRvIHRoZSBhcmd1bWVudCBhcmVhIG9u IHRoZQotKyAgIHN0YWNrIGFuZCBsb2FkIGl0IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZ2VuZXJh bC1wdXJwb3NlIHJlZ2lzdGVycwotKyAgIHJlcXVpcmVkIGJ5IHRoZSBBQkksIGFuZCB1cGRhdGUg QVJHUE9TLgotKwotKyAgIElmIEFMSUdOIGlzIG5vbnplcm8sIGl0IHNwZWNpZmllcyB0aGUgbWlu aW11bSBhbGlnbm1lbnQgcmVxdWlyZWQKLSsgICBmb3IgdGhlIG9uLXN0YWNrIGNvcHkgb2YgdGhl IGFyZ3VtZW50LiAgKi8KLSAKLS0gICBUaGlzIGltcGxlbWVudHMgYSBkdW1iZWQgZG93biB2ZXJz aW9uIG9mIHRoZSBBQkkuICBJdCBhbHdheXMgd3JpdGVzCi0tICAgdmFsdWVzIHRvIG1lbW9yeSwg R1BSIGFuZCBGUFIsIGV2ZW4gd2hlbiBub3QgbmVjZXNzYXJ5LiAgRG9pbmcgdGhpcwotLSAgIGdy ZWF0bHkgc2ltcGxpZmllcyB0aGUgbG9naWMuICAqLwotK3N0YXRpYyB2b2lkCi0rcHBjNjRfc3lz dl9hYmlfcHVzaF92YWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCSBjb25zdCBiZmRf Ynl0ZSAqdmFsLCBpbnQgbGVuLCBpbnQgYWxpZ24sCi0rCQkJIHN0cnVjdCBwcGM2NF9zeXN2X2Fy Z3BvcyAqYXJncG9zKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXAgKGdkYmFyY2gpOwotKyAgaW50IG9mZnNldCA9IDA7Ci0rCi0rICAvKiBFbmZvcmNlIGFs aWdubWVudCBvZiBzdGFjayBsb2NhdGlvbiwgaWYgcmVxdWVzdGVkLiAgKi8KLSsgIGlmIChhbGln biA+IHRkZXAtPndvcmRzaXplKQotKyAgICB7Ci0rICAgICAgQ09SRV9BRERSIGFsaWduZWRfZ3Bh cmFtID0gYWxpZ25fdXAgKGFyZ3Bvcy0+Z3BhcmFtLCBhbGlnbik7Ci0rCi0rICAgICAgYXJncG9z LT5ncmVnICs9IChhbGlnbmVkX2dwYXJhbSAtIGFyZ3Bvcy0+Z3BhcmFtKSAvIHRkZXAtPndvcmRz aXplOwotKyAgICAgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25lZF9ncGFyYW07Ci0rICAgIH0KLSsK LSsgIC8qIFRoZSBBQkkgKHZlcnNpb24gMS45KSBzcGVjaWZpZXMgdGhhdCB2YWx1ZXMgc21hbGxl ciB0aGFuIG9uZQotKyAgICAgZG91Ymxld29yZCBhcmUgcmlnaHQtYWxpZ25lZCBhbmQgdGhvc2Ug bGFyZ2VyIGFyZSBsZWZ0LWFsaWduZWQuCi0rICAgICBHQ0MgdmVyc2lvbnMgYmVmb3JlIDMuNCBp bXBsZW1lbnRlZCB0aGlzIGluY29ycmVjdGx5OyBzZWUKLSsgICAgIDxodHRwOi8vZ2NjLmdudS5v cmcvZ2NjLTMuNC9wb3dlcnBjLWFiaS5odG1sPi4gICovCi0rICBpZiAobGVuIDwgdGRlcC0+d29y ZHNpemUpCi0rICAgIG9mZnNldCA9IHRkZXAtPndvcmRzaXplIC0gbGVuOwotKwotKyAgaWYgKGFy Z3Bvcy0+cmVnY2FjaGUpCi0rICAgIHdyaXRlX21lbW9yeSAoYXJncG9zLT5ncGFyYW0gKyBvZmZz ZXQsIHZhbCwgbGVuKTsKLSsgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25fdXAgKGFyZ3Bvcy0+Z3Bh cmFtICsgbGVuLCB0ZGVwLT53b3Jkc2l6ZSk7Ci0rCi0rICB3aGlsZSAobGVuID49IHRkZXAtPndv cmRzaXplKQotKyAgICB7Ci0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5n cmVnIDw9IDEwKQotKwlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsCi0r CQkJICAgICAgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVnLCB2YWwpOwotKyAg ICAgIGFyZ3Bvcy0+Z3JlZysrOwotKyAgICAgIGxlbiAtPSB0ZGVwLT53b3Jkc2l6ZTsKLSsgICAg ICB2YWwgKz0gdGRlcC0+d29yZHNpemU7Ci0rICAgIH0KLSsKLSsgIGlmIChsZW4gPiAwKQotKyAg ICB7Ci0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5ncmVnIDw9IDEwKQot KwlyZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAoYXJncG9zLT5yZWdjYWNoZSwKLSsJCQkJICAg IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVnLAotKwkJCQkgICAgb2Zmc2V0LCBs ZW4sIHZhbCk7Ci0rICAgICAgYXJncG9zLT5ncmVnKys7Ci0rICAgIH0KLSt9Ci0rCi0rLyogVGhl IHNhbWUgYXMgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwsIGJ1dCB1c2luZyBhIHNpbmdsZS13b3Jk IGludGVnZXIKLSsgICB2YWx1ZSBWQUwgYXMgYXJndW1lbnQuICAqLwotIAotIHN0YXRpYyB2b2lk Ci0tcHBjNjRfc3lzdl9hYmlfcHVzaF9mbG9hdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRl cCwgc3RydWN0IHR5cGUgKnR5cGUsIAotLQkJCSAgIGNvbnN0IGJmZF9ieXRlICp2YWwsIGludCBm cmVnLCBpbnQgZ3JlZywKLS0JCQkgICBDT1JFX0FERFIgZ3BhcmFtKQotK3BwYzY0X3N5c3ZfYWJp X3B1c2hfaW50ZWdlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIFVMT05HRVNUIHZhbCwKLSsJ CQkgICAgIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQotIHsKLS0gIGdkYl9ieXRl IHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tICBjb25zdCBnZGJfYnl0ZSAqcDsKLSsgIHN0 cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgZW51 bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwot KyAgZ2RiX2J5dGUgYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsKLSAKLS0gIGlmIChUWVBFX0xFTkdU SCAodHlwZSkgPD0gOCkKLSsgIGlmIChhcmdwb3MtPnJlZ2NhY2hlKQotKyAgICBzdG9yZV91bnNp Z25lZF9pbnRlZ2VyIChidWYsIHRkZXAtPndvcmRzaXplLCBieXRlX29yZGVyLCB2YWwpOwotKyAg cHBjNjRfc3lzdl9hYmlfcHVzaF92YWwgKGdkYmFyY2gsIGJ1ZiwgdGRlcC0+d29yZHNpemUsIDAs IGFyZ3Bvcyk7Ci0rfQotKwotKy8qIFZBTCBpcyBhIHZhbHVlIG9mIFRZUEUsIGEgKGJpbmFyeSBv ciBkZWNpbWFsKSBmbG9hdGluZy1wb2ludCB0eXBlLgotKyAgIExvYWQgaXQgaW50byBhIGZsb2F0 aW5nLXBvaW50IHJlZ2lzdGVyIGlmIHJlcXVpcmVkIGJ5IHRoZSBBQkksCi0rICAgYW5kIHVwZGF0 ZSBBUkdQT1MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVn IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgIHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBiZmRfYnl0ZSAqdmFsLAotKwkJCSAgc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zICphcmdwb3Mp Ci0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJj aCk7Ci0rICBpZiAodGRlcC0+c29mdF9mbG9hdCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKFRZ UEVfTEVOR1RIICh0eXBlKSA8PSA4Ci0rICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfRkxUKQotICAgICB7Ci0tICAgICAgLyogVmVyc2lvbiAxLjcgb2YgdGhlIDY0LWJpdCBQ b3dlclBDIEVMRiBBQkkgc2F5czoKLSsgICAgICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4g ZjEgLi4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUgY29udmVydGVkCi0rIAkgdG8gZG91YmxlIGZp cnN0LiAgKi8KLSsgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0g MTMpCi0rCXsKLSsJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3Mt PmZyZWc7Ci0rCSAgc3RydWN0IHR5cGUgKnJlZ3R5cGUgPSByZWdpc3Rlcl90eXBlIChnZGJhcmNo LCByZWdudW0pOwotKwkgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0gCi0t CSAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYXJlIG1hcHBlZCB0bwot LQkgdGhlIGZpcnN0IHdvcmQgaW4gYSBzaW5nbGUgZG91Ymxld29yZC4iCi0rCSAgY29udmVydF90 eXBlZF9mbG9hdGluZyAodmFsLCB0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOwotKwkgIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCByZWd2YWwpOwotKwl9Ci0g Ci0tCSBBbmQgdmVyc2lvbiAxLjkgc2F5czoKLSsgICAgICBhcmdwb3MtPmZyZWcrKzsKLSsgICAg fQotKyAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgKLSsJICAgJiYgVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCi0rICAgIHsKLSsgICAgICAvKiBGbG9hdHMg YW5kIGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQot KwkgcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8KLSsgICAgICBpZiAo YXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCi0rCXsKLSsJICBpbnQgcmVn bnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7Ci0rCSAgaW50IG9mZnNl dCA9IDggLSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0tCSAiU2luZ2xlIHByZWNpc2lvbiBmbG9h dGluZyBwb2ludCB2YWx1ZXMgYXJlIG1hcHBlZCB0bwotLQkgdGhlIHNlY29uZCB3b3JkIGluIGEg c2luZ2xlIGRvdWJsZXdvcmQuIgotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChhcmdw b3MtPnJlZ2NhY2hlLCByZWdudW0sCi0rCQkJCSAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHR5 cGUpLCB2YWwpOwotKwl9Ci0gCi0tCSBHREIgdGhlbiB3cml0ZXMgc2luZ2xlIHByZWNpc2lvbiBm bG9hdGluZyBwb2ludCB2YWx1ZXMKLS0JIGF0IGJvdGggd29yZHMgaW4gYSBkb3VibGV3b3JkLCB0 byBzdXBwb3J0IGJvdGggQUJJcy4gICovCi0tICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9 PSA0KQotKyAgICAgIGFyZ3Bvcy0+ZnJlZysrOwotKyAgICB9Ci0rICBlbHNlIGlmIChUWVBFX0xF TkdUSCAodHlwZSkgPT0gMTYKLSsJICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf RkxUCi0rCSAgICYmIChnZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKLSsJICAg ICAgID09IGZsb2F0Zm9ybWF0c19pYm1fbG9uZ19kb3VibGUpKQotKyAgICB7Ci0rICAgICAgLyog SUJNIGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28gY29uc2VjdXRpdmUgRlBScy4gICovCi0rICAg ICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5mcmVnIDw9IDEzKQotIAl7Ci0tCSAg bWVtY3B5IChyZWd2YWwsIHZhbCwgNCk7Ci0tCSAgbWVtY3B5IChyZWd2YWwgKyA0LCB2YWwsIDQp OwotLQkgIHAgPSByZWd2YWw7Ci0rCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVt ICsgYXJncG9zLT5mcmVnOwotKwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5y ZWdjYWNoZSwgcmVnbnVtLCB2YWwpOwotKwkgIGlmIChhcmdwb3MtPmZyZWcgPD0gMTIpCi0rCSAg ICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSArIDEsIHZh bCArIDgpOwotIAl9Ci0tICAgICAgZWxzZQotLQlwID0gdmFsOwotIAotLSAgICAgIC8qIFdyaXRl IHZhbHVlIGluIHRoZSBzdGFjaydzIHBhcmFtZXRlciBzYXZlIGFyZWEuICAqLwotLSAgICAgIHdy aXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKLSsgICAgICBhcmdwb3MtPmZyZWcgKz0gMjsKLSsg ICAgfQotKyAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID09IDE2Ci0rCSAgICYmIFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQotKyAgICB7Ci0rICAgICAgLyogMTI4 LWJpdCBkZWNpbWFsIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIGFuZCBldmVu L29kZAotKwkgcGFpciBvZiBGUFJzLCB3aXRoIHRoZSBldmVuIEZQUiBob2xkaW5nIHRoZSBtb3N0 IHNpZ25pZmljYW50IGhhbGYuICAqLwotKyAgICAgIGFyZ3Bvcy0+ZnJlZyArPSBhcmdwb3MtPmZy ZWcgJiAxOwotIAotLSAgICAgIC8qIEZsb2F0cyBhbmQgRG91YmxlcyBnbyBpbiBmMSAuLiBmMTMu ICBUaGV5IGFsc28gY29uc3VtZSBhIGxlZnQgYWxpZ25lZAotLQkgR1JFRywgYW5kIGNhbiBlbmQg dXAgaW4gbWVtb3J5LiAgKi8KLS0gICAgICBpZiAoZnJlZyA8PSAxMykKLSsgICAgICBpZiAoYXJn cG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTIpCi0gCXsKLS0JICBzdHJ1Y3QgdHlw ZSAqcmVndHlwZTsKLSsJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdw b3MtPmZyZWc7Ci0gCi0tCSAgcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAt PnBwY19mcDBfcmVnbnVtICsgZnJlZyk7Ci0tCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAodmFs LCB0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOwotLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVn Y2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZywgcmVndmFsKTsKLSsJICByZWdjYWNo ZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSwgdmFsKTsKLSsJICByZWdj YWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSArIDEsIHZhbCArIDgp OwotIAl9Ci0tICAgICAgaWYgKGdyZWcgPD0gMTApCi0tCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo cmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgZ3JlZywgcmVndmFsKTsKLSsKLSsgICAg ICBhcmdwb3MtPmZyZWcgKz0gMjsKLSAgICAgfQotLSAgZWxzZQotK30KLSsKLSsvKiBWQUwgaXMg YSB2YWx1ZSBvZiBBbHRpVmVjIHZlY3RvciB0eXBlLiAgTG9hZCBpdCBpbnRvIGEgdmVjdG9yIHJl Z2lzdGVyCi0rICAgaWYgcmVxdWlyZWQgYnkgdGhlIEFCSSwgYW5kIHVwZGF0ZSBBUkdQT1MuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rcHBjNjRfc3lzdl9hYmlfcHVzaF92cmVnIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgY29uc3QgYmZkX2J5dGUgKnZhbCwKLSsJCQkgIHN0cnVjdCBwcGM2NF9z eXN2X2FyZ3BvcyAqYXJncG9zKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwotKyAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJn cG9zLT52cmVnIDw9IDEzKQotKyAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVn Y2FjaGUsCi0rCQkJICAgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBhcmdwb3MtPnZyZWcsIHZhbCk7 Ci0rCi0rICBhcmdwb3MtPnZyZWcrKzsKLSt9Ci0rCi0rLyogVkFMIGlzIGEgdmFsdWUgb2YgVFlQ RS4gIExvYWQgaXQgaW50byBtZW1vcnkgYW5kL29yIHJlZ2lzdGVycwotKyAgIGFzIHJlcXVpcmVk IGJ5IHRoZSBBQkksIGFuZCB1cGRhdGUgQVJHUE9TLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Bw YzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCSAg IHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBiZmRfYnl0ZSAqdmFsLAotKwkJCSAgIHN0cnVjdCBw cGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRk ZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX0ZMVAotKyAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X0RFQ0ZMT0FUKQotKyAgICB7Ci0rICAgICAgLyogRmxvYXRpbmctcG9pbnQgc2NhbGFycyBhcmUg cGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0rICAgICAgcHBjNjRfc3lz dl9hYmlfcHVzaF92YWwgKGdkYmFyY2gsIHZhbCwgVFlQRV9MRU5HVEggKHR5cGUpLCAwLCBhcmdw b3MpOwotKyAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyAoZ2RiYXJjaCwgdHlwZSwgdmFs LCBhcmdwb3MpOwotKyAgICB9Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9BUlJBWSAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKLSsJICAgJiYgdGRlcC0+dmVjdG9yX2Fi aSA9PSBQT1dFUlBDX1ZFQ19BTFRJVkVDCi0rCSAgICYmIFRZUEVfTEVOR1RIICh0eXBlKSA9PSAx NikKLSsgICAgewotKyAgICAgIC8qIEFsdGlWZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGFsaWduZWQs IGFuZCBpbiB2ZWN0b3IgcmVnaXN0ZXJzLiAgKi8KLSsgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNo X3ZhbCAoZ2RiYXJjaCwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDE2LCBhcmdwb3MpOwotKyAg ICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfdnJlZyAoZ2RiYXJjaCwgdmFsLCBhcmdwb3MpOwotKyAg ICB9Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSAmJiBU WVBFX1ZFQ1RPUiAodHlwZSkKLSsJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUpID49IDE2KQotICAg ICB7Ci0tICAgICAgLyogSUJNIGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28gZG91Ymxld29yZHMg b2YgdGhlCi0tCSBwYXJhbWV0ZXIgc2F2ZSBhcmVhIGFuZCBjb3JyZXNwb25kaW5nIHJlZ2lzdGVy cy4gICovCi0tICAgICAgaWYgKCF0ZGVwLT5zb2Z0X2Zsb2F0ICYmIGZyZWcgPD0gMTMpCi0rICAg ICAgLyogTm9uLUFsdGl2ZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4gICovCi0r Ci0rICAgICAgLyogQ29weSB2YWx1ZSBvbnRvIHRoZSBzdGFjayAuLi4gICovCi0rICAgICAgQ09S RV9BRERSIGFkZHIgPSBhbGlnbl91cCAoYXJncG9zLT5yZWZwYXJhbSwgMTYpOwotKyAgICAgIGlm IChhcmdwb3MtPnJlZ2NhY2hlKQotKwl3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgVFlQRV9MRU5H VEggKHR5cGUpKTsKLSsgICAgICBhcmdwb3MtPnJlZnBhcmFtID0gYWxpZ25fdXAgKGFkZHIgKyBU WVBFX0xFTkdUSCAodHlwZSksIHRkZXAtPndvcmRzaXplKTsKLSsKLSsgICAgICAvKiAuLi4gYW5k IHBhc3MgYSBwb2ludGVyIHRvIHRoZSBjb3B5IGFzIHBhcmFtZXRlci4gICovCi0rICAgICAgcHBj NjRfc3lzdl9hYmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCBhZGRyLCBhcmdwb3MpOwotKyAgICB9 Ci0rICBlbHNlIGlmICgoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UCi0rCSAgICB8 fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9FTlVNCi0rCSAgICB8fCBUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9CT09MCi0rCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZ UEVfQ09ERV9DSEFSCi0rCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIK LSsJICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKLSsJICAgJiYgVFlQ RV9MRU5HVEggKHR5cGUpIDw9IHRkZXAtPndvcmRzaXplKQotKyAgICB7Ci0rICAgICAgVUxPTkdF U1Qgd29yZCA9IDA7Ci0rCi0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUpCi0gCXsKLS0JICBy ZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZy ZWcsIHZhbCk7Ci0tCSAgaWYgKGZyZWcgPD0gMTIpCi0tCSAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcgKyAxLAotLQkJCQkgICB2 YWwgKyA4KTsKLSsJICAvKiBTaWduIGV4dGVuZCB0aGUgdmFsdWUsIHRoZW4gc3RvcmUgaXQgdW5z aWduZWQuICAqLwotKwkgIHdvcmQgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFsKTsKLSsKLSsJICAv KiBDb252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvIGRlc2NyaXB0b3JzLiAg Ki8KLSsJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCi0rCSAgICAgIHx8 IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKLSsJICAgIHsKLSsJICAgICAgc3Ry dWN0IHR5cGUgKnRhcmdldF90eXBlCi0rCQk9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKTsKLSsKLSsJICAgICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZ UEVfQ09ERV9GVU5DCi0rCQkgIHx8IFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09E RV9NRVRIT0QpCi0rCQl7Ci0rCQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsKLSsKLSsJCSAgY29u dmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyICh3b3JkLCAmZGVzYyk7Ci0rCQkgIHdvcmQgPSBk ZXNjOwotKwkJfQotKwkgICAgfQotIAl9Ci0tICAgICAgaWYgKGdyZWcgPD0gMTApCi0rCi0rICAg ICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCB3b3JkLCBhcmdwb3MpOwot KyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCAo Z2RiYXJjaCwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDAsIGFyZ3Bvcyk7Ci0rCi0rICAgICAg LyogVGhlIEFCSSAodmVyc2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVjdHMgY29udGFpbmlu ZyBhCi0rCSBzaW5nbGUgZmxvYXRpbmctcG9pbnQgdmFsdWUsIGF0IGFueSBsZXZlbCBvZiBuZXN0 aW5nIG9mCi0rCSBzaW5nbGUtbWVtYmVyIHN0cnVjdHMsIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmct cG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSsgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfU1RSVUNUCi0rCSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQotIAl7Ci0tCSAg cmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBn cmVnLCB2YWwpOwotLQkgIGlmIChncmVnIDw9IDkpCi0tCSAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGdyZWcgKyAxLAotLQkJCQkgICB2 YWwgKyA4KTsKLSsJICB3aGlsZSAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNU Ci0rCQkgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQotKwkgICAgdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpOwotKwotKwkgIGlmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9GTFQpCi0rCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcg KGdkYmFyY2gsIHR5cGUsIHZhbCwgYXJncG9zKTsKLSAJfQotLSAgICAgIHdyaXRlX21lbW9yeSAo Z3BhcmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTIz NywyMCArMTQ0MywxMSBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7 IHdyaXRlX3Bhc3MrKykKLSAgICAgewotICAgICAgIGludCBhcmdubzsKLS0gICAgICAvKiBOZXh0 IGF2YWlsYWJsZSBmbG9hdGluZyBwb2ludCByZWdpc3RlciBmb3IgZmxvYXQgYW5kIGRvdWJsZQot LSAgICAgICAgIGFyZ3VtZW50cy4gICovCi0tICAgICAgaW50IGZyZWcgPSAxOwotLSAgICAgIC8q IE5leHQgYXZhaWxhYmxlIGdlbmVyYWwgcmVnaXN0ZXIgZm9yIG5vbi12ZWN0b3IgKGJ1dCBwb3Nz aWJseQotLSAgICAgICAgIGZsb2F0KSBhcmd1bWVudHMuICAqLwotLSAgICAgIGludCBncmVnID0g MzsKLS0gICAgICAvKiBOZXh0IGF2YWlsYWJsZSB2ZWN0b3IgcmVnaXN0ZXIgZm9yIHZlY3RvciBh cmd1bWVudHMuICAqLwotLSAgICAgIGludCB2cmVnID0gMjsKLS0gICAgICAvKiBUaGUgYWRkcmVz cywgYXQgd2hpY2ggdGhlIG5leHQgZ2VuZXJhbCBwdXJwb3NlIHBhcmFtZXRlcgotLSAgICAgICAg IChpbnRlZ2VyLCBzdHJ1Y3QsIGZsb2F0LCB2ZWN0b3IsIC4uLikgc2hvdWxkIGJlIHNhdmVkLiAg Ki8KLS0gICAgICBDT1JFX0FERFIgZ3BhcmFtOwotLSAgICAgIC8qIFRoZSBhZGRyZXNzLCBhdCB3 aGljaCB0aGUgbmV4dCBieS1yZWZlcmVuY2UgcGFyYW1ldGVyCi0tCSAobm9uLUFsdGl2ZWMgdmVj dG9yLCB2YXJpYWJseS1zaXplZCB0eXBlKSBzaG91bGQgYmUgc2F2ZWQuICAqLwotLSAgICAgIENP UkVfQUREUiByZWZwYXJhbTsKLSsKLSsgICAgICBzdHJ1Y3QgcHBjNjRfc3lzdl9hcmdwb3MgYXJn cG9zOwotKyAgICAgIGFyZ3Bvcy5ncmVnID0gMzsKLSsgICAgICBhcmdwb3MuZnJlZyA9IDE7Ci0r ICAgICAgYXJncG9zLnZyZWcgPSAyOwotIAotICAgICAgIGlmICghd3JpdGVfcGFzcykKLSAJewot QEAgLTEyNTgsMTkgKzE0NTUsMjEgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJICAgICBvZmZzZXRzIChzdGFydCBhZGRyZXNzIHpl cm8pIHRoYW4gYWRkcmVzc2VzLiAgVGhhdCB3YXkKLSAJICAgICB0aGV5IGFjY3VtdWxhdGUgdGhl IHRvdGFsIHN0YWNrIHNwYWNlIGVhY2ggcmVnaW9uCi0gCSAgICAgcmVxdWlyZXMuICAqLwotLQkg IGdwYXJhbSA9IDA7Ci0tCSAgcmVmcGFyYW0gPSAwOwotKwkgIGFyZ3Bvcy5yZWdjYWNoZSA9IE5V TEw7Ci0rCSAgYXJncG9zLmdwYXJhbSA9IDA7Ci0rCSAgYXJncG9zLnJlZnBhcmFtID0gMDsKLSAJ fQotICAgICAgIGVsc2UKLSAJewotIAkgIC8qIERlY3JlbWVudCB0aGUgc3RhY2sgcG9pbnRlciBt YWtpbmcgc3BhY2UgZm9yIHRoZSBBbHRpdmVjCi0gCSAgICAgYW5kIGdlbmVyYWwgb24tc3RhY2sg cGFyYW1ldGVycy4gIFNldCByZWZwYXJhbSBhbmQgZ3BhcmFtCi0gCSAgICAgdG8gdGhlaXIgY29y cmVzcG9uZGluZyByZWdpb25zLiAgKi8KLS0JICByZWZwYXJhbSA9IGFsaWduX2Rvd24gKHNwIC0g cmVmcGFyYW1fc2l6ZSwgMTYpOwotLQkgIGdwYXJhbSA9IGFsaWduX2Rvd24gKHJlZnBhcmFtIC0g Z3BhcmFtX3NpemUsIDE2KTsKLSsJICBhcmdwb3MucmVnY2FjaGUgPSByZWdjYWNoZTsKLSsJICBh cmdwb3MucmVmcGFyYW0gPSBhbGlnbl9kb3duIChzcCAtIHJlZnBhcmFtX3NpemUsIDE2KTsKLSsJ ICBhcmdwb3MuZ3BhcmFtID0gYWxpZ25fZG93biAoYXJncG9zLnJlZnBhcmFtIC0gZ3BhcmFtX3Np emUsIDE2KTsKLSAJICAvKiBBZGQgaW4gc3BhY2UgZm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRv dWJsZSB3b3JkLAotIAkgICAgIGNvbXBpbGVyIGRvdWJsZSB3b3JkLCBMUiBzYXZlIGFyZWEsIENS IHNhdmUgYXJlYS4gICovCi0tCSAgc3AgPSBhbGlnbl9kb3duIChncGFyYW0gLSA0OCwgMTYpOwot KwkgIHNwID0gYWxpZ25fZG93biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7Ci0gCX0KLSAKLSAg ICAgICAvKiBJZiB0aGUgZnVuY3Rpb24gaXMgcmV0dXJuaW5nIGEgYHN0cnVjdCcsIHRoZW4gdGhl cmUgaXMgYW4KLUBAIC0xMjc5LDE0ICsxNDc4LDcgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgICAgICBzaG91bGQgYWR2YW5j ZSBvbmUgd29yZCBhbmQgc3RhcnQgZnJvbSByNCByZWdpc3RlciB0byBjb3B5Ci0gICAgICAgICAg cGFyYW1ldGVycy4gIFRoaXMgYWxzbyBjb25zdW1lcyBvbmUgb24tc3RhY2sgcGFyYW1ldGVyIHNs b3QuICAqLwotICAgICAgIGlmIChzdHJ1Y3RfcmV0dXJuKQotLQl7Ci0tCSAgaWYgKHdyaXRlX3Bh c3MpCi0tCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfc2lnbmVkIChyZWdjYWNoZSwKLS0JCQkJ CSAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLAotLQkJCQkJICBzdHJ1Y3RfYWRkcik7Ci0t CSAgZ3JlZysrOwotLQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6 ZSwgdGRlcC0+d29yZHNpemUpOwotLQl9Ci0rCXBwYzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlciAo Z2RiYXJjaCwgc3RydWN0X2FkZHIsICZhcmdwb3MpOwotIAotICAgICAgIGZvciAoYXJnbm8gPSAw OyBhcmdubyA8IG5hcmdzOyBhcmdubysrKQotIAl7Ci1AQCAtMTI5NCw0MzIgKzE0ODYsNTQgQEAg cHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK LSAJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykp OwotIAkgIGNvbnN0IGJmZF9ieXRlICp2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJnKTsKLSAKLS0J ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh0 eXBlKSA8PSA4KQotKwkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVY KQotIAkgICAgewotLQkgICAgICBpZiAod3JpdGVfcGFzcykKLS0JCSAgcHBjNjRfc3lzdl9hYmlf cHVzaF9mbG9hdCAoZ2RiYXJjaCwgcmVnY2FjaGUsIHRkZXAsIHR5cGUsCi0tCQkJCQkgICAgIHZh bCwgZnJlZywgZ3JlZywgZ3BhcmFtKTsKLS0KLS0JICAgICAgZnJlZysrOwotLQkgICAgICBncmVn Kys7Ci0tCSAgICAgIC8qIEFsd2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICov Ci0tCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7 Ci0tCSAgICB9Ci0tCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxU Ci0tCQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYKLS0JCSAgICYmIChnZGJhcmNoX2xv bmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKLS0JCSAgICAgICA9PSBmbG9hdGZvcm1hdHNfaWJt X2xvbmdfZG91YmxlKSkKLS0JICAgIHsKLS0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0tCQlwcGM2 NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChnZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwgdHlwZSwKLS0J CQkJCSAgIHZhbCwgZnJlZywgZ3JlZywgZ3BhcmFtKTsKLS0JICAgICAgZnJlZyArPSAyOwotLQkg ICAgICBncmVnICs9IDI7Ci0tCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyBUWVBF X0xFTkdUSCAodHlwZSksIHRkZXAtPndvcmRzaXplKTsKLS0JICAgIH0KLS0JICBlbHNlIGlmIChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYCi0tCSAgICAgICYmIChUWVBFX0xF TkdUSCAodHlwZSkgPT0gOCB8fCBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYpKQotLQkgICAgewot LQkgICAgICBpbnQgaTsKLS0KLS0JICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKLS0JCXsK LS0JCSAgaWYgKHdyaXRlX3Bhc3MpCi0tCQkgICAgewotLQkJICAgICAgc3RydWN0IHR5cGUgKnRh cmdldF90eXBlOwotLQotLQkJICAgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0tCQkgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0 IChnZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwKLS0JCQkJCQkgdGFyZ2V0X3R5cGUsIHZhbCArIGkg KgotLQkJCQkJCSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLAotLQkJCQkJCSBmcmVnLCBncmVn LCBncGFyYW0pOwotLQkJICAgIH0KLS0JCSAgZnJlZysrOwotLQkJICBncmVnKys7Ci0tCQkgIC8q IEFsd2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICovCi0tCQkgIGdwYXJhbSA9 IGFsaWduX3VwIChncGFyYW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7Ci0tCQl9Ci0tCSAgICB9Ci0t CSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQ09NUExFWAotLQkJICAg JiYgVFlQRV9MRU5HVEggKHR5cGUpID09IDMyCi0tCQkgICAmJiAoZ2RiYXJjaF9sb25nX2RvdWJs ZV9mb3JtYXQgKGdkYmFyY2gpCi0tCQkgICAgICAgPT0gZmxvYXRmb3JtYXRzX2libV9sb25nX2Rv dWJsZSkpCi0tCSAgICB7Ci0tCSAgICAgIGludCBpOwotLQotLQkgICAgICBmb3IgKGkgPSAwOyBp IDwgMjsgaSsrKQotLQkJewotLQkJICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7Ci0tCi0tCQkg IHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwot LQkJICBpZiAod3JpdGVfcGFzcykKLS0JCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChn ZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwKLS0JCQkJCSAgICAgICB0YXJnZXRfdHlwZSwgdmFsICsg aSAqCi0tCQkJCQkgICAgICAgVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSwKLS0JCQkJCSAgICAg ICBmcmVnLCBncmVnLCBncGFyYW0pOwotLQkJICBmcmVnICs9IDI7Ci0tCQkgIGdyZWcgKz0gMjsK LS0JCSAgZ3BhcmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlw ZSksCi0tCQkJCSAgICAgdGRlcC0+d29yZHNpemUpOwotLQkJfQotLQkgICAgfQotLQkgIGVsc2Ug aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUCi0tCQkgICAmJiBUWVBF X0xFTkdUSCAodHlwZSkgPD0gOCkKLS0JICAgIHsKLS0JICAgICAgLyogMzItYml0IGFuZCA2NC1i aXQgZGVjaW1hbCBmbG9hdHMgZ28gaW4gZjEgLi4gZjEzLiAgVGhleSBjYW4KLS0JICAgICAgICAg ZW5kIHVwIGluIG1lbW9yeS4gICovCi0tCSAgICAgIGlmICh3cml0ZV9wYXNzKQotLQkJewotLQkJ ICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOwotLQkJICBjb25zdCBnZGJfYnl0 ZSAqcDsKLS0KLS0JCSAgLyogMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZSByaWdodCBhbGlnbmVk IGluIHRoZQotLQkJICAgICBkb3VibGV3b3JkLiAgKi8KLS0JCSAgaWYgKFRZUEVfTEVOR1RIICh0 eXBlKSA9PSA0KQotLQkJICAgIHsKLS0JCSAgICAgIG1lbWNweSAocmVndmFsICsgNCwgdmFsLCA0 KTsKLS0JCSAgICAgIHAgPSByZWd2YWw7Ci0tCQkgICAgfQotLQkJICBlbHNlCi0tCQkgICAgcCA9 IHZhbDsKLS0KLS0JCSAgLyogV3JpdGUgdmFsdWUgaW4gdGhlIHN0YWNrJ3MgcGFyYW1ldGVyIHNh dmUgYXJlYS4gICovCi0tCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKLS0KLS0JCSAg aWYgKGZyZWcgPD0gMTMpCi0tCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwK LS0JCQkJCSAgIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZywgcCk7Ci0tCQl9Ci0tCi0tCSAg ICAgIGZyZWcrKzsKLS0JICAgICAgZ3JlZysrOwotLQkgICAgICAvKiBBbHdheXMgY29uc3VtZSBw YXJhbWV0ZXIgc3RhY2sgc3BhY2UuICAqLwotLQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3Bh cmFtICsgOCwgdGRlcC0+d29yZHNpemUpOwotLQkgICAgfQotLQkgIGVsc2UgaWYgKFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUICYmCi0tCQkgICBUWVBFX0xFTkdUSCAodHlw ZSkgPT0gMTYpCi0tCSAgICB7Ci0tCSAgICAgIC8qIDEyOC1iaXQgZGVjaW1hbCBmbG9hdHMgZ28g aW4gZjIgLi4gZjEyLCBhbHdheXMgaW4gZXZlbi9vZGQKLS0JICAgICAgICAgcGFpcnMuICBUaGV5 IGNhbiBlbmQgdXAgaW4gbWVtb3J5LCB1c2luZyB0d28gZG91Ymxld29yZHMuICAqLwotLQkgICAg ICBpZiAod3JpdGVfcGFzcykKLS0JCXsKLS0JCSAgaWYgKGZyZWcgPD0gMTIpCi0tCQkgICAgewot LQkJICAgICAgLyogTWFrZSBzdXJlIGZyZWcgaXMgZXZlbi4gICovCi0tCQkgICAgICBmcmVnICs9 IGZyZWcgJiAxOwotLQkJICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZGVwLT5wcGNfZnAw X3JlZ251bSArIGZyZWcsIHZhbCk7Ci0tCQkgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJl Z2NhY2hlLAotLQkJCSAgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBmcmVnICsgMSwgdmFsICsgOCk7 Ci0tCQkgICAgfQotLQotLQkJICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFsLCBUWVBFX0xFTkdU SCAodHlwZSkpOwotLQkJfQotKwkgICAgICAvKiBDb21wbGV4IHR5cGVzIGFyZSBwYXNzZWQgYXMg aWYgdHdvIGluZGVwZW5kZW50IHNjYWxhcnMuICAqLwotKwkgICAgICBzdHJ1Y3QgdHlwZSAqZWx0 eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotIAotLQkgICAg ICBmcmVnICs9IDI7Ci0tCSAgICAgIGdyZWcgKz0gMjsKLS0JICAgICAgZ3BhcmFtID0gYWxpZ25f dXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOwotKwkgICAg ICBwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUsIHZhbCwgJmFyZ3Bv cyk7Ci0rCSAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKGdkYmFyY2gsIGVsdHlwZSwK LSsJCQkJIAkgdmFsICsgVFlQRV9MRU5HVEggKGVsdHlwZSksICZhcmdwb3MpOwotIAkgICAgfQot LQkgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8IDE2Ci0tCQkgICAmJiBUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotLQkJICAgJiYgVFlQRV9WRUNUT1IgKHR5cGUpCi0r CSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkgJiYgVFlQRV9W RUNUT1IgKHR5cGUpCi0gCQkgICAmJiBvcGVuY2xfYWJpKQotIAkgICAgewotIAkgICAgICAvKiBP cGVuQ0wgdmVjdG9ycyBzaG9ydGVyIHRoYW4gMTYgYnl0ZXMgYXJlIHBhc3NlZCBhcyBpZgotLQkJ IGEgc2VyaWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnMuICAqLwotLQkgICAgICBzdHJ1Y3QgdHlw ZSAqZWx0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotLQkg ICAgICBpbnQgaSwgbmVsdCA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIFRZUEVfTEVOR1RIIChlbHR5 cGUpOwotKwkJIGEgc2VyaWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnM7IE9wZW5DTCB2ZWN0b3Jz IDE2IGJ5dGVzCi0rCQkgb3IgbG9uZ2VyIGFyZSBwYXNzZWQgYXMgaWYgYSBzZXJpZXMgb2YgQWx0 aVZlYyB2ZWN0b3JzLiAgKi8KLSsJICAgICAgc3RydWN0IHR5cGUgKmVsdHlwZTsKLSsJICAgICAg aW50IGksIG5lbHQ7Ci0gCi0rCSAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPCAxNikKLSsJ CWVsdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSsJICAg ICAgZWxzZQotKwkJZWx0eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgdGRlcC0+cHBjX3Zy MF9yZWdudW0pOwotKwotKwkgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gVFlQRV9M RU5HVEggKGVsdHlwZSk7Ci0gCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0OyBpKyspCi0gCQl7 Ci0gCQkgIGNvbnN0IGdkYl9ieXRlICplbHZhbCA9IHZhbCArIGkgKiBUWVBFX0xFTkdUSCAoZWx0 eXBlKTsKLSAKLS0JCSAgaWYgKFRZUEVfQ09ERSAoZWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQot LQkJICAgIHsKLS0JCSAgICAgIGlmICh3cml0ZV9wYXNzKQotLQkJCXsKLS0JCQkgIGdkYl9ieXRl IHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tCQkJICBjb25zdCBnZGJfYnl0ZSAqcDsKLS0K LS0JCQkgIGlmIChUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSA0KQotLQkJCSAgICB7Ci0tCQkJICAg ICAgbWVtY3B5IChyZWd2YWwsIGVsdmFsLCA0KTsKLS0JCQkgICAgICBtZW1jcHkgKHJlZ3ZhbCAr IDQsIGVsdmFsLCA0KTsKLS0JCQkgICAgICBwID0gcmVndmFsOwotLQkJCSAgICB9Ci0tCQkJICBl bHNlCi0tCQkJICAgIHAgPSBlbHZhbDsKLS0KLS0JCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBw LCA4KTsKLS0KLS0JCQkgIGlmIChmcmVnIDw9IDEzKQotLQkJCSAgICB7Ci0tCQkJICAgICAgaW50 IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZzsKLS0JCQkgICAgICBzdHJ1Y3Qg dHlwZSAqcmVndHlwZQotLQkJCQk9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSk7Ci0t Ci0tCQkJICAgICAgY29udmVydF90eXBlZF9mbG9hdGluZyAoZWx2YWwsIGVsdHlwZSwKLS0JCQkJ CQkgICAgICByZWd2YWwsIHJlZ3R5cGUpOwotLQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZSAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLS0JCQkgICAgfQotLQotLQkJCSAgaWYgKGdy ZWcgPD0gMTApCi0tCQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCi0tCQkJ CQkJICAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLAotLQkJCQkJCSAgIHJlZ3ZhbCk7Ci0t CQkJfQotLQotLQkJICAgICAgZnJlZysrOwotLQkJICAgICAgZ3JlZysrOwotLQkJICAgICAgZ3Bh cmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIDgsIHRkZXAtPndvcmRzaXplKTsKLS0JCSAgICB9Ci0t CQkgIGVsc2UKLS0JCSAgICB7Ci0tCQkgICAgICBpZiAod3JpdGVfcGFzcykKLS0JCQl7Ci0tCQkJ ICBVTE9OR0VTVCB3b3JkID0gdW5wYWNrX2xvbmcgKGVsdHlwZSwgZWx2YWwpOwotLQkJCSAgaWYg KGdyZWcgPD0gMTApCi0tCQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZAotLQkJ CSAgICAgIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLCB3b3JkKTsKLS0K LS0JCQkgIHdyaXRlX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyCi0tCQkJICAgIChncGFyYW0sIHRk ZXAtPndvcmRzaXplLCBieXRlX29yZGVyLCB3b3JkKTsKLS0JCQl9Ci0tCi0tCQkgICAgICBncmVn Kys7Ci0tCQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgVFlQRV9MRU5HVEggKGVs dHlwZSksCi0tCQkJCQkgdGRlcC0+d29yZHNpemUpOwotLQkJICAgIH0KLS0JCX0KLS0JICAgIH0K LS0JICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPj0gMTYKLS0JCSAgICYmIFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0tCQkgICAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkK LS0JCSAgICYmIG9wZW5jbF9hYmkpCi0tCSAgICB7Ci0tCSAgICAgIC8qIE9wZW5DTCB2ZWN0b3Jz IDE2IGJ5dGVzIG9yIGxvbmdlciBhcmUgcGFzc2VkIGFzIGlmCi0tCQkgYSBzZXJpZXMgb2YgQWx0 aVZlYyB2ZWN0b3JzLiAgKi8KLS0JICAgICAgaW50IGk7Ci0tCi0tCSAgICAgIGZvciAoaSA9IDA7 IGkgPCBUWVBFX0xFTkdUSCAodHlwZSkgLyAxNjsgaSsrKQotLQkJewotLQkJICBjb25zdCBnZGJf Ynl0ZSAqZWx2YWwgPSB2YWwgKyBpICogMTY7Ci0tCi0tCQkgIGdwYXJhbSA9IGFsaWduX3VwIChn cGFyYW0sIDE2KTsKLS0JCSAgZ3JlZyArPSBncmVnICYgMTsKLS0KLS0JCSAgaWYgKHdyaXRlX3Bh c3MpCi0tCQkgICAgewotLQkJICAgICAgaWYgKHZyZWcgPD0gMTMpCi0tCQkJcmVnY2FjaGVfY29v a2VkX3dyaXRlIChyZWdjYWNoZSwKLS0JCQkJCSAgICAgICB0ZGVwLT5wcGNfdnIwX3JlZ251bSAr IHZyZWcsCi0tCQkJCQkgICAgICAgZWx2YWwpOwotLQotLQkJICAgICAgd3JpdGVfbWVtb3J5IChn cGFyYW0sIGVsdmFsLCAxNik7Ci0tCQkgICAgfQotLQotLQkJICBncmVnICs9IDI7Ci0tCQkgIHZy ZWcrKzsKLS0JCSAgZ3BhcmFtICs9IDE2OwotLQkJfQotLQkgICAgfQotLQkgIGVsc2UgaWYgKFRZ UEVfTEVOR1RIICh0eXBlKSA9PSAxNiAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKLS0JCSAgICYmIFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0tCQkgICAmJiB0ZGVwLT52ZWN0b3Jf YWJpID09IFBPV0VSUENfVkVDX0FMVElWRUMpCi0tCSAgICB7Ci0tCSAgICAgIC8qIEluIHRoZSBB bHRpdmVjIEFCSSwgdmVjdG9ycyBnbyBpbiB0aGUgdmVjdG9yIHJlZ2lzdGVycwotLQkJIHYyIC4u IHYxMywgYXMgd2VsbCBhcyB0aGUgcGFyYW1ldGVyIGFyZWEgLS0gYWx3YXlzIGF0Ci0tCQkgMTYt Ynl0ZSBhbGlnbmVkIGFkZHJlc3Nlcy4gICovCi0tCi0tCSAgICAgIGdwYXJhbSA9IGFsaWduX3Vw IChncGFyYW0sIDE2KTsKLS0JICAgICAgZ3JlZyArPSBncmVnICYgMTsKLS0KLS0JICAgICAgaWYg KHdyaXRlX3Bhc3MpCi0tCQl7Ci0tCQkgIGlmICh2cmVnIDw9IDEzKQotLQkJICAgIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCi0tCQkJCQkgICB0ZGVwLT5wcGNfdnIwX3JlZ251bSAr IHZyZWcsIHZhbCk7Ci0tCi0tCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCB2YWwsIFRZUEVfTEVO R1RIICh0eXBlKSk7Ci0tCQl9Ci0tCi0tCSAgICAgIGdyZWcgKz0gMjsKLS0JICAgICAgdnJlZysr OwotLQkgICAgICBncGFyYW0gKz0gMTY7Ci0tCSAgICB9Ci0tCSAgZWxzZSBpZiAoVFlQRV9MRU5H VEggKHR5cGUpID49IDE2ICYmIFRZUEVfVkVDVE9SICh0eXBlKQotLQkJICAgJiYgVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0tCSAgICB7Ci0tCSAgICAgIC8qIE5vbi1BbHRp dmVjIHZlY3RvcnMgYXJlIHBhc3NlZCBieSByZWZlcmVuY2UuICAqLwotLQotLQkgICAgICAvKiBD b3B5IHZhbHVlIG9udG8gdGhlIHN0YWNrIC4uLiAgKi8KLS0JICAgICAgcmVmcGFyYW0gPSBhbGln bl91cCAocmVmcGFyYW0sIDE2KTsKLS0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0tCQl3cml0ZV9t ZW1vcnkgKHJlZnBhcmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0tCi0tCSAgICAgIC8q IC4uLiBhbmQgcGFzcyBhIHBvaW50ZXIgdG8gdGhlIGNvcHkgYXMgcGFyYW1ldGVyLiAgKi8KLS0J ICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0tCQl7Ci0tCQkgIGlmIChncmVnIDw9IDEwKQotLQkJICAg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsCi0tCQkJCQkJICAgIHRk ZXAtPnBwY19ncDBfcmVnbnVtICsKLS0JCQkJCQkgICAgZ3JlZywgcmVmcGFyYW0pOwotLQkJICB3 cml0ZV9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoZ3BhcmFtLCB0ZGVwLT53b3Jkc2l6ZSwKLS0J CQkJCQkgYnl0ZV9vcmRlciwgcmVmcGFyYW0pOwotLQkJfQotLQkgICAgICBncmVnKys7Ci0tCSAg ICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6ZSwgdGRlcC0+d29y ZHNpemUpOwotLQkgICAgICByZWZwYXJhbSA9IGFsaWduX3VwIChyZWZwYXJhbSArIFRZUEVfTEVO R1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOwotLQkgICAgfQotLQkgIGVsc2UgaWYgKChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQKLS0JCSAgICB8fCBUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9FTlVNCi0tCQkgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfQk9PTAotLQkJICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0NIQVIKLS0J CSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIKLS0JCSAgICB8fCBUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0tCQkgICAmJiBUWVBFX0xFTkdUSCAodHlw ZSkgPD0gOCkKLS0JICAgIHsKLS0JICAgICAgLyogU2NhbGFycyBhbmQgUG9pbnRlcnMgZ2V0IHNp Z25bdW5dZXh0ZW5kZWQgYW5kIGdvIGluCi0tCSAgICAgICAgIGdwcjMgLi4gZ3ByMTAuICBUaGV5 IGNhbiBhbHNvIGVuZCB1cCBpbiBtZW1vcnkuICAqLwotLQkgICAgICBpZiAod3JpdGVfcGFzcykK LS0JCXsKLS0JCSAgLyogU2lnbiBleHRlbmQgdGhlIHZhbHVlLCB0aGVuIHN0b3JlIGl0IHVuc2ln bmVkLiAgKi8KLS0JCSAgVUxPTkdFU1Qgd29yZCA9IHVucGFja19sb25nICh0eXBlLCB2YWwpOwot LQkJICAvKiBDb252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvCi0tCQkgICAg IGRlc2NyaXB0b3JzLiAgKi8KLS0JCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X1BUUgotLQkJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkVGKQotLQkJ ICAgIHsKLS0JCSAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKLS0JCSAgICAgIHRhcmdl dF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotLQotLQkJ ICAgICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0tCQkJ ICB8fCBUWVBFX0NPREUgKHRhcmdldF90eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQotLQkJCXsK LS0JCQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsKLS0JCQkgIGNvbnZlcnRfY29kZV9hZGRyX3Rv X2Rlc2NfYWRkciAod29yZCwgJmRlc2MpOwotLQkJCSAgd29yZCA9IGRlc2M7Ci0tCQkJfQotLQkJ ICAgIH0KLS0JCSAgaWYgKGdyZWcgPD0gMTApCi0tCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRl X3Vuc2lnbmVkIChyZWdjYWNoZSwKLS0JCQkJCQkgICAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKwot LQkJCQkJCSAgICBncmVnLCB3b3JkKTsKLS0JCSAgd3JpdGVfbWVtb3J5X3Vuc2lnbmVkX2ludGVn ZXIgKGdwYXJhbSwgdGRlcC0+d29yZHNpemUsCi0tCQkJCQkJIGJ5dGVfb3JkZXIsIHdvcmQpOwot KwkJICBwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUsIGVsdmFsLCAm YXJncG9zKTsKLSAJCX0KLS0JICAgICAgZ3JlZysrOwotLQkgICAgICBncGFyYW0gPSBhbGlnbl91 cCAoZ3BhcmFtICsgVFlQRV9MRU5HVEggKHR5cGUpLCB0ZGVwLT53b3Jkc2l6ZSk7Ci0gCSAgICB9 Ci0gCSAgZWxzZQotIAkgICAgewotLQkgICAgICBpbnQgYnl0ZTsKLS0JICAgICAgZm9yIChieXRl ID0gMDsgYnl0ZSA8IFRZUEVfTEVOR1RIICh0eXBlKTsKLS0JCSAgIGJ5dGUgKz0gdGRlcC0+d29y ZHNpemUpCi0tCQl7Ci0tCQkgIGlmICh3cml0ZV9wYXNzICYmIGdyZWcgPD0gMTApCi0tCQkgICAg ewotLQkJICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKLS0JCSAgICAg IGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLSBieXRlOwotLQkJICAgICAgaWYgKGxlbiA+ IHRkZXAtPndvcmRzaXplKQotLQkJCWxlbiA9IHRkZXAtPndvcmRzaXplOwotLQkJICAgICAgbWVt c2V0IChyZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOwotLQkJICAgICAgLyogVGhlIEFCSSAodmVy c2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHZhbHVlcwotLQkJCSBzbWFsbGVyIHRoYW4gb25lIGRv dWJsZXdvcmQgYXJlIHJpZ2h0LWFsaWduZWQKLS0JCQkgYW5kIHRob3NlIGxhcmdlciBhcmUgbGVm dC1hbGlnbmVkLiAgR0NDCi0tCQkJIHZlcnNpb25zIGJlZm9yZSAzLjQgaW1wbGVtZW50ZWQgdGhp cwotLQkJCSBpbmNvcnJlY3RseTsgc2VlCi0tCQkJIDxodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTMu NC9wb3dlcnBjLWFiaS5odG1sPi4gICovCi0tCQkgICAgICBpZiAoYnl0ZSA9PSAwKQotLQkJCW1l bWNweSAocmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sCi0tCQkJCXZhbCArIGJ5dGUsIGxl bik7Ci0tCQkgICAgICBlbHNlCi0tCQkJbWVtY3B5IChyZWd2YWwsIHZhbCArIGJ5dGUsIGxlbik7 Ci0tCQkgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBncmVnLCByZWd2YWwp OwotLQkJICAgIH0KLS0JCSAgZ3JlZysrOwotLQkJfQotLQkgICAgICBpZiAod3JpdGVfcGFzcykK LS0JCXsKLS0JCSAgLyogV0FSTklORzogY2FnbmV5LzIwMDMtMDktMjE6IFN0cmljdGx5IHNwZWFr aW5nLCB0aGlzCi0tCQkgICAgIGlzbid0IG5lY2Vzc2FyeSwgdW5mb3J0dW5hdGVseSwgR0NDIGFw cGVhcnMgdG8gZ2V0Ci0tCQkgICAgICJzdHJ1Y3QgY29udmVudGlvbiIgcGFyYW1ldGVyIHBhc3Np bmcgd3JvbmcgcHV0dGluZwotLQkJICAgICBvZGQgc2l6ZWQgc3RydWN0dXJlcyBpbiBtZW1vcnkg aW5zdGVhZCBvZiBpbiBhCi0tCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91bmQgdGhpcyBieSBh bHdheXMgd3JpdGluZyB0aGUKLS0JCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAgRm9ydHVuYXRlbHks IGRvaW5nIHRoaXMKLS0JCSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICovCi0tCQkgIGludCBs ZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0tCQkgIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZSkK LS0JCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSArIHRkZXAtPndvcmRzaXplIC0gbGVuLCB2YWws IGxlbik7Ci0tCQkgIGVsc2UKLS0JCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFsLCBsZW4p OwotLQkJfQotLQkgICAgICBpZiAoZnJlZyA8PSAxMwotLQkJICAmJiBUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9TVFJVQ1QKLS0JCSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxCi0t CQkgICYmIFRZUEVfTEVOR1RIICh0eXBlKSA8PSAxNikKLS0JCXsKLS0JCSAgLyogVGhlIEFCSSAo dmVyc2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVjdHMKLS0JCSAgICAgY29udGFpbmluZyBh IHNpbmdsZSBmbG9hdGluZy1wb2ludCB2YWx1ZSwgYXQgYW55Ci0tCQkgICAgIGxldmVsIG9mIG5l c3Rpbmcgb2Ygc2luZ2xlLW1lbWJlciBzdHJ1Y3RzLCBhcmUKLS0JCSAgICAgcGFzc2VkIGluIGZs b2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0tCQkgIHdoaWxlIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9TVFJVQ1QKLS0JCQkgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQot LQkJICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKTsK LS0JCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkKLS0JCSAgICB7Ci0t CQkgICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgpCi0tCQkJewotLQkJCSAgaWYgKHdy aXRlX3Bhc3MpCi0tCQkJICAgIHsKLS0JCQkgICAgICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lT VEVSX1NJWkVdOwotLQkJCSAgICAgIHN0cnVjdCB0eXBlICpyZWd0eXBlCi0tCQkJCT0gcmVnaXN0 ZXJfdHlwZSAoZ2RiYXJjaCwKLS0JCQkJCQkgdGRlcC0+cHBjX2ZwMF9yZWdudW0pOwotLQkJCSAg ICAgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKHZhbCwgdHlwZSwgcmVndmFsLAotLQkJCQkJCSAg ICAgIHJlZ3R5cGUpOwotLQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUs Ci0tCQkJCQkJICAgICAodGRlcC0+cHBjX2ZwMF9yZWdudW0KLS0JCQkJCQkgICAgICArIGZyZWcp LAotLQkJCQkJCSAgICAgcmVndmFsKTsKLS0JCQkgICAgfQotLQkJCSAgZnJlZysrOwotLQkJCX0K LS0JCSAgICAgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNgotLQkJCSAgICAgICAm JiAoZ2RiYXJjaF9sb25nX2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gpCi0tCQkJCSAgID09IGZsb2F0 Zm9ybWF0c19pYm1fbG9uZ19kb3VibGUpKQotLQkJCXsKLS0JCQkgIGlmICh3cml0ZV9wYXNzKQot LQkJCSAgICB7Ci0tCQkJICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKLS0J CQkJCQkgICAgICh0ZGVwLT5wcGNfZnAwX3JlZ251bQotLQkJCQkJCSAgICAgICsgZnJlZyksCi0t CQkJCQkJICAgICB2YWwpOwotLQkJCSAgICAgIGlmIChmcmVnIDw9IDEyKQotLQkJCQlyZWdjYWNo ZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLAotLQkJCQkJCSAgICAgICAodGRlcC0+cHBjX2ZwMF9y ZWdudW0KLS0JCQkJCQkJKyBmcmVnICsgMSksCi0tCQkJCQkJICAgICAgIHZhbCArIDgpOwotLQkJ CSAgICB9Ci0tCQkJICBmcmVnICs9IDI7Ci0tCQkJfQotLQkJICAgIH0KLS0JCX0KLS0JICAgICAg LyogQWx3YXlzIGNvbnN1bWUgcGFyYW1ldGVyIHN0YWNrIHNwYWNlLiAgKi8KLS0JICAgICAgZ3Bh cmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNp emUpOwotKwkgICAgICAvKiBBbGwgb3RoZXIgdHlwZXMgYXJlIHBhc3NlZCBhcyBzaW5nbGUgYXJn dW1lbnRzLiAgKi8KLSsJICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9wYXJhbSAoZ2RiYXJjaCwg dHlwZSwgdmFsLCAmYXJncG9zKTsKLSAJICAgIH0KLSAJfQotIAotICAgICAgIGlmICghd3JpdGVf cGFzcykKLSAJewotIAkgIC8qIFNhdmUgdGhlIHRydWUgcmVnaW9uIHNpemVzIHJlYWR5IGZvciB0 aGUgc2Vjb25kIHBhc3MuICAqLwotLQkgIHJlZnBhcmFtX3NpemUgPSByZWZwYXJhbTsKLSsJICBy ZWZwYXJhbV9zaXplID0gYXJncG9zLnJlZnBhcmFtOwotIAkgIC8qIE1ha2UgY2VydGFpbiB0aGF0 IHRoZSBnZW5lcmFsIHBhcmFtZXRlciBzYXZlIGFyZWEgaXMgYXQKLSAJICAgICBsZWFzdCB0aGUg bWluaW11bSA4IHJlZ2lzdGVycyAob3IgZG91Ymxld29yZHMpIGluIHNpemUuICAqLwotLQkgIGlm IChncmVnIDwgOCkKLSsJICBpZiAoYXJncG9zLmdyZWcgPCA4KQotIAkgICAgZ3BhcmFtX3NpemUg PSA4ICogdGRlcC0+d29yZHNpemU7Ci0gCSAgZWxzZQotLQkgICAgZ3BhcmFtX3NpemUgPSBncGFy YW07Ci0rCSAgICBncGFyYW1fc2l6ZSA9IGFyZ3Bvcy5ncGFyYW07Ci0gCX0KLSAgICAgfQotIAot QEAgLTE3NTUsMjcxICsxNTY5LDI1MiBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcmV0dXJuIHNwOwotIH0KLSAKLSsvKiBTdWJy b3V0aW5lIG9mIHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSB0aGF0IGhhbmRsZXMgImJhc2Ui IHR5cGVzOgotKyAgIGludGVnZXIsIGZsb2F0aW5nLXBvaW50LCBhbmQgQWx0aVZlYyB2ZWN0b3Ig dHlwZXMuCi0gCi0tLyogVGhlIDY0IGJpdCBBQkkgcmV0dXJuIHZhbHVlIGNvbnZlbnRpb24uCi0t Ci0tICAgUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSByZXR1cm4tdmFsdWUgaXMgc3RvcmVkIGluIGEg cmVnaXN0ZXIsIHJldHVybgotLSAgIDAgaWYgdGhlIHJldHVybi12YWx1ZSBpcyBpbnN0ZWFkIHN0 b3JlZCBvbiB0aGUgc3RhY2sgKGEuay5hLiwKLS0gICBzdHJ1Y3QgcmV0dXJuIGNvbnZlbnRpb24p LgotKyAgIFRoaXMgcm91dGluZSBhbHNvIGhhbmRsZXMgY29tcG9uZW50cyBvZiBhZ2dyZWdhdGUg cmV0dXJuIHR5cGVzOwotKyAgIElOREVYIGRlc2NyaWJlcyB3aGljaCBwYXJ0IG9mIHRoZSBhZ2dy ZWdhdGUgaXMgdG8gYmUgaGFuZGxlZC4KLSAKLS0gICBGb3IgYSByZXR1cm4tdmFsdWUgc3RvcmVk IGluIGEgcmVnaXN0ZXI6IHdoZW4gV1JJVEVCVUYgaXMgbm9uLU5VTEwsCi0tICAgY29weSB0aGUg YnVmZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12YWx1ZSBsb2NhdGlv bgotLSAgIGxvY2F0aW9uOyB3aGVuIFJFQURCVUYgaXMgbm9uLU5VTEwsIGZpbGwgdGhlIGJ1ZmZl ciBmcm9tIHRoZQotLSAgIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIgcmV0dXJuLXZhbHVlIGxvY2F0 aW9uLiAgKi8KLS1lbnVtIHJldHVybl92YWx1ZV9jb252ZW50aW9uCi0tcHBjNjRfc3lzdl9hYmlf cmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpmdW5j dGlvbiwKLS0JCQkgICAgIHN0cnVjdCB0eXBlICp2YWx0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLAotLQkJCSAgICAgZ2RiX2J5dGUgKnJlYWRidWYsIGNvbnN0IGdkYl9ieXRlICp3cml0 ZWJ1ZikKLSsgICBSZXR1cm5zIHRydWUgaWYgVkFMVFlQRSBpcyBzb21lIHN1Y2ggYmFzZSB0eXBl IHRoYXQgY291bGQgYmUgaGFuZGxlZCwKLSsgICBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRp YyBpbnQKLStwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIHN0cnVjdCB0eXBlICp2YWx0eXBlLAotKwkJCQkgIHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGdkYl9ieXRlICpyZWFkYnVmLAotKwkJCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0 ZWJ1ZiwgaW50IGluZGV4KQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJh cmNoX3RkZXAgKGdkYmFyY2gpOwotLSAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJh cmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotLSAgc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSA9IGZ1 bmN0aW9uID8gdmFsdWVfdHlwZSAoZnVuY3Rpb24pIDogTlVMTDsKLS0gIGludCBvcGVuY2xfYWJp ID0gZnVuY190eXBlPyBwcGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAoZnVuY190eXBlKSA6IDA7Ci0g Ci0tICAvKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyB0byBzdXBwb3J0IGEgY2FsbGluZyBjb252ZW50 aW9uIHRoYXQKLS0gICAgIHJlcXVpcmVzIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gIEl0IHNo b3VsZG4ndCBiZSB1c2VkIG9uCi0tICAgICBwcm9jZXNzb3JzIHRoYXQgbGFjayB0aGVtLiAgKi8K LS0gIGdkYl9hc3NlcnQgKHBwY19mbG9hdGluZ19wb2ludF91bml0X3AgKGdkYmFyY2gpKTsKLS0K LS0gIC8qIEZsb2F0cyBhbmQgZG91YmxlcyBpbiBGMS4gICovCi0tICBpZiAoVFlQRV9DT0RFICh2 YWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4KQot LSAgICB7Ci0tICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKLS0gICAg ICBzdHJ1Y3QgdHlwZSAqcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBw Y19mcDBfcmVnbnVtKTsKLS0gICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLS0JewotLQkgIGNv bnZlcnRfdHlwZWRfZmxvYXRpbmcgKHdyaXRlYnVmLCB2YWx0eXBlLCByZWd2YWwsIHJlZ3R5cGUp OwotLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVn bnVtICsgMSwgcmVndmFsKTsKLS0JfQotLSAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0tCXsK LS0JICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVt ICsgMSwgcmVndmFsKTsKLS0JICBjb252ZXJ0X3R5cGVkX2Zsb2F0aW5nIChyZWd2YWwsIHJlZ3R5 cGUsIHJlYWRidWYsIHZhbHR5cGUpOwotLQl9Ci0tICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9S RUdJU1RFUl9DT05WRU5USU9OOwotLSAgICB9Ci0tICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9 PSBUWVBFX0NPREVfREVDRkxPQVQpCi0tICAgIHJldHVybiBnZXRfZGVjaW1hbF9mbG9hdF9yZXR1 cm5fdmFsdWUgKGdkYmFyY2gsIHZhbHR5cGUsIHJlZ2NhY2hlLCByZWFkYnVmLAotLQkJCQkJICAg d3JpdGVidWYpOwotLSAgLyogSW50ZWdlcnMgaW4gcjMuICAqLwotKyAgLyogSW50ZWdlcnMgbGl2 ZSBpbiBHUFJzIHN0YXJ0aW5nIGF0IHIzLiAgKi8KLSAgIGlmICgoVFlQRV9DT0RFICh2YWx0eXBl KSA9PSBUWVBFX0NPREVfSU5UCi0gICAgICAgIHx8IFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQ RV9DT0RFX0VOVU0KLSAgICAgICAgfHwgVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVf Q0hBUgotICAgICAgICB8fCBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9CT09MKQot ICAgICAgICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4KQotICAgICB7Ci0rICAgICAgaW50 IHJlZ251bSA9IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGluZGV4OwotKwotICAgICAgIGlm ICh3cml0ZWJ1ZiAhPSBOVUxMKQotIAl7Ci0gCSAgLyogQmUgY2FyZWZ1bCB0byBzaWduIGV4dGVu ZCB0aGUgdmFsdWUuICAqLwotLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVn Y2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKLSsJICByZWdjYWNoZV9jb29rZWRfd3Jp dGVfdW5zaWduZWQgKHJlZ2NhY2hlLCByZWdudW0sCi0gCQkJCQkgIHVucGFja19sb25nICh2YWx0 eXBlLCB3cml0ZWJ1ZikpOwotIAl9Ci0gICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLSAJewot LQkgIC8qIEV4dHJhY3QgdGhlIGludGVnZXIgZnJvbSByMy4gIFNpbmNlIHRoaXMgaXMgdHJ1bmNh dGluZyB0aGUKLSsJICAvKiBFeHRyYWN0IHRoZSBpbnRlZ2VyIGZyb20gR1BSLiAgU2luY2UgdGhp cyBpcyB0cnVuY2F0aW5nIHRoZQotIAkgICAgIHZhbHVlLCB0aGVyZSBpc24ndCBhIHNpZ24gZXh0 ZW5zaW9uIHByb2JsZW0uICAqLwotIAkgIFVMT05HRVNUIHJlZ3ZhbDsKLS0JICByZWdjYWNoZV9j b29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywK LS0JCQkJCSAmcmVndmFsKTsKLS0JICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVmLCBU WVBFX0xFTkdUSCAodmFsdHlwZSksIGJ5dGVfb3JkZXIsCi0tCQkJCSAgcmVndmFsKTsKLSsKLSsJ ICByZWdjYWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHJlZ251bSwgJnJlZ3Zh bCk7Ci0rCSAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAocmVhZGJ1ZiwgVFlQRV9MRU5HVEggKHZh bHR5cGUpLAotKwkJCQkgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksIHJlZ3ZhbCk7Ci0g CX0KLS0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0rICAg ICAgcmV0dXJuIDE7Ci0gICAgIH0KLS0gIC8qIEFsbCBwb2ludGVycyBsaXZlIGluIHIzLiAgKi8K LS0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIKLS0gICAgICB8fCBU WVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0rCi0rICAvKiBGbG9hdHMgYW5k IGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUgY29udmVydGVkCi0r ICAgICB0byBkb3VibGUgZmlyc3QuICAqLwotKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8 PSA4Ci0rICAgICAgJiYgVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQotICAg ICB7Ci0tICAgICAgLyogQWxsIHBvaW50ZXJzIGxpdmUgaW4gcjMuICAqLwotKyAgICAgIGludCBy ZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpbmRleDsKLSsgICAgICBzdHJ1Y3Qg dHlwZSAqcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSk7Ci0rICAgICAg Z2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKLSsKLSAgICAgICBpZiAod3JpdGVi dWYgIT0gTlVMTCkKLS0JcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBj X2dwMF9yZWdudW0gKyAzLCB3cml0ZWJ1Zik7Ci0rCXsKLSsJICBjb252ZXJ0X3R5cGVkX2Zsb2F0 aW5nICh3cml0ZWJ1ZiwgdmFsdHlwZSwgcmVndmFsLCByZWd0eXBlKTsKLSsJICByZWdjYWNoZV9j b29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHJlZ3ZhbCk7Ci0rCX0KLSAgICAgICBpZiAo cmVhZGJ1ZiAhPSBOVUxMKQotLQlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAt PnBwY19ncDBfcmVnbnVtICsgMywgcmVhZGJ1Zik7Ci0tICAgICAgcmV0dXJuIFJFVFVSTl9WQUxV RV9SRUdJU1RFUl9DT05WRU5USU9OOwotKwl7Ci0rCSAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJl Z2NhY2hlLCByZWdudW0sIHJlZ3ZhbCk7Ci0rCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAocmVn dmFsLCByZWd0eXBlLCByZWFkYnVmLCB2YWx0eXBlKTsKLSsJfQotKyAgICAgIHJldHVybiAxOwot ICAgICB9Ci0tICAvKiBPcGVuQ0wgdmVjdG9ycyA8IDE2IGJ5dGVzIGFyZSByZXR1cm5lZCBhcyBk aXN0aW5jdAotLSAgICAgc2NhbGFycyBpbiBmMS4uZjIgb3IgcjMuLnIxMC4gICovCi0tICBpZiAo VFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLS0gICAgICAmJiBUWVBFX1ZF Q1RPUiAodmFsdHlwZSkKLS0gICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdHlwZSkgPCAxNgotLSAg ICAgICYmIG9wZW5jbF9hYmkpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgdHlwZSAqZWx0eXBlID0g Y2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkpOwotLSAgICAgIGludCBp LCBuZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0g Ci0tICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7IGkrKykKLS0JewotLQkgIGludCBvZmZzZXQg PSBpICogVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0rICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28g aW4gZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQotKyAgICAgcGxhY2VkIGlu IHRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8KLSsgIGlmIChUWVBFX0xFTkdUSCAodmFs dHlwZSkgPD0gOAotKyAgICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0RF Q0ZMT0FUKQotKyAgICB7Ci0rICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVt ICsgMSArIGluZGV4OwotKyAgICAgIGludCBvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHZhbHR5 cGUpOwotIAotLQkgIGlmIChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkKLS0J ICAgIHsKLS0JICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSArIGk7 Ci0tCSAgICAgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tCSAgICAgIHN0 cnVjdCB0eXBlICpyZWd0eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsg ICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSsJcmVnY2FjaGVfY29va2VkX3dyaXRlX3BhcnQg KHJlZ2NhY2hlLCByZWdudW0sCi0rCQkJCSAgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh2YWx0eXBl KSwgd3JpdGVidWYpOwotKyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0rCXJlZ2NhY2hlX2Nv b2tlZF9yZWFkX3BhcnQgKHJlZ2NhY2hlLCByZWdudW0sCi0rCQkJCSAgIG9mZnNldCwgVFlQRV9M RU5HVEggKHZhbHR5cGUpLCByZWFkYnVmKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotIAot LQkgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLS0JCXsKLS0JCSAgY29udmVydF90eXBlZF9m bG9hdGluZyAod3JpdGVidWYgKyBvZmZzZXQsIGVsdHlwZSwKLS0JCQkJCSAgcmVndmFsLCByZWd0 eXBlKTsKLS0JCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtLCByZWd2 YWwpOwotLQkJfQotLQkgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotLQkJewotLQkJICByZWdj YWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLS0JCSAgY29udmVy dF90eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLAotLQkJCQkJICByZWFkYnVmICsgb2Zm c2V0LCBlbHR5cGUpOwotLQkJfQotLQkgICAgfQotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAg aW50IHJlZ251bSA9IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGk7Ci0tCSAgICAgIFVMT05H RVNUIHJlZ3ZhbDsKLSsgIC8qIElCTSBsb25nIGRvdWJsZSBzdG9yZWQgaW4gdHdvIGNvbnNlY3V0 aXZlIEZQUnMuICAqLwotKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSAxNgotKyAgICAg ICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAotKyAgICAgICYmIChnZGJh cmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKLSsJICA9PSBmbG9hdGZvcm1hdHNfaWJt X2xvbmdfZG91YmxlKSkKLSsgICAgewotKyAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAw X3JlZ251bSArIDEgKyAyICogaW5kZXg7Ci0gCi0tCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxM KQotLQkJewotLQkJICByZWd2YWwgPSB1bnBhY2tfbG9uZyAoZWx0eXBlLCB3cml0ZWJ1ZiArIG9m ZnNldCk7Ci0tCQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIHJl Z251bSwgcmVndmFsKTsKLS0JCX0KLS0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLS0JCXsK LS0JCSAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCByZWdudW0sICZy ZWd2YWwpOwotLQkJICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVmICsgb2Zmc2V0LAot LQkJCQkJICBUWVBFX0xFTkdUSCAoZWx0eXBlKSwgYnl0ZV9vcmRlciwKLS0JCQkJCSAgcmVndmFs KTsKLS0JCX0KLS0JICAgIH0KLSsgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSsJewotKwkg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYpOwotKwkg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdyaXRlYnVmICsg OCk7Ci0gCX0KLS0KLS0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJ T047Ci0rICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLSsJewotKwkgIHJlZ2NhY2hlX2Nvb2tl ZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKLSsJICByZWdjYWNoZV9jb29rZWRf cmVhZCAocmVnY2FjaGUsIHJlZ251bSArIDEsIHJlYWRidWYgKyA4KTsKLSsJfQotKyAgICAgIHJl dHVybiAxOwotICAgICB9Ci0tICAvKiBPcGVuQ0wgdmVjdG9ycyA+PSAxNiBieXRlcyBhcmUgcmV0 dXJuZWQgaW4gdjIuLnY5LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVf Q09ERV9BUlJBWQotLSAgICAgICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQotLSAgICAgICYmIFRZ UEVfTEVOR1RIICh2YWx0eXBlKSA+PSAxNgotLSAgICAgICYmIG9wZW5jbF9hYmkpCi0rCi0rICAv KiAxMjgtYml0IGRlY2ltYWwgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gYW4g ZXZlbi9vZGQKLSsgICAgIHBhaXIgb2YgRlBScywgd2l0aCB0aGUgZXZlbiBGUFIgaG9sZGluZyB0 aGUgbW9zdCBzaWduaWZpY2FudCBoYWxmLiAgKi8KLSsgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlw ZSkgPT0gMTYKLSsgICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9ERUNG TE9BVCkKLSAgICAgewotLSAgICAgIGludCBuX3JlZ3MgPSBUWVBFX0xFTkdUSCAodmFsdHlwZSkg LyAxNjsKLS0gICAgICBpbnQgaTsKLSsgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9y ZWdudW0gKyAyICsgMiAqIGluZGV4OwotIAotLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3JlZ3M7 IGkrKykKLSsgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAJewotLQkgIGludCBvZmZzZXQg PSBpICogMTY7Ci0tCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY192cjBfcmVnbnVtICsgMiArIGk7 Ci0tCi0tCSAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0tCSAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmICsgb2Zmc2V0KTsKLS0JICBpZiAocmVhZGJ1 ZiAhPSBOVUxMKQotLQkgICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0s IHJlYWRidWYgKyBvZmZzZXQpOwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUs IHJlZ251bSwgd3JpdGVidWYpOwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUs IHJlZ251bSArIDEsIHdyaXRlYnVmICsgOCk7Ci0gCX0KLS0KLS0gICAgICByZXR1cm4gUkVUVVJO X1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0rICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkK LSsJewotKwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVm KTsKLSsJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSArIDEsIHJlYWRi dWYgKyA4KTsKLSsJfQotKyAgICAgIHJldHVybiAxOwotICAgICB9Ci0tICAvKiBBcnJheSB0eXBl IGhhcyBtb3JlIHRoYW4gb25lIHVzZS4gICovCi0tICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9 PSBUWVBFX0NPREVfQVJSQVkpCi0rCi0rICAvKiBBbHRpVmVjIHZlY3RvcnMgYXJlIHJldHVybmVk IGluIFZScyBzdGFydGluZyBhdCB2Mi4gICovCi0rICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9 PSBUWVBFX0NPREVfQVJSQVkgJiYgVFlQRV9WRUNUT1IgKHZhbHR5cGUpCi0rICAgICAgJiYgdGRl cC0+dmVjdG9yX2FiaSA9PSBQT1dFUlBDX1ZFQ19BTFRJVkVDKQotICAgICB7Ci0tICAgICAgLyog U21hbGwgY2hhcmFjdGVyIGFycmF5cyBhcmUgcmV0dXJuZWQsIHJpZ2h0IGp1c3RpZmllZCwgaW4g cjMuICAqLwotLSAgICAgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPD0gOAotLSAgICAgICAg JiYgVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh2YWx0eXBlKSkgPT0gVFlQRV9DT0RFX0lO VAotLSAgICAgICAgJiYgVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKSA9 PSAxKQotLSAgICAgICAgewotLSAgICAgICAgICBpbnQgb2Zmc2V0ID0gKHJlZ2lzdGVyX3NpemUg KGdkYmFyY2gsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMykKLS0gICAgICAgICAgICAgICAgICAg ICAgIC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpKTsKLS0gICAgICAgICAgaWYgKHdyaXRlYnVmICE9 IE5VTEwpCi0tICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAocmVnY2FjaGUs IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHZhbHR5cGUpLCB3cml0ZWJ1Zik7Ci0tICAg ICAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0tICAgICAgICAgICByZWdjYWNoZV9jb29rZWRf cmVhZF9wYXJ0IChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAzLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFsdHlw ZSksIHJlYWRidWYpOwotLSAgICAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NP TlZFTlRJT047Ci0tCX0KLS0gICAgICAvKiBBIFZNWCB2ZWN0b3IgaXMgcmV0dXJuZWQgaW4gdjIu ICAqLwotLSAgICAgIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQot LQkgICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQotLQkgICYmIHRkZXAtPnZlY3Rvcl9hYmkgPT0g UE9XRVJQQ19WRUNfQUxUSVZFQykKLS0gICAgICAgIHsKLS0gICAgICAgICAgaWYgKHJlYWRidWYp Ci0tICAgICAgICAgICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNf dnIwX3JlZ251bSArIDIsIHJlYWRidWYpOwotLSAgICAgICAgICBpZiAod3JpdGVidWYpCi0tICAg ICAgICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX3ZyMF9y ZWdudW0gKyAyLAotLQkJCQkgICB3cml0ZWJ1Zik7Ci0tICAgICAgICAgIHJldHVybiBSRVRVUk5f VkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKLS0gICAgICAgIH0KLSsgICAgICBpbnQgcmVnbnVt ID0gdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyAyICsgaW5kZXg7Ci0rCi0rICAgICAgaWYgKHdyaXRl YnVmICE9IE5VTEwpCi0rCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwg d3JpdGVidWYpOwotKyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0rCXJlZ2NhY2hlX2Nvb2tl ZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKLSsgICAgICByZXR1cm4gMTsKLSAg ICAgfQotLSAgLyogQmlnIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBnZXQgc3RvcmVkIGluIGFkamFj ZW50IGZsb2F0aW5nCi0tICAgICBwb2ludCByZWdpc3RlcnMsIHN0YXJ0aW5nIHdpdGggRjEuICAq LwotLSAgaWYgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAotLSAgICAgICYm IChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPT0gMTYgfHwgVFlQRV9MRU5HVEggKHZhbHR5cGUpID09 IDMyKSkKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBUaGUgNjQgYml0IEFCSSByZXR1cm4g dmFsdWUgY29udmVudGlvbi4KLSsKLSsgICBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIHJldHVybi12 YWx1ZSBpcyBzdG9yZWQgaW4gYSByZWdpc3RlciwgcmV0dXJuCi0rICAgMCBpZiB0aGUgcmV0dXJu LXZhbHVlIGlzIGluc3RlYWQgc3RvcmVkIG9uIHRoZSBzdGFjayAoYS5rLmEuLAotKyAgIHN0cnVj dCByZXR1cm4gY29udmVudGlvbikuCi0rCi0rICAgRm9yIGEgcmV0dXJuLXZhbHVlIHN0b3JlZCBp biBhIHJlZ2lzdGVyOiB3aGVuIFdSSVRFQlVGIGlzIG5vbi1OVUxMLAotKyAgIGNvcHkgdGhlIGJ1 ZmZlciB0byB0aGUgY29ycmVzcG9uZGluZyByZWdpc3RlciByZXR1cm4tdmFsdWUgbG9jYXRpb24K LSsgICBsb2NhdGlvbjsgd2hlbiBSRUFEQlVGIGlzIG5vbi1OVUxMLCBmaWxsIHRoZSBidWZmZXIg ZnJvbSB0aGUKLSsgICBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12YWx1ZSBsb2NhdGlv bi4gICovCi0rZW51bSByZXR1cm5fdmFsdWVfY29udmVudGlvbgotK3BwYzY0X3N5c3ZfYWJpX3Jl dHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqZnVuY3Rp b24sCi0rCQkJICAgICBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwKLSsJCQkgICAgIGdkYl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJfYnl0ZSAqd3JpdGVi dWYpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2Ri YXJjaCk7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY190eXBlID0gZnVuY3Rpb24gPyB2YWx1ZV90eXBl IChmdW5jdGlvbikgOiBOVUxMOwotKyAgaW50IG9wZW5jbF9hYmkgPSBmdW5jX3R5cGU/IHBwY19z eXN2X3VzZV9vcGVuY2xfYWJpIChmdW5jX3R5cGUpIDogMDsKLSsgIHN0cnVjdCB0eXBlICplbHR5 cGU7Ci0rICBpbnQgbmVsdCwgaSwgb2s7Ci0rCi0rICAvKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyB0 byBzdXBwb3J0IGEgY2FsbGluZyBjb252ZW50aW9uIHRoYXQKLSsgICAgIHJlcXVpcmVzIGZsb2F0 aW5nLXBvaW50IHJlZ2lzdGVycy4gIEl0IHNob3VsZG4ndCBiZSB1c2VkIG9uCi0rICAgICBwcm9j ZXNzb3JzIHRoYXQgbGFjayB0aGVtLiAgKi8KLSsgIGdkYl9hc3NlcnQgKHBwY19mbG9hdGluZ19w b2ludF91bml0X3AgKGdkYmFyY2gpKTsKLSsKLSsgIC8qIENvbXBsZXggdHlwZXMgYXJlIHJldHVy bmVkIGFzIGlmIHR3byBpbmRlcGVuZGVudCBzY2FsYXJzLiAgKi8KLSsgIGlmIChUWVBFX0NPREUg KHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYKQotICAgICB7Ci0tICAgICAgaWYgKHdyaXRl YnVmIHx8IHJlYWRidWYgIT0gTlVMTCkKLSsgICAgICBlbHR5cGUgPSBjaGVja190eXBlZGVmIChU WVBFX1RBUkdFVF9UWVBFICh2YWx0eXBlKSk7Ci0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IDI7 IGkrKykKLSAJewotLQkgIGludCBpOwotLQkgIGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdUSCAo dmFsdHlwZSkgLyA4OyBpKyspCi0tCSAgICB7Ci0tCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxM KQotLQkJcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdu dW0gKyAxICsgaSwKLS0JCQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkg KiA4KTsKLS0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLS0JCXJlZ2NhY2hlX2Nvb2tlZF9y ZWFkIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKLS0JCQkJICAgICAg KGJmZF9ieXRlICopIHJlYWRidWYgKyBpICogOCk7Ci0tCSAgICB9Ci0rCSAgb2sgPSBwcGM2NF9z eXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNoZSwKLSsJ CQkJCQkgcmVhZGJ1Ziwgd3JpdGVidWYsIGkpOwotKwkgIGdkYl9hc3NlcnQgKG9rKTsKLSsKLSsJ ICBpZiAocmVhZGJ1ZikKLSsJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0r CSAgaWYgKHdyaXRlYnVmKQotKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7 Ci0gCX0KLSAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0g ICAgIH0KLS0gIC8qIENvbXBsZXggdmFsdWVzIGdldCByZXR1cm5lZCBpbiBmMTpmMiwgbmVlZCB0 byBjb252ZXJ0LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9D T01QTEVYCi0tICAgICAgJiYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSA4IHx8IFRZUEVfTEVO R1RIICh2YWx0eXBlKSA9PSAxNikpCi0rCi0rICAvKiBPcGVuQ0wgdmVjdG9ycyBzaG9ydGVyIHRo YW4gMTYgYnl0ZXMgYXJlIHJldHVybmVkIGFzIGlmCi0rICAgICBhIHNlcmllcyBvZiBpbmRlcGVu ZGVudCBzY2FsYXJzOyBPcGVuQ0wgdmVjdG9ycyAxNiBieXRlcwotKyAgICAgb3IgbG9uZ2VyIGFy ZSByZXR1cm5lZCBhcyBpZiBhIHNlcmllcyBvZiBBbHRpVmVjIHZlY3RvcnMuICAqLwotKyAgaWYg KFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZICYmIFRZUEVfVkVDVE9SICh2 YWx0eXBlKQotKyAgICAgICYmIG9wZW5jbF9hYmkpCi0gICAgIHsKLS0gICAgICBpZiAocmVnY2Fj aGUgIT0gTlVMTCkKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHZhbHR5cGUpIDwgMTYpCi0rCWVs dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKTsKLSsgICAg ICBlbHNlCi0rCWVsdHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY192cjBf cmVnbnVtKTsKLSsKLSsgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5cGUpIC8gVFlQRV9M RU5HVEggKGVsdHlwZSk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7IGkrKykKLSAJewot LQkgIGludCBpOwotLQkgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCi0tCSAgICB7Ci0tCSAgICAg IGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tCSAgICAgIHN0cnVjdCB0eXBl ICpyZWd0eXBlID0KLS0JCXJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY19mcDBfcmVn bnVtKTsKLS0JICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOwotLQkgICAgICB0YXJnZXRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKTsKLS0JICAg ICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0tCQl7Ci0tCQkgIGNvbnZlcnRfdHlwZWRfZmxvYXRp bmcgKChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArCi0tCQkJCQkgIGkgKiBUWVBFX0xFTkdU SCAodGFyZ2V0X3R5cGUpLCAKLS0JCQkJCSAgdGFyZ2V0X3R5cGUsIHJlZ3ZhbCwgcmVndHlwZSk7 Ci0tCQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpLAot LQkJCQkJIHJlZ3ZhbCk7Ci0tCQl9Ci0tCSAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0tCQl7 Ci0tCQkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndmFsKTsKLS0JCSAgY29u dmVydF90eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLAotLQkJCQkJICAoYmZkX2J5dGUg KikgcmVhZGJ1ZiArCi0tCQkJCQkgIGkgKiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLAotLQkJ CQkJICB0YXJnZXRfdHlwZSk7Ci0tCQl9Ci0tCSAgICB9Ci0rCSAgb2sgPSBwcGM2NF9zeXN2X2Fi aV9yZXR1cm5fdmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNoZSwKLSsJCQkJCQkg cmVhZGJ1Ziwgd3JpdGVidWYsIGkpOwotKwkgIGdkYl9hc3NlcnQgKG9rKTsKLSsKLSsJICBpZiAo cmVhZGJ1ZikKLSsJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0rCSAgaWYg KHdyaXRlYnVmKQotKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0gCX0K LSAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0gICAgIH0K LS0gIC8qIEJpZyBjb21wbGV4IHZhbHVlcyBnZXQgc3RvcmVkIGluIGYxOmY0LiAgKi8KLS0gIGlm IChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYICYmIFRZUEVfTEVOR1RI ICh2YWx0eXBlKSA9PSAzMikKLSsKLSsgIC8qIEFsbCBwb2ludGVycyBsaXZlIGluIHIzLiAgKi8K LSsgIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIKLSsgICAgICB8fCBU WVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0gICAgIHsKLS0gICAgICBpZiAo cmVnY2FjaGUgIT0gTlVMTCkKLS0JewotLQkgIGludCBpOwotLQkgIGZvciAoaSA9IDA7IGkgPCA0 OyBpKyspCi0tCSAgICB7Ci0tCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQotLQkJcmVnY2Fj aGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwK LS0JCQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkgKiA4KTsKLS0JICAg ICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLS0JCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNo ZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKLS0JCQkJICAgICAgKGJmZF9ieXRlICop IHJlYWRidWYgKyBpICogOCk7Ci0tCSAgICB9Ci0tCX0KLSsgICAgICBpbnQgcmVnbnVtID0gdGRl cC0+cHBjX2dwMF9yZWdudW0gKyAzOwotKwotKyAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQot KwlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmKTsKLSsg ICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotKwlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2Fj aGUsIHJlZ251bSwgcmVhZGJ1Zik7Ci0gICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RF Ul9DT05WRU5USU9OOwotICAgICB9Ci0rCi0rICAvKiBTbWFsbCBjaGFyYWN0ZXIgYXJyYXlzIGFy ZSByZXR1cm5lZCwgcmlnaHQganVzdGlmaWVkLCBpbiByMy4gICovCi0rICBpZiAoVFlQRV9DT0RF ICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLSsgICAgICAmJiBUWVBFX0xFTkdUSCAodmFs dHlwZSkgPD0gOAotKyAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlw ZSkpID09IFRZUEVfQ09ERV9JTlQKLSsgICAgICAmJiBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRf VFlQRSAodmFsdHlwZSkpID09IDEpCi0rICAgIHsKLSsgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+ cHBjX2dwMF9yZWdudW0gKyAzOwotKyAgICAgIGludCBvZmZzZXQgPSAocmVnaXN0ZXJfc2l6ZSAo Z2RiYXJjaCwgcmVnbnVtKSAtIFRZUEVfTEVOR1RIICh2YWx0eXBlKSk7Ci0rCi0rICAgICAgaWYg KHdyaXRlYnVmICE9IE5VTEwpCi0rCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChyZWdjYWNo ZSwgcmVnbnVtLAotKwkJCQkgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIHdyaXRl YnVmKTsKLSsgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotKwlyZWdjYWNoZV9jb29rZWRfcmVh ZF9wYXJ0IChyZWdjYWNoZSwgcmVnbnVtLAotKwkJCQkgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh2 YWx0eXBlKSwgcmVhZGJ1Zik7Ci0rICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9D T05WRU5USU9OOwotKyAgICB9Ci0rCi0rICAvKiBIYW5kbGUgcGxhaW4gYmFzZSB0eXBlcy4gICov Ci0rICBpZiAocHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UgKGdkYmFyY2gsIHZhbHR5 cGUsIHJlZ2NhY2hlLAotKwkJCQkJcmVhZGJ1Ziwgd3JpdGVidWYsIDApKQotKyAgICByZXR1cm4g UkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0rCi0gICByZXR1cm4gUkVUVVJOX1ZB TFVFX1NUUlVDVF9DT05WRU5USU9OOwotIH0KLSAKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0t cHBjNjRsZTA1b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTNmZGEwLi4wMDAwMDAwCi0tLSBhL2dkYi11 cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA QAotY29tbWl0IGQ2MzE2N2FmZmMyYTU2MTg5ZTNiYTJjYzQ3ZGQ5YTM0NTEyMDhiNTkKLUF1dGhv cjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+Ci1EYXRlOiAgIFR1 ZSBGZWIgNCAxODoyNjoyNiAyMDE0ICswMTAwCi0KLSAgICBQb3dlclBDNjQgbGl0dGxlLWVuZGlh biBmaXhlczogc3RydWN0dXJlIHBhc3NpbmcKLSAgICAKLSAgICBXaGVuIHBhc3NpbmcgYSBzbWFs bCBzdHJ1Y3R1cmUgaW4gYSBHUFIsIHRoZSBBQkkgc3BlY2lmaWVzIHRoYXQgaXQKLSAgICBzaG91 bGQgYmUgcGFzc2VkIGluIHRoZSBsZWFzdC1zaWduaWZpY2FudCBieXRlcyBvZiB0aGUgcmVnaXN0 ZXIKLSAgICAob3Igc3RhY2sgc2xvdCkuICBPbiBiaWctZW5kaWFuIHN5c3RlbXMsIHRoaXMgbWVh bnMgdGhlIHZhbHVlCi0gICAgbmVlZHMgdG8gYmUgc3RvcmVkIGF0IGFuIG9mZnNldCwgd2hpY2gg aXMgd2hhdCBjdXJyZW50IGNvZGUgZG9lcy4KLSAgICAKLSAgICBIb3dldmVyLCBvbiBsaXR0bGUt ZW5kaWFuIHN5c3RlbXMsIHRoZSBsZWFzdC1zaWduaWZpY2FudCBieXRlcyBhcmUKLSAgICBhZGRy ZXNzZXMgd2l0aCBvZmZzZXQgMC4gIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdC4KLSAgICAKLSAgICBn ZGIvQ2hhbmdlTG9nOgotICAgIAotICAgIAkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9h YmlfcHVzaF92YWwpOiBVc2UgY29ycmVjdAotICAgIAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3 aGVuIHBhc3Npbmcgc21hbGwgc3RydWN0dXJlcy4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMj IGIvZ2RiL0NoYW5nZUxvZwotIyMgLTEsNSArMSwxMCBAQAotIDIwMTQtMDItMDQgIFVscmljaCBX ZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0gCi0rCSogcHBjLXN5c3YtdGRlcC5jIChw cGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IFVzZSBjb3JyZWN0Ci0rCW9mZnNldCBvbiBsaXR0bGUt ZW5kaWFuIHdoZW4gcGFzc2luZyBzbWFsbCBzdHJ1Y3R1cmVzLgotKwotKzIwMTQtMDItMDQgIFVs cmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogcHBjLXN5c3YtdGRl cC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRhdGUgY29tbWVudC4KLSAJ KHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0cnVjdHVyZS4KLSAJKHBwYzY0 X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCi0tLS0gYS9nZGIvcHBjLXN5c3YtdGRlcC5j Ci0rKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCi1AQCAtMTE1MCw3ICsxMTUwLDggQEAgcHBjNjRf c3lzdl9hYmlfcHVzaF92YWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgZG91Ymxl d29yZCBhcmUgcmlnaHQtYWxpZ25lZCBhbmQgdGhvc2UgbGFyZ2VyIGFyZSBsZWZ0LWFsaWduZWQu Ci0gICAgICBHQ0MgdmVyc2lvbnMgYmVmb3JlIDMuNCBpbXBsZW1lbnRlZCB0aGlzIGluY29ycmVj dGx5OyBzZWUKLSAgICAgIDxodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTMuNC9wb3dlcnBjLWFiaS5o dG1sPi4gICovCi0tICBpZiAobGVuIDwgdGRlcC0+d29yZHNpemUpCi0rICBpZiAobGVuIDwgdGRl cC0+d29yZHNpemUKLSsgICAgICAmJiBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJG RF9FTkRJQU5fQklHKQotICAgICBvZmZzZXQgPSB0ZGVwLT53b3Jkc2l6ZSAtIGxlbjsKLSAKLSAg IGlmIChhcmdwb3MtPnJlZ2NhY2hlKQoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxl MDZvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMzI1OGQuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFt LXBwYzY0bGUwNm9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1jb21t aXQgNmVkMTRmZjMzOTc5YmM0ODM2N2MzNWIxYjIzNWZlZjhjNWUyMjI5YgotQXV0aG9yOiBVbHJp Y2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURhdGU6ICAgVHVlIEZlYiA0 IDE4OjI4OjI0IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBsaXR0bGUtZW5kaWFuIGZpeGVz OiBBbHRpVmVjIHRlc3RzCi0gICAgCi0gICAgQSBjb3VwbGUgb2YgQWx0aVZlYyB0ZXN0cyBmYWls IHNwdXJpb3VzbHkgb24gcG93ZXJwYzY0bGUtbGludXgsIGJlY2F1c2UKLSAgICB0aGV5IGNvbXBh cmUgYWdhaW5zdCBhbiBpbmNvcnJlY3QgcGF0dGVybi4gIE5vdGUgdGhhdCB0aG9zZSB0ZXN0cyBh bHJlYWR5Ci0gICAgY29udGFpbiBsaXR0bGUtZW5kaWFuIHZhcmlhbnRzIG9mIHRoZSBwYXR0ZXJu cywgYnV0IHRob3NlIHNlZW0gdG8gaGF2ZQotICAgIGJpdC1yb3R0ZWQgYSBiaXQ6IHdoZW4gb3V0 cHV0dGluZyBhIHZlY3RvciwgR0RCIG5vIGxvbmdlciBvbWl0cyB0cmFpbGluZwotICAgIHplcm8g ZWxlbWVudHMgKGFzIGl0IHVzZWQgdG8gZG8gaW4gdGhlIHBhc3QpLgotICAgIAotICAgIFRoaXMg cGF0Y2ggdXBkYXRlcyB0aGUgcGF0dGVybiB0byB0aGUgbmV3IEdEQiBvdXRwdXQgYmVoYXZpb3Iu Ci0gICAgCi0gICAgSW4gYWRkaXRpb24sIHRoZSBwYXRjaCB1cGRhdGVzIHRoZSBlbmRpYW4gdGVz dCB0byB1c2UgdGhlIG5ldwotICAgIGdkYl90ZXN0X211bHRpcGxlIGxvZ2ljIGluc3RlYWQgb2Yg Z2RiX2V4cGVjdC4KLSAgICAKLSAgICBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKLSAgICAKLSAg ICAJKiBnZGIuYXJjaC9hbHRpdmVjLXJlZ3MuZXhwOiBVc2UgZ2RiX3Rlc3RfbXVsdGlwbGUgZm9y IGVuZGlhbiB0ZXN0LgotICAgIAkoZGVjaW1hbF92ZWN0b3IpOiBGaXggZm9yIGxpdHRsZS1lbmRp YW4uCi0KLSMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwotIyMgLTEsMyArMSw4IEBACi0rMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmQg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotKwkqIGdkYi5hcmNoL2FsdGl2ZWMtcmVncy5leHA6 IFVzZSBnZGJfdGVzdF9tdWx0aXBsZSBmb3IgZW5kaWFuIHRlc3QuCi0rCShkZWNpbWFsX3ZlY3Rv cik6IEZpeCBmb3IgbGl0dGxlLWVuZGlhbi4KLSsKLSAyMDE0LTAxLTI5ICBKb3NlIEUuIE1hcmNo ZXNpICA8am9zZS5tYXJjaGVzaUBvcmFjbGUuY29tPgotIAotIAkqIGdkYi5hcmNoL3NwYXJjLXN5 c3N0ZXAuZXhwOiBOZXcgZmlsZS4KLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYWx0aXZl Yy1yZWdzLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbHRpdmVjLXJlZ3MuZXhw Ci1AQCAtNzksMTcgKzc5LDE2IEBAIGdkYl90ZXN0ICJzZXQgXCR2cnNhdmUgPSAxIiAiIiAiIgot IAotIGdkYl90ZXN0ICJuZXh0IiAiIiAiIgotIAotLXNlbmRfZ2RiICJzaG93IGVuZGlhblxuIgot IHNldCBlbmRpYW5uZXNzICIiCi0tZ2RiX2V4cGVjdCB7Ci0rc2V0IG1zZyAiZGV0ZWN0IGVuZGlh bm5lc3MiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInNob3cgZW5kaWFuIiAiJG1zZyIgewotICAgICAt cmUgIihUaGUgdGFyZ2V0IGVuZGlhbm5lc3MgaXMgc2V0IGF1dG9tYXRpY2FsbHkgLmN1cnJlbnRs eSApKGJpZ3xsaXR0bGUpKCBlbmRpYW4uKikkZ2RiX3Byb21wdCAkIiB7Ci0tICAgICAgICBwYXNz ICJlbmRpYW5uZXNzIgotLQlzZXQgZW5kaWFubmVzcyAkZXhwZWN0X291dCgyLHN0cmluZykKLSsg ICAgICAgIHBhc3MgIiRtc2ciCi0rICAgICAgICBzZXQgZW5kaWFubmVzcyAkZXhwZWN0X291dCgy LHN0cmluZykKLSAgICAgfQotICAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotLQlmYWlsICJj b3VsZG4ndCBnZXQgZW5kaWFubmVzcyIKLSsgICAgICAgIGZhaWwgIiRtc2ciCi0gICAgIH0KLS0g ICAgdGltZW91dAkJeyBmYWlsICIodGltZW91dCkgZW5kaWFubmVzcyIgfQotIH0KLSAKLSAjIEFu ZCB0aGVuIHJlYWQgdGhlIEFsdGlWZWMgcmVnaXN0ZXJzIGJhY2ssIHRvIHNlZSB0aGF0Ci1AQCAt MTE4LDcgKzExNyw3IEBAIGdkYl90ZXN0ICJpbmZvIHJlZyB2c2NyIiAidnNjci4qMHgxXHQxIiAi aW5mbyByZWcgdnNjciIKLSBpZiB7JGVuZGlhbm5lc3MgPT0gImJpZyJ9IHsKLSAgICAgIHNldCBk ZWNpbWFsX3ZlY3RvciAiLnVpbnQxMjggPSAweDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTAwMDAw MDAxLCB2NF9mbG9hdCA9IC4xLiplLTQ1LCAxLiplLTQ1LCAxLiplLTQ1LCAxLiplLTQ1LiwgdjRf aW50MzIgPSAuMSwgMSwgMSwgMS4sIHY4X2ludDE2ID0gLjAsIDEsIDAsIDEsIDAsIDEsIDAsIDEu LCB2MTZfaW50OCA9IC4wLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLCAw LCAxLi4iCi0gfSBlbHNlIHsKLS0gICAgIHNldCBkZWNpbWFsX3ZlY3RvciAiLnVpbnQxMjggPSAw eDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4xLiplLTQ1LCAx LiplLTQ1LCAxLiplLTQ1LCAxLiplLTQ1LiwgdjRfaW50MzIgPSAuMSwgMSwgMSwgMS4sIHY4X2lu dDE2ID0gLjEsIDAsIDEsIDAsIDEsIDAsIDEsIDAuLCB2MTZfaW50OCA9IC4xLCAwLCAwLCAwLCAx LCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLi4iCi0rICAgICBzZXQgZGVjaW1hbF92ZWN0 b3IgIi51aW50MTI4ID0gMHgwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxv YXQgPSAuMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NS4sIHY0X2ludDMyID0gLjEs IDEsIDEsIDEuLCB2OF9pbnQxNiA9IC4xLCAwLCAxLCAwLCAxLCAwLCAxLCAwLiwgdjE2X2ludDgg PSAuMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMC4uIgotIH0K LSAKLSBmb3Ige3NldCBpIDB9IHskaSA8IDMyfSB7aW5jciBpIDF9IHsKCmRpZmYgLS1naXQgYS9n ZGItdXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDdv ZjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDhkNDE5Li4wMDAwMDAw Ci0tLSBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDdvZjE1LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTQ5ICswLDAgQEAKLWNvbW1pdCAwODRlZTU0NTUyZjZjMzVkNzQwZThiOWJjODFhNGZlOGQ4 YmIxNzhiCi1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29t PgotRGF0ZTogICBUdWUgRmViIDQgMTg6MzE6MzggMjAxNCArMDEwMAotCi0gICAgUG93ZXJQQzY0 IGxpdHRsZS1lbmRpYW4gZml4ZXM6IFZTWCB0ZXN0cyBhbmQgcHNldWRvLXJlZ3MKLSAgICAKLSAg ICBNYW55IFZTWCB0ZXN0IHdlcmUgZmFpbGluZyBvbiBwb3dlcnBjNjRsZS1saW51eCwgc2luY2Ug LWFzIG9wcG9zZWQgdG8gdGhlCi0gICAgQWx0aVZlYyB0ZXN0cy0gdGhlcmUgbmV2ZXIgd2VyZSBs aXR0bGUtZW5kaWFuIHZlcnNpb25zIG9mIHRoZSB0ZXN0IHBhdHRlcm5zLgotICAgIAotICAgIFRo aXMgcGF0Y2ggYWRkcyBzdWNoIHBhdHRlcm5zLCBhbG9uZyB0aGUgbGluZXMgb2YgYWx0aXZlYy1y ZWdzLmV4cC4KLSAgICAKLSAgICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYW4gYWN0dWFsIGNvZGUg Y2hhbmdlIHJlcXVpcmVkOiBGb3IgdGhvc2UgVlNYCi0gICAgcmVnaXN0ZXJzIHRoYXQgb3Zlcmxh cCBhIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyLCB0aGUgRlAgcmVnaXN0ZXIKLSAgICBvdmVybGFw cyB0aGUgbW9zdC1zaWduaWZpY2FudCBoYWxmIG9mIHRoZSBWU1ggcmVnaXN0ZXIgYm90aCBvbiBi aWctCi0gICAgYW5kIGxpdHRsZS1lbmRpYW4gc3lzdGVtcy4gIEhvd2V2ZXIsIG9uIGxpdHRsZS1l bmRpYW4gc3lzdGVtcywgdGhhdAotICAgIGhhbGYgaXMgc3RvcmVkIGF0IGFuIG9mZnNldCBvZiA4 IGJ5dGVzIChub3QgMCkuICBUaGlzIHdvcmtzIGFscmVhZHkKLSAgICBmb3IgdGhlICJyZWFsIiBG UCByZWdpc3RlcnMsIGJ1dCBjdXJyZW50IGNvZGUgZ2V0cyBpdCB3cm9uZyBmb3IKLSAgICB0aGUg ImV4dGVuZGVkIiBwc2V1ZG8gRlAgcmVnaXN0ZXIgR0RCIGdlbmVyYXRlcyBmb3IgdGhlIHNlY29u ZAotICAgIGhhbGYgb2YgdGhlIFZTWCByZWdpc3RlciBiYW5rLgotICAgIAotICAgIFRoaXMgcGF0 Y2ggdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyBwc2V1ZG8gcmVhZC93cml0ZSByb3V0aW5lcwot ICAgIHRvIHRha2UgdGhlIGFwcHJvcHJpYXRlIG9mZnNldCBpbnRvIGNvbnNpZGVyYXRpb24uCi0g ICAgCi0gICAgZ2RiL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiByczYwMDAtdGRlcC5jIChlZnBy X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogVXNlIGNvcnJlY3Qgb2Zmc2V0Ci0gICAgCW9mIHRoZSBv dmVybGFwcGVkIEZQIHJlZ2lzdGVyIHdpdGhpbiB0aGUgVlNYIHJlZ2lzdGVyIG9uIGxpdHRsZS0K LSAgICAJZW5kaWFuIHBsYXRmb3Jtcy4KLSAgICAJKGVmcHJfcHNldWRvX3JlZ2lzdGVyX3dyaXRl KTogTGlrZXdpc2UuCi0gICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0gICAgCi0g ICAgCSogZ2RiLmFyY2gvdnN4LXJlZ3MuZXhwOiBDaGVjayB0YXJnZXQgZW5kaWFubmVzcy4gIFBy b3ZpZGUgdmFyaWFudHMKLSAgICAJb2YgdGhlIHRlc3QgcGF0dGVybnMgZm9yIHVzZSBvbiBsaXR0 bGUtZW5kaWFuIHN5c3RlbXMuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFu Z2VMb2cKLSMjIC0xLDUgKzEsMTIgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1 d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHJzNjAwMC10ZGVwLmMgKGVmcHJfcHNldWRvX3Jl Z2lzdGVyX3JlYWQpOiBVc2UgY29ycmVjdCBvZmZzZXQKLSsJb2YgdGhlIG92ZXJsYXBwZWQgRlAg cmVnaXN0ZXIgd2l0aGluIHRoZSBWU1ggcmVnaXN0ZXIgb24gbGl0dGxlLQotKwllbmRpYW4gcGxh dGZvcm1zLgotKwkoZWZwcl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsKLSsy MDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkq IHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF92YWwpOiBVc2UgY29ycmVjdAot IAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3Npbmcgc21hbGwgc3RydWN0dXJlcy4K LSAKLS0tLSBhL2dkYi9yczYwMDAtdGRlcC5jCi0rKysgYi9nZGIvcnM2MDAwLXRkZXAuYwotQEAg LTI3NzksMTAgKzI3NzksMTIgQEAgZWZwcl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0gewotICAgc3RydWN0 IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0gICBpbnQgcmVn X2luZGV4ID0gcmVnX25yIC0gdGRlcC0+cHBjX2VmcHIwX3JlZ251bTsKLSsgIGludCBvZmZzZXQg PSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHID8gMCA6IDg7 Ci0gCi0gICAvKiBSZWFkIHRoZSBwb3J0aW9uIHRoYXQgb3ZlcmxhcHMgdGhlIFZNWCByZWdpc3Rl ci4gICovCi0tICByZXR1cm4gcmVnY2FjaGVfcmF3X3JlYWRfcGFydCAocmVnY2FjaGUsIHRkZXAt PnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4LCAwLAotLQkJCQkgcmVnaXN0ZXJfc2l6ZSAoZ2Ri YXJjaCwgcmVnX25yKSwgYnVmZmVyKTsKLSsgIHJldHVybiByZWdjYWNoZV9yYXdfcmVhZF9wYXJ0 IChyZWdjYWNoZSwgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyByZWdfaW5kZXgsCi0rCQkJCSBvZmZz ZXQsIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ19uciksCi0rCQkJCSBidWZmZXIpOwotIH0K LSAKLSAvKiBXcml0ZSBtZXRob2QgZm9yIFBPV0VSNyBFeHRlbmRlZCBGUCBwc2V1ZG8tcmVnaXN0 ZXJzLiAgKi8KLUBAIC0yNzkyLDEwICsyNzk0LDEyIEBAIGVmcHJfcHNldWRvX3JlZ2lzdGVyX3dy aXRlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwK LSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNo KTsKLSAgIGludCByZWdfaW5kZXggPSByZWdfbnIgLSB0ZGVwLT5wcGNfZWZwcjBfcmVnbnVtOwot KyAgaW50IG9mZnNldCA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElB Tl9CSUcgPyAwIDogODsKLSAKLSAgIC8qIFdyaXRlIHRoZSBwb3J0aW9uIHRoYXQgb3ZlcmxhcHMg dGhlIFZNWCByZWdpc3Rlci4gICovCi0tICByZWdjYWNoZV9yYXdfd3JpdGVfcGFydCAocmVnY2Fj aGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4LCAwLAotLQkJCSAgIHJlZ2lzdGVy X3NpemUgKGdkYmFyY2gsIHJlZ19uciksIGJ1ZmZlcik7Ci0rICByZWdjYWNoZV9yYXdfd3JpdGVf cGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4LAotKwkJCSAg IG9mZnNldCwgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnX25yKSwKLSsJCQkgICBidWZmZXIp OwotIH0KLSAKLSBzdGF0aWMgZW51bSByZWdpc3Rlcl9zdGF0dXMKLSMjIyBhL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsNSArMSwx MCBAQAotIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4K LSAKLSsJKiBnZGIuYXJjaC92c3gtcmVncy5leHA6IENoZWNrIHRhcmdldCBlbmRpYW5uZXNzLiAg UHJvdmlkZSB2YXJpYW50cwotKwlvZiB0aGUgdGVzdCBwYXR0ZXJucyBmb3IgdXNlIG9uIGxpdHRs ZS1lbmRpYW4gc3lzdGVtcy4KLSsKLSsyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWln YW5kQGRlLmlibS5jb20+Ci0rCi0gCSogZ2RiLmFyY2gvYWx0aXZlYy1yZWdzLmV4cDogVXNlIGdk Yl90ZXN0X211bHRpcGxlIGZvciBlbmRpYW4gdGVzdC4KLSAJKGRlY2ltYWxfdmVjdG9yKTogRml4 IGZvciBsaXR0bGUtZW5kaWFuLgotIAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC92c3gt cmVncy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvdnN4LXJlZ3MuZXhwCi1AQCAt NTgsMTkgKzU4LDQ1IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0gICAgIGdkYl9zdXBwcmVz c190ZXN0cwotIH0KLSAKLStzZXQgZW5kaWFubmVzcyAiIgotK3NldCBtc2cgImRldGVjdCBlbmRp YW5uZXNzIgotK2dkYl90ZXN0X211bHRpcGxlICJzaG93IGVuZGlhbiIgIiRtc2ciIHsKLSsgICAg LXJlICIoVGhlIHRhcmdldCBlbmRpYW5uZXNzIGlzIHNldCBhdXRvbWF0aWNhbGx5IC5jdXJyZW50 bHkgKShiaWd8bGl0dGxlKSggZW5kaWFuLiopJGdkYl9wcm9tcHQgJCIgewotKyAgICAgICAgcGFz cyAiJG1zZyIKLSsgICAgICAgIHNldCBlbmRpYW5uZXNzICRleHBlY3Rfb3V0KDIsc3RyaW5nKQot KyAgICB9Ci0rICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICBmYWlsICIkbXNn IgotKyAgICB9Ci0rfQotKwotICMgRGF0YSBzZXRzIHVzZWQgdGhyb3VnaG91dCB0aGUgdGVzdAot IAotLXNldCB2ZWN0b3JfcmVnaXN0ZXIxICIudWludDEyOCA9IDB4M2ZmNGNjY2NjY2NjY2NjYzAw MDAwMDAwMDAwMDAwMDAsIHYyX2RvdWJsZSA9IC4weDEsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MSwg MHhmOTk5OTlhMCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weDNmZjRjY2NjLCAweGNjY2NjY2Nj LCAweDAsIDB4MC4sIHY4X2ludDE2ID0gLjB4M2ZmNCwgMHhjY2NjLCAweGNjY2MsIDB4Y2NjYywg MHgwLCAweDAsIDB4MCwgMHgwLiwgdjE2X2ludDggPSAuMHgzZiwgMHhmNCwgMHhjYywgMHhjYywg MHhjYywgMHhjYywgMHhjYywgMHhjYywgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgw LCAweDAuLiIKLStpZiB7JGVuZGlhbm5lc3MgPT0gImJpZyJ9IHsKLSsgICAgc2V0IHZlY3Rvcl9y ZWdpc3RlcjEgIi51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDAwMDAwMDAwMCwg djJfZG91YmxlID0gLjB4MSwgMHgwLiwgdjRfZmxvYXQgPSAuMHgxLCAweGY5OTk5OWEwLCAweDAs IDB4MC4sIHY0X2ludDMyID0gLjB4M2ZmNGNjY2MsIDB4Y2NjY2NjY2MsIDB4MCwgMHgwLiwgdjhf aW50MTYgPSAuMHgzZmY0LCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDAsIDB4MCwgMHgwLCAw eDAuLCB2MTZfaW50OCA9IC4weDNmLCAweGY0LCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNj LCAweGNjLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MC4uIgotKwotKyAg ICBzZXQgdmVjdG9yX3JlZ2lzdGVyMV92ciAiLnVpbnQxMjggPSAweDNmZjRjY2NjY2NjY2NjY2Mw MDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4weDEsIDB4Zjk5OTk5YTAsIDB4MCwgMHgwLiwg djRfaW50MzIgPSAuMHgzZmY0Y2NjYywgMHhjY2NjY2NjYywgMHgxLCAweDEuLCB2OF9pbnQxNiA9 IC4weDNmZjQsIDB4Y2NjYywgMHhjY2NjLCAweGNjY2MsIDB4MCwgMHgxLCAweDAsIDB4MS4sIHYx Nl9pbnQ4ID0gLjB4M2YsIDB4ZjQsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2Ms IDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCi0gCi0tc2V0IHZlY3Rv cl9yZWdpc3RlcjFfdnIgIi51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDEwMDAw MDAwMSwgdjRfZmxvYXQgPSAuMHgxLCAweGY5OTk5OWEwLCAweDAsIDB4MC4sIHY0X2ludDMyID0g LjB4M2ZmNGNjY2MsIDB4Y2NjY2NjY2MsIDB4MSwgMHgxLiwgdjhfaW50MTYgPSAuMHgzZmY0LCAw eGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDAsIDB4MSwgMHgwLCAweDEuLCB2MTZfaW50OCA9IC4w eDNmLCAweGY0LCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweDAsIDB4MCwg MHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MS4uIgotKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVy MiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJs ZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMy ID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9p bnQxNiA9IC4weGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAw eGRlYWQsIDB4YmVlZi4sIHYxNl9pbnQ4ID0gLjB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUs IDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4 YmUsIDB4ZWYuLiIKLSAKLS1zZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJl ZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zs b2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVh ZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4weGRlYWQsIDB4YmVl ZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZi4sIHYxNl9p bnQ4ID0gLjB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4 ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYuLiIKLSsgICAgc2V0 IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVl ZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4w eGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYg PSAuMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFk LCAweGJlZWYuLCB2MTZfaW50OCA9IC4weGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFk LCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAw eGVmLi4iCi0gCi0tc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVm ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAu LCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRi ZWVmLiwgdjhfaW50MTYgPSAuMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQs IDB4YmVlZiwgMHhkZWFkLCAweGJlZWYuLCB2MTZfaW50OCA9IC4weGRlLCAweGFkLCAweGJlLCAw eGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRl LCAweGFkLCAweGJlLCAweGVmLi4iCi0rICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEy OCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAs IDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwg MHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEs IDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgw LCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCi0rCi0rICAg IHNldCB2ZWN0b3JfcmVnaXN0ZXIzX3ZyICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAw MDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMy ID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwg MHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAs IDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4i Ci0rfSBlbHNlIHsKLSsgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjEgIi51aW50MTI4ID0gMHgzZmY0 Y2NjY2NjY2NjY2NjMDAwMDAwMDAwMDAwMDAwMCwgdjJfZG91YmxlID0gLjB4MCwgMHgxLiwgdjRf ZmxvYXQgPSAuMHgwLCAweDAsIDB4Zjk5OTk5YTAsIDB4MS4sIHY0X2ludDMyID0gLjB4MCwgMHgw LCAweGNjY2NjY2NjLCAweDNmZjRjY2NjLiwgdjhfaW50MTYgPSAuMHgwLCAweDAsIDB4MCwgMHgw LCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDNmZjQuLCB2MTZfaW50OCA9IC4weDAsIDB4MCwg MHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhj YywgMHhjYywgMHhmNCwgMHgzZi4uIgotIAotLXNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEy OCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAs IDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwg MHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEs IDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgw LCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCi0rICAgIHNl dCB2ZWN0b3JfcmVnaXN0ZXIxX3ZyICIudWludDEyOCA9IDB4M2ZmNGNjY2NjY2NjY2NjYzAwMDAw MDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweGY5OTk5OWEwLCAweDEuLCB2NF9p bnQzMiA9IC4weDEsIDB4MSwgMHhjY2NjY2NjYywgMHgzZmY0Y2NjYy4sIHY4X2ludDE2ID0gLjB4 MSwgMHgwLCAweDEsIDB4MCwgMHhjY2NjLCAweGNjY2MsIDB4Y2NjYywgMHgzZmY0LiwgdjE2X2lu dDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4Y2MsIDB4Y2Ms IDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4ZjQsIDB4M2YuLiIKLSAKLS1zZXQgdmVjdG9yX3Jl Z2lzdGVyM192ciAiLnVpbnQxMjggPSAweDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAx LCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weDEsIDB4MSwg MHgxLCAweDEuLCB2OF9pbnQxNiA9IC4weDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAs IDB4MS4sIHYxNl9pbnQ4ID0gLjB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgx LCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MS4uIgotKyAgICBzZXQgdmVj dG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJl ZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4 MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVh ZGJlZWYuLCB2OF9pbnQxNiA9IC4weGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVl ZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZC4sIHYxNl9pbnQ4ID0gLjB4ZWYsIDB4YmUsIDB4YWQs IDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4 ZWYsIDB4YmUsIDB4YWQsIDB4ZGUuLiIKLSsKLSsgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIg InVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9 IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVm LCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhiZWVmLCAweGRlYWQsIDB4 YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQuLCB2MTZfaW50OCA9 IC4weGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAw eGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRlLi4iCi0rCi0rICAgIHNldCB2 ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAw MDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAs IDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MSwg MHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLiwgdjE2X2ludDggPSAuMHgxLCAweDAs IDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAw eDAsIDB4MCwgMHgwLi4iCi0rCi0rICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzX3ZyICIudWludDEy OCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwg MHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2 ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLiwgdjE2X2ludDggPSAu MHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4 MCwgMHgxLCAweDAsIDB4MCwgMHgwLi4iCi0rfQotIAotIHNldCBmbG9hdF9yZWdpc3RlciAiLnJh dyAweGRlYWRiZWVmZGVhZGJlZWYuIgotIAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2 NGxlMDhvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwOG9mMTUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MmZmM2IuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUwOG9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1j b21taXQgNWI3NTdlNWRkYmQ5YWQyNTJkOWM1MTEwM2YxYWE1MmI0MWMyZTk0NwotQXV0aG9yOiBV bHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURhdGU6ICAgVHVlIEZl YiA0IDE4OjMzOjA0IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBsaXR0bGUtZW5kaWFuIGZp eGVzOiAzMi1iaXQgREZQIHBhcmFtZXRlcnMKLSAgICAKLSAgICBQYXNzaW5nIGEgMzItYml0IERG UCBpbiByZWdpc3RlciBuZWVkcyB0byB1c2UgdGhlIGxlYXN0LXNpZ25pZmljYW50IHBhcnQKLSAg ICBvZiB0aGUgcmVnaXN0ZXIuICBMaWtlIHdpdGggYSBwcmV2aW91cyBwYXRjaCB0aGF0IGFkZHJl c3NlZCB0aGUgc2FtZQotICAgIGlzc3VlIGZvciBzbWFsbCBzdHJ1Y3RzLCB0aGlzIHBhdGNoIG1h a2VzIHN1cmUgdGhlIGFwcHJvcHJpYXRlIG9mZnNldAotICAgIGlzIHVzZWQgb24gbGl0dGxlLWVu ZGlhbiBzeXN0ZW1zLgotICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBj LXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcpOiBVc2UgY29ycmVjdAotICAg IAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3NpbmcgX0RlY2ltYWwzMi4KLSAgICAJ KHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UgZm9yIHJldHVybiB2 YWx1ZXMuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0x LDUgKzEsMTEgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5p Ym0uY29tPgotIAotKwkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVn KTogVXNlIGNvcnJlY3QKLSsJb2Zmc2V0IG9uIGxpdHRsZS1lbmRpYW4gd2hlbiBwYXNzaW5nIF9E ZWNpbWFsMzIuCi0rCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IExpa2V3aXNl IGZvciByZXR1cm4gdmFsdWVzLgotKwotKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3 ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogcnM2MDAwLXRkZXAuYyAoZWZwcl9wc2V1ZG9fcmVn aXN0ZXJfcmVhZCk6IFVzZSBjb3JyZWN0IG9mZnNldAotIAlvZiB0aGUgb3ZlcmxhcHBlZCBGUCBy ZWdpc3RlciB3aXRoaW4gdGhlIFZTWCByZWdpc3RlciBvbiBsaXR0bGUtCi0gCWVuZGlhbiBwbGF0 Zm9ybXMuCi0tLS0gYS9nZGIvcHBjLXN5c3YtdGRlcC5jCi0rKysgYi9nZGIvcHBjLXN5c3YtdGRl cC5jCi1AQCAtMTIzMiw3ICsxMjMyLDEwIEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJn cG9zLT5mcmVnIDw9IDEzKQotIAl7Ci0gCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVn bnVtICsgYXJncG9zLT5mcmVnOwotLQkgIGludCBvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHR5 cGUpOwotKwkgIGludCBvZmZzZXQgPSAwOwotKwotKwkgIGlmIChnZGJhcmNoX2J5dGVfb3JkZXIg KGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHKQotKwkgICAgb2Zmc2V0ID0gOCAtIFRZUEVfTEVO R1RIICh0eXBlKTsKLSAKLSAJICByZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAoYXJncG9zLT5y ZWdjYWNoZSwgcmVnbnVtLAotIAkJCQkgICAgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh0eXBlKSwg dmFsKTsKLUBAIC0xNjQxLDcgKzE2NDQsMTAgQEAgcHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVl X2Jhc2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwKLSAg ICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9ERUNGTE9BVCkKLSAgICAg ewotICAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpbmRleDsK LS0gICAgICBpbnQgb2Zmc2V0ID0gOCAtIFRZUEVfTEVOR1RIICh2YWx0eXBlKTsKLSsgICAgICBp bnQgb2Zmc2V0ID0gMDsKLSsKLSsgICAgICBpZiAoZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNo KSA9PSBCRkRfRU5ESUFOX0JJRykKLSsJb2Zmc2V0ID0gOCAtIFRZUEVfTEVOR1RIICh2YWx0eXBl KTsKLSAKLSAgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAJcmVnY2FjaGVfY29va2VkX3dy aXRlX3BhcnQgKHJlZ2NhY2hlLCByZWdudW0sCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLXBw YzY0bGUwOW9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA5b2YxNS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRmN2VkZC4uMDAwMDAwMAotLS0gYS9nZGItdXBz dHJlYW0tcHBjNjRsZTA5b2YxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBA Ci1jb21taXQgMGZmM2UwMWZkYzY3YTM4NDJlZTU0MjI0Y2YxOTdlOWE1NWYwYTc1MAotQXV0aG9y OiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURhdGU6ICAgVHVl IEZlYiA0IDE4OjM0OjE5IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBsaXR0bGUtZW5kaWFu IGZpeGVzOiAxMjgtYml0IERGUCBwYXJhbWV0ZXJzIC8gcmVnaXN0ZXJzCi0gICAgCi0gICAgVGhl IHBvd2VycGM2NGxlLWxpbnV4IEFCSSBzcGVjaWZpZXMgdGhhdCB3aGVuIGEgMTI4LWJpdCBERlAg dmFsdWUgaXMKLSAgICBwYXNzZWQgaW4gYSBwYWlyIG9mIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVy cywgdGhlIGZpcnN0IHJlZ2lzdGVyIGhvbGRzCi0gICAgdGhlIG1vc3Qtc2lnbmlmaWNhbnQgcGFy dCBvZiB0aGUgdmFsdWUuICBUaGlzIGlzIGFzIG9wcG9zZWQgdG8gdGhlCi0gICAgdXN1YWwgcnVs ZSBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMsIHdoZXJlIHRoZSBmaXJzdCByZWdpc3RlciB3b3Vs ZAotICAgIGhvbGQgdGhlIGxlYXN0LXNpZ25pZmljYW50IHBhcnQuCi0gICAgCi0gICAgVGhpcyBh ZmZlY3RzIHR3byBwbGFjZXMgaW4gR0RCLCB0aGUgcmVhZC93cml0ZSByb3V0aW5lcyBmb3IgdGhl Ci0gICAgMTI4LWJpdCBERlAgcHNldWRvLXJlZ2lzdGVycywgYW5kIHRoZSBmdW5jdGlvbiBjYWxs IC8gcmV0dXJuCi0gICAgc2VxdWVuY2UuICBGb3IgdGhlIGZvcm1lciwgY3VycmVudCBjb2RlIGFs cmVhZHkgZGlzdGluZ3Vpc2hlcwotICAgIGJldHdlZW4gYmlnLSBhbmQgbGl0dGxlLWVuZGlhbiB0 YXJnZXRzLCBidXQgZ2V0cyB0aGUgbGF0dGVyCi0gICAgd3JvbmcuICBUaGlzIGlzIHByZXN1bWFi bHkgYmVjYXVzZSAqR0NDKiBhbHNvIGdvdCBpdCB3cm9uZywKLSAgICBhbmQgR0RCIG1hdGNoZXMg dGhlIG9sZCBHQ0MgYmVoYXZpb3IuICBCdXQgR0NDIGlzIG5vdyBmaXhlZDoKLSAgICBodHRwOi8v Z2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxMy0xMS9tc2cwMjE0NS5odG1sCi0gICAgc28g R0RCIG5lZWRzIHRvIGJlIGZpeGVkIHRvby4gIChPbGQgY29kZSBzaG91bGRuJ3QgcmVhbGx5IGJl Ci0gICAgYW4gaXNzdWUgc2luY2UgdGhlcmUgaXMgbm8gY29kZSAib3V0IHRoZXJlIiBzbyBmYXIg dGhhdCB1c2VzCi0gICAgZGZwMTI4IG9uIGxpdHRsZS1lbmRpYW4gLi4uKQotICAgIAotICAgIGdk Yi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2Fi aV9wdXNoX2ZyZWcpOiBVc2UgY29ycmVjdCBvcmRlcgotICAgIAl3aXRoaW4gYSByZWdpc3RlciBw YWlyIGhvbGRpbmcgYSBERlAgMTI4LWJpdCB2YWx1ZSBvbiBsaXR0bGUtZW5kaWFuLgotICAgIAko cHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UpOiBMaWtld2lzZS4KLSAgICAJKiByczYw MDAtdGRlcC5jIChkZnBfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBMaWtld2lzZS4KLSAgICAJKGRm cF9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSAgICAKLSAgICBnZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiBnZGIuYXJjaC9wb3dlcnBjLWQxMjgtcmVncy5l eHA6IEVuYWJsZSBvbiBwb3dlcnBjNjQqLSouCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBi L2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTMgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2Vp Z2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1zeXN2LXRkZXAuYyAocHBj NjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJlY3Qgb3JkZXIKLSsJd2l0aGluIGEgcmVn aXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1iaXQgdmFsdWUgb24gbGl0dGxlLWVuZGlhbi4K LSsJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UuCi0rCSogcnM2 MDAwLXRkZXAuYyAoZGZwX3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlrZXdpc2UuCi0rCShkZnBf cHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0rCi0rMjAxNC0wMi0wNCAgVWxyaWNo IFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KLSsKLSAJKiBwcGMtc3lzdi10ZGVwLmMg KHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyk6IFVzZSBjb3JyZWN0Ci0gCW9mZnNldCBvbiBsaXR0 bGUtZW5kaWFuIHdoZW4gcGFzc2luZyBfRGVjaW1hbDMyLgotIAkocHBjNjRfc3lzdl9hYmlfcmV0 dXJuX3ZhbHVlX2Jhc2UpOiBMaWtld2lzZSBmb3IgcmV0dXJuIHZhbHVlcy4KLS0tLSBhL2dkYi9w cGMtc3lzdi10ZGVwLmMKLSsrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKLUBAIC0xMjcwLDkgKzEy NzAsMTEgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKLSAgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTIpCi0g CXsKLSAJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7 Ci0rCSAgaW50IGxvcGFydCA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VO RElBTl9CSUcgPyA4IDogMDsKLSsJICBpbnQgaGlwYXJ0ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChn ZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRyA/IDAgOiA4OwotIAotLQkgIHJlZ2NhY2hlX2Nvb2tl ZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCB2YWwpOwotLQkgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtICsgMSwgdmFsICsgOCk7Ci0rCSAg cmVnY2FjaGVfY29va2VkX3dyaXRlIChhcmdwb3MtPnJlZ2NhY2hlLCByZWdudW0sIHZhbCArIGhp cGFydCk7Ci0rCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChhcmdwb3MtPnJlZ2NhY2hlLCByZWdu dW0gKyAxLCB2YWwgKyBsb3BhcnQpOwotIAl9Ci0gCi0gICAgICAgYXJncG9zLT5mcmVnICs9IDI7 Ci1AQCAtMTY4NSwxNiArMTY4NywxOCBAQCBwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFz ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICp2YWx0eXBlLAotICAgICAg ICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQotICAgICB7Ci0g ICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMiArIDIgKiBpbmRleDsK LSsgICAgICBpbnQgbG9wYXJ0ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRf RU5ESUFOX0JJRyA/IDggOiAwOwotKyAgICAgIGludCBoaXBhcnQgPSBnZGJhcmNoX2J5dGVfb3Jk ZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHID8gMCA6IDg7Ci0gCi0gICAgICAgaWYgKHdy aXRlYnVmICE9IE5VTEwpCi0gCXsKLS0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hl LCByZWdudW0sIHdyaXRlYnVmKTsKLS0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hl LCByZWdudW0gKyAxLCB3cml0ZWJ1ZiArIDgpOwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo cmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYgKyBoaXBhcnQpOwotKwkgIHJlZ2NhY2hlX2Nvb2tl ZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdyaXRlYnVmICsgbG9wYXJ0KTsKLSAJfQot ICAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0gCXsKLS0JICByZWdjYWNoZV9jb29rZWRfcmVh ZCAocmVnY2FjaGUsIHJlZ251bSwgcmVhZGJ1Zik7Ci0tCSAgcmVnY2FjaGVfY29va2VkX3JlYWQg KHJlZ2NhY2hlLCByZWdudW0gKyAxLCByZWFkYnVmICsgOCk7Ci0rCSAgcmVnY2FjaGVfY29va2Vk X3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJlYWRidWYgKyBoaXBhcnQpOwotKwkgIHJlZ2NhY2hl X2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtICsgMSwgcmVhZGJ1ZiArIGxvcGFydCk7Ci0g CX0KLSAgICAgICByZXR1cm4gMTsKLSAgICAgfQotLS0tIGEvZ2RiL3JzNjAwMC10ZGVwLmMKLSsr KyBiL2dkYi9yczYwMDAtdGRlcC5jCi1AQCAtMjY3MiwxMCArMjY3MiwxMCBAQCBkZnBfcHNldWRv X3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLAotICAgZWxzZQotICAgICB7Ci0gICAgICAgc3RhdHVzID0gcmVnY2FjaGVfcmF3 X3JlYWQgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArCi0tCQkJCSAgMiAqIHJlZ19p bmRleCArIDEsIGJ1ZmZlciArIDgpOwotKwkJCQkgIDIgKiByZWdfaW5kZXggKyAxLCBidWZmZXIp OwotICAgICAgIGlmIChzdGF0dXMgPT0gUkVHX1ZBTElEKQotIAlzdGF0dXMgPSByZWdjYWNoZV9y YXdfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsKLS0JCQkJICAgIDIgKiBy ZWdfaW5kZXgsIGJ1ZmZlcik7Ci0rCQkJCSAgICAyICogcmVnX2luZGV4LCBidWZmZXIgKyA4KTsK LSAgICAgfQotIAotICAgcmV0dXJuIHN0YXR1czsKLUBAIC0yNzAxLDkgKzI3MDEsOSBAQCBkZnBf cHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHJlZ2NhY2hlX3Jhd193 cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsKLS0JCQkgIDIgKiByZWdfaW5k ZXggKyAxLCBidWZmZXIgKyA4KTsKLSsJCQkgIDIgKiByZWdfaW5kZXggKyAxLCBidWZmZXIpOwot ICAgICAgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVt ICsKLS0JCQkgIDIgKiByZWdfaW5kZXgsIGJ1ZmZlcik7Ci0rCQkJICAyICogcmVnX2luZGV4LCBi dWZmZXIgKyA4KTsKLSAgICAgfQotIH0KLSAKLSMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9n Ci0jIyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsNSArMSw5IEBACi0gMjAxNC0w Mi0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIGdkYi5h cmNoL3Bvd2VycGMtZDEyOC1yZWdzLmV4cDogRW5hYmxlIG9uIHBvd2VycGM2NCotKi4KLSsKLSsy MDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSog Z2RiLmFyY2gvdnN4LXJlZ3MuZXhwOiBDaGVjayB0YXJnZXQgZW5kaWFubmVzcy4gIFByb3ZpZGUg dmFyaWFudHMKLSAJb2YgdGhlIHRlc3QgcGF0dGVybnMgZm9yIHVzZSBvbiBsaXR0bGUtZW5kaWFu IHN5c3RlbXMuCi0gCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2VycGMtZDEyOC1y ZWdzLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9wb3dlcnBjLWQxMjgtcmVncy5l eHAKLUBAIC0yMCw3ICsyMCw3IEBACi0gCi0gIyBUZXN0Y2FzZSBmb3IgcHBjIGRlY2ltYWwxMjgg cHNldWRvLXJlZ2lzdGVycy4KLSAKLS1pZiAhW2lzdGFyZ2V0ICJwb3dlcnBjNjQtKiJdIHRoZW4g ewotK2lmICFbaXN0YXJnZXQgInBvd2VycGM2NCotKiJdIHRoZW4gewotICAgICB2ZXJib3NlICJT a2lwcGluZyBwb3dlcnBjIERlY2ltYWwxMjggcHNldWRvLXJlZ2lzdGVycyB0ZXN0Y2FzZS4iCi0g ICAgIHJldHVybgotIH0KCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTEwb2YxNS5w YXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTBvZjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAyZTMwN2Q5Li4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS1wcGM2NGxl MTBvZjE1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLWNvbW1pdCBjZDQ1 M2NkMDcyMDA0ZDI2ZWRlMzU1Yjg1MGIzODMxYWNmZmFlZGRkCi1BdXRob3I6IFVscmljaCBXZWln YW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6Mzg6 NTYgMjAxNCArMDEwMAotCi0gICAgUG93ZXJQQzY0IEVMRnYyIEFCSTogYmFzZSBzdXBwb3J0Ci0g ICAgCi0gICAgVGhpcyBpcyB0aGUgZmlyc3QgcGF0Y2ggb2YgYSBzZXJpZXMgdG8gaW1wbGVtZW50 IHN1cHBvcnQgZm9yIHRoZQotICAgIFBvd2VyUEMgRUxGdjIgQUJJLiAgV2hpbGUgcG93ZXJwYzY0 bGUtbGludXggd2lsbCB1c2UgRUxGdjIsIGFuZAotICAgIHRoZSBleGlzdGluZyBwb3dlcnBjNjQt bGludXggY29kZSB3aWxsIGNvbnRpbnVlIHRvIHVzZSBFTEZ2MSwKLSAgICBpbiB0aGVvcnkgRUxG djIgaXMgYWxzbyBkZWZpbmVkIGZvciBiaWctZW5kaWFuIHN5c3RlbXMgKGFuZAotICAgIEVMRnYx IHdhcyBhbHNvIGRlZmluZWQgZm9yIGxpdHRsZS1lbmRpYW4gc3lzdGVtcykuCi0gICAgCi0gICAg VGhlcmVmb3JlIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyB0ZGVwLT5lbGZfYWJpIHZhcmlhYmxlIHRv IGRlY2lkZQotICAgIHdoaWNoIEFCSSB2ZXJzaW9uIHRvIHVzZS4gIFRoaXMgaXMgZGV0ZWN0ZWQg ZnJvbSB0aGUgRUxGIGhlYWRlcgotICAgIGVfZmxhZ3MgdmFsdWU7IGlmIHRoaXMgaXMgbm90IHBy ZXNlbnQsIHdlIGRlZmF1bHQgdG8gRUxGdjIgb24KLSAgICBsaXR0bGUtZW5kaWFuIGFuZCBFTEZ2 MSBvdGhlcndpc2UuCi0gICAgCi0gICAgVGhpcyBwYXRjaCBkb2VzIG5vdCB5ZXQgaW50cm9kdWNl IGFueSBhY3R1YWwgZGlmZmVyZW5jZSBpbiBHREIncwotICAgIGhhbmRsaW5nIG9mIHRoZSB0d28g QUJJcy4gIFRob3NlIHdpbGwgYmUgYWRkZWQgYnkgdGhlIHJlbWFpbmRlcgotICAgIG9mIHRoaXMg cGF0Y2ggc2VyaWVzLgotICAgIAotICAgIEZvciBhbiBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBp biBFTEZ2MiwgaGF2ZSBhIGxvb2sgYXQgdGhlCi0gICAgY29tbWVudHMgaW4gdGhlIHBhdGNoIHNl cmllcyB0aGF0IGFkZGVkIEVMRnYyIHRvIEdDQywgc3RhcnRpbmcgYXQ6Ci0gICAgaHR0cDovL2dj Yy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTMtMTEvbXNnMDExNDQuaHRtbAotICAgIAotICAg IGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBjX2Vs Zl9hYmkpOiBOZXcgZGF0YSB0eXBlLgotICAgIAkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBt ZW1iZXIgZWxmX2FiaS4KLSAgICAKLSAgICAJKiByczYwMDAtdGRlcC5jOiBJbmNsdWRlICJlbGYv cHBjNjQuaCIuCi0gICAgCShyczYwMDBfZ2RiYXJjaF9pbml0KTogRGV0ZWN0IEVMRiBBQkkgdmVy c2lvbi4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxvZwotIyMgLTEs NSArMSwxMyBAQAotIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmli bS5jb20+Ci0gCi0rCSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBjX2VsZl9hYmkpOiBOZXcgZGF0 YSB0eXBlLgotKwkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBtZW1iZXIgZWxmX2FiaS4KLSsK LSsJKiByczYwMDAtdGRlcC5jOiBJbmNsdWRlICJlbGYvcHBjNjQuaCIuCi0rCShyczYwMDBfZ2Ri YXJjaF9pbml0KTogRGV0ZWN0IEVMRiBBQkkgdmVyc2lvbi4KLSsKLSsyMDE0LTAyLTA0ICBVbHJp Y2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkqIHBwYy1zeXN2LXRkZXAu YyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJlY3Qgb3JkZXIKLSAJd2l0aGlu IGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1iaXQgdmFsdWUgb24gbGl0dGxlLWVu ZGlhbi4KLSAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UuCi1J bmRleDogZ2RiLTcuNy4xL2dkYi9wcGMtdGRlcC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4x Lm9yaWcvZ2RiL3BwYy10ZGVwLmgJMjAxNC0wNS0wOSAxOToyMzo0MC44OTIyNDgwNjQgKzAyMDAK LSsrKyBnZGItNy43LjEvZ2RiL3BwYy10ZGVwLmgJMjAxNC0wNS0wOSAxOToyMzo0Mi4zNDYyNDgy NDYgKzAyMDAKLUBAIC0xODIsNiArMTgyLDE1IEBAIGV4dGVybiB2b2lkIHBwY19jb2xsZWN0X3Zz eHJlZ3NldCAoY29uc3QKLSAKLSAvKiBQcml2YXRlIGRhdGEgdGhhdCB0aGlzIG1vZHVsZSBhdHRh Y2hlcyB0byBzdHJ1Y3QgZ2RiYXJjaC4gICovCi0gCi0rLyogRUxGIEFCSSB2ZXJzaW9uIHVzZWQg YnkgdGhlIGluZmVyaW9yLiAgKi8KLStlbnVtIHBvd2VycGNfZWxmX2FiaQotK3sKLSsgIFBPV0VS UENfRUxGX0FVVE8sCi0rICBQT1dFUlBDX0VMRl9WMSwKLSsgIFBPV0VSUENfRUxGX1YyLAotKyAg UE9XRVJQQ19FTEZfTEFTVAotK307Ci0rCi0gLyogVmVjdG9yIEFCSSB1c2VkIGJ5IHRoZSBpbmZl cmlvci4gICovCi0gZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkKLSB7Ci1AQCAtMTk3LDYgKzIwNiw4 IEBAIHN0cnVjdCBnZGJhcmNoX3RkZXAKLSAgICAgaW50IHdvcmRzaXplOwkJLyogU2l6ZSBpbiBi eXRlcyBvZiBmaXhlZC1wb2ludCB3b3JkLiAgKi8KLSAgICAgaW50IHNvZnRfZmxvYXQ7CQkvKiBB dm9pZCBGUCByZWdpc3RlcnMgZm9yIGFyZ3VtZW50cz8gICovCi0gCi0rICAgIGVudW0gcG93ZXJw Y19lbGZfYWJpIGVsZl9hYmk7CS8qIEVMRiBBQkkgdmVyc2lvbi4gICovCi0rCi0gICAgIC8qIEhv dyB0byBwYXNzIHZlY3RvciBhcmd1bWVudHMuICBOZXZlciBzZXQgdG8gQVVUTyBvciBMQVNULiAg Ki8KLSAgICAgZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkgdmVjdG9yX2FiaTsKLSAKLUluZGV4OiBn ZGItNy43LjEvZ2RiL3JzNjAwMC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3Jp Zy9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjIzOjQwLjg5NDI0ODA2NCArMDIwMAot KysrIGdkYi03LjcuMS9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjIzOjU3Ljk3NDI1 MDE5NyArMDIwMAotQEAgLTQ4LDYgKzQ4LDcgQEAKLSAKLSAjaW5jbHVkZSAiZWxmLWJmZC5oIgot ICNpbmNsdWRlICJlbGYvcHBjLmgiCi0rI2luY2x1ZGUgImVsZi9wcGM2NC5oIgotIAotICNpbmNs dWRlICJzb2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUgInBwYy10ZGVwLmgiCi1AQCAtMzU1NCw2ICsz NTU1LDcgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbwotICAgZW51 bSBhdXRvX2Jvb2xlYW4gc29mdF9mbG9hdF9mbGFnID0gcG93ZXJwY19zb2Z0X2Zsb2F0X2dsb2Jh bDsKLSAgIGludCBzb2Z0X2Zsb2F0OwotICAgZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkgdmVjdG9y X2FiaSA9IHBvd2VycGNfdmVjdG9yX2FiaV9nbG9iYWw7Ci0rICBlbnVtIHBvd2VycGNfZWxmX2Fi aSBlbGZfYWJpID0gUE9XRVJQQ19FTEZfQVVUTzsKLSAgIGludCBoYXZlX2ZwdSA9IDEsIGhhdmVf c3BlID0gMCwgaGF2ZV9tcSA9IDAsIGhhdmVfYWx0aXZlYyA9IDAsIGhhdmVfZGZwID0gMCwKLSAg ICAgICBoYXZlX3ZzeCA9IDA7Ci0gICBpbnQgdGRlc2Nfd29yZHNpemUgPSAtMTsKLUBAIC0zODYw LDYgKzM4NjIsMjEgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbwot ICAgICB9Ci0gCi0gI2lmZGVmIEhBVkVfRUxGCi0rICBpZiAoZnJvbV9lbGZfZXhlYykKLSsgICAg ewotKyAgICAgIHN3aXRjaCAoZWxmX2VsZmhlYWRlciAoaW5mby5hYmZkKS0+ZV9mbGFncyAmIEVG X1BQQzY0X0FCSSkKLSsJewotKwljYXNlIDE6Ci0rCSAgZWxmX2FiaSA9IFBPV0VSUENfRUxGX1Yx OwotKwkgIGJyZWFrOwotKwljYXNlIDI6Ci0rCSAgZWxmX2FiaSA9IFBPV0VSUENfRUxGX1YyOwot KwkgIGJyZWFrOwotKwlkZWZhdWx0OgotKwkgIGJyZWFrOwotKwl9Ci0rICAgIH0KLSsKLSAgIGlm IChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19CT09MRUFOX0FVVE8gJiYgZnJvbV9lbGZfZXhlYykK LSAgICAgewotICAgICAgIHN3aXRjaCAoYmZkX2VsZl9nZXRfb2JqX2F0dHJfaW50IChpbmZvLmFi ZmQsIE9CSl9BVFRSX0dOVSwKLUBAIC0zODk2LDYgKzM5MTMsMjEgQEAgcnM2MDAwX2dkYmFyY2hf aW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbwotICAgICB9Ci0gI2VuZGlmCi0gCi0rICAvKiBBdCB0 aGlzIHBvaW50LCB0aGUgb25seSBzdXBwb3J0ZWQgRUxGLWJhc2VkIDY0LWJpdCBsaXR0bGUtZW5k aWFuCi0rICAgICBvcGVyYXRpbmcgc3lzdGVtIGlzIEdOVS9MaW51eCwgYW5kIHRoaXMgdXNlcyB0 aGUgRUxGdjIgQUJJIGJ5Ci0rICAgICBkZWZhdWx0LiAgQWxsIG90aGVyIHN1cHBvcnRlZCBFTEYt YmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMgdXNlIHRoZQotKyAgICAgRUxGdjEgQUJJIGJ5IGRlZmF1 bHQuICBUaGVyZWZvcmUsIGlmIHRoZSBBQkkgbWFya2VyIGlzIG1pc3NpbmcsCi0rICAgICBlLmcu IGJlY2F1c2Ugd2UgcnVuIGEgbGVnYWN5IGJpbmFyeSwgb3IgaGF2ZSBhdHRhY2hlZCB0byBhIHBy b2Nlc3MKLSsgICAgIGFuZCBoYXZlIG5vdCBmb3VuZCBhbnkgYXNzb2NpYXRlZCBiaW5hcnkgZmls ZSwgc2V0IHRoZSBkZWZhdWx0Ci0rICAgICBhY2NvcmRpbmcgdG8gdGhpcyBoZXVyaXN0aWMuICAq LwotKyAgaWYgKGVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfQVVUTykKLSsgICAgewotKyAgICAgIGlm ICh3b3Jkc2l6ZSA9PSA4ICYmIGluZm8uYnl0ZV9vcmRlciA9PSBCRkRfRU5ESUFOX0xJVFRMRSkK LSsgICAgICAgIGVsZl9hYmkgPSBQT1dFUlBDX0VMRl9WMjsKLSsgICAgICBlbHNlCi0rICAgICAg ICBlbGZfYWJpID0gUE9XRVJQQ19FTEZfVjE7Ci0rICAgIH0KLSsKLSAgIGlmIChzb2Z0X2Zsb2F0 X2ZsYWcgPT0gQVVUT19CT09MRUFOX1RSVUUpCi0gICAgIHNvZnRfZmxvYXQgPSAxOwotICAgZWxz ZSBpZiAoc29mdF9mbG9hdF9mbGFnID09IEFVVE9fQk9PTEVBTl9GQUxTRSkKLUBAIC0zOTM4LDYg KzM5NzAsOCBAQCByczYwMDBfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCi0gICAg ICAgICAgbWVhbmluZ2Z1bCwgYmVjYXVzZSA2NC1iaXQgQ1BVcyBjYW4gcnVuIGluIDMyLWJpdCBt b2RlLiAgU28sIHBlcmZvcm0KLSAgICAgICAgICBzZXBhcmF0ZSB3b3JkIHNpemUgY2hlY2suICAq LwotICAgICAgIHRkZXAgPSBnZGJhcmNoX3RkZXAgKGFyY2hlcy0+Z2RiYXJjaCk7Ci0rICAgICAg aWYgKHRkZXAgJiYgdGRlcC0+ZWxmX2FiaSAhPSBlbGZfYWJpKQotKwljb250aW51ZTsKLSAgICAg ICBpZiAodGRlcCAmJiB0ZGVwLT5zb2Z0X2Zsb2F0ICE9IHNvZnRfZmxvYXQpCi0gCWNvbnRpbnVl OwotICAgICAgIGlmICh0ZGVwICYmIHRkZXAtPnZlY3Rvcl9hYmkgIT0gdmVjdG9yX2FiaSkKLUBA IC0zOTYwLDYgKzM5OTQsNyBAQCByczYwMDBfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9p bmZvCi0gCi0gICB0ZGVwID0gWENBTExPQyAoMSwgc3RydWN0IGdkYmFyY2hfdGRlcCk7Ci0gICB0 ZGVwLT53b3Jkc2l6ZSA9IHdvcmRzaXplOwotKyAgdGRlcC0+ZWxmX2FiaSA9IGVsZl9hYmk7Ci0g ICB0ZGVwLT5zb2Z0X2Zsb2F0ID0gc29mdF9mbG9hdDsKLSAgIHRkZXAtPnZlY3Rvcl9hYmkgPSB2 ZWN0b3JfYWJpOwotIAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBh dGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMW9mMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGZkYmQ3YWIuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUx MW9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotY29tbWl0IGQ0MDk0 YjZhODg4M2FlNDgxYzc2NDRjNWEyMTAyNTRlZmU5MmU5YWQKLUF1dGhvcjogVWxyaWNoIFdlaWdh bmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBGZWIgNCAxODo0MDox NiAyMDE0ICswMTAwCi0KLSAgICBQb3dlclBDNjQgRUxGdjIgQUJJOiBubyBmdW5jdGlvbiBkZXNj cmlwdG9ycwotICAgIAotICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgbW9zdCBzaWduaWZpY2FudCBk aWZmZXJlbmNlIHdpdGggdGhlIEVMRnYyIEFCSToKLSAgICB3ZSBubyBsb25nZXIgdXNlIGZ1bmN0 aW9uIGRlc2NyaXB0b3JzLiAgVGhlIHBhdGNoIGNvbnNpc3RzIG1vc3RseQotICAgIG9mIHN3aXRj aGluZyBvZmYgY29kZSB0byBkZWFsIHdpdGggZGVzY3JpcHRvcnMgOi0pCi0gICAgCi0gICAgSW4g YWRkaXRpb24sIHdoZW4gY2FsbGluZyBhbiBpbmZlcmlvciBmdW5jdGlvbiwgd2Ugbm8gbG9uZ2Vy IG5lZWQKLSAgICB0byBwcm92aWRlIGl0cyBUT0MgaW4gcjIuICBJbnN0ZWFkLCBFTEZ2MiBjb2Rl IGV4cGVjdHMgdG8gYmUgY2FsbGVkCi0gICAgd2l0aCByMTIgcG9pbnRpbmcgdG8gdGhlIGNvZGUg YWRkcmVzcyBpdHNlbGYuCi0gICAgCi0gICAgZ2RiL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiBw cGMtbGludXgtdGRlcC5jIChwcGNfbGludXhfaW5pdF9hYmkpOiBPbmx5IGNhbGwKLSAgICAJc2V0 X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgYW5kCi0gICAgCXNldF9nZGJhcmNo X2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCBmb3IgRUxGdjEuCi0gICAgCSogcHBjLXN5c3YtdGRl cC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTogT25seSBoYW5kbGUKLSAgICAJZnVuY3Rp b24gZGVzY3JpcHRvcnMgb24gRUxGdjEuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15 X2NhbGwpOiBMaWtld2lzZS4gIE9uIEVMRnYyLAotICAgIAlzZXQgdXAgcjEyIGF0IGZ1bmN0aW9u IGVudHJ5LgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAt MSw1ICsxLDE1IEBACi0gMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUu aWJtLmNvbT4KLSAKLSsJKiBwcGMtbGludXgtdGRlcC5jIChwcGNfbGludXhfaW5pdF9hYmkpOiBP bmx5IGNhbGwKLSsJc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgYW5kCi0r CXNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCBmb3IgRUxGdjEuCi0rCSogcHBj LXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTogT25seSBoYW5kbGUKLSsJ ZnVuY3Rpb24gZGVzY3JpcHRvcnMgb24gRUxGdjEuCi0rCShwcGM2NF9zeXN2X2FiaV9wdXNoX2R1 bW15X2NhbGwpOiBMaWtld2lzZS4gIE9uIEVMRnYyLAotKwlzZXQgdXAgcjEyIGF0IGZ1bmN0aW9u IGVudHJ5LgotKwotKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmli bS5jb20+Ci0rCi0gCSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBjX2VsZl9hYmkpOiBOZXcgZGF0 YSB0eXBlLgotIAkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBtZW1iZXIgZWxmX2FiaS4KLSAK LS0tLSBhL2dkYi9wcGMtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvcHBjLWxpbnV4LXRkZXAuYwot QEAgLTEzMzksMTMgKzEzMzksMTYgQEAgcHBjX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGluZm8sCi0gICAKLSAgIGlmICh0ZGVwLT53b3Jkc2l6ZSA9PSA4KQotICAgICB7Ci0t ICAgICAgLyogSGFuZGxlIFBQQyBHTlUvTGludXggNjQtYml0IGZ1bmN0aW9uIHBvaW50ZXJzICh3 aGljaCBhcmUgcmVhbGx5Ci0tCSBmdW5jdGlvbiBkZXNjcmlwdG9ycykuICAqLwotLSAgICAgIHNl dF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyCi0tCShnZGJhcmNoLCBwcGM2NF9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0rICAgICAgaWYgKHRkZXAtPmVsZl9hYmkgPT0g UE9XRVJQQ19FTEZfVjEpCi0rCXsKLSsJICAvKiBIYW5kbGUgUFBDIEdOVS9MaW51eCA2NC1iaXQg ZnVuY3Rpb24gcG9pbnRlcnMgKHdoaWNoIGFyZSByZWFsbHkKLSsJICAgICBmdW5jdGlvbiBkZXNj cmlwdG9ycykuICAqLwotKwkgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy Ci0rCSAgICAoZ2RiYXJjaCwgcHBjNjRfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIAot LSAgICAgIHNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCAoZ2RiYXJjaCwKLS0J CQkJCSAgICBwcGM2NF9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwpOwotKwkgIHNldF9nZGJhcmNo X2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbAotKwkgICAgKGdkYmFyY2gsIHBwYzY0X2VsZl9tYWtl X21zeW1ib2xfc3BlY2lhbCk7Ci0rCX0KLSAKLSAgICAgICAvKiBTaGFyZWQgbGlicmFyeSBoYW5k bGluZy4gICovCi0gICAgICAgc2V0X2dkYmFyY2hfc2tpcF90cmFtcG9saW5lX2NvZGUgKGdkYmFy Y2gsIHBwYzY0X3NraXBfdHJhbXBvbGluZV9jb2RlKTsKLS0tLSBhL2dkYi9wcGMtc3lzdi10ZGVw LmMKLSsrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKLUBAIC0xMzUyLDggKzEzNTIsOSBAQCBwcGM2 NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJICB3b3Jk ID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbCk7Ci0gCi0gCSAgLyogQ29udmVydCBhbnkgZnVuY3Rp b24gY29kZSBhZGRyZXNzZXMgaW50byBkZXNjcmlwdG9ycy4gICovCi0tCSAgaWYgKFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUgotLQkgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9SRUYpCi0rCSAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfVjEK LSsJICAgICAgJiYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUgotKwkJICB8fCBU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpKQotIAkgICAgewotIAkgICAgICBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X3R5cGUKLSAJCT0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpOwotQEAgLTE1NTMsMjQgKzE1NTQsMzIgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9k dW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgIGJyZWFrcG9pbnQuICAq LwotICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3NpZ25lZCAocmVnY2FjaGUsIHRkZXAtPnBwY19s cl9yZWdudW0sIGJwX2FkZHIpOwotIAotLSAgLyogVXNlIHRoZSBmdW5jX2FkZHIgdG8gZmluZCB0 aGUgZGVzY3JpcHRvciwgYW5kIHVzZSB0aGF0IHRvIGZpbmQKLS0gICAgIHRoZSBUT0MuICBJZiB3 ZSdyZSBjYWxsaW5nIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBwb2ludGVyCi0tICAgICBp dHNlbGYgaWRlbnRpZmllcyB0aGUgZGVzY3JpcHRvci4gICovCi0tICB7Ci0tICAgIHN0cnVjdCB0 eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7Ci0tICAg IENPUkVfQUREUiBkZXNjX2FkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChmdW5jdGlvbik7Ci0tCi0t ICAgIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfUFRSCi0tCXx8IGNvbnZlcnRf Y29kZV9hZGRyX3RvX2Rlc2NfYWRkciAoZnVuY19hZGRyLCAmZGVzY19hZGRyKSkKLS0gICAgICB7 Ci0tCS8qIFRoZSBUT0MgaXMgdGhlIHNlY29uZCBkb3VibGUgd29yZCBpbiB0aGUgZGVzY3JpcHRv ci4gICovCi0tCUNPUkVfQUREUiB0b2MgPQotLQkgIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVn ZXIgKGRlc2NfYWRkciArIHRkZXAtPndvcmRzaXplLAotLQkJCQkJdGRlcC0+d29yZHNpemUsIGJ5 dGVfb3JkZXIpOwotLQlyZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLAot LQkJCQkJdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAyLCB0b2MpOwotLSAgICAgIH0KLS0gIH0KLSsg IC8qIEluIHRoZSBFTEZ2MSBBQkksIHVzZSB0aGUgZnVuY19hZGRyIHRvIGZpbmQgdGhlIGRlc2Ny aXB0b3IsIGFuZCB1c2UKLSsgICAgIHRoYXQgdG8gZmluZCB0aGUgVE9DLiAgSWYgd2UncmUgY2Fs bGluZyB2aWEgYSBmdW5jdGlvbiBwb2ludGVyLAotKyAgICAgdGhlIHBvaW50ZXIgaXRzZWxmIGlk ZW50aWZpZXMgdGhlIGRlc2NyaXB0b3IuICAqLwotKyAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9X RVJQQ19FTEZfVjEpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZnR5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChmdW5jdGlvbikpOwotKyAgICAgIENPUkVfQUREUiBkZXNjX2Fk ZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChmdW5jdGlvbik7Ci0rCi0rICAgICAgaWYgKFRZUEVfQ09E RSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIKLSsJICB8fCBjb252ZXJ0X2NvZGVfYWRkcl90b19k ZXNjX2FkZHIgKGZ1bmNfYWRkciwgJmRlc2NfYWRkcikpCi0rCXsKLSsJICAvKiBUaGUgVE9DIGlz IHRoZSBzZWNvbmQgZG91YmxlIHdvcmQgaW4gdGhlIGRlc2NyaXB0b3IuICAqLwotKwkgIENPUkVf QUREUiB0b2MgPQotKwkgICAgcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoZGVzY19hZGRy ICsgdGRlcC0+d29yZHNpemUsCi0rCQkJCQkgIHRkZXAtPndvcmRzaXplLCBieXRlX29yZGVyKTsK LSsKLSsJICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLAotKwkJCQkJ ICB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDIsIHRvYyk7Ci0rCX0KLSsgICAgfQotKwotKyAgLyog SW4gdGhlIEVMRnYyIEFCSSwgd2UgbmVlZCB0byBwYXNzIHRoZSB0YXJnZXQgYWRkcmVzcyBpbiBy MTIgc2luY2UKLSsgICAgIHdlIG1heSBiZSBjYWxsaW5nIGEgZ2xvYmFsIGVudHJ5IHBvaW50LiAg Ki8KLSsgIGlmICh0ZGVwLT5lbGZfYWJpID09IFBPV0VSUENfRUxGX1YyKQotKyAgICByZWdjYWNo ZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLAotKwkJCQkgICAgdGRlcC0+cHBjX2dw MF9yZWdudW0gKyAxMiwgZnVuY19hZGRyKTsKLSAKLSAgIHJldHVybiBzcDsKLSB9CgpkaWZmIC0t Z2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMm9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBj NjRsZTEyb2YxNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IzODY4Mi4u MDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0tcHBjNjRsZTEyb2YxNS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDQ4ICswLDAgQEAKLWNvbW1pdCA1MmY1NDhlNDFmMDg1NTUwZDc3NDBjMzUwYzFj OGEyMzk1MzJhZjc3Ci1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5p Ym0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6NDE6MzYgMjAxNCArMDEwMAotCi0gICAgUG93 ZXJQQzY0IEVMRnYyIEFCSTogc3RhY2sgZnJhbWUgbGF5b3V0IGNoYW5nZXMKLSAgICAKLSAgICBU aGlzIGltcGxlbWVudGVzIGFub3RoZXIgY2hhbmdlIGluIEVMRnYyOiB0aGUgc3RhY2sgZnJhbWUg bm8gbG9uZ2VyCi0gICAgY29udGFpbnMgdGhlIHJlc2VydmVkIGRvdWJsZSB3b3JkcyBmb3IgbGlu a2VyIGFuZCBjb21waWxlciB1c2UKLSAgICAod2hpY2ggd2VyZW4ndCByZWFsbHkgdXNlZCBmb3Ig bXVjaCBvZiBhbnl0aGluZyBhbnl3YXkpLiAgVGhpcwotICAgIGFmZmVjdHMgcGxhY2VtZW50IG9m IG9uLXN0YWNrIHBhcmFtZXRlcnMgaW4gaW5mZXJpb3IgY2FsbHMuCi0gICAgCi0gICAgZ2RiL0No YW5nZUxvZzoKLSAgICAKLSAgICAJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1 c2hfZHVtbXlfY2FsbCk6IFVzZSBjb3JyZWN0Ci0gICAgCW9mZnNldCB0byB0aGUgc3RhY2sgcGFy YW1ldGVyIGxpc3QgZm9yIHRoZSBFTEZ2MiBBQkkuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMj IyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTAgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2gg V2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1zeXN2LXRkZXAuYyAo cHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsKTogVXNlIGNvcnJlY3QKLSsJb2Zmc2V0IHRv IHRoZSBzdGFjayBwYXJhbWV0ZXIgbGlzdCBmb3IgdGhlIEVMRnYyIEFCSS4KLSsKLSsyMDE0LTAy LTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkqIHBwYy1s aW51eC10ZGVwLmMgKHBwY19saW51eF9pbml0X2FiaSk6IE9ubHkgY2FsbAotIAlzZXRfZ2RiYXJj aF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciBhbmQKLSAJc2V0X2dkYmFyY2hfZWxmX21ha2Vf bXN5bWJvbF9zcGVjaWFsIGZvciBFTEZ2MS4KLS0tLSBhL2dkYi9wcGMtc3lzdi10ZGVwLmMKLSsr KyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKLUBAIC0xNDc0LDkgKzE0NzQsMTMgQEAgcHBjNjRfc3lz dl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJICBhcmdw b3MucmVnY2FjaGUgPSByZWdjYWNoZTsKLSAJICBhcmdwb3MucmVmcGFyYW0gPSBhbGlnbl9kb3du IChzcCAtIHJlZnBhcmFtX3NpemUsIDE2KTsKLSAJICBhcmdwb3MuZ3BhcmFtID0gYWxpZ25fZG93 biAoYXJncG9zLnJlZnBhcmFtIC0gZ3BhcmFtX3NpemUsIDE2KTsKLS0JICAvKiBBZGQgaW4gc3Bh Y2UgZm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRvdWJsZSB3b3JkLAotLQkgICAgIGNvbXBpbGVy IGRvdWJsZSB3b3JkLCBMUiBzYXZlIGFyZWEsIENSIHNhdmUgYXJlYS4gICovCi0tCSAgc3AgPSBh bGlnbl9kb3duIChhcmdwb3MuZ3BhcmFtIC0gNDgsIDE2KTsKLSsJICAvKiBBZGQgaW4gc3BhY2Ug Zm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRvdWJsZSB3b3JkICh2MSBvbmx5KSwKLSsJICAgICBj b21waWxlciBkb3VibGUgd29yZCAodjEgb25seSksIExSIHNhdmUgYXJlYSwgQ1Igc2F2ZSBhcmVh LAotKwkgICAgIGFuZCBiYWNrY2hhaW4uICAqLwotKwkgIGlmICh0ZGVwLT5lbGZfYWJpID09IFBP V0VSUENfRUxGX1YxKQotKwkgICAgc3AgPSBhbGlnbl9kb3duIChhcmdwb3MuZ3BhcmFtIC0gNDgs IDE2KTsKLSsJICBlbHNlCi0rCSAgICBzcCA9IGFsaWduX2Rvd24gKGFyZ3Bvcy5ncGFyYW0gLSAz MiwgMTYpOwotIAl9Ci0gCi0gICAgICAgLyogSWYgdGhlIGZ1bmN0aW9uIGlzIHJldHVybmluZyBh IGBzdHJ1Y3QnLCB0aGVuIHRoZXJlIGlzIGFuCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLXBw YzY0bGUxM29mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTEzb2YxNS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzljZTU5OS4uMDAwMDAwMAotLS0gYS9nZGItdXBz dHJlYW0tcHBjNjRsZTEzb2YxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBA Ci1jb21taXQgY2MwZTg5YzUxOTkxMmUwZTRlNzVhMmZjMGQ4MzZmNzE1Y2RjNjgwNgotQXV0aG9y OiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURhdGU6ICAgVHVl IEZlYiA0IDE4OjQyOjM1IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBFTEZ2MiBBQkk6IHN0 cnVjdHVyZSBwYXNzaW5nIC8gcmV0dXJuCi0gICAgCi0gICAgQW5vdGhlciBzaWduaWZpY2FudCBk aWZmZXJlbmNlIGluIHRoZSBFTEZ2MiBBQkkgaXMgdGhhdCAiaG9tb2dlbmVvdXMiCi0gICAgZmxv YXRpbmctcG9pbnQgYW5kIHZlY3RvciBhZ2dyZWdhdGVzLCBpLmUuIGFnZ3JlZ2F0ZXMgdGhlIGNv bnNpc3QKLSAgICAocmVjdXJzaXZlbHkpIG9ubHkgb2YgbWVtYmVycyBvZiB0aGUgc2FtZSBmbG9h dGluZy1wb2ludCBvciB2ZWN0b3IgdHlwZSwKLSAgICBhcmUgcGFzc2VkIGluIGEgc2VyaWVzIG9m IGZsb2F0aW5nLXBvaW50IC8gdmVjdG9yIHJlZ2lzdGVycywgYXMgaWYgdGhleQotICAgIHdlcmUg c2VwZXJhdGUgcGFyYW1ldGVycy4gIChUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIEFSTSBBQkkuKSAg VGhpcwotICAgIGFwcGxpZXMgdG8gYm90aCBjYWxscyBhbmQgcmV0dXJucy4KLSAgICAKLSAgICBJ biBhZGRpdGlvbiB3aGVuIHJldHVybmluZyBhbnkgYWdncmVnYXRlIG9mIHVwIHRvIDE2IGJ5dGVz LCBFTEZ2MiBub3cKLSAgICB1c2VkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuCi0gICAgCi0g ICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZXNlIGFzcGVjdHMgb2YgdGhlIEFCSSwg d2hpY2ggaXMgcmVsYXRpdmVseQotICAgIHN0cmFpZ2h0Zm9yd2FyZCBhZnRlciB0aGUgcmVmYWN0 b3JpbmcgcGF0Y2ggdG8gcHBjLXN5c3YtdGRlcC5jLgotICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6 Ci0gICAgCi0gICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9hZ2dyZWdhdGVfY2FuZGlkYXRl KTogTmV3IHJvdXRpbmUuCi0gICAgCShwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVn YXRlKTogTGlrZXdpc2UuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTogSGFuZGxl IEVMRnYyIGhvbW9nZW5lb3VzIHN0cnVjdHMuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5f dmFsdWUpOiBMaWtld2lzZS4gIEFsc28sIGhhbmRsZSBzbWFsbAotICAgIAlzdHJ1Y3R1cmVzIHJl dHVybmVkIGluIEdQUnMuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VM b2cKLSMjIC0xLDUgKzEsMTMgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2Vp Z2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfYWdncmVnYXRl X2NhbmRpZGF0ZSk6IE5ldyByb3V0aW5lLgotKwkocHBjNjRfZWxmdjJfYWJpX2hvbW9nZW5lb3Vz X2FnZ3JlZ2F0ZSk6IExpa2V3aXNlLgotKwkocHBjNjRfc3lzdl9hYmlfcHVzaF9wYXJhbSk6IEhh bmRsZSBFTEZ2MiBob21vZ2VuZW91cyBzdHJ1Y3RzLgotKwkocHBjNjRfc3lzdl9hYmlfcmV0dXJu X3ZhbHVlKTogTGlrZXdpc2UuICBBbHNvLCBoYW5kbGUgc21hbGwKLSsJc3RydWN0dXJlcyByZXR1 cm5lZCBpbiBHUFJzLgotKwotKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5k QGRlLmlibS5jb20+Ci0rCi0gCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNo X2R1bW15X2NhbGwpOiBVc2UgY29ycmVjdAotIAlvZmZzZXQgdG8gdGhlIHN0YWNrIHBhcmFtZXRl ciBsaXN0IGZvciB0aGUgRUxGdjIgQUJJLgotIAotLS0tIGEvZ2RiL3BwYy1zeXN2LXRkZXAuYwot KysrIGIvZ2RiL3BwYy1zeXN2LXRkZXAuYwotQEAgLTExMDEsNiArMTEwMSwxNjAgQEAgY29udmVy dF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChDT1JFX0FERFIgY29kZV9hZGRyLCBDT1JFX0FERFIg KmRlc2NfYWRkcikKLSAgIHJldHVybiAxOwotIH0KLSAKLSsvKiBXYWxrIGRvd24gdGhlIHR5cGUg dHJlZSBvZiBUWVBFIGNvdW50aW5nIGNvbnNlY3V0aXZlIGJhc2UgZWxlbWVudHMuCi0rICAgSWYg KkZJRUxEX1RZUEUgaXMgTlVMTCwgdGhlbiBzZXQgaXQgdG8gdGhlIGZpcnN0IHZhbGlkIGZsb2F0 aW5nIHBvaW50Ci0rICAgb3IgdmVjdG9yIHR5cGUuICBJZiBhIG5vbi1mbG9hdGluZyBwb2ludCBv ciB2ZWN0b3IgdHlwZSBpcyBmb3VuZCwgb3IKLSsgICBpZiBhIGZsb2F0aW5nIHBvaW50IG9yIHZl Y3RvciB0eXBlIHRoYXQgZG9lc24ndCBtYXRjaCBhIG5vbi1OVUxMCi0rICAgKkZJRUxEX1RZUEUg aXMgZm91bmQsIHRoZW4gcmV0dXJuIC0xLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBjb3VudCBpbiB0 aGUKLSsgICBzdWItdHJlZS4gICovCi0rCi0rc3RhdGljIExPTkdFU1QKLStwcGM2NF9hZ2dyZWdh dGVfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkgICBzdHJ1Y3QgdHlwZSAqKmZp ZWxkX3R5cGUpCi0rewotKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotKwotKyAgc3dp dGNoIChUWVBFX0NPREUgKHR5cGUpKQotKyAgICB7Ci0rICAgIGNhc2UgVFlQRV9DT0RFX0ZMVDoK LSsgICAgY2FzZSBUWVBFX0NPREVfREVDRkxPQVQ6Ci0rICAgICAgaWYgKCEqZmllbGRfdHlwZSkK LSsJKmZpZWxkX3R5cGUgPSB0eXBlOwotKyAgICAgIGlmIChUWVBFX0NPREUgKCpmaWVsZF90eXBl KSA9PSBUWVBFX0NPREUgKHR5cGUpCi0rCSAgJiYgVFlQRV9MRU5HVEggKCpmaWVsZF90eXBlKSA9 PSBUWVBFX0xFTkdUSCAodHlwZSkpCi0rCXJldHVybiAxOwotKyAgICAgIGJyZWFrOwotKwotKyAg ICBjYXNlIFRZUEVfQ09ERV9DT01QTEVYOgotKyAgICAgIHR5cGUgPSBUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKTsKLSsgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUCi0r CSAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCi0rCXsKLSsJICBp ZiAoISpmaWVsZF90eXBlKQotKwkgICAgKmZpZWxkX3R5cGUgPSB0eXBlOwotKwkgIGlmIChUWVBF X0NPREUgKCpmaWVsZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUpCi0rCSAgICAgICYmIFRZUEVf TEVOR1RIICgqZmllbGRfdHlwZSkgPT0gVFlQRV9MRU5HVEggKHR5cGUpKQotKwkgICAgcmV0dXJu IDI7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0r ICAgICAgaWYgKFRZUEVfVkVDVE9SICh0eXBlKSkKLSsJewotKwkgIGlmICghKmZpZWxkX3R5cGUp Ci0rCSAgICAqZmllbGRfdHlwZSA9IHR5cGU7Ci0rCSAgaWYgKFRZUEVfQ09ERSAoKmZpZWxkX3R5 cGUpID09IFRZUEVfQ09ERSAodHlwZSkKLSsJICAgICAgJiYgVFlQRV9MRU5HVEggKCpmaWVsZF90 eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCi0rCSAgICByZXR1cm4gMTsKLSsJfQotKyAgICAg IGVsc2UKLSsJewotKwkgIExPTkdFU1QgY291bnQsIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKLSsK LSsJICBjb3VudCA9IHBwYzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUKLSsJCSAgIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwgZmllbGRfdHlwZSk7Ci0rCSAgaWYgKGNvdW50ID09IC0xKQotKwkgICAg cmV0dXJuIC0xOwotKwotKwkgIGlmICghZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3Vu ZCwgJmhpZ2hfYm91bmQpKQotKwkgICAgcmV0dXJuIC0xOwotKwkgIGNvdW50ICo9IGhpZ2hfYm91 bmQgLSBsb3dfYm91bmQ7Ci0rCi0rCSAgLyogVGhlcmUgbXVzdCBiZSBubyBwYWRkaW5nLiAgKi8K LSsJICBpZiAoY291bnQgPT0gMCkKLSsJICAgIHJldHVybiBUWVBFX0xFTkdUSCAodHlwZSkgPT0g MCA/IDAgOiAtMTsKLSsJICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgIT0gY291bnQgKiBU WVBFX0xFTkdUSCAoKmZpZWxkX3R5cGUpKQotKwkgICAgcmV0dXJuIC0xOwotKwotKwkgIHJldHVy biBjb3VudDsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIFRZUEVfQ09ERV9TVFJV Q1Q6Ci0rICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgotKwl7Ci0rCSAgTE9OR0VTVCBjb3VudCA9 IDA7Ci0rCSAgaW50IGk7Ci0rCi0rCSAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlw ZSk7IGkrKykKLSsJICAgIHsKLSsJICAgICAgTE9OR0VTVCBzdWJfY291bnQ7Ci0rCi0rCSAgICAg IGlmIChmaWVsZF9pc19zdGF0aWMgKCZUWVBFX0ZJRUxEICh0eXBlLCBpKSkpCi0rCQljb250aW51 ZTsKLSsKLSsJICAgICAgc3ViX2NvdW50ID0gcHBjNjRfYWdncmVnYXRlX2NhbmRpZGF0ZQotKwkJ CSAgIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCBmaWVsZF90eXBlKTsKLSsJICAgICAgaWYg KHN1Yl9jb3VudCA9PSAtMSkKLSsJCXJldHVybiAtMTsKLSsKLSsJICAgICAgaWYgKFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKLSsJCWNvdW50ICs9IHN1Yl9jb3VudDsKLSsJ ICAgICAgZWxzZQotKwkJY291bnQgPSBtYXggKGNvdW50LCBzdWJfY291bnQpOwotKwkgICAgfQot KwotKwkgIC8qIFRoZXJlIG11c3QgYmUgbm8gcGFkZGluZy4gICovCi0rCSAgaWYgKGNvdW50ID09 IDApCi0rCSAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpID09IDAgPyAwIDogLTE7Ci0rCSAg ZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpICE9IGNvdW50ICogVFlQRV9MRU5HVEggKCpmaWVs ZF90eXBlKSkKLSsJICAgIHJldHVybiAtMTsKLSsKLSsJICByZXR1cm4gY291bnQ7Ci0rCX0KLSsg ICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQotKwot KyAgcmV0dXJuIC0xOwotK30KLSsKLSsvKiBJZiBhbiBhcmd1bWVudCBvZiB0eXBlIFRZUEUgaXMg YSBob21vZ2VuZW91cyBmbG9hdCBvciB2ZWN0b3IgYWdncmVnYXRlCi0rICAgdGhhdCBzaGFsbCBi ZSBwYXNzZWQgaW4gRlAvdmVjdG9yIHJlZ2lzdGVycyBhY2NvcmRpbmcgdG8gdGhlIEVMRnYyIEFC SSwKLSsgICByZXR1cm4gdGhlIGhvbW9nZW5lb3VzIGVsZW1lbnQgdHlwZSBpbiAqRUxUX1RZUEUg YW5kIHRoZSBudW1iZXIgb2YKLSsgICBlbGVtZW50cyBpbiAqTl9FTFRTLCBhbmQgcmV0dXJuIG5v bi16ZXJvLiAgT3RoZXJ3aXNlLCByZXR1cm4gemVyby4gICovCi0rCi0rc3RhdGljIGludAotK3Bw YzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICp0eXBlLAot KwkJCQkgICAgICAgc3RydWN0IHR5cGUgKiplbHRfdHlwZSwgaW50ICpuX2VsdHMpCi0rewotKyAg LyogQ29tcGxleCB0eXBlcyBhdCB0aGUgdG9wIGxldmVsIGFyZSB0cmVhdGVkIHNlcGFyYXRlbHku ICBIb3dldmVyLAotKyAgICAgY29tcGxleCB0eXBlcyBjYW4gYmUgZWxlbWVudHMgb2YgaG9tb2dl bmVvdXMgYWdncmVnYXRlcy4gICovCi0rICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfU1RSVUNUCi0rICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfVU5JT04K LSsgICAgICB8fCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkgJiYgIVRZUEVf VkVDVE9SICh0eXBlKSkpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSA9 IE5VTEw7Ci0rICAgICAgTE9OR0VTVCBmaWVsZF9jb3VudCA9IHBwYzY0X2FnZ3JlZ2F0ZV9jYW5k aWRhdGUgKHR5cGUsICZmaWVsZF90eXBlKTsKLSsKLSsgICAgICBpZiAoZmllbGRfY291bnQgPiAw KQotKwl7Ci0rCSAgaW50IG5fcmVncyA9ICgoVFlQRV9DT0RFIChmaWVsZF90eXBlKSA9PSBUWVBF X0NPREVfRkxUCi0rCQkJIHx8IFRZUEVfQ09ERSAoZmllbGRfdHlwZSkgPT0gVFlQRV9DT0RFX0RF Q0ZMT0FUKT8KLSsJCQkoVFlQRV9MRU5HVEggKGZpZWxkX3R5cGUpICsgNykgPj4gMyA6IDEpOwot KwotKwkgIC8qIFRoZSBFTEZ2MiBBQkkgYWxsb3dzIGhvbW9nZW5lb3VzIGFnZ3JlZ2F0ZXMgdG8g b2NjdXB5Ci0rCSAgICAgdXAgdG8gOCByZWdpc3RlcnMuICAqLwotKwkgIGlmIChmaWVsZF9jb3Vu dCAqIG5fcmVncyA8PSA4KQotKwkgICAgewotKwkgICAgICBpZiAoZWx0X3R5cGUpCi0rCQkqZWx0 X3R5cGUgPSBmaWVsZF90eXBlOwotKwkgICAgICBpZiAobl9lbHRzKQotKwkJKm5fZWx0cyA9IChp bnQpIGZpZWxkX2NvdW50OwotKwkgICAgICAvKiBOb3RlIHRoYXQgZmllbGRfY291bnQgaXMgTE9O R0VTVCBzaW5jZSBpdCBtYXkgaG9sZCB0aGUgc2l6ZQotKwkJIG9mIGFuIGFycmF5LCB3aGlsZSAq bl9lbHRzIGlzIGludCBzaW5jZSBpdHMgdmFsdWUgaXMgYm91bmRlZAotKwkJIGJ5IHRoZSBudW1i ZXIgb2YgcmVnaXN0ZXJzIHVzZWQgZm9yIGFyZ3VtZW50IHBhc3NpbmcuICBUaGUKLSsJCSBjYXN0 IGNhbm5vdCBvdmVyZmxvdyBkdWUgdG8gdGhlIGJvdW5kcyBjaGVja2luZyBhYm92ZS4gICovCi0r CSAgICAgIHJldHVybiAxOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwot K30KLSsKLSAvKiBTdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmV4dCBhcmd1bWVudCBwb3NpdGlvbi4g ICovCi0gc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zCi0gICB7Ci1AQCAtMTM4OSw2ICsxNTQzLDI5 IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot IAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9GTFQpCi0gCSAgICBwcGM2NF9z eXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIHR5cGUsIHZhbCwgYXJncG9zKTsKLSAJfQotKwot KyAgICAgIC8qIEluIHRoZSBFTEZ2MiBBQkksIGhvbW9nZW5lb3VzIGZsb2F0aW5nLXBvaW50IG9y IHZlY3RvcgotKwkgYWdncmVnYXRlcyBhcmUgcGFzc2VkIGluIGEgc2VyaWVzIG9mIHJlZ2lzdGVy cy4gICovCi0rICAgICAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfVjIpCi0rCXsK LSsJICBzdHJ1Y3QgdHlwZSAqZWx0eXBlOwotKwkgIGludCBpLCBuZWx0OwotKwotKwkgIGlmIChw cGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVnYXRlICh0eXBlLCAmZWx0eXBlLCAmbmVs dCkpCi0rCSAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdDsgaSsrKQotKwkgICAgICB7Ci0rCQljb25z dCBnZGJfYnl0ZSAqZWx2YWwgPSB2YWwgKyBpICogVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0rCi0r CQlpZiAoVFlQRV9DT0RFIChlbHR5cGUpID09IFRZUEVfQ09ERV9GTFQKLSsJCSAgICB8fCBUWVBF X0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQotKwkJICBwcGM2NF9zeXN2X2Fi aV9wdXNoX2ZyZWcgKGdkYmFyY2gsIGVsdHlwZSwgZWx2YWwsIGFyZ3Bvcyk7Ci0rCQllbHNlIGlm IChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0rCQkJICYmIFRZUEVfVkVD VE9SIChlbHR5cGUpCi0rCQkJICYmIHRkZXAtPnZlY3Rvcl9hYmkgPT0gUE9XRVJQQ19WRUNfQUxU SVZFQwotKwkJCSAmJiBUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSAxNikKLSsJCSAgcHBjNjRfc3lz dl9hYmlfcHVzaF92cmVnIChnZGJhcmNoLCBlbHZhbCwgYXJncG9zKTsKLSsJICAgICAgfQotKwl9 Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTgzNCw2ICsyMDExLDcyIEBAIHBwYzY0X3N5c3ZfYWJpX3Jl dHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqZnVuY3Rp b24sCi0gICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5USU9OOwotICAg ICB9Ci0gCi0rICAvKiBJbiB0aGUgRUxGdjIgQUJJLCBob21vZ2VuZW91cyBmbG9hdGluZy1wb2lu dCBvciB2ZWN0b3IKLSsgICAgIGFnZ3JlZ2F0ZXMgYXJlIHJldHVybmVkIGluIHJlZ2lzdGVycy4g ICovCi0rICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMgotKyAgICAgICYmIHBw YzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHZhbHR5cGUsICZlbHR5cGUsICZu ZWx0KSkKLSsgICAgewotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0OyBpKyspCi0rCXsKLSsJ ICBvayA9IHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlIChnZGJhcmNoLCBlbHR5cGUs IHJlZ2NhY2hlLAotKwkJCQkJCSByZWFkYnVmLCB3cml0ZWJ1ZiwgaSk7Ci0rCSAgZ2RiX2Fzc2Vy dCAob2spOwotKwotKwkgIGlmIChyZWFkYnVmKQotKwkgICAgcmVhZGJ1ZiArPSBUWVBFX0xFTkdU SCAoZWx0eXBlKTsKLSsJICBpZiAod3JpdGVidWYpCi0rCSAgICB3cml0ZWJ1ZiArPSBUWVBFX0xF TkdUSCAoZWx0eXBlKTsKLSsJfQotKwotKyAgICAgIHJldHVybiBSRVRVUk5fVkFMVUVfUkVHSVNU RVJfQ09OVkVOVElPTjsKLSsgICAgfQotKwotKyAgLyogSW4gdGhlIEVMRnYyIEFCSSwgYWdncmVn YXRlIHR5cGVzIG9mIHVwIHRvIDE2IGJ5dGVzIGFyZQotKyAgICAgcmV0dXJuZWQgaW4gcmVnaXN0 ZXJzIHIzOnI0LiAgKi8KLSsgIGlmICh0ZGVwLT5lbGZfYWJpID09IFBPV0VSUENfRUxGX1YyCi0r ICAgICAgJiYgVFlQRV9MRU5HVEggKHZhbHR5cGUpIDw9IDE2Ci0rICAgICAgJiYgKFRZUEVfQ09E RSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVAotKwkgIHx8IFRZUEVfQ09ERSAodmFsdHlw ZSkgPT0gVFlQRV9DT0RFX1VOSU9OCi0rCSAgfHwgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQ RV9DT0RFX0FSUkFZCi0rCSAgICAgICYmICFUWVBFX1ZFQ1RPUiAodmFsdHlwZSkpKSkKLSsgICAg ewotKyAgICAgIGludCBuX3JlZ3MgPSAoKFRZUEVfTEVOR1RIICh2YWx0eXBlKSArIHRkZXAtPndv cmRzaXplIC0gMSkKLSsJCSAgICAvIHRkZXAtPndvcmRzaXplKTsKLSsgICAgICBpbnQgaTsKLSsK LSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yZWdzOyBpKyspCi0rCXsKLSsJICBnZGJfYnl0ZSBy ZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOwotKwkgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZ3Aw X3JlZ251bSArIDMgKyBpOwotKwkgIGludCBvZmZzZXQgPSBpICogdGRlcC0+d29yZHNpemU7Ci0r CSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx0eXBlKSAtIG9mZnNldDsKLSsKLSsJICBpZiAo bGVuID4gdGRlcC0+d29yZHNpemUpCi0rCSAgICBsZW4gPSB0ZGVwLT53b3Jkc2l6ZTsKLSsKLSsJ ICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgbWVtc2V0IChyZWd2YWws IDAsIHNpemVvZiByZWd2YWwpOwotKwkgICAgICBpZiAoZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJh cmNoKSA9PSBCRkRfRU5ESUFOX0JJRwotKwkJICAmJiBvZmZzZXQgPT0gMCkKLSsJCW1lbWNweSAo cmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sIHdyaXRlYnVmLCBsZW4pOwotKwkgICAgICBl bHNlCi0rCQltZW1jcHkgKHJlZ3ZhbCwgd3JpdGVidWYgKyBvZmZzZXQsIGxlbik7Ci0rCSAgICAg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLSsJICAg IH0KLSsJICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICByZWdjYWNoZV9j b29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLSsJICAgICAgaWYgKGdkYmFy Y2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcKLSsJCSAgJiYgb2Zmc2V0 ID09IDApCi0rCQltZW1jcHkgKHJlYWRidWYsIHJlZ3ZhbCArIHRkZXAtPndvcmRzaXplIC0gbGVu LCBsZW4pOwotKwkgICAgICBlbHNlCi0rCQltZW1jcHkgKHJlYWRidWYgKyBvZmZzZXQsIHJlZ3Zh bCwgbGVuKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIHJldHVybiBSRVRVUk5fVkFMVUVfUkVHSVNU RVJfQ09OVkVOVElPTjsKLSsgICAgfQotKwotICAgLyogSGFuZGxlIHBsYWluIGJhc2UgdHlwZXMu ICAqLwotICAgaWYgKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlIChnZGJhcmNoLCB2 YWx0eXBlLCByZWdjYWNoZSwKLSAJCQkJCXJlYWRidWYsIHdyaXRlYnVmLCAwKSkKCmRpZmYgLS1n aXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTE0b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2 NGxlMTRvZjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmVlOTgzLi4w MDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMzc1ICswLDAgQEAKLWNvbW1pdCA1OTFhMTJhMWQ0Yzg4NDMzNDNlYjk5OTE0NWQ4 YmNjMWVmZWRmNDA4Ci1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5p Ym0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6NDQ6MTQgMjAxNCArMDEwMAotCi0gICAgUG93 ZXJQQzY0IEVMRnYyIEFCSTogc2tpcCBnbG9iYWwgZW50cnkgcG9pbnQgY29kZQotICAgIAotICAg IFRoaXMgcGF0Y2ggaGFuZGxlcyBhbm90aGVyIGFzcGVjdCBvZiB0aGUgRUxGdjIgQUJJLCB3aGlj aCB1bmZvcnR1bmF0ZWx5Ci0gICAgcmVxdWlyZXMgY29tbW9uIGNvZGUgY2hhbmdlcy4KLSAgICAK LSAgICBJbiBFTEZ2MiwgZnVuY3Rpb25zIG1heSBwcm92aWRlIGJvdGggYSBnbG9iYWwgYW5kIGEg bG9jYWwgZW50cnkgcG9pbnQuCi0gICAgVGhlIGdsb2JhbCBlbnRyeSBwb2ludCAod2hlcmUgdGhl IGZ1bmN0aW9uIHN5bWJvbCBwb2ludHMgdG8pIGlzIGludGVuZGVkCi0gICAgdG8gYmUgdXNlZCBm b3IgZnVuY3Rpb24tcG9pbnRlciBvciBjcm9zcy1tb2R1bGUgKFBMVCkgY2FsbHMsIGFuZCByZXF1 aXJlcwotICAgIHIxMiB0byBiZSBzZXQgdXAgdG8gdGhlIGVudHJ5IHBvaW50IGFkZHJlc3MgaXRz ZWxmLiAgIFRoZSBsb2NhbCBlbnRyeQotICAgIHBvaW50ICh3aGljaCBpcyBmb3VuZCBhdCBhIGZp eGVkIG9mZnNldCBhZnRlciB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50LAotICAgIGFzIGRlZmluZWQg YnkgYml0cyBpbiB0aGUgc3ltYm9sIHRhYmxlIGVudHJpZXMnIHN0X290aGVyIGZpZWxkKSwgaW5z dGVhZAotICAgIGV4cGVjdHMgcjIgdG8gYmUgc2V0IHVwIHRvIHRoZSBjdXJyZW50IFRPQy4KLSAg ICAKLSAgICBOb3csIHdoZW4gc2V0dGluZyBhIGJyZWFrcG9pbnQgb24gYSBmdW5jdGlvbiBieSBu YW1lLCB5b3UgcmVhbGx5IHdhbnQKLSAgICB0aGF0IGJyZWFrcG9pbnQgdG8gdHJpZ2dlciBlaXRo ZXIgd2F5LCBubyBtYXR0ZXIgd2hldGhlciB0aGUgZnVuY3Rpb24KLSAgICBpcyBjYWxsZWQgdmlh IGl0cyBsb2NhbCBvciBnbG9iYWwgZW50cnkgcG9pbnQuICBTaW5jZSB0aGUgZ2xvYmFsIGVudHJ5 Ci0gICAgcG9pbnQgd2lsbCBhbHdheXMgZmFsbCB0aHJvdWdoIGludG8gdGhlIGxvY2FsIGVudHJ5 IHBvaW50LCB0aGUgd2F5IHRvCi0gICAgYWNoaWV2ZSB0aGF0IGlzIHRvIHNpbXBseSBzZXQgdGhl IGJyZWFrcG9pbnQgYXQgdGhlIGxvY2FsIGVudHJ5IHBvaW50LgotICAgIAotICAgIE9uZSB3YXkg dG8gZG8gdGhhdCB3b3VsZCBiZSB0byBoYXZlIHByb2xvZ3VlIHBhcnNpbmcgc2tpcCB0aGUgY29k ZQotICAgIHNlcXVlbmNlIHRoYXQgbWFrZXMgdXAgdGhlIGdsb2JhbCBlbnRyeSBwb2ludC4gIFVu Zm9ydHVuYXRlbHksIHRoaXMKLSAgICBkb2VzIG5vdCB3b3JrIHJlbGlhYmx5LCBzaW5jZSAtZm9y IG9wdGltaXplZCBjb2RlLSBHREIgdGhlc2UgZGF5cwotICAgIHdpbGwgbm90IGFjdHVhbGwgaW52 b2tlIHRoZSBwcm9sb2d1ZSBwYXJzaW5nIGNvZGUgYnV0IGluc3RlYWQganVzdAotICAgIHNldCB0 aGUgYnJlYWtwb2ludCBhdCB0aGUgc3ltYm9sIGFkZHJlc3MgYW5kIHJlbHkgb24gRFdBUkYgYmVp bmcKLSAgICBjb3JyZWN0IGF0IGFueSBwb2ludCB0aHJvdWdob3V0IHRoZSBmdW5jdGlvbiAuLi4K LSAgICAKLSAgICBVbmZvcnR1bmF0ZWx5LCBJIGRvbid0IHJlYWxseSBzZWUgYW55IHdheSB0byBl eHByZXNzIHRoZSBub3Rpb24gb2YKLSAgICBsb2NhbCBlbnRyeSBwb2ludHMgd2l0aCB0aGUgY3Vy cmVudCBzZXQgb2YgZ2RiYXJjaCBjYWxsYmFja3MuCi0gICAgCi0gICAgVGh1cyB0aGlzIHBhdGNo IGFkZHMgYSBuZXcgY2FsbGJhY2ssIHNraXBfZW50cnlwb2ludCwgdGhhdCBpcwotICAgIHNvbWV3 aGF0IGFuYWxvZ291cyB0byBza2lwX3Byb2xvZ3VlLCBidXQgaXMgY2FsbGVkIGV2ZXJ5IHRpbWUK LSAgICBHREIgbmVlZHMgdG8gZGV0ZXJtaW5lIGEgZnVuY3Rpb24gc3RhcnQgYWRkcmVzcywgZXZl biBpbiB0aG9zZQotICAgIGNhc2VzIHdoZXJlIEdEQiBkZWNpZGVzIHRvIG5vdCBjYWxsIHNraXBf cHJvbG9ndWUuCi0gICAgCi0gICAgQXMgYSBzaWRlIGVmZmVjdCwgdGhlIHNraXBfZW50cnlwb2lu dCBpbXBsZW1lbnRhdGlvbiBvbiBwcGM2NAotICAgIGRvZXMgbm90IG5lZWQgdG8gcGVyZm9ybSBh bnkgaW5zdHJ1Y3Rpb24gcGFyc2luZzsgaXQgY2FuIHNpbXBseQotICAgIHJlbHkgb24gdGhlIGxv Y2FsIGVudHJ5IHBvaW50IGZsYWdzIGluIHRoZSBzeW1ib2wgdGFibGUgZW50cnkuCi0gICAgCi0g ICAgV2l0aCB0aGlzIGltcGxlbWVudGVkLCB0d28gdGVzdCBjYXNlcyB3b3VsZCBzdGlsbCBmYWls IHRvIHNldAotICAgIHRoZSBicmVha3BvaW50IGNvcnJlY3RseSwgYnV0IHRoYXQncyBiZWNhdXNl IHRoZXkgdXNlIHRoZSBjb25zdHJ1Y3Q6Ci0gICAgCi0gICAgIGdkYl90ZXN0ICJicmVhayAqaGVs bG8iCi0gICAgCi0gICAgTm93LCB1c2luZyAiKmhlbGxvIiBleHBsaWNpdGx5IGluc3RydWN0cyBH REIgdG8gc2V0IHRoZSBicmVha3BvaW50Ci0gICAgYXQgdGhlIG51bWVyaWNhbCB2YWx1ZSBvZiAi aGVsbG8iIHRyZWF0ZWQgYXMgZnVuY3Rpb24gcG9pbnRlciwgc28KLSAgICBpdCB3aWxsIGJ5IGRl ZmluaXRpb24gb25seSBoaXQgdGhlIGdsb2JhbCBlbnRyeSBwb2ludC4KLSAgICAKLSAgICBJIHRo aW5rIHRoaXMgYmVoYXZpb3VyIGlzIHVuYXZvaWRhYmxlLCBidXQgYWNjZXB0YWJsZSAtLSBtb3N0 IHBlb3BsZQotICAgIGRvIG5vdCB1c2UgdGhpcyBjb25zdHJ1Y3QsIGFuZCBpZiB0aGV5IGRvLCB0 aGV5IGdldCB3aGF0IHRoZXkKLSAgICBhc2tlZCBmb3IgLi4uCi0gICAgCi0gICAgSW4gb25lIG9m IHRob3NlIHR3byB0ZXN0IGNhc2VzLCB1c2Ugb2YgdGhpcyBjb25zdHJ1Y3QgaXMgcmVhbGx5Ci0g ICAgbm90IGFwcHJvcHJpYXRlLiAgSSB0aGluayB0aGlzIHdhcyBhZGRlZCB3YXkgYmFjayB3aGVu IGFzIGEgbWVhbnMKLSAgICB0byB3b3JrIGFyb3VuZCBwcm9sb2d1ZSBza2lwcGluZyBwcm9ibGVt cyBvbiBzb21lIHBsYXRmb3Jtcy4gIFRoZXNlCi0gICAgZGF5cyB0aGF0IHNob3VsZG4ndCByZWFs bHkgYmUgbmVjZXNzYXJ5IGFueSBtb3JlIC4uLgotICAgIAotICAgIEZvciB0aGUgb3RoZXIgKHN0 ZXAtYnQpLCB3ZSByZWFsbHkgd2FudCB0byBtYWtlIHN1cmUgYmFja3RyYWNpbmcKLSAgICB3b3Jr cyBvbiB0aGUgdmVyeSBmaXJzdCBpbnN0cnVjdGlvbiBvZiB0aGUgcm91dGluZS4gIFRvIGVuYWJs ZSB0aGF0Ci0gICAgdGVzdCBhbHNvIG9uIHBvd2VycGM2NGxlLWxpbnV4LCB3ZSBjYW4gbW9kaWZ5 IHRoZSBjb2RlIHRvIGNhbGwgdGhlCi0gICAgdGVzdCBmdW5jdGlvbiB2aWEgZnVuY3Rpb24gcG9p bnRlciAod2hpY2ggbWFrZXMgaXQgdXNlIHRoZSBnbG9iYWwKLSAgICBlbnRyeSBwb2ludCBpbiB0 aGUgRUxGdjIgQUJJKS4KLSAgICAKLSAgICBnZGIvQ2hhbmdlTG9nOgotICAgIAotICAgIAkqIGdk YmFyY2guc2ggKHNraXBfZW50cnlwb2ludCk6IE5ldyBjYWxsYmFjay4KLSAgICAJKiBnZGJhcmNo LmMsIGdkYmFyY2guaDogUmVnZW5lcmF0ZS4KLSAgICAJKiBzeW10YWIuYyAoc2tpcF9wcm9sb2d1 ZV9zYWwpOiBDYWxsIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50LgotICAgIAkqIGluZnJ1bi5jIChm aWxsX2luX3N0b3BfZnVuYyk6IExpa2V3aXNlLgotICAgIAkqIHBwYy1saW51eC10ZGVwLmM6IElu Y2x1ZGUgImVsZi9wcGM2NC5oIi4KLSAgICAJKHBwY19lbGZ2Ml9lbGZfbWFrZV9tc3ltYm9sX3Nw ZWNpYWwpOiBOZXcgZnVuY3Rpb24uCi0gICAgCShwcGNfZWxmdjJfc2tpcF9lbnRyeXBvaW50KTog TGlrZXdpc2UuCi0gICAgCShwcGNfbGludXhfaW5pdF9hYmkpOiBJbnN0YWxsIHRoZW0gZm9yIEVM RnYyLgotICAgIAotICAgIGdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotICAgIAotICAgIAkqIGdk Yi5iYXNlL3NpZ2JwdC5leHA6IERvIG5vdCB1c2UgIioiIHdoZW4gc2V0dGluZyBicmVha3BvaW50 Ci0gICAgCW9uIGEgZnVuY3Rpb24uCi0gICAgCSogZ2RiLmJhc2Uvc3RlcC1idC5jOiBDYWxsIGhl bGxvIHZpYSBmdW5jdGlvbiBwb2ludGVyIHRvIG1ha2UKLSAgICAJc3VyZSBpdHMgZmlyc3QgaW5z dHJ1Y3Rpb24gaXMgZXhlY3V0ZWQgb24gcG93ZXJwYzY0bGUtbGludXguCi0KLSMjIyBhL2dkYi9D aGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTYgQEAKLSAyMDE0LTAy LTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIGdkYmFy Y2guc2ggKHNraXBfZW50cnlwb2ludCk6IE5ldyBjYWxsYmFjay4KLSsJKiBnZGJhcmNoLmMsIGdk YmFyY2guaDogUmVnZW5lcmF0ZS4KLSsJKiBzeW10YWIuYyAoc2tpcF9wcm9sb2d1ZV9zYWwpOiBD YWxsIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50LgotKwkqIGluZnJ1bi5jIChmaWxsX2luX3N0b3Bf ZnVuYyk6IExpa2V3aXNlLgotKwkqIHBwYy1saW51eC10ZGVwLmM6IEluY2x1ZGUgImVsZi9wcGM2 NC5oIi4KLSsJKHBwY19lbGZ2Ml9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwpOiBOZXcgZnVuY3Rp b24uCi0rCShwcGNfZWxmdjJfc2tpcF9lbnRyeXBvaW50KTogTGlrZXdpc2UuCi0rCShwcGNfbGlu dXhfaW5pdF9hYmkpOiBJbnN0YWxsIHRoZW0gZm9yIEVMRnYyLgotKwotKzIwMTQtMDItMDQgIFVs cmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogcHBjLXN5c3YtdGRl cC5jIChwcGM2NF9hZ2dyZWdhdGVfY2FuZGlkYXRlKTogTmV3IHJvdXRpbmUuCi0gCShwcGM2NF9l bGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVnYXRlKTogTGlrZXdpc2UuCi0gCShwcGM2NF9zeXN2 X2FiaV9wdXNoX3BhcmFtKTogSGFuZGxlIEVMRnYyIGhvbW9nZW5lb3VzIHN0cnVjdHMuCi0tLS0g YS9nZGIvZ2RiYXJjaC5jCi0rKysgYi9nZGIvZ2RiYXJjaC5jCi1AQCAtMjI5LDYgKzIyOSw3IEBA IHN0cnVjdCBnZGJhcmNoCi0gICBnZGJhcmNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1f cF9mdHlwZSAqcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wOwotICAgZ2RiYXJjaF9za2lw X3Byb2xvZ3VlX2Z0eXBlICpza2lwX3Byb2xvZ3VlOwotICAgZ2RiYXJjaF9za2lwX21haW5fcHJv bG9ndWVfZnR5cGUgKnNraXBfbWFpbl9wcm9sb2d1ZTsKLSsgIGdkYmFyY2hfc2tpcF9lbnRyeXBv aW50X2Z0eXBlICpza2lwX2VudHJ5cG9pbnQ7Ci0gICBnZGJhcmNoX2lubmVyX3RoYW5fZnR5cGUg KmlubmVyX3RoYW47Ci0gICBnZGJhcmNoX2JyZWFrcG9pbnRfZnJvbV9wY19mdHlwZSAqYnJlYWtw b2ludF9mcm9tX3BjOwotICAgZ2RiYXJjaF9yZW1vdGVfYnJlYWtwb2ludF9mcm9tX3BjX2Z0eXBl ICpyZW1vdGVfYnJlYWtwb2ludF9mcm9tX3BjOwotQEAgLTQwNSw2ICs0MDYsNyBAQCBzdHJ1Y3Qg Z2RiYXJjaCBzdGFydHVwX2dkYmFyY2ggPQotICAgZGVmYXVsdF9yZXR1cm5faW5fZmlyc3RfaGlk ZGVuX3BhcmFtX3AsICAvKiByZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKi8KLSAgIDAs ICAvKiBza2lwX3Byb2xvZ3VlICovCi0gICAwLCAgLyogc2tpcF9tYWluX3Byb2xvZ3VlICovCi0r ICAwLCAgLyogc2tpcF9lbnRyeXBvaW50ICovCi0gICAwLCAgLyogaW5uZXJfdGhhbiAqLwotICAg MCwgIC8qIGJyZWFrcG9pbnRfZnJvbV9wYyAqLwotICAgZGVmYXVsdF9yZW1vdGVfYnJlYWtwb2lu dF9mcm9tX3BjLCAgLyogcmVtb3RlX2JyZWFrcG9pbnRfZnJvbV9wYyAqLwotQEAgLTcxNCw2ICs3 MTYsNyBAQCB2ZXJpZnlfZ2RiYXJjaCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICBpZiAo Z2RiYXJjaC0+c2tpcF9wcm9sb2d1ZSA9PSAwKQotICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGxv ZywgIlxuXHRza2lwX3Byb2xvZ3VlIik7Ci0gICAvKiBTa2lwIHZlcmlmeSBvZiBza2lwX21haW5f cHJvbG9ndWUsIGhhcyBwcmVkaWNhdGUuICAqLwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc2tpcF9l bnRyeXBvaW50LCBoYXMgcHJlZGljYXRlLiAgKi8KLSAgIGlmIChnZGJhcmNoLT5pbm5lcl90aGFu ID09IDApCi0gICAgIGZwcmludGZfdW5maWx0ZXJlZCAobG9nLCAiXG5cdGlubmVyX3RoYW4iKTsK LSAgIGlmIChnZGJhcmNoLT5icmVha3BvaW50X2Zyb21fcGMgPT0gMCkKLUBAIC0xMzUzLDYgKzEz NTYsMTIgQEAgZ2RiYXJjaF9kdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHVp X2ZpbGUgKmZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHNpbmds ZV9zdGVwX3Rocm91Z2hfZGVsYXkgPSA8JXM+XG4iLAotICAgICAgICAgICAgICAgICAgICAgICBo b3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5zaW5nbGVfc3RlcF90aHJvdWdoX2RlbGF5 KSk7Ci0gICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAg ICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3AoKSA9ICVkXG4iLAotKyAg ICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX3NraXBfZW50cnlwb2ludF9wIChnZGJhcmNoKSk7 Ci0rICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJn ZGJhcmNoX2R1bXA6IHNraXBfZW50cnlwb2ludCA9IDwlcz5cbiIsCi0rICAgICAgICAgICAgICAg ICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnNraXBfZW50cnlwb2ludCkp OwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAi Z2RiYXJjaF9kdW1wOiBnZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZV9wKCkgPSAlZFxuIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9za2lwX21haW5fcHJvbG9ndWVfcCAoZ2RiYXJj aCkpOwotICAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAotQEAgLTI3MDMsNiArMjcxMiwzMCBA QCBzZXRfZ2RiYXJjaF9za2lwX21haW5fcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAotIH0KLSAKLSBpbnQKLStnZGJhcmNoX3NraXBfZW50cnlwb2ludF9wIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOwotKyAgcmV0 dXJuIGdkYmFyY2gtPnNraXBfZW50cnlwb2ludCAhPSBOVUxMOwotK30KLSsKLStDT1JFX0FERFIK LStnZGJhcmNoX3NraXBfZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVf QUREUiBpcCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOwotKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50ICE9IE5VTEwpOwotKyAgaWYgKGdkYmFyY2hf ZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJj aF9za2lwX2VudHJ5cG9pbnQgY2FsbGVkXG4iKTsKLSsgIHJldHVybiBnZGJhcmNoLT5za2lwX2Vu dHJ5cG9pbnQgKGdkYmFyY2gsIGlwKTsKLSt9Ci0rCi0rdm9pZAotK3NldF9nZGJhcmNoX3NraXBf ZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGJhcmNoX3NraXBfZW50cnlwb2ludF9mdHlwZSBza2lwX2VudHJ5cG9pbnQp Ci0rewotKyAgZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50ID0gc2tpcF9lbnRyeXBvaW50OwotK30K LSsKLStpbnQKLSBnZGJhcmNoX2lubmVyX3RoYW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgbGhzLCBDT1JFX0FERFIgcmhzKQotIHsKLSAgIGdkYl9hc3NlcnQgKGdkYmFyY2gg IT0gTlVMTCk7Ci0tLS0gYS9nZGIvZ2RiYXJjaC5oCi0rKysgYi9nZGIvZ2RiYXJjaC5oCi1AQCAt NDg2LDYgKzQ4NiwyNCBAQCB0eXBlZGVmIENPUkVfQUREUiAoZ2RiYXJjaF9za2lwX21haW5fcHJv bG9ndWVfZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQwotIGV4dGVybiBDT1JFX0FE RFIgZ2RiYXJjaF9za2lwX21haW5fcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgaXApOwotIGV4dGVybiB2b2lkIHNldF9nZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc2tpcF9tYWluX3Byb2xvZ3VlX2Z0 eXBlICpza2lwX21haW5fcHJvbG9ndWUpOwotIAotKy8qIE9uIHNvbWUgcGxhdGZvcm1zLCBhIHNp bmdsZSBmdW5jdGlvbiBtYXkgcHJvdmlkZSBtdWx0aXBsZSBlbnRyeSBwb2ludHMsCi0rICAgZS5n LiBvbmUgdGhhdCBpcyB1c2VkIGZvciBmdW5jdGlvbi1wb2ludGVyIGNhbGxzIGFuZCBhIGRpZmZl cmVudCBvbmUKLSsgICB0aGF0IGlzIHVzZWQgZm9yIGRpcmVjdCBmdW5jdGlvbiBjYWxscy4KLSsg ICBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCBicmVha3BvaW50cyBzZXQgb24gdGhlIGZ1bmN0aW9u IHdpbGwgdHJpZ2dlcgotKyAgIG5vIG1hdHRlciB2aWEgd2hpY2ggZW50cnkgcG9pbnQgdGhlIGZ1 bmN0aW9uIGlzIGVudGVyZWQsIGEgcGxhdGZvcm0KLSsgICBtYXkgcHJvdmlkZSB0aGUgc2tpcF9l bnRyeXBvaW50IGNhbGxiYWNrLiAgSXQgaXMgY2FsbGVkIHdpdGggSVAgc2V0Ci0rICAgdG8gdGhl IG1haW4gZW50cnkgcG9pbnQgb2YgYSBmdW5jdGlvbiAoYXMgZGV0ZXJtaW5lZCBieSB0aGUgc3lt Ym9sIHRhYmxlKSwKLSsgICBhbmQgc2hvdWxkIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgaW5u ZXJtb3N0IGVudHJ5IHBvaW50LCB3aGVyZSB0aGUKLSsgICBhY3R1YWwgYnJlYWtwb2ludCBuZWVk cyB0byBiZSBzZXQuICBOb3RlIHRoYXQgc2tpcF9lbnRyeXBvaW50IGlzIHVzZWQKLSsgICBieSBH REIgY29tbW9uIGNvZGUgZXZlbiB3aGVuIGRlYnVnZ2luZyBvcHRpbWl6ZWQgY29kZSwgd2hlcmUg c2tpcF9wcm9sb2d1ZQotKyAgIGlzIG5vdCB1c2VkLiAqLwotKwotK2V4dGVybiBpbnQgZ2RiYXJj aF9za2lwX2VudHJ5cG9pbnRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwotKwotK3R5cGVk ZWYgQ09SRV9BRERSIChnZGJhcmNoX3NraXBfZW50cnlwb2ludF9mdHlwZSkgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBDT1JFX0FERFIgaXApOwotK2V4dGVybiBDT1JFX0FERFIgZ2RiYXJjaF9z a2lwX2VudHJ5cG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgaXApOwot K2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3NraXBfZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X2Z0eXBlICpza2lwX2VudHJ5cG9pbnQp OwotKwotIHR5cGVkZWYgaW50IChnZGJhcmNoX2lubmVyX3RoYW5fZnR5cGUpIChDT1JFX0FERFIg bGhzLCBDT1JFX0FERFIgcmhzKTsKLSBleHRlcm4gaW50IGdkYmFyY2hfaW5uZXJfdGhhbiAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBsaHMsIENPUkVfQUREUiByaHMpOwotIGV4 dGVybiB2b2lkIHNldF9nZGJhcmNoX2lubmVyX3RoYW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBnZGJhcmNoX2lubmVyX3RoYW5fZnR5cGUgKmlubmVyX3RoYW4pOwotLS0tIGEvZ2RiL2dkYmFy Y2guc2gKLSsrKyBiL2dkYi9nZGJhcmNoLnNoCi1AQCAtNTMwLDYgKzUzMCwxOSBAQCBtOmludDpy ZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3A6c3RydWN0IHR5cGUgKnR5cGU6dHlwZTo6ZGVm YXVsdF9yZXR1cm5faW5fZgotIAotIG06Q09SRV9BRERSOnNraXBfcHJvbG9ndWU6Q09SRV9BRERS IGlwOmlwOjA6MAotIE06Q09SRV9BRERSOnNraXBfbWFpbl9wcm9sb2d1ZTpDT1JFX0FERFIgaXA6 aXAKLSsjIE9uIHNvbWUgcGxhdGZvcm1zLCBhIHNpbmdsZSBmdW5jdGlvbiBtYXkgcHJvdmlkZSBt dWx0aXBsZSBlbnRyeSBwb2ludHMsCi0rIyBlLmcuIG9uZSB0aGF0IGlzIHVzZWQgZm9yIGZ1bmN0 aW9uLXBvaW50ZXIgY2FsbHMgYW5kIGEgZGlmZmVyZW50IG9uZQotKyMgdGhhdCBpcyB1c2VkIGZv ciBkaXJlY3QgZnVuY3Rpb24gY2FsbHMuCi0rIyBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCBicmVh a3BvaW50cyBzZXQgb24gdGhlIGZ1bmN0aW9uIHdpbGwgdHJpZ2dlcgotKyMgbm8gbWF0dGVyIHZp YSB3aGljaCBlbnRyeSBwb2ludCB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZCwgYSBwbGF0Zm9ybQot KyMgbWF5IHByb3ZpZGUgdGhlIHNraXBfZW50cnlwb2ludCBjYWxsYmFjay4gIEl0IGlzIGNhbGxl ZCB3aXRoIElQIHNldAotKyMgdG8gdGhlIG1haW4gZW50cnkgcG9pbnQgb2YgYSBmdW5jdGlvbiAo YXMgZGV0ZXJtaW5lZCBieSB0aGUgc3ltYm9sIHRhYmxlKSwKLSsjIGFuZCBzaG91bGQgcmV0dXJu IHRoZSBhZGRyZXNzIG9mIHRoZSBpbm5lcm1vc3QgZW50cnkgcG9pbnQsIHdoZXJlIHRoZQotKyMg YWN0dWFsIGJyZWFrcG9pbnQgbmVlZHMgdG8gYmUgc2V0LiAgTm90ZSB0aGF0IHNraXBfZW50cnlw b2ludCBpcyB1c2VkCi0rIyBieSBHREIgY29tbW9uIGNvZGUgZXZlbiB3aGVuIGRlYnVnZ2luZyBv cHRpbWl6ZWQgY29kZSwgd2hlcmUgc2tpcF9wcm9sb2d1ZQotKyMgaXMgbm90IHVzZWQuCi0rTTpD T1JFX0FERFI6c2tpcF9lbnRyeXBvaW50OkNPUkVfQUREUiBpcDppcAotKwotIGY6aW50OmlubmVy X3RoYW46Q09SRV9BRERSIGxocywgQ09SRV9BRERSIHJoczpsaHMsIHJoczowOjAKLSBtOmNvbnN0 IGdkYl9ieXRlICo6YnJlYWtwb2ludF9mcm9tX3BjOkNPUkVfQUREUiAqcGNwdHIsIGludCAqbGVu cHRyOnBjcHRyLCBsZW5wdHI6OjA6Ci0gIyBSZXR1cm4gdGhlIGFkanVzdGVkIGFkZHJlc3MgYW5k IGtpbmQgdG8gdXNlIGZvciBaMC9aMSBwYWNrZXRzLgotLS0tIGEvZ2RiL2luZnJ1bi5jCi0rKysg Yi9nZGIvaW5mcnVuLmMKLUBAIC0zMTU5LDYgKzMxNTksMTAgQEAgZmlsbF9pbl9zdG9wX2Z1bmMg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgIGVjcy0+c3RvcF9mdW5jX3N0YXJ0Ci0g CSs9IGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9zdGFydF9vZmZzZXQgKGdkYmFyY2gpOwot IAotKyAgICAgIGlmIChnZGJhcmNoX3NraXBfZW50cnlwb2ludF9wIChnZGJhcmNoKSkKLSsJZWNz LT5zdG9wX2Z1bmNfc3RhcnQgPSBnZGJhcmNoX3NraXBfZW50cnlwb2ludCAoZ2RiYXJjaCwKLSsJ CQkJCQkJZWNzLT5zdG9wX2Z1bmNfc3RhcnQpOwotKwotICAgICAgIGVjcy0+c3RvcF9mdW5jX2Zp bGxlZF9pbiA9IDE7Ci0gICAgIH0KLSB9Ci0tLS0gYS9nZGIvcHBjLWxpbnV4LXRkZXAuYwotKysr IGIvZ2RiL3BwYy1saW51eC10ZGVwLmMKLUBAIC00NCw2ICs0NCw3IEBACi0gI2luY2x1ZGUgIm9i c2VydmVyLmgiCi0gI2luY2x1ZGUgImF1eHYuaCIKLSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgot KyNpbmNsdWRlICJlbGYvcHBjNjQuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNs dWRlICJhcmNoLXV0aWxzLmgiCi0gI2luY2x1ZGUgInNwdS10ZGVwLmgiCi1AQCAtODc2LDYgKzg3 Nyw1NSBAQCBwcGNfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKLSAgICAgfQotIH0KLSAKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBgZ2RiYXJj aF9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwnLCBhcyBkZWZpbmVkIGluCi0rICAgZ2RiYXJjaC5o LiAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGZvciB0aGUgRUxGdjIgQUJJIG9ubHkuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rcHBjX2VsZnYyX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCAo YXN5bWJvbCAqc3ltLCBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW0pCi0rewotKyAgZWxmX3N5 bWJvbF90eXBlICplbGZfc3ltID0gKGVsZl9zeW1ib2xfdHlwZSAqKXN5bTsKLSsKLSsgIC8qIElm IHRoZSBzeW1ib2wgaXMgbWFya2VkIGFzIGhhdmluZyBhIGxvY2FsIGVudHJ5IHBvaW50LCBzZXQg YSB0YXJnZXQKLSsgICAgIGZsYWcgaW4gdGhlIG1zeW1ib2wuICBXZSBjdXJyZW50bHkgb25seSBz dXBwb3J0IGxvY2FsIGVudHJ5IHBvaW50Ci0rICAgICBvZmZzZXRzIG9mIDggYnl0ZXMsIHdoaWNo IGlzIHRoZSBvbmx5IGVudHJ5IHBvaW50IG9mZnNldCBldmVyIHVzZWQKLSsgICAgIGJ5IGN1cnJl bnQgY29tcGlsZXJzLiAgSWYvd2hlbiBvdGhlciBvZmZzZXRzIGFyZSBldmVyIHVzZWQsIHdlIHdp bGwKLSsgICAgIGhhdmUgdG8gdXNlIGFkZGl0aW9uYWwgdGFyZ2V0IGZsYWcgYml0cyB0byBzdG9y ZSB0aGVtLiAgKi8KLSsgIHN3aXRjaCAoUFBDNjRfTE9DQUxfRU5UUllfT0ZGU0VUIChlbGZfc3lt LT5pbnRlcm5hbF9lbGZfc3ltLnN0X290aGVyKSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAg ICAgIGJyZWFrOwotKyAgICBjYXNlIDg6Ci0rICAgICAgTVNZTUJPTF9UQVJHRVRfRkxBR18xICht c3ltKSA9IDE7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRp b24gb2YgYGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50JywgYXMgZGVmaW5lZCBpbgotKyAgIGdkYmFy Y2guaC4gIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgdXNlZCBmb3IgdGhlIEVMRnYyIEFCSSBvbmx5 LiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rcHBjX2VsZnYyX3NraXBfZW50cnlwb2ludCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKLSt7Ci0rICBzdHJ1Y3QgYm91 bmRfbWluaW1hbF9zeW1ib2wgZnVuOwotKyAgaW50IGxvY2FsX2VudHJ5X29mZnNldCA9IDA7Ci0r Ci0rICBmdW4gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKLSsgIGlmIChmdW4u bWluc3ltID09IE5VTEwpCi0rICAgIHJldHVybiBwYzsKLSsKLSsgIC8qIFNlZSBwcGNfZWxmdjJf ZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsIGZvciBob3cgbG9jYWwgZW50cnkgcG9pbnQKLSsgICAg IG9mZnNldCB2YWx1ZXMgYXJlIGVuY29kZWQuICAqLwotKyAgaWYgKE1TWU1CT0xfVEFSR0VUX0ZM QUdfMSAoZnVuLm1pbnN5bSkpCi0rICAgIGxvY2FsX2VudHJ5X29mZnNldCA9IDg7Ci0rCi0rICBp ZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGZ1bi5taW5zeW0pIDw9IHBjCi0rICAgICAgJiYgcGMg PCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZnVuLm1pbnN5bSkgKyBsb2NhbF9lbnRyeV9vZmZzZXQp Ci0rICAgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZnVuLm1pbnN5bSkgKyBsb2NhbF9l bnRyeV9vZmZzZXQ7Ci0rCi0rICByZXR1cm4gcGM7Ci0rfQotKwotIC8qIEltcGxlbWVudGF0aW9u IG9mIGBnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQnLCBhcyBkZWZpbmVkIGluCi0gICAg Z2RiYXJjaC5oLiAgKi8KLSAKLUBAIC0xMzQ5LDYgKzEzOTksMTMgQEAgcHBjX2xpbnV4X2luaXRf YWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCi0gCSAgc2V0X2dkYmFyY2hfZWxmX21ha2Vf bXN5bWJvbF9zcGVjaWFsCi0gCSAgICAoZ2RiYXJjaCwgcHBjNjRfZWxmX21ha2VfbXN5bWJvbF9z cGVjaWFsKTsKLSAJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIHNldF9nZGJhcmNoX2VsZl9tYWtl X21zeW1ib2xfc3BlY2lhbAotKwkgICAgKGdkYmFyY2gsIHBwY19lbGZ2Ml9lbGZfbWFrZV9tc3lt Ym9sX3NwZWNpYWwpOwotKwotKwkgIHNldF9nZGJhcmNoX3NraXBfZW50cnlwb2ludCAoZ2RiYXJj aCwgcHBjX2VsZnYyX3NraXBfZW50cnlwb2ludCk7Ci0rCX0KLSAKLSAgICAgICAvKiBTaGFyZWQg bGlicmFyeSBoYW5kbGluZy4gICovCi0gICAgICAgc2V0X2dkYmFyY2hfc2tpcF90cmFtcG9saW5l X2NvZGUgKGdkYmFyY2gsIHBwYzY0X3NraXBfdHJhbXBvbGluZV9jb2RlKTsKLS0tLSBhL2dkYi9z eW10YWIuYwotKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtMjk1MCw2ICsyOTUwLDggQEAgc2tpcF9w cm9sb2d1ZV9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKLSAKLSAgICAgICAvKiBT a2lwICJmaXJzdCBsaW5lIiBvZiBmdW5jdGlvbiAod2hpY2ggaXMgYWN0dWFsbHkgaXRzIHByb2xv Z3VlKS4gICovCi0gICAgICAgcGMgKz0gZ2RiYXJjaF9kZXByZWNhdGVkX2Z1bmN0aW9uX3N0YXJ0 X29mZnNldCAoZ2RiYXJjaCk7Ci0rICAgICAgaWYgKGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3Ag KGdkYmFyY2gpKQotKyAgICAgICAgcGMgPSBnZGJhcmNoX3NraXBfZW50cnlwb2ludCAoZ2RiYXJj aCwgcGMpOwotICAgICAgIGlmIChza2lwKQotIAlwYyA9IGdkYmFyY2hfc2tpcF9wcm9sb2d1ZSAo Z2RiYXJjaCwgcGMpOwotIAotIyMjIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSMjIyBiL2dk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyAtMSw1ICsxLDEyIEBACi0gMjAxNC0wMi0wNCAgVWxy aWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIGdkYi5iYXNlL3NpZ2Jw dC5leHA6IERvIG5vdCB1c2UgIioiIHdoZW4gc2V0dGluZyBicmVha3BvaW50Ci0rCW9uIGEgZnVu Y3Rpb24uCi0rCSogZ2RiLmJhc2Uvc3RlcC1idC5jOiBDYWxsIGhlbGxvIHZpYSBmdW5jdGlvbiBw b2ludGVyIHRvIG1ha2UKLSsJc3VyZSBpdHMgZmlyc3QgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQg b24gcG93ZXJwYzY0bGUtbGludXguCi0rCi0rMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1 d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkqIGdkYi5hcmNoL3Bvd2VycGMtZDEyOC1yZWdzLmV4 cDogRW5hYmxlIG9uIHBvd2VycGM2NCotKi4KLSAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2Fu ZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Np Z2JwdC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYnB0LmV4cAotQEAgLTc2 LDcgKzc2LDcgQEAgZ2RiX3Rlc3QgImJyZWFrIGtlZXBlciIKLSBzZXQgYm93bGVyX2FkZHJzIGJv d2xlcgotIHNldCBzZWd2X2FkZHIgbm9uZQotIGdkYl90ZXN0IHtkaXNwbGF5L2kgJHBjfQotLWdk Yl90ZXN0ICJhZHZhbmNlICpib3dsZXIiICJib3dsZXIuKiIgImFkdmFuY2UgdG8gdGhlIGJvd2xl ciIKLStnZGJfdGVzdCAiYWR2YW5jZSBib3dsZXIiICJib3dsZXIuKiIgImFkdmFuY2UgdG8gdGhl IGJvd2xlciIKLSBzZXQgdGVzdCAic3RlcHBpbmcgdG8gZmF1bHQiCi0gc2V0IHNpZ25hbWUgIlNJ R1NFR1YiCi0gZ2RiX3Rlc3RfbXVsdGlwbGUgInN0ZXBpIiAiJHRlc3QiIHsKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RlcC1idC5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3N0ZXAtYnQuYwotQEAgLTIzLDEwICsyMywxOSBAQCBoZWxsbyAodm9pZCkKLSAgIHByaW50ZiAo IkhlbGxvIHdvcmxkLlxuIik7Ci0gfQotIAotKy8qIFRoZSB0ZXN0IGNhc2UgdXNlcyAiYnJlYWsg KmhlbGxvIiB0byBtYWtlIHN1cmUgdG8gc3RlcCBhdCB0aGUgdmVyeQotKyAgIGZpcnN0IGluc3Ry dWN0aW9uIG9mIHRoZSBmdW5jdGlvbi4gIFRoaXMgY2F1c2VzIGEgcHJvYmxlbSBydW5uaW5nCi0r ICAgdGhlIHRlc3Qgb24gcG93ZXJwYzY0bGUtbGludXgsIHNpbmNlIHRoZSBmaXJzdCBpbnN0cnVj dGlvbiBiZWxvbmdzCi0rICAgdG8gdGhlIGdsb2JhbCBlbnRyeSBwb2ludCBwcm9sb2d1ZSwgd2hp Y2ggaXMgc2tpcHBlZCB3aGVuIGRvaW5nIGEKLSsgICBsb2NhbCBkaXJlY3QgZnVuY3Rpb24gY2Fs bC4gIFRvIG1ha2Ugc3VyZSB0aGF0IGZpcnN0IGluc3RydWN0aW9uIGlzCi0rICAgaW5kZWVkIGJl aW5nIGV4ZWN1dGVkIGFuZCB0aGUgYnJlYWtwb2ludCBoaXRzLCB3ZSBtYWtlIHN1cmUgdG8gY2Fs bAotKyAgIHRoZSByb3V0aW5lIHZpYSBhbiBpbmRpcmVjdCBjYWxsLiAgKi8KLSt2b2lkICgqcHRy KSAodm9pZCkgPSBoZWxsbzsKLSsKLSBpbnQKLSBtYWluICh2b2lkKQotIHsKLS0gIGhlbGxvICgp OwotKyAgcHRyICgpOwotIAotICAgcmV0dXJuIDA7Ci0gfQoKZGlmZiAtLWdpdCBhL2dkYi11cHN0 cmVhbS1wcGM2NGxlMTVvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MWJmNjguLjAwMDAwMDAKLS0tIGEv Z2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCAr MCwwIEBACi1jb21taXQgYmM5YTU1MjUzZWQ3MTIyY2ZlZWU5MGNkMjNkOTY0ZjQ0YzhiMGU2YQot QXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURhdGU6 ICAgVHVlIE1hciAyNSAxNTozOTozMiAyMDE0ICswMTAwCi0KLSAgICBTdXBwb3J0IGdkYi5hc20v YXNtLXNvdXJjZS5leHAgb24gcG93ZXJwYzY0bGUKLSAgICAKLSAgICBBZGQgbmV3IHBvd2VycGM2 NGxlLmluYyBmaWxlIGFwcHJvcHJpYXRlIGZvciB0aGUgRUxGdjIgQUJJIGFuZAotICAgIHVzZSBp dCB0byBzdXBwb3J0IHRoZSBhc20tc291cmNlLmV4cCB0ZXN0IGNhc2Ugb24gcG93ZXJwYzY0bGUu Ci0gICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAyMDE0LTAzLTI1ICBVbHJpY2ggV2VpZ2Fu ZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0gICAgCi0gICAgCSogZ2RiLmFzbS9hc20tc291cmNl LmV4cDogSGFuZGxlIHBvd2VycGM2NGxlLSogdGFyZ2V0cy4KLSAgICAJKiBnZGIuYXNtL3Bvd2Vy cGM2NGxlLmluYzogTmV3IGZpbGUuCi0KLSMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0j IyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsMyArMSw4IEBACi0rMjAxNC0wMy0y NSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotKwkqIGdkYi5hc20v YXNtLXNvdXJjZS5leHA6IEhhbmRsZSBwb3dlcnBjNjRsZS0qIHRhcmdldHMuCi0rCSogZ2RiLmFz bS9wb3dlcnBjNjRsZS5pbmM6IE5ldyBmaWxlLgotKwotIDIwMTQtMDMtMjUgIFBlZHJvIEFsdmVz ICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCSAgICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+ Ci0gCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotQEAgLTk3LDYgKzk3LDExIEBAIHN3 aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKLSAgICAgIm1pcHMqLSoiIHsKLSAgICAgICAgIHNl dCBhc20tYXJjaCBtaXBzCi0gICAgIH0KLSsgICAgInBvd2VycGM2NGxlLSoiIHsKLSsgICAgICAg IHNldCBhc20tYXJjaCBwb3dlcnBjNjRsZQotKyAgICAgICAgc2V0IGFzbS1mbGFncyAiLWE2NCAt SSR7c3JjZGlyfS8ke3N1YmRpcn0gJG9ial9pbmNsdWRlIgotKyAgICAgICAgYXBwZW5kIGxpbmst ZmxhZ3MgIiAtbSBlbGY2NGxwcGMiCi0rICAgIH0KLSAgICAgInBvd2VycGMqLSoiIHsKLSAgICAg ICAgIGlmIHsgW2lzX2xwNjRfdGFyZ2V0XSB9IHsKLSAgICAgICAgICAgICBzZXQgYXNtLWFyY2gg cG93ZXJwYzY0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vcG93 ZXJwYzY0bGUuaW5jCi1AQCAtMCwwICsxLDQ3IEBACi0rCWNvbW1lbnQgInN1YnJvdXRpbmUgcHJv bG9ndWUiCi0rCS5tYWNybyBnZGJhc21fZW50ZXIKLSsJc3RkdSAxLCAtMzIoMSkKLSsJbWZsciAw Ci0rCXN0ZCAwLCA0OCgxKQotKwkuZW5kbQotKwotKwljb21tZW50ICJzdWJyb3V0aW5lIGVwaWxv Z3VlIgotKwkubWFjcm8gZ2RiYXNtX2xlYXZlCi0rCWxkIDAsIDQ4KDEpCi0rCW10bHIgMAotKwls ZCAxLCAwKDEpCi0rCWJscgotKwkuZW5kbQotKwotKwkubWFjcm8gZ2RiYXNtX2NhbGwgc3Vicgot KwlibCBcc3VicgotKwlub3AKLSsJLmVuZG0KLSsKLSsJLm1hY3JvIGdkYmFzbV9zZXZlcmFsX25v cHMKLSsJbm9wCi0rCW5vcAotKwlub3AKLSsJbm9wCi0rCS5lbmRtCi0rCi0rCWNvbW1lbnQgImV4 aXQgKDApIgotKwkubWFjcm8gZ2RiYXNtX2V4aXQwCi0rCWNvbW1lbnQgInN5c19leGl0IgotKwls aQkwLCAxCi0rCXNjCi0rCS5lbmRtCi0rCi0rCWNvbW1lbnQgImNydDAgc3RhcnR1cCIKLSsJLm1h Y3JvIGdkYmFzbV9zdGFydHVwCi0rCS5hYml2ZXJzaW9uIDIKLSsJLnAyYWxpZ24gMgotKwkuZW5k bQotKwotKwljb21tZW50ICJEZWNsYXJlIGEgZGF0YSB2YXJpYWJsZSIKLSsJLnB1cmdlbSBnZGJh c21fZGF0YXZhcgotKwkubWFjcm8gZ2RiYXNtX2RhdGF2YXIgbmFtZSB2YWx1ZQotKwkuc2VjdGlv bgkiLmRhdGEiCi0rXG5hbWU6Ci0rCS5sb25nIFx2YWx1ZQotKwkuZW5kbQoKZGlmZiAtLWdpdCBh L2dkYi11cHN0cmVhbS5wYXRjaCBiL2dkYi11cHN0cmVhbS5wYXRjaAppbmRleCA1MzhmZTM1Li4y MWE2ZDIwIDEwMDY0NAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIGIvZ2RiLXVwc3RyZWFt LnBhdGNoCkBAIC0xLDM2OSArMSwzMjEgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDE0LTAyL21zZzAwMTc5Lmh0bWwKLVN1YmplY3Q6IFtvYnZdIHRlc3RzdWl0ZTog Rml4IGkzODYtc3NlLXN0YWNrLWFsaWduLmV4cCByZWdyZXNzaW9uIHNpbmNlIEdEQl9QQVJBTExF TAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA2NTYu aHRtbAorU3ViamVjdDogUmU6IFJlZ3Jlc3Npb24gd2l0aCBkZWZhdWx0IHNjaGVkdWxlci1sb2Nr aW5nPXN0ZXAgIFtSZTogW3B1c2hlZF0gQ29uc2VjdXRpdmUgc3RlcC1vdmVycyB0cmlnZ2VyIGlu dGVybmFsIGVycm9yLl0KIAorT24gMDYvMTcvMjAxNCAwODoyNCBQTSwgSmFuIEtyYXRvY2h2aWwg d3JvdGU6Cis+IE9uIFR1ZSwgMjIgQXByIDIwMTQgMjA6MjQ6MjggKzAyMDAsIFBlZHJvIEFsdmVz IHdyb3RlOgorPj4gVGVzdGVkIG9uIHg4Nl82NCBGZWRvcmEgMTcsIG5hdGl2ZSBhbmQgZ2Ric2Vy dmVyLCBhbmQgYWxzbyBuYXRpdmUgb24KKz4+IHRvcCBvZiBteSAic29mdHdhcmUgc2luZ2xlLXN0 ZXAgb24geDg2XzY0IiBzZXJpZXMuCis+IAorPiA0ODM4MDVjZjllYTVhNmRhY2U0MTQxNWQ4ODMw ZTkzZmNjYzQ5YzQzIGlzIHRoZSBmaXJzdCBiYWQgY29tbWl0Cis+IGNvbW1pdCA0ODM4MDVjZjll YTVhNmRhY2U0MTQxNWQ4ODMwZTkzZmNjYzQ5YzQzCis+IEF1dGhvcjogUGVkcm8gQWx2ZXMgPHBh bHZlc0ByZWRoYXQuY29tPgorPiBEYXRlOiAgIFR1ZSBBcHIgMjIgMTU6MDA6NTYgMjAxNCArMDEw MAorPiAgICAgQ29uc2VjdXRpdmUgc3RlcC1vdmVycyB0cmlnZ2VyIGludGVybmFsIGVycm9yLgor PiAgICAgCis+IChnZGIpIG5leHReTQorPiBbVGhyZWFkIDB4N2ZmZmY3ZmRhNzAwIChMV1AgMjcx NjgpIGV4aXRlZF1eTQorPiBbTmV3IExXUCAyNzE2OF1eTQorPiBbVGhyZWFkIDB4N2ZmZmY3NGVl NzAwIChMV1AgMjcxNzQpIGV4aXRlZF1eTQorPiBwcm9jZXNzIDI3MTY4IGlzIGV4ZWN1dGluZyBu ZXcgcHJvZ3JhbTogL2hvbWUvamtyYXRvY2gvcmVkaGF0L2dkYi1jbGVhbi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3RocmVhZC1leGVjbF5NCis+IFtUaHJlYWQgZGVidWdnaW5nIHVzaW5nIGxp YnRocmVhZF9kYiBlbmFibGVkXV5NCis+IFVzaW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnkg Ii9saWI2NC9saWJ0aHJlYWRfZGIuc28uMSIuXk0KKz4gaW5mcnVuLmM6NTIyNTogaW50ZXJuYWwt ZXJyb3I6IHN3aXRjaF9iYWNrX3RvX3N0ZXBwZWRfdGhyZWFkOiBBc3NlcnRpb24gYCFzY2hlZGxv Y2tfYXBwbGllcyAoMSknIGZhaWxlZC5eTQorPiBBIHByb2JsZW0gaW50ZXJuYWwgdG8gR0RCIGhh cyBiZWVuIGRldGVjdGVkLF5NCis+IGZ1cnRoZXIgZGVidWdnaW5nIG1heSBwcm92ZSB1bnJlbGlh YmxlLl5NCis+IFF1aXQgdGhpcyBkZWJ1Z2dpbmcgc2Vzc2lvbj8gKHkgb3IgbikgRkFJTDogZ2Ri LnRocmVhZHMvdGhyZWFkLWV4ZWNsLmV4cDogZ2V0IHRvIG1haW4gaW4gbmV3IGltYWdlIChHREIg aW50ZXJuYWwgZXJyb3IpCis+IFJlc3luY2luZyBkdWUgdG8gaW50ZXJuYWwgZXJyb3IuCiAKLS0t dTMvclpSbXhMNk1ta0syNAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFz Y2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKK1RoYW5rcyBKYW4uCiAKLUhpIFRvbSwK Kz4gCis+IFRoZSByZWdyZXNzaW9ucyBoYXBwZW5zIG9ubHkgd2l0aCB0aGUgYXR0YWNoZWQgcGF0 Y2ggd2hpY2ggSSBhbSBub3Qgc3VyZSBpZiBpdAorPiBpcyBjb25zaWRlcmVkIGFzIGEgdmFsaWQg RlNGIEdEQiByZWdyZXNzaW9uIG9yIG5vdCBidXQgSSB0aGluayBpdCBpcy4KIAotJCBtYWtlIGNo ZWNrLy91bml4Ly1tMzIgUlVOVEVTVEZMQUdTPSJnZGIuYXJjaC9pMzg2LXNzZS1zdGFjay1hbGln bi5leHAgR0RCX1BBUkFMTEVMPTEiCi1bLi4uXQotUnVubmluZyAvaG9tZS9qa3JhdG9jaC9yZWRo YXQvZ2RiLWNsZWFuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1zc2Utc3RhY2stYWxpZ24u ZXhwIC4uLgotRVJST1I6ICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi90ZXN0 c3VpdGUudW5peC4tbTMyL291dHB1dHMvZ2RiLmFyY2gvaTM4Ni1zc2Utc3RhY2stYWxpZ24vaTM4 Ni1zc2Utc3RhY2stYWxpZ24pIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK0lmIGl0IHdvcmtl ZCBiZWZvcmUsIHRoZW4gaXQncyBjZXJ0YWlubHkgYSByZWdyZXNzaW9uLiAgVGhlIHVzZXIgaXMK K2ZyZWUgdG8gZG8gInNldCBzY2hlZHVsZXItbG9ja2luZyBzdGVwIiBoZXJzZWxmLgogCitIZXJl J3MgYSBmaXguICBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluay4KIAotQ2hlY2tlZCBpbi4KKzg8 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis+RnJvbSBmNzE3Mzc4YzE2Y2IwNGY4 MzUwOTM1YTEzMzY3NjdkMjU0MWIzNmE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog UGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxOCBKdW4gMjAxNCAx NDoyMDozMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggbmV4dCBvdmVyIHRocmVhZGVkIGV4 ZWNsIHdpdGggInNldCBzY2hlZHVsZXItbG9ja2luZworU3ViamVjdDogW1BBVENIXSBGaXggbmV4 dCBvdmVyIHRocmVhZGVkIGV4ZWNsIHdpdGggInNldCBzY2hlZHVsZXItbG9ja2luZworIHN0ZXAi LgogCitSdW5uaW5nIGdkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHAgd2l0aCBzY2hlZHVsZXIt bG9ja2luZyBzZXQgdG8KKyJzdGVwIiByZXZlYWxzIGEgcHJvYmxlbToKIAotSmFuCisgKGdkYikg bmV4dF5NCisgW1RocmVhZCAweDdmZmZmN2ZkYTcwMCAoTFdQIDI3MTY4KSBleGl0ZWRdXk0KKyBb TmV3IExXUCAyNzE2OF1eTQorIFtUaHJlYWQgMHg3ZmZmZjc0ZWU3MDAgKExXUCAyNzE3NCkgZXhp dGVkXV5NCisgcHJvY2VzcyAyNzE2OCBpcyBleGVjdXRpbmcgbmV3IHByb2dyYW06IC9ob21lL2pr cmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90aHJlYWQt ZXhlY2xeTQorIFtUaHJlYWQgZGVidWdnaW5nIHVzaW5nIGxpYnRocmVhZF9kYiBlbmFibGVkXV5N CisgVXNpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSAiL2xpYjY0L2xpYnRocmVhZF9kYi5z by4xIi5eTQorIGluZnJ1bi5jOjUyMjU6IGludGVybmFsLWVycm9yOiBzd2l0Y2hfYmFja190b19z dGVwcGVkX3RocmVhZDogQXNzZXJ0aW9uIGAhc2NoZWRsb2NrX2FwcGxpZXMgKDEpJyBmYWlsZWQu Xk0KKyBBIHByb2JsZW0gaW50ZXJuYWwgdG8gR0RCIGhhcyBiZWVuIGRldGVjdGVkLF5NCisgZnVy dGhlciBkZWJ1Z2dpbmcgbWF5IHByb3ZlIHVucmVsaWFibGUuXk0KKyBRdWl0IHRoaXMgZGVidWdn aW5nIHNlc3Npb24/ICh5IG9yIG4pIEZBSUw6IGdkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHA6 IHNjaGVkbG9jayBzdGVwOiBnZXQgdG8gbWFpbiBpbiBuZXcgaW1hZ2UgKEdEQiBpbnRlcm5hbCBl cnJvcikKIAotLS11My9yWlJteEw2TW1rSzI0Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo YXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9MQor VGhlIGFzc2VydGlvbiBpcyBjb3JyZWN0LiAgVGhlIGlzc3VlIGlzIHRoYXQgR0RCIGlzIG1pc3Rh a2VubHkgdHJ5aW5nCit0byBzd2l0Y2ggYmFjayB0byBhbiBleGl0ZWQgdGhyZWFkLCB0aGF0IHdh cyBwcmV2aW91c2x5IHN0ZXBwaW5nIHdoZW4KK2l0IGV4aXRlZC4gIFRoaXMgaXMgZXhhY3RseSB0 aGUgc29ydCBvZiB0aGluZyB0aGUgdGVzdCB3YW50cyB0byBtYWtlCitzdXJlIGRvZXNuJ3QgaGFw cGVuOgogCi1jb21taXQgM2M3N2ZhZjMzZGM0YzdiYjY5M2YwNWY0NDA3N2VkNjg3ZTlmODIxNwot QXV0aG9yOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLURhdGU6 ICAgVGh1IEZlYiA2IDIzOjE0OjIwIDIwMTQgKzAxMDAKKwkjIE5vdyBzZXQgYSBicmVha3BvaW50 IGF0IGBtYWluJywgYW5kIHN0ZXAgb3ZlciB0aGUgZXhlY2wgY2FsbC4gIFRoZQorCSMgYnJlYWtw b2ludCBhdCBtYWluIHNob3VsZCBiZSByZWFjaGVkLiAgR0RCIHNob3VsZCBub3QgdHJ5IHRvIHJl dmVydAorCSMgYmFjayB0byB0aGUgb2xkIHRocmVhZCBmcm9tIHRoZSBvbGQgaW1hZ2UgYW5kIHJl c3VtZSBzdGVwcGluZyBpdAogCi0gICAgRml4IGkzODYtc3NlLXN0YWNrLWFsaWduLmV4cCByZWdy ZXNzaW9uIHNpbmNlIEdEQl9QQVJBTExFTC4KLSAgICAKLSAgICBnZGIvdGVzdHN1aXRlLwotICAg IDIwMTQtMDItMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSAgICAKLSAgICAJRml4IGkzODYtc3NlLXN0YWNrLWFsaWduLmV4cCByZWdyZXNzaW9uIHNpbmNl IEdEQl9QQVJBTExFTC4KLSAgICAJKiBnZGIuYXJjaC9pMzg2LXNzZS1zdGFjay1hbGlnbi5leHA6 IFVzZSBzdGFuZGFyZF9vdXRwdXRfZmlsZS4KK1dlIGRvbid0IHNlZSB0aGlzIGJ1ZyB3aXRoIHNj aGVkbG9jayBvZmYgb25seSBiZWNhdXNlIGEgZGlmZmVyZW50CitzZXF1ZW5jZSBvZiBldmVudHMg bWFrZXMgR0RCIG1hbmFnZSB0byBkZWxldGUgdGhlIHRocmVhZCBpbnN0ZWFkIG9mCittYXJraW5n IGl0IGV4aXRlZC4KIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLWluZGV4IDhjODQ2YjguLjEzY2NhZjMgMTAwNjQ0Ci0jIyMg YS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cK LSMjIC0xLDMgKzEsOCBAQAotKzIwMTQtMDItMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IGkzODYtc3NlLXN0YWNrLWFsaWduLmV4cCByZWdy ZXNzaW9uIHNpbmNlIEdEQl9QQVJBTExFTC4KLSsJKiBnZGIuYXJjaC9pMzg2LXNzZS1zdGFjay1h bGlnbi5leHA6IFVzZSBzdGFuZGFyZF9vdXRwdXRfZmlsZS4KLSsKLSAyMDE0LTAyLTA2ICBEb3Vn IEV2YW5zICA8eGRqZTQyQGdtYWlsLmNvbT4KLSAKLSAJKiBnZGIucHl0aG9uL3B5LWJyZWFrcG9p bnQuZXhwICh0ZXN0X2JrcHRfZXZhbF9mdW5jcyk6IFVwZGF0ZSBleHBlY3RlZAotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1zc2Utc3RhY2stYWxpZ24uZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC9pMzg2LXNzZS1zdGFjay1hbGlnbi5leHAKLWluZGV4IGI1YTdl MWUuLjQ2MmRmMWYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2kzODYtc3Nl LXN0YWNrLWFsaWduLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pMzg2LXNzZS1z dGFjay1hbGlnbi5leHAKLUBAIC0yMiw3ICsyMiw3IEBAIHNldCB0ZXN0ZmlsZSAiaTM4Ni1zc2Ut c3RhY2stYWxpZ24iCi0gc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotIHNldCBjc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCi0gc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLS1zZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLStzZXQgYmluZmlsZSBbc3RhbmRhcmRf b3V0cHV0X2ZpbGUgJHtleGVjdXRhYmxlfV0KLSBzZXQgb3B0cyB7fQotIAotIGlmIFtpbmZvIGV4 aXN0cyBDT01QSUxFXSB7CitUaGlzIHBhcnRpY3VsYXIgaW50ZXJuYWwgZXJyb3IgY2FuIGJlIGZp eGVkIGJ5IG1ha2luZyB0aGUgbG9vcCBvdmVyCithbGwgdGhyZWFkcyBpbiBzd2l0Y2hfYmFja190 b19zdGVwcGVkX3RocmVhZCBza2lwIGV4aXRlZCB0aHJlYWRzLgorQnV0LCBsb29raW5nIG92ZXIg b3RoZXIgQUxMX1RIUkVBRFMgdXNlcnMsIGFsbCBlaXRoZXIgY2FuIG9yIHNob3VsZCBiZQorc2tp cHBpbmcgZXhpdGVkIHRocmVhZHMgdG9vLiAgU28gZm9yIHNpbXBsaWNpdHksIHRoaXMgcGF0Y2gg cmVwbGFjZXMKK0FMTF9USFJFQURTIHdpdGggYSBuZXcgbWFjcm8gdGhhdCBza2lwcyBleGl0ZWQg dGhyZWFkcyBpdHNlbGYsIGFuZAordXBkYXRlcyBldmVyeXRoaW5nIHRvIHVzZSBpdC4KIAotLS11 My9yWlJteEw2TW1rSzI0LS0KK1Rlc3RlZCBvbiB4ODZfNjQgRmVkb3JhIDIwLgogCitnZGIvCisy MDE0LTA2LTE4ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgogCisJKiBnZGJ0aHJl YWQuaCAoQUxMX1RIUkVBRFMpOiBEZWxldGUuCisJKEFMTF9OT05fRVhJVEVEX1RIUkVBRFMpOiBO ZXcgbWFjcm8uCisJKiBidHJhY2UuYyAoYnRyYWNlX2ZyZWVfb2JqZmlsZSk6IFVzZSBBTExfTk9O X0VYSVRFRF9USFJFQURTCisJaW5zdGVhZCBvZiBBTExfVEhSRUFEUy4KKwkqIGluZnJ1bi5jIChm aW5kX3RocmVhZF9uZWVkc19zdGVwX292ZXIpCisJKHN3aXRjaF9iYWNrX3RvX3N0ZXBwZWRfdGhy ZWFkKTogVXNlIEFMTF9OT05fRVhJVEVEX1RIUkVBRFMKKwlpbnN0ZWFkIG9mIEFMTF9USFJFQURT LgorCSogcmVjb3JkLWJ0cmFjZS5jIChyZWNvcmRfYnRyYWNlX29wZW4pCisJKHJlY29yZF9idHJh Y2Vfc3RvcF9yZWNvcmRpbmcsIHJlY29yZF9idHJhY2VfY2xvc2UpCisJKHJlY29yZF9idHJhY2Vf aXNfcmVwbGF5aW5nLCByZWNvcmRfYnRyYWNlX3Jlc3VtZSkKKwkocmVjb3JkX2J0cmFjZV9maW5k X3RocmVhZF90b19tb3ZlLCByZWNvcmRfYnRyYWNlX3dhaXQpOiBMaWtld2lzZS4KKwkqIHJlbW90 ZS5jIChhcHBlbmRfcGVuZGluZ190aHJlYWRfcmVzdW1wdGlvbnMpOiBMaWtld2lzZS4KIAotY29t bWl0IDIwZGNhMDk2NjJhYTBkMjcwNmZiZTMyNWI4ZjQ0OGVmNzQ3NzMwMjgKLUF1dGhvcjogQW5k cmVhcyBBcm5leiA8YXJuZXpAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogICBUdWUgTWF5IDEz IDE0OjU1OjUzIDIwMTQgKzAyMDAKK2dkYi90ZXN0c3VpdGUvCisyMDE0LTA2LTE4ICBQZWRybyBB bHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgogCi0gICAgUFIgdGFyZ2V0LzE2OTQwIFMzOTA6IEZp eCBlcnJvbmVvdXMgb2Zmc2V0IGluIGZpbGxfZ3JlZ3NldC4KLSAgICAKLSAgICBUaGlzIGZpeGVz IGEgYnVnIHRoYXQgbGVhZHMgdG8gdmFyaW91cyBmYWlsdXJlcyB3aGVuIGRlYnVnZ2luZyBhCi0g ICAgMzEtYml0IGluZmVyaW9yIHdpdGggYSA2NC1iaXQgZ2RiIG9uIHMzOTB4LgotICAgIAotICAg IENvbmZsaWN0czoKLSAgICAKLSAgICAJZ2RiL0NoYW5nZUxvZworCSogZ2RiLnRocmVhZHMvdGhy ZWFkLWV4ZWNsLmV4cCAoZG9fdGVzdCk6IE5ldyBwcm9jZWR1cmUsIGZhY3RvcmVkCisJb3V0IGZy b20gLi4uCisJKHRvcCBsZXZlbCk6IC4uLiBoZXJlLiAgSXRlcmF0ZSBydW5uaW5nIHRlc3RzIHVu ZGVyIGRpZmZlcmVudAorCXNjaGVkdWxlci1sb2NraW5nIHNldHRpbmdzLgorLS0tCisgZ2RiL2J0 cmFjZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBnZGIvZ2RidGhy ZWFkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrLS0KKyBnZGIvaW5mcnVu LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KKyBnZGIvcmVjb3JkLWJ0 cmFjZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKy0tLS0tCisgZ2RiL3JlbW90 ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBnZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHAgfCA0NCArKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0KKyBnZGIvdGhyZWFkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0p CiAKLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEs OSBAQAotKzIwMTQtMDUtMTMgIEFuZHJlYXMgQXJuZXogIDxhcm5lekB2bmV0LmxpbnV4LmlibS5j b20+Ci0rCi0rCVBSIHRhcmdldC8xNjk0MAotKwkqIHMzOTAtbGludXgtbmF0LmMgKGZpbGxfZ3Jl Z3NldCk6IFJlbW92ZSBlcnJvbmVvdXMgb2Zmc2V0IDQgaW4KLSsJY2FsbCB0byByZWdjYWNoZV9y YXdfY29sbGVjdC4KLSsKLSAyMDE0LTA1LTA1ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBh ZGFjb3JlLmNvbT4KLSAKLSAJKiB2ZXJzaW9uLmluOiBTZXQgR0RCIHZlcnNpb24gbnVtYmVyIHRv IDcuNy4xLkRBVEUtY3ZzLgotLS0tIGEvZ2RiL3MzOTAtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9z MzkwLWxpbnV4LW5hdC5jCi1AQCAtMTY0LDcgKzE2NCw3IEBAIGZpbGxfZ3JlZ3NldCAoY29uc3Qg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgZ3JlZ3NldF90ICpyZWdwLCBpbnQgcmVnbm8pCi0g CQkgIG1lbXNldCAocCwgMCwgNCk7Ci0gCQkgIHAgKz0gNDsKLSAJCX0KLS0JICAgICAgcmVnY2Fj aGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCByZWcsIHAgKyA0KTsKLSsJICAgICAgcmVnY2FjaGVf cmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCByZWcsIHApOwotIAkgICAgfQotIAl9CitkaWZmIC0tZ2l0 IGEvZ2RiL2J0cmFjZS5jIGIvZ2RiL2J0cmFjZS5jCitpbmRleCA2MDFlYjQxLi44N2ExNzFlIDEw MDY0NAorLS0tIGEvZ2RiL2J0cmFjZS5jCisrKysgYi9nZGIvYnRyYWNlLmMKK0BAIC05NTgsNyAr OTU4LDcgQEAgYnRyYWNlX2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAg Ci0KLQotCi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEwODY4 OTQKLWNvbW1pdCBmMjIwNWRlMDA4MGQ5OTljOWI2Nzg3MmM5ZGI0NzFjMzFiNTNlMzc4Ci1BdXRo b3I6IEh1aSBaaHUgPHRlYXdhdGVyQGdtYWlsLmNvbT4KLURhdGU6ICAgVHVlIE1heSAyMCAxMzox OTowNiAyMDE0ICswODAwCi0KLSAgICBGaXggaXNzdWUgIzE1Nzc4OiBHREIgQWFyY2g2NCBzaWdu YWwgZnJhbWUgdW53aW5kZXIgaXNzdWUKLSAgICAKLSAgICBUaGUgcm9vdCBjYXVzZSBvZiB0aGlz IGlzc3VlIGlzIHVud2luZGVyIG9mICIjMyAgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4iCi0gICAg ZG9lc24ndCBzdXBwbHkgcmlnaHQgdmFsdWVzIG9mIHJlZ2lzdGVycy4KLSAgICBXaGVuIEdEQiB3 YW50IHRvIGdldCB0aGUgcHJldmlvdXMgZnJhbWUgb2YgIiMzICA8c2lnbmFsIGhhbmRsZXIgY2Fs bGVkPiIsCi0gICAgaXQgd2lsbCBjYWxsIGNhY2hlIGluaXQgZnVuY3Rpb24gb2YgdW53aW5kZXIg ImFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCIuCi0gICAgVGhlIGFkZHJlc3Mgb3IgdGhlIHZh bHVlIG9mIHRoZSByZWdpc3RlcnMgaXMgZ2V0IGZyb20gdGhpcyBmdW5jdGlvbi4KLSAgICBTbyB0 aGUgYnVnIGlzIGluc2lkZSB0aGllIGZ1bmN0aW9uLgotICAgIAotICAgIEkgY2hlY2sgdGhlIGFz bSBjb2RlIG9mICIjMyAgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4iOgotICAgIChnZGIpIGZyYW1l IDMKLSAgICAoZ2RiKSBwICRwYwotICAgICQxID0gKHZvaWQgKCopKCkpIDB4N2Y5MzFmYTRkMAot ICAgIChnZGIpIGRpc2Fzc2VtYmxlICRwYywgKzEwCi0gICAgRHVtcCBvZiBhc3NlbWJsZXIgY29k ZSBmcm9tIDB4N2Y5MzFmYTRkMCB0byAweDdmOTMxZmE0ZGE6Ci0gICAgPT4gMHgwMDAwMDA3Zjkz MWZhNGQwOgltb3YJeDgsICMweDhiICAgICAgICAgICAgICAgICAgCS8vICMxMzkKLSAgICAgICAw eDAwMDAwMDdmOTMxZmE0ZDQ6CXN2YwkjMHgwCi0gICAgICAgMHgwMDAwMDA3ZjkzMWZhNGQ4Oglu b3AKLSAgICAKLSAgICBUaGlzIGlzIHRoZSBzeXNjYWxsIHN5c19ydF9zaWdyZXR1cm4sIExpbnV4 IGtlcm5lbCBmdW5jdGlvbiAicmVzdG9yZV9zaWdmcmFtZSIKLSAgICB3aWxsIHNldCB0aGUgZnJh bWU6Ci0gICAgCWZvciAoaSA9IDA7IGkgPCAzMTsgaSsrKQotICAgIAkJX19nZXRfdXNlcl9lcnJv cihyZWdzLT5yZWdzW2ldLCAmc2YtPnVjLnVjX21jb250ZXh0LnJlZ3NbaV0sCi0gICAgCQkJCSBl cnIpOwotICAgIAlfX2dldF91c2VyX2Vycm9yKHJlZ3MtPnNwLCAmc2YtPnVjLnVjX21jb250ZXh0 LnNwLCBlcnIpOwotICAgIAlfX2dldF91c2VyX2Vycm9yKHJlZ3MtPnBjLCAmc2YtPnVjLnVjX21j b250ZXh0LnBjLCBlcnIpOwotICAgIFRoZSBzdHJ1Y3Qgb2YgdWNfbWNvbnRleHQgaXM6Ci0gICAg c3RydWN0IHNpZ2NvbnRleHQgewotICAgIAlfX3U2NCBmYXVsdF9hZGRyZXNzOwotICAgIAkvKiBB QXJjaDY0IHJlZ2lzdGVycyAqLwotICAgIAlfX3U2NCByZWdzWzMxXTsKLSAgICAJX191NjQgc3A7 Ci0gICAgCV9fdTY0IHBjOwotICAgIAlfX3U2NCBwc3RhdGU7Ci0gICAgCS8qIDRLIHJlc2VydmVk IGZvciBGUC9TSU1EIHN0YXRlIGFuZCBmdXR1cmUgZXhwYW5zaW9uICovCi0gICAgCV9fdTggX19y ZXNlcnZlZFs0MDk2XSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKTsKLSAgICB9Owot ICAgIAotICAgIEJ1dCBpbiBHREIgZnVuY3Rpb24gImFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5p dCIsIHRoZSBjb2RlIHRoZSBnZXQgYWRkcmVzcwotICAgIG9mIHJlZ2lzdGVycyBpczoKLSAgICAg IGZvciAoaSA9IDA7IGkgPCAzMTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgdHJhZF9mcmFt ZV9zZXRfcmVnX2FkZHIgKHRoaXNfY2FjaGUsCi0gICAgCQkJICAgICAgIEFBUkNINjRfWDBfUkVH TlVNICsgaSwKLSAgICAJCQkgICAgICAgc2lnY29udGV4dF9hZGRyICsgQUFSQ0g2NF9TSUdDT05U RVhUX1hPX09GRlNFVAotICAgIAkJCSAgICAgICArIGkgKiBBQVJDSDY0X1NJR0NPTlRFWFRfUkVH X1NJWkUpOwotICAgICAgICB9Ci0gICAgCi0gICAgICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAo dGhpc19jYWNoZSwgQUFSQ0g2NF9GUF9SRUdOVU0sIGZwKTsKLSAgICAgIHRyYWRfZnJhbWVfc2V0 X3JlZ19hZGRyICh0aGlzX2NhY2hlLCBBQVJDSDY0X0xSX1JFR05VTSwgZnAgKyA4KTsKLSAgICAg IHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2NhY2hlLCBBQVJDSDY0X1BDX1JFR05VTSwg ZnAgKyA4KTsKLSAgICAKLSAgICBUaGUgY29kZSB0aGF0IGdldCBwYyBhbmQgc3AgaXMgbm90IHJp Z2h0LCBzbyBJIGNoYW5nZSB0aGUgY29kZSBhY2NvcmRpbmcKLSAgICB0byBMaW51eCBrZXJuZWwg Y29kZToKLSAgICAgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2NhY2hlLCBBQVJDSDY0 X1NQX1JFR05VTSwKLSAgICAJCQkgICBzaWdjb250ZXh0X2FkZHIgKyBBQVJDSDY0X1NJR0NPTlRF WFRfWE9fT0ZGU0VUCi0gICAgCQkJICAgICArIDMxICogQUFSQ0g2NF9TSUdDT05URVhUX1JFR19T SVpFKTsKLSAgICAgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2NhY2hlLCBBQVJDSDY0 X1BDX1JFR05VTSwKLSAgICAJCQkgICBzaWdjb250ZXh0X2FkZHIgKyBBQVJDSDY0X1NJR0NPTlRF WFRfWE9fT0ZGU0VUCi0gICAgCQkJICAgICArIDMyICogQUFSQ0g2NF9TSUdDT05URVhUX1JFR19T SVpFKTsKLSAgICAKLSAgICBUaGUgaXNzdWUgd2FzIGZpeGVkIGJ5IHRoaXMgY2hhbmdlLCBhbmQg SSBkaWQgdGhlIHJlZ3Jlc3Npb24gdGVzdC4gIEl0Ci0gICAgYWxzbyBmaXhlZCBhIGxvdCBvZiBv dGhlciBYRkFJTCBhbmQgRkFJTC4KLSAgICAKLSAgICAyMDE0LTA1LTIwICBIdWkgWmh1ICA8aHVp QGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgCSAgICBZYW8gUWkgIDx5YW9AY29kZXNvdXJjZXJ5LmNv bT4KLSAgICAKLSAgICAJUFIgYmFja3RyYWNlLzE2NTU4Ci0gICAgCSogYWFyY2g2NC1saW51eC10 ZGVwLmMgKGFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCk6IFVwZGF0ZSBjb21tZW50cwotICAg IAlhbmQgY2hhbmdlIGFkZHJlc3Mgb2Ygc3AgYW5kIHBjLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9n Ci0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAtMSwzICsxLDEwIEBACi0rMjAxNC0wNS0yMCAgSHVp IFpodSAgPGh1aUBjb2Rlc291cmNlcnkuY29tPgotKwkgICAgWWFvIFFpICA8eWFvQGNvZGVzb3Vy Y2VyeS5jb20+Ci0rCi0rCVBSIGJhY2t0cmFjZS8xNjU1OAotKwkqIGFhcmNoNjQtbGludXgtdGRl cC5jIChhYXJjaDY0X2xpbnV4X3NpZ2ZyYW1lX2luaXQpOiBVcGRhdGUgY29tbWVudHMKLSsJYW5k IGNoYW5nZSBhZGRyZXNzIG9mIHNwIGFuZCBwYy4KLSsKLSAyMDE0LTA1LTE5ICBUb20gVHJvbWV5 ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgICBERUJVRyAoImZyZWUgb2JqZmlsZSIpOwogIAotIAkq IGdkYnR5cGVzLmMgKHJhbmtfZnVuY3Rpb24pOiBVc2UgWE5FV1ZFQy4KLS0tLSBhL2dkYi9hYXJj aDY0LWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL2FhcmNoNjQtbGludXgtdGRlcC5jCi1AQCAtNTMs MjggKzUzLDMwIEBACistICBBTExfVEhSRUFEUyAodHApCisrICBBTExfTk9OX0VYSVRFRF9USFJF QURTICh0cCkKKyAgICAgYnRyYWNlX2NsZWFyICh0cCk7CisgfQogIAotIC8qIFNpZ25hbCBmcmFt ZSBoYW5kbGluZy4KK2RpZmYgLS1naXQgYS9nZGIvZ2RidGhyZWFkLmggYi9nZGIvZ2RidGhyZWFk LmgKK2luZGV4IDlmNWRlZTYuLjY0ZTM3YzMgMTAwNjQ0CistLS0gYS9nZGIvZ2RidGhyZWFkLmgK KysrKyBiL2dkYi9nZGJ0aHJlYWQuaAorQEAgLTMxNywxMCArMzE3LDEyIEBAIHZvaWQgdGhyZWFk X2NoYW5nZV9wdGlkIChwdGlkX3Qgb2xkX3B0aWQsIHB0aWRfdCBuZXdfcHRpZCk7CisgdHlwZWRl ZiBpbnQgKCp0aHJlYWRfY2FsbGJhY2tfZnVuYykgKHN0cnVjdCB0aHJlYWRfaW5mbyAqLCB2b2lk ICopOworIGV4dGVybiBzdHJ1Y3QgdGhyZWFkX2luZm8gKml0ZXJhdGVfb3Zlcl90aHJlYWRzICh0 aHJlYWRfY2FsbGJhY2tfZnVuYywgdm9pZCAqKTsKICAKLS0gICAgICArLS0tLS0tLS0tLSsgIF4K LS0gICAgICB8IHNhdmVkIGxyIHwgIHwKLS0gICArLT58IHNhdmVkIGZwIHwtLSsKLS0gICB8ICB8 ICAgICAgICAgIHwKLS0gICB8ICB8ICAgICAgICAgIHwKLS0gICB8ICArLS0tLS0tLS0tLSsKLS0g ICB8ICB8IHNhdmVkIGxyIHwKLS0gICArLS18IHNhdmVkIGZwIHwKLS0gICBeICB8ICAgICAgICAg IHwKLS0gICB8ICB8ICAgICAgICAgIHwKLS0gICB8ICArLS0tLS0tLS0tLSsKLS0gICBeICB8ICAg ICAgICAgIHwKLS0gICB8ICB8IHNpZ25hbCAgIHwKLS0gICB8ICB8ICAgICAgICAgIHwKLS0gICB8 ICB8IHNhdmVkIGxyIHwtLT5pbnRlcnJ1cHRlZF9mdW5jdGlvbl9wYwotLSAgICstLXwgc2F2ZWQg ZnAgfAotLSAgIHwgICstLS0tLS0tLS0tKwotLSAgIHwgIHwgc2F2ZWQgbHIgfC0tPiBkZWZhdWx0 X3Jlc3RvcmVyIChtb3Z6IHg4LCBOUl9zeXNfcnRfc2lncmV0dXJuOyBzdmMgMCkKLS0gICArLS18 IHNhdmVkIGZwIHw8LSBGUAotLSAgICAgIHwgICAgICAgICAgfAotLSAgICAgIHwgICAgICAgICAg fDwtIFNQCi0tICAgICAgKy0tLS0tLS0tLS0rCi0rICAgICAgKy0tLS0tLS0tLS0tLSsgIF4KLSsg ICAgICB8IHNhdmVkIGxyICAgfCAgfAotKyAgICstPnwgc2F2ZWQgZnAgICB8LS0rCi0rICAgfCAg fCAgICAgICAgICAgIHwKLSsgICB8ICB8ICAgICAgICAgICAgfAotKyAgIHwgICstLS0tLS0tLS0t LS0rCi0rICAgfCAgfCBzYXZlZCBsciAgIHwKLSsgICArLS18IHNhdmVkIGZwICAgfAotKyAgIF4g IHwgICAgICAgICAgICB8Ci0rICAgfCAgfCAgICAgICAgICAgIHwKLSsgICB8ICArLS0tLS0tLS0t LS0tKwotKyAgIF4gIHwgICAgICAgICAgICB8Ci0rICAgfCAgfCBzaWduYWwgICAgIHwKLSsgICB8 ICB8ICAgICAgICAgICAgfCAgICAgICAgU0lHVFJBTVBfRlJBTUUgKHN0cnVjdCBydF9zaWdmcmFt ZSkKLSsgICB8ICB8IHNhdmVkIHJlZ3MgfAotKyAgICstLXwgc2F2ZWQgc3AgICB8LS0+IGludGVy cnVwdGVkX3NwCi0rICAgfCAgfCBzYXZlZCBwYyAgIHwtLT4gaW50ZXJydXB0ZWRfcGMKLSsgICB8 ICB8ICAgICAgICAgICAgfAotKyAgIHwgICstLS0tLS0tLS0tLS0rCi0rICAgfCAgfCBzYXZlZCBs ciAgIHwtLT4gZGVmYXVsdF9yZXN0b3JlciAobW92eiB4OCwgTlJfc3lzX3J0X3NpZ3JldHVybjsg c3ZjIDApCi0rICAgKy0tfCBzYXZlZCBmcCAgIHw8LSBGUAotKyAgICAgIHwgICAgICAgICAgICB8 ICAgICAgICAgTk9STUFMX0ZSQU1FCi0rICAgICAgfCAgICAgICAgICAgIHw8LSBTUAotKyAgICAg ICstLS0tLS0tLS0tLS0rCistLyogVHJhdmVyc2UgYWxsIHRocmVhZHMuICAqLworKy8qIFRyYXZl cnNlIGFsbCB0aHJlYWRzLCBleGNlcHQgdGhvc2UgdGhhdCBoYXZlIFRIUkVBRF9FWElURUQKKysg ICBzdGF0ZS4gICovCiAgCi0gICBPbiBzaWduYWwgZGVsaXZlcnksIHRoZSBrZXJuZWwgd2lsbCBj cmVhdGUgYSBzaWduYWwgaGFuZGxlciBzdGFjawotICAgZnJhbWUgYW5kIHNldHVwIHRoZSByZXR1 cm4gYWRkcmVzcyBpbiBMUiB0byBwb2ludCBhdCByZXN0b3JlciBzdHViLgotQEAgLTEyMyw2ICsx MjUsOCBAQAotICAgZDI4MDE1YTggICAgICAgIG1vdnogICAgeDgsICMweGFkCi0gICBkNDAwMDAw MSAgICAgICAgc3ZjICAgICAjMHgwCistI2RlZmluZSBBTExfVEhSRUFEUyhUKQkJCQlcCistICBm b3IgKFQgPSB0aHJlYWRfbGlzdDsgVDsgVCA9IFQtPm5leHQpCisrI2RlZmluZSBBTExfTk9OX0VY SVRFRF9USFJFQURTKFQpCQkJCVwKKysgIGZvciAoVCA9IHRocmVhZF9saXN0OyBUOyBUID0gVC0+ bmV4dCkgXAorKyAgICBpZiAoKFQpLT5zdGF0ZSAhPSBUSFJFQURfRVhJVEVEKQogIAotKyAgVGhp cyBpcyBhIHN5c3RlbSBjYWxsIHN5c19ydF9zaWdyZXR1cm4uCi0rCi0gICBXZSBkZXRlY3Qgc2ln bmFsIGZyYW1lcyBieSBzbm9vcGluZyB0aGUgcmV0dXJuIGNvZGUgZm9yIHRoZSByZXN0b3Jlcgot ICAgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgZXh0ZXJuIGludCB0aHJlYWRfY291bnQgKHZvaWQp OwogIAotQEAgLTE0Niw3ICsxNTAsNiBAQCBhYXJjaDY0X2xpbnV4X3NpZ2ZyYW1lX2luaXQgKGNv bnN0IHN0cnVjdCB0cmFtcF9mcmFtZSAqc2VsZiwKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKLSAgIENPUkVfQUREUiBzcCA9IGdl dF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgQUFSQ0g2NF9TUF9SRUdOVU0p OwotLSAgQ09SRV9BRERSIGZwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2Zy YW1lLCBBQVJDSDY0X0ZQX1JFR05VTSk7Ci0gICBDT1JFX0FERFIgc2lnY29udGV4dF9hZGRyID0K LSAgICAgc3AKLSAgICAgKyBBQVJDSDY0X1JUX1NJR0ZSQU1FX1VDT05URVhUX09GRlNFVAotQEAg LTE2MCwxMiArMTYzLDE0IEBAIGFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCAoY29uc3Qgc3Ry dWN0IHRyYW1wX2ZyYW1lICpzZWxmLAotIAkJCSAgICAgICBzaWdjb250ZXh0X2FkZHIgKyBBQVJD SDY0X1NJR0NPTlRFWFRfWE9fT0ZGU0VUCi0gCQkJICAgICAgICsgaSAqIEFBUkNINjRfU0lHQ09O VEVYVF9SRUdfU0laRSk7CitkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5j CitpbmRleCA0ZTgwOGQ5Li5lOGUyNmUwIDEwMDY0NAorLS0tIGEvZ2RiL2luZnJ1bi5jCisrKysg Yi9nZGIvaW5mcnVuLmMKK0BAIC0yMTYwLDcgKzIxNjAsNyBAQCBmaW5kX3RocmVhZF9uZWVkc19z dGVwX292ZXIgKGludCBzdGVwLCBzdHJ1Y3QgdGhyZWFkX2luZm8gKmV4Y2VwdCkKKyAgICAgICBy ZXR1cm4gTlVMTDsKICAgICAgfQotLQotLSAgdHJhZF9mcmFtZV9zZXRfcmVnX2FkZHIgKHRoaXNf Y2FjaGUsIEFBUkNINjRfRlBfUkVHTlVNLCBmcCk7Ci0tICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRk ciAodGhpc19jYWNoZSwgQUFSQ0g2NF9MUl9SRUdOVU0sIGZwICsgOCk7Ci0tICB0cmFkX2ZyYW1l X3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9QQ19SRUdOVU0sIGZwICsgOCk7Ci0t Ci0tICB0cmFkX2ZyYW1lX3NldF9pZCAodGhpc19jYWNoZSwgZnJhbWVfaWRfYnVpbGQgKGZwLCBm dW5jKSk7Ci0rICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9T UF9SRUdOVU0sCi0rCQkJICAgc2lnY29udGV4dF9hZGRyICsgQUFSQ0g2NF9TSUdDT05URVhUX1hP X09GRlNFVAotKwkJCSAgICAgKyAzMSAqIEFBUkNINjRfU0lHQ09OVEVYVF9SRUdfU0laRSk7Ci0r ICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9QQ19SRUdOVU0s Ci0rCQkJICAgc2lnY29udGV4dF9hZGRyICsgQUFSQ0g2NF9TSUdDT05URVhUX1hPX09GRlNFVAot KwkJCSAgICAgKyAzMiAqIEFBUkNINjRfU0lHQ09OVEVYVF9SRUdfU0laRSk7Ci0rCi0rICB0cmFk X2ZyYW1lX3NldF9pZCAodGhpc19jYWNoZSwgZnJhbWVfaWRfYnVpbGQgKHNwLCBmdW5jKSk7Cisg CistICBBTExfVEhSRUFEUyAodHApCisrICBBTExfTk9OX0VYSVRFRF9USFJFQURTICh0cCkKKyAg ICAgeworICAgICAgIC8qIElnbm9yZSB0aGUgRVhDRVBUIHRocmVhZC4gICovCisgICAgICAgaWYg KHRwID09IGV4Y2VwdCkKK0BAIC01MjA0LDcgKzUyMDQsNyBAQCBzd2l0Y2hfYmFja190b19zdGVw cGVkX3RocmVhZCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCisgCSBzdGVw L25leHQvZXRjLiAgKi8KKyAgICAgICBzdGVwcGluZ190aHJlYWQgPSBOVUxMOworICAgICAgIHN0 ZXBfb3ZlciA9IE5VTEw7CistICAgICAgQUxMX1RIUkVBRFMgKHRwKQorKyAgICAgIEFMTF9OT05f RVhJVEVEX1RIUkVBRFMgKHRwKQorICAgICAgICAgeworIAkgIC8qIElnbm9yZSB0aHJlYWRzIG9m IHByb2Nlc3NlcyB3ZSdyZSBub3QgcmVzdW1pbmcuICAqLworIAkgIGlmICghc2NoZWRfbXVsdGkK K2RpZmYgLS1naXQgYS9nZGIvcmVjb3JkLWJ0cmFjZS5jIGIvZ2RiL3JlY29yZC1idHJhY2UuYwor aW5kZXggZTBjNTM3YTguLjZhOWJmZTEgMTAwNjQ0CistLS0gYS9nZGIvcmVjb3JkLWJ0cmFjZS5j CisrKysgYi9nZGIvcmVjb3JkLWJ0cmFjZS5jCitAQCAtMjA2LDcgKzIwNiw3IEBAIHJlY29yZF9i dHJhY2Vfb3BlbiAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorICAgZ2RiX2Fzc2VydCAocmVj b3JkX2J0cmFjZV90aHJlYWRfb2JzZXJ2ZXIgPT0gTlVMTCk7CisgCisgICBkaXNhYmxlX2NoYWlu ID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworLSAgQUxMX1RIUkVBRFMgKHRw KQorKyAgQUxMX05PTl9FWElURURfVEhSRUFEUyAodHApCisgICAgIGlmIChhcmdzID09IE5VTEwg fHwgKmFyZ3MgPT0gMCB8fCBudW1iZXJfaXNfaW5fbGlzdCAoYXJncywgdHAtPm51bSkpCisgICAg ICAgeworIAlidHJhY2VfZW5hYmxlICh0cCk7CitAQCAtMjM4LDcgKzIzOCw3IEBAIHJlY29yZF9i dHJhY2Vfc3RvcF9yZWNvcmRpbmcgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmKQorIAorICAgcmVj b3JkX2J0cmFjZV9hdXRvX2Rpc2FibGUgKCk7CisgCistICBBTExfVEhSRUFEUyAodHApCisrICBB TExfTk9OX0VYSVRFRF9USFJFQURTICh0cCkKKyAgICAgaWYgKHRwLT5idHJhY2UudGFyZ2V0ICE9 IE5VTEwpCisgICAgICAgYnRyYWNlX2Rpc2FibGUgKHRwKTsKICB9CitAQCAtMjU5LDcgKzI1OSw3 IEBAIHJlY29yZF9idHJhY2VfY2xvc2UgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmKQogIAotIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdHJhbXBfZnJhbWUgYWFyY2g2NF9saW51eF9ydF9zaWdmcmFtZSA9 Ci0KLQotCi1CdWcgMTEwMjYyNCAtIGxhdGVzdCBnZGIgLTE1IGJ1aWxkIGlzIEZUQkZTIG9uIGFh cmNoNjQKLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYy NAotY29tbWl0IDAzNmNkMzgxODJiZGUzMmQ4Mjk3YjYzMGNkNWM4NjFkNTNiODk0OWUKLUF1dGhv cjogUmFtYW5hIFJhZGhha3Jpc2huYW4gPHJhbWFuYS5yYWRoYWtyaXNobmFuQGFybS5jb20+Ci1E YXRlOiAgIFRodSBNYXkgMjIgMTY6MDc6MjAgMjAxNCArMDEwMAotCi0gICAgSW5jbHVkZSBhc20v cHRyYWNlLmggaW4gYWFyY2g2NC1saW51eC1uYXQuYwotICAgIAotICAgIEEgcmVjZW50IGNoYW5n ZSB0byBnbGliYyByZW1vdmVkIGFzbS9wdHJhY2UuaCBmcm9tIHVzZXIuaCBmb3IKLSAgICBBQXJj aDY0LiBUaGlzIG1lYW50IHRoYXQgY3Jvc3MtbmF0aXZlIGJ1aWxkcyBvZiBnZGIgdXNpbmcgdHJ1 bmsKLSAgICBnbGliYyBicm9rZSBiZWNhdXNlIGFhcmNoNjQtbGludXgtbmF0LmMgYmVjYXVzZSB1 c2VyX2h3ZGVidWdfc3RhdGUKLSAgICBjb3VsZG4ndCBiZSBmb3VuZC4KLSAgICAKLSAgICBGaXhl ZCBieSBpbmNsdWRpbmcgYXNtL3B0cmFjZS5oIGxpa2Ugb3RoZXIgcG9ydHMuCi0gICAgCi0gICAg MjAxNC0wNS0yMiAgUmFtYW5hIFJhZGhha3Jpc2huYW4gIDxyYW1hbmEucmFkaGFrcmlzaG5hbkBh cm0uY29tPgotICAgIAotICAgICAgICAgICAqIGFhcmNoNjQtbGludXgtbmF0LmMgKGFzbS9wdHJh Y2UuaCk6IEluY2x1ZGUuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VM b2cKLSMjIC0xLDUgKzEsOSBAQAotIDIwMTQtMDUtMjIgIFJhbWFuYSBSYWRoYWtyaXNobmFuICA8 cmFtYW5hLnJhZGhha3Jpc2huYW5AYXJtLmNvbT4KKyAgIC8qIFdlIHNob3VsZCBoYXZlIGFscmVh ZHkgc3RvcHBlZCByZWNvcmRpbmcuCisgICAgICBUZWFyIGRvd24gYnRyYWNlIGluIGNhc2Ugd2Ug aGF2ZSBub3QuICAqLworLSAgQUxMX1RIUkVBRFMgKHRwKQorKyAgQUxMX05PTl9FWElURURfVEhS RUFEUyAodHApCisgICAgIGJ0cmFjZV90ZWFyZG93biAodHApOworIH0KICAKLSsJKiBhYXJjaDY0 LWxpbnV4LW5hdC5jIChhc20vcHRyYWNlLmgpOiBJbmNsdWRlLgotKwotKzIwMTQtMDUtMjIgIFJh bWFuYSBSYWRoYWtyaXNobmFuICA8cmFtYW5hLnJhZGhha3Jpc2huYW5AYXJtLmNvbT4KLSsKLSAJ KiBNQUlOVEFJTkVSUyAoV3JpdGUgQWZ0ZXIgQXBwcm92YWwpOiBNb3ZlIHNlbGYgYmFjayBmcm9t Ci0gCXBhcGVyIHRyYWlsLgorQEAgLTgzNSw3ICs4MzUsNyBAQCByZWNvcmRfYnRyYWNlX2lzX3Jl cGxheWluZyAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYpCisgeworICAgc3RydWN0IHRocmVhZF9p bmZvICp0cDsKICAKLS0tLSBhL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvYWFy Y2g2NC1saW51eC1uYXQuYwotQEAgLTMzLDYgKzMzLDcgQEAKKy0gIEFMTF9USFJFQURTICh0cCkK KysgIEFMTF9OT05fRVhJVEVEX1RIUkVBRFMgKHRwKQorICAgICBpZiAoYnRyYWNlX2lzX3JlcGxh eWluZyAodHApKQorICAgICAgIHJldHVybiAxOwogIAotICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+ Ci0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KK0BA IC0xNTIyLDcgKzE1MjIsNyBAQCByZWNvcmRfYnRyYWNlX3Jlc3VtZSAoc3RydWN0IHRhcmdldF9v cHMgKm9wcywgcHRpZF90IHB0aWQsIGludCBzdGVwLAogIAotICNpbmNsdWRlICJncmVnc2V0Lmgi CisgICAvKiBTdG9wIHJlcGxheWluZyBvdGhlciB0aHJlYWRzIGlmIHRoZSB0aHJlYWQgdG8gcmVz dW1lIGlzIG5vdCByZXBsYXlpbmcuICAqLworICAgaWYgKCFidHJhY2VfaXNfcmVwbGF5aW5nICh0 cCkgJiYgZXhlY3V0aW9uX2RpcmVjdGlvbiAhPSBFWEVDX1JFVkVSU0UpCistICAgIEFMTF9USFJF QURTIChvdGhlcikKKysgICAgQUxMX05PTl9FWElURURfVEhSRUFEUyAob3RoZXIpCisgICAgICAg cmVjb3JkX2J0cmFjZV9zdG9wX3JlcGxheWluZyAob3RoZXIpOwogIAotY29tbWl0IGU5ZGFlMDVl OWMzMmVmZGE5NzI0MzMwYzZkNWFkZTNjYTg0ODU5MWQKLUF1dGhvcjogUmFtYW5hIFJhZGhha3Jp c2huYW4gPHJhbWFuYS5yYWRoYWtyaXNobmFuQGFybS5jb20+Ci1EYXRlOiAgIEZyaSBNYXkgMjMg MDk6MDE6MTQgMjAxNCArMDEwMAotCi0gICAgSW5jbHVkZSBhc20vcHRyYWNlLmggZm9yIGxpbnV4 LWFhcmNoNjQtbG93LmMKLSAgICAKLSAgICBBIHJlY2VudCBjaGFuZ2UgdG8gZ2xpYmMgcmVtb3Zl ZCBhc20vcHRyYWNlLmggZnJvbSB1c2VyLmggZm9yIEFBcmNoNjQuCi0gICAgVGhpcyBtZWFudCB0 aGF0IGNyb3NzLW5hdGl2ZSBidWlsZHMgb2YgZ2Ric2VydmVyIHVzaW5nIHRydW5rIGdsaWJjIGJy b2tlCi0gICAgYmVjYXVzZSBsaW51eC1hYXJjaDY0LWxvdy5jIGJlY2F1c2UgdXNlcl9od2RlYnVn X3N0YXRlIGNvdWxkbid0IGJlIGZvdW5kLgotICAgIAotICAgIFRoaXMgaXMgbGlrZSBjb21taXQg IzAzNmNkMzgxODJiZGUzMmQ4Mjk3YjYzMGNkNWM4NjFkNTNiODk0OWUKLSAgICAKLSAgICAyMDE0 LTA1LTIzICBSYW1hbmEgUmFkaGFrcmlzaG5hbiAgPHJhbWFuYS5yYWRoYWtyaXNobmFuQGFybS5j b20+Ci0gICAgCi0gICAgICAgICAgICAqIGxpbnV4LWFhcmNoNjQtbG93LmMgKGFzbS9wdHJhY2Uu aCk6IEluY2x1ZGUuCi0KLSMjIyBhL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIv Z2Ric2VydmVyL0NoYW5nZUxvZwotIyMgLTEsMyArMSw3IEBACi0rMjAxNC0wNS0yMyAgUmFtYW5h IFJhZGhha3Jpc2huYW4gIDxyYW1hbmEucmFkaGFrcmlzaG5hbkBhcm0uY29tPgorICAgLyogQXMg bG9uZyBhcyB3ZSdyZSBub3QgcmVwbGF5aW5nLCBqdXN0IGZvcndhcmQgdGhlIHJlcXVlc3QuICAq LworQEAgLTE1NzIsNyArMTU3Miw3IEBAIHJlY29yZF9idHJhY2VfZmluZF90aHJlYWRfdG9fbW92 ZSAocHRpZF90IHB0aWQpCisgICAgIHJldHVybiB0cDsKKyAKKyAgIC8qIE90aGVyd2lzZSwgZmlu ZCBvbmUgb3RoZXIgdGhyZWFkIHRoYXQgaGFzIGJlZW4gcmVzdW1lZC4gICovCistICBBTExfVEhS RUFEUyAodHApCisrICBBTExfTk9OX0VYSVRFRF9USFJFQURTICh0cCkKKyAgICAgaWYgKCh0cC0+ YnRyYWNlLmZsYWdzICYgQlRIUl9NT1ZFKSAhPSAwKQorICAgICAgIHJldHVybiB0cDsKKyAKK0BA IC0xNzc3LDcgKzE3NzcsNyBAQCByZWNvcmRfYnRyYWNlX3dhaXQgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMsIHB0aWRfdCBwdGlkLAorIAorICAgLyogU3RvcCBhbGwgb3RoZXIgdGhyZWFkcy4gKi8K KyAgIGlmICghbm9uX3N0b3ApCistICAgIEFMTF9USFJFQURTIChvdGhlcikKKysgICAgQUxMX05P Tl9FWElURURfVEhSRUFEUyAob3RoZXIpCisgICAgICAgb3RoZXItPmJ0cmFjZS5mbGFncyAmPSB+ QlRIUl9NT1ZFOworIAorICAgLyogU3RhcnQgcmVjb3JkIGhpc3RvcmllcyBhbmV3IGZyb20gdGhl IGN1cnJlbnQgcG9zaXRpb24uICAqLworZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9y ZW1vdGUuYworaW5kZXggNjkxNWRkOC4uYjUzMThmMSAxMDA2NDQKKy0tLSBhL2dkYi9yZW1vdGUu YworKysrIGIvZ2RiL3JlbW90ZS5jCitAQCAtNDYyNiw3ICs0NjI2LDcgQEAgYXBwZW5kX3BlbmRp bmdfdGhyZWFkX3Jlc3VtcHRpb25zIChjaGFyICpwLCBjaGFyICplbmRwLCBwdGlkX3QgcHRpZCkK KyB7CisgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKKyAKKy0gIEFMTF9USFJFQURTICh0 aHJlYWQpCisrICBBTExfTk9OX0VYSVRFRF9USFJFQURTICh0aHJlYWQpCisgICAgIGlmIChwdGlk X21hdGNoICh0aHJlYWQtPnB0aWQsIHB0aWQpCisgCSYmICFwdGlkX2VxdWFsIChpbmZlcmlvcl9w dGlkLCB0aHJlYWQtPnB0aWQpCisgCSYmIHRocmVhZC0+c3VzcGVuZC5zdG9wX3NpZ25hbCAhPSBH REJfU0lHTkFMXzAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3RocmVh ZC1leGVjbC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHAK K2luZGV4IGQ4MzdmZTQuLjE0Yjk2ZDIgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3RocmVhZC1leGVjbC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv dGhyZWFkLWV4ZWNsLmV4cAorQEAgLTI4LDE5ICsyOCwzMyBAQCBpZiB7W2dkYl9jb21waWxlX3B0 aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCisg ICAgIHJldHVybiAtMQorIH0KKyAKKy1jbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KKy0KKy1ydW50 b19tYWluCistCistIyBHZXQgb3Vyc2VsdmVzIHRvIHRoZSB0aHJlYWQgdGhhdCBleGVjcworLWdk Yl9icmVha3BvaW50ICJ0aHJlYWRfZXhlY2xlciIKKy1nZGJfdGVzdCAiY29udGludWUiICIuKnRo cmVhZF9leGVjbGVyLioiICJjb250aW51ZSB0byB0aHJlYWQgc3RhcnQiCistCistIyBOb3cgc2V0 IGEgYnJlYWtwb2ludCBhdCBgbWFpbicsIGFuZCBzdGVwIG92ZXIgdGhlIGV4ZWNsIGNhbGwuICBU aGUKKy0jIGJyZWFrcG9pbnQgYXQgbWFpbiBzaG91bGQgYmUgcmVhY2hlZC4gIEdEQiBzaG91bGQg bm90IHRyeSB0byByZXZlcnQKKy0jIGJhY2sgdG8gdGhlIG9sZCB0aHJlYWQgZnJvbSB0aGUgb2xk IGltYWdlIGFuZCByZXN1bWUgc3RlcHBpbmcgaXQKKy0jIChzaW5jZSBpdCBpcyBnb25lKS4KKy1n ZGJfYnJlYWtwb2ludCAibWFpbiIKKy1nZGJfdGVzdCAibmV4dCIgIi4qbWFpbi4qIiAiZ2V0IHRv IG1haW4gaW4gbmV3IGltYWdlIgorKyMgUnVuIHRoZSB0ZXN0IHByb3Blci4gIFNDSEVETE9DSyBz cGVjaWZpZXMgd2hhdCBzY2hlZHVsZXItbG9ja2luZworKyMgc2hvdWxkIGJlIHNldCB0by4KKysK Kytwcm9jIGRvX3Rlc3QgeyBzY2hlZGxvY2sgfSB7CisrICAgIGdsb2JhbCBiaW5maWxlCisrCisr ICAgIHdpdGhfdGVzdF9wcmVmaXggInNjaGVkbG9jayAkc2NoZWRsb2NrIiB7CisrCWNsZWFuX3Jl c3RhcnQgJHtiaW5maWxlfQogKwotKwkqIGxpbnV4LWFhcmNoNjQtbG93LmMgKGFzbS9wdHJhY2Uu aCk6IEluY2x1ZGUuCisrCWlmICFbcnVudG9fbWFpbl0geworKwkgICAgcmV0dXJuIDAKKysJfQog KwotIDIwMTQtMDUtMjEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKysJIyBHZXQgb3Vyc2VsdmVzIHRvIHRoZSB0aHJlYWQgdGhhdCBleGVjcy4KKysJZ2RiX2Jy ZWFrcG9pbnQgInRocmVhZF9leGVjbGVyIgorKwlnZGJfdGVzdCAiY29udGludWUiICIuKnRocmVh ZF9leGVjbGVyLioiICJjb250aW51ZSB0byB0aHJlYWQgc3RhcnQiCisrCisrCSMgTm93IHNldCBh IGJyZWFrcG9pbnQgYXQgYG1haW4nLCBhbmQgc3RlcCBvdmVyIHRoZSBleGVjbCBjYWxsLiAgVGhl CisrCSMgYnJlYWtwb2ludCBhdCBtYWluIHNob3VsZCBiZSByZWFjaGVkLiAgR0RCIHNob3VsZCBu b3QgdHJ5IHRvIHJldmVydAorKwkjIGJhY2sgdG8gdGhlIG9sZCB0aHJlYWQgZnJvbSB0aGUgb2xk IGltYWdlIGFuZCByZXN1bWUgc3RlcHBpbmcgaXQKKysJIyAoc2luY2UgaXQgaXMgZ29uZSkuCisr CWdkYl9icmVha3BvaW50ICJtYWluIgorKwlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzY2hlZHVs ZXItbG9ja2luZyAkc2NoZWRsb2NrIgorKwlnZGJfdGVzdCAibmV4dCIgIi4qbWFpbi4qIiAiZ2V0 IHRvIG1haW4gaW4gbmV3IGltYWdlIgorKyAgICB9CisrfQogIAotIAlGaXggVExTIGFjY2VzcyBm b3IgLXN0YXRpYyAtcHRocmVhZC4KLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1s b3cuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hYXJjaDY0LWxvdy5jCi1AQCAtMjYsNiAr MjYsNyBAQAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8c3lzL3VzZXIuaD4KLSAj aW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gI2luY2x1 ZGUgPHN5cy91aW8uaD4KKy1yZXR1cm4gMAorK2ZvcmVhY2ggc2NoZWRsb2NrIHsib2ZmIiAic3Rl cCIgIm9uIn0geworKyAgICBkb190ZXN0ICRzY2hlZGxvY2sKKyt9CitkaWZmIC0tZ2l0IGEvZ2Ri L3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCitpbmRleCA3YmM1MjcxLi41MzIxNDlkIDEwMDY0NAor LS0tIGEvZ2RiL3RocmVhZC5jCisrKysgYi9nZGIvdGhyZWFkLmMKK0BAIC0xMjQzLDcgKzEyNDMs NyBAQCB0aHJlYWRfYXBwbHlfYWxsX2NvbW1hbmQgKGNoYXIgKmNtZCwgaW50IGZyb21fdHR5KQor ICAgICAgIHRhX2NsZWFudXAudHBfYXJyYXkgPSB0cF9hcnJheTsKKyAgICAgICB0YV9jbGVhbnVw LmNvdW50ID0gdGM7CiAgCi0gI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2UuaCIKKy0gICAgICBB TExfVEhSRUFEUyAodHApCisrICAgICAgQUxMX05PTl9FWElURURfVEhSRUFEUyAodHApCisgICAg ICAgICB7CisgICAgICAgICAgIHRwX2FycmF5W2ldID0gdHA7CisgICAgICAgICAgIHRwLT5yZWZj b3VudCsrOworLS0gCisxLjkuMworCisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTAxb2Yy My5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMDFvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjBiMzc4YTQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVs LTAxb2YyMy5wYXRjaApAQCAtMCwwICsxLDI3MCBAQAorU3ViamVjdDogW1BBVENIIDAxLzIzXSBk d2FyZjogYWRkIGR3YXJmMyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIG9wY29kZQorTWVzc2Fn ZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0yLWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVs LmNvbT4KKworVGhlIG9wY29kZSBwdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBiZWlu ZyBldmFsdWF0ZWQuIFRoZSBzZW1hbnRpYyBpcworZXF1aXZhbGVudCB0byB0aGUgaW1wbGljaXQg cHVzaCBvZiB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgZGF0YSBtZW1iZXIgbG9jYXRpb24uCisKKzIw MTQtMDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorICAg ICAgICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKKwkqIGR3YXJm MmV4cHIuYyAoZXhlY3V0ZV9zdGFja19vcCkgPERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M+OiBO ZXcgY2FzZS4KKwkqIGR3YXJmMmV4cHIuaCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5j cykKKwk8RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcz46IE5ldyBmdW5jdGlvbiBwb2ludGVyIGdl dF9vYmplY3RfYWRkci4KKwkqIGR3YXJmMmxvYy5jIChzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbik6 IEFkZCBvYmpfYWRkcmVzcy4KKwkoZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIpOiBOZXcgZnVuY3Rp b24uCisJKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MpOiBBZGQKKwlkd2FyZl9leHBy X2dldF9vYmpfYWRkciB0byBkd2FyZl9leHByX2N0eF9mdW5jcy4KKwkoZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjX2Z1bGwpOiBJbml0aWFsaXplIGJhdG9uLm9ial9hZGRyZXNzLgorCShkd2FyZjJf bG9jZXhwcl9iYXRvbl9ldmFsKTogU2V0IGJhdG9uLm9ial9hZGRyZXNzIHRvIGFkZHIuCisJKG5l ZWRzX2dldF9vYmpfYWRkcik6IE5ldyBmdW5jdGlvbi4KKwkoc3RydWN0IGR3YXJmX2V4cHJfY29u dGV4dF9mdW5jcyk6IEFkZCBuZWVkc19nZXRfb2JqX2FkZHIgdG8KKwluZWVkc19mcmFtZV9jdHhf ZnVuY3MuCisKK0NoYW5nZS1JZDogSWVkOWUxYmE2MzJlOGQzNWQwZWMwMGNjODMyYjk2ZDQzMjQ0 OWZkODIKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNv bT4KKy0tLQorIGdkYi9kd2FyZjJleHByLmMgfCAgICA2ICsrKysrKworIGdkYi9kd2FyZjJleHBy LmggfCAgICA0IC0tLS0KKyBnZGIvZHdhcmYybG9jLmMgIHwgICA0MSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQorIGdkYi9kd2FyZjJsb2MuaCAgfCAgICAxICsKKyBn ZGIvZ2RidHlwZXMuYyAgIHwgICAxNiArKysrKysrKy0tLS0tLS0tCisgNSBmaWxlcyBjaGFuZ2Vk LCA1MiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL2R3YXJmMmV4cHIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAx NDA2MTMub3JpZy9nZGIvZHdhcmYyZXhwci5jCTIwMTQtMDYtMTQgMTU6MDI6MjEuNDg0NTUxMTMy ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYyZXhwci5jCTIwMTQtMDYt MTQgMTU6MDI6NTIuMjk5NTc1MzY5ICswMjAwCitAQCAtMTQ3OCw2ICsxNDc4LDEyIEBAIGV4ZWN1 dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnQKKyAJICB9CisgCSAgYnJlYWs7Cisg CisrICAgICAgICBjYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6CisrCSAgLyogUmV0dXJu IHRoZSBhZGRyZXNzIG9mIHRoZSBvYmplY3Qgd2UgYXJlIGN1cnJlbnRseSBvYnNlcnZpbmcuICAq LworKwkgIHJlc3VsdCA9IChjdHgtPmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJlc3MpIChjdHgtPmJh dG9uKTsKKysJICByZXN1bHRfdmFsID0gdmFsdWVfZnJvbV91bG9uZ2VzdCAoYWRkcmVzc190eXBl LCByZXN1bHQpOworKwkgIGJyZWFrOworKworIAlkZWZhdWx0OgorIAkgIGVycm9yIChfKCJVbmhh bmRsZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7CisgCX0KK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJleHByLmgKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmV4cHIuaAkyMDE0LTA2LTE0IDE1OjAyOjIx LjQ4NTU1MTEzMyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMmV4cHIu aAkyMDE0LTA2LTE0IDE1OjAyOjUyLjI5OTU3NTM2OSArMDIwMAorQEAgLTg0LDEyICs4NCw4IEBA IHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKKyAgICAgIFRoaXMgY2FuIHRocm93IGFu IGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiAgKi8KKyAgIENPUkVfQURE UiAoKmdldF9hZGRyX2luZGV4KSAodm9pZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRleCk7Cisg CistI2lmIDAKKy0gIC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICAqLworLQorICAgLyogUmV0dXJu IHRoZSBgb2JqZWN0IGFkZHJlc3MnIGZvciBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8K KyAgIENPUkVfQUREUiAoKmdldF9vYmplY3RfYWRkcmVzcykgKHZvaWQgKmJhdG9uKTsKKy0jZW5k aWYKKyB9OworIAorIC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVlLiAgKi8KK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAxNTowMjoyMS40ODc1 NTExMzUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwkyMDE0 LTA2LTE0IDE1OjAyOjUyLjMwMTU3NTM3MCArMDIwMAorQEAgLTMwNiw2ICszMDYsNyBAQCBzdHJ1 Y3QgZHdhcmZfZXhwcl9iYXRvbgorIHsKKyAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKKyAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKKysgIENPUkVfQUREUiBvYmpfYWRk cmVzczsKKyB9OworIAorIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzYy4gICovCitAQCAtMTIwOSw2ICsxMjEwLDcgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJm X3JlZ19lbnRyeV92YWx1ZSAocworIAorICAgYmF0b25fbG9jYWwuZnJhbWUgPSBjYWxsZXJfZnJh bWU7CisgICBiYXRvbl9sb2NhbC5wZXJfY3UgPSBjYWxsZXJfcGVyX2N1OworKyAgYmF0b25fbG9j YWwub2JqX2FkZHJlc3MgPSAwOworIAorICAgc2F2ZWRfY3R4LmdkYmFyY2ggPSBjdHgtPmdkYmFy Y2g7CisgICBzYXZlZF9jdHguYWRkcl9zaXplID0gY3R4LT5hZGRyX3NpemU7CitAQCAtMTIzOCw2 ICsxMjQwLDIyIEBAIGR3YXJmX2V4cHJfZ2V0X2FkZHJfaW5kZXggKHZvaWQgKmJhdG9uLAorICAg cmV0dXJuIGR3YXJmMl9yZWFkX2FkZHJfaW5kZXggKGRlYmF0b24tPnBlcl9jdSwgaW5kZXgpOwor IH0KKyAKKysvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZ2V0X29iamVjdF9hZGRyZXNzLiBSZXR1 cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIFZMQQorKyAgIG9iamVjdC4gICovCisrCisrc3RhdGljIENP UkVfQUREUgorK2R3YXJmX2V4cHJfZ2V0X29ial9hZGRyICh2b2lkICpiYXRvbikKKyt7CisrICBz dHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiAqZGViYXRvbiA9IGJhdG9uOworKworKyAgZ2RiX2Fzc2Vy dCAoZGViYXRvbiAhPSBOVUxMKTsKKysKKysgIGlmIChkZWJhdG9uLT5vYmpfYWRkcmVzcyA9PSAw KQorKyAgICBlcnJvciAoXygiTG9jYXRpb24gYWRkcmVzcyBpcyBub3Qgc2V0LiIpKTsKKysKKysg IHJldHVybiBkZWJhdG9uLT5vYmpfYWRkcmVzczsKKyt9CisrCisgLyogVkFMVUUgbXVzdCBiZSBv ZiB0eXBlIGx2YWxfY29tcHV0ZWQgd2l0aCBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLiAgUGVyZm9y bQorICAgIHRoZSBpbmRpcmVjdCBtZXRob2Qgb24gaXQsIHRoYXQgaXMgdXNlIGl0cyBzdG9yZWQg dGFyZ2V0IHZhbHVlLCB0aGUgc29sZQorICAgIHB1cnBvc2Ugb2YgZW50cnlfZGF0YV92YWx1ZV9m dW5jcy4uICAqLworQEAgLTIyMDYsNyArMjIyNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0X2YKKyAgIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKKyAgIGR3YXJmX2V4 cHJfZ2V0X2Jhc2VfdHlwZSwKKyAgIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFs dWUsCistICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4CisrICBkd2FyZl9leHByX2dldF9hZGRy X2luZGV4LAorKyAgZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIKKyB9OworIAorIC8qIEV2YWx1YXRl IGEgbG9jYXRpb24gZGVzY3JpcHRpb24sIHN0YXJ0aW5nIGF0IERBVEEgYW5kIHdpdGggbGVuZ3Ro CitAQCAtMjIzNSw2ICsyMjU0LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0 cnVjdCB0eQorIAorICAgYmF0b24uZnJhbWUgPSBmcmFtZTsKKyAgIGJhdG9uLnBlcl9jdSA9IHBl cl9jdTsKKysgIGJhdG9uLm9ial9hZGRyZXNzID0gMDsKKyAKKyAgIGN0eCA9IG5ld19kd2FyZl9l eHByX2NvbnRleHQgKCk7CisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9l eHByX2NvbnRleHQgKGN0eCk7CitAQCAtMjQ0MCw2ICsyNDYwLDcgQEAgZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdAorIAorIHN0YXRpYyBpbnQKKyBkd2FyZjJfbG9jZXhw cl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24s CisrICAgICAgICAgQ09SRV9BRERSIGFkZHIsCisgCQkJICAgQ09SRV9BRERSICp2YWxwKQorIHsK KyAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKK0BAIC0yNDU1LDYgKzI0NzYsNyBA QCBkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QKKyAKKyAgIGJhdG9uLmZy YW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKKyAgIGJhdG9uLnBlcl9jdSA9IGRsYmF0 b24tPnBlcl9jdTsKKysgIGJhdG9uLm9ial9hZGRyZXNzID0gYWRkcjsKKyAKKyAgIG9iamZpbGUg PSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKGRsYmF0b24tPnBlcl9jdSk7CisgCitAQCAtMjQ5NSw3 ICsyNTE3LDggQEAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoY29uc3Qgc3RydWN0CisgLyog U2VlIGR3YXJmMmxvYy5oLiAgKi8KKyAKKyBpbnQKKy1kd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkg KGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENPUkVfQUREUiAqdmFsdWUpCisrZHdh cmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBD T1JFX0FERFIgYWRkcmVzcywKKysgICAgICAgIENPUkVfQUREUiAqdmFsdWUpCisgeworICAgaWYg KHByb3AgPT0gTlVMTCkKKyAgICAgcmV0dXJuIDA7CitAQCAtMjUwNiw3ICsyNTI5LDcgQEAgZHdh cmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZAorICAgICAgIHsKKyAJY29uc3Qg c3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24gPSBwcm9wLT5kYXRhLmJhdG9uOwor IAorLQlpZiAoZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJhdG9uLT5sb2NleHByLCB2YWx1 ZSkpCisrCWlmIChkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsICgmYmF0b24tPmxvY2V4cHIsIGFk ZHJlc3MsIHZhbHVlKSkKKyAJICB7CisgCSAgICBpZiAoYmF0b24tPnJlZmVyZW5jZWRfdHlwZSkK KyAJICAgICAgeworQEAgLTI2NTcsNiArMjY4MCwxNSBAQCBuZWVkc19nZXRfYWRkcl9pbmRleCAo dm9pZCAqYmF0b24sIHVuc2lnCisgICByZXR1cm4gMTsKKyB9CisgCisrLyogRFdfT1BfcHVzaF9v YmplY3RfYWRkcmVzcyBoYXMgYSBmcmFtZSBhbHJlYWR5IHBhc3NlZCB0aHJ1LiAgKi8KKysKKytz dGF0aWMgQ09SRV9BRERSCisrbmVlZHNfZ2V0X29ial9hZGRyICh2b2lkICpiYXRvbikKKyt7Cisr ICAvKiBOb3RoaW5nIHRvIGRvLiAgKi8KKysgIHJldHVybiAxOworK30KKysKKyAvKiBWaXJ0dWFs IG1ldGhvZCB0YWJsZSBmb3IgZHdhcmYyX2xvY19kZXNjX25lZWRzX2ZyYW1lIGJlbG93LiAgKi8K KyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBuZWVkc19m cmFtZV9jdHhfZnVuY3MgPQorQEAgLTI2NzEsNyArMjcwMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2YKKyAgIG5lZWRzX2ZyYW1lX2R3YXJmX2NhbGwsCisgICBO VUxMLAkJCQkvKiBnZXRfYmFzZV90eXBlICovCisgICBuZWVkc19kd2FyZl9yZWdfZW50cnlfdmFs dWUsCistICBuZWVkc19nZXRfYWRkcl9pbmRleAorKyAgbmVlZHNfZ2V0X2FkZHJfaW5kZXgsCisr ICBuZWVkc19nZXRfb2JqX2FkZHIKKyB9OworIAorIC8qIFJldHVybiBub24temVybyBpZmYgdGhl IGxvY2F0aW9uIGV4cHJlc3Npb24gYXQgREFUQSAobGVuZ3RoIFNJWkUpCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6MDI6MjEuNDg4NTUx MTM1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgJMjAxNC0w Ni0xNCAxNTowMjo1Mi4zMDE1NzUzNzAgKzAyMDAKK0BAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCB2 YWx1ZSAqZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjICgKKyAgICBpbnRvIFZBTFVFLCBvdGhlcndp c2UgcmV0dXJucyAwLiAgKi8KKyAKKyBpbnQgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25z dCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorKwkJCSAgICAgIENPUkVfQUREUiBhZGRyZXNz LAorIAkJCSAgICAgIENPUkVfQUREUiAqdmFsdWUpOworIAorIENPUkVfQUREUiBkd2FyZjJfcmVh ZF9hZGRyX2luZGV4IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjAyOjIxLjQ5 MDU1MTEzNyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmMJMjAx NC0wNi0xNCAxNTowMzozNy45MTk2MDk5NTUgKzAyMDAKK0BAIC0xNjU3LDcgKzE2NTcsNyBAQCBp c19keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgIG9mIHRoYXQgdHlwZS4gICov CisgCisgc3RhdGljIHN0cnVjdCB0eXBlICoKKy1yZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVj dCB0eXBlICpkeW5fcmFuZ2VfdHlwZSkKKytyZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0 eXBlICpkeW5fcmFuZ2VfdHlwZSwgQ09SRV9BRERSIGFkZHIpCisgeworICAgQ09SRV9BRERSIHZh bHVlOworICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlOworQEAgLTE2NjgsNyArMTY2 OCw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KKyAgIGdkYl9h c3NlcnQgKFRZUEVfQ09ERSAoZHluX3JhbmdlX3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSk7Cisg CisgICBwcm9wID0gJlRZUEVfUkFOR0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5sb3c7CistICBp ZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCAmdmFsdWUpKQorKyAgaWYgKGR3YXJm Ml9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKKyAgICAgeworICAgICAg IGxvd19ib3VuZC5raW5kID0gUFJPUF9DT05TVDsKKyAgICAgICBsb3dfYm91bmQuZGF0YS5jb25z dF92YWwgPSB2YWx1ZTsKK0BAIC0xNjgwLDcgKzE2ODAsNyBAQCByZXNvbHZlX2R5bmFtaWNfcmFu Z2UgKHN0cnVjdCB0eXBlICpkeW5fCisgICAgIH0KKyAKKyAgIHByb3AgPSAmVFlQRV9SQU5HRV9E QVRBIChkeW5fcmFuZ2VfdHlwZSktPmhpZ2g7CistICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3Bl cnR5IChwcm9wLCAmdmFsdWUpKQorKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJv cCwgYWRkciwgJnZhbHVlKSkKKyAgICAgeworICAgICAgIGhpZ2hfYm91bmQua2luZCA9IFBST1Bf Q09OU1Q7CisgICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOworQEAgLTE3 MDcsNyArMTcwNyw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8K KyAgICBvZiB0aGUgYXNzb2NpYXRlZCBhcnJheS4gICovCisgCisgc3RhdGljIHN0cnVjdCB0eXBl ICoKKy1yZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlKQorK3Jlc29sdmVf ZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKQorIHsKKyAg IENPUkVfQUREUiB2YWx1ZTsKKyAgIHN0cnVjdCB0eXBlICplbHRfdHlwZTsKK0BAIC0xNzE4LDEy ICsxNzE4LDEyIEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKKyAK KyAgIGVsdF90eXBlID0gdHlwZTsKKyAgIHJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X0lOREVYX1RZUEUgKGVsdF90eXBlKSk7CistICByYW5nZV90eXBlID0gcmVzb2x2ZV9keW5hbWlj X3JhbmdlIChyYW5nZV90eXBlKTsKKysgIHJhbmdlX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFu Z2UgKHJhbmdlX3R5cGUsIGFkZHIpOworIAorICAgYXJ5X2RpbSA9IGNoZWNrX3R5cGVkZWYgKFRZ UEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7CisgCisgICBpZiAoYXJ5X2RpbSAhPSBOVUxMICYm IFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQorLSAgICBlbHRfdHlwZSA9 IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKyAgICBl bHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSks IGFkZHIpOworICAgZWxzZQorICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp OworIAorQEAgLTE4NTMsMTEgKzE4NTMsMTEgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlLAorIAl9CisgCisgICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CistCXJl c29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHR5cGUpOworKwlyZXNvbHZlZF90 eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5ICh0eXBlLCBhZGRyKTsKKyAJYnJlYWs7CisgCisg ICAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6CistCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5 bmFtaWNfcmFuZ2UgKHR5cGUpOworKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3Jh bmdlICh0eXBlLCBhZGRyKTsKKyAJYnJlYWs7CisgCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9O OgoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDJvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRl bC0wMm9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5N2Vj ZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMDJvZjIzLnBhdGNoCkBAIC0wLDAg KzEsMTkyIEBACitTdWJqZWN0OiBbUEFUQ0ggMDIvMjNdIGR3YXJmOiBhZGQgRFdfQVRfZGF0YV9s b2NhdGlvbiBzdXBwb3J0CitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTMtZ2l0LXNlbmQt ZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitBbiBvYmplY3QgbWlnaHQgaGF2ZSBhIGRl c2NyaXB0b3IgcHJvY2VlZGluZyB0aGUgYWN0dWFsIHZhbHVlLgorVG8gcG9pbnQgdGhlIGRlYnVn Z2VyIHRvIHRoZSBhY3R1YWxseSB2YWx1ZSBvZiBhbiBvYmplY3QKK0RXX0FUX2RhdGFfbG9jYXRp b24gaXMgdXNlZCBmb3IuIEZvciBleGFtcGxlIHRoZSBjb21waWxlIG1heQorZW1pdCBmb3IgdGhp cyBlbnRpdHk6CisKKyAgMXwgaW50IGZvb1tOXTsKKwordGhlIGZvbGxvd2luZyBkZXNjcmlwdG9y OgorCitzdHJ1Y3QgYXJyYXkgeworICBzaXplX3Qgc2l6ZTsKKyAgdm9pZCogIGRhdGE7IC8vIERX X0FUX2RhdGFfbG9jYXRpb24gZGVzY3JpYmVzIHRoaXMgbG9jYXRpb24KK30KKworVGhpcyBhbGxv d3MgR0RCIHRvIHByaW50IHRoZSBhY3R1YWwgZGF0YSBvZiBhbiB0eXBlLgorCisyMDE0LTA1LTI4 ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKyAgICAgICAgICAg IEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCisJKiBkd2FyZjJyZWFkLmMg KHNldF9kaWVfdHlwZSk6IFBhcnNlIGFuZCBzYXZlIERXX0FUX2RhdGFfbG9jYXRpb24KKwlhdHRy aWJ1dGUuCisJKiBnZGJ0eXBlcy5jIChpc19keW5hbWljX3R5cGUpOiBDb25zaWRlciBhIHR5cGUg YmVpbmcgZHluYW1pYyBpZgorCXRoZSBkYXRhIGxvY2F0aW9uIGhhcyBub3QgeWV0IGJlZW4gcmVz b2x2ZWQuCisJKHJlc29sdmVfZHluYW1pY190eXBlKTogRXZhbHVhdGUgZGF0YSBsb2NhdGlvbiBi YXRvbgorCWlmIHByZXNlbnQgYW5kIHNhdmUgaXRzIHZhbHVlLgorCSogZ2RidHlwZXMuaCA8bWFp bl90eXBlPjogQWRkIGRhdGFfbG9jYXRpb24uCisJKFRZUEVfREFUQV9MT0NBVElPTik6IE5ldyBt YWNyby4KKwkoVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIpOiBOZXcgbWFjcm8uCisJKFRZUEVfREFU QV9MT0NBVElPTl9JU19BRERSRVNTKTogTmV3IG1hY3JvLgorCSogdmFsdWUuYzogSW5jbHVkZSBk d2FyZjJsb2MuaC4KKwkodmFsdWVfZmV0Y2hfbGF6eSk6IFVzZSBkYXRhIGxvY2F0aW9uIGFkZHJl cyB0byByZWFkIHZhbHVlIGZyb20KKwltZW1vcnkuCisJKGNvZXJjZV9yZWYpOiBDb25zdHJ1Y3Qg bmV3IHZhbHVlIGZyb20gZGF0YSBsb2NhdGlvbi4KKworQ2hhbmdlLUlkOiBJYzYzM2ZhMTI1ZWZk YjVlNDM4MjA0ZTRmODBiYjNhMWM5Nzc1OGIxMgorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2Vs bCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL2R3YXJmMnJlYWQuYyB8ICAgMTUg KysrKysrKysrKysrKysrCisgZ2RiL2dkYnR5cGVzLmMgICB8ICAgMjkgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0KKyBnZGIvZ2RidHlwZXMuaCAgIHwgICAxNCArKysrKysrKysrKysrKwor IGdkYi92YWx1ZS5jICAgICAgfCAgICA4ICsrKysrKystCisgNCBmaWxlcyBjaGFuZ2VkLCA2MyBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxNC0wNi0xNCAxNTowNjowMC44MzQ3MTQ0MDkgKzAyMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFkLmMJMjAxNC0wNi0xNCAxNTow NjowOC4zMjY3MTk3NTMgKzAyMDAKK0BAIC0yMTY0Miw2ICsyMTY0Miw3IEBAIHNldF9kaWVfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnUKKyB7CisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGN1LT5vYmpmaWxlOworKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAKKyAgIC8qIEZv ciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmljIGRhdGEgaXMgYWx3 YXlzCisgICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4gIFRoZXJlIGFyZSBh IGZldyB0eXBlcyB3aGVyZQorQEAgLTIxNjU2LDYgKzIxNjU3LDIwIEBAIHNldF9kaWVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnUKKyAgICAgICAmJiAhSEFWRV9HTkFUX0FVWF9JTkZP ICh0eXBlKSkKKyAgICAgSU5JVF9HTkFUX1NQRUNJRklDICh0eXBlKTsKKyAKKysgIC8qIFJlYWQg RFdfQVRfZGF0YV9sb2NhdGlvbiBhbmQgc2V0IGluIHR5cGUuICAqLworKyAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKKysgIGlmIChhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9w OworKworKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnBy b3ApKQorKwl7CisrCSAgVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQorKwkgICAgPSBvYnN0YWNr X2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKKysJICAq VFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSA9IHByb3A7CisrCX0KKysgICAgfQorKworICAgaWYg KGR3YXJmMl9wZXJfb2JqZmlsZS0+ZGllX3R5cGVfaGFzaCA9PSBOVUxMKQorICAgICB7CisgICAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID0KK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0 MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MDY6MDAuODM2NzE0NDEwICsw MjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1 OjEyOjI4Ljk2Mzk4NjM0NCArMDIwMAorQEAgLTE2MzQsNyArMTYzNCwxMiBAQCBpc19keW5hbWlj X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorIAkgICBvciB0aGUgZWxlbWVudHMgaXQgY29udGFp bnMgaGF2ZSBhIGR5bmFtaWMgY29udGVudHMuICAqLworIAlpZiAoaXNfZHluYW1pY190eXBlIChU WVBFX0lOREVYX1RZUEUgKHR5cGUpKSkKKyAJICByZXR1cm4gMTsKKy0JcmV0dXJuIGlzX2R5bmFt aWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKwllbHNlIGlmIChUWVBFX0RBVEFf TE9DQVRJT04gKHR5cGUpICE9IE5VTEwKKysgICAgICAgICAgJiYgKFRZUEVfREFUQV9MT0NBVElP Tl9LSU5EICh0eXBlKSA9PSBQUk9QX0xPQ0VYUFIKKysgICAgICAgICAgICAgIHx8IFRZUEVfREFU QV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9QX0xPQ0xJU1QpKQorKyAgICByZXR1cm4gMTsK KysgIGVsc2UKKysgICAgcmV0dXJuIGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpOworICAgICAgIH0KKyAKKyAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgorQEAgLTE4 MzAsNiArMTgzNSw4IEBAIHJlc29sdmVfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwK KyB7CisgICBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Cisg ICBzdHJ1Y3QgdHlwZSAqcmVzb2x2ZWRfdHlwZSA9IHR5cGU7CisrICBjb25zdCBzdHJ1Y3QgZHlu YW1pY19wcm9wICpwcm9wOworKyAgQ09SRV9BRERSIHZhbHVlOworIAorICAgaWYgKCFpc19keW5h bWljX3R5cGUgKHJlYWxfdHlwZSkpCisgICAgIHJldHVybiB0eXBlOworQEAgLTE4NjksNiArMTg3 NiwxOCBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCisgICAgICAg YnJlYWs7CisgICAgIH0KKyAKKysgIHR5cGUgPSByZXNvbHZlZF90eXBlOworKworKyAgLyogUmVz b2x2ZSBkYXRhX2xvY2F0aW9uIGF0dHJpYnV0ZS4gICovCisrICBwcm9wID0gVFlQRV9EQVRBX0xP Q0FUSU9OICh0eXBlKTsKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFk ZHIsICZ2YWx1ZSkpCisrICAgIHsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAodHlw ZSkgPSB2YWx1ZTsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPSBQUk9Q X0NPTlNUOworKyAgICB9CisrICBlbHNlCisrICAgIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkg PSBOVUxMOworKworICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7CisgfQorIAorQEAgLTQwNzgsNiAr NDA5NywxMyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCisgICAg ICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0VfREFUQSAodHlwZSk7 CisgICAgIH0KKyAKKysgIC8qIENvcHkgdGhlIGRhdGEgbG9jYXRpb24gaW5mb3JtYXRpb24uICAq LworKyAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkgIT0gTlVMTCkKKysgICAgeworKyAg ICAgIFRZUEVfREFUQV9MT0NBVElPTiAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3QgZHluYW1pY19wcm9wKSk7CisrICAgICAgKlRZUEVfREFUQV9MT0NBVElPTiAobmV3X3R5cGUp ID0gKlRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7CisrICAgIH0KKysKKyAgIC8qIENvcHkgcG9p bnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLworICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KQorICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0 MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTQtMDYtMTQgMTU6MDY6MDAuODM3NzE0NDExICsw MjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA2LTE0IDE1 OjA2OjA4LjMyODcxOTc1NCArMDIwMAorQEAgLTcyNSw2ICs3MjUsMTAgQEAgc3RydWN0IG1haW5f dHlwZQorIAorICAgICBzdHJ1Y3QgZnVuY190eXBlICpmdW5jX3N0dWZmOworICAgfSB0eXBlX3Nw ZWNpZmljOworKworKyAgLyogKiBJbmRpcmVjdGlvbiB0byBhY3R1YWwgZGF0YS4gICovCisrCisr ICBzdHJ1Y3QgZHluYW1pY19wcm9wICpkYXRhX2xvY2F0aW9uOworIH07CisgCisgLyogKiBBIGBg c3RydWN0IHR5cGUnJyBkZXNjcmliZXMgYSBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIGEgdHlwZSwg d2l0aAorQEAgLTEyMDQsNiArMTIwOCwxNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1 eF90eXBlIChzdHJ1CisgI2RlZmluZSBUWVBFX0xPV19CT1VORF9LSU5EKHJhbmdlX3R5cGUpIFwK KyAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LmtpbmQKKyAKKysvKiBBdHRyaWJ1 dGUgYWNjZXNzb3JzIGZvciBWTEEgc3VwcG9ydC4gICovCisrI2RlZmluZSBUWVBFX0RBVEFfTE9D QVRJT04odGhpc3R5cGUpIFwKKysgIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ZGF0YV9sb2Nh dGlvbgorKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0JBVE9OKHRoaXN0eXBlKSBcCisrICBU WVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+ZGF0YS5iYXRvbgorKyNkZWZpbmUgVFlQRV9E QVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFwKKysgIFRZUEVfREFUQV9MT0NBVElPTiAodGhp c3R5cGUpLT5kYXRhLmNvbnN0X3ZhbAorKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQo dGhpc3R5cGUpIFwKKysgIFRZUEVfREFUQV9MT0NBVElPTiAodGhpc3R5cGUpLT5raW5kCisrCisg LyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3IgRk9SVFJBTiBhcnJheXMuICAqLworIAorICNkZWZp bmUgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsdWUuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsdWUuYwkyMDE0LTA2LTE0IDE1OjA2OjAwLjgzODcx NDQxMiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHVlLmMJMjAxNC0wNi0x NCAxNTowNjowOC4zMjk3MTk3NTUgKzAyMDAKK0BAIC0zNjk5LDggKzM2OTksMTQgQEAgdmFsdWVf ZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCisgICAgIH0KKyAgIGVsc2UgaWYgKFZBTFVF X0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCisgICAgIHsKKy0gICAgICBDT1JFX0FERFIgYWRk ciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSk7CisrICAgICAgQ09SRV9BRERS IGFkZHI7CisrCisrICAgICAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkgIT0gTlVMTAor KwkgICYmIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9QX0NPTlNUKQorKwlh ZGRyID0gVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUpOworKyAgICAgIGVsc2UKKysJYWRk ciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisgCisgICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBl KSkKKyAJcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sgKHZhbCksCgpkaWZm IC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wM29mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTAzb2Yy My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjI4NGU5Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0wM29mMjMucGF0Y2gKQEAgLTAsMCArMSwxMTUg QEAKK1N1YmplY3Q6IFtQQVRDSCAwMy8yM10gdmxhOiBpbnRyb2R1Y2UgYWxsb2NhdGVkL2Fzc29j aWF0ZWQgZmxhZ3MKK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtNC1naXQtc2VuZC1lbWFp bC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKK0ZvcnRyYW4gOTAgcHJvdmlkZSB0eXBlcyB3aG9z ZSB2YWx1ZXMgbWF5IGJlIGR5bmFtaWNhbGx5CithbGxvY2F0ZWQgb3IgYXNzb2NpYXRlZCB3aXRo IGEgdmFyaWFibGUgdW5kZXIgZXhwbGljaXQKK3Byb2dyYW0gY29udHJvbC4gVGhlIHB1cnBvc2Ug b2YgdGhpcyBjb21taXQgaXMgdG8gcmVhZAorYWxsb2NhdGVkL2Fzc29jaWF0ZWQgRFdBUkYgdGFn cyBhbmQgc3RvcmUgdGhlbSB0byB0aGUKK21haW5fdHlwZS4KKworMjAxNC0wNS0yOCAgS2V2ZW4g Qm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisgICAgICAgICAgICBTYW5pbWlyIEFnb3Zp YyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKworCSogZHdhcmYycmVhZC5jIChzZXRfZGll X3R5cGUpOiBBZGQgcmVhZGluZyBvZgorCWFsbG9jYXRlZC9hc3NvY2lhdGVkIGZsYWdzLgorCSog Z2RidHlwZXMuaCAoc3RydWN0IG1haW5fdHlwZSk6IEFkZCBhbGxvY2F0ZWQvCisJYXNzb2NpYXRl ZCBkd2FyZjJfcHJvcCBhdHRyaWJ1dGVzLgorCShUWVBFX0FMTE9DQVRFRF9QUk9QKTogTmV3IG1h Y3JvLgorCShUWVBFX0FTU09DSUFURURfUFJPUCk6IE5ldyBtYWNyby4KKwkoVFlQRV9OT1RfQUxM T0NBVEVEKTogTmV3IG1hY3JvLgorCShUWVBFX05PVF9BU1NPQ0lBVEVEKTogTmV3IG1hY3JvLgor CitDaGFuZ2UtSWQ6IEk0NGE5ZTIxOTg2ZGUxNmRlMDYxYjNlYTJhNzY4OWYxYmZhMjhlZDJlCisK K1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CistLS0K KyBnZGIvZHdhcmYycmVhZC5jIHwgICAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisg Z2RiL2dkYnR5cGVzLmggICB8ICAgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZp bGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJy ZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCitpbmRleCA3YTBmN2Y0Li5lYTY2NjAyIDEwMDY0NAor LS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTIxNTE0 LDYgKzIxNTE0LDM0IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgICAmJiAhSEFWRV9HTkFU X0FVWF9JTkZPICh0eXBlKSkKKyAgICAgSU5JVF9HTkFUX1NQRUNJRklDICh0eXBlKTsKKyAKKysg IC8qIFJlYWQgRFdfQVRfYWxsb2NhdGVkIGFuZCBzZXQgaW4gdHlwZS4gICovCisrICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYWxsb2NhdGVkLCBjdSk7CisrICBpZiAoYXR0cl9mb3Jt X2lzX2Jsb2NrIChhdHRyKSkKKysgICAgeworKyAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3AgcHJv cDsKKysKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZw cm9wKSkKKysgICAgICAgIHsKKysgICAgICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSkK KysgICAgICAgICAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss IHNpemVvZiAocHJvcCkpOworKyAgICAgICAgICAqVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSkg PSBwcm9wOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAvKiBSZWFkIERXX0FUX2Fzc29jaWF0 ZWQgYW5kIHNldCBpbiB0eXBlLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9hc3NvY2lhdGVkLCBjdSk7CisrICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysg ICAgeworKyAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3AgcHJvcDsKKysKKysgICAgICBpZiAoYXR0 cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZwcm9wKSkKKysgICAgICAgIHsKKysg ICAgICAgICAgVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpCisrICAgICAgICAgICAgPSBvYnN0 YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKKysg ICAgICAgICAgKlRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKSA9IHByb3A7CisrICAgICAgICB9 CisrICAgIH0KKysKKyAgIC8qIFJlYWQgRFdfQVRfZGF0YV9sb2NhdGlvbiBhbmQgc2V0IGluIHR5 cGUuICAqLworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24s IGN1KTsKKyAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorZGlmZiAtLWdpdCBhL2dk Yi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IGM2ZDE0ZDIuLjUyZTYyMzMgMTAw NjQ0CistLS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKK0BAIC03MjYs NiArNzI2LDE4IEBAIHN0cnVjdCBtYWluX3R5cGUKKyAgIC8qICogSW5kaXJlY3Rpb24gdG8gYWN0 dWFsIGRhdGEuICAqLworIAorICAgc3RydWN0IGR5bmFtaWNfcHJvcCAqZGF0YV9sb2NhdGlvbjsK KysKKysgIC8qIFN0cnVjdHVyZSBmb3IgRFdfQVRfYWxsb2NhdGVkLgorKyAgICAgVGhlIHByZXNl bmNlIG9mIHRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBvYmplY3Qgb2YgdGhlIHR5 cGUKKysgICAgIGNhbiBiZSBhbGxvY2F0ZWQvZGVhbGxvY2F0ZWQuICBUaGUgdmFsdWUgY2FuIGJl IGEgZHdhcmYgZXhwcmVzc2lvbiwKKysgICAgIHJlZmVyZW5jZSwgb3IgYSBjb25zdGFudC4gICov CisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICphbGxvY2F0ZWQ7CisrCisrICAvKiBTdHJ1Y3R1cmUg Zm9yIERXX0FUX2Fzc29jaWF0ZWQuCisrICAgICBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBhdHRyaWJ1 dGUgaW5kaWNhdGVkIHRoYXQgdGhlIG9iamVjdCBvZiB0aGUgdHlwZQorKyAgICAgY2FuIGJlIGFz c29jaWF0ZWQuICBUaGUgdmFsdWUgY2FuIGJlIGEgZHdhcmYgZXhwcmVzc2lvbiwKKysgICAgIHJl ZmVyZW5jZSwgb3IgYSBjb25zdGFudC4gICovCisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICphc3Nv Y2lhdGVkOworIH07CisgCisgLyogKiBBIGBgc3RydWN0IHR5cGUnJyBkZXNjcmliZXMgYSBwYXJ0 aWN1bGFyIGluc3RhbmNlIG9mIGEgdHlwZSwgd2l0aAorQEAgLTEyMTQsNiArMTIyNiwyMCBAQCBl eHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAgIFRZ UEVfREFUQV9MT0NBVElPTiAodGhpc3R5cGUpLT5kYXRhLmNvbnN0X3ZhbAorICNkZWZpbmUgVFlQ RV9EQVRBX0xPQ0FUSU9OX0tJTkQodGhpc3R5cGUpIFwKKyAgIFRZUEVfREFUQV9MT0NBVElPTiAo dGhpc3R5cGUpLT5raW5kCisrI2RlZmluZSBUWVBFX0FMTE9DQVRFRF9QUk9QKHRoaXN0eXBlKSBU WVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmFsbG9jYXRlZAorKyNkZWZpbmUgVFlQRV9BU1NPQ0lB VEVEX1BST1AodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+YXNzb2NpYXRlZAor KworKy8qIEFsbG9jYXRlZCBzdGF0dXMgb2YgdHlwZSBvYmplY3QuICBJZiBzZXQgdG8gbm9uLXpl cm8gaXQgbWVhbnMgdGhlIG9iamVjdAorKyAgIGlzIGFsbG9jYXRlZC4gQSB6ZXJvIHZhbHVlIG1l YW5zIGl0IGlzIG5vdCBhbGxvY2F0ZWQuICAqLworKyNkZWZpbmUgVFlQRV9OT1RfQUxMT0NBVEVE KHQpICAoVFlQRV9BTExPQ0FURURfUFJPUCAodCkgXAorKyAgJiYgVFlQRV9BTExPQ0FURURfUFJP UCAodCktPmtpbmQgPT0gUFJPUF9DT05TVCBcCisrICAmJiAhVFlQRV9BTExPQ0FURURfUFJPUCAo dCktPmRhdGEuY29uc3RfdmFsKQorKworKy8qIEFzc29jaWF0ZWQgc3RhdHVzIG9mIHR5cGUgb2Jq ZWN0LiAgSWYgc2V0IHRvIG5vbi16ZXJvIGl0IG1lYW5zIHRoZSBvYmplY3QKKysgICBpcyBhc3Nv Y2lhdGVkLiBBIHplcm8gdmFsdWUgbWVhbnMgaXQgaXMgbm90IGFzc29jaWF0ZWQuICAqLworKyNk ZWZpbmUgVFlQRV9OT1RfQVNTT0NJQVRFRCh0KSAgKFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0KSBc CisrICAmJiBUWVBFX0FTU09DSUFURURfUFJPUCAodCktPmtpbmQgPT0gUFJPUF9DT05TVCBcCisr ICAmJiAhVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHQpLT5kYXRhLmNvbnN0X3ZhbCkKKyAKKyAvKiBN b3RvLXNwZWNpZmljIHN0dWZmIGZvciBGT1JUUkFOIGFycmF5cy4gICovCisgCistLSAKKzEuNy45 LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDRvZjIzLWZpeC5wYXRjaCBiL2dkYi12 bGEtaW50ZWwtMDRvZjIzLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zMDVjNTQxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4 LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK1JlOiBbUEFUQ0ggMDQvMjNdIHZsYTogbWFrZSBkeW5h bWljIGZvcnRyYW4gYXJyYXlzIGZ1bmN0aW9uYWwuCitodHRwczovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA1NzAuaHRtbAorCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvdmFsYXJpdGguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2 MTMub3JpZy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE2IDIzOjE2OjQ4LjEyOTE2NDY0NCArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0wNi0xNiAyMzox Nzo1Mi41NDQyMjU0NTIgKzAyMDAKK0BAIC0xOTUsMTkgKzE5NSwxOSBAQCB2YWx1ZV9zdWJzY3Jp cHRlZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqCisgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisgICBzdHJ1Y3QgdHlwZSAqZWx0 X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7Cisg ICB1bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOworLSAgdW5z aWduZWQgaW50IGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXggLSBs b3dlcmJvdW5kKTsKKysgIHVuc2lnbmVkIGludCBlbHRfb2ZmczsKKyAgIHN0cnVjdCB2YWx1ZSAq djsKKyAKKysgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEIChhcnJheV90eXBlKSkKKysgICAgZXJy b3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIpKTsK KysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQorKyAgICBlcnJvciAoXygi bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiKSk7CisrCisrICBl bHRfb2ZmcyA9IGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7 CisrCisgICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICghVFlQRV9BUlJBWV9VUFBFUl9CT1VO RF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCisgCQkJICAgICAmJiBlbHRfb2ZmcyA+PSBUWVBF X0xFTkdUSCAoYXJyYXlfdHlwZSkpKQorLSAgICB7CistICAgICAgaWYgKFRZUEVfTk9UX0FTU09D SUFURUQgKGFycmF5X3R5cGUpKQorLSAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVs ZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIpKTsKKy0gICAgICBlbHNlIGlmIChUWVBFX05P VF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQorLSAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVj dG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIikpOworLSAgICAgIGVsc2UKKy0gICAg ICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworLSAgICB9CisrICAgIGVy cm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworIAorICAgaWYgKFZBTFVFX0xWQUwg KGFycmF5KSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5IChhcnJheSkpCisgICAgIHYgPSBh bGxvY2F0ZV92YWx1ZV9sYXp5IChlbHRfdHlwZSk7CgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRl bC0wNG9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTA0b2YyMy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDAzYWIzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZs YS1pbnRlbC0wNG9mMjMucGF0Y2gKQEAgLTAsMCArMSw2MTQgQEAKK1N1YmplY3Q6IFtQQVRDSCAw NC8yM10gdmxhOiBtYWtlIGR5bmFtaWMgZm9ydHJhbiBhcnJheXMgZnVuY3Rpb25hbC4KK01lc3Nh Z2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtNS1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRl bC5jb20+CisKK1RoaXMgcGF0Y2ggZW5hYmxlcyBHREIgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGEg ZHluYW1pYworYXJyYXkgKFZMQSkgaWYgYWxsb2NhdGVkL2Fzc29jaWF0ZWQgaW4gZm9ydHJhbi4g SWYgbm90IHRoZQorYWxsb2NhdGlvbiBzdGF0dXMgd2lsbCBiZSBwcmludGVkIHRvIHRoZSBjb21t YW5kIGxpbmUuCisKKyhnZGIpIHAgdmxhX25vdF9hbGxvY2F0ZWQKKyQxID0gPG5vdCBhbGxvY2F0 ZWQ+CisKKyhnZGIpIHAgdmxhX2FsbG9jYXRlZAorJDEgPSAoMSwgMiwgMykKKworKGdkYikgcCB2 bGFfbm90X2Fzc29jaWF0ZWQKKyQxID0gPG5vdCBhc3NvY2lhdGVkPgorCisoZ2RiKSBwIHZsYV9h c3NvY2lhdGVkCiskMSA9ICgzLCAyLCAxKQorCitUaGUgcGF0Y2ggY292ZXJzIHZhcmlvdXMgbG9j YXRpb25zIHdoZXJlIHRoZSBhbGxvY2F0aW9uLworYXNzb2NpYXRpb24gc3RhdHVzIG1ha2VzIHNl bnNlIHRvIHByaW50LgorCisyMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGlu dGVsLmNvbT4KKyAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50 ZWwuY29tPgorCisJKiBkd2FyZjJsb2MuYyAoZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCk6IE5l dworCWZ1bmN0aW9uLgorCSogZHdhcmYybG9jLmggKGR3YXJmMl9hZGRyZXNzX2RhdGFfdmFsaWQp OiBOZXcKKwlmdW5jdGlvbi4KKwkqIGYtdHlwZXByaW50LmMgKGZfcHJpbnRfdHlwZSk6IFByaW50 IGFsbG9jYXRpb24vCisJYXNzb2NpYXRpb24gc3RhdHVzLgorCShmX3R5cGVfcHJpbnRfdmFyc3Bl Y19zdWZmaXgpOiBQcmludCBhbGxvY2F0aW9uLworCWFzc29jaWF0aW9uIHN0YXR1cyBmb3IgJi1v cGVyYXRvciB1c2FnZXMuCisJKiBnZGJ0eXBlcy5jIChjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0 cmlkZSk6IEFkZAorCXF1ZXJ5IGZvciB2YWxpZCBkYXRhIGxvY2F0aW9uLgorCShpc19keW5hbWlj X3R5cGUpOiBFeHRlbmQgZHluYW1pYyB0eXBlIGRldGVjdGlvbgorCXdpdGggYWxsb2NhdGVkL2Fz c29jaWF0ZWQuIEFkZCB0eXBlIGRldGVjdGlvbiBmb3IKKwlmaWVsZHMuCisJKHJlc29sdmVfZHlu YW1pY19yYW5nZSk6IENvcHkgdHlwZSBiZWZvcmUgcmVzb2x2aW5nCisJaXQgYXMgZHluYW1pYyBh dHRyaWJ1dGVzIG5lZWQgdG8gYmUgcHJlc2VydmVkLgorCShyZXNvbHZlX2R5bmFtaWNfYXJyYXkp OiBDb3B5IHR5cGUgYmVmb3JlIHJlc29sdmluZworCWl0IGFzIGR5bmFtaWMgYXR0cmlidXRlcyBu ZWVkIHRvIGJlIHByZXNlcnZlZC4gQWRkCisJcmVzb2x2aW5nIG9mIGFsbG9jYXRlZC9hc3NvY2lh dGVkIGF0dHJpYnV0ZXMuCisJKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkIGNhbGwgdG8gbmVz dGVkCisJdHlwZSByZXNvbHZpbmcuCisJKGNvcHlfdHlwZV9yZWN1cnNpdmUpOiBBZGQgYWxsb2Nh dGVkL2Fzc29jaWF0ZWQKKwlhdHRyaWJ1dGVzIHRvIGJlIGNvcGllZC4KKwkoY29weV90eXBlKTog Q29weSBhbGxvY2F0ZWQvYXNzb2NpYXRlZC9kYXRhX2xvY2F0aW9uCisJYXMgd2VsbCBhcyB0aGUg ZmllbGRzIHN0cnVjdHVyZSBpZiBhdmFpbGFibGUuCisJKHJlc29sdmVfZHluYW1pY19jb21wb3Vu ZCk6IE5ldyBmdW5jdGlvbi4KKwkqIHZhbGFyaXRoLmMgKHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1 ZSk6IFByaW50IGFsbG9jYXRlZC8KKwlhc3NvY2lhdGVkIHN0YXR1cyB3aGVuIGluZGV4aW5nIGEg VkxBLgorCSogdmFscHJpbnQuYyAodmFscHJpbnRfY2hlY2tfdmFsaWRpdHkpOiBQcmludCBhbGxv Y2F0ZWQvCisJYXNzb2NpYXRlZCBzdGF0dXMuCisJKHZhbF9wcmludF9ub3RfYWxsb2NhdGVkKTog TmV3IGZ1bmN0aW9uLgorCSh2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQpOiBOZXcgZnVuY3Rpb24u CisJKiB2YWxwcmludC5oICh2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCk6IE5ldyBmdW5jdGlvbi4K KwkodmFsX3ByaW50X25vdF9hc3NvY2lhdGVkKTogTmV3IGZ1bmN0aW9uLgorCSogdmFsdWUuYyAo c2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbik6IEFkanVzdCB0aGUgdmFsdWUKKwlhZGRyZXNz IGZvciBzaW5nbGUgdmFsdWUgcHJpbnRzLgorCitDaGFuZ2UtSWQ6IElkZmI0NGM4YTZiMzgwMDhm OGUyYzg0Y2IwZmRiMTM3MjllYzE2MGY0CisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxr ZXZlbi5ib2VsbEBpbnRlbC5jb20+CistLS0KKyBnZGIvZHdhcmYybG9jLmMgICB8ICAgMTQgKysr KysKKyBnZGIvZHdhcmYybG9jLmggICB8ICAgIDYgKysKKyBnZGIvZi10eXBlcHJpbnQuYyB8ICAg NjIgKysrKysrKysrKysrKy0tLS0tLS0KKyBnZGIvZ2RidHlwZXMuYyAgICB8ICAxNjUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBnZGIvdmFs YXJpdGguYyAgICB8ICAgIDkgKystCisgZ2RiL3ZhbHByaW50LmMgICAgfCAgIDQwICsrKysrKysr KysrKysKKyBnZGIvdmFscHJpbnQuaCAgICB8ICAgIDQgKysKKyBnZGIvdmFsdWUuYyAgICAgICB8 ICAgMjAgKysrKysrKworIDggZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDI4IGRl bGV0aW9ucygtKQorCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5j CTIwMTQtMDYtMTQgMTU6MTI6NDMuNzk3OTk2ODg1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODU5OTgwNDkgKzAyMDAK K0BAIC0yNTY5LDYgKzI1NjksMjAgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBz dHJ1Y3QgZAorICAgcmV0dXJuIDA7CisgfQorIAorKy8qIFNlZSBkd2FyZjJsb2MuaC4gICovCisr CisraW50CisrZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29uc3Qgc3RydWN0IHR5cGUgKnR5 cGUpCisreworKyAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKQorKyAgICByZXR1cm4g MDsKKysKKysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQorKyAgICByZXR1cm4gMDsK KysKKysgIHJldHVybiAxOworK30KKysKKyAMCisgLyogSGVscGVyIGZ1bmN0aW9ucyBhbmQgYmF0 b24gZm9yIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZS4gICovCisgCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6MTI6NDMuNzk3OTk2 ODg1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgJMjAxNC0w Ni0xNCAxNToxMjo0NS40ODY5OTgwNjQgKzAyMDAKK0BAIC0xMDIsNiArMTAyLDEyIEBAIGludCBk d2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnUKKyBDT1JFX0FERFIgZHdhcmYyX3Jl YWRfYWRkcl9pbmRleCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAorIAkJCQkg IHVuc2lnbmVkIGludCBhZGRyX2luZGV4KTsKKyAKKysvKiBDaGVja3MgaWYgYSBkd2FyZiBsb2Nh dGlvbiBkZWZpbml0aW9uIGlzIHZhbGlkLgorKyAgIFJldHVybnMgMSBpZiB2YWxpZDsgMCBvdGhl cndpc2UuICAqLworKworK2V4dGVybiBpbnQgZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29u c3Qgc3RydWN0IHR5cGUgKnR5cGUpOworKworKworIC8qIFRoZSBzeW1ib2wgbG9jYXRpb24gYmF0 b24gdHlwZXMgdXNlZCBieSB0aGUgRFdBUkYtMiByZWFkZXIgKGkuZS4KKyAgICBTWU1CT0xfTE9D QVRJT05fQkFUT04gZm9yIGEgTE9DX0NPTVBVVEVEIHN5bWJvbCkuICAic3RydWN0CisgICAgZHdh cmYyX2xvY2V4cHJfYmF0b24iIGlzIGZvciBhIHN5bWJvbCB3aXRoIGEgc2luZ2xlIGxvY2F0aW9u CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi10eXBlcHJpbnQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDE0LTA2 LTE0IDE1OjEyOjQzLjc5ODk5Njg4NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2YtdHlwZXByaW50LmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODY5OTgwNjQgKzAyMDAKK0BAIC0z MCw2ICszMCw3IEBACisgI2luY2x1ZGUgImdkYmNvcmUuaCIKKyAjaW5jbHVkZSAidGFyZ2V0Lmgi CisgI2luY2x1ZGUgImYtbGFuZy5oIgorKyNpbmNsdWRlICJ2YWxwcmludC5oIgorIAorICNpbmNs dWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KK0BAIC01Niw2ICs1NywxNyBAQCBm X3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjCisgICBlbnVtIHR5cGVfY29k ZSBjb2RlOworICAgaW50IGRlbWFuZ2xlZF9hcmdzOworIAorKyAgaWYgKFRZUEVfTk9UX0FTU09D SUFURUQgKHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVkIChz dHJlYW0pOworKyAgICAgIHJldHVybjsKKysgICAgfQorKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRF RCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFt KTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBl LCBzdHJlYW0sIHNob3csIGxldmVsKTsKKyAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworICAg aWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCitAQCAtMTcwLDI4 ICsxODIsMzYgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQorICAg ICAgIGlmIChhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKKyAJZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiKCIpOworIAorLSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfQVJSQVkpCistCWZfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKKy0JCQkJICAg ICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOworLQorLSAgICAgIGxvd2VyX2JvdW5kID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKKy0gICAgICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyog Tm90IHRoZSBkZWZhdWx0LiAgKi8KKy0JZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQ6Iiwg bG93ZXJfYm91bmQpOworLQorLSAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFu IGFzc3VtZWQgc2l6ZSBhcnJheSwgd2UKKy0gICAgICAgICBwcmludCBvdXQgYSB3YXJuaW5nIGFu ZCBwcmludCB0aGUgdXBwZXJib3VuZCBhcyAnKicuICAqLworLQorLSAgICAgIGlmIChUWVBFX0FS UkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCistCWZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIioiKTsKKysgICAgICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAodHlwZSkpCisr ICAgICAgICB2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cmVhbSk7CisrICAgICAgZWxzZSBp ZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0eXBlKSkKKysgICAgICAgIHZhbF9wcmludF9ub3RfYWxs b2NhdGVkIChzdHJlYW0pOworICAgICAgIGVsc2UKKy0JeworLQkgIHVwcGVyX2JvdW5kID0gZjc3 X2dldF91cHBlcmJvdW5kICh0eXBlKTsKKy0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIl ZCIsIHVwcGVyX2JvdW5kKTsKKy0JfQorLQorLSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCistCWZfdHlwZV9wcmludF92YXJz cGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKKy0J CQkJICAgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOworKyAgICAgICAgeworKworKyAgICAg ICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RF X0FSUkFZKQorKyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKKysgICAgICAgICAgICAgICAgIGFy cmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrCisrICAgICAgICAgIGxvd2VyX2JvdW5kID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKKysgICAgICAgICAgaWYgKGxvd2VyX2JvdW5kICE9IDEp CS8qIE5vdCB0aGUgZGVmYXVsdC4gICovCisrICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQpOworKworKyAgICAgICAgICAvKiBNYWtlIHN1cmUg dGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCisrICAgICAgICAgICAg IHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICov CisrCisrICAgICAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAo dHlwZSkpCisrICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOworKyAg ICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgdXBwZXJfYm91bmQg PSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOworKyAgICAgICAgICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiJWQiLCB1cHBlcl9ib3VuZCk7CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9D T0RFX0FSUkFZKQorKyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKKysgICAgICAgICAgICAgICAg IGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrICAgICAgfQorICAgICAgIGlmIChhcnJheXBy aW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIp OworICAgICAgIGVsc2UKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5j CTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjE0OjM0LjgzNzEwMjM2OSArMDIwMAor QEAgLTEwMDMsNyArMTAwMyw4IEBAIGNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1 Y3QgdHkKKyAKKyAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwor ICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOworLSAgaWYg KGhhc19zdGF0aWNfcmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkpKQorKyAgaWYg KGhhc19zdGF0aWNfcmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkpCisrICAgICAg JiYgZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAocmVzdWx0X3R5cGUpKQorICAgICB7CisgICAg ICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisgCitAQCAtMTYxNiwxMSArMTYxNywz MCBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCisgaW50CisgaXNfZHluYW1pY190eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7CisrICBpbnQgaW5kZXg7CisrCisrICBpZiAoIXR5cGUp CisrICAgIHJldHVybiAwOworKworICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOworIAor ICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKyAgICAgdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKyAKKysgIGlmIChUWVBFX0FT U09DSUFURURfUFJPUCAodHlwZSkpCisrICAgIHJldHVybiAxOworKworKyAgaWYgKFRZUEVfQUxM T0NBVEVEX1BST1AgKHR5cGUpKQorKyAgICByZXR1cm4gMTsKKysKKysgIC8qIFNjYW4gZmllbGQg dHlwZXMgaW4gdGhlIEZvcnRyYW4gY2FzZSBmb3IgbmVzdGVkIGR5bmFtaWMgdHlwZXMuCisrICAg ICBUaGlzIHdpbGwgYmUgZG9uZSBvbmx5IGZvciBGb3J0cmFuIGFzIGluIHRoZSBDKysgY2FzZSBh biBlbmRsZXNzIHJlY3Vyc2lvbgorKyAgICAgY2FuIG9jY3VyIGluIHRoZSBhcmVhIG9mIGNsYXNz ZXMuICAqLworKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdl X2ZvcnRyYW4pCisrICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IFRZUEVfTkZJRUxEUyAodHlw ZSk7IGluZGV4KyspCisrICAgICAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBpbmRleCkpKQorKyAgICAgICAgcmV0dXJuIDE7CisrCisgICBzd2l0Y2ggKFRZUEVf Q09ERSAodHlwZSkpCisgICAgIHsKKyAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6CitAQCAtMTY2 OSw2ICsxNjg5LDcgQEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluXwor ICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKyAgIGNvbnN0IHN0cnVjdCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisgICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3Vu ZCwgaGlnaF9ib3VuZDsKKysgIHN0cnVjdCB0eXBlICpyYW5nZV9jb3B5ID0gY29weV90eXBlIChk eW5fcmFuZ2VfdHlwZSk7CisgCisgICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKGR5bl9yYW5nZV90 eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpOworIAorQEAgLTE3MDAsOCArMTcyMSw4IEBAIHJlc29s dmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KKyAgICAgICBoaWdoX2JvdW5kLmRh dGEuY29uc3RfdmFsID0gMDsKKyAgICAgfQorIAorLSAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVh dGVfcmFuZ2VfdHlwZSAoY29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSksCistCQkJCQkgVFlQRV9U QVJHRVRfVFlQRSAoZHluX3JhbmdlX3R5cGUpLAorKyAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVh dGVfcmFuZ2VfdHlwZSAocmFuZ2VfY29weSwKKysJCQkJCSBUWVBFX1RBUkdFVF9UWVBFIChyYW5n ZV9jb3B5KSwKKyAJCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7CisgICBUWVBFX1JBTkdF X0RBVEEgKHN0YXRpY19yYW5nZV90eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0ZWQgPSAxOworICAg cmV0dXJuIHN0YXRpY19yYW5nZV90eXBlOworQEAgLTE3MTgsNiArMTczOSw4IEBAIHJlc29sdmVf ZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKKyAgIHN0cnVjdCB0eXBlICplbHRfdHlw ZTsKKyAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAgc3RydWN0IHR5cGUgKmFyeV9kaW07 CisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wOworKyAgc3RydWN0IHR5cGUgKmNvcHkgPSBj b3B5X3R5cGUgKHR5cGUpOworIAorICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfQVJSQVkpOworIAorQEAgLTE3MjUsMTggKzE3NDgsOTMgQEAgcmVzb2x2ZV9keW5h bWljX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZQorICAgcmFuZ2VfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUpKTsKKyAgIHJhbmdlX3R5cGUgPSByZXNvbHZl X2R5bmFtaWNfcmFuZ2UgKHJhbmdlX3R5cGUsIGFkZHIpOworIAorKyAgcHJvcCA9IFRZUEVfQUxM T0NBVEVEX1BST1AgKHR5cGUpOworKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJv cCwgYWRkciwgJnZhbHVlKSkKKysgICAgeworKyAgICAgIFRZUEVfQUxMT0NBVEVEX1BST1AgKGNv cHkpLT5raW5kID0gUFJPUF9DT05TVDsKKysgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QIChjb3B5 KS0+ZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKKysgICAgfQorKworKyAgcHJvcCA9IFRZUEVfQVNT T0NJQVRFRF9QUk9QICh0eXBlKTsKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHBy b3AsIGFkZHIsICZ2YWx1ZSkpCisrICAgIHsKKysgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAo Y29weSktPmtpbmQgPSBQUk9QX0NPTlNUOworKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9QUk9QIChj b3B5KS0+ZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKKysgICAgfQorKworICAgYXJ5X2RpbSA9IGNo ZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7CisgCisgICBpZiAoYXJ5 X2RpbSAhPSBOVUxMICYmIFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQor LSAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksIGFkZHIpOworKyAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQ RV9UQVJHRVRfVFlQRSAoY29weSksIGFkZHIpOworICAgZWxzZQorICAgICBlbHRfdHlwZSA9IFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpOworIAorLSAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChj b3B5X3R5cGUgKHR5cGUpLAorKyAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAorIAkJ CSAgICBlbHRfdHlwZSwKKyAJCQkgICAgcmFuZ2VfdHlwZSk7CisgfQorIAorKy8qIFJlc29sdmVz IGR5bmFtaWMgY29tcG91bmQgdHlwZXMsIGUuZy4gU1RSVUNUUydzIHRvIHN0YXRpYyBvbmVzLgor KyAgIEFERFJFU1MgaXMgbmVlZGVkIHRvIHJlc29sdmUgdGhlIGNvbXBvdW5kIHR5cGUgZGF0YSBs b2NhdGlvbi4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKytyZXNvbHZlX2R5bmFtaWNf Y29tcG91bmQgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcikKKyt7CisrICBzdHJ1 Y3QgdHlwZSAqY3VyX3R5cGUsICpwcmV2X3R5cGUsICpjb3B5OworKyAgaW50IGluZGV4LCBkZXB0 aCA9IDA7CisrCisrICBjdXJfdHlwZSA9IHR5cGU7CisrICBwcmV2X3R5cGUgPSBjdXJfdHlwZTsK KysgIHdoaWxlIChjdXJfdHlwZSkKKysgICAgeworKyAgICAgIHN3aXRjaCAoVFlQRV9DT0RFIChj dXJfdHlwZSkpCisrICAgICAgICB7CisrICAgICAgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjb3B5ID0gY29weV90eXBlIChjdXJfdHlw ZSk7CisrICAgICAgICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMg KGNvcHkpOyBpbmRleCsrKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg c3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUgKGNvcHksIGluZGV4KTsK KysKKysgICAgICAgICAgICAgICAgICBpZiAoaW5kZXhfdHlwZSA9PSBOVUxMKQorKyAgICAgICAg ICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09E RSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrICAgICAgICAgICAgICAgICAgICAg IHx8IFRZUEVfQ09ERSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKKysgICAgICAg ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAoaW5k ZXhfdHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFk ZHIgKz0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUWVBFX0ZJRUxEX0JJVFBP UyAoY29weSwgaW5kZXgpIC8gOCk7CisrCisrICAgICAgICAgICAgICAgICAgICAgIFRZUEVfRklF TERfVFlQRSAoY29weSwgaW5kZXgpID0KKysgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl X2R5bmFtaWNfdHlwZSAoVFlQRV9GSUVMRF9UWVBFIChjb3B5LCBpbmRleCksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRkcik7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgIC8qIElmIGEgc3RydWN0IHR5cGUgd2ls bCBiZSByZXNvbHZlZCBhcyB0aGUgZmlyc3QgdHlwZSwgd2UgbmVlZAorKyAgICAgICAgICAgICAg ICAgdG8gYXNzaWduIGl0IGJhY2sgdGhlIHJlc29sdmVkX3R5cGUuIEluIHRoZSBvdGhlciBjYXNl IGl0IGNhbgorKyAgICAgICAgICAgICAgICAgYmUgdGhhdCB3ZSBoYXZlIGEgc3RydWN0LCB3aGlj aCBpcyBuZXN0ZWQgaW4gYW5vdGhlciB0eXBlLgorKyAgICAgICAgICAgICAgICAgVGhlcmVmb3Jl IHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHByZXZpb3VzIHR5cGUsIHRvIGFzc2lnbiB0aGUKKysg ICAgICAgICAgICAgICAgIG5ldyByZXNvbHZlZCB0eXBlIGFzIHRoZSBwcmV2aW91cycgdGFyZ2V0 IHR5cGUuICAqLworKyAgICAgICAgICAgICAgaWYgKGRlcHRoID09IDApCisrICAgICAgICAgICAg ICAgIHR5cGUgPSBjb3B5OworKyAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICBU WVBFX1RBUkdFVF9UWVBFIChwcmV2X3R5cGUpID0gY29weTsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgIC8qIFN0b3JlIHRoZSBwcmV2aW91 cyB0eXBlLCBpbiBvcmRlciB0byBhc3NpZ24gcmVzb2x2ZWQgdHlwZXMgYmFjayB0bworKyAgICAg ICAgdGhlIHJpZ2h0IHRhcmdldCB0eXBlLiAgKi8KKysgICAgICBwcmV2X3R5cGUgPSBjdXJfdHlw ZTsKKysgICAgICBjdXJfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGN1cl90eXBlKTsKKysgICAg ICBkZXB0aCsrOworKyAgICB9OworKworKyAgICByZXR1cm4gdHlwZTsKKyt9CisrCisgLyogUmVz b2x2ZSBkeW5hbWljIGJvdW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRp YworICAgIGJvdW5kcy4gICovCisgCitAQCAtMTgzNiw3ICsxOTM0LDcgQEAgcmVzb2x2ZV9keW5h bWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHR5cGUpOworICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0 eXBlOworICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKy0gIENPUkVfQUREUiB2 YWx1ZTsKKysgIENPUkVfQUREUiB2YWx1ZSwgYWRqdXN0ZWRfYWRkcmVzcyA9IGFkZHI7CisgCisg ICBpZiAoIWlzX2R5bmFtaWNfdHlwZSAocmVhbF90eXBlKSkKKyAgICAgcmV0dXJuIHR5cGU7CitA QCAtMTg4MiwxMiArMTk4MCwxNSBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUsCisgICBwcm9wID0gVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsKKyAgIGlmIChkd2Fy ZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCisgICAgIHsKKysgICAg ICBhZGp1c3RlZF9hZGRyZXNzID0gdmFsdWU7CisgICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FE RFIgKHR5cGUpID0gdmFsdWU7CisgICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUp ID0gUFJPUF9DT05TVDsKKyAgICAgfQorICAgZWxzZQorICAgICBUWVBFX0RBVEFfTE9DQVRJT04g KHR5cGUpID0gTlVMTDsKKyAKKysgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfY29t cG91bmQgKHR5cGUsIGFkanVzdGVkX2FkZHJlc3MpOworKworICAgcmV0dXJuIHJlc29sdmVkX3R5 cGU7CisgfQorIAorQEAgLTQxMDQsNiArNDIwNSwyMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqCisgICAgICAgKlRZUEVfREFUQV9MT0NBVElPTiAobmV3X3R5cGUp ID0gKlRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7CisgICAgIH0KKyAKKysgIC8qIENvcHkgYWxs b2NhdGVkIGluZm9ybWF0aW9uLiAgKi8KKysgIGlmIChUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBl KSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUp ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19wcm9wKSk7CisrICAgICAgKlRZUEVf QUxMT0NBVEVEX1BST1AgKG5ld190eXBlKSA9ICpUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKTsK KysgICAgfQorKworKyAgLyogQ29weSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uLiAgKi8KKysgIGlm IChUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkgIT0gTlVMTCkKKysgICAgeworKyAgICAgIFRZ UEVfQVNTT0NJQVRFRF9QUk9QIChuZXdfdHlwZSkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBk eW5hbWljX3Byb3ApKTsKKysgICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1AgKG5ld190eXBlKSA9 ICpUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSk7CisrICAgIH0KKysKKyAgIC8qIENvcHkgcG9p bnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLworICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KQorICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKK0BAIC00MTUwLDYgKzQyNjUs NDQgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAgIG1lbWNweSAoVFlQ RV9NQUlOX1RZUEUgKG5ld190eXBlKSwgVFlQRV9NQUlOX1RZUEUgKHR5cGUpLAorIAkgIHNpemVv ZiAoc3RydWN0IG1haW5fdHlwZSkpOworIAorKyAgaWYgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5 cGUpKQorKyAgICB7CisrICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUpCisrICAg ICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGR5bmFtaWNfcHJvcCk7CisrICAgICAgbWVtY3B5IChUWVBFX0FMTE9DQVRFRF9QUk9QIChuZXdf dHlwZSksIFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpLAorKyAgICAgICAgc2l6ZW9mIChzdHJ1 Y3QgZHluYW1pY19wcm9wKSk7CisrICAgIH0KKysKKysgIGlmIChUWVBFX0FTU09DSUFURURfUFJP UCAodHlwZSkpCisrICAgIHsKKysgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAobmV3X3R5cGUp CisrICAgICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGR5bmFtaWNfcHJvcCk7CisrICAgICAgbWVtY3B5IChUWVBFX0FTU09DSUFURURfUFJP UCAobmV3X3R5cGUpLCBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSksCisrICAgICAgICBzaXpl b2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgfQorKworKyAgaWYgKFRZUEVfREFUQV9M T0NBVElPTiAodHlwZSkpCisrICAgIHsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKG5ld190 eXBlKQorKyAgICAgICAgICAgICAgPSBPQlNUQUNLX1pBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUp Lm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkeW5hbWljX3Byb3ApOworKyAgICAgIG1lbWNweSAoVFlQRV9EQVRBX0xPQ0FU SU9OIChuZXdfdHlwZSksIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSksCisrICAgICAgICBzaXpl b2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgfQorKworKyAgaWYgKFRZUEVfTkZJRUxE UyAodHlwZSkpCisrICAgIHsKKysgICAgICBpbnQgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlw ZSk7CisrCisrICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKQorKyAgICAgICAgICAgICAgPSBP QlNUQUNLX0NBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUpLm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5maWVsZHMsIHN0cnVjdCBmaWVs ZCk7CisrICAgICAgbWVtY3B5IChUWVBFX0ZJRUxEUyAobmV3X3R5cGUpLCBUWVBFX0ZJRUxEUyAo dHlwZSksCisrICAgICAgICBuZmllbGRzICogc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKKysgICB9 CisrCisgICByZXR1cm4gbmV3X3R5cGU7CisgfQorIAwKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi92YWxhcml0aC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi92YWxhcml0aC5jCTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE0IDE1OjEyOjQ1 LjQ4ODk5ODA3NSArMDIwMAorQEAgLTIwMCw3ICsyMDAsMTQgQEAgdmFsdWVfc3Vic2NyaXB0ZWRf cnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorIAorICAgaWYgKGluZGV4IDwgbG93ZXJib3VuZCB8fCAo IVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQorIAkJCSAg ICAgJiYgZWx0X29mZnMgPj0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpKSkKKy0gICAgZXJyb3Ig KF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiKSk7CisrICAgIHsKKysgICAgICBpZiAoVFlQRV9O T1RfQVNTT0NJQVRFRCAoYXJyYXlfdHlwZSkpCisrICAgICAgICBlcnJvciAoXygibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIikpOworKyAgICAgIGVsc2UgaWYg KFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCisrICAgICAgICBlcnJvciAoXygibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiKSk7CisrICAgICAgZWxz ZQorKyAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiKSk7CisrICAgIH0K KyAKKyAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6 eSAoYXJyYXkpKQorICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoZWx0X3R5cGUpOworSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHByaW50LmMJMjAxNC0wNi0xNCAxNToxMjo0 My44MDI5OTY4ODggKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxwcmludC5j CTIwMTQtMDYtMTQgMTU6MTI6NDUuNDg4OTk4MDc1ICswMjAwCitAQCAtMzA3LDYgKzMwNywxOCBA QCB2YWxwcmludF9jaGVja192YWxpZGl0eSAoc3RydWN0IHVpX2ZpbGUKKyB7CisgICBDSEVDS19U WVBFREVGICh0eXBlKTsKKyAKKysgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKKysg ICAgeworKyAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKKysgICAgICBy ZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpCisr ICAgIHsKKysgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKKysgICAgICBy ZXR1cm4gMDsKKysgICAgfQorKworICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RF X1VOSU9OCisgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCisg ICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkpCitAQCAtMzYyLDYg KzM3NCwxOCBAQCB2YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsCisgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIF8oIjxpbnZhbGlkIGFkZHJlc3M+IikpOworIH0KKyAK Kyt2b2lkCisrdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0p CisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFsbG9jYXRlZD4iKSk7 CisrfQorKworK3ZvaWQKKyt2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0pCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFzc29j aWF0ZWQ+IikpOworK30KKysKKyAvKiBBIGdlbmVyaWMgdmFsX3ByaW50IHRoYXQgaXMgc3VpdGFi bGUgZm9yIHVzZSBieSBsYW5ndWFnZQorICAgIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbGFfdmFs X3ByaW50IG1ldGhvZC4gIFRoaXMgZnVuY3Rpb24gY2FuCisgICAgaGFuZGxlIG1vc3QgdHlwZSBj b2RlcywgdGhvdWdoIG5vdCBhbGwsIG5vdGFibHkgZXhjZXB0aW9uCitAQCAtODAzLDEyICs4Mjcs MTYgQEAgc3RhdGljIGludAorIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisgCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCisgeworKyAgY29uc3Qgc3RydWN0IHR5cGUgKnR5cGU7 CisrCisgICBpZiAodmFsID09IDApCisgICAgIHsKKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sIF8oIjxhZGRyZXNzIG9mIHZhbHVlIHVua25vd24+IikpOworICAgICAgIHJldHVybiAw OworICAgICB9CisgCisrICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKKysKKyAgIGlmICh2YWx1 ZV9lbnRpcmVseV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQorICAgICB7CisgICAgICAgaWYgKG9wdGlv bnMtPnN1bW1hcnkgJiYgIXZhbF9wcmludF9zY2FsYXJfdHlwZV9wICh2YWx1ZV90eXBlICh2YWwp KSkKK0BAIC04MzQsNiArODYyLDE4IEBAIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0IHZh bHVlICp2YWwKKyAgICAgICByZXR1cm4gMDsKKyAgICAgfQorIAorKyAgaWYgKFRZUEVfTk9UX0FT U09DSUFURUQgKHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVk IChzdHJlYW0pOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICBpZiAoVFlQRV9OT1Rf QUxMT0NBVEVEICh0eXBlKSkKKysgICAgeworKyAgICAgIHZhbF9wcmludF9ub3RfYWxsb2NhdGVk IChzdHJlYW0pOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisgICByZXR1cm4gMTsKKyB9 CisgCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFscHJpbnQuaAorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFscHJpbnQuaAkyMDE0LTA2LTE0 IDE1OjEyOjQzLjgwMzk5Njg4OSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Zh bHByaW50LmgJMjAxNC0wNi0xNCAxNToxMjo0NS40ODk5OTgwNzMgKzAyMDAKK0BAIC0yMTcsNCAr MjE3LDggQEAgZXh0ZXJuIHZvaWQgb3V0cHV0X2NvbW1hbmRfY29uc3QgKGNvbnN0CisgCisgZXh0 ZXJuIGludCB2YWxfcHJpbnRfc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpOworIAor K2V4dGVybiB2b2lkIHZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtKTsKKysKKytleHRlcm4gdm9pZCB2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pOworKworICNlbmRpZgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL3ZhbHVlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2Ri L3ZhbHVlLmMJMjAxNC0wNi0xNCAxNToxMjo0My44MDQ5OTY4OTAgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTQgMTU6MTI6NDUuNDkwOTk4MDY5ICsw MjAwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisgI2luY2x1 ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKysjaW5jbHVkZSAiZHdhcmYy bG9jLmgiCisgCisgLyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KKyAK K0BAIC0xNjQ2LDYgKzE2NDcsMjUgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3Ry dWN0IHZhbAorICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQorICAgICAgICAgY29tcG9u ZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hv bGUpOworICAgICB9CisrCisrICAvKiBGb3IgZHluYW1pYyB0eXBlcyBjb21wdXRlIHRoZSBhZGRy ZXNzIG9mIHRoZSBjb21wb25lbnQgdmFsdWUgbG9jYXRpb24gaW4KKysgICAgIHN1YiByYW5nZSB0 eXBlcyBiYXNlZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhlIHN1YiByYW5nZSB0eXBlLCBpZiBub3Qg YmVpbmcKKysgICAgIGFuIGludGVybmFsIEdEQiB2YXJpYWJsZSBvciBwYXJ0cyBvZiBpdC4gICov CisrICBpZiAoVkFMVUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFsdmFyCisrICAg ICAgJiYgVkFMVUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFsdmFyX2NvbXBvbmVu dCkKKysgICAgeworKyAgICAgIENPUkVfQUREUiBhZGRyOworKyAgICAgIHN0cnVjdCB0eXBlICp0 eXBlID0gdmFsdWVfdHlwZSAod2hvbGUpOworKworKyAgICAgIGFkZHIgPSB2YWx1ZV9yYXdfYWRk cmVzcyAoY29tcG9uZW50KTsKKysKKysgICAgICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBl KQorKyAgICAgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9D T05TVCkKKysgICAgICAgIHsKKysgICAgICAgICAgYWRkciA9IFRZUEVfREFUQV9MT0NBVElPTl9B RERSICh0eXBlKTsKKysgICAgICAgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKGNvbXBvbmVudCwgYWRk cik7CisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgDAoKZGlmZiAtLWdpdCBhL2dkYi12bGEt aW50ZWwtMDVvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wNW9mMjMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IwOTkzNwotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi12bGEtaW50ZWwtMDVvZjIzLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK1N1YmplY3Q6IFtQQVRD SCAwNS8yM10gdmxhOiBtYWtlIGZpZWxkIHNlbGVjdGlvbiB3b3JrIHdpdGggdmxhCitNZXNzYWdl LUlkOiA8MTQwMTg2MTI2Ni02MjQwLTYtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgorCitJbiBGb3J0cmFuIHZsYSBhcmUgcG9pbnRlcnMgdG8gYXJyYXlzLiBUaHVzIGEKK3R5 cGUgb25seSBjb250YWlucyBhIHBvaW50ZXIgdG8gc3VjaCBhcnJheSBhbmQKK3dlIG5lZWQgdG8g cmUtcmVhZCB0aGUgZmllbGQgdG8gcmV0cmlldmUgdGhlCitjb3JyZWN0IHZsYS4KKworb2xkICh3 cm9uZyB2YWx1ZSk6CisoZ2RiKSBwIHR5cGVfdmFyJXZsYSgxNCkKKyQxID0gMQorCituZXcgKGNv cnJlY3QgdmFsdWUpOgorKGdkYikgcCB0eXBlX3ZhciV2bGEoMTQpCiskMSA9IDQyCisKKzIwMTQt MDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorICAgICAg ICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKKwkqIHZhbHVlLmMg KHZhbHVlX3ByaW1pdGl2ZV9maWVsZCk6IFJlLWV2YWx1YXRlCisJZmllbGQgdmFsdWUgdG8gZ2V0 IHRoZSBhY3R1YWwgdmFsdWUuCisKK0NoYW5nZS1JZDogSWMyMmMzNzMyNDk2M2FjYTUyMGM1MmE4 MGZiYmQwMDQyZDFmZGRjMDUKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJv ZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi92YWx1ZS5jIHwgICAyMSArKysrKysrKysrKysrKyst LS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK KworZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKK2luZGV4IDA4NTkzYjYu LjFmMGQ5YTQgMTAwNjQ0CistLS0gYS9nZGIvdmFsdWUuYworKysrIGIvZ2RiL3ZhbHVlLmMKK0BA IC0yOTI5LDEzICsyOTI5LDIyIEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVl ICphcmcxLCBpbnQgb2Zmc2V0LAorIAl2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7Cisg ICAgICAgZWxzZQorIAl7CistCSAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKy0JICB2YWx1 ZV9jb250ZW50c19jb3B5X3JhdyAodiwgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2KSwKKy0JCQkJ ICAgYXJnMSwgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcxKSArIG9mZnNldCwKKy0JCQkJICAg VFlQRV9MRU5HVEggKHR5cGUpKTsKKysJICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQor KwkgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9DT05TVCkK KysJICAgIHYgPSB2YWx1ZV9hdF9sYXp5ICh0eXBlLCB2YWx1ZV9hZGRyZXNzIChhcmcxKSArIG9m ZnNldCk7CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5 cGUpOworKwkgICAgICB2YWx1ZV9jb250ZW50c19jb3B5X3JhdyAodiwgdmFsdWVfZW1iZWRkZWRf b2Zmc2V0ICh2KSwKKysJCQkJICAgICAgIGFyZzEsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJn MSkgKyBvZmZzZXQsCisrCQkJCSAgICAgICBUWVBFX0xFTkdUSCAodHlwZSkpOworKwkgICAgfQor IAl9CistICAgICAgdi0+b2Zmc2V0ID0gKHZhbHVlX29mZnNldCAoYXJnMSkgKyBvZmZzZXQKKy0J CSAgICsgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcxKSk7CisrCisrICAgICAgaWYgKCFUWVBF X0RBVEFfTE9DQVRJT04gKHR5cGUpCisrICAgICAgICAgIHx8ICFUWVBFX0RBVEFfTE9DQVRJT05f S0lORCAodHlwZSkgPT0gUFJPUF9DT05TVCkKKysJdi0+b2Zmc2V0ID0gKHZhbHVlX29mZnNldCAo YXJnMSkgKyBvZmZzZXQKKysJCSAgICAgKyB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGFyZzEpKTsK KyAgICAgfQorICAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAodiwgYXJnMSk7CisgICBW QUxVRV9SRUdOVU0gKHYpID0gVkFMVUVfUkVHTlVNIChhcmcxKTsKKy0tIAorMS43LjkuNQorCgpk aWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTA2 b2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMyZDA1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0Y2gKQEAgLTAsMCArMSw2 NyBAQAorU3ViamVjdDogW1BBVENIIDA2LzIzXSB2bGE6IHJlY29uc3RydWN0IHZhbHVlIHRvIGNv bXB1dGUgYm91bmRzIG9mIHRhcmdldCB0eXBlCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQw LTctZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitQcmludGluZyBhIHBv aW50ZXIgdG8gYW4gYXJyYXksIGdkYiB0cmllcyB0byBwcmludCB0aGUKK3RhcmdldCB0eXBlIGlu Y2x1ZGluZyBpdHMgYm91bmRzLiBUbyBmb2xsb3cgdGhpcworc2VtYW50aWMgd2l0aCB2bGEsIHRo aXMgcGF0Y2ggcmUtY29uc3RydWN0cyB0aGUgdmFsdWUgdG8KK3Jlc29sdmUgdGhlIGJvdW5kcyBv ZiB0aGUgdGFyZ2V0IHR5cGUuCisKKzIwMTQtMDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1p ci5hZ292aWNAaW50ZWwuY29tPgorICAgICAgICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2Vs bEBpbnRlbC5jb20+CisKKwkqIHR5cGVwcmludC5jICh3aGF0aXNfZXhwKTogUmUtY29uc3RydWN0 IHZhbHVlIHRvCisJY29tcHV0ZSBib3VuZHMgb2YgdGFyZ2V0IHR5cGUuCisJKiBjLXZhbHByaW50 LmMgKGNfdmFsdWVfcHJpbnQpOiBSZS1jb25zdHJ1Y3QgdmFsdWUKKwl0byBjb21wdXRlIGJvdW5k cyBvZiB0YXJnZXQgdHlwZS4KKworQ2hhbmdlLUlkOiBJYThhMjUwMjFjN2NjMjA2NzExY2E2ZjM1 OWFlNTU2NmEzNjdlM2IzZAorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9l bGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL2MtdmFscHJpbnQuYyB8ICAgMTEgKysrKysrKysrKy0K KyBnZGIvdHlwZXByaW50LmMgIHwgICAgNyArKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNyBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvYy12YWxwcmlu dC5jIGIvZ2RiL2MtdmFscHJpbnQuYworaW5kZXggZjQ2OTRiMC4uOGM0NTI3NiAxMDA2NDQKKy0t LSBhL2dkYi9jLXZhbHByaW50LmMKKysrKyBiL2dkYi9jLXZhbHByaW50LmMKK0BAIC01MzgsNyAr NTM4LDE2IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAorIAl7CisgCSAgLyogbm9ybWFsIGNhc2UgKi8KKyAJICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIoIik7CistCSAgdHlwZV9wcmludCAodmFsdWVfdHlwZSAodmFsKSwgIiIs IHN0cmVhbSwgLTEpOworKwkgIGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKSkKKysJICAgIHsKKysJICAgICAgc3RydWN0IHZhbHVlICp2OworKworKwkgICAgICB2 ID0gdmFsdWVfaW5kICh2YWwpOworKwkgICAgICB2ID0gdmFsdWVfYWRkciAodik7CisrCSAgICAg IHR5cGVfcHJpbnQgKHZhbHVlX3R5cGUgKHYpLCAiIiwgc3RyZWFtLCAtMSk7CisrCSAgICB9Cisr CSAgZWxzZQorKwkgICAgdHlwZV9wcmludCAodmFsdWVfdHlwZSAodmFsKSwgIiIsIHN0cmVhbSwg LTEpOworIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikgIik7CisgCX0KKyAgICAgfQor ZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuYyBiL2dkYi90eXBlcHJpbnQuYworaW5kZXggYjRh ZDQzMS4uYjNjNzNhOCAxMDA2NDQKKy0tLSBhL2dkYi90eXBlcHJpbnQuYworKysrIGIvZ2RiL3R5 cGVwcmludC5jCitAQCAtNDU5LDYgKzQ1OSwxMyBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGlu dCBzaG93KQorIAorICAgdHlwZSA9IHZhbHVlX3R5cGUgKHZhbCk7CisgCisrICBpZiAoVFlQRV9D T0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorKyAgICBpZiAoaXNfZHluYW1pY190eXBlIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpCisrICAgICAgeworKwl2YWwgPSB2YWx1ZV9hZGRyICh2 YWx1ZV9pbmQgKHZhbCkpOworKwl0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKKysgICAgICB9Cisr CisgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisgICBpZiAob3B0cy5vYmplY3Rw cmludCkKKyAgICAgeworLS0gCisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVs LTA3b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMDdvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZWViZTIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxh LWludGVsLTA3b2YyMy5wYXRjaApAQCAtMCwwICsxLDIxMSBAQAorU3ViamVjdDogW1BBVENIIDA3 LzIzXSB2bGE6IHVzZSB2YWx1ZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHJhdy1idWZmZXIgbWFu aXB1bGF0aW9uCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTgtZ2l0LXNlbmQtZW1haWwt a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitJbnN0ZWFkIG9mIHByZS1jb21wdXRpbmcgaW5kaWNl cyBpbnRvIGEgZm9ydHJhbiBhcnJheSByZS11c2UKK3RoZSB2YWx1ZV8qIGludGVyZmFjZXMgdG8g c3Vic2NyaXB0IGEgZm9ydHJhbiBhcnJheS4KKworMjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMg IDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisgICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtl dmVuLmJvZWxsQGludGVsLmNvbT4KKworCSogZi12YWxwcmludC5jIChmNzdfY3JlYXRlX2FycmF5 cHJpbnRfb2Zmc2V0X3RibCk6IFJlbW92ZQorCWZ1bmN0aW9uLgorCShGNzdfRElNX1NJWkUsIEY3 N19ESU1fT0ZGU0VUKTogUmVtb3ZlIG1hY3JvLgorCShmNzdfcHJpbnRfYXJyYXlfMSk6IFVzZSB2 YWx1ZV9zdWJzY3JpcHQgdG8gc3Vic2NyaXB0IGEKKwl2YWx1ZSBhcnJheS4KKwkoZjc3X3ByaW50 X2FycmF5KTogUmVtb3ZlIGNhbGwgdG8gZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90Ymwu CisJKGZfdmFsX3ByaW50KTogVXNlIHZhbHVlX2ZpZWxkIHRvIGNvbnN0cnVjdCBhIGZpZWxkIHZh bHVlLgorCitDaGFuZ2UtSWQ6IEkwOWU0ODJjZWIxMTRlZWIwZjA4YjU1MjhkNDBmZmVkOGQ3OTEx OWVlCisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+ CistLS0KKyBnZGIvZi12YWxwcmludC5jIHwgIDExOCArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0 aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5j IGIvZ2RiL2YtdmFscHJpbnQuYworaW5kZXggZDhjNzY3Zi4uMWFiNWJkOCAxMDA2NDQKKy0tLSBh L2dkYi9mLXZhbHByaW50LmMKKysrKyBiL2dkYi9mLXZhbHByaW50LmMKK0BAIC0zOSw4ICszOSw2 IEBACisgCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCk7Cisgc3Rh dGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOworLXN0YXRpYyB2b2lk IGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqLAorLQkJCQkJ ICAgICAgc3RydWN0IHVpX2ZpbGUgKik7Cisgc3RhdGljIHZvaWQgZjc3X2dldF9keW5hbWljX2xl bmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICopOworIAorIGludCBmNzdfYXJyYXlfb2Zm c2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CitAQCAtNDgsMTUgKzQ2LDYgQEAgaW50 IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKKyAvKiBBcnJh eSB3aGljaCBob2xkcyBvZmZzZXRzIHRvIGJlIGFwcGxpZWQgdG8gZ2V0IGEgcm93J3MgZWxlbWVu dHMKKyAgICBmb3IgYSBnaXZlbiBhcnJheS4gIEFycmF5IGFsc28gaG9sZHMgdGhlIHNpemUgb2Yg ZWFjaCBzdWJhcnJheS4gICovCisgCistLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0 aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCistICAgbiBpcyAxIGJhc2VkLiAg Ki8KKy0KKy0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1b MV0pCistCistLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0IGZvciByb3cgbiB3 aGVyZSBuIGlzIDEtYmFzZWQuICAqLworLQorLSNkZWZpbmUgRjc3X0RJTV9PRkZTRVQobikgKGY3 N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorLQorIGludAorIGY3N19nZXRfbG93ZXJib3VuZCAo c3RydWN0IHR5cGUgKnR5cGUpCisgeworQEAgLTExNCw0NyArMTAzLDYgQEAgZjc3X2dldF9keW5h bWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgICAqIFRZUEVf TEVOR1RIIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpOworIH0KKyAK Ky0vKiBGdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIGFycmF5IG9mZnNldCxzaXplIHRhYmxlIGZv ciB0aGUgYXJyYXkgCistICAgdHlwZSAidHlwZSIuICAqLworLQorLXN0YXRpYyB2b2lkCistZjc3 X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtKQorLXsKKy0gIHN0cnVjdCB0eXBlICp0bXBfdHlwZTsKKy0gIGludCBl bHRsZW47CistICBpbnQgbmRpbWVuID0gMTsKKy0gIGludCB1cHBlciwgbG93ZXI7CistCistICB0 bXBfdHlwZSA9IHR5cGU7CistCistICB3aGlsZSAoVFlQRV9DT0RFICh0bXBfdHlwZSkgPT0gVFlQ RV9DT0RFX0FSUkFZKQorLSAgICB7CistICAgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQg KHRtcF90eXBlKTsKKy0gICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3VuZCAodG1wX3R5cGUp OworLQorLSAgICAgIEY3N19ESU1fU0laRSAobmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAxOwor LQorLSAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpOworLSAgICAg IG5kaW1lbisrOworLSAgICB9CistCistICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0bGVuIGJ5IGFs bCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKKy0gICAgIGNhbiBwcmludCBvdXQgYXJy YXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAgdGlsbCBub3cgd2UgCistICAgICBrbm93IGFuIG9m ZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0IHdlIGFsc28gCistICAgICBoYXZlIHRv IGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVtLiAgKi8KKy0KKy0g IG5kaW1lbi0tOworLSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKHRtcF90eXBlKTsKKy0gIEY3N19E SU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOworLSAgd2hpbGUgKC0tbmRpbWVuID4gMCkKKy0g ICAgeworLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEpOworLSAgICAg IEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOworLSAgICB9CistfQorLQorLQorLQor IC8qIEFjdHVhbCBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEY3NyBhcnJheXMsIFZhbGFkZHIg PT0gYWRkcmVzcyBpbiAKKyAgICB0aGUgc3VwZXJpb3IuICBBZGRyZXNzID09IHRoZSBhZGRyZXNz IGluIHRoZSBpbmZlcmlvci4gICovCisgCitAQCAtMTY3LDQxICsxMTUsNTYgQEAgZjc3X3ByaW50 X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCisg CQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKKyAJCSAgIGlu dCAqZWx0cykKKyB7CisrICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQ RSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworKyAgQ09SRV9BRERSIGFkZHIgPSBhZGRyZXNzICsg ZW1iZWRkZWRfb2Zmc2V0OworKyAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBlcmJvdW5kOworICAg aW50IGk7CisgCisrICBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3Vu ZCwgJnVwcGVyYm91bmQpOworKworICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKKyAgICAgewor LSAgICAgIGZvciAoaSA9IDA7CistCSAgIChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0 cykgPCBvcHRpb25zLT5wcmludF9tYXgpOworKyAgICAgIHNpemVfdCBkaW1fc2l6ZSA9IFRZUEVf TEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICAgICAgc2l6ZV90IG9mZnMgPSAw OworKworKyAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7CisrCSAgIChpIDwgdXBwZXJib3VuZCAr IDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CisgCSAgIGkrKykKKyAJeworKwkg IHN0cnVjdCB2YWx1ZSAqc3ViYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNz CisrCSAgICAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmlu dGluZ19jb25zdCAodmFsKQorKwkgICAgICsgb2ZmcywgYWRkciArIG9mZnMpOworKworIAkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7CistCSAgZjc3X3ByaW50X2FycmF5XzEgKG5z cyArIDEsIG5kaW1lbnNpb25zLCBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKKy0JCQkgICAgIHZh bGFkZHIsCistCQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5z cyksCistCQkJICAgICBhZGRyZXNzLAorLQkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9w dGlvbnMsIGVsdHMpOworKwkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGltZW5zaW9u cywgdmFsdWVfdHlwZSAoc3ViYXJyYXkpLAorKwkJCSAgICAgdmFsdWVfY29udGVudHNfZm9yX3By aW50aW5nIChzdWJhcnJheSksCisrCQkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKHN1YmFy cmF5KSwKKysJCQkgICAgIHZhbHVlX2FkZHJlc3MgKHN1YmFycmF5KSwKKysJCQkgICAgIHN0cmVh bSwgcmVjdXJzZSwgc3ViYXJyYXksIG9wdGlvbnMsIGVsdHMpOworKwkgIG9mZnMgKz0gZGltX3Np emU7CisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKKyAJfQorLSAgICAgIGlm ICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8IEY3N19ESU1fU0laRSAobnNzKSkg CisrICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgdXBwZXJib3Vu ZCkKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CisgICAgIH0KKyAgIGVsc2UK KyAgICAgeworLSAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCpl bHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKKysgICAgICBmb3IgKGkgPSBsb3dlcmJvdW5kOyBp IDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKKyAJICAg aSsrLCAoKmVsdHMpKyspCisgCXsKKy0JICB2YWxfcHJpbnQgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpLAorLQkJICAgICB2YWxhZGRyLAorLQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICogRjc3 X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKKy0JCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1 cnNlLAorLQkJICAgICB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOworKwkgIHN0cnVj dCB2YWx1ZSAqZWx0ID0gdmFsdWVfc3Vic2NyaXB0ICgoc3RydWN0IHZhbHVlICopdmFsLCBpKTsK KysKKysJICB2YWxfcHJpbnQgKHZhbHVlX3R5cGUgKGVsdCksCisrCQkgICAgIHZhbHVlX2NvbnRl bnRzX2Zvcl9wcmludGluZyAoZWx0KSwKKysJCSAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChl bHQpLAorKwkJICAgICB2YWx1ZV9hZGRyZXNzIChlbHQpLCBzdHJlYW0sIHJlY3Vyc2UsCisrCQkg ICAgIGVsdCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CisgCistCSAgaWYgKGkgIT0gKEY3 N19ESU1fU0laRSAobnNzKSAtIDEpKQorKwkgIGlmIChpICE9IHVwcGVyYm91bmQpCisgCSAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOworIAorIAkgIGlmICgoKmVsdHMgPT0gb3B0 aW9ucy0+cHJpbnRfbWF4IC0gMSkKKy0JICAgICAgJiYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNz KSAtIDEpKSkKKysJICAgICAgJiYgKGkgIT0gdXBwZXJib3VuZCkpCisgCSAgICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAJfQorICAgICB9CitAQCAtMjI4LDEyICsxOTEsNiBA QCBmNzdfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKKyBUeXBlIG5vZGUgY29ycnVwdCEgRjc3IGFycmF5cyBjYW5ub3QgaGF2ZSAlZCBzdWJz Y3JpcHRzICglZCBNYXgpIiksCisgCSAgIG5kaW1lbnNpb25zLCBNQVhfRk9SVFJBTl9ESU1TKTsK KyAKKy0gIC8qIFNpbmNlIEY3NyBhcnJheXMgYXJlIHN0b3JlZCBjb2x1bW4tbWFqb3IsIHdlIHNl dCB1cCBhbiAKKy0gICAgIG9mZnNldCB0YWJsZSB0byBnZXQgYXQgdGhlIHZhcmlvdXMgcm93J3Mg ZWxlbWVudHMuICBUaGUgCistICAgICBvZmZzZXQgdGFibGUgY29udGFpbnMgZW50cmllcyBmb3Ig Ym90aCBvZmZzZXQgYW5kIHN1YmFycmF5IHNpemUuICAqLworLQorLSAgZjc3X2NyZWF0ZV9hcnJh eXByaW50X29mZnNldF90YmwgKHR5cGUsIHN0cmVhbSk7CistCisgICBmNzdfcHJpbnRfYXJyYXlf MSAoMSwgbmRpbWVuc2lvbnMsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNldCwKKyAJCSAg ICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsICZlbHRzKTsKKyB9CitA QCAtMzc4LDEyICszMzUsMTUgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKKyAgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOworICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8 IFRZUEVfTkZJRUxEUyAodHlwZSk7IGluZGV4KyspCisgICAgICAgICB7CistICAgICAgICAgIGlu dCBvZmZzZXQgPSBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaW5kZXgpIC8gODsKKysJICBzdHJ1 Y3QgdmFsdWUgKmZpZWxkID0gdmFsdWVfZmllbGQKKysJICAgICgoc3RydWN0IHZhbHVlICopb3Jp Z2luYWxfdmFsdWUsIGluZGV4KTsKKysKKysgICAgICAgICAgdmFsX3ByaW50ICh2YWx1ZV90eXBl IChmaWVsZCksCisrCQkgICAgIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAoZmllbGQpLAor KwkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGZpZWxkKSwKKysJCSAgICAgdmFsdWVfYWRk cmVzcyAoZmllbGQpLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAorKwkJICAgICBmaWVsZCwgb3B0aW9u cywgY3VycmVudF9sYW5ndWFnZSk7CisgCistICAgICAgICAgIHZhbF9wcmludCAoVFlQRV9GSUVM RF9UWVBFICh0eXBlLCBpbmRleCksIHZhbGFkZHIsCistCQkgICAgIGVtYmVkZGVkX29mZnNldCAr IG9mZnNldCwKKy0JCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlICsgMSwKKy0JCSAgICAg b3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOworICAgICAgICAgICBp ZiAoaW5kZXggIT0gVFlQRV9ORklFTERTICh0eXBlKSAtIDEpCisgICAgICAgICAgICAgZnB1dHNf ZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7CisgICAgICAgICB9CistLSAKKzEuNy45LjUKKwoKZGlm ZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDhvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wOG9m MjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU1OWQwMAotLS0g L2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMDhvZjIzLnBhdGNoCkBAIC0wLDAgKzEsNDkg QEAKK1N1YmplY3Q6IFtQQVRDSCAwOC8yM10gdmxhOiBnZXQgZHluYW1pYyBhcnJheSBjb3JuZXIg Y2FzZXMgdG8gd29yaworTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC05LWdpdC1zZW5kLWVt YWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKworVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVyd3Jp dGUgdGhlIHZhbHVlIHR5cGUgaW4KK2Nhc2UgaXQgaXMgYSBkeW5hbWljIHR5cGUuIEZvciBkeW5h bWljIHR5cGVzIEdEQgorcmVzb2x2ZWQgaXRzIGR5bmFtaWMgdmFsdWVzIGluIGEgY29weSBvZiB0 aGUgdHlwZS4KK1RoZSBjYWxsIHRvIGRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5cGUgb3ZlcndyaXRl cyB0aGUKK3Jlc29sdmVkIHR5cGUgd2l0aCB0aGUgb3JpZ2luYWwgdHlwZSwgd2hpY2ggYnJlYWtz CitlLmcuIHBvaW50ZXIgdG8gYSBGb3J0cmFuIHR5cGUsIHdoaWNoIGNvbnRhaW5zIGEgZHluYW1p YworYXJyYXkuCisKK09sZDoKKyhnZGIpIHByaW50ICZ2bGExCisoUFRSIFRPIC0+ICggcmVhbChr aW5kPTQpICgyMzk1OTEzNjoyMzk1OTE4NCkpKSAweDdmZmZmZmZmZDQ5MAorCitOZXc6CisoZ2Ri KSBwcmludCAmdmxhMQorKFBUUiBUTyAtPiAoIHJlYWwoa2luZD00KSAoNSkpKSAweDdmZmZmZmZm ZDQ5MAorCisyMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4K KyAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgor CisJKiB2YWx1ZS5jIChyZWFkanVzdF9pbmRpcmVjdF92YWx1ZV90eXBlKTogQWRkCisJY2hlY2sg Zm9yIGR5bmFtaWMgdHlwZXMuCisKK0NoYW5nZS1JZDogSWYxYzZmYjBiZDNjMWQwNDYxOWU4OWEx YjU4ODUwZWRiNjliYmZkZTAKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJv ZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi92YWx1ZS5jIHwgICAgMyArKy0KKyAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIv dmFsdWUuYyBiL2dkYi92YWx1ZS5jCitpbmRleCAxZjBkOWE0Li43YWJiMjBhIDEwMDY0NAorLS0t IGEvZ2RiL3ZhbHVlLmMKKysrKyBiL2dkYi92YWx1ZS5jCitAQCAtMzUwNCw3ICszNTA0LDggQEAg cmVhZGp1c3RfaW5kaXJlY3RfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0 IHR5cGUgKmVuY190eXBlLAorIAkJCSAgICAgIHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxfdmFsdWUp CisgeworICAgLyogUmUtYWRqdXN0IHR5cGUuICAqLworLSAgZGVwcmVjYXRlZF9zZXRfdmFsdWVf dHlwZSAodmFsdWUsIFRZUEVfVEFSR0VUX1RZUEUgKG9yaWdpbmFsX3R5cGUpKTsKKysgIGlmICgh aXNfZHluYW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFIChvcmlnaW5hbF90eXBlKSkpCisrICAg IGRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5cGUgKHZhbHVlLCBUWVBFX1RBUkdFVF9UWVBFIChvcmln aW5hbF90eXBlKSk7CisgCisgICAvKiBBZGQgZW1iZWRkaW5nIGluZm8uICAqLworICAgc2V0X3Zh bHVlX2VuY2xvc2luZ190eXBlICh2YWx1ZSwgZW5jX3R5cGUpOworLS0gCisxLjcuOS41CisKCmRp ZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMDlv ZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MmJjYzUKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaApAQCAtMCwwICsxLDMx NiBAQAorU3ViamVjdDogW1BBVENIIDA5LzIzXSB2bGE6IGNoYW5nZWQgc3RyaW5nIGxlbmd0aCBz ZW1hbnRpYy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTAtZ2l0LXNlbmQtZW1haWwt a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHNlbWFudGlj IG9mIHRoZSBEd2FyZiBzdHJpbmcgbGVuZ3RoCithdHRyaWJ1dGUgdG8gcmVmbGVjdCB0aGUgc3Rh bmRhcmQuIFRoaXMgc2VydmVzIGFzIHByZS13b3JrCit0byBnZXQgdmFyaWFibGUgc3RyaW5ncyBp biBGb3J0cmFuIHRvIHdvcmsuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9l bGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3Zp Y0BpbnRlbC5jb20+CisKKwkqIGR3YXJmMnJlYWQuYyAocmVhZF90YWdfc3RyaW5nX3R5cGUpOiBj aGFuZ2VkCisJc2VtYW50aWMgb2YgRFdfQVRfc3RyaW5nX2xlbmd0aCB0byBiZSBhYmxlIHRvCisJ aGFuZGxlIER3YXJmIGJsb2NrcyBhcyB3ZWxsLiBTdXBwb3J0IGZvcgorCURXX0FUX2J5dGVfbGVu Z3RoIGFkZGVkIHRvIGdldCBjb3JyZWN0IGxlbmd0aAorCWlmIHNwZWNpZmllZCBpbiBjb21iaW5h dGlvbiB3aXRoCisJRFdfQVRfc3RyaW5nX2xlbmd0aC4KKwkoYXR0cl90b19keW5hbWljX3Byb3Ap OiBhZGRlZAorCWZ1bmN0aW9uYWxpdHkgdG8gYWRkIER3YXJmIG9wZXJhdG9ycyB0byBiYXRvbgor CWRhdGEgYXR0cmlidXRlLiBBZGRlZCBwb3N0IHZhbHVlcyB0byBiYXRvbgorCWFzIHJlcXVpcmVk IGJ5IHRoZSBzdHJpbmcgZXZhbHVhdGlvbiBjYXNlLgorCShyZWFkX3N1YnJhbmdlX3R5cGUpOiBB ZGFwdCBjYWxsZXIuCisJKHNldF9kaWVfdHlwZSk6IEFkYXB0IGNhbGxlci4KKwkoYWRkX3Bvc3Rf dmFsdWVzX3RvX2JhdG9uKTogTmV3IGZ1bmN0aW9uLgorCSogZHdhcmYybG9jLmMgKGR3YXJmMl9l dmFsdWF0ZV9wcm9wZXJ0eSk6IEV2YWx1YXRlCisJcG9zdCBwcm9jZXNzaW5nIGR3YXJmLgorCSog ZHdhcmYybG9jLmggKHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24pOiBBZGQKKwlwb3N0IGR3 YXJmIHZhbHVlcyBhdHRyaWJ1dGUuCisKK0NoYW5nZS1JZDogSTZlZGZhMDA1ZjQxNmNkZGM4ZTM2 NGQzNDg5MWI5YWJmNmI0NGY3NTcKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVu LmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi9kd2FyZjJsb2MuYyAgfCAgIDEwICsrKysrCisg Z2RiL2R3YXJmMmxvYy5oICB8ICAgIDMgKysKKyBnZGIvZHdhcmYycmVhZC5jIHwgIDEyOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyAzIGZp bGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYworaW5kZXggN2FiNzM0ZC4u MjQ3M2Y4MCAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxv Yy5jCitAQCAtMjUzMyw2ICsyNTMzLDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29u c3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSIGFkZHJlc3MsCisgCisgCQkq dmFsdWUgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworIAkgICAgICB9CisrCSAgICBpZiAoYmF0 b24tPnBvc3RfdmFsdWVzLmRhdGEgJiYgYmF0b24tPnBvc3RfdmFsdWVzLnNpemUgPiAwKQorKwkg ICAgICB7CisrCSAgICAgICAgQ09SRV9BRERSIG5ld19hZGRyID0gKnZhbHVlOworKwkgICAgICAg IGR3YXJmMl9sb2NleHByX2JhdG9uX2V2YWwgKCZiYXRvbi0+cG9zdF92YWx1ZXMsIG5ld19hZGRy LCB2YWx1ZSk7CisrCSAgICAgIH0KKyAJICAgIHJldHVybiAxOworIAkgIH0KKyAgICAgICB9CitA QCAtMjU1NSw2ICsyNTYwLDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29uc3Qgc3Ry dWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSIGFkZHJlc3MsCisgCSAgICBpZiAoIXZh bHVlX29wdGltaXplZF9vdXQgKHZhbCkpCisgCSAgICAgIHsKKyAJCSp2YWx1ZSA9IHZhbHVlX2Fz X2FkZHJlc3MgKHZhbCk7CisrCQlpZiAoYmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgJiYgYmF0b24t PnBvc3RfdmFsdWVzLnNpemUgPiAwKQorKwkJICB7CisrCQkgICAgQ09SRV9BRERSIG5ld19hZGRy ID0gKnZhbHVlOworKwkJICAgIGR3YXJmMl9sb2NleHByX2JhdG9uX2V2YWwgKCZiYXRvbi0+cG9z dF92YWx1ZXMsIG5ld19hZGRyLCB2YWx1ZSk7CisrCQkgIH0KKyAJCXJldHVybiAxOworIAkgICAg ICB9CisgCSAgfQorZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2Mu aAoraW5kZXggZmI2NWM1Yy4uY2Y2NDhlYiAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuaAor KysrIGIvZ2RiL2R3YXJmMmxvYy5oCitAQCAtMTY4LDYgKzE2OCw5IEBAIHN0cnVjdCBkd2FyZjJf cHJvcGVydHlfYmF0b24KKyAgICAgLyogTG9jYXRpb24gbGlzdCB0byBiZSBldmFsdWF0ZWQgaW4g dGhlIGNvbnRleHQgb2YgUkVGRVJFTkNFRF9UWVBFLiAgKi8KKyAgICAgc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uIGxvY2xpc3Q7CisgICB9OworKworKyAgLyogQXR0cmlidXRlcywgd2hpY2gg d2lsbCBiZSBwdXNoZWQgYWZ0ZXIgZXZhbHVhdGluZyBsb2NleHByIG9yIGxvY2xpc3QuICAqLwor KyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIHBvc3RfdmFsdWVzOworIH07CisgCisgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNz OworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCitpbmRl eCBlYTY2NjAyLi4wYjIzNzAxIDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIv Z2RiL2R3YXJmMnJlYWQuYworQEAgLTE4NDIsNiArMTg0MiwxNSBAQCBzdGF0aWMgdm9pZCBmcmVl X2R3b19maWxlX2NsZWFudXAgKHZvaWQgKik7Cisgc3RhdGljIHZvaWQgcHJvY2Vzc19jdV9pbmNs dWRlcyAodm9pZCk7CisgCisgc3RhdGljIHZvaWQgY2hlY2tfcHJvZHVjZXIgKHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KTsKKysKKytzdGF0aWMgaW50CisrYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorKwkJICAgICAg c3RydWN0IGR3YXJmMl9jdSAqY3UsIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsCisrCQkgICAg ICBjb25zdCBnZGJfYnl0ZSAqYWRkaXRpb25hbF9kYXRhLCBpbnQgYWRkaXRpb25hbF9kYXRhX3Np emUpOworKworK3N0YXRpYyB2b2lkIGFkZF9wb3N0X3ZhbHVlc190b19iYXRvbiAoc3RydWN0IGR3 YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24sCisrICAgICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0 YSwgaW50IHNpemUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKyAMCisgLyogVmFyaW91cyBj b21wbGFpbnRzIGFib3V0IHN5bWJvbCByZWFkaW5nIHRoYXQgZG9uJ3QgYWJvcnQgdGhlIHByb2Nl c3MuICAqLworIAorQEAgLTE0MDI5LDI5ICsxNDAzOCw5MCBAQCByZWFkX3RhZ19zdHJpbmdfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKKyAgIHN0cnVj dCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CisgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOworLSAgdW5zaWduZWQgaW50IGxlbmd0aDsKKysgIHVuc2ln bmVkIGludCBsZW5ndGggPSBVSU5UX01BWDsKKysKKysgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5 cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKKysgIHJhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGlj X3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7CisgCisrICAvKiBJZiBE V19BVF9zdHJpbmdfbGVuZ3RoIGlzIGRlZmluZWQsIHRoZSBsZW5ndGggaXMgc3RvcmVkIGF0IHNv bWUgbG9jYXRpb24KKysgICAqIGluIG1lbW9yeS4gKi8KKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF9zdHJpbmdfbGVuZ3RoLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAgeworLSAg ICAgIGxlbmd0aCA9IERXX1VOU05EIChhdHRyKTsKKysgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Js b2NrIChhdHRyKSkKKysgICAgICAgIHsKKysgICAgICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqYnl0 ZV9zaXplLCAqYml0X3NpemU7CisrICAgICAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3AgaGlnaDsK KysKKysgICAgICAgICAgYnl0ZV9zaXplID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9z aXplLCBjdSk7CisrICAgICAgICAgIGJpdF9zaXplID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf Yml0X3NpemUsIGN1KTsKKysKKysgICAgICAgICAgLyogRFdfQVRfYnl0ZV9zaXplIHNob3VsZCBu ZXZlciBvY2N1ciB0b2dldGhlciBpbiBjb21iaW5hdGlvbiB3aXRoCisrICAgICAgICAgICAgIERX X0FUX3N0cmluZ19sZW5ndGguICAqLworKyAgICAgICAgICBpZiAoKGJ5dGVfc2l6ZSA9PSBOVUxM ICYmIGJpdF9zaXplICE9IE5VTEwpIHx8CisrICAgICAgICAgICAgICAgICAgKGJ5dGVfc2l6ZSAh PSBOVUxMICYmIGJpdF9zaXplID09IE5VTEwpKQorKyAgICAgICAgICAgIGNvbXBsYWludCAoJnN5 bWZpbGVfY29tcGxhaW50cywgXygiRFdfQVRfYnl0ZV9zaXplIEFORCAiCisrICAgICAgICAgICAg ICAgICAgICAgICJEV19BVF9iaXRfc2l6ZSBmb3VuZCB0b2dldGhlciBhdCB0aGUgc2FtZSB0aW1l LiIpKTsKKysKKysgICAgICAgICAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0aCBBTkQgRFdfQVRf Ynl0ZV9zaXplIGV4aXN0IHRvZ2V0aGVyLCBpdAorKyAgICAgICAgICAgICBkZXNjcmliZXMgdGhl IG51bWJlciBvZiBieXRlcyB0aGF0IHNob3VsZCBiZSByZWFkIGZyb20gdGhlIGxlbmd0aAorKyAg ICAgICAgICAgICBtZW1vcnkgbG9jYXRpb24uICAqLworKyAgICAgICAgICBpZiAoYnl0ZV9zaXpl ICE9IE5VTEwgJiYgYml0X3NpemUgPT0gTlVMTCkKKysgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAvKiBCdWlsZCBuZXcgZHdhcmYyX2xvY2V4cHJfYmF0b24gc3RydWN0dXJlIHdpdGggYWRk aXRpb25zIHRvIHRoZQorKyAgICAgICAgICAgICAgICAgZGF0YSBhdHRyaWJ1dGUsIHRvIHJlZmxl Y3QgRFdBUkYgc3BlY2lhbGl0aWVzIHRvIGdldCBhZGRyZXNzCisrICAgICAgICAgICAgICAgICBz aXplcy4gICovCisrICAgICAgICAgICAgICBjb25zdCBnZGJfYnl0ZSBhcHBlbmRfb3BzW10gPSB7 CisrICAgICAgICAgICAgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MsCisrICAgICAgICAg ICAgICAgIC8qIERXX09QX2RlcmVmX3NpemU6IHNpemUgb2YgYW4gYWRkcmVzcyBvbiB0aGUgdGFy Z2V0IG1hY2hpbmUKKysgICAgICAgICAgICAgICAgICAgKGJ5dGVzKSwgd2hlcmUgdGhlIHNpemUg d2lsbCBiZSBzcGVjaWZpZWQgYnkgdGhlIG5leHQKKysgICAgICAgICAgICAgICAgICAgb3BlcmFu ZC4gICovCisrICAgICAgICAgICAgICAgIERXX09QX2RlcmVmX3NpemUsCisrICAgICAgICAgICAg ICAgIC8qIE9wZXJhbmQgZm9yIERXX09QX2RlcmVmX3NpemUuICAqLworKyAgICAgICAgICAgICAg ICBEV19VTlNORCAoYnl0ZV9zaXplKSB9OworKworKyAgICAgICAgICAgICAgaWYgKCFhdHRyX3Rv X2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsCisrICAgICAgICAgICAgICAgICAg ICAgIGFwcGVuZF9vcHMsIEFSUkFZX1NJWkUgKGFwcGVuZF9vcHMpKSkKKysgICAgICAgICAgICAg ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgIF8oIkNvdWxkIG5vdCBwYXJzZSBEV19BVF9ieXRlX3NpemUiKSk7CisrICAgICAgICAgICAg fQorKyAgICAgICAgICBlbHNlIGlmIChiaXRfc2l6ZSAhPSBOVUxMICYmIGJ5dGVfc2l6ZSA9PSBO VUxMKQorKyAgICAgICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiRFdf QVRfc3RyaW5nX2xlbmd0aCBBTkQgIgorKyAgICAgICAgICAgICAgICAgICAgICAiRFdfQVRfYml0 X3NpemUgZm91bmQgYnV0IG5vdCBzdXBwb3J0ZWQgeWV0LiIpKTsKKysgICAgICAgICAgLyogSWYg RFdfQVRfc3RyaW5nX2xlbmd0aCBXSVRIT1VUIERXX0FUX2J5dGVfc2l6ZSBleGlzdCwgdGhlIGRl ZmF1bHQKKysgICAgICAgICAgICAgaXMgdGhlIGFkZHJlc3Mgc2l6ZSBvZiB0aGUgdGFyZ2V0IG1h Y2hpbmUuICAqLworKyAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEws IDApKQorKyAgICAgICAgICAgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgXygiQ291bGQgbm90IHBhcnNlIERXX0FUX3N0cmluZ19s ZW5ndGgiKSk7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5oaWdoID0gaGlnaDsKKysgICAgICAgIH0KKysgICAgICBlbHNlCisrICAg ICAgICB7CisrICAgICAgICAgIFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBEV19VTlNO RCAoYXR0cik7CisrICAgICAgICAgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9 IFBST1BfQ09OU1Q7CisrICAgICAgICB9CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAg IC8qIENoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0dHJpYnV0ZS4gICovCisrICAgICAg LyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLCB3aGljaCByZXByZXNl bnRzIHRoZSBsZW5ndGgKKysgICAgICAgICBpbiB0aGlzIGNhc2UuICAqLworICAgICAgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKyAgICAgICBpZiAoYXR0 cikKKyAgICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOworKyAg ICAgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gRFdfVU5TTkQgKGF0dHIpOwor KyAgICAgICAgICBUWVBFX0hJR0hfQk9VTkRfS0lORCAocmFuZ2VfdHlwZSkgPSBQUk9QX0NPTlNU OworICAgICAgICAgfQorICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3Ro ID0gMTsKKysgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7CisrICAg ICAgICAgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBST1BfQ09OU1Q7Cisg ICAgICAgICB9CisgICAgIH0KKyAKKy0gIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZp bGUpLT5idWlsdGluX2ludDsKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5 cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7CisgICBjaGFyX3R5cGUgPSBsYW5ndWFn ZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7CisgICB0eXBl ID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOworIAor QEAgLTE0MzY4LDEzICsxNDQzOCwzNiBAQCByZWFkX2Jhc2VfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGll LCB0eXBlLCBjdSk7CisgfQorIAorKy8qIEFkZCBwb3N0IHByb2Nlc3Npbmcgb3AtY29kZXMgdG8g YSBkd2FyZjJfcHJvcGVydHlfYmF0b24uICAqLworKworK3N0YXRpYyB2b2lkIGFkZF9wb3N0X3Zh bHVlc190b19iYXRvbiAoc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24sCisrICAg ICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgaW50IHNpemUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorK3sKKysgIGlmIChkYXRhICE9IE5VTEwgJiYgc2l6ZSA+IDApCisrICAgIHsKKysgICAgICBz dHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayA9ICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrOwor KyAgICAgIGdkYl9ieXRlICpwb3N0X2RhdGE7CisrCisrICAgICAgcG9zdF9kYXRhID0gb2JzdGFj a19hbGxvYyAob2JzdGFjaywgc2l6ZSk7CisrICAgICAgbWVtY3B5KHBvc3RfZGF0YSwgZGF0YSwg c2l6ZSk7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgPSBwb3N0X2RhdGE7CisrICAg ICAgYmF0b24tPnBvc3RfdmFsdWVzLnNpemUgPSBzaXplOworKyAgICAgIGJhdG9uLT5wb3N0X3Zh bHVlcy5wZXJfY3UgPSBjdS0+cGVyX2N1OworKyAgICB9IGVsc2UgeworKyAgICAgIGJhdG9uLT5w b3N0X3ZhbHVlcy5kYXRhID0gTlVMTDsKKysgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA9 IDA7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLnBlcl9jdSA9IE5VTEw7CisrICAgIH0KKyt9 CisrCisgLyogUGFyc2UgZHdhcmYgYXR0cmlidXRlIGlmIGl0J3MgYSBibG9jaywgcmVmZXJlbmNl IG9yIGNvbnN0YW50IGFuZCBwdXQgdGhlCisgICAgcmVzdWx0aW5nIHZhbHVlIG9mIHRoZSBhdHRy aWJ1dGUgaW50byBzdHJ1Y3QgYm91bmRfcHJvcC4KKyAgICBSZXR1cm5zIDEgaWYgQVRUUiBjb3Vs ZCBiZSByZXNvbHZlZCBpbnRvIFBST1AsIDAgb3RoZXJ3aXNlLiAgKi8KKyAKKyBzdGF0aWMgaW50 CisgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0 cnVjdCBkaWVfaW5mbyAqZGllLAorLQkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsIHN0cnVj dCBkeW5hbWljX3Byb3AgKnByb3ApCisrCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3Ry dWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKysJCSAgICAgIGNvbnN0IGdkYl9ieXRlICphZGRpdGlv bmFsX2RhdGEsIGludCBhZGRpdGlvbmFsX2RhdGFfc2l6ZSkKKyB7CisgICBzdHJ1Y3QgZHdhcmYy X3Byb3BlcnR5X2JhdG9uICpiYXRvbjsKKyAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrID0gJmN1 LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2s7CitAQCAtMTQzODcsOCArMTQ0ODAsMTAgQEAgYXR0 cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBk aWVfaW5mbyAqZGllLAorICAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAob2JzdGFjaywgc2l6 ZW9mICgqYmF0b24pKTsKKyAgICAgICBiYXRvbi0+cmVmZXJlbmNlZF90eXBlID0gTlVMTDsKKyAg ICAgICBiYXRvbi0+bG9jZXhwci5wZXJfY3UgPSBjdS0+cGVyX2N1OworLSAgICAgIGJhdG9uLT5s b2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CisgICAgICAgYmF0b24tPmxvY2V4 cHIuZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKysgICAgICBiYXRvbi0+bG9jZXhwci5z aXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOworKyAgICAgIGFkZF9wb3N0X3ZhbHVlc190b19i YXRvbiAoYmF0b24sIGFkZGl0aW9uYWxfZGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFkZGl0aW9uYWxfZGF0YV9zaXplLCBjdSk7CisgICAgICAgcHJvcC0+ZGF0YS5iYXRv biA9IGJhdG9uOworICAgICAgIHByb3AtPmtpbmQgPSBQUk9QX0xPQ0VYUFI7CisgICAgICAgZ2Ri X2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNDQwOSw2ICsxNDUwNCw4 IEBAIGF0dHJfdG9fZHluYW1pY19wcm9wIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBz dHJ1Y3QgZGllX2luZm8gKmRpZSwKKyAJICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKG9ic3RhY2ss IHNpemVvZiAoKmJhdG9uKSk7CisgCSAgYmF0b24tPnJlZmVyZW5jZWRfdHlwZSA9IGRpZV90eXBl ICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworIAkgIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoY3Us ICZiYXRvbi0+bG9jbGlzdCwgdGFyZ2V0X2F0dHIpOworKwkgIGFkZF9wb3N0X3ZhbHVlc190b19i YXRvbiAoYmF0b24sIGFkZGl0aW9uYWxfZGF0YSwKKysJICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkZGl0aW9uYWxfZGF0YV9zaXplLCBjdSk7CisgCSAgcHJvcC0+ZGF0YS5iYXRvbiA9IGJh dG9uOworIAkgIHByb3AtPmtpbmQgPSBQUk9QX0xPQ0xJU1Q7CisgCSAgZ2RiX2Fzc2VydCAocHJv cC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNDQyMCw2ICsxNDUxNyw4IEBAIGF0dHJfdG9f ZHluYW1pY19wcm9wIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKKyAJICBiYXRvbi0+bG9jZXhwci5wZXJfY3UgPSBjdS0+cGVyX2N1OworIAkgIGJh dG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplOworIAkgIGJh dG9uLT5sb2NleHByLmRhdGEgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5kYXRhOworKwkgIGFk ZF9wb3N0X3ZhbHVlc190b19iYXRvbiAoYmF0b24sIGFkZGl0aW9uYWxfZGF0YSwKKysJICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YV9zaXplLCBjdSk7CisgCSAgcHJv cC0+ZGF0YS5iYXRvbiA9IGJhdG9uOworIAkgIHByb3AtPmtpbmQgPSBQUk9QX0xPQ0VYUFI7Cisg CSAgZ2RiX2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNDUwOSwxNyAr MTQ2MDgsMTcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf bG93ZXJfYm91bmQsIGN1KTsKKyAgIGlmIChhdHRyKQorLSAgICBhdHRyX3RvX2R5bmFtaWNfcHJv cCAoYXR0ciwgZGllLCBjdSwgJmxvdyk7CisrICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRy LCBkaWUsIGN1LCAmbG93LCBOVUxMLCAwKTsKKyAgIGVsc2UgaWYgKCFsb3dfZGVmYXVsdF9pc192 YWxpZCkKKyAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJNaXNzaW5nIERX X0FUX2xvd2VyX2JvdW5kICIKKyAJCQkJICAgICAgIi0gRElFIGF0IDB4JXggW2luIG1vZHVsZSAl c10iKSwKKyAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxlX25hbWUgKGN1LT5v YmpmaWxlKSk7CisgCisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91 bmQsIGN1KTsKKy0gIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZo aWdoKSkKKysgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZoaWdo LCBOVUxMLCAwKSkKKyAgICAgeworICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9jb3VudCwgY3UpOworLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGll LCBjdSwgJmhpZ2gpKQorKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGll LCBjdSwgJmhpZ2gsIE5VTEwsIDApKQorIAl7CisgCSAgLyogSWYgYm91bmRzIGFyZSBjb25zdGFu dCBkbyB0aGUgZmluYWwgY2FsY3VsYXRpb24gaGVyZS4gICovCisgCSAgaWYgKGxvdy5raW5kID09 IFBST1BfQ09OU1QgJiYgaGlnaC5raW5kID09IFBST1BfQ09OU1QpCitAQCAtMjE1MjAsNyArMjE2 MTksNyBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgZHluYW1p Y19wcm9wIHByb3A7CisgCistICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBk aWUsIGN1LCAmcHJvcCkpCisrICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBk aWUsIGN1LCAmcHJvcCwgTlVMTCwgMCkpCisgICAgICAgICB7CisgICAgICAgICAgIFRZUEVfQUxM T0NBVEVEX1BST1AgKHR5cGUpCisgICAgICAgICAgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKK0BAIC0yMTUzNCw3ICsyMTYzMyw3 IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgeworICAgICAgIHN0cnVjdCBkeW5hbWljX3By b3AgcHJvcDsKKyAKKy0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwg Y3UsICZwcm9wKSkKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwg Y3UsICZwcm9wLCBOVUxMLCAwKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgVFlQRV9BU1NPQ0lB VEVEX1BST1AgKHR5cGUpCisgICAgICAgICAgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKK0BAIC0yMTU0OCw3ICsyMTY0Nyw3IEBA IHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgeworICAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3Ag cHJvcDsKKyAKKy0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3Us ICZwcm9wKSkKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3Us ICZwcm9wLCBOVUxMLCAwKSkKKyAJeworIAkgIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkKKyAJ ICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mIChw cm9wKSk7CistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTBvZjIz LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xMG9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMTQ1NTk3OAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwt MTBvZjIzLnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK1N1YmplY3Q6IFtQQVRDSCAxMC8yM10gdmxh OiBnZXQgRm9ydHJhbiBkeW5hbWljIHN0cmluZ3Mgd29ya2luZy4KK01lc3NhZ2UtSWQ6IDwxNDAx ODYxMjY2LTYyNDAtMTEtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitU aGlzIHBhdGNoIGVuYWJsZXMgdGhlIGNvcnJlY3QgY2FsY3VsYXRpb24gb2YgZHluYW1pYworc3Ry aW5nIGxlbmd0aC4KKworT2xkOgorKGdkYikgcCBteV9keW5fc3RyaW5nCiskMSA9IChQVFIgVE8g LT4gKCBjaGFyYWN0ZXIqMjM5NTkxMzYgKSkgMHg2MDVmYzAKKworKGdkYikgcCAqbXlfZHluX3N0 cmluZworQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDYwNWZjMAorCitOZXc6Ciso Z2RiKSBwIG15X2R5bl9zdHJpbmcKKyQxID0gKFBUUiBUTyAtPiAoIGNoYXJhY3RlcioxMCApKSAw eDYwNWZjMAorCisoZ2RiKSBwICpteV9keW5fc3RyaW5nCiskMiA9ICdmb28nCisKKzIwMTQtMDUt MjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2Fu aW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKKwkqIGdkYnR5cGVzLmMg KHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkCisJY29uZGl0aW9ucyB0byBzdXBwb3J0IHN0cmlu ZyB0eXBlcy4KKwkocmVzb2x2ZV9keW5hbWljX2FycmF5KTogQWRkIGNvbmRpdGlvbnMgZm9yIGR5 bmFtaWMKKwlzdHJpbmdzIGFuZCBjcmVhdGUgYSBuZXcgc3RyaW5nIHR5cGUuCisJKGlzX2R5bmFt aWNfdHlwZSk6IEZvbGxvdyBwb2ludGVyIGlmIGEgc3RyaW5nIHR5cGUKKwl3YXMgZGV0ZWN0ZWQs IGFzIEZvcnRyYW4gc3RyaW5ncyBhcmUgcmVwcmVzZW50ZWQKKwlhcyBwb2ludGVycyB0byBzdHJp bmdzIGludGVybmFsbHkuCisKK0NoYW5nZS1JZDogSTdkNTRkNzYyYTA4MWNlMDM0YmUzN2FjM2Uz NjhiYWM4MTExZGM0ZTYKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxs QGludGVsLmNvbT4KKy0tLQorIGdkYi9nZGJ0eXBlcy5jIHwgICAyNCArKysrKysrKysrKysrKysr KysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMo LSkKKworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dkYnR5cGVzLmMJMjAxNC0wNi0x NCAxNToxNDo0OC42MjMxMTU1OTcgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9n ZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MTU6MjYuODc2MTUxMTg3ICswMjAwCitAQCAtMTY2Miw2 ICsxNjYyLDE1IEBAIGlzX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgIHJl dHVybiBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKyAgICAgICB9 CisgCisrICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoKKysgICAgICB7CisrICAgICAgICBpZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkKKysgICAgICAgICAgICAmJiBUWVBFX0NPREUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfU1RSSU5HKQorKyAgICAgICAgICByZXR1cm4g aXNfZHluYW1pY190eXBlIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkp OworKworKyAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICBicmVhazsKKysgICAgICB9CisgICAg IGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKKyAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046CisgICAg ICAgeworQEAgLTE3NDIsNyArMTc1MSw4IEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0 IHR5cGUgKnR5cGUKKyAgIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3A7CisgICBzdHJ1Y3QgdHlw ZSAqY29weSA9IGNvcHlfdHlwZSAodHlwZSk7CisgCistICBnZGJfYXNzZXJ0IChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7CisrICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9BUlJBWQorKyAgICAgICAgICAgICAgfHwgVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfU1RSSU5HKTsKKyAKKyAgIGVsdF90eXBlID0gdHlwZTsKKyAgIHJhbmdl X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKGVsdF90eXBlKSk7CitAQCAt MTc2OSw5ICsxNzc5LDE0IEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5 cGUKKyAgIGVsc2UKKyAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKKyAK Ky0gIHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZSAoY29weSwKKy0JCQkgICAgZWx0X3R5cGUsCist CQkJICAgIHJhbmdlX3R5cGUpOworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X1NUUklORykKKysgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlwZSAoY29weSwKKysgICAgICAg ICAgICBlbHRfdHlwZSwKKysgICAgICAgICAgICByYW5nZV90eXBlKTsKKysgIGVsc2UKKysgICAg cmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAorKyAgICAgICAgICAgIGVsdF90eXBlLAor KyAgICAgICAgICAgIHJhbmdlX3R5cGUpOworIH0KKyAKKyAvKiBSZXNvbHZlcyBkeW5hbWljIGNv bXBvdW5kIHR5cGVzLCBlLmcuIFNUUlVDVFMncyB0byBzdGF0aWMgb25lcy4KK0BAIC0xOTU4LDYg KzE5NzMsNyBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCisgCX0K KyAKKyAgICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKKysgICAgICBjYXNlIFRZUEVfQ09ERV9T VFJJTkc6CisgCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHR5cGUsIGFk ZHIpOworIAlicmVhazsKKyAKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTExb2YyMy5wYXRj aCBiL2dkYi12bGEtaW50ZWwtMTFvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjZiMThjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLTExb2Yy My5wYXRjaApAQCAtMCwwICsxLDI3MiBAQAorU3ViamVjdDogW1BBVENIIDExLzIzXSB2bGE6IGFk ZCBzdHJpZGUgc3VwcG9ydCB0byBmb3J0cmFuIGFycmF5cy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYx MjY2LTYyNDAtMTItZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCisyMDE0 LTA1LTI4ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKyAgICAg ICAgICAgIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCisJKiBkd2FyZjJy ZWFkLmMgKHJlYWRfc3VicmFuZ2VfdHlwZSk6IFJlYWQgZHluYW1pYworCXN0cmlkZSBhdHRyaWJ1 dGVzLgorCSogZ2RidHlwZXMuYyAoY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9zdHJpZGUpOiBBZGQK KwlzdHJpZGUgc3VwcG9ydAorCShjcmVhdGVfcmFuZ2VfdHlwZSk6IEFkZCBzdHJpZGUgcGFyYW1l dGVyLgorCShjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUpOiBQYXNzIGRlZmF1bHQgc3RyaWRlCisJ cGFyYW1ldGVyLgorCShyZXNvbHZlX2R5bmFtaWNfcmFuZ2UpOiBFdmFsdWF0ZSBzdHJpZGUgYmF0 b24uCisJKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRqdXN0IGRhdGEgbG9jYXRpb24gd2l0aAor CXRoZSB2YWx1ZSBvZiBieXRlIHN0cmlkZS4KKwkqIGdkYnR5cGVzLmggKFRZUEVfQllURV9TVFJJ REUpOiBOZXcgbWFjcm8uCisJKFRZUEVfQllURV9TVFJJREVfQkxPQ0spOiBOZXcgbWFjcm8uCisJ KFRZUEVfQllURV9TVFJJREVfTE9DTElTVCk6IE5ldyBtYWNyby4KKwkoVFlQRV9CWVRFX1NUUklE RV9LSU5EKTogTmV3IG1hY3JvLgorCSogdmFsYXJpdGguYyAodmFsdWVfc3Vic2NyaXB0ZWRfcnZh bHVlKTogVXNlIHN0cmlkZS4KKworQ2hhbmdlLUlkOiBJM2Q4MTBjMGRjMzdmOWQ5ZmQ4NGRiYTRj NzY0Y2RlZmM1MmQ4NTAxZQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9l bGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL2R3YXJmMnJlYWQuYyB8ICAgMTMgKysrKysrKysrKyst LQorIGdkYi9nZGJ0eXBlcy5jICAgfCAgIDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0KKyBnZGIvZ2RidHlwZXMuaCAgIHwgICAxNyArKysrKysrKysrKysrKysrKwor IGdkYi92YWxhcml0aC5jICAgfCAgIDE0ICsrKysrKysrKysrKystCisgNCBmaWxlcyBjaGFuZ2Vk LCA3NSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0 MDYxMy5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxNC0wNi0xNiAyMzoyNDoxMi43NDE1ODQzMTUg KzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFkLmMJMjAxNC0wNi0x NiAyMzoyNToxMi43MDI2NDA5MTAgKzAyMDAKK0BAIC0xNDY5Niw3ICsxNDY5Niw3IEBAIHJlYWRf c3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUKKyAgIHN0cnVjdCB0eXBlICpiYXNl X3R5cGUsICpvcmlnX2Jhc2VfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdo OworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAgIGludCBsb3df ZGVmYXVsdF9pc192YWxpZDsKKyAgIGludCBoaWdoX2JvdW5kX2lzX2NvdW50ID0gMDsKKyAgIGNv bnN0IGNoYXIgKm5hbWU7CitAQCAtMTQ3MTYsNyArMTQ3MTYsOSBAQCByZWFkX3N1YnJhbmdlX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCisgCisgICBsb3cua2luZCA9IFBST1BfQ09OU1Q7Cisg ICBoaWdoLmtpbmQgPSBQUk9QX0NPTlNUOworKyAgc3RyaWRlLmtpbmQgPSBQUk9QX0NPTlNUOwor ICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCA9IDA7CisrICBzdHJpZGUuZGF0YS5jb25zdF92YWwgPSAw OworIAorICAgLyogU2V0IExPV19ERUZBVUxUX0lTX1ZBTElEIGlmIGN1cnJlbnQgbGFuZ3VhZ2Ug YW5kIERXQVJGIHZlcnNpb24gYWxsb3cKKyAgICAgIG9taXR0aW5nIERXX0FUX2xvd2VyX2JvdW5k LiAgKi8KK0BAIC0xNDc0OSw2ICsxNDc1MSwxMyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworKyAgaWYgKGF0dHIpCisrICAg IGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZzdHJpZGUsIE5VTEws IDApKQorKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJNaXNzaW5n IERXX0FUX2J5dGVfc3RyaWRlICIKKysgICAgICAgICAgICAgICAgICAiLSBESUUgYXQgMHgleCBb aW4gbW9kdWxlICVzXSIpLAorKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5zZWN0X29mZiwgb2Jq ZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworKworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAgYXR0cl90b19keW5h bWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3csIE5VTEwsIDApOworQEAgLTE0ODI1LDcgKzE0 ODM0LDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQorICAgICAg ICYmICFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoLmRhdGEuY29uc3RfdmFsICYg bmVnYXRpdmVfbWFzaykpCisgICAgIGhpZ2guZGF0YS5jb25zdF92YWwgfD0gbmVnYXRpdmVfbWFz azsKKyAKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoTlVMTCwgb3JpZ19iYXNl X3R5cGUsICZsb3csICZoaWdoKTsKKysgIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAo TlVMTCwgb3JpZ19iYXNlX3R5cGUsICZsb3csICZoaWdoLCAmc3RyaWRlKTsKKyAKKyAgIGlmICho aWdoX2JvdW5kX2lzX2NvdW50KQorICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5m bGFnX3VwcGVyX2JvdW5kX2lzX2NvdW50ID0gMTsKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmln L2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTYgMjM6MjQ6MTIuNzQxNTg0MzE1ICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE2IDIzOjI1OjEyLjcw NDY0MDkxMSArMDIwMAorQEAgLTgwNSw3ICs4MDUsOCBAQCBhbGxvY2F0ZV9zdHViX21ldGhvZCAo c3RydWN0IHR5cGUgKnR5cGUpCisgc3RydWN0IHR5cGUgKgorIGNyZWF0ZV9yYW5nZV90eXBlIChz dHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorIAkJICAg Y29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqbG93X2JvdW5kLAorLQkJICAgY29uc3Qgc3RydWN0 IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCkKKysJCSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3By b3AgKmhpZ2hfYm91bmQsCisrCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpzdHJpZGUp CisgeworICAgaWYgKHJlc3VsdF90eXBlID09IE5VTEwpCisgICAgIHJlc3VsdF90eXBlID0gYWxs b2NfdHlwZV9jb3B5IChpbmRleF90eXBlKTsKK0BAIC04MjAsNiArODIxLDcgQEAgY3JlYXRlX3Jh bmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdAorICAgICBUWVBFX1pBTExPQyAocmVzdWx0 X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOworICAgVFlQRV9SQU5HRV9EQVRB IChyZXN1bHRfdHlwZSktPmxvdyA9ICpsb3dfYm91bmQ7CisgICBUWVBFX1JBTkdFX0RBVEEgKHJl c3VsdF90eXBlKS0+aGlnaCA9ICpoaWdoX2JvdW5kOworKyAgVFlQRV9SQU5HRV9EQVRBIChyZXN1 bHRfdHlwZSktPnN0cmlkZSA9ICpzdHJpZGU7CisgCisgICBpZiAobG93X2JvdW5kLT5raW5kID09 IFBST1BfQ09OU1QgJiYgbG93X2JvdW5kLT5kYXRhLmNvbnN0X3ZhbCA+PSAwKQorICAgICBUWVBF X1VOU0lHTkVEIChyZXN1bHRfdHlwZSkgPSAxOworQEAgLTg0MSw3ICs4NDMsNyBAQCBzdHJ1Y3Qg dHlwZSAqCisgY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5 cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorIAkJCSAgTE9OR0VTVCBsb3dfYm91bmQsIExP TkdFU1QgaGlnaF9ib3VuZCkKKyB7CistICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaDsK KysgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoLCBzdHJpZGU7CisgCisgICBsb3cua2lu ZCA9IFBST1BfQ09OU1Q7CisgICBsb3cuZGF0YS5jb25zdF92YWwgPSBsb3dfYm91bmQ7CitAQCAt ODQ5LDcgKzg1MSwxMSBAQCBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpy CisgICBoaWdoLmtpbmQgPSBQUk9QX0NPTlNUOworICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCA9IGhp Z2hfYm91bmQ7CisgCistICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyZXN1bHRf dHlwZSwgaW5kZXhfdHlwZSwgJmxvdywgJmhpZ2gpOworKyAgc3RyaWRlLmtpbmQgPSBQUk9QX0NP TlNUOworKyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsKKysKKysgIHJlc3VsdF90eXBlID0g Y3JlYXRlX3JhbmdlX3R5cGUgKHJlc3VsdF90eXBlLCBpbmRleF90eXBlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmxvdywgJmhpZ2gsICZzdHJpZGUpOworIAorICAgcmV0 dXJuIHJlc3VsdF90eXBlOworIH0KK0BAIC0xMDA2LDE2ICsxMDEyLDIxIEBAIGNyZWF0ZV9hcnJh eV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1Y3QgdHkKKyAgIGlmIChoYXNfc3RhdGljX3JhbmdlIChU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpKQorICAgICAgICYmIGR3YXJmMl9hZGRyZXNzX2Rh dGFfdmFsaWQgKHJlc3VsdF90eXBlKSkKKyAgICAgeworLSAgICAgIExPTkdFU1QgbG93X2JvdW5k LCBoaWdoX2JvdW5kOworKyAgICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBieXRl X3N0cmlkZTsKKyAKKyAgICAgICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwg Jmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKKyAJbG93X2JvdW5kID0gaGlnaF9ib3VuZCA9 IDA7CisgICAgICAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVudF90eXBlKTsKKysKKysgICAgICBieXRl X3N0cmlkZSA9IGFicyAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkpOworKworICAgICAg IC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBBZGEgYXJyYXlz IGNhbiBiZQorIAkgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxl ciB0aGFuIHRoZSBsb3dfYm91bmQuCisgCSBJbiBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3Ro IHNob3VsZCBiZSB6ZXJvLiAgKi8KKyAgICAgICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCkK KyAJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IDA7CisrICAgICAgZWxzZSBpZiAoYnl0ZV9z dHJpZGUgPiAwKQorKwlUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gYnl0ZV9zdHJpZGUgKiAo aGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOworICAgICAgIGVsc2UgaWYgKGJpdF9zdHJpZGUg PiAwKQorIAlUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KKyAJICAoYml0X3N0cmlkZSAqICho aWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSkgKyA3KSAvIDg7CitAQCAtMTY5Nyw3ICsxNzA4LDcg QEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluXworICAgc3RydWN0IHR5 cGUgKnN0YXRpY19yYW5nZV90eXBlOworICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJv cDsKKyAgIGNvbnN0IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CistICBzdHJ1 Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0cnVjdCBkeW5hbWlj X3Byb3AgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJpZGU7CisgICBzdHJ1Y3QgdHlwZSAqcmFu Z2VfY29weSA9IGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpOworIAorICAgZ2RiX2Fzc2VydCAo VFlQRV9DT0RFIChkeW5fcmFuZ2VfdHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKTsKK0BAIC0xNzI5 LDEwICsxNzQwLDE3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8K KyAgICAgICBoaWdoX2JvdW5kLmtpbmQgPSBQUk9QX1VOREVGSU5FRDsKKyAgICAgICBoaWdoX2Jv dW5kLmRhdGEuY29uc3RfdmFsID0gMDsKKyAgICAgfQorKyAgCisrICBwcm9wID0gJlRZUEVfUkFO R0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5zdHJpZGU7CisrICBpZiAoZHdhcmYyX2V2YWx1YXRl X3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorKyAgICB7CisrICAgICAgc3RyaWRlLmtp bmQgPSBQUk9QX0NPTlNUOworKyAgICAgIHN0cmlkZS5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOwor KyAgICB9CisgCisgICBzdGF0aWNfcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5n ZV9jb3B5LAorIAkJCQkJIFRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX2NvcHkpLAorLQkJCQkJICZs b3dfYm91bmQsICZoaWdoX2JvdW5kKTsKKysJCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCwg JnN0cmlkZSk7CisgICBUWVBFX1JBTkdFX0RBVEEgKHN0YXRpY19yYW5nZV90eXBlKS0+ZmxhZ19i b3VuZF9ldmFsdWF0ZWQgPSAxOworICAgcmV0dXJuIHN0YXRpY19yYW5nZV90eXBlOworIH0KK0BA IC0xOTk2LDcgKzIwMTQsMTcgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0 eXBlLAorICAgcHJvcCA9IFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7CisgICBpZiAoZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorICAgICB7CisrICAgICAg c3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOworKworKyAg ICAgIC8qIEFkanVzdCB0aGUgZGF0YSBsb2NhdGlvbiB3aXRoIHRoZSB2YWx1ZSBvZiBieXRlIHN0 cmlkZSBpZiBzZXQsIHdoaWNoCisrICAgICAgICAgY2FuIGRlc2NyaWJlIHRoZSBzZXBhcmF0aW9u IGJldHdlZW4gc3VjY2Vzc2l2ZSBlbGVtZW50cyBhbG9uZyB0aGUKKysgICAgICAgICBkaW1lbnNp b24uICAqLworKyAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSA8IDApCisr ICAgICAgICB2YWx1ZSArPSAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9X X0JPVU5EIChyYW5nZV90eXBlKSkKKysgICAgICAgICAgICAgICAgICAqIFRZUEVfQllURV9TVFJJ REUgKHJhbmdlX3R5cGUpOworKworICAgICAgIGFkanVzdGVkX2FkZHJlc3MgPSB2YWx1ZTsKKysK KyAgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAodHlwZSkgPSB2YWx1ZTsKKyAgICAgICBU WVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPSBQUk9QX0NPTlNUOworICAgICB9CitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuaAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA2LTE2IDIzOjI0OjEy Ljc0MTU4NDMxNSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmgJ MjAxNC0wNi0xNiAyMzoyNToxMi43MDQ2NDA5MTEgKzAyMDAKK0BAIC02NzAsNiArNjcwLDEwIEBA IHN0cnVjdCBtYWluX3R5cGUKKyAKKyAgICAgICBzdHJ1Y3QgZHluYW1pY19wcm9wIGhpZ2g7Cisg CisrICAgICAgLyogKiBTdHJpZGUgb2YgcmFuZ2UuICAqLworKworKyAgICAgIHN0cnVjdCBkeW5h bWljX3Byb3Agc3RyaWRlOworKworICAgICAgIC8qIFRydWUgaWYgSElHSCByYW5nZSBib3VuZCBj b250YWlucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZQorIAkgc3VicmFuZ2UuIFRoaXMg YWZmZWN0cyBob3cgdGhlIGZpbmFsIGhpZ2h0IGJvdW5kIGlzIGNvbXB1dGVkLiAgKi8KKyAKK0BA IC0xMjE5LDYgKzEyMjMsMTUgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAo c3RydQorICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKKyAjZGVmaW5l IFRZUEVfTE9XX0JPVU5EX0tJTkQocmFuZ2VfdHlwZSkgXAorICAgVFlQRV9SQU5HRV9EQVRBKHJh bmdlX3R5cGUpLT5sb3cua2luZAorKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERShyYW5nZV90eXBl KSBcCisrICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPnN0cmlkZS5kYXRhLmNvbnN0X3Zh bAorKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9CTE9DSyhyYW5nZV90eXBlKSBcCisrICBUWVBF X1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPnN0cmlkZS5kYXRhLmxvY2V4cHIKKysjZGVmaW5lIFRZ UEVfQllURV9TVFJJREVfTE9DTElTVChyYW5nZV90eXBlKSBcCisrICBUWVBFX1JBTkdFX0RBVEEo cmFuZ2VfdHlwZSktPnN0cmlkZS5kYXRhLmxvY2xpc3QKKysjZGVmaW5lIFRZUEVfQllURV9TVFJJ REVfS0lORChyYW5nZV90eXBlKSBcCisrICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPnN0 cmlkZS5raW5kCisrCisgCisgLyogQXR0cmlidXRlIGFjY2Vzc29ycyBmb3IgVkxBIHN1cHBvcnQu ICAqLworICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBcCitAQCAtMTI1MCw2 ICsxMjYzLDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorICAg IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisg I2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRChhcnJheXR5cGUpIFwK KyAgICBUWVBFX0xPV19CT1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkp CisrI2RlZmluZSBUWVBFX0FSUkFZX1NUUklERV9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCisr ICAgKFRZUEVfQllURV9TVFJJREUoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpID09IDApCisr CisgCisgI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAor ICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCitAQCAt MTcxOCw2ICsxNzM0LDcgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZV93 aQorIAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB0eXBlICosCisgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9w ICosCisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICosCisgCQkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICopOworIAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAq Y3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE2IDIzOjI0OjEyLjc0 MTU4NDMxNSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbGFyaXRoLmMJMjAx NC0wNi0xNiAyMzoyNjo0Mi41NDE3MjU4ODYgKzAyMDAKK0BAIC0xOTYsNiArMTk2LDcgQEAgdmFs dWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorICAgc3RydWN0IHR5cGUgKmVs dF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwor ICAgdW5zaWduZWQgaW50IGVsdF9zaXplID0gVFlQRV9MRU5HVEggKGVsdF90eXBlKTsKKyAgIHVu c2lnbmVkIGludCBlbHRfb2ZmczsKKysgIExPTkdFU1QgZWx0X3N0cmlkZSA9IFRZUEVfQllURV9T VFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOworICAgc3RydWN0IHZhbHVlICp2 OworIAorICAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKGFycmF5X3R5cGUpKQorQEAgLTIwMyw3 ICsyMDQsMTggQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorICAg aWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCisgICAgIGVycm9yIChfKCJubyBz dWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIpKTsKKyAKKy0gIGVsdF9v ZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXggLSBsb3dlcmJvdW5kKTsKKysg IGVsdF9vZmZzID0gbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7CisrCisrICBp ZiAoZWx0X3N0cmlkZSA+IDApCisrICAgIGVsdF9vZmZzICo9IGVsdF9zdHJpZGU7CisrICBlbHNl IGlmIChlbHRfc3RyaWRlIDwgMCkKKysgICAgeworKyAgICAgIGludCBvZmZzID0gKGVsdF9vZmZz ICsgMSkgKiBlbHRfc3RyaWRlOworKworKyAgICAgIGVsdF9vZmZzID0gVFlQRV9MRU5HVEggKGFy cmF5X3R5cGUpICsgb2ZmczsKKysgICAgfQorKyAgZWxzZQorKyAgICBlbHRfb2ZmcyAqPSBlbHRf c2l6ZTsKKyAKKyAgIGlmIChpbmRleCA8IGxvd2VyYm91bmQgfHwgKCFUWVBFX0FSUkFZX1VQUEVS X0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKKyAJCQkgICAgICYmIGVsdF9vZmZzID49 IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkpCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0x Mm9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTEyb2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iMTJlYWIwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1p bnRlbC0xMm9mMjMucGF0Y2gKQEAgLTAsMCArMSwyNDMgQEAKK1N1YmplY3Q6IFtQQVRDSCAxMi8y M10gdGVzdDogYmFzaWMgdGVzdHMgZm9yIGR5bmFtaWMgYXJyYXkgZXZhbHVhdGlvbnMgaW4gRm9y dHJhbi4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTMtZ2l0LXNlbmQtZW1haWwta2V2 ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUZXN0cyBlbnN1cmUgdGhhdCB2YWx1ZXMgb2YgRm9ydHJh biBkeW5hbWljIGFycmF5cworY2FuIGJlIGV2YWx1YXRlZCBjb3JyZWN0bHkgaW4gdmFyaW91cyB3 YXlzIGFuZCBzdGF0ZXMuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxA aW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0Bp bnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi86CisKKwkqIHZsYS5mOTA6IE5ldyBm aWxlLgorCSogdmxhLXZhbHVlLmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1JZDogSTAyMjljM2I1 OGY3MmFlODljMmVlNDJkMTIxOWU0NTM4Y2I2YmYwMjMKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4g Qm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXZhbHVlLmV4cCB8ICAxNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCAgICAgICB8ICAgNTYgKysrKysr KysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAKKyBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkwCisKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi5kN2I4YTFlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAKK0BAIC0wLDAgKzEsMTQ4IEBACisrIyBDb3B5cmlnaHQg MjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZsYS5mOTAiCisrCisraWYgeyBb cHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxl fSBcCisrICAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysK KytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv IGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIFRyeSB0byBhY2Nl c3MgdmFsdWVzIGluIG5vbiBhbGxvY2F0ZWQgVkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYTEtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZs YTEtaW5pdCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInBy aW50IG5vbi1hbGxvY2F0ZWQgdmxhMSIKKytnZGJfdGVzdCAicHJpbnQgJnZsYTEiIFwKKysgICIg PSBcXFwoUFRSIFRPIC0+IFxcXCggcmVhbFxcXChraW5kPTRcXFwpIFxcXCg8bm90IGFsbG9jYXRl ZD5cXFwpXFxcKVxcXCkgJGhleCIgXAorKyAgInByaW50IG5vbi1hbGxvY2F0ZWQgJnZsYTEiCisr Z2RiX3Rlc3QgInByaW50IHZsYTEoMSwxLDEpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNh dXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwcmludCBtZW1iZXIgaW4gbm9uLWFsbG9jYXRlZCB2 bGExICgxKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgxMDEsMjAyLDMwMykiIFwKKysgICJubyBz dWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAorKyAgInByaW50IG1l bWJlciBpbiBub24tYWxsb2NhdGVkIHZsYTEgKDIpIgorK2dkYl90ZXN0ICJwcmludCB2bGExKDUs MiwxOCk9MSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIiBc CisrICAic2V0IG1lbWJlciBpbiBub24tYWxsb2NhdGVkIHZsYTEiCisrCisrIyBUcnkgdG8gYWNj ZXNzIHZhbHVlIGluIGFsbG9jYXRlZCBWTEEKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMi1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 bGEyLWFsbG9jYXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIlxcZCsoXFx0fFxccykrdmxhMVxcXCgz LCA2LCA5XFxcKSA9IDQyIiBcCisrICAic3RlcCBvdmVyIHZhbHVlIGFzc2lnbm1lbnQgb2Ygdmxh MSIKKytnZGJfdGVzdCAicHJpbnQgJnZsYTEiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCgg cmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAkaGV4IiBcCisrICAi cHJpbnQgYWxsb2NhdGVkICZ2bGExIgorK2dkYl90ZXN0ICJwcmludCB2bGExKDMsIDYsIDkpIiAi ID0gMTMxMSIgInByaW50IGFsbG9jYXRlZCB2bGExKDMsNiw5KSIKKytnZGJfdGVzdCAicHJpbnQg dmxhMSgxLCAzLCA4KSIgIiA9IDEzMTEiICJwcmludCBhbGxvY2F0ZWQgdmxhMSgxLDMsOCkiCisr Z2RiX3Rlc3QgInByaW50IHZsYTEoOSwgOSwgOSkgPSA5OTkiICIgPSA5OTkiIFwKKysgICJwcmlu dCBhbGxvY2F0ZWQgdmxhMSg5LDksOSk9MSIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGlu IGFsbG9jYXRlZCBWTEEgYWZ0ZXIgc3BlY2lmaWMgYXNzaWdubWVudAorK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZsYTEtZmlsbGVkIgorK2dkYl90ZXN0ICJwcmludCB2bGExKDMsIDYsIDkpIiAi ID0gNDIiIFwKKysgICJwcmludCBhbGxvY2F0ZWQgdmxhMSgzLDYsOSkgYWZ0ZXIgc3BlY2lmaWMg YXNzaWdubWVudCAoZmlsbGVkKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgxLCAzLCA4KSIgIiA9 IDEwMDEiIFwKKysgICJwcmludCBhbGxvY2F0ZWQgdmxhMSgxLDMsOCkgYWZ0ZXIgc3BlY2lmaWMg YXNzaWdubWVudCAoZmlsbGVkKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSg5LCA5LCA5KSIgIiA9 IDk5OSIgXAorKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDksOSw5KSBhZnRlciBhc3NpZ25tZW50 IGluIGRlYnVnZ2VyIChmaWxsZWQpIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gdW5k ZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIg IiA9IDxub3QgYXNzb2NpYXRlZD4iICJwcmludCB1bmRlZmluZWQgcHZsYSIKKytnZGJfdGVzdCAi cHJpbnQgJnB2bGEiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggcmVhbFxcXChraW5kPTRc XFwpIFxcXCg8bm90IGFzc29jaWF0ZWQ+XFxcKVxcXClcXFwpICRoZXgiIFwKKysgICJwcmludCBu b24tYXNzb2NpYXRlZCAmcHZsYSIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgxLCAzLCA4KSIgIm5v IHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAorKyAgInByaW50 IHVuZGVmaW5lZCBwdmxhKDEsMyw4KSIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGluIHBv aW50ZXIgdG8gVkxBIGFuZCBjb21wYXJlIHRoZW0KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAicHZsYS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCAmcHZsYSIgXAorKyAgIiA9IFxc XChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxcKVxcXClc XFwpICRoZXgiIFwKKysgICJwcmludCBhc3NvY2lhdGVkICZwdmxhIgorK2dkYl90ZXN0ICJwcmlu dCBwdmxhKDMsIDYsIDkpIiAiID0gNDIiICJwcmludCBhc3NvY2lhdGVkIHB2bGEoMyw2LDkpIgor K2dkYl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAiID0gMTAwMSIgInByaW50IGFzc29jaWF0 ZWQgcHZsYSgxLDMsOCkiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoOSwgOSwgOSkiICIgPSA5OTki ICJwcmludCBhc3NvY2lhdGVkIHB2bGEoOSw5LDkpIgorKworKyMgRmlsbCB2YWx1ZXMgdG8gVkxB IHVzaW5nIHBvaW50ZXIgYW5kIGNoZWNrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInB2bGEtcmUtYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InB2bGEtcmUtYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSg1LCA0NSwgMjApIiBc CisrICAiID0gMSIgInByaW50IHB2bGEoNSwgNDUsIDIwKSBhZnRlciBmaWxsZWQgdXNpbmcgcG9p bnRlciIKKytnZGJfdGVzdCAicHJpbnQgdmxhMig1LCA0NSwgMjApIiBcCisrICAiID0gMSIgInBy aW50IHZsYTIoNSwgNDUsIDIwKSBhZnRlciBmaWxsZWQgdXNpbmcgcG9pbnRlciIKKytnZGJfdGVz dCAicHJpbnQgcHZsYSg3LCA0NSwgMTQpIiAiID0gMiIgXAorKyAgInByaW50IHB2bGEoNywgNDUs IDE0KSBhZnRlciBmaWxsZWQgdXNpbmcgcG9pbnRlciIKKytnZGJfdGVzdCAicHJpbnQgdmxhMig3 LCA0NSwgMTQpIiAiID0gMiIgXAorKyAgInByaW50IHZsYTIoNywgNDUsIDE0KSBhZnRlciBmaWxs ZWQgdXNpbmcgcG9pbnRlciIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIG9mIGRlYXNzb2Np YXRlZCBWTEEgcG9pbnRlcgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJw dmxhLWRlYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtZGVh c3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDUsIDQ1LCAyMCkiIFwKKysgICJubyBz dWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFzc29jaWF0ZWQiIFwKKysgICJwcmludCBw dmxhKDUsIDQ1LCAyMCkgYWZ0ZXIgZGVhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBwdmxh KDcsIDQ1LCAxNCkiIFwKKysgICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFz c29jaWF0ZWQiIFwKKysgICJwcmludCBwdmxhKDcsIDQ1LCAxNCkgYWZ0ZXIgZGlzc2Fzb2NpYXRl ZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IDxub3QgYXNzb2NpYXRlZD4iIFwKKysgICJw cmludCB2bGExIGFmdGVyIGRlYXNzb2NpYXRlZCIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVz IG9mIGRlYWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2bGExLWRlYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1k ZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgzLCA2LCA5KSIgIm5vIHN1Y2ggdmVj dG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIiBcCisrICAicHJpbnQgYWxsb2NhdGVk IHZsYTEoMyw2LDkpIGFmdGVyIHNwZWNpZmljIGFzc2lnbm1lbnQgKGRlYWxsb2NhdGVkKSIKKytn ZGJfdGVzdCAicHJpbnQgdmxhMSgxLCAzLCA4KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVj YXVzZSBub3QgYWxsb2NhdGVkIiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMSwzLDgpIGFm dGVyIHNwZWNpZmljIGFzc2lnbm1lbnQgKGRlYWxsb2NhdGVkKSIKKytnZGJfdGVzdCAicHJpbnQg dmxhMSg5LCA5LCA5KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2Nh dGVkIiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZsYTEoOSw5LDkpIGFmdGVyIGFzc2lnbm1lbnQg aW4gZGVidWdnZXIgKGRlYWxsb2NhdGVkKSIKKysKKysKKysjIFRyeSB0byBhc3NpZ24gVkxBIHRv IHVzZXIgdmFyaWFibGUKKytjbGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9CisrCisraWYgIVtydW50 byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50 IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2bGExXFwoMywgNiwgOVxc KSA9IDQyIiAibmV4dCAoMSkiCisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgXCRteXZhciA9 IHZsYTEiICJzZXQgXCRteXZhciA9IHZsYTEiCisrZ2RiX3Rlc3QgInByaW50IFwkbXl2YXIiIFwK KysgICIgPSBcXCggKlxcKCAqXFwoICoxMzExLCAqMTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpc XCkiIFwKKysgICJwcmludCBcJG15dmFyIHNldCB0byB2bGExIgorKworK2dkYl90ZXN0ICJuZXh0 IiAiXFxkKy4qdmxhMVxcKDEsIDMsIDhcXCkgPSAxMDAxIiAibmV4dCAoMikiCisrZ2RiX3Rlc3Qg InByaW50IFwkbXl2YXIoMyw2LDkpIiAiID0gMTMxMSIgInByaW50IFwkbXl2YXIoMyw2LDkpIgor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisrZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgXCRteXB2YXIgPSBwdmxhIiAic2V0IFwkbXlwdmFyID0gcHZsYSIK KytnZGJfdGVzdCAicHJpbnQgXCRteXB2YXIoMSwzLDgpIiAiID0gMTAwMSIgInByaW50IFwkbXlw dmFyKDEsMyw4KSIKKysKKysjIGRlYWxsb2NhdGUgcG9pbnRlciBhbmQgbWFrZSBzdXJlIHVzZXIg ZGVmaW5lZCB2YXJpYWJsZSBzdGlsbCBoYXMgdGhlCisrIyByaWdodCB2YWx1ZS4KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0ZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJp bnQgXCRteXB2YXIoMSwzLDgpIiAiID0gMTAwMSIgXAorKyAgInByaW50IFwkbXlwdmFyKDEsMyw4 KSBhZnRlciBkZWFsbG9jYXRlZCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS5mOTAKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MzQyNWYzCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS5mOTAKK0BAIC0wLDAgKzEsNTYgQEAKKysh IENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrcHJvZ3JhbSB2bGEKKysgIHJlYWwsIHRhcmdl dCwgYWxsb2NhdGFibGUgOjogdmxhMSAoOiwgOiwgOikKKysgIHJlYWwsIHRhcmdldCwgYWxsb2Nh dGFibGUgOjogdmxhMiAoOiwgOiwgOikKKysgIHJlYWwsIHRhcmdldCwgYWxsb2NhdGFibGUgOjog dmxhMyAoOiwgOikKKysgIHJlYWwsIHBvaW50ZXIgOjogcHZsYSAoOiwgOiwgOikKKysgIGxvZ2lj YWwgOjogbAorKworKyAgYWxsb2NhdGUgKHZsYTEgKDEwLDEwLDEwKSkgICAgICAgICAgISB2bGEx LWluaXQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMSkKKysKKysgIGFsbG9jYXRlICh2bGEyICgxOjcs NDI6NTAsMTM6MzUpKSAgICEgdmxhMS1hbGxvY2F0ZWQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMikK KysKKysgIHZsYTEoOiwgOiwgOikgPSAxMzExICAgICAgICAgICAgICAgICEgdmxhMi1hbGxvY2F0 ZWQKKysgIHZsYTEoMywgNiwgOSkgPSA0MgorKyAgdmxhMSgxLCAzLCA4KSA9IDEwMDEKKysgIHZs YTEoNiwgMiwgNykgPSAxMworKworKyAgdmxhMig6LCA6LCA6KSA9IDEzMTEgICAgICAgICAgICAg ICAgISB2bGExLWZpbGxlZAorKyAgdmxhMig1LCA0NSwgMjApID0gNDIKKysKKysgIHB2bGEgPT4g dmxhMSAgICAgICAgICAgICAgICAgICAgICAgICEgdmxhMi1maWxsZWQKKysgIGwgPSBhc3NvY2lh dGVkKHB2bGEpCisrCisrICBwdmxhID0+IHZsYTIgICAgICAgICAgICAgICAgICAgICAgICAhIHB2 bGEtYXNzb2NpYXRlZAorKyAgbCA9IGFzc29jaWF0ZWQocHZsYSkKKysgIHB2bGEoNSwgNDUsIDIw KSA9IDEKKysgIHB2bGEoNywgNDUsIDE0KSA9IDIKKysKKysgIHB2bGEgPT4gbnVsbCgpICAgICAg ICAgICAgICAgICAgICAgICEgcHZsYS1yZS1hc3NvY2lhdGVkCisrICBsID0gYXNzb2NpYXRlZChw dmxhKQorKworKyAgZGVhbGxvY2F0ZSAodmxhMSkgICAgICAgICAgICAgICAgICAgISBwdmxhLWRl YXNzb2NpYXRlZAorKyAgbCA9IGFsbG9jYXRlZCh2bGExKQorKworKyAgZGVhbGxvY2F0ZSAodmxh MikgICAgICAgICAgICAgICAgICAgISB2bGExLWRlYWxsb2NhdGVkCisrICBsID0gYWxsb2NhdGVk KHZsYTIpCisrCisrICBhbGxvY2F0ZSAodmxhMyAoMiwyKSkgICAgICAgICAgICAgICAhIHZsYTIt ZGVhbGxvY2F0ZWQKKysgIHZsYTMoOiw6KSA9IDEzCisrZW5kIHByb2dyYW0gdmxhCistLSAKKzEu Ny45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTNvZjIzLnBhdGNoIGIvZ2RiLXZs YS1pbnRlbC0xM29mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MzE0ZmRjOAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMTNvZjIzLnBhdGNoCkBA IC0wLDAgKzEsMjczIEBACitTdWJqZWN0OiBbUEFUQ0ggMTMvMjNdIHRlc3Q6IGV2YWx1YXRlIEZv cnRyYW4gZHluYW1pYyBhcnJheXMgb2YgdHlwZXMuCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02 MjQwLTE0LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKworVGVzdHMgZW5z dXJlIHRoYXQgZHluYW1pYyBhcnJheXMgb2YgdmFyaW91cyBGb3J0cmFuCitkYXRhdHlwZXMgY2Fu IGJlIGV2YWx1YXRlZCBjb3JyZWN0bHkuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2 ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWly LmFnb3ZpY0BpbnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi86CisKKwkqIHZsYS10 eXBlLmV4cDogTmV3IGZpbGUuCisJKiB2bGEtdHlwZS5mOTA6IE5ldyBmaWxlLgorCitDaGFuZ2Ut SWQ6IEk3YzFhMzgxYzVjYjBhZDQ4ODcyYjc3OTkzZTdjN2ZkYWM4NWJjNzU2CisKK1NpZ25lZC1v ZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CistLS0KKyBnZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cCB8ICAxMjcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MCB8 ICAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyMzQg aW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS10eXBlLmV4cAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS10eXBlLmY5MAorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4 cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFkNTBkOWMKKy0tLSAvZGV2 L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCitAQCAt MCwwICsxLDEyNyBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rl c3RmaWxlICIuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0u ZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICAge2RlYnVnIGY5MCBxdWlldH1dIH0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAg ICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGlu dWUKKyt9CisrCisrIyBDaGVjayBpZiBub3QgYWxsb2NhdGVkIFZMQSBpbiB0eXBlIGRvZXMgbm90 IGJyZWFrCisrIyB0aGUgZGVidWdnZXIgd2hlbiBhY2Nlc3NpbmcgaXQuCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJlZm9yZS1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJiZWZvcmUtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCB0d292 IiAiID0gXFxcKCA8bm90IGFsbG9jYXRlZD4sIDxub3QgYWxsb2NhdGVkPiBcXFwpIiBcCisrICAi cHJpbnQgdHdvdiBiZWZvcmUgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCB0d292JWl2bGEx IiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCisrICAicHJpbnQgdHdvdiVpdmxhMSBiZWZvcmUgYWxs b2NhdGVkIgorKworKyMgQ2hlY2sgdHlwZSB3aXRoIG9uZSBWTEEncyBpbnNpZGUKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib25ldi1maWxsZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJvbmV2LWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgb25ldiVpdmxh KDUsIDExLCAyMykiICIgPSAxIiAicHJpbnQgb25ldiVpdmxhKDUsIDExLCAyMykiCisrZ2RiX3Rl c3QgInByaW50IG9uZXYlaXZsYSgxLCAyLCAzKSIgIiA9IDEyMyIgInByaW50IG9uZXYlaXZsYSgx LCAyLCAzKSIKKytnZGJfdGVzdCAicHJpbnQgb25ldiVpdmxhKDMsIDIsIDEpIiAiID0gMzIxIiAi cHJpbnQgb25ldiVpdmxhKDMsIDIsIDEpIgorK2dkYl90ZXN0ICJwdHlwZSBvbmV2IiBcCisrICAi dHlwZSA9IFR5cGUgb25lXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYVxcXCgxMSwy MiwzM1xcXClcclxuRW5kIFR5cGUgb25lIiBcCisrICAicHR5cGUgb25ldiIKKysKKysjIENoZWNr IHR5cGUgd2l0aCB0d28gVkxBJ3MgaW5zaWRlCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInR3b3YtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidHdv di1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHR3b3YlaXZsYTEoNSwgMTEsIDIzKSIgIiA9IDEi IFwKKysgICJwcmludCB0d292JWl2bGExKDUsIDExLCAyMykiCisrZ2RiX3Rlc3QgInByaW50IHR3 b3YlaXZsYTEoMSwgMiwgMykiICIgPSAxMjMiIFwKKysgICJwcmludCB0d292JWl2bGExKDEsIDIs IDMpIgorK2dkYl90ZXN0ICJwcmludCB0d292JWl2bGExKDMsIDIsIDEpIiAiID0gMzIxIiBcCisr ICAicHJpbnQgdHdvdiVpdmxhMSgzLCAyLCAxKSIKKytnZGJfdGVzdCAicHR5cGUgdHdvdiIgXAor KyAgInR5cGUgPSBUeXBlIHR3b1xyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGExXFxc KDUsMTIsOTlcXFwpXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYTJcXFwoOSwxMlxc XClcclxuRW5kIFR5cGUgdHdvIiBcCisrICAicHR5cGUgdHdvdiIKKysKKysjIENoZWNrIHR5cGUg d2l0aCBhdHRyaWJ1dGUgYXQgYmVnaW5uIG9mIHR5cGUKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAidGhyZWV2LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInRocmVldi1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHRocmVldiVpdmxhKDEpIiAiID0g MSIgInByaW50IHRocmVldiVpdmxhKDEpIgorK2dkYl90ZXN0ICJwcmludCB0aHJlZXYlaXZsYSg1 KSIgIiA9IDQyIiAicHJpbnQgdGhyZWV2JWl2bGEoNSkiCisrZ2RiX3Rlc3QgInByaW50IHRocmVl diVpdmxhKDE0KSIgIiA9IDI0IiAicHJpbnQgdGhyZWV2JWl2bGEoMTQpIgorK2dkYl90ZXN0ICJw cmludCB0aHJlZXYlaXZhciIgIiA9IDMuMTRcXGQrPyIgInByaW50IHRocmVldiVpdmFyIgorK2dk Yl90ZXN0ICJwdHlwZSB0aHJlZXYiIFwKKysgICJ0eXBlID0gVHlwZSB0aHJlZVxyXG5cXHMrcmVh bFxcXChraW5kPTRcXFwpIDo6IGl2YXJcclxuXFxzK3JlYWxcXFwoa2luZD00XFxcKSA6OiBpdmxh XFxcKDIwXFxcKVxyXG5FbmQgVHlwZSB0aHJlZSIgXAorKyAgInB0eXBlIHRocmVldiIKKysKKysj IENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgZW5kIG9mIHR5cGUKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiZm91cnYtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiZm91cnYtZmlsbGVkIgorK2dkYl90ZXN0ICJwcmludCBmb3VydiVpdmxhKDEp IiAiID0gMSIgInByaW50IGZvdXJ2JWl2bGEoMSkiCisrZ2RiX3Rlc3QgInByaW50IGZvdXJ2JWl2 bGEoMikiICIgPSAyIiAicHJpbnQgZm91cnYlaXZsYSgyKSIKKytnZGJfdGVzdCAicHJpbnQgZm91 cnYlaXZsYSg3KSIgIiA9IDciICJwcmludCBmb3VydiVpdmxhKDcpIgorK2dkYl90ZXN0ICJwcmlu dCBmb3VydiVpdmxhKDEyKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiICJwcmludCBmb3VydiVp dmxhKDEyKSIKKytnZGJfdGVzdCAicHJpbnQgZm91cnYlaXZhciIgIiA9IDMuMTRcXGQrPyIgInBy aW50IGZvdXJ2JWl2YXIiCisrZ2RiX3Rlc3QgInB0eXBlIGZvdXJ2IiBcCisrICAidHlwZSA9IFR5 cGUgZm91clxyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTBcXFwpXHJcblxc cytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZhclxyXG5FbmQgVHlwZSBmb3VyIiBcCisrICAicHR5 cGUgZm91cnYiCisrCisrIyBDaGVjayBWTEEgb2YgdHlwZXMKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAib25ldmxhLWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIm9uZXZsYS1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IG9uZXZsYSgyLDIpJWl2bGEo MywgNiwgOSkiIFwKKysgICIgPSAzNjkiICJwcmludCBvbmV2bGEoMiwyKSVpdmxhKDMsIDYsIDkp IgorK2dkYl90ZXN0ICJwcmludCBvbmV2bGEoMiwyKSVpdmxhKDksIDMsIDYpIiBcCisrICAiID0g OTM2IiAicHJpbnQgb25ldmxhKDIsMiklaXZsYSg5LCAzLCA2KSIKKysKKysjIENoZWNrIG5lc3Rl ZCB0eXBlcyBjb250YWluaW5nIGEgVkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgImZpdmV2LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZpdmV2 LWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDUsIDUsIDEpIiAiID0g MSIgXAorKyAgInByaW50IGZpdmV2JXRvbmUlaXZsYSg1LCA1LCAxKSIKKytnZGJfdGVzdCAicHJp bnQgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpIiAiID0gMTIzIiBcCisrICAicHJpbnQgZml2ZXYl dG9uZSVpdmxhKDEsIDIsIDMpIgorK2dkYl90ZXN0ICJwcmludCBmaXZldiV0b25lJWl2bGEoMywg MiwgMSkiICIgPSAzMjEiIFwKKysgICJwcmludCBmaXZldiV0b25lJWl2bGEoMywgMiwgMSkiCisr Z2RiX3Rlc3QgInB0eXBlIGZpdmV2IiBcCisrICAidHlwZSA9IFR5cGUgZml2ZVxyXG5cXHMrVHlw ZSBvbmVcclxuXFxzK3JlYWxcXFwoa2luZD00XFxcKSA6OiBpdmxhXFxcKDEwLDEwLDEwXFxcKVxy XG5cXHMrRW5kIFR5cGUgb25lIDo6IHRvbmVcclxuRW5kIFR5cGUgZml2ZSIgXAorKyAgInB0eXBl IGZpdmV2IgorKworKyMgQ2hlY2sgcG9pbnRlciB0byB0eXBlLCBjb250YWluaW5nIGEgVkxBCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm9uZXAtYXNzb2NpYXRlZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9uZXAtYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAi cHR5cGUgb25ldiIgIi4qcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTEsMjIsMzNcXFwp LioiIFwKKysgICJwdHlwZSBvbmV2IgorK2dkYl90ZXN0ICJwdHlwZSBvbmVwIiAiLipyZWFsXFxc KGtpbmQ9NFxcXCkgOjogaXZsYVxcXCgxMSwyMiwzM1xcXCkuKiIgXAorKyAgInB0eXBlIG9uZXAi CisrCisrZ2RiX3Rlc3QgInByaW50IG9uZXYlaXZsYSIgIiA9IFxcKCAqXFwoICpcXCggKjIsICoy LCAqMixcWygpMiwgLlxdKlxcKSIgXAorKyAgInByaW50IG9uZXYlaXZsYSIKKytnZGJfdGVzdCAi cHJpbnQgb25ldiIgIiA9IFxcKCAqXFwoICpcXCggKlxcKCAqMiwgKjIsICoyLFxbKCkyLCAuXF0q XFwpIiBcCisrICAicHJpbnQgb25ldiIKKytnZGJfdGVzdCAicHJpbnQgb25lcCIgIi4qcmVhbFxc XChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTEsMjIsMzNcXFwpLioiIFwKKysgICJwcmludCBvbmVw IgorKworK2dkYl90ZXN0ICJwdHlwZSBvbmV2JWl2bGEiICJ0eXBlID0gcmVhbFxcXChraW5kPTRc XFwpIFxcXCgxMSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBvbmV2JWl2bGEiCisrZ2RiX3Rlc3Qg InB0eXBlIG9uZXAlaXZsYSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMz XFxcKSIgXAorKyAgInB0eXBlIG9uZXAlaXZsYSIKKysKKytnZGJfdGVzdCAicHR5cGUgb25ldiVp dmxhKDEsMSwxKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSBvbmV2 JWl2bGEoMSwxLDEpIgorK2dkYl90ZXN0ICJwdHlwZSBvbmVwJWl2bGEoMSwxLDEpIiAidHlwZSA9 IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIG9uZXAlaXZsYSgxLDEsMSkiCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjA2NjAwYzkKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXR5cGUuZjkwCitAQCAtMCwwICsxLDEwNyBAQAorKyEgQ29weXJpZ2h0 IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr ISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysKKytwcm9ncmFtIHZsYV9zdHJ1Y3QKKysgIHR5 cGUgOjogb25lCisrICAgIHJlYWwsIGFsbG9jYXRhYmxlIDo6IGl2bGEgKDosIDosIDopCisrICBl bmQgdHlwZSBvbmUKKysgIHR5cGUgOjogdHdvCisrICAgIHJlYWwsIGFsbG9jYXRhYmxlIDo6IGl2 bGExICg6LCA6LCA6KQorKyAgICByZWFsLCBhbGxvY2F0YWJsZSA6OiBpdmxhMiAoOiwgOikKKysg IGVuZCB0eXBlIHR3bworKyAgdHlwZSA6OiB0aHJlZQorKyAgICByZWFsIDo6IGl2YXIKKysgICAg cmVhbCwgYWxsb2NhdGFibGUgOjogaXZsYSAoOikKKysgIGVuZCB0eXBlIHRocmVlCisrICB0eXBl IDo6IGZvdXIKKysgICAgcmVhbCwgYWxsb2NhdGFibGUgOjogaXZsYSAoOikKKysgICAgcmVhbCA6 OiBpdmFyCisrICBlbmQgdHlwZSBmb3VyCisrICB0eXBlIDo6IGZpdmUKKysgICAgdHlwZShvbmUp IDo6IHRvbmUKKysgIGVuZCB0eXBlIGZpdmUKKysKKysgIHR5cGUob25lKSwgdGFyZ2V0ICAgICAg ICA6OiBvbmV2CisrICB0eXBlKHR3bykgICAgICAgICAgICAgICAgOjogdHdvdgorKyAgdHlwZSh0 aHJlZSkgICAgICAgICAgICAgIDo6IHRocmVldgorKyAgdHlwZShmb3VyKSAgICAgICAgICAgICAg IDo6IGZvdXJ2CisrICB0eXBlKGZpdmUpICAgICAgICAgICAgICAgOjogZml2ZXYKKysgIHR5cGUo b25lKSwgYWxsb2NhdGFibGUgICA6OiBvbmV2bGEoOiwgOikKKysgIHR5cGUob25lKSwgcG9pbnRl ciAgICAgICA6OiBvbmVwCisrICBsb2dpY2FsICAgICAgICAgICAgICAgICAgOjogbAorKyAgaW50 ZWdlciAgICAgICAgICAgICAgICAgIDo6IGksIGoKKysKKysgIGFsbG9jYXRlIChvbmV2JWl2bGEg KDExLDIyLDMzKSkgICAgICAgICAhIGJlZm9yZS1hbGxvY2F0ZWQKKysgIGwgPSBhbGxvY2F0ZWQo b25ldiVpdmxhKQorKworKyAgb25ldiVpdmxhKDosIDosIDopID0gMQorKyAgb25ldiVpdmxhKDEs IDIsIDMpID0gMTIzCisrICBvbmV2JWl2bGEoMywgMiwgMSkgPSAzMjEKKysKKysgIGFsbG9jYXRl ICh0d292JWl2bGExICg1LDEyLDk5KSkgICAgICAgICAhIG9uZXYtZmlsbGVkCisrICBsID0gYWxs b2NhdGVkKHR3b3YlaXZsYTEpCisrICBhbGxvY2F0ZSAodHdvdiVpdmxhMiAoOSwxMikpCisrICBs ID0gYWxsb2NhdGVkKHR3b3YlaXZsYTIpCisrCisrICB0d292JWl2bGExKDosIDosIDopID0gMQor KyAgdHdvdiVpdmxhMSgxLCAyLCAzKSA9IDEyMworKyAgdHdvdiVpdmxhMSgzLCAyLCAxKSA9IDMy MQorKworKyAgdHdvdiVpdmxhMig6LCA6KSA9IDEKKysgIHR3b3YlaXZsYTIoMSwgMikgPSAxMgor KyAgdHdvdiVpdmxhMigyLCAxKSA9IDIxCisrCisrICB0aHJlZXYlaXZhciA9IDMuMTQgICAgICAg ICAgICAgICAgICAgICAgISB0d292LWZpbGxlZAorKyAgYWxsb2NhdGUgKHRocmVldiVpdmxhICgy MCkpCisrICBsID0gYWxsb2NhdGVkKHRocmVldiVpdmxhKQorKworKyAgdGhyZWV2JWl2bGEoOikg PSAxCisrICB0aHJlZXYlaXZsYSg1KSA9IDQyCisrICB0aHJlZXYlaXZsYSgxNCkgPSAyNAorKwor KyAgYWxsb2NhdGUgKGZvdXJ2JWl2bGEgKDEwKSkgICAgICAgICAgICAgISB0aHJlZXYtZmlsbGVk CisrICBsID0gYWxsb2NhdGVkKGZvdXJ2JWl2bGEpCisrCisrICBmb3VydiVpdmFyID0gMy4xNAor KyAgZm91cnYlaXZsYSg6KSA9IDEKKysgIGZvdXJ2JWl2bGEoMikgPSAyCisrICBmb3VydiVpdmxh KDcpID0gNworKworKworKyAgYWxsb2NhdGUgKG9uZXZsYSAoMTAsIDEwKSkgICAgICAgICAgICAg ISBmb3Vydi1maWxsZWQKKysgIGRvIGkgPSAxLCAxMAorKyAgICBkbyBqID0gMSwgMTAKKysgICAg ICBhbGxvY2F0ZSAob25ldmxhKGksaiklaXZsYSgxMCwxMCwxMCkpCisrICAgICAgbCA9IGFsbG9j YXRlZChvbmV2bGEoaSxqKSVpdmxhKQorKworKyAgICAgIG9uZXZsYShpLGopJWl2bGEoMywgNiwg OSkgPSAzNjkKKysgICAgICBvbmV2bGEoaSxqKSVpdmxhKDksIDMsIDYpID0gOTM2CisrICAgIGVu ZCBkbworKyAgZW5kIGRvCisrCisrICBhbGxvY2F0ZSAoZml2ZXYldG9uZSVpdmxhICgxMCwgMTAs IDEwKSkgICAgICAgICAhIG9uZXZsYS1maWxsZWQKKysgIGwgPSBhbGxvY2F0ZWQoZml2ZXYldG9u ZSVpdmxhKQorKyAgZml2ZXYldG9uZSVpdmxhKDosIDosIDopID0gMQorKyAgZml2ZXYldG9uZSVp dmxhKDEsIDIsIDMpID0gMTIzCisrICBmaXZldiV0b25lJWl2bGEoMywgMiwgMSkgPSAzMjEKKysK KysKKysgIG9uZXYlaXZsYSg6LDosOikgPSAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICEg Zml2ZXYtZmlsbGVkCisrICBvbmVwID0+IG9uZXYKKysKKysgICEgZHVtbXkgc3RhdGVtZW50IGZv ciBicAorKyAgbCA9IGFsbG9jYXRlZChmaXZldiV0b25lJWl2bGEpICAgICAgICAgICAgICAgICAg ISBvbmVwLWFzc29jaWF0ZWQKKytlbmQgcHJvZ3JhbSB2bGFfc3RydWN0CistLSAKKzEuNy45LjUK KwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTRvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRl bC0xNG9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkZDhm NAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMTRvZjIzLnBhdGNoCkBAIC0wLDAg KzEsMTcyIEBACitTdWJqZWN0OiBbUEFUQ0ggMTQvMjNdIHRlc3Q6IGV2YWx1YXRlIGR5bmFtaWMg YXJyYXlzIHVzaW5nIEZvcnRyYW4gcHJpbWl0aXZlcy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2 LTYyNDAtMTUtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUZXN0cyBl bnN1cmUgdGhhdCBGb3J0cmFuIHByaW1pdGl2ZXMgY2FuIGJlIGV2YWx1YXRlZAorY29ycmVjdGx5 IHdoZW4gdXNlZCBhcyBhIGR5bmFtaWMgYXJyYXkuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxs ICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxz YW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi86CisKKwkq IHZsYS1kYXRhdHlwZXMuZjkwOiBOZXcgZmlsZS4KKwkqIHZsYS1kYXRhdHlwZXMuZXhwOiBOZXcg ZmlsZS4KKworQ2hhbmdlLUlkOiBJOGU4MmZhMzgzM2Q3N2JmZDdlOWI0YmRjNDBlM2Y5NmNlNWU3 MmRhMgorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29t PgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmV4cCB8ICAg ODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtZGF0YXR5cGVzLmY5MCB8ICAgNTEgKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNo YW5nZWQsIDEzMyBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmY5MAorCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi4yMDI3NmQ2CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZXhwCitAQCAtMCwwICsxLDgyIEBACisrIyBDb3B5 cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNm aWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQor KworKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFyZCBkYXRhdHlwZXMgd2lsbCBiZQor KyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBWTEEncworKworK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2bGFzLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZsYXMtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJuZXh0IiAiID0gYWxsb2NhdGVkXFxcKHJlYWx2 bGFcXFwpIiBcCisrICAibmV4dCB0byBhbGxvY2F0aW9uIHN0YXR1cyBvZiBpbnR2bGEiCisrZ2Ri X3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAiaW50dmxhIGFsbG9jYXRlZCIKKytnZGJf dGVzdCAibmV4dCIgIiA9IGFsbG9jYXRlZFxcXChjb21wbGV4dmxhXFxcKSIgXAorKyAgIm5leHQg dG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgcmVhbHZsYSIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9 IFxcLlRSVUVcXC4iICJyZWFsdmxhIGFsbG9jYXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIiA9IGFs bG9jYXRlZFxcXChsb2dpY2FsdmxhXFxcKSIgXAorKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0 dXMgb2YgY29tcGxleHZsYSIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJj b21wbGV4dmxhIGFsbG9jYXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIiA9IGFsbG9jYXRlZFxcXChj aGFyYWN0ZXJ2bGFcXFwpIiBcCisrICAibmV4dCB0byBhbGxvY2F0aW9uIHN0YXR1cyBvZiBsb2dp Y2FsdmxhIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIgImxvZ2ljYWx2bGEg YWxsb2NhdGVkIgorK2dkYl90ZXN0ICJuZXh0IiAiaW50dmxhXFxcKDosOiw6XFxcKSA9IDEiIFwK KysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIGNoYXJhY3RlcnZsYSIKKytnZGJfdGVz dCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJjaGFyYWN0ZXJ2bGEgYWxsb2NhdGVkIgorKwor K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGFzLWluaXRpYWxpemVkIl0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhcy1pbml0aWFsaXplZCIKKytnZGJfdGVz dCAicHR5cGUgaW50dmxhIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBcXFwoMTEsMjIs MzNcXFwpIiBcCisrICAicHR5cGUgaW50dmxhIgorK2dkYl90ZXN0ICJwdHlwZSByZWFsdmxhIiAi dHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTEsMjIsMzNcXFwpIiBcCisrICAicHR5cGUg cmVhbHZsYSIKKytnZGJfdGVzdCAicHR5cGUgY29tcGxleHZsYSIgInR5cGUgPSBjb21wbGV4XFxc KGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAorKyAgInB0eXBlIGNvbXBsZXh2bGEiCisr Z2RiX3Rlc3QgInB0eXBlIGxvZ2ljYWx2bGEiICJ0eXBlID0gbG9naWNhbFxcXChraW5kPTRcXFwp IFxcXCgxMSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBsb2dpY2FsdmxhIgorK2dkYl90ZXN0ICJw dHlwZSBjaGFyYWN0ZXJ2bGEiICJ0eXBlID0gY2hhcmFjdGVyXFxcKjEgXFxcKDExLDIyLDMzXFxc KSIgXAorKyAgInB0eXBlIGNoYXJhY3RlcnZsYSIKKysKKytnZGJfdGVzdCAicHJpbnQgaW50dmxh KDUsNSw1KSIgIiA9IDEiICJwcmludCBpbnR2bGEoNSw1LDUpICgxc3QpIgorK2dkYl90ZXN0ICJw cmludCByZWFsdmxhKDUsNSw1KSIgIiA9IDMuMTRcXGQrIiBcCisrICAicHJpbnQgcmVhbHZsYSg1 LDUsNSkgKDFzdCkiCisrZ2RiX3Rlc3QgInByaW50IGNvbXBsZXh2bGEoNSw1LDUpIiAiID0gXFxc KDIsLTNcXFwpIiBcCisrICAicHJpbnQgY29tcGxleHZsYSg1LDUsNSkgKDFzdCkiCisrZ2RiX3Rl c3QgInByaW50IGxvZ2ljYWx2bGEoNSw1LDUpIiAiID0gXFwuVFJVRVxcLiIgXAorKyAgInByaW50 IGxvZ2ljYWx2bGEoNSw1LDUpICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBjaGFyYWN0ZXJ2bGEo NSw1LDUpIiAiID0gJ0snIiBcCisrICAicHJpbnQgY2hhcmFjdGVydmxhKDUsNSw1KSAoMXN0KSIK KysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhcy1tb2RpZmllZCJd CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYXMtbW9kaWZpZWQiCisrZ2RiX3Rlc3Qg InByaW50IGludHZsYSg1LDUsNSkiICIgPSA0MiIgInByaW50IGludHZsYSg1LDUsNSkgKDJuZCki CisrZ2RiX3Rlc3QgInByaW50IHJlYWx2bGEoNSw1LDUpIiAiID0gNC4xM1xcZCsiIFwKKysgICJw cmludCByZWFsdmxhKDUsNSw1KSAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQgY29tcGxleHZsYSg1 LDUsNSkiICIgPSBcXFwoLTMsMlxcXCkiIFwKKysgICJwcmludCBjb21wbGV4dmxhKDUsNSw1KSAo Mm5kKSIKKytnZGJfdGVzdCAicHJpbnQgbG9naWNhbHZsYSg1LDUsNSkiICIgPSBcXC5GQUxTRVxc LiIgXAorKyAgInByaW50IGxvZ2ljYWx2bGEoNSw1LDUpICgybmQpIgorK2dkYl90ZXN0ICJwcmlu dCBjaGFyYWN0ZXJ2bGEoNSw1LDUpIiAiID0gJ1gnIiBcCisrICAicHJpbnQgY2hhcmFjdGVydmxh KDUsNSw1KSAoMm5kKSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1kYXRhdHlwZXMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVz LmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmIxMTg3OWEKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5m OTAKK0BAIC0wLDAgKzEsNTEgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV U0EuCisrCisrcHJvZ3JhbSB2bGFfcHJpbWl0aXZlcworKyAgaW50ZWdlciwgYWxsb2NhdGFibGUg ICAgOjogaW50dmxhKDosIDosIDopCisrICByZWFsLCBhbGxvY2F0YWJsZSAgICAgICA6OiByZWFs dmxhKDosIDosIDopCisrICBjb21wbGV4LCBhbGxvY2F0YWJsZSAgICA6OiBjb21wbGV4dmxhKDos IDosIDopCisrICBsb2dpY2FsLCBhbGxvY2F0YWJsZSAgICA6OiBsb2dpY2FsdmxhKDosIDosIDop CisrICBjaGFyYWN0ZXIsIGFsbG9jYXRhYmxlICA6OiBjaGFyYWN0ZXJ2bGEoOiwgOiwgOikKKysg IGxvZ2ljYWwgICAgICAgICAgICAgICAgIDo6IGwKKysKKysgIGFsbG9jYXRlIChpbnR2bGEgKDEx LDIyLDMzKSkKKysgIGFsbG9jYXRlIChyZWFsdmxhICgxMSwyMiwzMykpCisrICBhbGxvY2F0ZSAo Y29tcGxleHZsYSAoMTEsMjIsMzMpKQorKyAgYWxsb2NhdGUgKGxvZ2ljYWx2bGEgKDExLDIyLDMz KSkKKysgIGFsbG9jYXRlIChjaGFyYWN0ZXJ2bGEgKDExLDIyLDMzKSkKKysKKysgIGwgPSBhbGxv Y2F0ZWQoaW50dmxhKSAgICAgICAgICAgICAgICAgICAhIHZsYXMtYWxsb2NhdGVkCisrICBsID0g YWxsb2NhdGVkKHJlYWx2bGEpCisrICBsID0gYWxsb2NhdGVkKGNvbXBsZXh2bGEpCisrICBsID0g YWxsb2NhdGVkKGxvZ2ljYWx2bGEpCisrICBsID0gYWxsb2NhdGVkKGNoYXJhY3RlcnZsYSkKKysK KysgIGludHZsYSg6LDosOikgPSAxCisrICByZWFsdmxhKDosOiw6KSA9IDMuMTQKKysgIGNvbXBs ZXh2bGEoOiw6LDopID0gY21wbHgoMi4wLC0zLjApCisrICBsb2dpY2FsdmxhKDosOiw6KSA9IC5U UlVFLgorKyAgY2hhcmFjdGVydmxhKDosOiw6KSA9IGNoYXIoNzUpCisrCisrICBpbnR2bGEoNSw1 LDUpID0gNDIgICAgICAgICAgICAgICAgICAgICAgISB2bGFzLWluaXRpYWxpemVkCisrICByZWFs dmxhKDUsNSw1KSA9IDQuMTMKKysgIGNvbXBsZXh2bGEoNSw1LDUpID0gY21wbHgoLTMuMCwyLjAp CisrICBsb2dpY2FsdmxhKDUsNSw1KSA9IC5GQUxTRS4KKysgIGNoYXJhY3RlcnZsYSg1LDUsNSkg PSAnWCcKKysKKysgICEgZHVtbXkgc3RhdGVtZW50IGZvciBicAorKyAgbCA9IC5GQUxTRS4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEgdmxhcy1tb2RpZmllZAorK2VuZCBwcm9ncmFtIHZs YV9wcmltaXRpdmVzCistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwt MTVvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xNW9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ2ZDVhZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEt aW50ZWwtMTVvZjIzLnBhdGNoCkBAIC0wLDAgKzEsNDA5IEBACitTdWJqZWN0OiBbUEFUQ0ggMTUv MjNdIHRlc3Q6IGR5bmFtaWMgYXJyYXlzIHBhc3NlZCB0byBzdWJyb3V0aW5lcy4KK01lc3NhZ2Ut SWQ6IDwxNDAxODYxMjY2LTYyNDAtMTYtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgorCitUZXN0cyBkeW5hbWljIGFycmF5cyBwYXNzZWQgdG8gc3Vicm91dGluZXMgYW5kIGhh bmRsZWQKK2luIGRpZmZlcmVudCB3YXlzIGluc2lkZSB0aGUgcm91dGluZS4KKworMjAxNC0wNS0y OCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisgICAgICAgICAgICBTYW5p bWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKwordGVzdHN1aXRlL2dkYi5m b3J0cmFuLzoKKworCSogdmxhLXN1Yi5mOTA6IE5ldyBmaWxlLgorCSogdmxhLXB0eXBlLXN1Yi5l eHA6IE5ldyBmaWxlLgorCSogdmxhLXZhbHVlLXN1Yi1hcmJpdHJhcnkuZXhwOiBOZXcgZmlsZS4K KwkqIHZsYS12YWx1ZS1zdWItZmluaXNoLmV4cDogTmV3IGZpbGUuCisJKiB2bGEtdmFsdWUtc3Vi LmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1JZDogSTc2ZGI5NTBmYmFjYmYxNWIxZjVlODg3YmZk MTY0ZWI4Zjg1YzU1ZDEKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxs QGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLXN1 Yi5leHAgICAgICAgIHwgICA4NyArKysrKysrKysrKysrKysrKysrCisgZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtc3ViLmY5MCAgICAgICAgICAgICAgfCAgIDgyICsrKysrKysrKysrKysr KysrKworIC4uLi9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5leHAgICAgICAg IHwgICAzNSArKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1 Yi1maW5pc2guZXhwIHwgICA0OSArKysrKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXZhbHVlLXN1Yi5leHAgICAgICAgIHwgICA5MCArKysrKysrKysrKysrKysrKysrKwor IDUgZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQg Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUtc3ViLmV4cAorIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkwCisgY3JlYXRlIG1v ZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1hcmJpdHJh cnkuZXhwCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXZhbHVlLXN1Yi1maW5pc2guZXhwCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAKKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLXN1Yi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1wdHlwZS1zdWIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uMmVlMjkxNAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtcHR5cGUtc3ViLmV4cAorQEAgLTAsMCArMSw4NyBAQAorKyMgQ29weXJpZ2h0IDIwMTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3ViLmY5MCIKKysKKytpZiB7IFtw cmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9 IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisr aWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBi cmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBQYXNzIGZpeGVkIGFy cmF5IHRvIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVuY3Rpb24uCisrZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm5vdC1maWxsZWQiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0ICJwdHlwZSBh cnJheTEiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCg0Miw0MlxcXCkiIFwKKysg ICJwdHlwZSBhcnJheTEgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MiIg InR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDQyLDQyLDQyXFxcKSIgXAorKyAgInB0eXBl IGFycmF5MiAocGFzc2VkIGZpeGVkKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDQwLCAxMCki ICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDQwLCAx MCkgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MigxMywgMTEsIDUpIiAi dHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5MigxMywgMTEsIDUp IChwYXNzZWQgZml4ZWQpIgorKworKyMgUGFzcyBzdWIgYXJyYXlzIHRvIGZ1bmN0aW9uIGFuZCBo YW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVuY3Rpb24uCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgIm5vdC1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUgPSBp bnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTEgKHBh c3NlZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBlID0gcmVhbFxc XChraW5kPTRcXFwpIFxcXCg2LDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIgKHBhc3NlZCBz dWItYXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0gaW50ZWdl clxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQgc3ViLWFy cmF5KSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxcXFwo a2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHN1Yi1hcnJh eSkiCisrCisrIyBDaGVjayBwdHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQgbm90 IGNyYXNoIEdEQi4KKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1Y2gg dmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIHN1YmFycmF5IGRv IG5vdCBjcmFzaCAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5Migx MDAsIDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlwZSBhcnJh eTIoMTAwLCAxMDAsIDEwMCkgc3ViYXJyYXkgZG8gbm90IGNyYXNoIChwYXNzZWQgc3ViLWFycmF5 KSIKKysKKysjIFBhc3MgdmxhIHRvIGZ1bmN0aW9uLgorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJub3QtZmlsbGVkICgzcmQpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEiICJ0eXBlID0g aW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgyMCwyMFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTEg KHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBlID0gcmVhbFxcXChr aW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIgKHBhc3NlZCB2 bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0gaW50ZWdlclxcXChr aW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQgdmxhKSIKKytnZGJf dGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIg XAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHZsYSkiCisrCisrIyBDaGVjayBw dHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQgbm90IGNyYXNoIEdEQi4KKytnZGJf dGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwK KysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIFZMQSBkbyBub3QgY3Jhc2ggKHBhc3NlZCB2bGEp IgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIoMTAwLCAxMDAsIDEwMCkiICJubyBzdWNoIHZlY3Rv ciBlbGVtZW50IiBcCisrICAicHR5cGUgYXJyYXkyKDEwMCwgMTAwLCAxMDApIFZMQSBkbyBub3Qg Y3Jhc2ggKHBhc3NlZCB2bGEpIgorKworKyMgUGFzcyBmaXhlZCBhcnJheSB0byBmdW5jdGlvbiBh bmQgaGFuZGxlIGl0IGFzIFZMQSBvZiBhcmJpdHJhcnkgbGVuZ3RoIGluCisrIyBmdW5jdGlvbi4K KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZW5kLW9mLWJhciJdCisrZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImVuZC1vZi1iYXIiCisrZ2RiX3Rlc3QgInB0eXBlIGFy cmF5MSIgXAorKyAgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP2ludGVnZXIoXFwoa2luZD00XFwp fFxcKjQpIFxcKFxcKlxcKVxcKT8iIFwKKysgICJwdHlwZSBhcnJheTEgKGFyYml0cmFyeSBsZW5n dGgpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiIFwKKysgICJ0eXBlID0gKFBUUiBUTyAtPiBc XCggKT9pbnRlZ2VyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg0OjksMTA6XFwqXFwpXFwpPyIgXAor KyAgInB0eXBlIGFycmF5MiAoYXJiaXRyYXJ5IGxlbmd0aCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFy cmF5MSgxMDApIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFy cmF5MSgxMDApIChhcmJpdHJhcnkgbGVuZ3RoKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQs MTAwKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIo NCwxMDApIChhcmJpdHJhcnkgbGVuZ3RoKSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1zdWIuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3Vi LmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjhjMmM5ZmYKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN1Yi5mOTAKK0BA IC0wLDAgKzEsODIgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisr IQorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhh dC5jb20+IGFuZAorKyEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2VzIGJ5IEtldmVuIEJvZWxsIDxrZXZl bi5ib2VsbEBpbnRlbC5jb20+LgorKworK3N1YnJvdXRpbmUgZm9vIChhcnJheTEsIGFycmF5MikK KysgIGludGVnZXIgOjogYXJyYXkxICg6LCA6KQorKyAgcmVhbCAgICA6OiBhcnJheTIgKDosIDos IDopCisrCisrICBhcnJheTEoOiw6KSA9IDUgICAgICAgICAgICAgICAgICAgICAgICEgbm90LWZp bGxlZAorKyAgYXJyYXkxKDEsIDEpID0gMzAKKysKKysgIGFycmF5Mig6LDosOikgPSA2ICAgICAg ICAgICAgICAgICAgICAgISBhcnJheTEtZmlsbGVkCisrICBhcnJheTIoOiw6LDopID0gMworKyAg YXJyYXkyKDEsMSwxKSA9IDMwCisrICBhcnJheTIoMywzLDMpID0gOTAgICAgICAgICAgICAgICAg ICAgICEgYXJyYXkyLWFsbW9zdC1maWxsZWQKKytlbmQgc3Vicm91dGluZQorKworK3N1YnJvdXRp bmUgYmFyIChhcnJheTEsIGFycmF5MikKKysgIGludGVnZXIgOjogYXJyYXkxICgqKQorKyAgaW50 ZWdlciA6OiBhcnJheTIgKDQ6OSwgMTA6KikKKysKKysgIGFycmF5MSg1OjEwKSA9IDEzMTEKKysg IGFycmF5MSg3KSA9IDEKKysgIGFycmF5MSgxMDApID0gMTAwCisrICBhcnJheTIoNCwxMCkgPSBh cnJheTEoNykKKysgIGFycmF5Mig0LDEwMCkgPSBhcnJheTEoNykKKysgIHJldHVybiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISBlbmQtb2YtYmFyCisrZW5kIHN1YnJvdXRpbmUKKysK Kytwcm9ncmFtIHZsYV9zdWIKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0aW5lIGZvbyAoYXJy YXkxLCBhcnJheTIpCisrICAgICAgaW50ZWdlciA6OiBhcnJheTEgKDosIDopCisrICAgICAgcmVh bCA6OiBhcnJheTIgKDosIDosIDopCisrICAgIGVuZCBzdWJyb3V0aW5lCisrICBlbmQgaW50ZXJm YWNlCisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBiYXIgKGFycmF5MSwgYXJyYXkyKQor KyAgICAgIGludGVnZXIgOjogYXJyYXkxICgqKQorKyAgICAgIGludGVnZXIgOjogYXJyYXkyICg0 OjksIDEwOiopCisrICAgIGVuZCBzdWJyb3V0aW5lCisrICBlbmQgaW50ZXJmYWNlCisrCisrICBy ZWFsLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6LCA6KQorKyAgaW50ZWdlciwgYWxsb2NhdGFi bGUgOjogdmxhMiAoOiwgOikKKysKKysgICEgdXNlZCBmb3Igc3Vicm91dGluZQorKyAgaW50ZWdl ciA6OiBzdWJfYXJyMSg0MiwgNDIpCisrICByZWFsICAgIDo6IHN1Yl9hcnIyKDQyLCA0MiwgNDIp CisrICBpbnRlZ2VyIDo6IHN1Yl9hcnIzKDQyKQorKworKyAgc3ViX2FycjEoOiw6KSA9IDEgICAg ICAgICAgICAgICAgICAgISB2bGEyLWRlYWxsb2NhdGVkCisrICBzdWJfYXJyMig6LDosOikgPSAy CisrICBzdWJfYXJyMyg6KSA9IDMKKysKKysgIGNhbGwgZm9vKHN1Yl9hcnIxLCBzdWJfYXJyMikK KysgIGNhbGwgZm9vKHN1Yl9hcnIxKDU6MTAsIDU6MTApLCBzdWJfYXJyMigxMDoxNSwxMDoxNSwx MDoxNSkpCisrCisrICBhbGxvY2F0ZSAodmxhMSAoMTAsMTAsMTApKQorKyAgYWxsb2NhdGUgKHZs YTIgKDIwLDIwKSkKKysgIHZsYTEoOiw6LDopID0gMTMxMQorKyAgdmxhMig6LDopID0gNDIKKysg IGNhbGwgZm9vKHZsYTIsIHZsYTEpCisrCisrICBjYWxsIGJhcihzdWJfYXJyMywgc3ViX2FycjEp CisrZW5kIHByb2dyYW0gdmxhX3N1YgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXZhbHVlLXN1Yi1hcmJpdHJhcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5mZDExYWRiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItYXJiaXRyYXJ5LmV4cAorQEAgLTAsMCArMSwzNSBA QAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEt c3ViLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAg ICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJy b3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9 CisrCisrIyBDaGVjayBWTEEgd2l0aCBhcmJpdGFyeSBsZW5ndGggYW5kIGNoZWNrIHRoYXQgZWxl bWVudHMgb3V0c2lkZSBvZgorKyMgYm91bmRzIG9mIHRoZSBwYXNzZWQgVkxBIGNhbiBiZSBhY2Nl c3NlZCBjb3JyZWN0bHkuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImVu ZC1vZi1iYXIiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJlbmQtb2YtYmFyIgorK2dk Yl90ZXN0ICJwIGFycmF5MSg0MikiICIgPSAzIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkxKDQyKSIK KytnZGJfdGVzdCAicCBhcnJheTEoMTAwKSIgIiA9IDEwMCIgInByaW50IGFyYml0YXJ5IGFycmF5 MSgxMDApIgorK2dkYl90ZXN0ICJwIGFycmF5Mig0LDEwKSIgIiA9IDEiICJwcmludCBhcmJpdGFy eSBhcnJheTIoNCwxMCkiCisrZ2RiX3Rlc3QgInAgYXJyYXkyKDQsMTAwKSIgIiA9IDEiICJwcmlu dCBhcmJpdGFyeSBhcnJheTIoNCwxMDApIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1maW5pc2guZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtdmFsdWUtc3ViLWZpbmlzaC5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi5hMTYzNjE3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItZmluaXNoLmV4cAorQEAgLTAsMCArMSw0OSBAQAorKyMg Q29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3ViLmY5 MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1 cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNv dWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisr IyAidXAiIHdvcmtzIHdpdGggR0NDIGJ1dCBvdGhlciBGb3J0cmFuIGNvbXBpbGVycyBtYXkgY29w eSB0aGUgdmFsdWVzIGludG8gdGhlCisrIyBvdXRlciBmdW5jdGlvbiBvbmx5IG9uIHRoZSBleGl0 IG9mIHRoZSBpbm5lciBmdW5jdGlvbi4KKysjIFdlIG5lZWQgYm90aCB2YXJpYW50cyBhcyBkZXBl bmRpbmcgb24gdGhlIGFyY2ggd2Ugb3B0aW9uYWxseSBtYXkgc3RpbGwgYmUKKysjIGV4ZWN1dGlu ZyB0aGUgY2FsbGVyIGxpbmUgb3Igbm90IGFmdGVyIGBmaW5pc2gnLgorKworK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJhcnJheTItYWxtb3N0LWZpbGxlZCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkIgorK2dkYl90ZXN0ICJw cmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICozLFxbKCkzLCAuXF0qXFwp IiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgZmlsbGVkIgorK2dkYl90 ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAiIFwKKysgICJzZXQgYXJyYXkoMiwy LDIpIHRvIDIwIGluIHN1YnJvdXRpbmUiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxc KCAqXFwoICpcXCggKjMwLCAqMjAsICozLFxbKCkzLCAuXF0qXFwpIiBcCisrICAicHJpbnQgYXJy YXkyIGluIGZvbyBhZnRlciBpdCB3YXMgbW9maWZpZWQgaW4gZGVidWdnZXIiCisrCisrZ2RiX3Rl c3QgImZpbmlzaCIgXAorKyAgIi4qZm9vXFxcKHN1Yl9hcnIxXFxcKDU6MTAsIDU6MTBcXFwpLCBz dWJfYXJyMlxcXCgxMDoxNSwxMDoxNSwxMDoxNVxcXClcXFwpIiBcCisrICAiZmluaXNoIGZ1bmN0 aW9uIgorK2dkYl90ZXN0ICJwIHN1Yl9hcnIxKDUsIDcpIiAiID0gNSIgInN1Yl9hcnIxKDUsIDcp IGFmdGVyIGZpbmlzaCIKKytnZGJfdGVzdCAicCBzdWJfYXJyMSgxLCAxKSIgIiA9IDMwIiAic3Vi X2FycjEoMSwgMSkgYWZ0ZXIgZmluaXNoIgorK2dkYl90ZXN0ICJwIHN1Yl9hcnIyKDEsIDEsIDEp IiAiID0gMzAiICJzdWJfYXJyMigxLCAxLCAxKSBhZnRlciBmaW5pc2giCisrZ2RiX3Rlc3QgInAg c3ViX2FycjIoMiwgMSwgMSkiICIgPSAyMCIgInN1Yl9hcnIyKDIsIDEsIDEpIGFmdGVyIGZpbmlz aCIKKysKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1z dWIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLmV4cAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjg0OGY5ZDcKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAKK0BAIC0w LDAgKzEsOTAgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0 ZmlsZSAidmxhLXN1Yi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9 XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsK KysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNv bnRpbnVlCisrfQorKworKyMgQ2hlY2sgdGhlIHZhbHVlcyBvZiBWTEEncyBpbiBzdWJyb3V0aW5l IGNhbiBiZSBldmFsdWF0ZWQgY29ycmVjdGx5CisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBm cm9tIGEgZml4ZWQgYXJyYXkgaGFuZGxlZCBhcyBWTEEgaW4gc3Vicm91dGluZS4KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibm90LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDFzdCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5 MSIgIiA9IFxcKFxbKCkxLCAuXF0qXFwpIiBcCisrICAicHJpbnQgcGFzc2VkIGFycmF5MSBpbiBm b28gKHBhc3NlZCBmaXhlZCBhcnJheSkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgImFycmF5MS1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJh cnJheTEtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTEoNSwgNykiICIgPSA1 IiBcCisrICAicHJpbnQgYXJyYXkxKDUsIDcpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCBm aXhlZCBhcnJheSkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSgxLCAxKSIgIiA9IDMwIiBcCisr ICAicHJpbnQgYXJyYXkxKDEsIDEpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCBmaXhlZCBh cnJheSkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImFycmF5Mi1h bG1vc3QtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYXJyYXkyLWFsbW9z dC1maWxsZWQgKDFzdCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwoICpc XCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwKKysgICJwcmludCBhcnJheTIgaW4gZm9v IGFmdGVyIGl0IHdhcyBmaWxsZWQgKHBhc3NlZCBmaXhlZCBhcnJheSkiCisrZ2RiX3Rlc3QgInBy aW50IGFycmF5MigyLDEsMSk9MjAiICIgPSAyMCIgXAorKyAgInNldCBhcnJheSgyLDIsMikgdG8g MjAgaW4gc3Vicm91dGluZSAocGFzc2VkIGZpeGVkIGFycmF5KSIKKytnZGJfdGVzdCAicHJpbnQg YXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICoyMCwgKjMsXFsoKTMsIC5cXSpcXCkiIFwK KysgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBtb2ZpZmllZCBpbiBkZWJ1Z2dl ciAocGFzc2VkIGZpeGVkIGFycmF5KSIKKysKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGZy b20gYSBmaXhlZCBzdWItYXJyYXkgaGFuZGxlZCBhcyBWTEEgaW4gc3Vicm91dGluZS4KKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAibm90LWZpbGxlZCAoMm5kKSIKKytnZGJfdGVzdCAicHJp bnQgYXJyYXkxIiAiID0gXFwoXFsoKTUsIC5cXSpcXCkiIFwKKysgICJwcmludCBwYXNzZWQgYXJy YXkxIGluIGZvbyAocGFzc2VkIHN1Yi1hcnJheSkiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImFycmF5MS1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSg1LCA1 KSIgIiA9IDUiIFwKKysgICJwcmludCBhcnJheTEoNSwgNSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAo cGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSgxLCAxKSIgIiA9IDMw IiBcCisrICAicHJpbnQgYXJyYXkxKDEsIDEpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCBz dWItYXJyYXkpIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTItYWxtb3N0 LWZpbGxlZCAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxc KCAqMzAsICozLCAqMyxcWygpMywgLlxdKlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28g YWZ0ZXIgaXQgd2FzIGZpbGxlZCAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInByaW50 IGFycmF5MigyLDEsMSk9MjAiICIgPSAyMCIgXAorKyAgInNldCBhcnJheSgyLDIsMikgdG8gMjAg aW4gc3Vicm91dGluZSAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5 MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMjAsICozLFxbKCkzLCAuXF0qXFwpIiBcCisrICAi cHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgbW9maWZpZWQgaW4gZGVidWdnZXIgKHBh c3NlZCBzdWItYXJyYXkpIgorKworKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgZnJvbSBhIFZM QSBwYXNzZWQgdG8gc3Vicm91dGluZS4KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90 LWZpbGxlZCAoM3JkKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkxIiAiID0gXFwoXFsoKTQyLCAu XF0qXFwpIiBcCisrICAicHJpbnQgcGFzc2VkIGFycmF5MSBpbiBmb28gKHBhc3NlZCB2bGEpIgor KworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTEtZmlsbGVkICgzcmQpIgorK2dk Yl90ZXN0ICJwcmludCBhcnJheTEoNSwgNSkiICIgPSA1IiBcCisrICAicHJpbnQgYXJyYXkxKDUs IDUpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwcmludCBh cnJheTEoMSwgMSkiICIgPSAzMCIgXAorKyAgInByaW50IGFycmF5MSgxLCAxKSBhZnRlciBmaWxs ZWQgaW4gZm9vIChwYXNzZWQgdmxhKSIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi YXJyYXkyLWFsbW9zdC1maWxsZWQgKDNyZCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9 IFxcKCAqXFwoICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwKKysgICJwcmludCBh cnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQgKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0 ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAiIFwKKysgICJzZXQgYXJyYXkoMiwyLDIp IHRvIDIwIGluIHN1YnJvdXRpbmUgKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwcmludCBhcnJh eTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjIwLCAqMyxcWygpMywgLlxdKlxcKSIgXAorKyAg InByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIG1vZmlmaWVkIGluIGRlYnVnZ2VyIChw YXNzZWQgdmxhKSIKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0x Nm9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTE2b2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43NGZjYWZhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1p bnRlbC0xNm9mMjMucGF0Y2gKQEAgLTAsMCArMSwxMjYgQEAKK1N1YmplY3Q6IFtQQVRDSCAxNi8y M10gdGVzdDogY29ycmVjdCBwdHlwZSBvZiBkeW5hbWljIGFycmF5cyBpbiBGb3J0cmFuLgorTWVz c2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0xNy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBp bnRlbC5jb20+CisKK1Rlc3RzIGVuc3VyZSB0aGF0IHRoZSBwdHlwZSBvZiBkeW5hbWljIGFycmF5 cyBpbgorRm9ydHJhbiBjYW4gYmUgcHJpbnRlZCBpbiBHREIgY29ycmVjdGx5LgorCisyMDE0LTA1 LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKyAgICAgICAgICAgIFNh bmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorCit0ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vOgorCisJKiB2bGEtcHR5cGUuZXhwOiBOZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJ NTA4YTA1MzdiZTdjYWM1NzM5YTI2Mzc4OGJlODliMThlODRkOGY4ZgorCitTaWduZWQtb2ZmLWJ5 OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwIHwgICA5NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwCisKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi45MjY3NzIzCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKK0BAIC0wLDAgKzEsOTYgQEAKKysjIENvcHlyaWdo dCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKysKKytpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2Zp bGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9Cisr CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBDaGVjayB0aGUg cHR5cGUgb2YgdmFyaW91cyBWTEEgc3RhdGVzIGFuZCBwb2ludGVyIHRvIFZMQSdzLgorK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWluaXQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBl ID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rl c3QgInB0eXBlIHZsYTIiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3Qg aW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gPG5vdCBhc3NvY2lh dGVkPiIgInB0eXBlIHB2bGEgbm90IGluaXRpYWxpemVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEx KDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQi IFwKKysgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBpbml0aWFsaXplZCIKKytnZGJfdGVzdCAi cHR5cGUgdmxhMig1LCA0NSwgMjApIiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNh dXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgbm90IGluaXRp YWxpemVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWFs bG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgor K2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAs MTAsMTBcXFwpIiBcCisrICAicHR5cGUgdmxhMSBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0 eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCg3LDQyOjUwLDEzOjM1XFxcKSIgXAorKyAgInB0 eXBlIHZsYTIgYWxsb2NhdGVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2bGExLWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmls bGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBc XFwoMTAsMTAsMTBcXFwpIiBcCisrICAicHR5cGUgdmxhMSBmaWxsZWQiCisrZ2RiX3Rlc3QgInB0 eXBlIHZsYTEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCisrICAicHR5 cGUgdmxhMSgzLCA2LCA5KSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAidmxhMi1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWZpbGxl ZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxc KDcsNDI6NTAsMTM6MzVcXFwpIiBcCisrICAicHR5cGUgdmxhMiBmaWxsZWQiCisrZ2RiX3Rlc3Qg InB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysg ICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgZmlsbGVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0g cmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXCkiIFwKKysgICJwdHlwZSBwdmxhIGFz c29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxc XChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgcHZsYSgzLCA2LCA5KSIKKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlw ZSBwdmxhIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoNyw0Mjo1MCwxMzozNVxcXCki IFwKKysgICJwdHlwZSBwdmxhIHJlLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIo NSwgNDUsIDIwKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSB2bGEx KDUsIDQ1LCAyMCkgcmUtYXNzb2NpYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8 bm90IGFzc29jaWF0ZWQ+IiAicHR5cGUgcHZsYSBkZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0 eXBlIHB2bGEoNSwgNDUsIDIwKSIgXAorKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVz ZSBub3QgYXNzb2NpYXRlZCIgXAorKyAgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSBub3QgYXNzb2Np YXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1kZWFs bG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQi CisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUg dmxhMSBub3QgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2 bGExKDMsIDYsIDkpIG5vdCBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYTItZGVhbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2bGEyLWRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9IDxu b3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTIgbm90IGFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHR5 cGUgdmxhMig1LCA0NSwgMjApIiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNl IG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRl ZCIKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0xN29mMjMucGF0 Y2ggYi9nZGItdmxhLWludGVsLTE3b2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zNmExNjMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0xN29m MjMucGF0Y2gKQEAgLTAsMCArMSw5NSBAQAorU3ViamVjdDogW1BBVENIIDE3LzIzXSB0ZXN0OiBl dmFsdWF0aW5nIGFsbG9jYXRpb24vYXNzb2NpYXRpb24gc3RhdHVzCitNZXNzYWdlLUlkOiA8MTQw MTg2MTI2Ni02MjQwLTE4LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKwor VGVzdHMgZW5zdXJlIHRoYXQgZHluYW1pYyBhcnJheXMgaW4gZGlmZmVyZW50IHN0YXRlcworKGFs bG9jYXRlZC9hc3NvY2lhdGVkKSBjYW4gYmUgZXZhbHVhdGVkLgorCisyMDE0LTA1LTI4ICBLZXZl biBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKyAgICAgICAgICAgIFNhbmltaXIgQWdv dmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorCit0ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v OgorCisJKiB2bGEtYWxsb2MtYXNzb2MuZXhwOiBOZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJNjk1 MDQ3M2MzZjE3MjRlYmY1YzdiMDM3NzA2MTg2YjJjZDZhZjVmMAorCitTaWduZWQtb2ZmLWJ5OiBL ZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwIHwgICA2NSArKysrKysrKysrKysrKysrKysr KysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAx MDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCisKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1hbGxvYy1hc3NvYy5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1hbGxvYy1hc3NvYy5leHAKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yMDYwN2MzCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1hbGxvYy1hc3NvYy5leHAKK0BAIC0wLDAg KzEsNjUgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0Zmls ZSAidmxhLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewor KyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBw ZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUK Kyt9CisrCisrIyBDaGVjayB0aGUgYXNzb2NpYXRpb24gc3RhdHVzIG9mIHZhcmlvdXMgdHlwZXMg b2YgVkxBJ3MKKysjIGFuZCBwb2ludGVyIHRvIFZMQSdzLgorK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZsYTEtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxc LiIgXAorKyAgInByaW50IHZsYTEgYWxsb2NhdGlvbiBzdGF0dXMgKGFsbG9jYXRlZCkiCisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInBy aW50IGwiICIgPSBcXC5UUlVFXFwuIiBcCisrICAicHJpbnQgdmxhMiBhbGxvY2F0aW9uIHN0YXR1 cyAoYWxsb2NhdGVkKSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi cHZsYS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3Nv Y2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIgXAorKyAgInByaW50 IHB2bGEgYXNzb2NpYXRlZCBzdGF0dXMgKGFzc29jaWF0ZWQpIgorKworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLXJlLWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJwdmxhLXJlLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGwi ICIgPSBcXC5UUlVFXFwuIiBcCisrICAicHJpbnQgcHZsYSBhc3NvY2lhdGVkIHN0YXR1cyAocmUt YXNzb2NpYXRlZCkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2 bGEtZGVhc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1kZWFz c29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5GQUxTRVxcLiIgXAorKyAgInBy aW50IHB2bGEgYWxsb2NhdGlvbiBzdGF0dXMgKGRlYXNzb2NpYXRlZCkiCisrCisrZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZGVhbGxvY2F0ZWQiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJ2bGExLWRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBs IiAiID0gXFwuRkFMU0VcXC4iIFwKKysgICJwcmludCB2bGExIGFsbG9jYXRpb24gc3RhdHVzIChk ZWFsbG9jYXRlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4i IFwKKysgICJwcmludCBkZWFsbG9jYXRlZCB2bGExIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2bGEyLWRlYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAidmxhMi1kZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLkZB TFNFXFwuIiAicHJpbnQgdmxhMiBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMiIg IiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50IGRlYWxsb2NhdGVkIHZsYTIiCistLSAKKzEuNy45 LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMThvZjIzLnBhdGNoIGIvZ2RiLXZsYS1p bnRlbC0xOG9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU1 YjMyZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMThvZjIzLnBhdGNoCkBAIC0w LDAgKzEsMTcxIEBACitTdWJqZWN0OiBbUEFUQ0ggMTgvMjNdIHRlc3Q6IGR5bmFtaWMgYXJyYXlz IHBhc3NlZCB0byBmdW5jdGlvbnMuCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTE5LWdp dC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKworVGVzdHMgZm9yIGR5bmFtaWMg YXJyYXlzIHBhc3NlZCB0byBmdW5jdGlvbnMKK2FuZCByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucy4K KworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisgICAg ICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKwordGVz dHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSogdmxhLWZ1bmMuZjkwOiBOZXcgZmlsZS4KKwkqIHZs YS1mdW5jLmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1JZDogSWMzZWIyMTJmMzVmNTk5ZTRjMTBh Mjg0YzIzMTI1NDkxNjUzYjE3ZGYKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVu LmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1 bmMuZXhwIHwgICA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmY5MCB8ICAgNzEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1v ZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwCisgY3JlYXRl IG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkwCisKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uZjBmMjM2YgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKK0BAIC0wLDAgKzEsNjEgQEAKKysjIENvcHlyaWdo dCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAiLmY5MCIKKysKKytpZiB7IFtw cmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9 IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisr aWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBi cmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBDaGVjayBWTEEgcGFz c2VkIHRvIGZpcnN0IEZvcnRyYW4gZnVuY3Rpb24uCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgImZ1bmMxLXZsYS1wYXNzZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJmdW5jMS12bGEtcGFzc2VkIgorK2dkYl90ZXN0ICJwcmludCB2bGEiICIgPSBcXCggKlxc KCAqMjIsICoyMiwgKjIyLFxbKCkyMiwgLlxdKlxcKSIgXAorKyAgInByaW50IHZsYSAoZnVuYzEp IgorK2dkYl90ZXN0ICJwdHlwZSB2bGEiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxc XCgxMCwxMFxcXCkiIFwKKysgICJwdHlwZSB2bGEgKGZ1bmMxKSIKKysKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtdmxhLW1vZGlmaWVkIl0KKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtdmxhLW1vZGlmaWVkIgorK2dkYl90ZXN0ICJwcmludCB2 bGEoNSw1KSIgIiA9IDU1IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIKKytnZGJfdGVzdCAicHJp bnQgdmxhKDcsNykiICIgPSA3NyIgInByaW50IHZsYSg1LDUpIChmdW5jMSkiCisrCisrIyBDaGVj ayBpZiB0aGUgdmFsdWVzIGFyZSBjb3JyZWN0IGFmdGVyIHJldHVybmluZyBmcm9tIGZ1bmMxCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZ1bmMxLXJldHVybmVkIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtcmV0dXJuZWQiCisrZ2RiX3Rlc3QgInBy aW50IHJldCIgIiA9IC5UUlVFLiIgInByaW50IHJldCBhZnRlciBmdW5jMSByZXR1cm5lZCIKKysK KysjIENoZWNrIFZMQSBwYXNzZWQgdG8gc2Vjb25kIEZvcnRyYW4gZnVuY3Rpb24KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzItdmxhLXBhc3NlZCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMyLXZsYS1wYXNzZWQiCisrZ2RiX3Rlc3QgInByaW50 IHZsYSIgXAorKyAgIiA9IFxcXCg0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0 NFxcXCkiIFwKKysgICJwcmludCB2bGEgKGZ1bmMyKSIKKytnZGJfdGVzdCAicHR5cGUgdmxhIiAi dHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBcXFwoMTBcXFwpIiBcCisrICAicHR5cGUgdmxh IChmdW5jMikiCisrCisrIyBDaGVjayBpZiB0aGUgcmV0dXJuZWQgVkxBIGhhcyB0aGUgY29ycmVj dCB2YWx1ZXMgYW5kIHB0eXBlLgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJmdW5jMi1yZXR1cm5lZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMyLXJl dHVybmVkIgorK2dkYl90ZXN0ICJwcmludCB2bGEzIiAiID0gXFxcKDEsIDIsIDQ0LCA0LCA0NCwg NDQsIDQ0LCA4LCA0NCwgNDRcXFwpIiBcCisrICAicHJpbnQgdmxhMyAoYWZ0ZXIgZnVuYzIpIgor K2dkYl90ZXN0ICJwdHlwZSB2bGEzIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBcXFwo MTBcXFwpIiBcCisrICAicHR5cGUgdmxhMyAoYWZ0ZXIgZnVuYzIpIgorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtZnVuYy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li40ZjQ1ZGExCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1mdW5jLmY5MAorQEAgLTAsMCArMSw3MSBAQAorKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4KKysKKytsb2dpY2FsIGZ1bmN0aW9uIGZ1bmMxICh2bGEpCisrICBpbXBs aWNpdCBub25lCisrICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGEgKDosIDopCisrICBmdW5j MSA9IGFsbG9jYXRlZCh2bGEpCisrICB2bGEoNSw1KSA9IDU1ICAgICAgICAgICAgICAgISBmdW5j MS12bGEtcGFzc2VkCisrICB2bGEoNyw3KSA9IDc3CisrICByZXR1cm4gICAgICAgICAgICAgICAg ICAgICAgISBmdW5jMS12bGEtbW9kaWZpZWQKKytlbmQgZnVuY3Rpb24gZnVuYzEKKysKKytmdW5j dGlvbiBmdW5jMih2bGEpCisrICBpbXBsaWNpdCBub25lCisrICBpbnRlZ2VyIDo6IHZsYSAoOikK KysgIGludGVnZXIgOjogZnVuYzIoc2l6ZSh2bGEpKQorKyAgaW50ZWdlciA6OiBrCisrCisrICB2 bGEoMSkgPSAxICAgICAgICAgICAgICAgICAgICAhIGZ1bmMyLXZsYS1wYXNzZWQKKysgIHZsYSgy KSA9IDIKKysgIHZsYSg0KSA9IDQKKysgIHZsYSg4KSA9IDgKKysKKysgIGZ1bmMyID0gdmxhCisr ZW5kIGZ1bmN0aW9uIGZ1bmMyCisrCisrcHJvZ3JhbSB2bGFfZnVuYworKyAgaW1wbGljaXQgbm9u ZQorKyAgaW50ZXJmYWNlCisrICAgIGxvZ2ljYWwgZnVuY3Rpb24gZnVuYzEgKHZsYSkKKysgICAg ICBpbnRlZ2VyIDo6IHZsYSAoOiwgOikKKysgICAgZW5kIGZ1bmN0aW9uCisrICBlbmQgaW50ZXJm YWNlCisrICBpbnRlcmZhY2UKKysgICAgZnVuY3Rpb24gZnVuYzIgKHZsYSkKKysgICAgICBpbnRl Z2VyIDo6IHZsYSAoOikKKysgICAgICBpbnRlZ2VyIGZ1bmMyKHNpemUodmxhKSkKKysgICAgZW5k IGZ1bmN0aW9uCisrICBlbmQgaW50ZXJmYWNlCisrCisrICBsb2dpY2FsIDo6IHJldAorKyAgaW50 ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhMSAoOiwgOikKKysgIGludGVnZXIsIGFsbG9jYXRhYmxl IDo6IHZsYTIgKDopCisrICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGEzICg6KQorKworKyAg cmV0ID0gLkZBTFNFLgorKworKyAgYWxsb2NhdGUgKHZsYTEgKDEwLDEwKSkKKysgIHZsYTEoOiw6 KSA9IDIyCisrCisrICBhbGxvY2F0ZSAodmxhMiAoMTApKQorKyAgdmxhMig6KSA9IDQ0CisrCisr ICByZXQgPSBmdW5jMSh2bGExKQorKyAgdmxhMyA9IGZ1bmMyKHZsYTIpICAgICAgICAgICEgZnVu YzEtcmV0dXJuZWQKKysKKysgIHJldCA9IC5UUlVFLiAgICAgICAgICAgICAgICAhIGZ1bmMyLXJl dHVybmVkCisrZW5kIHByb2dyYW0gdmxhX2Z1bmMKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0 IGEvZ2RiLXZsYS1pbnRlbC0xOW9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTE5b2YyMy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWY5MWI4Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0xOW9mMjMucGF0Y2gKQEAgLTAsMCArMSw5MiBAQAorU3Vi amVjdDogW1BBVENIIDE5LzIzXSB0ZXN0OiBhY2Nlc3NpbmcgZHluYW1pYyBhcnJheSBoaXN0b3J5 IHZhbHVlcy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMjAtZ2l0LXNlbmQtZW1haWwt a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUZXN0cyBpZiB0aGUgaGlzdG9yeSB2YWx1ZXMgb2Yg ZHluYW1pYyBhcnJheXMgY2FuIGJlCithY2Nlc3NlZCBhbmQgcHJpbnRlZCBhZ2FpbiB3aXRoIHRo ZSBjb3JyZWN0IHZhbHVlcy4KKworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2Vs bEBpbnRlbC5jb20+CisgICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmlj QGludGVsLmNvbT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSogdmxhLWhpc3Rvcnku ZXhwOiBOZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJYjZkMmQzMDI3MmFlZmMyNGI2ZGI1ZmEwNjMz ZmU3MjI3NDM5MGU5MQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxA aW50ZWwuY29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtaGlzdG9yeS5l eHAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQs IDYyIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtaGlzdG9yeS5leHAKKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt aGlzdG9yeS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xNzBlMWVi CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1oaXN0 b3J5LmV4cAorQEAgLTAsMCArMSw2MiBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVidWcg ZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1bnRvIE1BSU5f X10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9f IgorKyAgICBjb250aW51ZQorK30KKysKKysjIFNldCBzb21lIGJyZWFrcG9pbnRzIGFuZCBwcmlu dCBjb21wbGV0ZSB2bGEuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZs YTEtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtaW5pdCIKKytnZGJf dGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50IG5vbi1hbGxvY2F0 ZWQgdmxhMSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1h bGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWFsbG9jYXRlZCIK KytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygp MCwgLlxdKlxcKSIgXAorKyAgInByaW50IHZsYTEgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmlu dCB2bGEyIiAiID0gXFwoICpcXCggKlxcKCAqMCwgKjAsICowLFxbKCkwLCAuXF0qXFwpIiBcCisr ICAicHJpbnQgdmxhMiBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxh MS1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiIFwKKysgICIgPSBcXCggKlxcKCAqXFwo ICoxMzExLCAqMTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpcXCkiIFwKKysgICJwcmludCB2bGEx IGZpbGxlZCIKKysKKysjIFRyeSB0byBhY2Nlc3MgaGlzdG9yeSB2YWx1ZXMgZm9yIGZ1bGwgdmxh IHByaW50cy4KKytnZGJfdGVzdCAicHJpbnQgXCQxIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHJp bnQgXCQxIgorK2dkYl90ZXN0ICJwcmludCBcJDIiICIgPSBcXCggKlxcKCAqXFwoICowLCAqMCwg KjAsXFsoKTAsIC5cXSpcXCkiIFwKKysgICJwcmludCBcJDIiCisrZ2RiX3Rlc3QgInByaW50IFwk MyIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxdKlxcKSIgXAorKyAgInBy aW50IFwkMyIKKytnZGJfdGVzdCAicHJpbnQgXCQ0IiBcCisrICAiID0gXFwoICpcXCggKlxcKCAq MTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiAicHJpbnQgXCQ0IgorKworK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWZpbGxlZCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZmlsbGVkIgorK2dkYl90ZXN0ICJwcmludCB2bGEy KDEsNDMsMjApIiAiID0gMTMxMSIgInByaW50IHZsYTIoMSw0MywyMCkiCisrZ2RiX3Rlc3QgInBy aW50IHZsYTEoMSwzLDgpIiAiID0gMTAwMSIgInByaW50IHZsYTIoMSwzLDgpIgorKworKyMgVHJ5 IHRvIGFjY2VzcyBoaXN0b3J5IHZhbHVlcyBmb3IgdmxhIHZhbHVlcy4KKytnZGJfdGVzdCAicHJp bnQgXCQ5IiAiID0gMTMxMSIgInByaW50IFwkOSIKKytnZGJfdGVzdCAicHJpbnQgXCQxMCIgIiA9 IDEwMDEiICJwcmludCBcJDEwIgorLS0gCisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxh LWludGVsLTIwb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjBvZjIzLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZjVhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItdmxhLWludGVsLTIwb2YyMy5wYXRjaApAQCAtMCwwICsxLDE4MSBAQAorU3ViamVjdDogW1BB VENIIDIwLzIzXSB0ZXN0OiBkeW5hbWljIHN0cmluZyBldmFsdWF0aW9ucy4KK01lc3NhZ2UtSWQ6 IDwxNDAxODYxMjY2LTYyNDAtMjEtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29t PgorCitUZXN0cyB2YXJpb3VzIGR5bmFtaWMgc3RyaW5nIGV2YWx1YXRpb25zLiBEeW5hbWljIHN0 cmluZ3MKK3dpbGwgYmUgaGFuZGxlZCBpbnRlcm5hbGx5IHRoZSBzYW1lIHdheSBhcyBkeW5hbWlj IGFycmF5cy4KKworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5j b20+CisgICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNv bT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSogdmxhLXN0cmluZ3MuZjkwOiBOZXcg ZmlsZS4KKwkqIHZsYS1zdHJpbmdzLmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1JZDogSWIyZjNk ZGVkMmZiYzVmMGE5Njg0MDUwYzVjZmEyMmE0NTBlMTgzNTgKKworU2lnbmVkLW9mZi1ieTogS2V2 ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwIHwgIDEwNCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwIHwgICAzOCAr KysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKykKKyBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAKKyBj cmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5m OTAKKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3Mu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43ZmMxNzM0CistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cAorQEAgLTAsMCArMSwx MDQgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAi LmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rl c3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICBy ZXR1cm4gLTEKKyt9CisrCisrIyBjaGVjayB0aGF0IGFsbCBmb3J0cmFuIHN0YW5kYXJkIGRhdGF0 eXBlcyB3aWxsIGJlCisrIyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIHVzaW5nIGFzIFZMQSdzCisr CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWFsbG9jYXRlZC0xIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItYWxsb2NhdGVkLTEiCisrZ2RiX3Rlc3QgInBy aW50IHZhcl9jaGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoxMCBc XClcXCkgJHtoZXh9IiBcCisrICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIGZpcnN0 IHRpbWUiCisrZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgXAorKyAgIiA9ICdcXFxcMDAwXFxc XDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxc MDAwJyIgXAorKyAgInByaW50ICp2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgZmlyc3QgdGltZSIK KytnZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFj dGVyXFwqMTAgXFwpIiBcCisrICAid2hhdGlzIHZhcl9jaGFyIGZpcnN0IHRpbWUiCisrZ2RiX3Rl c3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAg XFwpIiBcCisrICAicHR5cGUgdmFyX2NoYXIgZmlyc3QgdGltZSIKKytnZGJfdGVzdCAibmV4dCIg IlxcZCsuKnZhcl9jaGFyID0gJ2ZvbycuKiIgXAorKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0 dXMgb2YgdmFyX2NoYXIiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSAuVFJVRS4iICJwcmludCBh bGxvY2F0aW9uIHN0YXR1cyBmaXJzdCB0aW1lIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1maWxsZWQtMSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZhcl9jaGFyLWZpbGxlZC0xIgorK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhciIgXAor KyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXClcXCkgJHtoZXh9IiBcCisr ICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgZmlsbGVkIGZpcnN0IHRpbWUiCisrZ2RiX3Rlc3QgInBy aW50ICp2YXJfY2hhciIgIiA9ICdmb28nIiBcCisrICAicHJpbnQgKnZhcl9jaGFyIGFmdGVyIGZp bGxlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJ3aGF0aXMgdmFyX2NoYXIiICJ0eXBlID0gUFRS IFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKSIgXAorKyAgIndoYXRpcyB2YXJfY2hhciBhZnRl ciBmaWxsZWQgZmlyc3QgdGltZSIKKytnZGJfdGVzdCAicHR5cGUgdmFyX2NoYXIiICJ0eXBlID0g UFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKSIgXAorKyAgInB0eXBlIHZhcl9jaGFyIGFm dGVyIGZpbGxlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhcigxKSIgIiA9 IDEwMiAnZiciICJwcmludCB2YXJfY2hhcigxKSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIo MykiICIgPSAxMTEgJ28nIiAicHJpbnQgdmFyX2NoYXIoMykiCisrCisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWZpbGxlZC0yIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAidmFyX2NoYXItZmlsbGVkLTIiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9j aGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCo2IFxcKVxcKSAke2hl eH0iIFwKKysgICJwcmludCB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgc2Vjb25kIHRpbWUiCisr Z2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9ICdmb29iYXInIiBcCisrICAicHJpbnQgKnZh cl9jaGFyIGFmdGVyIGFsbG9jYXRlZCBzZWNvbmQgdGltZSIKKytnZGJfdGVzdCAid2hhdGlzIHZh cl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXCkiIFwKKysgICJ3 aGF0aXMgdmFyX2NoYXIgc2Vjb25kIHRpbWUiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAi dHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXCkiIFwKKysgICJwdHlwZSB2YXJf Y2hhciBzZWNvbmQgdGltZSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAidmFyX2NoYXItZW1wdHkiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJfY2hh ci1lbXB0eSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIiIFwKKysgICIgPSBcXChQVFIgVE8g LT4gXFwoIGNoYXJhY3RlclxcKjAgXFwpXFwpICR7aGV4fSIgXAorKyAgInByaW50IHZhcl9jaGFy IGFmdGVyIHNldCBlbXB0eSIKKytnZGJfdGVzdCAicHJpbnQgKnZhcl9jaGFyIiAiID0gXCJcIiIg InByaW50ICp2YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCisrZ2RiX3Rlc3QgIndoYXRpcyB2YXJf Y2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjAgXFwpIiBcCisrICAid2hh dGlzIHZhcl9jaGFyIGFmdGVyIHNldCBlbXB0eSIKKytnZGJfdGVzdCAicHR5cGUgdmFyX2NoYXIi ICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKSIgXAorKyAgInB0eXBlIHZh cl9jaGFyIGFmdGVyIHNldCBlbXB0eSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFyX2NoYXItYWxsb2NhdGVkLTMiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2YXJfY2hhci1hbGxvY2F0ZWQtMyIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIiIFwK KysgICIgPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjIxIFxcKVxcKSAke2hleH0iIFwK KysgICJwcmludCB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIKKytnZGJfdGVz dCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMjEg XFwpIiBcCisrICAid2hhdGlzIHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCB0aGlyZCB0aW1lIgor K2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3Rl clxcKjIxIFxcKSIgXAorKyAgInB0eXBlIHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCB0aGlyZCB0 aW1lIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhcl9w LWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJfY2hhcl9wLWFz c29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyX3AiIFwKKysgICIgPSBcXChQVFIg VE8gLT4gXFwoIGNoYXJhY3RlclxcKjcgXFwpXFwpICR7aGV4fSIgXAorKyAgInByaW50IHZhcl9j aGFyX3AgYWZ0ZXIgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgKnZhcl9jaGFyX3AiICIg PSAnam9obmRvZSciIFwKKysgICJwcmludCAqdmFyX2NoYXJfIGFmdGVyIGFzc29jaWF0ZWQiCisr Z2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhcl9wIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFj dGVyXFwqNyBcXCkiIFwKKysgICJ3aGF0aXMgdmFyX2NoYXJfcCBhZnRlciBhc3NvY2lhdGVkIgor K2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhcl9wIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFj dGVyXFwqNyBcXCkiIFwKKysgICJwdHlwZSB2YXJfY2hhcl9wIGFmdGVyIGFzc29jaWF0ZWQiCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5mOTAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLjY2NzkwNDMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwCitAQCAtMCwwICsxLDM4IEBACisr ISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKworK3Byb2dyYW0gdmxhX3N0 cmluZ3MKKysgIGNoYXJhY3RlcihsZW49OiksIHRhcmdldCwgYWxsb2NhdGFibGUgICA6OiB2YXJf Y2hhcgorKyAgY2hhcmFjdGVyKGxlbj06KSwgcG9pbnRlciAgICAgICAgICAgICAgIDo6IHZhcl9j aGFyX3AKKysgIGxvZ2ljYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsCisr CisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTEwKSA6OiB2YXJfY2hhcikKKysgIGwgPSBhbGxv Y2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRlZC0xCisr ICB2YXJfY2hhciA9ICdmb28nCisrICBkZWFsbG9jYXRlKHZhcl9jaGFyKSAgICAgICAgICAgICAg ICAgICAgISB2YXJfY2hhci1maWxsZWQtMQorKyAgbCA9IGFsbG9jYXRlZCh2YXJfY2hhcikgICAg ICAgICAgICAgICAgICEgdmFyX2NoYXItZGVhbGxvY2F0ZWQKKysgIGFsbG9jYXRlKGNoYXJhY3Rl cihsZW49NDIpIDo6IHZhcl9jaGFyKQorKyAgbCA9IGFsbG9jYXRlZCh2YXJfY2hhcikKKysgIHZh cl9jaGFyID0gJ2Zvb2JhcicKKysgIHZhcl9jaGFyID0gJycgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhcl9jaGFyLWZpbGxlZC0yCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTIxKSA6 OiB2YXJfY2hhcikgISB2YXJfY2hhci1lbXB0eQorKyAgbCA9IGFsbG9jYXRlZCh2YXJfY2hhcikg ICAgICAgICAgICAgICAgICEgdmFyX2NoYXItYWxsb2NhdGVkLTMKKysgIHZhcl9jaGFyID0gJ2pv aG5kb2UnCisrICB2YXJfY2hhcl9wID0+IHZhcl9jaGFyCisrICBsID0gYXNzb2NpYXRlZCh2YXJf Y2hhcl9wKSAgICAgICAgICAgICAgISB2YXJfY2hhcl9wLWFzc29jaWF0ZWQKKysgIHZhcl9jaGFy X3AgPT4gbnVsbCgpCisrICBsID0gYXNzb2NpYXRlZCh2YXJfY2hhcl9wKSAgICAgICAgICAgICAg ISB2YXJfY2hhcl9wLW5vdC1hc3NvY2lhdGVkCisrZW5kIHByb2dyYW0gdmxhX3N0cmluZ3MKKy0t IAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0yMW9mMjMucGF0Y2ggYi9n ZGItdmxhLWludGVsLTIxb2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi45NDk0YjkyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0yMW9mMjMucGF0 Y2gKQEAgLTAsMCArMSwyNjIgQEAKK1N1YmplY3Q6IFtQQVRDSCAyMS8yM10gdGVzdDogYmFzaWMg TUkgdGVzdCBmb3IgdGhlIGR5bmFtaWMgYXJyYXkgc3VwcG9ydC4KK01lc3NhZ2UtSWQ6IDwxNDAx ODYxMjY2LTYyNDAtMjItZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitU ZXN0cyBkeW5hbWljIGFycmF5IGV2YWx1YXRpb25zIHVzaW5nIE1JIHByb3RvY29sLgorCisyMDE0 LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKyAgICAgICAgICAg IFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorCit0ZXN0c3VpdGUv Z2RiLm1pLzoKKworCSogbWktdmxhLWZvcnRyYW4uZXhwOiBOZXcgZmlsZS4KKwkqIHZsYS5mOTA6 IE5ldyBmaWxlLgorCitDaGFuZ2UtSWQ6IEkzN2NhYTg1YjE0OTg0NzhmNWVmZjBmNTJkM2ZkNDMx Mzg4YWFhYjZmCisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRl bC5jb20+CistLS0KKyBnZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAgfCAg MTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5t aS92bGEuZjkwICAgICAgICAgICAgfCAgIDQyICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDIy NCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLXZsYS1mb3J0cmFuLmV4cAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dk Yi5taS92bGEuZjkwCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEt Zm9ydHJhbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MmIwYmUyCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAKK0BAIC0wLDAg KzEsMTgyIEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBWZXJpZnkgdGhhdCwg dXNpbmcgdGhlIE1JLCB3ZSBjYW4gZXZhbHVhdGUgYSBzaW1wbGUgQyBWYXJpYWJsZSBMZW5ndGgK KysjIEFycmF5IChWTEEpLgorKworK2xvYWRfbGliIG1pLXN1cHBvcnQuZXhwCisrc2V0IE1JRkxB R1MgIi1pPW1pIgorKworK2dkYl9leGl0CisraWYgW21pX2dkYl9zdGFydF0geworKyAgICBjb250 aW51ZQorK30KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSB2bGEuZjkwCisrCisraWYgeyBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1 dGFibGUgXAorKyAgICAge2RlYnVnIGY5MH1dICE9ICIiIH0geworKyAgICAgdW50ZXN0ZWQgbWkt dmxhLWZvcnRyYW4uZXhwCisrICAgICByZXR1cm4gLTEKKyt9CisrCisrbWlfZGVsZXRlX2JyZWFr cG9pbnRzCisrbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrbWlfZ2Ri X2xvYWQgJHtiaW5maWxlfQorKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIg InZsYTEtbm90LWFsbG9jYXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6 JGJwX2xpbmVubyIgMSAiZGVsIiAidmxhIiBcCisrICAiLip2bGEuZjkwIiAkYnBfbGluZW5vICRo ZXggXAorKyAgImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyAodmxhIG5vdCBh bGxvY2F0ZWQpIgorK21pX3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQi ICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVs XCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVz dCAiNTAwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExIiBcCisrICAiNTAwXFxeZG9uZSx2 YWx1ZT1cIjxub3QgYWxsb2NhdGVkPlwiIiAiZXZhbHVhdGUgbm90IGFsbG9jYXRlZCB2bGEiCisr CisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHZsYTFfbm90X2FsbG9jYXRlZCB2bGExICI8bm90 IGFsbG9jYXRlZD4iIFwKKysgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2Nh dGVkIgorK21pX2dkYl90ZXN0ICI1MDEtdmFyLWluZm8tdHlwZSB2bGExX25vdF9hbGxvY2F0ZWQi IFwKKysgICI1MDFcXF5kb25lLHR5cGU9XCI8bm90IGFsbG9jYXRlZD5cIiIgXAorKyAgImluZm8g dHlwZSB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUwMi12YXIt c2hvdy1mb3JtYXQgdmxhMV9ub3RfYWxsb2NhdGVkIiBcCisrICAiNTAyXFxeZG9uZSxmb3JtYXQ9 XCJuYXR1cmFsXCIiIFwKKysgICJzaG93IGZvcm1hdCB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0 ZWQiCisrbWlfZ2RiX3Rlc3QgIjUwMy12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExX25vdF9h bGxvY2F0ZWQiIFwKKysgICI1MDNcXF5kb25lLHZhbHVlPVwiXFxcWzBcXFxdXCIiIFwKKysgICJl dmFsIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKKyttaV9saXN0X2FycmF5X3Zhcm9ial9j aGlsZHJlbl93aXRoX2luZGV4ICJ2bGExX25vdF9hbGxvY2F0ZWQiICIwIiAiMSIgXAorKyAgICAi cmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9mIHZsYTFfbm90X2FsbG9jYXRlZCIK KysKKysKKysKKytzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9j YXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xpbmVubyIgMiAi ZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXggImluc2VydCBicmVh a3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyAodmxhIGFsbG9jYXRlZCkiCisrbWlfcnVuX2NtZAor K21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRi cF9saW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQg YXQgbGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1MTAtZGF0YS1ldmFsdWF0ZS1leHBy ZXNzaW9uIHZsYTEiIFwKKysgICI1MTBcXF5kb25lLHZhbHVlPVwiXFwoMCwgMCwgMCwgMCwgMFxc KVwiIiAiZXZhbHVhdGUgYWxsb2NhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNr ZWQgdmxhMV9hbGxvY2F0ZWQgdmxhMSAicmVhbFxcXChraW5kPTRcXFwpIFxcXCg1XFxcKSIgXAor KyAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKKyttaV9nZGJfdGVzdCAi NTExLXZhci1pbmZvLXR5cGUgdmxhMV9hbGxvY2F0ZWQiIFwKKysgICI1MTFcXF5kb25lLHR5cGU9 XCJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDVcXFwpXCIiIFwKKysgICJpbmZvIHR5cGUgdmFyaWFi bGUgdmxhMV9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUxMi12YXItc2hvdy1mb3JtYXQgdmxh MV9hbGxvY2F0ZWQiIFwKKysgICI1MTJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAorKyAg InNob3cgZm9ybWF0IHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgorK21pX2dkYl90ZXN0ICI1MTMt dmFyLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMV9hbGxvY2F0ZWQiIFwKKysgICI1MTNcXF5kb25l LHZhbHVlPVwiXFxcWzVcXFxdXCIiIFwKKysgICJldmFsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVk IgorK21pX2xpc3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfYWxsb2Nh dGVkIiAiNSIgIjEiIFwKKysgICAgInJlYWxcXFwoa2luZD00XFxcKSIgImdldCBjaGlsZHJlbiBv ZiB2bGExX2FsbG9jYXRlZCIKKysKKysKKytzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2bGExLWZpbGxlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJw X2xpbmVubyIgMyAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXgg Imluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9ydW5fY21kCisrbWlf ZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xp bmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBs aW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjUyMC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Np b24gdmxhMSIgXAorKyAgIjUyMFxcXmRvbmUsdmFsdWU9XCJcXCgxLCAxLCAxLCAxLCAxXFwpXCIi ICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGlu ZV9udW1iZXIgInZsYTEtbW9kaWZpZWQiXQorK21pX2NyZWF0ZV9icmVha3BvaW50ICItdCB2bGEu ZjkwOiRicF9saW5lbm8iIDQgImRlbCIgInZsYSIgIi4qdmxhLmY5MCIgXAorKyAgJGJwX2xpbmVu byAkaGV4ICJpbnNlcnQgYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfcnVuX2Nt ZAorK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIg IiRicF9saW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9p bnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1MzAtZGF0YS1ldmFsdWF0ZS1l eHByZXNzaW9uIHZsYTEiIFwKKysgICI1MzBcXF5kb25lLHZhbHVlPVwiXFwoMSwgNDIsIDEsIDI0 LCAxXFwpXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorK21pX2dkYl90ZXN0ICI1NDAtZGF0YS1l dmFsdWF0ZS1leHByZXNzaW9uIHZsYTEoMSkiIFwKKysgICI1NDBcXF5kb25lLHZhbHVlPVwiMVwi IiAiZXZhbHVhdGUgZmlsbGVkIHZsYSIKKyttaV9nZGJfdGVzdCAiNTUwLWRhdGEtZXZhbHVhdGUt ZXhwcmVzc2lvbiB2bGExKDIpIiBcCisrICAiNTUwXFxeZG9uZSx2YWx1ZT1cIjQyXCIiICJldmFs dWF0ZSBmaWxsZWQgdmxhIgorK21pX2dkYl90ZXN0ICI1NjAtZGF0YS1ldmFsdWF0ZS1leHByZXNz aW9uIHZsYTEoNCkiIFwKKysgICI1NjBcXF5kb25lLHZhbHVlPVwiMjRcIiIgImV2YWx1YXRlIGZp bGxlZCB2bGEiCisrCisrCisrc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5lX251bWJlciAidmxh MS1kZWFsbG9jYXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xp bmVubyIgNSAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXggImlu c2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9ydW5fY21kCisrbWlfZXhw ZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVu byIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5l ICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjU3MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24g dmxhMSIgXAorKyAgIjU3MFxcXmRvbmUsdmFsdWU9XCI8bm90IGFsbG9jYXRlZD5cIiIgImV2YWx1 YXRlIG5vdCBhbGxvY2F0ZWQgdmxhIgorKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGlu ZV9udW1iZXIgInB2bGEyLW5vdC1hc3NvY2lhdGVkIl0KKyttaV9jcmVhdGVfYnJlYWtwb2ludCAi LXQgdmxhLmY5MDokYnBfbGluZW5vIiA2ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysgICRi cF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21p X3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZs YS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBi cmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAiNTgwLWRhdGEtZXZh bHVhdGUtZXhwcmVzc2lvbiBwdmxhMiIgXAorKyAgIjU4MFxcXmRvbmUsdmFsdWU9XCI8bm90IGFz c29jaWF0ZWQ+XCIiICJldmFsdWF0ZSBub3QgYXNzb2NpYXRlZCB2bGEiCisrCisrbWlfY3JlYXRl X3Zhcm9ial9jaGVja2VkIHB2bGEyX25vdF9hc3NvY2lhdGVkIHB2bGEyICI8bm90IGFzc29jaWF0 ZWQ+IiBcCisrICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgor K21pX2dkYl90ZXN0ICI1ODEtdmFyLWluZm8tdHlwZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIgXAor KyAgIjU4MVxcXmRvbmUsdHlwZT1cIjxub3QgYXNzb2NpYXRlZD5cIiIgXAorKyAgImluZm8gdHlw ZSB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKKyttaV9nZGJfdGVzdCAiNTgyLXZhci1z aG93LWZvcm1hdCBwdmxhMl9ub3RfYXNzb2NpYXRlZCIgXAorKyAgIjU4MlxcXmRvbmUsZm9ybWF0 PVwibmF0dXJhbFwiIiBcCisrICAic2hvdyBmb3JtYXQgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29j aWF0ZWQiCisrbWlfZ2RiX3Rlc3QgIjU4My12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMl9u b3RfYXNzb2NpYXRlZCIgXAorKyAgIjU4M1xcXmRvbmUsdmFsdWU9XCJcXFxbMFxcXF1cIiIgXAor KyAgImV2YWwgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisrbWlfbGlzdF9hcnJheV92 YXJvYmpfY2hpbGRyZW5fd2l0aF9pbmRleCAicHZsYTJfbm90X2Fzc29jaWF0ZWQiICIwIiAiMSIg XAorKyAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9mIHB2bGEyX25vdF9h c3NvY2lhdGVkIgorKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInB2 bGEyLWFzc29jaWF0ZWQiXQorK21pX2NyZWF0ZV9icmVha3BvaW50ICItdCB2bGEuZjkwOiRicF9s aW5lbm8iIDcgImRlbCIgInZsYSIgIi4qdmxhLmY5MCIgXAorKyAgJGJwX2xpbmVubyAkaGV4ICJp bnNlcnQgYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfcnVuX2NtZAorK21pX2V4 cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5l bm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGlu ZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1OTAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9u IHB2bGEyIiBcCisrICAiNTkwXFxeZG9uZSx2YWx1ZT1cIlxcKFxcKCAyLCAyLCAyLCAyLCAyXFwp IFxcKCAyLCAyLCAyLCAyLCAyXFwpIFxcKVwiIiBcCisrICAiZXZhbHVhdGUgYXNzb2NpYXRlZCB2 bGEiCisrCisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHB2bGEyX2Fzc29jaWF0ZWQgcHZsYTIg XAorKyAgInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNSwyXFxcKSIgImNyZWF0ZSBsb2NhbCB2YXJp YWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1OTEtdmFyLWluZm8tdHlwZSBw dmxhMl9hc3NvY2lhdGVkIiBcCisrICAiNTkxXFxeZG9uZSx0eXBlPVwicmVhbFxcXChraW5kPTRc XFwpIFxcXCg1LDJcXFwpXCIiIFwKKysgICJpbmZvIHR5cGUgdmFyaWFibGUgcHZsYTJfYXNzb2Np YXRlZCIKKyttaV9nZGJfdGVzdCAiNTkyLXZhci1zaG93LWZvcm1hdCBwdmxhMl9hc3NvY2lhdGVk IiBcCisrICAiNTkyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKKysgICJzaG93IGZvcm1h dCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1OTMtdmFyLWV2YWx1 YXRlLWV4cHJlc3Npb24gcHZsYTJfYXNzb2NpYXRlZCIgXAorKyAgIjU5M1xcXmRvbmUsdmFsdWU9 XCJcXFxbMlxcXF1cIiIgXAorKyAgImV2YWwgdmFyaWFibGUgcHZsYTJfYXNzb2NpYXRlZCIKKysK KysKKytzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhMi1zZXQtdG8tbnVs bCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xpbmVubyIgOCAiZGVs IiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXggImluc2VydCBicmVha3Bv aW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJy ZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAi IiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8i CisrbWlfZ2RiX3Rlc3QgIjYwMC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gcHZsYTIiIFwKKysg ICI2MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhc3NvY2lhdGVkPlwiIiAiZXZhbHVhdGUgdmxhIHBv aW50ZXIgc2V0IHRvIG51bGwiCisrCisrbWlfZ2RiX2V4aXQKKytyZXR1cm4gMAorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL3ZsYS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS92 bGEuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDZlZGFkMgorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmxhLmY5MAorQEAgLTAsMCAr MSw0MiBAQAorKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytwcm9ncmFtIHZsYQorKyAg cmVhbCwgYWxsb2NhdGFibGUgOjogdmxhMSAoOikKKysgIHJlYWwsIHRhcmdldCwgYWxsb2NhdGFi bGUgOjogdmxhMig6LCA6KQorKyAgcmVhbCwgcG9pbnRlciA6OiBwdmxhMiAoOiwgOikKKysgIGxv Z2ljYWwgOjogbAorKworKyAgYWxsb2NhdGUgKHZsYTEgKDUpKSAgICAgICAgICEgdmxhMS1ub3Qt YWxsb2NhdGVkCisrICBsID0gYWxsb2NhdGVkKHZsYTEpICAgICAgICAgISB2bGExLWFsbG9jYXRl ZAorKworKyAgdmxhMSg6KSA9IDEKKysgIHZsYTEoMikgPSA0MiAgICAgICAgICAgICAgICAhIHZs YTEtZmlsbGVkCisrICB2bGExKDQpID0gMjQKKysKKysgIGRlYWxsb2NhdGUgKHZsYTEpICAgICAg ICAgICAhIHZsYTEtbW9kaWZpZWQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMSkgICAgICAgICAhIHZs YTEtZGVhbGxvY2F0ZWQKKysKKysgIGFsbG9jYXRlICh2bGEyICg1LCAyKSkKKysgIHZsYTIoOiwg OikgPSAyCisrCisrICBwdmxhMiA9PiB2bGEyICAgICAgICAgICAgICAgISBwdmxhMi1ub3QtYXNz b2NpYXRlZAorKyAgbCA9IGFzc29jaWF0ZWQocHZsYTIpICAgICAgICEgcHZsYTItYXNzb2NpYXRl ZAorKworKyAgcHZsYTIoMiwgMSkgPSA0MgorKworKyAgcHZsYTIgPT4gbnVsbCgpCisrICBsID0g YXNzb2NpYXRlZChwdmxhMikgICAgICAgISBwdmxhMi1zZXQtdG8tbnVsbAorK2VuZCBwcm9ncmFt IHZsYQorLS0gCisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTIyb2YyMy5w YXRjaCBiL2dkYi12bGEtaW50ZWwtMjJvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjFhMDY3NGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLTIy b2YyMy5wYXRjaApAQCAtMCwwICsxLDc1IEBACitTdWJqZWN0OiBbUEFUQ0ggMjIvMjNdIHRlc3Q6 IHRlc3Qgc2l6ZW9mIGZvciBkeW5hbWljIGZvcnRyYW4gYXJyYXlzLgorTWVzc2FnZS1JZDogPDE0 MDE4NjEyNjYtNjI0MC0yMy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+CisK K1Rlc3RzIHNpemVvZiBvdXRwdXQgb2YgZHluYW1pYyBhcnJheXMgaW4gdmFyaW91cyBzdGF0ZXMu CisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAg ICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKK3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi86CisKKwkqIHZsYS1zaXplb2YuZXhwOiBOZXcgZmlsZS4KKwor Q2hhbmdlLUlkOiBJNjhkODFkMDNmZjJkYWEzMmFiODdkMjc1MDg3MzY1MmQ2ODRlNzM4OQorCitT aWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisg Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cCB8ICAgNDYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKykK KyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9m LmV4cAorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9m LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42MDUzYzE3CistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCitAQCAtMCwwICsxLDQ2 IEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysj CisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZs YS5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAg cmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQor KworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRlZCBWTEEKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgorK2dkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSki ICIgPSAwIiAicHJpbnQgc2l6ZW9mIG5vbi1hbGxvY2F0ZWQgdmxhMSIKKysKKysjIFRyeSB0byBh Y2Nlc3MgdmFsdWUgaW4gYWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZsYTItYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSkiICIgPSA0MDAw IiAicHJpbnQgc2l6ZW9mIGFsbG9jYXRlZCB2bGExIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1 ZXMgaW4gdW5kZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2bGExLWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEpIiAi ID0gMCIgInByaW50IHNpemVvZiBub24tYXNzb2NpYXRlZCBwdmxhIgorKworKyMgVHJ5IHRvIGFj Y2VzcyB2YWx1ZXMgaW4gcG9pbnRlciB0byBWTEEgYW5kIGNvbXBhcmUgdGhlbQorK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHNp emVvZihwdmxhKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYXNzb2NpYXRlZCBwdmxhIgorLS0g CisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTIzb2YyMy5wYXRjaCBiL2dk Yi12bGEtaW50ZWwtMjNvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmM5NjU3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLTIzb2YyMy5wYXRj aApAQCAtMCwwICsxLDExOSBAQAorU3ViamVjdDogW1BBVENIIDIzLzIzXSB0ZXN0OiBzdHJpZGUg c3VwcG9ydCBmb3IgZHluYW1pYyBhcnJheXMuCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQw LTI0LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKworVGVzdHMgdGhlIHVz YWdlIG9mIHN0cmlkZSB2YWx1ZXMgaW4gZHluYW1pYyBhcnJheXMuCisKKzIwMTQtMDUtMjggIFNh bmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorICAgICAgICAgICAgS2V2 ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi86CisKKwkqIHZsYS1zdHJpZGUuZXhwOiBOZXcgZmlsZS4KKwkqIHZsYS1zdHJpZGUuZjkwOiBO ZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJYzRmNjhjZjk3MDQ2Y2M5ZjVmMzY2NGZlNGMxMmQyYjc1 MjhjMjJlZQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cCB8ICAg NTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtc3RyaWRlLmY5MCB8ICAgMzAgKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBj aGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXN0cmlkZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5lNzkxMTE1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zdHJpZGUuZXhwCitAQCAtMCwwICsxLDUxIEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtk ZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJyZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAicmV2ZXJzZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxMCwg OSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMVxcXCkiIFwKKysgICJwcmludCByZXZlcnNlLWVsZW1l bnRzIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMTAiICJwcmludCBmaXJzdCByZXZl cnNlLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMTApIiAiID0gMSIgInByaW50IGxh c3QgcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJyZS1yZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi cmUtcmV2ZXJzZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAy LCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKKysgICJwcmludCByZS1yZXZlcnNlLWVs ZW1lbnRzIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IHJl LXJldmVyc2UtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAxMCIgInBy aW50IGxhc3QgcmUtcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJvZGQtZWxlbWVudHMiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwgMywgNSwg NywgOVxcXCkiICJwcmludCBvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMSki ICIgPSAxIiAicHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEo NSkiICIgPSA5IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJzaW5nbGUtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxc XCg1XFxcKSIgInByaW50IHNpbmdsZS1lbGVtZW50IgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEp IiAiID0gNSIgInByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtc3RyaWRlLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LjFmOGNjNTUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXN0cmlkZS5mOTAKK0BAIC0wLDAgKzEsMzAgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuCisrCisrcHJvZ3JhbSB2bGFfc3RyaWRlCisrICBpbnRlZ2VyLCB0YXJn ZXQsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOikKKysgIGludGVnZXIsIHBvaW50ZXIgOjogcHZsYSAo OikKKysKKysgIGFsbG9jYXRlKHZsYSgxMCkpCisrICB2bGEgPSAoLyAoSSwgSSA9IDEsMTApIC8p CisrCisrICBwdmxhID0+IHZsYSgxMDoxOi0xKQorKyAgcHZsYSA9PiBwdmxhKDEwOjE6LTEpICEg cmV2ZXJzZS1lbGVtZW50cworKyAgcHZsYSA9PiB2bGEoMToxMDoyKSAgICEgcmUtcmV2ZXJzZS1l bGVtZW50cworKyAgcHZsYSA9PiB2bGEoNTo0Oi0yKSAgICEgb2RkLWVsZW1lbnRzCisrCisrICBw dmxhID0+IG51bGwoKSAgICAgICAgISBzaW5nbGUtZWxlbWVudAorK2VuZCBwcm9ncmFtIHZsYV9z dHJpZGUKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXdhdGNocG9pbnQtZm9yay1m aXgucGF0Y2ggYi9nZGItd2F0Y2hwb2ludC1mb3JrLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4zODhkM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXdhdGNo cG9pbnQtZm9yay1maXgucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA3MTAuaHRtbAorU3ViamVjdDogUmU6IFJl Z3Jlc3Npb24gZm9yIHdhdGNocG9pbnQtZm9yay5leHAgIFtSZTogW1BBVENIIHYzIDIvNV0gUFIg YnJlYWtwb2ludHMvNzE0MyAtIFdhdGNocG9pbnQgZG9lcyBub3QgdHJpZ2dlciB3aGVuIGZpcnN0 IHNldF0KKworT24gMDYvMTkvMjAxNCAwNDowMiBQTSwgUGVkcm8gQWx2ZXMgd3JvdGU6CisKKz4+ IEF0dGFjaGluZyBnemlwcGVkIGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQtc3QK Kz4+IGZyb20gZ2NjLTQuOS4wLTkuZmMyMS54ODZfNjQuCis+IAorPiBUaGFua3MsIEkgY2FuIHJl cHJvZHVjZSBpdC4KKworSG1tLCBJIHN1c3BlY3QgdGhpcyBtaWdodCBiZSByZWxhdGVkIHRvIGtl cm5lbC1zaWRlIHZhbGlkYXRpb24KK29mIERSX0NPTlRST0wgdnMgRFIwLTMsIGxpa2Ugd2hhdCB3 ZSBhbHJlYWR5IGhhbmRsZSBpbiBhbWQ2NF9saW51eF9wcmVwYXJlX3RvX3Jlc3VtZS4KK0FuZCBp bmRlZWQgdGhpcyBiZWxvdyBtYWtlcyB0aGUgZXJyb3IgZ28gYXdheS4gIE5vdCBleGFjdGx5IHN1 cmUgd2h5IHlldC4KKworWyBwYXRjaCBleHRlbmRlZCBieSBKYW4gS3JhdG9jaHZpbCBdCisKKy0t LSBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pMzg2LWxpbnV4LW5hdC5jLm9yaWcJMjAxNC0wNi0x OSAyMTo0MjowMC43ODg2MTE1NDQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9p Mzg2LWxpbnV4LW5hdC5jCTIwMTQtMDYtMTkgMjE6NDI6MDQuNTU2NjE0NDAxICswMjAwCitAQCAt Nzc4LDYgKzc3OCw4IEBAIGkzODZfbGludXhfcHJlcGFyZV90b19yZXN1bWUgKHN0cnVjdCBsd3AK KyAgICAgICAvKiBTZWUgYW1kNjRfbGludXhfcHJlcGFyZV90b19yZXN1bWUgZm9yIExpbnV4IGtl cm5lbCBub3RlIG9uCisgCSBpMzg2X2xpbnV4X2RyX3NldCBjYWxscyBvcmRlcmluZy4gICovCisg CisrICAgICAgaTM4Nl9saW51eF9kcl9zZXQgKGx3cC0+cHRpZCwgRFJfQ09OVFJPTCwgMCk7Cisr CisgICAgICAgZm9yIChpID0gRFJfRklSU1RBRERSOyBpIDw9IERSX0xBU1RBRERSOyBpKyspCisg CWlmIChzdGF0ZS0+ZHJfcmVmX2NvdW50W2ldID4gMCkKKyAJICB7CistLS0gZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvYW1kNjQtbGludXgtbmF0LmMub3JpZwkyMDE0LTA2LTE5IDIxOjQwOjM3LjU4 MjUzNDM5MiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FtZDY0LWxpbnV4LW5h dC5jCTIwMTQtMDYtMTkgMjE6NDE6MTcuMTkyNTcwOTAyICswMjAwCitAQCAtNDE1LDYgKzQxNSw4 IEBAIGFtZDY0X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHcKKyAKKyAJIEVuc3Vy ZSBEUl9DT05UUk9MIGdldHMgd3JpdHRlbiBhcyB0aGUgdmVyeSBsYXN0IHJlZ2lzdGVyIGhlcmUu ICAqLworIAorKyAgICAgIGFtZDY0X2xpbnV4X2RyX3NldCAobHdwLT5wdGlkLCBEUl9DT05UUk9M LCAwKTsKKysKKyAgICAgICBmb3IgKGkgPSBEUl9GSVJTVEFERFI7IGkgPD0gRFJfTEFTVEFERFI7 IGkrKykKKyAJaWYgKHN0YXRlLT5kcl9yZWZfY291bnRbaV0gPiAwKQorIAkgIHsKCmRpZmYgLS1n aXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDllNTIyNzUuLjY1NzgwMWMgMTAwNjQ0Ci0t LSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0xNywxNyArMTcsMTUgQEAKIFN1bW1hcnk6 IEEgR05VIHNvdXJjZS1sZXZlbCBkZWJ1Z2dlciBmb3IgQywgQysrLCBGb3J0cmFuLCBHbyBhbmQg b3RoZXIgbGFuZ3VhZ2VzCiBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogCi0jIDZlNWM5NWU2Y2Yx ZTNjMzdiZDNhODIyY2E5ZTY3MjFjYWFiOTdhODUKLSNnbG9iYWwgc25hcCAgICAgICAyMDE0MDEy NwogIyBGcmVlemUgaXQgd2hlbiBHREIgZ2V0cyBicmFuY2hlZAotJWdsb2JhbCBzbmFwc3JjICAg IDIwMTQwMTA4CislZ2xvYmFsIHNuYXBzcmMgICAgMjAxNDA2MTMKICMgU2VlIHRpbWVzdGFtcCBv ZiBzb3VyY2UgZ251bGliIGluc3RhbGxlZCBpbnRvIGdkYi9nbnVsaWIvIC4KICVnbG9iYWwgc25h cGdudWxpYiAyMDEyMTIxMwotVmVyc2lvbjogNy43LjEKK1ZlcnNpb246IDcuNy45MC4yMDE0MDYx MwogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVt YmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUn IHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGlu Zy4KLVJlbGVhc2U6IDIxJXs/ZGlzdH0KK1JlbGVhc2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBH UEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdp dGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9t YWluIGFuZCBHRkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC0yMjEsMjAgKzIx OSw2IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3Qu cGF0Y2gKICMgQmFja3BvcnRlZCBmaXh1cHMgcG9zdCB0aGUgc291cmNlIHRhcmJhbGwuCiAjWGRy b3A6IEp1c3QgYmFja3BvcnRzLgogUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAotUGF0Y2g4 Njg6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDJvZjE1LnBhdGNoCi1QYXRjaDg2OTogZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKLVBhdGNoODcwOiBnZGItdXBzdHJlYW0tcHBjNjRsZTA0 b2YxNS5wYXRjaAotUGF0Y2g4NzE6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCi1Q YXRjaDg3MjogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKLVBhdGNoODczOiBnZGIt dXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaAotUGF0Y2g4NzQ6IGdkYi11cHN0cmVhbS1wcGM2 NGxlMDhvZjE1LnBhdGNoCi1QYXRjaDg3NTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwOW9mMTUucGF0 Y2gKLVBhdGNoODc2OiBnZGItdXBzdHJlYW0tcHBjNjRsZTEwb2YxNS5wYXRjaAotUGF0Y2g4Nzc6 IGdkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoCi1QYXRjaDg3ODogZ2RiLXVwc3RyZWFt LXBwYzY0bGUxMm9mMTUucGF0Y2gKLVBhdGNoODc5OiBnZGItdXBzdHJlYW0tcHBjNjRsZTEzb2Yx NS5wYXRjaAotUGF0Y2g4ODA6IGdkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBhdGNoCi1QYXRj aDg4MTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKIAogIyBUZXN0Y2FzZSBmb3Ig UFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChCWiAyMzAwMDApLgogIz1m ZWRvcmF0ZXN0K3BwYwpAQCAtMjg3LDEwICsyNzEsNiBAQCBQYXRjaDgzMzogZ2RiLTYuNi1idWls ZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCiAjIGJ1dCBub3QgY29ycmVzcG9uZGluZyBiaW5hcnkg cGtnJyAoUkggQlogOTgxMTU0KS4KIFBhdGNoODYzOiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLW1p c2xlYWRpbmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5mby1yaGJ6OTgxMTU0LnBhdGNoCiAKLSMg QWRkIGtlcm5lbCB2RFNPIHdvcmthcm91bmQgKGBubyBsb2FkYWJsZSAuLi4nKSBvbiBSSEVMLTUg KGtlcm5lbCBCWiA3NjU4NzUpLgotIz1wdXNoCi1QYXRjaDI3NjogZ2RiLTYuNi1iZmQtdmRzbzhr LnBhdGNoCi0KICMgRml4IGRpc3BsYXlpbmcgb2YgbnVtZXJpYyBjaGFyIGFycmF5cyBhcyBzdHJp bmdzIChCWiAyMjQxMjgpLgogIz1mZWRvcmF0ZXN0OiBCdXQgaXQgaXMgZmFpbGluZyBhbnl3YXks IG9uZSBzaG91bGQgY2hlY2sgdGhlIGJlaGF2aW9yIG1vcmUuCiBQYXRjaDI4MjogZ2RiLTYuNy1j aGFyc2lnbi10ZXN0LnBhdGNoCkBAIC01MTgsMjAgKzQ5OCw0NCBAQCBQYXRjaDgzMjogZ2RiLXJo Yno5NDc1NjQtZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCiAj IEZpeCBjcmFzaCBvbiAnZW5hYmxlIGNvdW50JyAoU2ltb24gTWFyY2hpLCBCWiA5OTMxMTgpLgog UGF0Y2g4NDM6IGdkYi1lbmFibGUtY291bnQtY3Jhc2gucGF0Y2gKIAotIyBGaXggdGVzdHN1aXRl ICJFUlJPUjogbm8gZmlsZWlkIGZvciIuCi1QYXRjaDg0NjogZ2RiLXRlc3RzdWl0ZS1ub2hvc3Rp ZC5wYXRjaAotCiAjIFtyaGVsNl0gRFRTIGJhY2t3YXJkIFB5dGhvbiBjb21wYXRpYmlsaXR5IEFQ SSAoQlogMTAyMDAwNCwgUGhpbCBNdWxkb29uKS4KIFBhdGNoODQ4OiBnZGItZHRzLXJoZWw2LXB5 dGhvbi1jb21wYXQucGF0Y2gKIAogIyBGaXggY3Jhc2ggb2YgLXJlYWRub3cgL3Vzci9saWIvZGVi dWcvdXNyL2Jpbi9nbmF0YmluZC5kZWJ1ZyAoQlogMTA2OTIxMSkuCi1QYXRjaDg1MDogZ2RiLWdu YXQtZHdhcmYtY3Jhc2gtMW9mMy5wYXRjaAotUGF0Y2g4NTE6IGdkYi1nbmF0LWR3YXJmLWNyYXNo LTJvZjMucGF0Y2gKIFBhdGNoODUyOiBnZGItZ25hdC1kd2FyZi1jcmFzaC0zb2YzLnBhdGNoCiAK LSMgRml4IFRMUyBhY2Nlc3MgZm9yIC1zdGF0aWMgLXB0aHJlYWQgKEJaIDEwODA2NjApLgotUGF0 Y2g4NjU6IGdkYi1zdGF0aWMtdGxzLTFvZjIucGF0Y2gKLVBhdGNoODY2OiBnZGItc3RhdGljLXRs cy0yb2YyLnBhdGNoCisjIFZMQSAoRm9ydHJhbiBkeW5hbWljIGFycmF5cykgZnJvbSBJbnRlbCAr IGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4KK1BhdGNoODg3OiBnZGItYXJjaGVyLXZs YS10ZXN0cy5wYXRjaAorUGF0Y2g4ODg6IGdkYi12bGEtaW50ZWwtMDFvZjIzLnBhdGNoCitQYXRj aDg4OTogZ2RiLXZsYS1pbnRlbC0wMm9mMjMucGF0Y2gKK1BhdGNoODkwOiBnZGItdmxhLWludGVs LTAzb2YyMy5wYXRjaAorUGF0Y2g4OTE6IGdkYi12bGEtaW50ZWwtMDRvZjIzLnBhdGNoCitQYXRj aDkxMjogZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCitQYXRjaDg5MjogZ2RiLXZsYS1p bnRlbC0wNW9mMjMucGF0Y2gKK1BhdGNoODkzOiBnZGItdmxhLWludGVsLTA2b2YyMy5wYXRjaAor UGF0Y2g4OTQ6IGdkYi12bGEtaW50ZWwtMDdvZjIzLnBhdGNoCitQYXRjaDg5NTogZ2RiLXZsYS1p bnRlbC0wOG9mMjMucGF0Y2gKK1BhdGNoODk2OiBnZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaAor UGF0Y2g4OTc6IGdkYi12bGEtaW50ZWwtMTBvZjIzLnBhdGNoCitQYXRjaDg5ODogZ2RiLXZsYS1p bnRlbC0xMW9mMjMucGF0Y2gKK1BhdGNoODk5OiBnZGItdmxhLWludGVsLTEyb2YyMy5wYXRjaAor UGF0Y2g5MDA6IGdkYi12bGEtaW50ZWwtMTNvZjIzLnBhdGNoCitQYXRjaDkwMTogZ2RiLXZsYS1p bnRlbC0xNG9mMjMucGF0Y2gKK1BhdGNoOTAyOiBnZGItdmxhLWludGVsLTE1b2YyMy5wYXRjaAor UGF0Y2g5MDM6IGdkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCitQYXRjaDkwNDogZ2RiLXZsYS1p bnRlbC0xN29mMjMucGF0Y2gKK1BhdGNoOTA1OiBnZGItdmxhLWludGVsLTE4b2YyMy5wYXRjaAor UGF0Y2g5MDY6IGdkYi12bGEtaW50ZWwtMTlvZjIzLnBhdGNoCitQYXRjaDkwNzogZ2RiLXZsYS1p bnRlbC0yMG9mMjMucGF0Y2gKK1BhdGNoOTA4OiBnZGItdmxhLWludGVsLTIxb2YyMy5wYXRjaAor UGF0Y2g5MDk6IGdkYi12bGEtaW50ZWwtMjJvZjIzLnBhdGNoCitQYXRjaDkxMDogZ2RiLXZsYS1p bnRlbC0yM29mMjMucGF0Y2gKKworIyBGaXggQVNBTiBjcmFzaCByZWdyZXNzaW9uIHdpdGggZGVt YW5nbGVkIG5hbWVzIGNvcHkgKFRvbSBUcm9tZXkpLgorUGF0Y2g5MTE6IGdkYi1iZmQtZGVtYW5n bGVkLW5hbWVzLnBhdGNoCisKKyMgRml4IGdkYi03Ljggd2F0Y2hwb2ludC1mb3JrLmV4cCByZWdy ZXNzaW9uIChQZWRybyBBbHZlcykuCitQYXRjaDkxMzogZ2RiLXdhdGNocG9pbnQtZm9yay1maXgu cGF0Y2gKIAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRFX0ZF RE9SQV9HREIgd291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTcwNywyMCArNzExLDMwIEBAIGZp bmQgLW5hbWUgIiouaW5mbyoifHhhcmdzIHJtIC1mCiAKICVwYXRjaDM0OSAtcDEKICVwYXRjaDIz MiAtcDEKLSVwYXRjaDg2OCAtcDEKLSVwYXRjaDg2OSAtcDEKLSVwYXRjaDg3MCAtcDEKLSVwYXRj aDg3MSAtcDEKLSVwYXRjaDg3MiAtcDEKLSVwYXRjaDg3MyAtcDEKLSVwYXRjaDg3NCAtcDEKLSVw YXRjaDg3NSAtcDEKLSVwYXRjaDg3NiAtcDEKLSVwYXRjaDg3NyAtcDEKLSVwYXRjaDg3OCAtcDEK LSVwYXRjaDg3OSAtcDEKLSVwYXRjaDg4MCAtcDEKLSVwYXRjaDg4MSAtcDEKKyVwYXRjaDg4OCAt cDEKKyVwYXRjaDg4OSAtcDEKKyVwYXRjaDg5MCAtcDEKKyVwYXRjaDg5MSAtcDEKKyVwYXRjaDkx MiAtcDEKKyVwYXRjaDg5MiAtcDEKKyVwYXRjaDg5MyAtcDEKKyVwYXRjaDg5NCAtcDEKKyVwYXRj aDg5NSAtcDEKKyVwYXRjaDg5NiAtcDEKKyVwYXRjaDg5NyAtcDEKKyVwYXRjaDg5OCAtcDEKKyVw YXRjaDg5OSAtcDEKKyVwYXRjaDkwMCAtcDEKKyVwYXRjaDkwMSAtcDEKKyVwYXRjaDkwMiAtcDEK KyVwYXRjaDkwMyAtcDEKKyVwYXRjaDkwNCAtcDEKKyVwYXRjaDkwNSAtcDEKKyVwYXRjaDkwNiAt cDEKKyVwYXRjaDkwNyAtcDEKKyVwYXRjaDkwOCAtcDEKKyVwYXRjaDkwOSAtcDEKKyVwYXRjaDkx MCAtcDEKICVwYXRjaDEgLXAxCiAKICVwYXRjaDEwNSAtcDEKQEAgLTc2MCw3ICs3NzQsNiBAQCBm aW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoMjc0IC1wMQogJXBhdGNoNjU5 IC1wMQogJXBhdGNoMzUzIC1wMQotJXBhdGNoMjc2IC1wMQogJXBhdGNoMjgyIC1wMQogJXBhdGNo Mjg0IC1wMQogJXBhdGNoMjg5IC1wMQpAQCAtODE3LDEzICs4MzAsMTEgQEAgZmluZCAtbmFtZSAi Ki5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDgxOCAtcDEKICVwYXRjaDgzMiAtcDEKICVwYXRj aDg0MyAtcDEKLSVwYXRjaDg0NiAtcDEKLSVwYXRjaDg1MCAtcDEKLSVwYXRjaDg1MSAtcDEKICVw YXRjaDg1MiAtcDEKICVwYXRjaDg2MyAtcDEKLSVwYXRjaDg2NSAtcDEKLSVwYXRjaDg2NiAtcDEK KyVwYXRjaDg4NyAtcDEKKyVwYXRjaDkxMSAtcDEKKyVwYXRjaDkxMyAtcDEKIAogJXBhdGNoODQ4 IC1wMQogJWlmIDAleyE/ZWw2OjF9CkBAIC05MTAsNiArOTIxLDcgQEAgZXhwb3J0IExERkxBR1M9 IiV7P19fZ2xvYmFsX2xkZmxhZ3N9ICV7P193aXRoX2FzYW46LWZzYW5pdGl6ZT1hZGRyZXNzfSIK IAktLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPS91c3IvbGliL2RlYnVnCQlcCiAJLS1kaXNhYmxl LXNpbQkJCQkJCVwKIAktLWRpc2FibGUtcnBhdGgJCQkJCQlcCisJLS13aXRob3V0LWd1aWxlCQkJ CQkJXAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAJLS13aXRoLXN5c3RlbS1y ZWFkbGluZQkJCQkJXAogJWVsc2UKQEAgLTEzMDgsNiArMTMyMCw5IEBAIHRoZW4KIGZpCiAKICVj aGFuZ2Vsb2cKKyogVGh1IEp1biAxOSAyMDE0IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDcuNy45MC4yMDE0MDYxMy0xLmZjMjEKKy0gUmViYXNlIHRvIEZTRiBH REIgNy43LjkwLjIwMTQwNjEzIChwcmUtNy44IHNuYXBzaG90KS4KKwogKiBTYXQgSnVuIDA3IDIw MTQgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbC1lbmdAbGlzdHMuZmVkb3JhcHJvamVj dC5vcmc+IC0gNy43LjEtMjEKIC0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9y Zy93aWtpL0ZlZG9yYV8yMV9NYXNzX1JlYnVpbGQKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9z b3VyY2VzCmluZGV4IDkzYWZlNTQuLmYxYzYxZDggMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIv c291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDQ5ODEzMDdhYTk2MTliYmVjNWI3MzI2MWU0ZTQxYzhk ICBnZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLTc3YjIwYjUxNWU3YzI1 ZjAzMmNiOTczMmE2NjYyMGZlICBnZGItNy43LjEudGFyLmJ6MgorY2Y0ZGRjZWI3OWZlZjU2YjQx NDZlMTRiZTcyYzg3MjcgIGdkYi03LjcuOTAuMjAxNDA2MTMudGFyLmJ6Mgo=