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: Kevin Buettner To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 12.1. Date: Sun, 28 Jun 2026 00:00:38 GMT Message-ID: <178260483818.1.14169592190745905176.rpms-gdb-1f1906c4c731@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 1f1906c4c73116fabac4200ff201fdda5bef7a0a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMWYxOTA2YzRjNzMxMTZmYWJhYzQyMDBmZjIwMWZkZGE1YmVm N2EwYQogICAgICAgICAgICBBdXRob3IgOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5j b20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjItMDUtMTNUMTA6MzA6MDUtMDc6MDAKICAgICAg ICAgICAgU3RhdHMgIDogKzU5Ni8tMzY2MSBpbiAzMiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMWYxOTA2YzRjNzMx MTZmYWJhYzQyMDBmZjIwMWZkZGE1YmVmN2EwYT9icmFuY2g9Z2RiLTE3LjItcmViYXNlLWY0NAoK ICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiAxMi4xLgoKVXBk YXRlIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2guClVwZGF0ZSBnZGItNi42LWJ1aWxkaWQt bG9jYXRlLXJwbS5wYXRjaC4KRHJvcHBlZCBiYWNrcG9ydGVkIHBhdGNoZXMgZnJvbSBHREIgMTEu MSBhbmQgMTEuMi4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5k ZXggZDQzZTYzYi4uYjc2NGUyMiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdu b3JlCkBAIC0xLDQgKzEsNCBAQAogL25ldy1mZWRvcmEtcmVsZWFzZQogL2dkYi1saWJzdGRjKyst djMtcHl0aG9uLTguMS4xLTIwMTgwNjI2LnRhci54egotL2dkYi0xMS4yLnRhci54egorL2dkYi0x Mi4xLnRhci54egogL3YyLjAuNS50YXIuZ3oKCmRpZmYgLS1naXQgYS9fZ2RiLnNwZWMuUGF0Y2gu aW5jbHVkZSBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCmluZGV4IGEwMDdkYTguLmUyMmU5ZGUg MTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCisrKyBiL19nZGIuc3BlYy5QYXRj aC5pbmNsdWRlCkBAIC0zMTAsNTYgKzMxMCwzIEBAIFBhdGNoMDczOiBnZGItcmhiejEzOTgzODct dGFiLWNyYXNoLXRlc3QucGF0Y2gKICMgPWZlZG9yYXRlc3QKIFBhdGNoMDc0OiBnZGItcmhiejE1 NTMxMDQtczM5MHgtYXJjaDEyLXRlc3QucGF0Y2gKIAotI0JhY2twb3J0IHVwc3RyZWFtIHBhdGNo IHdoaWNoIGZpeGVzIGludGVybmFsLWVycm9yOiBVbmV4cGVjdGVkCi0jdHlwZSBmaWVsZCBsb2Nh dGlvbiBraW5kIChSSEJaIDE5NzY4ODcpLgotUGF0Y2gwNzU6IGdkYi1yaGJ6MTk3Njg4Ny1maWVs ZC1sb2NhdGlvbi1raW5kLnBhdGNoCi0KLSMgQmFja3BvcnQgdGVzdCBmb3IgUkhCWiAxOTc2ODg3 IChLZXZpbiBCdWV0dG5lcikuCi1QYXRjaDA3NjogZ2RiLXRlc3QtZm9yLXJoYnoxOTc2ODg3LnBh dGNoCi0KLSMgQmFja3BvcnQgZ2RiLmZvcnRyYW4gdGVzdHN1aXRlIGNoYW5nZXMgaW4gb3JkZXIg dG8gYXZvaWQgRm9ydHJhbgotIyBsZXhpY2FsIGFuYWx5emVyIGJ1Zy4KLVBhdGNoMDc3OiBnZGIt cmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaAotCi0jIEJh Y2twb3J0IG1hbnBhZ2UgdXBkYXRlCi1QYXRjaDA3ODogZ2RiLXJoYnotODUzMDcxLXVwZGF0ZS1t YW5wYWdlcy5wYXRjaAotCi0jIEJhY2twb3J0IGZpeCBmb3IgZHByaW50ZiBidWcgKFJIIEJaIDIw MjIxNzcpLgotUGF0Y2gwNzk6IGdkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTEucGF0Y2gKLQotIyBC YWNrcG9ydCB0ZXN0IGNhc2UgZm9yIGRwcmludGYgYnVnIChSSCBCWiAyMDIyMTc3KS4KLVBhdGNo MDgwOiBnZGItcmhiejIwMjIxNzctZHByaW50Zi0yLnBhdGNoCi0KLSNCYWNrcG9ydCB1cHN0cmVh bSBjb21taXQgZnJvbSBBYXJvbiBNZXJleQotIzNlYTQ0ZjIxMjk5IGdkYi50ZXhpbmZvOiBFeHBh bmQgZG9jdW1lbnRhdGlvbiBmb3IgZGVidWdpbmZvZAotUGF0Y2gwODE6IGdkYi1yaGJ6MjAyNDg3 NS1leHBhbmQtZG9jdW1lbnRhdGlvbi1mb3ItZGVidWdpbmZvZC5wYXRjaAotCi0jQmFja3BvcnQg dXBzdHJlYW0gY29tbWl0IGZyb20gQWFyb24gTWVyZXkKLSM3ODExZmE1OTk1ZiBnZGI6IGFkZCBz ZXQvc2hvdyBjb21tYW5kcyBmb3IgbWFuYWdpbmcgZGVidWdpbmZvCi1QYXRjaDA4MjogZ2RiLXJo YnoyMDI0ODc1LXNldF9zaG93LWZvci1tYW5hZ2luZy1kZWJ1Z2luZm9kLnBhdGNoCi0KLSNCYWNr cG9ydCB1cHN0cmVhbSBjb21taXQgZnJvbSBUb20gVHJvbWV5Ci0jMmE4ZjFmNDc0NDYgRml4IHVu aXR0ZXN0LmV4cCBmYWlsdXJlIGR1ZSB0byAnc2V0IGRlYnVnaW5mb2QnIGFkZGl0aW9uCi1QYXRj aDA4MzogZ2RiLXJoYnoyMDI0ODc1LWZpeC11bml0dGVzdC1mYWlsdXJlLnBhdGNoCi0KLSNCYWNr cG9ydCB1cHN0cmVhbSBjb21taXQgZnJvbSAgU2ltb24gTWFyY2hpCi0jMzMzZjM1YjYzMTUgZ2Ri OiBwYXNzL3JldHVybiBzZXR0aW5nIHNldHRlci9nZXR0ZXIKLSNzY2FsYXIgdmFsdWVzIGJ5IHZh bHVlCi1QYXRjaDA4NDogZ2RiLXJoYnoyMDI0ODctcmV3b3JrLXNldC1kZWJ1Z2luZm9kLnBhdGNo Ci0KLSNCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZnJvbSBBYXJvbiBNZXJleQotI2I5ZGIyNmI0 YzQ0IFtQUiBnZGIvMjcwMjZdIENUUkwtQyBpcyBpZ25vcmVkIHdoZW4gZGVidWcgaW5mbyBpcyBk b3dubG9hZGVkCi1QYXRjaDA4NTogZ2RiLXJoYnoyMDI0ODc1LXByMjcwMjYucGF0Y2gKLQotIyBG aXggYnVpbGQgcHJvYmxlbXMuCi0jIChSSEJaIDIwNDIyNTcsIEtlaXRoIFNlaXR6LCBBbmRyZXcg QnVyZ2VzcykKLVBhdGNoMDg2OiBnZGItcmhiejIwNDIyNTctZnRicy11cGRhdGVzLnBhdGNoCi0K LSMgQmFja3BvcnQgZml4IHdoaWNoIGZpeGVzIGludGVybmFsIGVycm9yIGR1ZSB0byBsaWJjY19z IGxhY2tpbmcgYQotIyAuZGF0YSBzZWN0aW9uLgotUGF0Y2gwODc6IGdkYi1yaGJ6MjA0MjY2NC1m aXgtc2VjdF9pbmRleF9kYXRhLWludGVybmFsLWVycm9yCi0KLSMgQmFja3BvcnQgdXBzdHJlYW0g cGF0Y2ggZnJvbSBBYXJvbiBNZXJleSB3aGljaCBzdXBwcmVzc2VzIGRlYnVnaW5mb2QKLSMgcHJv Z3Jlc3MgbWVzc2FnZXMgd2hlbiBzaXplIGlzIHplcm8uICAoUkggQlogMjA2ODI4MCkuCi1QYXRj aDA4ODogZ2RiLXJoYnoyMDY4MjgwLWRlYnVnaW5mb2QtdW5hdmFpbGFibGUtc2l6ZS5wYXRjaAot CgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNwZWMucGF0Y2gu aW5jbHVkZQppbmRleCBiNmMxMzUyLi5hZmZlNzcxIDEwMDY0NAotLS0gYS9fZ2RiLnNwZWMucGF0 Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQpAQCAtNzIsMTcgKzcyLDMg QEAKICVwYXRjaDA3MiAtcDEKICVwYXRjaDA3MyAtcDEKICVwYXRjaDA3NCAtcDEKLSVwYXRjaDA3 NSAtcDEKLSVwYXRjaDA3NiAtcDEKLSVwYXRjaDA3NyAtcDEKLSVwYXRjaDA3OCAtcDEKLSVwYXRj aDA3OSAtcDEKLSVwYXRjaDA4MCAtcDEKLSVwYXRjaDA4MSAtcDEKLSVwYXRjaDA4MiAtcDEKLSVw YXRjaDA4MyAtcDEKLSVwYXRjaDA4NCAtcDEKLSVwYXRjaDA4NSAtcDEKLSVwYXRjaDA4NiAtcDEK LSVwYXRjaDA4NyAtcDEKLSVwYXRjaDA4OCAtcDEKCmRpZmYgLS1naXQgYS9fZ2l0X3Vwc3RyZWFt X2NvbW1pdCBiL19naXRfdXBzdHJlYW1fY29tbWl0CmluZGV4IDYwODllYWYuLmRhOWVhZDEgMTAw NjQ0Ci0tLSBhL19naXRfdXBzdHJlYW1fY29tbWl0CisrKyBiL19naXRfdXBzdHJlYW1fY29tbWl0 CkBAIC0xICsxIEBACi1lZjZlYzMzMzNlODBlMzljZTIwN2M2YzVkNTYyOGJkZDU0MDIxMTFkCitl NTNhOGU4Njg1Njg1Yzk3NTg4ZjgzMTlkOTkzZWE2Y2Q1NjM1ZTQ3CgpkaWZmIC0tZ2l0IGEvX3Bh dGNoX29yZGVyIGIvX3BhdGNoX29yZGVyCmluZGV4IDlhNTA1ZTcuLmU5NzJlMWIgMTAwNjQ0Ci0t LSBhL19wYXRjaF9vcmRlcgorKysgYi9fcGF0Y2hfb3JkZXIKQEAgLTcyLDE3ICs3MiwzIEBAIGdk Yi1saW51eF9wZXJmLWJ1bmRsZS5wYXRjaAogZ2RiLWxpYmV4ZWMtYWRkLWluZGV4LnBhdGNoCiBn ZGItcmhiejEzOTgzODctdGFiLWNyYXNoLXRlc3QucGF0Y2gKIGdkYi1yaGJ6MTU1MzEwNC1zMzkw eC1hcmNoMTItdGVzdC5wYXRjaAotZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQu cGF0Y2gKLWdkYi10ZXN0LWZvci1yaGJ6MTk3Njg4Ny5wYXRjaAotZ2RiLXJoYnoyMDEyOTc2LXBh cGVyLW92ZXItZm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0Y2gKLWdkYi1yaGJ6LTg1MzA3MS11cGRh dGUtbWFucGFnZXMucGF0Y2gKLWdkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTEucGF0Y2gKLWdkYi1y aGJ6MjAyMjE3Ny1kcHJpbnRmLTIucGF0Y2gKLWdkYi1yaGJ6MjAyNDg3NS1leHBhbmQtZG9jdW1l bnRhdGlvbi1mb3ItZGVidWdpbmZvZC5wYXRjaAotZ2RiLXJoYnoyMDI0ODc1LXNldF9zaG93LWZv ci1tYW5hZ2luZy1kZWJ1Z2luZm9kLnBhdGNoCi1nZGItcmhiejIwMjQ4NzUtZml4LXVuaXR0ZXN0 LWZhaWx1cmUucGF0Y2gKLWdkYi1yaGJ6MjAyNDg3LXJld29yay1zZXQtZGVidWdpbmZvZC5wYXRj aAotZ2RiLXJoYnoyMDI0ODc1LXByMjcwMjYucGF0Y2gKLWdkYi1yaGJ6MjA0MjI1Ny1mdGJzLXVw ZGF0ZXMucGF0Y2gKLWdkYi1yaGJ6MjA0MjY2NC1maXgtc2VjdF9pbmRleF9kYXRhLWludGVybmFs LWVycm9yCi1nZGItcmhiejIwNjgyODAtZGVidWdpbmZvZC11bmF2YWlsYWJsZS1zaXplLnBhdGNo CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2ggYi9nZGItNi4zLWdz dGFjay0yMDA1MDQxMS5wYXRjaAppbmRleCA5ZmEyZTdkLi42ZjZlY2ZiIDEwMDY0NAotLS0gYS9n ZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaAorKysgYi9nZGItNi4zLWdzdGFjay0yMDA1MDQx MS5wYXRjaApAQCAtMTYsNyArMTYsNyBAQCBTdWJqZWN0OiBnZGItNi4zLWdzdGFjay0yMDA1MDQx MS5wYXRjaAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgog LS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xNzUzLDcg KzE3NTMsNyBAQCBpbmZvIGluc3RhbGwtaW5mbyBjbGVhbi1pbmZvIGR2aSBwZGYgaW5zdGFsbC1w ZGYgaHRtbCBpbnN0YWxsLWh0bWw6IGZvcmNlCitAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgaW5mbyBp bnN0YWxsLWluZm8gY2xlYW4taW5mbyBkdmkgcGRmIGluc3RhbGwtcGRmIGh0bWwgaW5zdGFsbC1o dG1sOiBmb3JjZQogIGluc3RhbGw6IGFsbAogIAlAJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGlu c3RhbGwtb25seQogIApAQCAtMjUsNyArMjUsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxl LmluIGIvZ2RiL01ha2VmaWxlLmluCiAgCXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90 cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJICBlY2hvIGdkYiB8IHNlZCAtZSAiJCR0ImAgOyBcCiAg CQlpZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXAotQEAgLTE4MDIsNyAr MTgwMiwyNSBAQCBpbnN0YWxsLWd1aWxlOgorQEAgLTE4MTYsNyArMTgxNiwyNSBAQCBpbnN0YWxs LWd1aWxlOgogIGluc3RhbGwtcHl0aG9uOgogIAkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0 YWxsZGlycyAkKERFU1RESVIpJChHREJfREFUQURJUikvcHl0aG9uL2dkYgogIApAQCAtNTIsOCAr NTIsOCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCiAg CXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJ ICBlY2hvIGdkYiB8IHNlZCAtZSAkJHRgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRf bmFtZSIgPSB4OyB0aGVuIFwKLUBAIC0xODI1LDYgKzE4NDMsMTggQEAgdW5pbnN0YWxsOiBmb3Jj ZSAkKENPTkZJR19VTklOU1RBTEwpCi0gCWZpCitAQCAtMTg0Nyw2ICsxODY1LDE4IEBAIHVuaW5z dGFsbDogZm9yY2UgJChDT05GSUdfVU5JTlNUQUxMKQorIAlybSAtZiAkKERFU1RESVIpJChiaW5k aXIpLyQkdHJhbnNmb3JtZWRfbmFtZQogIAlAJChNQUtFKSBETz11bmluc3RhbGwgIkRPRElSUz0k KFNVQkRJUlMpIiAkKEZMQUdTX1RPX1BBU1MpIHN1YmRpcl9kbwogIAogKy5QSE9OWTogdW5pbnN0 YWxsLWdzdGFjawoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIu cGF0Y2ggYi9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCmluZGV4IDdlZTY4 ZTQuLjgyYzY5M2IgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIu cGF0Y2gKKysrIGIvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaApAQCAtMjcs NyArMjcsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdAogZGlmZiAtLWdpdCBhL2dkYi90b3Au YyBiL2dkYi90b3AuYwogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMKLUBAIC0yMTk1 LDcgKzIxOTUsNyBAQCBpbml0X2dkYl92ZXJzaW9uX3ZhcnMgKHZvaWQpCitAQCAtMjIzNCw3ICsy MjM0LDcgQEAgaW5pdF9nZGJfdmVyc2lvbl92YXJzICh2b2lkKQogICAgc3RydWN0IGludGVybmFs dmFyICptYWpvcl92ZXJzaW9uX3ZhciA9IGNyZWF0ZV9pbnRlcm5hbHZhciAoIl9nZGJfbWFqb3Ii KTsKICAgIHN0cnVjdCBpbnRlcm5hbHZhciAqbWlub3JfdmVyc2lvbl92YXIgPSBjcmVhdGVfaW50 ZXJuYWx2YXIgKCJfZ2RiX21pbm9yIik7CiAgICBpbnQgdm1ham9yID0gMCwgdm1pbm9yID0gMCwg dnJldmlzaW9uID0gMDsKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxz LXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoIGIvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRs cy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAppbmRleCAzMDRhYTM4Li5hYzNhYTE3IDEwMDY0 NAotLS0gYS9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYy LnBhdGNoCisrKyBiL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2lu Zm8tdjIucGF0Y2gKQEAgLTQ0LDcgKzQ0LDcgQEAgZ2xpYmMtZGVidWdpbmZvLTIuNy0yLng4Nl82 NDogL3Vzci9saWIvZGVidWcvbGliNjQvbGliYy5zby42LmRlYnVnOgogZGlmZiAtLWdpdCBhL2dk Yi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysg Yi9nZGIvcHJpbnRjbWQuYwotQEAgLTEzMDYsNiArMTMwNiwxMCBAQCBwcm9jZXNzX3ByaW50X2Nv bW1hbmRfYXJncyAoY29uc3QgY2hhciAqYXJncywgdmFsdWVfcHJpbnRfb3B0aW9ucyAqcHJpbnRf b3B0cywKK0BAIC0xMzAxLDYgKzEzMDEsMTAgQEAgcHJvY2Vzc19wcmludF9jb21tYW5kX2FyZ3Mg KGNvbnN0IGNoYXIgKmFyZ3MsIHZhbHVlX3ByaW50X29wdGlvbnMgKnByaW50X29wdHMsCiAgCiAg ICBpZiAoZXhwICE9IG51bGxwdHIgJiYgKmV4cCkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKaW5kZXggYzg2ZWM2Yi4u MmI4NjJhMCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdv cmthcm91bmQucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdv cmthcm91bmQucGF0Y2gKQEAgLTYsMjkgKzYsNiBAQCBTdWJqZWN0OiBnZGItNi42LWJ1aWxkaWQt bG9jYXRlLXJwbS1saWJycG0td29ya2Fyb3VuZC5wYXRjaAogOzsgV29ya2Fyb3VuZCBsaWJycG0g QlogNjQzMDMxIGR1ZSB0byBpdHMgdW5leHBlY3RlZCBleGl0KCkgY2FsbHMgKEJaIDY0Mjg3OSku CiA7Oz1wdXNoK2phbgogCi1kaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQt aWQuYwotLS0tIGEvZ2RiL2J1aWxkLWlkLmMKLSsrKyBiL2dkYi9idWlsZC1pZC5jCi1AQCAtNzA4 LDYgKzcwOCwxOSBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoY29uc3Qgc3RydWN0IGJmZF9idWls ZF9pZCAqYnVpbGRfaWQsIGNoYXIgKipsaW5rX3JldHVybikKLSAjaW5jbHVkZSA8ZGxmY24uaD4K LSAjZW5kaWYKLSAKLSsvKiBXb3JrYXJvZHVuIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9z aG93X2J1Zy5jZ2k/aWQ9NjQzMDMxCi0rICAgbGlicnBtIG11c3Qgbm90IGV4aXQoKSBhbiBhcHBs aWNhdGlvbiBvbiBTSUdJTlQKLSsKLSsgICBFbmFibGUgb3IgZGlzYWJsZSBhIHNpZ25hbCBoYW5k bGVyLiAgU0lHTlVNOiBzaWduYWwgdG8gZW5hYmxlIChvciBkaXNhYmxlCi0rICAgaWYgbmVnYXRp dmUpLiAgSEFORExFUjogc2Ffc2lnYWN0aW9uIGhhbmRsZXIgKG9yIE5VTEwgdG8gdXNlCi0rICAg cnBtc3FIYW5kbGVyKCkpLiAgUmV0dXJuczogbm8uIG9mIHJlZnMsIC0xIG9uIGVycm9yLiAgKi8K LStleHRlcm4gaW50IHJwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlvbl90IGhh bmRsZXIgKi8gdm9pZCAqaGFuZGxlcik7Ci0raW50Ci0rcnBtc3FFbmFibGUgKGludCBzaWdudW0s IC8qIHJwbXNxQWN0aW9uX3QgaGFuZGxlciAqLyB2b2lkICpoYW5kbGVyKQotK3sKLSsgIHJldHVy biAwOwotK30KLSsKLSAvKiBUaGlzIE1JU1NJTkdfUlBNX0hBU0ggdHJhY2tlciBpcyB1c2VkIHRv IGNvbGxlY3QgYWxsIHRoZSBtaXNzaW5nIHJwbSBmaWxlcwotICAgIGFuZCBhdm9pZCB0aGVpciBk dXBsaWNpdGllcyBkdXJpbmcgYSBzaW5nbGUgaW5mZXJpb3IgcnVuLiAgKi8KLSAKIGRpZmYgLS1n aXQgYS9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QgYi9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QKIC0tLSBh L2dkYi9wcm9jLXNlcnZpY2UubGlzdAogKysrIGIvZ2RiL3Byb2Mtc2VydmljZS5saXN0CgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoIGIvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCmluZGV4IDFkYzNhYzQuLjdkNDM4OWEgMTAwNjQ0 Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLXNjbC5wYXRjaAorKysgYi9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2gKQEAgLTksOTYgKzksMTAgQEAgU3ViamVjdDog Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCiB3YXJuaW5nOiBTa2lwcGluZyBk ZXByZWNhdGVkIC5nZGJfaW5kZXggc2VjdGlvbgogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD05NTM1ODUKIAotZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIv Z2RiL2J1aWxkLWlkLmMKLS0tLSBhL2dkYi9idWlsZC1pZC5jCi0rKysgYi9nZGIvYnVpbGQtaWQu YwotQEAgLTc0Miw3ICs3NDIsMTEgQEAgc3RhdGljIGludCBtaXNzaW5nX3JwbV9saXN0X2VudHJp ZXM7Ci0gLyogUmV0dXJucyB0aGUgY291bnQgb2YgbmV3bHkgYWRkZWQgcnBtcy4gICovCi0gCi0g c3RhdGljIGludAotKyNpZm5kZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5ET1IKLSBtaXNzaW5nX3Jw bV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotKyNlbHNlCi0rbWlzc2luZ19ycG1fZW5s aXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRvcikKLSsjZW5kaWYK LSB7Ci0gICBzdGF0aWMgaW50IHJwbV9pbml0X2RvbmUgPSAwOwotICAgcnBtdHMgdHM7Ci1AQCAt ODQ5LDcgKzg1MywxMSBAQCBtaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1l KQotICAgbWkgPSBycG10c0luaXRJdGVyYXRvcl9wICh0cywgUlBNVEFHX0JBU0VOQU1FUywgZmls ZW5hbWUsIDApOwotICAgaWYgKG1pICE9IE5VTEwpCi0gICAgIHsKLSsjaWZuZGVmIEdEQl9JTkRF WF9WRVJJRllfVkVORE9SCi0gICAgICAgZm9yICg7OykKLSsjZWxzZQotKyAgICAgIGlmICghdmVy aWZ5X3ZlbmRvcikgZm9yICg7OykKLSsjZW5kaWYKLSAJewotIAkgIEhlYWRlciBoOwotIAkgIGNo YXIgKmRlYnVnaW5mbywgKipzbG90LCAqcywgKnMyOwotQEAgLTk2Nyw2ICs5NzUsMzcgQEAgbWlz c2luZ19ycG1fZW5saXN0IChjb25zdCBjaGFyICpmaWxlbmFtZSkKLSAJICAgIHhmcmVlIChkZWJ1 Z2luZm8pOwotIAkgIGNvdW50Kys7Ci0gCX0KLSsjaWZkZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5E T1IKLSsgICAgICBlbHNlIC8qIHZlcmlmeV92ZW5kb3IgKi8KLSsJewotKwkgIGludCB2ZW5kb3Jf cGFzcyA9IDAsIHZlbmRvcl9mYWlsID0gMDsKLSsKLSsJICBmb3IgKDs7KQotKwkgICAgewotKwkg ICAgICBIZWFkZXIgaDsKLSsJICAgICAgZXJybXNnX3QgZXJyOwotKwkgICAgICBjaGFyICp2ZW5k b3I7Ci0rCi0rCSAgICAgIGggPSBycG1kYk5leHRJdGVyYXRvcl9wIChtaSk7Ci0rCSAgICAgIGlm IChoID09IE5VTEwpCi0rCQlicmVhazsKLSsKLSsJICAgICAgdmVuZG9yID0gaGVhZGVyRm9ybWF0 X3AgKGgsICIle3ZlbmRvcn0iLCAmZXJyKTsKLSsJICAgICAgaWYgKCF2ZW5kb3IpCi0rCQl7Ci0r CQkgIHdhcm5pbmcgKF8oIkVycm9yIHF1ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMnOiAlcyIpLCBm aWxlbmFtZSwKLSsJCQkgICBlcnIpOwotKwkJICBjb250aW51ZTsKLSsJCX0KLSsJICAgICAgaWYg KHN0cmNtcCAodmVuZG9yLCAiUmVkIEhhdCwgSW5jLiIpID09IDApCi0rCQl2ZW5kb3JfcGFzcyA9 IDE7Ci0rCSAgICAgIGVsc2UKLSsJCXZlbmRvcl9mYWlsID0gMTsKLSsJICAgICAgeGZyZWUgKHZl bmRvcik7Ci0rCSAgICB9Ci0rCSAgY291bnQgPSB2ZW5kb3JfcGFzcyAhPSAwICYmIHZlbmRvcl9m YWlsID09IDA7Ci0rCX0KLSsjZW5kaWYKLSAKLSAgICAgICBycG1kYkZyZWVJdGVyYXRvcl9wICht aSk7Ci0gICAgIH0KLUBAIC05NzYsNiArMTAxNSwyMCBAQCBtaXNzaW5nX3JwbV9lbmxpc3QgKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQotICAgcmV0dXJuIGNvdW50OwotIH0KLSAKLSsjaWZkZWYgR0RC X0lOREVYX1ZFUklGWV9WRU5ET1IKLSttaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZp bGVuYW1lKQotK3sKLSsgIHJldHVybiBtaXNzaW5nX3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDAp OwotK30KLSsKLStleHRlcm4gaW50IHJwbV92ZXJpZnlfdmVuZG9yIChjb25zdCBjaGFyICpmaWxl bmFtZSk7Ci0raW50Ci0rcnBtX3ZlcmlmeV92ZW5kb3IgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQot K3sKLSsgIHJldHVybiBtaXNzaW5nX3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDEpOwotK30KLSsj ZW5kaWYKLSsKLSBzdGF0aWMgYm9vbAotIG1pc3NpbmdfcnBtX2xpc3RfY29tcGFyIChjb25zdCBj aGFyICphcCwgY29uc3QgY2hhciAqYnApCi0gewogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVh ZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysgYi9n ZGIvZHdhcmYyL3JlYWQuYwotQEAgLTI4MDEsNiArMjgwMSwxNiBAQCByZWFkX2dkYl9pbmRleF9m cm9tX2J1ZmZlciAoY29uc3QgY2hhciAqZmlsZW5hbWUsCitAQCAtMjc5Nyw2ICsyNzk3LDE2IEBA IHJlYWRfZ2RiX2luZGV4X2Zyb21fYnVmZmVyIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAg ICJzZXQgdXNlLWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KICAgIGlmICh2ZXJz aW9uIDwgNiAmJiAhZGVwcmVjYXRlZF9vaykKICAgICAgewpAQCAtMTE1LDcgKzI5LDcgQEAgZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAgICAgICBz dGF0aWMgaW50IHdhcm5pbmdfcHJpbnRlZCA9IDA7CiAgICAgICAgaWYgKCF3YXJuaW5nX3ByaW50 ZWQpCiAgCXsKLUBAIC0yODEyLDYgKzI4MjIsMTAgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdh eS4iKSwKK0BAIC0yODA4LDYgKzI4MTgsMTAgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdheS4i KSwKICAJICB3YXJuaW5nX3ByaW50ZWQgPSAxOwogIAl9CiAgICAgICAgcmV0dXJuIDA7CgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCBjMjk5NjlmLi5lZmFmOTg5IDEwMDY0NAotLS0gYS9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXJwbS5wYXRjaApAQCAtMjMyLDQ1NyArMjMyLDYgQEAgZGlmZiAtLWdpdCBhL2dkYi9hY2xv Y2FsLm00IGIvZ2RiL2FjbG9jYWwubTQKICAjIEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAgCiAgIyBDb3B5 cmlnaHQgKEMpIDIwMDEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLWRpZmYg LS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCi0tLS0gYS9nZGIvYnVpbGQt aWQuYwotKysrIGIvZ2RiL2J1aWxkLWlkLmMKLUBAIC0zMyw2ICszMyw3IEBACi0gI2luY2x1ZGUg ImdkYl9iZmQuaCIKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImdkYmNvcmUuaCIK LSsjaW5jbHVkZSAiaW5mZXJpb3IuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVk ZSAib2JzZXJ2YWJsZS5oIgotICNpbmNsdWRlICJzeW1maWxlLmgiCi1AQCAtNjk3LDggKzY5OCwz NzQgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRfaWQgKmJ1 aWxkX2lkLCBjaGFyICoqbGlua19yZXR1cm4pCi0gICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLSsj aWZkZWYgSEFWRV9MSUJSUE0KLSsKLSsjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgotKyNpbmNsdWRl IDxycG0vcnBtdHMuaD4KLSsjaW5jbHVkZSA8cnBtL3JwbWRiLmg+Ci0rI2luY2x1ZGUgPHJwbS9o ZWFkZXIuaD4KLSsjaWZkZWYgRExPUEVOX0xJQlJQTQotKyNpbmNsdWRlIDxkbGZjbi5oPgotKyNl bmRpZgotKwotKy8qIFRoaXMgTUlTU0lOR19SUE1fSEFTSCB0cmFja2VyIGlzIHVzZWQgdG8gY29s bGVjdCBhbGwgdGhlIG1pc3NpbmcgcnBtIGZpbGVzCi0rICAgYW5kIGF2b2lkIHRoZWlyIGR1cGxp Y2l0aWVzIGR1cmluZyBhIHNpbmdsZSBpbmZlcmlvciBydW4uICAqLwotKwotK3N0YXRpYyBzdHJ1 Y3QgaHRhYiAqbWlzc2luZ19ycG1faGFzaDsKLSsKLSsvKiBUaGlzIE1JU1NJTkdfUlBNX0xJU1Qg dHJhY2tlciBpcyB1c2VkIHRvIGNvbGxlY3QgYW5kIHByaW50IGFzIGEgc2luZ2xlIGxpbmUKLSsg ICBhbGwgdGhlIHJwbXMgcmlnaHQgYmVmb3JlIHRoZSBuZWFyZXN0IEdEQiBwcm9tcHQuICBJdCBn ZXRzIGNsZWFyZWQgYWZ0ZXIKLSsgICBlYWNoIHN1Y2ggcHJpbnQgKGl0IGlzIHF1ZXN0aW9uYWJs ZSBpZiB3ZSBzaG91bGQgY2xlYXIgaXQgYWZ0ZXIgdGhlIHByaW50KS4KLSsgICAqLwotKwotK3N0 cnVjdCBtaXNzaW5nX3JwbQotKyAgewotKyAgICBzdHJ1Y3QgbWlzc2luZ19ycG0gKm5leHQ7Ci0r ICAgIGNoYXIgcnBtWzFdOwotKyAgfTsKLStzdGF0aWMgc3RydWN0IG1pc3NpbmdfcnBtICptaXNz aW5nX3JwbV9saXN0OwotK3N0YXRpYyBpbnQgbWlzc2luZ19ycG1fbGlzdF9lbnRyaWVzOwotKwot Ky8qIFJldHVybnMgdGhlIGNvdW50IG9mIG5ld2x5IGFkZGVkIHJwbXMuICAqLwotKwotK3N0YXRp YyBpbnQKLSttaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsg IHN0YXRpYyBpbnQgcnBtX2luaXRfZG9uZSA9IDA7Ci0rICBycG10cyB0czsKLSsgIHJwbWRiTWF0 Y2hJdGVyYXRvciBtaTsKLSsgIGludCBjb3VudCA9IDA7Ci0rCi0rI2lmZGVmIERMT1BFTl9MSUJS UE0KLSsgIC8qIER1cGxpY2F0ZSBoZXJlIHRoZSBkZWNsYXJhdGlvbnMgdG8gdmVyaWZ5IHRoZXkg bWF0Y2guICBUaGUgc2FtZSBzYW5pdHkKLSsgICAgIGNoZWNrIGlzIHByZXNlbnQgYWxzbyBpbiBg Y29uZmlndXJlLmFjJy4gICovCi0rICBleHRlcm4gY2hhciAqIGhlYWRlckZvcm1hdChIZWFkZXIg aCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3QgKiBlcnJtc2cpOwotKyAgc3RhdGljIGNoYXIg KigqaGVhZGVyRm9ybWF0X3ApIChIZWFkZXIgaCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3Qg KmVycm1zZyk7Ci0rICBleHRlcm4gaW50IHJwbVJlYWRDb25maWdGaWxlcyhjb25zdCBjaGFyICog ZmlsZSwgY29uc3QgY2hhciAqIHRhcmdldCk7Ci0rICBzdGF0aWMgaW50ICgqcnBtUmVhZENvbmZp Z0ZpbGVzX3ApIChjb25zdCBjaGFyICogZmlsZSwgY29uc3QgY2hhciAqIHRhcmdldCk7Ci0rICBl eHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbWRiRnJlZUl0ZXJhdG9yKHJwbWRiTWF0Y2hJdGVy YXRvciBtaSk7Ci0rICBzdGF0aWMgcnBtZGJNYXRjaEl0ZXJhdG9yICgqcnBtZGJGcmVlSXRlcmF0 b3JfcCkgKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rICBleHRlcm4gSGVhZGVyIHJwbWRiTmV4 dEl0ZXJhdG9yKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rICBzdGF0aWMgSGVhZGVyICgqcnBt ZGJOZXh0SXRlcmF0b3JfcCkgKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rICBleHRlcm4gcnBt dHMgcnBtdHNDcmVhdGUodm9pZCk7Ci0rICBzdGF0aWMgcnBtdHMgKCpycG10c0NyZWF0ZV9wKSAo dm9pZCk7Ci0rICBleHRlcm4gcnBtdHMgcnBtdHNGcmVlKHJwbXRzIHRzKTsKLSsgIHN0YXRpYyBy cG10cyAoKnJwbXRzRnJlZV9wKSAocnBtdHMgdHMpOwotKyAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVy YXRvciBycG10c0luaXRJdGVyYXRvcihjb25zdCBycG10cyB0cywgcnBtVGFnIHJwbXRhZywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq IGtleXAsIHNpemVfdCBrZXlsZW4pOwotKyAgc3RhdGljIHJwbWRiTWF0Y2hJdGVyYXRvciAoKnJw bXRzSW5pdEl0ZXJhdG9yX3ApIChjb25zdCBycG10cyB0cywKLSsJCQkJCQkgICAgcnBtVGFnIHJw bXRhZywKLSsJCQkJCQkgICAgY29uc3Qgdm9pZCAqa2V5cCwKLSsJCQkJCQkgICAgc2l6ZV90IGtl eWxlbik7Ci0rI2Vsc2UJLyogIURMT1BFTl9MSUJSUE0gKi8KLSsjIGRlZmluZSBoZWFkZXJGb3Jt YXRfcCBoZWFkZXJGb3JtYXQKLSsjIGRlZmluZSBycG1SZWFkQ29uZmlnRmlsZXNfcCBycG1SZWFk Q29uZmlnRmlsZXMKLSsjIGRlZmluZSBycG1kYkZyZWVJdGVyYXRvcl9wIHJwbWRiRnJlZUl0ZXJh dG9yCi0rIyBkZWZpbmUgcnBtZGJOZXh0SXRlcmF0b3JfcCBycG1kYk5leHRJdGVyYXRvcgotKyMg ZGVmaW5lIHJwbXRzQ3JlYXRlX3AgcnBtdHNDcmVhdGUKLSsjIGRlZmluZSBycG10c0ZyZWVfcCBy cG10c0ZyZWUKLSsjIGRlZmluZSBycG10c0luaXRJdGVyYXRvcl9wIHJwbXRzSW5pdEl0ZXJhdG9y Ci0rI2VuZGlmCS8qICFETE9QRU5fTElCUlBNICovCi0rCi0rICBnZGJfYXNzZXJ0IChmaWxlbmFt ZSAhPSBOVUxMKTsKLSsKLSsgIGlmIChzdHJjbXAgKGZpbGVuYW1lLCBCVUlMRF9JRF9NQUlOX0VY RUNVVEFCTEVfRklMRU5BTUUpID09IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKGlzX3Rh cmdldF9maWxlbmFtZSAoZmlsZW5hbWUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChmaWxl bmFtZVswXSAhPSAnLycpCi0rICAgIHsKLSsgICAgICB3YXJuaW5nIChfKCJJZ25vcmluZyBub24t YWJzb2x1dGUgZmlsZW5hbWU6IDwlcz4iKSwgZmlsZW5hbWUpOwotKyAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rCi0rICBpZiAoIXJwbV9pbml0X2RvbmUpCi0rICAgIHsKLSsgICAgICBzdGF0aWMg aW50IGluaXRfdHJpZWQ7Ci0rCi0rICAgICAgLyogQWxyZWFkeSBmYWlsZWQgdGhlIGluaXRpYWxp emF0aW9uIGJlZm9yZT8gICovCi0rICAgICAgaWYgKGluaXRfdHJpZWQpCi0rICAgICAgICByZXR1 cm4gMDsKLSsgICAgICBpbml0X3RyaWVkID0gMTsKLSsKLSsjaWZkZWYgRExPUEVOX0xJQlJQTQot KyAgICAgIHsKLSsJdm9pZCAqaDsKLSsKLSsJaCA9IGRsb3BlbiAoRExPUEVOX0xJQlJQTSwgUlRM RF9MQVpZKTsKLSsJaWYgKCFoKQotKwkgIHsKLSsJICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBv cGVuIFwiJXNcIiAoJXMpLCAiCi0rCQkgICAgICAibWlzc2luZyBkZWJ1Z2luZm9zIG5vdGlmaWNh dGlvbnMgd2lsbCBub3QgYmUgZGlzcGxheWVkIiksCi0rCQkgICAgIERMT1BFTl9MSUJSUE0sIGRs ZXJyb3IgKCkpOwotKwkgICAgcmV0dXJuIDA7Ci0rCSAgfQotKwotKwlpZiAoISgoaGVhZGVyRm9y bWF0X3AgPSAoY2hhciAqKCopIChIZWFkZXIgaCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3Qg KmVycm1zZykpIGRsc3ltIChoLCAiaGVhZGVyRm9ybWF0IikpCi0rCSAgICAgICYmIChycG1SZWFk Q29uZmlnRmlsZXNfcCA9IChpbnQgKCopIChjb25zdCBjaGFyICogZmlsZSwgY29uc3QgY2hhciAq IHRhcmdldCkpIGRsc3ltIChoLCAicnBtUmVhZENvbmZpZ0ZpbGVzIikpCi0rCSAgICAgICYmIChy cG1kYkZyZWVJdGVyYXRvcl9wID0gKHJwbWRiTWF0Y2hJdGVyYXRvciAoKikgKHJwbWRiTWF0Y2hJ dGVyYXRvciBtaSkpIGRsc3ltIChoLCAicnBtZGJGcmVlSXRlcmF0b3IiKSkKLSsJICAgICAgJiYg KHJwbWRiTmV4dEl0ZXJhdG9yX3AgPSAoSGVhZGVyICgqKSAocnBtZGJNYXRjaEl0ZXJhdG9yIG1p KSkgZGxzeW0gKGgsICJycG1kYk5leHRJdGVyYXRvciIpKQotKwkgICAgICAmJiAocnBtdHNDcmVh dGVfcCA9IChycG10cyAoKikgKHZvaWQpKSBkbHN5bSAoaCwgInJwbXRzQ3JlYXRlIikpCi0rCSAg ICAgICYmIChycG10c0ZyZWVfcCA9IChycG10cyAoKikgKHJwbXRzIHRzKSkgZGxzeW0gKGgsICJy cG10c0ZyZWUiKSkKLSsJICAgICAgJiYgKHJwbXRzSW5pdEl0ZXJhdG9yX3AgPSAocnBtZGJNYXRj aEl0ZXJhdG9yICgqKSAoY29uc3QgcnBtdHMgdHMsIHJwbVRhZyBycG10YWcsIGNvbnN0IHZvaWQg KmtleXAsIHNpemVfdCBrZXlsZW4pKSBkbHN5bSAoaCwgInJwbXRzSW5pdEl0ZXJhdG9yIikpKSkK LSsJICB7Ci0rCSAgICB3YXJuaW5nIChfKCJPcGVuZWQgbGlicmFyeSBcIiVzXCIgaXMgaW5jb21w YXRpYmxlICglcyksICIKLSsJCSAgICAgICJtaXNzaW5nIGRlYnVnaW5mb3Mgbm90aWZpY2F0aW9u cyB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQiKSwKLSsJCSAgICAgRExPUEVOX0xJQlJQTSwgZGxlcnJv ciAoKSk7Ci0rCSAgICBpZiAoZGxjbG9zZSAoaCkpCi0rCSAgICAgIHdhcm5pbmcgKF8oIkVycm9y IGNsb3NpbmcgbGlicmFyeSBcIiVzXCI6ICVzXG4iKSwgRExPUEVOX0xJQlJQTSwKLSsJCSAgICAg ICBkbGVycm9yICgpKTsKLSsJICAgIHJldHVybiAwOwotKwkgIH0KLSsgICAgICB9Ci0rI2VuZGlm CS8qIERMT1BFTl9MSUJSUE0gKi8KLSsKLSsgICAgICBpZiAocnBtUmVhZENvbmZpZ0ZpbGVzX3Ag KE5VTEwsIE5VTEwpICE9IDApCi0rCXsKLSsJICB3YXJuaW5nIChfKCJFcnJvciByZWFkaW5nIHRo ZSBycG0gY29uZmlndXJhdGlvbiBmaWxlcyIpKTsKLSsJICByZXR1cm4gMDsKLSsJfQotKwotKyAg ICAgIHJwbV9pbml0X2RvbmUgPSAxOwotKyAgICB9Ci0rCi0rICB0cyA9IHJwbXRzQ3JlYXRlX3Ag KCk7Ci0rCi0rICBtaSA9IHJwbXRzSW5pdEl0ZXJhdG9yX3AgKHRzLCBSUE1UQUdfQkFTRU5BTUVT LCBmaWxlbmFtZSwgMCk7Ci0rICBpZiAobWkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGZvciAo OzspCi0rCXsKLSsJICBIZWFkZXIgaDsKLSsJICBjaGFyICpkZWJ1Z2luZm8sICoqc2xvdCwgKnMs ICpzMjsKLSsJICBlcnJtc2dfdCBlcnI7Ci0rCSAgc2l6ZV90IHNyY3JwbWxlbiA9IHNpemVvZiAo Ii5zcmMucnBtIikgLSAxOwotKwkgIHNpemVfdCBkZWJ1Z2luZm9sZW4gPSBzaXplb2YgKCItZGVi dWdpbmZvIikgLSAxOwotKwkgIHJwbWRiTWF0Y2hJdGVyYXRvciBtaV9kZWJ1Z2luZm87Ci0rCi0r CSAgaCA9IHJwbWRiTmV4dEl0ZXJhdG9yX3AgKG1pKTsKLSsJICBpZiAoaCA9PSBOVUxMKQotKwkg ICAgYnJlYWs7Ci0rCi0rCSAgLyogVmVyaWZ5IHRoZSBkZWJ1Z2luZm8gZmlsZSBpcyBub3QgYWxy ZWFkeSBpbnN0YWxsZWQuICAqLwotKwotKwkgIGRlYnVnaW5mbyA9IGhlYWRlckZvcm1hdF9wICho LCAiJXtzb3VyY2VycG19LWRlYnVnaW5mby4le2FyY2h9IiwKLSsJCQkJICAgICAgJmVycik7Ci0r CSAgaWYgKCFkZWJ1Z2luZm8pCi0rCSAgICB7Ci0rCSAgICAgIHdhcm5pbmcgKF8oIkVycm9yIHF1 ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMnOiAlcyIpLCBmaWxlbmFtZSwKLSsJICAgICAgICAgICAg ICAgZXJyKTsKLSsJICAgICAgY29udGludWU7Ci0rCSAgICB9Ci0rCSAgLyogcyA9IGAuc3JjLnJw bS1kZWJ1Z2luZm8uJXthcmNofScgKi8KLSsJICBzID0gc3RycmNociAoZGVidWdpbmZvLCAnLScp IC0gc3JjcnBtbGVuOwotKwkgIHMyID0gTlVMTDsKLSsJICBpZiAocyA+IGRlYnVnaW5mbyAmJiBt ZW1jbXAgKHMsICIuc3JjLnJwbSIsIHNyY3JwbWxlbikgPT0gMCkKLSsJICAgIHsKLSsJICAgICAg LyogczIgPSBgLSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KLSsJICAg ICAgczIgPSAoY2hhciAqKSBtZW1yY2hyIChkZWJ1Z2luZm8sICctJywgcyAtIGRlYnVnaW5mbyk7 Ci0rCSAgICB9Ci0rCSAgaWYgKHMyKQotKwkgICAgewotKwkgICAgICAvKiBzMiA9IGAtJXt2ZXJz aW9ufS0le3JlbGVhc2V9LnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgICAgIHMy ID0gKGNoYXIgKikgbWVtcmNociAoZGVidWdpbmZvLCAnLScsIHMyIC0gZGVidWdpbmZvKTsKLSsJ ICAgIH0KLSsJICBpZiAoIXMyKQotKwkgICAgewotKwkgICAgICB3YXJuaW5nIChfKCJFcnJvciBx dWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCSAgICAgICAgICAg ICAgIGRlYnVnaW5mbyk7Ci0rCSAgICAgIHhmcmVlIChkZWJ1Z2luZm8pOwotKwkgICAgICBjb250 aW51ZTsKLSsJICAgIH0KLSsJICAvKiBzID0gYC5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAq LwotKwkgIC8qIHMyID0gYC0le3ZlcnNpb259LSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8u JXthcmNofScgKi8KLSsJICBtZW1tb3ZlIChzMiArIGRlYnVnaW5mb2xlbiwgczIsIHMgLSBzMik7 Ci0rCSAgbWVtY3B5IChzMiwgIi1kZWJ1Z2luZm8iLCBkZWJ1Z2luZm9sZW4pOwotKwkgIC8qIHMg PSBgWFhYWC4le2FyY2h9JyAqLwotKwkgIC8qIHN0cmxlbiAoIlhYWFgiKSA9PSBzcmNycG1sZW4g KyBkZWJ1Z2luZm9sZW4gKi8KLSsJICAvKiBzMiA9IGAtZGVidWdpbmZvLSV7dmVyc2lvbn0tJXty ZWxlYXNlfVhYLiV7YXJjaH0nICovCi0rCSAgLyogc3RybGVuICgiWFgiKSA9PSBzcmNycG1sZW4g Ki8KLSsJICBtZW1tb3ZlIChzICsgZGVidWdpbmZvbGVuLCBzICsgc3JjcnBtbGVuICsgZGVidWdp bmZvbGVuLAotKwkJICAgc3RybGVuIChzICsgc3JjcnBtbGVuICsgZGVidWdpbmZvbGVuKSArIDEp OwotKwkgIC8qIHMgPSBgLWRlYnVnaW5mby0le3ZlcnNpb259LSV7cmVsZWFzZX0uJXthcmNofScg Ki8KLSsKLSsJICAvKiBSUE1EQklfUEFDS0FHRVMgcmVxdWlyZXMga2V5bGVuID09IHNpemVvZiAo aW50KS4gICovCi0rCSAgLyogUlBNREJJX0xBQkVMIGlzIGFuIGludGVyZmFjZSBmb3IgTlZSLWJh c2VkIGRiaUZpbmRCeUxhYmVsKCkuICAqLwotKwkgIG1pX2RlYnVnaW5mbyA9IHJwbXRzSW5pdEl0 ZXJhdG9yX3AgKHRzLCAocnBtVGFnKSBSUE1EQklfTEFCRUwsIGRlYnVnaW5mbywgMCk7Ci0rCSAg eGZyZWUgKGRlYnVnaW5mbyk7Ci0rCSAgaWYgKG1pX2RlYnVnaW5mbykKLSsJICAgIHsKLSsJICAg ICAgcnBtZGJGcmVlSXRlcmF0b3JfcCAobWlfZGVidWdpbmZvKTsKLSsJICAgICAgY291bnQgPSAw OwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsKLSsJICAvKiBUaGUgYWxsb2NhdGVkIG1lbW9y eSBnZXRzIHV0aWxpemVkIGJlbG93IGZvciBNSVNTSU5HX1JQTV9IQVNILiAgKi8KLSsJICBkZWJ1 Z2luZm8gPSBoZWFkZXJGb3JtYXRfcCAoaCwKLSsJCQkJICAgICAgIiV7bmFtZX0tJXt2ZXJzaW9u fS0le3JlbGVhc2V9LiV7YXJjaH0iLAotKwkJCQkgICAgICAmZXJyKTsKLSsJICBpZiAoIWRlYnVn aW5mbykKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJw bSBmaWxlIGAlcyc6ICVzIiksIGZpbGVuYW1lLAotKwkgICAgICAgICAgICAgICBlcnIpOwotKwkg ICAgICBjb250aW51ZTsKLSsJICAgIH0KLSsKLSsJICAvKiBCYXNlIHBhY2thZ2UgbmFtZSBmb3Ig YGRlYnVnaW5mby1pbnN0YWxsJy4gIFdlIGRvIG5vdCB1c2UgdGhlCi0rCSAgICAgYHl1bScgY29t bWFuZCBkaXJlY3RseSBhcyB0aGUgbGluZQotKwkJIHl1bSAtLWVuYWJsZXJlcG89JypkZWJ1Zyon IGluc3RhbGwgTkFNRS1kZWJ1Z2luZm8uQVJDSAotKwkgICAgIHdvdWxkIGJlIG1vcmUgY29tcGxp Y2F0ZWQgdGhhbiBqdXN0OgotKwkJIGRlYnVnaW5mby1pbnN0YWxsIE5BTUUtVkVSU0lPTi1SRUxF QVNFLkFSQ0gKLSsJICAgICBEbyBub3Qgc3VwcGx5IHRoZSBycG0gYmFzZSBuYW1lIChkZXJpdmVk IGZyb20gLnNyYy5ycG0gbmFtZSkgYXMKLSsJICAgICBkZWJ1Z2luZm8taW5zdGFsbCBpcyB1bmFi bGUgdG8gaW5zdGFsbCB0aGUgZGVidWdpbmZvIHBhY2thZ2UgaWYKLSsJICAgICB0aGUgYmFzZSBu YW1lIFBLRyBiaW5hcnkgcnBtIGlzIG5vdCBpbnN0YWxsZWQgd2hpbGUgZm9yIGV4YW1wbGUKLSsJ ICAgICBQS0ctbGlicyB3b3VsZCBiZSBpbnN0YWxsZWQgKFJIIEJ1ZyA0Njc5MDEpLgotKwkgICAg IEZVVFVSRTogQWZ0ZXIgbXVsdGlwbGUgZGVidWdpbmZvIHZlcnNpb25zIHNpbXVsdGFuZW91c2x5 IGluc3RhbGxlZAotKwkgICAgIGdldCBzdXBwb3J0ZWQgdGhlIHN1cHBvcnQgZm9yIHRoZSBWRVJT SU9OLVJFTEVBU0UgdGFncyBoYW5kbGluZwotKwkgICAgIG1heSBuZWVkIGFuIHVwZGF0ZS4gICov Ci0rCi0rCSAgaWYgKG1pc3NpbmdfcnBtX2hhc2ggPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAg LyogREVMX0YgaXMgcGFzc2VkIE5VTEwgYXMgTUlTU0lOR19SUE1fTElTVCdzIEhUQUJfREVMRVRF Ci0rCQkgc2hvdWxkIG5vdCBkZWFsbG9jYXRlIHRoZSBlbnRyaWVzLiAgKi8KLSsKLSsJICAgICAg bWlzc2luZ19ycG1faGFzaCA9IGh0YWJfY3JlYXRlX2FsbG9jICg2NCwgaHRhYl9oYXNoX3N0cmlu ZywKLSsJCQkgICAgICAgKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgc3Ry ZXEsCi0rCQkJCQkJICAgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsKLSsJICAgIH0KLSsJICBzbG90 ID0gKGNoYXIgKiopIGh0YWJfZmluZF9zbG90IChtaXNzaW5nX3JwbV9oYXNoLCBkZWJ1Z2luZm8s IElOU0VSVCk7Ci0rCSAgLyogWENBTExPQyBuZXZlciByZXR1cm5zIE5VTEwuICAqLwotKwkgIGdk Yl9hc3NlcnQgKHNsb3QgIT0gTlVMTCk7Ci0rCSAgaWYgKCpzbG90ID09IE5VTEwpCi0rCSAgICB7 Ci0rCSAgICAgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbWlzc2luZ19ycG07Ci0rCi0rCSAgICAgICpz bG90ID0gZGVidWdpbmZvOwotKwotKwkgICAgICBtaXNzaW5nX3JwbSA9IChzdHJ1Y3QgbWlzc2lu Z19ycG0gKikgeG1hbGxvYyAoc2l6ZW9mICgqbWlzc2luZ19ycG0pICsgc3RybGVuIChkZWJ1Z2lu Zm8pKTsKLSsJICAgICAgc3RyY3B5IChtaXNzaW5nX3JwbS0+cnBtLCBkZWJ1Z2luZm8pOwotKwkg ICAgICBtaXNzaW5nX3JwbS0+bmV4dCA9IG1pc3NpbmdfcnBtX2xpc3Q7Ci0rCSAgICAgIG1pc3Np bmdfcnBtX2xpc3QgPSBtaXNzaW5nX3JwbTsKLSsJICAgICAgbWlzc2luZ19ycG1fbGlzdF9lbnRy aWVzKys7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgeGZyZWUgKGRlYnVnaW5mbyk7Ci0rCSAg Y291bnQrKzsKLSsJfQotKwotKyAgICAgIHJwbWRiRnJlZUl0ZXJhdG9yX3AgKG1pKTsKLSsgICAg fQotKwotKyAgcnBtdHNGcmVlX3AgKHRzKTsKLSsKLSsgIHJldHVybiBjb3VudDsKLSt9Ci0rCi0r c3RhdGljIGJvb2wKLSttaXNzaW5nX3JwbV9saXN0X2NvbXBhciAoY29uc3QgY2hhciAqYXAsIGNv bnN0IGNoYXIgKmJwKQotK3sKLSsgIHJldHVybiBzdHJjb2xsIChhcCwgYnApIDwgMDsKLSt9Ci0r Ci0rLyogSXQgcmV0dXJucyBhIE5VTEwtdGVybWluYXRlZCBhcnJheSBvZiBzdHJpbmdzIG5lZWRp bmcgdG8gYmUgRlJFRWQuICBJdCBtYXkKLSsgICBhbHNvIHJldHVybiBvbmx5IE5VTEwuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rbWlzc2luZ19ycG1fbGlzdF9wcmludCAodm9pZCkKLSt7Ci0rICBz dHJ1Y3QgbWlzc2luZ19ycG0gKmxpc3RfaXRlcjsKLSsKLSsgIGlmIChtaXNzaW5nX3JwbV9saXN0 X2VudHJpZXMgPT0gMCkKLSsgICAgcmV0dXJuOwotKwotKyAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hh ciAqPiBhcnJheSAobWlzc2luZ19ycG1fbGlzdF9lbnRyaWVzKTsKLSsgIHNpemVfdCBpZHggPSAw OwotKwotKyAgZm9yIChsaXN0X2l0ZXIgPSBtaXNzaW5nX3JwbV9saXN0OyBsaXN0X2l0ZXIgIT0g TlVMTDsKLSsgICAgICAgbGlzdF9pdGVyID0gbGlzdF9pdGVyLT5uZXh0KQotKyAgICB7Ci0rICAg ICAgYXJyYXlbaWR4KytdID0gbGlzdF9pdGVyLT5ycG07Ci0rICAgIH0KLSsgIGdkYl9hc3NlcnQg KGlkeCA9PSBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMpOwotKwotKyAgc3RkOjpzb3J0IChhcnJh eS5iZWdpbiAoKSwgYXJyYXkuZW5kICgpLCBtaXNzaW5nX3JwbV9saXN0X2NvbXBhcik7Ci0rCi0r ICAvKiBXZSB6ZXJvIG91dCB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgUlBNcyBoZXJlIGJlY2F1c2Ug b2YgYSBuYXN0eQotKyAgICAgYnVnIChzZWUgUkhCWiAxODAxOTc0KS4KLSsKLSsgICAgIFdoZW4g d2UgY2FsbCAncHV0c191bmZpbHRlcmVkJyBiZWxvdywgaWYgcGFnaW5hdGlvbiBpcyBvbiBhbmQg aWYKLSsgICAgIHRoZSBudW1iZXIgb2YgbWlzc2luZyBSUE1zIGlzIGJpZyBlbm91Z2ggdG8gdHJp Z2dlciBwYWdpbmF0aW9uLAotKyAgICAgd2Ugd2lsbCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgcmVj dXJzaW9uLiAgVGhlIGNhbGwgY2hhaW4gbG9va3MKLSsgICAgIGxpa2UgdGhpczoKLSsKLSsgICAg IG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQgLT4gcHV0c191bmZpbHRlcmVkIC0+IGZwdXRzX21heWJl X2ZpbHRlcmVkCi0rICAgICAtPiBwcm9tcHRfZm9yX2NvbnRpbnVlIC0+IGRpc3BsYXlfZ2RiX3By b21wdCAtPgotKyAgICAgZGVidWdfZmx1c2hfbWlzc2luZyAtPiBtaXNzaW5nX3JwbV9saXN0X3By aW50IC4uLgotKwotKyAgICAgRm9yIHRoaXMgcmVhc29uLCB3ZSBtYWtlIHN1cmUgTUlTU0lOR19S UE1fTElTVF9FTlRSSUVTIGlzIHplcm8KLSsgICAgICpiZWZvcmUqIGNhbGxpbmcgYW55IHByaW50 IGZ1bmN0aW9uLiAgKi8KLSsgIG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyA9IDA7Ci0rCi0rICBw cmludGZfdW5maWx0ZXJlZCAoXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm9zLCB1c2U6ICVz IiksCi0rI2lmZGVmIERORl9ERUJVR0lORk9fSU5TVEFMTAotKwkJICAgICAiZG5mICIKLSsjZW5k aWYKLSsJCSAgICAgImRlYnVnaW5mby1pbnN0YWxsIik7Ci0rICBmb3IgKGNvbnN0IGNoYXIgKmVs IDogYXJyYXkpCi0rICAgIHsKLSsgICAgICBwdXRzX3VuZmlsdGVyZWQgKCIgIik7Ci0rICAgICAg cHV0c191bmZpbHRlcmVkIChlbCk7Ci0rICAgIH0KLSsgIHB1dHNfdW5maWx0ZXJlZCAoIlxuIik7 Ci0rCi0rICB3aGlsZSAobWlzc2luZ19ycG1fbGlzdCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAg bGlzdF9pdGVyID0gbWlzc2luZ19ycG1fbGlzdDsKLSsgICAgICBtaXNzaW5nX3JwbV9saXN0ID0g bGlzdF9pdGVyLT5uZXh0OwotKyAgICAgIHhmcmVlIChsaXN0X2l0ZXIpOwotKyAgICB9Ci0rfQot KwotK3N0YXRpYyB2b2lkCi0rbWlzc2luZ19ycG1fY2hhbmdlICh2b2lkKQotK3sKLSsgIGRlYnVn X2ZsdXNoX21pc3NpbmcgKCk7Ci0rCi0rICBnZGJfYXNzZXJ0IChtaXNzaW5nX3JwbV9saXN0ID09 IE5VTEwpOwotKyAgaWYgKG1pc3NpbmdfcnBtX2hhc2ggIT0gTlVMTCkKLSsgICAgewotKyAgICAg IGh0YWJfZGVsZXRlIChtaXNzaW5nX3JwbV9oYXNoKTsKLSsgICAgICBtaXNzaW5nX3JwbV9oYXNo ID0gTlVMTDsKLSsgICAgfQotK30KLSsKLStlbnVtIG1pc3NpbmdfZXhlYwotKyAgewotKyAgICAv KiBJbml0IHN0YXRlLiAgRVhFQ19CRkQgYWxzbyBzdGlsbCBjb3VsZCBiZSBOVUxMLiAgKi8KLSsg ICAgTUlTU0lOR19FWEVDX05PVF9UUklFRCwKLSsgICAgLyogV2Ugc2F3IGEgbm9uLU5VTEwgRVhF Q19CRkQgYnV0IFJQTSBoYXMgbm8gaW5mbyBhYm91dCBpdC4gICovCi0rICAgIE1JU1NJTkdfRVhF Q19OT1RfRk9VTkQsCi0rICAgIC8qIFdlIGZvdW5kIEVYRUNfQkZEIGJ5IFJQTSBhbmQgd2UgZWl0 aGVyIGhhdmUgaXRzIHN5bWJvbHMgKGVpdGhlciBlbWJlZGRlZAotKyAgICAgICBvciBzZXBhcmF0 ZSkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZSdzIFJQTSBpcyBub3cgY29udGFpbmVkIGluCi0rICAg ICAgIE1JU1NJTkdfUlBNX0hBU0guICAqLwotKyAgICBNSVNTSU5HX0VYRUNfRU5MSVNURUQKLSsg IH07Ci0rc3RhdGljIGVudW0gbWlzc2luZ19leGVjIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhF Q19OT1RfVFJJRUQ7Ci0rCi0rI2VuZGlmCS8qIEhBVkVfTElCUlBNICovCi0rCi0rdm9pZAotK2Rl YnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpCi0rewotKyNpZmRlZiBIQVZFX0xJQlJQTQotKyAgbWlz c2luZ19ycG1fbGlzdF9wcmludCAoKTsKLSsjZW5kaWYKLSt9Ci0rCi0gLyogVGhpcyBNSVNTSU5H X0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9ubHkgZm9yIHRoZSBkdXBsaWNpdGUgbWVz c2FnZXMKLS0gICAgIFRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUgLi4uCi0rICAgICB5dW0g LS1lbmFibGVyZXBvPScqZGVidWcqJyBpbnN0YWxsIC4uLgotICAgIGF2b2lkYW5jZS4gICovCi0g Ci0gc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKLUBAIC03NTIsMTEgKzExMTksMTcgQEAgbWlzc2lu Z19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCi0gICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1l IGp1c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwotICAgICAgIG1pc3Npbmdf ZmlsZXBhaXJfaGFzaCA9IE5VTEw7Ci0gICAgIH0KLSsjaWZkZWYgSEFWRV9MSUJSUE0KLSsgIG1p c3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7Ci0rI2VuZGlmCi0gfQotIAotIHN0 YXRpYyB2b2lkCi0gZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkICh2b2lkKQotIHsKLSsj aWZkZWYgSEFWRV9MSUJSUE0KLSsgIG1pc3NpbmdfcnBtX2NoYW5nZSAoKTsKLSsjZW5kaWYKLSAg IG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwotIH0KLSAKLUBAIC04MjMsMTQgKzExOTYsMzgg QEAgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpk ZWJ1ZykKLSAKLSAgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsKLSAKLS0gIC8qIFdlIGRvIG5v dCBjb2xsZWN0IGFuZCBmbHVzaCB0aGVzZSBtZXNzYWdlcyBhcyBlYWNoIHN1Y2ggbWVzc2FnZQot LSAgICAgYWxyZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAgKi8KLSsjaWZk ZWYgSEFWRV9MSUJSUE0KLSsgIGlmIChtaXNzaW5nX2V4ZWMgPT0gTUlTU0lOR19FWEVDX05PVF9U UklFRCkKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmV4ZWNmaWxlbmFtZSA9IGdldF9leGVj X2ZpbGUgKDApOwotIAotLSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJICAg ICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzXG4iKSwgYmluYXJ5KTsKLS0g IGlmIChkZWJ1ZyAhPSBOVUxMKQotLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs IF8oIlRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUgJXNcbiIpLAotLQkJCWRlYnVnKTsKLSsg ICAgICBpZiAoZXhlY2ZpbGVuYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobWlzc2luZ19ycG1f ZW5saXN0IChleGVjZmlsZW5hbWUpID09IDApCi0rCSAgICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5H X0VYRUNfTk9UX0ZPVU5EOwotKwkgIGVsc2UKLSsJICAgIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdf RVhFQ19FTkxJU1RFRDsKLSsJfQotKyAgICB9Ci0rICBpZiAobWlzc2luZ19leGVjICE9IE1JU1NJ TkdfRVhFQ19FTkxJU1RFRCkKLSsgICAgaWYgKChiaW5hcnlbMF0gPT0gMCB8fCBtaXNzaW5nX3Jw bV9lbmxpc3QgKGJpbmFyeSkgPT0gMCkKLSsJJiYgKGRlYnVnID09IE5VTEwgfHwgbWlzc2luZ19y cG1fZW5saXN0IChkZWJ1ZykgPT0gMCkpCi0rI2VuZGlmCS8qIEhBVkVfTElCUlBNICovCi0rICAg ICAgewotKwkvKiBXZSBkbyBub3QgY29sbGVjdCBhbmQgZmx1c2ggdGhlc2UgbWVzc2FnZXMgYXMg ZWFjaCBzdWNoIG1lc3NhZ2UKLSsJICAgYWxyZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRl IGxpbmVzLiAgKi8KLSsKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAg ICBfKCJNaXNzaW5nIHNlcGFyYXRlIGRlYnVnaW5mbyBmb3IgJXNcbiIpLCBiaW5hcnkpOwotKyAg ICAgICAgaWYgKGRlYnVnICE9IE5VTEwpCi0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLCBfKCJUcnk6ICVzICVzXG4iKSwKLSsjaWZkZWYgRE5GX0RFQlVHSU5GT19JTlNUQUxMCi0r CQkJICAgICAgImRuZiIKLSsjZWxzZQotKwkJCSAgICAgICJ5dW0iCi0rI2VuZGlmCi0rCQkJICAg ICAgIiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwiLCBkZWJ1Zyk7Ci0rICAgICAgfQot IH0KLSAKLSAvKiBTZWUgYnVpbGQtaWQuaC4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5p biBiL2dkYi9jb25maWcuaW4KIC0tLSBhL2dkYi9jb25maWcuaW4KICsrKyBiL2dkYi9jb25maWcu aW4KQEAgLTY5Niw3ICsyNDUsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5pbiBiL2dkYi9j b25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3Nh Z2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwog ICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjUwLDYgKzI1Myw5IEBACitAQCAtMjU5LDYgKzI2Miw5 IEBACiAgLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtcGZyIGxpYnJhcnkuICovCiAgI3VuZGVm IEhBVkVfTElCTVBGUgogIApAQCAtNzA5LDkgKzI1OCw5IEBAIGRpZmYgLS1naXQgYS9nZGIvY29u ZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIv Y29uZmlndXJlCiAtLS0gYS9nZGIvY29uZmlndXJlCiArKysgYi9nZGIvY29uZmlndXJlCi1AQCAt NzcxLDYgKzc3MSwxMSBAQCBQS0dfQ09ORklHCi0gSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUCi0g VEFSR0VUX09CUworQEAgLTc3NSw2ICs3NzUsMTEgQEAgVEFSR0VUX09CUworIEVOQUJMRV9CRkRf NjRfQklUX0ZBTFNFCisgRU5BQkxFX0JGRF82NF9CSVRfVFJVRQogIHN1YmRpcnMKICtSUE1fTElC UwogK1JQTV9DRkxBR1MKQEAgLTcyMSw3ICsyNzAsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZp Z3VyZSBiL2dkYi9jb25maWd1cmUKICBHREJfREFUQURJUgogIERFQlVHRElSCiAgTUFLRUlORk9f RVhUUkFfRkxBR1MKLUBAIC04NzYsNiArODgxLDcgQEAgd2l0aF9nZGJfZGF0YWRpcgorQEAgLTg4 MCw2ICs4ODUsNyBAQCB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwog IHdpdGhfYXV0b19sb2FkX2RpcgogIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aApAQCAtNzI5LDcg KzI3OCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogIGVu YWJsZV90YXJnZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RibWkKLUBAIC05NTMs NiArOTU5LDggQEAgUEtHX0NPTkZJR19QQVRICitAQCAtOTU5LDYgKzk2NSw4IEBAIFBLR19DT05G SUdfUEFUSAogIFBLR19DT05GSUdfTElCRElSCiAgREVCVUdJTkZPRF9DRkxBR1MKICBERUJVR0lO Rk9EX0xJQlMKQEAgLTczOCw3ICsyODcsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBi L2dkYi9jb25maWd1cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTYyNSw2ICsxNjMz LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTYzNSw2ICsxNjQzLDggQEAgT3B0aW9uYWwg UGFja2FnZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0 by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCiAgICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFi bGUgZGVidWdpbmZvIGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYXV0by95ZXMvbm8pCkBAIC03NDcsNyArMjk2LDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53aW5kLWlhNjQgICB1 c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBmb3IgaWE2NCB0YXJnZXRzCiAgICAtLXdpdGgt Y3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRl cm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNzA1LDYgKzE3 MTUsOCBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0xNzE1 LDYgKzE3MjUsOCBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAg ICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIERFQlVHSU5GT0QsIG92ZXJyaWRpbmcg cGtnLWNvbmZpZwogICAgREVCVUdJTkZPRF9MSUJTCiAgICAgICAgICAgICAgICBsaW5rZXIgZmxh Z3MgZm9yIERFQlVHSU5GT0QsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwpAQCAtNzU2LDcgKzMwNSw3 IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAg ICAgICAgVGhlIGBZZXQgQW5vdGhlciBDb21waWxlciBDb21waWxlcicgaW1wbGVtZW50YXRpb24g dG8gdXNlLgogICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0gZm91 bmQgb3V0IG9mOiBgYmlzb24gLXknLCBgYnlhY2MnLAogICAgICAgICAgICAgICAgYHlhY2MnLgot QEAgLTY2MjQsNiArNjYzNiw0OTQgQEAgX0FDRU9GCitAQCAtNjYzNCw2ICs2NjQ2LDQ5NCBAQCBf QUNFT0YKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1CiAgJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgiID4mNjsgfQogIApAQCAtMTQ1NywxNSArMTAwNiwxNSBAQCBkaWZmIC0tZ2l0 IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKIGRpZmYgLS1naXQgYS9nZGIv ZXZlbnQtdG9wLmMgYi9nZGIvZXZlbnQtdG9wLmMKIC0tLSBhL2dkYi9ldmVudC10b3AuYwogKysr IGIvZ2RiL2V2ZW50LXRvcC5jCi1AQCAtNDEsNiArNDEsNyBAQAotICNpbmNsdWRlICJnZGJzdXBw b3J0L2dkYl9zZWxlY3QuaCIKK0BAIC00Miw2ICs0Miw3IEBACiAgI2luY2x1ZGUgImdkYnN1cHBv cnQvZ2RiLXNpZ21hc2suaCIKICAjaW5jbHVkZSAiYXN5bmMtZXZlbnQuaCIKKyAjaW5jbHVkZSAi YnQtdXRpbHMuaCIKICsjaW5jbHVkZSAic3ltZmlsZS5oIgogIAogIC8qIHJlYWRsaW5lIGluY2x1 ZGUgZmlsZXMuICAqLwogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTM2Myw2 ICszNjQsOCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQgKGNvbnN0IGNoYXIgKm5ld19wcm9tcHQpCitA QCAtMzc0LDYgKzM3NSw4IEBAIGRpc3BsYXlfZ2RiX3Byb21wdCAoY29uc3QgY2hhciAqbmV3X3By b21wdCkKICAgIC8qIFJlc2V0IHRoZSBuZXN0aW5nIGRlcHRoIHVzZWQgd2hlbiB0cmFjZS1jb21t YW5kcyBpcyBzZXQuICAqLwogICAgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICgpOwogIApAQCAt MTQ3NCw3ICsxMDIzLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9ldmVudC10b3AuYyBiL2dkYi9ldmVu dC10b3AuYwogICAgLyogRG8gbm90IGNhbGwgdGhlIHB5dGhvbiBob29rIG9uIGFuIGV4cGxpY2l0 IHByb21wdCBjaGFuZ2UgYXMKICAgICAgIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCBhcyB0aGlz IGZvcm1zIGEgc2Vjb25kYXJ5L2xvY2FsIHByb21wdCwKICAgICAgIElFLCBkaXNwbGF5ZWQgYnV0 IG5vdCBzZXQuICAqLwotQEAgLTc3Myw3ICs3NzYsMTAgQEAgY29tbWFuZF9saW5lX2hhbmRsZXIg KGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+ICYmcmwpCitAQCAtODAwLDcgKzgwMywxMCBA QCBjb21tYW5kX2xpbmVfaGFuZGxlciAoZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gJiZy bCkKICAgICAgICBjb21tYW5kX2hhbmRsZXIgKGNtZCk7CiAgCiAgICAgICAgaWYgKHVpLT5wcm9t cHRfc3RhdGUgIT0gUFJPTVBURUQpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWIt bWlzc2luZy1pZHMucGF0Y2gKaW5kZXggN2RkNGZiMS4uZGY0NTMxOSAxMDA2NDQKLS0tIGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaAorKysgYi9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3NpbmctaWRzLnBhdGNoCkBAIC0xNCw3ICsxNCw3IEBA IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTMzOTg2MgogZGlm ZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCiAtLS0gYS9nZGIv c29saWItc3ZyNC5jCiArKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAtMTM1MCwxNCArMTM1MCwy OCBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0sIENP UkVfQUREUiBwcmV2X2xtLAorQEAgLTEyNTAsMTQgKzEyNTAsMjggQEAgc3ZyNF9yZWFkX3NvX2xp c3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKICAJ fQogIAogICAgICAgIHsKQEAgLTQ1LDcgKzQ1LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1z dnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCiAgCWlmIChidWlsZF9pZCAhPSBOVUxMKQogIAkgIHsK ICAJICAgIGNoYXIgKm5hbWUsICpidWlsZF9pZF9maWxlbmFtZTsKLUBAIC0xMzcyLDIzICsxMzg2 LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBD T1JFX0FERFIgcHJldl9sbSwKK0BAIC0xMjcyLDIzICsxMjg2LDcgQEAgc3ZyNF9yZWFkX3NvX2xp c3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKICAJ CXhmcmVlIChuYW1lKTsKICAJICAgICAgfQogIAkgICAgZWxzZQoKZGlmZiAtLWdpdCBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmlu ZGV4IGU5ZWUzNDIuLjYyMjkyNDQgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUu cGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMzMsNyArMzMsNyBA QCBkaWZmIC0tZ2l0IGEvYmZkL2xpYmJmZC5oIGIvYmZkL2xpYmJmZC5oCiBkaWZmIC0tZ2l0IGEv Z2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogLS0tIGEvZ2RiL2J1aWxkLWlkLmMKICsr KyBiL2dkYi9idWlsZC1pZC5jCi1AQCAtMjQsMTMgKzI0LDcwIEBACitAQCAtMjQsMTMgKzI0LDcx IEBACiAgI2luY2x1ZGUgImdkYnN1cHBvcnQvZ2RiX3ZlY3MuaCIKICAjaW5jbHVkZSAic3ltZmls ZS5oIgogICNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAtNDYsNiArNDYsNyBAQCBkaWZmIC0tZ2l0 IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogKyNpbmNsdWRlICJnZGJfYmZkLmgi CiArI2luY2x1ZGUgImdkYmNtZC5oIgogICNpbmNsdWRlICJnZGJjb3JlLmgiCisrI2luY2x1ZGUg ImluZmVyaW9yLmgiCiArI2luY2x1ZGUgIm9iamZpbGVzLmgiCiArI2luY2x1ZGUgIm9ic2VydmFi bGUuaCIKICsjaW5jbHVkZSAic3ltZmlsZS5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIGRpZmYgLS1n aXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAgewogICAgaWYgKCFiZmRfY2hl Y2tfZm9ybWF0IChhYmZkLCBiZmRfb2JqZWN0KQogICAgICAgICYmICFiZmRfY2hlY2tfZm9ybWF0 IChhYmZkLCBiZmRfY29yZSkpCi1AQCAtNDMsNiArMTAwLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0 IChiZmQgKmFiZmQpCitAQCAtNDMsNiArMTAxLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQg KmFiZmQpCiAgICByZXR1cm4gTlVMTDsKICB9CiAgCkBAIC00NTQsNyArNDU1LDcgQEAgZGlmZiAt LWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAvKiBTZWUgYnVpbGQtaWQu aC4gICovCiAgCiAgaW50Ci1AQCAtNTEsNyArNDUwLDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChiZmQg KmFiZmQsIHNpemVfdCBjaGVja19sZW4sIGNvbnN0IGJmZF9ieXRlICpjaGVjaykKK0BAIC01MSw3 ICs0NTEsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGJmZCAqYWJmZCwgc2l6ZV90IGNoZWNrX2xlbiwg Y29uc3QgYmZkX2J5dGUgKmNoZWNrKQogICAgY29uc3Qgc3RydWN0IGJmZF9idWlsZF9pZCAqZm91 bmQ7CiAgICBpbnQgcmV0dmFsID0gMDsKICAKQEAgLTQ2MywxNCArNDY0LDE1IEBAIGRpZmYgLS1n aXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAgCiAgICBpZiAoZm91bmQgPT0g TlVMTCkKICAgICAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlkLCBmaWxl IHNraXBwZWQiKSwKLUBAIC02Niw1NiArNDY1LDE1OSBAQCBidWlsZF9pZF92ZXJpZnkgKGJmZCAq YWJmZCwgc2l6ZV90IGNoZWNrX2xlbiwgY29uc3QgYmZkX2J5dGUgKmNoZWNrKQorQEAgLTY2LDYz ICs0NjYsMTY2IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoYmZkICphYmZkLCBzaXplX3QgY2hlY2tfbGVu LCBjb25zdCBiZmRfYnl0ZSAqY2hlY2spCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKICtzdGF0 aWMgY2hhciAqCiArbGlua19yZXNvbHZlIChjb25zdCBjaGFyICpzeW1saW5rLCBpbnQgbGV2ZWwp CiArewotKyAgY2hhciBidWZbUEFUSF9NQVggKyAxXSwgKnRhcmdldCwgKnJldHZhbDsKKysgIGNo YXIgYnVmW1BBVEhfTUFYICsgMV0sICpyZXR2YWw7CisrICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0 cjxjaGFyPiB0YXJnZXQ7CiArICBzc2l6ZV90IGdvdDsKICsKICsgIGlmIChsZXZlbCA+IDEwKQpA QCAtNDgyLDcgKzQ4NCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWls ZC1pZC5jCiArICBidWZbZ290XSA9ICdcMCc7CiArCiArICBpZiAoSVNfQUJTT0xVVEVfUEFUSCAo YnVmKSkKLSsgICAgdGFyZ2V0ID0geHN0cmR1cCAoYnVmKTsKKysgICAgdGFyZ2V0ID0gbWFrZV91 bmlxdWVfeHN0cmR1cCAoYnVmKTsKICsgIGVsc2UKICsgICAgewogKyAgICAgIGNvbnN0IHN0ZDo6 c3RyaW5nIGRpciAobGRpcm5hbWUgKHN5bWxpbmspKTsKQEAgLTQ5Niw4ICs0OTgsNyBAQCBkaWZm IC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogKwkJCSAgICIlcyIsIGRp ci5jX3N0cigpLCBidWYpOwogKyAgICB9CiArCi0rICByZXR2YWwgPSBsaW5rX3Jlc29sdmUgKHRh cmdldCwgbGV2ZWwgKyAxKTsKLSsgIHhmcmVlICh0YXJnZXQpOworKyAgcmV0dmFsID0gbGlua19y ZXNvbHZlICh0YXJnZXQuZ2V0ICgpLCBsZXZlbCArIDEpOwogKyAgcmV0dXJuIHJldHZhbDsKICt9 CiArCkBAIC01MTYsNDIgKzUxNyw0OSBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9n ZGIvYnVpbGQtaWQuYwogKwogICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZGVidWcpCiAgICAg IHsKLS0gICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiICBUcnlpbmcgJXMuLi4iKSwgbGluay5j X3N0ciAoKSk7Ci0rICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIiAgVHJ5aW5nICVzLi4uIiks IG9yaWdfbGluay5jX3N0ciAoKSk7Ci0gICAgICAgZ2RiX2ZsdXNoIChnZGJfc3Rkb3V0KTsKKy0g ICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiAgVHJ5aW5nICVzLi4uIiks IGxpbmsuY19zdHIgKCkpOworLSAgICAgIGdkYl9mbHVzaCAoZ2RiX3N0ZGxvZyk7CisrICAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCIgIFRyeWluZyAlcy4uLiIpLCBvcmln X2xpbmsuY19zdHIgKCkpOworKyAgICAgIGdkYl9mbHVzaCAoZ2RiX3N0ZG91dCk7CiAgICAgIH0K ICAKIC0gIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBu b24tZXhpc3RlbnQgZmlsZXMuICAqLwotLSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4g ZmlsZW5hbWU7Ci0tICBpZiAoYWNjZXNzIChsaW5rLmNfc3RyICgpLCBGX09LKSA9PSAwKQotLSAg ICBmaWxlbmFtZS5yZXNldCAobHJlYWxwYXRoIChsaW5rLmNfc3RyICgpKSk7Ci0tCi0tICBpZiAo ZmlsZW5hbWUgPT0gTlVMTCkKKy0gIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGZpbGVu YW1lX2hvbGRlcjsKKy0gIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gbnVsbHB0cjsKKy0gIGlmIChz dGFydHN3aXRoIChsaW5rLCBUQVJHRVRfU1lTUk9PVF9QUkVGSVgpKQorLSAgICBmaWxlbmFtZSA9 IGxpbmsuY19zdHIgKCk7CistICBlbHNlIGlmIChhY2Nlc3MgKGxpbmsuY19zdHIgKCksIEZfT0sp ID09IDApCiArICBmb3IgKHVuc2lnbmVkIHNlcW5vID0gMDs7IHNlcW5vKyspCiAgICAgIHsKLS0g ICAgICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9kZWJ1ZykKLS0JcHJpbnRmX3VuZmlsdGVyZWQg KF8oIiBubywgdW5hYmxlIHRvIGNvbXB1dGUgcmVhbCBwYXRoXG4iKSk7CistICAgICAgZmlsZW5h bWVfaG9sZGVyLnJlc2V0IChscmVhbHBhdGggKGxpbmsuY19zdHIgKCkpKTsKKy0gICAgICBmaWxl bmFtZSA9IGZpbGVuYW1lX2hvbGRlci5nZXQgKCk7CistICAgIH0KICsgICAgICBzdGQ6OnN0cmlu ZyBsaW5rID0gb3JpZ19saW5rOwogIAotLSAgICAgIHJldHVybiB7fTsKLS0gICAgfQorLSAgaWYg KGZpbGVuYW1lID09IE5VTEwpCistICAgIHsKKy0gICAgICBpZiAoc2VwYXJhdGVfZGVidWdfZmls ZV9kZWJ1ZykKKy0JZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorLQkJCSAgICBfKCIg bm8sIHVuYWJsZSB0byBjb21wdXRlIHJlYWwgcGF0aFxuIikpOwogKyAgICAgIGlmIChzZXFubyA+ IDApCiArCXsKICsJICAvKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgYnVpbGQtaWQgc3ltbGlua3Mg cG9pbnRpbmcgdG8gcmVhbCBmaWxlcwogKwkgICAgIHdpdGggdGhlIHNhbWUgYnVpbGQtaWQgKHN1 Y2ggYXMgaGFyZCBsaW5rcykuICBTb21lIG9mIHRoZSByZWFsCiArCSAgICAgZmlsZXMgbWF5IG5v dCBiZSBpbnN0YWxsZWQuICAqLwotKworIAorLSAgICAgIHJldHVybiB7fTsKKy0gICAgfQogKwkg IHN0cmluZ19hcHBlbmRmIChsaW5rLCAiLiV1Iiwgc2Vxbm8pOwogKwl9CiAgCiAtICAvKiBXZSBl eHBlY3QgdG8gYmUgc2lsZW50IG9uIHRoZSBub24tZXhpc3RpbmcgZmlsZXMuICAqLwotLSAgZ2Ri X2JmZF9yZWZfcHRyIGRlYnVnX2JmZCA9IGdkYl9iZmRfb3BlbiAoZmlsZW5hbWUuZ2V0ICgpLCBn bnV0YXJnZXQpOworLSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZCA9IGdkYl9iZmRfb3BlbiAo ZmlsZW5hbWUsIGdudXRhcmdldCk7CiArICAgICAgcmV0X2xpbmsgPSBsaW5rOwogIAogLSAgaWYg KGRlYnVnX2JmZCA9PSBOVUxMKQogLSAgICB7CiAtICAgICAgaWYgKHNlcGFyYXRlX2RlYnVnX2Zp bGVfZGVidWcpCi0tCXByaW50Zl91bmZpbHRlcmVkIChfKCIgbm8sIHVuYWJsZSB0byBvcGVuLlxu IikpOworLQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiBubywgdW5hYmxlIHRv IG9wZW4uXG4iKSk7CiArICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1Zl90cmFzaDsKICsKICsgICAg ICAvKiBgYWNjZXNzJyBhdXRvbWF0aWNhbGx5IGRlcmVmZXJlbmNlcyBMSU5LLiAgKi8KQEAgLTU2 MiwzNSArNTcwLDQyIEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1p ZC5jCiArCX0KICsKICsgICAgICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3Ig dGhlIHVzdWFsbHkgbm9uLWV4aXN0ZW50IGZpbGVzLiAgKi8KLSsgICAgICBnZGI6OnVuaXF1ZV94 bWFsbG9jX3B0cjxjaGFyPiBmaWxlbmFtZTsKLSsKLSsgICAgICBpZiAoYWNjZXNzIChsaW5rLmNf c3RyICgpLCBGX09LKSA9PSAwKQotKwlmaWxlbmFtZS5yZXNldCAobHJlYWxwYXRoIChsaW5rLmNf c3RyICgpKSk7CisrICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZmlsZW5hbWVf aG9sZGVyOworKyAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gbnVsbHB0cjsKKysgICAgICBp ZiAoc3RhcnRzd2l0aCAobGluaywgVEFSR0VUX1NZU1JPT1RfUFJFRklYKSkKKysJZmlsZW5hbWUg PSBsaW5rLmNfc3RyICgpOworKyAgICAgIGVsc2UgaWYgKGFjY2VzcyAobGluay5jX3N0ciAoKSwg Rl9PSykgPT0gMCkKKysJeworKwkgIGZpbGVuYW1lX2hvbGRlci5yZXNldCAobHJlYWxwYXRoIChs aW5rLmNfc3RyICgpKSk7CisrCSAgZmlsZW5hbWUgPSBmaWxlbmFtZV9ob2xkZXIuZ2V0ICgpOwor Kwl9CiArCiArICAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCiArCXsKICsJICBpZiAoc2VwYXJh dGVfZGVidWdfZmlsZV9kZWJ1ZykKLSsJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCIgbm8sIHVu YWJsZSB0byBjb21wdXRlIHJlYWwgcGF0aFxuIikpOworKwkgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLAorKwkgICAgICAgICAgICAgICAgICAgICAgIF8oIiBubywgdW5hYmxlIHRv IGNvbXB1dGUgcmVhbCBwYXRoXG4iKSk7CiArCiArCSAgY29udGludWU7CiArCX0KICsKICsgICAg ICAvKiBXZSBleHBlY3QgdG8gYmUgc2lsZW50IG9uIHRoZSBub24tZXhpc3RpbmcgZmlsZXMuICAq LwotKyAgICAgIGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQgPSBnZGJfYmZkX29wZW4gKGZpbGVu YW1lLmdldCAoKSwgZ251dGFyZ2V0LCAtMSk7Ci0gCi0tICAgICAgcmV0dXJuIHt9OworKyAgICAg IGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQgPSBnZGJfYmZkX29wZW4gKGZpbGVuYW1lLCBnbnV0 YXJnZXQpOworKwogKyAgICAgIGlmIChkZWJ1Z19iZmQgPT0gTlVMTCkKICsJewogKwkgIGlmIChz ZXBhcmF0ZV9kZWJ1Z19maWxlX2RlYnVnKQotKwkgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIiBu bywgdW5hYmxlIHRvIG9wZW4uXG4iKSk7Ci0rCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csIF8oIiBubywgdW5hYmxlIHRvIG9wZW4uXG4iKSk7CisgCistICAgICAgcmV0dXJu IHt9OwogKwkgIGNvbnRpbnVlOwogKwl9CiArCiArICAgICAgaWYgKCFidWlsZF9pZF92ZXJpZnkg KGRlYnVnX2JmZC5nZXQoKSwgYnVpbGRfaWRfbGVuLCBidWlsZF9pZCkpCiArCXsKICsJICBpZiAo c2VwYXJhdGVfZGVidWdfZmlsZV9kZWJ1ZykKLSsJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCIg bm8sIGJ1aWxkLWlkIGRvZXMgbm90IG1hdGNoLlxuIikpOworKwkgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorKwkgICAgICAgICAgICAgICAgICAgICAgICBfKCIgbm8sIGJ1aWxk LWlkIGRvZXMgbm90IG1hdGNoLlxuIikpOwogKwogKwkgIGNvbnRpbnVlOwogKwl9CkBAIC02MDUs MTcgKzYyMCwxNiBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQu YwogKyAgaWYgKHJldF9iZmQgIT0gTlVMTCkKICAgICAgewogICAgICAgIGlmIChzZXBhcmF0ZV9k ZWJ1Z19maWxlX2RlYnVnKQotLQlwcmludGZfdW5maWx0ZXJlZCAoXygiIG5vLCBidWlsZC1pZCBk b2VzIG5vdCBtYXRjaC5cbiIpKTsKLS0KLS0gICAgICByZXR1cm4ge307Ci0rCXByaW50Zl91bmZp bHRlcmVkIChfKCIgeWVzIVxuIikpOworLQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs IF8oIiBubywgYnVpbGQtaWQgZG9lcyBub3QgbWF0Y2guXG4iKSk7CisrCWZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgXygiIHllcyFcbiIpKTsKICsgICAgfQogKyAgZWxzZQogKyAgICB7 CiArICAgICAgLyogSWYgbm9uZSBvZiB0aGUgcmVhbCBmaWxlcyBpcyBmb3VuZCByZXBvcnQgYXMg bWlzc2luZyBmaWxlCiArCSBhbHdheXMgdGhlIG5vbi0uJXUtc3VmZml4ZWQgZmlsZS4gICovCiAr ICAgICAgc3RkOjpzdHJpbmcgbGluazAgPSBvcmlnX2xpbms7Ci0rCisgCistICAgICAgcmV0dXJu IHt9OwogKyAgICAgIC8qIElmIHRoZSBzeW1saW5rIGhhcyB0YXJnZXQgcmVxdWVzdCB0byBpbnN0 YWxsIHRoZSB0YXJnZXQuCiArCSBCQVNFLWRlYnVnaW5mby5ycG0gY29udGFpbnMgdGhlIHN5bWxp bmsgYnV0IEJBU0UucnBtIG1heSBiZSBtaXNzaW5nLgogKwkgaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD05ODExNTQgICovCkBAIC02MzIsNyArNjQ2LDcgQEAgZGlm ZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAgICAgfQogIAogLSAg aWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZGVidWcpCi0tICAgIHByaW50Zl91bmZpbHRlcmVkIChf KCIgeWVzIVxuIikpOworLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiB5 ZXMhXG4iKSk7CiArICBpZiAobGlua19yZXR1cm4gIT0gTlVMTCkKICsgICAgewogKyAgICAgIGlm IChyZXRfYmZkICE9IE5VTEwpCkBAIC02NTAsNyArNjY0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9i dWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICB9CiAgCiAgLyogQ29tbW9uIGNvZGUgZm9yIGZp bmRpbmcgQkZEcyBvZiBhIGdpdmVuIGJ1aWxkLWlkLiAgVGhpcyBmdW5jdGlvbgotQEAgLTEyNCw3 ICs2MjYsNyBAQCBidWlsZF9pZF90b19kZWJ1Z19iZmRfMSAoY29uc3Qgc3RkOjpzdHJpbmcgJmxp bmssIHNpemVfdCBidWlsZF9pZF9sZW4sCitAQCAtMTMxLDcgKzYzNCw3IEBAIGJ1aWxkX2lkX3Rv X2RlYnVnX2JmZF8xIChjb25zdCBzdGQ6OnN0cmluZyAmbGluaywgc2l6ZV90IGJ1aWxkX2lkX2xl biwKICAKICBzdGF0aWMgZ2RiX2JmZF9yZWZfcHRyCiAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAo c2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLApAQCAtNjU5LDcg KzY3Myw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAg ewogICAgLyogS2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHNvIHRoYXQgREVCVUdfRklMRV9E SVJFQ1RPUlkgYmVpbmcgIiIgd2lsbAogICAgICAgY2F1c2UgIi8uYnVpbGQtaWQvLi4uIiBsb29r dXBzLiAgKi8KLUBAIC0xNDcsMTYgKzY0OSwxNyBAQCBidWlsZF9pZF90b19iZmRfc3VmZml4IChz aXplX3QgYnVpbGRfaWRfbGVuLCBjb25zdCBiZmRfYnl0ZSAqYnVpbGRfaWQsCitAQCAtMTU0LDE2 ICs2NTcsMTcgQEAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwg Y29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLAogICAgICAgIGlmIChzaXplID4gMCkKICAJewogIAkg IHNpemUtLTsKQEAgLTY4MCw4ICs2OTQsOCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMg Yi9nZGIvYnVpbGQtaWQuYwogICAgICAgIGlmIChkZWJ1Z19iZmQgIT0gTlVMTCkKICAJcmV0dXJu IGRlYnVnX2JmZDsKICAKLUBAIC0xNzAsNyArNjczLDggQEAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZp eCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLAotICAgICAg IGlmIChzdHJjbXAgKGdkYl9zeXNyb290LCBUQVJHRVRfU1lTUk9PVF9QUkVGSVgpICE9IDApCitA QCAtMTc0LDcgKzY3OCw4IEBAIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKHNpemVfdCBidWlsZF9p ZF9sZW4sIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCwKKyAgICAgICBpZiAoIWdkYl9zeXNyb290 LmVtcHR5ICgpKQogIAl7CiAgCSAgbGluayA9IGdkYl9zeXNyb290ICsgbGluazsKIC0JICBkZWJ1 Z19iZmQgPSBidWlsZF9pZF90b19kZWJ1Z19iZmRfMSAobGluaywgYnVpbGRfaWRfbGVuLCBidWls ZF9pZCk7CkBAIC02OTAsNyArNzA0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIv Z2RiL2J1aWxkLWlkLmMKICAJICBpZiAoZGVidWdfYmZkICE9IE5VTEwpCiAgCSAgICByZXR1cm4g ZGVidWdfYmZkOwogIAl9Ci1AQCAtMTc5LDM4ICs2ODMsMjA4IEBAIGJ1aWxkX2lkX3RvX2JmZF9z dWZmaXggKHNpemVfdCBidWlsZF9pZF9sZW4sIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCwKK0BA IC0xODMsMzAgKzY4OCw2NDkgQEAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxk X2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLAogICAgcmV0dXJuIHt9OwogIH0KICAK QEAgLTcwOCw4ICs3MjIsNDQwIEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9i dWlsZC1pZC5jCiArICByZXR1cm4gcmVzdWx0OwogK30KICsKKysjaWZkZWYgSEFWRV9MSUJSUE0K KysKKysjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgorKyNpbmNsdWRlIDxycG0vcnBtdHMuaD4KKysj aW5jbHVkZSA8cnBtL3JwbWRiLmg+CisrI2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KKysjaWZkZWYg RExPUEVOX0xJQlJQTQorKyNpbmNsdWRlIDxkbGZjbi5oPgorKyNlbmRpZgorKworKy8qIFdvcmth cm9kdW4gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02NDMwMzEK KysgICBsaWJycG0gbXVzdCBub3QgZXhpdCgpIGFuIGFwcGxpY2F0aW9uIG9uIFNJR0lOVAorKwor KyAgIEVuYWJsZSBvciBkaXNhYmxlIGEgc2lnbmFsIGhhbmRsZXIuICBTSUdOVU06IHNpZ25hbCB0 byBlbmFibGUgKG9yIGRpc2FibGUKKysgICBpZiBuZWdhdGl2ZSkuICBIQU5ETEVSOiBzYV9zaWdh Y3Rpb24gaGFuZGxlciAob3IgTlVMTCB0byB1c2UKKysgICBycG1zcUhhbmRsZXIoKSkuICBSZXR1 cm5zOiBuby4gb2YgcmVmcywgLTEgb24gZXJyb3IuICAqLworK2V4dGVybiBpbnQgcnBtc3FFbmFi bGUgKGludCBzaWdudW0sIC8qIHJwbXNxQWN0aW9uX3QgaGFuZGxlciAqLyB2b2lkICpoYW5kbGVy KTsKKytpbnQKKytycG1zcUVuYWJsZSAoaW50IHNpZ251bSwgLyogcnBtc3FBY3Rpb25fdCBoYW5k bGVyICovIHZvaWQgKmhhbmRsZXIpCisreworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIFRoaXMg TUlTU0lOR19SUE1fSEFTSCB0cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIG1pc3Np bmcgcnBtIGZpbGVzCisrICAgYW5kIGF2b2lkIHRoZWlyIGR1cGxpY2l0aWVzIGR1cmluZyBhIHNp bmdsZSBpbmZlcmlvciBydW4uICAqLworKworK3N0YXRpYyBzdHJ1Y3QgaHRhYiAqbWlzc2luZ19y cG1faGFzaDsKKysKKysvKiBUaGlzIE1JU1NJTkdfUlBNX0xJU1QgdHJhY2tlciBpcyB1c2VkIHRv IGNvbGxlY3QgYW5kIHByaW50IGFzIGEgc2luZ2xlIGxpbmUKKysgICBhbGwgdGhlIHJwbXMgcmln aHQgYmVmb3JlIHRoZSBuZWFyZXN0IEdEQiBwcm9tcHQuICBJdCBnZXRzIGNsZWFyZWQgYWZ0ZXIK KysgICBlYWNoIHN1Y2ggcHJpbnQgKGl0IGlzIHF1ZXN0aW9uYWJsZSBpZiB3ZSBzaG91bGQgY2xl YXIgaXQgYWZ0ZXIgdGhlIHByaW50KS4KKysgICAqLworKworK3N0cnVjdCBtaXNzaW5nX3JwbQor KyAgeworKyAgICBzdHJ1Y3QgbWlzc2luZ19ycG0gKm5leHQ7CisrICAgIGNoYXIgcnBtWzFdOwor KyAgfTsKKytzdGF0aWMgc3RydWN0IG1pc3NpbmdfcnBtICptaXNzaW5nX3JwbV9saXN0OworK3N0 YXRpYyBpbnQgbWlzc2luZ19ycG1fbGlzdF9lbnRyaWVzOworKworKy8qIFJldHVybnMgdGhlIGNv dW50IG9mIG5ld2x5IGFkZGVkIHJwbXMuICAqLworKworK3N0YXRpYyBpbnQKKysjaWZuZGVmIEdE Ql9JTkRFWF9WRVJJRllfVkVORE9SCisrbWlzc2luZ19ycG1fZW5saXN0IChjb25zdCBjaGFyICpm aWxlbmFtZSkKKysjZWxzZQorK21pc3NpbmdfcnBtX2VubGlzdF8xIChjb25zdCBjaGFyICpmaWxl bmFtZSwgaW50IHZlcmlmeV92ZW5kb3IpCisrI2VuZGlmCisreworKyAgc3RhdGljIGludCBycG1f aW5pdF9kb25lID0gMDsKKysgIHJwbXRzIHRzOworKyAgcnBtZGJNYXRjaEl0ZXJhdG9yIG1pOwor KyAgaW50IGNvdW50ID0gMDsKKysKKysjaWZkZWYgRExPUEVOX0xJQlJQTQorKyAgLyogRHVwbGlj YXRlIGhlcmUgdGhlIGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaC4gIFRoZSBzYW1l IHNhbml0eQorKyAgICAgY2hlY2sgaXMgcHJlc2VudCBhbHNvIGluIGBjb25maWd1cmUuYWMnLiAg Ki8KKysgIGV4dGVybiBjaGFyICogaGVhZGVyRm9ybWF0KEhlYWRlciBoLCBjb25zdCBjaGFyICog Zm10LCBlcnJtc2dfdCAqIGVycm1zZyk7CisrICBzdGF0aWMgY2hhciAqKCpoZWFkZXJGb3JtYXRf cCkgKEhlYWRlciBoLCBjb25zdCBjaGFyICogZm10LCBlcnJtc2dfdCAqZXJybXNnKTsKKysgIGV4 dGVybiBpbnQgcnBtUmVhZENvbmZpZ0ZpbGVzKGNvbnN0IGNoYXIgKiBmaWxlLCBjb25zdCBjaGFy ICogdGFyZ2V0KTsKKysgIHN0YXRpYyBpbnQgKCpycG1SZWFkQ29uZmlnRmlsZXNfcCkgKGNvbnN0 IGNoYXIgKiBmaWxlLCBjb25zdCBjaGFyICogdGFyZ2V0KTsKKysgIGV4dGVybiBycG1kYk1hdGNo SXRlcmF0b3IgcnBtZGJGcmVlSXRlcmF0b3IocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKTsKKysgIHN0 YXRpYyBycG1kYk1hdGNoSXRlcmF0b3IgKCpycG1kYkZyZWVJdGVyYXRvcl9wKSAocnBtZGJNYXRj aEl0ZXJhdG9yIG1pKTsKKysgIGV4dGVybiBIZWFkZXIgcnBtZGJOZXh0SXRlcmF0b3IocnBtZGJN YXRjaEl0ZXJhdG9yIG1pKTsKKysgIHN0YXRpYyBIZWFkZXIgKCpycG1kYk5leHRJdGVyYXRvcl9w KSAocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKTsKKysgIGV4dGVybiBycG10cyBycG10c0NyZWF0ZSh2 b2lkKTsKKysgIHN0YXRpYyBycG10cyAoKnJwbXRzQ3JlYXRlX3ApICh2b2lkKTsKKysgIGV4dGVy biBycG10cyBycG10c0ZyZWUocnBtdHMgdHMpOworKyAgc3RhdGljIHJwbXRzICgqcnBtdHNGcmVl X3ApIChycG10cyB0cyk7CisrICBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0 ZXJhdG9yKGNvbnN0IHJwbXRzIHRzLCBycG1UYWcgcnBtdGFnLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICoga2V5cCwgc2l6ZV90IGtl eWxlbik7CisrICBzdGF0aWMgcnBtZGJNYXRjaEl0ZXJhdG9yICgqcnBtdHNJbml0SXRlcmF0b3Jf cCkgKGNvbnN0IHJwbXRzIHRzLAorKwkJCQkJCSAgICBycG1UYWcgcnBtdGFnLAorKwkJCQkJCSAg ICBjb25zdCB2b2lkICprZXlwLAorKwkJCQkJCSAgICBzaXplX3Qga2V5bGVuKTsKKysjZWxzZQkv KiAhRExPUEVOX0xJQlJQTSAqLworKyMgZGVmaW5lIGhlYWRlckZvcm1hdF9wIGhlYWRlckZvcm1h dAorKyMgZGVmaW5lIHJwbVJlYWRDb25maWdGaWxlc19wIHJwbVJlYWRDb25maWdGaWxlcworKyMg ZGVmaW5lIHJwbWRiRnJlZUl0ZXJhdG9yX3AgcnBtZGJGcmVlSXRlcmF0b3IKKysjIGRlZmluZSBy cG1kYk5leHRJdGVyYXRvcl9wIHJwbWRiTmV4dEl0ZXJhdG9yCisrIyBkZWZpbmUgcnBtdHNDcmVh dGVfcCBycG10c0NyZWF0ZQorKyMgZGVmaW5lIHJwbXRzRnJlZV9wIHJwbXRzRnJlZQorKyMgZGVm aW5lIHJwbXRzSW5pdEl0ZXJhdG9yX3AgcnBtdHNJbml0SXRlcmF0b3IKKysjZW5kaWYJLyogIURM T1BFTl9MSUJSUE0gKi8KKysKKysgIGdkYl9hc3NlcnQgKGZpbGVuYW1lICE9IE5VTEwpOworKwor KyAgaWYgKHN0cmNtcCAoZmlsZW5hbWUsIEJVSUxEX0lEX01BSU5fRVhFQ1VUQUJMRV9GSUxFTkFN RSkgPT0gMCkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAoaXNfdGFyZ2V0X2ZpbGVuYW1lIChm aWxlbmFtZSkpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKGZpbGVuYW1lWzBdICE9ICcvJykK KysgICAgeworKyAgICAgIHdhcm5pbmcgKF8oIklnbm9yaW5nIG5vbi1hYnNvbHV0ZSBmaWxlbmFt ZTogPCVzPiIpLCBmaWxlbmFtZSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlm ICghcnBtX2luaXRfZG9uZSkKKysgICAgeworKyAgICAgIHN0YXRpYyBpbnQgaW5pdF90cmllZDsK KysKKysgICAgICAvKiBBbHJlYWR5IGZhaWxlZCB0aGUgaW5pdGlhbGl6YXRpb24gYmVmb3JlPyAg Ki8KKysgICAgICBpZiAoaW5pdF90cmllZCkKKysgICAgICAgIHJldHVybiAwOworKyAgICAgIGlu aXRfdHJpZWQgPSAxOworKworKyNpZmRlZiBETE9QRU5fTElCUlBNCisrICAgICAgeworKwl2b2lk ICpoOworKworKwloID0gZGxvcGVuIChETE9QRU5fTElCUlBNLCBSVExEX0xBWlkpOworKwlpZiAo IWgpCisrCSAgeworKwkgICAgd2FybmluZyAoXygiVW5hYmxlIHRvIG9wZW4gXCIlc1wiICglcyks ICIKKysJCSAgICAgICJtaXNzaW5nIGRlYnVnaW5mb3Mgbm90aWZpY2F0aW9ucyB3aWxsIG5vdCBi ZSBkaXNwbGF5ZWQiKSwKKysJCSAgICAgRExPUEVOX0xJQlJQTSwgZGxlcnJvciAoKSk7CisrCSAg ICByZXR1cm4gMDsKKysJICB9CisrCisrCWlmICghKChoZWFkZXJGb3JtYXRfcCA9IChjaGFyICoo KikgKEhlYWRlciBoLCBjb25zdCBjaGFyICogZm10LCBlcnJtc2dfdCAqZXJybXNnKSkgZGxzeW0g KGgsICJoZWFkZXJGb3JtYXQiKSkKKysJICAgICAgJiYgKHJwbVJlYWRDb25maWdGaWxlc19wID0g KGludCAoKikgKGNvbnN0IGNoYXIgKiBmaWxlLCBjb25zdCBjaGFyICogdGFyZ2V0KSkgZGxzeW0g KGgsICJycG1SZWFkQ29uZmlnRmlsZXMiKSkKKysJICAgICAgJiYgKHJwbWRiRnJlZUl0ZXJhdG9y X3AgPSAocnBtZGJNYXRjaEl0ZXJhdG9yICgqKSAocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKSkgZGxz eW0gKGgsICJycG1kYkZyZWVJdGVyYXRvciIpKQorKwkgICAgICAmJiAocnBtZGJOZXh0SXRlcmF0 b3JfcCA9IChIZWFkZXIgKCopIChycG1kYk1hdGNoSXRlcmF0b3IgbWkpKSBkbHN5bSAoaCwgInJw bWRiTmV4dEl0ZXJhdG9yIikpCisrCSAgICAgICYmIChycG10c0NyZWF0ZV9wID0gKHJwbXRzICgq KSAodm9pZCkpIGRsc3ltIChoLCAicnBtdHNDcmVhdGUiKSkKKysJICAgICAgJiYgKHJwbXRzRnJl ZV9wID0gKHJwbXRzICgqKSAocnBtdHMgdHMpKSBkbHN5bSAoaCwgInJwbXRzRnJlZSIpKQorKwkg ICAgICAmJiAocnBtdHNJbml0SXRlcmF0b3JfcCA9IChycG1kYk1hdGNoSXRlcmF0b3IgKCopIChj b25zdCBycG10cyB0cywgcnBtVGFnIHJwbXRhZywgY29uc3Qgdm9pZCAqa2V5cCwgc2l6ZV90IGtl eWxlbikpIGRsc3ltIChoLCAicnBtdHNJbml0SXRlcmF0b3IiKSkpKQorKwkgIHsKKysJICAgIHdh cm5pbmcgKF8oIk9wZW5lZCBsaWJyYXJ5IFwiJXNcIiBpcyBpbmNvbXBhdGlibGUgKCVzKSwgIgor KwkJICAgICAgIm1pc3NpbmcgZGVidWdpbmZvcyBub3RpZmljYXRpb25zIHdpbGwgbm90IGJlIGRp c3BsYXllZCIpLAorKwkJICAgICBETE9QRU5fTElCUlBNLCBkbGVycm9yICgpKTsKKysJICAgIGlm IChkbGNsb3NlIChoKSkKKysJICAgICAgd2FybmluZyAoXygiRXJyb3IgY2xvc2luZyBsaWJyYXJ5 IFwiJXNcIjogJXNcbiIpLCBETE9QRU5fTElCUlBNLAorKwkJICAgICAgIGRsZXJyb3IgKCkpOwor KwkgICAgcmV0dXJuIDA7CisrCSAgfQorKyAgICAgIH0KKysjZW5kaWYJLyogRExPUEVOX0xJQlJQ TSAqLworKworKyAgICAgIGlmIChycG1SZWFkQ29uZmlnRmlsZXNfcCAoTlVMTCwgTlVMTCkgIT0g MCkKKysJeworKwkgIHdhcm5pbmcgKF8oIkVycm9yIHJlYWRpbmcgdGhlIHJwbSBjb25maWd1cmF0 aW9uIGZpbGVzIikpOworKwkgIHJldHVybiAwOworKwl9CisrCisrICAgICAgcnBtX2luaXRfZG9u ZSA9IDE7CisrICAgIH0KKysKKysgIHRzID0gcnBtdHNDcmVhdGVfcCAoKTsKKysKKysgIG1pID0g cnBtdHNJbml0SXRlcmF0b3JfcCAodHMsIFJQTVRBR19CQVNFTkFNRVMsIGZpbGVuYW1lLCAwKTsK KysgIGlmIChtaSAhPSBOVUxMKQorKyAgICB7CisrI2lmbmRlZiBHREJfSU5ERVhfVkVSSUZZX1ZF TkRPUgorKyAgICAgIGZvciAoOzspCisrI2Vsc2UKKysgICAgICBpZiAoIXZlcmlmeV92ZW5kb3Ip IGZvciAoOzspCisrI2VuZGlmCisrCXsKKysJICBIZWFkZXIgaDsKKysJICBjaGFyICpkZWJ1Z2lu Zm8sICoqc2xvdCwgKnMsICpzMjsKKysJICBlcnJtc2dfdCBlcnI7CisrCSAgc2l6ZV90IHNyY3Jw bWxlbiA9IHNpemVvZiAoIi5zcmMucnBtIikgLSAxOworKwkgIHNpemVfdCBkZWJ1Z2luZm9sZW4g PSBzaXplb2YgKCItZGVidWdpbmZvIikgLSAxOworKwkgIHJwbWRiTWF0Y2hJdGVyYXRvciBtaV9k ZWJ1Z2luZm87CisrCisrCSAgaCA9IHJwbWRiTmV4dEl0ZXJhdG9yX3AgKG1pKTsKKysJICBpZiAo aCA9PSBOVUxMKQorKwkgICAgYnJlYWs7CisrCisrCSAgLyogVmVyaWZ5IHRoZSBkZWJ1Z2luZm8g ZmlsZSBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQuICAqLworKworKwkgIGRlYnVnaW5mbyA9IGhl YWRlckZvcm1hdF9wIChoLCAiJXtzb3VyY2VycG19LWRlYnVnaW5mby4le2FyY2h9IiwKKysJCQkJ ICAgICAgJmVycik7CisrCSAgaWYgKCFkZWJ1Z2luZm8pCisrCSAgICB7CisrCSAgICAgIHdhcm5p bmcgKF8oIkVycm9yIHF1ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMnOiAlcyIpLCBmaWxlbmFtZSwK KysJICAgICAgICAgICAgICAgZXJyKTsKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisrCSAg LyogcyA9IGAuc3JjLnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KKysJICBzID0gc3RycmNociAo ZGVidWdpbmZvLCAnLScpIC0gc3JjcnBtbGVuOworKwkgIHMyID0gTlVMTDsKKysJICBpZiAocyA+ IGRlYnVnaW5mbyAmJiBtZW1jbXAgKHMsICIuc3JjLnJwbSIsIHNyY3JwbWxlbikgPT0gMCkKKysJ ICAgIHsKKysJICAgICAgLyogczIgPSBgLSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8uJXth cmNofScgKi8KKysJICAgICAgczIgPSAoY2hhciAqKSBtZW1yY2hyIChkZWJ1Z2luZm8sICctJywg cyAtIGRlYnVnaW5mbyk7CisrCSAgICB9CisrCSAgaWYgKHMyKQorKwkgICAgeworKwkgICAgICAv KiBzMiA9IGAtJXt2ZXJzaW9ufS0le3JlbGVhc2V9LnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0n ICovCisrCSAgICAgIHMyID0gKGNoYXIgKikgbWVtcmNociAoZGVidWdpbmZvLCAnLScsIHMyIC0g ZGVidWdpbmZvKTsKKysJICAgIH0KKysJICBpZiAoIXMyKQorKwkgICAgeworKwkgICAgICB3YXJu aW5nIChfKCJFcnJvciBxdWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUs CisrCSAgICAgICAgICAgICAgIGRlYnVnaW5mbyk7CisrCSAgICAgIHhmcmVlIChkZWJ1Z2luZm8p OworKwkgICAgICBjb250aW51ZTsKKysJICAgIH0KKysJICAvKiBzID0gYC5zcmMucnBtLWRlYnVn aW5mby4le2FyY2h9JyAqLworKwkgIC8qIHMyID0gYC0le3ZlcnNpb259LSV7cmVsZWFzZX0uc3Jj LnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KKysJICBtZW1tb3ZlIChzMiArIGRlYnVnaW5mb2xl biwgczIsIHMgLSBzMik7CisrCSAgbWVtY3B5IChzMiwgIi1kZWJ1Z2luZm8iLCBkZWJ1Z2luZm9s ZW4pOworKwkgIC8qIHMgPSBgWFhYWC4le2FyY2h9JyAqLworKwkgIC8qIHN0cmxlbiAoIlhYWFgi KSA9PSBzcmNycG1sZW4gKyBkZWJ1Z2luZm9sZW4gKi8KKysJICAvKiBzMiA9IGAtZGVidWdpbmZv LSV7dmVyc2lvbn0tJXtyZWxlYXNlfVhYLiV7YXJjaH0nICovCisrCSAgLyogc3RybGVuICgiWFgi KSA9PSBzcmNycG1sZW4gKi8KKysJICBtZW1tb3ZlIChzICsgZGVidWdpbmZvbGVuLCBzICsgc3Jj cnBtbGVuICsgZGVidWdpbmZvbGVuLAorKwkJICAgc3RybGVuIChzICsgc3JjcnBtbGVuICsgZGVi dWdpbmZvbGVuKSArIDEpOworKwkgIC8qIHMgPSBgLWRlYnVnaW5mby0le3ZlcnNpb259LSV7cmVs ZWFzZX0uJXthcmNofScgKi8KKysKKysJICAvKiBSUE1EQklfUEFDS0FHRVMgcmVxdWlyZXMga2V5 bGVuID09IHNpemVvZiAoaW50KS4gICovCisrCSAgLyogUlBNREJJX0xBQkVMIGlzIGFuIGludGVy ZmFjZSBmb3IgTlZSLWJhc2VkIGRiaUZpbmRCeUxhYmVsKCkuICAqLworKwkgIG1pX2RlYnVnaW5m byA9IHJwbXRzSW5pdEl0ZXJhdG9yX3AgKHRzLCAocnBtVGFnKSBSUE1EQklfTEFCRUwsIGRlYnVn aW5mbywgMCk7CisrCSAgeGZyZWUgKGRlYnVnaW5mbyk7CisrCSAgaWYgKG1pX2RlYnVnaW5mbykK KysJICAgIHsKKysJICAgICAgcnBtZGJGcmVlSXRlcmF0b3JfcCAobWlfZGVidWdpbmZvKTsKKysJ ICAgICAgY291bnQgPSAwOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysKKysJICAvKiBUaGUg YWxsb2NhdGVkIG1lbW9yeSBnZXRzIHV0aWxpemVkIGJlbG93IGZvciBNSVNTSU5HX1JQTV9IQVNI LiAgKi8KKysJICBkZWJ1Z2luZm8gPSBoZWFkZXJGb3JtYXRfcCAoaCwKKysJCQkJICAgICAgIiV7 bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7YXJjaH0iLAorKwkJCQkgICAgICAmZXJyKTsK KysJICBpZiAoIWRlYnVnaW5mbykKKysJICAgIHsKKysJICAgICAgd2FybmluZyAoXygiRXJyb3Ig cXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6ICVzIiksIGZpbGVuYW1lLAorKwkgICAgICAgICAg ICAgICBlcnIpOworKwkgICAgICBjb250aW51ZTsKKysJICAgIH0KKysKKysJICAvKiBCYXNlIHBh Y2thZ2UgbmFtZSBmb3IgYGRlYnVnaW5mby1pbnN0YWxsJy4gIFdlIGRvIG5vdCB1c2UgdGhlCisr CSAgICAgYHl1bScgY29tbWFuZCBkaXJlY3RseSBhcyB0aGUgbGluZQorKwkJIHl1bSAtLWVuYWJs ZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgTkFNRS1kZWJ1Z2luZm8uQVJDSAorKwkgICAgIHdvdWxk IGJlIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBqdXN0OgorKwkJIGRlYnVnaW5mby1pbnN0YWxsIE5B TUUtVkVSU0lPTi1SRUxFQVNFLkFSQ0gKKysJICAgICBEbyBub3Qgc3VwcGx5IHRoZSBycG0gYmFz ZSBuYW1lIChkZXJpdmVkIGZyb20gLnNyYy5ycG0gbmFtZSkgYXMKKysJICAgICBkZWJ1Z2luZm8t aW5zdGFsbCBpcyB1bmFibGUgdG8gaW5zdGFsbCB0aGUgZGVidWdpbmZvIHBhY2thZ2UgaWYKKysJ ICAgICB0aGUgYmFzZSBuYW1lIFBLRyBiaW5hcnkgcnBtIGlzIG5vdCBpbnN0YWxsZWQgd2hpbGUg Zm9yIGV4YW1wbGUKKysJICAgICBQS0ctbGlicyB3b3VsZCBiZSBpbnN0YWxsZWQgKFJIIEJ1ZyA0 Njc5MDEpLgorKwkgICAgIEZVVFVSRTogQWZ0ZXIgbXVsdGlwbGUgZGVidWdpbmZvIHZlcnNpb25z IHNpbXVsdGFuZW91c2x5IGluc3RhbGxlZAorKwkgICAgIGdldCBzdXBwb3J0ZWQgdGhlIHN1cHBv cnQgZm9yIHRoZSBWRVJTSU9OLVJFTEVBU0UgdGFncyBoYW5kbGluZworKwkgICAgIG1heSBuZWVk IGFuIHVwZGF0ZS4gICovCisrCisrCSAgaWYgKG1pc3NpbmdfcnBtX2hhc2ggPT0gTlVMTCkKKysJ ICAgIHsKKysJICAgICAgLyogREVMX0YgaXMgcGFzc2VkIE5VTEwgYXMgTUlTU0lOR19SUE1fTElT VCdzIEhUQUJfREVMRVRFCisrCQkgc2hvdWxkIG5vdCBkZWFsbG9jYXRlIHRoZSBlbnRyaWVzLiAg Ki8KKysKKysJICAgICAgbWlzc2luZ19ycG1faGFzaCA9IGh0YWJfY3JlYXRlX2FsbG9jICg2NCwg aHRhYl9oYXNoX3N0cmluZywKKysJCQkgICAgICAgKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29u c3Qgdm9pZCAqKSkgc3RyZXEsCisrCQkJCQkJICAgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsKKysJ ICAgIH0KKysJICBzbG90ID0gKGNoYXIgKiopIGh0YWJfZmluZF9zbG90IChtaXNzaW5nX3JwbV9o YXNoLCBkZWJ1Z2luZm8sIElOU0VSVCk7CisrCSAgLyogWENBTExPQyBuZXZlciByZXR1cm5zIE5V TEwuICAqLworKwkgIGdkYl9hc3NlcnQgKHNsb3QgIT0gTlVMTCk7CisrCSAgaWYgKCpzbG90ID09 IE5VTEwpCisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbWlzc2luZ19ycG07 CisrCisrCSAgICAgICpzbG90ID0gZGVidWdpbmZvOworKworKwkgICAgICBtaXNzaW5nX3JwbSA9 IChzdHJ1Y3QgbWlzc2luZ19ycG0gKikgeG1hbGxvYyAoc2l6ZW9mICgqbWlzc2luZ19ycG0pICsg c3RybGVuIChkZWJ1Z2luZm8pKTsKKysJICAgICAgc3RyY3B5IChtaXNzaW5nX3JwbS0+cnBtLCBk ZWJ1Z2luZm8pOworKwkgICAgICBtaXNzaW5nX3JwbS0+bmV4dCA9IG1pc3NpbmdfcnBtX2xpc3Q7 CisrCSAgICAgIG1pc3NpbmdfcnBtX2xpc3QgPSBtaXNzaW5nX3JwbTsKKysJICAgICAgbWlzc2lu Z19ycG1fbGlzdF9lbnRyaWVzKys7CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgeGZyZWUgKGRl YnVnaW5mbyk7CisrCSAgY291bnQrKzsKKysJfQorKyNpZmRlZiBHREJfSU5ERVhfVkVSSUZZX1ZF TkRPUgorKyAgICAgIGVsc2UgLyogdmVyaWZ5X3ZlbmRvciAqLworKwl7CisrCSAgaW50IHZlbmRv cl9wYXNzID0gMCwgdmVuZG9yX2ZhaWwgPSAwOworKworKwkgIGZvciAoOzspCisrCSAgICB7Cisr CSAgICAgIEhlYWRlciBoOworKwkgICAgICBlcnJtc2dfdCBlcnI7CisrCSAgICAgIGNoYXIgKnZl bmRvcjsKKysKKysJICAgICAgaCA9IHJwbWRiTmV4dEl0ZXJhdG9yX3AgKG1pKTsKKysJICAgICAg aWYgKGggPT0gTlVMTCkKKysJCWJyZWFrOworKworKwkgICAgICB2ZW5kb3IgPSBoZWFkZXJGb3Jt YXRfcCAoaCwgIiV7dmVuZG9yfSIsICZlcnIpOworKwkgICAgICBpZiAoIXZlbmRvcikKKysJCXsK KysJCSAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6ICVzIiks IGZpbGVuYW1lLAorKwkJCSAgIGVycik7CisrCQkgIGNvbnRpbnVlOworKwkJfQorKwkgICAgICBp ZiAoc3RyY21wICh2ZW5kb3IsICJSZWQgSGF0LCBJbmMuIikgPT0gMCkKKysJCXZlbmRvcl9wYXNz ID0gMTsKKysJICAgICAgZWxzZQorKwkJdmVuZG9yX2ZhaWwgPSAxOworKwkgICAgICB4ZnJlZSAo dmVuZG9yKTsKKysJICAgIH0KKysJICBjb3VudCA9IHZlbmRvcl9wYXNzICE9IDAgJiYgdmVuZG9y X2ZhaWwgPT0gMDsKKysJfQorKyNlbmRpZgorKworKyAgICAgIHJwbWRiRnJlZUl0ZXJhdG9yX3Ag KG1pKTsKKysgICAgfQorKworKyAgcnBtdHNGcmVlX3AgKHRzKTsKKysKKysgIHJldHVybiBjb3Vu dDsKKyt9CisrCisrI2lmZGVmIEdEQl9JTkRFWF9WRVJJRllfVkVORE9SCisrbWlzc2luZ19ycG1f ZW5saXN0IChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICByZXR1cm4gbWlzc2luZ19ycG1f ZW5saXN0XzEgKGZpbGVuYW1lLCAwKTsKKyt9CisrCisrZXh0ZXJuIGludCBycG1fdmVyaWZ5X3Zl bmRvciAoY29uc3QgY2hhciAqZmlsZW5hbWUpOworK2ludAorK3JwbV92ZXJpZnlfdmVuZG9yIChj b25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICByZXR1cm4gbWlzc2luZ19ycG1fZW5saXN0XzEg KGZpbGVuYW1lLCAxKTsKKyt9CisrI2VuZGlmCisrCisrc3RhdGljIGJvb2wKKyttaXNzaW5nX3Jw bV9saXN0X2NvbXBhciAoY29uc3QgY2hhciAqYXAsIGNvbnN0IGNoYXIgKmJwKQorK3sKKysgIHJl dHVybiBzdHJjb2xsIChhcCwgYnApIDwgMDsKKyt9CisrCisrLyogSXQgcmV0dXJucyBhIE5VTEwt dGVybWluYXRlZCBhcnJheSBvZiBzdHJpbmdzIG5lZWRpbmcgdG8gYmUgRlJFRWQuICBJdCBtYXkK KysgICBhbHNvIHJldHVybiBvbmx5IE5VTEwuICAqLworKworK3N0YXRpYyB2b2lkCisrbWlzc2lu Z19ycG1fbGlzdF9wcmludCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgbWlzc2luZ19ycG0gKmxpc3Rf aXRlcjsKKysKKysgIGlmIChtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMgPT0gMCkKKysgICAgcmV0 dXJuOworKworKyAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBhcnJheSAobWlzc2luZ19ycG1f bGlzdF9lbnRyaWVzKTsKKysgIHNpemVfdCBpZHggPSAwOworKworKyAgZm9yIChsaXN0X2l0ZXIg PSBtaXNzaW5nX3JwbV9saXN0OyBsaXN0X2l0ZXIgIT0gTlVMTDsKKysgICAgICAgbGlzdF9pdGVy ID0gbGlzdF9pdGVyLT5uZXh0KQorKyAgICB7CisrICAgICAgYXJyYXlbaWR4KytdID0gbGlzdF9p dGVyLT5ycG07CisrICAgIH0KKysgIGdkYl9hc3NlcnQgKGlkeCA9PSBtaXNzaW5nX3JwbV9saXN0 X2VudHJpZXMpOworKworKyAgc3RkOjpzb3J0IChhcnJheS5iZWdpbiAoKSwgYXJyYXkuZW5kICgp LCBtaXNzaW5nX3JwbV9saXN0X2NvbXBhcik7CisrCisrICAvKiBXZSB6ZXJvIG91dCB0aGUgbnVt YmVyIG9mIG1pc3NpbmcgUlBNcyBoZXJlIGJlY2F1c2Ugb2YgYSBuYXN0eQorKyAgICAgYnVnIChz ZWUgUkhCWiAxODAxOTc0KS4KKysKKysgICAgIFdoZW4gd2UgY2FsbCAncHV0c191bmZpbHRlcmVk JyBiZWxvdywgaWYgcGFnaW5hdGlvbiBpcyBvbiBhbmQgaWYKKysgICAgIHRoZSBudW1iZXIgb2Yg bWlzc2luZyBSUE1zIGlzIGJpZyBlbm91Z2ggdG8gdHJpZ2dlciBwYWdpbmF0aW9uLAorKyAgICAg d2Ugd2lsbCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgcmVjdXJzaW9uLiAgVGhlIGNhbGwgY2hhaW4g bG9va3MKKysgICAgIGxpa2UgdGhpczoKKysKKysgICAgIG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQg LT4gcHV0c191bmZpbHRlcmVkIC0+IGZwdXRzX21heWJlX2ZpbHRlcmVkCisrICAgICAtPiBwcm9t cHRfZm9yX2NvbnRpbnVlIC0+IGRpc3BsYXlfZ2RiX3Byb21wdCAtPgorKyAgICAgZGVidWdfZmx1 c2hfbWlzc2luZyAtPiBtaXNzaW5nX3JwbV9saXN0X3ByaW50IC4uLgorKworKyAgICAgRm9yIHRo aXMgcmVhc29uLCB3ZSBtYWtlIHN1cmUgTUlTU0lOR19SUE1fTElTVF9FTlRSSUVTIGlzIHplcm8K KysgICAgICpiZWZvcmUqIGNhbGxpbmcgYW55IHByaW50IGZ1bmN0aW9uLiAgKi8KKysgIG1pc3Np bmdfcnBtX2xpc3RfZW50cmllcyA9IDA7CisrCisrICBwcmludGZfdW5maWx0ZXJlZCAoXygiTWlz c2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm9zLCB1c2U6ICVzIiksCisrI2lmZGVmIERORl9ERUJVR0lO Rk9fSU5TVEFMTAorKwkJICAgICAiZG5mICIKKysjZW5kaWYKKysJCSAgICAgImRlYnVnaW5mby1p bnN0YWxsIik7CisrICBmb3IgKGNvbnN0IGNoYXIgKmVsIDogYXJyYXkpCisrICAgIHsKKysgICAg ICBwdXRzX3VuZmlsdGVyZWQgKCIgIik7CisrICAgICAgcHV0c191bmZpbHRlcmVkIChlbCk7Cisr ICAgIH0KKysgIHB1dHNfdW5maWx0ZXJlZCAoIlxuIik7CisrCisrICB3aGlsZSAobWlzc2luZ19y cG1fbGlzdCAhPSBOVUxMKQorKyAgICB7CisrICAgICAgbGlzdF9pdGVyID0gbWlzc2luZ19ycG1f bGlzdDsKKysgICAgICBtaXNzaW5nX3JwbV9saXN0ID0gbGlzdF9pdGVyLT5uZXh0OworKyAgICAg IHhmcmVlIChsaXN0X2l0ZXIpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrbWlzc2lu Z19ycG1fY2hhbmdlICh2b2lkKQorK3sKKysgIGRlYnVnX2ZsdXNoX21pc3NpbmcgKCk7CisrCisr ICBnZGJfYXNzZXJ0IChtaXNzaW5nX3JwbV9saXN0ID09IE5VTEwpOworKyAgaWYgKG1pc3Npbmdf cnBtX2hhc2ggIT0gTlVMTCkKKysgICAgeworKyAgICAgIGh0YWJfZGVsZXRlIChtaXNzaW5nX3Jw bV9oYXNoKTsKKysgICAgICBtaXNzaW5nX3JwbV9oYXNoID0gTlVMTDsKKysgICAgfQorK30KKysK KytlbnVtIG1pc3NpbmdfZXhlYworKyAgeworKyAgICAvKiBJbml0IHN0YXRlLiAgRVhFQ19CRkQg YWxzbyBzdGlsbCBjb3VsZCBiZSBOVUxMLiAgKi8KKysgICAgTUlTU0lOR19FWEVDX05PVF9UUklF RCwKKysgICAgLyogV2Ugc2F3IGEgbm9uLU5VTEwgRVhFQ19CRkQgYnV0IFJQTSBoYXMgbm8gaW5m byBhYm91dCBpdC4gICovCisrICAgIE1JU1NJTkdfRVhFQ19OT1RfRk9VTkQsCisrICAgIC8qIFdl IGZvdW5kIEVYRUNfQkZEIGJ5IFJQTSBhbmQgd2UgZWl0aGVyIGhhdmUgaXRzIHN5bWJvbHMgKGVp dGhlciBlbWJlZGRlZAorKyAgICAgICBvciBzZXBhcmF0ZSkgb3IgdGhlIG1haW4gZXhlY3V0YWJs ZSdzIFJQTSBpcyBub3cgY29udGFpbmVkIGluCisrICAgICAgIE1JU1NJTkdfUlBNX0hBU0guICAq LworKyAgICBNSVNTSU5HX0VYRUNfRU5MSVNURUQKKysgIH07Cisrc3RhdGljIGVudW0gbWlzc2lu Z19leGVjIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7CisrCisrI2VuZGlm CS8qIEhBVkVfTElCUlBNICovCisrCisrdm9pZAorK2RlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQp CisreworKyNpZmRlZiBIQVZFX0xJQlJQTQorKyAgbWlzc2luZ19ycG1fbGlzdF9wcmludCAoKTsK KysjZW5kaWYKKyt9CisrCiArLyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBp cyB1c2VkIG9ubHkgZm9yIHRoZSBkdXBsaWNpdGUgbWVzc2FnZXMKLSsgICAgIFRyeSB0byBpbnN0 YWxsIHRoZSBoYXNoIGZpbGUgLi4uCisrICAgICB5dW0gLS1lbmFibGVyZXBvPScqZGVidWcqJyBp bnN0YWxsIC4uLgogKyAgIGF2b2lkYW5jZS4gICovCiArCiArc3RydWN0IG1pc3NpbmdfZmlsZXBh aXIKQEAgLTc2MywxMSArMTIwOSwxNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9n ZGIvYnVpbGQtaWQuYwogKyAgICAgIC8qIEFsbCB0aGVpciBtZW1vcnkgY2FtZSBqdXN0IGZyb20g bWlzc2luZ19maWxlcGFpcl9PQlNUQUNLLiAgKi8KICsgICAgICBtaXNzaW5nX2ZpbGVwYWlyX2hh c2ggPSBOVUxMOwogKyAgICB9CisrI2lmZGVmIEhBVkVfTElCUlBNCisrICBtaXNzaW5nX2V4ZWMg PSBNSVNTSU5HX0VYRUNfTk9UX1RSSUVEOworKyNlbmRpZgogK30KICsKICtzdGF0aWMgdm9pZAog K2RlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCAodm9pZCkKICt7CisrI2lmZGVmIEhBVkVf TElCUlBNCisrICBtaXNzaW5nX3JwbV9jaGFuZ2UgKCk7CisrI2VuZGlmCiArICBtaXNzaW5nX2Zp bGVwYWlyX2NoYW5nZSAoKTsKICt9CiArCkBAIC04MzQsMTQgKzEyODYsMzggQEAgZGlmZiAtLWdp dCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICsKICsgICpzbG90ID0gbWlzc2lu Z19maWxlcGFpcjsKICsKLSsgIC8qIFdlIGRvIG5vdCBjb2xsZWN0IGFuZCBmbHVzaCB0aGVzZSBt ZXNzYWdlcyBhcyBlYWNoIHN1Y2ggbWVzc2FnZQotKyAgICAgYWxyZWFkeSByZXF1aXJlcyBpdHMg b3duIHNlcGFyYXRlIGxpbmVzLiAgKi8KKysjaWZkZWYgSEFWRV9MSUJSUE0KKysgIGlmIChtaXNz aW5nX2V4ZWMgPT0gTUlTU0lOR19FWEVDX05PVF9UUklFRCkKKysgICAgeworKyAgICAgIGNvbnN0 IGNoYXIgKmV4ZWNmaWxlbmFtZSA9IGdldF9leGVjX2ZpbGUgKDApOwogKwotKyAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJICAgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1 Z2luZm8gZm9yICVzXG4iKSwgYmluYXJ5KTsKLSsgIGlmIChkZWJ1ZyAhPSBOVUxMKQotKyAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIlRyeSB0byBpbnN0YWxsIHRoZSBoYXNo IGZpbGUgJXNcbiIpLAotKwkJCWRlYnVnKTsKKysgICAgICBpZiAoZXhlY2ZpbGVuYW1lICE9IE5V TEwpCisrCXsKKysJICBpZiAobWlzc2luZ19ycG1fZW5saXN0IChleGVjZmlsZW5hbWUpID09IDAp CisrCSAgICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfTk9UX0ZPVU5EOworKwkgIGVsc2UK KysJICAgIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19FTkxJU1RFRDsKKysJfQorKyAgICB9 CisrICBpZiAobWlzc2luZ19leGVjICE9IE1JU1NJTkdfRVhFQ19FTkxJU1RFRCkKKysgICAgaWYg KChiaW5hcnlbMF0gPT0gMCB8fCBtaXNzaW5nX3JwbV9lbmxpc3QgKGJpbmFyeSkgPT0gMCkKKysJ JiYgKGRlYnVnID09IE5VTEwgfHwgbWlzc2luZ19ycG1fZW5saXN0IChkZWJ1ZykgPT0gMCkpCisr I2VuZGlmCS8qIEhBVkVfTElCUlBNICovCisrICAgICAgeworKwkvKiBXZSBkbyBub3QgY29sbGVj dCBhbmQgZmx1c2ggdGhlc2UgbWVzc2FnZXMgYXMgZWFjaCBzdWNoIG1lc3NhZ2UKKysJICAgYWxy ZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAgKi8KKysKKysJZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCSAgICBfKCJNaXNzaW5nIHNlcGFyYXRlIGRlYnVn aW5mbyBmb3IgJXNcbiIpLCBiaW5hcnkpOworKyAgICAgICAgaWYgKGRlYnVnICE9IE5VTEwpCisr CSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJUcnk6ICVzICVzXG4iKSwKKysj aWZkZWYgRE5GX0RFQlVHSU5GT19JTlNUQUxMCisrCQkJICAgICAgImRuZiIKKysjZWxzZQorKwkJ CSAgICAgICJ5dW0iCisrI2VuZGlmCisrCQkJICAgICAgIiAtLWVuYWJsZXJlcG89JypkZWJ1Zyon IGluc3RhbGwiLCBkZWJ1Zyk7CisrICAgICAgfQogK30KICsKICAvKiBTZWUgYnVpbGQtaWQuaC4g ICovCkBAIC04ODQsOCArMTM2MCw5IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dk Yi9idWlsZC1pZC5jCiAgICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKICAgICAgewogICAgICAgIGlm IChzZXBhcmF0ZV9kZWJ1Z19maWxlX2RlYnVnKQotIAlwcmludGZfdW5maWx0ZXJlZCAoXygiXG5M b29raW5nIGZvciBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIChidWlsZC1pZCkgZm9yICIKLSAJCQkgICAg ICIlc1xuIiksIG9iamZpbGVfbmFtZSAob2JqZmlsZSkpOworQEAgLTIxNCw4ICsxMzM4LDIxIEBA IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKKyAJCQkgICAgXygiXG5Mb29raW5nIGZvciBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIChidWls ZC1pZCkgZm9yICIKKyAJCQkgICAgICAiJXNcbiIpLCBvYmpmaWxlX25hbWUgKG9iamZpbGUpKTsK ICAKICsgICAgICBjaGFyICpidWlsZF9pZF9maWxlbmFtZV9jc3RyID0gTlVMTDsKICAgICAgICBn ZGJfYmZkX3JlZl9wdHIgYWJmZCAoYnVpbGRfaWRfdG9fZGVidWdfYmZkIChidWlsZF9pZC0+c2l6 ZSwKQEAgLTkwNiw3ICsxMzgzLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2Ri L2J1aWxkLWlkLmMKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVi dWcgZmlsZS4gICovCiAgICAgICAgaWYgKGFiZmQgIT0gTlVMTAogIAkgICYmIGZpbGVuYW1lX2Nt cCAoYmZkX2dldF9maWxlbmFtZSAoYWJmZC5nZXQgKCkpLAotQEAgLTIyMywzICs4OTcsMjIgQEAg ZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQorQEAgLTIyOCwzICsxMzY1LDIyIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9i dWlsZGlkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICAKICAgIHJldHVybiBzdGQ6OnN0cmlu ZyAoKTsKICB9CkBAIC0xMDU2LDcgKzE1MzMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cu YyBiL2dkYi9jb3JlbG93LmMKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2Ri L2RvYy9nZGIudGV4aW5mbwogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbwotQEAgLTIxNDE1LDYgKzIxNDE1LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVz LgorQEAgLTIxNTI0LDYgKzIxNTI0LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQg dGFibGUKICAKQEAgLTEwODcsNyArMTU2NCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50 ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvaW5k ZXgtY2FjaGUuYyBiL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogLS0tIGEvZ2RiL2R3YXJmMi9p bmRleC1jYWNoZS5jCiArKysgYi9nZGIvZHdhcmYyL2luZGV4LWNhY2hlLmMKLUBAIC05NSw3ICs5 NSw3IEBAIGluZGV4X2NhY2hlOjpzdG9yZSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmls ZSkKK0BAIC05Nyw3ICs5Nyw3IEBAIGluZGV4X2NhY2hlOjpzdG9yZSAoZHdhcmYyX3Blcl9vYmpm aWxlICpwZXJfb2JqZmlsZSkKICAgICAgcmV0dXJuOwogIAogICAgLyogR2V0IGJ1aWxkIGlkIG9m IG9iamZpbGUuICAqLwpAQCAtMTA5NSw4ICsxNTcyLDggQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2Fy ZjIvaW5kZXgtY2FjaGUuYyBiL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogKyAgY29uc3QgYmZk X2J1aWxkX2lkICpidWlsZF9pZCA9IGJ1aWxkX2lkX2JmZF9zaGRyX2dldCAob2JqLT5vYmZkKTsK ICAgIGlmIChidWlsZF9pZCA9PSBudWxscHRyKQogICAgICB7Ci0gICAgICAgaWYgKGRlYnVnX2lu ZGV4X2NhY2hlKQotQEAgLTExMyw3ICsxMTMsOCBAQCBpbmRleF9jYWNoZTo6c3RvcmUgKGR3YXJm Ml9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUpCisgICAgICAgaW5kZXhfY2FjaGVfZGVidWcgKCJv YmpmaWxlICVzIGhhcyBubyBidWlsZCBpZCIsCitAQCAtMTE0LDcgKzExNCw4IEBAIGluZGV4X2Nh Y2hlOjpzdG9yZSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSkKICAKICAgIGlmIChk d3ogIT0gbnVsbHB0cikKICAgICAgewpAQCAtMTEwOSw3ICsxNTg2LDcgQEAgZGlmZiAtLWdpdCBh L2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYyBiL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dk Yi9kd2FyZjIvcmVhZC5jCiArKysgYi9nZGIvZHdhcmYyL3JlYWQuYwotQEAgLTU0NDcsNyArNTQ0 Nyw3IEBAIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9zZWN0aW9uIChvYmpmaWxlICpvYmos IFQgKnNlY3Rpb25fb3duZXIpCitAQCAtNTQ3Niw3ICs1NDc2LDcgQEAgZ2V0X2dkYl9pbmRleF9j b250ZW50c19mcm9tX3NlY3Rpb24gKG9iamZpbGUgKm9iaiwgVCAqc2VjdGlvbl9vd25lcikKICBz dGF0aWMgZ2RiOjphcnJheV92aWV3PGNvbnN0IGdkYl9ieXRlPgogIGdldF9nZGJfaW5kZXhfY29u dGVudHNfZnJvbV9jYWNoZSAob2JqZmlsZSAqb2JqLCBkd2FyZjJfcGVyX2JmZCAqZHdhcmYyX3Bl cl9iZmQpCiAgewpAQCAtMTExOCw3ICsxNTk1LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIv cmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAgIGlmIChidWlsZF9pZCA9PSBudWxscHRyKQog ICAgICByZXR1cm4ge307CiAgCi1AQCAtNTQ2MCw3ICs1NDYwLDcgQEAgZ2V0X2dkYl9pbmRleF9j b250ZW50c19mcm9tX2NhY2hlIChvYmpmaWxlICpvYmosIGR3YXJmMl9wZXJfYmZkICpkd2FyZjJf cGVyX2JmZCkKK0BAIC01NDg5LDcgKzU0ODksNyBAQCBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zy b21fY2FjaGUgKG9iamZpbGUgKm9iaiwgZHdhcmYyX3Blcl9iZmQgKmR3YXJmMl9wZXJfYmZkKQog IHN0YXRpYyBnZGI6OmFycmF5X3ZpZXc8Y29uc3QgZ2RiX2J5dGU+CiAgZ2V0X2dkYl9pbmRleF9j b250ZW50c19mcm9tX2NhY2hlX2R3eiAob2JqZmlsZSAqb2JqLCBkd3pfZmlsZSAqZHd6KQogIHsK QEAgLTExMzAsNyArMTYwNyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dk Yi9kd2FyZjIvcmVhZC5jCiBkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFk LmMKIC0tLSBhL2dkYi9lbGZyZWFkLmMKICsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0xMjcyLDcg KzEyNzIsOSBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3lt ZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKK0BAIC0xMjcwLDcgKzEyNzAsOSBAQCBlbGZf c3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mg c3ltZmlsZV9mbGFncykKICAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9 PSBOVUxMCiAgCSAgICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsg PT0gTlVMTCkKICAgICAgewpAQCAtMTE0MSw3ICsxNjE4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9l bGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgaWYgKGRlYnVnZmlsZS5lbXB0eSAo KSkKICAJZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAo b2JqZmlsZSk7Ci1AQCAtMTI4Nyw3ICsxMjg5LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIHN5bWZpbGVfYWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCitAQCAt MTI4NSw3ICsxMjg3LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHN5bWZpbGVfYWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCiAgICAgICAgZWxzZQogIAl7CiAg CSAgaGFzX2R3YXJmMiA9IGZhbHNlOwpAQCAtMTE1MCw3ICsxNjI3LDcgQEAgZGlmZiAtLWdpdCBh L2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCiAgCiAgCSAgaWYgKGJ1aWxkX2lkICE9IG51 bGxwdHIpCiAgCSAgICB7Ci1AQCAtMTMxMiw2ICsxMzE0LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdz KQorQEAgLTEzMTAsNiArMTMxMiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKICAJCSAgICAgIGhh c19kd2FyZjIgPSB0cnVlOwogIAkJICAgIH0KICAJCX0KQEAgLTExNjQsNyArMTY0MSw3IEBAIGRp ZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwogZGlmZiAtLWdpdCBhL2dk Yi9leGVjLmMgYi9nZGIvZXhlYy5jCiAtLS0gYS9nZGIvZXhlYy5jCiArKysgYi9nZGIvZXhlYy5j Ci1AQCAtMjM3LDcgKzIzNyw3IEBAIHZhbGlkYXRlX2V4ZWNfZmlsZSAoaW50IGZyb21fdHR5KQor QEAgLTIzOCw3ICsyMzgsNyBAQCB2YWxpZGF0ZV9leGVjX2ZpbGUgKGludCBmcm9tX3R0eSkKICAg IGN1cnJlbnRfZXhlY19maWxlID0gZ2V0X2V4ZWNfZmlsZSAoMCk7CiAgCiAgICBjb25zdCBiZmRf YnVpbGRfaWQgKmV4ZWNfZmlsZV9idWlsZF9pZApAQCAtMTE3Myw3ICsxNjUwLDcgQEAgZGlmZiAt LWdpdCBhL2dkYi9leGVjLmMgYi9nZGIvZXhlYy5jCiAgICBpZiAoZXhlY19maWxlX2J1aWxkX2lk ICE9IG51bGxwdHIpCiAgICAgIHsKICAgICAgICAvKiBQcmVwZW5kIHRoZSB0YXJnZXQgcHJlZml4 LCB0byBmb3JjZSBnZGJfYmZkX29wZW4gdG8gb3BlbiB0aGUKLUBAIC0yNTAsNyArMjUwLDcgQEAg dmFsaWRhdGVfZXhlY19maWxlIChpbnQgZnJvbV90dHkpCitAQCAtMjUxLDcgKzI1MSw3IEBAIHZh bGlkYXRlX2V4ZWNfZmlsZSAoaW50IGZyb21fdHR5KQogICAgICAgIGlmIChhYmZkICE9IG51bGxw dHIpCiAgCXsKICAJICBjb25zdCBiZmRfYnVpbGRfaWQgKnRhcmdldF9leGVjX2ZpbGVfYnVpbGRf aWQKQEAgLTExODUsNyArMTY2Miw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZXhlYy5jIGIvZ2RiL2V4 ZWMuYwogZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5oIGIvZ2RiL29iamZpbGVzLmgKIC0tLSBh L2dkYi9vYmpmaWxlcy5oCiArKysgYi9nZGIvb2JqZmlsZXMuaAotQEAgLTgxMiw2ICs4MTIsMTAg QEAgc3RydWN0IG9iamZpbGUKK0BAIC03NjksNiArNzY5LDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAg ICBib29sIHNraXBfaml0X3N5bWJvbF9sb29rdXAgPSBmYWxzZTsKICB9OwogIApAQCAtMTIyOCw3 ICsxNzA1LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3Zy NC5jCiAgCiAgc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNoX2xpbmtf bWFwX29mZnNldHMgKHZvaWQpOwogIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNl dHMgKHZvaWQpOwotQEAgLTEzNDgsOSArMTM0OSw1MSBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3Zy NF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAorQEAgLTEyNDgs OSArMTI0OSw1MSBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FE RFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAogIAkgIGNvbnRpbnVlOwogIAl9CiAgCkBAIC0xMjg2 LDcgKzE3NjMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1z dnI0LmMKIGRpZmYgLS1naXQgYS9nZGIvc291cmNlLmMgYi9nZGIvc291cmNlLmMKIC0tLSBhL2dk Yi9zb3VyY2UuYwogKysrIGIvZ2RiL3NvdXJjZS5jCi1AQCAtMTE3OCw3ICsxMTc4LDcgQEAgb3Bl bl9zb3VyY2VfZmlsZSAoc3RydWN0IHN5bXRhYiAqcykKK0BAIC0xMTk5LDcgKzExOTksNyBAQCBv cGVuX3NvdXJjZV9maWxlIChzdHJ1Y3Qgc3ltdGFiICpzKQogIAkgICAgICBzcmNwYXRoICs9IHMt PmZpbGVuYW1lOwogIAkgICAgfQogIApAQCAtMTM4MSw3ICsxODU4LDcgQEAgZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbmV3LXVpLXBlbmRpbmctaW5wdXQuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAog KysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTEzMCw3ICsxMzAsOCBAQCBpZiAh W2luZm8gZXhpc3RzIElOVEVSTkFMX0dEQkZMQUdTXSB7CitAQCAtMTQxLDcgKzE0MSw4IEBAIGlm ICFbaW5mbyBleGlzdHMgSU5URVJOQUxfR0RCRkxBR1NdIHsKICAJCSAgICItbngiIFwKICAJCSAg ICItZGF0YS1kaXJlY3RvcnkgJEJVSUxEX0RBVEFfRElSRUNUT1JZIiBcCiAgCQkgICB7LWlleCAi c2V0IGhlaWdodCAwIn0gXApAQCAtMTM5MSw3ICsxODY4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgfQogIAog ICMgVGhlIHZhcmlhYmxlIGdkYl9wcm9tcHQgaXMgYSByZWdleHAgd2hpY2ggbWF0Y2hlcyB0aGUg Z2RiIHByb21wdC4KLUBAIC0yMTMwLDYgKzIxMzEsMTcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFy dCB7IH0geworQEAgLTIyMDAsNiArMjIwMSwxNyBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsg fSB7CiAgCX0KICAgICAgfQogIAoKZGlmZiAtLWdpdCBhL2dkYi1jb250YWluZXItcmgtcGtnLnBh dGNoIGIvZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKaW5kZXggOTI5ZmY3ZC4uNjE4YjYyMSAx MDA2NDQKLS0tIGEvZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKKysrIGIvZ2RiLWNvbnRhaW5l ci1yaC1wa2cucGF0Y2gKQEAgLTksNyArOSw3IEBAIFN1YmplY3Q6IGdkYi1jb250YWluZXItcmgt cGtnLnBhdGNoCiBkaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS5jIGIvZ2RiL3JlbW90ZS5jCiAtLS0g YS9nZGIvcmVtb3RlLmMKICsrKyBiL2dkYi9yZW1vdGUuYwotQEAgLTE0MjkxLDcgKzE0MjkxLDE3 IEBAIHJlbW90ZV90YXJnZXQ6OnBpZF90b19leGVjX2ZpbGUgKGludCBwaWQpCitAQCAtMTQzNDMs NyArMTQzNDMsMTcgQEAgcmVtb3RlX3RhcmdldDo6cGlkX3RvX2V4ZWNfZmlsZSAoaW50IHBpZCkK ICAgIGNoYXIgKmFubmV4ID0gTlVMTDsKICAKICAgIGlmIChwYWNrZXRfc3VwcG9ydCAoUEFDS0VU X3FYZmVyX2V4ZWNfZmlsZSkgIT0gUEFDS0VUX0VOQUJMRSkKCmRpZmYgLS1naXQgYS9nZGItY29y ZS1vcGVuLXZkc28td2FybmluZy5wYXRjaCBiL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBh dGNoCmluZGV4IGY1OGQ4YmUuLmQ2ZjhlMDAgMTAwNjQ0Ci0tLSBhL2dkYi1jb3JlLW9wZW4tdmRz by13YXJuaW5nLnBhdGNoCisrKyBiL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCkBA IC0yNyw3ICsyNyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGli LXN5bWJvbC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvCiAgCiAgaWYgW2dldF9jb21w aWxlcl9pbmZvXSB7CiAgICAgIHJldHVybiAtMQotQEAgLTcxLDggKzcyLDI2IEBAIGdkYl90ZXN0 ICJiciBmb28yIiBcCitAQCAtNzAsOCArNzEsMjYgQEAgZ2RiX3Rlc3QgImJyIGZvbzIiIFwKICAJ ICJCcmVha3BvaW50Lio6IGZvbzIuIC4yIGxvY2F0aW9ucy4uKiIgXAogIAkgImZvbzIgaW4gbWRs aWIiCiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaCBiL2dkYi1m ZWRvcmEtbGlibmN1cnNlc3cucGF0Y2gKaW5kZXggZGYyMjA0NS4uNzQ1NmJmOCAxMDA2NDQKLS0t IGEvZ2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaAorKysgYi9nZGItZmVkb3JhLWxpYm5jdXJz ZXN3LnBhdGNoCkBAIC0xMiw3ICsxMiw3IEBAIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9z aG93X2J1Zy5jZ2k/aWQ9MTI3MDUzNAogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIv Y29uZmlndXJlCiAtLS0gYS9nZGIvY29uZmlndXJlCiArKysgYi9nZGIvY29uZmlndXJlCi1AQCAt OTU1Miw2ICs5NTUyLDcgQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5ZXM7IHRoZW4K K0BAIC05NTY3LDYgKzk1NjcsNyBAQCBpZiB0ZXN0IHgiJHByZWZlcl9jdXJzZXMiID0geHllczsg dGhlbgogICAgIyBzZWFyY2ggL3Vzci9sb2NhbC9pbmNsdWRlLCBpZiBuY3Vyc2VzIGlzIGluc3Rh bGxlZCBpbiAvdXNyL2xvY2FsLiAgQQogICAgIyBkZWZhdWx0IGluc3RhbGxhdGlvbiBvZiBuY3Vy c2VzIG9uIGFscGhhKi1kZWMtb3NmKiB3aWxsIGxlYWQgdG8gc3VjaAogICAgIyBhIHNpdHVhdGlv bi4KQEAgLTIwLDcgKzIwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29u ZmlndXJlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgd2FkZHN0ciIgPiY1CiAgJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyB3YWRkc3RyLi4uICIgPiY2OyB9CiAgaWYgJHth Y19jdl9zZWFyY2hfd2FkZHN0cis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtOTU3Niw3ICs5NTc3LDcg QEAgcmV0dXJuIHdhZGRzdHIgKCk7CitAQCAtOTU5MSw3ICs5NTkyLDcgQEAgcmV0dXJuIHdhZGRz dHIgKCk7CiAgICByZXR1cm4gMDsKICB9CiAgX0FDRU9GCkBAIC0yOSw3ICsyOSw3IEBAIGRpZmYg LS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgaWYgdGVzdCAteiAiJGFj X2xpYiI7IHRoZW4KICAgICAgYWNfcmVzPSJub25lIHJlcXVpcmVkIgogICAgZWxzZQotQEAgLTk2 NTAsNiArOTY1MSw3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC05NjY1LDYgKzk2NjYsNyBAQCBj YXNlICRob3N0X29zIGluCiAgZXNhYwogIAogICMgVGhlc2UgYXJlIHRoZSBsaWJyYXJpZXMgY2hl Y2tlZCBieSBSZWFkbGluZS4KQEAgLTM3LDcgKzM3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25m aWd1cmUgYi9nZGIvY29uZmlndXJlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIHRnZXRlbnQiID4mNQogICRh c19lY2hvX24gImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgdGdldGVudC4uLiAiID4m NjsgfQogIGlmICR7YWNfY3Zfc2VhcmNoX3RnZXRlbnQrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTk2 NzQsNyArOTY3Niw3IEBAIHJldHVybiB0Z2V0ZW50ICgpOworQEAgLTk2ODksNyArOTY5MSw3IEBA IHJldHVybiB0Z2V0ZW50ICgpOwogICAgcmV0dXJuIDA7CiAgfQogIF9BQ0VPRgpAQCAtNDksNyAr NDksNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKIGRpZmYg LS1naXQgYS9nZGIvY29uZmlndXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwogLS0tIGEvZ2RiL2Nv bmZpZ3VyZS5hYwogKysrIGIvZ2RiL2NvbmZpZ3VyZS5hYwotQEAgLTczNiw3ICs3MzYsOCBAQCBp ZiB0ZXN0IHgiJHByZWZlcl9jdXJzZXMiID0geHllczsgdGhlbgorQEAgLTcxMyw3ICs3MTMsOCBA QCBpZiB0ZXN0IHgiJHByZWZlcl9jdXJzZXMiID0geHllczsgdGhlbgogICAgIyBzZWFyY2ggL3Vz ci9sb2NhbC9pbmNsdWRlLCBpZiBuY3Vyc2VzIGlzIGluc3RhbGxlZCBpbiAvdXNyL2xvY2FsLiAg QQogICAgIyBkZWZhdWx0IGluc3RhbGxhdGlvbiBvZiBuY3Vyc2VzIG9uIGFscGhhKi1kZWMtb3Nm KiB3aWxsIGxlYWQgdG8gc3VjaAogICAgIyBhIHNpdHVhdGlvbi4KQEAgLTU5LDcgKzU5LDcgQEAg ZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCiAgCiAgICBp ZiB0ZXN0ICIkYWNfY3Zfc2VhcmNoX3dhZGRzdHIiICE9IG5vOyB0aGVuCiAgICAgIGN1cnNlc19m b3VuZD15ZXMKLUBAIC03NzgsNyArNzc5LDggQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTc1NSw3 ICs3NTYsOCBAQCBjYXNlICRob3N0X29zIGluCiAgZXNhYwogIAogICMgVGhlc2UgYXJlIHRoZSBs aWJyYXJpZXMgY2hlY2tlZCBieSBSZWFkbGluZS4KCmRpZmYgLS1naXQgYS9nZGItbGludXhfcGVy Zi1idW5kbGUucGF0Y2ggYi9nZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKaW5kZXggNmUyNzUw MC4uYTJlNDQzZCAxMDA2NDQKLS0tIGEvZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCisrKyBi L2dkYi1saW51eF9wZXJmLWJ1bmRsZS5wYXRjaApAQCAtMjEzLDcgKzIxMyw3IEBAIGRpZmYgLS1n aXQgYS9nZGIvbmF0L2xpbnV4LWJ0cmFjZS5oIGIvZ2RiL25hdC9saW51eC1idHJhY2UuaAogZGlm ZiAtLWdpdCBhL2dkYnN1cHBvcnQvY29tbW9uLm00IGIvZ2Ric3VwcG9ydC9jb21tb24ubTQKIC0t LSBhL2dkYnN1cHBvcnQvY29tbW9uLm00CiArKysgYi9nZGJzdXBwb3J0L2NvbW1vbi5tNAotQEAg LTE0MCw3ICsxNDAsNyBAQCBBQ19ERUZVTihbR0RCX0FDX0NPTU1PTl0sIFsKK0BAIC0xNTYsNyAr MTU2LDcgQEAgQUNfREVGVU4oW0dEQl9BQ19DT01NT05dLCBbCiAgICAgIEFDX1BSRVBST0NfSUZF TFNFKFtBQ19MQU5HX1NPVVJDRShbWwogICAgI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQuaD4K ICAgICNpZm5kZWYgUEVSRl9BVFRSX1NJWkVfVkVSNQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6LTg1 MzA3MS11cGRhdGUtbWFucGFnZXMucGF0Y2ggYi9nZGItcmhiei04NTMwNzEtdXBkYXRlLW1hbnBh Z2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ViNjdlLi4wMDAwMDAw Ci0tLSBhL2dkYi1yaGJ6LTg1MzA3MS11cGRhdGUtbWFucGFnZXMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyNTggKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEJydW5vIExhcnNlbiA8YmxhcnNlbkByZWRoYXQuY29tPgotRGF0ZTog VHVlLCA5IE5vdiAyMDIxIDE0OjA3OjI2IC0wMzAwCi1TdWJqZWN0OiBnZGItcmhiei04NTMwNzEt dXBkYXRlLW1hbnBhZ2VzLnBhdGNoCi0KLTs7IEJhY2twb3J0IG1hbnBhZ2UgdXBkYXRlCi0KLVtn ZGIvZG9jXTogVXBkYXRlZCBtYW5wYWdlcyB0byBiZSBjb25zaXN0ZW50IHdpdGggaGVscAotCi1V cGRhdGVkIG1hbnBhZ2VzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBoZWxwIGluZm9ybWF0aW9uIHBy b3ZpZGVkIGJ5IHRoZQotYmluYXJ5LiBUaGUgbWFpbiBjaGFuZ2VzIGFyZToKLQotKiBNYWtpbmcg YWxsIGxvbmctZm9ybSBvcHRpb25zIGhhdmUgJy0tJywgaW5zdGVhZCBvZiBhIHNpbmdsZSAnLSc7 Ci0qIGFkZGVkIG1vc3Qgb2YgdGhlIG1pc3Npbmcgb3B0aW9ucyB0byB0aGUgbWFucGFnZTsKLSog cmVtb3ZlZCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgJysnIGluc3RlYWQgb2YgJy0nLCBz aW5jZSBpdAotICBkb2Vzbid0IHNlZW0gdG8gYmUgc3VwcG9ydGVkIGFueW1vcmUuCi0KLVRoaXMg YWxzbyBmaXhlcyAyIHVwc3RyZWFtIGJ1Z3M6Ci0qIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVn emlsbGEvc2hvd19idWcuY2dpP2lkPTIzOTY1OyBieSBhZGRpbmcKLS0tYXJncyB0byB0aGUgbWFu cGFnZQotKiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0x MDYxOTsgYnkgYWRkaW5nIHRoZQotZG91YmxlIGRhc2hlcwotCi1kaWZmIC0tZ2l0IGEvZ2RiL2Rv Yy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tLSBhL2dkYi9kb2MvZ2RiLnRl eGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC00NzAzMCwxNCArNDcwMzAsNyBA QCBzd2l0Y2ggKGRpZS0+dGFnKQotIEBjIG1hbiB0aXRsZSBnZGIgVGhlIEdOVSBEZWJ1Z2dlcgot IAotIEBjIG1hbiBiZWdpbiBTWU5PUFNJUyBnZGIKLS1nZGIgW0BvcHRpb257LWhlbHB9XSBbQG9w dGlvbnstbmh9XSBbQG9wdGlvbnstbnh9XSBbQG9wdGlvbnstcX1dCi0tW0BvcHRpb257LWJhdGNo fV0gW0BvcHRpb257LWNkPX1AdmFye2Rpcn1dIFtAb3B0aW9uey1mfV0KLS1bQG9wdGlvbnstYn1A d3sgfUB2YXJ7YnBzfV0KLS0gICAgW0BvcHRpb257LXR0eT19QHZhcntkZXZ9XSBbQG9wdGlvbnst c30gQHZhcntzeW1maWxlfV0KLS1bQG9wdGlvbnstZX1Ad3sgfUB2YXJ7cHJvZ31dIFtAb3B0aW9u ey1zZX1Ad3sgfUB2YXJ7cHJvZ31dCi0tW0BvcHRpb257LWN9QHd7IH1AdmFye2NvcmV9XSBbQG9w dGlvbnstcH1Ad3sgfUB2YXJ7cHJvY0lEfV0KLS0gICAgW0BvcHRpb257LXh9QHd7IH1AdmFye2Nt ZHN9XSBbQG9wdGlvbnstZH1Ad3sgfUB2YXJ7ZGlyfV0KLS1bQHZhcntwcm9nfXxAdmFye3Byb2d9 IEB2YXJ7cHJvY0lEfXxAdmFye3Byb2d9IEB2YXJ7Y29yZX1dCi0rZ2RiIFtPUFRJT05TXSBbQHZh cntwcm9nfXxAdmFye3Byb2d9IEB2YXJ7cHJvY0lEfXxAdmFye3Byb2d9IEB2YXJ7Y29yZX1dCi0g QGMgbWFuIGVuZAotIAotIEBjIG1hbiBiZWdpbiBERVNDUklQVElPTiBnZGIKLUBAIC00NzEwMSw4 ICs0NzA5NCw4IEBAIEhlcmUgYXJlIHNvbWUgb2YgdGhlIG1vc3QgZnJlcXVlbnRseSBuZWVkZWQg QHZhbHVle0dEQk59IGNvbW1hbmRzOgotIAotIEBjIHBvZDJtYW4gaGlnaGxpZ2h0cyB0aGUgcmln aHQgaGFuZCBzaWRlIG9mIHRoZSBAaXRlbSBsaW5lcy4KLSBAdGFibGUgQGVudgotLUBpdGVtIGJy ZWFrIFtAdmFye2ZpbGV9Ol1AdmFye2Z1bmN0aW9ufQotLVNldCBhIGJyZWFrcG9pbnQgYXQgQHZh cntmdW5jdGlvbn0gKGluIEB2YXJ7ZmlsZX0pLgotK0BpdGVtIGJyZWFrIFtAdmFye2ZpbGV9Ol1b QHZhcntmdW5jdGlvbn18QHZhcntsaW5lfV0KLStTZXQgYSBicmVha3BvaW50IGF0IEB2YXJ7ZnVu Y3Rpb259IG9yIEB2YXJ7bGluZX0gKGluIEB2YXJ7ZmlsZX0pLgotIAotIEBpdGVtIHJ1biBbQHZh cnthcmdsaXN0fV0KLSBTdGFydCB5b3VyIHByb2dyYW0gKHdpdGggQHZhcnthcmdsaXN0fSwgaWYg c3BlY2lmaWVkKS4KLUBAIC00NzE1MCw3MiArNDcxNDMsOTEgQEAgYXMgdGhlIEBjb2Rle2dkYn0g ZW50cnkgaW4gdGhlIEBjb2Rle2luZm99IHByb2dyYW0uCi0gQW55IGFyZ3VtZW50cyBvdGhlciB0 aGFuIG9wdGlvbnMgc3BlY2lmeSBhbiBleGVjdXRhYmxlCi0gZmlsZSBhbmQgY29yZSBmaWxlIChv ciBwcm9jZXNzIElEKTsgdGhhdCBpcywgdGhlIGZpcnN0IGFyZ3VtZW50Ci0gZW5jb3VudGVyZWQg d2l0aCBubwotLWFzc29jaWF0ZWQgb3B0aW9uIGZsYWcgaXMgZXF1aXZhbGVudCB0byBhIEBvcHRp b257LXNlfSBvcHRpb24sIGFuZCB0aGUgc2Vjb25kLAotK2Fzc29jaWF0ZWQgb3B0aW9uIGZsYWcg aXMgZXF1aXZhbGVudCB0byBhIEBvcHRpb257LS1zZX0gb3B0aW9uLCBhbmQgdGhlIHNlY29uZCwK LSBpZiBhbnksIGlzIGVxdWl2YWxlbnQgdG8gYSBAb3B0aW9uey1jfSBvcHRpb24gaWYgaXQncyB0 aGUgbmFtZSBvZiBhIGZpbGUuCi0gTWFueSBvcHRpb25zIGhhdmUKLS1ib3RoIGxvbmcgYW5kIHNo b3J0IGZvcm1zOyBib3RoIGFyZSBzaG93biBoZXJlLiAgVGhlIGxvbmcgZm9ybXMgYXJlIGFsc28K LStib3RoIGxvbmcgYW5kIGFiYnJldmlhdGVkIGZvcm1zOyBib3RoIGFyZSBzaG93biBoZXJlLiAg VGhlIGxvbmcgZm9ybXMgYXJlIGFsc28KLSByZWNvZ25pemVkIGlmIHlvdSB0cnVuY2F0ZSB0aGVt LCBzbyBsb25nIGFzIGVub3VnaCBvZiB0aGUgb3B0aW9uIGlzCi0tcHJlc2VudCB0byBiZSB1bmFt YmlndW91cy4gIChJZiB5b3UgcHJlZmVyLCB5b3UgY2FuIGZsYWcgb3B0aW9uCi0tYXJndW1lbnRz IHdpdGggQG9wdGlvbnsrfSByYXRoZXIgdGhhbiBAb3B0aW9uey19LCB0aG91Z2ggd2UgaWxsdXN0 cmF0ZSB0aGUKLS1tb3JlIHVzdWFsIGNvbnZlbnRpb24uKQotK3ByZXNlbnQgdG8gYmUgdW5hbWJp Z3VvdXMuCi0rCi0rVGhlIGFiYnJldmlhdGVkIGZvcm1zIGFyZSBzaG93biBoZXJlIHdpdGggQHNh bXB7LX0gYW5kIGxvbmcgZm9ybXMgYXJlIHNob3duCi0rd2l0aCBAc2FtcHstLX0gdG8gcmVmbGVj dCBob3cgdGhleSBhcmUgc2hvd24gaW4gQG9wdGlvbnstLWhlbHB9LiBIb3dldmVyLAotK0B2YWx1 ZXtHREJOfSByZWNvZ25pemVzIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zIGZvciBt b3N0IG9wdGlvbnM6Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGl0ZW0gLS1vcHRpb249QHZhcnt2YWx1 ZX0KLStAaXRlbSAtLW9wdGlvbiBAdmFye3ZhbHVlfQotK0BpdGVtIC1vcHRpb249QHZhcnt2YWx1 ZX0KLStAaXRlbSAtb3B0aW9uIEB2YXJ7dmFsdWV9Ci0rQGl0ZW0gLS1vPUB2YXJ7dmFsdWV9Ci0r QGl0ZW0gLS1vIEB2YXJ7dmFsdWV9Ci0rQGl0ZW0gLW89QHZhcnt2YWx1ZX0KLStAaXRlbSAtbyBA dmFye3ZhbHVlfQotK0BlbmQgdGFibGUKLSAKLSBBbGwgdGhlIG9wdGlvbnMgYW5kIGNvbW1hbmQg bGluZSBhcmd1bWVudHMgeW91IGdpdmUgYXJlIHByb2Nlc3NlZAotIGluIHNlcXVlbnRpYWwgb3Jk ZXIuICBUaGUgb3JkZXIgbWFrZXMgYSBkaWZmZXJlbmNlIHdoZW4gdGhlIEBvcHRpb257LXh9Ci0g b3B0aW9uIGlzIHVzZWQuCi0gCi0gQHRhYmxlIEBlbnYKLS1AaXRlbSAtaGVscAotK0BpdGVtIC0t aGVscAotIEBpdGVteCAtaAotIExpc3QgYWxsIG9wdGlvbnMsIHdpdGggYnJpZWYgZXhwbGFuYXRp b25zLgotIAotLUBpdGVtIC1zeW1ib2xzPUB2YXJ7ZmlsZX0KLStAaXRlbSAtLXN5bWJvbHM9QHZh cntmaWxlfQotIEBpdGVteCAtcyBAdmFye2ZpbGV9Ci0tUmVhZCBzeW1ib2wgdGFibGUgZnJvbSBm aWxlIEB2YXJ7ZmlsZX0uCi0rUmVhZCBzeW1ib2wgdGFibGUgZnJvbSBAdmFye2ZpbGV9LgotIAot LUBpdGVtIC13cml0ZQotK0BpdGVtIC0td3JpdGUKLSBFbmFibGUgd3JpdGluZyBpbnRvIGV4ZWN1 dGFibGUgYW5kIGNvcmUgZmlsZXMuCi0gCi0tQGl0ZW0gLWV4ZWM9QHZhcntmaWxlfQotK0BpdGVt IC0tZXhlYz1AdmFye2ZpbGV9Ci0gQGl0ZW14IC1lIEB2YXJ7ZmlsZX0KLS1Vc2UgZmlsZSBAdmFy e2ZpbGV9IGFzIHRoZSBleGVjdXRhYmxlIGZpbGUgdG8gZXhlY3V0ZSB3aGVuCi0rVXNlIEB2YXJ7 ZmlsZX0gYXMgdGhlIGV4ZWN1dGFibGUgZmlsZSB0byBleGVjdXRlIHdoZW4KLSBhcHByb3ByaWF0 ZSwgYW5kIGZvciBleGFtaW5pbmcgcHVyZSBkYXRhIGluIGNvbmp1bmN0aW9uIHdpdGggYSBjb3Jl Ci0gZHVtcC4KLSAKLS1AaXRlbSAtc2U9QHZhcntmaWxlfQotLVJlYWQgc3ltYm9sIHRhYmxlIGZy b20gZmlsZSBAdmFye2ZpbGV9IGFuZCB1c2UgaXQgYXMgdGhlIGV4ZWN1dGFibGUKLStAaXRlbSAt LXNlPUB2YXJ7ZmlsZX0KLStSZWFkIHN5bWJvbCB0YWJsZSBmcm9tIEB2YXJ7ZmlsZX0gYW5kIHVz ZSBpdCBhcyB0aGUgZXhlY3V0YWJsZQotIGZpbGUuCi0gCi0tQGl0ZW0gLWNvcmU9QHZhcntmaWxl fQotK0BpdGVtIC0tY29yZT1AdmFye2ZpbGV9Ci0gQGl0ZW14IC1jIEB2YXJ7ZmlsZX0KLS1Vc2Ug ZmlsZSBAdmFye2ZpbGV9IGFzIGEgY29yZSBkdW1wIHRvIGV4YW1pbmUuCi0rVXNlIEB2YXJ7Zmls ZX0gYXMgYSBjb3JlIGR1bXAgdG8gZXhhbWluZS4KLSAKLS1AaXRlbSAtY29tbWFuZD1AdmFye2Zp bGV9Ci0rQGl0ZW0gLS1jb21tYW5kPUB2YXJ7ZmlsZX0KLSBAaXRlbXggLXggQHZhcntmaWxlfQot LUV4ZWN1dGUgQHZhbHVle0dEQk59IGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9LgotK0V4 ZWN1dGUgQHZhbHVle0dEQk59IGNvbW1hbmRzIGZyb20gQHZhcntmaWxlfS4KLSAKLStAaXRlbSAt LWV2YWwtY29tbWFuZD1AdmFye2NvbW1hbmR9Ci0gQGl0ZW0gLWV4IEB2YXJ7Y29tbWFuZH0KLSBF eGVjdXRlIGdpdmVuIEB2YWx1ZXtHREJOfSBAdmFye2NvbW1hbmR9LgotIAotLUBpdGVtIC1kaXJl Y3Rvcnk9QHZhcntkaXJlY3Rvcnl9Ci0rQGl0ZW0gLS1pbml0LWV2YWwtY29tbWFuZD1AdmFye2Nv bW1hbmR9Ci0rQGl0ZW0gLWlleAotK0V4ZWN1dGUgQHZhbHVle0dEQk59IEB2YXJ7Y29tbWFuZH0g YmVmb3JlIGxvYWRpbmcgdGhlIGluZmVyaW9yLgotKwotK0BpdGVtIC0tZGlyZWN0b3J5PUB2YXJ7 ZGlyZWN0b3J5fQotIEBpdGVteCAtZCBAdmFye2RpcmVjdG9yeX0KLSBBZGQgQHZhcntkaXJlY3Rv cnl9IHRvIHRoZSBwYXRoIHRvIHNlYXJjaCBmb3Igc291cmNlIGZpbGVzLgotIAotLUBpdGVtIC1u aAotK0BpdGVtIC0tbmgKLSBEbyBub3QgZXhlY3V0ZSBjb21tYW5kcyBmcm9tIEBmaWxle34vLmNv bmZpZy9nZGIvZ2RiaW5pdH0sCi0gQGZpbGV7fi8uZ2RiaW5pdH0sIEBmaWxle34vLmNvbmZpZy9n ZGIvZ2RiZWFybHlpbml0fSwgb3IKLSBAZmlsZXt+Ly5nZGJlYXJseWluaXR9Ci0gCi0tQGl0ZW0g LW54Ci0rQGl0ZW0gLS1ueAotIEBpdGVteCAtbgotIERvIG5vdCBleGVjdXRlIGNvbW1hbmRzIGZy b20gYW55IEBmaWxley5nZGJpbml0fSBvcgotIEBmaWxley5nZGJlYXJseWluaXR9IGluaXRpYWxp emF0aW9uIGZpbGVzLgotIAotLUBpdGVtIC1xdWlldAotK0BpdGVtIC0tcXVpZXQKLStAaXRlbSAt LXNpbGVudAotIEBpdGVteCAtcQotIGBgUXVpZXQnJy4gIERvIG5vdCBwcmludCB0aGUgaW50cm9k dWN0b3J5IGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuICBUaGVzZQotIG1lc3NhZ2VzIGFyZSBhbHNv IHN1cHByZXNzZWQgaW4gYmF0Y2ggbW9kZS4KLSAKLS1AaXRlbSAtYmF0Y2gKLStAaXRlbSAtLWJh dGNoCi0gUnVuIGluIGJhdGNoIG1vZGUuICBFeGl0IHdpdGggc3RhdHVzIEBjb2RlezB9IGFmdGVy IHByb2Nlc3NpbmcgYWxsIHRoZSBjb21tYW5kCi0gZmlsZXMgc3BlY2lmaWVkIHdpdGggQG9wdGlv bnsteH0gKGFuZCBAZmlsZXsuZ2RiaW5pdH0sIGlmIG5vdCBpbmhpYml0ZWQpLgotIEV4aXQgd2l0 aCBub256ZXJvIHN0YXR1cyBpZiBhbiBlcnJvciBvY2N1cnMgaW4gZXhlY3V0aW5nIHRoZSBAdmFs dWV7R0RCTn0KLUBAIC00NzIzMywxMSArNDcyNDUsNzEgQEAgUHJvZ3JhbSBleGl0ZWQgbm9ybWFs bHkuCi0gKHdoaWNoIGlzIG9yZGluYXJpbHkgaXNzdWVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBydW5u aW5nIHVuZGVyIEB2YWx1ZXtHREJOfSBjb250cm9sCi0gdGVybWluYXRlcykgaXMgbm90IGlzc3Vl ZCB3aGVuIHJ1bm5pbmcgaW4gYmF0Y2ggbW9kZS4KLSAKLS1AaXRlbSAtY2Q9QHZhcntkaXJlY3Rv cnl9Ci0rQGl0ZW0gLS1iYXRjaC1zaWxlbnQKLStSdW4gaW4gYmF0Y2ggbW9kZSwganVzdCBsaWtl IEBvcHRpb257LS1iYXRjaH0sIGJ1dCB0b3RhbGx5IHNpbGVudC4gIEFsbCBAdmFsdWV7R0RCTn0K LStvdXRwdXQgaXMgc3VwcmVzc2VkIChzdGRlcnIgaXMgdW5hZmZlY3RlZCkuICBUaGlzIGlzIG11 Y2ggcXVpZXRlciB0aGFuCi0rQG9wdGlvbnstLXNpbGVudH0gYW5kIHdvdWxkIGJlIHVzZWxlc3Mg Zm9yIGFuIGludGVyYWN0aXZlIHNlc3Npb24uCi0rCi0rVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIHdoZW4gdXNpbmcgdGFyZ2V0cyB0aGF0IGdpdmUgQHNhbXB7TG9hZGluZyBzZWN0aW9ufQot K21lc3NhZ2VzLCBmb3IgZXhhbXBsZS4KLSsKLStOb3RlIHRoYXQgdGFyZ2V0cyB0aGF0IGdpdmUg dGhlaXIgb3V0cHV0IHZpYSBAdmFsdWV7R0RCTn0sIGFzIG9wcG9zZWQgdG8gd3JpdGluZwotK2Rp cmVjdGx5IHRvIEBjb2Rle3N0ZG91dH0sIHdpbGwgYWxzbyBiZSBtYWRlIHNpbGVudC4KLSsKLStA aXRlbSAtLWFyZ3MgQHZhcntwcm9nfSBbQHZhcnthcmdsaXN0fV0KLStDaGFuZ2UgaW50ZXJwcmV0 YXRpb24gb2YgY29tbWFuZCBsaW5lIHNvIHRoYXQgYXJndW1lbnRzIGZvbGxvd2luZyB0aGlzCi0r b3B0aW9uIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIHRoZSBpbmZlcmlvci4gIEFzIGFuIGV4 YW1wbGUsIHRha2UKLSt0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQot K2dkYiAuL2Eub3V0IC1xCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAbm9pbmRlbnQKLStJdCB3 b3VsZCBzdGFydCBAdmFsdWV7R0RCTn0gd2l0aCBAb3B0aW9uey1xfSwgbm90IHByaW50aW5nIHRo ZSBpbnRyb2R1Y3RvcnkgbWVzc2FnZS4gIE9uCi0rdGhlIG90aGVyIGhhbmQsIHVzaW5nOgotKwot K0BzbWFsbGV4YW1wbGUKLStnZGIgLS1hcmdzIC4vYS5vdXQgLXEKLStAZW5kIHNtYWxsZXhhbXBs ZQotKwotK0Bub2luZGVudAotK3N0YXJ0cyBAdmFsdWV7R0RCTn0gd2l0aCB0aGUgaW50cm9kdWN0 b3J5IG1lc3NhZ2UsIGFuZCBwYXNzZXMgdGhlIG9wdGlvbiB0byB0aGUgaW5mZXJpb3IuCi0rCi0r QGl0ZW0gLS1waWQ9QHZhcntwaWR9Ci0rQXR0YWNoIEB2YWx1ZXtHREJOfSB0byBhbiBhbHJlYWR5 IHJ1bm5pbmcgcHJvZ3JhbSwgd2l0aCB0aGUgUElEIEB2YXJ7cGlkfS4KLSsKLStAaXRlbSAtLXR1 aQotK09wZW4gdGhlIHRlcm1pbmFsIHVzZXIgaW50ZXJmYWNlLgotKwotK0BpdGVtIC0tcmVhZG5v dwotK1JlYWQgYWxsIHN5bWJvbHMgZnJvbSB0aGUgZ2l2ZW4gc3ltZmlsZSBvbiB0aGUgZmlyc3Qg YWNjZXNzLgotKwotK0BpdGVtIC0tcmVhZG5ldmVyCi0rRG8gbm90IHJlYWQgc3ltYm9sIGZpbGVz LgotKwotK0BpdGVtIC0tZGJ4Ci0rUnVuIGluIERCWCBjb21wYXRpYmlsaXR5IG1vZGUuCi0rCi0r QGl0ZW0gLS1yZXR1cm4tY2hpbGQtcmVzdWx0Ci0rQHZhbHVle0dEQk59J3MgZXhpdCBjb2RlIHdp bGwgYmUgdGhlIHNhbWUgYXMgdGhlIGNoaWxkJ3MgZXhpdCBjb2RlLgotKwotK0BpdGVtIC0tY29u ZmlndXJhdGlvbgotK1ByaW50IGRldGFpbHMgYWJvdXQgR0RCIGNvbmZpZ3VyYXRpb24gYW5kIHRo ZW4gZXhpdC4KLSsKLStAaXRlbSAtLXZlcnNpb24KLStQcmludCB2ZXJzaW9uIGluZm9ybWF0aW9u IGFuZCB0aGVuIGV4aXQuCi0rCi0rQGl0ZW0gLS1jZD1AdmFye2RpcmVjdG9yeX0KLSBSdW4gQHZh bHVle0dEQk59IHVzaW5nIEB2YXJ7ZGlyZWN0b3J5fSBhcyBpdHMgd29ya2luZyBkaXJlY3Rvcnks Ci0gaW5zdGVhZCBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gCi0tQGl0ZW0gLWZ1bGxuYW1l Ci0rQGl0ZW0gLS1kYXRhLWRpcmVjdG9yeT1AdmFye2RpcmVjdG9yeX0KLStAaXRlbSAtRAotK1J1 biBAdmFsdWV7R0RCTn0gdXNpbmcgQHZhcntkaXJlY3Rvcnl9IGFzIGl0cyBkYXRhIGRpcmVjdG9y eS4gIFRoZSBkYXRhCi0rZGlyZWN0b3J5IGlzIHdoZXJlIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBm b3IgaXRzIGF1eGlsaWFyeSBmaWxlcy4KLSsKLStAaXRlbSAtLWZ1bGxuYW1lCi0gQGl0ZW14IC1m Ci0gRW1hY3Mgc2V0cyB0aGlzIG9wdGlvbiB3aGVuIGl0IHJ1bnMgQHZhbHVle0dEQk59IGFzIGEg c3VicHJvY2Vzcy4gIEl0IHRlbGxzCi0gQHZhbHVle0dEQk59IHRvIG91dHB1dCB0aGUgZnVsbCBm aWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIGluIGEgc3RhbmRhcmQsCi1AQCAtNDcyNDgsMTEgKzQ3 MzIwLDE0IEBAIGFuZCBjaGFyYWN0ZXIgcG9zaXRpb24gc2VwYXJhdGVkIGJ5IGNvbG9ucywgYW5k IGEgbmV3bGluZS4gIFRoZQotIEVtYWNzLXRvLUB2YWx1ZXtHREJOfSBpbnRlcmZhY2UgcHJvZ3Jh bSB1c2VzIHRoZSB0d28gQHNhbXB7XDAzMn0KLSBjaGFyYWN0ZXJzIGFzIGEgc2lnbmFsIHRvIGRp c3BsYXkgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZnJhbWUuCi0gCi0tQGl0ZW0gLWIgQHZhcnti cHN9Ci0rQGl0ZW0gLWIgQHZhcntiYXVkcmF0ZX0KLSBTZXQgdGhlIGxpbmUgc3BlZWQgKGJhdWQg cmF0ZSBvciBiaXRzIHBlciBzZWNvbmQpIG9mIGFueSBzZXJpYWwKLSBpbnRlcmZhY2UgdXNlZCBi eSBAdmFsdWV7R0RCTn0gZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCi0gCi0tQGl0ZW0gLXR0eT1AdmFy e2RldmljZX0KLStAaXRlbSAtbCBAdmFye3RpbWVvdXR9Ci0rU2V0IHRpbWVvdXQsIGluIHNlY29u ZHMsIGZvciByZW1vdGUgZGVidWdnaW5nLgotKwotK0BpdGVtIC0tdHR5PUB2YXJ7ZGV2aWNlfQot IFJ1biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0 IGFuZCBvdXRwdXQuCi0gQGVuZCB0YWJsZQotIEBjIG1hbiBlbmQKCmRpZmYgLS1naXQgYS9nZGIt cmhiejE5NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaCBiL2dkYi1yaGJ6MTk3Njg4Ny1m aWVsZC1sb2NhdGlvbi1raW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MGY5YWNjLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlvbi1raW5k LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hF UyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbGV4YW5kcmE9MjBI PUMzPUExamtvdj1DMz1BMT89IDxhaGFqa292YUByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyOSBT ZXAgMjAyMSAxMDo1ODo1MCArMDIwMAotU3ViamVjdDogZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxv Y2F0aW9uLWtpbmQucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB3aGljaCBmaXhl cyBpbnRlcm5hbC1lcnJvcjogVW5leHBlY3RlZAotOzt0eXBlIGZpZWxkIGxvY2F0aW9uIGtpbmQg KFJIQlogMTk3Njg4NykuCi0KLWdkYnR5cGVzLmM6IEFkZCB0aGUgY2FzZSBmb3IgRklFTERfTE9D X0tJTkRfRFdBUkZfQkxPQ0sKLQotVGhlIGNhc2UgZm9yIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JM T0NLIHdhcyBtaXNzaW5nIGZvcgotc3dpdGNoIFRZUEVfRklFTERfTE9DX0tJTkQuIFRoYXMgY2F1 c2VkIGFuIGludGVybmFsLWVycm9yCi11bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuCi0KLUZpeGVz IGJ1ZyAyODAzMC4KLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dkYnR5cGVz LmMKLS0tLSBhL2dkYi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTU1NzEs NiArNTU3MSwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSAJCQkJICB4c3RyZHVwIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodHlwZSwKLSAJ CQkJCQkJCSAgICAgICBpKSkpOwotIAkgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIEZJ RUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLOgotKyAgICAgICAgICAgICAgU0VUX0ZJRUxEX0RXQVJG X0JMT0NLIChuZXdfdHlwZS0+ZmllbGQgKGkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLICh0eXBlLCBpKSk7Ci0rICAgICAgICAg ICAgICBicmVhazsKLSAJICAgIGRlZmF1bHQ6Ci0gCSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJ TEVfXywgX19MSU5FX18sCi0gCQkJICAgICAgXygiVW5leHBlY3RlZCB0eXBlIGZpZWxkIGxvY2F0 aW9uIGtpbmQ6ICVkIiksCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXIt Zm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0Y2ggYi9nZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1m b3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg NDMzZjUxZC4uMDAwMDAwMAotLS0gYS9nZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0cmFu LWxleC1wcm9ibGVtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxMSBPY3QgMjAyMSAxMToyMjow NCAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgt cHJvYmxlbXMucGF0Y2gKLQotOzsgQmFja3BvcnQgZ2RiLmZvcnRyYW4gdGVzdHN1aXRlIGNoYW5n ZXMgaW4gb3JkZXIgdG8gYXZvaWQgRm9ydHJhbgotOzsgbGV4aWNhbCBhbmFseXplciBidWcuCi0K LVtnZGIvdGVzdHN1aXRlXSBGaXggRkFJTCBpbiBnZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCi0K LVdoZW4gcnVubmluZyB0ZXN0LWNhc2UgZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cCBvbiBvcGVu U1VTRSBUdW1ibGV3ZWVkCi0od2l0aCBnbGliYyAyLjM0KSBJIHJ1biBpbnRvOgotLi4uCi0oZ2Ri KSBeTQotUEFTUzogZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cDogbWkgcnVudG8gcHJvZ19hcnJh eQotRXhwZWN0aW5nOiBeKC12YXItY3JlYXRlIGFycmF5IFwqIGFycmF5W15NCi1dKyk/KFxeZG9u ZSxuYW1lPSJhcnJheSIsbnVtY2hpbGQ9IlswLTldKyIsdmFsdWU9Ii4qIix0eXBlPS4qLGhhc19t b3JlPSIwIlteTQotXStbKF1nZGJbKV0gXk0KLVsgXSopCi0tdmFyLWNyZWF0ZSBhcnJheSAqIGFy cmF5Xk0KLSYiQXR0ZW1wdCB0byB1c2UgYSB0eXBlIG5hbWUgYXMgYW4gZXhwcmVzc2lvbi5cbiJe TQotXmVycm9yLG1zZz0iLXZhci1jcmVhdGU6IHVuYWJsZSB0byBjcmVhdGUgdmFyaWFibGUgb2Jq ZWN0Il5NCi0oZ2RiKSBeTQotRkFJTDogZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cDogY3JlYXRl IGxvY2FsIHZhcmlhYmxlIGFycmF5ICh1bmV4cGVjdGVkIG91dHB1dCkKLS4uLgotCi1UaGUgcHJv YmxlbSBpcyB0aGF0IHRoZSBuYW1lIGFycmF5IGlzIHVzZWQgYm90aDoKLS0gYXMgdGhlIG5hbWUg Zm9yIGEgbG9jYWwgdmFyaWFibGUKLS0gYXMgdGhlIG5hbWUgb2YgYSB0eXBlIGluIGdsaWJjLCBp biBmaWxlIG1hbGxvYy9keW5hcnJheS1za2VsZXRvbi5jLCBhcyBpbmNsdWRlZAotICBieSBuc3Mv bnNzX2ZpbGVzL2ZpbGVzLWhvc3RzLmMuCi0KLUZpeCB0aGlzIGJ5IGlnbm9yaW5nIHRoZSBzaGFy ZWQgbGliIHN5bWJvbHMuCi0KLUxpa2V3aXNlIGluIGEgY291cGxlIG9mIG90aGVyIGZvcnRyYW4g dGVzdHMuCi0KLVRlc3RlZCBvbiB4ODZfNjQtbGludXguCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FsbG9jYXRlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2FsbG9jYXRlZC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYWxsb2Nh dGVkLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hbGxvY2F0ZWQuZXhwCi1A QCAtMjUsMTEgKzI1LDE3IEBAIGlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0gICAgIHJldHVybiAtMQotIH0KLSAKLSsjIEF2 b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLXNv bGliLWFkZCBvZmYiCi0rCi0gaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSAgICAgdW50ZXN0 ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotKyMgQXZv aWQgbGliYyBzeW1ib2xzLCBpbiBwYXJ0aWN1bGFyIHRoZSAnYXJyYXknIHR5cGUuCi0rZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCi0rCi0gIyBTZXQgYWxsIHRoZSBicmVha3Bv aW50cy4KLSBmb3IgeyBzZXQgaSAxIH0geyAkaSA8IDYgfSB7IGluY3IgaSB9IHsKLSAgICAgZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrcG9pbnQgJGkiXQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi1AQCAtMjUsMTEgKzI1LDE3 IEBAIGlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0g JHtzcmNmaWxlfSBcCi0gICAgIHJldHVybiAtMQotIH0KLSAKLSsjIEF2b2lkIHNoYXJlZCBsaWIg c3ltYm9scy4KLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLXNvbGliLWFkZCBvZmYiCi0r Ci0gaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSAgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBy dW4gdG8gbWFpbiIKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotKyMgQXZvaWQgbGliYyBzeW1ib2xz LCBpbiBwYXJ0aWN1bGFyIHRoZSAnYXJyYXknIHR5cGUuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJu b3NoYXJlZGxpYnJhcnkiCi0rCi0gIyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiRGlzcGxheSBNZXNzYWdlIEJyZWFrcG9pbnQiXQotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJGaXJzdCBCcmVha3BvaW50Il0KLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiU2Vjb25kIEJyZWFrcG9pbnQiXQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHAKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4cAotQEAg LTI1LDExICsyNSwxNyBAQCBpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhw ICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0rIyBBdm9p ZCBzaGFyZWQgbGliIHN5bWJvbHMuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1zb2xp Yi1hZGQgb2ZmIgotKwotIGlmICFbZm9ydHJhbl9ydW50b19tYWluXSB7Ci0gICAgIHVudGVzdGVk ICJjb3VsZCBub3QgcnVuIHRvIG1haW4iCi0gICAgIHJldHVybiAtMQotIH0KLSAKLSsjIEF2b2lk IGxpYmMgc3ltYm9scywgaW4gcGFydGljdWxhciB0aGUgJ2FycmF5JyB0eXBlLgotK2dkYl90ZXN0 X25vX291dHB1dCAibm9zaGFyZWRsaWJyYXJ5IgotKwotICMgZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgTWVzc2FnZSBCcmVha3BvaW50Il0KLSBnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiU3RvcCBIZXJlIl0KLSBnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAiRmluYWwgQnJlYWtwb2ludCJdCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2FycmF5LXNsaWNlcy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJy YXktc2xpY2VzLmV4cAotQEAgLTU1LDExICs1NSwxNyBAQCBwcm9jIHJ1bl90ZXN0IHsgcmVwYWNr IH0gewotIAotICAgICBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KLSAKLSsgICAgIyBBdm9pZCBz aGFyZWQgbGliIHN5bWJvbHMuCi0rICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29s aWItYWRkIG9mZiIKLSsKLSAgICAgaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSAJdW50ZXN0 ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKLSAJcmV0dXJuIC0xCi0gICAgIH0KLSAKLSsgICAg IyBBdm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KLSsg ICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCi0rCi0gICAgIGdkYl90ZXN0 X25vX291dHB1dCAic2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyAkcmVwYWNrIgotIAot ICAgICAjIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IE1lc3Nh Z2UgQnJlYWtwb2ludCJdCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9s Ym91bmQtdWJvdW5kLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGJvdW5kLXVib3Vu ZC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGJvdW5kLXVib3VuZC5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGJvdW5kLXVib3VuZC5leHAKLUBAIC0y NSwxMiArMjUsMTcgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotKyMgQXZvaWQg c2hhcmVkIGxpYiBzeW1ib2xzLgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWIt YWRkIG9mZiIKLSAKLSBpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0gewotICAgICB1bnRlc3RlZCAi Y291bGQgbm90IHJ1biB0byBtYWluIgotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0rIyBBdm9pZCBs aWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KLStnZGJfdGVzdF9u b19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKLSsKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiVGVzdCBCcmVha3BvaW50Il0KLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiRmluYWwgQnJlYWtwb2ludCJdCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N1YmFycmF5LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCi1AQCAtMjcs MTYgKzI3LDE3IEBAIGlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUi ICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV19IHsKLSAgICAgcmV0dXJuIC0xCi0gfQot IAotLWdkYl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0tZ2RiX2xvYWQgJHtiaW5maWxlfQotKyMgQXZvaWQgc2hhcmVkIGxpYiBzeW1ib2xz LgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKLSAKLSBpZiAh W2ZvcnRyYW5fcnVudG9fbWFpbl0gdGhlbiB7Ci0gICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv IG1haW4iCi0gICAgIGNvbnRpbnVlCi0gfQotIAotKyMgQXZvaWQgbGliYyBzeW1ib2xzLCBpbiBw YXJ0aWN1bGFyIHRoZSAnYXJyYXknIHR5cGUuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJl ZGxpYnJhcnkiCi0rCi0gIyBUcnkgdG8gc2V0IGJyZWFrcG9pbnQgYXQgdGhlIGxhc3Qgd3JpdGUg c3RhdGVtZW50LgotIAotIHNldCBicF9sb2NhdGlvbiBbZ2RiX2dldF9saW5lX251bWJlciAic3Ry KDopIl0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCi1AQCAtMzYsOCArMzYsMTQgQEAgaWYge1tnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAotIG1p X2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIG1pX2dkYl9sb2FkICR7Ymlu ZmlsZX0KLSAKLSsjIEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KLSttaV9nZGJfdGVzdCAiLWdk Yi1zZXQgYXV0by1zb2xpYi1hZGQgb2ZmIiAiXFxeZG9uZSIKLSsKLSBtaV9ydW50byBwcm9nX2Fy cmF5Ci0gCi0rIyBBdm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScg dHlwZS4KLSttaV9nZGJfdGVzdCAibm9zaGFyZWRsaWJyYXJ5IiAiLipcXF5kb25lIgotKwotIG1p X2NyZWF0ZV92YXJvYmogImFycmF5IiAiYXJyYXkiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgYXJy YXkiCi0gCi0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDIyMTc3LWRwcmludGYtMS5wYXRjaCBi L2dkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGQ5MTIyODkuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDIyMTc3LWRwcmludGYtMS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxNSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkBy ZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxMCBOb3YgMjAyMSAxODo1MjoyMiAtMDcwMAotU3ViamVj dDogZ2RiLXJoYnoyMDIyMTc3LWRwcmludGYtMS5wYXRjaAotCi07OyBCYWNrcG9ydCBmaXggZm9y IGRwcmludGYgYnVnIChSSCBCWiAyMDIyMTc3KS4KLQotRml4IFBSIDI4MzA4IC0gZHByaW50ZiBi cmVha3BvaW50cyBub3Qgd29ya2luZyB3aGVuIHJ1biBmcm9tIHNjcmlwdAotCi1UaGlzIGNvbW1p dCBmaXhlcyBCdWcgMjgzMDgsIHRpdGxlZCAiU3RyYW5nZSBpbnRlcmFjdGlvbnMgd2l0aAotZHBy aW50ZiBhbmQgYnJlYWsvY29tbWFuZHMiOgotCi1CdWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcv YnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI4MzA4Ci0KLVNpbmNlIGNyZWF0aW5nIHRoYXQgYnVn IHJlcG9ydCwgSSd2ZSBmb3VuZCBhIHNvbWV3aGF0IHNpbXBsZXIgd2F5IG9mCi1yZXByb2R1Y2lu ZyB0aGUgcHJvYmxlbS4gIEkndmUgZW5jYXBzdWxhdGVkIGl0IGludG8gdGhlIEdEQiB0ZXN0IGNh c2UKLXdoaWNoIEkndmUgY3JlYXRlZCBhbG9uZyB3aXRoIHRoaXMgYnVnIGZpeC4gIFRoZSBuYW1l IG9mIHRoZSBuZXcgdGVzdAotaXMgZ2RiLmJhc2UvZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQu ZXhwLCBJJ2xsIGRlbW9uc3RyYXRlIHRoZQotcHJvYmxlbSB1c2luZyB0aGlzIHRlc3QgY2FzZSwg dGhvdWdoIGZvciBicmV2aXR5LCBJJ3ZlIHBsYWNlZCBhbGwKLXJlbGV2YW50IGZpbGVzIGluIHRo ZSBzYW1lIGRpcmVjdG9yeSBhbmQgaGF2ZSByZW5hbWVkIHRoZSBmaWxlcyB0byBhbGwKLXN0YXJ0 IHdpdGggJ2RwLWJ1ZycgaW5zdGVhZCBvZiAnZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQnLgot Ci1UaGUgc2NyaXB0IGZpbGUsIG5hbWVkIGRwLWJ1Zy5nZGIsIGNvbnNpc3RzIG9mIHRoZSBmb2xs b3dpbmcgY29tbWFuZHM6Ci0KLWRwcmludGYgaW5jcmVtZW50LCAiZHByaW50ZiBpbiBpbmNyZW1l bnQoKSwgdmk9JWRcbiIsIHZpCi1icmVhayBpbmNfdmkKLWNvbW1hbmRzCi0gIGNvbnRpbnVlCi1l bmQKLXJ1bgotCi1Ob3RlIHRoYXQgdGhlIGZpbmFsIGNvbW1hbmQgaW4gdGhpcyBzY3JpcHQgaXMg J3J1bicuICBXaGVuICdydW4nIGlzCi1pbnN0ZWFkIGlzc3VlZCBpbnRlcmFjdGl2ZWx5LCB0aGUg IGJ1ZyBkb2VzIG5vdCBvY2N1ci4gIFNvLCBsZXQncyBsb29rCi1hdCB0aGUgaW50ZXJhY3RpdmUg Y2FzZSBmaXJzdCBpbiBvcmRlciB0byBzZWUgdGhlIGNvcnJlY3QvZXhwZWN0ZWQKLW91dHB1dDoK LQotJCBnZGIgLXEgLXggZHAtYnVnLmdkYiBkcC1idWcKLS4uLiBlbGlkaW5nIGJ1Z2d5IG91dHB1 dCB3aGljaCBJJ2xsIGRpc2N1c3MgbGF0ZXIgLi4uCi0oZ2RiKSBydW4KLVN0YXJ0aW5nIHByb2dy YW06IC9tZXNxdWl0ZTIvc291cmNld2FyZS1naXQvZjM0LW1hc3Rlci9ibGQvZ2RiL3RtcC9kcC1i dWcKLXZpPTAKLWRwcmludGYgaW4gaW5jcmVtZW50KCksIHZpPTAKLQotQnJlYWtwb2ludCAyLCBp bmNfdmkgKCkgYXQgZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuYzoyNgotMjYJaW4gZHByaW50 Zi1leGVjdXRpb24teC1zY3JpcHQuYwotdmk9MQotZHByaW50ZiBpbiBpbmNyZW1lbnQoKSwgdmk9 MQotCi1CcmVha3BvaW50IDIsIGluY192aSAoKSBhdCBkcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlw dC5jOjI2Ci0yNglpbiBkcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlwdC5jCi12aT0yCi1kcHJpbnRm IGluIGluY3JlbWVudCgpLCB2aT0yCi0KLUJyZWFrcG9pbnQgMiwgaW5jX3ZpICgpIGF0IGRwcmlu dGYtZXhlY3V0aW9uLXgtc2NyaXB0LmM6MjYKLTI2CWluIGRwcmludGYtZXhlY3V0aW9uLXgtc2Ny aXB0LmMKLXZpPTMKLVtJbmZlcmlvciAxIChwcm9jZXNzIDE1MzkyMTApIGV4aXRlZCBub3JtYWxs eV0KLQotSW4gdGhpcyBydW4sIGluIHdoaWNoICdydW4nIHdhcyBpc3N1ZWQgZnJvbSB0aGUgZ2Ri IHByb21wdCAoaW5zdGVhZAotb2YgYXQgdGhlIGVuZCBvZiB0aGUgc2NyaXB0KSwgdGhlcmUgYXJl IHRocmVlIGRwcmludGYgbWVzc2FnZXMgYWxvbmcKLXdpdGggdGhyZWUgJ0JyZWFrcG9pbnQgMicg bWVzc2FnZXMuICBUaGlzIGlzIHRoZSBjb3JyZWN0IG91dHB1dC4KLQotTm93IGxldCdzIGxvb2sg YXQgdGhlIG91dHB1dCB0aGF0IEkgc25pcHBlZCBhYm92ZTsgdGhpcyBpcyB0aGUgb3V0cHV0Ci13 aGVuICdydW4nIGlzIGlzc3VlZCBmcm9tIHRoZSBzY3JpcHQgbG9hZGVkIHZpYSBHREIncyAteCBz d2l0Y2g6Ci0KLSQgZ2RiIC1xIC14IGRwLWJ1Zy5nZGIgZHAtYnVnCi1SZWFkaW5nIHN5bWJvbHMg ZnJvbSBkcC1idWcuLi4KLURwcmludGYgMSBhdCAweDQwMTE2ZTogZmlsZSBkcHJpbnRmLWV4ZWN1 dGlvbi14LXNjcmlwdC5jLCBsaW5lIDM4LgotQnJlYWtwb2ludCAyIGF0IDB4NDAxMTNhOiBmaWxl IGRwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMsIGxpbmUgMjYuCi12aT0wCi1kcHJpbnRmIGlu IGluY3JlbWVudCgpLCB2aT0wCi0KLUJyZWFrcG9pbnQgMiwgaW5jX3ZpICgpIGF0IGRwcmludGYt ZXhlY3V0aW9uLXgtc2NyaXB0LmM6MjYKLTI2CWRwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmM6 IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCi12aT0xCi0KLUJyZWFrcG9pbnQgMiwgaW5jX3Zp ICgpIGF0IGRwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmM6MjYKLTI2CWluIGRwcmludGYtZXhl Y3V0aW9uLXgtc2NyaXB0LmMKLXZpPTIKLQotQnJlYWtwb2ludCAyLCBpbmNfdmkgKCkgYXQgZHBy aW50Zi1leGVjdXRpb24teC1zY3JpcHQuYzoyNgotMjYJaW4gZHByaW50Zi1leGVjdXRpb24teC1z Y3JpcHQuYwotdmk9MwotW0luZmVyaW9yIDEgKHByb2Nlc3MgMTUzOTE3NSkgZXhpdGVkIG5vcm1h bGx5XQotCi1JbiB0aGUgb3V0cHV0IHNob3duIGFib3ZlLCBvbmx5IHRoZSBmaXJzdCBkcHJpbnRm IG1lc3NhZ2UgaXMgcHJpbnRlZC4KLVRoZSAybmQgYW5kIDNyZCBkcHJpbnRmIG1lc3NhZ2VzIGFy ZSBtaXNzaW5nISAgSG93ZXZlciwgYWxsIHRocmVlCi0nQnJlYWtwb2ludCAyLi4uJyBtZXNzYWdl cyBhcmUgc3RpbGwgcHJpbnRlZC4KLQotV2h5IGRvZXMgdGhpcyBoYXBwZW4/Ci0KLWJwc3RhdF9k b19hY3Rpb25zXzEoKSBpbiBnZGIvYnJlYWtwb2ludC5jIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcK LWNvbW1lbnQgYW5kIGNvZGUgbmVhciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uOgotCi0gIC8q IEF2b2lkIGVuZGxlc3MgcmVjdXJzaW9uIGlmIGEgYHNvdXJjZScgY29tbWFuZCBpcyBjb250YWlu ZWQKLSAgICAgaW4gYnMtPmNvbW1hbmRzLiAgKi8KLSAgaWYgKGV4ZWN1dGluZ19icmVha3BvaW50 X2NvbW1hbmRzKQotICAgIHJldHVybiAwOwotCi0gIHNjb3BlZF9yZXN0b3JlIHNhdmVfZXhlY3V0 aW5nCi0gICAgPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmZXhlY3V0aW5nX2JyZWFrcG9pbnRfY29t bWFuZHMsIDEpOwotCi1BbHNvLCBhcyBkZXNjcmliZWQgYnkgdGhpcyBjb21tZW50IHByaW9yIHRv IHRoZSAnYXN5bmMnIGZpZWxkCi1pbiAnc3RydWN0IHVpJyBpbiB0b3AuaCwgdGhlIG1haW4gVUkg c3RhcnRzIG9mZiBpbiBzeW5jIG1vZGUKLXdoZW4gcHJvY2Vzc2luZyBjb21tYW5kIGxpbmUgYXJn dW1lbnRzOgotCi0gIC8qIFRydWUgaWYgdGhlIFVJIGlzIGluIGFzeW5jIG1vZGUsIGZhbHNlIGlm IGluIHN5bmMgbW9kZS4gIElmIGluCi0gICAgIHN5bmMgbW9kZSwgYSBzeW5jaHJvbm91cyBleGVj dXRpb24gY29tbWFuZCAoZS5nLCAibmV4dCIpIGRvZXMgbm90Ci0gICAgIHJldHVybiB1bnRpbCB0 aGUgY29tbWFuZCBpcyBmaW5pc2hlZC4gIElmIGluIGFzeW5jIG1vZGUsIHRoZW4KLSAgICAgcnVu bmluZyBhIHN5bmNocm9ub3VzIGNvbW1hbmQgcmV0dXJucyByaWdodCBhZnRlciByZXN1bWluZyB0 aGUKLSAgICAgdGFyZ2V0LiAgV2FpdGluZyBmb3IgdGhlIGNvbW1hbmQncyBjb21wbGV0aW9uIGlz IGxhdGVyIGRvbmUgb24KLSAgICAgdGhlIHRvcCBldmVudCBsb29wLiAgRm9yIHRoZSBtYWluIFVJ LCB0aGlzIHN0YXJ0cyBvdXQgZGlzYWJsZWQsCi0gICAgIHVudGlsIGFsbCB0aGUgZXhwbGljaXQg Y29tbWFuZCBsaW5lIGFyZ3VtZW50cyAoZS5nLiwgYGdkYiAtZXgKLSAgICAgInN0YXJ0IiAtZXgg Im5leHQiJykgYXJlIHByb2Nlc3NlZC4gICovCi0KLVRoaXMgY29tYmluYXRpb24gb2YgdGhpbmdz LCB0aGUgc3RhdGUgb2YgdGhlIHN0YXRpYyBnbG9iYWwKLSdleGVjdXRpbmdfYnJlYWtwb2ludF9j b21tYW5kcycgcGx1cyB0aGUgc3RhdGUgb2YgdGhlIGFzeW5jCi1maWVsZCBpbiB0aGUgbWFpbiBV SSBjYXVzZXMgdGhpcyBiZWhhdmlvci4KLQotVGhpcyBpcyBhIGJhY2t0cmFjZSBhZnRlciBoaXR0 aW5nIHRoZSBkcHJpbnRmIGJyZWFrcG9pbnQgZm9yCi10aGUgc2Vjb25kIHRpbWUgd2hlbiBkb2lu ZyAncnVuJyBmcm9tIHRoZSBzY3JpcHQgZmlsZSwgaS5lLgotbm9uLWludGVyYWN0aXZlbHk6Ci0K LVRocmVhZCAxICJnZGIiIGhpdCBCcmVha3BvaW50IDMsIGJwc3RhdF9kb19hY3Rpb25zXzEgKGJz cD0weDdmZmZmZmZmYzJiOCkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1t YXN0ZXIvYmxkLy4uLy4uL3dvcmt0cmVlLW1hc3Rlci9nZGIvYnJlYWtwb2ludC5jOjQ0MzEKLTQ0 MzEJICBpZiAoZXhlY3V0aW5nX2JyZWFrcG9pbnRfY29tbWFuZHMpCi0KLSAjMCAgYnBzdGF0X2Rv X2FjdGlvbnNfMSAoYnNwPTB4N2ZmZmZmZmZjMmI4KQotICAgICBhdCBnZGIvYnJlYWtwb2ludC5j OjQ0MzEKLSAjMSAgMHgwMDAwMDAwMDAwNGQ4YmM2IGluIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9u X3RydWUgKGJzPTB4MTUzODA5MCkKLSAgICAgYXQgZ2RiL2JyZWFrcG9pbnQuYzoxMzA0OAotICMy ICAweDAwMDAwMDAwMDA0YzVjYWEgaW4gYnBzdGF0X3N0b3Bfc3RhdHVzIChhc3BhY2U9MHgxMTZk YmMwLCBicF9hZGRyPTB4NDAxMTZlLCB0aHJlYWQ9MHgxMzdmNDUwLCB3cz0weDdmZmZmZmZmYzcx OCwKLSAgICAgc3RvcF9jaGFpbj0weDE1MzgwOTApIGF0IGdkYi9icmVha3BvaW50LmM6NTQ5OAot ICMzICAweDAwMDAwMDAwMDA3NjhkOTggaW4gaGFuZGxlX3NpZ25hbF9zdG9wIChlY3M9MHg3ZmZm ZmZmZmM2ZjApCi0gICAgIGF0IGdkYi9pbmZydW4uYzo2MTcyCi0gIzQgIDB4MDAwMDAwMDAwMDc2 NzhkMyBpbiBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKGVjcz0weDdmZmZmZmZmYzZmMCkKLSAgICAg YXQgZ2RiL2luZnJ1bi5jOjU2NjIKLSAjNSAgMHgwMDAwMDAwMDAwNzYzY2Q1IGluIGZldGNoX2lu ZmVyaW9yX2V2ZW50ICgpCi0gICAgIGF0IGdkYi9pbmZydW4uYzo0MDYwCi0gIzYgIDB4MDAwMDAw MDAwMDc0NmQ3ZCBpbiBpbmZlcmlvcl9ldmVudF9oYW5kbGVyIChldmVudF90eXBlPUlORl9SRUdf RVZFTlQpCi0gICAgIGF0IGdkYi9pbmYtbG9vcC5jOjQxCi0gIzcgIDB4MDAwMDAwMDAwMDdhNzAy ZiBpbiBoYW5kbGVfdGFyZ2V0X2V2ZW50IChlcnJvcj0wLCBjbGllbnRfZGF0YT0weDApCi0gICAg IGF0IGdkYi9saW51eC1uYXQuYzo0MjA3Ci0gIzggIDB4MDAwMDAwMDAwMGI4Y2Q2ZSBpbiBnZGJf d2FpdF9mb3JfZXZlbnQgKGJsb2NrPWJsb2NrQGVudHJ5PTApCi0gICAgIGF0IGdkYnN1cHBvcnQv ZXZlbnQtbG9vcC5jYzo3MDEKLSAjOSAgMHgwMDAwMDAwMDAwYjhkMDMyIGluIGdkYl93YWl0X2Zv cl9ldmVudCAoYmxvY2s9MCkKLSAgICAgYXQgZ2Ric3VwcG9ydC9ldmVudC1sb29wLmNjOjU5Nwot ICMxMCBnZGJfZG9fb25lX2V2ZW50ICgpIGF0IGdkYnN1cHBvcnQvZXZlbnQtbG9vcC5jYzoyMTIK LSAjMTEgMHgwMDAwMDAwMDAwOWQxOWI2IGluIHdhaXRfc3luY19jb21tYW5kX2RvbmUgKCkKLSAg ICAgYXQgZ2RiL3RvcC5jOjUyOAotICMxMiAweDAwMDAwMDAwMDA5ZDFhM2YgaW4gbWF5YmVfd2Fp dF9zeW5jX2NvbW1hbmRfZG9uZSAod2FzX3N5bmM9MCkKLSAgICAgYXQgZ2RiL3RvcC5jOjU0NQot ICMxMyAweDAwMDAwMDAwMDA5ZDIwMzMgaW4gZXhlY3V0ZV9jb21tYW5kIChwPTB4N2ZmZmZmZmZj YjE4ICIiLCBmcm9tX3R0eT0wKQotICAgICBhdCBnZGIvdG9wLmM6Njc2Ci0gIzE0IDB4MDAwMDAw MDAwMDU2MGQ1YiBpbiBleGVjdXRlX2NvbnRyb2xfY29tbWFuZF8xIChjbWQ9MHgxM2I5YmIwLCBm cm9tX3R0eT0wKQotICAgICBhdCBnZGIvY2xpL2NsaS1zY3JpcHQuYzo1NDcKLSAjMTUgMHgwMDAw MDAwMDAwNTYxMzRhIGluIGV4ZWN1dGVfY29udHJvbF9jb21tYW5kIChjbWQ9MHgxM2I5YmIwLCBm cm9tX3R0eT0wKQotICAgICBhdCBnZGIvY2xpL2NsaS1zY3JpcHQuYzo3MTcKLSAjMTYgMHgwMDAw MDAwMDAwNGMzYmJlIGluIGJwc3RhdF9kb19hY3Rpb25zXzEgKGJzcD0weDEzN2Y1MzApCi0gICAg IGF0IGdkYi9icmVha3BvaW50LmM6NDQ2OQotICMxNyAweDAwMDAwMDAwMDA0YzNkNDAgaW4gYnBz dGF0X2RvX2FjdGlvbnMgKCkKLSAgICAgYXQgZ2RiL2JyZWFrcG9pbnQuYzo0NTMzCi0gIzE4IDB4 MDAwMDAwMDAwMDZhNDczYSBpbiBjb21tYW5kX2hhbmRsZXIgKGNvbW1hbmQ9MHgxMzk5YWQwICJy dW4iKQotICAgICBhdCBnZGIvZXZlbnQtdG9wLmM6NjI0Ci0gIzE5IDB4MDAwMDAwMDAwMDlkMTgy ZSBpbiByZWFkX2NvbW1hbmRfZmlsZSAoc3RyZWFtPTB4MTEzZTU0MCkKLSAgICAgYXQgZ2RiL3Rv cC5jOjQ0MwotICMyMCAweDAwMDAwMDAwMDA1NjM2OTcgaW4gc2NyaXB0X2Zyb21fZmlsZSAoc3Ry ZWFtPTB4MTEzZTU0MCwgZmlsZT0weDEzYmIwYjAgImRwLWJ1Zy5nZGIiKQotICAgICBhdCBnZGIv Y2xpL2NsaS1zY3JpcHQuYzoxNjQyCi0gIzIxIDB4MDAwMDAwMDAwMDZhYmQ2MyBpbiBzb3VyY2Vf Z2RiX3NjcmlwdCAoZXh0bGFuZz0weGM0NGU4MCA8ZXh0ZW5zaW9uX2xhbmd1YWdlX2dkYj4sIHN0 cmVhbT0weDExM2U1NDAsCi0gICAgIGZpbGU9MHgxM2JiMGIwICJkcC1idWcuZ2RiIikgYXQgZ2Ri L2V4dGVuc2lvbi5jOjE4OAotICMyMiAweDAwMDAwMDAwMDA1NDQ0MDAgaW4gc291cmNlX3Njcmlw dF9mcm9tX3N0cmVhbSAoc3RyZWFtPTB4MTEzZTU0MCwgZmlsZT0weDdmZmZmZmZmZDkxYSAiZHAt YnVnLmdkYiIsCi0gICAgIGZpbGVfdG9fb3Blbj0weDEzYmIwYjAgImRwLWJ1Zy5nZGIiKQotICAg ICBhdCBnZGIvY2xpL2NsaS1jbWRzLmM6NjkyCi0gIzIzIDB4MDAwMDAwMDAwMDU0NDU1NyBpbiBz b3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoIChmaWxlPTB4N2ZmZmZmZmZkOTFhICJkcC1idWcuZ2Ri IiwgZnJvbV90dHk9MSwgc2VhcmNoX3BhdGg9MCkKLSAgICAgYXQgZ2RiL2NsaS9jbGktY21kcy5j Ojc1MAotICMyNCAweDAwMDAwMDAwMDA1NDQ1Y2YgaW4gc291cmNlX3NjcmlwdCAoZmlsZT0weDdm ZmZmZmZmZDkxYSAiZHAtYnVnLmdkYiIsIGZyb21fdHR5PTEpCi0gICAgIGF0IGdkYi9jbGkvY2xp LWNtZHMuYzo3NTkKLSAjMjUgMHgwMDAwMDAwMDAwN2NmNmQ5IGluIGNhdGNoX2NvbW1hbmRfZXJy b3JzIChjb21tYW5kPTB4NTQ0NWFhIDxzb3VyY2Vfc2NyaXB0KGNoYXIgY29uc3QqLCBpbnQpPiwK LSAgICAgYXJnPTB4N2ZmZmZmZmZkOTFhICJkcC1idWcuZ2RiIiwgZnJvbV90dHk9MSwgZG9fYnBf YWN0aW9ucz1mYWxzZSkKLSAgICAgYXQgZ2RiL21haW4uYzo1MjMKLSAjMjYgMHgwMDAwMDAwMDAw N2NmODVkIGluIGV4ZWN1dGVfY21kYXJncyAoY21kYXJnX3ZlYz0weDdmZmZmZmZmZDFiMCwgZmls ZV90eXBlPUNNREFSR19GSUxFLCBjbWRfdHlwZT1DTURBUkdfQ09NTUFORCwKLSAgICAgcmV0PTB4 N2ZmZmZmZmZkMThjKSBhdCBnZGIvbWFpbi5jOjYxNQotICMyNyAweDAwMDAwMDAwMDA3ZDBjOGUg aW4gY2FwdHVyZWRfbWFpbl8xIChjb250ZXh0PTB4N2ZmZmZmZmZkM2YwKQotICAgICBhdCBnZGIv bWFpbi5jOjEzMjIKLSAjMjggMHgwMDAwMDAwMDAwN2QwZWJhIGluIGNhcHR1cmVkX21haW4gKGRh dGE9MHg3ZmZmZmZmZmQzZjApCi0gICAgIGF0IGdkYi9tYWluLmM6MTM0MwotICMyOSAweDAwMDAw MDAwMDA3ZDBmMjUgaW4gZ2RiX21haW4gKGFyZ3M9MHg3ZmZmZmZmZmQzZjApCi0gICAgIGF0IGdk Yi9tYWluLmM6MTM2OAotICMzMCAweDAwMDAwMDAwMDA0MTg2ZGQgaW4gbWFpbiAoYXJnYz01LCBh cmd2PTB4N2ZmZmZmZmZkNTA4KQotICAgICBhdCBnZGIvZ2RiLmM6MzIKLQotVGhlcmUgYXJlIHR3 byBmcmFtZXMgZm9yIGJwc3RhdF9kb19hY3Rpb25zXzEoKSwgb25lIGF0IGZyYW1lICMxNiBhbmQK LXRoZSBvdGhlciBhdCBmcmFtZSAjMC4gIFRoZSBvbmUgYXQgZnJhbWUgIzE2IGlzIHByb2Nlc3Np bmcgdGhlIGFjdGlvbnMKLWZvciBCcmVha3BvaW50IDIsIHdoaWNoIGlzIGEgJ2NvbnRpbnVlJy4g IFRoZSBvbmUgYXQgZnJhbWUgIzAgaXMgYXR0ZW1wdGluZwotdG8gcHJvY2VzcyB0aGUgZHByaW50 ZiBicmVha3BvaW50IGFjdGlvbi4gIEhvd2V2ZXIsIGF0IHRoaXMgcG9pbnQsCi10aGUgdmFsdWUg b2YgJ2V4ZWN1dGluZ19icmVha3BvaW50X2NvbW1hbmRzJyBpcyAxLCBmb3JjaW5nIGFuIGVhcmx5 Ci1yZXR1cm4sIGkuZS4gcHJpb3IgdG8gZXhlY3V0aW5nIHRoZSBjb21tYW5kKHMpIGFzc29jaWF0 ZWQgd2l0aCB0aGUgZHByaW50ZgotYnJlYWtwb2ludC4KLQotRm9yIHRoZSBzYWtlIG9mIGNvbXBh cmlzb24sIHRoaXMgaXMgd2hhdCB0aGUgc3RhY2sgbG9va3MgbGlrZSB3aGVuIGhpdHRpbmcKLXRo ZSBkcHJpbnRmIGJyZWFrcG9pbnQgZm9yIHRoZSBzZWNvbmQgdGltZSB3aGVuIGlzc3VpbmcgdGhl ICdydW4nCi1jb21tYW5kIGZyb20gdGhlIEdEQiBwcm9tcHQuCi0KLVRocmVhZCAxICJnZGIiIGhp dCBCcmVha3BvaW50IDMsIGJwc3RhdF9kb19hY3Rpb25zXzEgKGJzcD0weDdmZmZmZmZmY2NkOCkK LSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1tYXN0ZXIvYmxkLy4uLy4uL3dv cmt0cmVlLW1hc3Rlci9nZGIvYnJlYWtwb2ludC5jOjQ0MzEKLTQ0MzEJICBpZiAoZXhlY3V0aW5n X2JyZWFrcG9pbnRfY29tbWFuZHMpCi0KLSAjMCAgYnBzdGF0X2RvX2FjdGlvbnNfMSAoYnNwPTB4 N2ZmZmZmZmZjY2Q4KQotICAgICBhdCBnZGIvYnJlYWtwb2ludC5jOjQ0MzEKLSAjMSAgMHgwMDAw MDAwMDAwNGQ4YmM2IGluIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3RydWUgKGJzPTB4MTZiMDI5 MCkKLSAgICAgYXQgZ2RiL2JyZWFrcG9pbnQuYzoxMzA0OAotICMyICAweDAwMDAwMDAwMDA0YzVj YWEgaW4gYnBzdGF0X3N0b3Bfc3RhdHVzIChhc3BhY2U9MHgxMTZkYmMwLCBicF9hZGRyPTB4NDAx MTZlLCB0aHJlYWQ9MHgxM2YwZTYwLCB3cz0weDdmZmZmZmZmZDEzOCwKLSAgICAgc3RvcF9jaGFp bj0weDE2YjAyOTApIGF0IGdkYi9icmVha3BvaW50LmM6NTQ5OAotICMzICAweDAwMDAwMDAwMDA3 NjhkOTggaW4gaGFuZGxlX3NpZ25hbF9zdG9wIChlY3M9MHg3ZmZmZmZmZmQxMTApCi0gICAgIGF0 IGdkYi9pbmZydW4uYzo2MTcyCi0gIzQgIDB4MDAwMDAwMDAwMDc2NzhkMyBpbiBoYW5kbGVfaW5m ZXJpb3JfZXZlbnQgKGVjcz0weDdmZmZmZmZmZDExMCkKLSAgICAgYXQgZ2RiL2luZnJ1bi5jOjU2 NjIKLSAjNSAgMHgwMDAwMDAwMDAwNzYzY2Q1IGluIGZldGNoX2luZmVyaW9yX2V2ZW50ICgpCi0g ICAgIGF0IGdkYi9pbmZydW4uYzo0MDYwCi0gIzYgIDB4MDAwMDAwMDAwMDc0NmQ3ZCBpbiBpbmZl cmlvcl9ldmVudF9oYW5kbGVyIChldmVudF90eXBlPUlORl9SRUdfRVZFTlQpCi0gICAgIGF0IGdk Yi9pbmYtbG9vcC5jOjQxCi0gIzcgIDB4MDAwMDAwMDAwMDdhNzAyZiBpbiBoYW5kbGVfdGFyZ2V0 X2V2ZW50IChlcnJvcj0wLCBjbGllbnRfZGF0YT0weDApCi0gICAgIGF0IGdkYi9saW51eC1uYXQu Yzo0MjA3Ci0gIzggIDB4MDAwMDAwMDAwMGI4Y2Q2ZSBpbiBnZGJfd2FpdF9mb3JfZXZlbnQgKGJs b2NrPWJsb2NrQGVudHJ5PTApCi0gICAgIGF0IGdkYnN1cHBvcnQvZXZlbnQtbG9vcC5jYzo3MDEK LSAjOSAgMHgwMDAwMDAwMDAwYjhkMDMyIGluIGdkYl93YWl0X2Zvcl9ldmVudCAoYmxvY2s9MCkK LSAgICAgYXQgZ2Ric3VwcG9ydC9ldmVudC1sb29wLmNjOjU5NwotICMxMCBnZGJfZG9fb25lX2V2 ZW50ICgpIGF0IGdkYnN1cHBvcnQvZXZlbnQtbG9vcC5jYzoyMTIKLSAjMTEgMHgwMDAwMDAwMDAw N2NmNTEyIGluIHN0YXJ0X2V2ZW50X2xvb3AgKCkKLSAgICAgYXQgZ2RiL21haW4uYzo0MjEKLSAj MTIgMHgwMDAwMDAwMDAwN2NmNjMxIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAoKQotICAgICBh dCBnZGIvbWFpbi5jOjQ4MQotICMxMyAweDAwMDAwMDAwMDA3ZDBlYmYgaW4gY2FwdHVyZWRfbWFp biAoZGF0YT0weDdmZmZmZmZmZDNmMCkKLSAgICAgYXQgZ2RiL21haW4uYzoxMzUzCi0gIzE0IDB4 MDAwMDAwMDAwMDdkMGYyNSBpbiBnZGJfbWFpbiAoYXJncz0weDdmZmZmZmZmZDNmMCkKLSAgICAg YXQgZ2RiL21haW4uYzoxMzY4Ci0gIzE1IDB4MDAwMDAwMDAwMDQxODZkZCBpbiBtYWluIChhcmdj PTUsIGFyZ3Y9MHg3ZmZmZmZmZmQ1MDgpCi0gICAgIGF0IGdkYi9nZGIuYzozMgotCi1UaGlzIHJl bGF0aXZlbHkgc2hvcnQgYmFja3RyYWNlIGlzIGR1ZSB0byB0aGUgY3VycmVudCBVSSdzIGFzeW5j IGZpZWxkCi1iZWluZyBzZXQgdG8gMS4KLQotWWV0IGFub3RoZXIgdGhpbmcgdG8gYmUgYXdhcmUg b2YgcmVnYXJkaW5nIHRoaXMgcHJvYmxlbSBpcyB0aGUKLWRpZmZlcmVuY2UgaW4gdGhlIHdheSB0 aGF0IGNvbW1hbmRzIGFzc29jaWF0ZWQgdG8gZHByaW50ZiBicmVha3BvaW50cwotdmVyc3VzIHJl Z3VsYXIgYnJlYWtwb2ludHMgYXJlIGhhbmRsZWQuICBXaGlsZSB0aGV5IGJvdGggdXNlIGEgY29t bWFuZAotbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGJyZWFrcG9pbnQsIHJlZ3VsYXIgYnJlYWtw b2ludHMgd2lsbCBwbGFjZQotdGhlIGNvbW1hbmRzIHRvIGJlIHJ1biBvbiB0aGUgYnBzdGF0IGNo YWluIGNvbnN0cnVjdGVkIGluCi1icF9zdG9wX3N0YXR1cygpLiAgVGhlc2UgY29tbWFuZHMgYXJl IHJ1biBsYXRlciBvbi4gIEZvciBkcHJpbnRmCi1icmVha3BvaW50cywgY29tbWFuZHMgYXJlIHJ1 biB2aWEgdGhlICdhZnRlcl9jb25kaXRpb25fdHJ1ZScgZnVuY3Rpb24KLXBvaW50ZXIgZGlyZWN0 bHkgZnJvbSBicHN0YXRfc3RvcF9zdGF0dXMoKS4gIChUaGUgJ2NvbW1hbmRzJyBmaWVsZCBpbgot dGhlIGJwc3RhdCBpcyBjbGVhcmVkIGluIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3RydWUoKS4g IFRoaXMKLXByZXZlbnRzIHRoZSBkcHJpbnRmIGNvbW1hbmRzIGZyb20gYmVpbmcgcnVuIGFnYWlu IGxhdGVyIG9uIHdoZW4gb3RoZXIKLWNvbW1hbmRzIG9uIHRoZSBicHN0YXQgY2hhaW4gYXJlIHBy b2Nlc3NlZC4pCi0KLUFub3RoZXIgdGhpbmcgdGhhdCBJIG5vdGljZWQgaXMgdGhhdCBkcHJpbnRm IGJyZWFrcG9pbnRzIGFyZSB0aGUgb25seQotdHlwZSBvZiBicmVha3BvaW50IHdoaWNoIHVzZSAn YWZ0ZXJfY29uZGl0aW9uX3RydWUnLiAgVGhpcyBzdWdnZXN0cwotdGhhdCBvbmUgcG9zc2libGUg d2F5IG9mIGZpeGluZyB0aGlzIHByb2JsZW0sIHRoYXQgb2YgbWFraW5nIGRwcmludGYKLWJyZWFr cG9pbnRzIHdvcmsgbW9yZSBsaWtlIHJlZ3VsYXIgYnJlYWtwb2ludHMsIHByb2JhYmx5IHdvbid0 IHdvcmsuCi0oSSBtdXN0IGFkbWl0LCBob3dldmVyLCB0aGF0IG15IHVuZGVyc3RhbmRpbmcgb2Yg dGhpcyBjb2RlIGlzbid0Ci1jb21wbGV0ZSBlbm91Z2ggdG8gc2F5IHdoeS4gIEknbGwgdHJ1c3Qg dGhhdCB3aG9ldmVyIGltcGxlbWVudGVkIGl0Ci1oYWQgYSBnb29kIHJlYXNvbiBmb3IgZG9pbmcg aXQgdGhpcyB3YXkuKQotCi1UaGUgY29tbWVudCByZWZlcmVuY2VkIGVhcmxpZXIgcmVnYXJkaW5n ICdleGVjdXRpbmdfYnJlYWtwb2ludF9jb21tYW5kcycKLXN0YXRlcyB0aGF0IHRoZSByZWFzb24g Zm9yIGNoZWNraW5nIHRoaXMgdmFyaWFibGUgaXMgdG8gYXZvaWQKLXBvdGVudGlhbCBlbmRsZXNz IHJlY3Vyc2lvbiB3aGVuIGEgJ3NvdXJjZScgY29tbWFuZCBhcHBlYXJzIGluCi1icy0+Y29tbWFu ZHMuICBXZSBrbm93IHRoYXQgYSBkcHJpbnRmIGNvbW1hbmQgaXMgY29uc3RyYWluZWQgdG8gZWl0 aGVyCi0xKSBleGVjdXRpb24gb2YgYSBHREIgcHJpbnRmIGNvbW1hbmQsIDIpIGFuIGluZmVyaW9y IGZ1bmN0aW9uIGNhbGwgb2YKLWEgcHJpbnRmLWxpa2UgZnVuY3Rpb24sIG9yIDMpIGV4ZWN1dGlv biBvZiBhbiBhZ2VudC1wcmludGYgY29tbWFuZC4KLVRoZXJlZm9yZSwgaW5maW5pdGUgcmVjdXJz aW9uIGR1ZSB0byBhICdzb3VyY2UnIGNvbW1hbmQgY2Fubm90IGhhcHBlbgotd2hlbiBleGVjdXRp bmcgY29tbWFuZHMgdXBvbiBoaXR0aW5nIGEgZHByaW50ZiBicmVha3BvaW50LgotCi1JIGNob3Nl IHRvIGZpeCB0aGlzIHByb2JsZW0gYnkgaGF2aW5nIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3Ry dWUoKQotZGlyZWN0bHkgY2FsbCBleGVjdXRlX2NvbnRyb2xfY29tbWFuZHMoKS4gIFRoaXMgbWVh bnMgdGhhdCBpdCBubwotbG9uZ2VyIGF0dGVtcHRzIHRvIGdvIHRocm91Z2ggYnBzdGF0X2RvX2Fj dGlvbnNfMSgpIGF2b2lkaW5nIHRoZQotaW5maW5pdGUgcmVjdXJzaW9uIGNoZWNrIGZvciBwb3Rl bnRpYWwgJ3NvdXJjZScgY29tbWFuZHMgb24gdGhlCi1jb21tYW5kIGNoYWluLiAgSSB0aGluayBp dCBzaW1wbGlmaWVzIHRoaXMgY29kZSBhIGxpdHRsZSBiaXQgdG9vLCBhCi1kZWZpbml0ZSBib251 cy4KLQotU3VtbWFyeToKLQotCSogYnJlYWtwb2ludC5jIChkcHJpbnRmX2FmdGVyX2NvbmRpdGlv bl90cnVlKTogRG9uJ3QgY2FsbAotCWJwc3RhdF9kb19hY3Rpb25zXzEoKS4gIENhbGwgZXhlY3V0 ZV9jb250cm9sX2NvbW1hbmRzKCkKLQlpbnN0ZWFkLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2JyZWFr cG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMKLS0tLSBhL2dkYi9icmVha3BvaW50LmMKLSsrKyBi L2dkYi9icmVha3BvaW50LmMKLUBAIC0xMzA0Myw5ICsxMzA0Myw2IEBAIGRwcmludGZfcHJpbnRf cmVjcmVhdGUgKHN0cnVjdCBicmVha3BvaW50ICp0cCwgc3RydWN0IHVpX2ZpbGUgKmZwKQotIHN0 YXRpYyB2b2lkCi0gZHByaW50Zl9hZnRlcl9jb25kaXRpb25fdHJ1ZSAoc3RydWN0IGJwc3RhdHMg KmJzKQotIHsKLS0gIHN0cnVjdCBicHN0YXRzIHRtcF9iczsKLS0gIHN0cnVjdCBicHN0YXRzICp0 bXBfYnNfcCA9ICZ0bXBfYnM7Ci0tCi0gICAvKiBkcHJpbnRmJ3MgbmV2ZXIgY2F1c2UgYSBzdG9w LiAgVGhpcyB3YXNuJ3Qgc2V0IGluIHRoZQotICAgICAgY2hlY2tfc3RhdHVzIGhvb2sgaW5zdGVh ZCBiZWNhdXNlIHRoYXQgd291bGQgbWFrZSB0aGUgZHByaW50ZidzCi0gICAgICBjb25kaXRpb24g bm90IGJlIGV2YWx1YXRlZC4gICovCi1AQCAtMTMwNTYsMTQgKzEzMDUzLDkgQEAgZHByaW50Zl9h ZnRlcl9jb25kaXRpb25fdHJ1ZSAoc3RydWN0IGJwc3RhdHMgKmJzKQotICAgICAgYnBzdGF0X2Rv X2FjdGlvbnMsIGlmIGEgYnJlYWtwb2ludCB0aGF0IGNhdXNlcyBhIHN0b3AgaGFwcGVucyB0bwot ICAgICAgYmUgc2V0IGF0IHNhbWUgYWRkcmVzcyBhcyB0aGlzIGRwcmludGYsIG9yIGV2ZW4gaWYg cnVubmluZyB0aGUKLSAgICAgIGNvbW1hbmRzIGhlcmUgdGhyb3dzLiAgKi8KLS0gIHRtcF9icy5j b21tYW5kcyA9IGJzLT5jb21tYW5kczsKLS0gIGJzLT5jb21tYW5kcyA9IE5VTEw7Ci0tCi0tICBi cHN0YXRfZG9fYWN0aW9uc18xICgmdG1wX2JzX3ApOwotLQotLSAgLyogJ3RtcF9icy5jb21tYW5k cycgd2lsbCB1c3VhbGx5IGJlIE5VTEwgYnkgbm93LCBidXQKLS0gICAgIGJwc3RhdF9kb19hY3Rp b25zXzEgbWF5IHJldHVybiBlYXJseSB3aXRob3V0IHByb2Nlc3NpbmcgdGhlIHdob2xlCi0tICAg ICBsaXN0LiAgKi8KLSsgIGNvdW50ZWRfY29tbWFuZF9saW5lIGNtZHMgPSBzdGQ6Om1vdmUgKGJz LT5jb21tYW5kcyk7Ci0rICBnZGJfYXNzZXJ0IChjbWRzICE9IG51bGxwdHIpOwotKyAgZXhlY3V0 ZV9jb250cm9sX2NvbW1hbmRzIChjbWRzLmdldCAoKSwgMCk7Ci0gfQotIAotIC8qIFRoZSBicmVh a3BvaW50X29wcyBzdHJ1Y3R1cmUgdG8gYmUgdXNlZCBvbiBzdGF0aWMgdHJhY2Vwb2ludHMgd2l0 aAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTIucGF0Y2ggYi9nZGItcmhi ejIwMjIxNzctZHByaW50Zi0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0 NGJjZDg3Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNv bT4KLURhdGU6IFdlZCwgMTAgTm92IDIwMjEgMTg6NTU6NDMgLTA3MDAKLVN1YmplY3Q6IGdkYi1y aGJ6MjAyMjE3Ny1kcHJpbnRmLTIucGF0Y2gKLQotOzsgQmFja3BvcnQgdGVzdCBjYXNlIGZvciBk cHJpbnRmIGJ1ZyAoUkggQlogMjAyMjE3NykuCi0KLVRlc3QgY2FzZSBmb3IgQnVnIDI4MzA4Ci0K LVRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBpcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIGlu Ci1kcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlwdC5leHAuCi0KLUJ1ZzogaHR0cHM6Ly9zb3VyY2V3 YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgzMDgKLQotVGhlIG5hbWUgb2YgdGhp cyBuZXcgdGVzdCB3YXMgYmFzZWQgb24gdGhhdCBvZiBhbiBleGlzdGluZyB0ZXN0LAotYnAtY21k cy1leGVjdXRpb24teC1zY3JpcHQuZXhwLiAgSSBzdGFydGVkIG9mZiBieSBjb3B5aW5nIHRoYXQg dGVzdCwKLWFkZGluZyB0byBpdCwgYW5kIHRoZW4gcmV3cml0aW5nIGFsbW9zdCBhbGwgb2YgaXQu ICBJdCdzIGRpZmZlcmVudAotZW5vdWdoIHRoYXQgSSBkZWNpZGVkIHRoYXQgbGlzdGluZyB0aGUg Y29weXJpZ2h0IHllYXIgYXMgMjAyMQotd2FzIHN1ZmZpY2llbnQuCi0KLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2RwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMKLUBAIC0wLDAgKzEsNTMgQEAKLSsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHly aWdodCAyMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0r I2luY2x1ZGUgPHN0ZGlvLmg+Ci0rCi0rdm9sYXRpbGUgaW50IHZpID0gMDsKLSsKLSt2b2lkCi0r aW5jX3ZpICgpCi0rewotKyAgdmkrKzsKLSt9Ci0rCi0rdm9pZAotK3ByaW50X3ZpICgpCi0rewot KyAgcHJpbnRmICgidmk9JWRcbiIsIHZpKTsKLSt9Ci0rCi0rdm9pZAotK2luY3JlbWVudCAoKQot K3sKLSsgIGluY192aSAoKTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQotK3sKLSsgIHByaW50X3ZpICgpOwotKyAgaW5jcmVtZW50ICgpOwotKyAgcHJpbnRfdmkg KCk7Ci0rICBpbmNyZW1lbnQgKCk7Ci0rICBwcmludF92aSAoKTsKLSsgIGluY3JlbWVudCAoKTsK LSsgIHByaW50X3ZpICgpOwotKwotKyAgZXhpdCAoMCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9kcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlwdC5leHAKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2RwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmV4cAotQEAgLTAsMCArMSw4NSBAQAotKyMgQ29w eXJpZ2h0IDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjIFRlc3QgdGhhdCBjb21tYW5kcyBpbiBhIEdE QiBzY3JpcHQgZmlsZSBydW4gdmlhIEdEQidzIC14IGZsYWcgd29yawotKyMgYXMgZXhwZWN0ZWQu ICBTcGVjaWZpY2FsbHksIHRoZSBzY3JpcHQgY3JlYXRlcyBhIGRwcmludGYgYnJlYWtwb2ludAot KyMgYXMgd2VsbCBhcyBhIG5vcm1hbCBicmVha3BvaW50IHRoYXQgaGFzICJjb250aW51ZSIgaW4g aXRzIGNvbW1hbmQKLSsjIGxpc3QsIGFuZCB0aGVuIGRvZXMgInJ1biIuICBDb3JyZWN0IG91dHB1 dCBmcm9tIEdEQiBpcyBjaGVja2VkIGFzCi0rIyBwYXJ0IG9mIHRoaXMgdGVzdC4KLSsKLSsjIEJh aWwgb3V0IGlmIHRoZSB0YXJnZXQgY2FuJ3QgdXNlIHRoZSAncnVuJyBjb21tYW5kLgotK2lmICFb dGFyZ2V0X2Nhbl91c2VfcnVuX2NtZF0gewotKyAgICByZXR1cm4gMAotK30KLSsKLStzdGFuZGFy ZF90ZXN0ZmlsZQotKwotK2lmIHtbYnVpbGRfZXhlY3V0YWJsZSAiZmFpbGVkIHRvIHByZXBhcmUi ICR0ZXN0ZmlsZSAkc3JjZmlsZSBkZWJ1Z119IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMg VGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgR0RCIHNjcmlwdCB0byBsb2FkLgotK3NldCB4X2ZpbGUg JHtzcmNkaXJ9LyR7c3ViZGlyfS8kdGVzdGZpbGUuZ2RiCi0rCi0rIyBDcmVhdGUgY29udGV4dCBp biB3aGljaCB0aGUgZ2xvYmFsLCBHREJGTEFHUywgd2lsbCBiZSByZXN0b3JlZCBhdAotKyMgdGhl IGVuZCBvZiB0aGUgYmxvY2suICBBbGwgY29tbWFuZHMgcnVuIHdpdGhpbiB0aGUgYmxvY2sgYXJl Ci0rIyBhY3R1YWxseSBydW4gaW4gdGhlIG91dGVyIGNvbnRleHQuICAoVGhpcyBpcyB3aHkgJ3Jl cycgaXMgYXZhaWxhYmxlCi0rIyBvdXRzaWRlIG9mIHRoZSBzYXZlX3ZhcnMgYmxvY2suKQotK3Nh dmVfdmFycyB7IEdEQkZMQUdTIH0gewotKyAgICAjIFNldCBmbGFncyB3aXRoIHdoaWNoIHRvIHN0 YXJ0IEdEQi4KLSsgICAgYXBwZW5kIEdEQkZMQUdTICIgLWV4IFwic2V0IGhlaWdodCB1bmxpbWl0 ZWRcIiIKLSsgICAgYXBwZW5kIEdEQkZMQUdTICIgLXggXCIkeF9maWxlXCIiCi0rICAgIGFwcGVu ZCBHREJGTEFHUyAiIC0tYXJncyBcIiRiaW5maWxlXCIiCi0rCi0rICAgICMgU3RhcnQgR0RCIHdp dGggYWJvdmUgZmxhZ3MuCi0rICAgIHNldCByZXMgW2dkYl9zcGF3bl0KLSt9Ci0rCi0rc2V0IHRl c3QgImxvYWQgYW5kIHJ1biBzY3JpcHQgd2l0aCAteCIKLStpZiB7ICRyZXMgIT0gMH0gewotKyAg ICBmYWlsICR0ZXN0Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFRoZSBzY3JpcHQgbG9hZGVk IHZpYSAteCBjb250YWlucyBhIHJ1biBjb21tYW5kOyB3aGlsZSBydW5uaW5nLCBHREIKLSsjIGlz IGV4cGVjdGVkIHRvIHByaW50IHRocmVlIG1lc3NhZ2VzIGZyb20gZHByaW50ZiBicmVha3BvaW50 cyBhbG9uZwotKyMgd2l0aCB0aHJlZSBpbnRlcnNwZXJzZWQgbWVzc2FnZXMgZnJvbSBhbiBvcmRp bmFyeSBicmVha3BvaW50ICh3aGljaAotKyMgd2FzIHNldCB1cCB3aXRoIGEgY29udGludWUgY29t bWFuZCkuICBTZXQgdXAgcGF0dGVybiBEIHRvIG1hdGNoCi0rIyBvdXRwdXQgZnJvbSBoaXR0aW5n IHRoZSBkcHJpbnRmIGJyZWFrcG9pbnQgYW5kIEIgZm9yIHRoZSBvcmRpbmFyeQotKyMgYnJlYWtw b2ludC4gIFRoZW4gc2V0IFBBVCB0byBjb250YWluIHRoZSBlbnRpcmUgcGF0dGVybiBvZiBleHBl Y3RlZAotKyMgb3V0cHV0IGZyb20gdGhlIGludGVyc3BlcnNlZCBkcHJpbnRmIGFuZCBvcmRpbmFy eSBicmVha3BvaW50cyBhbG9uZwotKyMgd2l0aCBzb21lIChhZGRpdGlvbmFsKSBleHBlY3RlZCBv dXRwdXQgZnJvbSB0aGUgZHByaW50ZiBicmVha3BvaW50cywKLSsjIGkuZS4gMCwgMSwgYW5kIDIu Ci0rc2V0IGQgImRwcmludGYgaW4gaW5jcmVtZW50Li4sIHZpPSIKLStzZXQgYiAiQnJlYWtwb2lu dCAuLCBpbmNfdmkiCi0rc2V0IHBhdCAiJHtkfTAuKj8kYi4qPyR7ZH0xLio/JGIuKj8ke2R9Mi4q PyRiLio/IgotKwotK3Byb2MgZG9fdGVzdCB7Y21kIHRlc3R9IHsKLSsgICAgZ2RiX3Rlc3QgJGNt ZCAiJDo6cGF0JDo6aW5mZXJpb3JfZXhpdGVkX3JlIG5vcm1hbGx5LioiICR0ZXN0Ci0rfQotKwot KyMgQ2hlY2sgb3V0cHV0IGZyb20gcnVubmluZyBzY3JpcHQgd2l0aCAteAotK2RvX3Rlc3QgIiIg JHRlc3QKLSsKLSsjIFJlc3RhcnQgR0RCIGFuZCAnc291cmNlJyB0aGUgc2NyaXB0OyB0aGlzIHdp bGwgKHN0aWxsKSBydW4gdGhlIHByb2dyYW0KLSsjIGR1ZSB0byB0aGUgJ3J1bicgY29tbWFuZCBp biB0aGUgc2NyaXB0LgotK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKLStkb190ZXN0ICJzb3VyY2Ug JHhfZmlsZSIgImxvYWQgYW5kIHJ1biBzY3JpcHQgdXNpbmcgc291cmNlIGNvbW1hbmQiCi0rCi0r IyBUaGlzIHNob3VsZCBsZWF2ZSB1cyBhdCB0aGUgZ2RiIHByb21wdDsgUnVuIHByb2dyYW0gYWdh aW4gdXNpbmcKLSsjIGFscmVhZHkgZXN0YWJsaXNoZWQgYnJlYWtwb2ludHMsIGkuZS4gdGhvc2Ug bG9hZGVkIGZyb20gdGhlCi0rIyBzY3JpcHQuICBQcmlvciB0byBmaXhpbmcgUFIgMjgzMDgsIHRo aXMgd2FzIHRoZSBvbmx5IHRlc3QgdGhhdAotKyMgd291bGQgcGFzcy4KLStkb190ZXN0ICJydW4i ICJydW4gYWdhaW4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kcHJpbnRm LWV4ZWN1dGlvbi14LXNjcmlwdC5nZGIgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYt ZXhlY3V0aW9uLXgtc2NyaXB0LmdkYgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZHByaW50Zi1leGVjdXRpb24teC1zY3Jp cHQuZ2RiCi1AQCAtMCwwICsxLDIxIEBACi0rIyBDb3B5cmlnaHQgMjAyMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotK2RwcmludGYgaW5jcmVtZW50LCAiZHByaW50ZiBpbiBpbmNyZW1lbnQoKSwgdmk9JWRcbiIs IHZpCi0rYnJlYWsgaW5jX3ZpCi0rY29tbWFuZHMKLSsgIGNvbnRpbnVlCi0rZW5kCi0rcnVuCgpk aWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDI0ODctcmV3b3JrLXNldC1kZWJ1Z2luZm9kLnBhdGNoIGIv Z2RiLXJoYnoyMDI0ODctcmV3b3JrLXNldC1kZWJ1Z2luZm9kLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBhNmI5YmM0Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MjAyNDg3LXJl d29yay1zZXQtZGVidWdpbmZvZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3NiArMCwwIEBA Ci1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9V VEYtOD9xP0FsZXhhbmRyYT0yMEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5j b20+Ci1EYXRlOiBUdWUsIDExIEphbiAyMDIyIDEyOjQ2OjA1ICswMTAwCi1TdWJqZWN0OiBnZGIt cmhiejIwMjQ4Ny1yZXdvcmstc2V0LWRlYnVnaW5mb2QucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0 cmVhbSBjb21taXQgZnJvbSAgU2ltb24gTWFyY2hpCi07OzMzM2YzNWI2MzE1IGdkYjogcGFzcy9y ZXR1cm4gc2V0dGluZyBzZXR0ZXIvZ2V0dGVyCi07O3NjYWxhciB2YWx1ZXMgYnkgdmFsdWUKLQot Z2RiOiByZXdvcmsgInNldCBkZWJ1Z2luZm9kIiBjb21tYW5kcwotCi1BcyBkaXNjdXNzZWQgaGVy ZSBbMV0sIGRvIHNvbWUgcmUtd29yayBpbiB0aGUgInNldCBkZWJ1Z2luZm9kIGNvbW1hbmRzIi4K LQotRmlyc3QsIHVzZSAic2V0IGRlYnVnaW5mb2QgZW5hYmxlZCBvbi9vZmYvYXNrIiBpbnN0ZWFk IG9mICJzZXQKLWRlYnVnaW5mb2Qgb24vb2ZmL2FzayIuICBUaGlzIGlzIG1vcmUgTUktZnJpZW5k bHksIGFuZCBpdCBnaXZlcyBhbgotb3V0cHV0IHRoYXQgbWFrZXMgbW9yZSBzZW5zZSBpbiAiaW5m byBzZXQiLCBmb3IgZXhhbXBsZS4KLQotVGhlbiwgbWFrZSB0aGUgc2hvdyBjb21tYW5kcyBub3Qg Y2FsbCAiZXJyb3IiIHdoZW4gZGVidWdpbmZvZCBzdXBwb3J0IGlzCi1ub3QgY29tcGlsZWQgaW4u ICBUaGlzIG1ha2VzIHRoZSBjb21tYW5kcyAic2hvdyIgYW5kICJzaG93IGRlYnVnaW5mb2QiCi1z dG9wIGVhcmx5LCBicmVha2luZyBnZGIuYmFzZS9kZWZhdWx0LmV4cDoKLQotICAgIFJ1bm5pbmcg L2hvbWUvc21hcmNoaS9zcmMvYmludXRpbHMtZ2RiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVm YXVsdC5leHAgLi4uCi0gICAgRkFJTDogZ2RiLmJhc2UvZGVmYXVsdC5leHA6IGluZm8gc2V0Ci0g ICAgRkFJTDogZ2RiLmJhc2UvZGVmYXVsdC5leHA6IHNob3cKLQotIC0gTWFrZSB0aGUgImRlYnVn aW5mb2QgZW5hYmxlZCIgc2V0dGluZyBkZWZhdWx0IHRvICJvZmYiIHdoZW4gZGVidWdpbmZvZAot ICAgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW4sIGFuZCAiYXNrIiBvdGhlcndpc2UuCi0gLSBN YWtlIHRoZSBzZXR0ZXIgb2YgImRlYnVnaW5mb2QgZW5hYmxlZCIgZXJyb3Igb3V0IHdoZW4gZGVi dWdpbmZvZAotICAgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW4sIHNvIHRoYXQgImRlYnVnaW5m b2QgZW5hYmxlZCIgd2lsbCBhbHdheXMKLSAgIHJlbWFpbiAib2ZmIiBpbiB0aGF0IGNhc2UuCi0g LSBNYWtlIHRoZSBzZXR0ZXIgb2YgImRlYnVnaW5mb2QgdmVyYm9zZSIgd29yayBpbiBhbnkgY2Fz ZS4gIEkgZG9uJ3QKLSAgIHNlZSB0aGUgaGFybSBpbiBsZXR0aW5nIHRoZSB1c2VyIGNoYW5nZSB0 aGF0IHNldHRpbmcsIHNpbmNlIHRoZSB1c2VyIHdpbGwKLSAgIGhpdCBhbiBlcnJvciBpZiB0aGV5 IHRyeSB0byBlbmFibGUgdGhlIHVzZSBvZiBkZWJ1Z2luZm9kLgotIC0gSSB3b3VsZCBkbyB0aGUg c2FtZSBmb3IgdGhlICJkZWJ1Z2luZm9kIHVybHMiIHNldHRlciwgYnV0IGJlY2F1c2UKLSAgIHRo aXMgb25lIG5lZWRzIHRvIHNlZSB0aGUgREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIgbWFjcm8sIHBy b3ZpZGVkIGJ5Ci0gICBsaWJkZWJ1Z2luZm9kLCBJIG1hZGUgdGhhdCBvbmUgZXJyb3Igb3V0IGFz IHdlbGwgaWYgZGVidWdpbmZvZAotICAgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaXQgKG90aGVy d2lzZSwgSSB3b3VsZCBoYXZlIGxlZnQgaXQgbGlrZQotICAgImRlYnVnaW5mb2QgdmVyYm9zZSIu ICBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBoYXJkLWNvZGUKLSAgICJERUJVR0lORk9EX1VSTFMi IGluIHRoZSBjb2RlIChpbiBmYWN0LCBpdCB3YXMgcHJpb3IgdG8gdGhpcyBwYXRjaCwKLSAgIGJ1 dCBJIHRoaW5rIGl0IHdhcyBhbiBvdmVyc2lnaHQsIGFzIG90aGVyIHNwb3RzIHVzZQotICAgREVC VUdJTkZPRF9VUkxTX0VOVl9WQVIpLCBvciB1c2UgYSBkdW1teSBzdHJpbmcgdG8gc3RvcmUgdGhl IHNldHRpbmcsCi0gICBidXQgSSBkb24ndCByZWFsbHkgc2VlIHRoZSB2YWx1ZSBpbiB0aGF0Lgot Ci1SZW5hbWUgZGVidWdpbmZvZF9lbmFibGUgdG8gZGVidWdpbmZvZF9lbmFibGVkLCBqdXN0IHNv IGl0IG1hdGNoZXMgdGhlCi1zZXR0aW5nIG5hbWUuCi0KLVsxXSBodHRwczovL3NvdXJjZXdhcmUu b3JnL3BpcGVybWFpbC9nZGItcGF0Y2hlcy8yMDIxLU9jdG9iZXIvMTgyOTM3Lmh0bWwKLQotQ2hh bmdlLUlkOiBJNDVmZGIyOTkzZjY2ODIyNmE1NjM5MjI4OTUxMzYyYjc4MDBmMDlkNQotQ28tQXV0 aG9yZWQtQnk6IEFhcm9uIE1lcmV5IDxhbWVyZXlAcmVkaGF0LmNvbT4KLQotZGlmZiAtLWdpdCBh L2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYyBiL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotLS0t IGEvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi0rKysgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0 LmMKLUBAIC0zMiw4ICszMiwyMiBAQCBzdGF0aWMgY29uc3QgY2hhciBkZWJ1Z2luZm9kX29uW10g PSAib24iOwotIHN0YXRpYyBjb25zdCBjaGFyIGRlYnVnaW5mb2Rfb2ZmW10gPSAib2ZmIjsKLSBz dGF0aWMgY29uc3QgY2hhciBkZWJ1Z2luZm9kX2Fza1tdID0gImFzayI7Ci0gCi0tc3RhdGljIGNv bnN0IGNoYXIgKmRlYnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZvZF9hc2s7Ci0tc3RhdGljIHVu c2lnbmVkIGRlYnVnaW5mb2RfdmVyYm9zZSA9IDE7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVn aW5mb2RfZW5hYmxlZF9lbnVtW10gPQotK3sKLSsgIGRlYnVnaW5mb2Rfb24sCi0rICBkZWJ1Z2lu Zm9kX29mZiwKLSsgIGRlYnVnaW5mb2RfYXNrLAotKyAgbnVsbHB0cgotK307Ci0rCi0rc3RhdGlj IGNvbnN0IGNoYXIgKmRlYnVnaW5mb2RfZW5hYmxlZCA9Ci0rI2lmIGRlZmluZWQoSEFWRV9MSUJE RUJVR0lORk9EKQotKyAgZGVidWdpbmZvZF9hc2s7Ci0rI2Vsc2UKLSsgIGRlYnVnaW5mb2Rfb2Zm OwotKyNlbmRpZgotKwotK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGVidWdpbmZvZF92ZXJib3NlID0g MTsKLSAKLSAvKiBUaGlzIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQuICBVUkxzIGFyZSBhbHdheXMg cHVsbGVkIGZyb20gdGhlCi0gICAgZW52aXJvbm1lbnQuICAqLwotQEAgLTYwLDY0ICs3NCw2IEBA IGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9p ZCwKLSAKLSAjZGVmaW5lIE5PX0lNUEwgXygiU3VwcG9ydCBmb3IgZGVidWdpbmZvZCBpcyBub3Qg Y29tcGlsZWQgaW50byBHREIuIikKLSAKLS0vKiBTdHViIHNldC9zaG93IGNvbW1hbmRzIHRoYXQg aW5kaWNhdGUgZGVidWdpbmZvZCBpcyBub3Qgc3VwcG9ydGVkLiAgKi8KLS0KLS1zdGF0aWMgdm9p ZAotLXNldF9kZWJ1Z2luZm9kX29uX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKLS17Ci0tICBlcnJvciAoTk9fSU1QTCk7Ci0tICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRl YnVnaW5mb2Rfb2ZmOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9kZWJ1Z2luZm9kX29mZl9j b21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0tewotLSAgZXJyb3IgKE5P X0lNUEwpOwotLSAgZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29mZjsKLS19Ci0tCi0t c3RhdGljIHZvaWQKLS1zZXRfZGVidWdpbmZvZF9hc2tfY29tbWFuZCAoY29uc3QgY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQotLXsKLS0gIGVycm9yIChOT19JTVBMKTsKLS0gIGRlYnVnaW5mb2Rf ZW5hYmxlID0gZGVidWdpbmZvZF9vZmY7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19kZWJ1 Z2luZm9kX3N0YXR1c19jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0t ewotLSAgZXJyb3IgKE5PX0lNUEwpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9kZWJ1Z2lu Zm9kX3VybHNfY29tbWFuZCAoY29uc3QgY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLS17 Ci0tICBlcnJvciAoTk9fSU1QTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19kZWJ1Z2lu Zm9kX3VybHNfY29tbWFuZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLS0J CQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kLCBjb25zdCBjaGFyICp2YWx1ZSkK LS17Ci0tICBlcnJvciAoTk9fSU1QTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2V0X2RlYnVn aW5mb2RfdmVyYm9zZV9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCi0t CQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotLXsKLS0gIGVycm9yIChOT19JTVBMKTsK LS0gIGRlYnVnaW5mb2RfdmVyYm9zZSA9IDA7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19k ZWJ1Z2luZm9kX3ZlcmJvc2VfY29tbWFuZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9t X3R0eSwKLS0JCQkJIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsCi0tCQkJCSBjb25zdCBj aGFyICp2YWx1ZSkKLS17Ci0tICBlcnJvciAoTk9fSU1QTCk7Ci0tfQotICNlbHNlCi0gI2luY2x1 ZGUgPGVsZnV0aWxzL2RlYnVnaW5mb2QuaD4KLSAKLUBAIC0xNDUsODIgKzEwMSw2IEBAIHN0cnVj dCBkZWJ1Z2luZm9kX2NsaWVudF9kZWxldGVyCi0gdXNpbmcgZGVidWdpbmZvZF9jbGllbnRfdXAK LSAgID0gc3RkOjp1bmlxdWVfcHRyPGRlYnVnaW5mb2RfY2xpZW50LCBkZWJ1Z2luZm9kX2NsaWVu dF9kZWxldGVyPjsKLSAKLS0vKiBFbmFibGUgZGVidWdpbmZvZC4gICovCi0tCi0tc3RhdGljIHZv aWQKLS1zZXRfZGVidWdpbmZvZF9vbl9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCi0tewotLSAgZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29uOwotLX0KLS0K LS0vKiBEaXNhYmxlIGRlYnVnaW5mb2QuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tc2V0X2RlYnVn aW5mb2Rfb2ZmX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLS17Ci0t ICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2Rfb2ZmOwotLX0KLS0KLS0vKiBCZWZvcmUg bmV4dCBxdWVyeSwgYXNrIHVzZXIgd2hldGhlciB0byBlbmFibGUgZGVidWdpbmZvZC4gICovCi0t Ci0tc3RhdGljIHZvaWQKLS1zZXRfZGVidWdpbmZvZF9hc2tfY29tbWFuZCAoY29uc3QgY2hhciAq YXJncywgaW50IGZyb21fdHR5KQotLXsKLS0gIGRlYnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZv ZF9hc2s7Ci0tfQotLQotLS8qIFNob3cgd2hldGhlciBkZWJ1Z2luZm9kIGlzIGVuYWJsZWQuICAq LwotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19kZWJ1Z2luZm9kX3N0YXR1c19jb21tYW5kIChjb25z dCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0tewotLSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8o IkRlYnVnaW5mb2QgZnVuY3Rpb25hbGl0eSBpcyBjdXJyZW50bHkgc2V0IHRvICIgXAotLQkJICAg ICAiXCIlc1wiLlxuIiksIGRlYnVnaW5mb2RfZW5hYmxlKTsKLS19Ci0tCi0tLyogU2V0IHRoZSBV UkxzIHRoYXQgZGVidWdpbmZvZCB3aWxsIHF1ZXJ5LiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXNl dF9kZWJ1Z2luZm9kX3VybHNfY29tbWFuZCAoY29uc3QgY2hhciAqaWdub3JlLCBpbnQgZnJvbV90 dHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYykKLS17Ci0tICBnZGJfYXNzZXJ0IChkZWJ1Z2luZm9kX3VybHMgIT0gbnVsbHB0cik7Ci0t ICBpZiAoc2V0ZW52ICgiREVCVUdJTkZPRF9VUkxTIiwgZGVidWdpbmZvZF91cmxzLCAxKSAhPSAw KQotLSAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8gc2V0IGRlYnVnaW5mb2QgVVJMczogJXMiKSwg c2FmZV9zdHJlcnJvciAoZXJybm8pKTsKLS19Ci0tCi0tLyogU2hvdyB0aGUgVVJMcyB0aGF0IGRl YnVnaW5mb2Qgd2lsbCBxdWVyeS4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1zaG93X2RlYnVnaW5m b2RfdXJsc19jb21tYW5kIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotLQkJ CSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQot LXsKLS0gIGlmICh2YWx1ZSA9PSBudWxscHRyIHx8IHZhbHVlWzBdID09ICdcMCcpCi0tICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCBVUkxzIGhhdmUgbm90IGJlZW4g c2V0LlxuIikpOwotLSAgZWxzZQotLSAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJEZWJ1 Z2luZm9kIFVSTHMgYXJlIGN1cnJlbnRseSBzZXQgdG86XG4lc1xuIiksCi0tCQkgICAgICB2YWx1 ZSk7Ci0tfQotLQotLS8qIE5vLW9wIHNldHRlciB1c2VkIGZvciBjb21wYXRpYmlsaXR5IHdoZW4g Z2RiIGlzIGJ1aWx0IHdpdGhvdXQgZGVidWdpbmZvZC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1z ZXRfZGVidWdpbmZvZF92ZXJib3NlX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSwKLS0JCQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0tewotLSAgcmV0dXJuOwot LX0KLS0KLS0vKiBTaG93IHZlcmJvc2l0eS4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1zaG93X2Rl YnVnaW5mb2RfdmVyYm9zZV9jb21tYW5kIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAotLQkJCQkgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZCwgY29uc3QgY2hhciAqdmFs dWUpCi0tewotLSAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCB2ZXJib3Nl IG91dHB1dCBpcyBzZXQgdG8gJXMuXG4iKSwKLS0JCSAgICB2YWx1ZSk7Ci0tfQotLQotIHN0YXRp YyBpbnQKLSBwcm9ncmVzc2ZuIChkZWJ1Z2luZm9kX2NsaWVudCAqYywgbG9uZyBjdXIsIGxvbmcg dG90YWwpCi0gewotQEAgLTI3NywxNSArMTU3LDE1IEBAIGdldF9kZWJ1Z2luZm9kX2NsaWVudCAo KQotICAgIHdoZXRoZXIgdG8gZW5hYmxlIGRlYnVnaW5mb2QuICAqLwotIAotIHN0YXRpYyBib29s Ci0tZGVidWdpbmZvZF9lbmFibGVkICgpCi0rZGVidWdpbmZvZF9pc19lbmFibGVkICgpCi0gewot ICAgY29uc3QgY2hhciAqdXJscyA9IGdldGVudiAoREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIpOwot IAotICAgaWYgKHVybHMgPT0gbnVsbHB0ciB8fCB1cmxzWzBdID09ICdcMCcKLS0gICAgICB8fCBk ZWJ1Z2luZm9kX2VuYWJsZSA9PSBkZWJ1Z2luZm9kX29mZikKLSsgICAgICB8fCBkZWJ1Z2luZm9k X2VuYWJsZWQgPT0gZGVidWdpbmZvZF9vZmYpCi0gICAgIHJldHVybiBmYWxzZTsKLSAKLS0gIGlm IChkZWJ1Z2luZm9kX2VuYWJsZSA9PSBkZWJ1Z2luZm9kX2FzaykKLSsgIGlmIChkZWJ1Z2luZm9k X2VuYWJsZWQgPT0gZGVidWdpbmZvZF9hc2spCi0gICAgIHsKLSAgICAgICBpbnQgcmVzcCA9IG5x dWVyeSAoXygiXG5UaGlzIEdEQiBzdXBwb3J0cyBhdXRvLWRvd25sb2FkaW5nIGRlYnVnaW5mbyAi IFwKLSAJCQkgICAiZnJvbSB0aGUgZm9sbG93aW5nIFVSTHM6XG4lc1xuRW5hYmxlIGRlYnVnaW5m b2QgIiBcCi1AQCAtMjk0LDE2ICsxNzQsMTYgQEAgZGVidWdpbmZvZF9lbmFibGVkICgpCi0gICAg ICAgaWYgKCFyZXNwKQotIAl7Ci0gCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJEZWJ1Z2luZm9kIGhh cyBiZWVuIGRpc2FibGVkLlxuVG8gbWFrZSB0aGlzICIgXAotLQkJCSAgICAgInNldHRpbmcgcGVy bWFuZW50LCBhZGQgXCdzZXQgZGVidWdpbmZvZCBvZmZcJyAiIFwKLS0JCQkgICAgICJ0byAuZ2Ri aW5pdC5cbiIpKTsKLS0JICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2Rfb2ZmOwotKwkJ CSAgICAgInNldHRpbmcgcGVybWFuZW50LCBhZGQgXCdzZXQgZGVidWdpbmZvZCAiIFwKLSsJCQkg ICAgICJlbmFibGVkIG9mZlwnIHRvIC5nZGJpbml0LlxuIikpOwotKwkgIGRlYnVnaW5mb2RfZW5h YmxlZCA9IGRlYnVnaW5mb2Rfb2ZmOwotIAkgIHJldHVybiBmYWxzZTsKLSAJfQotIAotICAgICAg IHByaW50Zl9maWx0ZXJlZCAoXygiRGVidWdpbmZvZCBoYXMgYmVlbiBlbmFibGVkLlxuVG8gbWFr ZSB0aGlzICIgXAotLQkJCSAic2V0dGluZyBwZXJtYW5lbnQsIGFkZCBcJ3NldCBkZWJ1Z2luZm9k IG9uXCcgIiBcCi0tCQkJICJ0byAuZ2RiaW5pdC5cbiIpKTsKLS0gICAgICBkZWJ1Z2luZm9kX2Vu YWJsZSA9IGRlYnVnaW5mb2Rfb247Ci0rCQkJICJzZXR0aW5nIHBlcm1hbmVudCwgYWRkIFwnc2V0 IGRlYnVnaW5mb2QgZW5hYmxlZCAiIFwKLSsJCQkgIm9uXCcgdG8gLmdkYmluaXQuXG4iKSk7Ci0r ICAgICAgZGVidWdpbmZvZF9lbmFibGVkID0gZGVidWdpbmZvZF9vbjsKLSAgICAgfQotIAotICAg cmV0dXJuIHRydWU7Ci1AQCAtMzE3LDcgKzE5Nyw3IEBAIGRlYnVnaW5mb2Rfc291cmNlX3F1ZXJ5 IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9pZCwKLSAJCQkgY29uc3QgY2hhciAqc3JjcGF0 aCwKLSAJCQkgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gKmRlc3RuYW1lKQotIHsKLS0g IGlmICghZGVidWdpbmZvZF9lbmFibGVkICgpKQotKyAgaWYgKCFkZWJ1Z2luZm9kX2lzX2VuYWJs ZWQgKCkpCi0gICAgIHJldHVybiBzY29wZWRfZmQgKC1FTk9TWVMpOwotIAotICAgZGVidWdpbmZv ZF9jbGllbnQgKmMgPSBnZXRfZGVidWdpbmZvZF9jbGllbnQgKCk7Ci1AQCAtMzU0LDcgKzIzNCw3 IEBAIGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWls ZF9pZCwKLSAJCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0gCQkJICAgIGdkYjo6dW5pcXVl X3htYWxsb2NfcHRyPGNoYXI+ICpkZXN0bmFtZSkKLSB7Ci0tICBpZiAoIWRlYnVnaW5mb2RfZW5h YmxlZCAoKSkKLSsgIGlmICghZGVidWdpbmZvZF9pc19lbmFibGVkICgpKQotICAgICByZXR1cm4g c2NvcGVkX2ZkICgtRU5PU1lTKTsKLSAKLSAgIGRlYnVnaW5mb2RfY2xpZW50ICpjID0gZ2V0X2Rl YnVnaW5mb2RfY2xpZW50ICgpOwotQEAgLTM4Miw2ICsyNjIsNjcgQEAgZGVidWdpbmZvZF9kZWJ1 Z2luZm9fcXVlcnkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1aWxkX2lkLAotIH0KLSAjZW5kaWYK LSAKLSsvKiBTZXQgY2FsbGJhY2sgZm9yICJzZXQgZGVidWdpbmZvZCBlbmFibGVkIi4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStzZXRfZGVidWdpbmZvZF9lbmFibGVkIChjb25zdCBjaGFyICphcmdz LCBpbnQgZnJvbV90dHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMpCi0rewotKyNpZiBkZWZpbmVkKEhBVkVfTElCREVCVUdJTkZPRCkKLSsgIC8q IFZhbHVlIGlzIGFscmVhZHkgc2V0LiAgKi8KLSsjZWxzZQotKyAgZXJyb3IgKE5PX0lNUEwpOwot KyNlbmRpZgotK30KLSsKLSsvKiBTaG93IGNhbGxiYWNrIGZvciAic2V0IGRlYnVnaW5mb2QgZW5h YmxlZCIuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX2VuYWJsZWQgKHVp X2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwgY21kX2xpc3RfZWxlbWVudCAqY21kLAotKwkJCSBj b25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBwcmludGZfdW5maWx0ZXJlZCAoXygiRGVidWdpbmZv ZCBmdW5jdGlvbmFsaXR5IGlzIGN1cnJlbnRseSBzZXQgdG8gIgotKwkJICAgICAgICJcIiVzXCIu XG4iKSwgZGVidWdpbmZvZF9lbmFibGVkKTsKLSt9Ci0rCi0rLyogU2V0IGNhbGxiYWNrIGZvciAi c2V0IGRlYnVnaW5mb2QgdXJscyIuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5m b2RfdXJscyAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5LAotKyAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotK3sKLSsjaWYgZGVmaW5lZChIQVZF X0xJQkRFQlVHSU5GT0QpCi0rICBnZGJfYXNzZXJ0IChkZWJ1Z2luZm9kX3VybHMgIT0gbnVsbHB0 cik7Ci0rICBpZiAoc2V0ZW52IChERUJVR0lORk9EX1VSTFNfRU5WX1ZBUiwgZGVidWdpbmZvZF91 cmxzLCAxKSAhPSAwKQotKyAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8gc2V0IGRlYnVnaW5mb2Qg VVJMczogJXMiKSwgc2FmZV9zdHJlcnJvciAoZXJybm8pKTsKLSsjZWxzZQotKyAgZXJyb3IgKE5P X0lNUEwpOwotKyNlbmRpZgotK30KLSsKLSsvKiBTaG93IGNhbGxiYWNrIGZvciAic2V0IGRlYnVn aW5mb2QgdXJscyIuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX3VybHMg KHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwgY21kX2xpc3RfZWxlbWVudCAqY21kLAotKwkJ ICAgICAgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgaWYgKHZhbHVlWzBdID09ICdcMCcpCi0r ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCBVUkxzIGhhdmUgbm90 IGJlZW4gc2V0LlxuIikpOwotKyAgZWxzZQotKyAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBf KCJEZWJ1Z2luZm9kIFVSTHMgYXJlIGN1cnJlbnRseSBzZXQgdG86XG4lc1xuIiksCi0rCQkgICAg ICB2YWx1ZSk7Ci0rfQotKwotKy8qIFNob3cgY2FsbGJhY2sgZm9yICJzZXQgZGVidWdpbmZvZCB2 ZXJib3NlIi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2RfdmVyYm9zZV9j b21tYW5kICh1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJCSBjbWRfbGlzdF9lbGVt ZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZp bGUsIF8oIkRlYnVnaW5mb2QgdmVyYm9zZSBvdXRwdXQgaXMgc2V0IHRvICVzLlxuIiksCi0rCQkg ICAgdmFsdWUpOwotK30KLSsKLSAvKiBSZWdpc3RlciBkZWJ1Z2luZm9kIGNvbW1hbmRzLiAgKi8K LSAKLSB2b2lkIF9pbml0aWFsaXplX2RlYnVnaW5mb2QgKCk7Ci1AQCAtMzk3LDIzICszMzgsMTcg QEAgX2luaXRpYWxpemVfZGVidWdpbmZvZCAoKQotICAgICAgICAgICAgICAgICAgICAgICAgXygi U2hvdyBkZWJ1Z2luZm9kIG9wdGlvbi4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICZzaG93 X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QsIDAsICZzaG93bGlzdCk7Ci0gCi0tICAvKiBzZXQgZGVi dWdpbmZvZCBvbiAqLwotLSAgYWRkX2NtZCAoIm9uIiwgY2xhc3NfcnVuLCBzZXRfZGVidWdpbmZv ZF9vbl9jb21tYW5kLAotLQkgICBfKCJFbmFibGUgZGVidWdpbmZvZC4iKSwgJnNldF9kZWJ1Z2lu Zm9kX3ByZWZpeF9saXN0KTsKLS0KLS0gIC8qIHNldCBkZWJ1Z2luZm9kIG9mZiAqLwotLSAgYWRk X2NtZCAoIm9mZiIsIGNsYXNzX3J1biwgc2V0X2RlYnVnaW5mb2Rfb2ZmX2NvbW1hbmQsCi0tCSAg IF8oIkRpc2FibGUgZGVidWdpbmZvZC4iKSwgJnNldF9kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsK LS0KLS0gIC8qIHNldCBkZWJ1Z2luZm9kIGFzayAqLwotLSAgYWRkX2NtZCAoImFzayIsIGNsYXNz X3J1biwgc2V0X2RlYnVnaW5mb2RfYXNrX2NvbW1hbmQsIF8oIlwKLS1Bc2sgdGhlIHVzZXIgd2hl dGhlciB0byBlbmFibGUgZGVidWdpbmZvZCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgbmV4dCBxdWVy eS4iKSwKLS0JICAgJnNldF9kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsKLS0KLS0gIC8qIHNob3cg ZGVidWdpbmZvZCBzdGF0dXMgKi8KLS0gIGFkZF9jbWQgKCJzdGF0dXMiLCBjbGFzc19ydW4sIHNo b3dfZGVidWdpbmZvZF9zdGF0dXNfY29tbWFuZCwKLS0JICAgXygiU2hvdyB3aGV0aGVyIGRlYnVn aW5mb2QgaXMgc2V0IHRvIFwib25cIiwgXCJvZmZcIiBvciBcImFza1wiLiIpLAotLQkgICAmc2hv d19kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsKLSsgIGFkZF9zZXRzaG93X2VudW1fY21kICgiZW5h YmxlZCIsIGNsYXNzX3J1biwgZGVidWdpbmZvZF9lbmFibGVkX2VudW0sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgJmRlYnVnaW5mb2RfZW5hYmxlZCwKLSsJCQlfKCJTZXQgd2hldGhlciB0byB1 c2UgZGVidWdpbmZvZC4iKSwKLSsJCQlfKCJTaG93IHdoZXRoZXIgdG8gdXNlIGRlYnVnaW5mb2Qu IiksCi0rCQkJXygiXAotK1doZW4gb24sIGVuYWJsZSB0aGUgdXNlIG9mIGRlYnVnaW5mb2QgdG8g ZG93bmxvYWQgbWlzc2luZyBkZWJ1ZyBpbmZvIGFuZFxuXAotK3NvdXJjZSBmaWxlcy4iKSwKLSsJ CQlzZXRfZGVidWdpbmZvZF9lbmFibGVkLAotKwkJCXNob3dfZGVidWdpbmZvZF9lbmFibGVkLAot KwkJCSZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwKLSsJCQkmc2hvd19kZWJ1Z2luZm9kX3By ZWZpeF9saXN0KTsKLSAKLSAgIC8qIHNldC9zaG93IGRlYnVnaW5mb2QgdXJscyAqLwotICAgYWRk X3NldHNob3dfc3RyaW5nX25vZXNjYXBlX2NtZCAoInVybHMiLCBjbGFzc19ydW4sICZkZWJ1Z2lu Zm9kX3VybHMsIF8oIlwKLUBAIC00MjIsOCArMzU3LDggQEAgU2hvdyB0aGUgbGlzdCBvZiBkZWJ1 Z2luZm9kIHNlcnZlciBVUkxzLiIpLCBfKCJcCi0gTWFuYWdlIHRoZSBzcGFjZS1zZXBhcmF0ZWQg bGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBVUkxzIHRoYXQgR0RCIHdpbGwgcXVlcnkgXAotIHdo ZW4gbWlzc2luZyBkZWJ1Z2luZm8sIGV4ZWN1dGFibGVzIG9yIHNvdXJjZSBmaWxlcy5cblRoZSBk ZWZhdWx0IHZhbHVlIGlzIFwKLSBjb3BpZWQgZnJvbSB0aGUgREVCVUdJTkZPRF9VUkxTIGVudmly b25tZW50IHZhcmlhYmxlLiIpLAotLQkJCQkgICBzZXRfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQs Ci0tCQkJCSAgIHNob3dfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQsCi0rCQkJCSAgIHNldF9kZWJ1 Z2luZm9kX3VybHMsCi0rCQkJCSAgIHNob3dfZGVidWdpbmZvZF91cmxzLAotIAkJCQkgICAmc2V0 X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QsCi0gCQkJCSAgICZzaG93X2RlYnVnaW5mb2RfcHJlZml4 X2xpc3QpOwotICAgaWYgKGdldGVudiAoIkRFQlVHSU5GT0RfVVJMUyIpICE9IG51bGxwdHIpCi1A QCAtNDM2LDcgKzM3MSw3IEBAIFNldCB2ZXJib3NpdHkgb2YgZGVidWdpbmZvZCBvdXRwdXQuIiks IF8oIlwKLSBTaG93IGRlYnVnaW5mb2QgZGVidWdnaW5nLiIpLCBfKCJcCi0gV2hlbiBzZXQgdG8g YSBub24temVybyB2YWx1ZSwgZGlzcGxheSB2ZXJib3NlIG91dHB1dCBmb3IgZWFjaCBkZWJ1Z2lu Zm9kIFwKLSBxdWVyeS5cblRvIGRpc2FibGUsIHNldCB0byB6ZXJvLiAgVmVyYm9zZSBvdXRwdXQg aXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuIiksCi0tCQkJICAgICBzZXRfZGVidWdpbmZvZF92ZXJi b3NlX2NvbW1hbmQsCi0rCQkJICAgICBudWxscHRyLAotIAkJCSAgICAgc2hvd19kZWJ1Z2luZm9k X3ZlcmJvc2VfY29tbWFuZCwKLSAJCQkgICAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwK LSAJCQkgICAgICZzaG93X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotZGlmZiAtLWdpdCBhL2dk Yi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi0tLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtNDcwNDYsMjcgKzQ3MDQ2 LDI4IEBAIHJlZ2FyZGluZyBAY29kZXtkZWJ1Z2luZm9kfS4KLSBAdmFsdWV7R0RCTn0gcHJvdmlk ZXMgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmb3IgY29uZmlndXJpbmcgQGNvZGV7ZGVidWdpbmZv ZH0uCi0gCi0gQHRhYmxlIEBjb2RlCi0tQGtpbmRleCBzZXQgZGVidWdpbmZvZAotLUBhbmNob3J7 c2V0IGRlYnVnaW5mb2R9Ci0tQGl0ZW0gc2V0IGRlYnVnaW5mb2QKLS1AaXRlbXggc2V0IGRlYnVn aW5mb2Qgb24KLStAa2luZGV4IHNldCBkZWJ1Z2luZm9kIGVuYWJsZWQKLStAYW5jaG9ye3NldCBk ZWJ1Z2luZm9kIGVuYWJsZWR9Ci0rQGl0ZW0gc2V0IGRlYnVnaW5mb2QgZW5hYmxlZAotK0BpdGVt eCBzZXQgZGVidWdpbmZvZCBlbmFibGVkIG9uCi0gQGNpbmRleCBlbmFibGUgZGVidWdpbmZvZAot IEB2YWx1ZXtHREJOfSB3aWxsIGF0dGVtcHQgdG8gcXVlcnkgQGNvZGV7ZGVidWdpbmZvZH0gc2Vy dmVycyB3aGVuIG1pc3NpbmcgZGVidWcKLSBpbmZvIG9yIHNvdXJjZSBmaWxlcy4KLSAKLS1AaXRl bSBzZXQgZGVidWdpbmZvZCBvZmYKLStAaXRlbSBzZXQgZGVidWdpbmZvZCBlbmFibGVkIG9mZgot IEB2YWx1ZXtHREJOfSB3aWxsIG5vdCBhdHRlbXB0IHRvIHF1ZXJ5IEBjb2Rle2RlYnVnaW5mb2R9 IHNlcnZlcnMgd2hlbiBtaXNzaW5nCi0tZGVidWcgaW5mbyBvciBzb3VyY2UgZmlsZXMuICBCeSBk ZWZhdWx0LCBAY29kZXtkZWJ1Z2luZm9kfSBpcyBzZXQgdG8gQGNvZGV7b2ZmfQotLWZvciBub24t aW50ZXJhY3RpdmUgc2Vzc2lvbnMuCi0rZGVidWcgaW5mbyBvciBzb3VyY2UgZmlsZXMuICBCeSBk ZWZhdWx0LCBAY29kZXtkZWJ1Z2luZm9kIGVuYWJsZWR9IGlzIHNldCB0bwotK0Bjb2Rle29mZn0g Zm9yIG5vbi1pbnRlcmFjdGl2ZSBzZXNzaW9ucy4KLSAKLS1AaXRlbSBzZXQgZGVidWdpbmZvZCBh c2sKLStAaXRlbSBzZXQgZGVidWdpbmZvZCBlbmFibGVkIGFzawotIEB2YWx1ZXtHREJOfSB3aWxs IHByb21wdCB0aGUgdXNlciB0byBlbmFibGUgb3IgZGlzYWJsZSBAY29kZXtkZWJ1Z2luZm9kfSBi ZWZvcmUKLS1hdHRlbXB0aW5nIHRvIHBlcmZvcm0gdGhlIG5leHQgcXVlcnkuICBCeSBkZWZhdWx0 LCBAY29kZXtkZWJ1Z2luZm9kfSBpcyBzZXQgdG8KLS1AY29kZXthc2t9IGZvciBpbnRlcmFjdGl2 ZSBzZXNzaW9ucy4KLSthdHRlbXB0aW5nIHRvIHBlcmZvcm0gdGhlIG5leHQgcXVlcnkuICBCeSBk ZWZhdWx0LCBAY29kZXtkZWJ1Z2luZm9kIGVuYWJsZWR9Ci0raXMgc2V0IHRvIEBjb2Rle2Fza30g Zm9yIGludGVyYWN0aXZlIHNlc3Npb25zLgotIAotLUBraW5kZXggc2hvdyBkZWJ1Z2luZm9kIHN0 YXR1cwotLUBpdGVtIHNob3cgZGVidWdpbmZvZCBzdGF0dXMKLS1TaG93IHdoZXRoZXIgQGNvZGV7 ZGVidWdpbmZvZH0gaXMgc2V0IHRvIEBjb2Rle29ufSwgQGNvZGV7b2ZmfSBvciBAY29kZXthc2t9 LgotK0BraW5kZXggc2hvdyBkZWJ1Z2luZm9kIGVuYWJsZWQKLStAaXRlbSBzaG93IGRlYnVnaW5m b2QgZW5hYmxlZAotK0Rpc3BsYXkgd2hldGhlciBAY29kZXtkZWJ1Z2luZm9kIGVuYWJsZWR9IGlz IHNldCB0byBAY29kZXtvbn0sIEBjb2Rle29mZn0gb3IKLStAY29kZXthc2t9LgotIAotIEBraW5k ZXggc2V0IGRlYnVnaW5mb2QgdXJscwotIEBjaW5kZXggY29uZmlndXJlIGRlYnVnaW5mb2QgVVJM cwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVnaW5mb2QvZmV0Y2hfc3JjX2Fu ZF9zeW1ib2xzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVnaW5mb2QvZmV0Y2hfc3JjX2Fu ZF9zeW1ib2xzLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9mZXRjaF9z cmNfYW5kX3N5bWJvbHMuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9kL2Zl dGNoX3NyY19hbmRfc3ltYm9scy5leHAKLUBAIC0yMzYsNyArMjM2LDcgQEAgcHJvYyBsb2NhbF91 cmwgeyB9IHsKLSAgICAgY2xlYW5fcmVzdGFydAotICAgICBnZGJfdGVzdCAiZmlsZSAkYmluZmls ZSIgIi4qTm8gZGVidWdnaW5nIHN5bWJvbHMuKiIgXAotIAkiZmlsZSBbZmlsZSB0YWlsICRiaW5m aWxlXSBjbWQiCi0tICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGRlYnVnaW5mb2Qgb2ZmIgot KyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBkZWJ1Z2luZm9kIGVuYWJsZWQgb2ZmIgotICAg ICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBkZWJ1Z2luZm9kIHVybHMgaHR0cDovLzEyNy4wLjAu MTokcG9ydCIKLSAKLSAgICAgIyBnZGIgc2hvdWxkbid0IGZpbmQgdGhlIGRlYnVnaW5mbyBzaW5j ZSBkZWJ1Z2luZm9kIGhhcyBiZWVuIGRpc2FibGVkCi1AQCAtMjQ0LDcgKzI0NCw3IEBAIHByb2Mg bG9jYWxfdXJsIHsgfSB7Ci0gCSJmaWxlIFtmaWxlIHRhaWwgJGJpbmZpbGVdIGNtZCBvZmYiCi0g Ci0gICAgICMgRW5hYmxlIGRlYnVnaW5mb2QgYW5kIGZldGNoIHRoZSBkZWJ1Z2luZm8KLS0gICAg Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGVidWdpbmZvZCBvbiIKLSsgICAgZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgZGVidWdpbmZvZCBlbmFibGVkIG9uIgotICAgICBnZGJfdGVzdCAiZmlsZSAk YmluZmlsZSIgIi4qUmVhZGluZyBzeW1ib2xzIGZyb20uKmRlYnVnaW5mby4qIiBcCi0gCSJmaWxl IFtmaWxlIHRhaWwgJGJpbmZpbGVdIGNtZCBvbiIKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoy MDI0ODc1LWV4cGFuZC1kb2N1bWVudGF0aW9uLWZvci1kZWJ1Z2luZm9kLnBhdGNoIGIvZ2RiLXJo YnoyMDI0ODc1LWV4cGFuZC1kb2N1bWVudGF0aW9uLWZvci1kZWJ1Z2luZm9kLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGYzYmY0Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6 MjAyNDg3NS1leHBhbmQtZG9jdW1lbnRhdGlvbi1mb3ItZGVidWdpbmZvZC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FsZXhhbmRyYT0yMEg9QzM9QTFqa292PUMz PUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEwIEphbiAyMDIyIDEzOjAw OjUwICswMTAwCi1TdWJqZWN0OiBnZGItcmhiejIwMjQ4NzUtZXhwYW5kLWRvY3VtZW50YXRpb24t Zm9yLWRlYnVnaW5mb2QucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZnJvbSBB YXJvbiBNZXJleQotOzszZWE0NGYyMTI5OSBnZGIudGV4aW5mbzogRXhwYW5kIGRvY3VtZW50YXRp b24gZm9yIGRlYnVnaW5mb2QKLQotZ2RiLnRleGluZm86IEV4cGFuZCBkb2N1bWVudGF0aW9uIGZv ciBkZWJ1Z2luZm9kCi0KLUFkZCBzZWN0aW9uIGRlc2NyaWJpbmcgR0RCJ3MgdXNhZ2Ugb2YgZGVi dWdpbmZvZC4KLQotUmVmZXIgdG8gdGhpcyBuZXcgc2VjdGlvbiBpbiB0aGUgZGVzY3JpcHRpb24g b2YgdGhlICctLXdpdGgtZGVidWdpbmZvZCcKLWNvbmZpZ3VyZSBvcHRpb24uCi0KLU1lbnRpb24g ZGVidWdpbmZvZCBpbiB0aGUgJ1NlcGFyYXRlIERlYnVnIEZpbGVzJyBzZWN0aW9uLgotCi1kaWZm IC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tLSBh L2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xODQs NiArMTg0LDcgQEAgc29mdHdhcmUgaW4gZ2VuZXJhbC4gIFdlIHdpbGwgbWlzcyBoaW0uCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0KLSAqIFRy YWNlIEZpbGUgRm9ybWF0OjoJCUdEQiB0cmFjZSBmaWxlIGZvcm1hdAotICogSW5kZXggU2VjdGlv biBGb3JtYXQ6OiAgICAgICAgLmdkYl9pbmRleCBzZWN0aW9uIGZvcm1hdAotKyogRGVidWdpbmZv ZDo6ICAgICAgICAgICAgICAgICAgRG93bmxvYWQgZGVidWdnaW5nIHJlc291cmNlcyB3aXRoIEBj b2Rle2RlYnVnaW5mb2R9Ci0gKiBNYW4gUGFnZXM6OgkJCU1hbnVhbCBwYWdlcwotICogQ29weWlu Zzo6CQkJR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugc2F5cwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaG93IHlvdSBjYW4gY29weSBhbmQgc2hhcmUgR0RCCi1AQCAtMjEzNzMs NyArMjEzNzQsOSBAQCBGb3IgdGhlIGBgYnVpbGQgSUQnJyBtZXRob2QsIEB2YWx1ZXtHREJOfSBs b29rcyBpbiB0aGUKLSBhIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntubn0vQHZhcntubm5ubm5ubn0u ZGVidWd9LCB3aGVyZSBAdmFye25ufSBhcmUgdGhlCi0gZmlyc3QgMiBoZXggY2hhcmFjdGVycyBv ZiB0aGUgYnVpbGQgSUQgYml0IHN0cmluZywgYW5kIEB2YXJ7bm5ubm5ubm59Ci0gYXJlIHRoZSBy ZXN0IG9mIHRoZSBiaXQgc3RyaW5nLiAgKFJlYWwgYnVpbGQgSUQgc3RyaW5ncyBhcmUgMzIgb3Ig bW9yZQotLWhleCBjaGFyYWN0ZXJzLCBub3QgMTAuKQotK2hleCBjaGFyYWN0ZXJzLCBub3QgMTAu KSAgQHZhbHVle0dEQk59IGNhbiBhdXRvbWF0aWNhbGx5IHF1ZXJ5Ci0rQGNvZGV7ZGVidWdpbmZv ZH0gc2VydmVycyB1c2luZyBidWlsZCBJRHMgaW4gb3JkZXIgdG8gZG93bmxvYWQgc2VwYXJhdGUg ZGVidWcKLStmaWxlcyB0aGF0IGNhbm5vdCBiZSBmb3VuZCBsb2NhbGx5LiAgRm9yIG1vcmUgaW5m b3JtYXRpb24gc2VlIEByZWZ7RGVidWdpbmZvZH0uCi0gQGVuZCBpdGVtaXplCi0gCi0gU28sIGZv ciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhc2sgQHZhbHVle0dEQk59IHRvIGRlYnVnCi1AQCAtMjEz OTQsNiArMjEzOTcsMTAgQEAgZGVidWcgaW5mb3JtYXRpb24gZmlsZXMsIGluIHRoZSBpbmRpY2F0 ZWQgb3JkZXI6Ci0gQGZpbGV7L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9scy5kZWJ1Z30uCi0gQGVu ZCBpdGVtaXplCi0gCi0rSWYgdGhlIGRlYnVnIGZpbGUgc3RpbGwgaGFzIG5vdCBiZWVuIGZvdW5k IGFuZCBAY29kZXtkZWJ1Z2luZm9kfQotKyhAcHhyZWZ7RGVidWdpbmZvZH0pIGlzIGVuYWJsZWQs IEB2YWx1ZXtHREJOfSB3aWxsIGF0dGVtcHQgdG8gZG93bmxvYWQgdGhlCi0rZmlsZSBmcm9tIEBj b2Rle2RlYnVnaW5mb2R9IHNlcnZlcnMuCi0rCi0gQGFuY2hvcntkZWJ1Zy1maWxlLWRpcmVjdG9y eX0KLSBHbG9iYWwgZGVidWdnaW5nIGluZm8gZGlyZWN0b3JpZXMgZGVmYXVsdCB0byB3aGF0IGlz IHNldCBieSBAdmFsdWV7R0RCTn0KLSBjb25maWd1cmUgb3B0aW9uIEBvcHRpb257LS13aXRoLXNl cGFyYXRlLWRlYnVnLWRpcn0uICBEdXJpbmcgQHZhbHVle0dEQk59IHJ1bgotQEAgLTM4NzQ2LDEy ICszODc1MywxMiBAQCBVc2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1j YXAgbGlicmFyeSwgZm9yIHRleHQtbW9kZQotIHRlcm1pbmFsIG9wZXJhdGlvbnMuCi0gCi0gQGl0 ZW0gLS13aXRoLWRlYnVnaW5mb2QKLS1CdWlsZCBAdmFsdWV7R0RCTn0gd2l0aCBsaWJkZWJ1Z2lu Zm9kLCB0aGUgZGVidWdpbmZvZCBjbGllbnQgbGlicmFyeS4KLS1Vc2VkIHRvIGF1dG9tYXRpY2Fs bHkgZmV0Y2ggc291cmNlIGZpbGVzIGFuZCBzZXBhcmF0ZSBkZWJ1ZyBmaWxlcyBmcm9tCi0tZGVi dWdpbmZvZCBzZXJ2ZXJzIHVzaW5nIHRoZSBhc3NvY2lhdGVkIGV4ZWN1dGFibGUncyBidWlsZCBJ RC4gRW5hYmxlZAotLWJ5IGRlZmF1bHQgaWYgbGliZGVidWdpbmZvZCBpcyBpbnN0YWxsZWQgYW5k IGZvdW5kIGF0IGNvbmZpZ3VyZSB0aW1lLgotLWRlYnVnaW5mb2QgaXMgcGFja2FnZWQgd2l0aCBl bGZ1dGlscywgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDAuMTc4LiBZb3UKLS1jYW4gZ2V0IHRoZSBs YXRlc3QgdmVyc2lvbiBmcm9tIGBodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzLycuCi0r QnVpbGQgQHZhbHVle0dEQk59IHdpdGggQGZpbGV7bGliZGVidWdpbmZvZH0sIHRoZSBAY29kZXtk ZWJ1Z2luZm9kfSBjbGllbnQKLStsaWJyYXJ5LiAgVXNlZCB0byBhdXRvbWF0aWNhbGx5IGZldGNo IEVMRiwgRFdBUkYgYW5kIHNvdXJjZSBmaWxlcyBmcm9tCi0rQGNvZGV7ZGVidWdpbmZvZH0gc2Vy dmVycyB1c2luZyBidWlsZCBJRHMgYXNzb2NpYXRlZCB3aXRoIGFueSBtaXNzaW5nCi0rZmlsZXMu ICBFbmFibGVkIGJ5IGRlZmF1bHQgaWYgQGZpbGV7bGliZGVidWdpbmZvZH0gaXMgaW5zdGFsbGVk IGFuZCBmb3VuZAotK2F0IGNvbmZpZ3VyZSB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVn YXJkaW5nIEBjb2Rle2RlYnVnaW5mb2R9IHNlZQotK0ByZWZ7RGVidWdpbmZvZH0uCi0gCi0gQGl0 ZW0gLS13aXRoLWxpYnVud2luZC1pYTY0Ci0gVXNlIHRoZSBsaWJ1bndpbmQgbGlicmFyeSBmb3Ig dW53aW5kaW5nIGZ1bmN0aW9uIGNhbGwgc3RhY2sgb24gaWE2NAotQEAgLTQ3MDEyLDYgKzQ3MDE5 LDgyIEBAIHN3aXRjaCAoZGllLT50YWcpCi0gICBAfQotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0r QG5vZGUgRGVidWdpbmZvZAotK0BhcHBlbmRpeCBEb3dubG9hZCBkZWJ1Z2dpbmcgcmVzb3VyY2Vz IHdpdGggRGVidWdpbmZvZAotK0BjaW5kZXggZGVidWdpbmZvZAotKwotK0Bjb2Rle2RlYnVnaW5m b2R9IGlzIGFuIEhUVFAgc2VydmVyIGZvciBkaXN0cmlidXRpbmcgRUxGLCBEV0FSRiBhbmQgc291 cmNlCi0rZmlsZXMuCi0rCi0rV2l0aCB0aGUgQGNvZGV7ZGVidWdpbmZvZH0gY2xpZW50IGxpYnJh cnksIEBmaWxle2xpYmRlYnVnaW5mb2R9LCBAdmFsdWV7R0RCTn0KLStjYW4gcXVlcnkgc2VydmVy cyB1c2luZyB0aGUgYnVpbGQgSURzIGFzc29jaWF0ZWQgd2l0aCBtaXNzaW5nIGRlYnVnIGluZm8s Ci0rZXhlY3V0YWJsZXMgYW5kIHNvdXJjZSBmaWxlcyBpbiBvcmRlciB0byBkb3dubG9hZCB0aGVt IG9uIGRlbWFuZC4KLSsKLStGb3IgaW5zdHJ1Y3Rpb25zIG9uIGJ1aWxkaW5nIEB2YWx1ZXtHREJO fSB3aXRoIEBmaWxle2xpYmRlYnVnaW5mb2R9LAotK0BweHJlZntDb25maWd1cmUgT3B0aW9ucyws LS13aXRoLWRlYnVnaW5mb2R9LiAgQGNvZGV7ZGVidWdpbmZvZH0gaXMgcGFja2FnZWQKLSt3aXRo IEBjb2Rle2VsZnV0aWxzfSwgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDAuMTc4LiAgU2VlCi0rQHVy ZWZ7aHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9EZWJ1Z2luZm9kLmh0bWx9IGZvciBt b3JlIGluZm9ybWF0aW9uCi0rcmVnYXJkaW5nIEBjb2Rle2RlYnVnaW5mb2R9LgotKwotK0BtZW51 Ci0rKiBEZWJ1Z2luZm9kIFNldHRpbmdzOjoJCUNvbmZpZ3VyaW5nIGRlYnVnaW5mb2Qgd2l0aCBA dmFsdWV7R0RCTn0KLStAZW5kIG1lbnUKLSsKLStAbm9kZSBEZWJ1Z2luZm9kIFNldHRpbmdzCi0r QHNlY3Rpb24gRGVidWdpbmZvZCBTZXR0aW5ncwotKwotK0B2YWx1ZXtHREJOfSBwcm92aWRlcyB0 aGUgZm9sbG93aW5nIGNvbW1hbmRzIGZvciBjb25maWd1cmluZyBAY29kZXtkZWJ1Z2luZm9kfS4K LSsKLStAdGFibGUgQGNvZGUKLStAa2luZGV4IHNldCBkZWJ1Z2luZm9kCi0rQGFuY2hvcntzZXQg ZGVidWdpbmZvZH0KLStAaXRlbSBzZXQgZGVidWdpbmZvZAotK0BpdGVteCBzZXQgZGVidWdpbmZv ZCBvbgotK0BjaW5kZXggZW5hYmxlIGRlYnVnaW5mb2QKLStAdmFsdWV7R0RCTn0gd2lsbCBhdHRl bXB0IHRvIHF1ZXJ5IEBjb2Rle2RlYnVnaW5mb2R9IHNlcnZlcnMgd2hlbiBtaXNzaW5nIGRlYnVn Ci0raW5mbyBvciBzb3VyY2UgZmlsZXMuCi0rCi0rQGl0ZW0gc2V0IGRlYnVnaW5mb2Qgb2ZmCi0r QHZhbHVle0dEQk59IHdpbGwgbm90IGF0dGVtcHQgdG8gcXVlcnkgQGNvZGV7ZGVidWdpbmZvZH0g c2VydmVycyB3aGVuIG1pc3NpbmcKLStkZWJ1ZyBpbmZvIG9yIHNvdXJjZSBmaWxlcy4gIEJ5IGRl ZmF1bHQsIEBjb2Rle2RlYnVnaW5mb2R9IGlzIHNldCB0byBAY29kZXtvZmZ9Ci0rZm9yIG5vbi1p bnRlcmFjdGl2ZSBzZXNzaW9ucy4KLSsKLStAaXRlbSBzZXQgZGVidWdpbmZvZCBhc2sKLStAdmFs dWV7R0RCTn0gd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gZW5hYmxlIG9yIGRpc2FibGUgQGNvZGV7 ZGVidWdpbmZvZH0gYmVmb3JlCi0rYXR0ZW1wdGluZyB0byBwZXJmb3JtIHRoZSBuZXh0IHF1ZXJ5 LiAgQnkgZGVmYXVsdCwgQGNvZGV7ZGVidWdpbmZvZH0gaXMgc2V0IHRvCi0rQGNvZGV7YXNrfSBm b3IgaW50ZXJhY3RpdmUgc2Vzc2lvbnMuCi0rCi0rQGtpbmRleCBzaG93IGRlYnVnaW5mb2Qgc3Rh dHVzCi0rQGl0ZW0gc2hvdyBkZWJ1Z2luZm9kIHN0YXR1cwotK1Nob3cgd2hldGhlciBAY29kZXtk ZWJ1Z2luZm9kfSBpcyBzZXQgdG8gQGNvZGV7b259LCBAY29kZXtvZmZ9IG9yIEBjb2Rle2Fza30u Ci0rCi0rQGtpbmRleCBzZXQgZGVidWdpbmZvZCB1cmxzCi0rQGNpbmRleCBjb25maWd1cmUgZGVi dWdpbmZvZCBVUkxzCi0rQGl0ZW0gc2V0IGRlYnVnaW5mb2QgdXJscwotK0BpdGVteCBzZXQgZGVi dWdpbmZvZCB1cmxzIEB2YXJ7dXJsc30KLStTZXQgdGhlIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9m IFVSTHMgdGhhdCBAY29kZXtkZWJ1Z2luZm9kfSB3aWxsIGF0dGVtcHQgdG8KLStxdWVyeS4gIE9u bHkgQGNvZGV7aHR0cDovL30sIEBjb2Rle2h0dHBzOi8vfSBhbmQgQGNvZGV7ZmlsZTovL30gcHJv dG9jb2xzCi0rc2hvdWxkIGJlIHVzZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBAY29kZXtkZWJ1 Z2luZm9kIHVybHN9IGlzIGNvcGllZCBmcm9tCi0rdGhlIEB2YXJ7REVCVUdJTkZPRF9VUkxTfSBl bnZpcm9ubWVudCB2YXJpYWJsZS4KLSsKLStAa2luZGV4IHNob3cgZGVidWdpbmZvZCB1cmxzCi0r QGl0ZW0gc2hvdyBkZWJ1Z2luZm9kIHVybHMKLStEaXNwbGF5IHRoZSBsaXN0IG9mIFVSTHMgdGhh dCBAY29kZXtkZWJ1Z2luZm9kfSB3aWxsIGF0dGVtcHQgdG8gcXVlcnkuCi0rCi0rQGtpbmRleCBz ZXQgZGVidWdpbmZvZCB2ZXJib3NlCi0rQGNpbmRleCBkZWJ1Z2luZm9kIHZlcmJvc2l0eQotK0Bp dGVtIHNldCBkZWJ1Z2luZm9kIHZlcmJvc2UKLStAaXRlbXggc2V0IGRlYnVnaW5mb2QgdmVyYm9z ZSBAdmFye259Ci0rRW5hYmxlIG9yIGRpc2FibGUgQGNvZGV7ZGVidWdpbmZvZH0tcmVsYXRlZCBv dXRwdXQuICBVc2UgYSBub24temVybyB2YWx1ZQotK3RvIGVuYWJsZSBhbmQgQGNvZGV7MH0gdG8g ZGlzYWJsZS4gIEBjb2Rle2RlYnVnaW5mb2R9IG91dHB1dCBpcyBzaG93biBieQotK2RlZmF1bHQu Ci0rCi0rQGtpbmRleCBzaG93IGRlYnVnaW5mb2QgdmVyYm9zZQotK0BpdGVtIHNob3cgZGVidWdp bmZvZCB2ZXJib3NlCi0rU2hvdyB0aGUgY3VycmVudCB2ZXJib3NpdHkgc2V0dGluZy4KLSsKLStA ZW5kIHRhYmxlCi0rCi0gQG5vZGUgTWFuIFBhZ2VzCi0gQGFwcGVuZGl4IE1hbnVhbCBwYWdlcwot IEBjaW5kZXggTWFuIHBhZ2VzCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDI0ODc1LWZpeC11bml0 dGVzdC1mYWlsdXJlLnBhdGNoIGIvZ2RiLXJoYnoyMDI0ODc1LWZpeC11bml0dGVzdC1mYWlsdXJl LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmYyMWQ2Li4wMDAwMDAwCi0t LSBhL2dkYi1yaGJ6MjAyNDg3NS1maXgtdW5pdHRlc3QtZmFpbHVyZS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QWxleGFuZHJhPTIwSD1DMz1BMWprb3Y9QzM9QTE/ PSA8YWhhamtvdmFAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMTEgSmFuIDIwMjIgMTI6MjI6Mjkg KzAxMDAKLVN1YmplY3Q6IGdkYi1yaGJ6MjAyNDg3NS1maXgtdW5pdHRlc3QtZmFpbHVyZS5wYXRj aAotCi07O0JhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCBmcm9tIFRvbSBUcm9tZXkKLTs7MmE4ZjFm NDc0NDYgRml4IHVuaXR0ZXN0LmV4cCBmYWlsdXJlIGR1ZSB0byAnc2V0IGRlYnVnaW5mb2QnIGFk ZGl0aW9uCi0KLUZpeCB1bml0dGVzdC5leHAgZmFpbHVyZSBkdWUgdG8gJ3NldCBkZWJ1Z2luZm9k JyBhZGRpdGlvbgotCi1UaGUgJ3NldCBkZWJ1Z2luZm9kJyBjaGFuZ2UgY2F1c2VkIGEgcmVncmVz c2lvbiBpbiB1bml0dGVzdC5leHA6Ci0KLSAgICBSdW5uaW5nIHNlbGZ0ZXN0IGhlbHBfZG9jX2lu dmFyaWFudHMuCi0gICAgaGVscCBkb2MgYnJva2VuIGludmFyaWFudDogY29tbWFuZCAnaW5mbyBz ZXQgZGVidWdpbmZvZCcgaGVscCBkb2MgZmlyc3QgbGluZSBpcyBub3QgdGVybWluYXRlZCB3aXRo IGEgJy4nIGNoYXJhY3RlcgotICAgIGhlbHAgZG9jIGJyb2tlbiBpbnZhcmlhbnQ6IGNvbW1hbmQg J3NldCBkZWJ1Z2luZm9kJyBoZWxwIGRvYyBmaXJzdCBsaW5lIGlzIG5vdCB0ZXJtaW5hdGVkIHdp dGggYSAnLicgY2hhcmFjdGVyCi0gICAgaGVscCBkb2MgYnJva2VuIGludmFyaWFudDogY29tbWFu ZCAnc2hvdyBkZWJ1Z2luZm9kJyBoZWxwIGRvYyBmaXJzdCBsaW5lIGlzIG5vdCB0ZXJtaW5hdGVk IHdpdGggYSAnLicgY2hhcmFjdGVyCi0gICAgU2VsZiB0ZXN0IGZhaWxlZDogc2VsZi10ZXN0IGZh aWxlZCBhdCAuLi8uLi9iaW51dGlscy1nZGIvZ2RiL3VuaXR0ZXN0cy9jb21tYW5kLWRlZi1zZWxm dGVzdHMuYzoxMDAKLQotVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4gIEknbSBjaGVja2lu ZyBpdCBpbi4KLQotZGlmZiAtLWdpdCBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYyBiL2dkYi9k ZWJ1Z2luZm9kLXN1cHBvcnQuYwotLS0tIGEvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi0rKysg Yi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLUBAIC0zOTAsMTEgKzM5MCwxMSBAQCBfaW5pdGlh bGl6ZV9kZWJ1Z2luZm9kICgpCi0gewotICAgLyogc2V0L3Nob3cgZGVidWdpbmZvZCAqLwotICAg YWRkX2Jhc2ljX3ByZWZpeF9jbWQgKCJkZWJ1Z2luZm9kIiwgY2xhc3NfcnVuLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIF8oIlNldCBkZWJ1Z2luZm9kIG9wdGlvbnMiKSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBfKCJTZXQgZGVidWdpbmZvZCBvcHRpb25zLiIpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwgMCwgJnNldGxpc3QpOwot IAotICAgYWRkX3Nob3dfcHJlZml4X2NtZCAoImRlYnVnaW5mb2QiLCBjbGFzc19ydW4sCi0tICAg ICAgICAgICAgICAgICAgICAgICBfKCJTaG93IGRlYnVnaW5mb2Qgb3B0aW9ucyIpLAotKyAgICAg ICAgICAgICAgICAgICAgICAgXygiU2hvdyBkZWJ1Z2luZm9kIG9wdGlvbi4iKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICZzaG93X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QsIDAsICZzaG93bGlz dCk7Ci0gCi0gICAvKiBzZXQgZGVidWdpbmZvZCBvbiAqLwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6 MjAyNDg3NS1wcjI3MDI2LnBhdGNoIGIvZ2RiLXJoYnoyMDI0ODc1LXByMjcwMjYucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NGYxMzQuLjAwMDAwMDAKLS0tIGEvZ2RiLXJo YnoyMDI0ODc1LXByMjcwMjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1G cm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYt OD9xP0FsZXhhbmRyYT0yMEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+ Ci1EYXRlOiBUdWUsIDExIEphbiAyMDIyIDEzOjIyOjQ0ICswMTAwCi1TdWJqZWN0OiBnZGItcmhi ejIwMjQ4NzUtcHIyNzAyNi5wYXRjaAotCi07O0JhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCBmcm9t IEFhcm9uIE1lcmV5Ci07O2I5ZGIyNmI0YzQ0IFtQUiBnZGIvMjcwMjZdIENUUkwtQyBpcyBpZ25v cmVkIHdoZW4gZGVidWcgaW5mbyBpcyBkb3dubG9hZGVkCi0KLVtQUiBnZGIvMjcwMjZdIENUUkwt QyBpcyBpZ25vcmVkIHdoZW4gZGVidWcgaW5mbyBpcyBkb3dubG9hZGVkCi0KLUR1cmluZyBkZWJ1 Z2luZm9kIGRvd25sb2FkcywgY3RybC1jIHNob3VsZCByZXN1bHQgaW4gdGhlIGRvd25sb2FkCi1i ZWluZyBjYW5jZWxsZWQgYW5kIHNraXBwZWQuICBIb3dldmVyIGluIHNvbWUgY2FzZXMsIGN0cmwt YyBmYWlscyB0bwotZ2V0IGRlbGl2ZXJlZCB0byBnZGIgZHVyaW5nIGRvd25sb2FkaW5nLiAgVGhp cyBjYW4gcmVzdWx0IGluIGRvd25sb2FkcwotYmVpbmcgdW5za2lwcGFibGUuCi0KLUZpeCB0aGlz IGJ5IGVuc3VyaW5nIHRoYXQgdGFyZ2V0X3Rlcm1pbmFsOjpvdXJzIGlzIGluIGVmZmVjdCBmb3Ig dGhlCi1kdXJhdGlvbiBvZiBlYWNoIGRvd25sb2FkLgotCi1Dby1hdXRob3JlZC1ieTogVG9tIGRl IFZyaWVzIDx0ZGV2cmllc0BzdXNlLmRlPgotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxs YS9zaG93X2J1Zy5jZ2k/aWQ9MjcwMjYjYzMKLQotZGlmZiAtLWdpdCBhL2dkYi9kZWJ1Z2luZm9k LXN1cHBvcnQuYyBiL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotLS0tIGEvZ2RiL2RlYnVnaW5m b2Qtc3VwcG9ydC5jCi0rKysgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLUBAIC0yMyw2ICsy Myw3IEBACi0gI2luY2x1ZGUgImdkYnN1cHBvcnQvZ2RiX29wdGlvbmFsLmgiCi0gI2luY2x1ZGUg ImNsaS9jbGktY21kcy5oIgotICNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgiCi0rI2luY2x1ZGUg InRhcmdldC5oIgotIAotIC8qIFNldC9zaG93IGRlYnVnaW5mb2QgY29tbWFuZHMuICAqLwotIHN0 YXRpYyBjbWRfbGlzdF9lbGVtZW50ICpzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdDsKLUBAIC0y MDgsNiArMjA5LDEzIEBAIGRlYnVnaW5mb2Rfc291cmNlX3F1ZXJ5IChjb25zdCB1bnNpZ25lZCBj aGFyICpidWlsZF9pZCwKLSAgIHVzZXJfZGF0YSBkYXRhICgic291cmNlIGZpbGUiLCBzcmNwYXRo KTsKLSAKLSAgIGRlYnVnaW5mb2Rfc2V0X3VzZXJfZGF0YSAoYywgJmRhdGEpOwotKyAgZ2RiOjpv cHRpb25hbDx0YXJnZXRfdGVybWluYWw6OnNjb3BlZF9yZXN0b3JlX3Rlcm1pbmFsX3N0YXRlPiB0 ZXJtX3N0YXRlOwotKyAgaWYgKHRhcmdldF9zdXBwb3J0c190ZXJtaW5hbF9vdXJzICgpKQotKyAg ICB7Ci0rICAgICAgdGVybV9zdGF0ZS5lbXBsYWNlICgpOwotKyAgICAgIHRhcmdldF90ZXJtaW5h bDo6b3VycyAoKTsKLSsgICAgfQotKwotICAgc2NvcGVkX2ZkIGZkIChkZWJ1Z2luZm9kX2ZpbmRf c291cmNlIChjLAotIAkJCQkJYnVpbGRfaWQsCi0gCQkJCQlidWlsZF9pZF9sZW4sCi1AQCAtMjQ2 LDYgKzI1NCwxMyBAQCBkZWJ1Z2luZm9kX2RlYnVnaW5mb19xdWVyeSAoY29uc3QgdW5zaWduZWQg Y2hhciAqYnVpbGRfaWQsCi0gICB1c2VyX2RhdGEgZGF0YSAoInNlcGFyYXRlIGRlYnVnIGluZm8g Zm9yIiwgZmlsZW5hbWUpOwotIAotICAgZGVidWdpbmZvZF9zZXRfdXNlcl9kYXRhIChjLCAmZGF0 YSk7Ci0rICBnZGI6Om9wdGlvbmFsPHRhcmdldF90ZXJtaW5hbDo6c2NvcGVkX3Jlc3RvcmVfdGVy bWluYWxfc3RhdGU+IHRlcm1fc3RhdGU7Ci0rICBpZiAodGFyZ2V0X3N1cHBvcnRzX3Rlcm1pbmFs X291cnMgKCkpCi0rICAgIHsKLSsgICAgICB0ZXJtX3N0YXRlLmVtcGxhY2UgKCk7Ci0rICAgICAg dGFyZ2V0X3Rlcm1pbmFsOjpvdXJzICgpOwotKyAgICB9Ci0rCi0gICBzY29wZWRfZmQgZmQgKGRl YnVnaW5mb2RfZmluZF9kZWJ1Z2luZm8gKGMsIGJ1aWxkX2lkLCBidWlsZF9pZF9sZW4sCi0gCQkJ CQkgICAmZG5hbWUpKTsKLSAgIGRlYnVnaW5mb2Rfc2V0X3VzZXJfZGF0YSAoYywgbnVsbHB0cik7 CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDI0ODc1LXNldF9zaG93LWZvci1tYW5hZ2luZy1kZWJ1 Z2luZm9kLnBhdGNoIGIvZ2RiLXJoYnoyMDI0ODc1LXNldF9zaG93LWZvci1tYW5hZ2luZy1kZWJ1 Z2luZm9kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmFiMmE0Li4wMDAw MDAwCi0tLSBhL2dkYi1yaGJ6MjAyNDg3NS1zZXRfc2hvdy1mb3ItbWFuYWdpbmctZGVidWdpbmZv ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FsZXhhbmRyYT0y MEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEw IEphbiAyMDIyIDEzOjM1OjQ1ICswMTAwCi1TdWJqZWN0OiBnZGItcmhiejIwMjQ4NzUtc2V0X3No b3ctZm9yLW1hbmFnaW5nLWRlYnVnaW5mb2QucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBj b21taXQgZnJvbSBBYXJvbiBNZXJleQotOzs3ODExZmE1OTk1ZiBnZGI6IGFkZCBzZXQvc2hvdyBj b21tYW5kcyBmb3IgbWFuYWdpbmcgZGVidWdpbmZvCi0KLWdkYjogYWRkIHNldC9zaG93IGNvbW1h bmRzIGZvciBtYW5hZ2luZyBkZWJ1Z2luZm9kCi0KLUFkZCAnc2V0IGRlYnVnaW5mb2QnIGNvbW1h bmQuICBBY2NlcHRzICdvbicsICdvZmYnIG9yICdhc2snIGFzIGFuCi1hcmd1bWVudC4gICdvbicg ZW5hYmxlcyBkZWJ1Z2luZm9kIGZvciB0aGUgY3VycmVudCBzZXNzaW9uLiAgJ29mZicKLWRpc2Fi bGVzIGRlYnVnaW5mb2QgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24uICAnYXNrJyB3aWxsIHByb21w dAotdGhlIHVzZXIgdG8gZWl0aGVyIGVuYWJsZSBvciBkaXNhYmxlIGRlYnVnaW5mb2Qgd2hlbiB0 aGUgbmV4dCBxdWVyeQotaXMgYWJvdXQgdG8gYmUgcGVyZm9ybWVkOgotCi0gICAgVGhpcyBHREIg c3VwcG9ydHMgYXV0by1kb3dubG9hZGluZyBkZWJ1Z2luZm8gZnJvbSB0aGUgZm9sbG93aW5nIFVS THM6Ci0gICAgPFVSTDE+IDxVUkwyPiAuLi4KLSAgICBFbmFibGUgZGVidWdpbmZvZCBmb3IgdGhp cyBzZXNzaW9uPyAoeSBvciBbbl0pIHkKLSAgICBEZWJ1Z2luZm9kIGhhcyBiZWVuIGVuYWJsZWQu Ci0gICAgVG8gbWFrZSB0aGlzIHNldHRpbmcgcGVybWFuZW50LCBhZGQgJ3NldCBkZWJ1Z2luZm9k IG9uJyB0byAuZ2RiaW5pdC4KLQotRm9yIGludGVyYWN0aXZlIHNlc3Npb25zLCAnYXNrJyBpcyB0 aGUgZGVmYXVsdC4gIEZvciBub24taW50ZXJhY3RpdmUKLXNlc3Npb25zLCAnb2ZmJyBpcyB0aGUg ZGVmYXVsdC4KLQotQWRkICdzaG93IGRlYnVnaW5mb2Qgc3RhdHVzJyBjb21tYW5kLiAgRGlzcGxh eXMgd2hldGhlciBkZWJ1Z2luZm9kCi1pcyBzZXQgdG8gJ29uJywgJ29mZicgb3IgJ2FzaycuCi0K LUFkZCAnc2V0L3Nob3cgZGVidWdpbmZvZCB1cmxzJyBjb21tYW5kcy4gQWNjZXB0cyBhIHN0cmlu ZyBvZgotc3BhY2Utc2VwYXJhdGVkIGRlYnVnaW5mb2Qgc2VydmVyIFVSTHMgdG8gYmUgcXVlcmll ZC4gIFRoZSBkZWZhdWx0Ci12YWx1ZSBpcyBjb3BpZWQgZnJvbSB0aGUgREVCVUdJTkZPRF9VUkxT IGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1GaW5hbGx5IGFkZCAnc2V0L3Nob3cgZGVidWdpbmZv ZCB2ZXJib3NlJyBjb21tYW5kcyB0byBjb250cm9sIHdoZXRoZXIKLWRlYnVnaW5mb2QtcmVsYXRl ZCBvdXRwdXQgaXMgZGlzcGxheWVkLiAgVmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZAotYnkgZGVm YXVsdC4KLQotICAgIChnZGIpIHJ1bgotICAgIFN0YXJ0aW5nIHByb2dyYW06IC9iaW4vc2xlZXAg NQotICAgIERvd25sb2FkIGZhaWxlZDogTm8gcm91dGUgdG8gaG9zdC4gIENvbnRpbnVpbmcgd2l0 aG91dCBkZWJ1ZyBpbmZvIGZvciAvbGliNjQvbGliYy5zby42LgotCi1JZiBHREIgaXMgbm90IGJ1 aWx0IHdpdGggZGVidWdpbmZvZCB0aGVuIHRoZXNlIGNvbW1hbmRzIHdpbGwganVzdCBkaXNwbGF5 Ci0KLSAgICBTdXBwb3J0IGZvciBkZWJ1Z2luZm9kIGlzIG5vdCBjb21waWxlZCBpbnRvIEdEQi4K LQotZGlmZiAtLWdpdCBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYyBiL2dkYi9kZWJ1Z2luZm9k LXN1cHBvcnQuYwotLS0tIGEvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi0rKysgYi9nZGIvZGVi dWdpbmZvZC1zdXBwb3J0LmMKLUBAIC0xOCwxMCArMTgsMjYgQEAKLSAKLSAjaW5jbHVkZSAiZGVm cy5oIgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgiCi0g I2luY2x1ZGUgImdkYnN1cHBvcnQvc2NvcGVkX2ZkLmgiCi0gI2luY2x1ZGUgImRlYnVnaW5mb2Qt c3VwcG9ydC5oIgotICNpbmNsdWRlICJnZGJzdXBwb3J0L2dkYl9vcHRpb25hbC5oIgotKyNpbmNs dWRlICJjbGkvY2xpLWNtZHMuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1zdHlsZS5oIgotKwotKy8q IFNldC9zaG93IGRlYnVnaW5mb2QgY29tbWFuZHMuICAqLwotK3N0YXRpYyBjbWRfbGlzdF9lbGVt ZW50ICpzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdDsKLStzdGF0aWMgY21kX2xpc3RfZWxlbWVu dCAqc2hvd19kZWJ1Z2luZm9kX3ByZWZpeF9saXN0OwotKwotK3N0YXRpYyBjb25zdCBjaGFyIGRl YnVnaW5mb2Rfb25bXSA9ICJvbiI7Ci0rc3RhdGljIGNvbnN0IGNoYXIgZGVidWdpbmZvZF9vZmZb XSA9ICJvZmYiOwotK3N0YXRpYyBjb25zdCBjaGFyIGRlYnVnaW5mb2RfYXNrW10gPSAiYXNrIjsK LSsKLStzdGF0aWMgY29uc3QgY2hhciAqZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX2Fz azsKLStzdGF0aWMgdW5zaWduZWQgZGVidWdpbmZvZF92ZXJib3NlID0gMTsKLSsKLSsvKiBUaGlz IGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQuICBVUkxzIGFyZSBhbHdheXMgcHVsbGVkIGZyb20gdGhl Ci0rICAgZW52aXJvbm1lbnQuICAqLwotK3N0YXRpYyBjaGFyICpkZWJ1Z2luZm9kX3VybHM7Ci0g Ci0gI2lmbmRlZiBIQVZFX0xJQkRFQlVHSU5GT0QKLSBzY29wZWRfZmQKLUBAIC00MSw2ICs1Nyw2 NyBAQCBkZWJ1Z2luZm9kX2RlYnVnaW5mb19xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVp bGRfaWQsCi0gewotICAgcmV0dXJuIHNjb3BlZF9mZCAoLUVOT1NZUyk7Ci0gfQotKwotKyNkZWZp bmUgTk9fSU1QTCBfKCJTdXBwb3J0IGZvciBkZWJ1Z2luZm9kIGlzIG5vdCBjb21waWxlZCBpbnRv IEdEQi4iKQotKwotKy8qIFN0dWIgc2V0L3Nob3cgY29tbWFuZHMgdGhhdCBpbmRpY2F0ZSBkZWJ1 Z2luZm9kIGlzIG5vdCBzdXBwb3J0ZWQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVn aW5mb2Rfb25fY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsg IGVycm9yIChOT19JTVBMKTsKLSsgIGRlYnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZvZF9vZmY7 Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2Rfb2ZmX2NvbW1hbmQgKGNvbnN0 IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBlcnJvciAoTk9fSU1QTCk7Ci0rICBk ZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2Rfb2ZmOwotK30KLSsKLStzdGF0aWMgdm9pZAot K3NldF9kZWJ1Z2luZm9kX2Fza19jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCi0rewotKyAgZXJyb3IgKE5PX0lNUEwpOwotKyAgZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1 Z2luZm9kX29mZjsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2Rfc3RhdHVz X2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBlcnJvciAo Tk9fSU1QTCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2RfdXJsc19jb21t YW5kIChjb25zdCBjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotK3sKLSsgIGVycm9yIChO T19JTVBMKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2RfdXJsc19jb21t YW5kIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCSAgICAgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGVycm9y IChOT19JTVBMKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzZXRfZGVidWdpbmZvZF92ZXJib3Nl X2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKLSsJCQkJc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgZXJyb3IgKE5PX0lNUEwpOwotKyAgZGVidWdpbmZv ZF92ZXJib3NlID0gMDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2RfdmVy Ym9zZV9jb21tYW5kIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCQkg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZCwKLSsJCQkJIGNvbnN0IGNoYXIgKnZhbHVlKQot K3sKLSsgIGVycm9yIChOT19JTVBMKTsKLSt9Ci0gI2Vsc2UKLSAjaW5jbHVkZSA8ZWxmdXRpbHMv ZGVidWdpbmZvZC5oPgotIAotQEAgLTY4LDYgKzE0NSw4MiBAQCBzdHJ1Y3QgZGVidWdpbmZvZF9j bGllbnRfZGVsZXRlcgotIHVzaW5nIGRlYnVnaW5mb2RfY2xpZW50X3VwCi0gICA9IHN0ZDo6dW5p cXVlX3B0cjxkZWJ1Z2luZm9kX2NsaWVudCwgZGVidWdpbmZvZF9jbGllbnRfZGVsZXRlcj47Ci0g Ci0rLyogRW5hYmxlIGRlYnVnaW5mb2QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVn aW5mb2Rfb25fY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsg IGRlYnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZvZF9vbjsKLSt9Ci0rCi0rLyogRGlzYWJsZSBk ZWJ1Z2luZm9kLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9kZWJ1Z2luZm9kX29mZl9jb21t YW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgZGVidWdpbmZvZF9l bmFibGUgPSBkZWJ1Z2luZm9kX29mZjsKLSt9Ci0rCi0rLyogQmVmb3JlIG5leHQgcXVlcnksIGFz ayB1c2VyIHdoZXRoZXIgdG8gZW5hYmxlIGRlYnVnaW5mb2QuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0rc2V0X2RlYnVnaW5mb2RfYXNrX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKLSt7Ci0rICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2RfYXNrOwotK30KLSsK LSsvKiBTaG93IHdoZXRoZXIgZGVidWdpbmZvZCBpcyBlbmFibGVkLiAgKi8KLSsKLStzdGF0aWMg dm9pZAotK3Nob3dfZGVidWdpbmZvZF9zdGF0dXNfY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywg aW50IGZyb21fdHR5KQotK3sKLSsgIHByaW50Zl91bmZpbHRlcmVkIChfKCJEZWJ1Z2luZm9kIGZ1 bmN0aW9uYWxpdHkgaXMgY3VycmVudGx5IHNldCB0byAiIFwKLSsJCSAgICAgIlwiJXNcIi5cbiIp LCBkZWJ1Z2luZm9kX2VuYWJsZSk7Ci0rfQotKwotKy8qIFNldCB0aGUgVVJMcyB0aGF0IGRlYnVn aW5mb2Qgd2lsbCBxdWVyeS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfZGVidWdpbmZvZF91 cmxzX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmlnbm9yZSwgaW50IGZyb21fdHR5LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAg Z2RiX2Fzc2VydCAoZGVidWdpbmZvZF91cmxzICE9IG51bGxwdHIpOwotKyAgaWYgKHNldGVudiAo IkRFQlVHSU5GT0RfVVJMUyIsIGRlYnVnaW5mb2RfdXJscywgMSkgIT0gMCkKLSsgICAgd2Fybmlu ZyAoXygiVW5hYmxlIHRvIHNldCBkZWJ1Z2luZm9kIFVSTHM6ICVzIiksIHNhZmVfc3RyZXJyb3Ig KGVycm5vKSk7Ci0rfQotKwotKy8qIFNob3cgdGhlIFVSTHMgdGhhdCBkZWJ1Z2luZm9kIHdpbGwg cXVlcnkuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX3VybHNfY29tbWFu ZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgICAgICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqY21kLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBpZiAodmFs dWUgPT0gbnVsbHB0ciB8fCB2YWx1ZVswXSA9PSAnXDAnKQotKyAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGZpbGUsIF8oIkRlYnVnaW5mb2QgVVJMcyBoYXZlIG5vdCBiZWVuIHNldC5cbiIpKTsKLSsg IGVsc2UKLSsgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCBVUkxzIGFy ZSBjdXJyZW50bHkgc2V0IHRvOlxuJXNcbiIpLAotKwkJICAgICAgdmFsdWUpOwotK30KLSsKLSsv KiBOby1vcCBzZXR0ZXIgdXNlZCBmb3IgY29tcGF0aWJpbGl0eSB3aGVuIGdkYiBpcyBidWlsdCB3 aXRob3V0IGRlYnVnaW5mb2QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2Rf dmVyYm9zZV9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCi0rCQkJCXN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rLyogU2hv dyB2ZXJib3NpdHkuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX3ZlcmJv c2VfY29tbWFuZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkJIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZw cmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVnaW5mb2QgdmVyYm9zZSBvdXRwdXQgaXMgc2V0 IHRvICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gcHJvZ3Jl c3NmbiAoZGVidWdpbmZvZF9jbGllbnQgKmMsIGxvbmcgY3VyLCBsb25nIHRvdGFsKQotIHsKLUBA IC0xMjAsNiArMjczLDQyIEBAIGdldF9kZWJ1Z2luZm9kX2NsaWVudCAoKQotICAgcmV0dXJuIGds b2JhbF9jbGllbnQuZ2V0ICgpOwotIH0KLSAKLSsvKiBDaGVjayBpZiBkZWJ1Z2luZm9kIGlzIGVu YWJsZWQuICBJZiBjb25maWd1cmVkIHRvIGRvIHNvLCBhc2sgdGhlIHVzZXIKLSsgICB3aGV0aGVy IHRvIGVuYWJsZSBkZWJ1Z2luZm9kLiAgKi8KLSsKLStzdGF0aWMgYm9vbAotK2RlYnVnaW5mb2Rf ZW5hYmxlZCAoKQotK3sKLSsgIGNvbnN0IGNoYXIgKnVybHMgPSBnZXRlbnYgKERFQlVHSU5GT0Rf VVJMU19FTlZfVkFSKTsKLSsKLSsgIGlmICh1cmxzID09IG51bGxwdHIgfHwgdXJsc1swXSA9PSAn XDAnCi0rICAgICAgfHwgZGVidWdpbmZvZF9lbmFibGUgPT0gZGVidWdpbmZvZF9vZmYpCi0rICAg IHJldHVybiBmYWxzZTsKLSsKLSsgIGlmIChkZWJ1Z2luZm9kX2VuYWJsZSA9PSBkZWJ1Z2luZm9k X2FzaykKLSsgICAgewotKyAgICAgIGludCByZXNwID0gbnF1ZXJ5IChfKCJcblRoaXMgR0RCIHN1 cHBvcnRzIGF1dG8tZG93bmxvYWRpbmcgZGVidWdpbmZvICIgXAotKwkJCSAgICJmcm9tIHRoZSBm b2xsb3dpbmcgVVJMczpcbiVzXG5FbmFibGUgZGVidWdpbmZvZCAiIFwKLSsJCQkgICAiZm9yIHRo aXMgc2Vzc2lvbj8gIiksCi0rCQkJIHVybHMpOwotKyAgICAgIGlmICghcmVzcCkKLSsJewotKwkg IHByaW50Zl9maWx0ZXJlZCAoXygiRGVidWdpbmZvZCBoYXMgYmVlbiBkaXNhYmxlZC5cblRvIG1h a2UgdGhpcyAiIFwKLSsJCQkgICAgICJzZXR0aW5nIHBlcm1hbmVudCwgYWRkIFwnc2V0IGRlYnVn aW5mb2Qgb2ZmXCcgIiBcCi0rCQkJICAgICAidG8gLmdkYmluaXQuXG4iKSk7Ci0rCSAgZGVidWdp bmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29mZjsKLSsJICByZXR1cm4gZmFsc2U7Ci0rCX0KLSsK LSsgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIkRlYnVnaW5mb2QgaGFzIGJlZW4gZW5hYmxlZC5c blRvIG1ha2UgdGhpcyAiIFwKLSsJCQkgInNldHRpbmcgcGVybWFuZW50LCBhZGQgXCdzZXQgZGVi dWdpbmZvZCBvblwnICIgXAotKwkJCSAidG8gLmdkYmluaXQuXG4iKSk7Ci0rICAgICAgZGVidWdp bmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29uOwotKyAgICB9Ci0rCi0rICByZXR1cm4gdHJ1ZTsK LSt9Ci0rCi0gLyogU2VlIGRlYnVnaW5mb2Qtc3VwcG9ydC5oICAqLwotIAotIHNjb3BlZF9mZAot QEAgLTEyOCw4ICszMTcsNyBAQCBkZWJ1Z2luZm9kX3NvdXJjZV9xdWVyeSAoY29uc3QgdW5zaWdu ZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJIGNvbnN0IGNoYXIgKnNyY3BhdGgsCi0gCQkJIGdkYjo6 dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+ICpkZXN0bmFtZSkKLSB7Ci0tICBjb25zdCBjaGFyICp1 cmxzX2Vudl92YXIgPSBnZXRlbnYgKERFQlVHSU5GT0RfVVJMU19FTlZfVkFSKTsKLS0gIGlmICh1 cmxzX2Vudl92YXIgPT0gTlVMTCB8fCB1cmxzX2Vudl92YXJbMF0gPT0gJ1wwJykKLSsgIGlmICgh ZGVidWdpbmZvZF9lbmFibGVkICgpKQotICAgICByZXR1cm4gc2NvcGVkX2ZkICgtRU5PU1lTKTsK LSAKLSAgIGRlYnVnaW5mb2RfY2xpZW50ICpjID0gZ2V0X2RlYnVnaW5mb2RfY2xpZW50ICgpOwot QEAgLTE0Nyw4ICszMzUsNyBAQCBkZWJ1Z2luZm9kX3NvdXJjZV9xdWVyeSAoY29uc3QgdW5zaWdu ZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJCQludWxscHRyKSk7Ci0gICBkZWJ1Z2luZm9kX3NldF91 c2VyX2RhdGEgKGMsIG51bGxwdHIpOwotIAotLSAgLyogVE9ETzogQWRkICdzZXQgZGVidWcgZGVi dWdpbmZvZCcgY29tbWFuZCB0byBjb250cm9sIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIHNob3du LiAgKi8KLS0gIGlmIChmZC5nZXQgKCkgPCAwICYmIGZkLmdldCAoKSAhPSAtRU5PRU5UKQotKyAg aWYgKGRlYnVnaW5mb2RfdmVyYm9zZSA+IDAgJiYgZmQuZ2V0ICgpIDwgMCAmJiBmZC5nZXQgKCkg IT0gLUVOT0VOVCkKLSAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJEb3dubG9hZCBmYWlsZWQ6ICVz LiAgQ29udGludWluZyB3aXRob3V0IHNvdXJjZSBmaWxlICVwcy5cbiIpLAotIAkJICAgICBzYWZl X3N0cmVycm9yICgtZmQuZ2V0ICgpKSwKLSAJCSAgICAgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1l X3N0eWxlLnN0eWxlICgpLCAgc3JjcGF0aCkpOwotQEAgLTE2Nyw4ICszNTQsNyBAQCBkZWJ1Z2lu Zm9kX2RlYnVnaW5mb19xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJ ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAotIAkJCSAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0 cjxjaGFyPiAqZGVzdG5hbWUpCi0gewotLSAgY29uc3QgY2hhciAqdXJsc19lbnZfdmFyID0gZ2V0 ZW52IChERUJVR0lORk9EX1VSTFNfRU5WX1ZBUik7Ci0tICBpZiAodXJsc19lbnZfdmFyID09IE5V TEwgfHwgdXJsc19lbnZfdmFyWzBdID09ICdcMCcpCi0rICBpZiAoIWRlYnVnaW5mb2RfZW5hYmxl ZCAoKSkKLSAgICAgcmV0dXJuIHNjb3BlZF9mZCAoLUVOT1NZUyk7Ci0gCi0gICBkZWJ1Z2luZm9k X2NsaWVudCAqYyA9IGdldF9kZWJ1Z2luZm9kX2NsaWVudCAoKTsKLUBAIC0xODQsNyArMzcwLDcg QEAgZGVidWdpbmZvZF9kZWJ1Z2luZm9fcXVlcnkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1aWxk X2lkLAotIAkJCQkJICAgJmRuYW1lKSk7Ci0gICBkZWJ1Z2luZm9kX3NldF91c2VyX2RhdGEgKGMs IG51bGxwdHIpOwotIAotLSAgaWYgKGZkLmdldCAoKSA8IDAgJiYgZmQuZ2V0ICgpICE9IC1FTk9F TlQpCi0rICBpZiAoZGVidWdpbmZvZF92ZXJib3NlID4gMCAmJiBmZC5nZXQgKCkgPCAwICYmIGZk LmdldCAoKSAhPSAtRU5PRU5UKQotICAgICBwcmludGZfZmlsdGVyZWQgKF8oIkRvd25sb2FkIGZh aWxlZDogJXMuICBDb250aW51aW5nIHdpdGhvdXQgZGVidWcgaW5mbyBmb3IgJXBzLlxuIiksCi0g CQkgICAgIHNhZmVfc3RyZXJyb3IgKC1mZC5nZXQgKCkpLAotIAkJICAgICBzdHlsZWRfc3RyaW5n IChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksICBmaWxlbmFtZSkpOwotQEAgLTE5NSwzICszODEs NjMgQEAgZGVidWdpbmZvZF9kZWJ1Z2luZm9fcXVlcnkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1 aWxkX2lkLAotICAgcmV0dXJuIGZkOwotIH0KLSAjZW5kaWYKLSsKLSsvKiBSZWdpc3RlciBkZWJ1 Z2luZm9kIGNvbW1hbmRzLiAgKi8KLSsKLSt2b2lkIF9pbml0aWFsaXplX2RlYnVnaW5mb2QgKCk7 Ci0rdm9pZAotK19pbml0aWFsaXplX2RlYnVnaW5mb2QgKCkKLSt7Ci0rICAvKiBzZXQvc2hvdyBk ZWJ1Z2luZm9kICovCi0rICBhZGRfYmFzaWNfcHJlZml4X2NtZCAoImRlYnVnaW5mb2QiLCBjbGFz c19ydW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgXygiU2V0IGRlYnVnaW5mb2Qgb3B0aW9u cyIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlz dCwgMCwgJnNldGxpc3QpOwotKwotKyAgYWRkX3Nob3dfcHJlZml4X2NtZCAoImRlYnVnaW5mb2Qi LCBjbGFzc19ydW4sCi0rICAgICAgICAgICAgICAgICAgICAgICBfKCJTaG93IGRlYnVnaW5mb2Qg b3B0aW9ucyIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgJnNob3dfZGVidWdpbmZvZF9wcmVm aXhfbGlzdCwgMCwgJnNob3dsaXN0KTsKLSsKLSsgIC8qIHNldCBkZWJ1Z2luZm9kIG9uICovCi0r ICBhZGRfY21kICgib24iLCBjbGFzc19ydW4sIHNldF9kZWJ1Z2luZm9kX29uX2NvbW1hbmQsCi0r CSAgIF8oIkVuYWJsZSBkZWJ1Z2luZm9kLiIpLCAmc2V0X2RlYnVnaW5mb2RfcHJlZml4X2xpc3Qp OwotKwotKyAgLyogc2V0IGRlYnVnaW5mb2Qgb2ZmICovCi0rICBhZGRfY21kICgib2ZmIiwgY2xh c3NfcnVuLCBzZXRfZGVidWdpbmZvZF9vZmZfY29tbWFuZCwKLSsJICAgXygiRGlzYWJsZSBkZWJ1 Z2luZm9kLiIpLCAmc2V0X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotKwotKyAgLyogc2V0IGRl YnVnaW5mb2QgYXNrICovCi0rICBhZGRfY21kICgiYXNrIiwgY2xhc3NfcnVuLCBzZXRfZGVidWdp bmZvZF9hc2tfY29tbWFuZCwgXygiXAotK0FzayB0aGUgdXNlciB3aGV0aGVyIHRvIGVuYWJsZSBk ZWJ1Z2luZm9kIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBuZXh0IHF1ZXJ5LiIpLAotKwkgICAmc2V0 X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotKwotKyAgLyogc2hvdyBkZWJ1Z2luZm9kIHN0YXR1 cyAqLwotKyAgYWRkX2NtZCAoInN0YXR1cyIsIGNsYXNzX3J1biwgc2hvd19kZWJ1Z2luZm9kX3N0 YXR1c19jb21tYW5kLAotKwkgICBfKCJTaG93IHdoZXRoZXIgZGVidWdpbmZvZCBpcyBzZXQgdG8g XCJvblwiLCBcIm9mZlwiIG9yIFwiYXNrXCIuIiksCi0rCSAgICZzaG93X2RlYnVnaW5mb2RfcHJl Zml4X2xpc3QpOwotKwotKyAgLyogc2V0L3Nob3cgZGVidWdpbmZvZCB1cmxzICovCi0rICBhZGRf c2V0c2hvd19zdHJpbmdfbm9lc2NhcGVfY21kICgidXJscyIsIGNsYXNzX3J1biwgJmRlYnVnaW5m b2RfdXJscywgXygiXAotK1NldCB0aGUgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBVUkxzLiIp LCBfKCJcCi0rU2hvdyB0aGUgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBVUkxzLiIpLCBfKCJc Ci0rTWFuYWdlIHRoZSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBV UkxzIHRoYXQgR0RCIHdpbGwgcXVlcnkgXAotK3doZW4gbWlzc2luZyBkZWJ1Z2luZm8sIGV4ZWN1 dGFibGVzIG9yIHNvdXJjZSBmaWxlcy5cblRoZSBkZWZhdWx0IHZhbHVlIGlzIFwKLStjb3BpZWQg ZnJvbSB0aGUgREVCVUdJTkZPRF9VUkxTIGVudmlyb25tZW50IHZhcmlhYmxlLiIpLAotKwkJCQkg ICBzZXRfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQsCi0rCQkJCSAgIHNob3dfZGVidWdpbmZvZF91 cmxzX2NvbW1hbmQsCi0rCQkJCSAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwKLSsJCQkJ ICAgJnNob3dfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCk7Ci0rICBpZiAoZ2V0ZW52ICgiREVCVUdJ TkZPRF9VUkxTIikgIT0gbnVsbHB0cikKLSsgICAgZGVidWdpbmZvZF91cmxzID0geHN0cmR1cCAo Z2V0ZW52ICgiREVCVUdJTkZPRF9VUkxTIikpOwotKwotKyAgLyogc2V0L3Nob3cgZGVidWdpbmZv ZCB2ZXJib3NlICovCi0rICBhZGRfc2V0c2hvd196dWludGVnZXJfY21kICgidmVyYm9zZSIsIGNs YXNzX3N1cHBvcnQsCi0rCQkJICAgICAmZGVidWdpbmZvZF92ZXJib3NlLCBfKCJcCi0rU2V0IHZl cmJvc2l0eSBvZiBkZWJ1Z2luZm9kIG91dHB1dC4iKSwgXygiXAotK1Nob3cgZGVidWdpbmZvZCBk ZWJ1Z2dpbmcuIiksIF8oIlwKLStXaGVuIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLCBkaXNwbGF5 IHZlcmJvc2Ugb3V0cHV0IGZvciBlYWNoIGRlYnVnaW5mb2QgXAotK3F1ZXJ5LlxuVG8gZGlzYWJs ZSwgc2V0IHRvIHplcm8uICBWZXJib3NlIG91dHB1dCBpcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4i KSwKLSsJCQkgICAgIHNldF9kZWJ1Z2luZm9kX3ZlcmJvc2VfY29tbWFuZCwKLSsJCQkgICAgIHNo b3dfZGVidWdpbmZvZF92ZXJib3NlX2NvbW1hbmQsCi0rCQkJICAgICAmc2V0X2RlYnVnaW5mb2Rf cHJlZml4X2xpc3QsCi0rCQkJICAgICAmc2hvd19kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsKLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9mZXRjaF9zcmNfYW5k X3N5bWJvbHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9mZXRjaF9zcmNfYW5k X3N5bWJvbHMuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9kL2ZldGNoX3Ny Y19hbmRfc3ltYm9scy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVnaW5mb2QvZmV0 Y2hfc3JjX2FuZF9zeW1ib2xzLmV4cAotQEAgLTIxNyw3ICsyMTcsOCBAQCBwcm9jIGxvY2FsX3Vy bCB7IH0gewotICAgICBzZXRlbnYgREVCVUdJTkZPRF9VUkxTIGh0dHA6Ly8xMjcuMC4wLjE6JHBv cnQKLSAKLSAgICAgIyBnZGIgc2hvdWxkIG5vdyBmaW5kIHRoZSBzeW1ib2wgYW5kIHNvdXJjZSBm aWxlcwotLSAgICBjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rICAgIGNsZWFuX3Jlc3RhcnQKLSsg ICAgZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUiICIiICJmaWxlIFtmaWxlIHRhaWwgJGJpbmZpbGVd IiAiRW5hYmxlIGRlYnVnaW5mb2Q/LioiICJ5IgotICAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNl dCBzdWJzdGl0dXRlLXBhdGggJG91dHB1dGRpciAvZGV2L251bGwiIFwKLSAJInNldCBzdWJzdGl0 dXRlLXBhdGgiCi0gICAgIGdkYl90ZXN0ICJiciBtYWluIiAiQnJlYWtwb2ludCAxIGF0LipmaWxl LioiCi1AQCAtMjI2LDggKzIyNywyNiBAQCBwcm9jIGxvY2FsX3VybCB7IH0gewotICAgICAjIGdk YiBzaG91bGQgbm93IGZpbmQgdGhlIGRlYnVnYWx0bGluayBmaWxlCi0gICAgIGNsZWFuX3Jlc3Rh cnQKLSAgICAgZ2RiX3Rlc3QgImZpbGUgJHtiaW5maWxlfV9hbHQubyIgXAotLQkiLipSZWFkaW5n IHN5bWJvbHMgZnJvbSAke2JpbmZpbGV9X2FsdC5vXC5cLlwuKiIgXAotLQkiZmlsZSBbZmlsZSB0 YWlsICR7YmluZmlsZX1fYWx0Lm9dIgotKwkiLipEb3dubG9hZGluZy4qc2VwYXJhdGUgZGVidWcg aW5mby4qIiBcCi0rCSJmaWxlIFtmaWxlIHRhaWwgJHtiaW5maWxlfV9hbHQub10iIFwKLSsJIi4q RW5hYmxlIGRlYnVnaW5mb2Q/LioiICJ5IgotKwotKyAgICAjIENvbmZpZ3VyZSBkZWJ1Z2luZm9k IHdpdGggY29tbWFuZHMKLSsgICAgdW5zZXRlbnYgREVCVUdJTkZPRF9VUkxTCi0rICAgIGNsZWFu X3Jlc3RhcnQKLSsgICAgZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUiICIuKk5vIGRlYnVnZ2luZyBz eW1ib2xzLioiIFwKLSsJImZpbGUgW2ZpbGUgdGFpbCAkYmluZmlsZV0gY21kIgotKyAgICBnZGJf dGVzdF9ub19vdXRwdXQgInNldCBkZWJ1Z2luZm9kIG9mZiIKLSsgICAgZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgZGVidWdpbmZvZCB1cmxzIGh0dHA6Ly8xMjcuMC4wLjE6JHBvcnQiCi0rCi0rICAg ICMgZ2RiIHNob3VsZG4ndCBmaW5kIHRoZSBkZWJ1Z2luZm8gc2luY2UgZGVidWdpbmZvZCBoYXMg YmVlbiBkaXNhYmxlZAotKyAgICBnZGJfdGVzdCAiZmlsZSAkYmluZmlsZSIgIi4qTm8gZGVidWdn aW5nIHN5bWJvbHMuKiIgXAotKwkiZmlsZSBbZmlsZSB0YWlsICRiaW5maWxlXSBjbWQgb2ZmIgot KwotKyAgICAjIEVuYWJsZSBkZWJ1Z2luZm9kIGFuZCBmZXRjaCB0aGUgZGVidWdpbmZvCi0rICAg IGdkYl90ZXN0X25vX291dHB1dCAic2V0IGRlYnVnaW5mb2Qgb24iCi0rICAgIGdkYl90ZXN0ICJm aWxlICRiaW5maWxlIiAiLipSZWFkaW5nIHN5bWJvbHMgZnJvbS4qZGVidWdpbmZvLioiIFwKLSsJ ImZpbGUgW2ZpbGUgdGFpbCAkYmluZmlsZV0gY21kIG9uIgotIH0KLSAKLSBzZXQgZW52bGlzdCBc CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDQyMjU3LWZ0YnMtdXBkYXRlcy5wYXRjaCBiL2dkYi1y aGJ6MjA0MjI1Ny1mdGJzLXVwZGF0ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGVmNGZhYWUuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDQyMjU3LWZ0YnMtdXBkYXRlcy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VpdGggU2VpdHogPGtlaXRoc0ByZWRo YXQuY29tPgotRGF0ZTogV2VkLCAyNiBKYW4gMjAyMiAwODo1NjoxOCAtMDgwMAotU3ViamVjdDog Z2RiLXJoYnoyMDQyMjU3LWZ0YnMtdXBkYXRlcy5wYXRjaAotTUlNRS1WZXJzaW9uOiAxLjAKLUNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1F bmNvZGluZzogOGJpdAotCi07OyBGaXggYnVpbGQgcHJvYmxlbXMuCi07OyAoUkhCWiAyMDQyMjU3 LCBLZWl0aCBTZWl0eiwgQW5kcmV3IEJ1cmdlc3MpCi0KLTEpIFJlZmVyZW5jZSBhcnJheSBvZiBz dHJ1Y3RzIGluc3RlYWQgb2YgZmlyc3QgbWVtYmVyIGR1cmluZyBtZW1jcHkKLQotYWFyY2g2NC10 ZGVwLmMgZGVmaW5lcyB0aGUgZm9sbG93aW5nIG1hY3JvOgotCi0gICAgICAgIGRvICBcCi0gICAg ICAgICAgeyBcCi0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX2xlbiA9IExFTkdUSDsgXAot ICAgICAgICAgICAgaWYgKG1lbV9sZW4pIFwKLSAgICAgICAgICAgICAgeyBcCi0gICAgICAgICAg ICAgICAgTUVNUyA9ICBYTkVXVkVDIChzdHJ1Y3QgYWFyY2g2NF9tZW1fciwgbWVtX2xlbik7ICBc Ci0gICAgICAgICAgICAgICAgbWVtY3B5KCZNRU1TLT5sZW4sICZSRUNPUkRfQlVGWzBdLCBcCi0g ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWFyY2g2NF9tZW1fcikgKiBMRU5H VEgpOyBcCi0gICAgICAgICAgICAgIH0gXAotICAgICAgICAgIH0gXAotICAgICAgICAgIHdoaWxl ICgwKQotCi1UaGlzIGlzIHNpbWxweSBhbGxvY2F0aW5nIGEgbmV3IGFycmF5IGFuZCBjb3B5aW5n IGl0LiBIb3dldmVyLCBmb3IKLXRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLCBpdCBpcyBhY3R1YWxs eSBjb3B5aW5nIGludG8gdGhlIGZpcnN0IG1lbWJlcgotb2YgdGhlIGZpcnN0IGVsZW1lbnQgb2Yg dGhlIGFycmF5IChgJk1FTVMtPmxlbiIpLiBUaGlzIGVsaWNpdHMgYQotd2FybmluZyB3aXRoIEdD QyAxMjoKLQotLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9hYXJjaDY0LXRkZXAuYzogSW4gZnVuY3Rp b24g4oCYaW50IGFhcmNoNjRfcHJvY2Vzc19yZWNvcmQoZ2RiYXJjaCosIHJlZ2NhY2hlKiwgQ09S RV9BRERSKeKAmToKLS4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvYWFyY2g2NC10ZGVwLmM6MzcxMToy MzogZXJyb3I6IHdyaXRpbmcgMTYgYnl0ZXMgaW50byBhIHJlZ2lvbiBvZiBzaXplIDggWy1XZXJy b3I9c3RyaW5nb3Atb3ZlcmZsb3c9XQotIDM3MTEgfCAgICAgICAgICAgICAgICAgbWVtY3B5KCZN RU1TLT5sZW4sICZSRUNPUkRfQlVGWzBdLCBcCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICBeCi0uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2FhcmNoNjQtdGRlcC5jOjQzOTQ6Mzogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmE1FTV9BTExPQ+KAmQotIDQzOTQgfCAgIE1FTV9BTExP QyAoYWFyY2g2NF9pbnNuX3ItPmFhcmNoNjRfbWVtcywgYWFyY2g2NF9pbnNuX3ItPm1lbV9yZWNf Y291bnQsCi0gICAgICB8ICAgXn5+fn5+fn5+Ci0uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2FhcmNo NjQtdGRlcC5jOjM3MjE6MTI6IG5vdGU6IGRlc3RpbmF0aW9uIG9iamVjdCDigJhhYXJjaDY0X21l bV9yOjpsZW7igJkgb2Ygc2l6ZSA4Ci0gMzcyMSB8ICAgdWludDY0X3QgbGVuOyAgICAvKiBSZWNv cmQgbGVuZ3RoLiAgKi8KLSAgICAgIHwgICAgICAgICAgICBefn4KLQotVGhlIHNpbXBsZSBmaXgg aXMgdG8gcmVmZXJlbmNlIHRoZSBhcnJheSwgYE1FTVMnIGFzIHRoZSBkZXN0aW5hdGlvbiBvZiB0 aGUgY29weS4KLQotVGVzdGVkIGJ5IHJlYnVpbGRpbmcuCi0KLTIpICAgICBGaXggYnVpbGQgd2l0 aCBjdXJyZW50IEdDQzogRUxfRVhQTElDSVQobG9jYXRpb24pIGFsd2F5cyBub24tTlVMTAotCi0g ICAgQ29tcGlsaW5nIEdEQiB3aXRoIGN1cnJlbnQgR0NDICgxYjRhNjM1OTNiKSBydW5zIGludG8g dGhpczoKLQotICAgICAgc3JjL2dkYi9sb2NhdGlvbi5jOiBJbiBmdW5jdGlvbiAnaW50IGV2ZW50 X2xvY2F0aW9uX2VtcHR5X3AoY29uc3QgZXZlbnRfbG9jYXRpb24qKSc6Ci0gICAgICBzcmMvZ2Ri L2xvY2F0aW9uLmM6OTYzOjM4OiBlcnJvcjogdGhlIGFkZHJlc3Mgb2YgJ2V2ZW50X2xvY2F0aW9u Ojo8dW5uYW1lZCB1bmlvbj46OmV4cGxpY2l0X2xvYycgd2lsbCBuZXZlciBiZSBOVUxMIFstV2Vy cm9yPWFkZHJlc3NdCi0gICAgICAgIDk2MyB8ICAgICAgIHJldHVybiAoRUxfRVhQTElDSVQgKGxv Y2F0aW9uKSA9PSBOVUxMCi0gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCi0gICAgICBzcmMvZ2RiL2xvY2F0aW9uLmM6NTc6MzA6IG5vdGU6ICdldmVu dF9sb2NhdGlvbjo6PHVubmFtZWQgdW5pb24+OjpleHBsaWNpdF9sb2MnIGRlY2xhcmVkIGhlcmUK LSAgICAgICAgIDU3IHwgICAgIHN0cnVjdCBleHBsaWNpdF9sb2NhdGlvbiBleHBsaWNpdF9sb2M7 Ci0gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+ Ci0KLSAgICBHQ0MgaXMgcmlnaHQsIEVMX0VYUExJQ0lUIGlzIGRlZmluZWQgYXMgcmV0dXJuaW5n IHRoZSBhZGRyZXNzIG9mIGFuCi0gICAgdW5pb24gZmllbGQ6Ci0KLSAgICAgICAgICAvKiBBbiBl eHBsaWNpdCBsb2NhdGlvbi4gICovCi0gICAgICAgICAgc3RydWN0IGV4cGxpY2l0X2xvY2F0aW9u IGV4cGxpY2l0X2xvYzsKLSAgICAgICNkZWZpbmUgRUxfRVhQTElDSVQoUCkgKCYoKFApLT51LmV4 cGxpY2l0X2xvYykpCi0KLSAgICBhbmQgdGh1cyBtdXN0IGFsd2F5cyBiZSBub24tTlVMTC4KLQot ZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LXRkZXAuYyBiL2dkYi9hYXJjaDY0LXRkZXAuYwotLS0t IGEvZ2RiL2FhcmNoNjQtdGRlcC5jCi0rKysgYi9nZGIvYWFyY2g2NC10ZGVwLmMKLUBAIC0zNjY2 LDcgKzM2NjYsNyBAQCBXaGVuIG9uLCBBQXJjaDY0IHNwZWNpZmljIGRlYnVnZ2luZyBpcyBlbmFi bGVkLiIpLAotIAkgICAgaWYgKG1lbV9sZW4pIFwKLSAJICAgICAgeyBcCi0gCQlNRU1TID0gIFhO RVdWRUMgKHN0cnVjdCBhYXJjaDY0X21lbV9yLCBtZW1fbGVuKTsgIFwKLS0JCW1lbWNweSgmTUVN Uy0+bGVuLCAmUkVDT1JEX0JVRlswXSwgXAotKwkJbWVtY3B5KE1FTVMsICZSRUNPUkRfQlVGWzBd LCBcCi0gCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBhYXJjaDY0X21lbV9yKSAqIExFTkdUSCk7IFwK LSAJICAgICAgfSBcCi0gCSAgfSBcCi1kaWZmIC0tZ2l0IGEvZ2RiL2xvY2F0aW9uLmMgYi9nZGIv bG9jYXRpb24uYwotLS0tIGEvZ2RiL2xvY2F0aW9uLmMKLSsrKyBiL2dkYi9sb2NhdGlvbi5jCi1A QCAtOTYwLDEyICs5NjAsMTEgQEAgZXZlbnRfbG9jYXRpb25fZW1wdHlfcCAoY29uc3Qgc3RydWN0 IGV2ZW50X2xvY2F0aW9uICpsb2NhdGlvbikKLSAgICAgICByZXR1cm4gMDsKLSAKLSAgICAgY2Fz ZSBFWFBMSUNJVF9MT0NBVElPTjoKLS0gICAgICByZXR1cm4gKEVMX0VYUExJQ0lUIChsb2NhdGlv bikgPT0gTlVMTAotLQkgICAgICB8fCAoRUxfRVhQTElDSVQgKGxvY2F0aW9uKS0+c291cmNlX2Zp bGVuYW1lID09IE5VTEwKLS0JCSAgJiYgRUxfRVhQTElDSVQgKGxvY2F0aW9uKS0+ZnVuY3Rpb25f bmFtZSA9PSBOVUxMCi0tCQkgICYmIEVMX0VYUExJQ0lUIChsb2NhdGlvbiktPmxhYmVsX25hbWUg PT0gTlVMTAotLQkJICAmJiAoRUxfRVhQTElDSVQgKGxvY2F0aW9uKS0+bGluZV9vZmZzZXQuc2ln bgotLQkJICAgICAgPT0gTElORV9PRkZTRVRfVU5LTk9XTikpKTsKLSsgICAgICByZXR1cm4gKEVM X0VYUExJQ0lUIChsb2NhdGlvbiktPnNvdXJjZV9maWxlbmFtZSA9PSBOVUxMCi0rCSAgICAgICYm IEVMX0VYUExJQ0lUIChsb2NhdGlvbiktPmZ1bmN0aW9uX25hbWUgPT0gTlVMTAotKwkgICAgICAm JiBFTF9FWFBMSUNJVCAobG9jYXRpb24pLT5sYWJlbF9uYW1lID09IE5VTEwKLSsJICAgICAgJiYg KEVMX0VYUExJQ0lUIChsb2NhdGlvbiktPmxpbmVfb2Zmc2V0LnNpZ24KLSsJCSAgPT0gTElORV9P RkZTRVRfVU5LTk9XTikpOwotIAotICAgICBjYXNlIFBST0JFX0xPQ0FUSU9OOgotICAgICAgIHJl dHVybiBFTF9QUk9CRSAobG9jYXRpb24pID09IE5VTEw7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoy MDY4MjgwLWRlYnVnaW5mb2QtdW5hdmFpbGFibGUtc2l6ZS5wYXRjaCBiL2dkYi1yaGJ6MjA2ODI4 MC1kZWJ1Z2luZm9kLXVuYXZhaWxhYmxlLXNpemUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDkxZGEwY2YuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDY4MjgwLWRlYnVnaW5m b2QtdW5hdmFpbGFibGUtc2l6ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAK LUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZp biBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDMwIE1hciAyMDIyIDEz OjI4OjI2IC0wNzAwCi1TdWJqZWN0OiBnZGItcmhiejIwNjgyODAtZGVidWdpbmZvZC11bmF2YWls YWJsZS1zaXplLnBhdGNoCi0KLTs7IEJhY2twb3J0IHVwc3RyZWFtIHBhdGNoIGZyb20gQWFyb24g TWVyZXkgd2hpY2ggc3VwcHJlc3NlcyBkZWJ1Z2luZm9kCi07OyBwcm9ncmVzcyBtZXNzYWdlcyB3 aGVuIHNpemUgaXMgemVyby4gIChSSCBCWiAyMDY4MjgwKS4KLQotUmVtb3ZlIGRvd25sb2FkIHNp emUgZnJvbSBkZWJ1Z2luZm9kIHByb2dyZXNzIG1lc3NhZ2VzIGlmIHVuYXZhaWxhYmxlCi0KLUN1 cnJlbnRseSBkZWJ1Z2luZm9kIHByb2dyZXNzIHVwZGF0ZSBtZXNzYWdlcyBpbmNsdWRlIHRoZSBz aXplIG9mCi1lYWNoIGRvd25sb2FkOgotCi0gIERvd25sb2FkaW5nIDcuNSBNQiBzZXBhcmF0ZSBk ZWJ1ZyBpbmZvIGZvciAvbGliL2xpYnh5ei5zby4wCi0KLVRoaXMgdmFsdWUgb3JpZ2luYXRlcyBm cm9tIHRoZSBDb250ZW50LUxlbmd0aCBIVFRQIGhlYWRlciBvZiB0aGUKLXRyYW5zZmVyLiAgSG93 ZXZlciB0aGlzIGhlYWRlciBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBwcmVzZW50IGZvcgotZWFj aCBkb3dubG9hZC4gIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGRlYnVnaW5mb2Qgc2VydmVycyBjb21w cmVzcyBmaWxlcwotb24tdGhlLWZseSBhdCB0aGUgdGltZSBvZiB0cmFuc2Zlci4gIEluIHRoaXMg Y2FzZSBnZGIgd3JvbmdseSBwcmludHMKLSItMC4wMCBNQiIgYXMgdGhlIHNpemUuCi0KLVRoaXMg cGF0Y2ggcmVtb3ZlcyBkb3dubG9hZCBzaXplcyBmcm9tIHByb2dyZXNzIG1lc3NhZ2VzIHdoZW4g dGhleSBhcmUKLW5vdCBhdmFpbGFibGUuICBJdCBhbHNvIHJlbW92ZXMgdXNhZ2Ugb2YgdGhlIHBy b2dyZXNzIGJhciB1bnRpbAotYSBtb3JlIHRob3JvdWdoIHJld29ya2luZyBvZiBwcm9ncmVzcyB1 cGRhdGluZyBpcyBpbXBsZW1lbnRlZC4gWzFdCi0KLVsxXSBodHRwczovL3NvdXJjZXdhcmUub3Jn L3BpcGVybWFpbC9nZGItcGF0Y2hlcy8yMDIyLUZlYnJ1YXJ5LzE4NTc5OC5odG1sCi0KLWRpZmYg LS1naXQgYS9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0 LmMKLS0tLSBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotKysrIGIvZ2RiL2RlYnVnaW5mb2Qt c3VwcG9ydC5jCi1AQCAtODEsMTIgKzgxLDEyIEBAIGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5 IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9pZCwKLSBzdHJ1Y3QgdXNlcl9kYXRhCi0gewot ICAgdXNlcl9kYXRhIChjb25zdCBjaGFyICpkZXNjLCBjb25zdCBjaGFyICpmbmFtZSkKLS0gICAg OiBkZXNjIChkZXNjKSwgZm5hbWUgKGZuYW1lKQotKyAgICA6IGRlc2MgKGRlc2MpLCBmbmFtZSAo Zm5hbWUpLCBoYXNfcHJpbnRlZCAoZmFsc2UpCi0gICB7IH0KLSAKLSAgIGNvbnN0IGNoYXIgKiBj b25zdCBkZXNjOwotICAgY29uc3QgY2hhciAqIGNvbnN0IGZuYW1lOwotLSAgZ2RiOjpvcHRpb25h bDx1aV9vdXQ6OnByb2dyZXNzX21ldGVyPiBtZXRlcjsKLSsgIGJvb2wgaGFzX3ByaW50ZWQ7Ci0g fTsKLSAKLSAvKiBEZWxldGVyIGZvciBhIGRlYnVnaW5mb2RfY2xpZW50LiAgKi8KLUBAIC0xMTYs MjQgKzExNiwzMiBAQCBwcm9ncmVzc2ZuIChkZWJ1Z2luZm9kX2NsaWVudCAqYywgbG9uZyBjdXIs IGxvbmcgdG90YWwpCi0gICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAKLS0gIGlmICh0b3RhbCA9 PSAwKQotLSAgICByZXR1cm4gMDsKLS0KLS0gIGlmICghZGF0YS0+bWV0ZXIuaGFzX3ZhbHVlICgp KQotKyAgaWYgKCFkYXRhLT5oYXNfcHJpbnRlZCkKLSAgICAgewotLSAgICAgIGZsb2F0IHNpemVf aW5fbWIgPSAxLjBmICogdG90YWwgLyAoMTAyNCAqIDEwMjQpOwotLSAgICAgIHN0cmluZ19maWxl IHN0eWxlZF9maWxlbmFtZSAoY3VycmVudF91aW91dC0+Y2FuX2VtaXRfc3R5bGVfZXNjYXBlICgp KTsKLS0gICAgICBmcHJpbnRmX3N0eWxlZCAoJnN0eWxlZF9maWxlbmFtZSwKLS0JCSAgICAgIGZp bGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwKLS0JCSAgICAgICIlcyIsCi0tCQkgICAgICBkYXRhLT5m bmFtZSk7Ci0tICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZQotLQk9IHN0cmluZ19wcmludGYgKCJE b3dubG9hZGluZyAlLjJmIE1CICVzICVzIiwgc2l6ZV9pbl9tYiwgZGF0YS0+ZGVzYywKLS0JCQkg c3R5bGVkX2ZpbGVuYW1lLmNfc3RyKCkpOwotLSAgICAgIGRhdGEtPm1ldGVyLmVtcGxhY2UgKGN1 cnJlbnRfdWlvdXQsIG1lc3NhZ2UsIDEpOwotLSAgICB9Ci0rICAgICAgLyogSW5jbHVkZSB0aGUg dHJhbnNmZXIgc2l6ZSwgaWYgYXZhaWxhYmxlLiAgKi8KLSsgICAgICBpZiAodG90YWwgPiAwKQot Kwl7Ci0rCSAgZmxvYXQgc2l6ZSA9IDEuMGYgKiB0b3RhbCAvIDEwMjQ7Ci0rCSAgY29uc3QgY2hh ciAqdW5pdCA9ICJLQiI7Ci0rCi0rCSAgLyogSWYgc2l6ZSBpcyBncmVhdGVyIHRoYW4gMC4wMSBN Qiwgc2V0IHVuaXQgdG8gTUIuICAqLwotKwkgIGlmIChzaXplID4gMTAuMjQpCi0rCSAgICB7Ci0r CSAgICAgIHNpemUgLz0gMTAyNDsKLSsJICAgICAgdW5pdCA9ICJNQiI7Ci0rCSAgICB9Ci0rCi0r CSAgcHJpbnRmX2ZpbHRlcmVkICgiRG93bmxvYWRpbmcgJS4yZiAlcyAlcyAlcHMuLi5cbiIsCi0r CQkJICAgc2l6ZSwgdW5pdCwgZGF0YS0+ZGVzYywKLSsJCQkgICBzdHlsZWRfc3RyaW5nIChmaWxl X25hbWVfc3R5bGUuc3R5bGUgKCksCi0rCQkJCQkgIGRhdGEtPmZuYW1lKSk7Ci0rCX0KLSsgICAg ICBlbHNlCi0rCXByaW50Zl9maWx0ZXJlZCAoIkRvd25sb2FkaW5nICVzICVwcy4uLlxuIiwgZGF0 YS0+ZGVzYywKLSsJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLCBk YXRhLT5mbmFtZSkpOwotIAotLSAgY3VycmVudF91aW91dC0+cHJvZ3Jlc3MgKChkb3VibGUpY3Vy IC8gKGRvdWJsZSl0b3RhbCk7Ci0rICAgICAgZGF0YS0+aGFzX3ByaW50ZWQgPSB0cnVlOwotKyAg ICB9Ci0gCi0gICByZXR1cm4gMDsKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXRlc3QtZm9yLXJoYnox OTc2ODg3LnBhdGNoIGIvZ2RiLXRlc3QtZm9yLXJoYnoxOTc2ODg3LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAzY2I3MDQ5Li4wMDAwMDAwCi0tLSBhL2dkYi10ZXN0LWZvci1y aGJ6MTk3Njg4Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MiArMCwwIEBACi1Gcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0Fs ZXhhbmRyYT0yMEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRl OiBXZWQsIDI5IFNlcCAyMDIxIDExOjE0OjUxICswMjAwCi1TdWJqZWN0OiBnZGItdGVzdC1mb3It cmhiejE5NzY4ODcucGF0Y2gKLQotOzsgQmFja3BvcnQgdGVzdCBmb3IgUkhCWiAxOTc2ODg3IChL ZXZpbiBCdWV0dG5lcikuCi0KLVRlc3QgY2FzZSByZXByb2R1Y2luZyBQUjI4MDMwIGJ1ZwotCi1U aGUgb3JpZ2luYWwgcmVwcm9kdWNlciBmb3IgUFIyODAzMCByZXF1aXJlZCB1c2Ugb2YgYSBzcGVj aWZpYwotY29tcGlsZXIgdmVyc2lvbiAtIGdjYy1jKystMTEuMS4xLTMuZmMzNCBpcyBtZW50aW9u ZWQgaW4gdGhlIFBSLAotdGhvdWdoIGl0IHNlZW1zIHByb2JhYmxlIHRoYXQgb3RoZXIgZ2NjIHZl cnNpb25zIG1pZ2h0IGFsc28gYmUgYWJsZSB0bwotcmVwcm9kdWNlIHRoZSBidWcgYXMgd2VsbC4g IFRoaXMgY29tbWl0IGludHJvZHVjZXMgYSB0ZXN0IGNhc2Ugd2hpY2gsCi11c2luZyB0aGUgRFdB UkYgYXNzZW1ibGVyLCBwcm92aWRlcyBhIHJlcHJvZHVjZXIgd2hpY2ggaXMgaW5kZXBlbmRlbnQK LW9mIHRoZSBjb21waWxlciB2ZXJzaW9uLiAgKFdlbGwsIGl0J2xsIHdvcmsgd2l0aCB3aGF0ZXZl ciBjb21waWxlcnMKLXRoZSBEV0FSRiBhc3NlbWJsZXIgd29ya3Mgd2l0aC4pCi0KLVRvIHRoZSBi ZXN0IG9mIG15IGtub3dsZWRnZSwgaXQncyBhbHNvIHRoZSBmaXJzdCB0ZXN0IGNhc2Ugd2hpY2gg dXNlcwotdGhlIERXQVJGIGFzc2VtYmxlciB0byBwcm92aWRlIGRlYnVnIGluZm8gZm9yIGEgc2hh cmVkIG9iamVjdC4gIFRoYXQKLWJlaW5nIHRoZSBjYXNlLCBJIHByb3ZpZGVkIG1vcmUgdGhhbiB0 aGUgdXN1YWwgY29tbWVudGFyeSB3aGljaCBzaG91bGQKLWFsbG93IHRoaXMgY2FzZSB0byBiZSB1 c2VkIGFzIGEgdGVtcGxhdGUgd2hlbiBhIGNvbWJvIHNoYXJlZAotbGlicmFyeSAvIERXQVJGIGFz c2VtYmxlciB0ZXN0IGNhc2UgaXMgcmVxdWlyZWQgaW4gdGhlIGZ1dHVyZS4KLQotSSBwcm92aWRl IHNvbWUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGJ1ZyBpbiBhIGNvbW1lbnQgbmVhciB0aGUKLWJl Z2lubmluZyBvZiBsb2NleHByLWRtbC5leHAuCi0KLVRoaXMgcHJvYmxlbSB3YXMgZGlmZmljdWx0 IHRvIHJlcHJvZHVjZTsgSSBmb3VuZCBteXNlbGYgY29uc3RhbnRseQotcmVmZXJyaW5nIHRvIHRo ZSBiYWNrdHJhY2Ugd2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hhdCAoZWxzZSkgSQotbWln aHQgYmUgbWlzc2luZyB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGEgcmVwcm9kdWNlci4gIEJlbG93 IGlzIGEKLXBhcnRpYWwgYmFja3RyYWNlIHdoaWNoIEkgaW5jbHVkZSBmb3IgcG9zdGVyaXR5Lgot Ci0gIzAgIGludGVybmFsX2Vycm9yICgKLSAgICBmaWxlPTB4YzUwMTEwICIvaXJvbndvb2QxL3Nv dXJjZXdhcmUtZ2l0L2YzNC1wcjI4MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYi9n ZGJ0eXBlcy5jIiwgbGluZT01NTc1LAotICAgIGZtdD0weGM1MjBjMCAiVW5leHBlY3RlZCB0eXBl IGZpZWxkIGxvY2F0aW9uIGtpbmQ6ICVkIikKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUt Z2l0L2YzNC1wcjI4MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYnN1cHBvcnQvZXJy b3JzLmNjOjUxCi0gIzEgIDB4MDAwMDAwMDAwMDZlZjBjNSBpbiBjb3B5X3R5cGVfcmVjdXJzaXZl IChvYmpmaWxlPTB4MTYzNTkzMCwKLSAgICB0eXBlPTB4Mjc0YzI2MCwgY29waWVkX3R5cGVzPTB4 MzBiYjI5MCkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1wcjI4MDMwL2Js ZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYi9nZGJ0eXBlcy5jOjU1NzUKLSAjMiAgMHgwMDAw MDAwMDAwNmVmMzgyIGluIGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGU9MHgxNjM1OTMwLAot ICAgIHR5cGU9MHgyNzRjYTEwLCBjb3BpZWRfdHlwZXM9MHgzMGJiMjkwKQotICAgIGF0IC9pcm9u d29vZDEvc291cmNld2FyZS1naXQvZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgw MzAvZ2RiL2dkYnR5cGVzLmM6NTYwMgotICMzICAweDAwMDAwMDAwMDBhNzQwOWEgaW4gcHJlc2Vy dmVfb25lX3ZhbHVlICh2YWx1ZT0weDI0MjY5ZjAsCi0gICAgb2JqZmlsZT0weDE2MzU5MzAsIGNv cGllZF90eXBlcz0weDMwYmIyOTApCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9m MzQtcHIyODAzMC9ibGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvdmFsdWUuYzoyNTI5Ci0g IzQgIDB4MDAwMDAwMDAwMDcyMDEyYSBpbiBnZGJzY21fcHJlc2VydmVfdmFsdWVzICgKLSAgICBl eHRsYW5nPTB4YzU1NzIwIDxleHRlbnNpb25fbGFuZ3VhZ2VfZ3VpbGU+LCBvYmpmaWxlPTB4MTYz NTkzMCwKLSAgICBjb3BpZWRfdHlwZXM9MHgzMGJiMjkwKQotICAgIGF0IC9pcm9ud29vZDEvc291 cmNld2FyZS1naXQvZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgwMzAvZ2RiL2d1 aWxlL3NjbS12YWx1ZS5jOjk0Ci0gIzUgIDB4MDAwMDAwMDAwMDZhM2Y4MiBpbiBwcmVzZXJ2ZV9l eHRfbGFuZ192YWx1ZXMgKG9iamZpbGU9MHgxNjM1OTMwLAotICAgIGNvcGllZF90eXBlcz0weDMw YmIyOTApCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9ibGQv Li4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvZXh0ZW5zaW9uLmM6NTY4Ci0gIzYgIDB4MDAwMDAw MDAwMGE3NDI4ZCBpbiBwcmVzZXJ2ZV92YWx1ZXMgKG9iamZpbGU9MHgxNjM1OTMwKQotICAgIGF0 IC9pcm9ud29vZDEvc291cmNld2FyZS1naXQvZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVl LXByMjgwMzAvZ2RiL3ZhbHVlLmM6MjU3OQotICM3ICAweDAwMDAwMDAwMDA4MmQ1MTQgaW4gb2Jq ZmlsZTo6fm9iamZpbGUgKHRoaXM9MHgxNjM1OTMwLAotICAgIF9faW5fY2hyZz08b3B0aW1pemVk IG91dD4pCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9ibGQv Li4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvb2JqZmlsZXMuYzo1NDkKLSAjOCAgMHgwMDAwMDAw MDAwODMxY2M4IGluIHN0ZDo6X1NwX2NvdW50ZWRfcHRyPG9iamZpbGUqLCAoX19nbnVfY3h4Ojpf TG9ja19wb2xpY3kpMj46Ol9NX2Rpc3Bvc2UgKHRoaXM9MHgxNjU0NTgwKQotICAgIGF0IC91c3Iv aW5jbHVkZS9jKysvMTEvYml0cy9zaGFyZWRfcHRyX2Jhc2UuaDozNDgKLSAjOSAgMHgwMDAwMDAw MDAwNGU2NjE3IGluIHN0ZDo6X1NwX2NvdW50ZWRfYmFzZTwoX19nbnVfY3h4OjpfTG9ja19wb2xp Y3kpMj46Ol9NX3JlbGVhc2UgKHRoaXM9MHgxNjU0NTgwKSBhdCAvdXNyL2luY2x1ZGUvYysrLzEx L2JpdHMvc2hhcmVkX3B0cl9iYXNlLmg6MTY4Ci0gIzEwIDB4MDAwMDAwMDAwMDRlMWQyZiBpbiBz dGQ6Ol9fc2hhcmVkX2NvdW50PChfX2dudV9jeHg6Ol9Mb2NrX3BvbGljeSkyPjo6fl9fc2hhcmVk X2NvdW50ICh0aGlzPTB4MTkwYmI4OCwgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKLSAgICBh dCAvdXNyL2luY2x1ZGUvYysrLzExL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmg6NzA1Ci0gIzExIDB4 MDAwMDAwMDAwMDgyZmVlZSBpbiBzdGQ6Ol9fc2hhcmVkX3B0cjxvYmpmaWxlLCAoX19nbnVfY3h4 OjpfTG9ja19wb2xpY3kpMj46On5fX3NoYXJlZF9wdHIgKHRoaXM9MHgxOTBiYjgwLCBfX2luX2No cmc9PG9wdGltaXplZCBvdXQ+KQotICAgIGF0IC91c3IvaW5jbHVkZS9jKysvMTEvYml0cy9zaGFy ZWRfcHRyX2Jhc2UuaDoxMTU0Ci0gIzEyIDB4MDAwMDAwMDAwMDgyZmYwYSBpbiBzdGQ6OnNoYXJl ZF9wdHI8b2JqZmlsZT46On5zaGFyZWRfcHRyICgKLSAgICB0aGlzPTB4MTkwYmI4MCwgX19pbl9j aHJnPTxvcHRpbWl6ZWQgb3V0PikKLSAgICBhdCAvdXNyL2luY2x1ZGUvYysrLzExL2JpdHMvc2hh cmVkX3B0ci5oOjEyMgotICMxMyAweDAwMDAwMDAwMDA4NWVkN2UgaW4gX19nbnVfY3h4OjpuZXdf YWxsb2NhdG9yPHN0ZDo6X0xpc3Rfbm9kZTxzdGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4gPiA+Ojpk ZXN0cm95PHN0ZDo6c2hhcmVkX3B0cjxvYmpmaWxlPiA+ICh0aGlzPTB4MTE0YmMwMCwKLSAgICBf X3A9MHgxOTBiYjgwKSBhdCAvdXNyL2luY2x1ZGUvYysrLzExL2V4dC9uZXdfYWxsb2NhdG9yLmg6 MTY4Ci0gIzE0IDB4MDAwMDAwMDAwMDg1ZTg4ZCBpbiBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8c3Rk OjphbGxvY2F0b3I8c3RkOjpfTGlzdF9ub2RlPHN0ZDo6c2hhcmVkX3B0cjxvYmpmaWxlPiA+ID4g Pjo6ZGVzdHJveTxzdGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4gPiAoX19hPS4uLiwKLSAgICBfX3A9 MHgxOTBiYjgwKSBhdCAvdXNyL2luY2x1ZGUvYysrLzExL2JpdHMvYWxsb2NfdHJhaXRzLmg6NTMx Ci0gIzE1IDB4MDAwMDAwMDAwMDg1ZTUwYyBpbiBzdGQ6Ol9fY3h4MTE6Omxpc3Q8c3RkOjpzaGFy ZWRfcHRyPG9iamZpbGU+LCBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4g PiA+OjpfTV9lcmFzZSAodGhpcz0weDExNGJjMDAsIF9fcG9zaXRpb249Ci0gIHN0ZDo6c2hhcmVk X3B0cjxvYmpmaWxlPiAoZXhwaXJlZCwgd2VhayBjb3VudCAxKSA9IHtnZXQoKSA9IDB4MTYzNTkz MH0pCi0gICAgYXQgL3Vzci9pbmNsdWRlL2MrKy8xMS9iaXRzL3N0bF9saXN0Lmg6MTkyNQotICMx NiAweDAwMDAwMDAwMDA4NWRmMGUgaW4gc3RkOjpfX2N4eDExOjpsaXN0PHN0ZDo6c2hhcmVkX3B0 cjxvYmpmaWxlPiwgc3RkOjphbGxvY2F0b3I8c3RkOjpzaGFyZWRfcHRyPG9iamZpbGU+ID4gPjo6 ZXJhc2UgKHRoaXM9MHgxMTRiYzAwLCBfX3Bvc2l0aW9uPQotICBzdGQ6OnNoYXJlZF9wdHI8b2Jq ZmlsZT4gKGV4cGlyZWQsIHdlYWsgY291bnQgMSkgPSB7Z2V0KCkgPSAweDE2MzU5MzB9KQotICAg IGF0IC91c3IvaW5jbHVkZS9jKysvMTEvYml0cy9saXN0LnRjYzoxNTgKLSAjMTcgMHgwMDAwMDAw MDAwODVjNzQ4IGluIHByb2dyYW1fc3BhY2U6OnJlbW92ZV9vYmpmaWxlICh0aGlzPTB4MTE0YmJj MCwKLSAgICBvYmpmaWxlPTB4MTYzNTkzMCkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUt Z2l0L2YzNC1wcjI4MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYi9wcm9nc3BhY2Uu YzoyMTAKLSAjMTggMHgwMDAwMDAwMDAwODJkM2FlIGluIG9iamZpbGU6OnVubGluayAodGhpcz0w eDE2MzU5MzApCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9i bGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvb2JqZmlsZXMuYzo0ODcKLSAjMTkgMHgwMDAw MDAwMDAwODJlNjhjIGluIG9iamZpbGVfcHVyZ2Vfc29saWJzICgpCi0gICAgYXQgL2lyb253b29k MS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9ibGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9n ZGIvb2JqZmlsZXMuYzo4NzUKLSAjMjAgMHgwMDAwMDAwMDAwOTJkZDM3IGluIG5vX3NoYXJlZF9s aWJyYXJpZXMgKGlnbm9yZWQ9MHgwLCBmcm9tX3R0eT0xKQotICAgIGF0IC9pcm9ud29vZDEvc291 cmNld2FyZS1naXQvZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgwMzAvZ2RiL3Nv bGliLmM6MTIzNgotICMyMSAweDAwMDAwMDAwMDA5YTM3ZmUgaW4gdGFyZ2V0X3ByZV9pbmZlcmlv ciAoZnJvbV90dHk9MSkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1wcjI4 MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYi90YXJnZXQuYzoyNDk2Ci0gIzIyIDB4 MDAwMDAwMDAwMDc0NTRkNiBpbiBydW5fY29tbWFuZF8xIChhcmdzPTB4MCwgZnJvbV90dHk9MSwK LSAgICBydW5faG93PVJVTl9OT1JNQUwpCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdp dC9mMzQtcHIyODAzMC9ibGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvaW5mY21kLmM6NDM3 Ci0KLUknbGwgbm90ZSBhIGZldyBwb2ludHMgcmVnYXJkaW5nIHRoaXMgYmFja3RyYWNlOgotCi1G cmFtZSAjMSBpcyB3aGVyZSB0aGUgaW50ZXJuYWwgZXJyb3Igb2NjdXJzLiAgSXQncyBjYXVzZWQg YnkgYW4KLXVuaGFuZGxlZCBjYXNlIGZvciBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSy4gIFRo ZSBmaXggZm9yIHRoaXMgYnVnCi1hZGRzIHN1cHBvcnQgZm9yIHRoaXMgY2FzZS4KLQotRnJhbWUg IzIyIC0gaXQncyBhIHBhcnRpYWwgYmFja3RyYWNlIC0gc2hvd3MgdGhhdCBHREIgaXMgYXR0ZW1w dGluZyB0bwotKHJlKXJ1biB0aGUgcHJvZ3JhbS4gIFlvdSBjYW4gc2VlIHRoZSBleGFjdCBjb21t YW5kIHNlcXVlbmNlIHRoYXQgd2FzCi11c2VkIGZvciByZXByb2R1Y2luZyB0aGlzIHByb2JsZW0g aW4gdGhlIFBSIChhdAotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9MjgwMzApLCBidXQgaW4gYQotbnV0c2hlbGwsIGFmdGVyIHN0YXJ0aW5nIHRoZSBwcm9n cmFtIGFuZCBhZHZhbmNpbmcgdG8gdGhlIGFwcHJvcHJpYXRlCi1zb3VyY2UgbGluZSwgR0RCIHdh cyBhc2tlZCB0byBzdGVwIGludG8gbGlic3RkYysrOyBhICJmaW5pc2giIGNvbW1hbmQKLXdhcyBp c3N1ZWQsIHJldHVybmluZyBhIHZhbHVlLiAgVGhlIGZhY3QgdGhhdCBhIHZhbHVlIHdhcyByZXR1 cm5lZCBpcwotdmVyeSBpbXBvcnRhbnQuICBHREIgd2FzIHRoZW4gdXNlZCB0byBzdGVwIGJhY2sg aW50byBsaWJzdGRjKysuICBBCi1icmVha3BvaW50IHdhcyBzZXQgb24gYSBzb3VyY2UgbGluZSBp biB0aGUgbGlicmFyeSBhZnRlciB3aGljaCBhICJydW4iCi1jb21tYW5kIHdhcyBpc3N1ZWQuCi0K LUZyYW1lICMxOSBzaG93cyBhIGNhbGwgdG8gb2JqZmlsZV9wdXJnZV9zb2xpYnMuICBJdCdzIGFw dGx5IG5hbWVkLgotCi1GcmFtZSAjNyBpcyBhIGNhbGwgdG8gdGhlIGRlc3RydWN0b3IgZm9yIG9u ZSBvZiB0aGUgb2JqZmlsZSBzb2xpYnM7IGl0Ci10dXJuZWQgb3V0IHRvIGJlIHRoZSBvbmUgZm9y IGxpYnN0ZGMrKy4KLQotRnJhbWVzICM2IHRocnUgIzMgc2hvdyB2YXJpb3VzIHZhbHVlIHByZXNl cnZhdGlvbiBmcmFtZXMuICBJZiB5b3UgbG9vawotYXQgcHJlc2VydmVfdmFsdWVzKCkgaW4gZ2Ri L3ZhbHVlLmMsIHRoZSB2YWx1ZSBoaXN0b3J5IGlzIHByZXNlcnZlZAotZmlyc3QsIGZvbGxvd2Vk IGJ5IGludGVybmFsIHZhcmlhYmxlcywgZm9sbG93ZWQgYnkgdmFsdWVzIGZvciB0aGUKLWV4dGVu c2lvbiBsYW5ndWFnZXMgKHB5dGhvbiBhbmQgZ3VpbGUpLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2xvY2V4cHItZGF0YS1tZW1iZXItbG9jYXRpb24tbGliLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi1saWIu YwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9sb2NleHByLWRhdGEtbWVtYmVyLWxvY2F0aW9uLWxpYi5jCi1AQCAtMCww ICsxLDQ4IEBACi0rLyogQ29weXJpZ2h0IChDKSAyMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgImxvY2V4cHItZGF0 YS1tZW1iZXItbG9jYXRpb24uaCIKLSsKLStzdHJ1Y3QgQSBnX0EgPSB7MywgNH07Ci0rc3RydWN0 IEIgZ19CID0geyB7OCwgOX0sIDEwLCAxMSB9OwotKwotK0IgKgotK2ZvbyAoKQotK3sJCQkJCQkv KiBmb28gcHJvbG9ndWUgKi8KLSsgIGFzbSAoImZvb19sYWJlbDogLmdsb2JsIGZvb19sYWJlbCIp OwotKyAgcmV0dXJuICZnX0I7CQkJCQkvKiBmb28gcmV0dXJuICovCi0rfQkJCQkJCS8qIGZvbyBl bmQgKi8KLSsKLStCICoKLStiYXIgKEIgKnYpCi0rewkJCQkJCS8qIGJhciBwcm9sb2d1ZSAqLwot KyAgYXNtICgiYmFyX2xhYmVsOiAuZ2xvYmwgYmFyX2xhYmVsIik7Ci0rICByZXR1cm4gdjsJCQkJ CS8qIGJhciByZXR1cm4gKi8KLSt9CQkJCQkJLyogYmFyIGVuZCAqLwotKwotKy8qIFNvbWUgb2Yg dGhlIERXQVJGIGFzc2VtYmxlciBwcm9jcyAoZS5nLiBmdW5jdGlvbl9yYW5nZSkgY29tcGlsZQot KyAgIHRoaXMgZmlsZSwgZXhwZWN0aW5nIGl0IHRvIGJlIGEgY29tcGxldGUgcHJvZ3JhbSB3aXRo IGEgbWFpbigpCi0rICAgZnVuY3Rpb24uICBXaGVuIElTX1NIQVJFRExJQiBpcyBOT1QgZGVmaW5l ZCwgd2UgaGF2ZSBtYWluKCkgYXMKLSsgICBkZWZpbmVkIGJlbG93LiAgKi8KLSsKLSsjaWZuZGVm IElTX1NIQVJFRExJQgotK2ludAotK21haW4gKCkKLSt7Ci0rICBCICpiID0gZm9vICgpOwotK30K LSsjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1k YXRhLW1lbWJlci1sb2NhdGlvbi1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9j ZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi1tYWluLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRh LW1lbWJlci1sb2NhdGlvbi1tYWluLmMKLUBAIC0wLDAgKzEsMjcgQEAKLSsvKiBDb3B5cmlnaHQg KEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjaW5jbHVkZSAibG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi5oIgotKwot K2ludAotK21haW4gKHZvaWQpCi0rewotKyAgQiAqdjE7Ci0rICB2MSA9IGJhciAoZm9vICgpKTsK LSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvbG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvbG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi5leHAKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhw ci1kYXRhLW1lbWJlci1sb2NhdGlvbi5leHAKLUBAIC0wLDAgKzEsMzQ5IEBACi0rIyBDb3B5cmln aHQgMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIHRlc3QgY2FzZSB1c2VzIHRoZSBEV0FSRiBhc3Nl bWJsZXIgdG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtCi0rIyBkZXNjcmliZWQgYnkgUFIyODAzMC4g IFRoZSBidWcgdHVybmVkIG91dCB0byBiZSB0aGF0Ci0rIyBGSUVMRF9MT0NfS0lORF9EV0FSRl9C TE9DSyB3YXMgbm90IGhhbmRsZWQgd2hlbiByZWN1cnNpdmVseSBjb3B5aW5nCi0rIyBhIHZhbHVl J3MgdHlwZSB3aGVuIHByZXNlcnZpbmcgdGhlIHZhbHVlIGhpc3RvcnkgZHVyaW5nIHRoZSBmcmVl aW5nCi0rIyB1cCBvZiBvYmpmaWxlcyBhc3NvY2lhdGVkIHdpdGggYSBzaGFyZWQgb2JqZWN0LiAg KFllcywgZmlndXJpbmcgb3V0Ci0rIyBob3cgdG8gbWFrZSB0aGlzIGhhcHBlbiBpbiBhIGNvbmNp c2UgdGVzdCBjYXNlIHR1cm5lZCBvdXQgdG8gYmUKLSsjIGNoYWxsZW5naW5nLikKLSsjCi0rIyBU aGUgZm9sbG93aW5nIGVsZW1lbnRzIHByb3ZlZCB0byBiZSBuZWNlc3NhcnkgZm9yIHJlcHJvZHVj aW5nIHRoZQotKyMgcHJvYmxlbToKLSsjCi0rIyAxKSBBIGxvY2F0aW9uIGV4cHJlc3Npb24gbmVl ZGVkIHRvIGJlIHVzZWQgd2l0aAotKyMgICAgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gcmF0 aGVyIHRoYW4gYSBzaW1wbGUgb2Zmc2V0LgotKyMgICAgTW9yZW92ZXIsIHRoaXMgbG9jYXRpb24g ZXhwcmVzc2lvbiBuZWVkZWQgdG8gdXNlIG9wY29kZXMKLSsjICAgIHdoaWNoIEdEQidzIERXQVJG IHJlYWRlciBjb3VsZCBub3QgY29udmVydCB0byBhIHNpbXBsZQotKyMgICAgb2Zmc2V0LiAgKE5v dGUsIGhvd2V2ZXIsIHRoYXQgR0RCIGNvdWxkIHByb2JhYmx5IGJlIGltcHJvdmVkCi0rIyAgICB0 byBoYW5kbGUgdGhlIG9wY29kZXMgY2hvc2VuIGZvciB0aGlzIHRlc3Q7IGlmIGRlY29kZV9sb2Nk ZXNjKCkKLSsjICAgIGluIGR3YXJmMi9yZWFkLmMgaXMgZXZlciB1cGRhdGVkIHRvIGhhbmRsZSBi b3RoIERXX09QX3BpY2sgYW5kCi0rIyAgICBEV19PUF9kcm9wLCB0aGVuIHRoaXMgdGVzdCBjb3Vs ZCBlbmQgdXAgcGFzc2luZyBldmVuIGlmCi0rIyAgICB0aGUgYnVnIGl0J3MgaW50ZW5kZWQgdG8g dGVzdCBoYXMgbm90IGJlZW4gZml4ZWQuKQotKyMKLSsjIDIpIFRoZSBkZWJ1ZyBpbmZvIGNvbnRh aW5pbmcgdGhlIGFib3ZlIERXQVJGIGluZm8gbmVlZGVkCi0rIyAgICB0byBiZSBhc3NvY2lhdGVk IHdpdGggYSBzaGFyZWQgb2JqZWN0IHNpbmNlIHRoZSBwcm9ibGVtCi0rIyAgICBvY2N1cnJlZCB3 aGlsZSBHREIgd2FzIHByZXNlcnZpbmcgdmFsdWVzIGR1cmluZyB0aGUKLSsjICAgIHB1cmdpbmcg b2Ygc2hhcmVkIG9iamVjdHMuCi0rIwotKyMgMykgQWZ0ZXIgcGVyZm9ybWluZyBzb21lIHNpbXBs ZSBnZGIgY29tbWFuZHMsIHRoZSBwcm9ncmFtIGlzCi0rIyAgICBydW4gYWdhaW4uICBJbiB0aGUg Y291cnNlIG9mIHJ1bm5pbmcgdGhlIG9iamZpbGUgZGVzdHJ1Y3RvcgotKyMgICAgYXNzb2NpYXRl ZCB3aXRoIHRoZSBzaGFyZWQgb2JqZWN0LCB2YWx1ZXMgYXJlIHByZXNlcnZlZAotKyMgICAgYWxv bmcgd2l0aCB0aGVpciB0eXBlcy4gIEFzIG5vdGVkIGVhcmxpZXIsIGl0IHdhcyBkdXJpbmcKLSsj ICAgIHRoZSByZWN1cnNpdmUgdHlwZSBjb3B5IHRoYXQgdGhlIGJ1ZyB3YXMgb2JzZXJ2ZWQuCi0r IwotKyMgVGhlcmVmb3JlLCBkdWUgdG8gIzIgYWJvdmUsIHRoaXMgdGVzdCBjYXNlIGNyZWF0ZXMg ZGVidWcgaW5mbwotKyMgd2hpY2ggaXMgdGhlbiB1c2VkIGJ5IGEgc2hhcmVkIG9iamVjdC4KLSsK LSsjIFRoaXMgdGVzdCBjYW4ndCBiZSBydW4gb24gdGFyZ2V0cyBsYWNraW5nIHNoYXJlZCBsaWJy YXJ5IHN1cHBvcnQuCi0raWYgW3NraXBfc2hsaWJfdGVzdHNdIHsKLSsgICAgcmV0dXJuIDAKLSt9 Ci0rCi0rbG9hZF9saWIgZHdhcmYuZXhwCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVu IG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotK2lmICFbZHdh cmYyX3N1cHBvcnRdIHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rIyBnZGJfdGVzdF9maWxlX25h bWUgaXMgdGhlIG5hbWUgb2YgdGhpcyBmaWxlIHdpdGhvdXQgdGhlIC5leHAKLSsjIGV4dGVuc2lv bi4gIFVzZSBpdCB0byBmb3JtIGJhc2VuYW1lcyBmb3IgdGhlIG1haW4gcHJvZ3JhbQotKyMgYW5k IHNoYXJlZCBvYmplY3QuCi0rc2V0IG1haW5fYmFzZW5hbWUgJHs6OmdkYl90ZXN0X2ZpbGVfbmFt ZX0tbWFpbgotK3NldCBsaWJfYmFzZW5hbWUgJHs6OmdkYl90ZXN0X2ZpbGVfbmFtZX0tbGliCi0r Ci0rIyBXZSdyZSBnZW5lcmF0aW5nIERXQVJGIGFzc2VtYmx5IGZvciB0aGUgc2hhcmVkIG9iamVj dDsgdGhlcmVmb3JlLAotKyMgdGhlIHNvdXJjZSBmaWxlIGZvciB0aGUgbGlicmFyeSAvIHNoYXJl ZCBvYmplY3QgbXVzdCBiZSBsaXN0ZWQgZmlyc3QKLSsjIChpbiB0aGUgc3RhbmRhcmRfdGVzdGZp bGUgaW52b2NhdGlvbikgc2luY2UgJHtzcmNmaWxlfSBpcyB1c2VkIGJ5Ci0rIyBnZXRfZnVuY19p bmZvIChmb3IgZGV0ZXJtaW5pbmcgdGhlIHN0YXJ0LCBlbmQsIGFuZCBsZW5ndGggb2YgYQotKyMg ZnVuY3Rpb24pLgotKyMKLSsjIFRoZSBvdXRwdXQgb2YgRHdhcmY6OmFzc2VtYmxlIHdpbGwgYmUg cGxhY2VkIGluICRsaWJfYmFzZW5hbWUuUwotKyMgd2hpY2ggd2lsbCBiZSAke3NyY2ZpbGUzfSBh ZnRlciB0aGUgZXhlY3V0aW9uIG9mIHN0YW5kYXJkX3Rlc3RmaWxlLgotKwotK3N0YW5kYXJkX3Rl c3RmaWxlICRsaWJfYmFzZW5hbWUuYyAkbWFpbl9iYXNlbmFtZS5jICRsaWJfYmFzZW5hbWUuUwot KwotK3NldCBsaWJzcmMgIiR7OjpzcmNkaXJ9LyR7OjpzdWJkaXJ9LyR7OjpzcmNmaWxlfSIKLStz ZXQgbGliX3NvIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2xpYl9iYXNlbmFtZX0uc29dCi0rc2V0 IGFzbV9maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkezo6c3JjZmlsZTN9XQotKwotKyMgV2Ug bmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHNvbWUgdHlwZXMgaW4gb3JkZXIgdG8gd3JpdGUgc29t ZSBvZiB0aGUKLSsjIGRlYnVnZ2luZyBpbmZvIHRoYXQgd2UncmUgYWJvdXQgdG8gZ2VuZXJhdGUu ICBGb3IgdGhhdCwgd2UgYXNrIEdEQgotKyMgYnkgZGVidWdnaW5nIHRoZSBzaGFyZWQgb2JqZWN0 IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlc3QgY2FzZS4KLSsKLSsjIENvbXBpbGUgdGhlIHNoYXJl ZCBsaWJyYXJ5OiAtRElTX1NIQVJFRExJQiBwcmV2ZW50cyBtYWluKCkgZnJvbQotKyMgYmVpbmcg ZGVmaW5lZC4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgc3ltYm9scyB3aWxsIGJlIHByZXNlbnQgZm9y Ci0rIyB0aGlzIGNvbXBpbGF0aW9uLgotK2lmIHtbZ2RiX2NvbXBpbGVfc2hsaWIgJGxpYnNyYyAk bGliX3NvIFwKLSsgICAgICAgICAgICAgICAgICAgICAgIHthZGRpdGlvbmFsX2ZsYWdzPS1ESVNf U0hBUkVETElCIGRlYnVnfV0gIT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgImZhaWxlZCB0byBjb21w aWxlIHNoYXJlZCBsaWJyYXJ5IgotKyAgICByZXR1cm4KLSt9Ci0rCi0rIyBTdGFydCBhIGZyZXNo IEdEQiBhbmQgbG9hZCB0aGUgc2hhcmVkIGxpYnJhcnkuCi0rY2xlYW5fcmVzdGFydCAkbGliX3Nv Ci0rCi0rIyBVc2luZyBvdXIgcnVubmluZyBHREIgc2Vzc2lvbiwgZGV0ZXJtaW5lIHNpemVzIG9m IHNldmVyYWwgdHlwZXMuCi0rc2V0IGxvbmdfc2l6ZSBbZ2V0X3NpemVvZiAibG9uZyIgLTFdCi0r c2V0IGFkZHJfc2l6ZSBbZ2V0X3NpemVvZiAidm9pZCAqIiAtMV0KLStzZXQgc3RydWN0X0Ffc2l6 ZSBbZ2V0X3NpemVvZiAiZ19BIiAtMV0KLStzZXQgc3RydWN0X0Jfc2l6ZSBbZ2V0X3NpemVvZiAi Z19CIiAtMV0KLSsKLStpZiB7ICRsb25nX3NpemUgPT0gLTEgfHwgJGFkZHJfc2l6ZSA9PSAtMSBc Ci0rICAgICB8fCAkc3RydWN0X0Ffc2l6ZSA9PSAtMSB8fCAkc3RydWN0X0Jfc2l6ZSA9PSAtMX0g ewotKyAgICBwZXJyb3IgIkNhbid0IGRldGVybWluZSB0eXBlIHNpemVzIgotKyAgICByZXR1cm4K LSt9Ci0rCi0rIyBSZXRyaWV2ZSBzdHJ1Y3Qgb2Zmc2V0IG9mIE1CUiBpbiBzdHJ1Y3QgVFAKLStw cm9jIGdldF9vZmZzZXRvZiB7IHRwIG1iciB9IHsKLSsgICAgcmV0dXJuIFtnZXRfaW50ZWdlcl92 YWx1ZW9mICImKCgke3RwfSAqKSAwKS0+JHttYnJ9IiAtMV0KLSt9Ci0rCi0rIyBVc2UgcnVubmlu ZyBHREIgc2Vzc2lvbiB0byBnZXQgc3RydWN0IG9mZnNldHMKLStzZXQgQV9hIFtnZXRfb2Zmc2V0 b2YgQSBhXQotK3NldCBBX3ggW2dldF9vZmZzZXRvZiBBIHhdCi0rc2V0IEJfYSBbZ2V0X29mZnNl dG9mIEIgYV0KLStzZXQgQl9iIFtnZXRfb2Zmc2V0b2YgQiBiXQotK3NldCBCX3gyIFtnZXRfb2Zm c2V0b2YgQiB4Ml0KLSsKLSsjIENyZWF0ZSB0aGUgRFdBUkYuCi0rRHdhcmY6OmFzc2VtYmxlICR7 YXNtX2ZpbGV9IHsKLSsgICAgZGVjbGFyZV9sYWJlbHMgTAotKwotKyAgICAjIEZpbmQgc3RhcnQs IGVuZCwgYW5kIGxlbmd0aCBvZiBmdW5jdGlvbnMgZm9vIGFuZCBiYXIuCi0rICAgICMgVGhlc2Ug Y2FsbHMgdG8gZ2V0X2Z1bmNfaW5mbyB3aWxsIGNyZWF0ZSBhbmQgc2V0IHZhcmlhYmxlcwotKyAg ICAjIGZvb19zdGFydCwgYmFyX3N0YXJ0LCBmb29fZW5kLCBiYXJfZW5kLCBmb29fbGVuLCBhbmQK LSsgICAgIyBiYXJfbGVuLgotKyAgICAjCi0rICAgICMgSW4gb3JkZXIgdG8gZ2V0IHRoZSByaWdo dCBhbnN3ZXJzLCBnZXRfZnVuY19pbmZvIChhbmQsCi0rICAgICMgdW5kZXJuZWF0aCwgZnVuY3Rp b25fcmFuZ2UpIHNob3VsZCB1c2UgdGhlIHNhbWUgY29tcGlsZXIgZmxhZ3MKLSsgICAgIyBhcyB0 aG9zZSB1c2VkIHRvIG1ha2UgYSBzaGFyZWQgb2JqZWN0LiAgRm9yIGFueSB0YXJnZXRzIHRoYXQg Z2V0Ci0rICAgICMgdGhpcyBmYXIsIC1mcGljIGlzIHByb2JhYmx5IGNvcnJlY3QuCi0rICAgICMK LSsgICAgIyBBbHNvLCBpdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBJU19TSEFSRURMSUIgaXMgTk9U IGRlZmluZWQgYXMgb25lCi0rICAgICMgb2YgdGhlIGFkZGl0aW9uYWwgZmxhZ3MuICBOb3QgZGVm aW5pbmcgSVNfU0hBUkVETElCIHdpbGwgY2F1c2UgYQotKyAgICAjIG1haW4oKSB0byBiZSBkZWZp bmVkIGZvciB0aGUgY29tcGlsYXRpb24gb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rICAgICMgc291 cmNlIGZpbGUgd2hpY2ggaGFwcGVucyBhcyBhIHJlc3VsdCBvZiB1c2luZyBnZXRfZnVuY19pbmZv OwotKyAgICAjIHRoaXMgaXMgY3VycmVudGx5IHJlcXVpcmVkIGluIG9yZGVyIHRvIHRoaXMgZmFj aWxpdHkuCi0rICAgIHNldCBmbGFncyB7YWRkaXRpb25hbF9mbGFncz0tZnBpYyBkZWJ1Z30KLSsg ICAgZ2V0X2Z1bmNfaW5mbyBmb28gJGZsYWdzCi0rICAgIGdldF9mdW5jX2luZm8gYmFyICRmbGFn cwotKwotKyAgICBjdSB7fSB7Ci0rCURXX1RBR19jb21waWxlX3VuaXQgewotKwkgICAge0RXX0FU X2xhbmd1YWdlIEBEV19MQU5HX0NfcGx1c19wbHVzfQotKwkgICAge25hbWUgJHs6OnNyY2ZpbGV9 fQotKwkgICAge3N0bXRfbGlzdCAkTCBEV19GT1JNX3NlY19vZmZzZXR9Ci0rICAgICAgICB9IHsK LSsJICAgIGRlY2xhcmVfbGFiZWxzIGludF9sYWJlbCBjbGFzc19BX2xhYmVsIGNsYXNzX0JfbGFi ZWwgXAotKwkgICAgICAgICAgICAgICAgICAgQl9wdHJfbGFiZWwKLSsKLSsJICAgIGludF9sYWJl bDogRFdfVEFHX2Jhc2VfdHlwZSB7Ci0rCQl7RFdfQVRfYnl0ZV9zaXplICR7Ojpsb25nX3NpemV9 IERXX0ZPUk1fdWRhdGF9Ci0rCQl7RFdfQVRfZW5jb2RpbmcgQERXX0FURV9zaWduZWR9Ci0rCQl7 RFdfQVRfbmFtZSAiaW50In0KLSsJICAgIH0KLSsKLSsJICAgIGNsYXNzX0FfbGFiZWw6IERXX1RB R19jbGFzc190eXBlIHsKLSsJCXtEV19BVF9uYW1lICJBIn0KLSsJCXtEV19BVF9ieXRlX3NpemUg JHs6OnN0cnVjdF9BX3NpemV9IERXX0ZPUk1fc2RhdGF9Ci0rCSAgICB9IHsKLSsJCURXX1RBR19t ZW1iZXIgewotKwkJICAgIHtEV19BVF9uYW1lICJhIn0KLSsJCSAgICB7RFdfQVRfdHlwZSA6JGlu dF9sYWJlbH0KLSsJCSAgICB7RFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gJHs6OkFfYX0gRFdf Rk9STV91ZGF0YX0KLSsJCX0KLSsJCURXX1RBR19tZW1iZXIgewotKwkJICAgIHtEV19BVF9uYW1l ICJ4In0KLSsJCSAgICB7RFdfQVRfdHlwZSA6JGludF9sYWJlbH0KLSsJCSAgICB7RFdfQVRfZGF0 YV9tZW1iZXJfbG9jYXRpb24gJHs6OkFfeH0gRFdfRk9STV91ZGF0YX0KLSsJCX0KLSsJICAgIH0K LSsKLSsJICAgIGNsYXNzX0JfbGFiZWw6IERXX1RBR19jbGFzc190eXBlIHsKLSsJCXtEV19BVF9u YW1lICJCIn0KLSsJCXtEV19BVF9ieXRlX3NpemUgJHs6OnN0cnVjdF9CX3NpemV9IERXX0ZPUk1f c2RhdGF9Ci0rCSAgICB9IHsKLSsJCSMgV2hpbGUgdGhlcmUgYXJlIGVhc2llciAvIGJldHRlciB3 YXlzIHRvIHNwZWNpZnkgYW4KLSsJCSMgb2Zmc2V0IHVzZWQgYnkgRFdfQVRfZGF0YV9tZW1iZXJf bG9jYXRpb24gdGhhbiB0aGF0Ci0rCQkjIHVzZWQgYmVsb3csIHdlIG5lZWQgYSBsb2NhdGlvbiBl eHByZXNzaW9uIGhlcmUgaW4KLSsJCSMgb3JkZXIgdG8gcmVwcm9kdWNlIHRoZSBidWcuICBNb3Jl b3ZlciwgdGhpcyBsb2NhdGlvbgotKwkJIyBleHByZXNzaW9uIG5lZWRzIHRvIHVzZSBvcGNvZGVz IHRoYXQgYXJlbid0IGhhbmRsZWQKLSsJCSMgYnkgZGVjb2RlX2xvY2Rlc2MoKSBpbiBkd2FyZjIv cmVhZC5jOyBpZiB3ZSB1c2UKLSsJCSMgb3Bjb2RlcyB0aGF0IF9hcmVfIGhhbmRsZWQgYnkgdGhh dCBmdW5jdGlvbiwgdGhlCi0rCQkjIGxvY2F0aW9uIGV4cHJlc3Npb24gd2lsbCBiZSBjb252ZXJ0 ZWQgaW50byBhIHNpbXBsZQotKwkJIyBvZmZzZXQgLSB3aGljaCB3aWxsIHRoZW4gKGFnYWluKSBu b3QgcmVwcm9kdWNlIHRoZQotKwkJIyBidWcuICBBdCB0aGUgdGltZSB0aGF0IHRoaXMgdGVzdCB3 YXMgd3JpdHRlbiwKLSsJCSMgbmVpdGhlciBEV19PUF9waWNrIG5vciBEV19PUF9kcm9wIHdlcmUg YmVpbmcgaGFuZGxlZAotKwkJIyBieSBkZWNvZGVfbG9jZGVzYygpOyB0aGlzIGlzIHdoeSB0aG9z ZSBvcGNvZGVzIHdlcmUKLSsJCSMgY2hvc2VuLgotKwkJRFdfVEFHX2luaGVyaXRhbmNlIHsKLSsJ CSAgICB7RFdfQVRfdHlwZSA6JGNsYXNzX0FfbGFiZWx9Ci0rCQkgICAge0RXX0FUX2RhdGFfbWVt YmVyX2xvY2F0aW9uIHsKLSsJCQlEV19PUF9jb25zdHUgJHs6OkJfYX0KLSsJCQlEV19PUF9wbHVz Ci0rCQkJRFdfT1BfcGljayAwCi0rCQkJRFdfT1BfZHJvcH0gU1BFQ0lBTF9leHByfQotKwkJICAg IHtEV19BVF9hY2Nlc3NpYmlsaXR5IDEgRFdfRk9STV9kYXRhMX0KLSsJCX0KLSsJCURXX1RBR19t ZW1iZXIgewotKwkJICAgIHtEV19BVF9uYW1lICJiIn0KLSsJCSAgICB7RFdfQVRfdHlwZSA6JGlu dF9sYWJlbH0KLSsJCSAgICB7RFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gJHs6OkJfYn0gRFdf Rk9STV91ZGF0YX0KLSsJCX0KLSsJCURXX1RBR19tZW1iZXIgewotKwkJICAgIHtEV19BVF9uYW1l ICJ4MiJ9Ci0rCQkgICAge0RXX0FUX3R5cGUgOiRpbnRfbGFiZWx9Ci0rCQkgICAge0RXX0FUX2Rh dGFfbWVtYmVyX2xvY2F0aW9uICR7OjpCX3gyfSBEV19GT1JNX3VkYXRhfQotKwkJfQotKwkgICAg fQotKwotKwkgICAgQl9wdHJfbGFiZWw6IERXX1RBR19wb2ludGVyX3R5cGUgewotKwkJe0RXX0FU X3R5cGUgOiRjbGFzc19CX2xhYmVsfQotKwkJe0RXX0FUX2J5dGVfc2l6ZSAkezo6YWRkcl9zaXpl fSBEV19GT1JNX3NkYXRhfQotKwkgICAgfQotKwotKwkgICAgRFdfVEFHX3ZhcmlhYmxlIHsKLSsJ CXtEV19BVF9uYW1lICJnX0EifQotKwkJe0RXX0FUX3R5cGUgOiRjbGFzc19BX2xhYmVsfQotKwkJ e0RXX0FUX2V4dGVybmFsIDEgZmxhZ30KLSsJCXtEV19BVF9sb2NhdGlvbiB7RFdfT1BfYWRkciBb Z2RiX3RhcmdldF9zeW1ib2wgImdfQSJdfSBcCi0rCQkgICAgICAgICAgICAgICAgIFNQRUNJQUxf ZXhwcn0KLSsJICAgIH0KLSsKLSsJICAgIERXX1RBR192YXJpYWJsZSB7Ci0rCQl7RFdfQVRfbmFt ZSAiZ19CIn0KLSsJCXtEV19BVF90eXBlIDokY2xhc3NfQl9sYWJlbH0KLSsJCXtEV19BVF9leHRl cm5hbCAxIGZsYWd9Ci0rCQl7RFdfQVRfbG9jYXRpb24ge0RXX09QX2FkZHIgW2dkYl90YXJnZXRf c3ltYm9sICJnX0IiXX0gXAotKwkJICAgICAgICAgICAgICAgICBTUEVDSUFMX2V4cHJ9Ci0rCSAg ICB9Ci0rCi0rCSAgICAjIFdlIGNhbid0IHVzZSBNQUNST19BVCBmb3IgdGhlIGRlZmluaXRpb25z IG9mIGZvbyBhbmQgYmFyCi0rCSAgICAjIGJlY2F1c2UgaXQgZG9lc24ndCBwcm92aWRlIGEgd2F5 IHRvIHBhc3MgdGhlIGFwcHJvcHJpYXRlCi0rCSAgICAjIGZsYWdzLiAgVGhlcmVmb3JlLCB3ZSBs aXN0IHRoZSBuYW1lLCBsb3dfcGMsIGFuZCBoaWdoX3BjCi0rCSAgICAjIGV4cGxpY2l0bHkuCi0r CSAgICBEV19UQUdfc3VicHJvZ3JhbSB7Ci0rCQl7RFdfQVRfbmFtZSBmb299Ci0rCQl7RFdfQVRf bG93X3BjICRmb29fc3RhcnQgRFdfRk9STV9hZGRyfQotKwkJe0RXX0FUX2hpZ2hfcGMgJGZvb19l bmQgRFdfRk9STV9hZGRyfQotKwkJe0RXX0FUX3R5cGUgOiR7Ql9wdHJfbGFiZWx9fQotKwkJe0RX X0FUX2V4dGVybmFsIDEgZmxhZ30KLSsJICAgIH0KLSsKLSsJICAgIERXX1RBR19zdWJwcm9ncmFt IHsKLSsJCXtEV19BVF9uYW1lIGJhcn0KLSsJCXtEV19BVF9sb3dfcGMgJGJhcl9zdGFydCBEV19G T1JNX2FkZHJ9Ci0rCQl7RFdfQVRfaGlnaF9wYyAkYmFyX2VuZCBEV19GT1JNX2FkZHJ9Ci0rCQl7 RFdfQVRfdHlwZSA6JHtCX3B0cl9sYWJlbH19Ci0rCQl7RFdfQVRfZXh0ZXJuYWwgMSBmbGFnfQot KwkgICAgfSB7Ci0rCQlEV19UQUdfZm9ybWFsX3BhcmFtZXRlciB7Ci0rCQkgICAge0RXX0FUX25h bWUgdn0KLSsJCSAgICB7RFdfQVRfdHlwZSA6JHtCX3B0cl9sYWJlbH19Ci0rCQl9Ci0rCSAgICB9 Ci0rCX0KLSsgICAgfQotKwotKyAgICBsaW5lcyB7dmVyc2lvbiAyfSBMIHsKLSsJaW5jbHVkZV9k aXIgIiR7OjpzcmNkaXJ9LyR7OjpzdWJkaXJ9IgotKwlmaWxlX25hbWUgIiR7OjpzcmNmaWxlfSIg MQotKwotKwkjIEdlbmVyYXRlIGEgbGluZSB0YWJsZSBwcm9ncmFtLgotKwlwcm9ncmFtIHsKLSsJ ICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgJGZvb19zdGFydH0KLSsJICAgIHtsaW5lIFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJmb28gcHJvbG9ndWUiXX0KLSsJICAgIHtEV19MTlNfY29weX0KLSsJICAg IHtEV19MTkVfc2V0X2FkZHJlc3MgZm9vX2xhYmVsfQotKwkgICAge2xpbmUgW2dkYl9nZXRfbGlu ZV9udW1iZXIgImZvbyByZXR1cm4iXX0KLSsJICAgIHtEV19MTlNfY29weX0KLSsJICAgIHtsaW5l IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmb28gZW5kIl19Ci0rCSAgICB7RFdfTE5TX2NvcHl9Ci0r CSAgICB7RFdfTE5FX3NldF9hZGRyZXNzICRmb29fZW5kfQotKwkgICAge0RXX0xOU19hZHZhbmNl X2xpbmUgMX0KLSsJICAgIHtEV19MTlNfY29weX0KLSsJICAgIHtEV19MTkVfZW5kX3NlcXVlbmNl fQotKwotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyAkYmFyX3N0YXJ0fQotKwkgICAge2xpbmUg W2dkYl9nZXRfbGluZV9udW1iZXIgImJhciBwcm9sb2d1ZSJdfQotKwkgICAge0RXX0xOU19jb3B5 fQotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBiYXJfbGFiZWx9Ci0rCSAgICB7bGluZSBbZ2Ri X2dldF9saW5lX251bWJlciAiYmFyIHJldHVybiJdfQotKwkgICAge0RXX0xOU19jb3B5fQotKwkg ICAge2xpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJhciBlbmQiXX0KLSsJICAgIHtEV19MTlNf Y29weX0KLSsJICAgIHtEV19MTkVfc2V0X2FkZHJlc3MgJGJhcl9lbmR9Ci0rCSAgICB7RFdfTE5T X2FkdmFuY2VfbGluZSAxfQotKwkgICAge0RXX0xOU19jb3B5fQotKwkgICAge0RXX0xORV9lbmRf c2VxdWVuY2V9Ci0rCX0KLSsgICAgfQotK30KLSsKLSsjIENvbXBpbGUgdGhlIHNoYXJlZCBvYmpl Y3QgYWdhaW4sIGJ1dCB0aGlzIHRpbWUgaW5jbHVkZSAvIHVzZSB0aGUKLSsjIERXQVJGIGluZm8g dGhhdCB3ZSd2ZSBjcmVhdGVkIGFib3ZlLiAgTm90ZSB0aGF0IChhZ2FpbikKLSsjIC1ESVNfU0hB UkVETElCIGlzIHVzZWQgdG8gcHJldmVudCBpbmNsdXNpb24gb2YgbWFpbigpIGluIHRoZSBzaGFy ZWQKLSsjIG9iamVjdC4gIEFsc28gbm90ZSB0aGUgdXNlIG9mIHRoZSAibm9kZWJ1ZyIgb3B0aW9u LiAgQW55IGRlYnVnZ2luZwotKyMgaW5mb3JtYXRpb24gdGhhdCB3ZSBuZWVkIHdpbGwgYmUgcHJv dmlkZWQgYnkgdGhlIERXQVJGIGluZm8gY3JlYXRlZAotKyMgYWJvdmUuCi0raWYge1tnZGJfY29t cGlsZV9zaGxpYiBbbGlzdCAkbGlic3JjICRhc21fZmlsZV0gJGxpYl9zbyBcCi0rICAgICAgICAg ICAgICAgICAgICAgICB7YWRkaXRpb25hbF9mbGFncz0tRElTX1NIQVJFRExJQiBub2RlYnVnfV0g IT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgImZhaWxlZCB0byBjb21waWxlIHNoYXJlZCBsaWJyYXJ5 IgotKyAgICByZXR1cm4KLSt9Ci0rCi0rIyBDb21waWxlIHRoZSBtYWluIHByb2dyYW0gZm9yIHVz ZSB3aXRoIHRoZSBzaGFyZWQgb2JqZWN0LgotK2lmIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWls ZWQgdG8gcHJlcGFyZSIgJHt0ZXN0ZmlsZX0gXAotKyAgICAgICAgICAgICAgICAgICAgICAgICR7 OjpzcmNmaWxlMn0gW2xpc3QgZGVidWcgc2hsaWI9JGxpYl9zb11dIHsKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotKyMgRG8gd2hhdGV2ZXIgaXMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZSBzaGFyZWQgbGlicmFyeSBpcwotKyMgbG9hZGVkIGZvciByZW1vdGUgdGFyZ2V0cy4KLStnZGJf bG9hZF9zaGxpYiAke2xpYl9zb30KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBm YWlsICJjYW4ndCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuCi0rfQotKwotKyMgU3RlcCBpbnRv IGZvbyBzbyB0aGF0IHdlIGNhbiBmaW5pc2ggb3V0IG9mIGl0LgotK2dkYl90ZXN0ICJzdGVwIiAi Zm9vIC4uIGF0IC4qIGZvbyBlbmQuKiIgInN0ZXAgaW50byBmb28iCi0rCi0rIyBGaW5pc2hpbmcg b3V0IG9mIGZvbyB3aWxsIGNyZWF0ZSBhIHZhbHVlIHRoYXQgd2lsbCBsYXRlciBuZWVkIHRvCi0r IyBiZSBwcmVzZXJ2ZWQgd2hlbiByZXN0YXJ0aW5nIHRoZSBwcm9ncmFtLgotK2dkYl90ZXN0ICJm aW5pc2giICI9IFxcKGNsYXNzIEIgXFwqXFwpICR7OjpoZXh9IC4qIiAiZmluaXNoIG91dCBvZiBm b28iCi0rCi0rIyBEZXJlZmVyZW5jaW5nIGFuZCBwcmludGluZyB0aGUgcmV0dXJuIHZhbHVlIGlz bid0IG5lY2Vzc2FyeQotKyMgZm9yIHJlcHJvZHVjaW5nIHRoZSBidWcsIGJ1dCB3ZSBzaG91bGQg bWFrZSBzdXJlIHRoYXQgdGhlCi0rIyByZXR1cm4gdmFsdWUgaXMgd2hhdCB3ZSBleHBlY3QgaXQg dG8gYmUuCi0rZ2RiX3Rlc3QgInAgKiQiIHsgPSB7PEE+ID0ge2EgPSA4LCB4ID0gOX0sIGIgPSAx MCwgeDIgPSAxMX19IFwKLSsgICAgICAgICAiZGVyZWZlcmVuY2UgcmV0dXJuIHZhbHVlIgotKwot KyMgVGhlIG9yaWdpbmFsIFBSMjgwMzAgcmVwcm9kdWNlciBzdGVwcGVkIGJhY2sgaW50byB0aGUg c2hhcmVkIG9iamVjdCwKLSsjIHNvIHdlJ2xsIGRvIHRoZSBzYW1lIGhlcmU6Ci0rZ2RiX3Rlc3Qg InN0ZXAiICJiYXIgXFwoLioiICJzdGVwIGludG8gYmFyIgotKwotKyMgV2UgZG9uJ3Qgd2FudCBh IGNsZWFuIHJlc3RhcnQgaGVyZSBzaW5jZSB0aGF0IHdpbGwgYmUgdG9vIGNsZWFuLgotKyMgVGhl IG9yaWdpbmFsIHJlcHJvZHVjZXIgZm9yIFBSMjgwMzAgc2V0IGEgYnJlYWtwb2ludCBpbiB0aGUg c2hhcmVkCi0rIyBsaWJyYXJ5IGFuZCB0aGVuIHJlc3RhcnRlZCB2aWEgInJ1biIuICBUaGUgY29t bWFuZCBiZWxvdyBkb2VzIHJvdWdobHkKLSsjIHRoZSBzYW1lIHRoaW5nLiAgSXQncyBhdCB0aGlz IHN0ZXAgdGhhdCBhbiBpbnRlcm5hbCBlcnJvciB3b3VsZAotKyMgb2NjdXIgZm9yIFBSMjgwMzAu ICBUaGUgIm1lc3NhZ2UiIGFyZ3VtZW50IHRlbGxzIHJ1bnRvIHRvIHR1cm4gb24KLSsjIHRoZSBw cmludGluZyBvZiBQQVNTZXMgd2hpbGUgcnVudG8gaXMgZG9pbmcgaXRzIGpvYi4KLStydW50byAi YmFyIiBtZXNzYWdlCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2xvY2V4 cHItZGF0YS1tZW1iZXItbG9jYXRpb24uaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9sb2Nl eHByLWRhdGEtbWVtYmVyLWxvY2F0aW9uLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJl ci1sb2NhdGlvbi5oCi1AQCAtMCwwICsxLDMwIEBACi0rLyogQ29weXJpZ2h0IChDKSAyMDIxIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0r dHlwZWRlZiBzdHJ1Y3QgQSB7Ci0rICAgIGxvbmcgYTsKLSsgICAgbG9uZyB4OwotK30gQTsKLSsK LSt0eXBlZGVmIHN0cnVjdCBCIHsKLSsgICAgQSBhOwotKyAgICBsb25nIGI7Ci0rICAgIGxvbmcg eDI7Ci0rfSBCOwotKwotK2V4dGVybiBCICpmb28gKCk7Ci0rZXh0ZXJuIEIgKmJhciAoQiAqdik7 CgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCAzNmViNDA5Li5lMTVlNDZj IDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjksMTUgKzI5LDE1IEBA CiBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogCiAjIEZyZWV6ZSBpdCB3aGVuIEdEQiBnZXRzIGJy YW5jaGVkCi0lZ2xvYmFsIHNuYXBzcmMgICAgMjAyMDAyMDgKKyVnbG9iYWwgc25hcHNyYyAgICAy MDIyMDUwMQogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGludG8g Z251bGliLyAuCiAlZ2xvYmFsIHNuYXBnbnVsaWIgMjAyMTAxMDUKICVnbG9iYWwgdGFybmFtZSBn ZGItJXt2ZXJzaW9ufQotVmVyc2lvbjogMTEuMgorVmVyc2lvbjogMTIuMQogCiAjIFRoZSByZWxl YXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBh dCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkg cnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDMl ez9kaXN0fQorUmVsZWFzZTogMSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMr IHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFu ZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBMR1BMdjMrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4g YW5kIEdGREwKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhlIGZpbGUg bGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHRvdWNoIC1y ICV7U09VUkNFNH0gJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vZ2RiaW5pdAogZm9yIGkg aW4gYGZpbmQgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL3B5dGhvbi9nZGIgLW5hbWUg IioucHkiYAogZG8KICAgIyBGaWxlcyBjb3VsZCBiZSBhbHNvIHBhdGNoZWQgZ2V0dGluZyB0aGUg Y3VycmVudCB0aW1lLgotICB0b3VjaCAtciAkUlBNX0JVSUxEX0RJUi8le2dkYl9zcmN9L2dkYi9D aGFuZ2VMb2cgJGkKKyAgdG91Y2ggLXIgJFJQTV9CVUlMRF9ESVIvJXtnZGJfc3JjfS9nZGIvdmVy c2lvbi5pbiAkaQogZG9uZQogCiAlaWYgMCV7P19lbmFibGVfZGVidWdfcGFja2FnZXM6MX0gJiYg MCV7IT9fd2l0aG91dF9weXRob246MX0KQEAgLTk4MCw3ICs5ODAsNyBAQCBjcCAtYSAkUlBNX0JV SUxEX0RJUi8le2dkYl9zcmN9LyV7bGlic3RkY3h4cHl0aG9ufS9saWJzdGRjeHgJXAogJWVuZGlm ICMgMCV7P3JoZWw6MX0gJiYgMCV7P3JoZWx9IDw9IDcKIGZvciBpIGluIGBmaW5kICRSUE1fQlVJ TERfUk9PVCV7X2RhdGFkaXJ9L2dkYiAtbmFtZSAiKi5weSJgOyBkbwogICAjIEZpbGVzIGFyZSBp bnN0YWxsZWQgYnkgaW5zdGFsbCgxKSBub3QgcHJlc2VydmluZyB0aGUgdGltZXN0YW1wcy4KLSAg dG91Y2ggLXIgJFJQTV9CVUlMRF9ESVIvJXtnZGJfc3JjfS9nZGIvQ2hhbmdlTG9nICRpCisgIHRv dWNoIC1yICRSUE1fQlVJTERfRElSLyV7Z2RiX3NyY30vZ2RiL3ZlcnNpb24uaW4gJGkKIGRvbmUK ICVlbmRpZiAjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9CiAKQEAgLTEwMjYsNiArMTAyNiw3IEBA IGxuIC1zIGdzdGFjayAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3BzdGFjawogIyBEb2N1bWVu dGF0aW9uIG9ubHkgZm9yIGRldmVsb3BtZW50Lgogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfaW5m b2Rpcn0vZ2RiaW50Kgogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0vc3RhYnMqCity bSAtZiAkUlBNX0JVSUxEX1JPT1Qle19pbmZvZGlyfS9jdGYtc3BlYyoKIAogIyBEZWxldGUgdGhp cyB0b28gYmVjYXVzZSB0aGUgZGlyIGZpbGUgd2lsbCBiZSB1cGRhdGVkIGF0IHJwbSBpbnN0YWxs IHRpbWUuCiAjIFdlIGRvbid0IHdhbnQgYSBnZGIgc3BlY2lmaWMgb25lIG92ZXJ3cml0aW5nIHRo ZSBzeXN0ZW0gd2lkZSBvbmUuCkBAIC0xMTQ5LDYgKzExNTAsMTIgQEAgZmkKICVlbmRpZgogCiAl Y2hhbmdlbG9nCisqIFRodSBNYXkgMTIgMjAyMiBLZXZpbiBCdWV0dG5lciAtIDEyLjEtMQorLSBS ZWJhc2UgdG8gRlNGIEdEQiAxMi4xLgorLSBVcGRhdGUgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5w YXRjaC4KKy0gVXBkYXRlIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoLgorLSBEcm9w cGVkIGJhY2twb3J0ZWQgcGF0Y2hlcyBmcm9tIEdEQiAxMS4xIGFuZCAxMS4yLgorCiAqIFdlZCBN YXIgMzAgMjAyMiBLZXZpbiBCdWV0dG5lciAtIDExLjItMwogLSBCYWNrcG9ydCB1cHN0cmVhbSBw YXRjaCB3aGljaCByZW1vdmVzIHNpemVzIGZyb20gZGVidWdpbmZvZCBkb3dubG9hZAogICBtZXNz YWdlcyB3aGVuIHRoZSBzaXplIGlzIG5vdCBhdmFpbGFibGUgKFJIQlogMjA2ODI4MCwgQWFyb24g TWVyZXkpLgoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDI0MDhlMjkuLmEw N2RkNWUgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwzICsxLDMgQEAK IFNIQTUxMiAoZ2RiLWxpYnN0ZGMrKy12My1weXRob24tOC4xLjEtMjAxODA2MjYudGFyLnh6KSA9 IGE4YjFjNTRkZDM0OGNmZWIzN2RhNzNmOTY4NzQyODk2YmUzZGQxM2E0MjE1ZjhkODUxOTg3MGMy YWJlYTkxNWY1MTc2YzNmYTY5ODlkZGQxMGYyMDAyMGExNmYwZmFiMjBjYmFlNjhlZThkNThhODIy MzRkODc3ODAyMzUyMGY4CiBTSEE1MTIgKHYyLjAuNS50YXIuZ3opID0gMmU3YWMyYWVkZTg0Njcx YjE1NTk3ZDljNTZkYmUwNzdhODEzNTdiYmY0NGI2Njg0ODAyNTkyMjQ2ZmI3NzI5YjRhNTc0MzIz OGRkZjAyZjZlYTE0M2I0ZDI5ODcyZjU4MTQwODEzNWY5YzFlYTFjY2M5OWRhYjkwNTkxNmQ5OGQK LVNIQTUxMiAoZ2RiLTExLjIudGFyLnh6KSA9IDA3ZTkwMjY0MjM0MzgwNDliMTFmNGY3ODRkNTc0 MDFlY2U0ZTk0MDU3MGY2MTNiZDY5NThiMzcxNGZlN2ZiYzJjMDQ4NDcwYmNjZTNlN2Q3ZDlmOTMz MzFjZGYzODgxZDMwZGNjOTY0Y2IxMTNhMDcxMTQzYTAyYjI4ZTViMTI3CitTSEE1MTIgKGdkYi0x Mi4xLnRhci54eikgPSA0MjU1NjhkMmU4NDY3MjE3N2QwZmI4N2IxYWQ3ZGFhZmRkZTA5NzY0OGQ2 MDVlMzBjZjA2NTY5NzBmNjZhZGM2YTgyY2EyZDgzMzc1ZWE0YmU1ODNlOTY4M2EzNDBlNWJmZGY1 ODE5NjY4ZGRmNjY3MjgyMDAxNDFhZTUwZmYyZAo=