ZGlmZiAtLWdpdCBhL2F1dG8vbWFrZSBiL2F1dG8vbWFrZQppbmRleCA0YTJjZDBjLi5mNzljM2IwIDEwMDY0NAotLS0gYS9hdXRvL21ha2UKKysrIGIvYXV0by9tYWtlCkBAIC0xNzUsOCArMTc1LDEwIEBACiAgICAgfCBzZWQgLWUgInMvICAqXChbXiBdW14gXSpcKS8kbmd4X2xvbmdfcmVnZXhfY29udFwxL2ciIFwKICAgICAgICAgICAtZSAicy9cLy8kbmd4X3JlZ2V4X2RpcnNlcC9nImAKIAotbmd4X2xpYnM9JHtDT1JFX0xJQlM6K2BlY2hvICROR1hfTERfT1BUICRDT1JFX0xJQlMgXAotICAgIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciIC1lICJzL14vJG5neF9sb25nX3JlZ2V4X2NvbnQvImB9CitpZiB0ZXN0IC1uICIkTkdYX0xEX09QVCRDT1JFX0xJQlMiOyB0aGVuCisgICAgbmd4X2xpYnM9YGVjaG8gJE5HWF9MRF9PUFQgJENPUkVfTElCUyBcCisgICAgICAgIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciIC1lICJzL14vJG5neF9sb25nX3JlZ2V4X2NvbnQvImAKK2ZpCiAKIG5neF9saW5rPSR7Q09SRV9MSU5LOitgZWNobyAkQ09SRV9MSU5LIFwKICAgICB8IHNlZCAtZSAicy9cLy8kbmd4X3JlZ2V4X2RpcnNlcC9nIiAtZSAicy9eLyRuZ3hfbG9uZ19yZWdleF9jb250LyJgfQpkaWZmIC0tZ2l0IGEvY29uZi9rb2ktdXRmIGIvY29uZi9rb2ktdXRmCmluZGV4IDJmYWNhMDAuLmU3OTc0ZmYgMTAwNjQ0Ci0tLSBhL2NvbmYva29pLXV0ZgorKysgYi9jb25mL2tvaS11dGYKQEAgLTEsNCArMSwxMCBAQAogCisjIFRoaXMgbWFwIGlzIG5vdCBhIGZ1bGwga29pOC1yIDw+IHV0ZjggbWFwOiBpdCBkb2VzIG5vdCBjb250YWluCisjIGJveC1kcmF3aW5nIGFuZCBzb21lIG90aGVyIGNoYXJhY3RlcnMuICBCZXNpZGVzIHRoaXMgbWFwIGNvbnRhaW5zCisjIHNldmVyYWwga29pOC11IGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycyB3aGljaCBhcmUgbm90IGluIGtvaTgtci4KKyMgSWYgeW91IG5lZWQgYSBmdWxsIGFuZCBzdGFuZGFyZCBtYXAsIHVzZSBjb250cmliL3VuaWNvZGUybmdpbngva29pLXV0ZgorIyBtYXAgaW5zdGVhZC4KKwogY2hhcnNldF9tYXAgIGtvaTgtciAgdXRmLTggewogCiAgICAgODAgIEUyODJBQyA7ICMgZXVybwpkaWZmIC0tZ2l0IGEvY29uZi9taW1lLnR5cGVzIGIvY29uZi9taW1lLnR5cGVzCmluZGV4IDgxODEzM2EuLjQ5NzMwOGIgMTAwNjQ0Ci0tLSBhL2NvbmYvbWltZS50eXBlcworKysgYi9jb25mL21pbWUudHlwZXMKQEAgLTE0LDYgKzE0LDcgQEAKICAgICBpbWFnZS9wbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZzsKICAgICBpbWFnZS94LWljb24gICAgICAgICAgICAgICAgICAgICAgICAgIGljbzsKICAgICBpbWFnZS94LWpuZyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpuZzsKKyAgICBpbWFnZS92bmQud2FwLndibXAgICAgICAgICAgICAgICAgICAgIHdibXA7CiAKICAgICBhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUgICAgICAgICAgICAgIGphciB3YXIgZWFyOwogICAgIGFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MCAgICAgICAgICAgICAgaHF4OwpkaWZmIC0tZ2l0IGEvY29uZi93aW4tdXRmIGIvY29uZi93aW4tdXRmCmluZGV4IGU4ZTgzMGUuLmVkOGJjMDAgMTAwNjQ0Ci0tLSBhL2NvbmYvd2luLXV0ZgorKysgYi9jb25mL3dpbi11dGYKQEAgLTEsNCArMSw4IEBACiAKKyMgVGhpcyBtYXAgaXMgbm90IGEgZnVsbCB3aW5kb3dzLTEyNTEgPD4gdXRmOCBtYXA6IGl0IGRvZXMgbm90CisjIGNvbnRhaW4gU2VyYmlhbiBhbmQgTWFjZWRvbmlhbiBsZXR0ZXJzLiAgSWYgeW91IG5lZWQgYSBmdWxsIG1hcCwKKyMgdXNlIGNvbnRyaWIvdW5pY29kZTJuZ2lueC93aW4tdXRmIG1hcCBpbnN0ZWFkLgorCiBjaGFyc2V0X21hcCAgd2luZG93cy0xMjUxICB1dGYtOCB7CiAKICAgICA4MiAgRTI4MDlBIDsgIyBzaW5nbGUgbG93LTkgcXVvdGF0aW9uIG1hcmsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvUkVBRE1FIGIvY29udHJpYi9SRUFETUUKaW5kZXggM2E2OTA5NS4uMDk0YWE1MiAxMDA2NDQKLS0tIGEvY29udHJpYi9SRUFETUUKKysrIGIvY29udHJpYi9SRUFETUUKQEAgLTEsNiArMSwxNSBAQAogCi1nZW8ybmdpbngucGwgCWJ5IEFuZHJlaSBOaWdtYXR1bGluCitnZW8ybmdpbngucGwgCQlieSBBbmRyZWkgTmlnbWF0dWxpbgogCi0JVGhlIHBlcmwgc2NyaXB0IHRvIGNvbnZlcnQgQ1NWIGdlb2lwIGRhdGFiYXNlIChmcmVlIGRvd25sb2FkCi0JYXQgaHR0cDovL3d3dy5tYXhtaW5kLmNvbS9hcHAvZ2VvaXBfY291bnRyeSkgdG8gZm9ybWF0LCBzdWl0YWJsZQotCWZvciB1c2Ugd2l0aCBuZ3hfaHR0cF9nZW9fbW9kdWxlLgorCVRoZSBwZXJsIHNjcmlwdCB0byBjb252ZXJ0IENTViBnZW9pcCBkYXRhYmFzZSAoIGZyZWUgZG93bmxvYWQKKwlhdCBodHRwOi8vd3d3Lm1heG1pbmQuY29tL2FwcC9nZW9pcF9jb3VudHJ5ICkgdG8gZm9ybWF0LCBzdWl0YWJsZQorCWZvciB1c2UgYnkgdGhlIG5neF9odHRwX2dlb19tb2R1bGUuCisKKwordW5pY29kZTJuZ2lueAkJYnkgTWF4aW0gRG91bmluCisKKwlUaGUgcGVybCBzY3JpcHQgdG8gY29udmVydCB1bmljb2RlIG1hcHBpbmdzICggYXZhaWxhYmxlCisJYXQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvICkgdG8gdGhlIG5naW54CisJY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdC4KKwlUd28gZ2VuZXJhdGVkIGZ1bGwgbWFwcyBmb3Igd2luZG93cy0xMjUxIGFuZCBrb2k4LXIuCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdW5pY29kZTJuZ2lueC9rb2ktdXRmIGIvY29udHJpYi91bmljb2RlMm5naW54L2tvaS11dGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg4NTNhZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdW5pY29kZTJuZ2lueC9rb2ktdXRmCkBAIC0wLDAgKzEsMTMxIEBACitjaGFyc2V0X21hcCAga29pOC1yICB1dGYtOCB7CisKKyAgICA4MCAgRTI5NDgwIDsgIwlCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAorICAgIDgxICBFMjk0ODIgOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAorICAgIDgyICBFMjk0OEMgOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAorICAgIDgzICBFMjk0OTAgOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCisgICAgODQgIEUyOTQ5NCA7ICMJQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAorICAgIDg1ICBFMjk0OTggOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAorICAgIDg2ICBFMjk0OUMgOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKKyAgICA4NyAgRTI5NEE0IDsgIwlCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKKyAgICA4OCAgRTI5NEFDIDsgIwlCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAorICAgIDg5ICBFMjk0QjQgOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAorICAgIDhBICBFMjk0QkMgOyAjCUJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAorICAgIDhCICBFMjk2ODAgOyAjCVVQUEVSIEhBTEYgQkxPQ0sKKyAgICA4QyAgRTI5Njg0IDsgIwlMT1dFUiBIQUxGIEJMT0NLCisgICAgOEQgIEUyOTY4OCA7ICMJRlVMTCBCTE9DSworICAgIDhFICBFMjk2OEMgOyAjCUxFRlQgSEFMRiBCTE9DSworICAgIDhGICBFMjk2OTAgOyAjCVJJR0hUIEhBTEYgQkxPQ0sKKyAgICA5MCAgRTI5NjkxIDsgIwlMSUdIVCBTSEFERQorICAgIDkxICBFMjk2OTIgOyAjCU1FRElVTSBTSEFERQorICAgIDkyICBFMjk2OTMgOyAjCURBUksgU0hBREUKKyAgICA5MyAgRTI4Q0EwIDsgIwlUT1AgSEFMRiBJTlRFR1JBTAorICAgIDk0ICBFMjk2QTAgOyAjCUJMQUNLIFNRVUFSRQorICAgIDk1ICBFMjg4OTkgOyAjCUJVTExFVCBPUEVSQVRPUgorICAgIDk2ICBFMjg4OUEgOyAjCVNRVUFSRSBST09UCisgICAgOTcgIEUyODk4OCA7ICMJQUxNT1NUIEVRVUFMIFRPCisgICAgOTggIEUyODlBNCA7ICMJTEVTUy1USEFOIE9SIEVRVUFMIFRPCisgICAgOTkgIEUyODlBNSA7ICMJR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCisgICAgOUEgIEMyQTAgOyAjCU5PLUJSRUFLIFNQQUNFCisgICAgOUIgIEUyOENBMSA7ICMJQk9UVE9NIEhBTEYgSU5URUdSQUwKKyAgICA5QyAgQzJCMCA7ICMJREVHUkVFIFNJR04KKyAgICA5RCAgQzJCMiA7ICMJU1VQRVJTQ1JJUFQgVFdPCisgICAgOUUgIEMyQjcgOyAjCU1JRERMRSBET1QKKyAgICA5RiAgQzNCNyA7ICMJRElWSVNJT04gU0lHTgorICAgIEEwICBFMjk1OTAgOyAjCUJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAorICAgIEExICBFMjk1OTEgOyAjCUJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKKyAgICBBMiAgRTI5NTkyIDsgIwlCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQorICAgIEEzICBEMTkxIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICBBNCAgRTI5NTkzIDsgIwlCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQorICAgIEE1ICBFMjk1OTQgOyAjCUJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKKyAgICBBNiAgRTI5NTk1IDsgIwlCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCisgICAgQTcgIEUyOTU5NiA7ICMJQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQorICAgIEE4ICBFMjk1OTcgOyAjCUJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAorICAgIEE5ICBFMjk1OTggOyAjCUJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQorICAgIEFBICBFMjk1OTkgOyAjCUJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQorICAgIEFCICBFMjk1OUEgOyAjCUJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCisgICAgQUMgIEUyOTU5QiA7ICMJQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKKyAgICBBRCAgRTI5NTlDIDsgIwlCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQorICAgIEFFICBFMjk1OUQgOyAjCUJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKKyAgICBBRiAgRTI5NTlFIDsgIwlCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKKyAgICBCMCAgRTI5NTlGIDsgIwlCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKKyAgICBCMSAgRTI5NUEwIDsgIwlCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAorICAgIEIyICBFMjk1QTEgOyAjCUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCisgICAgQjMgIEQwODEgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIElPCisgICAgQjQgIEUyOTVBMiA7ICMJQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKKyAgICBCNSAgRTI5NUEzIDsgIwlCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCisgICAgQjYgIEUyOTVBNCA7ICMJQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQorICAgIEI3ICBFMjk1QTUgOyAjCUJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKKyAgICBCOCAgRTI5NUE2IDsgIwlCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKKyAgICBCOSAgRTI5NUE3IDsgIwlCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQorICAgIEJBICBFMjk1QTggOyAjCUJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCisgICAgQkIgIEUyOTVBOSA7ICMJQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAorICAgIEJDICBFMjk1QUEgOyAjCUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCisgICAgQkQgIEUyOTVBQiA7ICMJQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKKyAgICBCRSAgRTI5NUFDIDsgIwlCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCisgICAgQkYgIEMyQTkgOyAjCUNPUFlSSUdIVCBTSUdOCisgICAgQzAgIEQxOEUgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBZVQorICAgIEMxICBEMEIwIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgIEMyICBEMEIxIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICBDMyAgRDE4NiA7ICMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQorICAgIEM0ICBEMEI0IDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICBDNSAgRDBCNSA7ICMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgQzYgIEQxODQgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIEM3ICBEMEIzIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgQzggIEQxODUgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBIQQorICAgIEM5ICBEMEI4IDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgIENBICBEMEI5IDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgIENCICBEMEJBIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICBDQyAgRDBCQiA7ICMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgQ0QgIEQwQkMgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgIENFICBEMEJEIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICBDRiAgRDBCRSA7ICMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICBEMCAgRDBCRiA7ICMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCisgICAgRDEgIEQxOEYgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBZQQorICAgIEQyICBEMTgwIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICBEMyAgRDE4MSA7ICMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgRDQgIEQxODIgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIEQ1ICBEMTgzIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgIEQ2ICBEMEI2IDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCisgICAgRDcgIEQwQjIgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgIEQ4ICBEMThDIDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgRDkgIEQxOEIgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCisgICAgREEgIEQwQjcgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAgIERCICBEMTg4IDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCisgICAgREMgIEQxOEQgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBFCisgICAgREQgIEQxODkgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQorICAgIERFICBEMTg3IDsgIwlDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisgICAgREYgIEQxOEEgOyAjCUNZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKyAgICBFMCAgRDBBRSA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKKyAgICBFMSAgRDA5MCA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQorICAgIEUyICBEMDkxIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorICAgIEUzICBEMEE2IDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICBFNCAgRDA5NCA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKyAgICBFNSAgRDA5NSA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKKyAgICBFNiAgRDBBNCA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKKyAgICBFNyAgRDA5MyA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgRTggIEQwQTUgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgRTkgIEQwOTggOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKyAgICBFQSAgRDA5OSA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQorICAgIEVCICBEMDlBIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQorICAgIEVDICBEMDlCIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAorICAgIEVEICBEMDlDIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQorICAgIEVFICBEMDlEIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgorICAgIEVGICBEMDlFIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCisgICAgRjAgIEQwOUYgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCisgICAgRjEgIEQwQUYgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCisgICAgRjIgIEQwQTAgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCisgICAgRjMgIEQwQTEgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCisgICAgRjQgIEQwQTIgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCisgICAgRjUgIEQwQTMgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyAgICBGNiAgRDA5NiA7ICMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCisgICAgRjcgIEQwOTIgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCisgICAgRjggIEQwQUMgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorICAgIEY5ICBEMEFCIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgRkEgIEQwOTcgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisgICAgRkIgIEQwQTggOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQorICAgIEZDICBEMEFEIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgRkQgIEQwQTkgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCisgICAgRkUgIEQwQTcgOyAjCUNZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorICAgIEZGICBEMEFBIDsgIwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdW5pY29kZTJuZ2lueC91bmljb2RlLXRvLW5naW54LnBsIGIvY29udHJpYi91bmljb2RlMm5naW54L3VuaWNvZGUtdG8tbmdpbngucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGFhZjM1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdW5pY29kZTJuZ2lueC91bmljb2RlLXRvLW5naW54LnBsCkBAIC0wLDAgKzEsNDUgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCisjIENvbnZlcnQgdW5pY29kZSBtYXBwaW5ncyB0byBuZ2lueCBjb25maWd1cmF0aW9uIGZpbGUgZm9ybWF0LgorCisjIFlvdSBtYXkgZmluZCB1c2VmdWwgbWFwcGluZ3MgaW4gdmFyaW91cyBwbGFjZXMsIGluY2x1ZGluZworIyB1bmljb2RlLm9yZyBvZmZpY2lhbCBzaXRlOgorIworIyBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQMTI1MS5UWFQKKyMgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy9NSVNDL0tPSTgtUi5UWFQKKworIyBOZWVkcyBwZXJsIDUuNiBvciBsYXRlci4KKworIyBXcml0dGVuIGJ5IE1heGltIERvdW5pbiwgbWRvdW5pbkByYW1ibGVyLWNvLnJ1CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworcmVxdWlyZSA1LjAwNjsKKword2hpbGUgKDw+KSB7CisJIyBTa2lwIGNvbW1lbnRzIGFuZCBlbXB0eSBsaW5lcworCisJbmV4dCBpZiAvXiMvOworCW5leHQgaWYgL15ccyokLzsKKwljaG9tcDsKKworCSMgQ29udmVydCBtYXBwaW5ncworCisJaWYgKC9eXHMqMHgoLi4pXHMqMHgoLi4uLilccyooIy4qKS8pIHsKKwkJIyBNYXBwaW5nIDxmcm9tLWNvZGU+IDx1bmljb2RlLWNvZGU+ICIjIiA8dW5pY29kZS1uYW1lPgorCQlteSAkY3NfY29kZSA9ICQxOworCQlteSAkdW5fY29kZSA9ICQyOworCQlteSAkdW5fbmFtZSA9ICQzOworCisJCSMgUHJvZHVjZSBVVEYtOCBzZXF1ZW5jZSBmcm9tIGNoYXJhY3RlciBjb2RlOworCisJCW15ICR1bl91dGY4ID0gam9pbignJywgbWFwIHsgc3ByaW50ZigiJTAyWCIsICRfKSB9IHVucGFjaygiQyoiLCBwYWNrKCJVIiwgaGV4KCR1bl9jb2RlKSkpKTsKKworCQlwcmludCAiICAgICRjc19jb2RlICAkdW5fdXRmOCA7ICR1bl9uYW1lXG4iOworCisJfSBlbHNlIHsKKwkJd2FybiAiVW5yZWNvZ25pemVkIGxpbmU6ICckXyciOworCX0KK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvY29udHJpYi91bmljb2RlMm5naW54L3dpbi11dGYgYi9jb250cmliL3VuaWNvZGUybmdpbngvd2luLXV0ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjlmOWFhCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi91bmljb2RlMm5naW54L3dpbi11dGYKQEAgLTAsMCArMSwxMzAgQEAKK2NoYXJzZXRfbWFwICB3aW5kb3dzLTEyNTEgIHV0Zi04IHsKKworICAgIDgwICBEMDgyIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIERKRQorICAgIDgxICBEMDgzIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRQorICAgIDgyICBFMjgwOUEgOyAjU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgODMgIEQxOTMgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdKRQorICAgIDg0ICBFMjgwOUUgOyAjRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgODUgIEUyODBBNiA7ICNIT1JJWk9OVEFMIEVMTElQU0lTCisgICAgODYgIEUyODBBMCA7ICNEQUdHRVIKKyAgICA4NyAgRTI4MEExIDsgI0RPVUJMRSBEQUdHRVIKKyAgICA4OCAgRTI4MkFDIDsgI0VVUk8gU0lHTgorICAgIDg5ICBFMjgwQjAgOyAjUEVSIE1JTExFIFNJR04KKyAgICA4QSAgRDA4OSA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKKyAgICA4QiAgRTI4MEI5IDsgI1NJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgOEMgIEQwOEEgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCisgICAgOEQgIEQwOEMgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFCisgICAgOEUgIEQwOEIgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRQorICAgIDhGICBEMDhGIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEUKKyAgICA5MCAgRDE5MiA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCisgICAgOTEgIEUyODA5OCA7ICNMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgIDkyICBFMjgwOTkgOyAjUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgOTMgIEUyODA5QyA7ICNMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgIDk0ICBFMjgwOUQgOyAjUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgOTUgIEUyODBBMiA7ICNCVUxMRVQKKyAgICA5NiAgRTI4MDkzIDsgI0VOIERBU0gKKyAgICA5NyAgRTI4MDk0IDsgI0VNIERBU0gKKyAgICA5OSAgRTI4NEEyIDsgI1RSQURFIE1BUksgU0lHTgorICAgIDlBICBEMTk5IDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBMSkUKKyAgICA5QiAgRTI4MEJBIDsgI1NJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgIDlDICBEMTlBIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKKyAgICA5RCAgRDE5QyA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFCisgICAgOUUgIEQxOUIgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTSEUKKyAgICA5RiAgRDE5RiA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRQorICAgIEEwICBDMkEwIDsgI05PLUJSRUFLIFNQQUNFCisgICAgQTEgIEQwOEUgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVQorICAgIEEyICBEMTlFIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCisgICAgQTMgIEQwODggOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKKyAgICBBNCAgQzJBNCA7ICNDVVJSRU5DWSBTSUdOCisgICAgQTUgIEQyOTAgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOCisgICAgQTYgIEMyQTYgOyAjQlJPS0VOIEJBUgorICAgIEE3ICBDMkE3IDsgI1NFQ1RJT04gU0lHTgorICAgIEE4ICBEMDgxIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPCisgICAgQTkgIEMyQTkgOyAjQ09QWVJJR0hUIFNJR04KKyAgICBBQSAgRDA4NCA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKKyAgICBBQiAgQzJBQiA7ICNMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgIEFDICBDMkFDIDsgI05PVCBTSUdOCisgICAgQUQgIEMyQUQgOyAjU09GVCBIWVBIRU4KKyAgICBBRSAgQzJBRSA7ICNSRUdJU1RFUkVEIFNJR04KKyAgICBBRiAgRDA4NyA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQorICAgIEIwICBDMkIwIDsgI0RFR1JFRSBTSUdOCisgICAgQjEgIEMyQjEgOyAjUExVUy1NSU5VUyBTSUdOCisgICAgQjIgIEQwODYgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgQjMgIEQxOTYgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorICAgIEI0ICBEMjkxIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KKyAgICBCNSAgQzJCNSA7ICNNSUNSTyBTSUdOCisgICAgQjYgIEMyQjYgOyAjUElMQ1JPVyBTSUdOCisgICAgQjcgIEMyQjcgOyAjTUlERExFIERPVAorICAgIEI4ICBEMTkxIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBJTworICAgIEI5ICBFMjg0OTYgOyAjTlVNRVJPIFNJR04KKyAgICBCQSAgRDE5NCA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFCisgICAgQkIgIEMyQkIgOyAjUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgQkMgIEQxOTggOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCisgICAgQkQgIEQwODUgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpFCisgICAgQkUgIEQxOTUgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERaRQorICAgIEJGICBEMTk3IDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBZSQorICAgIEMwICBEMDkwIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICBDMSAgRDA5MSA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorICAgIEMyICBEMDkyIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCisgICAgQzMgIEQwOTMgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgQzQgIEQwOTQgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKyAgICBDNSAgRDA5NSA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorICAgIEM2ICBEMDk2IDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgIEM3ICBEMDk3IDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisgICAgQzggIEQwOTggOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgIEM5ICBEMDk5IDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKyAgICBDQSAgRDA5QSA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQorICAgIENCICBEMDlCIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCisgICAgQ0MgIEQwOUMgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKyAgICBDRCAgRDA5RCA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgorICAgIENFICBEMDlFIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKyAgICBDRiAgRDA5RiA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorICAgIEQwICBEMEEwIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCisgICAgRDEgIEQwQTEgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKKyAgICBEMiAgRDBBMiA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorICAgIEQzICBEMEEzIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyAgICBENCAgRDBBNCA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgorICAgIEQ1ICBEMEE1IDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgRDYgIEQwQTYgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCisgICAgRDcgIEQwQTcgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCisgICAgRDggIEQwQTggOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgRDkgIEQwQTkgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKKyAgICBEQSAgRDBBQSA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KKyAgICBEQiAgRDBBQiA7ICNDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgREMgIEQwQUMgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCisgICAgREQgIEQwQUQgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQorICAgIERFICBEMEFFIDsgI0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCisgICAgREYgIEQwQUYgOyAjQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKKyAgICBFMCAgRDBCMCA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgIEUxICBEMEIxIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgIEUyICBEMEIyIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgIEUzICBEMEIzIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICBFNCAgRDBCNCA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICBFNSAgRDBCNSA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICBFNiAgRDBCNiA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCisgICAgRTcgIEQwQjcgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgRTggIEQwQjggOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICBFOSAgRDBCOSA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgIEVBICBEMEJBIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgIEVCICBEMEJCIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgIEVDICBEMEJDIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgIEVEICBEMEJEIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgIEVFICBEMEJFIDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgRUYgIEQwQkYgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCisgICAgRjAgIEQxODAgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgRjEgIEQxODEgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgRjIgIEQxODIgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgRjMgIEQxODMgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICBGNCAgRDE4NCA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKKyAgICBGNSAgRDE4NSA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKKyAgICBGNiAgRDE4NiA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgRjcgIEQxODcgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQorICAgIEY4ICBEMTg4IDsgI0NZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKKyAgICBGOSAgRDE4OSA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKyAgICBGQSAgRDE4QSA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCisgICAgRkIgIEQxOEIgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKKyAgICBGQyAgRDE4QyA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgRkQgIEQxOEQgOyAjQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKKyAgICBGRSAgRDE4RSA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKKyAgICBGRiAgRDE4RiA7ICNDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKK30KZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggZmE0YWM4Zi4uM2I3ZTZmMyAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw5NiBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4zLjU1IiBkYXRlPSIyOC4wNy4yMDA2Ij4KKworPGNoYW5nZSB0eXBlPSJmZWF0dXJlIj4KKzxwYXJhIGxhbmc9InJ1Ij4KK9DB0sHNxdTSIHN0dWIg1yDLz83BzsTFIFNTSSBpbmNsdWRlLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlICJzdHViIiBwYXJhbWV0ZXIgaW4gdGhlICJpbmNsdWRlIiBTU0kgY29tbWFuZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgory8/Nwc7EwSBTU0kgYmxvY2suCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgImJsb2NrIiBTU0kgY29tbWFuZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgor08vSydDUIHVuaWNvZGUybmdpbnggxM/CwdfMxc4g1yBjb250cmliLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIHVuaWNvZGUybmdpbnggc2NyaXB0IHdhcyBhZGRlZCB0byBjb250cmliLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK8XTzMkgcm9vdCDC2cwg2sHEwc4g1M/M2MvPINDF0sXNxc7Oz8osINTPIMvP0sXO2CDawcTB18HM09EKK8/Uzs/TydTFzNjOzyDQ0sXGycvTwSDTxdLXxdLBLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgYSAicm9vdCIgd2FzIHNwZWNpZmllZCBieSB2YXJpYWJsZSBvbmx5LCB0aGVuIHRoZSByb290IHdhcyByZWxhdGl2ZQordG8gYSBzZXJ2ZXIgcHJlZml4LgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK8XTzMkg1yDawdDSz9PFIMLZzCAiLy8iIMnMySAiLy4iLCDJINDP08zFINzUz8fPINrBy8/EydLP18HOztnFCivTyc3Xz8zZINcg18nExSAiJVhYIiwg1M8g0NLPy9PJ0tXFzdnKINrB0NLP0yDQxdLFxMHXwczT0SDOxdrBy8/EydLP18HOztnNLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgdGhlIHJlcXVlc3QgY29udGFpbmVkICIvLyIgb3IgIi8uLyIgYW5kIGVzY2FwZWQgc3ltYm9scyBhZnRlciB0aGVtLAordGhlbiB0aGUgcHJveGllZCByZXF1ZXN0IHdhcyBzZW50IHVuZXNjYXBlZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivNxdTPxCAkci0+aGVhZGVyc19pbigiQ29va2llIikgzc/E1czRIG5neF9odHRwX3BlcmxfbW9kdWxlINTF0MXS2CDXz9rX0sHdwcXUCivX08Ug09TSz8vJICJDb29raWUiINcg2sHHz8zP18vFINrB0NLP08EuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgJHItPmhlYWRlcnNfaW4oIkNvb2tpZSIpIG9mIHRoZSBuZ3hfaHR0cF9wZXJsX21vZHVsZSBub3cgcmV0dXJucworYWxsICJDb29raWUiIGhlYWRlciBsaW5lcy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0s/J08jPxMnMIHNlZ21lbnRhdGlvbiBmYXVsdCwgxdPMySDJ09DPzNjaz9fBzNPRCis8bm9icj4iY2xpZW50X2JvZHlfaW5fZmlsZV9vbmx5IG9uIjwvbm9icj4KK8kgxMXMwczT0SDQxdLFyM/EIMsg08zFxNXA3cXN1SDC3MvFzsTVLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgorYSBzZWdtZW50YXRpb24gZmF1bHQgb2NjdXJyZWQgaWYgPG5vYnI+ImNsaWVudF9ib2R5X2luX2ZpbGVfb25seSBvbiI8L25vYnI+Cit3YXMgdXNlZCBhbmQgbmdpbnggd2FzIHN3aXRjaGVzIHRvIGEgbmV4dCB1cHN0cmVhbS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skgzsXLz9TP0tnIINXTzM/XydHIINfPINfSxc3RINDF0sXLz87GycfV0sHDyckgy8/E2SDTyc3Xz8zP1yDXCivXztXU0skgxMnSxcvUydfZIGNoYXJzZXRfbWFwIM3Px8zJINPeydTB1NjT0SDOxdfF0s7Zzck7CivP28nCy8Eg0M/R18nMwdPYINcgMC4zLjUwLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgorb24gc29tZSBjb25kaXRpb24gd2hpbGUgcmVjb25maWd1cmF0aW9uIGNoYXJhY3RlciBjb2RlcworaW5zaWRlIHRoZSAiY2hhcnNldF9tYXAiIG1heSBiZSB0cmVhdGVkIGludmFsaWQ7CitidWcgYXBwZWFyZWQgaW4gMC4zLjUwLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMy41NCIgZGF0ZT0iMTEuMDcuMjAwNiI+CiAKIDxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+CkBAIC01MDEsMTAgKzU5MSwxMCBAQAogCiA8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgogPHBhcmEgbGFuZz0icnUiPgot0MHSwc3F1NIgd2FpdCDXIMvPzcHOxMUgU1NJIGlubGN1ZGUuCivQwdLBzcXU0iB3YWl0INcgy8/Nwc7ExSBTU0kgaW5jbHVkZS4KIDwvcGFyYT4KIDxwYXJhIGxhbmc9ImVuIj4KLXRoZSAid2FpdCIgcGFyYW1ldGVyIGluIHRoZSBTU0kgImluY2x1ZGUiIGNvbW1hbmQuCit0aGUgIndhaXQiIHBhcmFtZXRlciBpbiB0aGUgImluY2x1ZGUiIFNTSSBjb21tYW5kLgogPC9wYXJhPgogPC9jaGFuZ2U+CiAKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDFiMTM1ZTUuLjg2YmVhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMy41NCIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjMuNTUiCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX09MRFBJRF9FWFQgICAgICIub2xkYmluIgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2ZpbGUuYyBiL3NyYy9jb3JlL25neF9maWxlLmMKaW5kZXggMGQwOTRlYy4uYTczMGVkZSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2ZpbGUuYworKysgYi9zcmMvY29yZS9uZ3hfZmlsZS5jCkBAIC0yNSwxMSArMjUsOCBAQAogICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRmLT5sb2dfbGV2ZWwgPT0gTkdYX0xPR19OT1RJQ0UpIHsKLSAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19OT1RJQ0UsIHRmLT5maWxlLmxvZywgMCwgdGYtPndhcm4pOwotCi0gICAgICAgIH0gZWxzZSBpZiAodGYtPmxvZ19sZXZlbCA9PSBOR1hfTE9HX1dBUk4pIHsKLSAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19XQVJOLCB0Zi0+ZmlsZS5sb2csIDAsICIlcyAlViIsCisgICAgICAgIGlmICh0Zi0+bG9nX2xldmVsKSB7CisgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKHRmLT5sb2dfbGV2ZWwsIHRmLT5maWxlLmxvZywgMCwgIiVzICVWIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGYtPndhcm4sICZ0Zi0+ZmlsZS5uYW1lKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9pb2NwX21vZHVsZS5jIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2lvY3BfbW9kdWxlLmMKaW5kZXggZWVhMzg5Mi4uYzlmNGYwYyAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2lvY3BfbW9kdWxlLmMKKysrIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2lvY3BfbW9kdWxlLmMKQEAgLTQwLDcgKzQwLDcgQEAKICAgICAgTlVMTH0sCiAKICAgICB7bmd4X3N0cmluZygiYWNjZXB0ZXhfcmVhZCIpLAotICAgICBOR1hfRVZFTlRfQ09ORnxOR1hfQ09ORl9UQUtFMSwKKyAgICAgTkdYX0VWRU5UX0NPTkZ8TkdYX0NPTkZfRkxBRywKICAgICAgbmd4X2NvbmZfc2V0X2ZsYWdfc2xvdCwKICAgICAgMCwKICAgICAgb2Zmc2V0b2Yobmd4X2lvY3BfY29uZl90LCBhY2NlcHRleF9yZWFkKSwKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnQuYyBiL3NyYy9ldmVudC9uZ3hfZXZlbnQuYwppbmRleCA3ZDRjZGJhLi44Y2JlYjE2IDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50LmMKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudC5jCkBAIC0xMzcsMTQgKzEzNywxNCBAQAogICAgICAgTlVMTCB9LAogCiAgICAgeyBuZ3hfc3RyaW5nKCJtdWx0aV9hY2NlcHQiKSwKLSAgICAgIE5HWF9FVkVOVF9DT05GfE5HWF9DT05GX1RBS0UxLAorICAgICAgTkdYX0VWRU5UX0NPTkZ8TkdYX0NPTkZfRkxBRywKICAgICAgIG5neF9jb25mX3NldF9mbGFnX3Nsb3QsCiAgICAgICAwLAogICAgICAgb2Zmc2V0b2Yobmd4X2V2ZW50X2NvbmZfdCwgbXVsdGlfYWNjZXB0KSwKICAgICAgIE5VTEwgfSwKIAogICAgIHsgbmd4X3N0cmluZygiYWNjZXB0X211dGV4IiksCi0gICAgICBOR1hfRVZFTlRfQ09ORnxOR1hfQ09ORl9UQUtFMSwKKyAgICAgIE5HWF9FVkVOVF9DT05GfE5HWF9DT05GX0ZMQUcsCiAgICAgICBuZ3hfY29uZl9zZXRfZmxhZ19zbG90LAogICAgICAgMCwKICAgICAgIG9mZnNldG9mKG5neF9ldmVudF9jb25mX3QsIGFjY2VwdF9tdXRleCksCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2FjY2Vzc19tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYWNjZXNzX21vZHVsZS5jCmluZGV4IGI4YWEzYWEuLjkzYzg2NTIgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYWNjZXNzX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYWNjZXNzX21vZHVsZS5jCkBAIC01NSw3ICs1NSw3IEBACiAKIAogCi1uZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfYWNjZXNzX21vZHVsZV9jdHggPSB7CitzdGF0aWMgbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX2FjY2Vzc19tb2R1bGVfY3R4ID0gewogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByZWNvbmZpZ3VyYXRpb24gKi8KICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0Y29uZmlndXJhdGlvbiAqLwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2FkZGl0aW9uX2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYWRkaXRpb25fZmlsdGVyX21vZHVsZS5jCmluZGV4IDE1MjMxY2UuLjMxMjA5ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYWRkaXRpb25fZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYWRkaXRpb25fZmlsdGVyX21vZHVsZS5jCkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICAgICAgY3R4LT5iZWZvcmVfYm9keV9zZW50ID0gMTsKIAogICAgICAgICBpZiAoY29uZi0+YmVmb3JlX2JvZHkubGVuKSB7Ci0gICAgICAgICAgICBpZiAobmd4X2h0dHBfc3VicmVxdWVzdChyLCAmY29uZi0+YmVmb3JlX2JvZHksIE5VTEwsIDApCisgICAgICAgICAgICBpZiAobmd4X2h0dHBfc3VicmVxdWVzdChyLCAmY29uZi0+YmVmb3JlX2JvZHksIE5VTEwsIE5VTEwsIDApCiAgICAgICAgICAgICAgICAgPT0gTkdYX0VSUk9SKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CkBAIC0xNjcsNyArMTY3LDcgQEAKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAotICAgIGlmIChuZ3hfaHR0cF9zdWJyZXF1ZXN0KHIsICZjb25mLT5hZnRlcl9ib2R5LCBOVUxMLCAwKSA9PSBOR1hfRVJST1IpIHsKKyAgICBpZiAobmd4X2h0dHBfc3VicmVxdWVzdChyLCAmY29uZi0+YWZ0ZXJfYm9keSwgTlVMTCwgTlVMTCwgMCkgPT0gTkdYX0VSUk9SKSB7CiAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CiAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dGhfYmFzaWNfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dGhfYmFzaWNfbW9kdWxlLmMKaW5kZXggNWRkMjg3Ni4uMTEzNTI3ZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRoX2Jhc2ljX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYXV0aF9iYXNpY19tb2R1bGUuYwpAQCAtNjAsNyArNjAsNyBAQAogfTsKIAogCi1uZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfYXV0aF9iYXNpY19tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9hdXRoX2Jhc2ljX21vZHVsZV9jdHggPSB7CiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3Rjb25maWd1cmF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYXV0b2luZGV4X21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMKaW5kZXggNTM1NDU2OC4uNzA2NGYzNyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMKQEAgLTgxLDcgKzgxLDcgQEAKIH07CiAKIAotbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX2F1dG9pbmRleF9tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlX2N0eCA9IHsKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmVjb25maWd1cmF0aW9uICovCiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zdGNvbmZpZ3VyYXRpb24gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaGFyc2V0X2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2hhcnNldF9maWx0ZXJfbW9kdWxlLmMKaW5kZXggZTNmZGI2NS4uYWI2ZjVjZSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaGFyc2V0X2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2NoYXJzZXRfZmlsdGVyX21vZHVsZS5jCkBAIC0xMzI1LDYgKzEzMjUsOSBAQAogCiAgICAgaWYgKG5neF9zdHJjYXNlY21wKG5hbWUtPmRhdGEsICJ1dGYtOCIpID09IDApIHsKICAgICAgICAgYy0+dXRmOCA9IDE7CisKKyAgICB9IGVsc2UgeworICAgICAgICBjLT51dGY4ID0gMDsKICAgICB9CiAKICAgICByZXR1cm4gaTsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2h1bmtlZF9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2NodW5rZWRfZmlsdGVyX21vZHVsZS5jCmluZGV4IDY1ODFlNTkuLjRlMDIxOTQgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2h1bmtlZF9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaHVua2VkX2ZpbHRlcl9tb2R1bGUuYwpAQCAtOTUsOCArOTUsMTEgQEAKIAogICAgICAgICBzaXplICs9IG5neF9idWZfc2l6ZShjbC0+YnVmKTsKIAotICAgICAgICBpZiAoY2wtPmJ1Zi0+Zmx1c2ggfHwgbmd4X2J1Zl9pbl9tZW1vcnkoY2wtPmJ1ZikgfHwgY2wtPmJ1Zi0+aW5fZmlsZSkgewotCisgICAgICAgIGlmIChjbC0+YnVmLT5mbHVzaAorICAgICAgICAgICAgfHwgY2wtPmJ1Zi0+c3luYworICAgICAgICAgICAgfHwgbmd4X2J1Zl9pbl9tZW1vcnkoY2wtPmJ1ZikKKyAgICAgICAgICAgIHx8IGNsLT5idWYtPmluX2ZpbGUpCisgICAgICAgIHsKICAgICAgICAgICAgIHRsID0gbmd4X2FsbG9jX2NoYWluX2xpbmsoci0+cG9vbCk7CiAgICAgICAgICAgICBpZiAodGwgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZGF2X21vZHVsZS5jCmluZGV4IDUzZWYyMWMuLjBlYTkzN2YgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZGF2X21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZGF2X21vZHVsZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9kYXZfbW9kdWxlX2N0eCA9IHsKK3N0YXRpYyBuZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfZGF2X21vZHVsZV9jdHggPSB7CiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3Rjb25maWd1cmF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZW1wdHlfZ2lmX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlLmMKaW5kZXggYjk3NjMzYS4uNjliNmM4OSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlLmMKQEAgLTc0LDcgKzc0LDcgQEAKIH07CiAKIAotbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX2VtcHR5X2dpZl9tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlX2N0eCA9IHsKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0Y29uZmlndXJhdGlvbiAqLwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Zhc3RjZ2lfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Zhc3RjZ2lfbW9kdWxlLmMKaW5kZXggMjhmODYwZS4uOGQ1ZWY5NSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9mYXN0Y2dpX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZmFzdGNnaV9tb2R1bGUuYwpAQCAtMzQ3LDcgKzM0Nyw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9mYXN0Y2dpX21vZHVsZV9jdHggPSB7CitzdGF0aWMgbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX2Zhc3RjZ2lfbW9kdWxlX2N0eCA9IHsKICAgICBuZ3hfaHR0cF9mYXN0Y2dpX2FkZF92YXJpYWJsZXMsICAgICAgICAvKiBwcmVjb25maWd1cmF0aW9uICovCiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zdGNvbmZpZ3VyYXRpb24gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9pbmRleF9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfbW9kdWxlLmMKaW5kZXggNGVmMjkxMC4uYjkzZTZmYiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9pbmRleF9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X21vZHVsZS5jCkBAIC03Miw3ICs3Miw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9pbmRleF9tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9pbmRleF9tb2R1bGVfY3R4ID0gewogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByZWNvbmZpZ3VyYXRpb24gKi8KICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0Y29uZmlndXJhdGlvbiAqLwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2xvZ19tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfbG9nX21vZHVsZS5jCmluZGV4IGY4NWE2YzguLmM4MWFkMmUgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfbG9nX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfbG9nX21vZHVsZS5jCkBAIC0xNDIsNyArMTQyLDcgQEAKIH07CiAKIAotbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX2xvZ19tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9sb2dfbW9kdWxlX2N0eCA9IHsKICAgICBuZ3hfaHR0cF9sb2dfc2V0X2Zvcm1hdHMsICAgICAgICAgICAgICAvKiBwcmVjb25maWd1cmF0aW9uICovCiAgICAgbmd4X2h0dHBfbG9nX2luaXQsICAgICAgICAgICAgICAgICAgICAgLyogcG9zdGNvbmZpZ3VyYXRpb24gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9tZW1jYWNoZWRfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX21lbWNhY2hlZF9tb2R1bGUuYwppbmRleCA0MzczNjkyLi42MWE5NTAyIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX21lbWNhY2hlZF9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX21lbWNhY2hlZF9tb2R1bGUuYwpAQCAtMTEyLDcgKzExMiw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9tZW1jYWNoZWRfbW9kdWxlX2N0eCA9IHsKK3N0YXRpYyBuZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfbWVtY2FjaGVkX21vZHVsZV9jdHggPSB7CiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3Rjb25maWd1cmF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jCmluZGV4IDU5OTlmMmUuLmE2YWRjM2MgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYwpAQCAtMzI3LDcgKzMyNyw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9wcm94eV9tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9wcm94eV9tb2R1bGVfY3R4ID0gewogICAgIG5neF9odHRwX3Byb3h5X2FkZF92YXJpYWJsZXMsICAgICAgICAgIC8qIHByZWNvbmZpZ3VyYXRpb24gKi8KICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0Y29uZmlndXJhdGlvbiAqLwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3JlYWxpcF9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmVhbGlwX21vZHVsZS5jCmluZGV4IDM5NDBlZTQuLjhmMTI4ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmVhbGlwX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmVhbGlwX21vZHVsZS5jCkBAIC02MSw3ICs2MSw3IEBACiAKIAogCi1uZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfcmVhbGlwX21vZHVsZV9jdHggPSB7CitzdGF0aWMgbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX3JlYWxpcF9tb2R1bGVfY3R4ID0gewogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByZWNvbmZpZ3VyYXRpb24gKi8KICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0Y29uZmlndXJhdGlvbiAqLwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMKaW5kZXggODg5ODhiZC4uOTgwZGUxOSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZXdyaXRlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmV3cml0ZV9tb2R1bGUuYwpAQCAtMTAyLDcgKzEwMiw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9yZXdyaXRlX21vZHVsZV9jdHggPSB7CitzdGF0aWMgbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX3Jld3JpdGVfbW9kdWxlX2N0eCA9IHsKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmVjb25maWd1cmF0aW9uICovCiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zdGNvbmZpZ3VyYXRpb24gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5jCmluZGV4IDVhNjVhMDMuLmVmODcwYmUgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3NpX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXJfbW9kdWxlLmMKQEAgLTM2LDYgKzM2LDEzIEBACiB9IG5neF9odHRwX3NzaV92YXJfdDsKIAogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbmd4X3N0cl90ICAgICBuYW1lOworICAgIG5neF9jaGFpbl90ICAqYnVmczsKKyAgICBuZ3hfdWludF90ICAgIGNvdW50OworfSBuZ3hfaHR0cF9zc2lfYmxvY2tfdDsKKworCiB0eXBlZGVmIGVudW0gewogICAgIHNzaV9zdGFydF9zdGF0ZSA9IDAsCiAgICAgc3NpX3RhZ19zdGF0ZSwKQEAgLTgzLDYgKzkwLDEwIEBACiAgICAgbmd4X2h0dHBfc3NpX2N0eF90ICpjdHgsIG5neF9zdHJfdCAqKnBhcmFtcyk7CiBzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX3NzaV9lbmRpZihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsCiAgICAgbmd4X2h0dHBfc3NpX2N0eF90ICpjdHgsIG5neF9zdHJfdCAqKnBhcmFtcyk7CitzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX3NzaV9ibG9jayhuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsCisgICAgbmd4X2h0dHBfc3NpX2N0eF90ICpjdHgsIG5neF9zdHJfdCAqKnBhcmFtcyk7CitzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX3NzaV9lbmRibG9jayhuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsCisgICAgbmd4X2h0dHBfc3NpX2N0eF90ICpjdHgsIG5neF9zdHJfdCAqKnBhcmFtcyk7CiAKIHN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfc3NpX2RhdGVfZ210X2xvY2FsX3ZhcmlhYmxlKG5neF9odHRwX3JlcXVlc3RfdCAqciwKICAgICBuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90ICp2LCAgdWludHB0cl90IGdtdCk7CkBAIC0xODksNiArMjAwLDcgQEAKICNkZWZpbmUgIE5HWF9IVFRQX1NTSV9JTkNMVURFX1ZJUlRVQUwgIDAKICNkZWZpbmUgIE5HWF9IVFRQX1NTSV9JTkNMVURFX0ZJTEUgICAgIDEKICNkZWZpbmUgIE5HWF9IVFRQX1NTSV9JTkNMVURFX1dBSVQgICAgIDIKKyNkZWZpbmUgIE5HWF9IVFRQX1NTSV9JTkNMVURFX1NUVUIgICAgIDMKIAogI2RlZmluZSAgTkdYX0hUVFBfU1NJX0VDSE9fVkFSICAgICAgICAgMAogI2RlZmluZSAgTkdYX0hUVFBfU1NJX0VDSE9fREVGQVVMVCAgICAgMQpAQCAtMjAxLDExICsyMTMsMTQgQEAKIAogI2RlZmluZSAgTkdYX0hUVFBfU1NJX0lGX0VYUFIgICAgICAgICAgMAogCisjZGVmaW5lICBOR1hfSFRUUF9TU0lfQkxPQ0tfTkFNRSAgICAgICAwCisKIAogc3RhdGljIG5neF9odHRwX3NzaV9wYXJhbV90ICBuZ3hfaHR0cF9zc2lfaW5jbHVkZV9wYXJhbXNbXSA9IHsKICAgICB7IG5neF9zdHJpbmcoInZpcnR1YWwiKSwgTkdYX0hUVFBfU1NJX0lOQ0xVREVfVklSVFVBTCwgMCwgMCB9LAogICAgIHsgbmd4X3N0cmluZygiZmlsZSIpLCBOR1hfSFRUUF9TU0lfSU5DTFVERV9GSUxFLCAwLCAwIH0sCiAgICAgeyBuZ3hfc3RyaW5nKCJ3YWl0IiksIE5HWF9IVFRQX1NTSV9JTkNMVURFX1dBSVQsIDAsIDAgfSwKKyAgICB7IG5neF9zdHJpbmcoInN0dWIiKSwgTkdYX0hUVFBfU1NJX0lOQ0xVREVfU1RVQiwgMCwgMCB9LAogICAgIHsgbmd4X251bGxfc3RyaW5nLCAwLCAwLCAwIH0KIH07CiAKQEAgLTIzNyw2ICsyNTIsMTIgQEAKIH07CiAKIAorc3RhdGljIG5neF9odHRwX3NzaV9wYXJhbV90ICBuZ3hfaHR0cF9zc2lfYmxvY2tfcGFyYW1zW10gPSB7CisgICAgeyBuZ3hfc3RyaW5nKCJuYW1lIiksIE5HWF9IVFRQX1NTSV9CTE9DS19OQU1FLCAxLCAwIH0sCisgICAgeyBuZ3hfbnVsbF9zdHJpbmcsIDAsIDAsIDAgfQorfTsKKworCiBzdGF0aWMgbmd4X2h0dHBfc3NpX3BhcmFtX3QgIG5neF9odHRwX3NzaV9ub19wYXJhbXNbXSA9IHsKICAgICB7IG5neF9udWxsX3N0cmluZywgMCwgMCwgMCB9CiB9OwpAQCAtMjQ0LDIxICsyNjUsMjcgQEAKIAogc3RhdGljIG5neF9odHRwX3NzaV9jb21tYW5kX3QgIG5neF9odHRwX3NzaV9jb21tYW5kc1tdID0gewogICAgIHsgbmd4X3N0cmluZygiaW5jbHVkZSIpLCBuZ3hfaHR0cF9zc2lfaW5jbHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfc3NpX2luY2x1ZGVfcGFyYW1zLCAwLCAxIH0sCi0gICAgeyBuZ3hfc3RyaW5nKCJlY2hvIiksIG5neF9odHRwX3NzaV9lY2hvLCBuZ3hfaHR0cF9zc2lfZWNob19wYXJhbXMsIDAsIDAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfc3NpX2luY2x1ZGVfcGFyYW1zLCAwLCAwLCAxIH0sCisgICAgeyBuZ3hfc3RyaW5nKCJlY2hvIiksIG5neF9odHRwX3NzaV9lY2hvLAorICAgICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9zc2lfZWNob19wYXJhbXMsIDAsIDAsIDAgfSwKICAgICB7IG5neF9zdHJpbmcoImNvbmZpZyIpLCBuZ3hfaHR0cF9zc2lfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9zc2lfY29uZmlnX3BhcmFtcywgMCwgMCB9LAotICAgIHsgbmd4X3N0cmluZygic2V0IiksIG5neF9odHRwX3NzaV9zZXQsIG5neF9odHRwX3NzaV9zZXRfcGFyYW1zLCAwLCAwIH0sCisgICAgICAgICAgICAgICAgICAgICAgIG5neF9odHRwX3NzaV9jb25maWdfcGFyYW1zLCAwLCAwLCAwIH0sCisgICAgeyBuZ3hfc3RyaW5nKCJzZXQiKSwgbmd4X2h0dHBfc3NpX3NldCwgbmd4X2h0dHBfc3NpX3NldF9wYXJhbXMsIDAsIDAsIDAgfSwKIAotICAgIHsgbmd4X3N0cmluZygiaWYiKSwgbmd4X2h0dHBfc3NpX2lmLCBuZ3hfaHR0cF9zc2lfaWZfcGFyYW1zLCAwLCAwIH0sCisgICAgeyBuZ3hfc3RyaW5nKCJpZiIpLCBuZ3hfaHR0cF9zc2lfaWYsIG5neF9odHRwX3NzaV9pZl9wYXJhbXMsIDAsIDAsIDAgfSwKICAgICB7IG5neF9zdHJpbmcoImVsaWYiKSwgbmd4X2h0dHBfc3NpX2lmLCBuZ3hfaHR0cF9zc2lfaWZfcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICBOR1hfSFRUUF9TU0lfQ09ORF9JRiwgMCB9LAorICAgICAgICAgICAgICAgICAgICAgICBOR1hfSFRUUF9TU0lfQ09ORF9JRiwgMCwgMCB9LAogICAgIHsgbmd4X3N0cmluZygiZWxzZSIpLCBuZ3hfaHR0cF9zc2lfZWxzZSwgbmd4X2h0dHBfc3NpX25vX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgTkdYX0hUVFBfU1NJX0NPTkRfSUYsIDAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkdYX0hUVFBfU1NJX0NPTkRfSUYsIDAsIDAgfSwKICAgICB7IG5neF9zdHJpbmcoImVuZGlmIiksIG5neF9odHRwX3NzaV9lbmRpZiwgbmd4X2h0dHBfc3NpX25vX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgTkdYX0hUVFBfU1NJX0NPTkRfRUxTRSwgMCB9LAorICAgICAgICAgICAgICAgICAgICAgICBOR1hfSFRUUF9TU0lfQ09ORF9FTFNFLCAwLCAwIH0sCiAKLSAgICB7IG5neF9udWxsX3N0cmluZywgTlVMTCwgTlVMTCwgMCwgMCB9CisgICAgeyBuZ3hfc3RyaW5nKCJibG9jayIpLCBuZ3hfaHR0cF9zc2lfYmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgIG5neF9odHRwX3NzaV9ibG9ja19wYXJhbXMsIDAsIDAsIDAgfSwKKyAgICB7IG5neF9zdHJpbmcoImVuZGJsb2NrIiksIG5neF9odHRwX3NzaV9lbmRibG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfc3NpX25vX3BhcmFtcywgMCwgMSwgMCB9LAorCisgICAgeyBuZ3hfbnVsbF9zdHJpbmcsIE5VTEwsIE5VTEwsIDAsIDAsIDAgfQogfTsKIAogCkBAIC0zNDgsMTMgKzM3NSwxNSBAQAogc3RhdGljIG5neF9pbnRfdAogbmd4X2h0dHBfc3NpX2JvZHlfZmlsdGVyKG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2NoYWluX3QgKmluKQogeworICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICAgIGxlbjsKICAgICBuZ3hfaW50X3QgICAgICAgICAgICAgICAgICByYzsKICAgICBuZ3hfYnVmX3QgICAgICAgICAgICAgICAgICpiOwogICAgIG5neF91aW50X3QgICAgICAgICAgICAgICAgIGksIGluZGV4OwotICAgIG5neF9jaGFpbl90ICAgICAgICAgICAgICAgKmNsOworICAgIG5neF9jaGFpbl90ICAgICAgICAgICAgICAgKmNsLCAqKmxsOwogICAgIG5neF90YWJsZV9lbHRfdCAgICAgICAgICAgKnBhcmFtOwogICAgIG5neF9jb25uZWN0aW9uX3QgICAgICAgICAgKmM7Ci0gICAgbmd4X2h0dHBfc3NpX2N0eF90ICAgICAgICAqY3R4OworICAgIG5neF9odHRwX3NzaV9jdHhfdCAgICAgICAgKmN0eCwgKm1jdHg7CisgICAgbmd4X2h0dHBfc3NpX2Jsb2NrX3QgICAgICAqYmw7CiAgICAgbmd4X2h0dHBfc3NpX3BhcmFtX3QgICAgICAqcHJtOwogICAgIG5neF9odHRwX3NzaV9jb21tYW5kX3QgICAgKmNtZDsKICAgICBuZ3hfaHR0cF9zc2lfbG9jX2NvbmZfdCAgICpzbGNmOwpAQCAtNTEwLDYgKzUzOSw0NyBAQAogICAgICAgICAgICAgICAgICAgICBjdHgtPmxhc3Rfb3V0ID0gJmNsLT5uZXh0OwogCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+YmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGN0eC0+c2F2ZWQgKyAoY3R4LT5jb3B5X2VuZCAtIGN0eC0+Y29weV9zdGFydCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBuZ3hfY3JlYXRlX3RlbXBfYnVmKHItPnBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlZCArIChjdHgtPmNvcHlfZW5kIC0gY3R4LT5jb3B5X3N0YXJ0KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5zYXZlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGItPmxhc3QgPSBuZ3hfY3B5bWVtKGItPnBvcywgbmd4X2h0dHBfc3NpX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnNhdmVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgYi0+bGFzdCA9IG5neF9jcHltZW0oYi0+bGFzdCwgY3R4LT5jb3B5X3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3B5X2VuZCAtIGN0eC0+Y29weV9zdGFydCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsID0gbmd4X2FsbG9jX2NoYWluX2xpbmsoci0+cG9vbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2wgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYgPSBiOworICAgICAgICAgICAgICAgICAgICAgICAgY2wtPm5leHQgPSBOVUxMOworCisgICAgICAgICAgICAgICAgICAgICAgICBiID0gTlVMTDsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWN0eCA9IG5neF9odHRwX2dldF9tb2R1bGVfY3R4KHItPm1haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBibCA9IG1jdHgtPmJsb2Nrcy0+ZWx0czsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGwgPSAmYmxbbWN0eC0+YmxvY2tzLT5uZWx0cyAtIDFdLmJ1ZnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGwgPSAmKCpsbCktPm5leHQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdm9pZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAqbGwgPSBjbDsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIGN0eC0+c2F2ZWQgPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTU1OSw4ICs2MjksNzkgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byBzc2lfZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCFjdHgtPm91dHB1dCAmJiBjbWQtPmNvbmRpdGlvbmFsID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFjdHgtPm91dHB1dCAmJiAhY21kLT5ibG9jaykgeworCisgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPmJsb2NrKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY29uc3RydWN0IHRoZSBTU0kgY29tbWFuZCB0ZXh0ICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDUgKyBjdHgtPmNvbW1hbmQubGVuICsgNDsKKworICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBjdHgtPnBhcmFtcy5lbHRzOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+cGFyYW1zLm5lbHRzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0gMSArIHBhcmFtW2ldLmtleS5sZW4gKyAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFyYW1baV0udmFsdWUubGVuICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG5neF9jcmVhdGVfdGVtcF9idWYoci0+cG9vbCwgbGVuKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsID0gbmd4X2FsbG9jX2NoYWluX2xpbmsoci0+cG9vbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2wgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYgPSBiOworICAgICAgICAgICAgICAgICAgICAgICAgY2wtPm5leHQgPSBOVUxMOworCisgICAgICAgICAgICAgICAgICAgICAgICAqYi0+bGFzdCsrID0gJzwnOworICAgICAgICAgICAgICAgICAgICAgICAgKmItPmxhc3QrKyA9ICchJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpiLT5sYXN0KysgPSAnLSc7CisgICAgICAgICAgICAgICAgICAgICAgICAqYi0+bGFzdCsrID0gJy0nOworICAgICAgICAgICAgICAgICAgICAgICAgKmItPmxhc3QrKyA9ICcjJzsKKworICAgICAgICAgICAgICAgICAgICAgICAgYi0+bGFzdCA9IG5neF9jcHltZW0oYi0+bGFzdCwgY3R4LT5jb21tYW5kLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmNvbW1hbmQubGVuKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+cGFyYW1zLm5lbHRzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYi0+bGFzdCsrID0gJyAnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGItPmxhc3QgPSBuZ3hfY3B5bWVtKGItPmxhc3QsIHBhcmFtW2ldLmtleS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtW2ldLmtleS5sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpiLT5sYXN0KysgPSAnPSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmItPmxhc3QrKyA9ICciJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLT5sYXN0ID0gbmd4X2NweW1lbShiLT5sYXN0LCBwYXJhbVtpXS52YWx1ZS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtW2ldLnZhbHVlLmxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmItPmxhc3QrKyA9ICciJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgKmItPmxhc3QrKyA9ICcgJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpiLT5sYXN0KysgPSAnLSc7CisgICAgICAgICAgICAgICAgICAgICAgICAqYi0+bGFzdCsrID0gJy0nOworICAgICAgICAgICAgICAgICAgICAgICAgKmItPmxhc3QrKyA9ICc+JzsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWN0eCA9IG5neF9odHRwX2dldF9tb2R1bGVfY3R4KHItPm1haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBibCA9IG1jdHgtPmJsb2Nrcy0+ZWx0czsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGwgPSAmYmxbbWN0eC0+YmxvY2tzLT5uZWx0cyAtIDFdLmJ1ZnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGwgPSAmKCpsbCktPm5leHQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdm9pZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAqbGwgPSBjbDsKKworICAgICAgICAgICAgICAgICAgICAgICAgYiA9IE5VTEw7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtZC0+Y29uZGl0aW9uYWwgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXJhbXMubmVsdHMgPiBOR1hfSFRUUF9TU0lfTUFYX1BBUkFNUykgewpAQCAtMTM4Miw4ICsxNTIzLDEyIEBACiAKICAgICBjdHggPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2N0eChyLT5tYWluLCBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CiAKLSAgICB2YXIgPSBjdHgtPnZhcmlhYmxlcy5lbHRzOwotICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPnZhcmlhYmxlcy5uZWx0czsgaSsrKSB7CisgICAgaWYgKGN0eC0+dmFyaWFibGVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdmFyID0gY3R4LT52YXJpYWJsZXMtPmVsdHM7CisgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+dmFyaWFibGVzLT5uZWx0czsgaSsrKSB7CiAgICAgICAgIGlmIChuYW1lLT5sZW4gIT0gdmFyW2ldLm5hbWUubGVuKSB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTY2MywxMyArMTgwOCwxOCBAQAogbmd4X2h0dHBfc3NpX2luY2x1ZGUobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaHR0cF9zc2lfY3R4X3QgKmN0eCwKICAgICBuZ3hfc3RyX3QgKipwYXJhbXMpCiB7Ci0gICAgbmd4X2ludF90ICAgIHJjOwotICAgIG5neF9zdHJfdCAgICp1cmksICpmaWxlLCAqd2FpdCwgYXJnczsKLSAgICBuZ3hfdWludF90ICAgZmxhZ3M7CisgICAgbmd4X2ludF90ICAgICAgICAgICAgICByYzsKKyAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgKnVyaSwgKmZpbGUsICp3YWl0LCAqc3R1YiwgYXJnczsKKyAgICBuZ3hfYnVmX3QgICAgICAgICAgICAgKmI7CisgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICBmbGFncywgaTsKKyAgICBuZ3hfY2hhaW5fdCAgICAgICAgICAgKm91dCwgKmNsLCAqdGwsICoqbGw7CisgICAgbmd4X2h0dHBfc3NpX2N0eF90ICAgICptY3R4OworICAgIG5neF9odHRwX3NzaV9ibG9ja190ICAqYmw7CiAKICAgICB1cmkgPSBwYXJhbXNbTkdYX0hUVFBfU1NJX0lOQ0xVREVfVklSVFVBTF07CiAgICAgZmlsZSA9IHBhcmFtc1tOR1hfSFRUUF9TU0lfSU5DTFVERV9GSUxFXTsKICAgICB3YWl0ID0gcGFyYW1zW05HWF9IVFRQX1NTSV9JTkNMVURFX1dBSVRdOworICAgIHN0dWIgPSBwYXJhbXNbTkdYX0hUVFBfU1NJX0lOQ0xVREVfU1RVQl07CiAKICAgICBpZiAodXJpICYmIGZpbGUpIHsKICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0VSUiwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLApAQCAtMTY4Nyw4ICsxODM3LDcgQEAKICAgICBpZiAod2FpdCkgewogICAgICAgICBpZiAodXJpID09IE5VTEwpIHsKICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FUlIsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlwid2FpdFwiIG1heSBub3QgYmUgdXNlZCB3aXRoIGZpbGU9XCIlVlwiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLCBmaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlwid2FpdFwiIG1heSBub3QgYmUgdXNlZCB3aXRoIGZpbGU9XCIlVlwiIiwgZmlsZSk7CiAgICAgICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOwogICAgICAgICB9CiAKQEAgLTE2OTksNyArMTg0OCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FUlIsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgXCIlVlwiIGluIHRoZSBcIndhaXRcIiBwYXJhbWV0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmd2FpdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9FUlJPUjsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MjUsNyArMTg3NCw2OCBAQAogICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOwogICAgIH0KIAotICAgIHJjID0gbmd4X2h0dHBfc3VicmVxdWVzdChyLCB1cmksICZhcmdzLCBmbGFncyk7CisgICAgb3V0ID0gTlVMTDsKKworICAgIGlmIChzdHViKSB7CisgICAgICAgIG1jdHggPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2N0eChyLT5tYWluLCBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CisKKyAgICAgICAgaWYgKG1jdHgtPmJsb2NrcykgeworICAgICAgICAgICAgYmwgPSBtY3R4LT5ibG9ja3MtPmVsdHM7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWN0eC0+YmxvY2tzLT5uZWx0czsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWItPmxlbiA9PSBibFtpXS5uYW1lLmxlbgorICAgICAgICAgICAgICAgICAgICAmJiBuZ3hfc3RybmNtcChzdHViLT5kYXRhLCBibFtpXS5uYW1lLmRhdGEsIHN0dWItPmxlbikgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0VSUiwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICJcInN0dWJcIj1cIiVWXCIgZm9yIFwiaW5jbHVkZVwiIG5vdCBmb3VuZCIsIHN0dWIpOworICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOworCisgICAgZm91bmQ6CisKKyAgICAgICAgaWYgKGJsW2ldLmNvdW50KyspIHsKKworICAgICAgICAgICAgbGwgPSAmb3V0OworCisgICAgICAgICAgICBmb3IgKHRsID0gYmxbaV0uYnVmczsgdGw7IHRsID0gdGwtPm5leHQpIHsKKworICAgICAgICAgICAgICAgIGlmIChjdHgtPmZyZWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2wgPSBjdHgtPmZyZWU7CisgICAgICAgICAgICAgICAgICAgIGN0eC0+ZnJlZSA9IGN0eC0+ZnJlZS0+bmV4dDsKKyAgICAgICAgICAgICAgICAgICAgYiA9IGNsLT5idWY7CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBiID0gbmd4X2FsbG9jX2J1ZihyLT5wb29sKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNsID0gbmd4X2FsbG9jX2NoYWluX2xpbmsoci0+cG9vbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY2wtPmJ1ZiA9IGI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbmd4X21lbWNweShiLCB0bC0+YnVmLCBzaXplb2Yobmd4X2J1Zl90KSk7CisKKyAgICAgICAgICAgICAgICBiLT5wb3MgPSBiLT5zdGFydDsKKworICAgICAgICAgICAgICAgICpsbCA9IGNsOworICAgICAgICAgICAgICAgIGNsLT5uZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICBsbCA9ICZjbC0+bmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0ID0gYmxbaV0uYnVmczsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJjID0gbmd4X2h0dHBfc3VicmVxdWVzdChyLCB1cmksICZhcmdzLCBvdXQsIGZsYWdzKTsKIAogICAgIGlmIChyYyA9PSBOR1hfRVJST1IpIHsKICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9FUlJPUjsKQEAgLTE4NjEsMTAgKzIwNzEsMTAgQEAKIAogICAgIG1jdHggPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2N0eChyLT5tYWluLCBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CiAKLSAgICBpZiAobWN0eC0+dmFyaWFibGVzLmVsdHMgPT0gTlVMTCkgewotICAgICAgICBpZiAobmd4X2FycmF5X2luaXQoJm1jdHgtPnZhcmlhYmxlcywgci0+cG9vbCwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihuZ3hfaHR0cF9zc2lfdmFyX3QpKSAhPSBOR1hfT0spCi0gICAgICAgIHsKKyAgICBpZiAobWN0eC0+dmFyaWFibGVzID09IE5VTEwpIHsKKyAgICAgICAgbWN0eC0+dmFyaWFibGVzID0gbmd4X2FycmF5X2NyZWF0ZShyLT5wb29sLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihuZ3hfaHR0cF9zc2lfdmFyX3QpKTsKKyAgICAgICAgaWYgKG1jdHgtPnZhcmlhYmxlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOwogICAgICAgICB9CiAgICAgfQpAQCAtMTg5Myw3ICsyMTAzLDcgQEAKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CiAKLSAgICB2YXIgPSBuZ3hfYXJyYXlfcHVzaCgmbWN0eC0+dmFyaWFibGVzKTsKKyAgICB2YXIgPSBuZ3hfYXJyYXlfcHVzaChtY3R4LT52YXJpYWJsZXMpOwogICAgIGlmICh2YXIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOwogICAgIH0KQEAgLTIxMzYsNiArMjM0Niw1NiBAQAogCiAKIHN0YXRpYyBuZ3hfaW50X3QKK25neF9odHRwX3NzaV9ibG9jayhuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF9odHRwX3NzaV9jdHhfdCAqY3R4LAorICAgIG5neF9zdHJfdCAqKnBhcmFtcykKK3sKKyAgICBuZ3hfaHR0cF9zc2lfY3R4X3QgICAgKm1jdHg7CisgICAgbmd4X2h0dHBfc3NpX2Jsb2NrX3QgICpibDsKKworICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICJzc2kgYmxvY2siKTsKKworICAgIG1jdHggPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2N0eChyLT5tYWluLCBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CisKKyAgICBpZiAobWN0eC0+YmxvY2tzID09IE5VTEwpIHsKKyAgICAgICAgbWN0eC0+YmxvY2tzID0gbmd4X2FycmF5X2NyZWF0ZShyLT5wb29sLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihuZ3hfaHR0cF9zc2lfYmxvY2tfdCkpOworICAgICAgICBpZiAobWN0eC0+YmxvY2tzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOR1hfSFRUUF9TU0lfRVJST1I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBibCA9IG5neF9hcnJheV9wdXNoKG1jdHgtPmJsb2Nrcyk7CisgICAgaWYgKGJsID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9FUlJPUjsKKyAgICB9CisKKyAgICBibC0+bmFtZSA9ICpwYXJhbXNbTkdYX0hUVFBfU1NJX0JMT0NLX05BTUVdOworICAgIGJsLT5idWZzID0gTlVMTDsKKyAgICBibC0+Y291bnQgPSAwOworCisgICAgY3R4LT5vdXRwdXQgPSAwOworICAgIGN0eC0+YmxvY2sgPSAxOworCisgICAgcmV0dXJuIE5HWF9PSzsKK30KKworCitzdGF0aWMgbmd4X2ludF90CituZ3hfaHR0cF9zc2lfZW5kYmxvY2sobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaHR0cF9zc2lfY3R4X3QgKmN0eCwKKyAgICBuZ3hfc3RyX3QgKipwYXJhbXMpCit7CisgICAgbmd4X2xvZ19kZWJ1ZzAoTkdYX0xPR19ERUJVR19IVFRQLCByLT5jb25uZWN0aW9uLT5sb2csIDAsCisgICAgICAgICAgICAgICAgICAgInNzaSBlbmRibG9jayIpOworCisgICAgY3R4LT5vdXRwdXQgPSAxOworICAgIGN0eC0+YmxvY2sgPSAwOworCisgICAgcmV0dXJuIE5HWF9PSzsKK30KKworCitzdGF0aWMgbmd4X2ludF90CiBuZ3hfaHR0cF9zc2lfZGF0ZV9nbXRfbG9jYWxfdmFyaWFibGUobmd4X2h0dHBfcmVxdWVzdF90ICpyLAogICAgIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKnYsICB1aW50cHRyX3QgZ210KQogewpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5oIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5oCmluZGV4IDBkOTYxOGIuLmRjM2VmZjAgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3NpX2ZpbHRlcl9tb2R1bGUuaAorKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXJfbW9kdWxlLmgKQEAgLTU2LDkgKzU2LDExIEBACiAKICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgIHZhbHVlX2xlbjsKIAotICAgIG5neF9hcnJheV90ICAgICAgICAgICAgICAgdmFyaWFibGVzOworICAgIG5neF9hcnJheV90ICAgICAgICAgICAgICAqdmFyaWFibGVzOworICAgIG5neF9hcnJheV90ICAgICAgICAgICAgICAqYmxvY2tzOwogCiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbDoyOworICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgYmxvY2s6MTsKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgIG91dHB1dDoxOwogICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgb3V0cHV0X2Nob3NlbjoxOwogICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgd2FpdDoxOwpAQCAtODgsNiArOTAsNyBAQAogICAgIG5neF9odHRwX3NzaV9wYXJhbV90ICAgICAqcGFyYW1zOwogCiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbDoyOworICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgYmxvY2s6MTsKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgIGZsdXNoOjE7CiB9IG5neF9odHRwX3NzaV9jb21tYW5kX3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3NsX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2xfbW9kdWxlLmMKaW5kZXggYTU3ZmJmYi4uOGM3OGUwZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2xfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2xfbW9kdWxlLmMKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgIE5VTEwgfSwKIAogICAgIHsgbmd4X3N0cmluZygic3NsX3ZlcmlmeV9jbGllbnQiKSwKLSAgICAgIE5HWF9IVFRQX01BSU5fQ09ORnxOR1hfSFRUUF9TUlZfQ09ORnxOR1hfQ09ORl8xTU9SRSwKKyAgICAgIE5HWF9IVFRQX01BSU5fQ09ORnxOR1hfSFRUUF9TUlZfQ09ORnxOR1hfQ09ORl9GTEFHLAogICAgICAgbmd4X2NvbmZfc2V0X2ZsYWdfc2xvdCwKICAgICAgIE5HWF9IVFRQX1NSVl9DT05GX09GRlNFVCwKICAgICAgIG9mZnNldG9mKG5neF9odHRwX3NzbF9zcnZfY29uZl90LCB2ZXJpZnkpLApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdGF0dXNfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3N0YXR1c19tb2R1bGUuYwppbmRleCBjZjRmMzNmLi5hMmUyZGJjIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3N0YXR1c19tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3N0YXR1c19tb2R1bGUuYwpAQCAtMzYsNyArMzYsNyBAQAogCiAKIAotbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX3N0YXR1c19tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9zdGF0dXNfbW9kdWxlX2N0eCA9IHsKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmUgY29uZiAqLwogCiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3JlYXRlIG1haW4gY29uZmlndXJhdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdHViX3N0YXR1c19tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3R1Yl9zdGF0dXNfbW9kdWxlLmMKaW5kZXggN2NkYjNjMS4uNGZlOWMwNCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdHViX3N0YXR1c19tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3N0dWJfc3RhdHVzX21vZHVsZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAKIAogCi1uZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfc3R1Yl9zdGF0dXNfbW9kdWxlX2N0eCA9IHsKK3N0YXRpYyBuZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfc3R1Yl9zdGF0dXNfbW9kdWxlX2N0eCA9IHsKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmVjb25maWd1cmF0aW9uICovCiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zdGNvbmZpZ3VyYXRpb24gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF91c2VyaWRfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF91c2VyaWRfZmlsdGVyX21vZHVsZS5jCmluZGV4IGJkYWQzNWQuLjY0OGYxYWQgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfdXNlcmlkX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3VzZXJpZF9maWx0ZXJfbW9kdWxlLmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogfTsKIAogCi1uZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfdXNlcmlkX2ZpbHRlcl9tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF91c2VyaWRfZmlsdGVyX21vZHVsZV9jdHggPSB7CiAgICAgbmd4X2h0dHBfdXNlcmlkX2FkZF92YXJpYWJsZXMsICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3Rjb25maWd1cmF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC54cyBiL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC54cwppbmRleCA3MzVjYzM3Li44ZTI4N2E2IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbngueHMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnhzCkBAIC0xOTksMTMgKzE5OSwxNiBAQAogICAgIENPREU6CiAKICAgICBkWFNUQVJHOwotICAgIG5neF9odHRwX3JlcXVlc3RfdCAgKnI7Ci0gICAgU1YgICAgICAgICAgICAgICAgICAqa2V5OwotICAgIHVfY2hhciAgICAgICAgICAgICAgKnA7Ci0gICAgU1RSTEVOICAgICAgICAgICAgICAgbGVuOwotICAgIG5neF91aW50X3QgICAgICAgICAgIGk7Ci0gICAgbmd4X2xpc3RfcGFydF90ICAgICAqcGFydDsKLSAgICBuZ3hfdGFibGVfZWx0X3QgICAgICpoZWFkZXI7CisgICAgbmd4X2h0dHBfcmVxdWVzdF90ICAgICAgICAgKnI7CisgICAgU1YgICAgICAgICAgICAgICAgICAgICAgICAgKmtleTsKKyAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgICAqcCwgKmxvd2Nhc2Vfa2V5LCAqY29va2llOworICAgIFNUUkxFTiAgICAgICAgICAgICAgICAgICAgICBsZW47CisgICAgc3NpemVfdCAgICAgICAgICAgICAgICAgICAgIHNpemU7CisgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgIGksIG4sIGhhc2g7CisgICAgbmd4X2xpc3RfcGFydF90ICAgICAgICAgICAgKnBhcnQ7CisgICAgbmd4X3RhYmxlX2VsdF90ICAgICAgICAgICAgKmgsICoqcGg7CisgICAgbmd4X2h0dHBfaGVhZGVyX3QgICAgICAgICAgKmhoOworICAgIG5neF9odHRwX2NvcmVfbWFpbl9jb25mX3QgICpjbWNmOwogCiAgICAgbmd4X2h0dHBfcGVybF9zZXRfcmVxdWVzdChyKTsKIApAQCAtMjE3LDggKzIyMCw4NSBAQAogCiAgICAgcCA9ICh1X2NoYXIgKikgU3ZQVihrZXksIGxlbik7CiAKKyAgICAvKiBsb29rIHVwIGhhc2hlZCBoZWFkZXJzICovCisKKyAgICBsb3djYXNlX2tleSA9IG5neF9wYWxsb2Moci0+cG9vbCwgbGVuKTsKKyAgICBpZiAobG93Y2FzZV9rZXkgPT0gTlVMTCkgeworICAgICAgICBYU1JFVFVSTl9VTkRFRjsKKyAgICB9CisKKyAgICBoYXNoID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgbG93Y2FzZV9rZXlbaV0gPSBuZ3hfdG9sb3dlcihwW2ldKTsKKyAgICAgICAgaGFzaCA9IG5neF9oYXNoKGhhc2gsIGxvd2Nhc2Vfa2V5W2ldKTsKKyAgICB9CisKKyAgICBjbWNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9tYWluX2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOworCisgICAgaGggPSBuZ3hfaGFzaF9maW5kKCZjbWNmLT5oZWFkZXJzX2luX2hhc2gsIGhhc2gsIGxvd2Nhc2Vfa2V5LCBsZW4pOworCisgICAgaWYgKGhoKSB7CisgICAgICAgIGlmIChoaC0+b2Zmc2V0KSB7CisKKyAgICAgICAgICAgIHBoID0gKG5neF90YWJsZV9lbHRfdCAqKikgKChjaGFyICopICZyLT5oZWFkZXJzX2luICsgaGgtPm9mZnNldCk7CisKKyAgICAgICAgICAgIGlmICgqcGgpIHsKKyAgICAgICAgICAgICAgICBuZ3hfaHR0cF9wZXJsX3NldF90YXJnKCgqcGgpLT52YWx1ZS5kYXRhLCAoKnBoKS0+dmFsdWUubGVuLCAwKTsKKworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgWFNSRVRVUk5fVU5ERUY7CisgICAgICAgIH0KKworICAgICAgICAvKiBDb29raWUgKi8KKworICAgICAgICBuID0gci0+aGVhZGVyc19pbi5jb29raWVzLm5lbHRzOworCisgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgIFhTUkVUVVJOX1VOREVGOworICAgICAgICB9CisKKyAgICAgICAgcGggPSByLT5oZWFkZXJzX2luLmNvb2tpZXMuZWx0czsKKworICAgICAgICBpZiAobiA9PSAxKSB7CisgICAgICAgICAgICBuZ3hfaHR0cF9wZXJsX3NldF90YXJnKCgqcGgpLT52YWx1ZS5kYXRhLCAoKnBoKS0+dmFsdWUubGVuLCAwKTsKKworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZSA9IC0gKHNzaXplX3QpIChzaXplb2YoIjsgIikgLSAxKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBzaXplICs9IHBoW2ldLT52YWx1ZS5sZW4gKyBzaXplb2YoIjsgIikgLSAxOworICAgICAgICB9CisKKyAgICAgICAgY29va2llID0gbmd4X3BhbGxvYyhyLT5wb29sLCBzaXplKTsKKyAgICAgICAgaWYgKGNvb2tpZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBYU1JFVFVSTl9VTkRFRjsKKyAgICAgICAgfQorCisgICAgICAgIHAgPSBjb29raWU7CisKKyAgICAgICAgZm9yIChpID0gMDsgLyogdm9pZCAqLyA7IGkrKykgeworICAgICAgICAgICAgcCA9IG5neF9jb3B5KHAsIHBoW2ldLT52YWx1ZS5kYXRhLCBwaFtpXS0+dmFsdWUubGVuKTsKKworICAgICAgICAgICAgaWYgKGkgPT0gbiAtIDEpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKnArKyA9ICc7JzsgKnArKyA9ICcgJzsKKyAgICAgICAgfQorCisgICAgICAgIG5neF9odHRwX3Blcmxfc2V0X3RhcmcoY29va2llLCBzaXplLCAwKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogaXRlcmF0ZSBvdmVyIGFsbCBoZWFkZXJzICovCisKICAgICBwYXJ0ID0gJnItPmhlYWRlcnNfaW4uaGVhZGVycy5wYXJ0OwotICAgIGhlYWRlciA9IHBhcnQtPmVsdHM7CisgICAgaCA9IHBhcnQtPmVsdHM7CiAKICAgICBmb3IgKGkgPSAwOyAvKiB2b2lkICovIDsgaSsrKSB7CiAKQEAgLTIyOCwxNyArMzA4LDE3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHBhcnQgPSBwYXJ0LT5uZXh0OwotICAgICAgICAgICAgaGVhZGVyID0gcGFydC0+ZWx0czsKKyAgICAgICAgICAgIGggPSBwYXJ0LT5lbHRzOwogICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobGVuICE9IGhlYWRlcltpXS5rZXkubGVuCi0gICAgICAgICAgICB8fCBuZ3hfc3RyY2FzZWNtcChwLCBoZWFkZXJbaV0ua2V5LmRhdGEpICE9IDApCisgICAgICAgIGlmIChsZW4gIT0gaFtpXS5rZXkubGVuCisgICAgICAgICAgICB8fCBuZ3hfc3RyY2FzZWNtcChwLCBoW2ldLmtleS5kYXRhKSAhPSAwKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIG5neF9odHRwX3Blcmxfc2V0X3RhcmcoaGVhZGVyW2ldLnZhbHVlLmRhdGEsIGhlYWRlcltpXS52YWx1ZS5sZW4sIDApOworICAgICAgICBuZ3hfaHR0cF9wZXJsX3NldF90YXJnKGhbaV0udmFsdWUuZGF0YSwgaFtpXS52YWx1ZS5sZW4sIDApOwogCiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL3Blcmwvbmd4X2h0dHBfcGVybF9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ3hfaHR0cF9wZXJsX21vZHVsZS5jCmluZGV4IGJmOTc2ZTkuLmIzZTExNzUgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ3hfaHR0cF9wZXJsX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ3hfaHR0cF9wZXJsX21vZHVsZS5jCkBAIC0xNzAsNyArMTcwLDcgQEAKIH07CiAKIHN0YXRpYyBuZ3hfaHR0cF9zc2lfY29tbWFuZF90ICBuZ3hfaHR0cF9wZXJsX3NzaV9jb21tYW5kID0gewotICAgIG5neF9zdHJpbmcoInBlcmwiKSwgbmd4X2h0dHBfcGVybF9zc2ksIG5neF9odHRwX3Blcmxfc3NpX3BhcmFtcywgMCwgMQorICAgIG5neF9zdHJpbmcoInBlcmwiKSwgbmd4X2h0dHBfcGVybF9zc2ksIG5neF9odHRwX3Blcmxfc3NpX3BhcmFtcywgMCwgMCwgMQogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cC5oIGIvc3JjL2h0dHAvbmd4X2h0dHAuaAppbmRleCA4NjdmOGY3Li40MTcyMGYyIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cC5oCisrKyBiL3NyYy9odHRwL25neF9odHRwLmgKQEAgLTg0LDkgKzg0LDYgQEAKIAogbmd4X2ludF90IG5neF9odHRwX3NlbmRfc3BlY2lhbChuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF91aW50X3QgZmxhZ3MpOwogCi11X2NoYXIgKiBuZ3hfaHR0cF9sb2dfZXJyb3JfaW5mbyhuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVfY2hhciAqYnVmLAotICAgIHNpemVfdCBsZW4pOwotCiAKIG5neF9pbnRfdCBuZ3hfaHR0cF9yZWFkX2NsaWVudF9yZXF1ZXN0X2JvZHkobmd4X2h0dHBfcmVxdWVzdF90ICpyLAogICAgIG5neF9odHRwX2NsaWVudF9ib2R5X2hhbmRsZXJfcHQgcG9zdF9oYW5kbGVyKTsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcHlfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29weV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggYmJhM2Y1ZC4uODc2MTJlYiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY29weV9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29weV9maWx0ZXJfbW9kdWxlLmMKQEAgLTEwNCw2ICsxMDQsNyBAQAogICAgICAgICBjdHgtPm91dHB1dF9maWx0ZXIgPSAobmd4X291dHB1dF9jaGFpbl9maWx0ZXJfcHQpIG5neF9odHRwX25leHRfZmlsdGVyOwogICAgICAgICBjdHgtPmZpbHRlcl9jdHggPSByOwogCisgICAgICAgIHItPnJlcXVlc3Rfb3V0cHV0ID0gMTsKICAgICB9CiAKICAgICByYyA9IG5neF9vdXRwdXRfY2hhaW4oY3R4LCBpbik7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYwppbmRleCBlZTBkM2NhLi5lYjQ5MzRlIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKQEAgLTQyNiw3ICs0MjYsNyBAQAogfTsKIAogCi1uZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfY29yZV9tb2R1bGVfY3R4ID0geworc3RhdGljIG5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9jb3JlX21vZHVsZV9jdHggPSB7CiAgICAgbmd4X2h0dHBfY29yZV9wcmVjb25maWd1cmF0aW9uLCAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3Rjb25maWd1cmF0aW9uICovCiAKQEAgLTEwNzEsMTMgKzEwNzEsMTkgQEAKICAgICAgICAgbGFzdCA9IG5neF9jb3B5KHBhdGgtPmRhdGEsIGNsY2YtPnJvb3QuZGF0YSwgY2xjZi0+cm9vdC5sZW4pOwogCiAgICAgfSBlbHNlIHsKLSAgICAgICAgbGFzdCA9IG5neF9odHRwX3NjcmlwdF9ydW4ociwgcGF0aCwgY2xjZi0+cm9vdF9sZW5ndGhzLT5lbHRzLCByZXNlcnZlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xjZi0+cm9vdF92YWx1ZXMtPmVsdHMpOwotICAgICAgICBpZiAobGFzdCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChuZ3hfaHR0cF9zY3JpcHRfcnVuKHIsIHBhdGgsIGNsY2YtPnJvb3RfbGVuZ3Rocy0+ZWx0cywgcmVzZXJ2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xjZi0+cm9vdF92YWx1ZXMtPmVsdHMpCisgICAgICAgICAgICA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuZ3hfY29uZl9mdWxsX25hbWUoKG5neF9jeWNsZV90ICopIG5neF9jeWNsZSwgcGF0aCkgPT0gTkdYX0VSUk9SKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIHItPnJvb3RfbGVuZ3RoID0gcGF0aC0+bGVuIC0gcmVzZXJ2ZWQ7CisgICAgICAgIGxhc3QgPSBwYXRoLT5kYXRhICsgci0+cm9vdF9sZW5ndGg7CiAgICAgfQogCiAgICAgbGFzdCA9IG5neF9jcHlzdHJuKGxhc3QsIHItPnVyaS5kYXRhICsgYWxpYXMsIHItPnVyaS5sZW4gLSBhbGlhcyArIDEpOwpAQCAtMTE1OCw3ICsxMTY0LDcgQEAKIAogbmd4X2ludF90CiBuZ3hfaHR0cF9zdWJyZXF1ZXN0KG5neF9odHRwX3JlcXVlc3RfdCAqciwKLSAgICBuZ3hfc3RyX3QgKnVyaSwgbmd4X3N0cl90ICphcmdzLCBuZ3hfdWludF90IGZsYWdzKQorICAgIG5neF9zdHJfdCAqdXJpLCBuZ3hfc3RyX3QgKmFyZ3MsIG5neF9jaGFpbl90ICpvdXQsIG5neF91aW50X3QgZmxhZ3MpCiB7CiAgICAgbmd4X2Nvbm5lY3Rpb25fdCAgICAgICAgICAgICAgKmM7CiAgICAgbmd4X2h0dHBfcmVxdWVzdF90ICAgICAgICAgICAgKnNyOwpAQCAtMTIzOSw2ICsxMjQ1LDcgQEAKICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKICAgICB9CiAKKyAgICBzci0+b3V0ID0gb3V0OwogICAgIHNyLT5tYWluID0gci0+bWFpbjsKICAgICBzci0+cGFyZW50ID0gcjsKICAgICBzci0+cmVhZF9ldmVudF9oYW5kbGVyID0gbmd4X2h0dHBfcmVxdWVzdF9lbXB0eV9oYW5kbGVyOwpAQCAtMjUyNyw4ICsyNTM0LDEwIEBACiAgICAgICAgIGxjZi0+cm9vdC5sZW4tLTsKICAgICB9CiAKLSAgICBpZiAobmd4X2NvbmZfZnVsbF9uYW1lKGNmLT5jeWNsZSwgJmxjZi0+cm9vdCkgPT0gTkdYX0VSUk9SKSB7Ci0gICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKKyAgICBpZiAobGNmLT5yb290LmRhdGFbMF0gIT0gJyQnKSB7CisgICAgICAgIGlmIChuZ3hfY29uZl9mdWxsX25hbWUoY2YtPmN5Y2xlLCAmbGNmLT5yb290KSA9PSBOR1hfRVJST1IpIHsKKyAgICAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG4gPSBuZ3hfaHR0cF9zY3JpcHRfdmFyaWFibGVzX2NvdW50KCZsY2YtPnJvb3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuaCBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmgKaW5kZXggNjYxZjFiOS4uNWVhODEwMyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuaAorKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5oCkBAIC0yNjcsNyArMjY3LDcgQEAKIG5neF9pbnRfdCBuZ3hfaHR0cF9hdXRoX2Jhc2ljX3VzZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyKTsKIAogbmd4X2ludF90IG5neF9odHRwX3N1YnJlcXVlc3Qobmd4X2h0dHBfcmVxdWVzdF90ICpyLAotICAgIG5neF9zdHJfdCAqdXJpLCBuZ3hfc3RyX3QgKmFyZ3MsIG5neF91aW50X3QgZmxhZ3MpOworICAgIG5neF9zdHJfdCAqdXJpLCBuZ3hfc3RyX3QgKmFyZ3MsIG5neF9jaGFpbl90ICpvdXQsIG5neF91aW50X3QgZmxhZ3MpOwogbmd4X2ludF90IG5neF9odHRwX2ludGVybmFsX3JlZGlyZWN0KG5neF9odHRwX3JlcXVlc3RfdCAqciwKICAgICBuZ3hfc3RyX3QgKnVyaSwgbmd4X3N0cl90ICphcmdzKTsKIApAQCAtMjgzLDcgKzI4Myw2IEBACiBuZ3hfaW50X3Qgbmd4X2h0dHBfd3JpdGVfZmlsdGVyKG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2NoYWluX3QgKmNoYWluKTsKIAogCi1leHRlcm4gbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX2NvcmVfbW9kdWxlX2N0eDsKIGV4dGVybiBuZ3hfbW9kdWxlX3QgIG5neF9odHRwX2NvcmVfbW9kdWxlOwogCiBleHRlcm4gbmd4X3VpbnRfdCBuZ3hfaHR0cF9tYXhfbW9kdWxlOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfaGVhZGVyX2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL25neF9odHRwX2hlYWRlcl9maWx0ZXJfbW9kdWxlLmMKaW5kZXggYzZlY2QzYS4uYWM0NTQzYiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfaGVhZGVyX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9oZWFkZXJfZmlsdGVyX21vZHVsZS5jCkBAIC0xNTksNiArMTU5LDggQEAKICAgICBuZ3hfdGFibGVfZWx0X3QgICAgICAgICAgICpoZWFkZXI7CiAgICAgbmd4X2h0dHBfY29yZV9sb2NfY29uZl90ICAqY2xjZjsKIAorICAgIHItPmhlYWRlcl9zZW50ID0gMTsKKwogICAgIGlmIChyICE9IHItPm1haW4pIHsKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9wYXJzZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcGFyc2UuYwppbmRleCAyNGI3ZjhjLi42MDE3NDE0IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9wYXJzZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3BhcnNlLmMKQEAgLTk2OSw2ICs5NjksOCBAQAogI2VuZGlmCiAKICAgICAgICAgY2FzZSBzd19xdW90ZWQ6CisgICAgICAgICAgICByLT5xdW90ZWRfdXJpID0gMTsKKwogICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKICAgICAgICAgICAgICAgICBkZWNvZGVkID0gKHVfY2hhcikgKGNoIC0gJzAnKTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X3F1b3RlZF9zZWNvbmQ7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggMzdkMjAwYy4uOTViYmRmYSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcG9zdHBvbmVfZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Bvc3Rwb25lX2ZpbHRlcl9tb2R1bGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBACiAgICAgICAgIHx8IChyLT5jb25uZWN0aW9uLT5idWZmZXJlZAogICAgICAgICAgICAgJiAoTkdYX0hUVFBfTE9XTEVWRUxfQlVGRkVSRUR8TkdYX0xPV0xFVkVMX0JVRkZFUkVEKSkpCiAgICAgewotCiAgICAgICAgIG5neF9sb2dfZGVidWcyKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAiaHR0cCBwb3N0cG9uZSBmaWx0ZXIgb3V0IFwiJVY/JVZcIiIsICZyLT51cmksICZyLT5hcmdzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCmluZGV4IDAxNDVmZTcuLmU2NDVlODEgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKQEAgLTg1Myw3ICs4NTMsNyBAQAogCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoLT5rZXkubGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaC0+bG93Y2FzZV9rZXlbaV0gPSBuZ3hfdG9sb3dlcihoLT5sb3djYXNlX2tleVtpXSk7CisgICAgICAgICAgICAgICAgICAgIGgtPmxvd2Nhc2Vfa2V5W2ldID0gbmd4X3RvbG93ZXIoaC0+a2V5LmRhdGFbaV0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMTQ1OSw2ICsxNDU5LDI4IEBACiAgICAgICAgICAgICAgICAgICAgImh0dHAgZmluYWxpemUgcmVxdWVzdDogJWQsIFwiJVY/JVZcIiIsCiAgICAgICAgICAgICAgICAgICAgcmMsICZyLT51cmksICZyLT5hcmdzKTsKIAorICAgIGlmIChyICE9IHItPm1haW4KKyAgICAgICAgJiYgcmMgIT0gTkdYX0VSUk9SCisgICAgICAgICYmICFyLT5jb25uZWN0aW9uLT5lcnJvcgorICAgICAgICAmJiAhci0+cmVxdWVzdF9vdXRwdXQKKyAgICAgICAgJiYgci0+b3V0KQorICAgIHsKKyAgICAgICAgaWYgKCFyLT5oZWFkZXJfc2VudCkgeworICAgICAgICAgICAgcmMgPSBuZ3hfaHR0cF9zZXRfY29udGVudF90eXBlKHIpOworCisgICAgICAgICAgICBpZiAocmMgPT0gTkdYX09LKSB7CisgICAgICAgICAgICAgICAgcmMgPSBuZ3hfaHR0cF9zZW5kX2hlYWRlcihyKTsKKworICAgICAgICAgICAgICAgIGlmIChyYyAhPSBOR1hfRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSBuZ3hfaHR0cF9vdXRwdXRfZmlsdGVyKHIsIHItPm91dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYyA9IG5neF9odHRwX291dHB1dF9maWx0ZXIociwgci0+b3V0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChyYyA9PSBOR1hfRVJST1IKICAgICAgICAgfHwgcmMgPT0gTkdYX0hUVFBfUkVRVUVTVF9USU1FX09VVAogICAgICAgICB8fCByLT5jb25uZWN0aW9uLT5lcnJvcikKQEAgLTI0MzUsMTUgKzI0NTcsNiBAQAogICAgICAgICBidWYgPSBwOwogICAgIH0KIAotICAgIHJldHVybiBuZ3hfaHR0cF9sb2dfZXJyb3JfaW5mbyhyLCBidWYsIGxlbik7Ci19Ci0KLQotdV9jaGFyICoKLW5neF9odHRwX2xvZ19lcnJvcl9pbmZvKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdV9jaGFyICpidWYsIHNpemVfdCBsZW4pCi17Ci0gICAgdV9jaGFyICAqcDsKLQogICAgIGlmIChyLT5oZWFkZXJzX2luLmhvc3QpIHsKICAgICAgICAgcCA9IG5neF9zbnByaW50ZihidWYsIGxlbiwgIiwgaG9zdDogXCIlVlwiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmci0+aGVhZGVyc19pbi5ob3N0LT52YWx1ZSk7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKaW5kZXggYjJkNDE4NC4uZmE4ZmQwZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaApAQCAtNDM3LDYgKzQzNyw4IEBACiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsOjE7CiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RfYWN0aW9uOjE7CiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfY29tcGxldGU6MTsKKyAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9vdXRwdXQ6MTsKKyAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX3NlbnQ6MTsKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZToxOwogICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4OjE7CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3RfYm9keS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdF9ib2R5LmMKaW5kZXggNWNjNGQ1Mi4uNDYwY2YzOSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdF9ib2R5LmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdF9ib2R5LmMKQEAgLTkyLDYgKzkyLDggQEAKICAgICAgICAgcmItPmJ1ZnMtPmJ1ZiA9IGI7CiAgICAgICAgIHJiLT5idWZzLT5uZXh0ID0gTlVMTDsKIAorICAgICAgICByYi0+YnVmID0gYjsKKwogICAgICAgICBpZiAoKG9mZl90KSBwcmVyZWFkID49IHItPmhlYWRlcnNfaW4uY29udGVudF9sZW5ndGhfbikgewogCiAgICAgICAgICAgICAvKiB0aGUgd2hvbGUgcmVxdWVzdCBib2R5IHdhcyBwcmUtcmVhZCAqLwpAQCAtMTI0LDggKzEyNiw2IEBACiAKICAgICAgICAgICAgIC8qIHRoZSB3aG9sZSByZXF1ZXN0IGJvZHkgbWF5IGJlIHBsYWNlZCBpbiByLT5oZWFkZXJfaW4gKi8KIAotICAgICAgICAgICAgcmItPmJ1ZiA9IGI7Ci0KICAgICAgICAgICAgIHItPnJlYWRfZXZlbnRfaGFuZGxlciA9IG5neF9odHRwX3JlYWRfY2xpZW50X3JlcXVlc3RfYm9keV9oYW5kbGVyOwogCiAgICAgICAgICAgICByZXR1cm4gbmd4X2h0dHBfZG9fcmVhZF9jbGllbnRfcmVxdWVzdF9ib2R5KHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKaW5kZXggNWNhYWQwMC4uOGNhMjRlMiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCkBAIC0xMzk0LDYgKzEzOTQsNyBAQAogICAgIGlmICh1LT5jYWNoYWJsZSkgewogICAgICAgICBwLT50ZW1wX2ZpbGUtPnBlcnNpc3RlbnQgPSAxOwogICAgIH0gZWxzZSB7CisgICAgICAgIHAtPnRlbXBfZmlsZS0+bG9nX2xldmVsID0gTkdYX0xPR19XQVJOOwogICAgICAgICBwLT50ZW1wX2ZpbGUtPndhcm4gPSAiYW4gdXBzdHJlYW0gcmVzcG9uc2UgaXMgYnVmZmVyZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gYSB0ZW1wb3JhcnkgZmlsZSI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF92YXJpYWJsZXMuYwppbmRleCA4YWFlZTQ1Li5mMTUxZjg3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF92YXJpYWJsZXMuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF92YXJpYWJsZXMuYwpAQCAtNTIzLDE1ICs1MjMsMTcgQEAKIG5neF9odHRwX3ZhcmlhYmxlX2hlYWRlcnMobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90ICp2LAogICAgIHVpbnRwdHJfdCBkYXRhKQogewotICAgIHNpemVfdCAgICAgICAgICAgICBsZW47CisgICAgc3NpemVfdCAgICAgICAgICAgIGxlbjsKICAgICB1X2NoYXIgICAgICAgICAgICAqcDsKLSAgICBuZ3hfdWludF90ICAgICAgICAgaTsKKyAgICBuZ3hfdWludF90ICAgICAgICAgaSwgbjsKICAgICBuZ3hfYXJyYXlfdCAgICAgICAqYTsKICAgICBuZ3hfdGFibGVfZWx0X3QgICoqaDsKIAogICAgIGEgPSAobmd4X2FycmF5X3QgKikgKChjaGFyICopIHIgKyBkYXRhKTsKIAotICAgIGlmIChhLT5uZWx0cyA9PSAwKSB7CisgICAgbiA9IGEtPm5lbHRzOworCisgICAgaWYgKG4gPT0gMCkgewogICAgICAgICB2LT5ub3RfZm91bmQgPSAxOwogICAgICAgICByZXR1cm4gTkdYX09LOwogICAgIH0KQEAgLTU0MiwxNiArNTQ0LDE2IEBACiAKICAgICBoID0gYS0+ZWx0czsKIAotICAgIGlmIChhLT5uZWx0cyA9PSAxKSB7CisgICAgaWYgKG4gPT0gMSkgewogICAgICAgICB2LT5sZW4gPSAoKmgpLT52YWx1ZS5sZW47CiAgICAgICAgIHYtPmRhdGEgPSAoKmgpLT52YWx1ZS5kYXRhOwogCiAgICAgICAgIHJldHVybiBOR1hfT0s7CiAgICAgfQogCi0gICAgbGVuID0gKHNpemVfdCkgLSAoc3NpemVfdCkgKHNpemVvZigiOyAiKSAtIDEpOworICAgIGxlbiA9IC0gKHNzaXplX3QpIChzaXplb2YoIjsgIikgLSAxKTsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBhLT5uZWx0czsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICBsZW4gKz0gaFtpXS0+dmFsdWUubGVuICsgc2l6ZW9mKCI7ICIpIC0gMTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NjgsNyBAQAogICAgIGZvciAoaSA9IDA7IC8qIHZvaWQgKi8gOyBpKyspIHsKICAgICAgICAgcCA9IG5neF9jb3B5KHAsIGhbaV0tPnZhbHVlLmRhdGEsIGhbaV0tPnZhbHVlLmxlbik7CiAKLSAgICAgICAgaWYgKGkgPT0gYS0+bmVsdHMgLSAxKSB7CisgICAgICAgIGlmIChpID09IG4gLSAxKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggM2Q5OTFjNy4uMGZmMmRiMyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfd3JpdGVfZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlcl9tb2R1bGUuYwpAQCAtMTMsNyArMTMsNyBAQAogc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF93cml0ZV9maWx0ZXJfaW5pdChuZ3hfY3ljbGVfdCAqY3ljbGUpOwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlX2N0eCA9IHsKK3N0YXRpYyBuZ3hfaHR0cF9tb2R1bGVfdCAgbmd4X2h0dHBfd3JpdGVfZmlsdGVyX21vZHVsZV9jdHggPSB7CiAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3Rjb25maWd1cmF0aW9uICovCiAKQEAgLTY5LDcgKzY5LDcgQEAKICAgICBmb3IgKGNsID0gci0+b3V0OyBjbDsgY2wgPSBjbC0+bmV4dCkgewogICAgICAgICBsbCA9ICZjbC0+bmV4dDsKIAotICAgICAgICBuZ3hfbG9nX2RlYnVnNyhOR1hfTE9HX0RFQlVHX0VWRU5ULCByLT5jb25uZWN0aW9uLT5sb2csIDAsCisgICAgICAgIG5neF9sb2dfZGVidWc3KE5HWF9MT0dfREVCVUdfRVZFTlQsIGMtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIG9sZCBidWYgdDolZCBmOiVkICVwLCBwb3MgJXAsIHNpemU6ICV6ICIKICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6ICVPLCBzaXplOiAleiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYtPnRlbXBvcmFyeSwgY2wtPmJ1Zi0+aW5fZmlsZSwKQEAgLTgwLDcgKzgwLDcgQEAKIAogI2lmIDEKICAgICAgICAgaWYgKG5neF9idWZfc2l6ZShjbC0+YnVmKSA9PSAwICYmICFuZ3hfYnVmX3NwZWNpYWwoY2wtPmJ1ZikpIHsKLSAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCBjLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6ZXJvIHNpemUgYnVmIGluIHdyaXRlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0OiVkIHI6JWQgZjolZCAlcCAlcC0lcCAlcCAlTy0lTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYtPnRlbXBvcmFyeSwKQEAgLTEyMSw3ICsxMjEsNyBAQAogICAgICAgICAqbGwgPSBjbDsKICAgICAgICAgbGwgPSAmY2wtPm5leHQ7CiAKLSAgICAgICAgbmd4X2xvZ19kZWJ1ZzcoTkdYX0xPR19ERUJVR19FVkVOVCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICBuZ3hfbG9nX2RlYnVnNyhOR1hfTE9HX0RFQlVHX0VWRU5ULCBjLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZSBuZXcgYnVmIHQ6JWQgZjolZCAlcCwgcG9zICVwLCBzaXplOiAleiAiCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOiAlTywgc2l6ZTogJXoiLAogICAgICAgICAgICAgICAgICAgICAgICBjbC0+YnVmLT50ZW1wb3JhcnksIGNsLT5idWYtPmluX2ZpbGUsCkBAIC0xMzIsNyArMTMyLDcgQEAKIAogI2lmIDEKICAgICAgICAgaWYgKG5neF9idWZfc2l6ZShjbC0+YnVmKSA9PSAwICYmICFuZ3hfYnVmX3NwZWNpYWwoY2wtPmJ1ZikpIHsKLSAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCBjLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6ZXJvIHNpemUgYnVmIGluIHdyaXRlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0OiVkIHI6JWQgZjolZCAlcCAlcC0lcCAlcCAlTy0lTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYtPnRlbXBvcmFyeSwKQEAgLTIwMSw3ICsyMDEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICAgICAgfQogCi0gICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIGMtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAidGhlIGh0dHAgb3V0cHV0IGNoYWluIGlzIGVtcHR5Iik7CiAKICAgICAgICAgbmd4X2RlYnVnX3BvaW50KCk7CkBAIC0yMTQsOCArMjE0LDggQEAKIAogICAgICAgICBpZiAodG9fc2VuZCA8PSAwKSB7CiAgICAgICAgICAgICBjLT53cml0ZS0+ZGVsYXllZCA9IDE7Ci0gICAgICAgICAgICBuZ3hfYWRkX3RpbWVyKHItPmNvbm5lY3Rpb24tPndyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAobmd4X21zZWNfdCkgKC0gdG9fc2VuZCAqIDEwMDAgLyByLT5saW1pdF9yYXRlICsgMSkpOworICAgICAgICAgICAgbmd4X2FkZF90aW1lcihjLT53cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG5neF9tc2VjX3QpICgtIHRvX3NlbmQgKiAxMDAwIC8gci0+bGltaXRfcmF0ZSArIDEpKTsKIAogICAgICAgICAgICAgYy0+YnVmZmVyZWQgfD0gTkdYX0hUVFBfV1JJVEVfQlVGRkVSRUQ7CiAKQEAgLTI0NCw4ICsyNDQsNyBAQAogICAgIGlmICh0b19zZW5kKSB7CiAgICAgICAgIHNlbnQgPSBjLT5zZW50IC0gc2VudDsKICAgICAgICAgYy0+d3JpdGUtPmRlbGF5ZWQgPSAxOwotICAgICAgICBuZ3hfYWRkX3RpbWVyKHItPmNvbm5lY3Rpb24tPndyaXRlLAotICAgICAgICAgICAgICAgICAgICAgIChuZ3hfbXNlY190KSAoc2VudCAqIDEwMDAgLyByLT5saW1pdF9yYXRlICsgMSkpOworICAgICAgICBuZ3hfYWRkX3RpbWVyKGMtPndyaXRlLCAobmd4X21zZWNfdCkgKHNlbnQgKiAxMDAwIC8gci0+bGltaXRfcmF0ZSArIDEpKTsKICAgICB9CiAKICAgICBmb3IgKGNsID0gci0+b3V0OyBjbCAmJiBjbCAhPSBjaGFpbjsgLyogdm9pZCAqLykgewpkaWZmIC0tZ2l0IGEvc3JjL215c3FsL25neF9odHRwX215c3FsX3Rlc3QuYyBiL3NyYy9teXNxbC9uZ3hfaHR0cF9teXNxbF90ZXN0LmMKaW5kZXggMGI4M2Y3ZC4uMmYwNjAwMCAxMDA2NDQKLS0tIGEvc3JjL215c3FsL25neF9odHRwX215c3FsX3Rlc3QuYworKysgYi9zcmMvbXlzcWwvbmd4X2h0dHBfbXlzcWxfdGVzdC5jCkBAIC0zMyw3ICszMyw3IEBACiB9OwogCiAKLW5neF9odHRwX21vZHVsZV90ICBuZ3hfaHR0cF9teXNxbF90ZXN0X21vZHVsZV9jdHggPSB7CitzdGF0aWMgbmd4X2h0dHBfbW9kdWxlX3QgIG5neF9odHRwX215c3FsX3Rlc3RfbW9kdWxlX2N0eCA9IHsKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29uZmlndXJhdGlvbiAqLwogICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0Y29uZmlndXJhdGlvbiAqLwogCg==