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: Sergio Durigan Junior To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebuild due to new libipt release. Date: Thu, 23 Jul 2026 18:33:33 GMT Message-ID: <178483161366.1.16464352229773560570.rpms-gdb-76ddc56b6d88@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 76ddc56b6d88fe6d25622d1c4937491491fa1dc0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNzZkZGM1NmI2ZDg4ZmU2ZDI1NjIyZDFjNDkzNzQ5MTQ5MWZhMWRjMAog ICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhh dC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDgtMDhUMTU6MDQ6NDktMDQ6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzIwODgvLTIwMzggaW4gMTMgZmlsZShzKQogICAgICAgICAgICBV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzc2ZGRjNTZi NmQ4OGZlNmQyNTYyMmQxYzQ5Mzc0OTE0OTFmYTFkYzA/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAg ICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmVidWlsZCBkdWUgdG8gbmV3IGxpYmlwdCByZWxl YXNlLgpBZGp1c3QgYnVuZGxlZCBsaWJpcHQ7IHJlbW92ZSB1bm5lY2Vzc2FyeSBwYXRjaC4KU3lu YyBJUHY2IHBhdGNoIHdpdGggRi0yOCBHREIuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUg Yi8uZ2l0aWdub3JlCmluZGV4IDBhYmU1OGEuLjk0OWMyMDQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25v cmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDMgQEAKIC9nZGItbGlic3RkYysrLXYzLXB5 dGhvbi04LjEuMS0yMDE4MDYyNi50YXIueHoKLS92MS42LjEudGFyLmd6CiAvZ2RiLTguMS45MC4y MDE4MDcyNy50YXIueHoKKy92Mi4wLnRhci5negoKZGlmZiAtLWdpdCBhL19nZGIuc3BlYy5QYXRj aC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKaW5kZXggOGJhMGU0OC4uOTQ2YzRh ZiAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKKysrIGIvX2dkYi5zcGVjLlBh dGNoLmluY2x1ZGUKQEAgLTUwNSw4ICs1MDUsMTEgQEAgUGF0Y2gxMjA6IGdkYi12bGEtaW50ZWwt Zml4LXByaW50LWNoYXItYXJyYXkucGF0Y2gKIFBhdGNoMTIxOiBnZGItcmhiejE1NTMxMDQtczM5 MHgtYXJjaDEyLXRlc3QucGF0Y2gKIAogIyBJbXBsZW1lbnQgSVB2NiBzdXBwb3J0IGZvciBHREIv Z2Ric2VydmVyIChSSCBCWiA4ODE4NDksIFNlcmdpbyBEdXJpZ2FuIEp1bmlvcikuCi1QYXRjaDEy MjogZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2YyLnBhdGNoCitQYXRjaDEyMjogZ2RiLXJoYno4ODE4 NDktaXB2Ni0xb2YzLnBhdGNoCiAKLSMgSW1wbGVtZW50IElQdjYgc3VwcG9ydCBmb3IgR0RCL2dk YnNlcnZlciAoUkggQlogODgxODQ5LCBTZXJnaW8gRHVyaWdhbiBKdW5pb3IpLgotUGF0Y2gxMjM6 IGdkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMi5wYXRjaAorCitQYXRjaDEyMzogZ2RiLXJoYno4ODE4 NDktaXB2Ni0yb2YzLnBhdGNoCisKKworUGF0Y2gxMjQ6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtM29m My5wYXRjaAogCgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNw ZWMucGF0Y2guaW5jbHVkZQppbmRleCAyN2EzOWI3Li45N2YxMmM0IDEwMDY0NAotLS0gYS9fZ2Ri LnNwZWMucGF0Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQpAQCAtMTIx LDMgKzEyMSw0IEBACiAlcGF0Y2gxMjEgLXAxCiAlcGF0Y2gxMjIgLXAxCiAlcGF0Y2gxMjMgLXAx CislcGF0Y2gxMjQgLXAxCgpkaWZmIC0tZ2l0IGEvX3BhdGNoX29yZGVyIGIvX3BhdGNoX29yZGVy CmluZGV4IDExYjQxMzEuLmIxMDUzNmMgMTAwNjQ0Ci0tLSBhL19wYXRjaF9vcmRlcgorKysgYi9f cGF0Y2hfb3JkZXIKQEAgLTExOSw1ICsxMTksNiBAQCBnZGItdGVzdHN1aXRlLXJlYWRsaW5lNjMt c2lnaW50LnBhdGNoCiBnZGItYXJjaGVyLnBhdGNoCiBnZGItdmxhLWludGVsLWZpeC1wcmludC1j aGFyLWFycmF5LnBhdGNoCiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEyLXRlc3QucGF0Y2gK LWdkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMi5wYXRjaAotZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2Yy LnBhdGNoCitnZGItcmhiejg4MTg0OS1pcHY2LTFvZjMucGF0Y2gKK2dkYi1yaGJ6ODgxODQ5LWlw djYtMm9mMy5wYXRjaAorZ2RiLXJoYno4ODE4NDktaXB2Ni0zb2YzLnBhdGNoCgpkaWZmIC0tZ2l0 IGEvZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2YyLnBhdGNoIGIvZ2RiLXJoYno4ODE4NDktaXB2Ni0x b2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDUxMGM4Li4wMDAwMDAw Ci0tLSBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE5MzQgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLURh dGU6IEZyaSwgMTggTWF5IDIwMTggMDE6Mjk6MjQgLTA0MDAKLVN1YmplY3Q6IGdkYi1yaGJ6ODgx ODQ5LWlwdjYtMW9mMi5wYXRjaAotCi07OyBJbXBsZW1lbnQgSVB2NiBzdXBwb3J0IGZvciBHREIv Z2Ric2VydmVyIChSSCBCWiA4ODE4NDksIFNlcmdpbyBEdXJpZ2FuIEp1bmlvcikuCi0KLUltcGxl bWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2ZXIKLQotVGhpcyBwYXRjaCBpbXBsZW1l bnRzIElQdjYgc3VwcG9ydCBmb3IgYm90aCBHREIgYW5kIGdkYnNlcnZlci4gIEJhc2VkCi1vbiBt eSByZXNlYXJjaCwgaXQgaXMgdGhlIGZvdXJ0aCBhdHRlbXB0IHRvIGRvIHRoYXQgc2luY2UgMjAw Ni4gIFNpbmNlCi1JIHVzZWQgaWRlYXMgZnJvbSBhbGwgb2YgdGhlIHByZXZpb3VzIHBhdGNoZXMs IEkgYWxzbyBhZGRlZCB0aGVpcgotYXV0aG9ycydzIG5hbWVzIG9uIHRoZSBDaGFuZ2VMb2dzIGFz IGEgd2F5IHRvIHJlY29nbml6ZSB0aGVpcgotZWZmb3J0cy4gIEZvciByZWZlcmVuY2Ugc2FrZSwg eW91IGNhbiBmaW5kIHRoZSBwcmV2aW91cyBhdHRlbXB0cyBhdDoKLQotICBodHRwczovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDYtMDkvbXNnMDAxOTIuaHRtbAotCi0gIGh0dHBz Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNC0wMi9tc2cwMDI0OC5odG1sCi0K LSAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE2LTAyL21zZzAwMjI2 Lmh0bWwKLQotVGhlIGJhc2ljIGlkZWEgYmVoaW5kIHRoZSBwYXRjaCBpcyB0byBzdGFydCB1c2lu ZyB0aGUgbmV3Ci0nZ2V0YWRkcmluZm8nLydnZXRuYW1laW5mbycgY2FsbHMsIHdoaWNoIGFyZSBy ZXNwb25zaWJsZSBmb3IKLXRyYW5zbGF0aW5nIG5hbWVzIGFuZCBhZGRyZXNzZXMgaW4gYSBwcm90 b2NvbC1pbmRlcGVuZGVudCB3YXkuICBUaGlzCi1tZWFucyB0aGF0IGlmIHdlIGV2ZXIgaGF2ZSBh IG5ldyB2ZXJzaW9uIG9mIHRoZSBJUCBwcm90b2NvbCwgd2Ugd29uJ3QKLW5lZWQgdG8gY2hhbmdl IHRoZSBjb2RlIGFnYWluIChvciwgYXQgbGVhc3QsIHdvbid0IGhhdmUgdG8gY2hhbmdlIHRoZQot bWFqb3JpdHkgb2YgdGhlIGNvZGUpLgotCi1UaGUgZnVuY3Rpb24gJ2dldGFkZHJpbmZvJyByZXR1 cm5zIGEgbGlua2VkIGxpc3Qgb2YgcG9zc2libGUgYWRkcmVzc2VzCi10byBjb25uZWN0IHRvLiAg RGVhbGluZyB3aXRoIG11bHRpcGxlIGFkZHJlc3NlcyBwcm92ZWQgdG8gYmUgYSBoYXJkCi10YXNr IHdpdGggdGhlIGN1cnJlbnQgVENQIGF1dG8tcmV0cnkgbWVjaGFuaXNtIGltcGxlbWVudGVkIG9u Ci1zZXItdGNwOm5ldF9vcGVuLiAgRm9yIGV4YW1wbGUsIHdoZW4gZ2Ric2VydmVyIGxpc3RlbmVk IG9ubHkgb24gYW4KLUlQdjQgc29ja2V0OgotCi0gICQgLi9nZGJzZXJ2ZXIgLS1vbmNlIDEyNy4w LjAuMToxMjM0IC4vYS5vdXQKLQotYW5kIEdEQiB3YXMgaW5zdHJ1Y3RlZCB0byB0cnkgdG8gY29u bmVjdCB0byBib3RoIElQdjYgYW5kIElQdjQKLXNvY2tldHM6Ci0KLSAgJCAuL2dkYiAtZXggJ3Rh cmdldCBleHRlbmRlZC1yZW1vdGUgbG9jYWxob3N0OjEyMzQnIC4vYS5vdXQKLQotdGhlIHVzZXIg d291bGQgbm90aWNlIGEgc29tZXdoYXQgYmlnIGRlbGF5IGJlZm9yZSBHREIgd2FzIGFibGUgdG8K LWNvbm5lY3QgdG8gdGhlIElQdjQgc29ja2V0LiAgVGhpcyBoYXBwZW5lZCBiZWNhdXNlIEdEQiB3 YXMgdHJ5aW5nIHRvCi1jb25uZWN0IHRvIHRoZSBJUHY2IHNvY2tldCBmaXJzdCwgYW5kIGhhZCB0 byB3YWl0IHVudGlsIHRoZSBjb25uZWN0aW9uCi10aW1lZCBvdXQgYmVmb3JlIGl0IHRyaWVkIHRv IGNvbm5lY3QgdG8gdGhlIElQdjQgc29ja2V0LgotCi1Gb3IgdGhhdCByZWFzb24sIEkgaGFkIHRv IHJld3JpdGUgdGhlIG1haW4gbG9vcCBhbmQgaW1wbGVtZW50IGEgbmV3Ci1tZXRob2QgZm9yIGhh bmRsaW5nIG11bHRpcGxlIGNvbm5lY3Rpb25zLiAgQWZ0ZXIgc29tZSBkaXNjdXNzaW9uLAotUGVk cm8gYW5kIEkgYWdyZWVkIG9uIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgotCi0gIDEpIEZvciBl YWNoIGVudHJ5IHJldHVybmVkIGJ5ICdnZXRhZGRyaW5mbycsIHdlIHRyeSB0byBvcGVuIGEgc29j a2V0Ci0gIGFuZCBjb25uZWN0IHRvIGl0LgotCi0gIDIuYSkgSWYgd2UgaGF2ZSBhIHN1Y2Nlc3Nm dWwgJ2Nvbm5lY3QnLCB3ZSBqdXN0IHVzZSB0aGF0IGNvbm5lY3Rpb24uCi0KLSAgMi5iKSBJZiB3 ZSBkb24ndCBoYXZlIGEgc3VjY2Vzc2Z1bGwgJ2Nvbm5lY3QnLCBidXQgaWYgd2UndmUgZ290IGEK LSAgRUNPTk5SRUZVU0VEIChtZWFuaW5nIHRoZSB0aGUgY29ubmVjdGlvbiB3YXMgcmVmdXNlZCks IHdlIGtlZXAgdHJhY2sKLSAgb2YgdGhpcyBmYWN0IGJ5IHVzaW5nIGEgZmxhZy4KLQotICAyLmMp IElmIHdlIGRvbid0IGhhdmUgYSBzdWNjZXNzZnVsbCAnY29ubmVjdCcsIGJ1dCBpZiB3ZSd2ZSBn b3QgYQotICBFSU5QUk9HUkVTUyAobWVhbmluZyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGluIHBy b2dyZXNzKSwgd2UgcGVyZm9ybQotICBhICdzZWxlY3QnIGNhbGwgb24gdGhlIHNvY2tldCB1bnRp bCB3ZSBoYXZlIGEgcmVzdWx0IChlaXRoZXIgYQotICBzdWNjZXNzZnVsIGNvbm5lY3Rpb24sIG9y IGFuIGVycm9yIG9uIHRoZSBzb2NrZXQpLgotCi0gIDMpIElmIHRjcF9hdXRvX3JldHJ5IGlzIHRy dWUsIGFuZCB3ZSBoYXZlbid0IGdvdHRlbiBhIHN1Y2Nlc3NmdWwKLSAgY29ubmVjdGlvbiwgYW5k IGF0IGxlYXN0IG9uZSBvZiBvdXIgYXR0ZW1wdHMgZmFpbGVkIHdpdGgKLSAgRUNPTk5SRUZVU0VE LCB0aGVuIHdlIHdhaXQgYSBsaXR0bGUgYml0IChpLmUuLCBjYWxsCi0gICd3YWl0X2Zvcl9jb25u ZWN0JyksIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSB3YXMgYQotICB0aW1lb3V0L2ludGVycnVwdGlv biAoaW4gd2hpY2ggY2FzZSB3ZSBiYWlsIG91dCksIGFuZCB0aGVuIGdvIGJhY2sKLSAgdG8gKDEp LgotCi1BZnRlciBtdWx0aXBsZSB0ZXN0cywgSSB3YXMgYWJsZSB0byBjb25uZWN0IHdpdGhvdXQg ZGVsYXkgb24gdGhlCi1zY2VuYXJpbyBkZXNjcmliZWQgYWJvdmUsIGFuZCB3YXMgYWxzbyBhYmxl IHRvIGNvbm5lY3QgaW4gYWxsIG90aGVyCi10eXBlcyBvZiBzY2VuYXJpb3MuCi0KLUkgYWxzbyBp bXBsZW1lbnRlZCBzb21lIGhvc3RuYW1lIHBhcnNpbmcgZnVuY3Rpb25zIChhbG9uZyB3aXRoIHRo ZWlyCi1jb3JyZXNwb25kaW5nIHVuaXQgdGVzdHMpIHdoaWNoIGFyZSB1c2VkIHRvIGhlbHAgR0RC IGFuZCBnZGJzZXJ2ZXIgdG8KLXBhcnNlIGhvc3RuYW1lIHN0cmluZ3MgcHJvdmlkZWQgYnkgdGhl IHVzZXIuICBUaGVzZSBuZXcgZnVuY3Rpb25zIGFyZQotbGl2aW5nIGluc2lkZSBjb21tb24vbmV0 c3R1ZmYuW2NoXS4gIEkndmUgaGFkIHRvIGRvIHRoYXQgc2luY2UgSVB2NgotaW50cm9kdWNlcyBh IG5ldyBVUkwgc2NoZW1lLCB3aGljaCBkZWZpbmVzIHRoYXQgc3F1YXJlIGJyYWNrZXRzIGNhbiBi ZQotdXNlZCB0byBlbmNsb3NlIHRoZSBob3N0IHBhcnQgYW5kIGRpZmZlcmVudGlhdGUgaXQgZnJv bSB0aGUKLXBvcnQgKGUuZy4sICJbOjoxXToxMjM0IiBtZWFucyAiaG9zdCA6OjEsIHBvcnQgMTIz NCIpLiAgSSBzcGVudCBzb21lCi10aW1lIHRoaW5raW5nIGFib3V0IGEgcmVhc29uYWJsZSB3YXkg dG8gaW50ZXJwcmV0IHdoYXQgdGhlIHVzZXIgd2FudHMsCi1hbmQgSSBjYW1lIHVwIHdpdGggdGhl IGZvbGxvd2luZzoKLQotICAtIElmIHRoZSB1c2VyIGhhcyBwcm92aWRlZCBhIHByZWZpeCB0aGF0 IGRvZXNuJ3Qgc3BlY2lmeSB0aGUgcHJvdG9jb2wKLSAgICB2ZXJzaW9uIChpLmUuLCAidGNwOiIg b3IgInVkcDoiKSwgb3IgaWYgdGhlIHVzZXIgaGFzIG5vdCBwcm92aWRlZAotICAgIGFueSBwcmVm aXgsIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIChpLmUuLCBhc3N1bWUgQUZfVU5TUEVDIHdo ZW4KLSAgICBkZWFsaW5nIHdpdGggJ2dldGFkZHJpbmZvJykgKnVubGVzcyogdGhlIGhvc3Qgc3Rh cnRzIHdpdGggIlsiIChpbgotICAgIHdoaWNoIGNhc2UsIGFzc3VtZSBpdCdzIGFuIElQdjYgaG9z dCkuCi0KLSAgLSBJZiB0aGUgdXNlciBoYXMgcHJvdmlkZWQgYSBwcmVmaXggdGhhdCBkb2VzIHNw ZWNpZnkgdGhlIHByb3RvY29sCi0gICAgdmVyc2lvbiAoaS5lLiwgInRjcDQ6IiwgInRjcDY6Iiwg InVkcDQ6IiBvciAidWRwNjoiKSwgdGhlbiByZXNwZWN0Ci0gICAgdGhhdC4KLQotVGhpcyBtZXRo b2QgZG9lc24ndCBmb2xsb3cgc3RyaWN0bHkgd2hhdCBSRkMgMjczMiBwcm9wb3NlcyAodGhhdAot bGl0ZXJhbCBJUHY2IGFkZHJlc3NlcyBzaG91bGQgYmUgcHJvdmlkZWQgZW5jbG9zZWQgaW4gIlsi IGFuZCAiXSIpCi1iZWNhdXNlIElQdjYgYWRkcmVzc2VzIHN0aWxsIGNhbiBiZSBwcm92aWRlZCB3 aXRob3V0IHNxdWFyZSBicmFja2V0cwotaW4gb3VyIGNhc2UsIGJ1dCBzaW5jZSB3ZSBoYXZlIHBy ZWZpeGVzIHRvIHNwZWNpZnkgcHJvdG9jb2wgdmVyc2lvbnMgSQotdGhpbmsgdGhpcyBpcyBub3Qg YW4gaXNzdWUuCi0KLUFub3RoZXIgdGhpbmcgd29ydGggbWVudGlvbmluZyBpcyB0aGUgbmV3ICdH REJfVEVTVF9TT0NLRVRIT1NUJwotdGVzdGNhc2UgcGFyYW1ldGVyLCB3aGljaCBtYWtlcyBpdCBw b3NzaWJsZSB0byBzcGVjaWZ5IHRoZQotaG9zdG5hbWUgKHdpdGhvdXQgdGhlIHBvcnQpIHRvIGJl IHVzZWQgd2hlbiB0ZXN0aW5nIEdEQiBhbmQKLWdkYnNlcnZlci4gIEZvciBleGFtcGxlLCB0byBy dW4gSVB2NiB0ZXN0czoKLQotICAkIG1ha2UgY2hlY2stZ2RiIFJVTlRFU1RGTEFHUz0nR0RCX1RF U1RfU09DS0VUSE9TVD10Y3A2Ols6OjFdJwotCi1PciwgdG8gcnVuIElQdjQgdGVzdHM6Ci0KLSAg JCBtYWtlIGNoZWNrLWdkYiBSVU5URVNURkxBR1M9J0dEQl9URVNUX1NPQ0tFVEhPU1Q9dGNwNDox MjcuMC4wLjEnCi0KLVRoaXMgcmVxdWlyZWQgYSBmZXcgY2hhbmdlcyBvbiB0aGUgZ2Ric2VydmVy LWJhc2UuZXhwLCBhbmQgYWxzbyBhCi1taW5pbWFsIGFkanVzdG1lbnQgb24gZ2RiLnNlcnZlci9y dW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwLgotCi1GaW5hbGx5LCBJJ3ZlIGltcGxlbWVudGVk IGEgbmV3IHRlc3RjYXNlLAotZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHAsIHdoaWNoIGlz IHN1cHBvc2VkIHRvIHJ1biBvbiB0aGUgbmF0aXZlCi1ob3N0IGFuZCBwZXJmb3JtIHZhcmlvdXMg InNtb2tlIHRlc3RzIiB1c2luZyBkaWZmZXJlbnQgY29ubmVjdGlvbgotbWV0aG9kcy4KLQotVGhp cyBwYXRjaCBoYXMgYmVlbiByZWdyZXNzaW9uLXRlc3RlZCBvbiBCdWlsZEJvdCBhbmQgbG9jYWxs eSwgYW5kCi1hbHNvIGJ1aWx0IHVzaW5nIGEgeDg2XzY0LXc2NC1taW5ndzMyIEdDQywgYW5kIG5v IHByb2JsZW1zIHdlcmUgZm91bmQuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0yMDE4LTA3LTExICBTZXJn aW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotCSAgICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JICAgIFBhdWwgRmVydHNlciAgPGZl cmNlcnBhdkBnbWFpbC5jb20+Ci0JICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNv bT4KLQkgICAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLQotCSogTWFrZWZpbGUu aW4gKFNVQkRJUl9VTklUVEVTVFNfU1JDUyk6IEFkZAotCSd1bml0dGVzdHMvcGFyc2UtY29ubmVj dGlvbi1zcGVjLXNlbGZ0ZXN0cy5jJy4KLQkoQ09NTU9OX1NGSUxFUyk6IEFkZCAnY29tbW9uL25l dHN0dWZmLmMnLgotCShIRklMRVNfTk9fU1JDRElSKTogQWRkICdjb21tb24vbmV0c3R1ZmYuaCcu Ci0JKiBORVdTIChDaGFuZ2VzIHNpbmNlIEdEQiA4LjIpOiBNZW50aW9uIElQdjYgc3VwcG9ydC4K LQkqIGNvbW1vbi9uZXRzdHVmZi5jOiBOZXcgZmlsZS4KLQkqIGNvbW1vbi9uZXRzdHVmZi5oOiBO ZXcgZmlsZS4KLQkqIHNlci10Y3AuYzogSW5jbHVkZSAnbmV0c3R1ZmYuaCcgYW5kICd3c3BpYXBp LmgnLgotCSh3YWl0X2Zvcl9jb25uZWN0KTogVXBkYXRlIGNvbW1lbnQuICBOZXcgcGFyYW1ldGVy Ci0JJ2dkYjo6b3B0aW9uYWw8aW50PiBzb2NrJyBpbnN0ZWFkIG9mICdzdHJ1Y3Qgc2VyaWFsICpz Y2InLgotCVVzZSAnc29jaycgZGlyZWN0bHkgaW5zdGVhZCBvZiAnc2NiLT5mZCcuCi0JKHRyeV9j b25uZWN0KTogTmV3IGZ1bmN0aW9uLCB3aXRoIGNvZGUgZnJvbSAnbmV0X29wZW4nLgotCShuZXRf b3Blbik6IFJld3JpdGUgbWFpbiBsb29wIHRvIGRlYWwgd2l0aCBtdWx0aXBsZQotCXNvY2tldHMv YWRkcmVzc2VzLiAgSGFuZGxlIElQdjYtc3R5bGUgaG9zdG5hbWVzOyBpbXBsZW1lbnQKLQlzdXBw b3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgotCSogdW5pdHRlc3RzL3BhcnNlLWNvbm5lY3Rpb24t c3BlYy1zZWxmdGVzdHMuYzogTmV3IGZpbGUuCi0KLWdkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nOgot MjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4K LQkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCSAgICBQ YXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotCSAgICBUc3V0b211IFNla2kgIDxz ZWtpcmlraUBnbWFpbC5jb20+Ci0KLQkqIE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgJyQoc3Jj ZGlyKS9jb21tb24vbmV0c3R1ZmYuYycuCi0JKE9CUyk6IEFkZCAnY29tbW9uL25ldHN0dWZmLm8n LgotCShHREJSRVBMQVlfT0JTKTogTGlrZXdpc2UuCi0JKiBnZGJyZXBsYXkuYzogSW5jbHVkZSAn d3NwaWFwaS5oJyBhbmQgJ25ldHN0dWZmLmgnLgotCShyZW1vdGVfb3Blbik6IEltcGxlbWVudCBz dXBwb3J0IGZvciBJUHY2Ci0JY29ubmVjdGlvbnMuCi0JKiByZW1vdGUtdXRpbHMuYzogSW5jbHVk ZSAnbmV0c3R1ZmYuaCcsICdmaWxlc3R1ZmYuaCcKLQlhbmQgJ3dzcGlhcGkuaCcuCi0JKGhhbmRs ZV9hY2NlcHRfZXZlbnQpOiBBY2NlcHQgY29ubmVjdGlvbnMgZnJvbSBJUHY2IHNvdXJjZXMuCi0J KHJlbW90ZV9wcmVwYXJlKTogSGFuZGxlIElQdjYtc3R5bGUgaG9zdG5hbWVzOyBpbXBsZW1lbnQK LQlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgotCShyZW1vdGVfb3Blbik6IEltcGxlbWVu dCBzdXBwb3J0IGZvciBwcmludGluZyBjb25uZWN0aW9ucyBmcm9tCi0JSVB2NiBzb3VyY2VzLgot Ci1nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKLTIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1 bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0JICAgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLQkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWls LmNvbT4KLQkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgotCi0JKiBSRUFE TUUgKFRlc3RzdWl0ZSBQYXJhbWV0ZXJzKTogTWVudGlvbiBuZXcgJ0dEQl9URVNUX1NPQ0tFVEhP U1QnCi0JcGFyYW1ldGVyLgotCSogYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhw OiBEbyBub3Qgc2V0ICdzb2NrZXRob3N0JwotCWJ5IGRlZmF1bHQuCi0JKiBib2FyZHMvbmF0aXZl LWdkYnNlcnZlci5leHA6IExpa2V3aXNlLgotCSogZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2Nh bC1iaW5hcnkuZXhwOiBJbXByb3ZlIHJlZ2V4cCB1c2VkCi0JZm9yIGRldGVjdGluZyB3aGVuIGEg cmVtb3RlIGRlYnVnZ2luZyBjb25uZWN0aW9uIHN1Y2NlZWRzLgotCSogZ2RiLnNlcnZlci9zZXJ2 ZXItY29ubmVjdC5leHA6IE5ldyBmaWxlLgotCSogbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cCAo Z2Ric2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCk6Ci0JRG8gbm90IHByZWZpeCB0aGUgcG9y dCBudW1iZXIgd2l0aCAiOiIuCi0JKGdkYnNlcnZlcl9zdGFydCk6IE5ldyBnbG9iYWwgR0RCX1RF U1RfU09DS0VUSE9TVC4gIEltcGxlbWVudAotCXN1cHBvcnQgZm9yIGRldGVjdGluZyBhbmQgdXNp bmcgaXQuICBBZGQgJyRkZWJ1Z2hvc3RfZ2Ric2VydmVyJwotCXRvIHRoZSBsaXN0IG9mIGFyZ3Vt ZW50cyB1c2VkIHRvIHN0YXJ0IGdkYnNlcnZlci4gIEhhbmRsZSBjYXNlCi0Jd2hlbiBnZGJzZXJ2 ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3b3JrIG5hbWUuCi0KLWdkYi9kb2MvQ2hhbmdlTG9nOgot MjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4K LQkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCSAgICBQ YXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotCSAgICBUc3V0b211IFNla2kgIDxz ZWtpcmlraUBnbWFpbC5jb20+Ci0KLQkqIGdkYi50ZXhpbmZvIChSZW1vdGUgQ29ubmVjdGlvbiBD b21tYW5kcyk6IEFkZCBleHBsYW5hdGlvbgotCWFib3V0IG5ldyBJUHY2IHN1cHBvcnQuICBBZGQg bmV3IGNvbm5lY3Rpb24gcHJlZml4ZXMuCi0KLWRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4g Yi9nZGIvTWFrZWZpbGUuaW4KLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL01ha2Vm aWxlLmluCi1AQCAtNDMwLDYgKzQzMCw3IEBAIFNVQkRJUl9VTklUVEVTVFNfU1JDUyA9IFwKLSAJ dW5pdHRlc3RzL29mZnNldC10eXBlLXNlbGZ0ZXN0cy5jIFwKLSAJdW5pdHRlc3RzL29ic2VydmFi bGUtc2VsZnRlc3RzLmMgXAotIAl1bml0dGVzdHMvb3B0aW9uYWwtc2VsZnRlc3RzLmMgXAotKwl1 bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jIFwKLSAJdW5pdHRlc3Rz L3B0aWQtc2VsZnRlc3RzLmMgXAotIAl1bml0dGVzdHMvcnNwLWxvdy1zZWxmdGVzdHMuYyBcCi0g CXVuaXR0ZXN0cy9zY29wZWRfZmQtc2VsZnRlc3RzLmMgXAotQEAgLTk2Nyw2ICs5NjgsNyBAQCBD T01NT05fU0ZJTEVTID0gXAotIAljb21tb24vam9iLWNvbnRyb2wuYyBcCi0gCWNvbW1vbi9nZGJf dGlsZGVfZXhwYW5kLmMgXAotIAljb21tb24vZ2RiX3ZlY3MuYyBcCi0rCWNvbW1vbi9uZXRzdHVm Zi5jIFwKLSAJY29tbW9uL25ldy1vcC5jIFwKLSAJY29tbW9uL3BhdGhzdHVmZi5jIFwKLSAJY29t bW9uL3ByaW50LXV0aWxzLmMgXAotQEAgLTE0NDgsNiArMTQ1MCw3IEBAIEhGSUxFU19OT19TUkNE SVIgPSBcCi0gCWNvbW1vbi9nZGJfdmVjcy5oIFwKLSAJY29tbW9uL2dkYl93YWl0LmggXAotIAlj b21tb24vY29tbW9uLWluZmVyaW9yLmggXAotKwljb21tb24vbmV0c3R1ZmYuaCBcCi0gCWNvbW1v bi9ob3N0LWRlZnMuaCBcCi0gCWNvbW1vbi9wYXRoc3R1ZmYuaCBcCi0gCWNvbW1vbi9wcmludC11 dGlscy5oIFwKLWRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCi0tLS0gYS9nZGIvTkVX UwotKysrIGIvZ2RiL05FV1MKLUBAIC0xLDYgKzEsMTIgQEAKLSAJCVdoYXQgaGFzIGNoYW5nZWQg aW4gR0RCPwotIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQotIAotKyoqKiBD aGFuZ2VzIHNpbmNlIEdEQiA4LjIKLSsKLSsqIEdEQiBhbmQgR0RCc2VydmVyIG5vdyBzdXBwb3J0 IElQdjYgY29ubmVjdGlvbnMuICBJUHY2IGFkZHJlc3NlcwotKyAgY2FuIGJlIHBhc3NlZCB1c2lu ZyB0aGUgJ1tBRERSRVNTXTpQT1JUJyBub3RhdGlvbiwgb3IgdGhlIHJlZ3VsYXIKLSsgICdBRERS RVNTOlBPUlQnIG1ldGhvZC4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgOC4yCi0gCi0gKiBUaGUg J3NldCBkaXNhc3NlbWJsZXItb3B0aW9ucycgY29tbWFuZCBub3cgc3VwcG9ydHMgc3BlY2lmeWlu ZyBvcHRpb25zCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jIGIvZ2RiL2NvbW1v bi9uZXRzdHVmZi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL2NvbW1vbi9uZXRzdHVmZi5jCi1AQCAtMCwwICsxLDE1NSBAQAotKy8qIE9wZXJhdGlvbnMg b24gbmV0d29yayBzdHVmZi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiY29t bW9uLWRlZnMuaCIKLSsjaW5jbHVkZSAibmV0c3R1ZmYuaCIKLSsjaW5jbHVkZSA8YWxnb3JpdGht PgotKwotKyNpZmRlZiBVU0VfV0lOMzJBUEkKLSsjaW5jbHVkZSA8d2luc29jazIuaD4KLSsjaW5j bHVkZSA8d3NwaWFwaS5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSsjaW5j bHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2luY2x1ZGUgPG5ldGRiLmg+Ci0rI2luY2x1ZGUgPHN5cy9z b2NrZXQuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KLSsjZW5kaWYKLSsKLSsvKiBTZWUg Y29tbW9uL25ldHN0dWZmLmguICAqLwotKwotK3Njb3BlZF9mcmVlX2FkZHJpbmZvOjp+c2NvcGVk X2ZyZWVfYWRkcmluZm8gKCkKLSt7Ci0rICBmcmVlYWRkcmluZm8gKG1fcmVzKTsKLSt9Ci0rCi0r LyogU2VlIGNvbW1vbi9uZXRzdHVmZi5oLiAgKi8KLSsKLStwYXJzZWRfY29ubmVjdGlvbl9zcGVj Ci0rcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChzdGQ6OnN0cmluZyBzcGVj LCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpCi0rewotKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBy ZXQ7Ci0rICBzaXplX3QgbGFzdF9jb2xvbl9wb3MgPSAwOwotKyAgLyogV2UncmUgZGVhbGluZyB3 aXRoIElQdjYgaWY6Ci0rCi0rICAgICAtIGFpX2ZhbWlseSBpcyBBRl9JTkVUNiwgb3IKLSsgICAg IC0gYWlfZmFtaWx5IGlzIG5vdCBBRl9JTkVULCBhbmQKLSsgICAgICAgLSBzcGVjWzBdIGlzICdb Jywgb3IKLSsgICAgICAgLSB0aGUgbnVtYmVyIG9mICc6JyBvbiBzcGVjIGlzIGdyZWF0ZXIgdGhh biAxLiAgKi8KLSsgIGJvb2wgaXNfaXB2NiA9IChoaW50LT5haV9mYW1pbHkgPT0gQUZfSU5FVDYK LSsJCSAgfHwgKGhpbnQtPmFpX2ZhbWlseSAhPSBBRl9JTkVUCi0rCQkgICAgICAmJiAoc3BlY1sw XSA9PSAnWycKLSsJCQkgIHx8IHN0ZDo6Y291bnQgKHNwZWMuYmVnaW4gKCksCi0rCQkJCQkgc3Bl Yy5lbmQgKCksICc6JykgPiAxKSkpOwotKwotKyAgaWYgKGlzX2lwdjYpCi0rICAgIHsKLSsgICAg ICBpZiAoc3BlY1swXSA9PSAnWycpCi0rCXsKLSsJICAvKiBJUHY2IGFkZHJlc3NlcyBjYW4gYmUg d3JpdHRlbiBhcyAnW0FERFJdOlBPUlQnLCBhbmQgd2UKLSsJICAgICBzdXBwb3J0IHRoaXMgbm90 YXRpb24uICAqLwotKwkgIHNpemVfdCBjbG9zZV9icmFja2V0X3BvcyA9IHNwZWMuZmluZF9maXJz dF9vZiAoJ10nKTsKLSsKLSsJICBpZiAoY2xvc2VfYnJhY2tldF9wb3MgPT0gc3RkOjpzdHJpbmc6 Om5wb3MpCi0rCSAgICBlcnJvciAoXygiTWlzc2luZyBjbG9zZSBicmFja2V0IGluIGhvc3RuYW1l ICclcyciKSwKLSsJCSAgIHNwZWMuY19zdHIgKCkpOwotKwotKwkgIGhpbnQtPmFpX2ZhbWlseSA9 IEFGX0lORVQ2OwotKwotKwkgIGNvbnN0IGNoYXIgYyA9IHNwZWNbY2xvc2VfYnJhY2tldF9wb3Mg KyAxXTsKLSsKLSsJICBpZiAoYyA9PSAnXDAnKQotKwkgICAgbGFzdF9jb2xvbl9wb3MgPSBzdGQ6 OnN0cmluZzo6bnBvczsKLSsJICBlbHNlIGlmIChjICE9ICc6JykKLSsJICAgIGVycm9yIChfKCJJ bnZhbGlkIGNydWZ0IGFmdGVyIGNsb3NlIGJyYWNrZXQgaW4gJyVzJyIpLAotKwkJICAgc3BlYy5j X3N0ciAoKSk7Ci0rCi0rCSAgLyogRXJhc2UgYm90aCAnWycgYW5kICddJy4gICovCi0rCSAgc3Bl Yy5lcmFzZSAoMCwgMSk7Ci0rCSAgc3BlYy5lcmFzZSAoY2xvc2VfYnJhY2tldF9wb3MgLSAxLCAx KTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKHNwZWMuZmluZF9maXJzdF9vZiAoJ10nKSAhPSBzdGQ6 OnN0cmluZzo6bnBvcykKLSsJZXJyb3IgKF8oIk1pc3Npbmcgb3BlbiBicmFja2V0IGluIGhvc3Ru YW1lICclcyciKSwKLSsJICAgICAgIHNwZWMuY19zdHIgKCkpOwotKyAgICB9Ci0rCi0rICBpZiAo bGFzdF9jb2xvbl9wb3MgPT0gMCkKLSsgICAgbGFzdF9jb2xvbl9wb3MgPSBzcGVjLmZpbmRfbGFz dF9vZiAoJzonKTsKLSsKLSsgIC8qIFRoZSBsZW5ndGggb2YgdGhlIGhvc3RuYW1lIHBhcnQuICAq LwotKyAgc2l6ZV90IGhvc3RfbGVuOwotKwotKyAgaWYgKGxhc3RfY29sb25fcG9zICE9IHN0ZDo6 c3RyaW5nOjpucG9zKQotKyAgICB7Ci0rICAgICAgLyogVGhlIHVzZXIgaGFzIHByb3ZpZGVkIGEg cG9ydC4gICovCi0rICAgICAgaG9zdF9sZW4gPSBsYXN0X2NvbG9uX3BvczsKLSsgICAgICByZXQu cG9ydF9zdHIgPSBzcGVjLnN1YnN0ciAobGFzdF9jb2xvbl9wb3MgKyAxKTsKLSsgICAgfQotKyAg ZWxzZQotKyAgICBob3N0X2xlbiA9IHNwZWMuc2l6ZSAoKTsKLSsKLSsgIHJldC5ob3N0X3N0ciA9 IHNwZWMuc3Vic3RyICgwLCBob3N0X2xlbik7Ci0rCi0rICAvKiBEZWZhdWx0IGhvc3RuYW1lIGlz IGxvY2FsaG9zdC4gICovCi0rICBpZiAocmV0Lmhvc3Rfc3RyLmVtcHR5ICgpKQotKyAgICByZXQu aG9zdF9zdHIgPSAibG9jYWxob3N0IjsKLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotKy8qIFNl ZSBjb21tb24vbmV0c3R1ZmYuaC4gICovCi0rCi0rcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYwotK3Bh cnNlX2Nvbm5lY3Rpb25fc3BlYyAoY29uc3QgY2hhciAqc3BlYywgc3RydWN0IGFkZHJpbmZvICpo aW50KQotK3sKLSsgIC8qIFN0cnVjdCB0byBob2xkIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHZh bGlkIHByZWZpeGVzLCB0aGVpcgotKyAgICAgZmFtaWx5IGFuZCBzb2NrdHlwZS4gICovCi0rICBz dHJ1Y3QgaG9zdF9wcmVmaXgKLSsgICAgewotKyAgICAgIC8qIFRoZSBwcmVmaXguICAqLwotKyAg ICAgIGNvbnN0IGNoYXIgKnByZWZpeDsKLSsKLSsgICAgICAvKiBUaGUgJ2FpX2ZhbWlseScuICAq LwotKyAgICAgIGludCBmYW1pbHk7Ci0rCi0rICAgICAgLyogVGhlICdhaV9zb2NrdHlwZScuICAq LwotKyAgICAgIGludCBzb2NrdHlwZTsKLSsgICAgfTsKLSsgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aG9zdF9wcmVmaXggcHJlZml4ZXNbXSA9Ci0rICAgIHsKLSsgICAgICB7ICJ1ZHA6IiwgIEFGX1VO U1BFQywgU09DS19ER1JBTSB9LAotKyAgICAgIHsgInRjcDoiLCAgQUZfVU5TUEVDLCBTT0NLX1NU UkVBTSB9LAotKyAgICAgIHsgInVkcDQ6IiwgQUZfSU5FVCwgICBTT0NLX0RHUkFNIH0sCi0rICAg ICAgeyAidGNwNDoiLCBBRl9JTkVULCAgIFNPQ0tfU1RSRUFNIH0sCi0rICAgICAgeyAidWRwNjoi LCBBRl9JTkVUNiwgIFNPQ0tfREdSQU0gfSwKLSsgICAgICB7ICJ0Y3A2OiIsIEFGX0lORVQ2LCAg U09DS19TVFJFQU0gfSwKLSsgICAgfTsKLSsKLSsgIGZvciAoY29uc3QgaG9zdF9wcmVmaXggcHJl Zml4IDogcHJlZml4ZXMpCi0rICAgIGlmIChzdGFydHN3aXRoIChzcGVjLCBwcmVmaXgucHJlZml4 KSkKLSsgICAgICB7Ci0rCXNwZWMgKz0gc3RybGVuIChwcmVmaXgucHJlZml4KTsKLSsJaGludC0+ YWlfZmFtaWx5ID0gcHJlZml4LmZhbWlseTsKLSsJaGludC0+YWlfc29ja3R5cGUgPSBwcmVmaXgu c29ja3R5cGU7Ci0rCWhpbnQtPmFpX3Byb3RvY29sCi0rCSAgPSBoaW50LT5haV9zb2NrdHlwZSA9 PSBTT0NLX0RHUkFNID8gSVBQUk9UT19VRFAgOiBJUFBST1RPX1RDUDsKLSsJYnJlYWs7Ci0rICAg ICAgfQotKwotKyAgcmV0dXJuIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY193aXRob3V0X3ByZWZpeCAo c3BlYywgaGludCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vbmV0c3R1ZmYuaCBiL2dk Yi9jb21tb24vbmV0c3R1ZmYuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi9jb21tb24vbmV0c3R1ZmYuaAotQEAgLTAsMCArMSw3NiBAQAotKy8qIE9wZXJh dGlvbnMgb24gbmV0d29yayBzdHVmZi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVm IE5FVFNUVUZGX0gKLSsjZGVmaW5lIE5FVFNUVUZGX0gKLSsKLSsjaW5jbHVkZSA8c3RyaW5nPgot KwotKy8qIExpa2UgTklfTUFYSE9TVC9OSV9NQVhTRVJWLCBidXQgZW5vdWdoIGZvciBudW1lcmlj IGZvcm1zLiAgKi8KLSsjZGVmaW5lIEdEQl9OSV9NQVhfQUREUiA2NAotKyNkZWZpbmUgR0RCX05J X01BWF9QT1JUIDE2Ci0rCi0rLyogSGVscGVyIGNsYXNzIHRvIGd1YXJhbnRlZSB0aGF0IHdlIGFs d2F5cyBjYWxsICdmcmVlYWRkcmluZm8nLiAgKi8KLSsKLStjbGFzcyBzY29wZWRfZnJlZV9hZGRy aW5mbwotK3sKLStwdWJsaWM6Ci0rICAvKiBEZWZhdWx0IGNvbnN0cnVjdG9yLiAgKi8KLSsgIGV4 cGxpY2l0IHNjb3BlZF9mcmVlX2FkZHJpbmZvIChzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvKQotKyAg ICA6IG1fcmVzIChhaW5mbykKLSsgIHsKLSsgIH0KLSsKLSsgIC8qIERlc3RydWN0b3IgcmVzcG9u c2libGUgZm9yIGZyZWUnaW5nIE1fUkVTIGJ5IGNhbGxpbmcKLSsgICAgICdmcmVlYWRkcmluZm8n LiAgKi8KLSsgIH5zY29wZWRfZnJlZV9hZGRyaW5mbyAoKTsKLSsKLSsgIERJU0FCTEVfQ09QWV9B TkRfQVNTSUdOIChzY29wZWRfZnJlZV9hZGRyaW5mbyk7Ci0rCi0rcHJpdmF0ZToKLSsgIC8qIFRo ZSBhZGRyaW5mbyByZXNvdXJjZS4gICovCi0rICBzdHJ1Y3QgYWRkcmluZm8gKm1fcmVzOwotK307 Ci0rCi0rLyogVGhlIHN0cnVjdCB3ZSByZXR1cm4gYWZ0ZXIgcGFyc2luZyB0aGUgY29ubmVjdGlv biBzcGVjLiAgKi8KLSsKLStzdHJ1Y3QgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYwotK3sKLSsgIC8q IFRoZSBob3N0bmFtZS4gICovCi0rICBzdGQ6OnN0cmluZyBob3N0X3N0cjsKLSsKLSsgIC8qIFRo ZSBwb3J0LCBpZiBhbnkuICAqLwotKyAgc3RkOjpzdHJpbmcgcG9ydF9zdHI7Ci0rfTsKLSsKLSsK LSsvKiBQYXJzZSBTUEVDICh3aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAiQUREUjpQ T1JUIikgYW5kCi0rICAgcmV0dXJuIGEgJ3BhcnNlZF9jb25uZWN0aW9uX3NwZWMnIHN0cnVjdHVy ZSB3aXRoIHRoZSBwcm9wZXIgZmllbGRzCi0rICAgZmlsbGVkIGluLiAgQWxzbyBhZGp1c3QgSElO VCBhY2NvcmRpbmdseS4gICovCi0rZXh0ZXJuIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMKLSsgIHBh cnNlX2Nvbm5lY3Rpb25fc3BlY193aXRob3V0X3ByZWZpeCAoc3RkOjpzdHJpbmcgc3BlYywKLSsJ CQkJCXN0cnVjdCBhZGRyaW5mbyAqaGludCk7Ci0rCi0rLyogUGFyc2UgU1BFQyAod2hpY2ggaXMg YSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YKLSsgICAiW3RjcFs2XTp8dWRwWzZdOl1BRERSOlBPUlQi KSBhbmQgcmV0dXJuIGEgJ3BhcnNlZF9jb25uZWN0aW9uX3NwZWMnCi0rICAgc3RydWN0dXJlIHdp dGggdGhlIHByb3BlciBmaWVsZHMgZmlsbGVkIGluLiAgQWxzbyBhZGp1c3QgSElOVAotKyAgIGFj Y29yZGluZ2x5LiAgKi8KLStleHRlcm4gcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZV9jb25u ZWN0aW9uX3NwZWMgKGNvbnN0IGNoYXIgKnNwZWMsCi0rCQkJCQkJICAgICBzdHJ1Y3QgYWRkcmlu Zm8gKmhpbnQpOwotKwotKyNlbmRpZiAvKiAhIE5FVFNUVUZGX0ggKi8KLWRpZmYgLS1naXQgYS9n ZGIvZG9jL0NoYW5nZUxvZyBiL2dkYi9kb2MvQ2hhbmdlTG9nCi0tLS0gYS9nZGIvZG9jL0NoYW5n ZUxvZwotKysrIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE4LTA3 LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotKwkgICAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwkgICAgUGF1bCBG ZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KLSsJICAgIFRzdXRvbXUgU2VraSAgPHNla2ly aWtpQGdtYWlsLmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoUmVtb3RlIENvbm5lY3Rpb24gQ29t bWFuZHMpOiBBZGQgZXhwbGFuYXRpb24KLSsJYWJvdXQgbmV3IElQdjYgc3VwcG9ydC4gIEFkZCBu ZXcgY29ubmVjdGlvbiBwcmVmaXhlcy4KLSsKLSAyMDE4LTA3LTAyICBNYWNpZWogVy4gUm96eWNr aSAgPG1hY3JvQG1pcHMuY29tPgotIAotIAlQUiB0ZGVwLzgyODIKLWRpZmYgLS1naXQgYS9nZGIv ZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotLS0tIGEvZ2RiL2RvYy9nZGIu dGV4aW5mbwotKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTIwNTQ4LDE2ICsyMDU0OCwy NyBAQCBJZiB5b3UncmUgdXNpbmcgYSBzZXJpYWwgbGluZSwgeW91IG1heSB3YW50IHRvIGdpdmUg QHZhbHVle0dEQk59IHRoZQotIEBjb2Rle3RhcmdldH0gY29tbWFuZC4KLSAKLSBAaXRlbSB0YXJn ZXQgcmVtb3RlIEBjb2Rle0B2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IHJl bW90ZSBAY29kZXtAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLSBAaXRlbXggdGFyZ2V0IHJlbW90 ZSBAY29kZXt0Y3A6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3Rl IEBjb2Rle3RjcDpAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IHJlbW90 ZSBAY29kZXt0Y3A0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IHJlbW90 ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IHJlbW90 ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotIEBpdGVteCB0YXJnZXQgZXh0 ZW5kZWQtcmVtb3RlIEBjb2Rle0B2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0 IGV4dGVuZGVkLXJlbW90ZSBAY29kZXtAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLSBAaXRlbXgg dGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A6QHZhcntob3N0fTpAdmFye3BvcnR9fQot K0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDpAdmFye1tob3N0XX06QHZh cntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A0OkB2YXJ7 aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0 Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90 ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotIEBjaW5kZXggQGFjcm9ueW17 VENQfSBwb3J0LCBAY29kZXt0YXJnZXQgcmVtb3RlfQotIERlYnVnIHVzaW5nIGEgQGFjcm9ueW17 VENQfSBjb25uZWN0aW9uIHRvIEB2YXJ7cG9ydH0gb24gQHZhcntob3N0fS4KLS1UaGUgQHZhcnto b3N0fSBtYXkgYmUgZWl0aGVyIGEgaG9zdCBuYW1lIG9yIGEgbnVtZXJpYyBAYWNyb255bXtJUH0K LS1hZGRyZXNzOyBAdmFye3BvcnR9IG11c3QgYmUgYSBkZWNpbWFsIG51bWJlci4gIFRoZSBAdmFy e2hvc3R9IGNvdWxkIGJlCi0tdGhlIHRhcmdldCBtYWNoaW5lIGl0c2VsZiwgaWYgaXQgaXMgZGly ZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBuZXQsIG9yCi0taXQgbWlnaHQgYmUgYSB0ZXJtaW5hbCBz ZXJ2ZXIgd2hpY2ggaW4gdHVybiBoYXMgYSBzZXJpYWwgbGluZSB0byB0aGUKLS10YXJnZXQuCi0r VGhlIEB2YXJ7aG9zdH0gbWF5IGJlIGVpdGhlciBhIGhvc3QgbmFtZSwgYSBudW1lcmljIEBhY3Jv bnlte0lQdjR9Ci0rYWRkcmVzcywgb3IgYSBudW1lcmljIEBhY3Jvbnlte0lQdjZ9IGFkZHJlc3Mg KHdpdGggb3Igd2l0aG91dCB0aGUKLStzcXVhcmUgYnJhY2tldHMgdG8gc2VwYXJhdGUgdGhlIGFk ZHJlc3MgZnJvbSB0aGUgcG9ydCk7IEB2YXJ7cG9ydH0KLSttdXN0IGJlIGEgZGVjaW1hbCBudW1i ZXIuICBUaGUgQHZhcntob3N0fSBjb3VsZCBiZSB0aGUgdGFyZ2V0IG1hY2hpbmUKLStpdHNlbGYs IGlmIGl0IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgbmV0LCBvciBpdCBtaWdodCBiZSBh Ci0rdGVybWluYWwgc2VydmVyIHdoaWNoIGluIHR1cm4gaGFzIGEgc2VyaWFsIGxpbmUgdG8gdGhl IHRhcmdldC4KLSAKLSBGb3IgZXhhbXBsZSwgdG8gY29ubmVjdCB0byBwb3J0IDI4Mjggb24gYSB0 ZXJtaW5hbCBzZXJ2ZXIgbmFtZWQKLSBAY29kZXttYW55ZmFybXN9OgotQEAgLTIwNTY2LDYgKzIw NTc3LDI4IEBAIEZvciBleGFtcGxlLCB0byBjb25uZWN0IHRvIHBvcnQgMjgyOCBvbiBhIHRlcm1p bmFsIHNlcnZlciBuYW1lZAotIHRhcmdldCByZW1vdGUgbWFueWZhcm1zOjI4MjgKLSBAZW5kIHNt YWxsZXhhbXBsZQotIAotK1RvIGNvbm5lY3QgdG8gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2Vy dmVyIHdob3NlIGFkZHJlc3MgaXMKLStAY29kZXsyMDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEy ZTowMzcwOjczMzR9LCB5b3UgY2FuIGVpdGhlciB1c2UgdGhlCi0rc3F1YXJlIGJyYWNrZXQgc3lu dGF4OgotKwotK0BzbWFsbGV4YW1wbGUKLSt0YXJnZXQgcmVtb3RlIFsyMDAxOjBkYjg6ODVhMzow MDAwOjAwMDA6OGEyZTowMzcwOjczMzRdOjI4MjgKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0Bu b2luZGVudAotK29yIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgQGFjcm9ueW17SVB2Nn0gcHJvdG9j b2w6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldCByZW1vdGUgdGNwNjoyMDAxOjBkYjg6ODVh MzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzQ6MjgyOAotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0r VGhpcyBsYXN0IGV4YW1wbGUgbWF5IGJlIGNvbmZ1c2luZyB0byB0aGUgcmVhZGVyLCBiZWNhdXNl IHRoZXJlIGlzIG5vCi0rdmlzaWJsZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIGhvc3RuYW1lIGFu ZCB0aGUgcG9ydCBudW1iZXIuCi0rVGhlcmVmb3JlLCB3ZSByZWNvbW1lbmQgdGhlIHVzZXIgdG8g cHJvdmlkZSBAYWNyb255bXtJUHY2fSBhZGRyZXNzZXMKLSt1c2luZyBzcXVhcmUgYnJhY2tldHMg Zm9yIGNsYXJpdHkuICBIb3dldmVyLCBpdCBpcyBpbXBvcnRhbnQgdG8KLSttZW50aW9uIHRoYXQg Zm9yIEB2YWx1ZXtHREJOfSB0aGVyZSBpcyBubyBhbWJpZ3VpdHk6IHRoZSBudW1iZXIgYWZ0ZXIK LSt0aGUgbGFzdCBjb2xvbiBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBwb3J0IG51bWJlci4KLSsK LSBJZiB5b3VyIHJlbW90ZSB0YXJnZXQgaXMgYWN0dWFsbHkgcnVubmluZyBvbiB0aGUgc2FtZSBt YWNoaW5lIGFzIHlvdXIKLSBkZWJ1Z2dlciBzZXNzaW9uIChlLmcuQDogYSBzaW11bGF0b3IgZm9y IHlvdXIgdGFyZ2V0IHJ1bm5pbmcgb24gdGhlCi0gc2FtZSBob3N0KSwgeW91IGNhbiBvbWl0IHRo ZSBob3N0bmFtZS4gIEZvciBleGFtcGxlLCB0byBjb25uZWN0IHRvCi1AQCAtMjA1NzksNyArMjA2 MTIsMTUgQEAgdGFyZ2V0IHJlbW90ZSA6MTIzNAotIE5vdGUgdGhhdCB0aGUgY29sb24gaXMgc3Rp bGwgcmVxdWlyZWQgaGVyZS4KLSAKLSBAaXRlbSB0YXJnZXQgcmVtb3RlIEBjb2Rle3VkcDpAdmFy e2hvc3R9OkB2YXJ7cG9ydH19Ci0rQGl0ZW14IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwOkB2YXJ7 W2hvc3RdfTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3VkcDQ6QHZh cntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3VkcDY6QHZh cntbaG9zdF19OkB2YXJ7cG9ydH19Ci0rQGl0ZW14IHRhcmdldCBleHRlbmRlZC1yZW1vdGUgQGNv ZGV7dWRwOkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLSBAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJl bW90ZSBAY29kZXt1ZHA6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0 ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDpAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLStAaXRlbXgg dGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0K LStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA2OkB2YXJ7aG9zdH06QHZh cntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA2OkB2YXJ7 W2hvc3RdfTpAdmFye3BvcnR9fQotIEBjaW5kZXggQGFjcm9ueW17VURQfSBwb3J0LCBAY29kZXt0 YXJnZXQgcmVtb3RlfQotIERlYnVnIHVzaW5nIEBhY3Jvbnlte1VEUH0gcGFja2V0cyB0byBAdmFy e3BvcnR9IG9uIEB2YXJ7aG9zdH0uICBGb3IgZXhhbXBsZSwgdG8KLSBjb25uZWN0IHRvIEBhY3Jv bnlte1VEUH0gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2VydmVyIG5hbWVkIEBjb2Rle21hbnlm YXJtc306Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cgYi9nZGIvZ2Ric2Vy dmVyL0NoYW5nZUxvZwotLS0tIGEvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cKLSsrKyBiL2dkYi9n ZGJzZXJ2ZXIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIyIEBACi0rMjAxOC0wNy0xMSAgU2VyZ2lv IER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSsJICAgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsJICAgIFBhdWwgRmVydHNlciAgPGZl cmNlcnBhdkBnbWFpbC5jb20+Ci0rCSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5j b20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFkZCAnJChzcmNkaXIpL2NvbW1vbi9u ZXRzdHVmZi5jJy4KLSsJKE9CUyk6IEFkZCAnY29tbW9uL25ldHN0dWZmLm8nLgotKwkoR0RCUkVQ TEFZX09CUyk6IExpa2V3aXNlLgotKwkqIGdkYnJlcGxheS5jOiBJbmNsdWRlICd3c3BpYXBpLmgn IGFuZCAnbmV0c3R1ZmYuaCcuCi0rCShyZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZv ciBJUHY2Ci0rCWNvbm5lY3Rpb25zLgotKwkqIHJlbW90ZS11dGlscy5jOiBJbmNsdWRlICduZXRz dHVmZi5oJywgJ2ZpbGVzdHVmZi5oJwotKwlhbmQgJ3dzcGlhcGkuaCcuCi0rCShoYW5kbGVfYWNj ZXB0X2V2ZW50KTogQWNjZXB0IGNvbm5lY3Rpb25zIGZyb20gSVB2NiBzb3VyY2VzLgotKwkocmVt b3RlX3ByZXBhcmUpOiBIYW5kbGUgSVB2Ni1zdHlsZSBob3N0bmFtZXM7IGltcGxlbWVudAotKwlz dXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgotKwkocmVtb3RlX29wZW4pOiBJbXBsZW1lbnQg c3VwcG9ydCBmb3IgcHJpbnRpbmcgY29ubmVjdGlvbnMgZnJvbQotKwlJUHY2IHNvdXJjZXMuCi0r Ci0gMjAxOC0wNy0xMSAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLSAJUFIg Z2RiLzIzMzc3Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9n ZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLSsr KyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0yMTEsNiArMjExLDcgQEAgU0ZJTEVT ID0gXAotIAkkKHNyY2RpcikvY29tbW9uL2pvYi1jb250cm9sLmMgXAotIAkkKHNyY2RpcikvY29t bW9uL2dkYl90aWxkZV9leHBhbmQuYyBcCi0gCSQoc3JjZGlyKS9jb21tb24vZ2RiX3ZlY3MuYyBc Ci0rCSQoc3JjZGlyKS9jb21tb24vbmV0c3R1ZmYuYyBcCi0gCSQoc3JjZGlyKS9jb21tb24vbmV3 LW9wLmMgXAotIAkkKHNyY2RpcikvY29tbW9uL3BhdGhzdHVmZi5jIFwKLSAJJChzcmNkaXIpL2Nv bW1vbi9wcmludC11dGlscy5jIFwKLUBAIC0yNTQsNiArMjU1LDcgQEAgT0JTID0gXAotIAljb21t b24vZm9ybWF0Lm8gXAotIAljb21tb24vZ2RiX3RpbGRlX2V4cGFuZC5vIFwKLSAJY29tbW9uL2dk Yl92ZWNzLm8gXAotKwljb21tb24vbmV0c3R1ZmYubyBcCi0gCWNvbW1vbi9uZXctb3AubyBcCi0g CWNvbW1vbi9wYXRoc3R1ZmYubyBcCi0gCWNvbW1vbi9wcmludC11dGlscy5vIFwKLUBAIC0yOTAs NiArMjkyLDcgQEAgR0RCUkVQTEFZX09CUyA9IFwKLSAJY29tbW9uL2NvbW1vbi1leGNlcHRpb25z Lm8gXAotIAljb21tb24vY29tbW9uLXV0aWxzLm8gXAotIAljb21tb24vZXJyb3JzLm8gXAotKwlj b21tb24vbmV0c3R1ZmYubyBcCi0gCWNvbW1vbi9wcmludC11dGlscy5vIFwKLSAJZ2RicmVwbGF5 Lm8gXAotIAl1dGlscy5vIFwKLWRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5j IGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYwotLS0tIGEvZ2RiL2dkYnNlcnZlci9nZGJyZXBs YXkuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYwotQEAgLTQ2LDggKzQ2LDExIEBA Ci0gCi0gI2lmIFVTRV9XSU4zMkFQSQotICNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNpbmNsdWRl IDx3c3BpYXBpLmg+Ci0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgIm5ldHN0dWZmLmgiCi0rCi0gI2lm bmRlZiBIQVZFX1NPQ0tMRU5fVAotIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsKLSAjZW5kaWYKLUBA IC0xNDIsNTYgKzE0NSwxMDggQEAgcmVtb3RlX2Nsb3NlICh2b2lkKQotIHN0YXRpYyB2b2lkCi0g cmVtb3RlX29wZW4gKGNoYXIgKm5hbWUpCi0gewotLSAgaWYgKCFzdHJjaHIgKG5hbWUsICc6Jykp Ci0rICBjaGFyICpsYXN0X2NvbG9uID0gc3RycmNociAobmFtZSwgJzonKTsKLSsKLSsgIGlmIChs YXN0X2NvbG9uID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczog TXVzdCBzcGVjaWZ5IHRjcCBjb25uZWN0aW9uIGFzIGhvc3Q6YWRkclxuIiwgbmFtZSk7Ci0gICAg ICAgZmZsdXNoIChzdGRlcnIpOwotICAgICAgIGV4aXQgKDEpOwotICAgICB9Ci0tICBlbHNlCi0t ICAgIHsKLSsKLSAjaWZkZWYgVVNFX1dJTjMyQVBJCi0tICAgICAgc3RhdGljIGludCB3aW5zb2Nr X2luaXRpYWxpemVkOwotKyAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxpemVkOwotICNlbmRp ZgotLSAgICAgIGNoYXIgKnBvcnRfc3RyOwotLSAgICAgIGludCBwb3J0OwotLSAgICAgIHN0cnVj dCBzb2NrYWRkcl9pbiBzb2NrYWRkcjsKLS0gICAgICBzb2NrbGVuX3QgdG1wOwotLSAgICAgIGlu dCB0bXBfZGVzYzsKLSsgIGNoYXIgKnBvcnRfc3RyOwotKyAgaW50IHRtcDsKLSsgIGludCB0bXBf ZGVzYzsKLSsgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotKyAgc3RydWN0IGFkZHJpbmZvICphaW5m bzsKLSAKLS0gICAgICBwb3J0X3N0ciA9IHN0cmNociAobmFtZSwgJzonKTsKLSsgIG1lbXNldCAo JmhpbnQsIDAsIHNpemVvZiAoaGludCkpOwotKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJl IHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKLSsgICAgIEFGX1VOU1BFQy4gICovCi0r ICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKLSsgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NL X1NUUkVBTTsKLSsgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKLSAKLS0gICAgICBw b3J0ID0gYXRvaSAocG9ydF9zdHIgKyAxKTsKLSsgIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMgcGFy c2VkID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChuYW1lLCAmaGludCk7Ci0rCi0rICBpZiAocGFy c2VkLnBvcnRfc3RyLmVtcHR5ICgpKQotKyAgICBlcnJvciAoXygiTWlzc2luZyBwb3J0IG9uIGhv c3RuYW1lICclcyciKSwgbmFtZSk7Ci0gCi0gI2lmZGVmIFVTRV9XSU4zMkFQSQotLSAgICAgIGlm ICghd2luc29ja19pbml0aWFsaXplZCkKLS0JewotLQkgIFdTQURBVEEgd3NhZDsKLSsgIGlmICgh d2luc29ja19pbml0aWFsaXplZCkKLSsgICAgewotKyAgICAgIFdTQURBVEEgd3NhZDsKLSAKLS0J ICBXU0FTdGFydHVwIChNQUtFV09SRCAoMSwgMCksICZ3c2FkKTsKLS0JICB3aW5zb2NrX2luaXRp YWxpemVkID0gMTsKLS0JfQotKyAgICAgIFdTQVN0YXJ0dXAgKE1BS0VXT1JEICgxLCAwKSwgJndz YWQpOwotKyAgICAgIHdpbnNvY2tfaW5pdGlhbGl6ZWQgPSAxOwotKyAgICB9Ci0gI2VuZGlmCi0g Ci0tICAgICAgdG1wX2Rlc2MgPSBzb2NrZXQgKFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLS0g ICAgICBpZiAodG1wX2Rlc2MgPT0gLTEpCi0tCXBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBvcGVu IHNvY2tldCIpOwotKyAgaW50IHIgPSBnZXRhZGRyaW5mbyAocGFyc2VkLmhvc3Rfc3RyLmNfc3Ry ICgpLCBwYXJzZWQucG9ydF9zdHIuY19zdHIgKCksCi0rCQkgICAgICAgJmhpbnQsICZhaW5mbyk7 Ci0gCi0tICAgICAgLyogQWxsb3cgcmFwaWQgcmV1c2Ugb2YgdGhpcyBwb3J0LiAqLwotLSAgICAg IHRtcCA9IDE7Ci0tICAgICAgc2V0c29ja29wdCAodG1wX2Rlc2MsIFNPTF9TT0NLRVQsIFNPX1JF VVNFQUREUiwgKGNoYXIgKikgJnRtcCwKLS0JCSAgc2l6ZW9mICh0bXApKTsKLSsgIGlmIChyICE9 IDApCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczolczogY2Fubm90IHJlc29s dmUgbmFtZTogJXNcbiIsCi0rCSAgICAgICBwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBhcnNl ZC5wb3J0X3N0ci5jX3N0ciAoKSwKLSsJICAgICAgIGdhaV9zdHJlcnJvciAocikpOwotKyAgICAg IGZmbHVzaCAoc3RkZXJyKTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQotKwotKyAgc2NvcGVk X2ZyZWVfYWRkcmluZm8gZnJlZV9haW5mbyAoYWluZm8pOwotKwotKyAgc3RydWN0IGFkZHJpbmZv ICpwOwotKwotKyAgZm9yIChwID0gYWluZm87IHAgIT0gTlVMTDsgcCA9IHAtPmFpX25leHQpCi0r ICAgIHsKLSsgICAgICB0bXBfZGVzYyA9IHNvY2tldCAocC0+YWlfZmFtaWx5LCBwLT5haV9zb2Nr dHlwZSwgcC0+YWlfcHJvdG9jb2wpOwotIAotLSAgICAgIHNvY2thZGRyLnNpbl9mYW1pbHkgPSBQ Rl9JTkVUOwotLSAgICAgIHNvY2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwotLSAgICAg IHNvY2thZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7Ci0rICAgICAgaWYgKHRtcF9k ZXNjID49IDApCi0rCWJyZWFrOwotKyAgICB9Ci0rCi0rICBpZiAocCA9PSBOVUxMKQotKyAgICBw ZXJyb3Jfd2l0aF9uYW1lICgiQ2Fubm90IG9wZW4gc29ja2V0Iik7Ci0gCi0tICAgICAgaWYgKGJp bmQgKHRtcF9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgc2l6ZW9mIChzb2Nr YWRkcikpCi0tCSAgfHwgbGlzdGVuICh0bXBfZGVzYywgMSkpCi0tCXBlcnJvcl93aXRoX25hbWUg KCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsKLSsgIC8qIEFsbG93IHJhcGlkIHJldXNlIG9mIHRoaXMg cG9ydC4gKi8KLSsgIHRtcCA9IDE7Ci0rICBzZXRzb2Nrb3B0ICh0bXBfZGVzYywgU09MX1NPQ0tF VCwgU09fUkVVU0VBRERSLCAoY2hhciAqKSAmdG1wLAotKwkgICAgICBzaXplb2YgKHRtcCkpOwot KwotKyAgc3dpdGNoIChwLT5haV9mYW1pbHkpCi0rICAgIHsKLSsgICAgY2FzZSBBRl9JTkVUOgot KyAgICAgICgoc3RydWN0IHNvY2thZGRyX2luICopIHAtPmFpX2FkZHIpLT5zaW5fYWRkci5zX2Fk ZHIgPSBJTkFERFJfQU5ZOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEFGX0lORVQ2OgotKyAg ICAgICgoc3RydWN0IHNvY2thZGRyX2luNiAqKSBwLT5haV9hZGRyKS0+c2luNl9hZGRyID0gaW42 YWRkcl9hbnk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZnByaW50ZiAo c3RkZXJyLCAiSW52YWxpZCAnYWlfZmFtaWx5JyAlZFxuIiwgcC0+YWlfZmFtaWx5KTsKLSsgICAg ICBleGl0ICgxKTsKLSsgICAgfQotKwotKyAgaWYgKGJpbmQgKHRtcF9kZXNjLCBwLT5haV9hZGRy LCBwLT5haV9hZGRybGVuKSAhPSAwKQotKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgYmlu ZCBhZGRyZXNzIik7Ci0rCi0rICBpZiAocC0+YWlfc29ja3R5cGUgPT0gU09DS19ER1JBTSkKLSsg ICAgcmVtb3RlX2Rlc2MgPSB0bXBfZGVzYzsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHN0cnVj dCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOwotKyAgICAgIHNvY2tsZW5fdCBzb2NrYWRkcnNp emUgPSBzaXplb2YgKHNvY2thZGRyKTsKLSsgICAgICBjaGFyIG9yaWdfaG9zdFtHREJfTklfTUFY X0FERFJdLCBvcmlnX3BvcnRbR0RCX05JX01BWF9QT1JUXTsKLSsKLSsgICAgICBpZiAobGlzdGVu ICh0bXBfZGVzYywgMSkgIT0gMCkKLSsJcGVycm9yX3dpdGhfbmFtZSAoIkNhbid0IGxpc3RlbiBv biBzb2NrZXQiKTsKLSsKLSsgICAgICByZW1vdGVfZGVzYyA9IGFjY2VwdCAodG1wX2Rlc2MsIChz dHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLAotKwkJCSAgICAmc29ja2FkZHJzaXplKTsKLSAK LS0gICAgICB0bXAgPSBzaXplb2YgKHNvY2thZGRyKTsKLS0gICAgICByZW1vdGVfZGVzYyA9IGFj Y2VwdCAodG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCAmdG1wKTsKLSAg ICAgICBpZiAocmVtb3RlX2Rlc2MgPT0gLTEpCi0gCXBlcnJvcl93aXRoX25hbWUgKCJBY2NlcHQg ZmFpbGVkIik7Ci0gCi1AQCAtMjA2LDYgKzI2MSwxNiBAQCByZW1vdGVfb3BlbiAoY2hhciAqbmFt ZSkKLSAgICAgICBzZXRzb2Nrb3B0IChyZW1vdGVfZGVzYywgSVBQUk9UT19UQ1AsIFRDUF9OT0RF TEFZLAotIAkJICAoY2hhciAqKSAmdG1wLCBzaXplb2YgKHRtcCkpOwotIAotKyAgICAgIGlmIChn ZXRuYW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIHNvY2thZGRyc2l6ZSwK LSsJCSAgICAgICBvcmlnX2hvc3QsIHNpemVvZiAob3JpZ19ob3N0KSwKLSsJCSAgICAgICBvcmln X3BvcnQsIHNpemVvZiAob3JpZ19wb3J0KSwKLSsJCSAgICAgICBOSV9OVU1FUklDSE9TVCB8IE5J X05VTUVSSUNTRVJWKSA9PSAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiUmVtb3RlIGRl YnVnZ2luZyBmcm9tIGhvc3QgJXMsIHBvcnQgJXNcbiIsCi0rCQkgICBvcmlnX2hvc3QsIG9yaWdf cG9ydCk7Ci0rCSAgZmZsdXNoIChzdGRlcnIpOwotKwl9Ci0rCi0gI2lmbmRlZiBVU0VfV0lOMzJB UEkKLSAgICAgICBjbG9zZSAodG1wX2Rlc2MpOwkJLyogTm8gbG9uZ2VyIG5lZWQgdGhpcyAqLwot IAotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMgYi9nZGIvZ2Ric2Vy dmVyL3JlbW90ZS11dGlscy5jCi0tLS0gYS9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCi0r KysgYi9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCi1AQCAtMjYsNiArMjYsOCBAQAotICNp bmNsdWRlICJkbGwuaCIKLSAjaW5jbHVkZSAicnNwLWxvdy5oIgotICNpbmNsdWRlICJnZGJ0aHJl YWQuaCIKLSsjaW5jbHVkZSAibmV0c3R1ZmYuaCIKLSsjaW5jbHVkZSAiZmlsZXN0dWZmLmgiCi0g I2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2lmIEhBVkVfU1lTX0lPQ1RMX0gKLSAjaW5jbHVkZSA8c3lz L2lvY3RsLmg+Ci1AQCAtNjMsNiArNjUsNyBAQAotIAotICNpZiBVU0VfV0lOMzJBUEkKLSAjaW5j bHVkZSA8d2luc29jazIuaD4KLSsjaW5jbHVkZSA8d3NwaWFwaS5oPgotICNlbmRpZgotIAotICNp ZiBfX1FOWF9fCi1AQCAtMTUxLDE5ICsxNTQsMTggQEAgZW5hYmxlX2FzeW5jX25vdGlmaWNhdGlv biAoaW50IGZkKQotIHN0YXRpYyBpbnQKLSBoYW5kbGVfYWNjZXB0X2V2ZW50IChpbnQgZXJyLCBn ZGJfY2xpZW50X2RhdGEgY2xpZW50X2RhdGEpCi0gewotLSAgc3RydWN0IHNvY2thZGRyX2luIHNv Y2thZGRyOwotLSAgc29ja2xlbl90IHRtcDsKLSsgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNv Y2thZGRyOwotKyAgc29ja2xlbl90IGxlbiA9IHNpemVvZiAoc29ja2FkZHIpOwotIAotICAgaWYg KGRlYnVnX3RocmVhZHMpCi0gICAgIGRlYnVnX3ByaW50ZiAoImhhbmRsaW5nIHBvc3NpYmxlIGFj Y2VwdCBldmVudFxuIik7Ci0gCi0tICB0bXAgPSBzaXplb2YgKHNvY2thZGRyKTsKLS0gIHJlbW90 ZV9kZXNjID0gYWNjZXB0IChsaXN0ZW5fZGVzYywgKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2Fk ZHIsICZ0bXApOwotKyAgcmVtb3RlX2Rlc2MgPSBhY2NlcHQgKGxpc3Rlbl9kZXNjLCAoc3RydWN0 IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbik7Ci0gICBpZiAocmVtb3RlX2Rlc2MgPT0gLTEp Ci0gICAgIHBlcnJvcl93aXRoX25hbWUgKCJBY2NlcHQgZmFpbGVkIik7Ci0gCi0gICAvKiBFbmFi bGUgVENQIGtlZXAgYWxpdmUgcHJvY2Vzcy4gKi8KLS0gIHRtcCA9IDE7Ci0rICBzb2NrbGVuX3Qg dG1wID0gMTsKLSAgIHNldHNvY2tvcHQgKHJlbW90ZV9kZXNjLCBTT0xfU09DS0VULCBTT19LRUVQ QUxJVkUsCi0gCSAgICAgIChjaGFyICopICZ0bXAsIHNpemVvZiAodG1wKSk7Ci0gCi1AQCAtMTky LDggKzE5NCwxOSBAQCBoYW5kbGVfYWNjZXB0X2V2ZW50IChpbnQgZXJyLCBnZGJfY2xpZW50X2Rh dGEgY2xpZW50X2RhdGEpCi0gICBkZWxldGVfZmlsZV9oYW5kbGVyIChsaXN0ZW5fZGVzYyk7Ci0g Ci0gICAvKiBDb252ZXJ0IElQIGFkZHJlc3MgdG8gc3RyaW5nLiAgKi8KLS0gIGZwcmludGYgKHN0 ZGVyciwgIlJlbW90ZSBkZWJ1Z2dpbmcgZnJvbSBob3N0ICVzXG4iLAotLQkgICBpbmV0X250b2Eg KHNvY2thZGRyLnNpbl9hZGRyKSk7Ci0rICBjaGFyIG9yaWdfaG9zdFtHREJfTklfTUFYX0FERFJd LCBvcmlnX3BvcnRbR0RCX05JX01BWF9QT1JUXTsKLSsKLSsgIGludCByID0gZ2V0bmFtZWluZm8g KChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCBsZW4sCi0rCQkgICAgICAgb3JpZ19ob3N0 LCBzaXplb2YgKG9yaWdfaG9zdCksCi0rCQkgICAgICAgb3JpZ19wb3J0LCBzaXplb2YgKG9yaWdf cG9ydCksCi0rCQkgICAgICAgTklfTlVNRVJJQ0hPU1QgfCBOSV9OVU1FUklDU0VSVik7Ci0rCi0r ICBpZiAociAhPSAwKQotKyAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkNvdWxkIG5vdCBvYnRhaW4g cmVtb3RlIGFkZHJlc3M6ICVzXG4iKSwKLSsJICAgICBnYWlfc3RyZXJyb3IgKHIpKTsKLSsgIGVs c2UKLSsgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJSZW1vdGUgZGVidWdnaW5nIGZyb20gaG9zdCAl cywgcG9ydCAlc1xuIiksCi0rCSAgICAgb3JpZ19ob3N0LCBvcmlnX3BvcnQpOwotIAotICAgZW5h YmxlX2FzeW5jX25vdGlmaWNhdGlvbiAocmVtb3RlX2Rlc2MpOwotIAotQEAgLTIyMiwxMCArMjM1 LDcgQEAgcmVtb3RlX3ByZXBhcmUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gI2lmZGVmIFVTRV9XSU4z MkFQSQotICAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxpemVkOwotICNlbmRpZgotLSAgaW50 IHBvcnQ7Ci0tICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7Ci0gICBzb2NrbGVuX3QgdG1w OwotLSAgY2hhciAqcG9ydF9lbmQ7Ci0gCi0gICByZW1vdGVfaXNfc3RkaW8gPSAwOwotICAgaWYg KHN0cmNtcCAobmFtZSwgU1RESU9fQ09OTkVDVElPTl9OQU1FKSA9PSAwKQotQEAgLTIzOCwxNyAr MjQ4LDI1IEBAIHJlbW90ZV9wcmVwYXJlIChjb25zdCBjaGFyICpuYW1lKQotICAgICAgIHJldHVy bjsKLSAgICAgfQotIAotLSAgcG9ydF9zdHIgPSBzdHJjaHIgKG5hbWUsICc6Jyk7Ci0tICBpZiAo cG9ydF9zdHIgPT0gTlVMTCkKLSsgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotKyAgc3RydWN0IGFk ZHJpbmZvICphaW5mbzsKLSsKLSsgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkpOwot KyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3Vs ZCB1c2UKLSsgICAgIEFGX1VOU1BFQy4gICovCi0rICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BF QzsKLSsgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKLSsgIGhpbnQuYWlfcHJvdG9j b2wgPSBJUFBST1RPX1RDUDsKLSsKLSsgIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMgcGFyc2VkCi0r ICAgID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChuYW1lLCAmaGludCk7 Ci0rCi0rICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQotICAgICB7Ci0gICAgICAgY3Mu dHJhbnNwb3J0X2lzX3JlbGlhYmxlID0gMDsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0g IHBvcnQgPSBzdHJ0b3VsIChwb3J0X3N0ciArIDEsICZwb3J0X2VuZCwgMTApOwotLSAgaWYgKHBv cnRfc3RyWzFdID09ICdcMCcgfHwgKnBvcnRfZW5kICE9ICdcMCcpCi0tICAgIGVycm9yICgiQmFk IHBvcnQgYXJndW1lbnQ6ICVzIiwgbmFtZSk7Ci0tCi0gI2lmZGVmIFVTRV9XSU4zMkFQSQotICAg aWYgKCF3aW5zb2NrX2luaXRpYWxpemVkKQotICAgICB7Ci1AQCAtMjU5LDggKzI3NywyNiBAQCBy ZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgICAgfQotICNlbmRpZgotIAotLSAg bGlzdGVuX2Rlc2MgPSBzb2NrZXQgKFBGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7 Ci0tICBpZiAobGlzdGVuX2Rlc2MgPT0gLTEpCi0rICBpbnQgciA9IGdldGFkZHJpbmZvIChwYXJz ZWQuaG9zdF9zdHIuY19zdHIgKCksIHBhcnNlZC5wb3J0X3N0ci5jX3N0ciAoKSwKLSsJCSAgICAg ICAmaGludCwgJmFpbmZvKTsKLSsKLSsgIGlmIChyICE9IDApCi0rICAgIGVycm9yIChfKCIlczog Y2Fubm90IHJlc29sdmUgbmFtZTogJXMiKSwgbmFtZSwgZ2FpX3N0cmVycm9yIChyKSk7Ci0rCi0r ICBzY29wZWRfZnJlZV9hZGRyaW5mbyBmcmVlYWRkcmluZm8gKGFpbmZvKTsKLSsKLSsgIHN0cnVj dCBhZGRyaW5mbyAqaXRlcjsKLSsKLSsgIGZvciAoaXRlciA9IGFpbmZvOyBpdGVyICE9IE5VTEw7 IGl0ZXIgPSBpdGVyLT5haV9uZXh0KQotKyAgICB7Ci0rICAgICAgbGlzdGVuX2Rlc2MgPSBnZGJf c29ja2V0X2Nsb2V4ZWMgKGl0ZXItPmFpX2ZhbWlseSwgaXRlci0+YWlfc29ja3R5cGUsCi0rCQkJ CQlpdGVyLT5haV9wcm90b2NvbCk7Ci0rCi0rICAgICAgaWYgKGxpc3Rlbl9kZXNjID49IDApCi0r CWJyZWFrOwotKyAgICB9Ci0rCi0rICBpZiAoaXRlciA9PSBOVUxMKQotICAgICBwZXJyb3Jfd2l0 aF9uYW1lICgiQ2FuJ3Qgb3BlbiBzb2NrZXQiKTsKLSAKLSAgIC8qIEFsbG93IHJhcGlkIHJldXNl IG9mIHRoaXMgcG9ydC4gKi8KLUBAIC0yNjgsMTQgKzMwNCwyNSBAQCByZW1vdGVfcHJlcGFyZSAo Y29uc3QgY2hhciAqbmFtZSkKLSAgIHNldHNvY2tvcHQgKGxpc3Rlbl9kZXNjLCBTT0xfU09DS0VU LCBTT19SRVVTRUFERFIsIChjaGFyICopICZ0bXAsCi0gCSAgICAgIHNpemVvZiAodG1wKSk7Ci0g Ci0tICBzb2NrYWRkci5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKLS0gIHNvY2thZGRyLnNpbl9wb3J0 ID0gaHRvbnMgKHBvcnQpOwotLSAgc29ja2FkZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FO WTsKLSsgIHN3aXRjaCAoaXRlci0+YWlfZmFtaWx5KQotKyAgICB7Ci0rICAgIGNhc2UgQUZfSU5F VDoKLSsgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSBpdGVyLT5haV9hZGRyKS0+c2luX2Fk ZHIuc19hZGRyID0gSU5BRERSX0FOWTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBBRl9JTkVU NjoKLSsgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgaXRlci0+YWlfYWRkciktPnNpbjZf YWRkciA9IGluNmFkZHJfYW55OwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAg IGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgICBfKCJJbnZhbGlk ICdhaV9mYW1pbHknICVkXG4iKSwgaXRlci0+YWlfZmFtaWx5KTsKLSsgICAgfQotIAotLSAgaWYg KGJpbmQgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgc2l6ZW9m IChzb2NrYWRkcikpCi0tICAgICAgfHwgbGlzdGVuIChsaXN0ZW5fZGVzYywgMSkpCi0rICBpZiAo YmluZCAobGlzdGVuX2Rlc2MsIGl0ZXItPmFpX2FkZHIsIGl0ZXItPmFpX2FkZHJsZW4pICE9IDAp Ci0gICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsKLSAKLSsgIGlm IChsaXN0ZW4gKGxpc3Rlbl9kZXNjLCAxKSAhPSAwKQotKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgi Q2FuJ3QgbGlzdGVuIG9uIHNvY2tldCIpOwotKwotICAgY3MudHJhbnNwb3J0X2lzX3JlbGlhYmxl ID0gMTsKLSB9Ci0gCi1AQCAtMzUwLDE4ICszOTcsMjQgQEAgcmVtb3RlX29wZW4gKGNvbnN0IGNo YXIgKm5hbWUpCi0gI2VuZGlmIC8qIFVTRV9XSU4zMkFQSSAqLwotICAgZWxzZQotICAgICB7Ci0t ICAgICAgaW50IHBvcnQ7Ci0tICAgICAgc29ja2xlbl90IGxlbjsKLS0gICAgICBzdHJ1Y3Qgc29j a2FkZHJfaW4gc29ja2FkZHI7Ci0tCi0tICAgICAgbGVuID0gc2l6ZW9mIChzb2NrYWRkcik7Ci0t ICAgICAgaWYgKGdldHNvY2tuYW1lIChsaXN0ZW5fZGVzYywKLS0JCSAgICAgICAoc3RydWN0IHNv Y2thZGRyICopICZzb2NrYWRkciwgJmxlbikgPCAwCi0tCSAgfHwgbGVuIDwgc2l6ZW9mIChzb2Nr YWRkcikpCi0rICAgICAgY2hhciBsaXN0ZW5fcG9ydFtHREJfTklfTUFYX1BPUlRdOwotKyAgICAg IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOwotKyAgICAgIHNvY2tsZW5fdCBsZW4g PSBzaXplb2YgKHNvY2thZGRyKTsKLSsKLSsgICAgICBpZiAoZ2V0c29ja25hbWUgKGxpc3Rlbl9k ZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbikgPCAwKQotIAlwZXJyb3Jf d2l0aF9uYW1lICgiQ2FuJ3QgZGV0ZXJtaW5lIHBvcnQiKTsKLS0gICAgICBwb3J0ID0gbnRvaHMg KHNvY2thZGRyLnNpbl9wb3J0KTsKLSAKLS0gICAgICBmcHJpbnRmIChzdGRlcnIsICJMaXN0ZW5p bmcgb24gcG9ydCAlZFxuIiwgcG9ydCk7Ci0rICAgICAgaW50IHIgPSBnZXRuYW1laW5mbyAoKHN0 cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIGxlbiwKLSsJCQkgICBOVUxMLCAwLAotKwkJCSAg IGxpc3Rlbl9wb3J0LCBzaXplb2YgKGxpc3Rlbl9wb3J0KSwKLSsJCQkgICBOSV9OVU1FUklDU0VS Vik7Ci0rCi0rICAgICAgaWYgKHIgIT0gMCkKLSsJZnByaW50ZiAoc3RkZXJyLCBfKCJDYW4ndCBv YnRhaW4gcG9ydCB3aGVyZSB3ZSBhcmUgbGlzdGVuaW5nOiAlcyIpLAotKwkJIGdhaV9zdHJlcnJv ciAocikpOwotKyAgICAgIGVsc2UKLSsJZnByaW50ZiAoc3RkZXJyLCBfKCJMaXN0ZW5pbmcgb24g cG9ydCAlc1xuIiksIGxpc3Rlbl9wb3J0KTsKLSsKLSAgICAgICBmZmx1c2ggKHN0ZGVycik7Ci0g Ci0gICAgICAgLyogUmVnaXN0ZXIgdGhlIGV2ZW50IGxvb3AgaGFuZGxlci4gICovCi1kaWZmIC0t Z2l0IGEvZ2RiL3Nlci10Y3AuYyBiL2dkYi9zZXItdGNwLmMKLS0tLSBhL2dkYi9zZXItdGNwLmMK LSsrKyBiL2dkYi9zZXItdGNwLmMKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2luY2x1ZGUgImNsaS9j bGktZGVjb2RlLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgotICNpbmNsdWRlICJm aWxlc3R1ZmYuaCIKLSsjaW5jbHVkZSAibmV0c3R1ZmYuaCIKLSAKLSAjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+Ci0gCi1AQCAtMzksNiArNDAsNyBAQAotIAotICNpZmRlZiBVU0VfV0lOMzJBUEkKLSAj aW5jbHVkZSA8d2luc29jazIuaD4KLSsjaW5jbHVkZSA8d3NwaWFwaS5oPgotICNpZm5kZWYgRVRJ TUVET1VUCi0gI2RlZmluZSBFVElNRURPVVQgV1NBRVRJTUVET1VUCi0gI2VuZGlmCi1AQCAtODEs MTIgKzgzLDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwX3JldHJ5X2xpbWl0ID0gMTU7Ci0g Ci0gI2RlZmluZSBQT0xMX0lOVEVSVkFMIDUKLSAKLS0vKiBIZWxwZXIgZnVuY3Rpb24gdG8gd2Fp dCBhIHdoaWxlLiAgSWYgU0NCIGlzIG5vbi1udWxsLCB3YWl0IG9uIGl0cwotLSAgIGZpbGUgZGVz Y3JpcHRvci4gIE90aGVyd2lzZSBqdXN0IHdhaXQgb24gYSB0aW1lb3V0LCB1cGRhdGluZyAqUE9M TFMuCi0tICAgUmV0dXJucyAtMSBvbiB0aW1lb3V0IG9yIGludGVycnVwdCwgb3RoZXJ3aXNlIHRo ZSB2YWx1ZSBvZiBzZWxlY3QuICAqLwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byB3YWl0IGEgd2hp bGUuICBJZiBTT0NLIGlzIG5vdCAtMSwgd2FpdCBvbiBpdHMKLSsgICBmaWxlIGRlc2NyaXB0b3Iu ICBPdGhlcndpc2UganVzdCB3YWl0IG9uIGEgdGltZW91dCwgdXBkYXRpbmcKLSsgICAqUE9MTFMu ICBSZXR1cm5zIC0xIG9uIHRpbWVvdXQgb3IgaW50ZXJydXB0LCBvdGhlcndpc2UgdGhlIHZhbHVl IG9mCi0rICAgc2VsZWN0LiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0td2FpdF9mb3JfY29ubmVjdCAo c3RydWN0IHNlcmlhbCAqc2NiLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQotK3dhaXRfZm9yX2Nvbm5l Y3QgKGludCBzb2NrLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQotIHsKLSAgIHN0cnVjdCB0aW1ldmFs IHQ7Ci0gICBpbnQgbjsKLUBAIC0xMjAsMjQgKzEyMywyNCBAQCB3YWl0X2Zvcl9jb25uZWN0IChz dHJ1Y3Qgc2VyaWFsICpzY2IsIHVuc2lnbmVkIGludCAqcG9sbHMpCi0gICAgICAgdC50dl91c2Vj ID0gMDsKLSAgICAgfQotIAotLSAgaWYgKHNjYikKLSsgIGlmIChzb2NrID49IDApCi0gICAgIHsK LSAgICAgICBmZF9zZXQgcnNldCwgd3NldCwgZXNldDsKLSAKLSAgICAgICBGRF9aRVJPICgmcnNl dCk7Ci0tICAgICAgRkRfU0VUIChzY2ItPmZkLCAmcnNldCk7Ci0rICAgICAgRkRfU0VUIChzb2Nr LCAmcnNldCk7Ci0gICAgICAgd3NldCA9IHJzZXQ7Ci0gICAgICAgZXNldCA9IHJzZXQ7Ci0tCSAg Ci0rCi0gICAgICAgLyogUE9TSVggc3lzdGVtcyByZXR1cm4gY29ubmVjdGlvbiBzdWNjZXNzIG9y IGZhaWx1cmUgYnkgc2lnbmFsbGluZwotIAkgd3NldC4gIFdpbmRvd3Mgc3lzdGVtcyByZXR1cm4g c3VjY2VzcyBpbiB3c2V0IGFuZCBmYWlsdXJlIGluCi0gCSBlc2V0LgotLSAgICAgCi0rCi0gCSBX ZSBtdXN0IGNhbGwgc2VsZWN0IGhlcmUsIHJhdGhlciB0aGFuIGdkYl9zZWxlY3QsIGJlY2F1c2UK LSAJIHRoZSBzZXJpYWwgc3RydWN0dXJlIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQgLSB0 aGUKLSAJIE1pbkdXIHNlbGVjdCB3cmFwcGVyIHdpbGwgbm90IGtub3cgdGhhdCB0aGlzIEZEIHJl ZmVycwotIAkgdG8gYSBzb2NrZXQuICAqLwotLSAgICAgIG4gPSBzZWxlY3QgKHNjYi0+ZmQgKyAx LCAmcnNldCwgJndzZXQsICZlc2V0LCAmdCk7Ci0rICAgICAgbiA9IHNlbGVjdCAoc29jayArIDEs ICZyc2V0LCAmd3NldCwgJmVzZXQsICZ0KTsKLSAgICAgfQotICAgZWxzZQotICAgICAvKiBVc2Ug Z2RiX3NlbGVjdCBoZXJlLCBzaW5jZSB3ZSBoYXZlIG5vIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCBv bgotQEAgLTE1Myw4MCArMTU2LDI4IEBAIHdhaXRfZm9yX2Nvbm5lY3QgKHN0cnVjdCBzZXJpYWwg KnNjYiwgdW5zaWduZWQgaW50ICpwb2xscykKLSAgIHJldHVybiBuOwotIH0KLSAKLS0vKiBPcGVu IGEgdGNwIHNvY2tldC4gICovCi0rLyogVHJ5IHRvIGNvbm5lY3QgdG8gdGhlIGhvc3QgcmVwcmVz ZW50ZWQgYnkgQUlORk8uICBJZiB0aGUgY29ubmVjdGlvbgotKyAgIHN1Y2NlZWRzLCByZXR1cm4g aXRzIHNvY2tldC4gIE90aGVyd2lzZSwgcmV0dXJuIC0xIGFuZCBzZXQgRVJSTk8KLSsgICBhY2Nv cmRpbmdseS4gIFBPTExTIGlzIHVzZWQgd2hlbiAnY29ubmVjdCcgcmV0dXJucyBFSU5QUk9HUkVT UywgYW5kCi0rICAgd2UgbmVlZCB0byBpbnZva2UgJ3dhaXRfZm9yX2Nvbm5lY3QnIHRvIG9idGFp biB0aGUgc3RhdHVzLiAgKi8KLSAKLS1pbnQKLS1uZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2Ni LCBjb25zdCBjaGFyICpuYW1lKQotK3N0YXRpYyBpbnQKLSt0cnlfY29ubmVjdCAoY29uc3Qgc3Ry dWN0IGFkZHJpbmZvICphaW5mbywgdW5zaWduZWQgaW50ICpwb2xscykKLSB7Ci0tICBjaGFyIGhv c3RuYW1lWzEwMF07Ci0tICBjb25zdCBjaGFyICpwb3J0X3N0cjsKLS0gIGludCBuLCBwb3J0LCB0 bXA7Ci0tICBpbnQgdXNlX3VkcDsKLS0gIHN0cnVjdCBob3N0ZW50ICpob3N0ZW50OwotLSAgc3Ry dWN0IHNvY2thZGRyX2luIHNvY2thZGRyOwotLSNpZmRlZiBVU0VfV0lOMzJBUEkKLS0gIHVfbG9u ZyBpb2FyZzsKLS0jZWxzZQotLSAgaW50IGlvYXJnOwotLSNlbmRpZgotLSAgdW5zaWduZWQgaW50 IHBvbGxzID0gMDsKLS0KLS0gIHVzZV91ZHAgPSAwOwotLSAgaWYgKHN0YXJ0c3dpdGggKG5hbWUs ICJ1ZHA6IikpCi0tICAgIHsKLS0gICAgICB1c2VfdWRwID0gMTsKLS0gICAgICBuYW1lID0gbmFt ZSArIDQ7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKHN0YXJ0c3dpdGggKG5hbWUsICJ0Y3A6IikpCi0t ICAgIG5hbWUgPSBuYW1lICsgNDsKLS0KLS0gIHBvcnRfc3RyID0gc3RyY2hyIChuYW1lLCAnOicp OwotLQotLSAgaWYgKCFwb3J0X3N0cikKLS0gICAgZXJyb3IgKF8oIm5ldF9vcGVuOiBObyBjb2xv biBpbiBob3N0IG5hbWUhIikpOyAgLyogU2hvdWxkbid0IGV2ZXIKLS0JCQkJCQkgICAgICAgaGFw cGVuLiAgKi8KLS0KLS0gIHRtcCA9IHN0ZDo6bWluIChwb3J0X3N0ciAtIG5hbWUsIChwdHJkaWZm X3QpIHNpemVvZiBob3N0bmFtZSAtIDEpOwotLSAgc3RybmNweSAoaG9zdG5hbWUsIG5hbWUsIHRt cCk7CS8qIERvbid0IHdhbnQgY29sb24uICAqLwotLSAgaG9zdG5hbWVbdG1wXSA9ICdcMDAwJzsJ LyogVGllIG9mZiBob3N0IG5hbWUuICAqLwotLSAgcG9ydCA9IGF0b2kgKHBvcnRfc3RyICsgMSk7 Ci0tCi0tICAvKiBEZWZhdWx0IGhvc3RuYW1lIGlzIGxvY2FsaG9zdC4gICovCi0tICBpZiAoIWhv c3RuYW1lWzBdKQotLSAgICBzdHJjcHkgKGhvc3RuYW1lLCAibG9jYWxob3N0Iik7Ci0tCi0tICBo b3N0ZW50ID0gZ2V0aG9zdGJ5bmFtZSAoaG9zdG5hbWUpOwotLSAgaWYgKCFob3N0ZW50KQotLSAg ICB7Ci0tICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLCAiJXM6IHVua25vd24g aG9zdFxuIiwgaG9zdG5hbWUpOwotLSAgICAgIGVycm5vID0gRU5PRU5UOwotLSAgICAgIHJldHVy biAtMTsKLS0gICAgfQotKyAgaW50IHNvY2sgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKGFpbmZvLT5h aV9mYW1pbHksIGFpbmZvLT5haV9zb2NrdHlwZSwKLSsJCQkJIGFpbmZvLT5haV9wcm90b2NvbCk7 Ci0gCi0tICBzb2NrYWRkci5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKLS0gIHNvY2thZGRyLnNpbl9w b3J0ID0gaHRvbnMgKHBvcnQpOwotLSAgbWVtY3B5ICgmc29ja2FkZHIuc2luX2FkZHIuc19hZGRy LCBob3N0ZW50LT5oX2FkZHIsCi0tCSAgc2l6ZW9mIChzdHJ1Y3QgaW5fYWRkcikpOwotLQotLSBy ZXRyeToKLS0KLS0gIGlmICh1c2VfdWRwKQotLSAgICBzY2ItPmZkID0gZ2RiX3NvY2tldF9jbG9l eGVjIChQRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKLS0gIGVsc2UKLS0gICAgc2NiLT5mZCA9IGdk Yl9zb2NrZXRfY2xvZXhlYyAoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwotLQotLSAgaWYgKHNj Yi0+ZmQgPT0gLTEpCi0rICBpZiAoc29jayA8IDApCi0gICAgIHJldHVybiAtMTsKLS0gIAotKwot ICAgLyogU2V0IHNvY2tldCBub25ibG9ja2luZy4gICovCi0tICBpb2FyZyA9IDE7Ci0tICBpb2N0 bCAoc2NiLT5mZCwgRklPTkJJTywgJmlvYXJnKTsKLSsgIGludCBpb2FyZyA9IDE7Ci0rCi0rICBp b2N0bCAoc29jaywgRklPTkJJTywgJmlvYXJnKTsKLSAKLSAgIC8qIFVzZSBOb24tYmxvY2tpbmcg Y29ubmVjdC4gIGNvbm5lY3QoKSB3aWxsIHJldHVybiAwIGlmIGNvbm5lY3RlZAotICAgICAgYWxy ZWFkeS4gICovCi0tICBuID0gY29ubmVjdCAoc2NiLT5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAm c29ja2FkZHIsIHNpemVvZiAoc29ja2FkZHIpKTsKLS0KLS0gIGlmIChuIDwgMCkKLSsgIGlmIChj b25uZWN0IChzb2NrLCBhaW5mby0+YWlfYWRkciwgYWluZm8tPmFpX2FkZHJsZW4pIDwgMCkKLSAg ICAgewotICNpZmRlZiBVU0VfV0lOMzJBUEkKLSAgICAgICBpbnQgZXJyID0gV1NBR2V0TGFzdEVy cm9yKCk7Ci1AQCAtMjM0LDIxICsxODUsMjYgQEAgbmV0X29wZW4gKHN0cnVjdCBzZXJpYWwgKnNj YiwgY29uc3QgY2hhciAqbmFtZSkKLSAgICAgICBpbnQgZXJyID0gZXJybm87Ci0gI2VuZGlmCi0g Ci0tICAgICAgLyogTWF5YmUgd2UncmUgd2FpdGluZyBmb3IgdGhlIHJlbW90ZSB0YXJnZXQgdG8g YmVjb21lIHJlYWR5IHRvCi0tCSBhY2NlcHQgY29ubmVjdGlvbnMuICAqLwotLSAgICAgIGlmICh0 Y3BfYXV0b19yZXRyeQotKyAgICAgIC8qIElmIHdlJ3ZlIGdvdCBhICJjb25uZWN0aW9uIHJlZnVz ZWQiIGVycm9yLCBqdXN0IHJldHVybgotKwkgLTEuICBUaGUgY2FsbGVyIHdpbGwga25vdyB3aGF0 IHRvIGRvLiAgKi8KLSsgICAgICBpZiAoCi0gI2lmZGVmIFVTRV9XSU4zMkFQSQotLQkgICYmIGVy ciA9PSBXU0FFQ09OTlJFRlVTRUQKLSsJICBlcnIgPT0gV1NBRUNPTk5SRUZVU0VECi0gI2Vsc2UK LS0JICAmJiBlcnIgPT0gRUNPTk5SRUZVU0VECi0rCSAgZXJyID09IEVDT05OUkVGVVNFRAotICNl bmRpZgotLQkgICYmIHdhaXRfZm9yX2Nvbm5lY3QgKE5VTEwsICZwb2xscykgPj0gMCkKLSsJICAp Ci0gCXsKLS0JICBjbG9zZSAoc2NiLT5mZCk7Ci0tCSAgZ290byByZXRyeTsKLSsJICBjbG9zZSAo c29jayk7Ci0rCSAgZXJybm8gPSBlcnI7Ci0rCSAgcmV0dXJuIC0xOwotIAl9Ci0gCi0gICAgICAg aWYgKAotKwkgIC8qIEFueSBvdGhlciBlcnJvciAoZXhjZXB0IEVJTlBST0dSRVNTKSB3aWxsIGJl ICJzd2FsbG93ZWQiCi0rCSAgICAgaGVyZS4gIFdlIHJldHVybiB3aXRob3V0IHNwZWNpZnlpbmcg YSByZXR1cm4gdmFsdWUsIGFuZAotKwkgICAgIHNldCBlcnJubyBpZiB0aGUgY2FsbGVyIHdhbnRz IHRvIGluc3BlY3Qgd2hhdAotKwkgICAgIGhhcHBlbmVkLiAgKi8KLSAjaWZkZWYgVVNFX1dJTjMy QVBJCi0gCSAgLyogVW5kZXIgV2luZG93cywgY2FsbGluZyAiY29ubmVjdCIgd2l0aCBhIG5vbi1i bG9ja2luZyBzb2NrZXQKLSAJICAgICByZXN1bHRzIGluIFdTQUVXT1VMREJMT0NLLCBub3QgV1NB RUlOUFJPR1JFU1MuICAqLwotQEAgLTI1OCw2NiArMjE0LDE2NiBAQCBuZXRfb3BlbiAoc3RydWN0 IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQotICNlbmRpZgotIAkgICkKLSAJewotKwkg IGNsb3NlIChzb2NrKTsKLSAJICBlcnJubyA9IGVycjsKLS0JICBuZXRfY2xvc2UgKHNjYik7Ci0g CSAgcmV0dXJuIC0xOwotIAl9Ci0gCi0gICAgICAgLyogTG9va3MgbGlrZSB3ZSBuZWVkIHRvIHdh aXQgZm9yIHRoZSBjb25uZWN0LiAgKi8KLS0gICAgICBkbyAKLS0JewotLQkgIG4gPSB3YWl0X2Zv cl9jb25uZWN0IChzY2IsICZwb2xscyk7Ci0tCX0gCi0rICAgICAgaW50IG47Ci0rCi0rICAgICAg ZG8KLSsJbiA9IHdhaXRfZm9yX2Nvbm5lY3QgKHNvY2ssIHBvbGxzKTsKLSAgICAgICB3aGlsZSAo biA9PSAwKTsKLSsKLSAgICAgICBpZiAobiA8IDApCi0gCXsKLS0JICBuZXRfY2xvc2UgKHNjYik7 Ci0rCSAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87Ci0rCi0rCSAgLyogQSBuZWdhdGl2ZSB2YWx1 ZSBoZXJlIG1lYW5zIHRoYXQgd2UgZWl0aGVyIHRpbWVkIG91dCBvcgotKwkgICAgIGdvdCBpbnRl cnJ1cHRlZCBieSB0aGUgdXNlci4gIEp1c3QgcmV0dXJuLiAgKi8KLSsJICBjbG9zZSAoc29jayk7 Ci0rCSAgZXJybm8gPSBzYXZlZF9lcnJubzsKLSAJICByZXR1cm4gLTE7Ci0gCX0KLSAgICAgfQot IAotICAgLyogR290IHNvbWV0aGluZy4gIElzIGl0IGFuIGVycm9yPyAgKi8KLS0gIHsKLS0gICAg aW50IHJlcywgZXJyOwotLSAgICBzb2NrbGVuX3QgbGVuOwotLQotLSAgICBsZW4gPSBzaXplb2Yg KGVycik7Ci0tICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBmb3VydGggcGFyYW1ldGVyIHRvIGdldHNv Y2tvcHQgaXMgYSAiY2hhciAqIjsKLS0gICAgICAgb24gVU5JWCBzeXN0ZW1zIGl0IGlzIGdlbmVy YWxseSAidm9pZCAqIi4gIFRoZSBjYXN0IHRvICJjaGFyICoiCi0tICAgICAgIGlzIE9LIGV2ZXJ5 d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0YSBwb2ludGVyIHR5cGUgY2FuIGJlCi0tICAgICAg IGltcGxpY2l0bHkgY29udmVydGVkIHRvICJ2b2lkICoiLiAgKi8KLS0gICAgcmVzID0gZ2V0c29j a29wdCAoc2NiLT5mZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsIChjaGFyICopICZlcnIsICZsZW4p OwotLSAgICBpZiAocmVzIDwgMCB8fCBlcnIpCi0tICAgICAgewotLQkvKiBNYXliZSB0aGUgdGFy Z2V0IHN0aWxsIGlzbid0IHJlYWR5IHRvIGFjY2VwdCB0aGUgY29ubmVjdGlvbi4gICovCi0tCWlm ICh0Y3BfYXV0b19yZXRyeQotKyAgaW50IGVycjsKLSsgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2Yg KGVycik7Ci0rCi0rICAvKiBPbiBXaW5kb3dzLCB0aGUgZm91cnRoIHBhcmFtZXRlciB0byBnZXRz b2Nrb3B0IGlzIGEgImNoYXIgKiI7Ci0rICAgICBvbiBVTklYIHN5c3RlbXMgaXQgaXMgZ2VuZXJh bGx5ICJ2b2lkICoiLiAgVGhlIGNhc3QgdG8gImNoYXIgKiIKLSsgICAgIGlzIE9LIGV2ZXJ5d2hl cmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0YSBwb2ludGVyIHR5cGUgY2FuIGJlCi0rICAgICBpbXBs aWNpdGx5IGNvbnZlcnRlZCB0byAidm9pZCAqIi4gICovCi0rICBpbnQgcmV0ID0gZ2V0c29ja29w dCAoc29jaywgU09MX1NPQ0tFVCwgU09fRVJST1IsIChjaGFyICopICZlcnIsICZsZW4pOwotKwot KyAgaWYgKHJldCA8IDApCi0rICAgIHsKLSsgICAgICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsK LSsKLSsgICAgICBjbG9zZSAoc29jayk7Ci0rICAgICAgZXJybm8gPSBzYXZlZF9lcnJubzsKLSsg ICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJldCA9PSAwICYmIGVyciAhPSAw KQotKyAgICB7Ci0rICAgICAgY2xvc2UgKHNvY2spOwotKyAgICAgIGVycm5vID0gZXJyOwotKyAg ICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgLyogVGhlIGNvbm5lY3Rpb24gc3VjY2VlZGVk LiAgUmV0dXJuIHRoZSBzb2NrZXQuICAqLwotKyAgcmV0dXJuIHNvY2s7Ci0rfQotKwotKy8qIE9w ZW4gYSB0Y3Agc29ja2V0LiAgKi8KLSsKLStpbnQKLStuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAq c2NiLCBjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotKyAg c3RydWN0IGFkZHJpbmZvICphaW5mbzsKLSsKLSsgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAo aGludCkpOwotKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3Jl IHdlIHNob3VsZCB1c2UKLSsgICAgIEFGX1VOU1BFQy4gICovCi0rICBoaW50LmFpX2ZhbWlseSA9 IEFGX1VOU1BFQzsKLSsgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKLSsgIGhpbnQu YWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKLSsKLSsgIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMg cGFyc2VkID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChuYW1lLCAmaGludCk7Ci0rCi0rICBpZiAo cGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQotKyAgICBlcnJvciAoXygiTWlzc2luZyBwb3J0IG9u IGhvc3RuYW1lICclcyciKSwgbmFtZSk7Ci0rCi0rICBpbnQgciA9IGdldGFkZHJpbmZvIChwYXJz ZWQuaG9zdF9zdHIuY19zdHIgKCksCi0rCQkgICAgICAgcGFyc2VkLnBvcnRfc3RyLmNfc3RyICgp LAotKwkJICAgICAgICZoaW50LCAmYWluZm8pOwotKwotKyAgaWYgKHIgIT0gMCkKLSsgICAgewot KyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgXygiJXM6IGNhbm5vdCByZXNv bHZlIG5hbWU6ICVzXG4iKSwKLSsJCQkgIG5hbWUsIGdhaV9zdHJlcnJvciAocikpOwotKyAgICAg IGVycm5vID0gRU5PRU5UOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgc2NvcGVk X2ZyZWVfYWRkcmluZm8gZnJlZV9haW5mbyAoYWluZm8pOwotKwotKyAgLyogRmxhZyB0byBpbmRp Y2F0ZSB3aGV0aGVyIHdlJ3ZlIGdvdCBhIGNvbm5lY3Rpb24gcmVmdXNlZC4gIEl0IHdpbGwKLSsg ICAgIGJlIHRydWUgaWYgYW55IG9mIHRoZSBjb25uZWN0aW9ucyB0cmllZCB3YXMgcmVmdXNlZC4g ICovCi0rICBib29sIGdvdF9jb25ucmVmdXNlZDsKLSsgIC8qIElmIGEgY29ubmVjdGlvbiBzdWNj ZWVlZHMsIFNVQ0NFU1NfQUlORk8gd2lsbCBwb2ludCB0byB0aGUKLSsgICAgICdzdHJ1Y3QgYWRk cmluZm8nIHRoYXQgc3VjY2VlZC4gICovCi0rICBzdHJ1Y3QgYWRkcmluZm8gKnN1Y2Nlc3NfYWlu Zm8gPSBOVUxMOwotKyAgdW5zaWduZWQgaW50IHBvbGxzID0gMDsKLSsKLSsgIC8qIEFzc3VtZSB0 aGUgd29yc3QuICAqLwotKyAgc2NiLT5mZCA9IC0xOwotKwotKyAgZG8KLSsgICAgewotKyAgICAg IGdvdF9jb25ucmVmdXNlZCA9IGZhbHNlOwotKwotKyAgICAgIGZvciAoc3RydWN0IGFkZHJpbmZv ICppdGVyID0gYWluZm87IGl0ZXIgIT0gTlVMTDsgaXRlciA9IGl0ZXItPmFpX25leHQpCi0rCXsK LSsJICAvKiBJdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcG9zc2libGUgYWRkcmVzc2VzIHRvIGNv bm5lY3QKLSsJICAgICB0by4gIEZvciBlYWNoLCB3ZSdsbCB0cnkgdG8gY29ubmVjdCBhbmQgc2Vl IGlmIGl0Ci0rCSAgICAgc3VjY2VlZHMuICAqLwotKwkgIGludCBzb2NrID0gdHJ5X2Nvbm5lY3Qg KGl0ZXIsICZwb2xscyk7Ci0rCi0rCSAgaWYgKHNvY2sgPj0gMCkKLSsJICAgIHsKLSsJICAgICAg LyogV2UndmUgZ290dGVuIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uLiAgU2F2ZSBpdHMKLSsJCSAn c3RydWN0IGFkZHJpbmZvJywgdGhlIHNvY2tldCwgYW5kIGJyZWFrLiAgKi8KLSsJICAgICAgc3Vj Y2Vzc19haW5mbyA9IGl0ZXI7Ci0rCSAgICAgIHNjYi0+ZmQgPSBzb2NrOwotKwkgICAgICBicmVh azsKLSsJICAgIH0KLSsJICBlbHNlIGlmICgKLSAjaWZkZWYgVVNFX1dJTjMyQVBJCi0tCSAgICAm JiBlcnIgPT0gV1NBRUNPTk5SRUZVU0VECi0rCSAgZXJybm8gPT0gV1NBRUNPTk5SRUZVU0VECi0g I2Vsc2UKLS0JICAgICYmIGVyciA9PSBFQ09OTlJFRlVTRUQKLSsJICBlcnJubyA9PSBFQ09OTlJF RlVTRUQKLSAjZW5kaWYKLS0JICAgICYmIHdhaXRfZm9yX2Nvbm5lY3QgKE5VTEwsICZwb2xscykg Pj0gMCkKLS0JICB7Ci0tCSAgICBjbG9zZSAoc2NiLT5mZCk7Ci0tCSAgICBnb3RvIHJldHJ5Owot LQkgIH0KLS0JaWYgKGVycikKLS0JICBlcnJubyA9IGVycjsKLS0JbmV0X2Nsb3NlIChzY2IpOwot LQlyZXR1cm4gLTE7Ci0tICAgICAgfQotLSAgfSAKLSsJCSAgICkKLSsJICAgIGdvdF9jb25ucmVm dXNlZCA9IHRydWU7Ci0rCX0KLSsgICAgfQotKyAgLyogSnVzdCByZXRyeSBpZjoKLSsKLSsgICAg IC0gdGNwX2F1dG9fcmV0cnkgaXMgdHJ1ZSwgYW5kCi0rICAgICAtIFdlIGhhdmVuJ3QgZ290dGVu IGEgY29ubmVjdGlvbiB5ZXQsIGFuZAotKyAgICAgLSBBbnkgb2Ygb3VyIGNvbm5lY3Rpb24gYXR0 ZW1wdHMgcmV0dXJuZWQgd2l0aCBFQ09OTlJFRlVTRUQsIGFuZAotKyAgICAgLSB3YWl0X2Zvcl9j b25uZWN0IHNpZ25hbHMgdGhhdCB3ZSBjYW4ga2VlcCBnb2luZy4gICovCi0rICB3aGlsZSAodGNw X2F1dG9fcmV0cnkKLSsJICYmIHN1Y2Nlc3NfYWluZm8gPT0gTlVMTAotKwkgJiYgZ290X2Nvbm5y ZWZ1c2VkCi0rCSAmJiB3YWl0X2Zvcl9jb25uZWN0ICgtMSwgJnBvbGxzKSA+PSAwKTsKLSsKLSsg IGlmIChzdWNjZXNzX2FpbmZvID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBuZXRfY2xvc2UgKHNj Yik7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0gCi0gICAvKiBUdXJuIG9mZiBub25ibG9j a2luZy4gICovCi0tICBpb2FyZyA9IDA7Ci0rI2lmZGVmIFVTRV9XSU4zMkFQSQotKyAgdV9sb25n IGlvYXJnID0gMDsKLSsjZWxzZQotKyAgaW50IGlvYXJnID0gMDsKLSsjZW5kaWYKLSsKLSAgIGlv Y3RsIChzY2ItPmZkLCBGSU9OQklPLCAmaW9hcmcpOwotIAotLSAgaWYgKHVzZV91ZHAgPT0gMCkK LSsgIGlmIChzdWNjZXNzX2FpbmZvLT5haV9zb2NrdHlwZSA9PSBJUFBST1RPX1RDUCkKLSAgICAg ewotICAgICAgIC8qIERpc2FibGUgTmFnbGUgYWxnb3JpdGhtLiAgTmVlZGVkIGluIHNvbWUgY2Fz ZXMuICAqLwotLSAgICAgIHRtcCA9IDE7Ci0rICAgICAgaW50IHRtcCA9IDE7Ci0rCi0gICAgICAg c2V0c29ja29wdCAoc2NiLT5mZCwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLAotLQkJICAoY2hh ciAqKSZ0bXAsIHNpemVvZiAodG1wKSk7Ci0rCQkgIChjaGFyICopICZ0bXAsIHNpemVvZiAodG1w KSk7Ci0gICAgIH0KLSAKLSAjaWZkZWYgU0lHUElQRQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCi0rKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotQEAgLTEsMyArMSwy MyBAQAotKzIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhh dC5jb20+Ci0rCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotKwkgICAgVHN1dG9t dSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgotKwotKwkqIFJFQURNRSAoVGVzdHN1aXRlIFBh cmFtZXRlcnMpOiBNZW50aW9uIG5ldyAnR0RCX1RFU1RfU09DS0VUSE9TVCcKLSsJcGFyYW1ldGVy LgotKwkqIGJvYXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2VydmVyLmV4cDogRG8gbm90IHNldCAn c29ja2V0aG9zdCcKLSsJYnkgZGVmYXVsdC4KLSsJKiBib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5l eHA6IExpa2V3aXNlLgotKwkqIGdkYi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4 cDogSW1wcm92ZSByZWdleHAgdXNlZAotKwlmb3IgZGV0ZWN0aW5nIHdoZW4gYSByZW1vdGUgZGVi dWdnaW5nIGNvbm5lY3Rpb24gc3VjY2VlZHMuCi0rCSogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVj dC5leHA6IE5ldyBmaWxlLgotKwkqIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgKGdkYnNlcnZl cl9kZWZhdWx0X2dldF9jb21tX3BvcnQpOgotKwlEbyBub3QgcHJlZml4IHRoZSBwb3J0IG51bWJl ciB3aXRoICI6Ii4KLSsJKGdkYnNlcnZlcl9zdGFydCk6IE5ldyBnbG9iYWwgR0RCX1RFU1RfU09D S0VUSE9TVC4gIEltcGxlbWVudAotKwlzdXBwb3J0IGZvciBkZXRlY3RpbmcgYW5kIHVzaW5nIGl0 LiAgQWRkICckZGVidWdob3N0X2dkYnNlcnZlcicKLSsJdG8gdGhlIGxpc3Qgb2YgYXJndW1lbnRz IHVzZWQgdG8gc3RhcnQgZ2Ric2VydmVyLiAgSGFuZGxlIGNhc2UKLSsJd2hlbiBnZGJzZXJ2ZXIg Y2Fubm90IHJlc29sdmUgYSBuZXR3b3JrIG5hbWUuCi0rCi0gMjAxOC0wNy0xMSAgU2VyZ2lvIER1 cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYysrLzIzMzczCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUgYi9nZGIvdGVzdHN1aXRlL1JFQURNRQot LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKLSsrKyBiL2dkYi90ZXN0c3VpdGUvUkVBRE1FCi1A QCAtMjU5LDYgKzI1OSwyMCBAQCBUaGlzIG1ha2UgKG5vdCBydW50ZXN0KSB2YXJpYWJsZSBpcyB1 c2VkIHRvIHNwZWNpZnkgd2hldGhlciB0aGUKLSB0ZXN0c3VpdGUgcHJlbG9hZHMgdGhlIHJlYWQx LnNvIGxpYnJhcnkgaW50byBleHBlY3QuICBBbnkgbm9uLWVtcHR5Ci0gdmFsdWUgbWVhbnMgdHJ1 ZS4gIFNlZSAiUmFjZSBkZXRlY3Rpb24iIGJlbG93LgotIAotK0dEQl9URVNUX1NPQ0tFVEhPU1QK LSsKLStUaGlzIHZhcmlhYmxlIGNhbiBwcm92aWRlIHRoZSBob3N0bmFtZS9hZGRyZXNzIHRoYXQg c2hvdWxkIGJlIHVzZWQKLSt3aGVuIHBlcmZvcm1pbmcgR0RCc2VydmVyLXJlbGF0ZWQgdGVzdHMu ICBUaGlzIGlzIHVzZWZ1bCBpbiBzb21lCi0rc2l0dWF0aW9ucywgZS5nLiwgd2hlbiB5b3Ugd2Fu dCB0byB0ZXN0IHRoZSBJUHY2IGNvbm5lY3Rpdml0eSBvZiBHREIKLSthbmQgR0RCc2VydmVyLCBv ciB3aGVuIHVzaW5nIGEgZGlmZmVyZW50IGhvc3RuYW1lL2FkZHJlc3MgaXMgbmVlZGVkLgotK0Zv ciBleGFtcGxlLCB0byBtYWtlIEdEQiBhbmQgR0RCc2VydmVyIHVzZSBJUHY2LW9ubHkgY29ubmVj dGlvbnMsIHlvdQotK2NhbiBkbzoKLSsKLSsJbWFrZSBjaGVjayBURVNUUz0iZ2RiLnNlcnZlci8q LmV4cCIgUlVOVEVTVEZMQUdTPSdHREJfVEVTVF9TT0NLRVRIT1NUPXRjcDY6Wzo6MV0nCi0rCi0r Tm90ZSB0aGF0IG9ubHkgYSBob3N0bmFtZS9hZGRyZXNzIGNhbiBiZSBwcm92aWRlZCwgd2l0aG91 dCBhIHBvcnQKLStudW1iZXIuCi0rCi0gUmFjZSBkZXRlY3Rpb24KLSAqKioqKioqKioqKioqKgot IAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJz ZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZl ci5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2 ZXIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2Vy dmVyLmV4cAotQEAgLTI0LDggKzI0LDYgQEAgbG9hZF9nZW5lcmljX2NvbmZpZyAiZXh0ZW5kZWQt Z2Ric2VydmVyIgotIGxvYWRfYm9hcmRfZGVzY3JpcHRpb24gImdkYnNlcnZlci1iYXNlIgotIGxv YWRfYm9hcmRfZGVzY3JpcHRpb24gImxvY2FsLWJvYXJkIgotIAotLXNldF9ib2FyZF9pbmZvIHNv Y2tldGhvc3QgImxvY2FsaG9zdDoiCi0tCi0gIyBXZSB3aWxsIGJlIHVzaW5nIHRoZSBleHRlbmRl ZCBHREIgcmVtb3RlIHByb3RvY29sLgotIHNldF9ib2FyZF9pbmZvIGdkYl9wcm90b2NvbCAiZXh0 ZW5kZWQtcmVtb3RlIgotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2 ZS1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5l eHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1nZGJzZXJ2ZXIuZXhwCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cAotQEAgLTMwLDcgKzMw LDYgQEAgc2V0X2JvYXJkX2luZm8gZ2RiLGRvX3JlbG9hZF9vbl9ydW4gMQotICMgVGhlcmUncyBu byBzdXBwb3J0IGZvciBhcmd1bWVudC1wYXNzaW5nICh5ZXQpLgotIHNldF9ib2FyZF9pbmZvIG5v YXJncyAxCi0gCi0tc2V0X2JvYXJkX2luZm8gc29ja2V0aG9zdCAibG9jYWxob3N0OiIKLSBzZXRf Ym9hcmRfaW5mbyB1c2VfZ2RiX3N0dWIgMQotIHNldF9ib2FyZF9pbmZvIGV4aXRfaXNfcmVsaWFi bGUgMQotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9ydW4td2l0aG91 dC1sb2NhbC1iaW5hcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3J1bi13aXRob3V0 LWxvY2FsLWJpbmFyeS5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9ydW4td2l0 aG91dC1sb2NhbC1iaW5hcnkuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvcnVu LXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4cAotQEAgLTUzLDcgKzUzLDcgQEAgc2F2ZV92YXJzIHsg R0RCRkxBR1MgfSB7Ci0gICAgIHNldCB1c2VfZ2RiX3N0dWIgMAotIAotICAgICBnZGJfdGVzdCAi dGFyZ2V0ICR7Z2Ric2VydmVyX3Byb3RvY29sfSAke2dkYnNlcnZlcl9nZGJwb3J0fSIgXAotLQki UmVtb3RlIGRlYnVnZ2luZyB1c2luZyAkZ2Ric2VydmVyX2dkYnBvcnQiIFwKLSsJIlJlbW90ZSBk ZWJ1Z2dpbmcgdXNpbmcgW3N0cmluZ190b19yZWdleHAgJGdkYnNlcnZlcl9nZGJwb3J0XSIgXAot IAkiY29ubmVjdCB0byBnZGJzZXJ2ZXIiCi0gCi0gICAgIGdkYl90ZXN0ICJydW4iIFwKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3QuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9zZXJ2 ZXItY29ubmVjdC5leHAKLUBAIC0wLDAgKzEsMTExIEBACi0rIyBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKyMKLSsjIENvcHlyaWdodCAyMDE4IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rIyBUZXN0IG11bHRpcGxlIHR5cGVzIG9mIGNvbm5lY3Rpb24gKElQdjQsIElQdjYs IFRDUCwgVURQKSBhbmQgbWFrZQotKyMgc3VyZSBib3RoIGdkYnNlcnZlciBhbmQgR0RCIHdvcmsu Ci0rCi0rbG9hZF9saWIgZ2Ric2VydmVyLXN1cHBvcnQuZXhwCi0rCi0rc3RhbmRhcmRfdGVzdGZp bGUgbm9ybWFsLmMKLSsKLStpZiB7W3NraXBfZ2Ric2VydmVyX3Rlc3RzXX0gewotKyAgICByZXR1 cm4gMAotK30KLSsKLSsjIFdlIHdhbnQgdG8gaGF2ZSBjb250cm9sIG92ZXIgd2hlcmUgd2Ugc3Rh cnQgZ2Ric2VydmVyLgotK2lmIHsgW2lzX3JlbW90ZSB0YXJnZXRdIH0gewotKyAgICByZXR1cm4g MAotK30KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFyZSIg JHRlc3RmaWxlICRzcmNmaWxlIGRlYnVnXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMg TWFrZSBzdXJlIHdlJ3JlIGRpc2Nvbm5lY3RlZCwgaW4gY2FzZSB3ZSdyZSB0ZXN0aW5nIHdpdGgg YW4KLSsjIGV4dGVuZGVkLXJlbW90ZSBib2FyZCwgdGhlcmVmb3JlIGFscmVhZHkgY29ubmVjdGVk LgotK2dkYl90ZXN0ICJkaXNjb25uZWN0IiAiLioiCi0rCi0rc2V0IHRhcmdldF9leGVjIFtnZGJz ZXJ2ZXJfZG93bmxvYWRfY3VycmVudF9wcm9nXQotKwotKyMgQW4gYXJyYXkgY29udGFpbmluZyB0 aGUgdGVzdCBpbnN0cnVjdGlvbnMgZm9yIGVhY2ggc2NlbmFyaW8uICBUaGUKLSsjIGRlc2NyaXB0 aW9uIG9mIGVhY2ggZmllbGQgaXMgYXMgZm9sbG93czoKLSsjCi0rIyAtIFRoZSBjb25uZWN0aW9u IHNwZWNpZmljYXRpb24gdG8gYmUgdXNlZCB3aGVuIHN0YXJ0aW5nCi0rIyAgIGdkYnNlcnZlci9H REIuICBUaGlzIHN0cmluZyB3aWxsIGJlIHVzZWQgdG8gc2V0IHRoZQotKyMgICBHREJfVEVTVF9T T0NLRVRIT1NUIHdoZW4gY2FsbGluZyBnZGJzZXJ2ZXJfc3RhcnQuCi0rIwotKyMgLSBBIGZsYWcg aW5kaWNhdGluZyB3aGV0aGVyIGdkYnNlcnZlciBzaG91bGQgZmFpbCB3aGVuIHdlIGF0dGVtcHQg dG8KLSsjICAgc3RhcnQgaXQuICBVc2VmdWwgd2hlbiB0ZXN0aW5nIGVycm9uZW91cyBjb25uZWN0 aW9uIHNwZWNzIHN1Y2ggYXMKLSsjICAgInRjcDg6Ii4KLSsjCi0rIyAtIFRoZSBwcmVmaXggdGhh dCBzaG91bGQgYmUgcHJlcGVuZGVkIHRvIHRoZSB0ZXN0IG1lc3NhZ2VzLgotK3NldCB0ZXN0X3Bh cmFtcyBcCi0rICAgIHsgXAotKwkgIHsgInRjcDQ6MTI3LjAuMC4xIiAwICJ0Y3A0IiB9IFwKLSsJ ICB7ICJ0Y3A2Ojo6MSIgICAgICAgMCAidGNwNiIgfSBcCi0rCSAgeyAidGNwNjpbOjoxXSIgICAg IDAgInRjcDYtd2l0aC1icmFja2V0cyIgfSBcCi0rCSAgeyAidGNwOmxvY2FsaG9zdCIgIDAgInRj cCIgfSBcCi0rCSAgeyAidWRwNDoxMjcuMC4wLjEiIDAgInVkcDQiIH0gXAotKwkgIHsgInVkcDY6 OjoxIiAgICAgICAwICJ1ZHA2IiB9IFwKLSsJICB7ICJ1ZHA2Ols6OjFdIiAgICAgMCAidWRwNi13 aXRoLWJyYWNrZXRzIiB9IFwKLSsJICB7ICJ0Y3A4OjEyMyIgICAgICAgMSAidGNwOCIgfSBcCi0r CSAgeyAidWRwMTIzOjo6IiAgICAgIDEgInVkcDEyMyIgfSBcCi0rCSAgeyAiZ2FyYmFnZToxMjM0 IiAgIDEgImdhcmJhZ2U6MTIzNCIgfSBcCi0rICAgIH0KLSsKLSsjIFRoZSBiZXN0IHdheSB0byB0 ZXN0IGRpZmZlcmVudCB0eXBlcyBvZiBjb25uZWN0aW9ucyBpcyB0byBzZXQgdGhlCi0rIyBHREJf VEVTVF9TT0NLRVRIT1NUIHZhcmlhYmxlIGFjY29yZGluZ2x5LgotK3NhdmVfdmFycyB7IEdEQl9U RVNUX1NPQ0tFVEhPU1QgfSB7Ci0rICAgIGZvcmVhY2ggbGluZSAkdGVzdF9wYXJhbXMgewotKwlz ZXQgc29ja2hvc3QgW2xpbmRleCAkbGluZSAwXQotKwlzZXQgZ2Ric2VydmVyX3Nob3VsZF9mYWls IFtsaW5kZXggJGxpbmUgMV0KLSsJc2V0IHByZWZpeCBbbGluZGV4ICRsaW5lIDJdCi0rCi0rCXdp dGhfdGVzdF9wcmVmaXggJHByZWZpeCB7Ci0rCSAgICBzZXQgR0RCX1RFU1RfU09DS0VUSE9TVCAk c29ja2hvc3QKLSsJICAgIHNldCB0ZXN0ICJzdGFydCBnZGJzZXJ2ZXIiCi0rCi0rCSAgICAjIFRy eSB0byBzdGFydCBnZGJzZXJ2ZXIuCi0rCSAgICBzZXQgY2F0Y2hyZXMgW2NhdGNoIHtzZXQgcmVz IFtnZGJzZXJ2ZXJfc3RhcnQgIiIgJHRhcmdldF9leGVjXX0gZXJybXNnXQotKwotKwkgICAgaWYg eyAkY2F0Y2hyZXMgIT0gMCB9IHsKLSsJCWlmIHsgJGdkYnNlcnZlcl9zaG91bGRfZmFpbCB9IHsK LSsJCSAgICBwYXNzICIkdGVzdDogZ2Ric2VydmVyIGZhaWxlZCBhcyBleHBlY3RlZCIKLSsJCX0g ZWxzZSB7Ci0rCQkgICAgZmFpbCAiJHRlc3Q6ICRlcnJtc2ciCi0rCQl9Ci0rCQljb250aW51ZQot KwkgICAgfSBlbHNlIHsKLSsJCWlmIHsgJGdkYnNlcnZlcl9zaG91bGRfZmFpbCB9IHsKLSsJCSAg ICBmYWlsICIkdGVzdDogZ2Ric2VydmVyIHNob3VsZCBmYWlsIGJ1dCBkaWQgbm90IgotKwkJfSBl bHNlIHsKLSsJCSAgICBwYXNzICIkdGVzdCIKLSsJCX0KLSsJICAgIH0KLSsKLSsJICAgIHNldCBn ZGJzZXJ2ZXJfcHJvdG9jb2wgW2xpbmRleCAkcmVzIDBdCi0rCSAgICBzZXQgZ2Ric2VydmVyX2dk YnBvcnQgW2xpbmRleCAkcmVzIDFdCi0rCSAgICBzZXQgdGVzdCAiY29ubmVjdCB0byBnZGJzZXJ2 ZXIgdXNpbmcgJHNvY2tob3N0IgotKwotKwkgICAgaWYgeyBbZ2RiX3RhcmdldF9jbWQgJGdkYnNl cnZlcl9wcm90b2NvbCAkZ2Ric2VydmVyX2dkYnBvcnRdID09IDAgfSB7Ci0rCQlwYXNzICR0ZXN0 Ci0rCSAgICB9IGVsc2UgewotKwkJZmFpbCAkdGVzdAotKwkgICAgfQotKwl9Ci0rICAgIH0KLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwCi0tLS0gYS9nZGIvdGVzdHN1 aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dk YnNlcnZlci1zdXBwb3J0LmV4cAotQEAgLTIxMSw3ICsyMTEsNyBAQCBwcm9jIGdkYnNlcnZlcl9k ZWZhdWx0X2dldF9yZW1vdGVfYWRkcmVzcyB7IGhvc3QgcG9ydCB9IHsKLSAjIERlZmF1bHQgcm91 dGluZSB0byBjb21wdXRlIHRoZSAiY29tbSIgYXJndW1lbnQgZm9yIGdkYnNlcnZlci4KLSAKLSBw cm9jIGdkYnNlcnZlcl9kZWZhdWx0X2dldF9jb21tX3BvcnQgeyBwb3J0IH0gewotLSAgICByZXR1 cm4gIjokcG9ydCIKLSsgICAgcmV0dXJuICIkcG9ydCIKLSB9Ci0gCi0gIyBTdGFydCBhIGdkYnNl cnZlciBwcm9jZXNzIHdpdGggaW5pdGlhbCBPUFRJT05TIGFuZCB0cmFpbGluZyBBUkdVTUVOVFMu Ci1AQCAtMjIxLDYgKzIyMSw3IEBAIHByb2MgZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9y dCB7IHBvcnQgfSB7Ci0gCi0gcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50 cyB9IHsKLSAgICAgZ2xvYmFsIHBvcnRudW0KLSsgICAgZ2xvYmFsIEdEQl9URVNUX1NPQ0tFVEhP U1QKLSAKLSAgICAgIyBQb3J0IGlkIC0tIGVpdGhlciBzcGVjaWZpZWQgaW4gYmFzZWJvYXJkIGZp bGUsIG9yIG1hbmFnZWQgaGVyZS4KLSAgICAgaWYgW3RhcmdldF9pbmZvIGV4aXN0cyBnZGIsc29j a2V0cG9ydF0gewotQEAgLTIzMSwxMCArMjMyLDIyIEBAIHByb2MgZ2Ric2VydmVyX3N0YXJ0IHsg b3B0aW9ucyBhcmd1bWVudHMgfSB7Ci0gICAgIH0KLSAKLSAgICAgIyBFeHRyYWN0IHRoZSBsb2Nh bCBhbmQgcmVtb3RlIGhvc3QgaWRzIGZyb20gdGhlIHRhcmdldCBib2FyZCBzdHJ1Y3QuCi0tICAg IGlmIFt0YXJnZXRfaW5mbyBleGlzdHMgc29ja2V0aG9zdF0gewotKyAgICBpZiB7IFtpbmZvIGV4 aXN0cyBHREJfVEVTVF9TT0NLRVRIT1NUXSB9IHsKLSsJIyBUaGUgdXNlciBpcyBub3Qgc3VwcG9z ZWQgdG8gcHJvdmlkZSBhIHBvcnQgbnVtYmVyLCBqdXN0IGEKLSsJIyBob3N0bmFtZS9hZGRyZXNz LCB0aGVyZWZvcmUgd2UgYWRkIHRoZSB0cmFpbGluZyAiOiIgaGVyZS4KLSsJc2V0IGRlYnVnaG9z dCAiJHtHREJfVEVTVF9TT0NLRVRIT1NUfToiCi0rCSMgRXNjYXBlIG9wZW4gYW5kIGNsb3NlIHNx dWFyZSBicmFja2V0cy4KLSsJc2V0IGRlYnVnaG9zdF90bXAgW3N0cmluZyBtYXAgeyBbIFxcWyBd IFxcXSB9ICRkZWJ1Z2hvc3RdCi0rCSMgV2UgbmVlZCBhICJnZGJzZXJ2ZXIiIHZlcnNpb24gb2Yg dGhlIGRlYnVnaG9zdCwgd2hpY2ggd2lsbAotKwkjIGhhdmUgdGhlIHBvc3NpYmxlIGNvbm5lY3Rp b24gcHJlZml4IHN0cmlwcGVkLiAgVGhpcyBpcwotKwkjIGJlY2F1c2UgZ2Ric2VydmVyIGN1cnJl bnRseSBkb2Vzbid0IHJlY29nbml6ZSB0aGUgcHJlZml4ZXMuCi0rCXJlZ3N1YiAtYWxsICJeXCh0 Y3A6fHVkcDp8dGNwNDp8dWRwNDp8dGNwNjp8dWRwNjpcKSIgJGRlYnVnaG9zdF90bXAgIiIgZGVi dWdob3N0X2dkYnNlcnZlcgotKyAgICB9IGVsc2VpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIHNvY2tl dGhvc3RdIHsKLSAJc2V0IGRlYnVnaG9zdCBbdGFyZ2V0X2luZm8gc29ja2V0aG9zdF0KLSsJc2V0 IGRlYnVnaG9zdF9nZGJzZXJ2ZXIgJGRlYnVnaG9zdAotICAgICB9IGVsc2UgewotIAlzZXQgZGVi dWdob3N0ICJsb2NhbGhvc3Q6IgotKwlzZXQgZGVidWdob3N0X2dkYnNlcnZlciAkZGVidWdob3N0 Ci0gICAgIH0KLSAKLSAgICAgIyBTb21lIGJvYXJkcyB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9y IHRoZSBwb3J0IHRoYXQgaXMgcGFzc2VkIHRvCi1AQCAtMjc3LDggKzI5MCwxNCBAQCBwcm9jIGdk YnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewotIAlpZiB7ICRvcHRpb25zICE9 ICIiIH0gewotIAkgICAgYXBwZW5kIGdkYnNlcnZlcl9jb21tYW5kICIgJG9wdGlvbnMiCi0gCX0K LSsJaWYgeyAkZGVidWdob3N0X2dkYnNlcnZlciAhPSAiIiB9IHsKLSsJICAgIGFwcGVuZCBnZGJz ZXJ2ZXJfY29tbWFuZCAiICRkZWJ1Z2hvc3RfZ2Ric2VydmVyIgotKwl9Ci0gCWlmIHsgJHBvcnRu dW0gIT0gIiIgfSB7Ci0tCSAgICBhcHBlbmQgZ2Ric2VydmVyX2NvbW1hbmQgIiBbJGdldF9jb21t X3BvcnQgJHBvcnRudW1dIgotKwkgICAgaWYgeyAkZGVidWdob3N0X2dkYnNlcnZlciA9PSAiIiB9 IHsKLSsJCWFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICIKLSsJICAgIH0KLSsJICAgIGFwcGVu ZCBnZGJzZXJ2ZXJfY29tbWFuZCAiWyRnZXRfY29tbV9wb3J0ICRwb3J0bnVtXSIKLSAJfQotIAlp ZiB7ICRhcmd1bWVudHMgIT0gIiIgfSB7Ci0gCSAgICBhcHBlbmQgZ2Ric2VydmVyX2NvbW1hbmQg IiAkYXJndW1lbnRzIgotQEAgLTMwNyw2ICszMjYsOSBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7 IG9wdGlvbnMgYXJndW1lbnRzIH0gewotIAkJICAgIGNvbnRpbnVlCi0gCQl9Ci0gCSAgICB9Ci0r CSAgICAtcmUgIi4qOiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiBOYW1lIG9yIHNlcnZpY2Ugbm90IGtu b3duXHJcbiIgewotKwkJZXJyb3IgImdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBuYW1lLiIKLSsJ ICAgIH0KLSAJICAgIHRpbWVvdXQgewotIAkJZXJyb3IgIlRpbWVvdXQgd2FpdGluZyBmb3IgZ2Ri c2VydmVyIHJlc3BvbnNlLiIKLSAJICAgIH0KLWRpZmYgLS1naXQgYS9nZGIvdW5pdHRlc3RzL3Bh cnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYyBiL2dkYi91bml0dGVzdHMvcGFyc2UtY29u bmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3VuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9uLXNwZWMtc2VsZnRlc3Rz LmMKLUBAIC0wLDAgKzEsMjQ5IEBACi0rLyogU2VsZiB0ZXN0cyBmb3IgcGFyc2luZyBjb25uZWN0 aW9uIHNwZWNzIGZvciBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IChD KSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCi0rCi0rI2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAic2VsZnRlc3QuaCIKLSsjaW5j bHVkZSAiY29tbW9uL25ldHN0dWZmLmgiCi0rI2luY2x1ZGUgImRpYWdub3N0aWNzLmgiCi0rI2lm ZGVmIFVTRV9XSU4zMkFQSQotKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNpbmNsdWRlIDx3c3Bp YXBpLmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxhcnBh L2luZXQuaD4KLSsjaW5jbHVkZSA8bmV0ZGIuaD4KLSsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgot KyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzZWxmdGVz dHMgewotK25hbWVzcGFjZSBwYXJzZV9jb25uZWN0aW9uX3NwZWNfdGVzdHMgewotKwotKy8qIEF1 eGlsaWFyeSBzdHJ1Y3QgdGhhdCBob2xkcyBpbmZvIGFib3V0IGEgc3BlY2lmaWMgdGVzdCBmb3Ig YQotKyAgIGNvbm5lY3Rpb24gc3BlYy4gICovCi0rCi0rc3RydWN0IHBhcnNlX2Nvbm5fdGVzdAot K3sKLSsgIC8qIFRoZSBjb25uZWN0aW9uIHNwZWMuICAqLwotKyAgY29uc3QgY2hhciAqY29ubnNw ZWM7Ci0rCi0rICAvKiBFeHBlY3RlZCByZXN1bHQgZnJvbSAncGFyc2VfY29ubmVjdGlvbl9zcGVj Jy4gICovCi0rICBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIGV4cGVjdGVkX3Jlc3VsdDsKLSsKLSsg IC8qIFRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBmYWlsLCBmYWxzZSBvdGhlcndpc2UuICBJZiB0 cnVlLCBvbmx5Ci0rICAgICB0aGUgQ09OTlNQRUMgZmllbGQgc2hvdWxkIGJlIGNvbnNpZGVyZWQg YXMgdmFsaWQuICAqLwotKyAgYm9vbCBzaG91bGRfZmFpbDsKLSsKLSsgIC8qIFRoZSBleHBlY3Rl ZCBBSV9GQU1JTFkgdG8gYmUgZm91bmQgb24gdGhlICdzdHJ1Y3QgYWRkcmluZm8nCi0rICAgICBI SU5ULiAgKi8KLSsgIGludCBleHBfYWlfZmFtaWx5OwotKwotKyAgLyogVGhlIGV4cGVjdGVkIEFJ X1NPQ0tUWVBFIHRvIGJlIGZvdW5kIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZvJwotKyAgICAgSElO VC4gICovCi0rICBpbnQgZXhwX2FpX3NvY2t0eXBlOwotKwotKyAgLyogVGhlIGV4cGVjdGVkIEFJ X1BST1RPQ09MIHRvIGJlIGZvdW5kIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZvJwotKyAgICAgSElO VC4gICovCi0rICBpbnQgZXhwX2FpX3Byb3RvY29sOwotK307Ci0rCi0rLyogU29tZSBkZWZpbmVz IHRvIGhlbHAgdXMgZmlsbCBhICdzdHJ1Y3QgcGFyc2VfY29ubl90ZXN0Jy4gICovCi0rCi0rLyog SW5pdGlhbGl6ZSBhIGZ1bGwgZW50cnkuICAqLwotKyNkZWZpbmUgSU5JVF9FTlRSWShBRERSLCBF WFBfSE9TVCwgRVhQX1BPUlQsIFNIT1VMRF9GQUlMLCBFWFBfQUlfRkFNSUxZLCBcCi0rCQkgICBF WFBfQUlfU09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkJCQlcCi0rICB7IEFERFIsIHsgRVhQX0hP U1QsIEVYUF9QT1JUIH0sIFNIT1VMRF9GQUlMLCBFWFBfQUlfRkFNSUxZLCBcCi0rICAgIEVYUF9B SV9TT0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MIH0KLSsKLSsvKiBJbml0aWFsaXplIGFuIHVucHJl Zml4ZWQgZW50cnkuICBJbiB0aGlzIGNhc2UsIHdlIGRvbid0IGV4cGVjdAotKyAgIGFueXRoaW5n IG9uIHRoZSAnc3RydWN0IGFkZHJpbmZvJyBISU5ULiAgKi8KLSsjZGVmaW5lIElOSVRfVU5QUkVG SVhFRF9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQpIFwKLSsgIElOSVRfRU5UUlkgKEFE RFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgZmFsc2UsIDAsIDAsIDApCi0rCi0rLyogSW5pdGlhbGl6 ZWQgYW4gdW5wcmVmaXhlZCBJUHY2IGVudHJ5LiAgSW4gdGhpcyBjYXNlLCB3ZSBkb24ndAotKyAg IGV4cGVjdCBhbnl0aGluZyBvbiB0aGUgJ3N0cnVjdCBhZGRyaW5mbycgSElOVC4gICovCi0rI2Rl ZmluZSBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQp IFwKLSsgIElOSVRfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgZmFsc2UsIEFGX0lO RVQ2LCAwLCAwKQotKwotKy8qIEluaXRpYWxpemUgYSBwcmVmaXhlZCBlbnRyeS4gICovCi0rI2Rl ZmluZSBJTklUX1BSRUZJWEVEX0VOVFJZKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgRVhQX0FJ X0ZBTUlMWSwgXAotKwkJCSAgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkgXAot KyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBmYWxzZSwgRVhQX0FJX0ZB TUlMWSwgXAotKwkgICAgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkKLSsKLSsv KiBJbml0aWFsaXplIGFuIGVudHJ5IHByZWZpeGVkIHdpdGggInRjcDQ6Ii4gICovCi0rI2RlZmlu ZSBJTklUX1BSRUZJWEVEX0lQVjRfVENQKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAotKyAg SU5JVF9QUkVGSVhFRF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBBRl9JTkVULCBT T0NLX1NUUkVBTSwgXAotKwkJICAgICAgIElQUFJPVE9fVENQKQotKwotKy8qIEluaXRpYWxpemUg YW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidGNwNjoiLiAgKi8KLSsjZGVmaW5lIElOSVRfUFJFRklY RURfSVBWNl9UQ1AoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCi0rICBJTklUX1BSRUZJWEVE X0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQ2LCBTT0NLX1NUUkVBTSwg XAotKwkJICAgICAgIElQUFJPVE9fVENQKQotKwotKy8qIEluaXRpYWxpemUgYW4gZW50cnkgcHJl Zml4ZWQgd2l0aCAidWRwNDoiLiAgKi8KLSsjZGVmaW5lIElOSVRfUFJFRklYRURfSVBWNF9VRFAo QUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCi0rICBJTklUX1BSRUZJWEVEX0VOVFJZIChBRERS LCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQsIFNPQ0tfREdSQU0sIFwKLSsJCSAgICAgICBJ UFBST1RPX1VEUCkKLSsKLSsvKiBJbml0aWFsaXplIGFuIGVudHJ5IHByZWZpeGVkIHdpdGggInVk cDY6Ii4gICovCi0rI2RlZmluZSBJTklUX1BSRUZJWEVEX0lQVjZfVURQKEFERFIsIEVYUF9IT1NU LCBFWFBfUE9SVCkgXAotKyAgSU5JVF9QUkVGSVhFRF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVY UF9QT1JULCBBRl9JTkVUNiwgU09DS19ER1JBTSwgXAotKwkJICAgICAgIElQUFJPVE9fVURQKQot KwotKy8qIEluaXRpYWxpemUgYSBib2d1cyBlbnRyeSwgaS5lLiwgYSBjb25uZWN0aW9uIHNwZWMg dGhhdCBzaG91bGQKLSsgICBmYWlsLiAgKi8KLSsjZGVmaW5lIElOSVRfQk9HVVNfRU5UUlkoQURE UikgXAotKyAgSU5JVF9FTlRSWSAoQUREUiwgIiIsICIiLCB0cnVlLCAwLCAwLCAwKQotKwotKy8q IFRoZSB2YXJpYWJsZSB3aGljaCBob2xkcyBhbGwgb2Ygb3VyIHRlc3RzLiAgKi8KLSsKLStzdGF0 aWMgY29uc3QgcGFyc2VfY29ubl90ZXN0IGNvbm5fdGVzdFtdID0KLSsgIHsKLSsgICAgLyogVW5w cmVmaXhlZCBhZGRyZXNzZXMuICAqLwotKwotKyAgICAvKiBJUHY0LCBob3N0IGFuZCBwb3J0IHBy ZXNlbnQuICAqLwotKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjE6MTIzNCIs ICIxMjcuMC4wLjEiLCAiMTIzNCIpLAotKyAgICAvKiBJUHY0LCBvbmx5IGhvc3QuICAqLwotKyAg ICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjEiLCAiMTI3LjAuMC4xIiwgIiIpLAot KyAgICAvKiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1VOUFJFRklYRURfRU5U UlkgKCIxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKLSsKLSsgICAgLyogSVB2NiwgaG9z dCBhbmQgcG9ydCBwcmVzZW50LCBubyBicmFja2V0cy4gICovCi0rICAgIElOSVRfVU5QUkVGSVhF RF9FTlRSWSAoIjo6MToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIElQdjYsIG1pc3Np bmcgcG9ydCwgbm8gYnJhY2tldHMuICAqLwotKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCI6 OjE6IiwgIjo6MSIsICIiKSwKLSsgICAgLyogSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50LCB3 aXRoIGJyYWNrZXRzLiAgKi8KLSsgICAgSU5JVF9VTlBSRUZJWEVEX0lQVjZfRU5UUlkgKCJbOjox XToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIElQdjYsIG9ubHkgaG9zdCwgd2l0aCBi cmFja2V0cy4gICovCi0rICAgIElOSVRfVU5QUkVGSVhFRF9JUFY2X0VOVFJZICgiWzo6MV0iLCAi OjoxIiwgIiIpLAotKyAgICAvKiBJUHY2LCBtaXNzaW5nIHBvcnQsIHdpdGggYnJhY2tldHMuICAq LwotKyAgICBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWSAoIls6OjFdOiIsICI6OjEiLCAiIiks Ci0rCi0rICAgIC8qIFVuc3BlY2lmaWVkLCBvbmx5IHBvcnQuICAqLwotKyAgICBJTklUX1VOUFJF RklYRURfRU5UUlkgKCI6MTIzNCIsICJsb2NhbGhvc3QiLCAiMTIzNCIpLAotKwotKyAgICAvKiBQ cmVmaXhlZCBhZGRyZXNzZXMuICAqLwotKwotKyAgICAvKiBQcmVmaXhlZCAidGNwNDoiIElQdjQs IGhvc3QgYW5kIHBvcnQgcHJlc2VudHMuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVENQ ICgidGNwNDoxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAotKyAgICAvKiBQ cmVmaXhlZCAidGNwNDoiIElQdjQsIG9ubHkgcG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURf SVBWNF9UQ1AgKCJ0Y3A0OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCi0rICAgIC8qIFBy ZWZpeGVkICJ0Y3A0OiIgSVB2NCwgb25seSBob3N0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9J UFY0X1RDUCAoInRjcDQ6MTI3LjAuMC4xIiwgIjEyNy4wLjAuMSIsICIiKSwKLSsgICAgLyogUHJl Zml4ZWQgInRjcDQ6IiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVE X0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKLSsKLSsgICAg LyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLwotKyAg ICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgidWRwNDoxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4w LjEiLCAiMTIzNCIpLAotKyAgICAvKiBQcmVmaXhlZCAidWRwNDoiIElQdjQsIG9ubHkgcG9ydC4g ICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNF9VRFAgKCJ1ZHA0OjoxMjM0IiwgImxvY2FsaG9z dCIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA0OiIgSVB2NCwgb25seSBob3N0LiAg Ki8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1VEUCAoInVkcDQ6MTI3LjAuMC4xIiwgIjEyNy4w LjAuMSIsICIiKSwKLSsgICAgLyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0LCBtaXNzaW5nIHBvcnQu ICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgidWRwNDoxMjcuMC4wLjE6IiwgIjEy Ny4wLjAuMSIsICIiKSwKLSsKLSsKLSsgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2LCBob3N0 IGFuZCBwb3J0IHByZXNlbnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNw Njo6OjE6MTIzNCIsICI6OjEiLCAiMTIzNCIpLAotKyAgICAvKiBQcmVmaXhlZCAidGNwNjoiIElQ djYsIG9ubHkgcG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojox MjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2 Niwgb25seSBob3N0LiAgKi8KLSsgICAgLy9JTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjo6 OjEiLCAiOjoxIiwgIiIpLAotKyAgICAvKiBQcmVmaXhlZCAidGNwNjoiIElQdjYsIG1pc3Npbmcg cG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojo6MToiLCAiOjox IiwgIiIpLAotKwotKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYsIGhvc3QgYW5kIHBvcnQg cHJlc2VudC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9VRFAgKCJ1ZHA2Ojo6MToxMjM0 IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2Niwgb25seSBw b3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6OjEyMzQiLCAibG9j YWxob3N0IiwgIjEyMzQiKSwKLSsgICAgLyogUHJlZml4ZWQgInVkcDY6IiBJUHY2LCBvbmx5IGhv c3QuICAqLwotKyAgICAvL0lOSVRfUFJFRklYRURfSVBWNl9VRFAgKCJ1ZHA2Ojo6MSIsICI6OjEi LCAiIiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2NiwgbWlzc2luZyBwb3J0LiAgKi8K LSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6OjoxOiIsICI6OjEiLCAiIiksCi0r Ci0rICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBob3N0IGFuZCBw b3J0IHByZXNlbnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjox XToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3 aXRoIGJyYWNrZXRzLCBvbmx5IGhvc3QuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQ ICgidGNwNjpbOjoxXSIsICI6OjEiLCAiIiksCi0rICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2 NiB3aXRoIGJyYWNrZXRzLCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQ VjZfVENQICgidGNwNjpbOjoxXToiLCAiOjoxIiwgIiIpLAotKwotKyAgICAvKiBQcmVmaXhlZCAi dWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgaG9zdCBhbmQgcG9ydCBwcmVzZW50LiAgKi8KLSsg ICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6MV06MTIzNCIsICI6OjEiLCAiMTIz NCIpLAotKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgb25seSBo b3N0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6MV0iLCAiOjox IiwgIiIpLAotKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgbWlz c2luZyBwb3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6MV06 IiwgIjo6MSIsICIiKSwKLSsKLSsKLSsgICAgLyogQm9ndXMgYWRkcmVzc2VzLiAgKi8KLSsgICAg SU5JVF9CT0dVU19FTlRSWSAoInRjcDY6Wzo6MV0xMjM6NDQiKSwKLSsgICAgSU5JVF9CT0dVU19F TlRSWSAoIls6OjEiKSwKLSsgICAgSU5JVF9CT0dVU19FTlRSWSAoInRjcDY6OjoxXToiKSwKLSsg IH07Ci0rCi0rLyogVGVzdCBhIGNvbm5lY3Rpb24gc3BlYyBDLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK3Rlc3RfY29ubiAoY29uc3QgcGFyc2VfY29ubl90ZXN0ICZjKQotK3sKLSsgIHN0cnVjdCBh ZGRyaW5mbyBoaW50OwotKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyByZXQ7Ci0rCi0rICBtZW1z ZXQgKCZoaW50LCAwLCBzaXplb2YgKGhpbnQpKTsKLSsKLSsgIFRSWQotKyAgICB7Ci0rICAgICAg cmV0ID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChjLmNvbm5zcGVjLCAmaGludCk7Ci0rICAgIH0K LSsgIENBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCi0rICAgIHsKLSsgICAgICAvKiBJZiB3 ZSBjYXVnaHQgYW4gZXJyb3IsIHdlIHNob3VsZCBjaGVjayBpZiB0aGlzIGNvbm5lY3Rpb24KLSsJ IHNwZWMgd2FzIHN1cHBvc2VkIHRvIGZhaWwuICAqLwotKyAgICAgIFNFTEZfQ0hFQ0sgKGMuc2hv dWxkX2ZhaWwpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKyAgRU5EX0NBVENICi0rCi0rICBT RUxGX0NIRUNLICghYy5zaG91bGRfZmFpbCk7Ci0rICBTRUxGX0NIRUNLIChyZXQuaG9zdF9zdHIg PT0gYy5leHBlY3RlZF9yZXN1bHQuaG9zdF9zdHIpOwotKyAgU0VMRl9DSEVDSyAocmV0LnBvcnRf c3RyID09IGMuZXhwZWN0ZWRfcmVzdWx0LnBvcnRfc3RyKTsKLSsgIFNFTEZfQ0hFQ0sgKGhpbnQu YWlfZmFtaWx5ID09IGMuZXhwX2FpX2ZhbWlseSk7Ci0rICBTRUxGX0NIRUNLIChoaW50LmFpX3Nv Y2t0eXBlID09IGMuZXhwX2FpX3NvY2t0eXBlKTsKLSsgIFNFTEZfQ0hFQ0sgKGhpbnQuYWlfcHJv dG9jb2wgPT0gYy5leHBfYWlfcHJvdG9jb2wpOwotK30KLSsKLSsvKiBSdW4gdGhlIHRlc3RzIGFz c29jaWF0ZWQgd2l0aCBwYXJzaW5nIGNvbm5lY3Rpb24gc3BlY3MuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rcnVuX3Rlc3RzICgpCi0rewotKyAgZm9yIChjb25zdCBwYXJzZV9jb25uX3Rlc3QgJmMg OiBjb25uX3Rlc3QpCi0rICAgIHRlc3RfY29ubiAoYyk7Ci0rfQotK30gLyogbmFtZXNwYWNlIHBh cnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0cyAqLwotK30gLyogbmFtZXNwYWNlIHNlbGZ0ZXN0cyAq LwotKwotK3ZvaWQKLStfaW5pdGlhbGl6ZV9wYXJzZV9jb25uZWN0aW9uX3NwZWNfc2VsZnRlc3Rz ICgpCi0rewotKyAgc2VsZnRlc3RzOjpyZWdpc3Rlcl90ZXN0ICgicGFyc2VfY29ubmVjdGlvbl9z cGVjIiwKLSsJCQkgICAgc2VsZnRlc3RzOjpwYXJzZV9jb25uZWN0aW9uX3NwZWNfdGVzdHM6OnJ1 bl90ZXN0cyk7Ci0rfQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMy5wYXRj aCBiL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43YzNhNjY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYno4ODE4NDkt aXB2Ni0xb2YzLnBhdGNoCkBAIC0wLDAgKzEsMTkzNCBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2Vy Z2lvZGpAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTggTWF5IDIwMTggMDE6Mjk6MjQgLTA0MDAK K1N1YmplY3Q6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMy5wYXRjaAorCis7OyBJbXBsZW1lbnQg SVB2NiBzdXBwb3J0IGZvciBHREIvZ2Ric2VydmVyIChSSCBCWiA4ODE4NDksIFNlcmdpbyBEdXJp Z2FuIEp1bmlvcikuCisKK0ltcGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2ZXIK KworVGhpcyBwYXRjaCBpbXBsZW1lbnRzIElQdjYgc3VwcG9ydCBmb3IgYm90aCBHREIgYW5kIGdk YnNlcnZlci4gIEJhc2VkCitvbiBteSByZXNlYXJjaCwgaXQgaXMgdGhlIGZvdXJ0aCBhdHRlbXB0 IHRvIGRvIHRoYXQgc2luY2UgMjAwNi4gIFNpbmNlCitJIHVzZWQgaWRlYXMgZnJvbSBhbGwgb2Yg dGhlIHByZXZpb3VzIHBhdGNoZXMsIEkgYWxzbyBhZGRlZCB0aGVpcgorYXV0aG9ycydzIG5hbWVz IG9uIHRoZSBDaGFuZ2VMb2dzIGFzIGEgd2F5IHRvIHJlY29nbml6ZSB0aGVpcgorZWZmb3J0cy4g IEZvciByZWZlcmVuY2Ugc2FrZSwgeW91IGNhbiBmaW5kIHRoZSBwcmV2aW91cyBhdHRlbXB0cyBh dDoKKworICBodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDYtMDkvbXNn MDAxOTIuaHRtbAorCisgIGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx NC0wMi9tc2cwMDI0OC5odG1sCisKKyAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDE2LTAyL21zZzAwMjI2Lmh0bWwKKworVGhlIGJhc2ljIGlkZWEgYmVoaW5kIHRoZSBw YXRjaCBpcyB0byBzdGFydCB1c2luZyB0aGUgbmV3CisnZ2V0YWRkcmluZm8nLydnZXRuYW1laW5m bycgY2FsbHMsIHdoaWNoIGFyZSByZXNwb25zaWJsZSBmb3IKK3RyYW5zbGF0aW5nIG5hbWVzIGFu ZCBhZGRyZXNzZXMgaW4gYSBwcm90b2NvbC1pbmRlcGVuZGVudCB3YXkuICBUaGlzCittZWFucyB0 aGF0IGlmIHdlIGV2ZXIgaGF2ZSBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBJUCBwcm90b2NvbCwgd2Ug d29uJ3QKK25lZWQgdG8gY2hhbmdlIHRoZSBjb2RlIGFnYWluIChvciwgYXQgbGVhc3QsIHdvbid0 IGhhdmUgdG8gY2hhbmdlIHRoZQorbWFqb3JpdHkgb2YgdGhlIGNvZGUpLgorCitUaGUgZnVuY3Rp b24gJ2dldGFkZHJpbmZvJyByZXR1cm5zIGEgbGlua2VkIGxpc3Qgb2YgcG9zc2libGUgYWRkcmVz c2VzCit0byBjb25uZWN0IHRvLiAgRGVhbGluZyB3aXRoIG11bHRpcGxlIGFkZHJlc3NlcyBwcm92 ZWQgdG8gYmUgYSBoYXJkCit0YXNrIHdpdGggdGhlIGN1cnJlbnQgVENQIGF1dG8tcmV0cnkgbWVj aGFuaXNtIGltcGxlbWVudGVkIG9uCitzZXItdGNwOm5ldF9vcGVuLiAgRm9yIGV4YW1wbGUsIHdo ZW4gZ2Ric2VydmVyIGxpc3RlbmVkIG9ubHkgb24gYW4KK0lQdjQgc29ja2V0OgorCisgICQgLi9n ZGJzZXJ2ZXIgLS1vbmNlIDEyNy4wLjAuMToxMjM0IC4vYS5vdXQKKworYW5kIEdEQiB3YXMgaW5z dHJ1Y3RlZCB0byB0cnkgdG8gY29ubmVjdCB0byBib3RoIElQdjYgYW5kIElQdjQKK3NvY2tldHM6 CisKKyAgJCAuL2dkYiAtZXggJ3RhcmdldCBleHRlbmRlZC1yZW1vdGUgbG9jYWxob3N0OjEyMzQn IC4vYS5vdXQKKwordGhlIHVzZXIgd291bGQgbm90aWNlIGEgc29tZXdoYXQgYmlnIGRlbGF5IGJl Zm9yZSBHREIgd2FzIGFibGUgdG8KK2Nvbm5lY3QgdG8gdGhlIElQdjQgc29ja2V0LiAgVGhpcyBo YXBwZW5lZCBiZWNhdXNlIEdEQiB3YXMgdHJ5aW5nIHRvCitjb25uZWN0IHRvIHRoZSBJUHY2IHNv Y2tldCBmaXJzdCwgYW5kIGhhZCB0byB3YWl0IHVudGlsIHRoZSBjb25uZWN0aW9uCit0aW1lZCBv dXQgYmVmb3JlIGl0IHRyaWVkIHRvIGNvbm5lY3QgdG8gdGhlIElQdjQgc29ja2V0LgorCitGb3Ig dGhhdCByZWFzb24sIEkgaGFkIHRvIHJld3JpdGUgdGhlIG1haW4gbG9vcCBhbmQgaW1wbGVtZW50 IGEgbmV3CittZXRob2QgZm9yIGhhbmRsaW5nIG11bHRpcGxlIGNvbm5lY3Rpb25zLiAgQWZ0ZXIg c29tZSBkaXNjdXNzaW9uLAorUGVkcm8gYW5kIEkgYWdyZWVkIG9uIHRoZSBmb2xsb3dpbmcgYWxn b3JpdGhtOgorCisgIDEpIEZvciBlYWNoIGVudHJ5IHJldHVybmVkIGJ5ICdnZXRhZGRyaW5mbycs IHdlIHRyeSB0byBvcGVuIGEgc29ja2V0CisgIGFuZCBjb25uZWN0IHRvIGl0LgorCisgIDIuYSkg SWYgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgJ2Nvbm5lY3QnLCB3ZSBqdXN0IHVzZSB0aGF0IGNvbm5l Y3Rpb24uCisKKyAgMi5iKSBJZiB3ZSBkb24ndCBoYXZlIGEgc3VjY2Vzc2Z1bGwgJ2Nvbm5lY3Qn LCBidXQgaWYgd2UndmUgZ290IGEKKyAgRUNPTk5SRUZVU0VEIChtZWFuaW5nIHRoZSB0aGUgY29u bmVjdGlvbiB3YXMgcmVmdXNlZCksIHdlIGtlZXAgdHJhY2sKKyAgb2YgdGhpcyBmYWN0IGJ5IHVz aW5nIGEgZmxhZy4KKworICAyLmMpIElmIHdlIGRvbid0IGhhdmUgYSBzdWNjZXNzZnVsbCAnY29u bmVjdCcsIGJ1dCBpZiB3ZSd2ZSBnb3QgYQorICBFSU5QUk9HUkVTUyAobWVhbmluZyB0aGF0IHRo ZSBjb25uZWN0aW9uIGlzIGluIHByb2dyZXNzKSwgd2UgcGVyZm9ybQorICBhICdzZWxlY3QnIGNh bGwgb24gdGhlIHNvY2tldCB1bnRpbCB3ZSBoYXZlIGEgcmVzdWx0IChlaXRoZXIgYQorICBzdWNj ZXNzZnVsIGNvbm5lY3Rpb24sIG9yIGFuIGVycm9yIG9uIHRoZSBzb2NrZXQpLgorCisgIDMpIElm IHRjcF9hdXRvX3JldHJ5IGlzIHRydWUsIGFuZCB3ZSBoYXZlbid0IGdvdHRlbiBhIHN1Y2Nlc3Nm dWwKKyAgY29ubmVjdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBvZiBvdXIgYXR0ZW1wdHMgZmFpbGVk IHdpdGgKKyAgRUNPTk5SRUZVU0VELCB0aGVuIHdlIHdhaXQgYSBsaXR0bGUgYml0IChpLmUuLCBj YWxsCisgICd3YWl0X2Zvcl9jb25uZWN0JyksIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSB3YXMgYQor ICB0aW1lb3V0L2ludGVycnVwdGlvbiAoaW4gd2hpY2ggY2FzZSB3ZSBiYWlsIG91dCksIGFuZCB0 aGVuIGdvIGJhY2sKKyAgdG8gKDEpLgorCitBZnRlciBtdWx0aXBsZSB0ZXN0cywgSSB3YXMgYWJs ZSB0byBjb25uZWN0IHdpdGhvdXQgZGVsYXkgb24gdGhlCitzY2VuYXJpbyBkZXNjcmliZWQgYWJv dmUsIGFuZCB3YXMgYWxzbyBhYmxlIHRvIGNvbm5lY3QgaW4gYWxsIG90aGVyCit0eXBlcyBvZiBz Y2VuYXJpb3MuCisKK0kgYWxzbyBpbXBsZW1lbnRlZCBzb21lIGhvc3RuYW1lIHBhcnNpbmcgZnVu Y3Rpb25zIChhbG9uZyB3aXRoIHRoZWlyCitjb3JyZXNwb25kaW5nIHVuaXQgdGVzdHMpIHdoaWNo IGFyZSB1c2VkIHRvIGhlbHAgR0RCIGFuZCBnZGJzZXJ2ZXIgdG8KK3BhcnNlIGhvc3RuYW1lIHN0 cmluZ3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIuICBUaGVzZSBuZXcgZnVuY3Rpb25zIGFyZQorbGl2 aW5nIGluc2lkZSBjb21tb24vbmV0c3R1ZmYuW2NoXS4gIEkndmUgaGFkIHRvIGRvIHRoYXQgc2lu Y2UgSVB2NgoraW50cm9kdWNlcyBhIG5ldyBVUkwgc2NoZW1lLCB3aGljaCBkZWZpbmVzIHRoYXQg c3F1YXJlIGJyYWNrZXRzIGNhbiBiZQordXNlZCB0byBlbmNsb3NlIHRoZSBob3N0IHBhcnQgYW5k IGRpZmZlcmVudGlhdGUgaXQgZnJvbSB0aGUKK3BvcnQgKGUuZy4sICJbOjoxXToxMjM0IiBtZWFu cyAiaG9zdCA6OjEsIHBvcnQgMTIzNCIpLiAgSSBzcGVudCBzb21lCit0aW1lIHRoaW5raW5nIGFi b3V0IGEgcmVhc29uYWJsZSB3YXkgdG8gaW50ZXJwcmV0IHdoYXQgdGhlIHVzZXIgd2FudHMsCith bmQgSSBjYW1lIHVwIHdpdGggdGhlIGZvbGxvd2luZzoKKworICAtIElmIHRoZSB1c2VyIGhhcyBw cm92aWRlZCBhIHByZWZpeCB0aGF0IGRvZXNuJ3Qgc3BlY2lmeSB0aGUgcHJvdG9jb2wKKyAgICB2 ZXJzaW9uIChpLmUuLCAidGNwOiIgb3IgInVkcDoiKSwgb3IgaWYgdGhlIHVzZXIgaGFzIG5vdCBw cm92aWRlZAorICAgIGFueSBwcmVmaXgsIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIChpLmUu LCBhc3N1bWUgQUZfVU5TUEVDIHdoZW4KKyAgICBkZWFsaW5nIHdpdGggJ2dldGFkZHJpbmZvJykg KnVubGVzcyogdGhlIGhvc3Qgc3RhcnRzIHdpdGggIlsiIChpbgorICAgIHdoaWNoIGNhc2UsIGFz c3VtZSBpdCdzIGFuIElQdjYgaG9zdCkuCisKKyAgLSBJZiB0aGUgdXNlciBoYXMgcHJvdmlkZWQg YSBwcmVmaXggdGhhdCBkb2VzIHNwZWNpZnkgdGhlIHByb3RvY29sCisgICAgdmVyc2lvbiAoaS5l LiwgInRjcDQ6IiwgInRjcDY6IiwgInVkcDQ6IiBvciAidWRwNjoiKSwgdGhlbiByZXNwZWN0Cisg ICAgdGhhdC4KKworVGhpcyBtZXRob2QgZG9lc24ndCBmb2xsb3cgc3RyaWN0bHkgd2hhdCBSRkMg MjczMiBwcm9wb3NlcyAodGhhdAorbGl0ZXJhbCBJUHY2IGFkZHJlc3NlcyBzaG91bGQgYmUgcHJv dmlkZWQgZW5jbG9zZWQgaW4gIlsiIGFuZCAiXSIpCitiZWNhdXNlIElQdjYgYWRkcmVzc2VzIHN0 aWxsIGNhbiBiZSBwcm92aWRlZCB3aXRob3V0IHNxdWFyZSBicmFja2V0cworaW4gb3VyIGNhc2Us IGJ1dCBzaW5jZSB3ZSBoYXZlIHByZWZpeGVzIHRvIHNwZWNpZnkgcHJvdG9jb2wgdmVyc2lvbnMg SQordGhpbmsgdGhpcyBpcyBub3QgYW4gaXNzdWUuCisKK0Fub3RoZXIgdGhpbmcgd29ydGggbWVu dGlvbmluZyBpcyB0aGUgbmV3ICdHREJfVEVTVF9TT0NLRVRIT1NUJwordGVzdGNhc2UgcGFyYW1l dGVyLCB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZQoraG9zdG5hbWUgKHdp dGhvdXQgdGhlIHBvcnQpIHRvIGJlIHVzZWQgd2hlbiB0ZXN0aW5nIEdEQiBhbmQKK2dkYnNlcnZl ci4gIEZvciBleGFtcGxlLCB0byBydW4gSVB2NiB0ZXN0czoKKworICAkIG1ha2UgY2hlY2stZ2Ri IFJVTlRFU1RGTEFHUz0nR0RCX1RFU1RfU09DS0VUSE9TVD10Y3A2Ols6OjFdJworCitPciwgdG8g cnVuIElQdjQgdGVzdHM6CisKKyAgJCBtYWtlIGNoZWNrLWdkYiBSVU5URVNURkxBR1M9J0dEQl9U RVNUX1NPQ0tFVEhPU1Q9dGNwNDoxMjcuMC4wLjEnCisKK1RoaXMgcmVxdWlyZWQgYSBmZXcgY2hh bmdlcyBvbiB0aGUgZ2Ric2VydmVyLWJhc2UuZXhwLCBhbmQgYWxzbyBhCittaW5pbWFsIGFkanVz dG1lbnQgb24gZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwLgorCitGaW5h bGx5LCBJJ3ZlIGltcGxlbWVudGVkIGEgbmV3IHRlc3RjYXNlLAorZ2RiLnNlcnZlci9zZXJ2ZXIt Y29ubmVjdC5leHAsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIHJ1biBvbiB0aGUgbmF0aXZlCitob3N0 IGFuZCBwZXJmb3JtIHZhcmlvdXMgInNtb2tlIHRlc3RzIiB1c2luZyBkaWZmZXJlbnQgY29ubmVj dGlvbgorbWV0aG9kcy4KKworVGhpcyBwYXRjaCBoYXMgYmVlbiByZWdyZXNzaW9uLXRlc3RlZCBv biBCdWlsZEJvdCBhbmQgbG9jYWxseSwgYW5kCithbHNvIGJ1aWx0IHVzaW5nIGEgeDg2XzY0LXc2 NC1taW5ndzMyIEdDQywgYW5kIG5vIHByb2JsZW1zIHdlcmUgZm91bmQuCisKK2dkYi9DaGFuZ2VM b2c6CisyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQu Y29tPgorCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisJ ICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisJICAgIFRzdXRvbXUgU2Vr aSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KKwkgICAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0 LmNvbT4KKworCSogTWFrZWZpbGUuaW4gKFNVQkRJUl9VTklUVEVTVFNfU1JDUyk6IEFkZAorCSd1 bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jJy4KKwkoQ09NTU9OX1NG SUxFUyk6IEFkZCAnY29tbW9uL25ldHN0dWZmLmMnLgorCShIRklMRVNfTk9fU1JDRElSKTogQWRk ICdjb21tb24vbmV0c3R1ZmYuaCcuCisJKiBORVdTIChDaGFuZ2VzIHNpbmNlIEdEQiA4LjIpOiBN ZW50aW9uIElQdjYgc3VwcG9ydC4KKwkqIGNvbW1vbi9uZXRzdHVmZi5jOiBOZXcgZmlsZS4KKwkq IGNvbW1vbi9uZXRzdHVmZi5oOiBOZXcgZmlsZS4KKwkqIHNlci10Y3AuYzogSW5jbHVkZSAnbmV0 c3R1ZmYuaCcgYW5kICd3c3BpYXBpLmgnLgorCSh3YWl0X2Zvcl9jb25uZWN0KTogVXBkYXRlIGNv bW1lbnQuICBOZXcgcGFyYW1ldGVyCisJJ2dkYjo6b3B0aW9uYWw8aW50PiBzb2NrJyBpbnN0ZWFk IG9mICdzdHJ1Y3Qgc2VyaWFsICpzY2InLgorCVVzZSAnc29jaycgZGlyZWN0bHkgaW5zdGVhZCBv ZiAnc2NiLT5mZCcuCisJKHRyeV9jb25uZWN0KTogTmV3IGZ1bmN0aW9uLCB3aXRoIGNvZGUgZnJv bSAnbmV0X29wZW4nLgorCShuZXRfb3Blbik6IFJld3JpdGUgbWFpbiBsb29wIHRvIGRlYWwgd2l0 aCBtdWx0aXBsZQorCXNvY2tldHMvYWRkcmVzc2VzLiAgSGFuZGxlIElQdjYtc3R5bGUgaG9zdG5h bWVzOyBpbXBsZW1lbnQKKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgorCSogdW5pdHRl c3RzL3BhcnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYzogTmV3IGZpbGUuCisKK2dkYi9n ZGJzZXJ2ZXIvQ2hhbmdlTG9nOgorMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8 c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgor CSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisKKwkqIE1ha2VmaWxlLmlu IChTRklMRVMpOiBBZGQgJyQoc3JjZGlyKS9jb21tb24vbmV0c3R1ZmYuYycuCisJKE9CUyk6IEFk ZCAnY29tbW9uL25ldHN0dWZmLm8nLgorCShHREJSRVBMQVlfT0JTKTogTGlrZXdpc2UuCisJKiBn ZGJyZXBsYXkuYzogSW5jbHVkZSAnd3NwaWFwaS5oJyBhbmQgJ25ldHN0dWZmLmgnLgorCShyZW1v dGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBJUHY2CisJY29ubmVjdGlvbnMuCisJKiBy ZW1vdGUtdXRpbHMuYzogSW5jbHVkZSAnbmV0c3R1ZmYuaCcsICdmaWxlc3R1ZmYuaCcKKwlhbmQg J3dzcGlhcGkuaCcuCisJKGhhbmRsZV9hY2NlcHRfZXZlbnQpOiBBY2NlcHQgY29ubmVjdGlvbnMg ZnJvbSBJUHY2IHNvdXJjZXMuCisJKHJlbW90ZV9wcmVwYXJlKTogSGFuZGxlIElQdjYtc3R5bGUg aG9zdG5hbWVzOyBpbXBsZW1lbnQKKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgorCShy ZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBwcmludGluZyBjb25uZWN0aW9ucyBm cm9tCisJSVB2NiBzb3VyY2VzLgorCitnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKKzIwMTgtMDct MTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisJICAgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwkgICAgUGF1bCBGZXJ0 c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KKwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lA Z21haWwuY29tPgorCisJKiBSRUFETUUgKFRlc3RzdWl0ZSBQYXJhbWV0ZXJzKTogTWVudGlvbiBu ZXcgJ0dEQl9URVNUX1NPQ0tFVEhPU1QnCisJcGFyYW1ldGVyLgorCSogYm9hcmRzL25hdGl2ZS1l eHRlbmRlZC1nZGJzZXJ2ZXIuZXhwOiBEbyBub3Qgc2V0ICdzb2NrZXRob3N0JworCWJ5IGRlZmF1 bHQuCisJKiBib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHA6IExpa2V3aXNlLgorCSogZ2RiLnNl cnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwOiBJbXByb3ZlIHJlZ2V4cCB1c2VkCisJ Zm9yIGRldGVjdGluZyB3aGVuIGEgcmVtb3RlIGRlYnVnZ2luZyBjb25uZWN0aW9uIHN1Y2NlZWRz LgorCSogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IE5ldyBmaWxlLgorCSogbGliL2dk YnNlcnZlci1zdXBwb3J0LmV4cCAoZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCk6CisJ RG8gbm90IHByZWZpeCB0aGUgcG9ydCBudW1iZXIgd2l0aCAiOiIuCisJKGdkYnNlcnZlcl9zdGFy dCk6IE5ldyBnbG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVC4gIEltcGxlbWVudAorCXN1cHBvcnQg Zm9yIGRldGVjdGluZyBhbmQgdXNpbmcgaXQuICBBZGQgJyRkZWJ1Z2hvc3RfZ2Ric2VydmVyJwor CXRvIHRoZSBsaXN0IG9mIGFyZ3VtZW50cyB1c2VkIHRvIHN0YXJ0IGdkYnNlcnZlci4gIEhhbmRs ZSBjYXNlCisJd2hlbiBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3b3JrIG5hbWUuCisK K2dkYi9kb2MvQ2hhbmdlTG9nOgorMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8 c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgor CSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisKKwkqIGdkYi50ZXhpbmZv IChSZW1vdGUgQ29ubmVjdGlvbiBDb21tYW5kcyk6IEFkZCBleHBsYW5hdGlvbgorCWFib3V0IG5l dyBJUHY2IHN1cHBvcnQuICBBZGQgbmV3IGNvbm5lY3Rpb24gcHJlZml4ZXMuCisKK2RpZmYgLS1n aXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KKy0tLSBhL2dkYi9NYWtlZmls ZS5pbgorKysrIGIvZ2RiL01ha2VmaWxlLmluCitAQCAtNDMwLDYgKzQzMCw3IEBAIFNVQkRJUl9V TklUVEVTVFNfU1JDUyA9IFwKKyAJdW5pdHRlc3RzL29mZnNldC10eXBlLXNlbGZ0ZXN0cy5jIFwK KyAJdW5pdHRlc3RzL29ic2VydmFibGUtc2VsZnRlc3RzLmMgXAorIAl1bml0dGVzdHMvb3B0aW9u YWwtc2VsZnRlc3RzLmMgXAorKwl1bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0 ZXN0cy5jIFwKKyAJdW5pdHRlc3RzL3B0aWQtc2VsZnRlc3RzLmMgXAorIAl1bml0dGVzdHMvcnNw LWxvdy1zZWxmdGVzdHMuYyBcCisgCXVuaXR0ZXN0cy9zY29wZWRfZmQtc2VsZnRlc3RzLmMgXAor QEAgLTk2Nyw2ICs5NjgsNyBAQCBDT01NT05fU0ZJTEVTID0gXAorIAljb21tb24vam9iLWNvbnRy b2wuYyBcCisgCWNvbW1vbi9nZGJfdGlsZGVfZXhwYW5kLmMgXAorIAljb21tb24vZ2RiX3ZlY3Mu YyBcCisrCWNvbW1vbi9uZXRzdHVmZi5jIFwKKyAJY29tbW9uL25ldy1vcC5jIFwKKyAJY29tbW9u L3BhdGhzdHVmZi5jIFwKKyAJY29tbW9uL3ByaW50LXV0aWxzLmMgXAorQEAgLTE0NDgsNiArMTQ1 MCw3IEBAIEhGSUxFU19OT19TUkNESVIgPSBcCisgCWNvbW1vbi9nZGJfdmVjcy5oIFwKKyAJY29t bW9uL2dkYl93YWl0LmggXAorIAljb21tb24vY29tbW9uLWluZmVyaW9yLmggXAorKwljb21tb24v bmV0c3R1ZmYuaCBcCisgCWNvbW1vbi9ob3N0LWRlZnMuaCBcCisgCWNvbW1vbi9wYXRoc3R1ZmYu aCBcCisgCWNvbW1vbi9wcmludC11dGlscy5oIFwKK2RpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dk Yi9ORVdTCistLS0gYS9nZGIvTkVXUworKysrIGIvZ2RiL05FV1MKK0BAIC0xLDYgKzEsMTIgQEAK KyAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPworIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBi eSByZWxlYXNlKQorIAorKyoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA4LjIKKysKKysqIEdEQiBhbmQg R0RCc2VydmVyIG5vdyBzdXBwb3J0IElQdjYgY29ubmVjdGlvbnMuICBJUHY2IGFkZHJlc3Nlcwor KyAgY2FuIGJlIHBhc3NlZCB1c2luZyB0aGUgJ1tBRERSRVNTXTpQT1JUJyBub3RhdGlvbiwgb3Ig dGhlIHJlZ3VsYXIKKysgICdBRERSRVNTOlBPUlQnIG1ldGhvZC4KKysKKyAqKiogQ2hhbmdlcyBp biBHREIgOC4yCisgCisgKiBUaGUgJ3NldCBkaXNhc3NlbWJsZXItb3B0aW9ucycgY29tbWFuZCBu b3cgc3VwcG9ydHMgc3BlY2lmeWluZyBvcHRpb25zCitkaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9u ZXRzdHVmZi5jIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jCitAQCAtMCwwICsxLDE1 NSBAQAorKy8qIE9wZXJhdGlvbnMgb24gbmV0d29yayBzdHVmZi4KKysgICBDb3B5cmlnaHQgKEMp IDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKysKKysjaW5jbHVkZSAiY29tbW9uLWRlZnMuaCIKKysjaW5jbHVkZSAibmV0c3R1ZmYuaCIK KysjaW5jbHVkZSA8YWxnb3JpdGhtPgorKworKyNpZmRlZiBVU0VfV0lOMzJBUEkKKysjaW5jbHVk ZSA8d2luc29jazIuaD4KKysjaW5jbHVkZSA8d3NwaWFwaS5oPgorKyNlbHNlCisrI2luY2x1ZGUg PG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisrI2luY2x1ZGUgPG5ldGRi Lmg+CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4K KysjZW5kaWYKKysKKysvKiBTZWUgY29tbW9uL25ldHN0dWZmLmguICAqLworKworK3Njb3BlZF9m cmVlX2FkZHJpbmZvOjp+c2NvcGVkX2ZyZWVfYWRkcmluZm8gKCkKKyt7CisrICBmcmVlYWRkcmlu Zm8gKG1fcmVzKTsKKyt9CisrCisrLyogU2VlIGNvbW1vbi9uZXRzdHVmZi5oLiAgKi8KKysKKytw YXJzZWRfY29ubmVjdGlvbl9zcGVjCisrcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJl Zml4IChzdGQ6OnN0cmluZyBzcGVjLCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpCisreworKyAgcGFy c2VkX2Nvbm5lY3Rpb25fc3BlYyByZXQ7CisrICBzaXplX3QgbGFzdF9jb2xvbl9wb3MgPSAwOwor KyAgLyogV2UncmUgZGVhbGluZyB3aXRoIElQdjYgaWY6CisrCisrICAgICAtIGFpX2ZhbWlseSBp cyBBRl9JTkVUNiwgb3IKKysgICAgIC0gYWlfZmFtaWx5IGlzIG5vdCBBRl9JTkVULCBhbmQKKysg ICAgICAgLSBzcGVjWzBdIGlzICdbJywgb3IKKysgICAgICAgLSB0aGUgbnVtYmVyIG9mICc6JyBv biBzcGVjIGlzIGdyZWF0ZXIgdGhhbiAxLiAgKi8KKysgIGJvb2wgaXNfaXB2NiA9IChoaW50LT5h aV9mYW1pbHkgPT0gQUZfSU5FVDYKKysJCSAgfHwgKGhpbnQtPmFpX2ZhbWlseSAhPSBBRl9JTkVU CisrCQkgICAgICAmJiAoc3BlY1swXSA9PSAnWycKKysJCQkgIHx8IHN0ZDo6Y291bnQgKHNwZWMu YmVnaW4gKCksCisrCQkJCQkgc3BlYy5lbmQgKCksICc6JykgPiAxKSkpOworKworKyAgaWYgKGlz X2lwdjYpCisrICAgIHsKKysgICAgICBpZiAoc3BlY1swXSA9PSAnWycpCisrCXsKKysJICAvKiBJ UHY2IGFkZHJlc3NlcyBjYW4gYmUgd3JpdHRlbiBhcyAnW0FERFJdOlBPUlQnLCBhbmQgd2UKKysJ ICAgICBzdXBwb3J0IHRoaXMgbm90YXRpb24uICAqLworKwkgIHNpemVfdCBjbG9zZV9icmFja2V0 X3BvcyA9IHNwZWMuZmluZF9maXJzdF9vZiAoJ10nKTsKKysKKysJICBpZiAoY2xvc2VfYnJhY2tl dF9wb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisrCSAgICBlcnJvciAoXygiTWlzc2luZyBjbG9z ZSBicmFja2V0IGluIGhvc3RuYW1lICclcyciKSwKKysJCSAgIHNwZWMuY19zdHIgKCkpOworKwor KwkgIGhpbnQtPmFpX2ZhbWlseSA9IEFGX0lORVQ2OworKworKwkgIGNvbnN0IGNoYXIgYyA9IHNw ZWNbY2xvc2VfYnJhY2tldF9wb3MgKyAxXTsKKysKKysJICBpZiAoYyA9PSAnXDAnKQorKwkgICAg bGFzdF9jb2xvbl9wb3MgPSBzdGQ6OnN0cmluZzo6bnBvczsKKysJICBlbHNlIGlmIChjICE9ICc6 JykKKysJICAgIGVycm9yIChfKCJJbnZhbGlkIGNydWZ0IGFmdGVyIGNsb3NlIGJyYWNrZXQgaW4g JyVzJyIpLAorKwkJICAgc3BlYy5jX3N0ciAoKSk7CisrCisrCSAgLyogRXJhc2UgYm90aCAnWycg YW5kICddJy4gICovCisrCSAgc3BlYy5lcmFzZSAoMCwgMSk7CisrCSAgc3BlYy5lcmFzZSAoY2xv c2VfYnJhY2tldF9wb3MgLSAxLCAxKTsKKysJfQorKyAgICAgIGVsc2UgaWYgKHNwZWMuZmluZF9m aXJzdF9vZiAoJ10nKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKysJZXJyb3IgKF8oIk1pc3Npbmcg b3BlbiBicmFja2V0IGluIGhvc3RuYW1lICclcyciKSwKKysJICAgICAgIHNwZWMuY19zdHIgKCkp OworKyAgICB9CisrCisrICBpZiAobGFzdF9jb2xvbl9wb3MgPT0gMCkKKysgICAgbGFzdF9jb2xv bl9wb3MgPSBzcGVjLmZpbmRfbGFzdF9vZiAoJzonKTsKKysKKysgIC8qIFRoZSBsZW5ndGggb2Yg dGhlIGhvc3RuYW1lIHBhcnQuICAqLworKyAgc2l6ZV90IGhvc3RfbGVuOworKworKyAgaWYgKGxh c3RfY29sb25fcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorKyAgICB7CisrICAgICAgLyogVGhl IHVzZXIgaGFzIHByb3ZpZGVkIGEgcG9ydC4gICovCisrICAgICAgaG9zdF9sZW4gPSBsYXN0X2Nv bG9uX3BvczsKKysgICAgICByZXQucG9ydF9zdHIgPSBzcGVjLnN1YnN0ciAobGFzdF9jb2xvbl9w b3MgKyAxKTsKKysgICAgfQorKyAgZWxzZQorKyAgICBob3N0X2xlbiA9IHNwZWMuc2l6ZSAoKTsK KysKKysgIHJldC5ob3N0X3N0ciA9IHNwZWMuc3Vic3RyICgwLCBob3N0X2xlbik7CisrCisrICAv KiBEZWZhdWx0IGhvc3RuYW1lIGlzIGxvY2FsaG9zdC4gICovCisrICBpZiAocmV0Lmhvc3Rfc3Ry LmVtcHR5ICgpKQorKyAgICByZXQuaG9zdF9zdHIgPSAibG9jYWxob3N0IjsKKysKKysgIHJldHVy biByZXQ7CisrfQorKworKy8qIFNlZSBjb21tb24vbmV0c3R1ZmYuaC4gICovCisrCisrcGFyc2Vk X2Nvbm5lY3Rpb25fc3BlYworK3BhcnNlX2Nvbm5lY3Rpb25fc3BlYyAoY29uc3QgY2hhciAqc3Bl Yywgc3RydWN0IGFkZHJpbmZvICpoaW50KQorK3sKKysgIC8qIFN0cnVjdCB0byBob2xkIHRoZSBh c3NvY2lhdGlvbiBiZXR3ZWVuIHZhbGlkIHByZWZpeGVzLCB0aGVpcgorKyAgICAgZmFtaWx5IGFu ZCBzb2NrdHlwZS4gICovCisrICBzdHJ1Y3QgaG9zdF9wcmVmaXgKKysgICAgeworKyAgICAgIC8q IFRoZSBwcmVmaXguICAqLworKyAgICAgIGNvbnN0IGNoYXIgKnByZWZpeDsKKysKKysgICAgICAv KiBUaGUgJ2FpX2ZhbWlseScuICAqLworKyAgICAgIGludCBmYW1pbHk7CisrCisrICAgICAgLyog VGhlICdhaV9zb2NrdHlwZScuICAqLworKyAgICAgIGludCBzb2NrdHlwZTsKKysgICAgfTsKKysg IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaG9zdF9wcmVmaXggcHJlZml4ZXNbXSA9CisrICAgIHsKKysg ICAgICB7ICJ1ZHA6IiwgIEFGX1VOU1BFQywgU09DS19ER1JBTSB9LAorKyAgICAgIHsgInRjcDoi LCAgQUZfVU5TUEVDLCBTT0NLX1NUUkVBTSB9LAorKyAgICAgIHsgInVkcDQ6IiwgQUZfSU5FVCwg ICBTT0NLX0RHUkFNIH0sCisrICAgICAgeyAidGNwNDoiLCBBRl9JTkVULCAgIFNPQ0tfU1RSRUFN IH0sCisrICAgICAgeyAidWRwNjoiLCBBRl9JTkVUNiwgIFNPQ0tfREdSQU0gfSwKKysgICAgICB7 ICJ0Y3A2OiIsIEFGX0lORVQ2LCAgU09DS19TVFJFQU0gfSwKKysgICAgfTsKKysKKysgIGZvciAo Y29uc3QgaG9zdF9wcmVmaXggcHJlZml4IDogcHJlZml4ZXMpCisrICAgIGlmIChzdGFydHN3aXRo IChzcGVjLCBwcmVmaXgucHJlZml4KSkKKysgICAgICB7CisrCXNwZWMgKz0gc3RybGVuIChwcmVm aXgucHJlZml4KTsKKysJaGludC0+YWlfZmFtaWx5ID0gcHJlZml4LmZhbWlseTsKKysJaGludC0+ YWlfc29ja3R5cGUgPSBwcmVmaXguc29ja3R5cGU7CisrCWhpbnQtPmFpX3Byb3RvY29sCisrCSAg PSBoaW50LT5haV9zb2NrdHlwZSA9PSBTT0NLX0RHUkFNID8gSVBQUk9UT19VRFAgOiBJUFBST1RP X1RDUDsKKysJYnJlYWs7CisrICAgICAgfQorKworKyAgcmV0dXJuIHBhcnNlX2Nvbm5lY3Rpb25f c3BlY193aXRob3V0X3ByZWZpeCAoc3BlYywgaGludCk7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9j b21tb24vbmV0c3R1ZmYuaCBiL2dkYi9jb21tb24vbmV0c3R1ZmYuaAorbmV3IGZpbGUgbW9kZSAx MDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9jb21tb24vbmV0c3R1ZmYuaAorQEAgLTAs MCArMSw3NiBAQAorKy8qIE9wZXJhdGlvbnMgb24gbmV0d29yayBzdHVmZi4KKysgICBDb3B5cmln aHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKysKKysjaWZuZGVmIE5FVFNUVUZGX0gKKysjZGVmaW5lIE5FVFNUVUZGX0gKKysK KysjaW5jbHVkZSA8c3RyaW5nPgorKworKy8qIExpa2UgTklfTUFYSE9TVC9OSV9NQVhTRVJWLCBi dXQgZW5vdWdoIGZvciBudW1lcmljIGZvcm1zLiAgKi8KKysjZGVmaW5lIEdEQl9OSV9NQVhfQURE UiA2NAorKyNkZWZpbmUgR0RCX05JX01BWF9QT1JUIDE2CisrCisrLyogSGVscGVyIGNsYXNzIHRv IGd1YXJhbnRlZSB0aGF0IHdlIGFsd2F5cyBjYWxsICdmcmVlYWRkcmluZm8nLiAgKi8KKysKKytj bGFzcyBzY29wZWRfZnJlZV9hZGRyaW5mbworK3sKKytwdWJsaWM6CisrICAvKiBEZWZhdWx0IGNv bnN0cnVjdG9yLiAgKi8KKysgIGV4cGxpY2l0IHNjb3BlZF9mcmVlX2FkZHJpbmZvIChzdHJ1Y3Qg YWRkcmluZm8gKmFpbmZvKQorKyAgICA6IG1fcmVzIChhaW5mbykKKysgIHsKKysgIH0KKysKKysg IC8qIERlc3RydWN0b3IgcmVzcG9uc2libGUgZm9yIGZyZWUnaW5nIE1fUkVTIGJ5IGNhbGxpbmcK KysgICAgICdmcmVlYWRkcmluZm8nLiAgKi8KKysgIH5zY29wZWRfZnJlZV9hZGRyaW5mbyAoKTsK KysKKysgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChzY29wZWRfZnJlZV9hZGRyaW5mbyk7Cisr CisrcHJpdmF0ZToKKysgIC8qIFRoZSBhZGRyaW5mbyByZXNvdXJjZS4gICovCisrICBzdHJ1Y3Qg YWRkcmluZm8gKm1fcmVzOworK307CisrCisrLyogVGhlIHN0cnVjdCB3ZSByZXR1cm4gYWZ0ZXIg cGFyc2luZyB0aGUgY29ubmVjdGlvbiBzcGVjLiAgKi8KKysKKytzdHJ1Y3QgcGFyc2VkX2Nvbm5l Y3Rpb25fc3BlYworK3sKKysgIC8qIFRoZSBob3N0bmFtZS4gICovCisrICBzdGQ6OnN0cmluZyBo b3N0X3N0cjsKKysKKysgIC8qIFRoZSBwb3J0LCBpZiBhbnkuICAqLworKyAgc3RkOjpzdHJpbmcg cG9ydF9zdHI7CisrfTsKKysKKysKKysvKiBQYXJzZSBTUEVDICh3aGljaCBpcyBhIHN0cmluZyBp biB0aGUgZm9ybSBvZiAiQUREUjpQT1JUIikgYW5kCisrICAgcmV0dXJuIGEgJ3BhcnNlZF9jb25u ZWN0aW9uX3NwZWMnIHN0cnVjdHVyZSB3aXRoIHRoZSBwcm9wZXIgZmllbGRzCisrICAgZmlsbGVk IGluLiAgQWxzbyBhZGp1c3QgSElOVCBhY2NvcmRpbmdseS4gICovCisrZXh0ZXJuIHBhcnNlZF9j b25uZWN0aW9uX3NwZWMKKysgIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY193aXRob3V0X3ByZWZpeCAo c3RkOjpzdHJpbmcgc3BlYywKKysJCQkJCXN0cnVjdCBhZGRyaW5mbyAqaGludCk7CisrCisrLyog UGFyc2UgU1BFQyAod2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YKKysgICAiW3RjcFs2 XTp8dWRwWzZdOl1BRERSOlBPUlQiKSBhbmQgcmV0dXJuIGEgJ3BhcnNlZF9jb25uZWN0aW9uX3Nw ZWMnCisrICAgc3RydWN0dXJlIHdpdGggdGhlIHByb3BlciBmaWVsZHMgZmlsbGVkIGluLiAgQWxz byBhZGp1c3QgSElOVAorKyAgIGFjY29yZGluZ2x5LiAgKi8KKytleHRlcm4gcGFyc2VkX2Nvbm5l Y3Rpb25fc3BlYyBwYXJzZV9jb25uZWN0aW9uX3NwZWMgKGNvbnN0IGNoYXIgKnNwZWMsCisrCQkJ CQkJICAgICBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpOworKworKyNlbmRpZiAvKiAhIE5FVFNUVUZG X0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvZG9jL0NoYW5nZUxvZyBiL2dkYi9kb2MvQ2hhbmdlTG9n CistLS0gYS9nZGIvZG9jL0NoYW5nZUxvZworKysrIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKK0BAIC0x LDMgKzEsMTEgQEAKKysyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9k akByZWRoYXQuY29tPgorKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorKwkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KKysJICAg IFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAo UmVtb3RlIENvbm5lY3Rpb24gQ29tbWFuZHMpOiBBZGQgZXhwbGFuYXRpb24KKysJYWJvdXQgbmV3 IElQdjYgc3VwcG9ydC4gIEFkZCBuZXcgY29ubmVjdGlvbiBwcmVmaXhlcy4KKysKKyAyMDE4LTA3 LTAyICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQG1pcHMuY29tPgorIAorIAlQUiB0ZGVwLzgy ODIKK2RpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5m bworLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwor QEAgLTIwNTQ4LDE2ICsyMDU0OCwyNyBAQCBJZiB5b3UncmUgdXNpbmcgYSBzZXJpYWwgbGluZSwg eW91IG1heSB3YW50IHRvIGdpdmUgQHZhbHVle0dEQk59IHRoZQorIEBjb2Rle3RhcmdldH0gY29t bWFuZC4KKyAKKyBAaXRlbSB0YXJnZXQgcmVtb3RlIEBjb2Rle0B2YXJ7aG9zdH06QHZhcntwb3J0 fX0KKytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXtAdmFye1tob3N0XX06QHZhcntwb3J0fX0K KyBAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A6QHZhcntob3N0fTpAdmFye3BvcnR9fQor K0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDpAdmFye1tob3N0XX06QHZhcntwb3J0fX0K KytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0K KytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0K KytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9 fQorIEBpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle0B2YXJ7aG9zdH06QHZhcntw b3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXtAdmFye1tob3N0XX06 QHZhcntwb3J0fX0KKyBAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A6QHZh cntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rl e3RjcDpAdmFye1tob3N0XX06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJl bW90ZSBAY29kZXt0Y3A0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4 dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXgg dGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9 fQorIEBjaW5kZXggQGFjcm9ueW17VENQfSBwb3J0LCBAY29kZXt0YXJnZXQgcmVtb3RlfQorIERl YnVnIHVzaW5nIGEgQGFjcm9ueW17VENQfSBjb25uZWN0aW9uIHRvIEB2YXJ7cG9ydH0gb24gQHZh cntob3N0fS4KKy1UaGUgQHZhcntob3N0fSBtYXkgYmUgZWl0aGVyIGEgaG9zdCBuYW1lIG9yIGEg bnVtZXJpYyBAYWNyb255bXtJUH0KKy1hZGRyZXNzOyBAdmFye3BvcnR9IG11c3QgYmUgYSBkZWNp bWFsIG51bWJlci4gIFRoZSBAdmFye2hvc3R9IGNvdWxkIGJlCistdGhlIHRhcmdldCBtYWNoaW5l IGl0c2VsZiwgaWYgaXQgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBuZXQsIG9yCistaXQg bWlnaHQgYmUgYSB0ZXJtaW5hbCBzZXJ2ZXIgd2hpY2ggaW4gdHVybiBoYXMgYSBzZXJpYWwgbGlu ZSB0byB0aGUKKy10YXJnZXQuCisrVGhlIEB2YXJ7aG9zdH0gbWF5IGJlIGVpdGhlciBhIGhvc3Qg bmFtZSwgYSBudW1lcmljIEBhY3Jvbnlte0lQdjR9CisrYWRkcmVzcywgb3IgYSBudW1lcmljIEBh Y3Jvbnlte0lQdjZ9IGFkZHJlc3MgKHdpdGggb3Igd2l0aG91dCB0aGUKKytzcXVhcmUgYnJhY2tl dHMgdG8gc2VwYXJhdGUgdGhlIGFkZHJlc3MgZnJvbSB0aGUgcG9ydCk7IEB2YXJ7cG9ydH0KKytt dXN0IGJlIGEgZGVjaW1hbCBudW1iZXIuICBUaGUgQHZhcntob3N0fSBjb3VsZCBiZSB0aGUgdGFy Z2V0IG1hY2hpbmUKKytpdHNlbGYsIGlmIGl0IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUg bmV0LCBvciBpdCBtaWdodCBiZSBhCisrdGVybWluYWwgc2VydmVyIHdoaWNoIGluIHR1cm4gaGFz IGEgc2VyaWFsIGxpbmUgdG8gdGhlIHRhcmdldC4KKyAKKyBGb3IgZXhhbXBsZSwgdG8gY29ubmVj dCB0byBwb3J0IDI4Mjggb24gYSB0ZXJtaW5hbCBzZXJ2ZXIgbmFtZWQKKyBAY29kZXttYW55ZmFy bXN9OgorQEAgLTIwNTY2LDYgKzIwNTc3LDI4IEBAIEZvciBleGFtcGxlLCB0byBjb25uZWN0IHRv IHBvcnQgMjgyOCBvbiBhIHRlcm1pbmFsIHNlcnZlciBuYW1lZAorIHRhcmdldCByZW1vdGUgbWFu eWZhcm1zOjI4MjgKKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorK1RvIGNvbm5lY3QgdG8gcG9ydCAy ODI4IG9uIGEgdGVybWluYWwgc2VydmVyIHdob3NlIGFkZHJlc3MgaXMKKytAY29kZXsyMDAxOjBk Yjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzR9LCB5b3UgY2FuIGVpdGhlciB1c2UgdGhl Cisrc3F1YXJlIGJyYWNrZXQgc3ludGF4OgorKworK0BzbWFsbGV4YW1wbGUKKyt0YXJnZXQgcmVt b3RlIFsyMDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzRdOjI4MjgKKytAZW5k IHNtYWxsZXhhbXBsZQorKworK0Bub2luZGVudAorK29yIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUg QGFjcm9ueW17SVB2Nn0gcHJvdG9jb2w6CisrCisrQHNtYWxsZXhhbXBsZQorK3RhcmdldCByZW1v dGUgdGNwNjoyMDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzQ6MjgyOAorK0Bl bmQgc21hbGxleGFtcGxlCisrCisrVGhpcyBsYXN0IGV4YW1wbGUgbWF5IGJlIGNvbmZ1c2luZyB0 byB0aGUgcmVhZGVyLCBiZWNhdXNlIHRoZXJlIGlzIG5vCisrdmlzaWJsZSBzZXBhcmF0aW9uIGJl dHdlZW4gdGhlIGhvc3RuYW1lIGFuZCB0aGUgcG9ydCBudW1iZXIuCisrVGhlcmVmb3JlLCB3ZSBy ZWNvbW1lbmQgdGhlIHVzZXIgdG8gcHJvdmlkZSBAYWNyb255bXtJUHY2fSBhZGRyZXNzZXMKKyt1 c2luZyBzcXVhcmUgYnJhY2tldHMgZm9yIGNsYXJpdHkuICBIb3dldmVyLCBpdCBpcyBpbXBvcnRh bnQgdG8KKyttZW50aW9uIHRoYXQgZm9yIEB2YWx1ZXtHREJOfSB0aGVyZSBpcyBubyBhbWJpZ3Vp dHk6IHRoZSBudW1iZXIgYWZ0ZXIKKyt0aGUgbGFzdCBjb2xvbiBpcyBjb25zaWRlcmVkIHRvIGJl IHRoZSBwb3J0IG51bWJlci4KKysKKyBJZiB5b3VyIHJlbW90ZSB0YXJnZXQgaXMgYWN0dWFsbHkg cnVubmluZyBvbiB0aGUgc2FtZSBtYWNoaW5lIGFzIHlvdXIKKyBkZWJ1Z2dlciBzZXNzaW9uIChl LmcuQDogYSBzaW11bGF0b3IgZm9yIHlvdXIgdGFyZ2V0IHJ1bm5pbmcgb24gdGhlCisgc2FtZSBo b3N0KSwgeW91IGNhbiBvbWl0IHRoZSBob3N0bmFtZS4gIEZvciBleGFtcGxlLCB0byBjb25uZWN0 IHRvCitAQCAtMjA1NzksNyArMjA2MTIsMTUgQEAgdGFyZ2V0IHJlbW90ZSA6MTIzNAorIE5vdGUg dGhhdCB0aGUgY29sb24gaXMgc3RpbGwgcmVxdWlyZWQgaGVyZS4KKyAKKyBAaXRlbSB0YXJnZXQg cmVtb3RlIEBjb2Rle3VkcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19CisrQGl0ZW14IHRhcmdldCBy ZW1vdGUgQGNvZGV7dWRwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQg cmVtb3RlIEBjb2Rle3VkcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQg cmVtb3RlIEBjb2Rle3VkcDY6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19CisrQGl0ZW14IHRhcmdl dCBleHRlbmRlZC1yZW1vdGUgQGNvZGV7dWRwOkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKyBAaXRl bXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA6QHZhcntob3N0fTpAdmFye3BvcnR9 fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDpAdmFye1tob3N0XX06 QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA0OkB2 YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29k ZXt1ZHA2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJl bW90ZSBAY29kZXt1ZHA2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorIEBjaW5kZXggQGFjcm9u eW17VURQfSBwb3J0LCBAY29kZXt0YXJnZXQgcmVtb3RlfQorIERlYnVnIHVzaW5nIEBhY3Jvbnlt e1VEUH0gcGFja2V0cyB0byBAdmFye3BvcnR9IG9uIEB2YXJ7aG9zdH0uICBGb3IgZXhhbXBsZSwg dG8KKyBjb25uZWN0IHRvIEBhY3Jvbnlte1VEUH0gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2Vy dmVyIG5hbWVkIEBjb2Rle21hbnlmYXJtc306CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9D aGFuZ2VMb2cgYi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZworLS0tIGEvZ2RiL2dkYnNlcnZlci9D aGFuZ2VMb2cKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDIyIEBA CisrMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNv bT4KKysJICAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysJ ICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisrCSAgICBUc3V0b211IFNl a2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisrCisrCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFk ZCAnJChzcmNkaXIpL2NvbW1vbi9uZXRzdHVmZi5jJy4KKysJKE9CUyk6IEFkZCAnY29tbW9uL25l dHN0dWZmLm8nLgorKwkoR0RCUkVQTEFZX09CUyk6IExpa2V3aXNlLgorKwkqIGdkYnJlcGxheS5j OiBJbmNsdWRlICd3c3BpYXBpLmgnIGFuZCAnbmV0c3R1ZmYuaCcuCisrCShyZW1vdGVfb3Blbik6 IEltcGxlbWVudCBzdXBwb3J0IGZvciBJUHY2CisrCWNvbm5lY3Rpb25zLgorKwkqIHJlbW90ZS11 dGlscy5jOiBJbmNsdWRlICduZXRzdHVmZi5oJywgJ2ZpbGVzdHVmZi5oJworKwlhbmQgJ3dzcGlh cGkuaCcuCisrCShoYW5kbGVfYWNjZXB0X2V2ZW50KTogQWNjZXB0IGNvbm5lY3Rpb25zIGZyb20g SVB2NiBzb3VyY2VzLgorKwkocmVtb3RlX3ByZXBhcmUpOiBIYW5kbGUgSVB2Ni1zdHlsZSBob3N0 bmFtZXM7IGltcGxlbWVudAorKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgorKwkocmVt b3RlX29wZW4pOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgcHJpbnRpbmcgY29ubmVjdGlvbnMgZnJv bQorKwlJUHY2IHNvdXJjZXMuCisrCisgMjAxOC0wNy0xMSAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNA cmVkaGF0LmNvbT4KKyAKKyAJUFIgZ2RiLzIzMzc3CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZl ci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KKy0tLSBhL2dkYi9nZGJz ZXJ2ZXIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KK0BAIC0y MTEsNiArMjExLDcgQEAgU0ZJTEVTID0gXAorIAkkKHNyY2RpcikvY29tbW9uL2pvYi1jb250cm9s LmMgXAorIAkkKHNyY2RpcikvY29tbW9uL2dkYl90aWxkZV9leHBhbmQuYyBcCisgCSQoc3JjZGly KS9jb21tb24vZ2RiX3ZlY3MuYyBcCisrCSQoc3JjZGlyKS9jb21tb24vbmV0c3R1ZmYuYyBcCisg CSQoc3JjZGlyKS9jb21tb24vbmV3LW9wLmMgXAorIAkkKHNyY2RpcikvY29tbW9uL3BhdGhzdHVm Zi5jIFwKKyAJJChzcmNkaXIpL2NvbW1vbi9wcmludC11dGlscy5jIFwKK0BAIC0yNTQsNiArMjU1 LDcgQEAgT0JTID0gXAorIAljb21tb24vZm9ybWF0Lm8gXAorIAljb21tb24vZ2RiX3RpbGRlX2V4 cGFuZC5vIFwKKyAJY29tbW9uL2dkYl92ZWNzLm8gXAorKwljb21tb24vbmV0c3R1ZmYubyBcCisg CWNvbW1vbi9uZXctb3AubyBcCisgCWNvbW1vbi9wYXRoc3R1ZmYubyBcCisgCWNvbW1vbi9wcmlu dC11dGlscy5vIFwKK0BAIC0yOTAsNiArMjkyLDcgQEAgR0RCUkVQTEFZX09CUyA9IFwKKyAJY29t bW9uL2NvbW1vbi1leGNlcHRpb25zLm8gXAorIAljb21tb24vY29tbW9uLXV0aWxzLm8gXAorIAlj b21tb24vZXJyb3JzLm8gXAorKwljb21tb24vbmV0c3R1ZmYubyBcCisgCWNvbW1vbi9wcmludC11 dGlscy5vIFwKKyAJZ2RicmVwbGF5Lm8gXAorIAl1dGlscy5vIFwKK2RpZmYgLS1naXQgYS9nZGIv Z2Ric2VydmVyL2dkYnJlcGxheS5jIGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYworLS0tIGEv Z2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYworKysrIGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXku YworQEAgLTQ2LDggKzQ2LDExIEBACisgCisgI2lmIFVTRV9XSU4zMkFQSQorICNpbmNsdWRlIDx3 aW5zb2NrMi5oPgorKyNpbmNsdWRlIDx3c3BpYXBpLmg+CisgI2VuZGlmCisgCisrI2luY2x1ZGUg Im5ldHN0dWZmLmgiCisrCisgI2lmbmRlZiBIQVZFX1NPQ0tMRU5fVAorIHR5cGVkZWYgaW50IHNv Y2tsZW5fdDsKKyAjZW5kaWYKK0BAIC0xNDIsNTYgKzE0NSwxMDggQEAgcmVtb3RlX2Nsb3NlICh2 b2lkKQorIHN0YXRpYyB2b2lkCisgcmVtb3RlX29wZW4gKGNoYXIgKm5hbWUpCisgeworLSAgaWYg KCFzdHJjaHIgKG5hbWUsICc6JykpCisrICBjaGFyICpsYXN0X2NvbG9uID0gc3RycmNociAobmFt ZSwgJzonKTsKKysKKysgIGlmIChsYXN0X2NvbG9uID09IE5VTEwpCisgICAgIHsKKyAgICAgICBm cHJpbnRmIChzdGRlcnIsICIlczogTXVzdCBzcGVjaWZ5IHRjcCBjb25uZWN0aW9uIGFzIGhvc3Q6 YWRkclxuIiwgbmFtZSk7CisgICAgICAgZmZsdXNoIChzdGRlcnIpOworICAgICAgIGV4aXQgKDEp OworICAgICB9CistICBlbHNlCistICAgIHsKKysKKyAjaWZkZWYgVVNFX1dJTjMyQVBJCistICAg ICAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxpemVkOworKyAgc3RhdGljIGludCB3aW5zb2Nr X2luaXRpYWxpemVkOworICNlbmRpZgorLSAgICAgIGNoYXIgKnBvcnRfc3RyOworLSAgICAgIGlu dCBwb3J0OworLSAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzb2NrYWRkcjsKKy0gICAgICBzb2Nr bGVuX3QgdG1wOworLSAgICAgIGludCB0bXBfZGVzYzsKKysgIGNoYXIgKnBvcnRfc3RyOworKyAg aW50IHRtcDsKKysgIGludCB0bXBfZGVzYzsKKysgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworKyAg c3RydWN0IGFkZHJpbmZvICphaW5mbzsKKyAKKy0gICAgICBwb3J0X3N0ciA9IHN0cmNociAobmFt ZSwgJzonKTsKKysgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkpOworKyAgLyogQXNz dW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKKysg ICAgIEFGX1VOU1BFQy4gICovCisrICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKKysgIGhp bnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKysgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBS T1RPX1RDUDsKKyAKKy0gICAgICBwb3J0ID0gYXRvaSAocG9ydF9zdHIgKyAxKTsKKysgIHBhcnNl ZF9jb25uZWN0aW9uX3NwZWMgcGFyc2VkID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChuYW1lLCAm aGludCk7CisrCisrICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQorKyAgICBlcnJvciAo XygiTWlzc2luZyBwb3J0IG9uIGhvc3RuYW1lICclcyciKSwgbmFtZSk7CisgCisgI2lmZGVmIFVT RV9XSU4zMkFQSQorLSAgICAgIGlmICghd2luc29ja19pbml0aWFsaXplZCkKKy0JeworLQkgIFdT QURBVEEgd3NhZDsKKysgIGlmICghd2luc29ja19pbml0aWFsaXplZCkKKysgICAgeworKyAgICAg IFdTQURBVEEgd3NhZDsKKyAKKy0JICBXU0FTdGFydHVwIChNQUtFV09SRCAoMSwgMCksICZ3c2Fk KTsKKy0JICB3aW5zb2NrX2luaXRpYWxpemVkID0gMTsKKy0JfQorKyAgICAgIFdTQVN0YXJ0dXAg KE1BS0VXT1JEICgxLCAwKSwgJndzYWQpOworKyAgICAgIHdpbnNvY2tfaW5pdGlhbGl6ZWQgPSAx OworKyAgICB9CisgI2VuZGlmCisgCistICAgICAgdG1wX2Rlc2MgPSBzb2NrZXQgKFBGX0lORVQs IFNPQ0tfU1RSRUFNLCAwKTsKKy0gICAgICBpZiAodG1wX2Rlc2MgPT0gLTEpCistCXBlcnJvcl93 aXRoX25hbWUgKCJDYW4ndCBvcGVuIHNvY2tldCIpOworKyAgaW50IHIgPSBnZXRhZGRyaW5mbyAo cGFyc2VkLmhvc3Rfc3RyLmNfc3RyICgpLCBwYXJzZWQucG9ydF9zdHIuY19zdHIgKCksCisrCQkg ICAgICAgJmhpbnQsICZhaW5mbyk7CisgCistICAgICAgLyogQWxsb3cgcmFwaWQgcmV1c2Ugb2Yg dGhpcyBwb3J0LiAqLworLSAgICAgIHRtcCA9IDE7CistICAgICAgc2V0c29ja29wdCAodG1wX2Rl c2MsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgKGNoYXIgKikgJnRtcCwKKy0JCSAgc2l6ZW9m ICh0bXApKTsKKysgIGlmIChyICE9IDApCisrICAgIHsKKysgICAgICBmcHJpbnRmIChzdGRlcnIs ICIlczolczogY2Fubm90IHJlc29sdmUgbmFtZTogJXNcbiIsCisrCSAgICAgICBwYXJzZWQuaG9z dF9zdHIuY19zdHIgKCksIHBhcnNlZC5wb3J0X3N0ci5jX3N0ciAoKSwKKysJICAgICAgIGdhaV9z dHJlcnJvciAocikpOworKyAgICAgIGZmbHVzaCAoc3RkZXJyKTsKKysgICAgICBleGl0ICgxKTsK KysgICAgfQorKworKyAgc2NvcGVkX2ZyZWVfYWRkcmluZm8gZnJlZV9haW5mbyAoYWluZm8pOwor KworKyAgc3RydWN0IGFkZHJpbmZvICpwOworKworKyAgZm9yIChwID0gYWluZm87IHAgIT0gTlVM TDsgcCA9IHAtPmFpX25leHQpCisrICAgIHsKKysgICAgICB0bXBfZGVzYyA9IHNvY2tldCAocC0+ YWlfZmFtaWx5LCBwLT5haV9zb2NrdHlwZSwgcC0+YWlfcHJvdG9jb2wpOworIAorLSAgICAgIHNv Y2thZGRyLnNpbl9mYW1pbHkgPSBQRl9JTkVUOworLSAgICAgIHNvY2thZGRyLnNpbl9wb3J0ID0g aHRvbnMgKHBvcnQpOworLSAgICAgIHNvY2thZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9B Tlk7CisrICAgICAgaWYgKHRtcF9kZXNjID49IDApCisrCWJyZWFrOworKyAgICB9CisrCisrICBp ZiAocCA9PSBOVUxMKQorKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2Fubm90IG9wZW4gc29ja2V0 Iik7CisgCistICAgICAgaWYgKGJpbmQgKHRtcF9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZz b2NrYWRkciwgc2l6ZW9mIChzb2NrYWRkcikpCistCSAgfHwgbGlzdGVuICh0bXBfZGVzYywgMSkp CistCXBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsKKysgIC8qIEFsbG93 IHJhcGlkIHJldXNlIG9mIHRoaXMgcG9ydC4gKi8KKysgIHRtcCA9IDE7CisrICBzZXRzb2Nrb3B0 ICh0bXBfZGVzYywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCAoY2hhciAqKSAmdG1wLAorKwkg ICAgICBzaXplb2YgKHRtcCkpOworKworKyAgc3dpdGNoIChwLT5haV9mYW1pbHkpCisrICAgIHsK KysgICAgY2FzZSBBRl9JTkVUOgorKyAgICAgICgoc3RydWN0IHNvY2thZGRyX2luICopIHAtPmFp X2FkZHIpLT5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOworKyAgICAgIGJyZWFrOworKyAg ICBjYXNlIEFGX0lORVQ2OgorKyAgICAgICgoc3RydWN0IHNvY2thZGRyX2luNiAqKSBwLT5haV9h ZGRyKS0+c2luNl9hZGRyID0gaW42YWRkcl9hbnk7CisrICAgICAgYnJlYWs7CisrICAgIGRlZmF1 bHQ6CisrICAgICAgZnByaW50ZiAoc3RkZXJyLCAiSW52YWxpZCAnYWlfZmFtaWx5JyAlZFxuIiwg cC0+YWlfZmFtaWx5KTsKKysgICAgICBleGl0ICgxKTsKKysgICAgfQorKworKyAgaWYgKGJpbmQg KHRtcF9kZXNjLCBwLT5haV9hZGRyLCBwLT5haV9hZGRybGVuKSAhPSAwKQorKyAgICBwZXJyb3Jf d2l0aF9uYW1lICgiQ2FuJ3QgYmluZCBhZGRyZXNzIik7CisrCisrICBpZiAocC0+YWlfc29ja3R5 cGUgPT0gU09DS19ER1JBTSkKKysgICAgcmVtb3RlX2Rlc2MgPSB0bXBfZGVzYzsKKysgIGVsc2UK KysgICAgeworKyAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOworKyAgICAg IHNvY2tsZW5fdCBzb2NrYWRkcnNpemUgPSBzaXplb2YgKHNvY2thZGRyKTsKKysgICAgICBjaGFy IG9yaWdfaG9zdFtHREJfTklfTUFYX0FERFJdLCBvcmlnX3BvcnRbR0RCX05JX01BWF9QT1JUXTsK KysKKysgICAgICBpZiAobGlzdGVuICh0bXBfZGVzYywgMSkgIT0gMCkKKysJcGVycm9yX3dpdGhf bmFtZSAoIkNhbid0IGxpc3RlbiBvbiBzb2NrZXQiKTsKKysKKysgICAgICByZW1vdGVfZGVzYyA9 IGFjY2VwdCAodG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLAorKwkJCSAg ICAmc29ja2FkZHJzaXplKTsKKyAKKy0gICAgICB0bXAgPSBzaXplb2YgKHNvY2thZGRyKTsKKy0g ICAgICByZW1vdGVfZGVzYyA9IGFjY2VwdCAodG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikg JnNvY2thZGRyLCAmdG1wKTsKKyAgICAgICBpZiAocmVtb3RlX2Rlc2MgPT0gLTEpCisgCXBlcnJv cl93aXRoX25hbWUgKCJBY2NlcHQgZmFpbGVkIik7CisgCitAQCAtMjA2LDYgKzI2MSwxNiBAQCBy ZW1vdGVfb3BlbiAoY2hhciAqbmFtZSkKKyAgICAgICBzZXRzb2Nrb3B0IChyZW1vdGVfZGVzYywg SVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLAorIAkJICAoY2hhciAqKSAmdG1wLCBzaXplb2YgKHRt cCkpOworIAorKyAgICAgIGlmIChnZXRuYW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29j a2FkZHIsIHNvY2thZGRyc2l6ZSwKKysJCSAgICAgICBvcmlnX2hvc3QsIHNpemVvZiAob3JpZ19o b3N0KSwKKysJCSAgICAgICBvcmlnX3BvcnQsIHNpemVvZiAob3JpZ19wb3J0KSwKKysJCSAgICAg ICBOSV9OVU1FUklDSE9TVCB8IE5JX05VTUVSSUNTRVJWKSA9PSAwKQorKwl7CisrCSAgZnByaW50 ZiAoc3RkZXJyLCAiUmVtb3RlIGRlYnVnZ2luZyBmcm9tIGhvc3QgJXMsIHBvcnQgJXNcbiIsCisr CQkgICBvcmlnX2hvc3QsIG9yaWdfcG9ydCk7CisrCSAgZmZsdXNoIChzdGRlcnIpOworKwl9Cisr CisgI2lmbmRlZiBVU0VfV0lOMzJBUEkKKyAgICAgICBjbG9zZSAodG1wX2Rlc2MpOwkJLyogTm8g bG9uZ2VyIG5lZWQgdGhpcyAqLworIAorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvcmVtb3Rl LXV0aWxzLmMgYi9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCistLS0gYS9nZGIvZ2Ric2Vy dmVyL3JlbW90ZS11dGlscy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCitA QCAtMjYsNiArMjYsOCBAQAorICNpbmNsdWRlICJkbGwuaCIKKyAjaW5jbHVkZSAicnNwLWxvdy5o IgorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKysjaW5jbHVkZSAibmV0c3R1ZmYuaCIKKysjaW5j bHVkZSAiZmlsZXN0dWZmLmgiCisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2lmIEhBVkVfU1lTX0lP Q1RMX0gKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CitAQCAtNjMsNiArNjUsNyBAQAorIAorICNp ZiBVU0VfV0lOMzJBUEkKKyAjaW5jbHVkZSA8d2luc29jazIuaD4KKysjaW5jbHVkZSA8d3NwaWFw aS5oPgorICNlbmRpZgorIAorICNpZiBfX1FOWF9fCitAQCAtMTUxLDE5ICsxNTQsMTggQEAgZW5h YmxlX2FzeW5jX25vdGlmaWNhdGlvbiAoaW50IGZkKQorIHN0YXRpYyBpbnQKKyBoYW5kbGVfYWNj ZXB0X2V2ZW50IChpbnQgZXJyLCBnZGJfY2xpZW50X2RhdGEgY2xpZW50X2RhdGEpCisgeworLSAg c3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOworLSAgc29ja2xlbl90IHRtcDsKKysgIHN0cnVj dCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOworKyAgc29ja2xlbl90IGxlbiA9IHNpemVvZiAo c29ja2FkZHIpOworIAorICAgaWYgKGRlYnVnX3RocmVhZHMpCisgICAgIGRlYnVnX3ByaW50ZiAo ImhhbmRsaW5nIHBvc3NpYmxlIGFjY2VwdCBldmVudFxuIik7CisgCistICB0bXAgPSBzaXplb2Yg KHNvY2thZGRyKTsKKy0gIHJlbW90ZV9kZXNjID0gYWNjZXB0IChsaXN0ZW5fZGVzYywgKHN0cnVj dCBzb2NrYWRkciAqKSAmc29ja2FkZHIsICZ0bXApOworKyAgcmVtb3RlX2Rlc2MgPSBhY2NlcHQg KGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbik7CisgICBp ZiAocmVtb3RlX2Rlc2MgPT0gLTEpCisgICAgIHBlcnJvcl93aXRoX25hbWUgKCJBY2NlcHQgZmFp bGVkIik7CisgCisgICAvKiBFbmFibGUgVENQIGtlZXAgYWxpdmUgcHJvY2Vzcy4gKi8KKy0gIHRt cCA9IDE7CisrICBzb2NrbGVuX3QgdG1wID0gMTsKKyAgIHNldHNvY2tvcHQgKHJlbW90ZV9kZXNj LCBTT0xfU09DS0VULCBTT19LRUVQQUxJVkUsCisgCSAgICAgIChjaGFyICopICZ0bXAsIHNpemVv ZiAodG1wKSk7CisgCitAQCAtMTkyLDggKzE5NCwxOSBAQCBoYW5kbGVfYWNjZXB0X2V2ZW50IChp bnQgZXJyLCBnZGJfY2xpZW50X2RhdGEgY2xpZW50X2RhdGEpCisgICBkZWxldGVfZmlsZV9oYW5k bGVyIChsaXN0ZW5fZGVzYyk7CisgCisgICAvKiBDb252ZXJ0IElQIGFkZHJlc3MgdG8gc3RyaW5n LiAgKi8KKy0gIGZwcmludGYgKHN0ZGVyciwgIlJlbW90ZSBkZWJ1Z2dpbmcgZnJvbSBob3N0ICVz XG4iLAorLQkgICBpbmV0X250b2EgKHNvY2thZGRyLnNpbl9hZGRyKSk7CisrICBjaGFyIG9yaWdf aG9zdFtHREJfTklfTUFYX0FERFJdLCBvcmlnX3BvcnRbR0RCX05JX01BWF9QT1JUXTsKKysKKysg IGludCByID0gZ2V0bmFtZWluZm8gKChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCBsZW4s CisrCQkgICAgICAgb3JpZ19ob3N0LCBzaXplb2YgKG9yaWdfaG9zdCksCisrCQkgICAgICAgb3Jp Z19wb3J0LCBzaXplb2YgKG9yaWdfcG9ydCksCisrCQkgICAgICAgTklfTlVNRVJJQ0hPU1QgfCBO SV9OVU1FUklDU0VSVik7CisrCisrICBpZiAociAhPSAwKQorKyAgICBmcHJpbnRmIChzdGRlcnIs IF8oIkNvdWxkIG5vdCBvYnRhaW4gcmVtb3RlIGFkZHJlc3M6ICVzXG4iKSwKKysJICAgICBnYWlf c3RyZXJyb3IgKHIpKTsKKysgIGVsc2UKKysgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJSZW1vdGUg ZGVidWdnaW5nIGZyb20gaG9zdCAlcywgcG9ydCAlc1xuIiksCisrCSAgICAgb3JpZ19ob3N0LCBv cmlnX3BvcnQpOworIAorICAgZW5hYmxlX2FzeW5jX25vdGlmaWNhdGlvbiAocmVtb3RlX2Rlc2Mp OworIAorQEAgLTIyMiwxMCArMjM1LDcgQEAgcmVtb3RlX3ByZXBhcmUgKGNvbnN0IGNoYXIgKm5h bWUpCisgI2lmZGVmIFVTRV9XSU4zMkFQSQorICAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxp emVkOworICNlbmRpZgorLSAgaW50IHBvcnQ7CistICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2Fk ZHI7CisgICBzb2NrbGVuX3QgdG1wOworLSAgY2hhciAqcG9ydF9lbmQ7CisgCisgICByZW1vdGVf aXNfc3RkaW8gPSAwOworICAgaWYgKHN0cmNtcCAobmFtZSwgU1RESU9fQ09OTkVDVElPTl9OQU1F KSA9PSAwKQorQEAgLTIzOCwxNyArMjQ4LDI1IEBAIHJlbW90ZV9wcmVwYXJlIChjb25zdCBjaGFy ICpuYW1lKQorICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgcG9ydF9zdHIgPSBzdHJjaHIg KG5hbWUsICc6Jyk7CistICBpZiAocG9ydF9zdHIgPT0gTlVMTCkKKysgIHN0cnVjdCBhZGRyaW5m byBoaW50OworKyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsKKysKKysgIG1lbXNldCAoJmhpbnQs IDAsIHNpemVvZiAoaGludCkpOworKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3Nl ZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKKysgICAgIEFGX1VOU1BFQy4gICovCisrICBoaW50 LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKKysgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVB TTsKKysgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKKysKKysgIHBhcnNlZF9jb25u ZWN0aW9uX3NwZWMgcGFyc2VkCisrICAgID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRf cHJlZml4IChuYW1lLCAmaGludCk7CisrCisrICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgp KQorICAgICB7CisgICAgICAgY3MudHJhbnNwb3J0X2lzX3JlbGlhYmxlID0gMDsKKyAgICAgICBy ZXR1cm47CisgICAgIH0KKyAKKy0gIHBvcnQgPSBzdHJ0b3VsIChwb3J0X3N0ciArIDEsICZwb3J0 X2VuZCwgMTApOworLSAgaWYgKHBvcnRfc3RyWzFdID09ICdcMCcgfHwgKnBvcnRfZW5kICE9ICdc MCcpCistICAgIGVycm9yICgiQmFkIHBvcnQgYXJndW1lbnQ6ICVzIiwgbmFtZSk7CistCisgI2lm ZGVmIFVTRV9XSU4zMkFQSQorICAgaWYgKCF3aW5zb2NrX2luaXRpYWxpemVkKQorICAgICB7CitA QCAtMjU5LDggKzI3NywyNiBAQCByZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKKyAg ICAgfQorICNlbmRpZgorIAorLSAgbGlzdGVuX2Rlc2MgPSBzb2NrZXQgKFBGX0lORVQsIFNPQ0tf U1RSRUFNLCBJUFBST1RPX1RDUCk7CistICBpZiAobGlzdGVuX2Rlc2MgPT0gLTEpCisrICBpbnQg ciA9IGdldGFkZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBhcnNlZC5wb3J0X3N0 ci5jX3N0ciAoKSwKKysJCSAgICAgICAmaGludCwgJmFpbmZvKTsKKysKKysgIGlmIChyICE9IDAp CisrICAgIGVycm9yIChfKCIlczogY2Fubm90IHJlc29sdmUgbmFtZTogJXMiKSwgbmFtZSwgZ2Fp X3N0cmVycm9yIChyKSk7CisrCisrICBzY29wZWRfZnJlZV9hZGRyaW5mbyBmcmVlYWRkcmluZm8g KGFpbmZvKTsKKysKKysgIHN0cnVjdCBhZGRyaW5mbyAqaXRlcjsKKysKKysgIGZvciAoaXRlciA9 IGFpbmZvOyBpdGVyICE9IE5VTEw7IGl0ZXIgPSBpdGVyLT5haV9uZXh0KQorKyAgICB7CisrICAg ICAgbGlzdGVuX2Rlc2MgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKGl0ZXItPmFpX2ZhbWlseSwgaXRl ci0+YWlfc29ja3R5cGUsCisrCQkJCQlpdGVyLT5haV9wcm90b2NvbCk7CisrCisrICAgICAgaWYg KGxpc3Rlbl9kZXNjID49IDApCisrCWJyZWFrOworKyAgICB9CisrCisrICBpZiAoaXRlciA9PSBO VUxMKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3Qgb3BlbiBzb2NrZXQiKTsKKyAKKyAg IC8qIEFsbG93IHJhcGlkIHJldXNlIG9mIHRoaXMgcG9ydC4gKi8KK0BAIC0yNjgsMTQgKzMwNCwy NSBAQCByZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKKyAgIHNldHNvY2tvcHQgKGxp c3Rlbl9kZXNjLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIChjaGFyICopICZ0bXAsCisgCSAg ICAgIHNpemVvZiAodG1wKSk7CisgCistICBzb2NrYWRkci5zaW5fZmFtaWx5ID0gUEZfSU5FVDsK Ky0gIHNvY2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOworLSAgc29ja2FkZHIuc2luX2Fk ZHIuc19hZGRyID0gSU5BRERSX0FOWTsKKysgIHN3aXRjaCAoaXRlci0+YWlfZmFtaWx5KQorKyAg ICB7CisrICAgIGNhc2UgQUZfSU5FVDoKKysgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSBp dGVyLT5haV9hZGRyKS0+c2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKKysgICAgICBicmVh azsKKysgICAgY2FzZSBBRl9JTkVUNjoKKysgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikg aXRlci0+YWlfYWRkciktPnNpbjZfYWRkciA9IGluNmFkZHJfYW55OworKyAgICAgIGJyZWFrOwor KyAgICBkZWZhdWx0OgorKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18s CisrCQkgICAgICBfKCJJbnZhbGlkICdhaV9mYW1pbHknICVkXG4iKSwgaXRlci0+YWlfZmFtaWx5 KTsKKysgICAgfQorIAorLSAgaWYgKGJpbmQgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRy ICopICZzb2NrYWRkciwgc2l6ZW9mIChzb2NrYWRkcikpCistICAgICAgfHwgbGlzdGVuIChsaXN0 ZW5fZGVzYywgMSkpCisrICBpZiAoYmluZCAobGlzdGVuX2Rlc2MsIGl0ZXItPmFpX2FkZHIsIGl0 ZXItPmFpX2FkZHJsZW4pICE9IDApCisgICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5k IGFkZHJlc3MiKTsKKyAKKysgIGlmIChsaXN0ZW4gKGxpc3Rlbl9kZXNjLCAxKSAhPSAwKQorKyAg ICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgbGlzdGVuIG9uIHNvY2tldCIpOworKworICAgY3Mu dHJhbnNwb3J0X2lzX3JlbGlhYmxlID0gMTsKKyB9CisgCitAQCAtMzUwLDE4ICszOTcsMjQgQEAg cmVtb3RlX29wZW4gKGNvbnN0IGNoYXIgKm5hbWUpCisgI2VuZGlmIC8qIFVTRV9XSU4zMkFQSSAq LworICAgZWxzZQorICAgICB7CistICAgICAgaW50IHBvcnQ7CistICAgICAgc29ja2xlbl90IGxl bjsKKy0gICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7CistCistICAgICAgbGVuID0g c2l6ZW9mIChzb2NrYWRkcik7CistICAgICAgaWYgKGdldHNvY2tuYW1lIChsaXN0ZW5fZGVzYywK Ky0JCSAgICAgICAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbikgPCAwCistCSAg fHwgbGVuIDwgc2l6ZW9mIChzb2NrYWRkcikpCisrICAgICAgY2hhciBsaXN0ZW5fcG9ydFtHREJf TklfTUFYX1BPUlRdOworKyAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOwor KyAgICAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2YgKHNvY2thZGRyKTsKKysKKysgICAgICBpZiAo Z2V0c29ja25hbWUgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwg JmxlbikgPCAwKQorIAlwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgZGV0ZXJtaW5lIHBvcnQiKTsK Ky0gICAgICBwb3J0ID0gbnRvaHMgKHNvY2thZGRyLnNpbl9wb3J0KTsKKyAKKy0gICAgICBmcHJp bnRmIChzdGRlcnIsICJMaXN0ZW5pbmcgb24gcG9ydCAlZFxuIiwgcG9ydCk7CisrICAgICAgaW50 IHIgPSBnZXRuYW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIGxlbiwKKysJ CQkgICBOVUxMLCAwLAorKwkJCSAgIGxpc3Rlbl9wb3J0LCBzaXplb2YgKGxpc3Rlbl9wb3J0KSwK KysJCQkgICBOSV9OVU1FUklDU0VSVik7CisrCisrICAgICAgaWYgKHIgIT0gMCkKKysJZnByaW50 ZiAoc3RkZXJyLCBfKCJDYW4ndCBvYnRhaW4gcG9ydCB3aGVyZSB3ZSBhcmUgbGlzdGVuaW5nOiAl cyIpLAorKwkJIGdhaV9zdHJlcnJvciAocikpOworKyAgICAgIGVsc2UKKysJZnByaW50ZiAoc3Rk ZXJyLCBfKCJMaXN0ZW5pbmcgb24gcG9ydCAlc1xuIiksIGxpc3Rlbl9wb3J0KTsKKysKKyAgICAg ICBmZmx1c2ggKHN0ZGVycik7CisgCisgICAgICAgLyogUmVnaXN0ZXIgdGhlIGV2ZW50IGxvb3Ag aGFuZGxlci4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3Nlci10Y3AuYyBiL2dkYi9zZXItdGNwLmMK Ky0tLSBhL2dkYi9zZXItdGNwLmMKKysrKyBiL2dkYi9zZXItdGNwLmMKK0BAIC0yNSw2ICsyNSw3 IEBACisgI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0 c2hvdy5oIgorICNpbmNsdWRlICJmaWxlc3R1ZmYuaCIKKysjaW5jbHVkZSAibmV0c3R1ZmYuaCIK KyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCitAQCAtMzksNiArNDAsNyBAQAorIAorICNp ZmRlZiBVU0VfV0lOMzJBUEkKKyAjaW5jbHVkZSA8d2luc29jazIuaD4KKysjaW5jbHVkZSA8d3Nw aWFwaS5oPgorICNpZm5kZWYgRVRJTUVET1VUCisgI2RlZmluZSBFVElNRURPVVQgV1NBRVRJTUVE T1VUCisgI2VuZGlmCitAQCAtODEsMTIgKzgzLDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNw X3JldHJ5X2xpbWl0ID0gMTU7CisgCisgI2RlZmluZSBQT0xMX0lOVEVSVkFMIDUKKyAKKy0vKiBI ZWxwZXIgZnVuY3Rpb24gdG8gd2FpdCBhIHdoaWxlLiAgSWYgU0NCIGlzIG5vbi1udWxsLCB3YWl0 IG9uIGl0cworLSAgIGZpbGUgZGVzY3JpcHRvci4gIE90aGVyd2lzZSBqdXN0IHdhaXQgb24gYSB0 aW1lb3V0LCB1cGRhdGluZyAqUE9MTFMuCistICAgUmV0dXJucyAtMSBvbiB0aW1lb3V0IG9yIGlu dGVycnVwdCwgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiBzZWxlY3QuICAqLworKy8qIEhlbHBlciBm dW5jdGlvbiB0byB3YWl0IGEgd2hpbGUuICBJZiBTT0NLIGlzIG5vdCAtMSwgd2FpdCBvbiBpdHMK KysgICBmaWxlIGRlc2NyaXB0b3IuICBPdGhlcndpc2UganVzdCB3YWl0IG9uIGEgdGltZW91dCwg dXBkYXRpbmcKKysgICAqUE9MTFMuICBSZXR1cm5zIC0xIG9uIHRpbWVvdXQgb3IgaW50ZXJydXB0 LCBvdGhlcndpc2UgdGhlIHZhbHVlIG9mCisrICAgc2VsZWN0LiAgKi8KKyAKKyBzdGF0aWMgaW50 Cistd2FpdF9mb3JfY29ubmVjdCAoc3RydWN0IHNlcmlhbCAqc2NiLCB1bnNpZ25lZCBpbnQgKnBv bGxzKQorK3dhaXRfZm9yX2Nvbm5lY3QgKGludCBzb2NrLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQor IHsKKyAgIHN0cnVjdCB0aW1ldmFsIHQ7CisgICBpbnQgbjsKK0BAIC0xMjAsMjQgKzEyMywyNCBA QCB3YWl0X2Zvcl9jb25uZWN0IChzdHJ1Y3Qgc2VyaWFsICpzY2IsIHVuc2lnbmVkIGludCAqcG9s bHMpCisgICAgICAgdC50dl91c2VjID0gMDsKKyAgICAgfQorIAorLSAgaWYgKHNjYikKKysgIGlm IChzb2NrID49IDApCisgICAgIHsKKyAgICAgICBmZF9zZXQgcnNldCwgd3NldCwgZXNldDsKKyAK KyAgICAgICBGRF9aRVJPICgmcnNldCk7CistICAgICAgRkRfU0VUIChzY2ItPmZkLCAmcnNldCk7 CisrICAgICAgRkRfU0VUIChzb2NrLCAmcnNldCk7CisgICAgICAgd3NldCA9IHJzZXQ7CisgICAg ICAgZXNldCA9IHJzZXQ7CistCSAgCisrCisgICAgICAgLyogUE9TSVggc3lzdGVtcyByZXR1cm4g Y29ubmVjdGlvbiBzdWNjZXNzIG9yIGZhaWx1cmUgYnkgc2lnbmFsbGluZworIAkgd3NldC4gIFdp bmRvd3Mgc3lzdGVtcyByZXR1cm4gc3VjY2VzcyBpbiB3c2V0IGFuZCBmYWlsdXJlIGluCisgCSBl c2V0LgorLSAgICAgCisrCisgCSBXZSBtdXN0IGNhbGwgc2VsZWN0IGhlcmUsIHJhdGhlciB0aGFu IGdkYl9zZWxlY3QsIGJlY2F1c2UKKyAJIHRoZSBzZXJpYWwgc3RydWN0dXJlIGhhcyBub3QgeWV0 IGJlZW4gaW5pdGlhbGl6ZWQgLSB0aGUKKyAJIE1pbkdXIHNlbGVjdCB3cmFwcGVyIHdpbGwgbm90 IGtub3cgdGhhdCB0aGlzIEZEIHJlZmVycworIAkgdG8gYSBzb2NrZXQuICAqLworLSAgICAgIG4g PSBzZWxlY3QgKHNjYi0+ZmQgKyAxLCAmcnNldCwgJndzZXQsICZlc2V0LCAmdCk7CisrICAgICAg biA9IHNlbGVjdCAoc29jayArIDEsICZyc2V0LCAmd3NldCwgJmVzZXQsICZ0KTsKKyAgICAgfQor ICAgZWxzZQorICAgICAvKiBVc2UgZ2RiX3NlbGVjdCBoZXJlLCBzaW5jZSB3ZSBoYXZlIG5vIGZp bGUgZGVzY3JpcHRvcnMsIGFuZCBvbgorQEAgLTE1Myw4MCArMTU2LDI4IEBAIHdhaXRfZm9yX2Nv bm5lY3QgKHN0cnVjdCBzZXJpYWwgKnNjYiwgdW5zaWduZWQgaW50ICpwb2xscykKKyAgIHJldHVy biBuOworIH0KKyAKKy0vKiBPcGVuIGEgdGNwIHNvY2tldC4gICovCisrLyogVHJ5IHRvIGNvbm5l Y3QgdG8gdGhlIGhvc3QgcmVwcmVzZW50ZWQgYnkgQUlORk8uICBJZiB0aGUgY29ubmVjdGlvbgor KyAgIHN1Y2NlZWRzLCByZXR1cm4gaXRzIHNvY2tldC4gIE90aGVyd2lzZSwgcmV0dXJuIC0xIGFu ZCBzZXQgRVJSTk8KKysgICBhY2NvcmRpbmdseS4gIFBPTExTIGlzIHVzZWQgd2hlbiAnY29ubmVj dCcgcmV0dXJucyBFSU5QUk9HUkVTUywgYW5kCisrICAgd2UgbmVlZCB0byBpbnZva2UgJ3dhaXRf Zm9yX2Nvbm5lY3QnIHRvIG9idGFpbiB0aGUgc3RhdHVzLiAgKi8KKyAKKy1pbnQKKy1uZXRfb3Bl biAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQorK3N0YXRpYyBpbnQKKyt0 cnlfY29ubmVjdCAoY29uc3Qgc3RydWN0IGFkZHJpbmZvICphaW5mbywgdW5zaWduZWQgaW50ICpw b2xscykKKyB7CistICBjaGFyIGhvc3RuYW1lWzEwMF07CistICBjb25zdCBjaGFyICpwb3J0X3N0 cjsKKy0gIGludCBuLCBwb3J0LCB0bXA7CistICBpbnQgdXNlX3VkcDsKKy0gIHN0cnVjdCBob3N0 ZW50ICpob3N0ZW50OworLSAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOworLSNpZmRlZiBV U0VfV0lOMzJBUEkKKy0gIHVfbG9uZyBpb2FyZzsKKy0jZWxzZQorLSAgaW50IGlvYXJnOworLSNl bmRpZgorLSAgdW5zaWduZWQgaW50IHBvbGxzID0gMDsKKy0KKy0gIHVzZV91ZHAgPSAwOworLSAg aWYgKHN0YXJ0c3dpdGggKG5hbWUsICJ1ZHA6IikpCistICAgIHsKKy0gICAgICB1c2VfdWRwID0g MTsKKy0gICAgICBuYW1lID0gbmFtZSArIDQ7CistICAgIH0KKy0gIGVsc2UgaWYgKHN0YXJ0c3dp dGggKG5hbWUsICJ0Y3A6IikpCistICAgIG5hbWUgPSBuYW1lICsgNDsKKy0KKy0gIHBvcnRfc3Ry ID0gc3RyY2hyIChuYW1lLCAnOicpOworLQorLSAgaWYgKCFwb3J0X3N0cikKKy0gICAgZXJyb3Ig KF8oIm5ldF9vcGVuOiBObyBjb2xvbiBpbiBob3N0IG5hbWUhIikpOyAgLyogU2hvdWxkbid0IGV2 ZXIKKy0JCQkJCQkgICAgICAgaGFwcGVuLiAgKi8KKy0KKy0gIHRtcCA9IHN0ZDo6bWluIChwb3J0 X3N0ciAtIG5hbWUsIChwdHJkaWZmX3QpIHNpemVvZiBob3N0bmFtZSAtIDEpOworLSAgc3RybmNw eSAoaG9zdG5hbWUsIG5hbWUsIHRtcCk7CS8qIERvbid0IHdhbnQgY29sb24uICAqLworLSAgaG9z dG5hbWVbdG1wXSA9ICdcMDAwJzsJLyogVGllIG9mZiBob3N0IG5hbWUuICAqLworLSAgcG9ydCA9 IGF0b2kgKHBvcnRfc3RyICsgMSk7CistCistICAvKiBEZWZhdWx0IGhvc3RuYW1lIGlzIGxvY2Fs aG9zdC4gICovCistICBpZiAoIWhvc3RuYW1lWzBdKQorLSAgICBzdHJjcHkgKGhvc3RuYW1lLCAi bG9jYWxob3N0Iik7CistCistICBob3N0ZW50ID0gZ2V0aG9zdGJ5bmFtZSAoaG9zdG5hbWUpOwor LSAgaWYgKCFob3N0ZW50KQorLSAgICB7CistICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkZXJyLCAiJXM6IHVua25vd24gaG9zdFxuIiwgaG9zdG5hbWUpOworLSAgICAgIGVycm5vID0g RU5PRU5UOworLSAgICAgIHJldHVybiAtMTsKKy0gICAgfQorKyAgaW50IHNvY2sgPSBnZGJfc29j a2V0X2Nsb2V4ZWMgKGFpbmZvLT5haV9mYW1pbHksIGFpbmZvLT5haV9zb2NrdHlwZSwKKysJCQkJ IGFpbmZvLT5haV9wcm90b2NvbCk7CisgCistICBzb2NrYWRkci5zaW5fZmFtaWx5ID0gUEZfSU5F VDsKKy0gIHNvY2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOworLSAgbWVtY3B5ICgmc29j a2FkZHIuc2luX2FkZHIuc19hZGRyLCBob3N0ZW50LT5oX2FkZHIsCistCSAgc2l6ZW9mIChzdHJ1 Y3QgaW5fYWRkcikpOworLQorLSByZXRyeToKKy0KKy0gIGlmICh1c2VfdWRwKQorLSAgICBzY2It PmZkID0gZ2RiX3NvY2tldF9jbG9leGVjIChQRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKKy0gIGVs c2UKKy0gICAgc2NiLT5mZCA9IGdkYl9zb2NrZXRfY2xvZXhlYyAoUEZfSU5FVCwgU09DS19TVFJF QU0sIDApOworLQorLSAgaWYgKHNjYi0+ZmQgPT0gLTEpCisrICBpZiAoc29jayA8IDApCisgICAg IHJldHVybiAtMTsKKy0gIAorKworICAgLyogU2V0IHNvY2tldCBub25ibG9ja2luZy4gICovCist ICBpb2FyZyA9IDE7CistICBpb2N0bCAoc2NiLT5mZCwgRklPTkJJTywgJmlvYXJnKTsKKysgIGlu dCBpb2FyZyA9IDE7CisrCisrICBpb2N0bCAoc29jaywgRklPTkJJTywgJmlvYXJnKTsKKyAKKyAg IC8qIFVzZSBOb24tYmxvY2tpbmcgY29ubmVjdC4gIGNvbm5lY3QoKSB3aWxsIHJldHVybiAwIGlm IGNvbm5lY3RlZAorICAgICAgYWxyZWFkeS4gICovCistICBuID0gY29ubmVjdCAoc2NiLT5mZCwg KHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIHNpemVvZiAoc29ja2FkZHIpKTsKKy0KKy0g IGlmIChuIDwgMCkKKysgIGlmIChjb25uZWN0IChzb2NrLCBhaW5mby0+YWlfYWRkciwgYWluZm8t PmFpX2FkZHJsZW4pIDwgMCkKKyAgICAgeworICNpZmRlZiBVU0VfV0lOMzJBUEkKKyAgICAgICBp bnQgZXJyID0gV1NBR2V0TGFzdEVycm9yKCk7CitAQCAtMjM0LDIxICsxODUsMjYgQEAgbmV0X29w ZW4gKHN0cnVjdCBzZXJpYWwgKnNjYiwgY29uc3QgY2hhciAqbmFtZSkKKyAgICAgICBpbnQgZXJy ID0gZXJybm87CisgI2VuZGlmCisgCistICAgICAgLyogTWF5YmUgd2UncmUgd2FpdGluZyBmb3Ig dGhlIHJlbW90ZSB0YXJnZXQgdG8gYmVjb21lIHJlYWR5IHRvCistCSBhY2NlcHQgY29ubmVjdGlv bnMuICAqLworLSAgICAgIGlmICh0Y3BfYXV0b19yZXRyeQorKyAgICAgIC8qIElmIHdlJ3ZlIGdv dCBhICJjb25uZWN0aW9uIHJlZnVzZWQiIGVycm9yLCBqdXN0IHJldHVybgorKwkgLTEuICBUaGUg Y2FsbGVyIHdpbGwga25vdyB3aGF0IHRvIGRvLiAgKi8KKysgICAgICBpZiAoCisgI2lmZGVmIFVT RV9XSU4zMkFQSQorLQkgICYmIGVyciA9PSBXU0FFQ09OTlJFRlVTRUQKKysJICBlcnIgPT0gV1NB RUNPTk5SRUZVU0VECisgI2Vsc2UKKy0JICAmJiBlcnIgPT0gRUNPTk5SRUZVU0VECisrCSAgZXJy ID09IEVDT05OUkVGVVNFRAorICNlbmRpZgorLQkgICYmIHdhaXRfZm9yX2Nvbm5lY3QgKE5VTEws ICZwb2xscykgPj0gMCkKKysJICApCisgCXsKKy0JICBjbG9zZSAoc2NiLT5mZCk7CistCSAgZ290 byByZXRyeTsKKysJICBjbG9zZSAoc29jayk7CisrCSAgZXJybm8gPSBlcnI7CisrCSAgcmV0dXJu IC0xOworIAl9CisgCisgICAgICAgaWYgKAorKwkgIC8qIEFueSBvdGhlciBlcnJvciAoZXhjZXB0 IEVJTlBST0dSRVNTKSB3aWxsIGJlICJzd2FsbG93ZWQiCisrCSAgICAgaGVyZS4gIFdlIHJldHVy biB3aXRob3V0IHNwZWNpZnlpbmcgYSByZXR1cm4gdmFsdWUsIGFuZAorKwkgICAgIHNldCBlcnJu byBpZiB0aGUgY2FsbGVyIHdhbnRzIHRvIGluc3BlY3Qgd2hhdAorKwkgICAgIGhhcHBlbmVkLiAg Ki8KKyAjaWZkZWYgVVNFX1dJTjMyQVBJCisgCSAgLyogVW5kZXIgV2luZG93cywgY2FsbGluZyAi Y29ubmVjdCIgd2l0aCBhIG5vbi1ibG9ja2luZyBzb2NrZXQKKyAJICAgICByZXN1bHRzIGluIFdT QUVXT1VMREJMT0NLLCBub3QgV1NBRUlOUFJPR1JFU1MuICAqLworQEAgLTI1OCw2NiArMjE0LDE2 NiBAQCBuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQorICNl bmRpZgorIAkgICkKKyAJeworKwkgIGNsb3NlIChzb2NrKTsKKyAJICBlcnJubyA9IGVycjsKKy0J ICBuZXRfY2xvc2UgKHNjYik7CisgCSAgcmV0dXJuIC0xOworIAl9CisgCisgICAgICAgLyogTG9v a3MgbGlrZSB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0LiAgKi8KKy0gICAgICBkbyAK Ky0JeworLQkgIG4gPSB3YWl0X2Zvcl9jb25uZWN0IChzY2IsICZwb2xscyk7CistCX0gCisrICAg ICAgaW50IG47CisrCisrICAgICAgZG8KKysJbiA9IHdhaXRfZm9yX2Nvbm5lY3QgKHNvY2ssIHBv bGxzKTsKKyAgICAgICB3aGlsZSAobiA9PSAwKTsKKysKKyAgICAgICBpZiAobiA8IDApCisgCXsK Ky0JICBuZXRfY2xvc2UgKHNjYik7CisrCSAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87CisrCisr CSAgLyogQSBuZWdhdGl2ZSB2YWx1ZSBoZXJlIG1lYW5zIHRoYXQgd2UgZWl0aGVyIHRpbWVkIG91 dCBvcgorKwkgICAgIGdvdCBpbnRlcnJ1cHRlZCBieSB0aGUgdXNlci4gIEp1c3QgcmV0dXJuLiAg Ki8KKysJICBjbG9zZSAoc29jayk7CisrCSAgZXJybm8gPSBzYXZlZF9lcnJubzsKKyAJICByZXR1 cm4gLTE7CisgCX0KKyAgICAgfQorIAorICAgLyogR290IHNvbWV0aGluZy4gIElzIGl0IGFuIGVy cm9yPyAgKi8KKy0gIHsKKy0gICAgaW50IHJlcywgZXJyOworLSAgICBzb2NrbGVuX3QgbGVuOwor LQorLSAgICBsZW4gPSBzaXplb2YgKGVycik7CistICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBmb3Vy dGggcGFyYW1ldGVyIHRvIGdldHNvY2tvcHQgaXMgYSAiY2hhciAqIjsKKy0gICAgICAgb24gVU5J WCBzeXN0ZW1zIGl0IGlzIGdlbmVyYWxseSAidm9pZCAqIi4gIFRoZSBjYXN0IHRvICJjaGFyICoi CistICAgICAgIGlzIE9LIGV2ZXJ5d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0YSBwb2ludGVy IHR5cGUgY2FuIGJlCistICAgICAgIGltcGxpY2l0bHkgY29udmVydGVkIHRvICJ2b2lkICoiLiAg Ki8KKy0gICAgcmVzID0gZ2V0c29ja29wdCAoc2NiLT5mZCwgU09MX1NPQ0tFVCwgU09fRVJST1Is IChjaGFyICopICZlcnIsICZsZW4pOworLSAgICBpZiAocmVzIDwgMCB8fCBlcnIpCistICAgICAg eworLQkvKiBNYXliZSB0aGUgdGFyZ2V0IHN0aWxsIGlzbid0IHJlYWR5IHRvIGFjY2VwdCB0aGUg Y29ubmVjdGlvbi4gICovCistCWlmICh0Y3BfYXV0b19yZXRyeQorKyAgaW50IGVycjsKKysgIHNv Y2tsZW5fdCBsZW4gPSBzaXplb2YgKGVycik7CisrCisrICAvKiBPbiBXaW5kb3dzLCB0aGUgZm91 cnRoIHBhcmFtZXRlciB0byBnZXRzb2Nrb3B0IGlzIGEgImNoYXIgKiI7CisrICAgICBvbiBVTklY IHN5c3RlbXMgaXQgaXMgZ2VuZXJhbGx5ICJ2b2lkICoiLiAgVGhlIGNhc3QgdG8gImNoYXIgKiIK KysgICAgIGlzIE9LIGV2ZXJ5d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0YSBwb2ludGVyIHR5 cGUgY2FuIGJlCisrICAgICBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byAidm9pZCAqIi4gICovCisr ICBpbnQgcmV0ID0gZ2V0c29ja29wdCAoc29jaywgU09MX1NPQ0tFVCwgU09fRVJST1IsIChjaGFy ICopICZlcnIsICZsZW4pOworKworKyAgaWYgKHJldCA8IDApCisrICAgIHsKKysgICAgICBpbnQg c2F2ZWRfZXJybm8gPSBlcnJubzsKKysKKysgICAgICBjbG9zZSAoc29jayk7CisrICAgICAgZXJy bm8gPSBzYXZlZF9lcnJubzsKKysgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysgIGVsc2UgaWYg KHJldCA9PSAwICYmIGVyciAhPSAwKQorKyAgICB7CisrICAgICAgY2xvc2UgKHNvY2spOworKyAg ICAgIGVycm5vID0gZXJyOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQorKworKyAgLyogVGhl IGNvbm5lY3Rpb24gc3VjY2VlZGVkLiAgUmV0dXJuIHRoZSBzb2NrZXQuICAqLworKyAgcmV0dXJu IHNvY2s7CisrfQorKworKy8qIE9wZW4gYSB0Y3Agc29ja2V0LiAgKi8KKysKKytpbnQKKytuZXRf b3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQorK3sKKysgIHN0cnVj dCBhZGRyaW5mbyBoaW50OworKyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsKKysKKysgIG1lbXNl dCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkpOworKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxs IGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKKysgICAgIEFGX1VOU1BFQy4gICov CisrICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKKysgIGhpbnQuYWlfc29ja3R5cGUgPSBT T0NLX1NUUkVBTTsKKysgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKKysKKysgIHBh cnNlZF9jb25uZWN0aW9uX3NwZWMgcGFyc2VkID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChuYW1l LCAmaGludCk7CisrCisrICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQorKyAgICBlcnJv ciAoXygiTWlzc2luZyBwb3J0IG9uIGhvc3RuYW1lICclcyciKSwgbmFtZSk7CisrCisrICBpbnQg ciA9IGdldGFkZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksCisrCQkgICAgICAgcGFy c2VkLnBvcnRfc3RyLmNfc3RyICgpLAorKwkJICAgICAgICZoaW50LCAmYWluZm8pOworKworKyAg aWYgKHIgIT0gMCkKKysgICAgeworKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVy ciwgXygiJXM6IGNhbm5vdCByZXNvbHZlIG5hbWU6ICVzXG4iKSwKKysJCQkgIG5hbWUsIGdhaV9z dHJlcnJvciAocikpOworKyAgICAgIGVycm5vID0gRU5PRU5UOworKyAgICAgIHJldHVybiAtMTsK KysgICAgfQorKworKyAgc2NvcGVkX2ZyZWVfYWRkcmluZm8gZnJlZV9haW5mbyAoYWluZm8pOwor KworKyAgLyogRmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlJ3ZlIGdvdCBhIGNvbm5lY3Rpb24g cmVmdXNlZC4gIEl0IHdpbGwKKysgICAgIGJlIHRydWUgaWYgYW55IG9mIHRoZSBjb25uZWN0aW9u cyB0cmllZCB3YXMgcmVmdXNlZC4gICovCisrICBib29sIGdvdF9jb25ucmVmdXNlZDsKKysgIC8q IElmIGEgY29ubmVjdGlvbiBzdWNjZWVlZHMsIFNVQ0NFU1NfQUlORk8gd2lsbCBwb2ludCB0byB0 aGUKKysgICAgICdzdHJ1Y3QgYWRkcmluZm8nIHRoYXQgc3VjY2VlZC4gICovCisrICBzdHJ1Y3Qg YWRkcmluZm8gKnN1Y2Nlc3NfYWluZm8gPSBOVUxMOworKyAgdW5zaWduZWQgaW50IHBvbGxzID0g MDsKKysKKysgIC8qIEFzc3VtZSB0aGUgd29yc3QuICAqLworKyAgc2NiLT5mZCA9IC0xOworKwor KyAgZG8KKysgICAgeworKyAgICAgIGdvdF9jb25ucmVmdXNlZCA9IGZhbHNlOworKworKyAgICAg IGZvciAoc3RydWN0IGFkZHJpbmZvICppdGVyID0gYWluZm87IGl0ZXIgIT0gTlVMTDsgaXRlciA9 IGl0ZXItPmFpX25leHQpCisrCXsKKysJICAvKiBJdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcG9z c2libGUgYWRkcmVzc2VzIHRvIGNvbm5lY3QKKysJICAgICB0by4gIEZvciBlYWNoLCB3ZSdsbCB0 cnkgdG8gY29ubmVjdCBhbmQgc2VlIGlmIGl0CisrCSAgICAgc3VjY2VlZHMuICAqLworKwkgIGlu dCBzb2NrID0gdHJ5X2Nvbm5lY3QgKGl0ZXIsICZwb2xscyk7CisrCisrCSAgaWYgKHNvY2sgPj0g MCkKKysJICAgIHsKKysJICAgICAgLyogV2UndmUgZ290dGVuIGEgc3VjY2Vzc2Z1bCBjb25uZWN0 aW9uLiAgU2F2ZSBpdHMKKysJCSAnc3RydWN0IGFkZHJpbmZvJywgdGhlIHNvY2tldCwgYW5kIGJy ZWFrLiAgKi8KKysJICAgICAgc3VjY2Vzc19haW5mbyA9IGl0ZXI7CisrCSAgICAgIHNjYi0+ZmQg PSBzb2NrOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJICBlbHNlIGlmICgKKyAjaWZkZWYg VVNFX1dJTjMyQVBJCistCSAgICAmJiBlcnIgPT0gV1NBRUNPTk5SRUZVU0VECisrCSAgZXJybm8g PT0gV1NBRUNPTk5SRUZVU0VECisgI2Vsc2UKKy0JICAgICYmIGVyciA9PSBFQ09OTlJFRlVTRUQK KysJICBlcnJubyA9PSBFQ09OTlJFRlVTRUQKKyAjZW5kaWYKKy0JICAgICYmIHdhaXRfZm9yX2Nv bm5lY3QgKE5VTEwsICZwb2xscykgPj0gMCkKKy0JICB7CistCSAgICBjbG9zZSAoc2NiLT5mZCk7 CistCSAgICBnb3RvIHJldHJ5OworLQkgIH0KKy0JaWYgKGVycikKKy0JICBlcnJubyA9IGVycjsK Ky0JbmV0X2Nsb3NlIChzY2IpOworLQlyZXR1cm4gLTE7CistICAgICAgfQorLSAgfSAKKysJCSAg ICkKKysJICAgIGdvdF9jb25ucmVmdXNlZCA9IHRydWU7CisrCX0KKysgICAgfQorKyAgLyogSnVz dCByZXRyeSBpZjoKKysKKysgICAgIC0gdGNwX2F1dG9fcmV0cnkgaXMgdHJ1ZSwgYW5kCisrICAg ICAtIFdlIGhhdmVuJ3QgZ290dGVuIGEgY29ubmVjdGlvbiB5ZXQsIGFuZAorKyAgICAgLSBBbnkg b2Ygb3VyIGNvbm5lY3Rpb24gYXR0ZW1wdHMgcmV0dXJuZWQgd2l0aCBFQ09OTlJFRlVTRUQsIGFu ZAorKyAgICAgLSB3YWl0X2Zvcl9jb25uZWN0IHNpZ25hbHMgdGhhdCB3ZSBjYW4ga2VlcCBnb2lu Zy4gICovCisrICB3aGlsZSAodGNwX2F1dG9fcmV0cnkKKysJICYmIHN1Y2Nlc3NfYWluZm8gPT0g TlVMTAorKwkgJiYgZ290X2Nvbm5yZWZ1c2VkCisrCSAmJiB3YWl0X2Zvcl9jb25uZWN0ICgtMSwg JnBvbGxzKSA+PSAwKTsKKysKKysgIGlmIChzdWNjZXNzX2FpbmZvID09IE5VTEwpCisrICAgIHsK KysgICAgICBuZXRfY2xvc2UgKHNjYik7CisrICAgICAgcmV0dXJuIC0xOworKyAgICB9CisgCisg ICAvKiBUdXJuIG9mZiBub25ibG9ja2luZy4gICovCistICBpb2FyZyA9IDA7CisrI2lmZGVmIFVT RV9XSU4zMkFQSQorKyAgdV9sb25nIGlvYXJnID0gMDsKKysjZWxzZQorKyAgaW50IGlvYXJnID0g MDsKKysjZW5kaWYKKysKKyAgIGlvY3RsIChzY2ItPmZkLCBGSU9OQklPLCAmaW9hcmcpOworIAor LSAgaWYgKHVzZV91ZHAgPT0gMCkKKysgIGlmIChzdWNjZXNzX2FpbmZvLT5haV9zb2NrdHlwZSA9 PSBJUFBST1RPX1RDUCkKKyAgICAgeworICAgICAgIC8qIERpc2FibGUgTmFnbGUgYWxnb3JpdGht LiAgTmVlZGVkIGluIHNvbWUgY2FzZXMuICAqLworLSAgICAgIHRtcCA9IDE7CisrICAgICAgaW50 IHRtcCA9IDE7CisrCisgICAgICAgc2V0c29ja29wdCAoc2NiLT5mZCwgSVBQUk9UT19UQ1AsIFRD UF9OT0RFTEFZLAorLQkJICAoY2hhciAqKSZ0bXAsIHNpemVvZiAodG1wKSk7CisrCQkgIChjaGFy ICopICZ0bXAsIHNpemVvZiAodG1wKSk7CisgICAgIH0KKyAKKyAjaWZkZWYgU0lHUElQRQorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cKKy0tLSBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisrKysgYi9nZGIvdGVzdHN1aXRlL0No YW5nZUxvZworQEAgLTEsMyArMSwyMyBAQAorKzIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1 bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisrCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisrCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21h aWwuY29tPgorKwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgorKworKwkq IFJFQURNRSAoVGVzdHN1aXRlIFBhcmFtZXRlcnMpOiBNZW50aW9uIG5ldyAnR0RCX1RFU1RfU09D S0VUSE9TVCcKKysJcGFyYW1ldGVyLgorKwkqIGJvYXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2Vy dmVyLmV4cDogRG8gbm90IHNldCAnc29ja2V0aG9zdCcKKysJYnkgZGVmYXVsdC4KKysJKiBib2Fy ZHMvbmF0aXZlLWdkYnNlcnZlci5leHA6IExpa2V3aXNlLgorKwkqIGdkYi5zZXJ2ZXIvcnVuLXdp dGhvdXQtbG9jYWwtYmluYXJ5LmV4cDogSW1wcm92ZSByZWdleHAgdXNlZAorKwlmb3IgZGV0ZWN0 aW5nIHdoZW4gYSByZW1vdGUgZGVidWdnaW5nIGNvbm5lY3Rpb24gc3VjY2VlZHMuCisrCSogZ2Ri LnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IE5ldyBmaWxlLgorKwkqIGxpYi9nZGJzZXJ2ZXIt c3VwcG9ydC5leHAgKGdkYnNlcnZlcl9kZWZhdWx0X2dldF9jb21tX3BvcnQpOgorKwlEbyBub3Qg cHJlZml4IHRoZSBwb3J0IG51bWJlciB3aXRoICI6Ii4KKysJKGdkYnNlcnZlcl9zdGFydCk6IE5l dyBnbG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVC4gIEltcGxlbWVudAorKwlzdXBwb3J0IGZvciBk ZXRlY3RpbmcgYW5kIHVzaW5nIGl0LiAgQWRkICckZGVidWdob3N0X2dkYnNlcnZlcicKKysJdG8g dGhlIGxpc3Qgb2YgYXJndW1lbnRzIHVzZWQgdG8gc3RhcnQgZ2Ric2VydmVyLiAgSGFuZGxlIGNh c2UKKysJd2hlbiBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3b3JrIG5hbWUuCisrCisg MjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4K KyAKKyAJUFIgYysrLzIzMzczCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUgYi9n ZGIvdGVzdHN1aXRlL1JFQURNRQorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKKysrKyBiL2dk Yi90ZXN0c3VpdGUvUkVBRE1FCitAQCAtMjU5LDYgKzI1OSwyMCBAQCBUaGlzIG1ha2UgKG5vdCBy dW50ZXN0KSB2YXJpYWJsZSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciB0aGUKKyB0ZXN0c3Vp dGUgcHJlbG9hZHMgdGhlIHJlYWQxLnNvIGxpYnJhcnkgaW50byBleHBlY3QuICBBbnkgbm9uLWVt cHR5CisgdmFsdWUgbWVhbnMgdHJ1ZS4gIFNlZSAiUmFjZSBkZXRlY3Rpb24iIGJlbG93LgorIAor K0dEQl9URVNUX1NPQ0tFVEhPU1QKKysKKytUaGlzIHZhcmlhYmxlIGNhbiBwcm92aWRlIHRoZSBo b3N0bmFtZS9hZGRyZXNzIHRoYXQgc2hvdWxkIGJlIHVzZWQKKyt3aGVuIHBlcmZvcm1pbmcgR0RC c2VydmVyLXJlbGF0ZWQgdGVzdHMuICBUaGlzIGlzIHVzZWZ1bCBpbiBzb21lCisrc2l0dWF0aW9u cywgZS5nLiwgd2hlbiB5b3Ugd2FudCB0byB0ZXN0IHRoZSBJUHY2IGNvbm5lY3Rpdml0eSBvZiBH REIKKythbmQgR0RCc2VydmVyLCBvciB3aGVuIHVzaW5nIGEgZGlmZmVyZW50IGhvc3RuYW1lL2Fk ZHJlc3MgaXMgbmVlZGVkLgorK0ZvciBleGFtcGxlLCB0byBtYWtlIEdEQiBhbmQgR0RCc2VydmVy IHVzZSBJUHY2LW9ubHkgY29ubmVjdGlvbnMsIHlvdQorK2NhbiBkbzoKKysKKysJbWFrZSBjaGVj ayBURVNUUz0iZ2RiLnNlcnZlci8qLmV4cCIgUlVOVEVTVEZMQUdTPSdHREJfVEVTVF9TT0NLRVRI T1NUPXRjcDY6Wzo6MV0nCisrCisrTm90ZSB0aGF0IG9ubHkgYSBob3N0bmFtZS9hZGRyZXNzIGNh biBiZSBwcm92aWRlZCwgd2l0aG91dCBhIHBvcnQKKytudW1iZXIuCisrCisgUmFjZSBkZXRlY3Rp b24KKyAqKioqKioqKioqKioqKgorIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvYm9hcmRz L25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0 aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25h dGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9u YXRpdmUtZXh0ZW5kZWQtZ2Ric2VydmVyLmV4cAorQEAgLTI0LDggKzI0LDYgQEAgbG9hZF9nZW5l cmljX2NvbmZpZyAiZXh0ZW5kZWQtZ2Ric2VydmVyIgorIGxvYWRfYm9hcmRfZGVzY3JpcHRpb24g ImdkYnNlcnZlci1iYXNlIgorIGxvYWRfYm9hcmRfZGVzY3JpcHRpb24gImxvY2FsLWJvYXJkIgor IAorLXNldF9ib2FyZF9pbmZvIHNvY2tldGhvc3QgImxvY2FsaG9zdDoiCistCisgIyBXZSB3aWxs IGJlIHVzaW5nIHRoZSBleHRlbmRlZCBHREIgcmVtb3RlIHByb3RvY29sLgorIHNldF9ib2FyZF9p bmZvIGdkYl9wcm90b2NvbCAiZXh0ZW5kZWQtcmVtb3RlIgorIAorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2Fy ZHMvbmF0aXZlLWdkYnNlcnZlci5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2 ZS1nZGJzZXJ2ZXIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZ2Ric2Vy dmVyLmV4cAorQEAgLTMwLDcgKzMwLDYgQEAgc2V0X2JvYXJkX2luZm8gZ2RiLGRvX3JlbG9hZF9v bl9ydW4gMQorICMgVGhlcmUncyBubyBzdXBwb3J0IGZvciBhcmd1bWVudC1wYXNzaW5nICh5ZXQp LgorIHNldF9ib2FyZF9pbmZvIG5vYXJncyAxCisgCistc2V0X2JvYXJkX2luZm8gc29ja2V0aG9z dCAibG9jYWxob3N0OiIKKyBzZXRfYm9hcmRfaW5mbyB1c2VfZ2RiX3N0dWIgMQorIHNldF9ib2Fy ZF9pbmZvIGV4aXRfaXNfcmVsaWFibGUgMQorIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHAKKy0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4cAorQEAgLTUzLDcg KzUzLDcgQEAgc2F2ZV92YXJzIHsgR0RCRkxBR1MgfSB7CisgICAgIHNldCB1c2VfZ2RiX3N0dWIg MAorIAorICAgICBnZGJfdGVzdCAidGFyZ2V0ICR7Z2Ric2VydmVyX3Byb3RvY29sfSAke2dkYnNl cnZlcl9nZGJwb3J0fSIgXAorLQkiUmVtb3RlIGRlYnVnZ2luZyB1c2luZyAkZ2Ric2VydmVyX2dk YnBvcnQiIFwKKysJIlJlbW90ZSBkZWJ1Z2dpbmcgdXNpbmcgW3N0cmluZ190b19yZWdleHAgJGdk YnNlcnZlcl9nZGJwb3J0XSIgXAorIAkiY29ubmVjdCB0byBnZGJzZXJ2ZXIiCisgCisgICAgIGdk Yl90ZXN0ICJydW4iIFwKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvc2Vy dmVyLWNvbm5lY3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3NlcnZlci1jb25uZWN0 LmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHAKK0BAIC0wLDAgKzEsMTExIEBACisr IyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKyMKKysj IENvcHlyaWdodCAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMKKysjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IG11bHRpcGxlIHR5cGVzIG9mIGNv bm5lY3Rpb24gKElQdjQsIElQdjYsIFRDUCwgVURQKSBhbmQgbWFrZQorKyMgc3VyZSBib3RoIGdk YnNlcnZlciBhbmQgR0RCIHdvcmsuCisrCisrbG9hZF9saWIgZ2Ric2VydmVyLXN1cHBvcnQuZXhw CisrCisrc3RhbmRhcmRfdGVzdGZpbGUgbm9ybWFsLmMKKysKKytpZiB7W3NraXBfZ2Ric2VydmVy X3Rlc3RzXX0geworKyAgICByZXR1cm4gMAorK30KKysKKysjIFdlIHdhbnQgdG8gaGF2ZSBjb250 cm9sIG92ZXIgd2hlcmUgd2Ugc3RhcnQgZ2Ric2VydmVyLgorK2lmIHsgW2lzX3JlbW90ZSB0YXJn ZXRdIH0geworKyAgICByZXR1cm4gMAorK30KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICJmYWlsZWQgdG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlIGRlYnVnXSB9IHsKKysgICAg cmV0dXJuIC0xCisrfQorKworKyMgTWFrZSBzdXJlIHdlJ3JlIGRpc2Nvbm5lY3RlZCwgaW4gY2Fz ZSB3ZSdyZSB0ZXN0aW5nIHdpdGggYW4KKysjIGV4dGVuZGVkLXJlbW90ZSBib2FyZCwgdGhlcmVm b3JlIGFscmVhZHkgY29ubmVjdGVkLgorK2dkYl90ZXN0ICJkaXNjb25uZWN0IiAiLioiCisrCisr c2V0IHRhcmdldF9leGVjIFtnZGJzZXJ2ZXJfZG93bmxvYWRfY3VycmVudF9wcm9nXQorKworKyMg QW4gYXJyYXkgY29udGFpbmluZyB0aGUgdGVzdCBpbnN0cnVjdGlvbnMgZm9yIGVhY2ggc2NlbmFy aW8uICBUaGUKKysjIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQgaXMgYXMgZm9sbG93czoKKysj CisrIyAtIFRoZSBjb25uZWN0aW9uIHNwZWNpZmljYXRpb24gdG8gYmUgdXNlZCB3aGVuIHN0YXJ0 aW5nCisrIyAgIGdkYnNlcnZlci9HREIuICBUaGlzIHN0cmluZyB3aWxsIGJlIHVzZWQgdG8gc2V0 IHRoZQorKyMgICBHREJfVEVTVF9TT0NLRVRIT1NUIHdoZW4gY2FsbGluZyBnZGJzZXJ2ZXJfc3Rh cnQuCisrIworKyMgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGdkYnNlcnZlciBzaG91bGQg ZmFpbCB3aGVuIHdlIGF0dGVtcHQgdG8KKysjICAgc3RhcnQgaXQuICBVc2VmdWwgd2hlbiB0ZXN0 aW5nIGVycm9uZW91cyBjb25uZWN0aW9uIHNwZWNzIHN1Y2ggYXMKKysjICAgInRjcDg6Ii4KKysj CisrIyAtIFRoZSBwcmVmaXggdGhhdCBzaG91bGQgYmUgcHJlcGVuZGVkIHRvIHRoZSB0ZXN0IG1l c3NhZ2VzLgorK3NldCB0ZXN0X3BhcmFtcyBcCisrICAgIHsgXAorKwkgIHsgInRjcDQ6MTI3LjAu MC4xIiAwICJ0Y3A0IiB9IFwKKysJICB7ICJ0Y3A2Ojo6MSIgICAgICAgMCAidGNwNiIgfSBcCisr CSAgeyAidGNwNjpbOjoxXSIgICAgIDAgInRjcDYtd2l0aC1icmFja2V0cyIgfSBcCisrCSAgeyAi dGNwOmxvY2FsaG9zdCIgIDAgInRjcCIgfSBcCisrCSAgeyAidWRwNDoxMjcuMC4wLjEiIDAgInVk cDQiIH0gXAorKwkgIHsgInVkcDY6OjoxIiAgICAgICAwICJ1ZHA2IiB9IFwKKysJICB7ICJ1ZHA2 Ols6OjFdIiAgICAgMCAidWRwNi13aXRoLWJyYWNrZXRzIiB9IFwKKysJICB7ICJ0Y3A4OjEyMyIg ICAgICAgMSAidGNwOCIgfSBcCisrCSAgeyAidWRwMTIzOjo6IiAgICAgIDEgInVkcDEyMyIgfSBc CisrCSAgeyAiZ2FyYmFnZToxMjM0IiAgIDEgImdhcmJhZ2U6MTIzNCIgfSBcCisrICAgIH0KKysK KysjIFRoZSBiZXN0IHdheSB0byB0ZXN0IGRpZmZlcmVudCB0eXBlcyBvZiBjb25uZWN0aW9ucyBp cyB0byBzZXQgdGhlCisrIyBHREJfVEVTVF9TT0NLRVRIT1NUIHZhcmlhYmxlIGFjY29yZGluZ2x5 LgorK3NhdmVfdmFycyB7IEdEQl9URVNUX1NPQ0tFVEhPU1QgfSB7CisrICAgIGZvcmVhY2ggbGlu ZSAkdGVzdF9wYXJhbXMgeworKwlzZXQgc29ja2hvc3QgW2xpbmRleCAkbGluZSAwXQorKwlzZXQg Z2Ric2VydmVyX3Nob3VsZF9mYWlsIFtsaW5kZXggJGxpbmUgMV0KKysJc2V0IHByZWZpeCBbbGlu ZGV4ICRsaW5lIDJdCisrCisrCXdpdGhfdGVzdF9wcmVmaXggJHByZWZpeCB7CisrCSAgICBzZXQg R0RCX1RFU1RfU09DS0VUSE9TVCAkc29ja2hvc3QKKysJICAgIHNldCB0ZXN0ICJzdGFydCBnZGJz ZXJ2ZXIiCisrCisrCSAgICAjIFRyeSB0byBzdGFydCBnZGJzZXJ2ZXIuCisrCSAgICBzZXQgY2F0 Y2hyZXMgW2NhdGNoIHtzZXQgcmVzIFtnZGJzZXJ2ZXJfc3RhcnQgIiIgJHRhcmdldF9leGVjXX0g ZXJybXNnXQorKworKwkgICAgaWYgeyAkY2F0Y2hyZXMgIT0gMCB9IHsKKysJCWlmIHsgJGdkYnNl cnZlcl9zaG91bGRfZmFpbCB9IHsKKysJCSAgICBwYXNzICIkdGVzdDogZ2Ric2VydmVyIGZhaWxl ZCBhcyBleHBlY3RlZCIKKysJCX0gZWxzZSB7CisrCQkgICAgZmFpbCAiJHRlc3Q6ICRlcnJtc2ci CisrCQl9CisrCQljb250aW51ZQorKwkgICAgfSBlbHNlIHsKKysJCWlmIHsgJGdkYnNlcnZlcl9z aG91bGRfZmFpbCB9IHsKKysJCSAgICBmYWlsICIkdGVzdDogZ2Ric2VydmVyIHNob3VsZCBmYWls IGJ1dCBkaWQgbm90IgorKwkJfSBlbHNlIHsKKysJCSAgICBwYXNzICIkdGVzdCIKKysJCX0KKysJ ICAgIH0KKysKKysJICAgIHNldCBnZGJzZXJ2ZXJfcHJvdG9jb2wgW2xpbmRleCAkcmVzIDBdCisr CSAgICBzZXQgZ2Ric2VydmVyX2dkYnBvcnQgW2xpbmRleCAkcmVzIDFdCisrCSAgICBzZXQgdGVz dCAiY29ubmVjdCB0byBnZGJzZXJ2ZXIgdXNpbmcgJHNvY2tob3N0IgorKworKwkgICAgaWYgeyBb Z2RiX3RhcmdldF9jbWQgJGdkYnNlcnZlcl9wcm90b2NvbCAkZ2Ric2VydmVyX2dkYnBvcnRdID09 IDAgfSB7CisrCQlwYXNzICR0ZXN0CisrCSAgICB9IGVsc2UgeworKwkJZmFpbCAkdGVzdAorKwkg ICAgfQorKwl9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri c2VydmVyLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQu ZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKKysrKyBi L2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cAorQEAgLTIxMSw3ICsyMTEs NyBAQCBwcm9jIGdkYnNlcnZlcl9kZWZhdWx0X2dldF9yZW1vdGVfYWRkcmVzcyB7IGhvc3QgcG9y dCB9IHsKKyAjIERlZmF1bHQgcm91dGluZSB0byBjb21wdXRlIHRoZSAiY29tbSIgYXJndW1lbnQg Zm9yIGdkYnNlcnZlci4KKyAKKyBwcm9jIGdkYnNlcnZlcl9kZWZhdWx0X2dldF9jb21tX3BvcnQg eyBwb3J0IH0geworLSAgICByZXR1cm4gIjokcG9ydCIKKysgICAgcmV0dXJuICIkcG9ydCIKKyB9 CisgCisgIyBTdGFydCBhIGdkYnNlcnZlciBwcm9jZXNzIHdpdGggaW5pdGlhbCBPUFRJT05TIGFu ZCB0cmFpbGluZyBBUkdVTUVOVFMuCitAQCAtMjIxLDYgKzIyMSw3IEBAIHByb2MgZ2Ric2VydmVy X2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCB7IHBvcnQgfSB7CisgCisgcHJvYyBnZGJzZXJ2ZXJfc3Rh cnQgeyBvcHRpb25zIGFyZ3VtZW50cyB9IHsKKyAgICAgZ2xvYmFsIHBvcnRudW0KKysgICAgZ2xv YmFsIEdEQl9URVNUX1NPQ0tFVEhPU1QKKyAKKyAgICAgIyBQb3J0IGlkIC0tIGVpdGhlciBzcGVj aWZpZWQgaW4gYmFzZWJvYXJkIGZpbGUsIG9yIG1hbmFnZWQgaGVyZS4KKyAgICAgaWYgW3Rhcmdl dF9pbmZvIGV4aXN0cyBnZGIsc29ja2V0cG9ydF0geworQEAgLTIzMSwxMCArMjMyLDIyIEBAIHBy b2MgZ2Ric2VydmVyX3N0YXJ0IHsgb3B0aW9ucyBhcmd1bWVudHMgfSB7CisgICAgIH0KKyAKKyAg ICAgIyBFeHRyYWN0IHRoZSBsb2NhbCBhbmQgcmVtb3RlIGhvc3QgaWRzIGZyb20gdGhlIHRhcmdl dCBib2FyZCBzdHJ1Y3QuCistICAgIGlmIFt0YXJnZXRfaW5mbyBleGlzdHMgc29ja2V0aG9zdF0g eworKyAgICBpZiB7IFtpbmZvIGV4aXN0cyBHREJfVEVTVF9TT0NLRVRIT1NUXSB9IHsKKysJIyBU aGUgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8gcHJvdmlkZSBhIHBvcnQgbnVtYmVyLCBqdXN0IGEK KysJIyBob3N0bmFtZS9hZGRyZXNzLCB0aGVyZWZvcmUgd2UgYWRkIHRoZSB0cmFpbGluZyAiOiIg aGVyZS4KKysJc2V0IGRlYnVnaG9zdCAiJHtHREJfVEVTVF9TT0NLRVRIT1NUfToiCisrCSMgRXNj YXBlIG9wZW4gYW5kIGNsb3NlIHNxdWFyZSBicmFja2V0cy4KKysJc2V0IGRlYnVnaG9zdF90bXAg W3N0cmluZyBtYXAgeyBbIFxcWyBdIFxcXSB9ICRkZWJ1Z2hvc3RdCisrCSMgV2UgbmVlZCBhICJn ZGJzZXJ2ZXIiIHZlcnNpb24gb2YgdGhlIGRlYnVnaG9zdCwgd2hpY2ggd2lsbAorKwkjIGhhdmUg dGhlIHBvc3NpYmxlIGNvbm5lY3Rpb24gcHJlZml4IHN0cmlwcGVkLiAgVGhpcyBpcworKwkjIGJl Y2F1c2UgZ2Ric2VydmVyIGN1cnJlbnRseSBkb2Vzbid0IHJlY29nbml6ZSB0aGUgcHJlZml4ZXMu CisrCXJlZ3N1YiAtYWxsICJeXCh0Y3A6fHVkcDp8dGNwNDp8dWRwNDp8dGNwNjp8dWRwNjpcKSIg JGRlYnVnaG9zdF90bXAgIiIgZGVidWdob3N0X2dkYnNlcnZlcgorKyAgICB9IGVsc2VpZiBbdGFy Z2V0X2luZm8gZXhpc3RzIHNvY2tldGhvc3RdIHsKKyAJc2V0IGRlYnVnaG9zdCBbdGFyZ2V0X2lu Zm8gc29ja2V0aG9zdF0KKysJc2V0IGRlYnVnaG9zdF9nZGJzZXJ2ZXIgJGRlYnVnaG9zdAorICAg ICB9IGVsc2UgeworIAlzZXQgZGVidWdob3N0ICJsb2NhbGhvc3Q6IgorKwlzZXQgZGVidWdob3N0 X2dkYnNlcnZlciAkZGVidWdob3N0CisgICAgIH0KKyAKKyAgICAgIyBTb21lIGJvYXJkcyB1c2Ug YSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBwb3J0IHRoYXQgaXMgcGFzc2VkIHRvCitAQCAtMjc3 LDggKzI5MCwxNCBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0g eworIAlpZiB7ICRvcHRpb25zICE9ICIiIH0geworIAkgICAgYXBwZW5kIGdkYnNlcnZlcl9jb21t YW5kICIgJG9wdGlvbnMiCisgCX0KKysJaWYgeyAkZGVidWdob3N0X2dkYnNlcnZlciAhPSAiIiB9 IHsKKysJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICRkZWJ1Z2hvc3RfZ2Ric2VydmVy IgorKwl9CisgCWlmIHsgJHBvcnRudW0gIT0gIiIgfSB7CistCSAgICBhcHBlbmQgZ2Ric2VydmVy X2NvbW1hbmQgIiBbJGdldF9jb21tX3BvcnQgJHBvcnRudW1dIgorKwkgICAgaWYgeyAkZGVidWdo b3N0X2dkYnNlcnZlciA9PSAiIiB9IHsKKysJCWFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICIK KysJICAgIH0KKysJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiWyRnZXRfY29tbV9wb3J0 ICRwb3J0bnVtXSIKKyAJfQorIAlpZiB7ICRhcmd1bWVudHMgIT0gIiIgfSB7CisgCSAgICBhcHBl bmQgZ2Ric2VydmVyX2NvbW1hbmQgIiAkYXJndW1lbnRzIgorQEAgLTMwNyw2ICszMjYsOSBAQCBw cm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0geworIAkJICAgIGNvbnRp bnVlCisgCQl9CisgCSAgICB9CisrCSAgICAtcmUgIi4qOiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiBO YW1lIG9yIHNlcnZpY2Ugbm90IGtub3duXHJcbiIgeworKwkJZXJyb3IgImdkYnNlcnZlciBjYW5u b3QgcmVzb2x2ZSBuYW1lLiIKKysJICAgIH0KKyAJICAgIHRpbWVvdXQgeworIAkJZXJyb3IgIlRp bWVvdXQgd2FpdGluZyBmb3IgZ2Ric2VydmVyIHJlc3BvbnNlLiIKKyAJICAgIH0KK2RpZmYgLS1n aXQgYS9nZGIvdW5pdHRlc3RzL3BhcnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYyBiL2dk Yi91bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3VuaXR0ZXN0cy9wYXJzZS1jb25u ZWN0aW9uLXNwZWMtc2VsZnRlc3RzLmMKK0BAIC0wLDAgKzEsMjQ5IEBACisrLyogU2VsZiB0ZXN0 cyBmb3IgcGFyc2luZyBjb25uZWN0aW9uIHNwZWNzIGZvciBHREIsIHRoZSBHTlUgZGVidWdnZXIu CisrCisrICAgQ29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVk ZSAic2VsZnRlc3QuaCIKKysjaW5jbHVkZSAiY29tbW9uL25ldHN0dWZmLmgiCisrI2luY2x1ZGUg ImRpYWdub3N0aWNzLmgiCisrI2lmZGVmIFVTRV9XSU4zMkFQSQorKyNpbmNsdWRlIDx3aW5zb2Nr Mi5oPgorKyNpbmNsdWRlIDx3c3BpYXBpLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8bmV0aW5ldC9p bi5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjaW5jbHVkZSA8bmV0ZGIuaD4KKysjaW5j bHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorKyNlbmRpZgor KworK25hbWVzcGFjZSBzZWxmdGVzdHMgeworK25hbWVzcGFjZSBwYXJzZV9jb25uZWN0aW9uX3Nw ZWNfdGVzdHMgeworKworKy8qIEF1eGlsaWFyeSBzdHJ1Y3QgdGhhdCBob2xkcyBpbmZvIGFib3V0 IGEgc3BlY2lmaWMgdGVzdCBmb3IgYQorKyAgIGNvbm5lY3Rpb24gc3BlYy4gICovCisrCisrc3Ry dWN0IHBhcnNlX2Nvbm5fdGVzdAorK3sKKysgIC8qIFRoZSBjb25uZWN0aW9uIHNwZWMuICAqLwor KyAgY29uc3QgY2hhciAqY29ubnNwZWM7CisrCisrICAvKiBFeHBlY3RlZCByZXN1bHQgZnJvbSAn cGFyc2VfY29ubmVjdGlvbl9zcGVjJy4gICovCisrICBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIGV4 cGVjdGVkX3Jlc3VsdDsKKysKKysgIC8qIFRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBmYWlsLCBm YWxzZSBvdGhlcndpc2UuICBJZiB0cnVlLCBvbmx5CisrICAgICB0aGUgQ09OTlNQRUMgZmllbGQg c2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgdmFsaWQuICAqLworKyAgYm9vbCBzaG91bGRfZmFpbDsK KysKKysgIC8qIFRoZSBleHBlY3RlZCBBSV9GQU1JTFkgdG8gYmUgZm91bmQgb24gdGhlICdzdHJ1 Y3QgYWRkcmluZm8nCisrICAgICBISU5ULiAgKi8KKysgIGludCBleHBfYWlfZmFtaWx5OworKwor KyAgLyogVGhlIGV4cGVjdGVkIEFJX1NPQ0tUWVBFIHRvIGJlIGZvdW5kIG9uIHRoZSAnc3RydWN0 IGFkZHJpbmZvJworKyAgICAgSElOVC4gICovCisrICBpbnQgZXhwX2FpX3NvY2t0eXBlOworKwor KyAgLyogVGhlIGV4cGVjdGVkIEFJX1BST1RPQ09MIHRvIGJlIGZvdW5kIG9uIHRoZSAnc3RydWN0 IGFkZHJpbmZvJworKyAgICAgSElOVC4gICovCisrICBpbnQgZXhwX2FpX3Byb3RvY29sOworK307 CisrCisrLyogU29tZSBkZWZpbmVzIHRvIGhlbHAgdXMgZmlsbCBhICdzdHJ1Y3QgcGFyc2VfY29u bl90ZXN0Jy4gICovCisrCisrLyogSW5pdGlhbGl6ZSBhIGZ1bGwgZW50cnkuICAqLworKyNkZWZp bmUgSU5JVF9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIFNIT1VMRF9GQUlMLCBFWFBf QUlfRkFNSUxZLCBcCisrCQkgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkJCQlc CisrICB7IEFERFIsIHsgRVhQX0hPU1QsIEVYUF9QT1JUIH0sIFNIT1VMRF9GQUlMLCBFWFBfQUlf RkFNSUxZLCBcCisrICAgIEVYUF9BSV9TT0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MIH0KKysKKysv KiBJbml0aWFsaXplIGFuIHVucHJlZml4ZWQgZW50cnkuICBJbiB0aGlzIGNhc2UsIHdlIGRvbid0 IGV4cGVjdAorKyAgIGFueXRoaW5nIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZvJyBISU5ULiAgKi8K KysjZGVmaW5lIElOSVRfVU5QUkVGSVhFRF9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQp IFwKKysgIElOSVRfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgZmFsc2UsIDAsIDAs IDApCisrCisrLyogSW5pdGlhbGl6ZWQgYW4gdW5wcmVmaXhlZCBJUHY2IGVudHJ5LiAgSW4gdGhp cyBjYXNlLCB3ZSBkb24ndAorKyAgIGV4cGVjdCBhbnl0aGluZyBvbiB0aGUgJ3N0cnVjdCBhZGRy aW5mbycgSElOVC4gICovCisrI2RlZmluZSBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWShBRERS LCBFWFBfSE9TVCwgRVhQX1BPUlQpIFwKKysgIElOSVRfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBF WFBfUE9SVCwgZmFsc2UsIEFGX0lORVQ2LCAwLCAwKQorKworKy8qIEluaXRpYWxpemUgYSBwcmVm aXhlZCBlbnRyeS4gICovCisrI2RlZmluZSBJTklUX1BSRUZJWEVEX0VOVFJZKEFERFIsIEVYUF9I T1NULCBFWFBfUE9SVCwgRVhQX0FJX0ZBTUlMWSwgXAorKwkJCSAgICBFWFBfQUlfU09DS1RZUEUs IEVYUF9BSV9QUk9UT0NPTCkgXAorKyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9Q T1JULCBmYWxzZSwgRVhQX0FJX0ZBTUlMWSwgXAorKwkgICAgICBFWFBfQUlfU09DS1RZUEUsIEVY UF9BSV9QUk9UT0NPTCkKKysKKysvKiBJbml0aWFsaXplIGFuIGVudHJ5IHByZWZpeGVkIHdpdGgg InRjcDQ6Ii4gICovCisrI2RlZmluZSBJTklUX1BSRUZJWEVEX0lQVjRfVENQKEFERFIsIEVYUF9I T1NULCBFWFBfUE9SVCkgXAorKyAgSU5JVF9QUkVGSVhFRF9FTlRSWSAoQUREUiwgRVhQX0hPU1Qs IEVYUF9QT1JULCBBRl9JTkVULCBTT0NLX1NUUkVBTSwgXAorKwkJICAgICAgIElQUFJPVE9fVENQ KQorKworKy8qIEluaXRpYWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidGNwNjoiLiAgKi8K KysjZGVmaW5lIElOSVRfUFJFRklYRURfSVBWNl9UQ1AoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JU KSBcCisrICBJTklUX1BSRUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFG X0lORVQ2LCBTT0NLX1NUUkVBTSwgXAorKwkJICAgICAgIElQUFJPVE9fVENQKQorKworKy8qIElu aXRpYWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidWRwNDoiLiAgKi8KKysjZGVmaW5lIElO SVRfUFJFRklYRURfSVBWNF9VRFAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCisrICBJTklU X1BSRUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQsIFNPQ0tf REdSQU0sIFwKKysJCSAgICAgICBJUFBST1RPX1VEUCkKKysKKysvKiBJbml0aWFsaXplIGFuIGVu dHJ5IHByZWZpeGVkIHdpdGggInVkcDY6Ii4gICovCisrI2RlZmluZSBJTklUX1BSRUZJWEVEX0lQ VjZfVURQKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAorKyAgSU5JVF9QUkVGSVhFRF9FTlRS WSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBBRl9JTkVUNiwgU09DS19ER1JBTSwgXAorKwkJ ICAgICAgIElQUFJPVE9fVURQKQorKworKy8qIEluaXRpYWxpemUgYSBib2d1cyBlbnRyeSwgaS5l LiwgYSBjb25uZWN0aW9uIHNwZWMgdGhhdCBzaG91bGQKKysgICBmYWlsLiAgKi8KKysjZGVmaW5l IElOSVRfQk9HVVNfRU5UUlkoQUREUikgXAorKyAgSU5JVF9FTlRSWSAoQUREUiwgIiIsICIiLCB0 cnVlLCAwLCAwLCAwKQorKworKy8qIFRoZSB2YXJpYWJsZSB3aGljaCBob2xkcyBhbGwgb2Ygb3Vy IHRlc3RzLiAgKi8KKysKKytzdGF0aWMgY29uc3QgcGFyc2VfY29ubl90ZXN0IGNvbm5fdGVzdFtd ID0KKysgIHsKKysgICAgLyogVW5wcmVmaXhlZCBhZGRyZXNzZXMuICAqLworKworKyAgICAvKiBJ UHY0LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfRU5U UlkgKCIxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAorKyAgICAvKiBJUHY0 LCBvbmx5IGhvc3QuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjEi LCAiMTI3LjAuMC4xIiwgIiIpLAorKyAgICAvKiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLworKyAg ICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwK KysKKysgICAgLyogSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50LCBubyBicmFja2V0cy4gICov CisrICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjo6MToxMjM0IiwgIjo6MSIsICIxMjM0Iiks CisrICAgIC8qIElQdjYsIG1pc3NpbmcgcG9ydCwgbm8gYnJhY2tldHMuICAqLworKyAgICBJTklU X1VOUFJFRklYRURfRU5UUlkgKCI6OjE6IiwgIjo6MSIsICIiKSwKKysgICAgLyogSVB2NiwgaG9z dCBhbmQgcG9ydCBwcmVzZW50LCB3aXRoIGJyYWNrZXRzLiAgKi8KKysgICAgSU5JVF9VTlBSRUZJ WEVEX0lQVjZfRU5UUlkgKCJbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0IiksCisrICAgIC8qIElQ djYsIG9ubHkgaG9zdCwgd2l0aCBicmFja2V0cy4gICovCisrICAgIElOSVRfVU5QUkVGSVhFRF9J UFY2X0VOVFJZICgiWzo6MV0iLCAiOjoxIiwgIiIpLAorKyAgICAvKiBJUHY2LCBtaXNzaW5nIHBv cnQsIHdpdGggYnJhY2tldHMuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWSAo Ils6OjFdOiIsICI6OjEiLCAiIiksCisrCisrICAgIC8qIFVuc3BlY2lmaWVkLCBvbmx5IHBvcnQu ICAqLworKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCI6MTIzNCIsICJsb2NhbGhvc3QiLCAi MTIzNCIpLAorKworKyAgICAvKiBQcmVmaXhlZCBhZGRyZXNzZXMuICAqLworKworKyAgICAvKiBQ cmVmaXhlZCAidGNwNDoiIElQdjQsIGhvc3QgYW5kIHBvcnQgcHJlc2VudHMuICAqLworKyAgICBJ TklUX1BSRUZJWEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4wLjEi LCAiMTIzNCIpLAorKyAgICAvKiBQcmVmaXhlZCAidGNwNDoiIElQdjQsIG9ubHkgcG9ydC4gICov CisrICAgIElOSVRfUFJFRklYRURfSVBWNF9UQ1AgKCJ0Y3A0OjoxMjM0IiwgImxvY2FsaG9zdCIs ICIxMjM0IiksCisrICAgIC8qIFByZWZpeGVkICJ0Y3A0OiIgSVB2NCwgb25seSBob3N0LiAgKi8K KysgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1RDUCAoInRjcDQ6MTI3LjAuMC4xIiwgIjEyNy4wLjAu MSIsICIiKSwKKysgICAgLyogUHJlZml4ZWQgInRjcDQ6IiBJUHY0LCBtaXNzaW5nIHBvcnQuICAq LworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjE6IiwgIjEyNy4w LjAuMSIsICIiKSwKKysKKysgICAgLyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0LCBob3N0IGFuZCBw b3J0IHByZXNlbnQuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgidWRwNDoxMjcu MC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAorKyAgICAvKiBQcmVmaXhlZCAidWRw NDoiIElQdjQsIG9ubHkgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNF9VRFAgKCJ1 ZHA0OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCisrICAgIC8qIFByZWZpeGVkICJ1ZHA0 OiIgSVB2NCwgb25seSBob3N0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1VEUCAoInVk cDQ6MTI3LjAuMC4xIiwgIjEyNy4wLjAuMSIsICIiKSwKKysgICAgLyogUHJlZml4ZWQgInVkcDQ6 IiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgi dWRwNDoxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKKysKKysKKysgICAgLyogUHJlZml4 ZWQgInRjcDY6IiBJUHY2LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJTklUX1BS RUZJWEVEX0lQVjZfVENQICgidGNwNjo6OjE6MTIzNCIsICI6OjEiLCAiMTIzNCIpLAorKyAgICAv KiBQcmVmaXhlZCAidGNwNjoiIElQdjYsIG9ubHkgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklY RURfSVBWNl9UQ1AgKCJ0Y3A2OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCisrICAgIC8q IFByZWZpeGVkICJ0Y3A2OiIgSVB2Niwgb25seSBob3N0LiAgKi8KKysgICAgLy9JTklUX1BSRUZJ WEVEX0lQVjZfVENQICgidGNwNjo6OjEiLCAiOjoxIiwgIiIpLAorKyAgICAvKiBQcmVmaXhlZCAi dGNwNjoiIElQdjYsIG1pc3NpbmcgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNl9U Q1AgKCJ0Y3A2Ojo6MToiLCAiOjoxIiwgIiIpLAorKworKyAgICAvKiBQcmVmaXhlZCAidWRwNjoi IElQdjYsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBW Nl9VRFAgKCJ1ZHA2Ojo6MToxMjM0IiwgIjo6MSIsICIxMjM0IiksCisrICAgIC8qIFByZWZpeGVk ICJ1ZHA2OiIgSVB2Niwgb25seSBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VE UCAoInVkcDY6OjEyMzQiLCAibG9jYWxob3N0IiwgIjEyMzQiKSwKKysgICAgLyogUHJlZml4ZWQg InVkcDY6IiBJUHY2LCBvbmx5IGhvc3QuICAqLworKyAgICAvL0lOSVRfUFJFRklYRURfSVBWNl9V RFAgKCJ1ZHA2Ojo6MSIsICI6OjEiLCAiIiksCisrICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2 NiwgbWlzc2luZyBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6 OjoxOiIsICI6OjEiLCAiIiksCisrCisrICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRo IGJyYWNrZXRzLCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJTklUX1BSRUZJWEVE X0lQVjZfVENQICgidGNwNjpbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0IiksCisrICAgIC8qIFBy ZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBvbmx5IGhvc3QuICAqLworKyAgICBJ TklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjoxXSIsICI6OjEiLCAiIiksCisrICAgIC8q IFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBtaXNzaW5nIHBvcnQuICAqLwor KyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjoxXToiLCAiOjoxIiwgIiIpLAor KworKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgaG9zdCBhbmQg cG9ydCBwcmVzZW50LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6 MV06MTIzNCIsICI6OjEiLCAiMTIzNCIpLAorKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYg d2l0aCBicmFja2V0cywgb25seSBob3N0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VE UCAoInVkcDY6Wzo6MV0iLCAiOjoxIiwgIiIpLAorKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQ djYgd2l0aCBicmFja2V0cywgbWlzc2luZyBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9J UFY2X1VEUCAoInVkcDY6Wzo6MV06IiwgIjo6MSIsICIiKSwKKysKKysKKysgICAgLyogQm9ndXMg YWRkcmVzc2VzLiAgKi8KKysgICAgSU5JVF9CT0dVU19FTlRSWSAoInRjcDY6Wzo6MV0xMjM6NDQi KSwKKysgICAgSU5JVF9CT0dVU19FTlRSWSAoIls6OjEiKSwKKysgICAgSU5JVF9CT0dVU19FTlRS WSAoInRjcDY6OjoxXToiKSwKKysgIH07CisrCisrLyogVGVzdCBhIGNvbm5lY3Rpb24gc3BlYyBD LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Rlc3RfY29ubiAoY29uc3QgcGFyc2VfY29ubl90ZXN0 ICZjKQorK3sKKysgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworKyAgcGFyc2VkX2Nvbm5lY3Rpb25f c3BlYyByZXQ7CisrCisrICBtZW1zZXQgKCZoaW50LCAwLCBzaXplb2YgKGhpbnQpKTsKKysKKysg IFRSWQorKyAgICB7CisrICAgICAgcmV0ID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChjLmNvbm5z cGVjLCAmaGludCk7CisrICAgIH0KKysgIENBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCisr ICAgIHsKKysgICAgICAvKiBJZiB3ZSBjYXVnaHQgYW4gZXJyb3IsIHdlIHNob3VsZCBjaGVjayBp ZiB0aGlzIGNvbm5lY3Rpb24KKysJIHNwZWMgd2FzIHN1cHBvc2VkIHRvIGZhaWwuICAqLworKyAg ICAgIFNFTEZfQ0hFQ0sgKGMuc2hvdWxkX2ZhaWwpOworKyAgICAgIHJldHVybjsKKysgICAgfQor KyAgRU5EX0NBVENICisrCisrICBTRUxGX0NIRUNLICghYy5zaG91bGRfZmFpbCk7CisrICBTRUxG X0NIRUNLIChyZXQuaG9zdF9zdHIgPT0gYy5leHBlY3RlZF9yZXN1bHQuaG9zdF9zdHIpOworKyAg U0VMRl9DSEVDSyAocmV0LnBvcnRfc3RyID09IGMuZXhwZWN0ZWRfcmVzdWx0LnBvcnRfc3RyKTsK KysgIFNFTEZfQ0hFQ0sgKGhpbnQuYWlfZmFtaWx5ID09IGMuZXhwX2FpX2ZhbWlseSk7CisrICBT RUxGX0NIRUNLIChoaW50LmFpX3NvY2t0eXBlID09IGMuZXhwX2FpX3NvY2t0eXBlKTsKKysgIFNF TEZfQ0hFQ0sgKGhpbnQuYWlfcHJvdG9jb2wgPT0gYy5leHBfYWlfcHJvdG9jb2wpOworK30KKysK KysvKiBSdW4gdGhlIHRlc3RzIGFzc29jaWF0ZWQgd2l0aCBwYXJzaW5nIGNvbm5lY3Rpb24gc3Bl Y3MuICAqLworKworK3N0YXRpYyB2b2lkCisrcnVuX3Rlc3RzICgpCisreworKyAgZm9yIChjb25z dCBwYXJzZV9jb25uX3Rlc3QgJmMgOiBjb25uX3Rlc3QpCisrICAgIHRlc3RfY29ubiAoYyk7Cisr fQorK30gLyogbmFtZXNwYWNlIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0cyAqLworK30gLyog bmFtZXNwYWNlIHNlbGZ0ZXN0cyAqLworKworK3ZvaWQKKytfaW5pdGlhbGl6ZV9wYXJzZV9jb25u ZWN0aW9uX3NwZWNfc2VsZnRlc3RzICgpCisreworKyAgc2VsZnRlc3RzOjpyZWdpc3Rlcl90ZXN0 ICgicGFyc2VfY29ubmVjdGlvbl9zcGVjIiwKKysJCQkgICAgc2VsZnRlc3RzOjpwYXJzZV9jb25u ZWN0aW9uX3NwZWNfdGVzdHM6OnJ1bl90ZXN0cyk7CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6 ODgxODQ5LWlwdjYtMm9mMi5wYXRjaCBiL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMi5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5Yzk2Ni4uMDAwMDAwMAotLS0gYS9nZGIt cmhiejg4MTg0OS1pcHY2LTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA Ci1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2Vy Z2lvIER1cmlnYW4gSnVuaW9yIDxzZXJnaW9kakByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAxMyBK dWwgMjAxOCAxNjoyMDozNCAtMDQwMAotU3ViamVjdDogZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2Yy LnBhdGNoCi0KLTs7IEltcGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2ZXIgKFJI IEJaIDg4MTg0OSwgU2VyZ2lvIER1cmlnYW4gSnVuaW9yKS4KLQotRXhwZWN0IGZvciBhbm90aGVy IHZhcmlhbnQgb2YgZXJyb3IgbWVzc2FnZSB3aGVuIGdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBo b3N0bmFtZQotCi1JJ3ZlIG5vdGljZWQgdGhhdCBvbiBhIGZldyBob3N0cywgd2hlbiBnaXZlbiBh biBpbnZhbGlkIGhvc3RuYW1lLAotZ2Ric2VydmVyIGZhaWxzIHdpdGg6Ci0KLSAgc3Bhd24gLy4u Ly4uL2dkYi9nZGJzZXJ2ZXIvZ2Ric2VydmVyIC0tb25jZSB0Y3A4OjEyMzoyMzUzIC9nZGIvYnVp bGQvZmVkb3JhLXMzOTB4L2J1aWxkL2dkYi90ZXN0c3VpdGUvb3V0cHV0cy9nZGIuc2VydmVyL3Nl cnZlci1jb25uZWN0L3NlcnZlci1jb25uZWN0Ci0gIHRjcDg6MTIzOjIzNTM6IGNhbm5vdCByZXNv bHZlIG5hbWU6IE5vIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGhvc3RuYW1lCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eCi0gIEV4aXRpbmcKLQotVW5mb3J0dW5hdGVseSwgdGhpcyBjYXVzZXMgYSBmYWlsIG9u IHRoZSBuZXcKLWdkYi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3QuZXhwIHRlc3QgKGludHJvZHVjZWQg YnkgdGhlIElQdjYgcGF0Y2gpOgotCi0gIEZBSUw6IGdkYi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3Qu ZXhwOiB0Y3A4OiBzdGFydCBnZGJzZXJ2ZXI6IGdkYnNlcnZlciBzaG91bGQgZmFpbCBidXQgZGlk IG5vdAotCi1UaGlzIGhhcHBlbnMgYmVjYXVzZSB3ZSdyZSBleHBlY3RpbmcgZm9yIGFub3RoZXIg dmFyaWFudCBvZiB0aGlzIGVycm9yCi1tZXNzYWdlOgotCi0gIGNhbm5vdCByZXNvbHZlIG5hbWU6 IE5hbWUgb3Igc2VydmljZSBub3Qga25vd24KLQotVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGV4dGVu ZHMgdGhlIGhlbHBlciBmdW5jdGlvbiAnZ2Ric2VydmVyX3N0YXJ0JyB0bwotYWxzbyByZWNvZ25p emUgdGhlICJObyBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBob3N0bmFtZSIgbWVzc2FnZS4KLVRo aXMgImZpeGVzIiB0aGUgdGVzdGNhc2Ugb24gdGhlIGhvc3RzIHRoYXQgdXNlIHRoaXMgdmFyaWFu dC4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0yMDE4LTA3LTEzICBTZXJnaW8gRHVyaWdh biBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotCi0JKiBsaWIvZ2Ric2VydmVyLXN1cHBv cnQuZXhwIChnZGJzZXJ2ZXJfc3RhcnQpOiBFeHBlY3QgZm9yIHRoZQotCW1lc3NhZ2UgIk5vIGFk ZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGhvc3RuYW1lIiB3aGVuIGdkYnNlcnZlcgotCWNhbm5vdCBy ZXNvbHZlIHRoZSBob3N0bmFtZS4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLS0tLSBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nCi0rKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAx OC0wNy0xMyAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSsK LSsJKiBsaWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIChnZGJzZXJ2ZXJfc3RhcnQpOiBFeHBlY3Qg Zm9yIHRoZQotKwltZXNzYWdlICJObyBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBob3N0bmFtZSIg d2hlbiBnZGJzZXJ2ZXIKLSsJY2Fubm90IHJlc29sdmUgdGhlIGhvc3RuYW1lLgotKwotIDIwMTgt MDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0gCSAg ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCSAgICBQYXVs IEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZl ci1zdXBwb3J0LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQu ZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKLUBAIC0z MjYsNyArMzI2LDcgQEAgcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50cyB9 IHsKLSAJCSAgICBjb250aW51ZQotIAkJfQotIAkgICAgfQotLQkgICAgLXJlICIuKjogY2Fubm90 IHJlc29sdmUgbmFtZTogTmFtZSBvciBzZXJ2aWNlIG5vdCBrbm93blxyXG4iIHsKLSsJICAgIC1y ZSAiLio6IGNhbm5vdCByZXNvbHZlIG5hbWU6IFwoTm8gYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGgg aG9zdG5hbWV8TmFtZSBvciBzZXJ2aWNlIG5vdCBrbm93blwpXHJcbiIgewotIAkJZXJyb3IgImdk YnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBuYW1lLiIKLSAJICAgIH0KLSAJICAgIHRpbWVvdXQgewoK ZGlmZiAtLWdpdCBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMy5wYXRjaCBiL2dkYi1yaGJ6ODgx ODQ5LWlwdjYtMm9mMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z OTBiZTBmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2YzLnBhdGNo CkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+ CitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE1OjIzOjI3IC0wNDAwCitTdWJqZWN0OiBnZGItcmhi ejg4MTg0OS1pcHY2LTJvZjMucGF0Y2gKKworTWF0Y2ggYW55IGtpbmQgb2YgZXJyb3IgYWZ0ZXIg ImNhbm5vdCByZXNvbHZlIG5hbWUiIG9uIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHA6Z2Ric2Vy dmVyX3N0YXJ0CisKK09uIGNvbW1pdDoKKworY29tbWl0IDdmMWY3ZTIzOTM5YWRjN2Q3MTAzNmEx N2ZjNjA4MWUzYWY3Y2E1ODUKK0F1dGhvcjogU2VyZ2lvIER1cmlnYW4gSnVuaW9yIDxzZXJnaW9k akByZWRoYXQuY29tPgorRGF0ZTogICBGcmkgSnVsIDEzIDE2OjIwOjM0IDIwMTggLTA0MDAKKwor ICAgIEV4cGVjdCBmb3IgYW5vdGhlciB2YXJpYW50IG9mIGVycm9yIG1lc3NhZ2Ugd2hlbiBnZGJz ZXJ2ZXIgY2Fubm90IHJlc29sdmUgaG9zdG5hbWUKKworSSBleHRlbmRlZCB0aGUgcmVndWxhciBl eHByZXNzaW9uIGJlaW5nIHVzZWQgdG8gaWRlbnRpZnkgd2hldGhlcgorZ2Ric2VydmVyIGNvdWxk IG5vdCByZXNvbHZlIGEgKGhvc3QpbmFtZS4gIFRoaXMgd2FzIG5lZWRlZCBiZWNhdXNlIHRoZQor ZXJyb3IgbWVzc2FnZSBiZWluZyBwcmludGVkIGhhZCBhIGRpZmZlcmVudCB2YXJpYXRpb24gYWNy b3NzIHNvbWUKK3N5c3RlbXMuICBIb3dldmVyLCBhcyBpdCB0dXJucyBvdXQsIEkndmUganVzdCBu b3RpY2VkIHRoYXQgdGhlIG1lc3NhZ2UKK2hhcyB5ZXQgYW5vdGhlciB2YXJpYXRpb246CisKKyAg dGFyZ2V0IHJlbW90ZSB0Y3A4OjEyMzoyMzUzCisgIHRjcDg6MTIzOjIzNTM6IGNhbm5vdCByZXNv bHZlIG5hbWU6IFN5c3RlbSBlcnJvcgorICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl4KKyAgdGNwODoxMjM6MjM1MzogTm8gc3VjaCBmaWxlIG9yIGRpcmVj dG9yeS4KKyAgKGdkYikgRkFJTDogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IHRjcDg6 IGNvbm5lY3QgdG8gZ2Ric2VydmVyIHVzaW5nIHRjcDg6MTIzCisKK3doaWNoIGlzIGNhdXNpbmcg RkFJTHMgb24gc29tZSBzeXN0ZW1zIChuYW1lbHksIEZlZG9yYS1pNjg2IG9uCitCdWlsZEJvdCku CisKK1NvIGluc3RlYWQgb2YgdHJ5aW5nIHRvIHByZWRpY3QgZXZlcnl0aGluZyB0aGF0IGNhbiBi ZSBwcmludGVkLCBJCitkZWNpZGVkIHRvIGp1c3QgbWF0Y2ggYW55dGhpbmcgYWZ0ZXIgdGhlICJj YW5ub3QgcmVzb2x2ZSBuYW1lOiAiIHBhcnQuCitUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhhdC4K KworUmVncmVzc2lvbiB0ZXN0ZWQgb24gdGhlIEJ1aWxkQm90LgorCitnZGIvdGVzdHN1aXRlL0No YW5nZUxvZzoKKzIwMTgtMDctMzAgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJl ZGhhdC5jb20+CisKKwkqIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgKGdkYnNlcnZlcl9zdGFy dCk6IE1hdGNoIGFueSBraW5kIG9mCisJZXJyb3IgYWZ0ZXIgImNhbm5vdCByZXNvbHZlIG5hbWUi IHN0cmluZy4KKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBw b3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwCisrKysgYi9nZGIvdGVzdHN1 aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKK0BAIC0zMjYsNyArMzI2LDcgQEAgcHJvYyBn ZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50cyB9IHsKKyAJCSAgICBjb250aW51ZQor IAkJfQorIAkgICAgfQorLQkgICAgLXJlICIuKjogY2Fubm90IHJlc29sdmUgbmFtZTogTmFtZSBv ciBzZXJ2aWNlIG5vdCBrbm93blxyXG4iIHsKKysJICAgIC1yZSAiLio6IGNhbm5vdCByZXNvbHZl IG5hbWU6IC4qXHJcbiIgeworIAkJZXJyb3IgImdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBuYW1l LiIKKyAJICAgIH0KKyAJICAgIHRpbWVvdXQgewoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6ODgxODQ5 LWlwdjYtM29mMy5wYXRjaCBiL2dkYi1yaGJ6ODgxODQ5LWlwdjYtM29mMy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODljYjE4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiLXJoYno4ODE4NDktaXB2Ni0zb2YzLnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gRkVE T1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZXJnaW8gRHVyaWdh biBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMTg6 MDQ6MzggLTA0MDAKK1N1YmplY3Q6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtM29mMy5wYXRjaAorCitG aXggdGhpbmtvIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBkaXNhYmxlIFRDUCdzIE5hZ2xlIGFs Z29yaXRobQorCitUaGlzIHBhdGNoIGZpeGVzIGEgdGhpbmtvIHRoYXQgaGFwcGVuZWQgd2hlbiBJ IHdhcyBpbXBsZW1lbnRpbmcgdGhlCitJUHY2IHN1cHBvcnQgb24gR0RCL2dkYnNlcnZlci4gIE9u IGNlcnRhaW4gc2l0dWF0aW9ucywgaXQgaXMgbmVjZXNzYXJ5Cit0byBkaXNhYmxlIFRDUCdzIE5h Z2xlIGFsZ29yaXRobSAoTk9ERUxBWSkuICBGb3Igb2J2aW91cyByZWFzb25zLCB0aGlzCitvbmx5 IGFwcGxpZXMgd2hlbiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgVENQIGNvbm5lY3Rpb24uCisKK1do aWxlIGltcGxlbWVudGluZyB0aGUgSVB2NiBwYXRjaCwgSSBub3RpY2VkIHRoYXQgdGhlIG5ldF9v cGVuCitmdW5jdGlvbiAob24gZ2RiL3Nlci10Y3AuYykga2VwdCBhIGZsYWcgaW5kaWNhdGluZyB3 aGV0aGVyIHRoZQorY29ubmVjdGlvbiB0eXBlIHdhcyBVRFAgb3IgVENQLiAgSSBlbGltaW5hdGVk IHRoYXQgZmxhZywgYW5kIHN0YXJ0ZWQKK3VzaW5nIHRoZSAnc3RydWN0IGFkZHJpbmZvIConIHJl bGF0ZWQgdG8gdGhlIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbgorZGlyZWN0bHkuICBIb3dldmVyLCBJ IG1hZGUgYSBtaXN0YWtlOgorCisgIGlmIChzdWNjZXNzX2FpbmZvLT5haV9zb2NrdHlwZSA9PSBJ UFBST1RPX1RDUCkKKyAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eCisgICAgeworICAg ICAgLyogRGlzYWJsZSBOYWdsZSBhbGdvcml0aG0uICBOZWVkZWQgaW4gc29tZSBjYXNlcy4gICov CisgICAgICBpbnQgdG1wID0gMTsKKworICAgICAgc2V0c29ja29wdCAoc2NiLT5mZCwgSVBQUk9U T19UQ1AsIFRDUF9OT0RFTEFZLAorCQkgIChjaGFyICopICZ0bXAsIHNpemVvZiAodG1wKSk7Cisg ICAgfQorCitUaGUgJ2FpX3NvY2t0eXBlJyBmaWVsZCBzcGVjaWZpZXMgdGhlIHNvY2tldCB0eXBl IChTT0NLX1NUUkVBTSBvcgorU09DS19ER1JBTSksIGFuZCBub3QgdGhlIHByb3RvY29sLiAgVGhp cyB0ZXN0IHdhcyBhbHdheXMgZmFpbGluZywgYW5kCit0aGUgTmFnbGUgYWxnb3JpdGhtIHdhcyBu ZXZlciBiZWluZyBkaXNhYmxlZC4KKworVGhlIG9idmlvdXMgZml4IGlzIHRvIHVzZSB0aGUgJ2Fp X3Byb3RvY29sJyBmaWVsZC4gIFRoaXMgaXMgd2hhdCB0aGlzCitwYXRjaCBkb2VzLgorCitIdWdl ICJ0aGFuayB5b3UiIHRvIEpvZWwgQnJvYmVja2VyIHdobyByZXBvcnRlZCB0aGUgcmVncmVzc2lv biAoaGUgd2FzCitleHBlcmllbmNpbmcgYW4gdW51c3VhbCBkZWxheSB3aGlsZSBkZWJ1Z2dpbmcg YSBiYXJlLW1ldGFsIHByb2dyYW0KK3J1bm5pbmcgdW5kZXIgUUVNVSkgYW5kIGhlbHBlZCBtZSBz ZXQgdXAgYSBwcm9wZXIgcmVwcm9kdWNlciBmb3IgdGhlCitidWcuCisKK2dkYi9DaGFuZ2VMb2c6 CisyMDE4LTA4LTAzICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29t PgorCisJKiBzZXItdGNwLmMgKG5ldF9vcGVuKTogRml4IHRoaW5rbyB3aGVuIGRlY2lkaW5nIHdo ZXRoZXIgdG8KKwlkaXNhYmxlIFRDUCdzIE5hZ2xlIGFsZ29yaXRobSAodXNlICJhaV9wcm90b2Nv bCIgaW5zdGVhZCBvZgorCSJhaV9zb2NrdHlwZSIpLgorCitkaWZmIC0tZ2l0IGEvZ2RiL0NoYW5n ZUxvZyBiL2dkYi9DaGFuZ2VMb2cKKy0tLSBhL2dkYi9DaGFuZ2VMb2cKKysrKyBiL2dkYi9DaGFu Z2VMb2cKK0BAIC0xLDMgKzEsOSBAQAorKzIwMTgtMDgtMDMgIFNlcmdpbyBEdXJpZ2FuIEp1bmlv ciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisrCisrCSogc2VyLXRjcC5jIChuZXRfb3Blbik6IEZp eCB0aGlua28gd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvCisrCWRpc2FibGUgVENQJ3MgTmFnbGUg YWxnb3JpdGhtICh1c2UgImFpX3Byb3RvY29sIiBpbnN0ZWFkIG9mCisrCSJhaV9zb2NrdHlwZSIp LgorKworIDIwMTgtMDctMjUgIEFsYW4gSGF5d2FyZCAgPGFsYW4uaGF5d2FyZEBhcm0uY29tPgor IAorIAkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfcmVnaXN0ZXJfYml0c2l6ZSk6IFJl bmFtZS4KK2RpZmYgLS1naXQgYS9nZGIvc2VyLXRjcC5jIGIvZ2RiL3Nlci10Y3AuYworLS0tIGEv Z2RiL3Nlci10Y3AuYworKysrIGIvZ2RiL3Nlci10Y3AuYworQEAgLTM2Nyw3ICszNjcsNyBAQCBu ZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQorIAorICAgaW9j dGwgKHNjYi0+ZmQsIEZJT05CSU8sICZpb2FyZyk7CisgCistICBpZiAoc3VjY2Vzc19haW5mby0+ YWlfc29ja3R5cGUgPT0gSVBQUk9UT19UQ1ApCisrICBpZiAoc3VjY2Vzc19haW5mby0+YWlfcHJv dG9jb2wgPT0gSVBQUk9UT19UQ1ApCisgICAgIHsKKyAgICAgICAvKiBEaXNhYmxlIE5hZ2xlIGFs Z29yaXRobS4gIE5lZWRlZCBpbiBzb21lIGNhc2VzLiAgKi8KKyAgICAgICBpbnQgdG1wID0gMTsK CmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDdkYjZmNzIuLjZmMzg3MmEg MTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yNiw3ICsyNiw3IEBAIFZl cnNpb246IDguMS45MC4le3NuYXBzcmN9CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5z IGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScg aXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNv bXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMzklez9kaXN0fQorUmVsZWFzZTog NDAlez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMg YW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYy KyBhbmQgTEdQTHYzKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBHRkRMCiBHcm91cDog RGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC0xNjksMTQgKzE2OSwxMSBAQCBTb3VyY2U1OiAle2xp YnN0ZGN4eHB5dGhvbn0udGFyLnh6CiBTb3VyY2U2OiBnZGJ0dWkKIAogIyBsaWJpcHQ6IEludGVs IFByb2Nlc3NvciBUcmFjZSBEZWNvZGVyIExpYnJhcnkKLSVnbG9iYWwgbGliaXB0X3ZlcnNpb24g MS42LjEKKyVnbG9iYWwgbGliaXB0X3ZlcnNpb24gMi4wCiAjPWZlZG9yYQogU291cmNlNzogdiV7 bGliaXB0X3ZlcnNpb259LnRhci5negogIz1mZWRvcmEKIFBhdGNoMTE0MjogdjEuNS1saWJpcHQt c3RhdGljLnBhdGNoCi0jIFtyaGVsIGR0cyBsaWJpcHRdIEZpeCBbLVdlcnJvcj1pbXBsaWNpdC1m YWxsdGhyb3VnaD1dIHdpdGggZ2NjLTcuMS4xLgotIz1wdXNoK2phbgotUGF0Y2gxMTcxOiB2MS42 LjEtaW1wbGljaXQtZmFsbHRocm91Z2gucGF0Y2gKIAogIyMgW3Rlc3RzdWl0ZV0gRml4IGZhbHNl IHNlbGZ0ZXN0LmV4cCBGQUlMIGZyb20gc3lzdGVtIHJlYWRsaW5lLTYuMysgKFBhdHJpY2sgUGFs a2EpLgogIyM9ZmVkb3JhdGVzdApAQCAtNDE1LDcgKzQxMiw2IEBAIHRhciB4emYgJXtTT1VSQ0U3 fQogKAogIGNkIHByb2Nlc3Nvci10cmFjZS0le2xpYmlwdF92ZXJzaW9ufQogJXBhdGNoMTE0MiAt cDEKLSVwYXRjaDExNzEgLXAxCiApCiAlZW5kaWYKIApAQCAtMTAyNiw2ICsxMDIyLDExIEBAIGZp CiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBXZWQgQXVnICA4IDIwMTggU2VyZ2lvIER1cmlnYW4g SnVuaW9yIDxzZXJnaW9kakByZWRoYXQuY29tPiAtIDguMS45MC4yMDE4MDcyNy00MC5mYzI5Cist IFJlYnVpbGQgZHVlIHRvIG5ldyBsaWJpcHQgcmVsZWFzZS4KKy0gQWRqdXN0IGJ1bmRsZWQgbGli aXB0OyByZW1vdmUgdW5uZWNlc3NhcnkgcGF0Y2guCistIFN5bmMgSVB2NiBwYXRjaCB3aXRoIEYt MjggR0RCLgorCiAqIFdlZCBBdWcgIDggMjAxOCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4gLSA4LjEuOTAuMjAxODA3MjctMzkuZmMyOQogLSBbZHRzXSBGaXggYnVp bGQgYnkgcmVtb3ZpbmcgYSBwYXRjaCBmb3IgYWxyZWFkeSByZW1vdmVkIHBhaG9sZS5weSAuCiAt IFtkdHMgcmhlbDZdIEZpeCBidWlsZCBieSB1cGRhdGluZyBnZGItZ25hdC1kd2FyZi1jcmFzaC0z b2YzLnBhdGNoIC4KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCAxOTNjNTdk Li41ZDhiODUzIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMyArMSwz IEBACiBTSEE1MTIgKGdkYi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIwMTgwNjI2LnRhci54 eikgPSBhOGIxYzU0ZGQzNDhjZmViMzdkYTczZjk2ODc0Mjg5NmJlM2RkMTNhNDIxNWY4ZDg1MTk4 NzBjMmFiZWE5MTVmNTE3NmMzZmE2OTg5ZGRkMTBmMjAwMjBhMTZmMGZhYjIwY2JhZTY4ZWU4ZDU4 YTgyMjM0ZDg3NzgwMjM1MjBmOAotU0hBNTEyICh2MS42LjEudGFyLmd6KSA9IGM3YzljOGJhNzgw MjFmZmYzZmRlMTJhMjE2ZjU3MjljNjAzMTExNGU1YTcyN2Y0OWI3ZmYxYTMxYzUzYjVkZGJhMjRk MWIzYWVlMjUyZDgyNzhlY2QxZmFmZTc4YTQ0ZWQwNTljMTJiOWViMjllY2EzMzA5M2UwNzIwNjcz NDY4CiBTSEE1MTIgKGdkYi04LjEuOTAuMjAxODA3MjcudGFyLnh6KSA9IDBmOGU5Y2ZhZWFmOWYy MjM2MWIzYjhkNWQ0OTBkMGE4YmVhM2VlYWFhMGM2ODEzZDVkZjBhNmQ1MjY3ZmYzZjU5Nzc0N2Nj MGU5N2Q3MGM0MTk2ZDc4ZWUzMmUwZTgyZDU4OTMyODNkNzFiNDQ5ZDg5NzAzODkzYmYxYWUwMDE0 CitTSEE1MTIgKHYyLjAudGFyLmd6KSA9IGVjNjMxNTFlODQyYzgxY2M3M2VhMTFiYTU2MGI2M2Uw MDVjZWZiZTE5ZDk4ZGUyNGFlNWM4Y2FhNGRlN2M5YzFkNzFkMWVjNWI2MjE0YTM0NzU5MmVhYzY3 NWI3NWEzZDJiMjZkNDY5MWNhODZmOTEwMjBlYmZlYThlOTEyOTM5CgpkaWZmIC0tZ2l0IGEvdjEu NS1saWJpcHQtc3RhdGljLnBhdGNoIGIvdjEuNS1saWJpcHQtc3RhdGljLnBhdGNoCmluZGV4IDQ3 N2I2YzQuLjY1OTk0NDUgMTAwNjQ0Ci0tLSBhL3YxLjUtbGliaXB0LXN0YXRpYy5wYXRjaAorKysg Yi92MS41LWxpYmlwdC1zdGF0aWMucGF0Y2gKQEAgLTEsNiArMSw4IEBACi0tLS0gcHJvY2Vzc29y LXRyYWNlLTEuNS9saWJpcHQvQ01ha2VMaXN0cy50eHQtb3JpZwkyMDE2LTA0LTA3IDA4OjUyOjE0 LjAwMDAwMDAwMCArMDIwMAotKysrIHByb2Nlc3Nvci10cmFjZS0xLjUvbGliaXB0L0NNYWtlTGlz dHMudHh0CTIwMTYtMDgtMTcgMjM6MTI6MjMuMjQxMTA5MjQ0ICswMjAwCi1AQCAtODEsNyArODEs NyBAQCBlbmRpZiAoQ01BS0VfSE9TVF9XSU4zMikKK0luZGV4OiBwcm9jZXNzb3ItdHJhY2UtMi4w L2xpYmlwdC9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHByb2Nlc3Nvci10cmFjZS0y LjAub3JpZy9saWJpcHQvQ01ha2VMaXN0cy50eHQKKysrKyBwcm9jZXNzb3ItdHJhY2UtMi4wL2xp YmlwdC9DTWFrZUxpc3RzLnR4dAorQEAgLTg1LDcgKzg1LDcgQEAgZW5kaWYgKENNQUtFX0hPU1Rf V0lOMzIpCiAgCiAgc2V0KExJQklQVF9GSUxFUyAke0xJQklQVF9GSUxFU30gJHtMSUJJUFRfU0VD VElPTl9GSUxFU30pCiAgCkBAIC05LDggKzExLDEwIEBACiAgICAke0xJQklQVF9GSUxFU30KICAp CiAgCi0tLS0gcHJvY2Vzc29yLXRyYWNlLTEuNS9saWJpcHQvc3JjL3Bvc2l4L2luaXQuYy1vcmln CTIwMTYtMDQtMDcgMDg6NTI6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgcHJvY2Vzc29yLXRyYWNl LTEuNS9saWJpcHQvc3JjL3Bvc2l4L2luaXQuYwkyMDE2LTA4LTIzIDA5OjA0OjExLjU0MDE3NjY2 OCArMDIwMAorSW5kZXg6IHByb2Nlc3Nvci10cmFjZS0yLjAvbGliaXB0L3NyYy9wb3NpeC9pbml0 LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBwcm9jZXNzb3ItdHJhY2UtMi4wLm9yaWcvbGliaXB0L3NyYy9w b3NpeC9pbml0LmMKKysrKyBwcm9jZXNzb3ItdHJhY2UtMi4wL2xpYmlwdC9zcmMvcG9zaXgvaW5p dC5jCiBAQCAtMjksNyArMjksNyBAQAogICNpbmNsdWRlICJwdF9pbGQuaCIKICAKCmRpZmYgLS1n aXQgYS92MS42LjEtaW1wbGljaXQtZmFsbHRocm91Z2gucGF0Y2ggYi92MS42LjEtaW1wbGljaXQt ZmFsbHRocm91Z2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiODQ0ZDMu LjAwMDAwMDAKLS0tIGEvdjEuNi4xLWltcGxpY2l0LWZhbGx0aHJvdWdoLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjMgKzAsMCBAQAotZ2NjLTcuMS4xLTEuZmMyNy54ODZfNjQKLS9ob21lL2pr cmF0b2NoL3JlZGhhdC9mZWRvcmEvbGliaXB0L21hc3Rlci9wcm9jZXNzb3ItdHJhY2UtMS42LjEv bGliaXB0L3NyYy9wdF9ibG9ja19kZWNvZGVyLmM6IEluIGZ1bmN0aW9uIOKAmHB0X2Jsa19wcm9j ZWVkX25vX2V2ZW50X2NhY2hlZOKAmToKLS9ob21lL2prcmF0b2NoL3JlZGhhdC9mZWRvcmEvbGli aXB0L21hc3Rlci9wcm9jZXNzb3ItdHJhY2UtMS42LjEvbGliaXB0L3NyYy9wdF9ibG9ja19kZWNv ZGVyLmM6MjI4Mjo2OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdl cnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCi0gICBpZiAoYmNlLmlzaXplKSB7Ci0gICAgICBe Ci0vaG9tZS9qa3JhdG9jaC9yZWRoYXQvZmVkb3JhL2xpYmlwdC9tYXN0ZXIvcHJvY2Vzc29yLXRy YWNlLTEuNi4xL2xpYmlwdC9zcmMvcHRfYmxvY2tfZGVjb2Rlci5jOjIzMjg6Mjogbm90ZTogaGVy ZQotICBjYXNlIHB0YnFfZGVjb2RlOiB7Ci0gIF5+fn4KLQotZGlmZiAtLWdpdCBhL2xpYmlwdC9z cmMvcHRfYmxvY2tfZGVjb2Rlci5jIGIvbGliaXB0L3NyYy9wdF9ibG9ja19kZWNvZGVyLmMKLWlu ZGV4IDIxNzgzYTYuLjkxZDViYjMgMTAwNjQ0Ci0tLS0gYS9saWJpcHQvc3JjL3B0X2Jsb2NrX2Rl Y29kZXIuYwotKysrIGIvbGliaXB0L3NyYy9wdF9ibG9ja19kZWNvZGVyLmMKLUBAIC0yMDk1LDYg KzIwOTUsOSBAQCBzdGF0aWMgaW50IHB0X2Jsa19wcm9jZWVkX25vX2V2ZW50X2NhY2hlZChzdHJ1 Y3QgcHRfYmxvY2tfZGVjb2RlciAqZGVjb2RlciwKLSAJCX0KLSAKLSAJCS8qIEZhbGwgdGhyb3Vn aCB0byBwdGJxX2RlY29kZS4gKi8KLSsjaWYgX19HTlVDX18gPj0gNwotKwkJX19hdHRyaWJ1dGVf XyAoKGZhbGx0aHJvdWdoKSk7Ci0rI2VuZGlmCi0gCi0gCWNhc2UgcHRicV9kZWNvZGU6IHsKLSAJ CXN0cnVjdCBwdF9pbnNuX2V4dCBpZXh0Owo=