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] gdb-17.2-rebase-f44: Rebuild due to new libipt release. Date: Sat, 27 Jun 2026 23:59:00 GMT Message-ID: <178260474007.1.6899916555770755393.rpms-gdb-76ddc56b6d88@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 76ddc56b6d88fe6d25622d1c4937491491fa1dc0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNzZkZGM1NmI2ZDg4ZmU2ZDI1NjIyZDFjNDkzNzQ5MTQ5MWZh MWRjMAogICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2Rq QHJlZGhhdC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDgtMDhUMTU6MDQ6NDktMDQ6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzIwODgvLTIwMzggaW4gMTMgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzc2 ZGRjNTZiNmQ4OGZlNmQyNTYyMmQxYzQ5Mzc0OTE0OTFmYTFkYzA/YnJhbmNoPWdkYi0xNy4yLXJl YmFzZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmVidWlsZCBkdWUgdG8gbmV3 IGxpYmlwdCByZWxlYXNlLgpBZGp1c3QgYnVuZGxlZCBsaWJpcHQ7IHJlbW92ZSB1bm5lY2Vzc2Fy eSBwYXRjaC4KU3luYyBJUHY2IHBhdGNoIHdpdGggRi0yOCBHREIuCgotLS0KZGlmZiAtLWdpdCBh Ly5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDBhYmU1OGEuLjk0OWMyMDQgMTAwNjQ0Ci0t LSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDMgQEAKIC9nZGItbGli c3RkYysrLXYzLXB5dGhvbi04LjEuMS0yMDE4MDYyNi50YXIueHoKLS92MS42LjEudGFyLmd6CiAv Z2RiLTguMS45MC4yMDE4MDcyNy50YXIueHoKKy92Mi4wLnRhci5negoKZGlmZiAtLWdpdCBhL19n ZGIuc3BlYy5QYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKaW5kZXggOGJh MGU0OC4uOTQ2YzRhZiAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKKysrIGIv X2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKQEAgLTUwNSw4ICs1MDUsMTEgQEAgUGF0Y2gxMjA6IGdk Yi12bGEtaW50ZWwtZml4LXByaW50LWNoYXItYXJyYXkucGF0Y2gKIFBhdGNoMTIxOiBnZGItcmhi ejE1NTMxMDQtczM5MHgtYXJjaDEyLXRlc3QucGF0Y2gKIAogIyBJbXBsZW1lbnQgSVB2NiBzdXBw b3J0IGZvciBHREIvZ2Ric2VydmVyIChSSCBCWiA4ODE4NDksIFNlcmdpbyBEdXJpZ2FuIEp1bmlv cikuCi1QYXRjaDEyMjogZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2YyLnBhdGNoCitQYXRjaDEyMjog Z2RiLXJoYno4ODE4NDktaXB2Ni0xb2YzLnBhdGNoCiAKLSMgSW1wbGVtZW50IElQdjYgc3VwcG9y dCBmb3IgR0RCL2dkYnNlcnZlciAoUkggQlogODgxODQ5LCBTZXJnaW8gRHVyaWdhbiBKdW5pb3Ip LgotUGF0Y2gxMjM6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMi5wYXRjaAorCitQYXRjaDEyMzog Z2RiLXJoYno4ODE4NDktaXB2Ni0yb2YzLnBhdGNoCisKKworUGF0Y2gxMjQ6IGdkYi1yaGJ6ODgx ODQ5LWlwdjYtM29mMy5wYXRjaAogCgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1 ZGUgYi9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQppbmRleCAyN2EzOWI3Li45N2YxMmM0IDEwMDY0 NAotLS0gYS9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMucGF0Y2guaW5j bHVkZQpAQCAtMTIxLDMgKzEyMSw0IEBACiAlcGF0Y2gxMjEgLXAxCiAlcGF0Y2gxMjIgLXAxCiAl cGF0Y2gxMjMgLXAxCislcGF0Y2gxMjQgLXAxCgpkaWZmIC0tZ2l0IGEvX3BhdGNoX29yZGVyIGIv X3BhdGNoX29yZGVyCmluZGV4IDExYjQxMzEuLmIxMDUzNmMgMTAwNjQ0Ci0tLSBhL19wYXRjaF9v cmRlcgorKysgYi9fcGF0Y2hfb3JkZXIKQEAgLTExOSw1ICsxMTksNiBAQCBnZGItdGVzdHN1aXRl LXJlYWRsaW5lNjMtc2lnaW50LnBhdGNoCiBnZGItYXJjaGVyLnBhdGNoCiBnZGItdmxhLWludGVs LWZpeC1wcmludC1jaGFyLWFycmF5LnBhdGNoCiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEy LXRlc3QucGF0Y2gKLWdkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMi5wYXRjaAotZ2RiLXJoYno4ODE4 NDktaXB2Ni0yb2YyLnBhdGNoCitnZGItcmhiejg4MTg0OS1pcHY2LTFvZjMucGF0Y2gKK2dkYi1y aGJ6ODgxODQ5LWlwdjYtMm9mMy5wYXRjaAorZ2RiLXJoYno4ODE4NDktaXB2Ni0zb2YzLnBhdGNo CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2YyLnBhdGNoIGIvZ2RiLXJoYno4 ODE4NDktaXB2Ni0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDUx MGM4Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE5MzQgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVk aGF0LmNvbT4KLURhdGU6IEZyaSwgMTggTWF5IDIwMTggMDE6Mjk6MjQgLTA0MDAKLVN1YmplY3Q6 IGdkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMi5wYXRjaAotCi07OyBJbXBsZW1lbnQgSVB2NiBzdXBw b3J0IGZvciBHREIvZ2Ric2VydmVyIChSSCBCWiA4ODE4NDksIFNlcmdpbyBEdXJpZ2FuIEp1bmlv cikuCi0KLUltcGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2ZXIKLQotVGhpcyBw YXRjaCBpbXBsZW1lbnRzIElQdjYgc3VwcG9ydCBmb3IgYm90aCBHREIgYW5kIGdkYnNlcnZlci4g IEJhc2VkCi1vbiBteSByZXNlYXJjaCwgaXQgaXMgdGhlIGZvdXJ0aCBhdHRlbXB0IHRvIGRvIHRo YXQgc2luY2UgMjAwNi4gIFNpbmNlCi1JIHVzZWQgaWRlYXMgZnJvbSBhbGwgb2YgdGhlIHByZXZp b3VzIHBhdGNoZXMsIEkgYWxzbyBhZGRlZCB0aGVpcgotYXV0aG9ycydzIG5hbWVzIG9uIHRoZSBD aGFuZ2VMb2dzIGFzIGEgd2F5IHRvIHJlY29nbml6ZSB0aGVpcgotZWZmb3J0cy4gIEZvciByZWZl cmVuY2Ugc2FrZSwgeW91IGNhbiBmaW5kIHRoZSBwcmV2aW91cyBhdHRlbXB0cyBhdDoKLQotICBo dHRwczovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDYtMDkvbXNnMDAxOTIuaHRt bAotCi0gIGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNC0wMi9tc2cw MDI0OC5odG1sCi0KLSAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE2 LTAyL21zZzAwMjI2Lmh0bWwKLQotVGhlIGJhc2ljIGlkZWEgYmVoaW5kIHRoZSBwYXRjaCBpcyB0 byBzdGFydCB1c2luZyB0aGUgbmV3Ci0nZ2V0YWRkcmluZm8nLydnZXRuYW1laW5mbycgY2FsbHMs IHdoaWNoIGFyZSByZXNwb25zaWJsZSBmb3IKLXRyYW5zbGF0aW5nIG5hbWVzIGFuZCBhZGRyZXNz ZXMgaW4gYSBwcm90b2NvbC1pbmRlcGVuZGVudCB3YXkuICBUaGlzCi1tZWFucyB0aGF0IGlmIHdl IGV2ZXIgaGF2ZSBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBJUCBwcm90b2NvbCwgd2Ugd29uJ3QKLW5l ZWQgdG8gY2hhbmdlIHRoZSBjb2RlIGFnYWluIChvciwgYXQgbGVhc3QsIHdvbid0IGhhdmUgdG8g Y2hhbmdlIHRoZQotbWFqb3JpdHkgb2YgdGhlIGNvZGUpLgotCi1UaGUgZnVuY3Rpb24gJ2dldGFk ZHJpbmZvJyByZXR1cm5zIGEgbGlua2VkIGxpc3Qgb2YgcG9zc2libGUgYWRkcmVzc2VzCi10byBj b25uZWN0IHRvLiAgRGVhbGluZyB3aXRoIG11bHRpcGxlIGFkZHJlc3NlcyBwcm92ZWQgdG8gYmUg YSBoYXJkCi10YXNrIHdpdGggdGhlIGN1cnJlbnQgVENQIGF1dG8tcmV0cnkgbWVjaGFuaXNtIGlt cGxlbWVudGVkIG9uCi1zZXItdGNwOm5ldF9vcGVuLiAgRm9yIGV4YW1wbGUsIHdoZW4gZ2Ric2Vy dmVyIGxpc3RlbmVkIG9ubHkgb24gYW4KLUlQdjQgc29ja2V0OgotCi0gICQgLi9nZGJzZXJ2ZXIg LS1vbmNlIDEyNy4wLjAuMToxMjM0IC4vYS5vdXQKLQotYW5kIEdEQiB3YXMgaW5zdHJ1Y3RlZCB0 byB0cnkgdG8gY29ubmVjdCB0byBib3RoIElQdjYgYW5kIElQdjQKLXNvY2tldHM6Ci0KLSAgJCAu L2dkYiAtZXggJ3RhcmdldCBleHRlbmRlZC1yZW1vdGUgbG9jYWxob3N0OjEyMzQnIC4vYS5vdXQK LQotdGhlIHVzZXIgd291bGQgbm90aWNlIGEgc29tZXdoYXQgYmlnIGRlbGF5IGJlZm9yZSBHREIg d2FzIGFibGUgdG8KLWNvbm5lY3QgdG8gdGhlIElQdjQgc29ja2V0LiAgVGhpcyBoYXBwZW5lZCBi ZWNhdXNlIEdEQiB3YXMgdHJ5aW5nIHRvCi1jb25uZWN0IHRvIHRoZSBJUHY2IHNvY2tldCBmaXJz dCwgYW5kIGhhZCB0byB3YWl0IHVudGlsIHRoZSBjb25uZWN0aW9uCi10aW1lZCBvdXQgYmVmb3Jl IGl0IHRyaWVkIHRvIGNvbm5lY3QgdG8gdGhlIElQdjQgc29ja2V0LgotCi1Gb3IgdGhhdCByZWFz b24sIEkgaGFkIHRvIHJld3JpdGUgdGhlIG1haW4gbG9vcCBhbmQgaW1wbGVtZW50IGEgbmV3Ci1t ZXRob2QgZm9yIGhhbmRsaW5nIG11bHRpcGxlIGNvbm5lY3Rpb25zLiAgQWZ0ZXIgc29tZSBkaXNj dXNzaW9uLAotUGVkcm8gYW5kIEkgYWdyZWVkIG9uIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgot Ci0gIDEpIEZvciBlYWNoIGVudHJ5IHJldHVybmVkIGJ5ICdnZXRhZGRyaW5mbycsIHdlIHRyeSB0 byBvcGVuIGEgc29ja2V0Ci0gIGFuZCBjb25uZWN0IHRvIGl0LgotCi0gIDIuYSkgSWYgd2UgaGF2 ZSBhIHN1Y2Nlc3NmdWwgJ2Nvbm5lY3QnLCB3ZSBqdXN0IHVzZSB0aGF0IGNvbm5lY3Rpb24uCi0K LSAgMi5iKSBJZiB3ZSBkb24ndCBoYXZlIGEgc3VjY2Vzc2Z1bGwgJ2Nvbm5lY3QnLCBidXQgaWYg d2UndmUgZ290IGEKLSAgRUNPTk5SRUZVU0VEIChtZWFuaW5nIHRoZSB0aGUgY29ubmVjdGlvbiB3 YXMgcmVmdXNlZCksIHdlIGtlZXAgdHJhY2sKLSAgb2YgdGhpcyBmYWN0IGJ5IHVzaW5nIGEgZmxh Zy4KLQotICAyLmMpIElmIHdlIGRvbid0IGhhdmUgYSBzdWNjZXNzZnVsbCAnY29ubmVjdCcsIGJ1 dCBpZiB3ZSd2ZSBnb3QgYQotICBFSU5QUk9HUkVTUyAobWVhbmluZyB0aGF0IHRoZSBjb25uZWN0 aW9uIGlzIGluIHByb2dyZXNzKSwgd2UgcGVyZm9ybQotICBhICdzZWxlY3QnIGNhbGwgb24gdGhl IHNvY2tldCB1bnRpbCB3ZSBoYXZlIGEgcmVzdWx0IChlaXRoZXIgYQotICBzdWNjZXNzZnVsIGNv bm5lY3Rpb24sIG9yIGFuIGVycm9yIG9uIHRoZSBzb2NrZXQpLgotCi0gIDMpIElmIHRjcF9hdXRv X3JldHJ5IGlzIHRydWUsIGFuZCB3ZSBoYXZlbid0IGdvdHRlbiBhIHN1Y2Nlc3NmdWwKLSAgY29u bmVjdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBvZiBvdXIgYXR0ZW1wdHMgZmFpbGVkIHdpdGgKLSAg RUNPTk5SRUZVU0VELCB0aGVuIHdlIHdhaXQgYSBsaXR0bGUgYml0IChpLmUuLCBjYWxsCi0gICd3 YWl0X2Zvcl9jb25uZWN0JyksIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSB3YXMgYQotICB0aW1lb3V0 L2ludGVycnVwdGlvbiAoaW4gd2hpY2ggY2FzZSB3ZSBiYWlsIG91dCksIGFuZCB0aGVuIGdvIGJh Y2sKLSAgdG8gKDEpLgotCi1BZnRlciBtdWx0aXBsZSB0ZXN0cywgSSB3YXMgYWJsZSB0byBjb25u ZWN0IHdpdGhvdXQgZGVsYXkgb24gdGhlCi1zY2VuYXJpbyBkZXNjcmliZWQgYWJvdmUsIGFuZCB3 YXMgYWxzbyBhYmxlIHRvIGNvbm5lY3QgaW4gYWxsIG90aGVyCi10eXBlcyBvZiBzY2VuYXJpb3Mu Ci0KLUkgYWxzbyBpbXBsZW1lbnRlZCBzb21lIGhvc3RuYW1lIHBhcnNpbmcgZnVuY3Rpb25zIChh bG9uZyB3aXRoIHRoZWlyCi1jb3JyZXNwb25kaW5nIHVuaXQgdGVzdHMpIHdoaWNoIGFyZSB1c2Vk IHRvIGhlbHAgR0RCIGFuZCBnZGJzZXJ2ZXIgdG8KLXBhcnNlIGhvc3RuYW1lIHN0cmluZ3MgcHJv dmlkZWQgYnkgdGhlIHVzZXIuICBUaGVzZSBuZXcgZnVuY3Rpb25zIGFyZQotbGl2aW5nIGluc2lk ZSBjb21tb24vbmV0c3R1ZmYuW2NoXS4gIEkndmUgaGFkIHRvIGRvIHRoYXQgc2luY2UgSVB2Ngot aW50cm9kdWNlcyBhIG5ldyBVUkwgc2NoZW1lLCB3aGljaCBkZWZpbmVzIHRoYXQgc3F1YXJlIGJy YWNrZXRzIGNhbiBiZQotdXNlZCB0byBlbmNsb3NlIHRoZSBob3N0IHBhcnQgYW5kIGRpZmZlcmVu dGlhdGUgaXQgZnJvbSB0aGUKLXBvcnQgKGUuZy4sICJbOjoxXToxMjM0IiBtZWFucyAiaG9zdCA6 OjEsIHBvcnQgMTIzNCIpLiAgSSBzcGVudCBzb21lCi10aW1lIHRoaW5raW5nIGFib3V0IGEgcmVh c29uYWJsZSB3YXkgdG8gaW50ZXJwcmV0IHdoYXQgdGhlIHVzZXIgd2FudHMsCi1hbmQgSSBjYW1l IHVwIHdpdGggdGhlIGZvbGxvd2luZzoKLQotICAtIElmIHRoZSB1c2VyIGhhcyBwcm92aWRlZCBh IHByZWZpeCB0aGF0IGRvZXNuJ3Qgc3BlY2lmeSB0aGUgcHJvdG9jb2wKLSAgICB2ZXJzaW9uIChp LmUuLCAidGNwOiIgb3IgInVkcDoiKSwgb3IgaWYgdGhlIHVzZXIgaGFzIG5vdCBwcm92aWRlZAot ICAgIGFueSBwcmVmaXgsIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIChpLmUuLCBhc3N1bWUg QUZfVU5TUEVDIHdoZW4KLSAgICBkZWFsaW5nIHdpdGggJ2dldGFkZHJpbmZvJykgKnVubGVzcyog dGhlIGhvc3Qgc3RhcnRzIHdpdGggIlsiIChpbgotICAgIHdoaWNoIGNhc2UsIGFzc3VtZSBpdCdz IGFuIElQdjYgaG9zdCkuCi0KLSAgLSBJZiB0aGUgdXNlciBoYXMgcHJvdmlkZWQgYSBwcmVmaXgg dGhhdCBkb2VzIHNwZWNpZnkgdGhlIHByb3RvY29sCi0gICAgdmVyc2lvbiAoaS5lLiwgInRjcDQ6 IiwgInRjcDY6IiwgInVkcDQ6IiBvciAidWRwNjoiKSwgdGhlbiByZXNwZWN0Ci0gICAgdGhhdC4K LQotVGhpcyBtZXRob2QgZG9lc24ndCBmb2xsb3cgc3RyaWN0bHkgd2hhdCBSRkMgMjczMiBwcm9w b3NlcyAodGhhdAotbGl0ZXJhbCBJUHY2IGFkZHJlc3NlcyBzaG91bGQgYmUgcHJvdmlkZWQgZW5j bG9zZWQgaW4gIlsiIGFuZCAiXSIpCi1iZWNhdXNlIElQdjYgYWRkcmVzc2VzIHN0aWxsIGNhbiBi ZSBwcm92aWRlZCB3aXRob3V0IHNxdWFyZSBicmFja2V0cwotaW4gb3VyIGNhc2UsIGJ1dCBzaW5j ZSB3ZSBoYXZlIHByZWZpeGVzIHRvIHNwZWNpZnkgcHJvdG9jb2wgdmVyc2lvbnMgSQotdGhpbmsg dGhpcyBpcyBub3QgYW4gaXNzdWUuCi0KLUFub3RoZXIgdGhpbmcgd29ydGggbWVudGlvbmluZyBp cyB0aGUgbmV3ICdHREJfVEVTVF9TT0NLRVRIT1NUJwotdGVzdGNhc2UgcGFyYW1ldGVyLCB3aGlj aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZQotaG9zdG5hbWUgKHdpdGhvdXQgdGhl IHBvcnQpIHRvIGJlIHVzZWQgd2hlbiB0ZXN0aW5nIEdEQiBhbmQKLWdkYnNlcnZlci4gIEZvciBl eGFtcGxlLCB0byBydW4gSVB2NiB0ZXN0czoKLQotICAkIG1ha2UgY2hlY2stZ2RiIFJVTlRFU1RG TEFHUz0nR0RCX1RFU1RfU09DS0VUSE9TVD10Y3A2Ols6OjFdJwotCi1PciwgdG8gcnVuIElQdjQg dGVzdHM6Ci0KLSAgJCBtYWtlIGNoZWNrLWdkYiBSVU5URVNURkxBR1M9J0dEQl9URVNUX1NPQ0tF VEhPU1Q9dGNwNDoxMjcuMC4wLjEnCi0KLVRoaXMgcmVxdWlyZWQgYSBmZXcgY2hhbmdlcyBvbiB0 aGUgZ2Ric2VydmVyLWJhc2UuZXhwLCBhbmQgYWxzbyBhCi1taW5pbWFsIGFkanVzdG1lbnQgb24g Z2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwLgotCi1GaW5hbGx5LCBJJ3Zl IGltcGxlbWVudGVkIGEgbmV3IHRlc3RjYXNlLAotZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5l eHAsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIHJ1biBvbiB0aGUgbmF0aXZlCi1ob3N0IGFuZCBwZXJm b3JtIHZhcmlvdXMgInNtb2tlIHRlc3RzIiB1c2luZyBkaWZmZXJlbnQgY29ubmVjdGlvbgotbWV0 aG9kcy4KLQotVGhpcyBwYXRjaCBoYXMgYmVlbiByZWdyZXNzaW9uLXRlc3RlZCBvbiBCdWlsZEJv dCBhbmQgbG9jYWxseSwgYW5kCi1hbHNvIGJ1aWx0IHVzaW5nIGEgeDg2XzY0LXc2NC1taW5ndzMy IEdDQywgYW5kIG5vIHByb2JsZW1zIHdlcmUgZm91bmQuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0yMDE4 LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotCSAg ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JICAgIFBhdWwg RmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+Ci0JICAgIFRzdXRvbXUgU2VraSAgPHNla2ly aWtpQGdtYWlsLmNvbT4KLQkgICAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLQot CSogTWFrZWZpbGUuaW4gKFNVQkRJUl9VTklUVEVTVFNfU1JDUyk6IEFkZAotCSd1bml0dGVzdHMv cGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jJy4KLQkoQ09NTU9OX1NGSUxFUyk6IEFk ZCAnY29tbW9uL25ldHN0dWZmLmMnLgotCShIRklMRVNfTk9fU1JDRElSKTogQWRkICdjb21tb24v bmV0c3R1ZmYuaCcuCi0JKiBORVdTIChDaGFuZ2VzIHNpbmNlIEdEQiA4LjIpOiBNZW50aW9uIElQ djYgc3VwcG9ydC4KLQkqIGNvbW1vbi9uZXRzdHVmZi5jOiBOZXcgZmlsZS4KLQkqIGNvbW1vbi9u ZXRzdHVmZi5oOiBOZXcgZmlsZS4KLQkqIHNlci10Y3AuYzogSW5jbHVkZSAnbmV0c3R1ZmYuaCcg YW5kICd3c3BpYXBpLmgnLgotCSh3YWl0X2Zvcl9jb25uZWN0KTogVXBkYXRlIGNvbW1lbnQuICBO ZXcgcGFyYW1ldGVyCi0JJ2dkYjo6b3B0aW9uYWw8aW50PiBzb2NrJyBpbnN0ZWFkIG9mICdzdHJ1 Y3Qgc2VyaWFsICpzY2InLgotCVVzZSAnc29jaycgZGlyZWN0bHkgaW5zdGVhZCBvZiAnc2NiLT5m ZCcuCi0JKHRyeV9jb25uZWN0KTogTmV3IGZ1bmN0aW9uLCB3aXRoIGNvZGUgZnJvbSAnbmV0X29w ZW4nLgotCShuZXRfb3Blbik6IFJld3JpdGUgbWFpbiBsb29wIHRvIGRlYWwgd2l0aCBtdWx0aXBs ZQotCXNvY2tldHMvYWRkcmVzc2VzLiAgSGFuZGxlIElQdjYtc3R5bGUgaG9zdG5hbWVzOyBpbXBs ZW1lbnQKLQlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgotCSogdW5pdHRlc3RzL3BhcnNl LWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYzogTmV3IGZpbGUuCi0KLWdkYi9nZGJzZXJ2ZXIv Q2hhbmdlTG9nOgotMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpA cmVkaGF0LmNvbT4KLQkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotCSAgICBUc3V0 b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+Ci0KLQkqIE1ha2VmaWxlLmluIChTRklMRVMp OiBBZGQgJyQoc3JjZGlyKS9jb21tb24vbmV0c3R1ZmYuYycuCi0JKE9CUyk6IEFkZCAnY29tbW9u L25ldHN0dWZmLm8nLgotCShHREJSRVBMQVlfT0JTKTogTGlrZXdpc2UuCi0JKiBnZGJyZXBsYXku YzogSW5jbHVkZSAnd3NwaWFwaS5oJyBhbmQgJ25ldHN0dWZmLmgnLgotCShyZW1vdGVfb3Blbik6 IEltcGxlbWVudCBzdXBwb3J0IGZvciBJUHY2Ci0JY29ubmVjdGlvbnMuCi0JKiByZW1vdGUtdXRp bHMuYzogSW5jbHVkZSAnbmV0c3R1ZmYuaCcsICdmaWxlc3R1ZmYuaCcKLQlhbmQgJ3dzcGlhcGku aCcuCi0JKGhhbmRsZV9hY2NlcHRfZXZlbnQpOiBBY2NlcHQgY29ubmVjdGlvbnMgZnJvbSBJUHY2 IHNvdXJjZXMuCi0JKHJlbW90ZV9wcmVwYXJlKTogSGFuZGxlIElQdjYtc3R5bGUgaG9zdG5hbWVz OyBpbXBsZW1lbnQKLQlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgotCShyZW1vdGVfb3Bl bik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBwcmludGluZyBjb25uZWN0aW9ucyBmcm9tCi0JSVB2 NiBzb3VyY2VzLgotCi1nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKLTIwMTgtMDctMTEgIFNlcmdp byBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0JICAgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQkgICAgUGF1bCBGZXJ0c2VyICA8ZmVy Y2VycGF2QGdtYWlsLmNvbT4KLQkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29t PgotCi0JKiBSRUFETUUgKFRlc3RzdWl0ZSBQYXJhbWV0ZXJzKTogTWVudGlvbiBuZXcgJ0dEQl9U RVNUX1NPQ0tFVEhPU1QnCi0JcGFyYW1ldGVyLgotCSogYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1n ZGJzZXJ2ZXIuZXhwOiBEbyBub3Qgc2V0ICdzb2NrZXRob3N0JwotCWJ5IGRlZmF1bHQuCi0JKiBi b2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHA6IExpa2V3aXNlLgotCSogZ2RiLnNlcnZlci9ydW4t d2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwOiBJbXByb3ZlIHJlZ2V4cCB1c2VkCi0JZm9yIGRldGVj dGluZyB3aGVuIGEgcmVtb3RlIGRlYnVnZ2luZyBjb25uZWN0aW9uIHN1Y2NlZWRzLgotCSogZ2Ri LnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IE5ldyBmaWxlLgotCSogbGliL2dkYnNlcnZlci1z dXBwb3J0LmV4cCAoZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCk6Ci0JRG8gbm90IHBy ZWZpeCB0aGUgcG9ydCBudW1iZXIgd2l0aCAiOiIuCi0JKGdkYnNlcnZlcl9zdGFydCk6IE5ldyBn bG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVC4gIEltcGxlbWVudAotCXN1cHBvcnQgZm9yIGRldGVj dGluZyBhbmQgdXNpbmcgaXQuICBBZGQgJyRkZWJ1Z2hvc3RfZ2Ric2VydmVyJwotCXRvIHRoZSBs aXN0IG9mIGFyZ3VtZW50cyB1c2VkIHRvIHN0YXJ0IGdkYnNlcnZlci4gIEhhbmRsZSBjYXNlCi0J d2hlbiBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3b3JrIG5hbWUuCi0KLWdkYi9kb2Mv Q2hhbmdlTG9nOgotMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpA cmVkaGF0LmNvbT4KLQkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotCSAgICBUc3V0 b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+Ci0KLQkqIGdkYi50ZXhpbmZvIChSZW1vdGUg Q29ubmVjdGlvbiBDb21tYW5kcyk6IEFkZCBleHBsYW5hdGlvbgotCWFib3V0IG5ldyBJUHY2IHN1 cHBvcnQuICBBZGQgbmV3IGNvbm5lY3Rpb24gcHJlZml4ZXMuCi0KLWRpZmYgLS1naXQgYS9nZGIv TWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysr IGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtNDMwLDYgKzQzMCw3IEBAIFNVQkRJUl9VTklUVEVTVFNf U1JDUyA9IFwKLSAJdW5pdHRlc3RzL29mZnNldC10eXBlLXNlbGZ0ZXN0cy5jIFwKLSAJdW5pdHRl c3RzL29ic2VydmFibGUtc2VsZnRlc3RzLmMgXAotIAl1bml0dGVzdHMvb3B0aW9uYWwtc2VsZnRl c3RzLmMgXAotKwl1bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jIFwK LSAJdW5pdHRlc3RzL3B0aWQtc2VsZnRlc3RzLmMgXAotIAl1bml0dGVzdHMvcnNwLWxvdy1zZWxm dGVzdHMuYyBcCi0gCXVuaXR0ZXN0cy9zY29wZWRfZmQtc2VsZnRlc3RzLmMgXAotQEAgLTk2Nyw2 ICs5NjgsNyBAQCBDT01NT05fU0ZJTEVTID0gXAotIAljb21tb24vam9iLWNvbnRyb2wuYyBcCi0g CWNvbW1vbi9nZGJfdGlsZGVfZXhwYW5kLmMgXAotIAljb21tb24vZ2RiX3ZlY3MuYyBcCi0rCWNv bW1vbi9uZXRzdHVmZi5jIFwKLSAJY29tbW9uL25ldy1vcC5jIFwKLSAJY29tbW9uL3BhdGhzdHVm Zi5jIFwKLSAJY29tbW9uL3ByaW50LXV0aWxzLmMgXAotQEAgLTE0NDgsNiArMTQ1MCw3IEBAIEhG SUxFU19OT19TUkNESVIgPSBcCi0gCWNvbW1vbi9nZGJfdmVjcy5oIFwKLSAJY29tbW9uL2dkYl93 YWl0LmggXAotIAljb21tb24vY29tbW9uLWluZmVyaW9yLmggXAotKwljb21tb24vbmV0c3R1ZmYu aCBcCi0gCWNvbW1vbi9ob3N0LWRlZnMuaCBcCi0gCWNvbW1vbi9wYXRoc3R1ZmYuaCBcCi0gCWNv bW1vbi9wcmludC11dGlscy5oIFwKLWRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCi0t LS0gYS9nZGIvTkVXUwotKysrIGIvZ2RiL05FV1MKLUBAIC0xLDYgKzEsMTIgQEAKLSAJCVdoYXQg aGFzIGNoYW5nZWQgaW4gR0RCPwotIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNl KQotIAotKyoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA4LjIKLSsKLSsqIEdEQiBhbmQgR0RCc2VydmVy IG5vdyBzdXBwb3J0IElQdjYgY29ubmVjdGlvbnMuICBJUHY2IGFkZHJlc3NlcwotKyAgY2FuIGJl IHBhc3NlZCB1c2luZyB0aGUgJ1tBRERSRVNTXTpQT1JUJyBub3RhdGlvbiwgb3IgdGhlIHJlZ3Vs YXIKLSsgICdBRERSRVNTOlBPUlQnIG1ldGhvZC4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgOC4y Ci0gCi0gKiBUaGUgJ3NldCBkaXNhc3NlbWJsZXItb3B0aW9ucycgY29tbWFuZCBub3cgc3VwcG9y dHMgc3BlY2lmeWluZyBvcHRpb25zCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9uZXRzdHVmZi5j IGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jCi1AQCAtMCwwICsxLDE1NSBAQAotKy8q IE9wZXJhdGlvbnMgb24gbmV0d29yayBzdHVmZi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj aW5jbHVkZSAiY29tbW9uLWRlZnMuaCIKLSsjaW5jbHVkZSAibmV0c3R1ZmYuaCIKLSsjaW5jbHVk ZSA8YWxnb3JpdGhtPgotKwotKyNpZmRlZiBVU0VfV0lOMzJBUEkKLSsjaW5jbHVkZSA8d2luc29j azIuaD4KLSsjaW5jbHVkZSA8d3NwaWFwaS5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPG5ldGluZXQv aW4uaD4KLSsjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2luY2x1ZGUgPG5ldGRiLmg+Ci0rI2lu Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KLSsjZW5kaWYK LSsKLSsvKiBTZWUgY29tbW9uL25ldHN0dWZmLmguICAqLwotKwotK3Njb3BlZF9mcmVlX2FkZHJp bmZvOjp+c2NvcGVkX2ZyZWVfYWRkcmluZm8gKCkKLSt7Ci0rICBmcmVlYWRkcmluZm8gKG1fcmVz KTsKLSt9Ci0rCi0rLyogU2VlIGNvbW1vbi9uZXRzdHVmZi5oLiAgKi8KLSsKLStwYXJzZWRfY29u bmVjdGlvbl9zcGVjCi0rcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChzdGQ6 OnN0cmluZyBzcGVjLCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpCi0rewotKyAgcGFyc2VkX2Nvbm5l Y3Rpb25fc3BlYyByZXQ7Ci0rICBzaXplX3QgbGFzdF9jb2xvbl9wb3MgPSAwOwotKyAgLyogV2Un cmUgZGVhbGluZyB3aXRoIElQdjYgaWY6Ci0rCi0rICAgICAtIGFpX2ZhbWlseSBpcyBBRl9JTkVU Niwgb3IKLSsgICAgIC0gYWlfZmFtaWx5IGlzIG5vdCBBRl9JTkVULCBhbmQKLSsgICAgICAgLSBz cGVjWzBdIGlzICdbJywgb3IKLSsgICAgICAgLSB0aGUgbnVtYmVyIG9mICc6JyBvbiBzcGVjIGlz IGdyZWF0ZXIgdGhhbiAxLiAgKi8KLSsgIGJvb2wgaXNfaXB2NiA9IChoaW50LT5haV9mYW1pbHkg PT0gQUZfSU5FVDYKLSsJCSAgfHwgKGhpbnQtPmFpX2ZhbWlseSAhPSBBRl9JTkVUCi0rCQkgICAg ICAmJiAoc3BlY1swXSA9PSAnWycKLSsJCQkgIHx8IHN0ZDo6Y291bnQgKHNwZWMuYmVnaW4gKCks Ci0rCQkJCQkgc3BlYy5lbmQgKCksICc6JykgPiAxKSkpOwotKwotKyAgaWYgKGlzX2lwdjYpCi0r ICAgIHsKLSsgICAgICBpZiAoc3BlY1swXSA9PSAnWycpCi0rCXsKLSsJICAvKiBJUHY2IGFkZHJl c3NlcyBjYW4gYmUgd3JpdHRlbiBhcyAnW0FERFJdOlBPUlQnLCBhbmQgd2UKLSsJICAgICBzdXBw b3J0IHRoaXMgbm90YXRpb24uICAqLwotKwkgIHNpemVfdCBjbG9zZV9icmFja2V0X3BvcyA9IHNw ZWMuZmluZF9maXJzdF9vZiAoJ10nKTsKLSsKLSsJICBpZiAoY2xvc2VfYnJhY2tldF9wb3MgPT0g c3RkOjpzdHJpbmc6Om5wb3MpCi0rCSAgICBlcnJvciAoXygiTWlzc2luZyBjbG9zZSBicmFja2V0 IGluIGhvc3RuYW1lICclcyciKSwKLSsJCSAgIHNwZWMuY19zdHIgKCkpOwotKwotKwkgIGhpbnQt PmFpX2ZhbWlseSA9IEFGX0lORVQ2OwotKwotKwkgIGNvbnN0IGNoYXIgYyA9IHNwZWNbY2xvc2Vf YnJhY2tldF9wb3MgKyAxXTsKLSsKLSsJICBpZiAoYyA9PSAnXDAnKQotKwkgICAgbGFzdF9jb2xv bl9wb3MgPSBzdGQ6OnN0cmluZzo6bnBvczsKLSsJICBlbHNlIGlmIChjICE9ICc6JykKLSsJICAg IGVycm9yIChfKCJJbnZhbGlkIGNydWZ0IGFmdGVyIGNsb3NlIGJyYWNrZXQgaW4gJyVzJyIpLAot KwkJICAgc3BlYy5jX3N0ciAoKSk7Ci0rCi0rCSAgLyogRXJhc2UgYm90aCAnWycgYW5kICddJy4g ICovCi0rCSAgc3BlYy5lcmFzZSAoMCwgMSk7Ci0rCSAgc3BlYy5lcmFzZSAoY2xvc2VfYnJhY2tl dF9wb3MgLSAxLCAxKTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKHNwZWMuZmluZF9maXJzdF9vZiAo J10nKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKLSsJZXJyb3IgKF8oIk1pc3Npbmcgb3BlbiBicmFj a2V0IGluIGhvc3RuYW1lICclcyciKSwKLSsJICAgICAgIHNwZWMuY19zdHIgKCkpOwotKyAgICB9 Ci0rCi0rICBpZiAobGFzdF9jb2xvbl9wb3MgPT0gMCkKLSsgICAgbGFzdF9jb2xvbl9wb3MgPSBz cGVjLmZpbmRfbGFzdF9vZiAoJzonKTsKLSsKLSsgIC8qIFRoZSBsZW5ndGggb2YgdGhlIGhvc3Ru YW1lIHBhcnQuICAqLwotKyAgc2l6ZV90IGhvc3RfbGVuOwotKwotKyAgaWYgKGxhc3RfY29sb25f cG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotKyAgICB7Ci0rICAgICAgLyogVGhlIHVzZXIgaGFz IHByb3ZpZGVkIGEgcG9ydC4gICovCi0rICAgICAgaG9zdF9sZW4gPSBsYXN0X2NvbG9uX3BvczsK LSsgICAgICByZXQucG9ydF9zdHIgPSBzcGVjLnN1YnN0ciAobGFzdF9jb2xvbl9wb3MgKyAxKTsK LSsgICAgfQotKyAgZWxzZQotKyAgICBob3N0X2xlbiA9IHNwZWMuc2l6ZSAoKTsKLSsKLSsgIHJl dC5ob3N0X3N0ciA9IHNwZWMuc3Vic3RyICgwLCBob3N0X2xlbik7Ci0rCi0rICAvKiBEZWZhdWx0 IGhvc3RuYW1lIGlzIGxvY2FsaG9zdC4gICovCi0rICBpZiAocmV0Lmhvc3Rfc3RyLmVtcHR5ICgp KQotKyAgICByZXQuaG9zdF9zdHIgPSAibG9jYWxob3N0IjsKLSsKLSsgIHJldHVybiByZXQ7Ci0r fQotKwotKy8qIFNlZSBjb21tb24vbmV0c3R1ZmYuaC4gICovCi0rCi0rcGFyc2VkX2Nvbm5lY3Rp b25fc3BlYwotK3BhcnNlX2Nvbm5lY3Rpb25fc3BlYyAoY29uc3QgY2hhciAqc3BlYywgc3RydWN0 IGFkZHJpbmZvICpoaW50KQotK3sKLSsgIC8qIFN0cnVjdCB0byBob2xkIHRoZSBhc3NvY2lhdGlv biBiZXR3ZWVuIHZhbGlkIHByZWZpeGVzLCB0aGVpcgotKyAgICAgZmFtaWx5IGFuZCBzb2NrdHlw ZS4gICovCi0rICBzdHJ1Y3QgaG9zdF9wcmVmaXgKLSsgICAgewotKyAgICAgIC8qIFRoZSBwcmVm aXguICAqLwotKyAgICAgIGNvbnN0IGNoYXIgKnByZWZpeDsKLSsKLSsgICAgICAvKiBUaGUgJ2Fp X2ZhbWlseScuICAqLwotKyAgICAgIGludCBmYW1pbHk7Ci0rCi0rICAgICAgLyogVGhlICdhaV9z b2NrdHlwZScuICAqLwotKyAgICAgIGludCBzb2NrdHlwZTsKLSsgICAgfTsKLSsgIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaG9zdF9wcmVmaXggcHJlZml4ZXNbXSA9Ci0rICAgIHsKLSsgICAgICB7ICJ1 ZHA6IiwgIEFGX1VOU1BFQywgU09DS19ER1JBTSB9LAotKyAgICAgIHsgInRjcDoiLCAgQUZfVU5T UEVDLCBTT0NLX1NUUkVBTSB9LAotKyAgICAgIHsgInVkcDQ6IiwgQUZfSU5FVCwgICBTT0NLX0RH UkFNIH0sCi0rICAgICAgeyAidGNwNDoiLCBBRl9JTkVULCAgIFNPQ0tfU1RSRUFNIH0sCi0rICAg ICAgeyAidWRwNjoiLCBBRl9JTkVUNiwgIFNPQ0tfREdSQU0gfSwKLSsgICAgICB7ICJ0Y3A2OiIs IEFGX0lORVQ2LCAgU09DS19TVFJFQU0gfSwKLSsgICAgfTsKLSsKLSsgIGZvciAoY29uc3QgaG9z dF9wcmVmaXggcHJlZml4IDogcHJlZml4ZXMpCi0rICAgIGlmIChzdGFydHN3aXRoIChzcGVjLCBw cmVmaXgucHJlZml4KSkKLSsgICAgICB7Ci0rCXNwZWMgKz0gc3RybGVuIChwcmVmaXgucHJlZml4 KTsKLSsJaGludC0+YWlfZmFtaWx5ID0gcHJlZml4LmZhbWlseTsKLSsJaGludC0+YWlfc29ja3R5 cGUgPSBwcmVmaXguc29ja3R5cGU7Ci0rCWhpbnQtPmFpX3Byb3RvY29sCi0rCSAgPSBoaW50LT5h aV9zb2NrdHlwZSA9PSBTT0NLX0RHUkFNID8gSVBQUk9UT19VRFAgOiBJUFBST1RPX1RDUDsKLSsJ YnJlYWs7Ci0rICAgICAgfQotKwotKyAgcmV0dXJuIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY193aXRo b3V0X3ByZWZpeCAoc3BlYywgaGludCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vbmV0 c3R1ZmYuaCBiL2dkYi9jb21tb24vbmV0c3R1ZmYuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi9jb21tb24vbmV0c3R1ZmYuaAotQEAgLTAsMCArMSw3NiBA QAotKy8qIE9wZXJhdGlvbnMgb24gbmV0d29yayBzdHVmZi4KLSsgICBDb3B5cmlnaHQgKEMpIDIw MTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSsKLSsjaWZuZGVmIE5FVFNUVUZGX0gKLSsjZGVmaW5lIE5FVFNUVUZGX0gKLSsKLSsjaW5jbHVk ZSA8c3RyaW5nPgotKwotKy8qIExpa2UgTklfTUFYSE9TVC9OSV9NQVhTRVJWLCBidXQgZW5vdWdo IGZvciBudW1lcmljIGZvcm1zLiAgKi8KLSsjZGVmaW5lIEdEQl9OSV9NQVhfQUREUiA2NAotKyNk ZWZpbmUgR0RCX05JX01BWF9QT1JUIDE2Ci0rCi0rLyogSGVscGVyIGNsYXNzIHRvIGd1YXJhbnRl ZSB0aGF0IHdlIGFsd2F5cyBjYWxsICdmcmVlYWRkcmluZm8nLiAgKi8KLSsKLStjbGFzcyBzY29w ZWRfZnJlZV9hZGRyaW5mbwotK3sKLStwdWJsaWM6Ci0rICAvKiBEZWZhdWx0IGNvbnN0cnVjdG9y LiAgKi8KLSsgIGV4cGxpY2l0IHNjb3BlZF9mcmVlX2FkZHJpbmZvIChzdHJ1Y3QgYWRkcmluZm8g KmFpbmZvKQotKyAgICA6IG1fcmVzIChhaW5mbykKLSsgIHsKLSsgIH0KLSsKLSsgIC8qIERlc3Ry dWN0b3IgcmVzcG9uc2libGUgZm9yIGZyZWUnaW5nIE1fUkVTIGJ5IGNhbGxpbmcKLSsgICAgICdm cmVlYWRkcmluZm8nLiAgKi8KLSsgIH5zY29wZWRfZnJlZV9hZGRyaW5mbyAoKTsKLSsKLSsgIERJ U0FCTEVfQ09QWV9BTkRfQVNTSUdOIChzY29wZWRfZnJlZV9hZGRyaW5mbyk7Ci0rCi0rcHJpdmF0 ZToKLSsgIC8qIFRoZSBhZGRyaW5mbyByZXNvdXJjZS4gICovCi0rICBzdHJ1Y3QgYWRkcmluZm8g Km1fcmVzOwotK307Ci0rCi0rLyogVGhlIHN0cnVjdCB3ZSByZXR1cm4gYWZ0ZXIgcGFyc2luZyB0 aGUgY29ubmVjdGlvbiBzcGVjLiAgKi8KLSsKLStzdHJ1Y3QgcGFyc2VkX2Nvbm5lY3Rpb25fc3Bl YwotK3sKLSsgIC8qIFRoZSBob3N0bmFtZS4gICovCi0rICBzdGQ6OnN0cmluZyBob3N0X3N0cjsK LSsKLSsgIC8qIFRoZSBwb3J0LCBpZiBhbnkuICAqLwotKyAgc3RkOjpzdHJpbmcgcG9ydF9zdHI7 Ci0rfTsKLSsKLSsKLSsvKiBQYXJzZSBTUEVDICh3aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9y bSBvZiAiQUREUjpQT1JUIikgYW5kCi0rICAgcmV0dXJuIGEgJ3BhcnNlZF9jb25uZWN0aW9uX3Nw ZWMnIHN0cnVjdHVyZSB3aXRoIHRoZSBwcm9wZXIgZmllbGRzCi0rICAgZmlsbGVkIGluLiAgQWxz byBhZGp1c3QgSElOVCBhY2NvcmRpbmdseS4gICovCi0rZXh0ZXJuIHBhcnNlZF9jb25uZWN0aW9u X3NwZWMKLSsgIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY193aXRob3V0X3ByZWZpeCAoc3RkOjpzdHJp bmcgc3BlYywKLSsJCQkJCXN0cnVjdCBhZGRyaW5mbyAqaGludCk7Ci0rCi0rLyogUGFyc2UgU1BF QyAod2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YKLSsgICAiW3RjcFs2XTp8dWRwWzZd Ol1BRERSOlBPUlQiKSBhbmQgcmV0dXJuIGEgJ3BhcnNlZF9jb25uZWN0aW9uX3NwZWMnCi0rICAg c3RydWN0dXJlIHdpdGggdGhlIHByb3BlciBmaWVsZHMgZmlsbGVkIGluLiAgQWxzbyBhZGp1c3Qg SElOVAotKyAgIGFjY29yZGluZ2x5LiAgKi8KLStleHRlcm4gcGFyc2VkX2Nvbm5lY3Rpb25fc3Bl YyBwYXJzZV9jb25uZWN0aW9uX3NwZWMgKGNvbnN0IGNoYXIgKnNwZWMsCi0rCQkJCQkJICAgICBz dHJ1Y3QgYWRkcmluZm8gKmhpbnQpOwotKwotKyNlbmRpZiAvKiAhIE5FVFNUVUZGX0ggKi8KLWRp ZmYgLS1naXQgYS9nZGIvZG9jL0NoYW5nZUxvZyBiL2dkYi9kb2MvQ2hhbmdlTG9nCi0tLS0gYS9n ZGIvZG9jL0NoYW5nZUxvZwotKysrIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEg QEAKLSsyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQu Y29tPgotKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot KwkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KLSsJICAgIFRzdXRvbXUg U2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoUmVtb3RlIENv bm5lY3Rpb24gQ29tbWFuZHMpOiBBZGQgZXhwbGFuYXRpb24KLSsJYWJvdXQgbmV3IElQdjYgc3Vw cG9ydC4gIEFkZCBuZXcgY29ubmVjdGlvbiBwcmVmaXhlcy4KLSsKLSAyMDE4LTA3LTAyICBNYWNp ZWogVy4gUm96eWNraSAgPG1hY3JvQG1pcHMuY29tPgotIAotIAlQUiB0ZGVwLzgyODIKLWRpZmYg LS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotLS0tIGEv Z2RiL2RvYy9nZGIudGV4aW5mbwotKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTIwNTQ4 LDE2ICsyMDU0OCwyNyBAQCBJZiB5b3UncmUgdXNpbmcgYSBzZXJpYWwgbGluZSwgeW91IG1heSB3 YW50IHRvIGdpdmUgQHZhbHVle0dEQk59IHRoZQotIEBjb2Rle3RhcmdldH0gY29tbWFuZC4KLSAK LSBAaXRlbSB0YXJnZXQgcmVtb3RlIEBjb2Rle0B2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRl bXggdGFyZ2V0IHJlbW90ZSBAY29kZXtAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLSBAaXRlbXgg dGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0 YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDpAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLStAaXRlbXgg dGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXgg dGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXgg dGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotIEBpdGVt eCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle0B2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStA aXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXtAdmFye1tob3N0XX06QHZhcntwb3J0 fX0KLSBAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A6QHZhcntob3N0fTpA dmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDpAdmFy e1tob3N0XX06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29k ZXt0Y3A0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJl bW90ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4 dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotIEBjaW5k ZXggQGFjcm9ueW17VENQfSBwb3J0LCBAY29kZXt0YXJnZXQgcmVtb3RlfQotIERlYnVnIHVzaW5n IGEgQGFjcm9ueW17VENQfSBjb25uZWN0aW9uIHRvIEB2YXJ7cG9ydH0gb24gQHZhcntob3N0fS4K LS1UaGUgQHZhcntob3N0fSBtYXkgYmUgZWl0aGVyIGEgaG9zdCBuYW1lIG9yIGEgbnVtZXJpYyBA YWNyb255bXtJUH0KLS1hZGRyZXNzOyBAdmFye3BvcnR9IG11c3QgYmUgYSBkZWNpbWFsIG51bWJl ci4gIFRoZSBAdmFye2hvc3R9IGNvdWxkIGJlCi0tdGhlIHRhcmdldCBtYWNoaW5lIGl0c2VsZiwg aWYgaXQgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBuZXQsIG9yCi0taXQgbWlnaHQgYmUg YSB0ZXJtaW5hbCBzZXJ2ZXIgd2hpY2ggaW4gdHVybiBoYXMgYSBzZXJpYWwgbGluZSB0byB0aGUK LS10YXJnZXQuCi0rVGhlIEB2YXJ7aG9zdH0gbWF5IGJlIGVpdGhlciBhIGhvc3QgbmFtZSwgYSBu dW1lcmljIEBhY3Jvbnlte0lQdjR9Ci0rYWRkcmVzcywgb3IgYSBudW1lcmljIEBhY3Jvbnlte0lQ djZ9IGFkZHJlc3MgKHdpdGggb3Igd2l0aG91dCB0aGUKLStzcXVhcmUgYnJhY2tldHMgdG8gc2Vw YXJhdGUgdGhlIGFkZHJlc3MgZnJvbSB0aGUgcG9ydCk7IEB2YXJ7cG9ydH0KLSttdXN0IGJlIGEg ZGVjaW1hbCBudW1iZXIuICBUaGUgQHZhcntob3N0fSBjb3VsZCBiZSB0aGUgdGFyZ2V0IG1hY2hp bmUKLStpdHNlbGYsIGlmIGl0IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgbmV0LCBvciBp dCBtaWdodCBiZSBhCi0rdGVybWluYWwgc2VydmVyIHdoaWNoIGluIHR1cm4gaGFzIGEgc2VyaWFs IGxpbmUgdG8gdGhlIHRhcmdldC4KLSAKLSBGb3IgZXhhbXBsZSwgdG8gY29ubmVjdCB0byBwb3J0 IDI4Mjggb24gYSB0ZXJtaW5hbCBzZXJ2ZXIgbmFtZWQKLSBAY29kZXttYW55ZmFybXN9OgotQEAg LTIwNTY2LDYgKzIwNTc3LDI4IEBAIEZvciBleGFtcGxlLCB0byBjb25uZWN0IHRvIHBvcnQgMjgy OCBvbiBhIHRlcm1pbmFsIHNlcnZlciBuYW1lZAotIHRhcmdldCByZW1vdGUgbWFueWZhcm1zOjI4 MjgKLSBAZW5kIHNtYWxsZXhhbXBsZQotIAotK1RvIGNvbm5lY3QgdG8gcG9ydCAyODI4IG9uIGEg dGVybWluYWwgc2VydmVyIHdob3NlIGFkZHJlc3MgaXMKLStAY29kZXsyMDAxOjBkYjg6ODVhMzow MDAwOjAwMDA6OGEyZTowMzcwOjczMzR9LCB5b3UgY2FuIGVpdGhlciB1c2UgdGhlCi0rc3F1YXJl IGJyYWNrZXQgc3ludGF4OgotKwotK0BzbWFsbGV4YW1wbGUKLSt0YXJnZXQgcmVtb3RlIFsyMDAx OjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzRdOjI4MjgKLStAZW5kIHNtYWxsZXhh bXBsZQotKwotK0Bub2luZGVudAotK29yIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgQGFjcm9ueW17 SVB2Nn0gcHJvdG9jb2w6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldCByZW1vdGUgdGNwNjoy MDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzQ6MjgyOAotK0BlbmQgc21hbGxl eGFtcGxlCi0rCi0rVGhpcyBsYXN0IGV4YW1wbGUgbWF5IGJlIGNvbmZ1c2luZyB0byB0aGUgcmVh ZGVyLCBiZWNhdXNlIHRoZXJlIGlzIG5vCi0rdmlzaWJsZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhl IGhvc3RuYW1lIGFuZCB0aGUgcG9ydCBudW1iZXIuCi0rVGhlcmVmb3JlLCB3ZSByZWNvbW1lbmQg dGhlIHVzZXIgdG8gcHJvdmlkZSBAYWNyb255bXtJUHY2fSBhZGRyZXNzZXMKLSt1c2luZyBzcXVh cmUgYnJhY2tldHMgZm9yIGNsYXJpdHkuICBIb3dldmVyLCBpdCBpcyBpbXBvcnRhbnQgdG8KLStt ZW50aW9uIHRoYXQgZm9yIEB2YWx1ZXtHREJOfSB0aGVyZSBpcyBubyBhbWJpZ3VpdHk6IHRoZSBu dW1iZXIgYWZ0ZXIKLSt0aGUgbGFzdCBjb2xvbiBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBwb3J0 IG51bWJlci4KLSsKLSBJZiB5b3VyIHJlbW90ZSB0YXJnZXQgaXMgYWN0dWFsbHkgcnVubmluZyBv biB0aGUgc2FtZSBtYWNoaW5lIGFzIHlvdXIKLSBkZWJ1Z2dlciBzZXNzaW9uIChlLmcuQDogYSBz aW11bGF0b3IgZm9yIHlvdXIgdGFyZ2V0IHJ1bm5pbmcgb24gdGhlCi0gc2FtZSBob3N0KSwgeW91 IGNhbiBvbWl0IHRoZSBob3N0bmFtZS4gIEZvciBleGFtcGxlLCB0byBjb25uZWN0IHRvCi1AQCAt MjA1NzksNyArMjA2MTIsMTUgQEAgdGFyZ2V0IHJlbW90ZSA6MTIzNAotIE5vdGUgdGhhdCB0aGUg Y29sb24gaXMgc3RpbGwgcmVxdWlyZWQgaGVyZS4KLSAKLSBAaXRlbSB0YXJnZXQgcmVtb3RlIEBj b2Rle3VkcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19Ci0rQGl0ZW14IHRhcmdldCByZW1vdGUgQGNv ZGV7dWRwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBj b2Rle3VkcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBj b2Rle3VkcDY6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19Ci0rQGl0ZW14IHRhcmdldCBleHRlbmRl ZC1yZW1vdGUgQGNvZGV7dWRwOkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLSBAaXRlbXggdGFyZ2V0 IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVt eCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDpAdmFye1tob3N0XX06QHZhcntwb3J0 fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA0OkB2YXJ7aG9zdH06 QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA2OkB2 YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29k ZXt1ZHA2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotIEBjaW5kZXggQGFjcm9ueW17VURQfSBw b3J0LCBAY29kZXt0YXJnZXQgcmVtb3RlfQotIERlYnVnIHVzaW5nIEBhY3Jvbnlte1VEUH0gcGFj a2V0cyB0byBAdmFye3BvcnR9IG9uIEB2YXJ7aG9zdH0uICBGb3IgZXhhbXBsZSwgdG8KLSBjb25u ZWN0IHRvIEBhY3Jvbnlte1VEUH0gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2VydmVyIG5hbWVk IEBjb2Rle21hbnlmYXJtc306Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cg Yi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwotLS0tIGEvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cK LSsrKyBiL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIyIEBACi0rMjAxOC0w Ny0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSsJICAg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsJICAgIFBhdWwg RmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+Ci0rCSAgICBUc3V0b211IFNla2kgIDxzZWtp cmlraUBnbWFpbC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFkZCAnJChzcmNk aXIpL2NvbW1vbi9uZXRzdHVmZi5jJy4KLSsJKE9CUyk6IEFkZCAnY29tbW9uL25ldHN0dWZmLm8n LgotKwkoR0RCUkVQTEFZX09CUyk6IExpa2V3aXNlLgotKwkqIGdkYnJlcGxheS5jOiBJbmNsdWRl ICd3c3BpYXBpLmgnIGFuZCAnbmV0c3R1ZmYuaCcuCi0rCShyZW1vdGVfb3Blbik6IEltcGxlbWVu dCBzdXBwb3J0IGZvciBJUHY2Ci0rCWNvbm5lY3Rpb25zLgotKwkqIHJlbW90ZS11dGlscy5jOiBJ bmNsdWRlICduZXRzdHVmZi5oJywgJ2ZpbGVzdHVmZi5oJwotKwlhbmQgJ3dzcGlhcGkuaCcuCi0r CShoYW5kbGVfYWNjZXB0X2V2ZW50KTogQWNjZXB0IGNvbm5lY3Rpb25zIGZyb20gSVB2NiBzb3Vy Y2VzLgotKwkocmVtb3RlX3ByZXBhcmUpOiBIYW5kbGUgSVB2Ni1zdHlsZSBob3N0bmFtZXM7IGlt cGxlbWVudAotKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25zLgotKwkocmVtb3RlX29wZW4p OiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgcHJpbnRpbmcgY29ubmVjdGlvbnMgZnJvbQotKwlJUHY2 IHNvdXJjZXMuCi0rCi0gMjAxOC0wNy0xMSAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNv bT4KLSAKLSAJUFIgZ2RiLzIzMzc3Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmls ZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFr ZWZpbGUuaW4KLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0yMTEsNiArMjEx LDcgQEAgU0ZJTEVTID0gXAotIAkkKHNyY2RpcikvY29tbW9uL2pvYi1jb250cm9sLmMgXAotIAkk KHNyY2RpcikvY29tbW9uL2dkYl90aWxkZV9leHBhbmQuYyBcCi0gCSQoc3JjZGlyKS9jb21tb24v Z2RiX3ZlY3MuYyBcCi0rCSQoc3JjZGlyKS9jb21tb24vbmV0c3R1ZmYuYyBcCi0gCSQoc3JjZGly KS9jb21tb24vbmV3LW9wLmMgXAotIAkkKHNyY2RpcikvY29tbW9uL3BhdGhzdHVmZi5jIFwKLSAJ JChzcmNkaXIpL2NvbW1vbi9wcmludC11dGlscy5jIFwKLUBAIC0yNTQsNiArMjU1LDcgQEAgT0JT ID0gXAotIAljb21tb24vZm9ybWF0Lm8gXAotIAljb21tb24vZ2RiX3RpbGRlX2V4cGFuZC5vIFwK LSAJY29tbW9uL2dkYl92ZWNzLm8gXAotKwljb21tb24vbmV0c3R1ZmYubyBcCi0gCWNvbW1vbi9u ZXctb3AubyBcCi0gCWNvbW1vbi9wYXRoc3R1ZmYubyBcCi0gCWNvbW1vbi9wcmludC11dGlscy5v IFwKLUBAIC0yOTAsNiArMjkyLDcgQEAgR0RCUkVQTEFZX09CUyA9IFwKLSAJY29tbW9uL2NvbW1v bi1leGNlcHRpb25zLm8gXAotIAljb21tb24vY29tbW9uLXV0aWxzLm8gXAotIAljb21tb24vZXJy b3JzLm8gXAotKwljb21tb24vbmV0c3R1ZmYubyBcCi0gCWNvbW1vbi9wcmludC11dGlscy5vIFwK LSAJZ2RicmVwbGF5Lm8gXAotIAl1dGlscy5vIFwKLWRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVy L2dkYnJlcGxheS5jIGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYwotLS0tIGEvZ2RiL2dkYnNl cnZlci9nZGJyZXBsYXkuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYwotQEAgLTQ2 LDggKzQ2LDExIEBACi0gCi0gI2lmIFVTRV9XSU4zMkFQSQotICNpbmNsdWRlIDx3aW5zb2NrMi5o PgotKyNpbmNsdWRlIDx3c3BpYXBpLmg+Ci0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgIm5ldHN0dWZm LmgiCi0rCi0gI2lmbmRlZiBIQVZFX1NPQ0tMRU5fVAotIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsK LSAjZW5kaWYKLUBAIC0xNDIsNTYgKzE0NSwxMDggQEAgcmVtb3RlX2Nsb3NlICh2b2lkKQotIHN0 YXRpYyB2b2lkCi0gcmVtb3RlX29wZW4gKGNoYXIgKm5hbWUpCi0gewotLSAgaWYgKCFzdHJjaHIg KG5hbWUsICc6JykpCi0rICBjaGFyICpsYXN0X2NvbG9uID0gc3RycmNociAobmFtZSwgJzonKTsK LSsKLSsgIGlmIChsYXN0X2NvbG9uID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBmcHJpbnRmIChz dGRlcnIsICIlczogTXVzdCBzcGVjaWZ5IHRjcCBjb25uZWN0aW9uIGFzIGhvc3Q6YWRkclxuIiwg bmFtZSk7Ci0gICAgICAgZmZsdXNoIChzdGRlcnIpOwotICAgICAgIGV4aXQgKDEpOwotICAgICB9 Ci0tICBlbHNlCi0tICAgIHsKLSsKLSAjaWZkZWYgVVNFX1dJTjMyQVBJCi0tICAgICAgc3RhdGlj IGludCB3aW5zb2NrX2luaXRpYWxpemVkOwotKyAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxp emVkOwotICNlbmRpZgotLSAgICAgIGNoYXIgKnBvcnRfc3RyOwotLSAgICAgIGludCBwb3J0Owot LSAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzb2NrYWRkcjsKLS0gICAgICBzb2NrbGVuX3QgdG1w OwotLSAgICAgIGludCB0bXBfZGVzYzsKLSsgIGNoYXIgKnBvcnRfc3RyOwotKyAgaW50IHRtcDsK LSsgIGludCB0bXBfZGVzYzsKLSsgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotKyAgc3RydWN0IGFk ZHJpbmZvICphaW5mbzsKLSAKLS0gICAgICBwb3J0X3N0ciA9IHN0cmNociAobmFtZSwgJzonKTsK LSsgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkpOwotKyAgLyogQXNzdW1lIG5vIHBy ZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKLSsgICAgIEFGX1VO U1BFQy4gICovCi0rICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKLSsgIGhpbnQuYWlfc29j a3R5cGUgPSBTT0NLX1NUUkVBTTsKLSsgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsK LSAKLS0gICAgICBwb3J0ID0gYXRvaSAocG9ydF9zdHIgKyAxKTsKLSsgIHBhcnNlZF9jb25uZWN0 aW9uX3NwZWMgcGFyc2VkID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChuYW1lLCAmaGludCk7Ci0r Ci0rICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQotKyAgICBlcnJvciAoXygiTWlzc2lu ZyBwb3J0IG9uIGhvc3RuYW1lICclcyciKSwgbmFtZSk7Ci0gCi0gI2lmZGVmIFVTRV9XSU4zMkFQ SQotLSAgICAgIGlmICghd2luc29ja19pbml0aWFsaXplZCkKLS0JewotLQkgIFdTQURBVEEgd3Nh ZDsKLSsgIGlmICghd2luc29ja19pbml0aWFsaXplZCkKLSsgICAgewotKyAgICAgIFdTQURBVEEg d3NhZDsKLSAKLS0JICBXU0FTdGFydHVwIChNQUtFV09SRCAoMSwgMCksICZ3c2FkKTsKLS0JICB3 aW5zb2NrX2luaXRpYWxpemVkID0gMTsKLS0JfQotKyAgICAgIFdTQVN0YXJ0dXAgKE1BS0VXT1JE ICgxLCAwKSwgJndzYWQpOwotKyAgICAgIHdpbnNvY2tfaW5pdGlhbGl6ZWQgPSAxOwotKyAgICB9 Ci0gI2VuZGlmCi0gCi0tICAgICAgdG1wX2Rlc2MgPSBzb2NrZXQgKFBGX0lORVQsIFNPQ0tfU1RS RUFNLCAwKTsKLS0gICAgICBpZiAodG1wX2Rlc2MgPT0gLTEpCi0tCXBlcnJvcl93aXRoX25hbWUg KCJDYW4ndCBvcGVuIHNvY2tldCIpOwotKyAgaW50IHIgPSBnZXRhZGRyaW5mbyAocGFyc2VkLmhv c3Rfc3RyLmNfc3RyICgpLCBwYXJzZWQucG9ydF9zdHIuY19zdHIgKCksCi0rCQkgICAgICAgJmhp bnQsICZhaW5mbyk7Ci0gCi0tICAgICAgLyogQWxsb3cgcmFwaWQgcmV1c2Ugb2YgdGhpcyBwb3J0 LiAqLwotLSAgICAgIHRtcCA9IDE7Ci0tICAgICAgc2V0c29ja29wdCAodG1wX2Rlc2MsIFNPTF9T T0NLRVQsIFNPX1JFVVNFQUREUiwgKGNoYXIgKikgJnRtcCwKLS0JCSAgc2l6ZW9mICh0bXApKTsK LSsgIGlmIChyICE9IDApCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczolczog Y2Fubm90IHJlc29sdmUgbmFtZTogJXNcbiIsCi0rCSAgICAgICBwYXJzZWQuaG9zdF9zdHIuY19z dHIgKCksIHBhcnNlZC5wb3J0X3N0ci5jX3N0ciAoKSwKLSsJICAgICAgIGdhaV9zdHJlcnJvciAo cikpOwotKyAgICAgIGZmbHVzaCAoc3RkZXJyKTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQot KwotKyAgc2NvcGVkX2ZyZWVfYWRkcmluZm8gZnJlZV9haW5mbyAoYWluZm8pOwotKwotKyAgc3Ry dWN0IGFkZHJpbmZvICpwOwotKwotKyAgZm9yIChwID0gYWluZm87IHAgIT0gTlVMTDsgcCA9IHAt PmFpX25leHQpCi0rICAgIHsKLSsgICAgICB0bXBfZGVzYyA9IHNvY2tldCAocC0+YWlfZmFtaWx5 LCBwLT5haV9zb2NrdHlwZSwgcC0+YWlfcHJvdG9jb2wpOwotIAotLSAgICAgIHNvY2thZGRyLnNp bl9mYW1pbHkgPSBQRl9JTkVUOwotLSAgICAgIHNvY2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBv cnQpOwotLSAgICAgIHNvY2thZGRyLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7Ci0rICAg ICAgaWYgKHRtcF9kZXNjID49IDApCi0rCWJyZWFrOwotKyAgICB9Ci0rCi0rICBpZiAocCA9PSBO VUxMKQotKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2Fubm90IG9wZW4gc29ja2V0Iik7Ci0gCi0t ICAgICAgaWYgKGJpbmQgKHRtcF9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwg c2l6ZW9mIChzb2NrYWRkcikpCi0tCSAgfHwgbGlzdGVuICh0bXBfZGVzYywgMSkpCi0tCXBlcnJv cl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsKLSsgIC8qIEFsbG93IHJhcGlkIHJl dXNlIG9mIHRoaXMgcG9ydC4gKi8KLSsgIHRtcCA9IDE7Ci0rICBzZXRzb2Nrb3B0ICh0bXBfZGVz YywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCAoY2hhciAqKSAmdG1wLAotKwkgICAgICBzaXpl b2YgKHRtcCkpOwotKwotKyAgc3dpdGNoIChwLT5haV9mYW1pbHkpCi0rICAgIHsKLSsgICAgY2Fz ZSBBRl9JTkVUOgotKyAgICAgICgoc3RydWN0IHNvY2thZGRyX2luICopIHAtPmFpX2FkZHIpLT5z aW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEFG X0lORVQ2OgotKyAgICAgICgoc3RydWN0IHNvY2thZGRyX2luNiAqKSBwLT5haV9hZGRyKS0+c2lu Nl9hZGRyID0gaW42YWRkcl9hbnk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAg ICAgZnByaW50ZiAoc3RkZXJyLCAiSW52YWxpZCAnYWlfZmFtaWx5JyAlZFxuIiwgcC0+YWlfZmFt aWx5KTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQotKwotKyAgaWYgKGJpbmQgKHRtcF9kZXNj LCBwLT5haV9hZGRyLCBwLT5haV9hZGRybGVuKSAhPSAwKQotKyAgICBwZXJyb3Jfd2l0aF9uYW1l ICgiQ2FuJ3QgYmluZCBhZGRyZXNzIik7Ci0rCi0rICBpZiAocC0+YWlfc29ja3R5cGUgPT0gU09D S19ER1JBTSkKLSsgICAgcmVtb3RlX2Rlc2MgPSB0bXBfZGVzYzsKLSsgIGVsc2UKLSsgICAgewot KyAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOwotKyAgICAgIHNvY2tsZW5f dCBzb2NrYWRkcnNpemUgPSBzaXplb2YgKHNvY2thZGRyKTsKLSsgICAgICBjaGFyIG9yaWdfaG9z dFtHREJfTklfTUFYX0FERFJdLCBvcmlnX3BvcnRbR0RCX05JX01BWF9QT1JUXTsKLSsKLSsgICAg ICBpZiAobGlzdGVuICh0bXBfZGVzYywgMSkgIT0gMCkKLSsJcGVycm9yX3dpdGhfbmFtZSAoIkNh bid0IGxpc3RlbiBvbiBzb2NrZXQiKTsKLSsKLSsgICAgICByZW1vdGVfZGVzYyA9IGFjY2VwdCAo dG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLAotKwkJCSAgICAmc29ja2Fk ZHJzaXplKTsKLSAKLS0gICAgICB0bXAgPSBzaXplb2YgKHNvY2thZGRyKTsKLS0gICAgICByZW1v dGVfZGVzYyA9IGFjY2VwdCAodG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRy LCAmdG1wKTsKLSAgICAgICBpZiAocmVtb3RlX2Rlc2MgPT0gLTEpCi0gCXBlcnJvcl93aXRoX25h bWUgKCJBY2NlcHQgZmFpbGVkIik7Ci0gCi1AQCAtMjA2LDYgKzI2MSwxNiBAQCByZW1vdGVfb3Bl biAoY2hhciAqbmFtZSkKLSAgICAgICBzZXRzb2Nrb3B0IChyZW1vdGVfZGVzYywgSVBQUk9UT19U Q1AsIFRDUF9OT0RFTEFZLAotIAkJICAoY2hhciAqKSAmdG1wLCBzaXplb2YgKHRtcCkpOwotIAot KyAgICAgIGlmIChnZXRuYW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIHNv Y2thZGRyc2l6ZSwKLSsJCSAgICAgICBvcmlnX2hvc3QsIHNpemVvZiAob3JpZ19ob3N0KSwKLSsJ CSAgICAgICBvcmlnX3BvcnQsIHNpemVvZiAob3JpZ19wb3J0KSwKLSsJCSAgICAgICBOSV9OVU1F UklDSE9TVCB8IE5JX05VTUVSSUNTRVJWKSA9PSAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJy LCAiUmVtb3RlIGRlYnVnZ2luZyBmcm9tIGhvc3QgJXMsIHBvcnQgJXNcbiIsCi0rCQkgICBvcmln X2hvc3QsIG9yaWdfcG9ydCk7Ci0rCSAgZmZsdXNoIChzdGRlcnIpOwotKwl9Ci0rCi0gI2lmbmRl ZiBVU0VfV0lOMzJBUEkKLSAgICAgICBjbG9zZSAodG1wX2Rlc2MpOwkJLyogTm8gbG9uZ2VyIG5l ZWQgdGhpcyAqLwotIAotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMg Yi9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCi0tLS0gYS9nZGIvZ2Ric2VydmVyL3JlbW90 ZS11dGlscy5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCi1AQCAtMjYsNiAr MjYsOCBAQAotICNpbmNsdWRlICJkbGwuaCIKLSAjaW5jbHVkZSAicnNwLWxvdy5oIgotICNpbmNs dWRlICJnZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAibmV0c3R1ZmYuaCIKLSsjaW5jbHVkZSAiZmls ZXN0dWZmLmgiCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2lmIEhBVkVfU1lTX0lPQ1RMX0gKLSAj aW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci1AQCAtNjMsNiArNjUsNyBAQAotIAotICNpZiBVU0VfV0lO MzJBUEkKLSAjaW5jbHVkZSA8d2luc29jazIuaD4KLSsjaW5jbHVkZSA8d3NwaWFwaS5oPgotICNl bmRpZgotIAotICNpZiBfX1FOWF9fCi1AQCAtMTUxLDE5ICsxNTQsMTggQEAgZW5hYmxlX2FzeW5j X25vdGlmaWNhdGlvbiAoaW50IGZkKQotIHN0YXRpYyBpbnQKLSBoYW5kbGVfYWNjZXB0X2V2ZW50 IChpbnQgZXJyLCBnZGJfY2xpZW50X2RhdGEgY2xpZW50X2RhdGEpCi0gewotLSAgc3RydWN0IHNv Y2thZGRyX2luIHNvY2thZGRyOwotLSAgc29ja2xlbl90IHRtcDsKLSsgIHN0cnVjdCBzb2NrYWRk cl9zdG9yYWdlIHNvY2thZGRyOwotKyAgc29ja2xlbl90IGxlbiA9IHNpemVvZiAoc29ja2FkZHIp OwotIAotICAgaWYgKGRlYnVnX3RocmVhZHMpCi0gICAgIGRlYnVnX3ByaW50ZiAoImhhbmRsaW5n IHBvc3NpYmxlIGFjY2VwdCBldmVudFxuIik7Ci0gCi0tICB0bXAgPSBzaXplb2YgKHNvY2thZGRy KTsKLS0gIHJlbW90ZV9kZXNjID0gYWNjZXB0IChsaXN0ZW5fZGVzYywgKHN0cnVjdCBzb2NrYWRk ciAqKSAmc29ja2FkZHIsICZ0bXApOwotKyAgcmVtb3RlX2Rlc2MgPSBhY2NlcHQgKGxpc3Rlbl9k ZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbik7Ci0gICBpZiAocmVtb3Rl X2Rlc2MgPT0gLTEpCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKCJBY2NlcHQgZmFpbGVkIik7Ci0g Ci0gICAvKiBFbmFibGUgVENQIGtlZXAgYWxpdmUgcHJvY2Vzcy4gKi8KLS0gIHRtcCA9IDE7Ci0r ICBzb2NrbGVuX3QgdG1wID0gMTsKLSAgIHNldHNvY2tvcHQgKHJlbW90ZV9kZXNjLCBTT0xfU09D S0VULCBTT19LRUVQQUxJVkUsCi0gCSAgICAgIChjaGFyICopICZ0bXAsIHNpemVvZiAodG1wKSk7 Ci0gCi1AQCAtMTkyLDggKzE5NCwxOSBAQCBoYW5kbGVfYWNjZXB0X2V2ZW50IChpbnQgZXJyLCBn ZGJfY2xpZW50X2RhdGEgY2xpZW50X2RhdGEpCi0gICBkZWxldGVfZmlsZV9oYW5kbGVyIChsaXN0 ZW5fZGVzYyk7Ci0gCi0gICAvKiBDb252ZXJ0IElQIGFkZHJlc3MgdG8gc3RyaW5nLiAgKi8KLS0g IGZwcmludGYgKHN0ZGVyciwgIlJlbW90ZSBkZWJ1Z2dpbmcgZnJvbSBob3N0ICVzXG4iLAotLQkg ICBpbmV0X250b2EgKHNvY2thZGRyLnNpbl9hZGRyKSk7Ci0rICBjaGFyIG9yaWdfaG9zdFtHREJf TklfTUFYX0FERFJdLCBvcmlnX3BvcnRbR0RCX05JX01BWF9QT1JUXTsKLSsKLSsgIGludCByID0g Z2V0bmFtZWluZm8gKChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCBsZW4sCi0rCQkgICAg ICAgb3JpZ19ob3N0LCBzaXplb2YgKG9yaWdfaG9zdCksCi0rCQkgICAgICAgb3JpZ19wb3J0LCBz aXplb2YgKG9yaWdfcG9ydCksCi0rCQkgICAgICAgTklfTlVNRVJJQ0hPU1QgfCBOSV9OVU1FUklD U0VSVik7Ci0rCi0rICBpZiAociAhPSAwKQotKyAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkNvdWxk IG5vdCBvYnRhaW4gcmVtb3RlIGFkZHJlc3M6ICVzXG4iKSwKLSsJICAgICBnYWlfc3RyZXJyb3Ig KHIpKTsKLSsgIGVsc2UKLSsgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJSZW1vdGUgZGVidWdnaW5n IGZyb20gaG9zdCAlcywgcG9ydCAlc1xuIiksCi0rCSAgICAgb3JpZ19ob3N0LCBvcmlnX3BvcnQp OwotIAotICAgZW5hYmxlX2FzeW5jX25vdGlmaWNhdGlvbiAocmVtb3RlX2Rlc2MpOwotIAotQEAg LTIyMiwxMCArMjM1LDcgQEAgcmVtb3RlX3ByZXBhcmUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gI2lm ZGVmIFVTRV9XSU4zMkFQSQotICAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxpemVkOwotICNl bmRpZgotLSAgaW50IHBvcnQ7Ci0tICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7Ci0gICBz b2NrbGVuX3QgdG1wOwotLSAgY2hhciAqcG9ydF9lbmQ7Ci0gCi0gICByZW1vdGVfaXNfc3RkaW8g PSAwOwotICAgaWYgKHN0cmNtcCAobmFtZSwgU1RESU9fQ09OTkVDVElPTl9OQU1FKSA9PSAwKQot QEAgLTIzOCwxNyArMjQ4LDI1IEBAIHJlbW90ZV9wcmVwYXJlIChjb25zdCBjaGFyICpuYW1lKQot ICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgcG9ydF9zdHIgPSBzdHJjaHIgKG5hbWUsICc6 Jyk7Ci0tICBpZiAocG9ydF9zdHIgPT0gTlVMTCkKLSsgIHN0cnVjdCBhZGRyaW5mbyBoaW50Owot KyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsKLSsKLSsgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVv ZiAoaGludCkpOwotKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVm b3JlIHdlIHNob3VsZCB1c2UKLSsgICAgIEFGX1VOU1BFQy4gICovCi0rICBoaW50LmFpX2ZhbWls eSA9IEFGX1VOU1BFQzsKLSsgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKLSsgIGhp bnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKLSsKLSsgIHBhcnNlZF9jb25uZWN0aW9uX3Nw ZWMgcGFyc2VkCi0rICAgID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChu YW1lLCAmaGludCk7Ci0rCi0rICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQotICAgICB7 Ci0gICAgICAgY3MudHJhbnNwb3J0X2lzX3JlbGlhYmxlID0gMDsKLSAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAKLS0gIHBvcnQgPSBzdHJ0b3VsIChwb3J0X3N0ciArIDEsICZwb3J0X2VuZCwgMTAp OwotLSAgaWYgKHBvcnRfc3RyWzFdID09ICdcMCcgfHwgKnBvcnRfZW5kICE9ICdcMCcpCi0tICAg IGVycm9yICgiQmFkIHBvcnQgYXJndW1lbnQ6ICVzIiwgbmFtZSk7Ci0tCi0gI2lmZGVmIFVTRV9X SU4zMkFQSQotICAgaWYgKCF3aW5zb2NrX2luaXRpYWxpemVkKQotICAgICB7Ci1AQCAtMjU5LDgg KzI3NywyNiBAQCByZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgICAgfQotICNl bmRpZgotIAotLSAgbGlzdGVuX2Rlc2MgPSBzb2NrZXQgKFBGX0lORVQsIFNPQ0tfU1RSRUFNLCBJ UFBST1RPX1RDUCk7Ci0tICBpZiAobGlzdGVuX2Rlc2MgPT0gLTEpCi0rICBpbnQgciA9IGdldGFk ZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBhcnNlZC5wb3J0X3N0ci5jX3N0ciAo KSwKLSsJCSAgICAgICAmaGludCwgJmFpbmZvKTsKLSsKLSsgIGlmIChyICE9IDApCi0rICAgIGVy cm9yIChfKCIlczogY2Fubm90IHJlc29sdmUgbmFtZTogJXMiKSwgbmFtZSwgZ2FpX3N0cmVycm9y IChyKSk7Ci0rCi0rICBzY29wZWRfZnJlZV9hZGRyaW5mbyBmcmVlYWRkcmluZm8gKGFpbmZvKTsK LSsKLSsgIHN0cnVjdCBhZGRyaW5mbyAqaXRlcjsKLSsKLSsgIGZvciAoaXRlciA9IGFpbmZvOyBp dGVyICE9IE5VTEw7IGl0ZXIgPSBpdGVyLT5haV9uZXh0KQotKyAgICB7Ci0rICAgICAgbGlzdGVu X2Rlc2MgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKGl0ZXItPmFpX2ZhbWlseSwgaXRlci0+YWlfc29j a3R5cGUsCi0rCQkJCQlpdGVyLT5haV9wcm90b2NvbCk7Ci0rCi0rICAgICAgaWYgKGxpc3Rlbl9k ZXNjID49IDApCi0rCWJyZWFrOwotKyAgICB9Ci0rCi0rICBpZiAoaXRlciA9PSBOVUxMKQotICAg ICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3Qgb3BlbiBzb2NrZXQiKTsKLSAKLSAgIC8qIEFsbG93 IHJhcGlkIHJldXNlIG9mIHRoaXMgcG9ydC4gKi8KLUBAIC0yNjgsMTQgKzMwNCwyNSBAQCByZW1v dGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgIHNldHNvY2tvcHQgKGxpc3Rlbl9kZXNj LCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIChjaGFyICopICZ0bXAsCi0gCSAgICAgIHNpemVv ZiAodG1wKSk7Ci0gCi0tICBzb2NrYWRkci5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKLS0gIHNvY2th ZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwotLSAgc29ja2FkZHIuc2luX2FkZHIuc19hZGRy ID0gSU5BRERSX0FOWTsKLSsgIHN3aXRjaCAoaXRlci0+YWlfZmFtaWx5KQotKyAgICB7Ci0rICAg IGNhc2UgQUZfSU5FVDoKLSsgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSBpdGVyLT5haV9h ZGRyKS0+c2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKLSsgICAgICBicmVhazsKLSsgICAg Y2FzZSBBRl9JTkVUNjoKLSsgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgaXRlci0+YWlf YWRkciktPnNpbjZfYWRkciA9IGluNmFkZHJfYW55OwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZh dWx0OgotKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAg ICBfKCJJbnZhbGlkICdhaV9mYW1pbHknICVkXG4iKSwgaXRlci0+YWlfZmFtaWx5KTsKLSsgICAg fQotIAotLSAgaWYgKGJpbmQgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2Nr YWRkciwgc2l6ZW9mIChzb2NrYWRkcikpCi0tICAgICAgfHwgbGlzdGVuIChsaXN0ZW5fZGVzYywg MSkpCi0rICBpZiAoYmluZCAobGlzdGVuX2Rlc2MsIGl0ZXItPmFpX2FkZHIsIGl0ZXItPmFpX2Fk ZHJsZW4pICE9IDApCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJlc3Mi KTsKLSAKLSsgIGlmIChsaXN0ZW4gKGxpc3Rlbl9kZXNjLCAxKSAhPSAwKQotKyAgICBwZXJyb3Jf d2l0aF9uYW1lICgiQ2FuJ3QgbGlzdGVuIG9uIHNvY2tldCIpOwotKwotICAgY3MudHJhbnNwb3J0 X2lzX3JlbGlhYmxlID0gMTsKLSB9Ci0gCi1AQCAtMzUwLDE4ICszOTcsMjQgQEAgcmVtb3RlX29w ZW4gKGNvbnN0IGNoYXIgKm5hbWUpCi0gI2VuZGlmIC8qIFVTRV9XSU4zMkFQSSAqLwotICAgZWxz ZQotICAgICB7Ci0tICAgICAgaW50IHBvcnQ7Ci0tICAgICAgc29ja2xlbl90IGxlbjsKLS0gICAg ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7Ci0tCi0tICAgICAgbGVuID0gc2l6ZW9mIChz b2NrYWRkcik7Ci0tICAgICAgaWYgKGdldHNvY2tuYW1lIChsaXN0ZW5fZGVzYywKLS0JCSAgICAg ICAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbikgPCAwCi0tCSAgfHwgbGVuIDwg c2l6ZW9mIChzb2NrYWRkcikpCi0rICAgICAgY2hhciBsaXN0ZW5fcG9ydFtHREJfTklfTUFYX1BP UlRdOwotKyAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOwotKyAgICAgIHNv Y2tsZW5fdCBsZW4gPSBzaXplb2YgKHNvY2thZGRyKTsKLSsKLSsgICAgICBpZiAoZ2V0c29ja25h bWUgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxlbikgPCAw KQotIAlwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgZGV0ZXJtaW5lIHBvcnQiKTsKLS0gICAgICBw b3J0ID0gbnRvaHMgKHNvY2thZGRyLnNpbl9wb3J0KTsKLSAKLS0gICAgICBmcHJpbnRmIChzdGRl cnIsICJMaXN0ZW5pbmcgb24gcG9ydCAlZFxuIiwgcG9ydCk7Ci0rICAgICAgaW50IHIgPSBnZXRu YW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIGxlbiwKLSsJCQkgICBOVUxM LCAwLAotKwkJCSAgIGxpc3Rlbl9wb3J0LCBzaXplb2YgKGxpc3Rlbl9wb3J0KSwKLSsJCQkgICBO SV9OVU1FUklDU0VSVik7Ci0rCi0rICAgICAgaWYgKHIgIT0gMCkKLSsJZnByaW50ZiAoc3RkZXJy LCBfKCJDYW4ndCBvYnRhaW4gcG9ydCB3aGVyZSB3ZSBhcmUgbGlzdGVuaW5nOiAlcyIpLAotKwkJ IGdhaV9zdHJlcnJvciAocikpOwotKyAgICAgIGVsc2UKLSsJZnByaW50ZiAoc3RkZXJyLCBfKCJM aXN0ZW5pbmcgb24gcG9ydCAlc1xuIiksIGxpc3Rlbl9wb3J0KTsKLSsKLSAgICAgICBmZmx1c2gg KHN0ZGVycik7Ci0gCi0gICAgICAgLyogUmVnaXN0ZXIgdGhlIGV2ZW50IGxvb3AgaGFuZGxlci4g ICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Nlci10Y3AuYyBiL2dkYi9zZXItdGNwLmMKLS0tLSBhL2dk Yi9zZXItdGNwLmMKLSsrKyBiL2dkYi9zZXItdGNwLmMKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2lu Y2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgot ICNpbmNsdWRlICJmaWxlc3R1ZmYuaCIKLSsjaW5jbHVkZSAibmV0c3R1ZmYuaCIKLSAKLSAjaW5j bHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi1AQCAtMzksNiArNDAsNyBAQAotIAotICNpZmRlZiBVU0Vf V0lOMzJBUEkKLSAjaW5jbHVkZSA8d2luc29jazIuaD4KLSsjaW5jbHVkZSA8d3NwaWFwaS5oPgot ICNpZm5kZWYgRVRJTUVET1VUCi0gI2RlZmluZSBFVElNRURPVVQgV1NBRVRJTUVET1VUCi0gI2Vu ZGlmCi1AQCAtODEsMTIgKzgzLDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGNwX3JldHJ5X2xp bWl0ID0gMTU7Ci0gCi0gI2RlZmluZSBQT0xMX0lOVEVSVkFMIDUKLSAKLS0vKiBIZWxwZXIgZnVu Y3Rpb24gdG8gd2FpdCBhIHdoaWxlLiAgSWYgU0NCIGlzIG5vbi1udWxsLCB3YWl0IG9uIGl0cwot LSAgIGZpbGUgZGVzY3JpcHRvci4gIE90aGVyd2lzZSBqdXN0IHdhaXQgb24gYSB0aW1lb3V0LCB1 cGRhdGluZyAqUE9MTFMuCi0tICAgUmV0dXJucyAtMSBvbiB0aW1lb3V0IG9yIGludGVycnVwdCwg b3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiBzZWxlY3QuICAqLwotKy8qIEhlbHBlciBmdW5jdGlvbiB0 byB3YWl0IGEgd2hpbGUuICBJZiBTT0NLIGlzIG5vdCAtMSwgd2FpdCBvbiBpdHMKLSsgICBmaWxl IGRlc2NyaXB0b3IuICBPdGhlcndpc2UganVzdCB3YWl0IG9uIGEgdGltZW91dCwgdXBkYXRpbmcK LSsgICAqUE9MTFMuICBSZXR1cm5zIC0xIG9uIHRpbWVvdXQgb3IgaW50ZXJydXB0LCBvdGhlcndp c2UgdGhlIHZhbHVlIG9mCi0rICAgc2VsZWN0LiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0td2FpdF9m b3JfY29ubmVjdCAoc3RydWN0IHNlcmlhbCAqc2NiLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQotK3dh aXRfZm9yX2Nvbm5lY3QgKGludCBzb2NrLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQotIHsKLSAgIHN0 cnVjdCB0aW1ldmFsIHQ7Ci0gICBpbnQgbjsKLUBAIC0xMjAsMjQgKzEyMywyNCBAQCB3YWl0X2Zv cl9jb25uZWN0IChzdHJ1Y3Qgc2VyaWFsICpzY2IsIHVuc2lnbmVkIGludCAqcG9sbHMpCi0gICAg ICAgdC50dl91c2VjID0gMDsKLSAgICAgfQotIAotLSAgaWYgKHNjYikKLSsgIGlmIChzb2NrID49 IDApCi0gICAgIHsKLSAgICAgICBmZF9zZXQgcnNldCwgd3NldCwgZXNldDsKLSAKLSAgICAgICBG RF9aRVJPICgmcnNldCk7Ci0tICAgICAgRkRfU0VUIChzY2ItPmZkLCAmcnNldCk7Ci0rICAgICAg RkRfU0VUIChzb2NrLCAmcnNldCk7Ci0gICAgICAgd3NldCA9IHJzZXQ7Ci0gICAgICAgZXNldCA9 IHJzZXQ7Ci0tCSAgCi0rCi0gICAgICAgLyogUE9TSVggc3lzdGVtcyByZXR1cm4gY29ubmVjdGlv biBzdWNjZXNzIG9yIGZhaWx1cmUgYnkgc2lnbmFsbGluZwotIAkgd3NldC4gIFdpbmRvd3Mgc3lz dGVtcyByZXR1cm4gc3VjY2VzcyBpbiB3c2V0IGFuZCBmYWlsdXJlIGluCi0gCSBlc2V0LgotLSAg ICAgCi0rCi0gCSBXZSBtdXN0IGNhbGwgc2VsZWN0IGhlcmUsIHJhdGhlciB0aGFuIGdkYl9zZWxl Y3QsIGJlY2F1c2UKLSAJIHRoZSBzZXJpYWwgc3RydWN0dXJlIGhhcyBub3QgeWV0IGJlZW4gaW5p dGlhbGl6ZWQgLSB0aGUKLSAJIE1pbkdXIHNlbGVjdCB3cmFwcGVyIHdpbGwgbm90IGtub3cgdGhh dCB0aGlzIEZEIHJlZmVycwotIAkgdG8gYSBzb2NrZXQuICAqLwotLSAgICAgIG4gPSBzZWxlY3Qg KHNjYi0+ZmQgKyAxLCAmcnNldCwgJndzZXQsICZlc2V0LCAmdCk7Ci0rICAgICAgbiA9IHNlbGVj dCAoc29jayArIDEsICZyc2V0LCAmd3NldCwgJmVzZXQsICZ0KTsKLSAgICAgfQotICAgZWxzZQot ICAgICAvKiBVc2UgZ2RiX3NlbGVjdCBoZXJlLCBzaW5jZSB3ZSBoYXZlIG5vIGZpbGUgZGVzY3Jp cHRvcnMsIGFuZCBvbgotQEAgLTE1Myw4MCArMTU2LDI4IEBAIHdhaXRfZm9yX2Nvbm5lY3QgKHN0 cnVjdCBzZXJpYWwgKnNjYiwgdW5zaWduZWQgaW50ICpwb2xscykKLSAgIHJldHVybiBuOwotIH0K LSAKLS0vKiBPcGVuIGEgdGNwIHNvY2tldC4gICovCi0rLyogVHJ5IHRvIGNvbm5lY3QgdG8gdGhl IGhvc3QgcmVwcmVzZW50ZWQgYnkgQUlORk8uICBJZiB0aGUgY29ubmVjdGlvbgotKyAgIHN1Y2Nl ZWRzLCByZXR1cm4gaXRzIHNvY2tldC4gIE90aGVyd2lzZSwgcmV0dXJuIC0xIGFuZCBzZXQgRVJS Tk8KLSsgICBhY2NvcmRpbmdseS4gIFBPTExTIGlzIHVzZWQgd2hlbiAnY29ubmVjdCcgcmV0dXJu cyBFSU5QUk9HUkVTUywgYW5kCi0rICAgd2UgbmVlZCB0byBpbnZva2UgJ3dhaXRfZm9yX2Nvbm5l Y3QnIHRvIG9idGFpbiB0aGUgc3RhdHVzLiAgKi8KLSAKLS1pbnQKLS1uZXRfb3BlbiAoc3RydWN0 IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQotK3N0YXRpYyBpbnQKLSt0cnlfY29ubmVj dCAoY29uc3Qgc3RydWN0IGFkZHJpbmZvICphaW5mbywgdW5zaWduZWQgaW50ICpwb2xscykKLSB7 Ci0tICBjaGFyIGhvc3RuYW1lWzEwMF07Ci0tICBjb25zdCBjaGFyICpwb3J0X3N0cjsKLS0gIGlu dCBuLCBwb3J0LCB0bXA7Ci0tICBpbnQgdXNlX3VkcDsKLS0gIHN0cnVjdCBob3N0ZW50ICpob3N0 ZW50OwotLSAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOwotLSNpZmRlZiBVU0VfV0lOMzJB UEkKLS0gIHVfbG9uZyBpb2FyZzsKLS0jZWxzZQotLSAgaW50IGlvYXJnOwotLSNlbmRpZgotLSAg dW5zaWduZWQgaW50IHBvbGxzID0gMDsKLS0KLS0gIHVzZV91ZHAgPSAwOwotLSAgaWYgKHN0YXJ0 c3dpdGggKG5hbWUsICJ1ZHA6IikpCi0tICAgIHsKLS0gICAgICB1c2VfdWRwID0gMTsKLS0gICAg ICBuYW1lID0gbmFtZSArIDQ7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKHN0YXJ0c3dpdGggKG5hbWUs ICJ0Y3A6IikpCi0tICAgIG5hbWUgPSBuYW1lICsgNDsKLS0KLS0gIHBvcnRfc3RyID0gc3RyY2hy IChuYW1lLCAnOicpOwotLQotLSAgaWYgKCFwb3J0X3N0cikKLS0gICAgZXJyb3IgKF8oIm5ldF9v cGVuOiBObyBjb2xvbiBpbiBob3N0IG5hbWUhIikpOyAgLyogU2hvdWxkbid0IGV2ZXIKLS0JCQkJ CQkgICAgICAgaGFwcGVuLiAgKi8KLS0KLS0gIHRtcCA9IHN0ZDo6bWluIChwb3J0X3N0ciAtIG5h bWUsIChwdHJkaWZmX3QpIHNpemVvZiBob3N0bmFtZSAtIDEpOwotLSAgc3RybmNweSAoaG9zdG5h bWUsIG5hbWUsIHRtcCk7CS8qIERvbid0IHdhbnQgY29sb24uICAqLwotLSAgaG9zdG5hbWVbdG1w XSA9ICdcMDAwJzsJLyogVGllIG9mZiBob3N0IG5hbWUuICAqLwotLSAgcG9ydCA9IGF0b2kgKHBv cnRfc3RyICsgMSk7Ci0tCi0tICAvKiBEZWZhdWx0IGhvc3RuYW1lIGlzIGxvY2FsaG9zdC4gICov Ci0tICBpZiAoIWhvc3RuYW1lWzBdKQotLSAgICBzdHJjcHkgKGhvc3RuYW1lLCAibG9jYWxob3N0 Iik7Ci0tCi0tICBob3N0ZW50ID0gZ2V0aG9zdGJ5bmFtZSAoaG9zdG5hbWUpOwotLSAgaWYgKCFo b3N0ZW50KQotLSAgICB7Ci0tICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLCAi JXM6IHVua25vd24gaG9zdFxuIiwgaG9zdG5hbWUpOwotLSAgICAgIGVycm5vID0gRU5PRU5UOwot LSAgICAgIHJldHVybiAtMTsKLS0gICAgfQotKyAgaW50IHNvY2sgPSBnZGJfc29ja2V0X2Nsb2V4 ZWMgKGFpbmZvLT5haV9mYW1pbHksIGFpbmZvLT5haV9zb2NrdHlwZSwKLSsJCQkJIGFpbmZvLT5h aV9wcm90b2NvbCk7Ci0gCi0tICBzb2NrYWRkci5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKLS0gIHNv Y2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwotLSAgbWVtY3B5ICgmc29ja2FkZHIuc2lu X2FkZHIuc19hZGRyLCBob3N0ZW50LT5oX2FkZHIsCi0tCSAgc2l6ZW9mIChzdHJ1Y3QgaW5fYWRk cikpOwotLQotLSByZXRyeToKLS0KLS0gIGlmICh1c2VfdWRwKQotLSAgICBzY2ItPmZkID0gZ2Ri X3NvY2tldF9jbG9leGVjIChQRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKLS0gIGVsc2UKLS0gICAg c2NiLT5mZCA9IGdkYl9zb2NrZXRfY2xvZXhlYyAoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwot LQotLSAgaWYgKHNjYi0+ZmQgPT0gLTEpCi0rICBpZiAoc29jayA8IDApCi0gICAgIHJldHVybiAt MTsKLS0gIAotKwotICAgLyogU2V0IHNvY2tldCBub25ibG9ja2luZy4gICovCi0tICBpb2FyZyA9 IDE7Ci0tICBpb2N0bCAoc2NiLT5mZCwgRklPTkJJTywgJmlvYXJnKTsKLSsgIGludCBpb2FyZyA9 IDE7Ci0rCi0rICBpb2N0bCAoc29jaywgRklPTkJJTywgJmlvYXJnKTsKLSAKLSAgIC8qIFVzZSBO b24tYmxvY2tpbmcgY29ubmVjdC4gIGNvbm5lY3QoKSB3aWxsIHJldHVybiAwIGlmIGNvbm5lY3Rl ZAotICAgICAgYWxyZWFkeS4gICovCi0tICBuID0gY29ubmVjdCAoc2NiLT5mZCwgKHN0cnVjdCBz b2NrYWRkciAqKSAmc29ja2FkZHIsIHNpemVvZiAoc29ja2FkZHIpKTsKLS0KLS0gIGlmIChuIDwg MCkKLSsgIGlmIChjb25uZWN0IChzb2NrLCBhaW5mby0+YWlfYWRkciwgYWluZm8tPmFpX2FkZHJs ZW4pIDwgMCkKLSAgICAgewotICNpZmRlZiBVU0VfV0lOMzJBUEkKLSAgICAgICBpbnQgZXJyID0g V1NBR2V0TGFzdEVycm9yKCk7Ci1AQCAtMjM0LDIxICsxODUsMjYgQEAgbmV0X29wZW4gKHN0cnVj dCBzZXJpYWwgKnNjYiwgY29uc3QgY2hhciAqbmFtZSkKLSAgICAgICBpbnQgZXJyID0gZXJybm87 Ci0gI2VuZGlmCi0gCi0tICAgICAgLyogTWF5YmUgd2UncmUgd2FpdGluZyBmb3IgdGhlIHJlbW90 ZSB0YXJnZXQgdG8gYmVjb21lIHJlYWR5IHRvCi0tCSBhY2NlcHQgY29ubmVjdGlvbnMuICAqLwot LSAgICAgIGlmICh0Y3BfYXV0b19yZXRyeQotKyAgICAgIC8qIElmIHdlJ3ZlIGdvdCBhICJjb25u ZWN0aW9uIHJlZnVzZWQiIGVycm9yLCBqdXN0IHJldHVybgotKwkgLTEuICBUaGUgY2FsbGVyIHdp bGwga25vdyB3aGF0IHRvIGRvLiAgKi8KLSsgICAgICBpZiAoCi0gI2lmZGVmIFVTRV9XSU4zMkFQ SQotLQkgICYmIGVyciA9PSBXU0FFQ09OTlJFRlVTRUQKLSsJICBlcnIgPT0gV1NBRUNPTk5SRUZV U0VECi0gI2Vsc2UKLS0JICAmJiBlcnIgPT0gRUNPTk5SRUZVU0VECi0rCSAgZXJyID09IEVDT05O UkVGVVNFRAotICNlbmRpZgotLQkgICYmIHdhaXRfZm9yX2Nvbm5lY3QgKE5VTEwsICZwb2xscykg Pj0gMCkKLSsJICApCi0gCXsKLS0JICBjbG9zZSAoc2NiLT5mZCk7Ci0tCSAgZ290byByZXRyeTsK LSsJICBjbG9zZSAoc29jayk7Ci0rCSAgZXJybm8gPSBlcnI7Ci0rCSAgcmV0dXJuIC0xOwotIAl9 Ci0gCi0gICAgICAgaWYgKAotKwkgIC8qIEFueSBvdGhlciBlcnJvciAoZXhjZXB0IEVJTlBST0dS RVNTKSB3aWxsIGJlICJzd2FsbG93ZWQiCi0rCSAgICAgaGVyZS4gIFdlIHJldHVybiB3aXRob3V0 IHNwZWNpZnlpbmcgYSByZXR1cm4gdmFsdWUsIGFuZAotKwkgICAgIHNldCBlcnJubyBpZiB0aGUg Y2FsbGVyIHdhbnRzIHRvIGluc3BlY3Qgd2hhdAotKwkgICAgIGhhcHBlbmVkLiAgKi8KLSAjaWZk ZWYgVVNFX1dJTjMyQVBJCi0gCSAgLyogVW5kZXIgV2luZG93cywgY2FsbGluZyAiY29ubmVjdCIg d2l0aCBhIG5vbi1ibG9ja2luZyBzb2NrZXQKLSAJICAgICByZXN1bHRzIGluIFdTQUVXT1VMREJM T0NLLCBub3QgV1NBRUlOUFJPR1JFU1MuICAqLwotQEAgLTI1OCw2NiArMjE0LDE2NiBAQCBuZXRf b3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQotICNlbmRpZgotIAkg ICkKLSAJewotKwkgIGNsb3NlIChzb2NrKTsKLSAJICBlcnJubyA9IGVycjsKLS0JICBuZXRfY2xv c2UgKHNjYik7Ci0gCSAgcmV0dXJuIC0xOwotIAl9Ci0gCi0gICAgICAgLyogTG9va3MgbGlrZSB3 ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0LiAgKi8KLS0gICAgICBkbyAKLS0JewotLQkg IG4gPSB3YWl0X2Zvcl9jb25uZWN0IChzY2IsICZwb2xscyk7Ci0tCX0gCi0rICAgICAgaW50IG47 Ci0rCi0rICAgICAgZG8KLSsJbiA9IHdhaXRfZm9yX2Nvbm5lY3QgKHNvY2ssIHBvbGxzKTsKLSAg ICAgICB3aGlsZSAobiA9PSAwKTsKLSsKLSAgICAgICBpZiAobiA8IDApCi0gCXsKLS0JICBuZXRf Y2xvc2UgKHNjYik7Ci0rCSAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87Ci0rCi0rCSAgLyogQSBu ZWdhdGl2ZSB2YWx1ZSBoZXJlIG1lYW5zIHRoYXQgd2UgZWl0aGVyIHRpbWVkIG91dCBvcgotKwkg ICAgIGdvdCBpbnRlcnJ1cHRlZCBieSB0aGUgdXNlci4gIEp1c3QgcmV0dXJuLiAgKi8KLSsJICBj bG9zZSAoc29jayk7Ci0rCSAgZXJybm8gPSBzYXZlZF9lcnJubzsKLSAJICByZXR1cm4gLTE7Ci0g CX0KLSAgICAgfQotIAotICAgLyogR290IHNvbWV0aGluZy4gIElzIGl0IGFuIGVycm9yPyAgKi8K LS0gIHsKLS0gICAgaW50IHJlcywgZXJyOwotLSAgICBzb2NrbGVuX3QgbGVuOwotLQotLSAgICBs ZW4gPSBzaXplb2YgKGVycik7Ci0tICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBmb3VydGggcGFyYW1l dGVyIHRvIGdldHNvY2tvcHQgaXMgYSAiY2hhciAqIjsKLS0gICAgICAgb24gVU5JWCBzeXN0ZW1z IGl0IGlzIGdlbmVyYWxseSAidm9pZCAqIi4gIFRoZSBjYXN0IHRvICJjaGFyICoiCi0tICAgICAg IGlzIE9LIGV2ZXJ5d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0YSBwb2ludGVyIHR5cGUgY2Fu IGJlCi0tICAgICAgIGltcGxpY2l0bHkgY29udmVydGVkIHRvICJ2b2lkICoiLiAgKi8KLS0gICAg cmVzID0gZ2V0c29ja29wdCAoc2NiLT5mZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsIChjaGFyICop ICZlcnIsICZsZW4pOwotLSAgICBpZiAocmVzIDwgMCB8fCBlcnIpCi0tICAgICAgewotLQkvKiBN YXliZSB0aGUgdGFyZ2V0IHN0aWxsIGlzbid0IHJlYWR5IHRvIGFjY2VwdCB0aGUgY29ubmVjdGlv bi4gICovCi0tCWlmICh0Y3BfYXV0b19yZXRyeQotKyAgaW50IGVycjsKLSsgIHNvY2tsZW5fdCBs ZW4gPSBzaXplb2YgKGVycik7Ci0rCi0rICAvKiBPbiBXaW5kb3dzLCB0aGUgZm91cnRoIHBhcmFt ZXRlciB0byBnZXRzb2Nrb3B0IGlzIGEgImNoYXIgKiI7Ci0rICAgICBvbiBVTklYIHN5c3RlbXMg aXQgaXMgZ2VuZXJhbGx5ICJ2b2lkICoiLiAgVGhlIGNhc3QgdG8gImNoYXIgKiIKLSsgICAgIGlz IE9LIGV2ZXJ5d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0YSBwb2ludGVyIHR5cGUgY2FuIGJl Ci0rICAgICBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byAidm9pZCAqIi4gICovCi0rICBpbnQgcmV0 ID0gZ2V0c29ja29wdCAoc29jaywgU09MX1NPQ0tFVCwgU09fRVJST1IsIChjaGFyICopICZlcnIs ICZsZW4pOwotKwotKyAgaWYgKHJldCA8IDApCi0rICAgIHsKLSsgICAgICBpbnQgc2F2ZWRfZXJy bm8gPSBlcnJubzsKLSsKLSsgICAgICBjbG9zZSAoc29jayk7Ci0rICAgICAgZXJybm8gPSBzYXZl ZF9lcnJubzsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJldCA9PSAw ICYmIGVyciAhPSAwKQotKyAgICB7Ci0rICAgICAgY2xvc2UgKHNvY2spOwotKyAgICAgIGVycm5v ID0gZXJyOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgLyogVGhlIGNvbm5lY3Rp b24gc3VjY2VlZGVkLiAgUmV0dXJuIHRoZSBzb2NrZXQuICAqLwotKyAgcmV0dXJuIHNvY2s7Ci0r fQotKwotKy8qIE9wZW4gYSB0Y3Agc29ja2V0LiAgKi8KLSsKLStpbnQKLStuZXRfb3BlbiAoc3Ry dWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHN0cnVjdCBhZGRyaW5m byBoaW50OwotKyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsKLSsKLSsgIG1lbXNldCAoJmhpbnQs IDAsIHNpemVvZiAoaGludCkpOwotKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3Nl ZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKLSsgICAgIEFGX1VOU1BFQy4gICovCi0rICBoaW50 LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKLSsgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVB TTsKLSsgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKLSsKLSsgIHBhcnNlZF9jb25u ZWN0aW9uX3NwZWMgcGFyc2VkID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChuYW1lLCAmaGludCk7 Ci0rCi0rICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQotKyAgICBlcnJvciAoXygiTWlz c2luZyBwb3J0IG9uIGhvc3RuYW1lICclcyciKSwgbmFtZSk7Ci0rCi0rICBpbnQgciA9IGdldGFk ZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksCi0rCQkgICAgICAgcGFyc2VkLnBvcnRf c3RyLmNfc3RyICgpLAotKwkJICAgICAgICZoaW50LCAmYWluZm8pOwotKwotKyAgaWYgKHIgIT0g MCkKLSsgICAgewotKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgXygiJXM6 IGNhbm5vdCByZXNvbHZlIG5hbWU6ICVzXG4iKSwKLSsJCQkgIG5hbWUsIGdhaV9zdHJlcnJvciAo cikpOwotKyAgICAgIGVycm5vID0gRU5PRU5UOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQot KwotKyAgc2NvcGVkX2ZyZWVfYWRkcmluZm8gZnJlZV9haW5mbyAoYWluZm8pOwotKwotKyAgLyog RmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlJ3ZlIGdvdCBhIGNvbm5lY3Rpb24gcmVmdXNlZC4g IEl0IHdpbGwKLSsgICAgIGJlIHRydWUgaWYgYW55IG9mIHRoZSBjb25uZWN0aW9ucyB0cmllZCB3 YXMgcmVmdXNlZC4gICovCi0rICBib29sIGdvdF9jb25ucmVmdXNlZDsKLSsgIC8qIElmIGEgY29u bmVjdGlvbiBzdWNjZWVlZHMsIFNVQ0NFU1NfQUlORk8gd2lsbCBwb2ludCB0byB0aGUKLSsgICAg ICdzdHJ1Y3QgYWRkcmluZm8nIHRoYXQgc3VjY2VlZC4gICovCi0rICBzdHJ1Y3QgYWRkcmluZm8g KnN1Y2Nlc3NfYWluZm8gPSBOVUxMOwotKyAgdW5zaWduZWQgaW50IHBvbGxzID0gMDsKLSsKLSsg IC8qIEFzc3VtZSB0aGUgd29yc3QuICAqLwotKyAgc2NiLT5mZCA9IC0xOwotKwotKyAgZG8KLSsg ICAgewotKyAgICAgIGdvdF9jb25ucmVmdXNlZCA9IGZhbHNlOwotKwotKyAgICAgIGZvciAoc3Ry dWN0IGFkZHJpbmZvICppdGVyID0gYWluZm87IGl0ZXIgIT0gTlVMTDsgaXRlciA9IGl0ZXItPmFp X25leHQpCi0rCXsKLSsJICAvKiBJdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcG9zc2libGUgYWRk cmVzc2VzIHRvIGNvbm5lY3QKLSsJICAgICB0by4gIEZvciBlYWNoLCB3ZSdsbCB0cnkgdG8gY29u bmVjdCBhbmQgc2VlIGlmIGl0Ci0rCSAgICAgc3VjY2VlZHMuICAqLwotKwkgIGludCBzb2NrID0g dHJ5X2Nvbm5lY3QgKGl0ZXIsICZwb2xscyk7Ci0rCi0rCSAgaWYgKHNvY2sgPj0gMCkKLSsJICAg IHsKLSsJICAgICAgLyogV2UndmUgZ290dGVuIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uLiAgU2F2 ZSBpdHMKLSsJCSAnc3RydWN0IGFkZHJpbmZvJywgdGhlIHNvY2tldCwgYW5kIGJyZWFrLiAgKi8K LSsJICAgICAgc3VjY2Vzc19haW5mbyA9IGl0ZXI7Ci0rCSAgICAgIHNjYi0+ZmQgPSBzb2NrOwot KwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJICBlbHNlIGlmICgKLSAjaWZkZWYgVVNFX1dJTjMy QVBJCi0tCSAgICAmJiBlcnIgPT0gV1NBRUNPTk5SRUZVU0VECi0rCSAgZXJybm8gPT0gV1NBRUNP Tk5SRUZVU0VECi0gI2Vsc2UKLS0JICAgICYmIGVyciA9PSBFQ09OTlJFRlVTRUQKLSsJICBlcnJu byA9PSBFQ09OTlJFRlVTRUQKLSAjZW5kaWYKLS0JICAgICYmIHdhaXRfZm9yX2Nvbm5lY3QgKE5V TEwsICZwb2xscykgPj0gMCkKLS0JICB7Ci0tCSAgICBjbG9zZSAoc2NiLT5mZCk7Ci0tCSAgICBn b3RvIHJldHJ5OwotLQkgIH0KLS0JaWYgKGVycikKLS0JICBlcnJubyA9IGVycjsKLS0JbmV0X2Ns b3NlIChzY2IpOwotLQlyZXR1cm4gLTE7Ci0tICAgICAgfQotLSAgfSAKLSsJCSAgICkKLSsJICAg IGdvdF9jb25ucmVmdXNlZCA9IHRydWU7Ci0rCX0KLSsgICAgfQotKyAgLyogSnVzdCByZXRyeSBp ZjoKLSsKLSsgICAgIC0gdGNwX2F1dG9fcmV0cnkgaXMgdHJ1ZSwgYW5kCi0rICAgICAtIFdlIGhh dmVuJ3QgZ290dGVuIGEgY29ubmVjdGlvbiB5ZXQsIGFuZAotKyAgICAgLSBBbnkgb2Ygb3VyIGNv bm5lY3Rpb24gYXR0ZW1wdHMgcmV0dXJuZWQgd2l0aCBFQ09OTlJFRlVTRUQsIGFuZAotKyAgICAg LSB3YWl0X2Zvcl9jb25uZWN0IHNpZ25hbHMgdGhhdCB3ZSBjYW4ga2VlcCBnb2luZy4gICovCi0r ICB3aGlsZSAodGNwX2F1dG9fcmV0cnkKLSsJICYmIHN1Y2Nlc3NfYWluZm8gPT0gTlVMTAotKwkg JiYgZ290X2Nvbm5yZWZ1c2VkCi0rCSAmJiB3YWl0X2Zvcl9jb25uZWN0ICgtMSwgJnBvbGxzKSA+ PSAwKTsKLSsKLSsgIGlmIChzdWNjZXNzX2FpbmZvID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBu ZXRfY2xvc2UgKHNjYik7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0gCi0gICAvKiBUdXJu IG9mZiBub25ibG9ja2luZy4gICovCi0tICBpb2FyZyA9IDA7Ci0rI2lmZGVmIFVTRV9XSU4zMkFQ SQotKyAgdV9sb25nIGlvYXJnID0gMDsKLSsjZWxzZQotKyAgaW50IGlvYXJnID0gMDsKLSsjZW5k aWYKLSsKLSAgIGlvY3RsIChzY2ItPmZkLCBGSU9OQklPLCAmaW9hcmcpOwotIAotLSAgaWYgKHVz ZV91ZHAgPT0gMCkKLSsgIGlmIChzdWNjZXNzX2FpbmZvLT5haV9zb2NrdHlwZSA9PSBJUFBST1RP X1RDUCkKLSAgICAgewotICAgICAgIC8qIERpc2FibGUgTmFnbGUgYWxnb3JpdGhtLiAgTmVlZGVk IGluIHNvbWUgY2FzZXMuICAqLwotLSAgICAgIHRtcCA9IDE7Ci0rICAgICAgaW50IHRtcCA9IDE7 Ci0rCi0gICAgICAgc2V0c29ja29wdCAoc2NiLT5mZCwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZ LAotLQkJICAoY2hhciAqKSZ0bXAsIHNpemVvZiAodG1wKSk7Ci0rCQkgIChjaGFyICopICZ0bXAs IHNpemVvZiAodG1wKSk7Ci0gICAgIH0KLSAKLSAjaWZkZWYgU0lHUElQRQotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLS0tLSBh L2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0rKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwot QEAgLTEsMyArMSwyMyBAQAotKzIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNl cmdpb2RqQHJlZGhhdC5jb20+Ci0rCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgot KwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgotKwotKwkqIFJFQURNRSAo VGVzdHN1aXRlIFBhcmFtZXRlcnMpOiBNZW50aW9uIG5ldyAnR0RCX1RFU1RfU09DS0VUSE9TVCcK LSsJcGFyYW1ldGVyLgotKwkqIGJvYXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2VydmVyLmV4cDog RG8gbm90IHNldCAnc29ja2V0aG9zdCcKLSsJYnkgZGVmYXVsdC4KLSsJKiBib2FyZHMvbmF0aXZl LWdkYnNlcnZlci5leHA6IExpa2V3aXNlLgotKwkqIGdkYi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9j YWwtYmluYXJ5LmV4cDogSW1wcm92ZSByZWdleHAgdXNlZAotKwlmb3IgZGV0ZWN0aW5nIHdoZW4g YSByZW1vdGUgZGVidWdnaW5nIGNvbm5lY3Rpb24gc3VjY2VlZHMuCi0rCSogZ2RiLnNlcnZlci9z ZXJ2ZXItY29ubmVjdC5leHA6IE5ldyBmaWxlLgotKwkqIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5l eHAgKGdkYnNlcnZlcl9kZWZhdWx0X2dldF9jb21tX3BvcnQpOgotKwlEbyBub3QgcHJlZml4IHRo ZSBwb3J0IG51bWJlciB3aXRoICI6Ii4KLSsJKGdkYnNlcnZlcl9zdGFydCk6IE5ldyBnbG9iYWwg R0RCX1RFU1RfU09DS0VUSE9TVC4gIEltcGxlbWVudAotKwlzdXBwb3J0IGZvciBkZXRlY3Rpbmcg YW5kIHVzaW5nIGl0LiAgQWRkICckZGVidWdob3N0X2dkYnNlcnZlcicKLSsJdG8gdGhlIGxpc3Qg b2YgYXJndW1lbnRzIHVzZWQgdG8gc3RhcnQgZ2Ric2VydmVyLiAgSGFuZGxlIGNhc2UKLSsJd2hl biBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3b3JrIG5hbWUuCi0rCi0gMjAxOC0wNy0x MSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSAKLSAJUFIg YysrLzIzMzczCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUgYi9nZGIvdGVzdHN1 aXRlL1JFQURNRQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvUkVBRE1FCi1AQCAtMjU5LDYgKzI1OSwyMCBAQCBUaGlzIG1ha2UgKG5vdCBydW50ZXN0KSB2 YXJpYWJsZSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciB0aGUKLSB0ZXN0c3VpdGUgcHJlbG9h ZHMgdGhlIHJlYWQxLnNvIGxpYnJhcnkgaW50byBleHBlY3QuICBBbnkgbm9uLWVtcHR5Ci0gdmFs dWUgbWVhbnMgdHJ1ZS4gIFNlZSAiUmFjZSBkZXRlY3Rpb24iIGJlbG93LgotIAotK0dEQl9URVNU X1NPQ0tFVEhPU1QKLSsKLStUaGlzIHZhcmlhYmxlIGNhbiBwcm92aWRlIHRoZSBob3N0bmFtZS9h ZGRyZXNzIHRoYXQgc2hvdWxkIGJlIHVzZWQKLSt3aGVuIHBlcmZvcm1pbmcgR0RCc2VydmVyLXJl bGF0ZWQgdGVzdHMuICBUaGlzIGlzIHVzZWZ1bCBpbiBzb21lCi0rc2l0dWF0aW9ucywgZS5nLiwg d2hlbiB5b3Ugd2FudCB0byB0ZXN0IHRoZSBJUHY2IGNvbm5lY3Rpdml0eSBvZiBHREIKLSthbmQg R0RCc2VydmVyLCBvciB3aGVuIHVzaW5nIGEgZGlmZmVyZW50IGhvc3RuYW1lL2FkZHJlc3MgaXMg bmVlZGVkLgotK0ZvciBleGFtcGxlLCB0byBtYWtlIEdEQiBhbmQgR0RCc2VydmVyIHVzZSBJUHY2 LW9ubHkgY29ubmVjdGlvbnMsIHlvdQotK2NhbiBkbzoKLSsKLSsJbWFrZSBjaGVjayBURVNUUz0i Z2RiLnNlcnZlci8qLmV4cCIgUlVOVEVTVEZMQUdTPSdHREJfVEVTVF9TT0NLRVRIT1NUPXRjcDY6 Wzo6MV0nCi0rCi0rTm90ZSB0aGF0IG9ubHkgYSBob3N0bmFtZS9hZGRyZXNzIGNhbiBiZSBwcm92 aWRlZCwgd2l0aG91dCBhIHBvcnQKLStudW1iZXIuCi0rCi0gUmFjZSBkZXRlY3Rpb24KLSAqKioq KioqKioqKioqKgotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1l eHRlbmRlZC1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWV4dGVu ZGVkLWdkYnNlcnZlci5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1leHRl bmRlZC1nZGJzZXJ2ZXIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZXh0 ZW5kZWQtZ2Ric2VydmVyLmV4cAotQEAgLTI0LDggKzI0LDYgQEAgbG9hZF9nZW5lcmljX2NvbmZp ZyAiZXh0ZW5kZWQtZ2Ric2VydmVyIgotIGxvYWRfYm9hcmRfZGVzY3JpcHRpb24gImdkYnNlcnZl ci1iYXNlIgotIGxvYWRfYm9hcmRfZGVzY3JpcHRpb24gImxvY2FsLWJvYXJkIgotIAotLXNldF9i b2FyZF9pbmZvIHNvY2tldGhvc3QgImxvY2FsaG9zdDoiCi0tCi0gIyBXZSB3aWxsIGJlIHVzaW5n IHRoZSBleHRlbmRlZCBHREIgcmVtb3RlIHByb3RvY29sLgotIHNldF9ib2FyZF9pbmZvIGdkYl9w cm90b2NvbCAiZXh0ZW5kZWQtcmVtb3RlIgotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Ym9hcmRzL25hdGl2ZS1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZl LWdkYnNlcnZlci5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1nZGJzZXJ2 ZXIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cAot QEAgLTMwLDcgKzMwLDYgQEAgc2V0X2JvYXJkX2luZm8gZ2RiLGRvX3JlbG9hZF9vbl9ydW4gMQot ICMgVGhlcmUncyBubyBzdXBwb3J0IGZvciBhcmd1bWVudC1wYXNzaW5nICh5ZXQpLgotIHNldF9i b2FyZF9pbmZvIG5vYXJncyAxCi0gCi0tc2V0X2JvYXJkX2luZm8gc29ja2V0aG9zdCAibG9jYWxo b3N0OiIKLSBzZXRfYm9hcmRfaW5mbyB1c2VfZ2RiX3N0dWIgMQotIHNldF9ib2FyZF9pbmZvIGV4 aXRfaXNfcmVsaWFibGUgMQotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZl ci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVy L3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnNl cnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4cAotQEAgLTUzLDcgKzUzLDcgQEAg c2F2ZV92YXJzIHsgR0RCRkxBR1MgfSB7Ci0gICAgIHNldCB1c2VfZ2RiX3N0dWIgMAotIAotICAg ICBnZGJfdGVzdCAidGFyZ2V0ICR7Z2Ric2VydmVyX3Byb3RvY29sfSAke2dkYnNlcnZlcl9nZGJw b3J0fSIgXAotLQkiUmVtb3RlIGRlYnVnZ2luZyB1c2luZyAkZ2Ric2VydmVyX2dkYnBvcnQiIFwK LSsJIlJlbW90ZSBkZWJ1Z2dpbmcgdXNpbmcgW3N0cmluZ190b19yZWdleHAgJGdkYnNlcnZlcl9n ZGJwb3J0XSIgXAotIAkiY29ubmVjdCB0byBnZGJzZXJ2ZXIiCi0gCi0gICAgIGdkYl90ZXN0ICJy dW4iIFwKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvc2VydmVyLWNvbm5l Y3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cAotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHAKLUBAIC0wLDAgKzEsMTExIEBACi0rIyBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKyMKLSsjIENvcHlyaWdo dCAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUZXN0IG11bHRpcGxlIHR5cGVzIG9mIGNvbm5lY3Rpb24g KElQdjQsIElQdjYsIFRDUCwgVURQKSBhbmQgbWFrZQotKyMgc3VyZSBib3RoIGdkYnNlcnZlciBh bmQgR0RCIHdvcmsuCi0rCi0rbG9hZF9saWIgZ2Ric2VydmVyLXN1cHBvcnQuZXhwCi0rCi0rc3Rh bmRhcmRfdGVzdGZpbGUgbm9ybWFsLmMKLSsKLStpZiB7W3NraXBfZ2Ric2VydmVyX3Rlc3RzXX0g ewotKyAgICByZXR1cm4gMAotK30KLSsKLSsjIFdlIHdhbnQgdG8gaGF2ZSBjb250cm9sIG92ZXIg d2hlcmUgd2Ugc3RhcnQgZ2Ric2VydmVyLgotK2lmIHsgW2lzX3JlbW90ZSB0YXJnZXRdIH0gewot KyAgICByZXR1cm4gMAotK30KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQg dG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlIGRlYnVnXSB9IHsKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotKyMgTWFrZSBzdXJlIHdlJ3JlIGRpc2Nvbm5lY3RlZCwgaW4gY2FzZSB3ZSdyZSB0 ZXN0aW5nIHdpdGggYW4KLSsjIGV4dGVuZGVkLXJlbW90ZSBib2FyZCwgdGhlcmVmb3JlIGFscmVh ZHkgY29ubmVjdGVkLgotK2dkYl90ZXN0ICJkaXNjb25uZWN0IiAiLioiCi0rCi0rc2V0IHRhcmdl dF9leGVjIFtnZGJzZXJ2ZXJfZG93bmxvYWRfY3VycmVudF9wcm9nXQotKwotKyMgQW4gYXJyYXkg Y29udGFpbmluZyB0aGUgdGVzdCBpbnN0cnVjdGlvbnMgZm9yIGVhY2ggc2NlbmFyaW8uICBUaGUK LSsjIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQgaXMgYXMgZm9sbG93czoKLSsjCi0rIyAtIFRo ZSBjb25uZWN0aW9uIHNwZWNpZmljYXRpb24gdG8gYmUgdXNlZCB3aGVuIHN0YXJ0aW5nCi0rIyAg IGdkYnNlcnZlci9HREIuICBUaGlzIHN0cmluZyB3aWxsIGJlIHVzZWQgdG8gc2V0IHRoZQotKyMg ICBHREJfVEVTVF9TT0NLRVRIT1NUIHdoZW4gY2FsbGluZyBnZGJzZXJ2ZXJfc3RhcnQuCi0rIwot KyMgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGdkYnNlcnZlciBzaG91bGQgZmFpbCB3aGVu IHdlIGF0dGVtcHQgdG8KLSsjICAgc3RhcnQgaXQuICBVc2VmdWwgd2hlbiB0ZXN0aW5nIGVycm9u ZW91cyBjb25uZWN0aW9uIHNwZWNzIHN1Y2ggYXMKLSsjICAgInRjcDg6Ii4KLSsjCi0rIyAtIFRo ZSBwcmVmaXggdGhhdCBzaG91bGQgYmUgcHJlcGVuZGVkIHRvIHRoZSB0ZXN0IG1lc3NhZ2VzLgot K3NldCB0ZXN0X3BhcmFtcyBcCi0rICAgIHsgXAotKwkgIHsgInRjcDQ6MTI3LjAuMC4xIiAwICJ0 Y3A0IiB9IFwKLSsJICB7ICJ0Y3A2Ojo6MSIgICAgICAgMCAidGNwNiIgfSBcCi0rCSAgeyAidGNw NjpbOjoxXSIgICAgIDAgInRjcDYtd2l0aC1icmFja2V0cyIgfSBcCi0rCSAgeyAidGNwOmxvY2Fs aG9zdCIgIDAgInRjcCIgfSBcCi0rCSAgeyAidWRwNDoxMjcuMC4wLjEiIDAgInVkcDQiIH0gXAot KwkgIHsgInVkcDY6OjoxIiAgICAgICAwICJ1ZHA2IiB9IFwKLSsJICB7ICJ1ZHA2Ols6OjFdIiAg ICAgMCAidWRwNi13aXRoLWJyYWNrZXRzIiB9IFwKLSsJICB7ICJ0Y3A4OjEyMyIgICAgICAgMSAi dGNwOCIgfSBcCi0rCSAgeyAidWRwMTIzOjo6IiAgICAgIDEgInVkcDEyMyIgfSBcCi0rCSAgeyAi Z2FyYmFnZToxMjM0IiAgIDEgImdhcmJhZ2U6MTIzNCIgfSBcCi0rICAgIH0KLSsKLSsjIFRoZSBi ZXN0IHdheSB0byB0ZXN0IGRpZmZlcmVudCB0eXBlcyBvZiBjb25uZWN0aW9ucyBpcyB0byBzZXQg dGhlCi0rIyBHREJfVEVTVF9TT0NLRVRIT1NUIHZhcmlhYmxlIGFjY29yZGluZ2x5LgotK3NhdmVf dmFycyB7IEdEQl9URVNUX1NPQ0tFVEhPU1QgfSB7Ci0rICAgIGZvcmVhY2ggbGluZSAkdGVzdF9w YXJhbXMgewotKwlzZXQgc29ja2hvc3QgW2xpbmRleCAkbGluZSAwXQotKwlzZXQgZ2Ric2VydmVy X3Nob3VsZF9mYWlsIFtsaW5kZXggJGxpbmUgMV0KLSsJc2V0IHByZWZpeCBbbGluZGV4ICRsaW5l IDJdCi0rCi0rCXdpdGhfdGVzdF9wcmVmaXggJHByZWZpeCB7Ci0rCSAgICBzZXQgR0RCX1RFU1Rf U09DS0VUSE9TVCAkc29ja2hvc3QKLSsJICAgIHNldCB0ZXN0ICJzdGFydCBnZGJzZXJ2ZXIiCi0r Ci0rCSAgICAjIFRyeSB0byBzdGFydCBnZGJzZXJ2ZXIuCi0rCSAgICBzZXQgY2F0Y2hyZXMgW2Nh dGNoIHtzZXQgcmVzIFtnZGJzZXJ2ZXJfc3RhcnQgIiIgJHRhcmdldF9leGVjXX0gZXJybXNnXQot KwotKwkgICAgaWYgeyAkY2F0Y2hyZXMgIT0gMCB9IHsKLSsJCWlmIHsgJGdkYnNlcnZlcl9zaG91 bGRfZmFpbCB9IHsKLSsJCSAgICBwYXNzICIkdGVzdDogZ2Ric2VydmVyIGZhaWxlZCBhcyBleHBl Y3RlZCIKLSsJCX0gZWxzZSB7Ci0rCQkgICAgZmFpbCAiJHRlc3Q6ICRlcnJtc2ciCi0rCQl9Ci0r CQljb250aW51ZQotKwkgICAgfSBlbHNlIHsKLSsJCWlmIHsgJGdkYnNlcnZlcl9zaG91bGRfZmFp bCB9IHsKLSsJCSAgICBmYWlsICIkdGVzdDogZ2Ric2VydmVyIHNob3VsZCBmYWlsIGJ1dCBkaWQg bm90IgotKwkJfSBlbHNlIHsKLSsJCSAgICBwYXNzICIkdGVzdCIKLSsJCX0KLSsJICAgIH0KLSsK LSsJICAgIHNldCBnZGJzZXJ2ZXJfcHJvdG9jb2wgW2xpbmRleCAkcmVzIDBdCi0rCSAgICBzZXQg Z2Ric2VydmVyX2dkYnBvcnQgW2xpbmRleCAkcmVzIDFdCi0rCSAgICBzZXQgdGVzdCAiY29ubmVj dCB0byBnZGJzZXJ2ZXIgdXNpbmcgJHNvY2tob3N0IgotKwotKwkgICAgaWYgeyBbZ2RiX3Rhcmdl dF9jbWQgJGdkYnNlcnZlcl9wcm90b2NvbCAkZ2Ric2VydmVyX2dkYnBvcnRdID09IDAgfSB7Ci0r CQlwYXNzICR0ZXN0Ci0rCSAgICB9IGVsc2UgewotKwkJZmFpbCAkdGVzdAotKwkgICAgfQotKwl9 Ci0rICAgIH0KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1 cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwCi0tLS0g YS9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cAotQEAgLTIxMSw3ICsyMTEsNyBAQCBwcm9j IGdkYnNlcnZlcl9kZWZhdWx0X2dldF9yZW1vdGVfYWRkcmVzcyB7IGhvc3QgcG9ydCB9IHsKLSAj IERlZmF1bHQgcm91dGluZSB0byBjb21wdXRlIHRoZSAiY29tbSIgYXJndW1lbnQgZm9yIGdkYnNl cnZlci4KLSAKLSBwcm9jIGdkYnNlcnZlcl9kZWZhdWx0X2dldF9jb21tX3BvcnQgeyBwb3J0IH0g ewotLSAgICByZXR1cm4gIjokcG9ydCIKLSsgICAgcmV0dXJuICIkcG9ydCIKLSB9Ci0gCi0gIyBT dGFydCBhIGdkYnNlcnZlciBwcm9jZXNzIHdpdGggaW5pdGlhbCBPUFRJT05TIGFuZCB0cmFpbGlu ZyBBUkdVTUVOVFMuCi1AQCAtMjIxLDYgKzIyMSw3IEBAIHByb2MgZ2Ric2VydmVyX2RlZmF1bHRf Z2V0X2NvbW1fcG9ydCB7IHBvcnQgfSB7Ci0gCi0gcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRp b25zIGFyZ3VtZW50cyB9IHsKLSAgICAgZ2xvYmFsIHBvcnRudW0KLSsgICAgZ2xvYmFsIEdEQl9U RVNUX1NPQ0tFVEhPU1QKLSAKLSAgICAgIyBQb3J0IGlkIC0tIGVpdGhlciBzcGVjaWZpZWQgaW4g YmFzZWJvYXJkIGZpbGUsIG9yIG1hbmFnZWQgaGVyZS4KLSAgICAgaWYgW3RhcmdldF9pbmZvIGV4 aXN0cyBnZGIsc29ja2V0cG9ydF0gewotQEAgLTIzMSwxMCArMjMyLDIyIEBAIHByb2MgZ2Ric2Vy dmVyX3N0YXJ0IHsgb3B0aW9ucyBhcmd1bWVudHMgfSB7Ci0gICAgIH0KLSAKLSAgICAgIyBFeHRy YWN0IHRoZSBsb2NhbCBhbmQgcmVtb3RlIGhvc3QgaWRzIGZyb20gdGhlIHRhcmdldCBib2FyZCBz dHJ1Y3QuCi0tICAgIGlmIFt0YXJnZXRfaW5mbyBleGlzdHMgc29ja2V0aG9zdF0gewotKyAgICBp ZiB7IFtpbmZvIGV4aXN0cyBHREJfVEVTVF9TT0NLRVRIT1NUXSB9IHsKLSsJIyBUaGUgdXNlciBp cyBub3Qgc3VwcG9zZWQgdG8gcHJvdmlkZSBhIHBvcnQgbnVtYmVyLCBqdXN0IGEKLSsJIyBob3N0 bmFtZS9hZGRyZXNzLCB0aGVyZWZvcmUgd2UgYWRkIHRoZSB0cmFpbGluZyAiOiIgaGVyZS4KLSsJ c2V0IGRlYnVnaG9zdCAiJHtHREJfVEVTVF9TT0NLRVRIT1NUfToiCi0rCSMgRXNjYXBlIG9wZW4g YW5kIGNsb3NlIHNxdWFyZSBicmFja2V0cy4KLSsJc2V0IGRlYnVnaG9zdF90bXAgW3N0cmluZyBt YXAgeyBbIFxcWyBdIFxcXSB9ICRkZWJ1Z2hvc3RdCi0rCSMgV2UgbmVlZCBhICJnZGJzZXJ2ZXIi IHZlcnNpb24gb2YgdGhlIGRlYnVnaG9zdCwgd2hpY2ggd2lsbAotKwkjIGhhdmUgdGhlIHBvc3Np YmxlIGNvbm5lY3Rpb24gcHJlZml4IHN0cmlwcGVkLiAgVGhpcyBpcwotKwkjIGJlY2F1c2UgZ2Ri c2VydmVyIGN1cnJlbnRseSBkb2Vzbid0IHJlY29nbml6ZSB0aGUgcHJlZml4ZXMuCi0rCXJlZ3N1 YiAtYWxsICJeXCh0Y3A6fHVkcDp8dGNwNDp8dWRwNDp8dGNwNjp8dWRwNjpcKSIgJGRlYnVnaG9z dF90bXAgIiIgZGVidWdob3N0X2dkYnNlcnZlcgotKyAgICB9IGVsc2VpZiBbdGFyZ2V0X2luZm8g ZXhpc3RzIHNvY2tldGhvc3RdIHsKLSAJc2V0IGRlYnVnaG9zdCBbdGFyZ2V0X2luZm8gc29ja2V0 aG9zdF0KLSsJc2V0IGRlYnVnaG9zdF9nZGJzZXJ2ZXIgJGRlYnVnaG9zdAotICAgICB9IGVsc2Ug ewotIAlzZXQgZGVidWdob3N0ICJsb2NhbGhvc3Q6IgotKwlzZXQgZGVidWdob3N0X2dkYnNlcnZl ciAkZGVidWdob3N0Ci0gICAgIH0KLSAKLSAgICAgIyBTb21lIGJvYXJkcyB1c2UgYSBkaWZmZXJl bnQgdmFsdWUgZm9yIHRoZSBwb3J0IHRoYXQgaXMgcGFzc2VkIHRvCi1AQCAtMjc3LDggKzI5MCwx NCBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewotIAlpZiB7 ICRvcHRpb25zICE9ICIiIH0gewotIAkgICAgYXBwZW5kIGdkYnNlcnZlcl9jb21tYW5kICIgJG9w dGlvbnMiCi0gCX0KLSsJaWYgeyAkZGVidWdob3N0X2dkYnNlcnZlciAhPSAiIiB9IHsKLSsJICAg IGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICRkZWJ1Z2hvc3RfZ2Ric2VydmVyIgotKwl9Ci0g CWlmIHsgJHBvcnRudW0gIT0gIiIgfSB7Ci0tCSAgICBhcHBlbmQgZ2Ric2VydmVyX2NvbW1hbmQg IiBbJGdldF9jb21tX3BvcnQgJHBvcnRudW1dIgotKwkgICAgaWYgeyAkZGVidWdob3N0X2dkYnNl cnZlciA9PSAiIiB9IHsKLSsJCWFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICIKLSsJICAgIH0K LSsJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiWyRnZXRfY29tbV9wb3J0ICRwb3J0bnVt XSIKLSAJfQotIAlpZiB7ICRhcmd1bWVudHMgIT0gIiIgfSB7Ci0gCSAgICBhcHBlbmQgZ2Ric2Vy dmVyX2NvbW1hbmQgIiAkYXJndW1lbnRzIgotQEAgLTMwNyw2ICszMjYsOSBAQCBwcm9jIGdkYnNl cnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewotIAkJICAgIGNvbnRpbnVlCi0gCQl9 Ci0gCSAgICB9Ci0rCSAgICAtcmUgIi4qOiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiBOYW1lIG9yIHNl cnZpY2Ugbm90IGtub3duXHJcbiIgewotKwkJZXJyb3IgImdkYnNlcnZlciBjYW5ub3QgcmVzb2x2 ZSBuYW1lLiIKLSsJICAgIH0KLSAJICAgIHRpbWVvdXQgewotIAkJZXJyb3IgIlRpbWVvdXQgd2Fp dGluZyBmb3IgZ2Ric2VydmVyIHJlc3BvbnNlLiIKLSAJICAgIH0KLWRpZmYgLS1naXQgYS9nZGIv dW5pdHRlc3RzL3BhcnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYyBiL2dkYi91bml0dGVz dHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3VuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9uLXNw ZWMtc2VsZnRlc3RzLmMKLUBAIC0wLDAgKzEsMjQ5IEBACi0rLyogU2VsZiB0ZXN0cyBmb3IgcGFy c2luZyBjb25uZWN0aW9uIHNwZWNzIGZvciBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAic2VsZnRl c3QuaCIKLSsjaW5jbHVkZSAiY29tbW9uL25ldHN0dWZmLmgiCi0rI2luY2x1ZGUgImRpYWdub3N0 aWNzLmgiCi0rI2lmZGVmIFVTRV9XSU4zMkFQSQotKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNp bmNsdWRlIDx3c3BpYXBpLmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNp bmNsdWRlIDxhcnBhL2luZXQuaD4KLSsjaW5jbHVkZSA8bmV0ZGIuaD4KLSsjaW5jbHVkZSA8c3lz L3NvY2tldC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgotKyNlbmRpZgotKwotK25hbWVz cGFjZSBzZWxmdGVzdHMgewotK25hbWVzcGFjZSBwYXJzZV9jb25uZWN0aW9uX3NwZWNfdGVzdHMg ewotKwotKy8qIEF1eGlsaWFyeSBzdHJ1Y3QgdGhhdCBob2xkcyBpbmZvIGFib3V0IGEgc3BlY2lm aWMgdGVzdCBmb3IgYQotKyAgIGNvbm5lY3Rpb24gc3BlYy4gICovCi0rCi0rc3RydWN0IHBhcnNl X2Nvbm5fdGVzdAotK3sKLSsgIC8qIFRoZSBjb25uZWN0aW9uIHNwZWMuICAqLwotKyAgY29uc3Qg Y2hhciAqY29ubnNwZWM7Ci0rCi0rICAvKiBFeHBlY3RlZCByZXN1bHQgZnJvbSAncGFyc2VfY29u bmVjdGlvbl9zcGVjJy4gICovCi0rICBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIGV4cGVjdGVkX3Jl c3VsdDsKLSsKLSsgIC8qIFRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBmYWlsLCBmYWxzZSBvdGhl cndpc2UuICBJZiB0cnVlLCBvbmx5Ci0rICAgICB0aGUgQ09OTlNQRUMgZmllbGQgc2hvdWxkIGJl IGNvbnNpZGVyZWQgYXMgdmFsaWQuICAqLwotKyAgYm9vbCBzaG91bGRfZmFpbDsKLSsKLSsgIC8q IFRoZSBleHBlY3RlZCBBSV9GQU1JTFkgdG8gYmUgZm91bmQgb24gdGhlICdzdHJ1Y3QgYWRkcmlu Zm8nCi0rICAgICBISU5ULiAgKi8KLSsgIGludCBleHBfYWlfZmFtaWx5OwotKwotKyAgLyogVGhl IGV4cGVjdGVkIEFJX1NPQ0tUWVBFIHRvIGJlIGZvdW5kIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZv JwotKyAgICAgSElOVC4gICovCi0rICBpbnQgZXhwX2FpX3NvY2t0eXBlOwotKwotKyAgLyogVGhl IGV4cGVjdGVkIEFJX1BST1RPQ09MIHRvIGJlIGZvdW5kIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZv JwotKyAgICAgSElOVC4gICovCi0rICBpbnQgZXhwX2FpX3Byb3RvY29sOwotK307Ci0rCi0rLyog U29tZSBkZWZpbmVzIHRvIGhlbHAgdXMgZmlsbCBhICdzdHJ1Y3QgcGFyc2VfY29ubl90ZXN0Jy4g ICovCi0rCi0rLyogSW5pdGlhbGl6ZSBhIGZ1bGwgZW50cnkuICAqLwotKyNkZWZpbmUgSU5JVF9F TlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIFNIT1VMRF9GQUlMLCBFWFBfQUlfRkFNSUxZ LCBcCi0rCQkgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkJCQlcCi0rICB7IEFE RFIsIHsgRVhQX0hPU1QsIEVYUF9QT1JUIH0sIFNIT1VMRF9GQUlMLCBFWFBfQUlfRkFNSUxZLCBc Ci0rICAgIEVYUF9BSV9TT0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MIH0KLSsKLSsvKiBJbml0aWFs aXplIGFuIHVucHJlZml4ZWQgZW50cnkuICBJbiB0aGlzIGNhc2UsIHdlIGRvbid0IGV4cGVjdAot KyAgIGFueXRoaW5nIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZvJyBISU5ULiAgKi8KLSsjZGVmaW5l IElOSVRfVU5QUkVGSVhFRF9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQpIFwKLSsgIElO SVRfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgZmFsc2UsIDAsIDAsIDApCi0rCi0r LyogSW5pdGlhbGl6ZWQgYW4gdW5wcmVmaXhlZCBJUHY2IGVudHJ5LiAgSW4gdGhpcyBjYXNlLCB3 ZSBkb24ndAotKyAgIGV4cGVjdCBhbnl0aGluZyBvbiB0aGUgJ3N0cnVjdCBhZGRyaW5mbycgSElO VC4gICovCi0rI2RlZmluZSBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWShBRERSLCBFWFBfSE9T VCwgRVhQX1BPUlQpIFwKLSsgIElOSVRfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwg ZmFsc2UsIEFGX0lORVQ2LCAwLCAwKQotKwotKy8qIEluaXRpYWxpemUgYSBwcmVmaXhlZCBlbnRy eS4gICovCi0rI2RlZmluZSBJTklUX1BSRUZJWEVEX0VOVFJZKEFERFIsIEVYUF9IT1NULCBFWFBf UE9SVCwgRVhQX0FJX0ZBTUlMWSwgXAotKwkJCSAgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9Q Uk9UT0NPTCkgXAotKyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBmYWxz ZSwgRVhQX0FJX0ZBTUlMWSwgXAotKwkgICAgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9QUk9U T0NPTCkKLSsKLSsvKiBJbml0aWFsaXplIGFuIGVudHJ5IHByZWZpeGVkIHdpdGggInRjcDQ6Ii4g ICovCi0rI2RlZmluZSBJTklUX1BSRUZJWEVEX0lQVjRfVENQKEFERFIsIEVYUF9IT1NULCBFWFBf UE9SVCkgXAotKyAgSU5JVF9QUkVGSVhFRF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JU LCBBRl9JTkVULCBTT0NLX1NUUkVBTSwgXAotKwkJICAgICAgIElQUFJPVE9fVENQKQotKwotKy8q IEluaXRpYWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidGNwNjoiLiAgKi8KLSsjZGVmaW5l IElOSVRfUFJFRklYRURfSVBWNl9UQ1AoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCi0rICBJ TklUX1BSRUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQ2LCBT T0NLX1NUUkVBTSwgXAotKwkJICAgICAgIElQUFJPVE9fVENQKQotKwotKy8qIEluaXRpYWxpemUg YW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidWRwNDoiLiAgKi8KLSsjZGVmaW5lIElOSVRfUFJFRklY RURfSVBWNF9VRFAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCi0rICBJTklUX1BSRUZJWEVE X0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQsIFNPQ0tfREdSQU0sIFwK LSsJCSAgICAgICBJUFBST1RPX1VEUCkKLSsKLSsvKiBJbml0aWFsaXplIGFuIGVudHJ5IHByZWZp eGVkIHdpdGggInVkcDY6Ii4gICovCi0rI2RlZmluZSBJTklUX1BSRUZJWEVEX0lQVjZfVURQKEFE RFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAotKyAgSU5JVF9QUkVGSVhFRF9FTlRSWSAoQUREUiwg RVhQX0hPU1QsIEVYUF9QT1JULCBBRl9JTkVUNiwgU09DS19ER1JBTSwgXAotKwkJICAgICAgIElQ UFJPVE9fVURQKQotKwotKy8qIEluaXRpYWxpemUgYSBib2d1cyBlbnRyeSwgaS5lLiwgYSBjb25u ZWN0aW9uIHNwZWMgdGhhdCBzaG91bGQKLSsgICBmYWlsLiAgKi8KLSsjZGVmaW5lIElOSVRfQk9H VVNfRU5UUlkoQUREUikgXAotKyAgSU5JVF9FTlRSWSAoQUREUiwgIiIsICIiLCB0cnVlLCAwLCAw LCAwKQotKwotKy8qIFRoZSB2YXJpYWJsZSB3aGljaCBob2xkcyBhbGwgb2Ygb3VyIHRlc3RzLiAg Ki8KLSsKLStzdGF0aWMgY29uc3QgcGFyc2VfY29ubl90ZXN0IGNvbm5fdGVzdFtdID0KLSsgIHsK LSsgICAgLyogVW5wcmVmaXhlZCBhZGRyZXNzZXMuICAqLwotKwotKyAgICAvKiBJUHY0LCBob3N0 IGFuZCBwb3J0IHByZXNlbnQuICAqLwotKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcu MC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAotKyAgICAvKiBJUHY0LCBvbmx5IGhv c3QuICAqLwotKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjEiLCAiMTI3LjAu MC4xIiwgIiIpLAotKyAgICAvKiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1VO UFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKLSsKLSsgICAg LyogSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50LCBubyBicmFja2V0cy4gICovCi0rICAgIElO SVRfVU5QUkVGSVhFRF9FTlRSWSAoIjo6MToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8q IElQdjYsIG1pc3NpbmcgcG9ydCwgbm8gYnJhY2tldHMuICAqLwotKyAgICBJTklUX1VOUFJFRklY RURfRU5UUlkgKCI6OjE6IiwgIjo6MSIsICIiKSwKLSsgICAgLyogSVB2NiwgaG9zdCBhbmQgcG9y dCBwcmVzZW50LCB3aXRoIGJyYWNrZXRzLiAgKi8KLSsgICAgSU5JVF9VTlBSRUZJWEVEX0lQVjZf RU5UUlkgKCJbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIElQdjYsIG9ubHkg aG9zdCwgd2l0aCBicmFja2V0cy4gICovCi0rICAgIElOSVRfVU5QUkVGSVhFRF9JUFY2X0VOVFJZ ICgiWzo6MV0iLCAiOjoxIiwgIiIpLAotKyAgICAvKiBJUHY2LCBtaXNzaW5nIHBvcnQsIHdpdGgg YnJhY2tldHMuICAqLwotKyAgICBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWSAoIls6OjFdOiIs ICI6OjEiLCAiIiksCi0rCi0rICAgIC8qIFVuc3BlY2lmaWVkLCBvbmx5IHBvcnQuICAqLwotKyAg ICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCI6MTIzNCIsICJsb2NhbGhvc3QiLCAiMTIzNCIpLAot KwotKyAgICAvKiBQcmVmaXhlZCBhZGRyZXNzZXMuICAqLwotKwotKyAgICAvKiBQcmVmaXhlZCAi dGNwNDoiIElQdjQsIGhvc3QgYW5kIHBvcnQgcHJlc2VudHMuICAqLwotKyAgICBJTklUX1BSRUZJ WEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIp LAotKyAgICAvKiBQcmVmaXhlZCAidGNwNDoiIElQdjQsIG9ubHkgcG9ydC4gICovCi0rICAgIElO SVRfUFJFRklYRURfSVBWNF9UQ1AgKCJ0Y3A0OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0Iiks Ci0rICAgIC8qIFByZWZpeGVkICJ0Y3A0OiIgSVB2NCwgb25seSBob3N0LiAgKi8KLSsgICAgSU5J VF9QUkVGSVhFRF9JUFY0X1RDUCAoInRjcDQ6MTI3LjAuMC4xIiwgIjEyNy4wLjAuMSIsICIiKSwK LSsgICAgLyogUHJlZml4ZWQgInRjcDQ6IiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJ TklUX1BSRUZJWEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIi KSwKLSsKLSsgICAgLyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0LCBob3N0IGFuZCBwb3J0IHByZXNl bnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgidWRwNDoxMjcuMC4wLjE6MTIz NCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAotKyAgICAvKiBQcmVmaXhlZCAidWRwNDoiIElQdjQs IG9ubHkgcG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNF9VRFAgKCJ1ZHA0OjoxMjM0 IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA0OiIgSVB2NCwg b25seSBob3N0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1VEUCAoInVkcDQ6MTI3LjAu MC4xIiwgIjEyNy4wLjAuMSIsICIiKSwKLSsgICAgLyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0LCBt aXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgidWRwNDoxMjcu MC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKLSsKLSsKLSsgICAgLyogUHJlZml4ZWQgInRjcDY6 IiBJUHY2LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQ VjZfVENQICgidGNwNjo6OjE6MTIzNCIsICI6OjEiLCAiMTIzNCIpLAotKyAgICAvKiBQcmVmaXhl ZCAidGNwNjoiIElQdjYsIG9ubHkgcG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9U Q1AgKCJ0Y3A2OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVk ICJ0Y3A2OiIgSVB2Niwgb25seSBob3N0LiAgKi8KLSsgICAgLy9JTklUX1BSRUZJWEVEX0lQVjZf VENQICgidGNwNjo6OjEiLCAiOjoxIiwgIiIpLAotKyAgICAvKiBQcmVmaXhlZCAidGNwNjoiIElQ djYsIG1pc3NpbmcgcG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2 Ojo6MToiLCAiOjoxIiwgIiIpLAotKwotKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYsIGhv c3QgYW5kIHBvcnQgcHJlc2VudC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9VRFAgKCJ1 ZHA2Ojo6MToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIg SVB2Niwgb25seSBwb3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6 OjEyMzQiLCAibG9jYWxob3N0IiwgIjEyMzQiKSwKLSsgICAgLyogUHJlZml4ZWQgInVkcDY6IiBJ UHY2LCBvbmx5IGhvc3QuICAqLwotKyAgICAvL0lOSVRfUFJFRklYRURfSVBWNl9VRFAgKCJ1ZHA2 Ojo6MSIsICI6OjEiLCAiIiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2NiwgbWlzc2lu ZyBwb3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6OjoxOiIsICI6 OjEiLCAiIiksCi0rCi0rICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRz LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQ ICgidGNwNjpbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ0 Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBvbmx5IGhvc3QuICAqLwotKyAgICBJTklUX1BSRUZJ WEVEX0lQVjZfVENQICgidGNwNjpbOjoxXSIsICI6OjEiLCAiIiksCi0rICAgIC8qIFByZWZpeGVk ICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklU X1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjoxXToiLCAiOjoxIiwgIiIpLAotKwotKyAgICAv KiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgaG9zdCBhbmQgcG9ydCBwcmVz ZW50LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6MV06MTIzNCIs ICI6OjEiLCAiMTIzNCIpLAotKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBicmFj a2V0cywgb25seSBob3N0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6 Wzo6MV0iLCAiOjoxIiwgIiIpLAotKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBi cmFja2V0cywgbWlzc2luZyBwb3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAo InVkcDY6Wzo6MV06IiwgIjo6MSIsICIiKSwKLSsKLSsKLSsgICAgLyogQm9ndXMgYWRkcmVzc2Vz LiAgKi8KLSsgICAgSU5JVF9CT0dVU19FTlRSWSAoInRjcDY6Wzo6MV0xMjM6NDQiKSwKLSsgICAg SU5JVF9CT0dVU19FTlRSWSAoIls6OjEiKSwKLSsgICAgSU5JVF9CT0dVU19FTlRSWSAoInRjcDY6 OjoxXToiKSwKLSsgIH07Ci0rCi0rLyogVGVzdCBhIGNvbm5lY3Rpb24gc3BlYyBDLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3Rlc3RfY29ubiAoY29uc3QgcGFyc2VfY29ubl90ZXN0ICZjKQotK3sK LSsgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyByZXQ7 Ci0rCi0rICBtZW1zZXQgKCZoaW50LCAwLCBzaXplb2YgKGhpbnQpKTsKLSsKLSsgIFRSWQotKyAg ICB7Ci0rICAgICAgcmV0ID0gcGFyc2VfY29ubmVjdGlvbl9zcGVjIChjLmNvbm5zcGVjLCAmaGlu dCk7Ci0rICAgIH0KLSsgIENBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCi0rICAgIHsKLSsg ICAgICAvKiBJZiB3ZSBjYXVnaHQgYW4gZXJyb3IsIHdlIHNob3VsZCBjaGVjayBpZiB0aGlzIGNv bm5lY3Rpb24KLSsJIHNwZWMgd2FzIHN1cHBvc2VkIHRvIGZhaWwuICAqLwotKyAgICAgIFNFTEZf Q0hFQ0sgKGMuc2hvdWxkX2ZhaWwpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKyAgRU5EX0NB VENICi0rCi0rICBTRUxGX0NIRUNLICghYy5zaG91bGRfZmFpbCk7Ci0rICBTRUxGX0NIRUNLIChy ZXQuaG9zdF9zdHIgPT0gYy5leHBlY3RlZF9yZXN1bHQuaG9zdF9zdHIpOwotKyAgU0VMRl9DSEVD SyAocmV0LnBvcnRfc3RyID09IGMuZXhwZWN0ZWRfcmVzdWx0LnBvcnRfc3RyKTsKLSsgIFNFTEZf Q0hFQ0sgKGhpbnQuYWlfZmFtaWx5ID09IGMuZXhwX2FpX2ZhbWlseSk7Ci0rICBTRUxGX0NIRUNL IChoaW50LmFpX3NvY2t0eXBlID09IGMuZXhwX2FpX3NvY2t0eXBlKTsKLSsgIFNFTEZfQ0hFQ0sg KGhpbnQuYWlfcHJvdG9jb2wgPT0gYy5leHBfYWlfcHJvdG9jb2wpOwotK30KLSsKLSsvKiBSdW4g dGhlIHRlc3RzIGFzc29jaWF0ZWQgd2l0aCBwYXJzaW5nIGNvbm5lY3Rpb24gc3BlY3MuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rcnVuX3Rlc3RzICgpCi0rewotKyAgZm9yIChjb25zdCBwYXJzZV9j b25uX3Rlc3QgJmMgOiBjb25uX3Rlc3QpCi0rICAgIHRlc3RfY29ubiAoYyk7Ci0rfQotK30gLyog bmFtZXNwYWNlIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0cyAqLwotK30gLyogbmFtZXNwYWNl IHNlbGZ0ZXN0cyAqLwotKwotK3ZvaWQKLStfaW5pdGlhbGl6ZV9wYXJzZV9jb25uZWN0aW9uX3Nw ZWNfc2VsZnRlc3RzICgpCi0rewotKyAgc2VsZnRlc3RzOjpyZWdpc3Rlcl90ZXN0ICgicGFyc2Vf Y29ubmVjdGlvbl9zcGVjIiwKLSsJCQkgICAgc2VsZnRlc3RzOjpwYXJzZV9jb25uZWN0aW9uX3Nw ZWNfdGVzdHM6OnJ1bl90ZXN0cyk7Ci0rfQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6ODgxODQ5LWlw djYtMW9mMy5wYXRjaCBiL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzNhNjY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LXJoYno4ODE4NDktaXB2Ni0xb2YzLnBhdGNoCkBAIC0wLDAgKzEsMTkzNCBAQAorRnJvbSBGRURP UkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdpbyBEdXJpZ2Fu IEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTggTWF5IDIwMTggMDE6 Mjk6MjQgLTA0MDAKK1N1YmplY3Q6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtMW9mMy5wYXRjaAorCis7 OyBJbXBsZW1lbnQgSVB2NiBzdXBwb3J0IGZvciBHREIvZ2Ric2VydmVyIChSSCBCWiA4ODE4NDks IFNlcmdpbyBEdXJpZ2FuIEp1bmlvcikuCisKK0ltcGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdE Qi9nZGJzZXJ2ZXIKKworVGhpcyBwYXRjaCBpbXBsZW1lbnRzIElQdjYgc3VwcG9ydCBmb3IgYm90 aCBHREIgYW5kIGdkYnNlcnZlci4gIEJhc2VkCitvbiBteSByZXNlYXJjaCwgaXQgaXMgdGhlIGZv dXJ0aCBhdHRlbXB0IHRvIGRvIHRoYXQgc2luY2UgMjAwNi4gIFNpbmNlCitJIHVzZWQgaWRlYXMg ZnJvbSBhbGwgb2YgdGhlIHByZXZpb3VzIHBhdGNoZXMsIEkgYWxzbyBhZGRlZCB0aGVpcgorYXV0 aG9ycydzIG5hbWVzIG9uIHRoZSBDaGFuZ2VMb2dzIGFzIGEgd2F5IHRvIHJlY29nbml6ZSB0aGVp cgorZWZmb3J0cy4gIEZvciByZWZlcmVuY2Ugc2FrZSwgeW91IGNhbiBmaW5kIHRoZSBwcmV2aW91 cyBhdHRlbXB0cyBhdDoKKworICBodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMDYtMDkvbXNnMDAxOTIuaHRtbAorCisgIGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxNC0wMi9tc2cwMDI0OC5odG1sCisKKyAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDE2LTAyL21zZzAwMjI2Lmh0bWwKKworVGhlIGJhc2ljIGlkZWEg YmVoaW5kIHRoZSBwYXRjaCBpcyB0byBzdGFydCB1c2luZyB0aGUgbmV3CisnZ2V0YWRkcmluZm8n LydnZXRuYW1laW5mbycgY2FsbHMsIHdoaWNoIGFyZSByZXNwb25zaWJsZSBmb3IKK3RyYW5zbGF0 aW5nIG5hbWVzIGFuZCBhZGRyZXNzZXMgaW4gYSBwcm90b2NvbC1pbmRlcGVuZGVudCB3YXkuICBU aGlzCittZWFucyB0aGF0IGlmIHdlIGV2ZXIgaGF2ZSBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBJUCBw cm90b2NvbCwgd2Ugd29uJ3QKK25lZWQgdG8gY2hhbmdlIHRoZSBjb2RlIGFnYWluIChvciwgYXQg bGVhc3QsIHdvbid0IGhhdmUgdG8gY2hhbmdlIHRoZQorbWFqb3JpdHkgb2YgdGhlIGNvZGUpLgor CitUaGUgZnVuY3Rpb24gJ2dldGFkZHJpbmZvJyByZXR1cm5zIGEgbGlua2VkIGxpc3Qgb2YgcG9z c2libGUgYWRkcmVzc2VzCit0byBjb25uZWN0IHRvLiAgRGVhbGluZyB3aXRoIG11bHRpcGxlIGFk ZHJlc3NlcyBwcm92ZWQgdG8gYmUgYSBoYXJkCit0YXNrIHdpdGggdGhlIGN1cnJlbnQgVENQIGF1 dG8tcmV0cnkgbWVjaGFuaXNtIGltcGxlbWVudGVkIG9uCitzZXItdGNwOm5ldF9vcGVuLiAgRm9y IGV4YW1wbGUsIHdoZW4gZ2Ric2VydmVyIGxpc3RlbmVkIG9ubHkgb24gYW4KK0lQdjQgc29ja2V0 OgorCisgICQgLi9nZGJzZXJ2ZXIgLS1vbmNlIDEyNy4wLjAuMToxMjM0IC4vYS5vdXQKKworYW5k IEdEQiB3YXMgaW5zdHJ1Y3RlZCB0byB0cnkgdG8gY29ubmVjdCB0byBib3RoIElQdjYgYW5kIElQ djQKK3NvY2tldHM6CisKKyAgJCAuL2dkYiAtZXggJ3RhcmdldCBleHRlbmRlZC1yZW1vdGUgbG9j YWxob3N0OjEyMzQnIC4vYS5vdXQKKwordGhlIHVzZXIgd291bGQgbm90aWNlIGEgc29tZXdoYXQg YmlnIGRlbGF5IGJlZm9yZSBHREIgd2FzIGFibGUgdG8KK2Nvbm5lY3QgdG8gdGhlIElQdjQgc29j a2V0LiAgVGhpcyBoYXBwZW5lZCBiZWNhdXNlIEdEQiB3YXMgdHJ5aW5nIHRvCitjb25uZWN0IHRv IHRoZSBJUHY2IHNvY2tldCBmaXJzdCwgYW5kIGhhZCB0byB3YWl0IHVudGlsIHRoZSBjb25uZWN0 aW9uCit0aW1lZCBvdXQgYmVmb3JlIGl0IHRyaWVkIHRvIGNvbm5lY3QgdG8gdGhlIElQdjQgc29j a2V0LgorCitGb3IgdGhhdCByZWFzb24sIEkgaGFkIHRvIHJld3JpdGUgdGhlIG1haW4gbG9vcCBh bmQgaW1wbGVtZW50IGEgbmV3CittZXRob2QgZm9yIGhhbmRsaW5nIG11bHRpcGxlIGNvbm5lY3Rp b25zLiAgQWZ0ZXIgc29tZSBkaXNjdXNzaW9uLAorUGVkcm8gYW5kIEkgYWdyZWVkIG9uIHRoZSBm b2xsb3dpbmcgYWxnb3JpdGhtOgorCisgIDEpIEZvciBlYWNoIGVudHJ5IHJldHVybmVkIGJ5ICdn ZXRhZGRyaW5mbycsIHdlIHRyeSB0byBvcGVuIGEgc29ja2V0CisgIGFuZCBjb25uZWN0IHRvIGl0 LgorCisgIDIuYSkgSWYgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgJ2Nvbm5lY3QnLCB3ZSBqdXN0IHVz ZSB0aGF0IGNvbm5lY3Rpb24uCisKKyAgMi5iKSBJZiB3ZSBkb24ndCBoYXZlIGEgc3VjY2Vzc2Z1 bGwgJ2Nvbm5lY3QnLCBidXQgaWYgd2UndmUgZ290IGEKKyAgRUNPTk5SRUZVU0VEIChtZWFuaW5n IHRoZSB0aGUgY29ubmVjdGlvbiB3YXMgcmVmdXNlZCksIHdlIGtlZXAgdHJhY2sKKyAgb2YgdGhp cyBmYWN0IGJ5IHVzaW5nIGEgZmxhZy4KKworICAyLmMpIElmIHdlIGRvbid0IGhhdmUgYSBzdWNj ZXNzZnVsbCAnY29ubmVjdCcsIGJ1dCBpZiB3ZSd2ZSBnb3QgYQorICBFSU5QUk9HUkVTUyAobWVh bmluZyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGluIHByb2dyZXNzKSwgd2UgcGVyZm9ybQorICBh ICdzZWxlY3QnIGNhbGwgb24gdGhlIHNvY2tldCB1bnRpbCB3ZSBoYXZlIGEgcmVzdWx0IChlaXRo ZXIgYQorICBzdWNjZXNzZnVsIGNvbm5lY3Rpb24sIG9yIGFuIGVycm9yIG9uIHRoZSBzb2NrZXQp LgorCisgIDMpIElmIHRjcF9hdXRvX3JldHJ5IGlzIHRydWUsIGFuZCB3ZSBoYXZlbid0IGdvdHRl biBhIHN1Y2Nlc3NmdWwKKyAgY29ubmVjdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBvZiBvdXIgYXR0 ZW1wdHMgZmFpbGVkIHdpdGgKKyAgRUNPTk5SRUZVU0VELCB0aGVuIHdlIHdhaXQgYSBsaXR0bGUg Yml0IChpLmUuLCBjYWxsCisgICd3YWl0X2Zvcl9jb25uZWN0JyksIGNoZWNrIHRvIHNlZSBpZiB0 aGVyZSB3YXMgYQorICB0aW1lb3V0L2ludGVycnVwdGlvbiAoaW4gd2hpY2ggY2FzZSB3ZSBiYWls IG91dCksIGFuZCB0aGVuIGdvIGJhY2sKKyAgdG8gKDEpLgorCitBZnRlciBtdWx0aXBsZSB0ZXN0 cywgSSB3YXMgYWJsZSB0byBjb25uZWN0IHdpdGhvdXQgZGVsYXkgb24gdGhlCitzY2VuYXJpbyBk ZXNjcmliZWQgYWJvdmUsIGFuZCB3YXMgYWxzbyBhYmxlIHRvIGNvbm5lY3QgaW4gYWxsIG90aGVy Cit0eXBlcyBvZiBzY2VuYXJpb3MuCisKK0kgYWxzbyBpbXBsZW1lbnRlZCBzb21lIGhvc3RuYW1l IHBhcnNpbmcgZnVuY3Rpb25zIChhbG9uZyB3aXRoIHRoZWlyCitjb3JyZXNwb25kaW5nIHVuaXQg dGVzdHMpIHdoaWNoIGFyZSB1c2VkIHRvIGhlbHAgR0RCIGFuZCBnZGJzZXJ2ZXIgdG8KK3BhcnNl IGhvc3RuYW1lIHN0cmluZ3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIuICBUaGVzZSBuZXcgZnVuY3Rp b25zIGFyZQorbGl2aW5nIGluc2lkZSBjb21tb24vbmV0c3R1ZmYuW2NoXS4gIEkndmUgaGFkIHRv IGRvIHRoYXQgc2luY2UgSVB2NgoraW50cm9kdWNlcyBhIG5ldyBVUkwgc2NoZW1lLCB3aGljaCBk ZWZpbmVzIHRoYXQgc3F1YXJlIGJyYWNrZXRzIGNhbiBiZQordXNlZCB0byBlbmNsb3NlIHRoZSBo b3N0IHBhcnQgYW5kIGRpZmZlcmVudGlhdGUgaXQgZnJvbSB0aGUKK3BvcnQgKGUuZy4sICJbOjox XToxMjM0IiBtZWFucyAiaG9zdCA6OjEsIHBvcnQgMTIzNCIpLiAgSSBzcGVudCBzb21lCit0aW1l IHRoaW5raW5nIGFib3V0IGEgcmVhc29uYWJsZSB3YXkgdG8gaW50ZXJwcmV0IHdoYXQgdGhlIHVz ZXIgd2FudHMsCithbmQgSSBjYW1lIHVwIHdpdGggdGhlIGZvbGxvd2luZzoKKworICAtIElmIHRo ZSB1c2VyIGhhcyBwcm92aWRlZCBhIHByZWZpeCB0aGF0IGRvZXNuJ3Qgc3BlY2lmeSB0aGUgcHJv dG9jb2wKKyAgICB2ZXJzaW9uIChpLmUuLCAidGNwOiIgb3IgInVkcDoiKSwgb3IgaWYgdGhlIHVz ZXIgaGFzIG5vdCBwcm92aWRlZAorICAgIGFueSBwcmVmaXgsIGRvbid0IG1ha2UgYW55IGFzc3Vt cHRpb25zIChpLmUuLCBhc3N1bWUgQUZfVU5TUEVDIHdoZW4KKyAgICBkZWFsaW5nIHdpdGggJ2dl dGFkZHJpbmZvJykgKnVubGVzcyogdGhlIGhvc3Qgc3RhcnRzIHdpdGggIlsiIChpbgorICAgIHdo aWNoIGNhc2UsIGFzc3VtZSBpdCdzIGFuIElQdjYgaG9zdCkuCisKKyAgLSBJZiB0aGUgdXNlciBo YXMgcHJvdmlkZWQgYSBwcmVmaXggdGhhdCBkb2VzIHNwZWNpZnkgdGhlIHByb3RvY29sCisgICAg dmVyc2lvbiAoaS5lLiwgInRjcDQ6IiwgInRjcDY6IiwgInVkcDQ6IiBvciAidWRwNjoiKSwgdGhl biByZXNwZWN0CisgICAgdGhhdC4KKworVGhpcyBtZXRob2QgZG9lc24ndCBmb2xsb3cgc3RyaWN0 bHkgd2hhdCBSRkMgMjczMiBwcm9wb3NlcyAodGhhdAorbGl0ZXJhbCBJUHY2IGFkZHJlc3NlcyBz aG91bGQgYmUgcHJvdmlkZWQgZW5jbG9zZWQgaW4gIlsiIGFuZCAiXSIpCitiZWNhdXNlIElQdjYg YWRkcmVzc2VzIHN0aWxsIGNhbiBiZSBwcm92aWRlZCB3aXRob3V0IHNxdWFyZSBicmFja2V0cwor aW4gb3VyIGNhc2UsIGJ1dCBzaW5jZSB3ZSBoYXZlIHByZWZpeGVzIHRvIHNwZWNpZnkgcHJvdG9j b2wgdmVyc2lvbnMgSQordGhpbmsgdGhpcyBpcyBub3QgYW4gaXNzdWUuCisKK0Fub3RoZXIgdGhp bmcgd29ydGggbWVudGlvbmluZyBpcyB0aGUgbmV3ICdHREJfVEVTVF9TT0NLRVRIT1NUJwordGVz dGNhc2UgcGFyYW1ldGVyLCB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZQor aG9zdG5hbWUgKHdpdGhvdXQgdGhlIHBvcnQpIHRvIGJlIHVzZWQgd2hlbiB0ZXN0aW5nIEdEQiBh bmQKK2dkYnNlcnZlci4gIEZvciBleGFtcGxlLCB0byBydW4gSVB2NiB0ZXN0czoKKworICAkIG1h a2UgY2hlY2stZ2RiIFJVTlRFU1RGTEFHUz0nR0RCX1RFU1RfU09DS0VUSE9TVD10Y3A2Ols6OjFd JworCitPciwgdG8gcnVuIElQdjQgdGVzdHM6CisKKyAgJCBtYWtlIGNoZWNrLWdkYiBSVU5URVNU RkxBR1M9J0dEQl9URVNUX1NPQ0tFVEhPU1Q9dGNwNDoxMjcuMC4wLjEnCisKK1RoaXMgcmVxdWly ZWQgYSBmZXcgY2hhbmdlcyBvbiB0aGUgZ2Ric2VydmVyLWJhc2UuZXhwLCBhbmQgYWxzbyBhCitt aW5pbWFsIGFkanVzdG1lbnQgb24gZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnku ZXhwLgorCitGaW5hbGx5LCBJJ3ZlIGltcGxlbWVudGVkIGEgbmV3IHRlc3RjYXNlLAorZ2RiLnNl cnZlci9zZXJ2ZXItY29ubmVjdC5leHAsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIHJ1biBvbiB0aGUg bmF0aXZlCitob3N0IGFuZCBwZXJmb3JtIHZhcmlvdXMgInNtb2tlIHRlc3RzIiB1c2luZyBkaWZm ZXJlbnQgY29ubmVjdGlvbgorbWV0aG9kcy4KKworVGhpcyBwYXRjaCBoYXMgYmVlbiByZWdyZXNz aW9uLXRlc3RlZCBvbiBCdWlsZEJvdCBhbmQgbG9jYWxseSwgYW5kCithbHNvIGJ1aWx0IHVzaW5n IGEgeDg2XzY0LXc2NC1taW5ndzMyIEdDQywgYW5kIG5vIHByb2JsZW1zIHdlcmUgZm91bmQuCisK K2dkYi9DaGFuZ2VMb2c6CisyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJn aW9kakByZWRoYXQuY29tPgorCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisJICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisJICAg IFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KKwkgICAgUGVkcm8gQWx2ZXMgIDxw YWx2ZXNAcmVkaGF0LmNvbT4KKworCSogTWFrZWZpbGUuaW4gKFNVQkRJUl9VTklUVEVTVFNfU1JD Uyk6IEFkZAorCSd1bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jJy4K KwkoQ09NTU9OX1NGSUxFUyk6IEFkZCAnY29tbW9uL25ldHN0dWZmLmMnLgorCShIRklMRVNfTk9f U1JDRElSKTogQWRkICdjb21tb24vbmV0c3R1ZmYuaCcuCisJKiBORVdTIChDaGFuZ2VzIHNpbmNl IEdEQiA4LjIpOiBNZW50aW9uIElQdjYgc3VwcG9ydC4KKwkqIGNvbW1vbi9uZXRzdHVmZi5jOiBO ZXcgZmlsZS4KKwkqIGNvbW1vbi9uZXRzdHVmZi5oOiBOZXcgZmlsZS4KKwkqIHNlci10Y3AuYzog SW5jbHVkZSAnbmV0c3R1ZmYuaCcgYW5kICd3c3BpYXBpLmgnLgorCSh3YWl0X2Zvcl9jb25uZWN0 KTogVXBkYXRlIGNvbW1lbnQuICBOZXcgcGFyYW1ldGVyCisJJ2dkYjo6b3B0aW9uYWw8aW50PiBz b2NrJyBpbnN0ZWFkIG9mICdzdHJ1Y3Qgc2VyaWFsICpzY2InLgorCVVzZSAnc29jaycgZGlyZWN0 bHkgaW5zdGVhZCBvZiAnc2NiLT5mZCcuCisJKHRyeV9jb25uZWN0KTogTmV3IGZ1bmN0aW9uLCB3 aXRoIGNvZGUgZnJvbSAnbmV0X29wZW4nLgorCShuZXRfb3Blbik6IFJld3JpdGUgbWFpbiBsb29w IHRvIGRlYWwgd2l0aCBtdWx0aXBsZQorCXNvY2tldHMvYWRkcmVzc2VzLiAgSGFuZGxlIElQdjYt c3R5bGUgaG9zdG5hbWVzOyBpbXBsZW1lbnQKKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rpb25z LgorCSogdW5pdHRlc3RzL3BhcnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYzogTmV3IGZp bGUuCisKK2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nOgorMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmln YW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZA Z21haWwuY29tPgorCSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisKKwkq IE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgJyQoc3JjZGlyKS9jb21tb24vbmV0c3R1ZmYuYycu CisJKE9CUyk6IEFkZCAnY29tbW9uL25ldHN0dWZmLm8nLgorCShHREJSRVBMQVlfT0JTKTogTGlr ZXdpc2UuCisJKiBnZGJyZXBsYXkuYzogSW5jbHVkZSAnd3NwaWFwaS5oJyBhbmQgJ25ldHN0dWZm LmgnLgorCShyZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBJUHY2CisJY29ubmVj dGlvbnMuCisJKiByZW1vdGUtdXRpbHMuYzogSW5jbHVkZSAnbmV0c3R1ZmYuaCcsICdmaWxlc3R1 ZmYuaCcKKwlhbmQgJ3dzcGlhcGkuaCcuCisJKGhhbmRsZV9hY2NlcHRfZXZlbnQpOiBBY2NlcHQg Y29ubmVjdGlvbnMgZnJvbSBJUHY2IHNvdXJjZXMuCisJKHJlbW90ZV9wcmVwYXJlKTogSGFuZGxl IElQdjYtc3R5bGUgaG9zdG5hbWVzOyBpbXBsZW1lbnQKKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5l Y3Rpb25zLgorCShyZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBwcmludGluZyBj b25uZWN0aW9ucyBmcm9tCisJSVB2NiBzb3VyY2VzLgorCitnZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZzoKKzIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5j b20+CisJICAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwkg ICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KKwkgICAgVHN1dG9tdSBTZWtp ICA8c2VraXJpa2lAZ21haWwuY29tPgorCisJKiBSRUFETUUgKFRlc3RzdWl0ZSBQYXJhbWV0ZXJz KTogTWVudGlvbiBuZXcgJ0dEQl9URVNUX1NPQ0tFVEhPU1QnCisJcGFyYW1ldGVyLgorCSogYm9h cmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwOiBEbyBub3Qgc2V0ICdzb2NrZXRob3N0 JworCWJ5IGRlZmF1bHQuCisJKiBib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHA6IExpa2V3aXNl LgorCSogZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwOiBJbXByb3ZlIHJl Z2V4cCB1c2VkCisJZm9yIGRldGVjdGluZyB3aGVuIGEgcmVtb3RlIGRlYnVnZ2luZyBjb25uZWN0 aW9uIHN1Y2NlZWRzLgorCSogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IE5ldyBmaWxl LgorCSogbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cCAoZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2Nv bW1fcG9ydCk6CisJRG8gbm90IHByZWZpeCB0aGUgcG9ydCBudW1iZXIgd2l0aCAiOiIuCisJKGdk YnNlcnZlcl9zdGFydCk6IE5ldyBnbG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVC4gIEltcGxlbWVu dAorCXN1cHBvcnQgZm9yIGRldGVjdGluZyBhbmQgdXNpbmcgaXQuICBBZGQgJyRkZWJ1Z2hvc3Rf Z2Ric2VydmVyJworCXRvIHRoZSBsaXN0IG9mIGFyZ3VtZW50cyB1c2VkIHRvIHN0YXJ0IGdkYnNl cnZlci4gIEhhbmRsZSBjYXNlCisJd2hlbiBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3 b3JrIG5hbWUuCisKK2dkYi9kb2MvQ2hhbmdlTG9nOgorMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmln YW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZA Z21haWwuY29tPgorCSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisKKwkq IGdkYi50ZXhpbmZvIChSZW1vdGUgQ29ubmVjdGlvbiBDb21tYW5kcyk6IEFkZCBleHBsYW5hdGlv bgorCWFib3V0IG5ldyBJUHY2IHN1cHBvcnQuICBBZGQgbmV3IGNvbm5lY3Rpb24gcHJlZml4ZXMu CisKK2RpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KKy0tLSBh L2dkYi9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL01ha2VmaWxlLmluCitAQCAtNDMwLDYgKzQzMCw3 IEBAIFNVQkRJUl9VTklUVEVTVFNfU1JDUyA9IFwKKyAJdW5pdHRlc3RzL29mZnNldC10eXBlLXNl bGZ0ZXN0cy5jIFwKKyAJdW5pdHRlc3RzL29ic2VydmFibGUtc2VsZnRlc3RzLmMgXAorIAl1bml0 dGVzdHMvb3B0aW9uYWwtc2VsZnRlc3RzLmMgXAorKwl1bml0dGVzdHMvcGFyc2UtY29ubmVjdGlv bi1zcGVjLXNlbGZ0ZXN0cy5jIFwKKyAJdW5pdHRlc3RzL3B0aWQtc2VsZnRlc3RzLmMgXAorIAl1 bml0dGVzdHMvcnNwLWxvdy1zZWxmdGVzdHMuYyBcCisgCXVuaXR0ZXN0cy9zY29wZWRfZmQtc2Vs ZnRlc3RzLmMgXAorQEAgLTk2Nyw2ICs5NjgsNyBAQCBDT01NT05fU0ZJTEVTID0gXAorIAljb21t b24vam9iLWNvbnRyb2wuYyBcCisgCWNvbW1vbi9nZGJfdGlsZGVfZXhwYW5kLmMgXAorIAljb21t b24vZ2RiX3ZlY3MuYyBcCisrCWNvbW1vbi9uZXRzdHVmZi5jIFwKKyAJY29tbW9uL25ldy1vcC5j IFwKKyAJY29tbW9uL3BhdGhzdHVmZi5jIFwKKyAJY29tbW9uL3ByaW50LXV0aWxzLmMgXAorQEAg LTE0NDgsNiArMTQ1MCw3IEBAIEhGSUxFU19OT19TUkNESVIgPSBcCisgCWNvbW1vbi9nZGJfdmVj cy5oIFwKKyAJY29tbW9uL2dkYl93YWl0LmggXAorIAljb21tb24vY29tbW9uLWluZmVyaW9yLmgg XAorKwljb21tb24vbmV0c3R1ZmYuaCBcCisgCWNvbW1vbi9ob3N0LWRlZnMuaCBcCisgCWNvbW1v bi9wYXRoc3R1ZmYuaCBcCisgCWNvbW1vbi9wcmludC11dGlscy5oIFwKK2RpZmYgLS1naXQgYS9n ZGIvTkVXUyBiL2dkYi9ORVdTCistLS0gYS9nZGIvTkVXUworKysrIGIvZ2RiL05FV1MKK0BAIC0x LDYgKzEsMTIgQEAKKyAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPworIAkgICAgIChPcmdhbml6 ZWQgcmVsZWFzZSBieSByZWxlYXNlKQorIAorKyoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA4LjIKKysK KysqIEdEQiBhbmQgR0RCc2VydmVyIG5vdyBzdXBwb3J0IElQdjYgY29ubmVjdGlvbnMuICBJUHY2 IGFkZHJlc3NlcworKyAgY2FuIGJlIHBhc3NlZCB1c2luZyB0aGUgJ1tBRERSRVNTXTpQT1JUJyBu b3RhdGlvbiwgb3IgdGhlIHJlZ3VsYXIKKysgICdBRERSRVNTOlBPUlQnIG1ldGhvZC4KKysKKyAq KiogQ2hhbmdlcyBpbiBHREIgOC4yCisgCisgKiBUaGUgJ3NldCBkaXNhc3NlbWJsZXItb3B0aW9u cycgY29tbWFuZCBub3cgc3VwcG9ydHMgc3BlY2lmeWluZyBvcHRpb25zCitkaWZmIC0tZ2l0IGEv Z2RiL2NvbW1vbi9uZXRzdHVmZi5jIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5jCitA QCAtMCwwICsxLDE1NSBAQAorKy8qIE9wZXJhdGlvbnMgb24gbmV0d29yayBzdHVmZi4KKysgICBD b3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiY29tbW9uLWRlZnMuaCIKKysjaW5jbHVkZSAi bmV0c3R1ZmYuaCIKKysjaW5jbHVkZSA8YWxnb3JpdGhtPgorKworKyNpZmRlZiBVU0VfV0lOMzJB UEkKKysjaW5jbHVkZSA8d2luc29jazIuaD4KKysjaW5jbHVkZSA8d3NwaWFwaS5oPgorKyNlbHNl CisrI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisrI2lu Y2x1ZGUgPG5ldGRiLmg+CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5jbHVkZSA8bmV0 aW5ldC90Y3AuaD4KKysjZW5kaWYKKysKKysvKiBTZWUgY29tbW9uL25ldHN0dWZmLmguICAqLwor KworK3Njb3BlZF9mcmVlX2FkZHJpbmZvOjp+c2NvcGVkX2ZyZWVfYWRkcmluZm8gKCkKKyt7Cisr ICBmcmVlYWRkcmluZm8gKG1fcmVzKTsKKyt9CisrCisrLyogU2VlIGNvbW1vbi9uZXRzdHVmZi5o LiAgKi8KKysKKytwYXJzZWRfY29ubmVjdGlvbl9zcGVjCisrcGFyc2VfY29ubmVjdGlvbl9zcGVj X3dpdGhvdXRfcHJlZml4IChzdGQ6OnN0cmluZyBzcGVjLCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQp CisreworKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyByZXQ7CisrICBzaXplX3QgbGFzdF9jb2xv bl9wb3MgPSAwOworKyAgLyogV2UncmUgZGVhbGluZyB3aXRoIElQdjYgaWY6CisrCisrICAgICAt IGFpX2ZhbWlseSBpcyBBRl9JTkVUNiwgb3IKKysgICAgIC0gYWlfZmFtaWx5IGlzIG5vdCBBRl9J TkVULCBhbmQKKysgICAgICAgLSBzcGVjWzBdIGlzICdbJywgb3IKKysgICAgICAgLSB0aGUgbnVt YmVyIG9mICc6JyBvbiBzcGVjIGlzIGdyZWF0ZXIgdGhhbiAxLiAgKi8KKysgIGJvb2wgaXNfaXB2 NiA9IChoaW50LT5haV9mYW1pbHkgPT0gQUZfSU5FVDYKKysJCSAgfHwgKGhpbnQtPmFpX2ZhbWls eSAhPSBBRl9JTkVUCisrCQkgICAgICAmJiAoc3BlY1swXSA9PSAnWycKKysJCQkgIHx8IHN0ZDo6 Y291bnQgKHNwZWMuYmVnaW4gKCksCisrCQkJCQkgc3BlYy5lbmQgKCksICc6JykgPiAxKSkpOwor KworKyAgaWYgKGlzX2lwdjYpCisrICAgIHsKKysgICAgICBpZiAoc3BlY1swXSA9PSAnWycpCisr CXsKKysJICAvKiBJUHY2IGFkZHJlc3NlcyBjYW4gYmUgd3JpdHRlbiBhcyAnW0FERFJdOlBPUlQn LCBhbmQgd2UKKysJICAgICBzdXBwb3J0IHRoaXMgbm90YXRpb24uICAqLworKwkgIHNpemVfdCBj bG9zZV9icmFja2V0X3BvcyA9IHNwZWMuZmluZF9maXJzdF9vZiAoJ10nKTsKKysKKysJICBpZiAo Y2xvc2VfYnJhY2tldF9wb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisrCSAgICBlcnJvciAoXygi TWlzc2luZyBjbG9zZSBicmFja2V0IGluIGhvc3RuYW1lICclcyciKSwKKysJCSAgIHNwZWMuY19z dHIgKCkpOworKworKwkgIGhpbnQtPmFpX2ZhbWlseSA9IEFGX0lORVQ2OworKworKwkgIGNvbnN0 IGNoYXIgYyA9IHNwZWNbY2xvc2VfYnJhY2tldF9wb3MgKyAxXTsKKysKKysJICBpZiAoYyA9PSAn XDAnKQorKwkgICAgbGFzdF9jb2xvbl9wb3MgPSBzdGQ6OnN0cmluZzo6bnBvczsKKysJICBlbHNl IGlmIChjICE9ICc6JykKKysJICAgIGVycm9yIChfKCJJbnZhbGlkIGNydWZ0IGFmdGVyIGNsb3Nl IGJyYWNrZXQgaW4gJyVzJyIpLAorKwkJICAgc3BlYy5jX3N0ciAoKSk7CisrCisrCSAgLyogRXJh c2UgYm90aCAnWycgYW5kICddJy4gICovCisrCSAgc3BlYy5lcmFzZSAoMCwgMSk7CisrCSAgc3Bl Yy5lcmFzZSAoY2xvc2VfYnJhY2tldF9wb3MgLSAxLCAxKTsKKysJfQorKyAgICAgIGVsc2UgaWYg KHNwZWMuZmluZF9maXJzdF9vZiAoJ10nKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKysJZXJyb3Ig KF8oIk1pc3Npbmcgb3BlbiBicmFja2V0IGluIGhvc3RuYW1lICclcyciKSwKKysJICAgICAgIHNw ZWMuY19zdHIgKCkpOworKyAgICB9CisrCisrICBpZiAobGFzdF9jb2xvbl9wb3MgPT0gMCkKKysg ICAgbGFzdF9jb2xvbl9wb3MgPSBzcGVjLmZpbmRfbGFzdF9vZiAoJzonKTsKKysKKysgIC8qIFRo ZSBsZW5ndGggb2YgdGhlIGhvc3RuYW1lIHBhcnQuICAqLworKyAgc2l6ZV90IGhvc3RfbGVuOwor KworKyAgaWYgKGxhc3RfY29sb25fcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorKyAgICB7Cisr ICAgICAgLyogVGhlIHVzZXIgaGFzIHByb3ZpZGVkIGEgcG9ydC4gICovCisrICAgICAgaG9zdF9s ZW4gPSBsYXN0X2NvbG9uX3BvczsKKysgICAgICByZXQucG9ydF9zdHIgPSBzcGVjLnN1YnN0ciAo bGFzdF9jb2xvbl9wb3MgKyAxKTsKKysgICAgfQorKyAgZWxzZQorKyAgICBob3N0X2xlbiA9IHNw ZWMuc2l6ZSAoKTsKKysKKysgIHJldC5ob3N0X3N0ciA9IHNwZWMuc3Vic3RyICgwLCBob3N0X2xl bik7CisrCisrICAvKiBEZWZhdWx0IGhvc3RuYW1lIGlzIGxvY2FsaG9zdC4gICovCisrICBpZiAo cmV0Lmhvc3Rfc3RyLmVtcHR5ICgpKQorKyAgICByZXQuaG9zdF9zdHIgPSAibG9jYWxob3N0IjsK KysKKysgIHJldHVybiByZXQ7CisrfQorKworKy8qIFNlZSBjb21tb24vbmV0c3R1ZmYuaC4gICov CisrCisrcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYworK3BhcnNlX2Nvbm5lY3Rpb25fc3BlYyAoY29u c3QgY2hhciAqc3BlYywgc3RydWN0IGFkZHJpbmZvICpoaW50KQorK3sKKysgIC8qIFN0cnVjdCB0 byBob2xkIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHZhbGlkIHByZWZpeGVzLCB0aGVpcgorKyAg ICAgZmFtaWx5IGFuZCBzb2NrdHlwZS4gICovCisrICBzdHJ1Y3QgaG9zdF9wcmVmaXgKKysgICAg eworKyAgICAgIC8qIFRoZSBwcmVmaXguICAqLworKyAgICAgIGNvbnN0IGNoYXIgKnByZWZpeDsK KysKKysgICAgICAvKiBUaGUgJ2FpX2ZhbWlseScuICAqLworKyAgICAgIGludCBmYW1pbHk7Cisr CisrICAgICAgLyogVGhlICdhaV9zb2NrdHlwZScuICAqLworKyAgICAgIGludCBzb2NrdHlwZTsK KysgICAgfTsKKysgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaG9zdF9wcmVmaXggcHJlZml4ZXNbXSA9 CisrICAgIHsKKysgICAgICB7ICJ1ZHA6IiwgIEFGX1VOU1BFQywgU09DS19ER1JBTSB9LAorKyAg ICAgIHsgInRjcDoiLCAgQUZfVU5TUEVDLCBTT0NLX1NUUkVBTSB9LAorKyAgICAgIHsgInVkcDQ6 IiwgQUZfSU5FVCwgICBTT0NLX0RHUkFNIH0sCisrICAgICAgeyAidGNwNDoiLCBBRl9JTkVULCAg IFNPQ0tfU1RSRUFNIH0sCisrICAgICAgeyAidWRwNjoiLCBBRl9JTkVUNiwgIFNPQ0tfREdSQU0g fSwKKysgICAgICB7ICJ0Y3A2OiIsIEFGX0lORVQ2LCAgU09DS19TVFJFQU0gfSwKKysgICAgfTsK KysKKysgIGZvciAoY29uc3QgaG9zdF9wcmVmaXggcHJlZml4IDogcHJlZml4ZXMpCisrICAgIGlm IChzdGFydHN3aXRoIChzcGVjLCBwcmVmaXgucHJlZml4KSkKKysgICAgICB7CisrCXNwZWMgKz0g c3RybGVuIChwcmVmaXgucHJlZml4KTsKKysJaGludC0+YWlfZmFtaWx5ID0gcHJlZml4LmZhbWls eTsKKysJaGludC0+YWlfc29ja3R5cGUgPSBwcmVmaXguc29ja3R5cGU7CisrCWhpbnQtPmFpX3By b3RvY29sCisrCSAgPSBoaW50LT5haV9zb2NrdHlwZSA9PSBTT0NLX0RHUkFNID8gSVBQUk9UT19V RFAgOiBJUFBST1RPX1RDUDsKKysJYnJlYWs7CisrICAgICAgfQorKworKyAgcmV0dXJuIHBhcnNl X2Nvbm5lY3Rpb25fc3BlY193aXRob3V0X3ByZWZpeCAoc3BlYywgaGludCk7CisrfQorZGlmZiAt LWdpdCBhL2dkYi9jb21tb24vbmV0c3R1ZmYuaCBiL2dkYi9jb21tb24vbmV0c3R1ZmYuaAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9jb21tb24vbmV0c3R1 ZmYuaAorQEAgLTAsMCArMSw3NiBAQAorKy8qIE9wZXJhdGlvbnMgb24gbmV0d29yayBzdHVmZi4K KysgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWZuZGVmIE5FVFNUVUZGX0gKKysjZGVmaW5lIE5F VFNUVUZGX0gKKysKKysjaW5jbHVkZSA8c3RyaW5nPgorKworKy8qIExpa2UgTklfTUFYSE9TVC9O SV9NQVhTRVJWLCBidXQgZW5vdWdoIGZvciBudW1lcmljIGZvcm1zLiAgKi8KKysjZGVmaW5lIEdE Ql9OSV9NQVhfQUREUiA2NAorKyNkZWZpbmUgR0RCX05JX01BWF9QT1JUIDE2CisrCisrLyogSGVs cGVyIGNsYXNzIHRvIGd1YXJhbnRlZSB0aGF0IHdlIGFsd2F5cyBjYWxsICdmcmVlYWRkcmluZm8n LiAgKi8KKysKKytjbGFzcyBzY29wZWRfZnJlZV9hZGRyaW5mbworK3sKKytwdWJsaWM6CisrICAv KiBEZWZhdWx0IGNvbnN0cnVjdG9yLiAgKi8KKysgIGV4cGxpY2l0IHNjb3BlZF9mcmVlX2FkZHJp bmZvIChzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvKQorKyAgICA6IG1fcmVzIChhaW5mbykKKysgIHsK KysgIH0KKysKKysgIC8qIERlc3RydWN0b3IgcmVzcG9uc2libGUgZm9yIGZyZWUnaW5nIE1fUkVT IGJ5IGNhbGxpbmcKKysgICAgICdmcmVlYWRkcmluZm8nLiAgKi8KKysgIH5zY29wZWRfZnJlZV9h ZGRyaW5mbyAoKTsKKysKKysgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChzY29wZWRfZnJlZV9h ZGRyaW5mbyk7CisrCisrcHJpdmF0ZToKKysgIC8qIFRoZSBhZGRyaW5mbyByZXNvdXJjZS4gICov CisrICBzdHJ1Y3QgYWRkcmluZm8gKm1fcmVzOworK307CisrCisrLyogVGhlIHN0cnVjdCB3ZSBy ZXR1cm4gYWZ0ZXIgcGFyc2luZyB0aGUgY29ubmVjdGlvbiBzcGVjLiAgKi8KKysKKytzdHJ1Y3Qg cGFyc2VkX2Nvbm5lY3Rpb25fc3BlYworK3sKKysgIC8qIFRoZSBob3N0bmFtZS4gICovCisrICBz dGQ6OnN0cmluZyBob3N0X3N0cjsKKysKKysgIC8qIFRoZSBwb3J0LCBpZiBhbnkuICAqLworKyAg c3RkOjpzdHJpbmcgcG9ydF9zdHI7CisrfTsKKysKKysKKysvKiBQYXJzZSBTUEVDICh3aGljaCBp cyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAiQUREUjpQT1JUIikgYW5kCisrICAgcmV0dXJuIGEg J3BhcnNlZF9jb25uZWN0aW9uX3NwZWMnIHN0cnVjdHVyZSB3aXRoIHRoZSBwcm9wZXIgZmllbGRz CisrICAgZmlsbGVkIGluLiAgQWxzbyBhZGp1c3QgSElOVCBhY2NvcmRpbmdseS4gICovCisrZXh0 ZXJuIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMKKysgIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY193aXRo b3V0X3ByZWZpeCAoc3RkOjpzdHJpbmcgc3BlYywKKysJCQkJCXN0cnVjdCBhZGRyaW5mbyAqaGlu dCk7CisrCisrLyogUGFyc2UgU1BFQyAod2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YK KysgICAiW3RjcFs2XTp8dWRwWzZdOl1BRERSOlBPUlQiKSBhbmQgcmV0dXJuIGEgJ3BhcnNlZF9j b25uZWN0aW9uX3NwZWMnCisrICAgc3RydWN0dXJlIHdpdGggdGhlIHByb3BlciBmaWVsZHMgZmls bGVkIGluLiAgQWxzbyBhZGp1c3QgSElOVAorKyAgIGFjY29yZGluZ2x5LiAgKi8KKytleHRlcm4g cGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZV9jb25uZWN0aW9uX3NwZWMgKGNvbnN0IGNoYXIg KnNwZWMsCisrCQkJCQkJICAgICBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpOworKworKyNlbmRpZiAv KiAhIE5FVFNUVUZGX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvZG9jL0NoYW5nZUxvZyBiL2dkYi9k b2MvQ2hhbmdlTG9nCistLS0gYS9nZGIvZG9jL0NoYW5nZUxvZworKysrIGIvZ2RiL2RvYy9DaGFu Z2VMb2cKK0BAIC0xLDMgKzEsMTEgQEAKKysyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5p b3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgorKwkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWls LmNvbT4KKysJICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KKysKKysJKiBn ZGIudGV4aW5mbyAoUmVtb3RlIENvbm5lY3Rpb24gQ29tbWFuZHMpOiBBZGQgZXhwbGFuYXRpb24K KysJYWJvdXQgbmV3IElQdjYgc3VwcG9ydC4gIEFkZCBuZXcgY29ubmVjdGlvbiBwcmVmaXhlcy4K KysKKyAyMDE4LTA3LTAyICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQG1pcHMuY29tPgorIAor IAlQUiB0ZGVwLzgyODIKK2RpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbworLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9n ZGIudGV4aW5mbworQEAgLTIwNTQ4LDE2ICsyMDU0OCwyNyBAQCBJZiB5b3UncmUgdXNpbmcgYSBz ZXJpYWwgbGluZSwgeW91IG1heSB3YW50IHRvIGdpdmUgQHZhbHVle0dEQk59IHRoZQorIEBjb2Rl e3RhcmdldH0gY29tbWFuZC4KKyAKKyBAaXRlbSB0YXJnZXQgcmVtb3RlIEBjb2Rle0B2YXJ7aG9z dH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXtAdmFye1tob3N0XX06 QHZhcntwb3J0fX0KKyBAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A6QHZhcntob3N0fTpA dmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDpAdmFye1tob3N0XX06 QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A0OkB2YXJ7aG9zdH06 QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06 QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3Rd fTpAdmFye3BvcnR9fQorIEBpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle0B2YXJ7 aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXtA dmFye1tob3N0XX06QHZhcntwb3J0fX0KKyBAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBA Y29kZXt0Y3A6QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQt cmVtb3RlIEBjb2Rle3RjcDpAdmFye1tob3N0XX06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0 IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRl bXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7aG9zdH06QHZhcntwb3J0 fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt0Y3A2OkB2YXJ7W2hvc3Rd fTpAdmFye3BvcnR9fQorIEBjaW5kZXggQGFjcm9ueW17VENQfSBwb3J0LCBAY29kZXt0YXJnZXQg cmVtb3RlfQorIERlYnVnIHVzaW5nIGEgQGFjcm9ueW17VENQfSBjb25uZWN0aW9uIHRvIEB2YXJ7 cG9ydH0gb24gQHZhcntob3N0fS4KKy1UaGUgQHZhcntob3N0fSBtYXkgYmUgZWl0aGVyIGEgaG9z dCBuYW1lIG9yIGEgbnVtZXJpYyBAYWNyb255bXtJUH0KKy1hZGRyZXNzOyBAdmFye3BvcnR9IG11 c3QgYmUgYSBkZWNpbWFsIG51bWJlci4gIFRoZSBAdmFye2hvc3R9IGNvdWxkIGJlCistdGhlIHRh cmdldCBtYWNoaW5lIGl0c2VsZiwgaWYgaXQgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBu ZXQsIG9yCistaXQgbWlnaHQgYmUgYSB0ZXJtaW5hbCBzZXJ2ZXIgd2hpY2ggaW4gdHVybiBoYXMg YSBzZXJpYWwgbGluZSB0byB0aGUKKy10YXJnZXQuCisrVGhlIEB2YXJ7aG9zdH0gbWF5IGJlIGVp dGhlciBhIGhvc3QgbmFtZSwgYSBudW1lcmljIEBhY3Jvbnlte0lQdjR9CisrYWRkcmVzcywgb3Ig YSBudW1lcmljIEBhY3Jvbnlte0lQdjZ9IGFkZHJlc3MgKHdpdGggb3Igd2l0aG91dCB0aGUKKytz cXVhcmUgYnJhY2tldHMgdG8gc2VwYXJhdGUgdGhlIGFkZHJlc3MgZnJvbSB0aGUgcG9ydCk7IEB2 YXJ7cG9ydH0KKyttdXN0IGJlIGEgZGVjaW1hbCBudW1iZXIuICBUaGUgQHZhcntob3N0fSBjb3Vs ZCBiZSB0aGUgdGFyZ2V0IG1hY2hpbmUKKytpdHNlbGYsIGlmIGl0IGlzIGRpcmVjdGx5IGNvbm5l Y3RlZCB0byB0aGUgbmV0LCBvciBpdCBtaWdodCBiZSBhCisrdGVybWluYWwgc2VydmVyIHdoaWNo IGluIHR1cm4gaGFzIGEgc2VyaWFsIGxpbmUgdG8gdGhlIHRhcmdldC4KKyAKKyBGb3IgZXhhbXBs ZSwgdG8gY29ubmVjdCB0byBwb3J0IDI4Mjggb24gYSB0ZXJtaW5hbCBzZXJ2ZXIgbmFtZWQKKyBA Y29kZXttYW55ZmFybXN9OgorQEAgLTIwNTY2LDYgKzIwNTc3LDI4IEBAIEZvciBleGFtcGxlLCB0 byBjb25uZWN0IHRvIHBvcnQgMjgyOCBvbiBhIHRlcm1pbmFsIHNlcnZlciBuYW1lZAorIHRhcmdl dCByZW1vdGUgbWFueWZhcm1zOjI4MjgKKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorK1RvIGNvbm5l Y3QgdG8gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2VydmVyIHdob3NlIGFkZHJlc3MgaXMKKytA Y29kZXsyMDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzR9LCB5b3UgY2FuIGVp dGhlciB1c2UgdGhlCisrc3F1YXJlIGJyYWNrZXQgc3ludGF4OgorKworK0BzbWFsbGV4YW1wbGUK Kyt0YXJnZXQgcmVtb3RlIFsyMDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjczMzRd OjI4MjgKKytAZW5kIHNtYWxsZXhhbXBsZQorKworK0Bub2luZGVudAorK29yIGV4cGxpY2l0bHkg c3BlY2lmeSB0aGUgQGFjcm9ueW17SVB2Nn0gcHJvdG9jb2w6CisrCisrQHNtYWxsZXhhbXBsZQor K3RhcmdldCByZW1vdGUgdGNwNjoyMDAxOjBkYjg6ODVhMzowMDAwOjAwMDA6OGEyZTowMzcwOjcz MzQ6MjgyOAorK0BlbmQgc21hbGxleGFtcGxlCisrCisrVGhpcyBsYXN0IGV4YW1wbGUgbWF5IGJl IGNvbmZ1c2luZyB0byB0aGUgcmVhZGVyLCBiZWNhdXNlIHRoZXJlIGlzIG5vCisrdmlzaWJsZSBz ZXBhcmF0aW9uIGJldHdlZW4gdGhlIGhvc3RuYW1lIGFuZCB0aGUgcG9ydCBudW1iZXIuCisrVGhl cmVmb3JlLCB3ZSByZWNvbW1lbmQgdGhlIHVzZXIgdG8gcHJvdmlkZSBAYWNyb255bXtJUHY2fSBh ZGRyZXNzZXMKKyt1c2luZyBzcXVhcmUgYnJhY2tldHMgZm9yIGNsYXJpdHkuICBIb3dldmVyLCBp dCBpcyBpbXBvcnRhbnQgdG8KKyttZW50aW9uIHRoYXQgZm9yIEB2YWx1ZXtHREJOfSB0aGVyZSBp cyBubyBhbWJpZ3VpdHk6IHRoZSBudW1iZXIgYWZ0ZXIKKyt0aGUgbGFzdCBjb2xvbiBpcyBjb25z aWRlcmVkIHRvIGJlIHRoZSBwb3J0IG51bWJlci4KKysKKyBJZiB5b3VyIHJlbW90ZSB0YXJnZXQg aXMgYWN0dWFsbHkgcnVubmluZyBvbiB0aGUgc2FtZSBtYWNoaW5lIGFzIHlvdXIKKyBkZWJ1Z2dl ciBzZXNzaW9uIChlLmcuQDogYSBzaW11bGF0b3IgZm9yIHlvdXIgdGFyZ2V0IHJ1bm5pbmcgb24g dGhlCisgc2FtZSBob3N0KSwgeW91IGNhbiBvbWl0IHRoZSBob3N0bmFtZS4gIEZvciBleGFtcGxl LCB0byBjb25uZWN0IHRvCitAQCAtMjA1NzksNyArMjA2MTIsMTUgQEAgdGFyZ2V0IHJlbW90ZSA6 MTIzNAorIE5vdGUgdGhhdCB0aGUgY29sb24gaXMgc3RpbGwgcmVxdWlyZWQgaGVyZS4KKyAKKyBA aXRlbSB0YXJnZXQgcmVtb3RlIEBjb2Rle3VkcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19CisrQGl0 ZW14IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorK0Bp dGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3VkcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0Bp dGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3VkcDY6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19Cisr QGl0ZW14IHRhcmdldCBleHRlbmRlZC1yZW1vdGUgQGNvZGV7dWRwOkB2YXJ7aG9zdH06QHZhcntw b3J0fX0KKyBAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA6QHZhcntob3N0 fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDpA dmFye1tob3N0XX06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBA Y29kZXt1ZHA0OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVk LXJlbW90ZSBAY29kZXt1ZHA2OkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0 IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA2OkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorIEBj aW5kZXggQGFjcm9ueW17VURQfSBwb3J0LCBAY29kZXt0YXJnZXQgcmVtb3RlfQorIERlYnVnIHVz aW5nIEBhY3Jvbnlte1VEUH0gcGFja2V0cyB0byBAdmFye3BvcnR9IG9uIEB2YXJ7aG9zdH0uICBG b3IgZXhhbXBsZSwgdG8KKyBjb25uZWN0IHRvIEBhY3Jvbnlte1VEUH0gcG9ydCAyODI4IG9uIGEg dGVybWluYWwgc2VydmVyIG5hbWVkIEBjb2Rle21hbnlmYXJtc306CitkaWZmIC0tZ2l0IGEvZ2Ri L2dkYnNlcnZlci9DaGFuZ2VMb2cgYi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZworLS0tIGEvZ2Ri L2dkYnNlcnZlci9DaGFuZ2VMb2cKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCitAQCAt MSwzICsxLDIyIEBACisrMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lv ZGpAcmVkaGF0LmNvbT4KKysJICAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KKysJICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisrCSAg ICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisrCisrCSogTWFrZWZpbGUuaW4g KFNGSUxFUyk6IEFkZCAnJChzcmNkaXIpL2NvbW1vbi9uZXRzdHVmZi5jJy4KKysJKE9CUyk6IEFk ZCAnY29tbW9uL25ldHN0dWZmLm8nLgorKwkoR0RCUkVQTEFZX09CUyk6IExpa2V3aXNlLgorKwkq IGdkYnJlcGxheS5jOiBJbmNsdWRlICd3c3BpYXBpLmgnIGFuZCAnbmV0c3R1ZmYuaCcuCisrCShy ZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBJUHY2CisrCWNvbm5lY3Rpb25zLgor KwkqIHJlbW90ZS11dGlscy5jOiBJbmNsdWRlICduZXRzdHVmZi5oJywgJ2ZpbGVzdHVmZi5oJwor KwlhbmQgJ3dzcGlhcGkuaCcuCisrCShoYW5kbGVfYWNjZXB0X2V2ZW50KTogQWNjZXB0IGNvbm5l Y3Rpb25zIGZyb20gSVB2NiBzb3VyY2VzLgorKwkocmVtb3RlX3ByZXBhcmUpOiBIYW5kbGUgSVB2 Ni1zdHlsZSBob3N0bmFtZXM7IGltcGxlbWVudAorKwlzdXBwb3J0IGZvciBJUHY2IGNvbm5lY3Rp b25zLgorKwkocmVtb3RlX29wZW4pOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgcHJpbnRpbmcgY29u bmVjdGlvbnMgZnJvbQorKwlJUHY2IHNvdXJjZXMuCisrCisgMjAxOC0wNy0xMSAgUGVkcm8gQWx2 ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJUFIgZ2RiLzIzMzc3CitkaWZmIC0tZ2l0IGEv Z2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KKy0t LSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZp bGUuaW4KK0BAIC0yMTEsNiArMjExLDcgQEAgU0ZJTEVTID0gXAorIAkkKHNyY2RpcikvY29tbW9u L2pvYi1jb250cm9sLmMgXAorIAkkKHNyY2RpcikvY29tbW9uL2dkYl90aWxkZV9leHBhbmQuYyBc CisgCSQoc3JjZGlyKS9jb21tb24vZ2RiX3ZlY3MuYyBcCisrCSQoc3JjZGlyKS9jb21tb24vbmV0 c3R1ZmYuYyBcCisgCSQoc3JjZGlyKS9jb21tb24vbmV3LW9wLmMgXAorIAkkKHNyY2RpcikvY29t bW9uL3BhdGhzdHVmZi5jIFwKKyAJJChzcmNkaXIpL2NvbW1vbi9wcmludC11dGlscy5jIFwKK0BA IC0yNTQsNiArMjU1LDcgQEAgT0JTID0gXAorIAljb21tb24vZm9ybWF0Lm8gXAorIAljb21tb24v Z2RiX3RpbGRlX2V4cGFuZC5vIFwKKyAJY29tbW9uL2dkYl92ZWNzLm8gXAorKwljb21tb24vbmV0 c3R1ZmYubyBcCisgCWNvbW1vbi9uZXctb3AubyBcCisgCWNvbW1vbi9wYXRoc3R1ZmYubyBcCisg CWNvbW1vbi9wcmludC11dGlscy5vIFwKK0BAIC0yOTAsNiArMjkyLDcgQEAgR0RCUkVQTEFZX09C UyA9IFwKKyAJY29tbW9uL2NvbW1vbi1leGNlcHRpb25zLm8gXAorIAljb21tb24vY29tbW9uLXV0 aWxzLm8gXAorIAljb21tb24vZXJyb3JzLm8gXAorKwljb21tb24vbmV0c3R1ZmYubyBcCisgCWNv bW1vbi9wcmludC11dGlscy5vIFwKKyAJZ2RicmVwbGF5Lm8gXAorIAl1dGlscy5vIFwKK2RpZmYg LS1naXQgYS9nZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5jIGIvZ2RiL2dkYnNlcnZlci9nZGJyZXBs YXkuYworLS0tIGEvZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYworKysrIGIvZ2RiL2dkYnNlcnZl ci9nZGJyZXBsYXkuYworQEAgLTQ2LDggKzQ2LDExIEBACisgCisgI2lmIFVTRV9XSU4zMkFQSQor ICNpbmNsdWRlIDx3aW5zb2NrMi5oPgorKyNpbmNsdWRlIDx3c3BpYXBpLmg+CisgI2VuZGlmCisg CisrI2luY2x1ZGUgIm5ldHN0dWZmLmgiCisrCisgI2lmbmRlZiBIQVZFX1NPQ0tMRU5fVAorIHR5 cGVkZWYgaW50IHNvY2tsZW5fdDsKKyAjZW5kaWYKK0BAIC0xNDIsNTYgKzE0NSwxMDggQEAgcmVt b3RlX2Nsb3NlICh2b2lkKQorIHN0YXRpYyB2b2lkCisgcmVtb3RlX29wZW4gKGNoYXIgKm5hbWUp CisgeworLSAgaWYgKCFzdHJjaHIgKG5hbWUsICc6JykpCisrICBjaGFyICpsYXN0X2NvbG9uID0g c3RycmNociAobmFtZSwgJzonKTsKKysKKysgIGlmIChsYXN0X2NvbG9uID09IE5VTEwpCisgICAg IHsKKyAgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczogTXVzdCBzcGVjaWZ5IHRjcCBjb25uZWN0 aW9uIGFzIGhvc3Q6YWRkclxuIiwgbmFtZSk7CisgICAgICAgZmZsdXNoIChzdGRlcnIpOworICAg ICAgIGV4aXQgKDEpOworICAgICB9CistICBlbHNlCistICAgIHsKKysKKyAjaWZkZWYgVVNFX1dJ TjMyQVBJCistICAgICAgc3RhdGljIGludCB3aW5zb2NrX2luaXRpYWxpemVkOworKyAgc3RhdGlj IGludCB3aW5zb2NrX2luaXRpYWxpemVkOworICNlbmRpZgorLSAgICAgIGNoYXIgKnBvcnRfc3Ry OworLSAgICAgIGludCBwb3J0OworLSAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzb2NrYWRkcjsK Ky0gICAgICBzb2NrbGVuX3QgdG1wOworLSAgICAgIGludCB0bXBfZGVzYzsKKysgIGNoYXIgKnBv cnRfc3RyOworKyAgaW50IHRtcDsKKysgIGludCB0bXBfZGVzYzsKKysgIHN0cnVjdCBhZGRyaW5m byBoaW50OworKyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsKKyAKKy0gICAgICBwb3J0X3N0ciA9 IHN0cmNociAobmFtZSwgJzonKTsKKysgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkp OworKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNo b3VsZCB1c2UKKysgICAgIEFGX1VOU1BFQy4gICovCisrICBoaW50LmFpX2ZhbWlseSA9IEFGX1VO U1BFQzsKKysgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKysgIGhpbnQuYWlfcHJv dG9jb2wgPSBJUFBST1RPX1RDUDsKKyAKKy0gICAgICBwb3J0ID0gYXRvaSAocG9ydF9zdHIgKyAx KTsKKysgIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMgcGFyc2VkID0gcGFyc2VfY29ubmVjdGlvbl9z cGVjIChuYW1lLCAmaGludCk7CisrCisrICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgpKQor KyAgICBlcnJvciAoXygiTWlzc2luZyBwb3J0IG9uIGhvc3RuYW1lICclcyciKSwgbmFtZSk7Cisg CisgI2lmZGVmIFVTRV9XSU4zMkFQSQorLSAgICAgIGlmICghd2luc29ja19pbml0aWFsaXplZCkK Ky0JeworLQkgIFdTQURBVEEgd3NhZDsKKysgIGlmICghd2luc29ja19pbml0aWFsaXplZCkKKysg ICAgeworKyAgICAgIFdTQURBVEEgd3NhZDsKKyAKKy0JICBXU0FTdGFydHVwIChNQUtFV09SRCAo MSwgMCksICZ3c2FkKTsKKy0JICB3aW5zb2NrX2luaXRpYWxpemVkID0gMTsKKy0JfQorKyAgICAg IFdTQVN0YXJ0dXAgKE1BS0VXT1JEICgxLCAwKSwgJndzYWQpOworKyAgICAgIHdpbnNvY2tfaW5p dGlhbGl6ZWQgPSAxOworKyAgICB9CisgI2VuZGlmCisgCistICAgICAgdG1wX2Rlc2MgPSBzb2Nr ZXQgKFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKKy0gICAgICBpZiAodG1wX2Rlc2MgPT0gLTEp CistCXBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBvcGVuIHNvY2tldCIpOworKyAgaW50IHIgPSBn ZXRhZGRyaW5mbyAocGFyc2VkLmhvc3Rfc3RyLmNfc3RyICgpLCBwYXJzZWQucG9ydF9zdHIuY19z dHIgKCksCisrCQkgICAgICAgJmhpbnQsICZhaW5mbyk7CisgCistICAgICAgLyogQWxsb3cgcmFw aWQgcmV1c2Ugb2YgdGhpcyBwb3J0LiAqLworLSAgICAgIHRtcCA9IDE7CistICAgICAgc2V0c29j a29wdCAodG1wX2Rlc2MsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgKGNoYXIgKikgJnRtcCwK Ky0JCSAgc2l6ZW9mICh0bXApKTsKKysgIGlmIChyICE9IDApCisrICAgIHsKKysgICAgICBmcHJp bnRmIChzdGRlcnIsICIlczolczogY2Fubm90IHJlc29sdmUgbmFtZTogJXNcbiIsCisrCSAgICAg ICBwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBhcnNlZC5wb3J0X3N0ci5jX3N0ciAoKSwKKysJ ICAgICAgIGdhaV9zdHJlcnJvciAocikpOworKyAgICAgIGZmbHVzaCAoc3RkZXJyKTsKKysgICAg ICBleGl0ICgxKTsKKysgICAgfQorKworKyAgc2NvcGVkX2ZyZWVfYWRkcmluZm8gZnJlZV9haW5m byAoYWluZm8pOworKworKyAgc3RydWN0IGFkZHJpbmZvICpwOworKworKyAgZm9yIChwID0gYWlu Zm87IHAgIT0gTlVMTDsgcCA9IHAtPmFpX25leHQpCisrICAgIHsKKysgICAgICB0bXBfZGVzYyA9 IHNvY2tldCAocC0+YWlfZmFtaWx5LCBwLT5haV9zb2NrdHlwZSwgcC0+YWlfcHJvdG9jb2wpOwor IAorLSAgICAgIHNvY2thZGRyLnNpbl9mYW1pbHkgPSBQRl9JTkVUOworLSAgICAgIHNvY2thZGRy LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOworLSAgICAgIHNvY2thZGRyLnNpbl9hZGRyLnNfYWRk ciA9IElOQUREUl9BTlk7CisrICAgICAgaWYgKHRtcF9kZXNjID49IDApCisrCWJyZWFrOworKyAg ICB9CisrCisrICBpZiAocCA9PSBOVUxMKQorKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2Fubm90 IG9wZW4gc29ja2V0Iik7CisgCistICAgICAgaWYgKGJpbmQgKHRtcF9kZXNjLCAoc3RydWN0IHNv Y2thZGRyICopICZzb2NrYWRkciwgc2l6ZW9mIChzb2NrYWRkcikpCistCSAgfHwgbGlzdGVuICh0 bXBfZGVzYywgMSkpCistCXBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsK KysgIC8qIEFsbG93IHJhcGlkIHJldXNlIG9mIHRoaXMgcG9ydC4gKi8KKysgIHRtcCA9IDE7Cisr ICBzZXRzb2Nrb3B0ICh0bXBfZGVzYywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCAoY2hhciAq KSAmdG1wLAorKwkgICAgICBzaXplb2YgKHRtcCkpOworKworKyAgc3dpdGNoIChwLT5haV9mYW1p bHkpCisrICAgIHsKKysgICAgY2FzZSBBRl9JTkVUOgorKyAgICAgICgoc3RydWN0IHNvY2thZGRy X2luICopIHAtPmFpX2FkZHIpLT5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIEFGX0lORVQ2OgorKyAgICAgICgoc3RydWN0IHNvY2thZGRyX2lu NiAqKSBwLT5haV9hZGRyKS0+c2luNl9hZGRyID0gaW42YWRkcl9hbnk7CisrICAgICAgYnJlYWs7 CisrICAgIGRlZmF1bHQ6CisrICAgICAgZnByaW50ZiAoc3RkZXJyLCAiSW52YWxpZCAnYWlfZmFt aWx5JyAlZFxuIiwgcC0+YWlfZmFtaWx5KTsKKysgICAgICBleGl0ICgxKTsKKysgICAgfQorKwor KyAgaWYgKGJpbmQgKHRtcF9kZXNjLCBwLT5haV9hZGRyLCBwLT5haV9hZGRybGVuKSAhPSAwKQor KyAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgYmluZCBhZGRyZXNzIik7CisrCisrICBpZiAo cC0+YWlfc29ja3R5cGUgPT0gU09DS19ER1JBTSkKKysgICAgcmVtb3RlX2Rlc2MgPSB0bXBfZGVz YzsKKysgIGVsc2UKKysgICAgeworKyAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2th ZGRyOworKyAgICAgIHNvY2tsZW5fdCBzb2NrYWRkcnNpemUgPSBzaXplb2YgKHNvY2thZGRyKTsK KysgICAgICBjaGFyIG9yaWdfaG9zdFtHREJfTklfTUFYX0FERFJdLCBvcmlnX3BvcnRbR0RCX05J X01BWF9QT1JUXTsKKysKKysgICAgICBpZiAobGlzdGVuICh0bXBfZGVzYywgMSkgIT0gMCkKKysJ cGVycm9yX3dpdGhfbmFtZSAoIkNhbid0IGxpc3RlbiBvbiBzb2NrZXQiKTsKKysKKysgICAgICBy ZW1vdGVfZGVzYyA9IGFjY2VwdCAodG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2th ZGRyLAorKwkJCSAgICAmc29ja2FkZHJzaXplKTsKKyAKKy0gICAgICB0bXAgPSBzaXplb2YgKHNv Y2thZGRyKTsKKy0gICAgICByZW1vdGVfZGVzYyA9IGFjY2VwdCAodG1wX2Rlc2MsIChzdHJ1Y3Qg c29ja2FkZHIgKikgJnNvY2thZGRyLCAmdG1wKTsKKyAgICAgICBpZiAocmVtb3RlX2Rlc2MgPT0g LTEpCisgCXBlcnJvcl93aXRoX25hbWUgKCJBY2NlcHQgZmFpbGVkIik7CisgCitAQCAtMjA2LDYg KzI2MSwxNiBAQCByZW1vdGVfb3BlbiAoY2hhciAqbmFtZSkKKyAgICAgICBzZXRzb2Nrb3B0IChy ZW1vdGVfZGVzYywgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLAorIAkJICAoY2hhciAqKSAmdG1w LCBzaXplb2YgKHRtcCkpOworIAorKyAgICAgIGlmIChnZXRuYW1laW5mbyAoKHN0cnVjdCBzb2Nr YWRkciAqKSAmc29ja2FkZHIsIHNvY2thZGRyc2l6ZSwKKysJCSAgICAgICBvcmlnX2hvc3QsIHNp emVvZiAob3JpZ19ob3N0KSwKKysJCSAgICAgICBvcmlnX3BvcnQsIHNpemVvZiAob3JpZ19wb3J0 KSwKKysJCSAgICAgICBOSV9OVU1FUklDSE9TVCB8IE5JX05VTUVSSUNTRVJWKSA9PSAwKQorKwl7 CisrCSAgZnByaW50ZiAoc3RkZXJyLCAiUmVtb3RlIGRlYnVnZ2luZyBmcm9tIGhvc3QgJXMsIHBv cnQgJXNcbiIsCisrCQkgICBvcmlnX2hvc3QsIG9yaWdfcG9ydCk7CisrCSAgZmZsdXNoIChzdGRl cnIpOworKwl9CisrCisgI2lmbmRlZiBVU0VfV0lOMzJBUEkKKyAgICAgICBjbG9zZSAodG1wX2Rl c2MpOwkJLyogTm8gbG9uZ2VyIG5lZWQgdGhpcyAqLworIAorZGlmZiAtLWdpdCBhL2dkYi9nZGJz ZXJ2ZXIvcmVtb3RlLXV0aWxzLmMgYi9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCistLS0g YS9nZGIvZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL3JlbW90 ZS11dGlscy5jCitAQCAtMjYsNiArMjYsOCBAQAorICNpbmNsdWRlICJkbGwuaCIKKyAjaW5jbHVk ZSAicnNwLWxvdy5oIgorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKysjaW5jbHVkZSAibmV0c3R1 ZmYuaCIKKysjaW5jbHVkZSAiZmlsZXN0dWZmLmgiCisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2lm IEhBVkVfU1lTX0lPQ1RMX0gKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CitAQCAtNjMsNiArNjUs NyBAQAorIAorICNpZiBVU0VfV0lOMzJBUEkKKyAjaW5jbHVkZSA8d2luc29jazIuaD4KKysjaW5j bHVkZSA8d3NwaWFwaS5oPgorICNlbmRpZgorIAorICNpZiBfX1FOWF9fCitAQCAtMTUxLDE5ICsx NTQsMTggQEAgZW5hYmxlX2FzeW5jX25vdGlmaWNhdGlvbiAoaW50IGZkKQorIHN0YXRpYyBpbnQK KyBoYW5kbGVfYWNjZXB0X2V2ZW50IChpbnQgZXJyLCBnZGJfY2xpZW50X2RhdGEgY2xpZW50X2Rh dGEpCisgeworLSAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOworLSAgc29ja2xlbl90IHRt cDsKKysgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyOworKyAgc29ja2xlbl90IGxl biA9IHNpemVvZiAoc29ja2FkZHIpOworIAorICAgaWYgKGRlYnVnX3RocmVhZHMpCisgICAgIGRl YnVnX3ByaW50ZiAoImhhbmRsaW5nIHBvc3NpYmxlIGFjY2VwdCBldmVudFxuIik7CisgCistICB0 bXAgPSBzaXplb2YgKHNvY2thZGRyKTsKKy0gIHJlbW90ZV9kZXNjID0gYWNjZXB0IChsaXN0ZW5f ZGVzYywgKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsICZ0bXApOworKyAgcmVtb3RlX2Rl c2MgPSBhY2NlcHQgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwg Jmxlbik7CisgICBpZiAocmVtb3RlX2Rlc2MgPT0gLTEpCisgICAgIHBlcnJvcl93aXRoX25hbWUg KCJBY2NlcHQgZmFpbGVkIik7CisgCisgICAvKiBFbmFibGUgVENQIGtlZXAgYWxpdmUgcHJvY2Vz cy4gKi8KKy0gIHRtcCA9IDE7CisrICBzb2NrbGVuX3QgdG1wID0gMTsKKyAgIHNldHNvY2tvcHQg KHJlbW90ZV9kZXNjLCBTT0xfU09DS0VULCBTT19LRUVQQUxJVkUsCisgCSAgICAgIChjaGFyICop ICZ0bXAsIHNpemVvZiAodG1wKSk7CisgCitAQCAtMTkyLDggKzE5NCwxOSBAQCBoYW5kbGVfYWNj ZXB0X2V2ZW50IChpbnQgZXJyLCBnZGJfY2xpZW50X2RhdGEgY2xpZW50X2RhdGEpCisgICBkZWxl dGVfZmlsZV9oYW5kbGVyIChsaXN0ZW5fZGVzYyk7CisgCisgICAvKiBDb252ZXJ0IElQIGFkZHJl c3MgdG8gc3RyaW5nLiAgKi8KKy0gIGZwcmludGYgKHN0ZGVyciwgIlJlbW90ZSBkZWJ1Z2dpbmcg ZnJvbSBob3N0ICVzXG4iLAorLQkgICBpbmV0X250b2EgKHNvY2thZGRyLnNpbl9hZGRyKSk7Cisr ICBjaGFyIG9yaWdfaG9zdFtHREJfTklfTUFYX0FERFJdLCBvcmlnX3BvcnRbR0RCX05JX01BWF9Q T1JUXTsKKysKKysgIGludCByID0gZ2V0bmFtZWluZm8gKChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNv Y2thZGRyLCBsZW4sCisrCQkgICAgICAgb3JpZ19ob3N0LCBzaXplb2YgKG9yaWdfaG9zdCksCisr CQkgICAgICAgb3JpZ19wb3J0LCBzaXplb2YgKG9yaWdfcG9ydCksCisrCQkgICAgICAgTklfTlVN RVJJQ0hPU1QgfCBOSV9OVU1FUklDU0VSVik7CisrCisrICBpZiAociAhPSAwKQorKyAgICBmcHJp bnRmIChzdGRlcnIsIF8oIkNvdWxkIG5vdCBvYnRhaW4gcmVtb3RlIGFkZHJlc3M6ICVzXG4iKSwK KysJICAgICBnYWlfc3RyZXJyb3IgKHIpKTsKKysgIGVsc2UKKysgICAgZnByaW50ZiAoc3RkZXJy LCBfKCJSZW1vdGUgZGVidWdnaW5nIGZyb20gaG9zdCAlcywgcG9ydCAlc1xuIiksCisrCSAgICAg b3JpZ19ob3N0LCBvcmlnX3BvcnQpOworIAorICAgZW5hYmxlX2FzeW5jX25vdGlmaWNhdGlvbiAo cmVtb3RlX2Rlc2MpOworIAorQEAgLTIyMiwxMCArMjM1LDcgQEAgcmVtb3RlX3ByZXBhcmUgKGNv bnN0IGNoYXIgKm5hbWUpCisgI2lmZGVmIFVTRV9XSU4zMkFQSQorICAgc3RhdGljIGludCB3aW5z b2NrX2luaXRpYWxpemVkOworICNlbmRpZgorLSAgaW50IHBvcnQ7CistICBzdHJ1Y3Qgc29ja2Fk ZHJfaW4gc29ja2FkZHI7CisgICBzb2NrbGVuX3QgdG1wOworLSAgY2hhciAqcG9ydF9lbmQ7Cisg CisgICByZW1vdGVfaXNfc3RkaW8gPSAwOworICAgaWYgKHN0cmNtcCAobmFtZSwgU1RESU9fQ09O TkVDVElPTl9OQU1FKSA9PSAwKQorQEAgLTIzOCwxNyArMjQ4LDI1IEBAIHJlbW90ZV9wcmVwYXJl IChjb25zdCBjaGFyICpuYW1lKQorICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgcG9ydF9z dHIgPSBzdHJjaHIgKG5hbWUsICc6Jyk7CistICBpZiAocG9ydF9zdHIgPT0gTlVMTCkKKysgIHN0 cnVjdCBhZGRyaW5mbyBoaW50OworKyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsKKysKKysgIG1l bXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkpOworKyAgLyogQXNzdW1lIG5vIHByZWZpeCB3 aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKKysgICAgIEFGX1VOU1BFQy4g ICovCisrICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKKysgIGhpbnQuYWlfc29ja3R5cGUg PSBTT0NLX1NUUkVBTTsKKysgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKKysKKysg IHBhcnNlZF9jb25uZWN0aW9uX3NwZWMgcGFyc2VkCisrICAgID0gcGFyc2VfY29ubmVjdGlvbl9z cGVjX3dpdGhvdXRfcHJlZml4IChuYW1lLCAmaGludCk7CisrCisrICBpZiAocGFyc2VkLnBvcnRf c3RyLmVtcHR5ICgpKQorICAgICB7CisgICAgICAgY3MudHJhbnNwb3J0X2lzX3JlbGlhYmxlID0g MDsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gIHBvcnQgPSBzdHJ0b3VsIChwb3J0X3N0 ciArIDEsICZwb3J0X2VuZCwgMTApOworLSAgaWYgKHBvcnRfc3RyWzFdID09ICdcMCcgfHwgKnBv cnRfZW5kICE9ICdcMCcpCistICAgIGVycm9yICgiQmFkIHBvcnQgYXJndW1lbnQ6ICVzIiwgbmFt ZSk7CistCisgI2lmZGVmIFVTRV9XSU4zMkFQSQorICAgaWYgKCF3aW5zb2NrX2luaXRpYWxpemVk KQorICAgICB7CitAQCAtMjU5LDggKzI3NywyNiBAQCByZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hh ciAqbmFtZSkKKyAgICAgfQorICNlbmRpZgorIAorLSAgbGlzdGVuX2Rlc2MgPSBzb2NrZXQgKFBG X0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7CistICBpZiAobGlzdGVuX2Rlc2MgPT0g LTEpCisrICBpbnQgciA9IGdldGFkZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBh cnNlZC5wb3J0X3N0ci5jX3N0ciAoKSwKKysJCSAgICAgICAmaGludCwgJmFpbmZvKTsKKysKKysg IGlmIChyICE9IDApCisrICAgIGVycm9yIChfKCIlczogY2Fubm90IHJlc29sdmUgbmFtZTogJXMi KSwgbmFtZSwgZ2FpX3N0cmVycm9yIChyKSk7CisrCisrICBzY29wZWRfZnJlZV9hZGRyaW5mbyBm cmVlYWRkcmluZm8gKGFpbmZvKTsKKysKKysgIHN0cnVjdCBhZGRyaW5mbyAqaXRlcjsKKysKKysg IGZvciAoaXRlciA9IGFpbmZvOyBpdGVyICE9IE5VTEw7IGl0ZXIgPSBpdGVyLT5haV9uZXh0KQor KyAgICB7CisrICAgICAgbGlzdGVuX2Rlc2MgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKGl0ZXItPmFp X2ZhbWlseSwgaXRlci0+YWlfc29ja3R5cGUsCisrCQkJCQlpdGVyLT5haV9wcm90b2NvbCk7Cisr CisrICAgICAgaWYgKGxpc3Rlbl9kZXNjID49IDApCisrCWJyZWFrOworKyAgICB9CisrCisrICBp ZiAoaXRlciA9PSBOVUxMKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3Qgb3BlbiBzb2Nr ZXQiKTsKKyAKKyAgIC8qIEFsbG93IHJhcGlkIHJldXNlIG9mIHRoaXMgcG9ydC4gKi8KK0BAIC0y NjgsMTQgKzMwNCwyNSBAQCByZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKKyAgIHNl dHNvY2tvcHQgKGxpc3Rlbl9kZXNjLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIChjaGFyICop ICZ0bXAsCisgCSAgICAgIHNpemVvZiAodG1wKSk7CisgCistICBzb2NrYWRkci5zaW5fZmFtaWx5 ID0gUEZfSU5FVDsKKy0gIHNvY2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOworLSAgc29j a2FkZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKKysgIHN3aXRjaCAoaXRlci0+YWlf ZmFtaWx5KQorKyAgICB7CisrICAgIGNhc2UgQUZfSU5FVDoKKysgICAgICAoKHN0cnVjdCBzb2Nr YWRkcl9pbiAqKSBpdGVyLT5haV9hZGRyKS0+c2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsK KysgICAgICBicmVhazsKKysgICAgY2FzZSBBRl9JTkVUNjoKKysgICAgICAoKHN0cnVjdCBzb2Nr YWRkcl9pbjYgKikgaXRlci0+YWlfYWRkciktPnNpbjZfYWRkciA9IGluNmFkZHJfYW55OworKyAg ICAgIGJyZWFrOworKyAgICBkZWZhdWx0OgorKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sCisrCQkgICAgICBfKCJJbnZhbGlkICdhaV9mYW1pbHknICVkXG4iKSwgaXRl ci0+YWlfZmFtaWx5KTsKKysgICAgfQorIAorLSAgaWYgKGJpbmQgKGxpc3Rlbl9kZXNjLCAoc3Ry dWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgc2l6ZW9mIChzb2NrYWRkcikpCistICAgICAgfHwg bGlzdGVuIChsaXN0ZW5fZGVzYywgMSkpCisrICBpZiAoYmluZCAobGlzdGVuX2Rlc2MsIGl0ZXIt PmFpX2FkZHIsIGl0ZXItPmFpX2FkZHJsZW4pICE9IDApCisgICAgIHBlcnJvcl93aXRoX25hbWUg KCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsKKyAKKysgIGlmIChsaXN0ZW4gKGxpc3Rlbl9kZXNjLCAx KSAhPSAwKQorKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgbGlzdGVuIG9uIHNvY2tldCIp OworKworICAgY3MudHJhbnNwb3J0X2lzX3JlbGlhYmxlID0gMTsKKyB9CisgCitAQCAtMzUwLDE4 ICszOTcsMjQgQEAgcmVtb3RlX29wZW4gKGNvbnN0IGNoYXIgKm5hbWUpCisgI2VuZGlmIC8qIFVT RV9XSU4zMkFQSSAqLworICAgZWxzZQorICAgICB7CistICAgICAgaW50IHBvcnQ7CistICAgICAg c29ja2xlbl90IGxlbjsKKy0gICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7CistCist ICAgICAgbGVuID0gc2l6ZW9mIChzb2NrYWRkcik7CistICAgICAgaWYgKGdldHNvY2tuYW1lIChs aXN0ZW5fZGVzYywKKy0JCSAgICAgICAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJmxl bikgPCAwCistCSAgfHwgbGVuIDwgc2l6ZW9mIChzb2NrYWRkcikpCisrICAgICAgY2hhciBsaXN0 ZW5fcG9ydFtHREJfTklfTUFYX1BPUlRdOworKyAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdl IHNvY2thZGRyOworKyAgICAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2YgKHNvY2thZGRyKTsKKysK KysgICAgICBpZiAoZ2V0c29ja25hbWUgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICop ICZzb2NrYWRkciwgJmxlbikgPCAwKQorIAlwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgZGV0ZXJt aW5lIHBvcnQiKTsKKy0gICAgICBwb3J0ID0gbnRvaHMgKHNvY2thZGRyLnNpbl9wb3J0KTsKKyAK Ky0gICAgICBmcHJpbnRmIChzdGRlcnIsICJMaXN0ZW5pbmcgb24gcG9ydCAlZFxuIiwgcG9ydCk7 CisrICAgICAgaW50IHIgPSBnZXRuYW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2Fk ZHIsIGxlbiwKKysJCQkgICBOVUxMLCAwLAorKwkJCSAgIGxpc3Rlbl9wb3J0LCBzaXplb2YgKGxp c3Rlbl9wb3J0KSwKKysJCQkgICBOSV9OVU1FUklDU0VSVik7CisrCisrICAgICAgaWYgKHIgIT0g MCkKKysJZnByaW50ZiAoc3RkZXJyLCBfKCJDYW4ndCBvYnRhaW4gcG9ydCB3aGVyZSB3ZSBhcmUg bGlzdGVuaW5nOiAlcyIpLAorKwkJIGdhaV9zdHJlcnJvciAocikpOworKyAgICAgIGVsc2UKKysJ ZnByaW50ZiAoc3RkZXJyLCBfKCJMaXN0ZW5pbmcgb24gcG9ydCAlc1xuIiksIGxpc3Rlbl9wb3J0 KTsKKysKKyAgICAgICBmZmx1c2ggKHN0ZGVycik7CisgCisgICAgICAgLyogUmVnaXN0ZXIgdGhl IGV2ZW50IGxvb3AgaGFuZGxlci4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3Nlci10Y3AuYyBiL2dk Yi9zZXItdGNwLmMKKy0tLSBhL2dkYi9zZXItdGNwLmMKKysrKyBiL2dkYi9zZXItdGNwLmMKK0BA IC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUg ImNsaS9jbGktc2V0c2hvdy5oIgorICNpbmNsdWRlICJmaWxlc3R1ZmYuaCIKKysjaW5jbHVkZSAi bmV0c3R1ZmYuaCIKKyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCitAQCAtMzksNiArNDAs NyBAQAorIAorICNpZmRlZiBVU0VfV0lOMzJBUEkKKyAjaW5jbHVkZSA8d2luc29jazIuaD4KKysj aW5jbHVkZSA8d3NwaWFwaS5oPgorICNpZm5kZWYgRVRJTUVET1VUCisgI2RlZmluZSBFVElNRURP VVQgV1NBRVRJTUVET1VUCisgI2VuZGlmCitAQCAtODEsMTIgKzgzLDEzIEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgdGNwX3JldHJ5X2xpbWl0ID0gMTU7CisgCisgI2RlZmluZSBQT0xMX0lOVEVSVkFM IDUKKyAKKy0vKiBIZWxwZXIgZnVuY3Rpb24gdG8gd2FpdCBhIHdoaWxlLiAgSWYgU0NCIGlzIG5v bi1udWxsLCB3YWl0IG9uIGl0cworLSAgIGZpbGUgZGVzY3JpcHRvci4gIE90aGVyd2lzZSBqdXN0 IHdhaXQgb24gYSB0aW1lb3V0LCB1cGRhdGluZyAqUE9MTFMuCistICAgUmV0dXJucyAtMSBvbiB0 aW1lb3V0IG9yIGludGVycnVwdCwgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiBzZWxlY3QuICAqLwor Ky8qIEhlbHBlciBmdW5jdGlvbiB0byB3YWl0IGEgd2hpbGUuICBJZiBTT0NLIGlzIG5vdCAtMSwg d2FpdCBvbiBpdHMKKysgICBmaWxlIGRlc2NyaXB0b3IuICBPdGhlcndpc2UganVzdCB3YWl0IG9u IGEgdGltZW91dCwgdXBkYXRpbmcKKysgICAqUE9MTFMuICBSZXR1cm5zIC0xIG9uIHRpbWVvdXQg b3IgaW50ZXJydXB0LCBvdGhlcndpc2UgdGhlIHZhbHVlIG9mCisrICAgc2VsZWN0LiAgKi8KKyAK KyBzdGF0aWMgaW50Cistd2FpdF9mb3JfY29ubmVjdCAoc3RydWN0IHNlcmlhbCAqc2NiLCB1bnNp Z25lZCBpbnQgKnBvbGxzKQorK3dhaXRfZm9yX2Nvbm5lY3QgKGludCBzb2NrLCB1bnNpZ25lZCBp bnQgKnBvbGxzKQorIHsKKyAgIHN0cnVjdCB0aW1ldmFsIHQ7CisgICBpbnQgbjsKK0BAIC0xMjAs MjQgKzEyMywyNCBAQCB3YWl0X2Zvcl9jb25uZWN0IChzdHJ1Y3Qgc2VyaWFsICpzY2IsIHVuc2ln bmVkIGludCAqcG9sbHMpCisgICAgICAgdC50dl91c2VjID0gMDsKKyAgICAgfQorIAorLSAgaWYg KHNjYikKKysgIGlmIChzb2NrID49IDApCisgICAgIHsKKyAgICAgICBmZF9zZXQgcnNldCwgd3Nl dCwgZXNldDsKKyAKKyAgICAgICBGRF9aRVJPICgmcnNldCk7CistICAgICAgRkRfU0VUIChzY2It PmZkLCAmcnNldCk7CisrICAgICAgRkRfU0VUIChzb2NrLCAmcnNldCk7CisgICAgICAgd3NldCA9 IHJzZXQ7CisgICAgICAgZXNldCA9IHJzZXQ7CistCSAgCisrCisgICAgICAgLyogUE9TSVggc3lz dGVtcyByZXR1cm4gY29ubmVjdGlvbiBzdWNjZXNzIG9yIGZhaWx1cmUgYnkgc2lnbmFsbGluZwor IAkgd3NldC4gIFdpbmRvd3Mgc3lzdGVtcyByZXR1cm4gc3VjY2VzcyBpbiB3c2V0IGFuZCBmYWls dXJlIGluCisgCSBlc2V0LgorLSAgICAgCisrCisgCSBXZSBtdXN0IGNhbGwgc2VsZWN0IGhlcmUs IHJhdGhlciB0aGFuIGdkYl9zZWxlY3QsIGJlY2F1c2UKKyAJIHRoZSBzZXJpYWwgc3RydWN0dXJl IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQgLSB0aGUKKyAJIE1pbkdXIHNlbGVjdCB3cmFw cGVyIHdpbGwgbm90IGtub3cgdGhhdCB0aGlzIEZEIHJlZmVycworIAkgdG8gYSBzb2NrZXQuICAq LworLSAgICAgIG4gPSBzZWxlY3QgKHNjYi0+ZmQgKyAxLCAmcnNldCwgJndzZXQsICZlc2V0LCAm dCk7CisrICAgICAgbiA9IHNlbGVjdCAoc29jayArIDEsICZyc2V0LCAmd3NldCwgJmVzZXQsICZ0 KTsKKyAgICAgfQorICAgZWxzZQorICAgICAvKiBVc2UgZ2RiX3NlbGVjdCBoZXJlLCBzaW5jZSB3 ZSBoYXZlIG5vIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCBvbgorQEAgLTE1Myw4MCArMTU2LDI4IEBA IHdhaXRfZm9yX2Nvbm5lY3QgKHN0cnVjdCBzZXJpYWwgKnNjYiwgdW5zaWduZWQgaW50ICpwb2xs cykKKyAgIHJldHVybiBuOworIH0KKyAKKy0vKiBPcGVuIGEgdGNwIHNvY2tldC4gICovCisrLyog VHJ5IHRvIGNvbm5lY3QgdG8gdGhlIGhvc3QgcmVwcmVzZW50ZWQgYnkgQUlORk8uICBJZiB0aGUg Y29ubmVjdGlvbgorKyAgIHN1Y2NlZWRzLCByZXR1cm4gaXRzIHNvY2tldC4gIE90aGVyd2lzZSwg cmV0dXJuIC0xIGFuZCBzZXQgRVJSTk8KKysgICBhY2NvcmRpbmdseS4gIFBPTExTIGlzIHVzZWQg d2hlbiAnY29ubmVjdCcgcmV0dXJucyBFSU5QUk9HUkVTUywgYW5kCisrICAgd2UgbmVlZCB0byBp bnZva2UgJ3dhaXRfZm9yX2Nvbm5lY3QnIHRvIG9idGFpbiB0aGUgc3RhdHVzLiAgKi8KKyAKKy1p bnQKKy1uZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQorK3N0 YXRpYyBpbnQKKyt0cnlfY29ubmVjdCAoY29uc3Qgc3RydWN0IGFkZHJpbmZvICphaW5mbywgdW5z aWduZWQgaW50ICpwb2xscykKKyB7CistICBjaGFyIGhvc3RuYW1lWzEwMF07CistICBjb25zdCBj aGFyICpwb3J0X3N0cjsKKy0gIGludCBuLCBwb3J0LCB0bXA7CistICBpbnQgdXNlX3VkcDsKKy0g IHN0cnVjdCBob3N0ZW50ICpob3N0ZW50OworLSAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRy OworLSNpZmRlZiBVU0VfV0lOMzJBUEkKKy0gIHVfbG9uZyBpb2FyZzsKKy0jZWxzZQorLSAgaW50 IGlvYXJnOworLSNlbmRpZgorLSAgdW5zaWduZWQgaW50IHBvbGxzID0gMDsKKy0KKy0gIHVzZV91 ZHAgPSAwOworLSAgaWYgKHN0YXJ0c3dpdGggKG5hbWUsICJ1ZHA6IikpCistICAgIHsKKy0gICAg ICB1c2VfdWRwID0gMTsKKy0gICAgICBuYW1lID0gbmFtZSArIDQ7CistICAgIH0KKy0gIGVsc2Ug aWYgKHN0YXJ0c3dpdGggKG5hbWUsICJ0Y3A6IikpCistICAgIG5hbWUgPSBuYW1lICsgNDsKKy0K Ky0gIHBvcnRfc3RyID0gc3RyY2hyIChuYW1lLCAnOicpOworLQorLSAgaWYgKCFwb3J0X3N0cikK Ky0gICAgZXJyb3IgKF8oIm5ldF9vcGVuOiBObyBjb2xvbiBpbiBob3N0IG5hbWUhIikpOyAgLyog U2hvdWxkbid0IGV2ZXIKKy0JCQkJCQkgICAgICAgaGFwcGVuLiAgKi8KKy0KKy0gIHRtcCA9IHN0 ZDo6bWluIChwb3J0X3N0ciAtIG5hbWUsIChwdHJkaWZmX3QpIHNpemVvZiBob3N0bmFtZSAtIDEp OworLSAgc3RybmNweSAoaG9zdG5hbWUsIG5hbWUsIHRtcCk7CS8qIERvbid0IHdhbnQgY29sb24u ICAqLworLSAgaG9zdG5hbWVbdG1wXSA9ICdcMDAwJzsJLyogVGllIG9mZiBob3N0IG5hbWUuICAq LworLSAgcG9ydCA9IGF0b2kgKHBvcnRfc3RyICsgMSk7CistCistICAvKiBEZWZhdWx0IGhvc3Ru YW1lIGlzIGxvY2FsaG9zdC4gICovCistICBpZiAoIWhvc3RuYW1lWzBdKQorLSAgICBzdHJjcHkg KGhvc3RuYW1lLCAibG9jYWxob3N0Iik7CistCistICBob3N0ZW50ID0gZ2V0aG9zdGJ5bmFtZSAo aG9zdG5hbWUpOworLSAgaWYgKCFob3N0ZW50KQorLSAgICB7CistICAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkZXJyLCAiJXM6IHVua25vd24gaG9zdFxuIiwgaG9zdG5hbWUpOworLSAg ICAgIGVycm5vID0gRU5PRU5UOworLSAgICAgIHJldHVybiAtMTsKKy0gICAgfQorKyAgaW50IHNv Y2sgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKGFpbmZvLT5haV9mYW1pbHksIGFpbmZvLT5haV9zb2Nr dHlwZSwKKysJCQkJIGFpbmZvLT5haV9wcm90b2NvbCk7CisgCistICBzb2NrYWRkci5zaW5fZmFt aWx5ID0gUEZfSU5FVDsKKy0gIHNvY2thZGRyLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOworLSAg bWVtY3B5ICgmc29ja2FkZHIuc2luX2FkZHIuc19hZGRyLCBob3N0ZW50LT5oX2FkZHIsCistCSAg c2l6ZW9mIChzdHJ1Y3QgaW5fYWRkcikpOworLQorLSByZXRyeToKKy0KKy0gIGlmICh1c2VfdWRw KQorLSAgICBzY2ItPmZkID0gZ2RiX3NvY2tldF9jbG9leGVjIChQRl9JTkVULCBTT0NLX0RHUkFN LCAwKTsKKy0gIGVsc2UKKy0gICAgc2NiLT5mZCA9IGdkYl9zb2NrZXRfY2xvZXhlYyAoUEZfSU5F VCwgU09DS19TVFJFQU0sIDApOworLQorLSAgaWYgKHNjYi0+ZmQgPT0gLTEpCisrICBpZiAoc29j ayA8IDApCisgICAgIHJldHVybiAtMTsKKy0gIAorKworICAgLyogU2V0IHNvY2tldCBub25ibG9j a2luZy4gICovCistICBpb2FyZyA9IDE7CistICBpb2N0bCAoc2NiLT5mZCwgRklPTkJJTywgJmlv YXJnKTsKKysgIGludCBpb2FyZyA9IDE7CisrCisrICBpb2N0bCAoc29jaywgRklPTkJJTywgJmlv YXJnKTsKKyAKKyAgIC8qIFVzZSBOb24tYmxvY2tpbmcgY29ubmVjdC4gIGNvbm5lY3QoKSB3aWxs IHJldHVybiAwIGlmIGNvbm5lY3RlZAorICAgICAgYWxyZWFkeS4gICovCistICBuID0gY29ubmVj dCAoc2NiLT5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIHNpemVvZiAoc29ja2Fk ZHIpKTsKKy0KKy0gIGlmIChuIDwgMCkKKysgIGlmIChjb25uZWN0IChzb2NrLCBhaW5mby0+YWlf YWRkciwgYWluZm8tPmFpX2FkZHJsZW4pIDwgMCkKKyAgICAgeworICNpZmRlZiBVU0VfV0lOMzJB UEkKKyAgICAgICBpbnQgZXJyID0gV1NBR2V0TGFzdEVycm9yKCk7CitAQCAtMjM0LDIxICsxODUs MjYgQEAgbmV0X29wZW4gKHN0cnVjdCBzZXJpYWwgKnNjYiwgY29uc3QgY2hhciAqbmFtZSkKKyAg ICAgICBpbnQgZXJyID0gZXJybm87CisgI2VuZGlmCisgCistICAgICAgLyogTWF5YmUgd2UncmUg d2FpdGluZyBmb3IgdGhlIHJlbW90ZSB0YXJnZXQgdG8gYmVjb21lIHJlYWR5IHRvCistCSBhY2Nl cHQgY29ubmVjdGlvbnMuICAqLworLSAgICAgIGlmICh0Y3BfYXV0b19yZXRyeQorKyAgICAgIC8q IElmIHdlJ3ZlIGdvdCBhICJjb25uZWN0aW9uIHJlZnVzZWQiIGVycm9yLCBqdXN0IHJldHVybgor KwkgLTEuICBUaGUgY2FsbGVyIHdpbGwga25vdyB3aGF0IHRvIGRvLiAgKi8KKysgICAgICBpZiAo CisgI2lmZGVmIFVTRV9XSU4zMkFQSQorLQkgICYmIGVyciA9PSBXU0FFQ09OTlJFRlVTRUQKKysJ ICBlcnIgPT0gV1NBRUNPTk5SRUZVU0VECisgI2Vsc2UKKy0JICAmJiBlcnIgPT0gRUNPTk5SRUZV U0VECisrCSAgZXJyID09IEVDT05OUkVGVVNFRAorICNlbmRpZgorLQkgICYmIHdhaXRfZm9yX2Nv bm5lY3QgKE5VTEwsICZwb2xscykgPj0gMCkKKysJICApCisgCXsKKy0JICBjbG9zZSAoc2NiLT5m ZCk7CistCSAgZ290byByZXRyeTsKKysJICBjbG9zZSAoc29jayk7CisrCSAgZXJybm8gPSBlcnI7 CisrCSAgcmV0dXJuIC0xOworIAl9CisgCisgICAgICAgaWYgKAorKwkgIC8qIEFueSBvdGhlciBl cnJvciAoZXhjZXB0IEVJTlBST0dSRVNTKSB3aWxsIGJlICJzd2FsbG93ZWQiCisrCSAgICAgaGVy ZS4gIFdlIHJldHVybiB3aXRob3V0IHNwZWNpZnlpbmcgYSByZXR1cm4gdmFsdWUsIGFuZAorKwkg ICAgIHNldCBlcnJubyBpZiB0aGUgY2FsbGVyIHdhbnRzIHRvIGluc3BlY3Qgd2hhdAorKwkgICAg IGhhcHBlbmVkLiAgKi8KKyAjaWZkZWYgVVNFX1dJTjMyQVBJCisgCSAgLyogVW5kZXIgV2luZG93 cywgY2FsbGluZyAiY29ubmVjdCIgd2l0aCBhIG5vbi1ibG9ja2luZyBzb2NrZXQKKyAJICAgICBy ZXN1bHRzIGluIFdTQUVXT1VMREJMT0NLLCBub3QgV1NBRUlOUFJPR1JFU1MuICAqLworQEAgLTI1 OCw2NiArMjE0LDE2NiBAQCBuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFy ICpuYW1lKQorICNlbmRpZgorIAkgICkKKyAJeworKwkgIGNsb3NlIChzb2NrKTsKKyAJICBlcnJu byA9IGVycjsKKy0JICBuZXRfY2xvc2UgKHNjYik7CisgCSAgcmV0dXJuIC0xOworIAl9CisgCisg ICAgICAgLyogTG9va3MgbGlrZSB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0LiAgKi8K Ky0gICAgICBkbyAKKy0JeworLQkgIG4gPSB3YWl0X2Zvcl9jb25uZWN0IChzY2IsICZwb2xscyk7 CistCX0gCisrICAgICAgaW50IG47CisrCisrICAgICAgZG8KKysJbiA9IHdhaXRfZm9yX2Nvbm5l Y3QgKHNvY2ssIHBvbGxzKTsKKyAgICAgICB3aGlsZSAobiA9PSAwKTsKKysKKyAgICAgICBpZiAo biA8IDApCisgCXsKKy0JICBuZXRfY2xvc2UgKHNjYik7CisrCSAgaW50IHNhdmVkX2Vycm5vID0g ZXJybm87CisrCisrCSAgLyogQSBuZWdhdGl2ZSB2YWx1ZSBoZXJlIG1lYW5zIHRoYXQgd2UgZWl0 aGVyIHRpbWVkIG91dCBvcgorKwkgICAgIGdvdCBpbnRlcnJ1cHRlZCBieSB0aGUgdXNlci4gIEp1 c3QgcmV0dXJuLiAgKi8KKysJICBjbG9zZSAoc29jayk7CisrCSAgZXJybm8gPSBzYXZlZF9lcnJu bzsKKyAJICByZXR1cm4gLTE7CisgCX0KKyAgICAgfQorIAorICAgLyogR290IHNvbWV0aGluZy4g IElzIGl0IGFuIGVycm9yPyAgKi8KKy0gIHsKKy0gICAgaW50IHJlcywgZXJyOworLSAgICBzb2Nr bGVuX3QgbGVuOworLQorLSAgICBsZW4gPSBzaXplb2YgKGVycik7CistICAgIC8qIE9uIFdpbmRv d3MsIHRoZSBmb3VydGggcGFyYW1ldGVyIHRvIGdldHNvY2tvcHQgaXMgYSAiY2hhciAqIjsKKy0g ICAgICAgb24gVU5JWCBzeXN0ZW1zIGl0IGlzIGdlbmVyYWxseSAidm9pZCAqIi4gIFRoZSBjYXN0 IHRvICJjaGFyICoiCistICAgICAgIGlzIE9LIGV2ZXJ5d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkg ZGF0YSBwb2ludGVyIHR5cGUgY2FuIGJlCistICAgICAgIGltcGxpY2l0bHkgY29udmVydGVkIHRv ICJ2b2lkICoiLiAgKi8KKy0gICAgcmVzID0gZ2V0c29ja29wdCAoc2NiLT5mZCwgU09MX1NPQ0tF VCwgU09fRVJST1IsIChjaGFyICopICZlcnIsICZsZW4pOworLSAgICBpZiAocmVzIDwgMCB8fCBl cnIpCistICAgICAgeworLQkvKiBNYXliZSB0aGUgdGFyZ2V0IHN0aWxsIGlzbid0IHJlYWR5IHRv IGFjY2VwdCB0aGUgY29ubmVjdGlvbi4gICovCistCWlmICh0Y3BfYXV0b19yZXRyeQorKyAgaW50 IGVycjsKKysgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2YgKGVycik7CisrCisrICAvKiBPbiBXaW5k b3dzLCB0aGUgZm91cnRoIHBhcmFtZXRlciB0byBnZXRzb2Nrb3B0IGlzIGEgImNoYXIgKiI7Cisr ICAgICBvbiBVTklYIHN5c3RlbXMgaXQgaXMgZ2VuZXJhbGx5ICJ2b2lkICoiLiAgVGhlIGNhc3Qg dG8gImNoYXIgKiIKKysgICAgIGlzIE9LIGV2ZXJ5d2hlcmUsIHNpbmNlIGluIEMrKyBhbnkgZGF0 YSBwb2ludGVyIHR5cGUgY2FuIGJlCisrICAgICBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byAidm9p ZCAqIi4gICovCisrICBpbnQgcmV0ID0gZ2V0c29ja29wdCAoc29jaywgU09MX1NPQ0tFVCwgU09f RVJST1IsIChjaGFyICopICZlcnIsICZsZW4pOworKworKyAgaWYgKHJldCA8IDApCisrICAgIHsK KysgICAgICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKKysKKysgICAgICBjbG9zZSAoc29jayk7 CisrICAgICAgZXJybm8gPSBzYXZlZF9lcnJubzsKKysgICAgICByZXR1cm4gLTE7CisrICAgIH0K KysgIGVsc2UgaWYgKHJldCA9PSAwICYmIGVyciAhPSAwKQorKyAgICB7CisrICAgICAgY2xvc2Ug KHNvY2spOworKyAgICAgIGVycm5vID0gZXJyOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQor KworKyAgLyogVGhlIGNvbm5lY3Rpb24gc3VjY2VlZGVkLiAgUmV0dXJuIHRoZSBzb2NrZXQuICAq LworKyAgcmV0dXJuIHNvY2s7CisrfQorKworKy8qIE9wZW4gYSB0Y3Agc29ja2V0LiAgKi8KKysK KytpbnQKKytuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQor K3sKKysgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworKyAgc3RydWN0IGFkZHJpbmZvICphaW5mbzsK KysKKysgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkpOworKyAgLyogQXNzdW1lIG5v IHByZWZpeCB3aWxsIGJlIHBhc3NlZCwgdGhlcmVmb3JlIHdlIHNob3VsZCB1c2UKKysgICAgIEFG X1VOU1BFQy4gICovCisrICBoaW50LmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKKysgIGhpbnQuYWlf c29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKysgIGhpbnQuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RD UDsKKysKKysgIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMgcGFyc2VkID0gcGFyc2VfY29ubmVjdGlv bl9zcGVjIChuYW1lLCAmaGludCk7CisrCisrICBpZiAocGFyc2VkLnBvcnRfc3RyLmVtcHR5ICgp KQorKyAgICBlcnJvciAoXygiTWlzc2luZyBwb3J0IG9uIGhvc3RuYW1lICclcyciKSwgbmFtZSk7 CisrCisrICBpbnQgciA9IGdldGFkZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksCisr CQkgICAgICAgcGFyc2VkLnBvcnRfc3RyLmNfc3RyICgpLAorKwkJICAgICAgICZoaW50LCAmYWlu Zm8pOworKworKyAgaWYgKHIgIT0gMCkKKysgICAgeworKyAgICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGVyciwgXygiJXM6IGNhbm5vdCByZXNvbHZlIG5hbWU6ICVzXG4iKSwKKysJCQkg IG5hbWUsIGdhaV9zdHJlcnJvciAocikpOworKyAgICAgIGVycm5vID0gRU5PRU5UOworKyAgICAg IHJldHVybiAtMTsKKysgICAgfQorKworKyAgc2NvcGVkX2ZyZWVfYWRkcmluZm8gZnJlZV9haW5m byAoYWluZm8pOworKworKyAgLyogRmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlJ3ZlIGdvdCBh IGNvbm5lY3Rpb24gcmVmdXNlZC4gIEl0IHdpbGwKKysgICAgIGJlIHRydWUgaWYgYW55IG9mIHRo ZSBjb25uZWN0aW9ucyB0cmllZCB3YXMgcmVmdXNlZC4gICovCisrICBib29sIGdvdF9jb25ucmVm dXNlZDsKKysgIC8qIElmIGEgY29ubmVjdGlvbiBzdWNjZWVlZHMsIFNVQ0NFU1NfQUlORk8gd2ls bCBwb2ludCB0byB0aGUKKysgICAgICdzdHJ1Y3QgYWRkcmluZm8nIHRoYXQgc3VjY2VlZC4gICov CisrICBzdHJ1Y3QgYWRkcmluZm8gKnN1Y2Nlc3NfYWluZm8gPSBOVUxMOworKyAgdW5zaWduZWQg aW50IHBvbGxzID0gMDsKKysKKysgIC8qIEFzc3VtZSB0aGUgd29yc3QuICAqLworKyAgc2NiLT5m ZCA9IC0xOworKworKyAgZG8KKysgICAgeworKyAgICAgIGdvdF9jb25ucmVmdXNlZCA9IGZhbHNl OworKworKyAgICAgIGZvciAoc3RydWN0IGFkZHJpbmZvICppdGVyID0gYWluZm87IGl0ZXIgIT0g TlVMTDsgaXRlciA9IGl0ZXItPmFpX25leHQpCisrCXsKKysJICAvKiBJdGVyYXRlIG92ZXIgdGhl IGxpc3Qgb2YgcG9zc2libGUgYWRkcmVzc2VzIHRvIGNvbm5lY3QKKysJICAgICB0by4gIEZvciBl YWNoLCB3ZSdsbCB0cnkgdG8gY29ubmVjdCBhbmQgc2VlIGlmIGl0CisrCSAgICAgc3VjY2VlZHMu ICAqLworKwkgIGludCBzb2NrID0gdHJ5X2Nvbm5lY3QgKGl0ZXIsICZwb2xscyk7CisrCisrCSAg aWYgKHNvY2sgPj0gMCkKKysJICAgIHsKKysJICAgICAgLyogV2UndmUgZ290dGVuIGEgc3VjY2Vz c2Z1bCBjb25uZWN0aW9uLiAgU2F2ZSBpdHMKKysJCSAnc3RydWN0IGFkZHJpbmZvJywgdGhlIHNv Y2tldCwgYW5kIGJyZWFrLiAgKi8KKysJICAgICAgc3VjY2Vzc19haW5mbyA9IGl0ZXI7CisrCSAg ICAgIHNjYi0+ZmQgPSBzb2NrOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJICBlbHNlIGlm ICgKKyAjaWZkZWYgVVNFX1dJTjMyQVBJCistCSAgICAmJiBlcnIgPT0gV1NBRUNPTk5SRUZVU0VE CisrCSAgZXJybm8gPT0gV1NBRUNPTk5SRUZVU0VECisgI2Vsc2UKKy0JICAgICYmIGVyciA9PSBF Q09OTlJFRlVTRUQKKysJICBlcnJubyA9PSBFQ09OTlJFRlVTRUQKKyAjZW5kaWYKKy0JICAgICYm IHdhaXRfZm9yX2Nvbm5lY3QgKE5VTEwsICZwb2xscykgPj0gMCkKKy0JICB7CistCSAgICBjbG9z ZSAoc2NiLT5mZCk7CistCSAgICBnb3RvIHJldHJ5OworLQkgIH0KKy0JaWYgKGVycikKKy0JICBl cnJubyA9IGVycjsKKy0JbmV0X2Nsb3NlIChzY2IpOworLQlyZXR1cm4gLTE7CistICAgICAgfQor LSAgfSAKKysJCSAgICkKKysJICAgIGdvdF9jb25ucmVmdXNlZCA9IHRydWU7CisrCX0KKysgICAg fQorKyAgLyogSnVzdCByZXRyeSBpZjoKKysKKysgICAgIC0gdGNwX2F1dG9fcmV0cnkgaXMgdHJ1 ZSwgYW5kCisrICAgICAtIFdlIGhhdmVuJ3QgZ290dGVuIGEgY29ubmVjdGlvbiB5ZXQsIGFuZAor KyAgICAgLSBBbnkgb2Ygb3VyIGNvbm5lY3Rpb24gYXR0ZW1wdHMgcmV0dXJuZWQgd2l0aCBFQ09O TlJFRlVTRUQsIGFuZAorKyAgICAgLSB3YWl0X2Zvcl9jb25uZWN0IHNpZ25hbHMgdGhhdCB3ZSBj YW4ga2VlcCBnb2luZy4gICovCisrICB3aGlsZSAodGNwX2F1dG9fcmV0cnkKKysJICYmIHN1Y2Nl c3NfYWluZm8gPT0gTlVMTAorKwkgJiYgZ290X2Nvbm5yZWZ1c2VkCisrCSAmJiB3YWl0X2Zvcl9j b25uZWN0ICgtMSwgJnBvbGxzKSA+PSAwKTsKKysKKysgIGlmIChzdWNjZXNzX2FpbmZvID09IE5V TEwpCisrICAgIHsKKysgICAgICBuZXRfY2xvc2UgKHNjYik7CisrICAgICAgcmV0dXJuIC0xOwor KyAgICB9CisgCisgICAvKiBUdXJuIG9mZiBub25ibG9ja2luZy4gICovCistICBpb2FyZyA9IDA7 CisrI2lmZGVmIFVTRV9XSU4zMkFQSQorKyAgdV9sb25nIGlvYXJnID0gMDsKKysjZWxzZQorKyAg aW50IGlvYXJnID0gMDsKKysjZW5kaWYKKysKKyAgIGlvY3RsIChzY2ItPmZkLCBGSU9OQklPLCAm aW9hcmcpOworIAorLSAgaWYgKHVzZV91ZHAgPT0gMCkKKysgIGlmIChzdWNjZXNzX2FpbmZvLT5h aV9zb2NrdHlwZSA9PSBJUFBST1RPX1RDUCkKKyAgICAgeworICAgICAgIC8qIERpc2FibGUgTmFn bGUgYWxnb3JpdGhtLiAgTmVlZGVkIGluIHNvbWUgY2FzZXMuICAqLworLSAgICAgIHRtcCA9IDE7 CisrICAgICAgaW50IHRtcCA9IDE7CisrCisgICAgICAgc2V0c29ja29wdCAoc2NiLT5mZCwgSVBQ Uk9UT19UQ1AsIFRDUF9OT0RFTEFZLAorLQkJICAoY2hhciAqKSZ0bXAsIHNpemVvZiAodG1wKSk7 CisrCQkgIChjaGFyICopICZ0bXAsIHNpemVvZiAodG1wKSk7CisgICAgIH0KKyAKKyAjaWZkZWYg U0lHUElQRQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3Rz dWl0ZS9DaGFuZ2VMb2cKKy0tLSBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisrKysgYi9nZGIv dGVzdHN1aXRlL0NoYW5nZUxvZworQEAgLTEsMyArMSwyMyBAQAorKzIwMTgtMDctMTEgIFNlcmdp byBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisrCSAgICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCSAgICBQYXVsIEZlcnRzZXIgIDxm ZXJjZXJwYXZAZ21haWwuY29tPgorKwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwu Y29tPgorKworKwkqIFJFQURNRSAoVGVzdHN1aXRlIFBhcmFtZXRlcnMpOiBNZW50aW9uIG5ldyAn R0RCX1RFU1RfU09DS0VUSE9TVCcKKysJcGFyYW1ldGVyLgorKwkqIGJvYXJkcy9uYXRpdmUtZXh0 ZW5kZWQtZ2Ric2VydmVyLmV4cDogRG8gbm90IHNldCAnc29ja2V0aG9zdCcKKysJYnkgZGVmYXVs dC4KKysJKiBib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHA6IExpa2V3aXNlLgorKwkqIGdkYi5z ZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4cDogSW1wcm92ZSByZWdleHAgdXNlZAor Kwlmb3IgZGV0ZWN0aW5nIHdoZW4gYSByZW1vdGUgZGVidWdnaW5nIGNvbm5lY3Rpb24gc3VjY2Vl ZHMuCisrCSogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IE5ldyBmaWxlLgorKwkqIGxp Yi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgKGdkYnNlcnZlcl9kZWZhdWx0X2dldF9jb21tX3BvcnQp OgorKwlEbyBub3QgcHJlZml4IHRoZSBwb3J0IG51bWJlciB3aXRoICI6Ii4KKysJKGdkYnNlcnZl cl9zdGFydCk6IE5ldyBnbG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVC4gIEltcGxlbWVudAorKwlz dXBwb3J0IGZvciBkZXRlY3RpbmcgYW5kIHVzaW5nIGl0LiAgQWRkICckZGVidWdob3N0X2dkYnNl cnZlcicKKysJdG8gdGhlIGxpc3Qgb2YgYXJndW1lbnRzIHVzZWQgdG8gc3RhcnQgZ2Ric2VydmVy LiAgSGFuZGxlIGNhc2UKKysJd2hlbiBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgYSBuZXR3b3Jr IG5hbWUuCisrCisgMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpA cmVkaGF0LmNvbT4KKyAKKyAJUFIgYysrLzIzMzczCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9SRUFETUUgYi9nZGIvdGVzdHN1aXRlL1JFQURNRQorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9SRUFE TUUKKysrKyBiL2dkYi90ZXN0c3VpdGUvUkVBRE1FCitAQCAtMjU5LDYgKzI1OSwyMCBAQCBUaGlz IG1ha2UgKG5vdCBydW50ZXN0KSB2YXJpYWJsZSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciB0 aGUKKyB0ZXN0c3VpdGUgcHJlbG9hZHMgdGhlIHJlYWQxLnNvIGxpYnJhcnkgaW50byBleHBlY3Qu ICBBbnkgbm9uLWVtcHR5CisgdmFsdWUgbWVhbnMgdHJ1ZS4gIFNlZSAiUmFjZSBkZXRlY3Rpb24i IGJlbG93LgorIAorK0dEQl9URVNUX1NPQ0tFVEhPU1QKKysKKytUaGlzIHZhcmlhYmxlIGNhbiBw cm92aWRlIHRoZSBob3N0bmFtZS9hZGRyZXNzIHRoYXQgc2hvdWxkIGJlIHVzZWQKKyt3aGVuIHBl cmZvcm1pbmcgR0RCc2VydmVyLXJlbGF0ZWQgdGVzdHMuICBUaGlzIGlzIHVzZWZ1bCBpbiBzb21l Cisrc2l0dWF0aW9ucywgZS5nLiwgd2hlbiB5b3Ugd2FudCB0byB0ZXN0IHRoZSBJUHY2IGNvbm5l Y3Rpdml0eSBvZiBHREIKKythbmQgR0RCc2VydmVyLCBvciB3aGVuIHVzaW5nIGEgZGlmZmVyZW50 IGhvc3RuYW1lL2FkZHJlc3MgaXMgbmVlZGVkLgorK0ZvciBleGFtcGxlLCB0byBtYWtlIEdEQiBh bmQgR0RCc2VydmVyIHVzZSBJUHY2LW9ubHkgY29ubmVjdGlvbnMsIHlvdQorK2NhbiBkbzoKKysK KysJbWFrZSBjaGVjayBURVNUUz0iZ2RiLnNlcnZlci8qLmV4cCIgUlVOVEVTVEZMQUdTPSdHREJf VEVTVF9TT0NLRVRIT1NUPXRjcDY6Wzo6MV0nCisrCisrTm90ZSB0aGF0IG9ubHkgYSBob3N0bmFt ZS9hZGRyZXNzIGNhbiBiZSBwcm92aWRlZCwgd2l0aG91dCBhIHBvcnQKKytudW1iZXIuCisrCisg UmFjZSBkZXRlY3Rpb24KKyAqKioqKioqKioqKioqKgorIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9ib2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHAKKy0tLSBhL2dkYi90ZXN0c3Vp dGUvYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwCisrKysgYi9nZGIvdGVzdHN1 aXRlL2JvYXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2VydmVyLmV4cAorQEAgLTI0LDggKzI0LDYg QEAgbG9hZF9nZW5lcmljX2NvbmZpZyAiZXh0ZW5kZWQtZ2Ric2VydmVyIgorIGxvYWRfYm9hcmRf ZGVzY3JpcHRpb24gImdkYnNlcnZlci1iYXNlIgorIGxvYWRfYm9hcmRfZGVzY3JpcHRpb24gImxv Y2FsLWJvYXJkIgorIAorLXNldF9ib2FyZF9pbmZvIHNvY2tldGhvc3QgImxvY2FsaG9zdDoiCist CisgIyBXZSB3aWxsIGJlIHVzaW5nIHRoZSBleHRlbmRlZCBHREIgcmVtb3RlIHByb3RvY29sLgor IHNldF9ib2FyZF9pbmZvIGdkYl9wcm90b2NvbCAiZXh0ZW5kZWQtcmVtb3RlIgorIAorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1nZGJzZXJ2ZXIuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUv Ym9hcmRzL25hdGl2ZS1nZGJzZXJ2ZXIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9u YXRpdmUtZ2Ric2VydmVyLmV4cAorQEAgLTMwLDcgKzMwLDYgQEAgc2V0X2JvYXJkX2luZm8gZ2Ri LGRvX3JlbG9hZF9vbl9ydW4gMQorICMgVGhlcmUncyBubyBzdXBwb3J0IGZvciBhcmd1bWVudC1w YXNzaW5nICh5ZXQpLgorIHNldF9ib2FyZF9pbmZvIG5vYXJncyAxCisgCistc2V0X2JvYXJkX2lu Zm8gc29ja2V0aG9zdCAibG9jYWxob3N0OiIKKyBzZXRfYm9hcmRfaW5mbyB1c2VfZ2RiX3N0dWIg MQorIHNldF9ib2FyZF9pbmZvIGV4aXRfaXNfcmVsaWFibGUgMQorIAorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHAKKy0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwCisr KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4 cAorQEAgLTUzLDcgKzUzLDcgQEAgc2F2ZV92YXJzIHsgR0RCRkxBR1MgfSB7CisgICAgIHNldCB1 c2VfZ2RiX3N0dWIgMAorIAorICAgICBnZGJfdGVzdCAidGFyZ2V0ICR7Z2Ric2VydmVyX3Byb3Rv Y29sfSAke2dkYnNlcnZlcl9nZGJwb3J0fSIgXAorLQkiUmVtb3RlIGRlYnVnZ2luZyB1c2luZyAk Z2Ric2VydmVyX2dkYnBvcnQiIFwKKysJIlJlbW90ZSBkZWJ1Z2dpbmcgdXNpbmcgW3N0cmluZ190 b19yZWdleHAgJGdkYnNlcnZlcl9nZGJwb3J0XSIgXAorIAkiY29ubmVjdCB0byBnZGJzZXJ2ZXIi CisgCisgICAgIGdkYl90ZXN0ICJydW4iIFwKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3Nl cnZlci1jb25uZWN0LmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHAKK0BAIC0wLDAg KzEsMTExIEBACisrIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgorKyMKKysjIENvcHlyaWdodCAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IG11bHRpcGxl IHR5cGVzIG9mIGNvbm5lY3Rpb24gKElQdjQsIElQdjYsIFRDUCwgVURQKSBhbmQgbWFrZQorKyMg c3VyZSBib3RoIGdkYnNlcnZlciBhbmQgR0RCIHdvcmsuCisrCisrbG9hZF9saWIgZ2Ric2VydmVy LXN1cHBvcnQuZXhwCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgbm9ybWFsLmMKKysKKytpZiB7W3Nr aXBfZ2Ric2VydmVyX3Rlc3RzXX0geworKyAgICByZXR1cm4gMAorK30KKysKKysjIFdlIHdhbnQg dG8gaGF2ZSBjb250cm9sIG92ZXIgd2hlcmUgd2Ugc3RhcnQgZ2Ric2VydmVyLgorK2lmIHsgW2lz X3JlbW90ZSB0YXJnZXRdIH0geworKyAgICByZXR1cm4gMAorK30KKysKKytpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlIGRlYnVn XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgTWFrZSBzdXJlIHdlJ3JlIGRpc2Nvbm5l Y3RlZCwgaW4gY2FzZSB3ZSdyZSB0ZXN0aW5nIHdpdGggYW4KKysjIGV4dGVuZGVkLXJlbW90ZSBi b2FyZCwgdGhlcmVmb3JlIGFscmVhZHkgY29ubmVjdGVkLgorK2dkYl90ZXN0ICJkaXNjb25uZWN0 IiAiLioiCisrCisrc2V0IHRhcmdldF9leGVjIFtnZGJzZXJ2ZXJfZG93bmxvYWRfY3VycmVudF9w cm9nXQorKworKyMgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdGVzdCBpbnN0cnVjdGlvbnMgZm9y IGVhY2ggc2NlbmFyaW8uICBUaGUKKysjIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQgaXMgYXMg Zm9sbG93czoKKysjCisrIyAtIFRoZSBjb25uZWN0aW9uIHNwZWNpZmljYXRpb24gdG8gYmUgdXNl ZCB3aGVuIHN0YXJ0aW5nCisrIyAgIGdkYnNlcnZlci9HREIuICBUaGlzIHN0cmluZyB3aWxsIGJl IHVzZWQgdG8gc2V0IHRoZQorKyMgICBHREJfVEVTVF9TT0NLRVRIT1NUIHdoZW4gY2FsbGluZyBn ZGJzZXJ2ZXJfc3RhcnQuCisrIworKyMgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGdkYnNl cnZlciBzaG91bGQgZmFpbCB3aGVuIHdlIGF0dGVtcHQgdG8KKysjICAgc3RhcnQgaXQuICBVc2Vm dWwgd2hlbiB0ZXN0aW5nIGVycm9uZW91cyBjb25uZWN0aW9uIHNwZWNzIHN1Y2ggYXMKKysjICAg InRjcDg6Ii4KKysjCisrIyAtIFRoZSBwcmVmaXggdGhhdCBzaG91bGQgYmUgcHJlcGVuZGVkIHRv IHRoZSB0ZXN0IG1lc3NhZ2VzLgorK3NldCB0ZXN0X3BhcmFtcyBcCisrICAgIHsgXAorKwkgIHsg InRjcDQ6MTI3LjAuMC4xIiAwICJ0Y3A0IiB9IFwKKysJICB7ICJ0Y3A2Ojo6MSIgICAgICAgMCAi dGNwNiIgfSBcCisrCSAgeyAidGNwNjpbOjoxXSIgICAgIDAgInRjcDYtd2l0aC1icmFja2V0cyIg fSBcCisrCSAgeyAidGNwOmxvY2FsaG9zdCIgIDAgInRjcCIgfSBcCisrCSAgeyAidWRwNDoxMjcu MC4wLjEiIDAgInVkcDQiIH0gXAorKwkgIHsgInVkcDY6OjoxIiAgICAgICAwICJ1ZHA2IiB9IFwK KysJICB7ICJ1ZHA2Ols6OjFdIiAgICAgMCAidWRwNi13aXRoLWJyYWNrZXRzIiB9IFwKKysJICB7 ICJ0Y3A4OjEyMyIgICAgICAgMSAidGNwOCIgfSBcCisrCSAgeyAidWRwMTIzOjo6IiAgICAgIDEg InVkcDEyMyIgfSBcCisrCSAgeyAiZ2FyYmFnZToxMjM0IiAgIDEgImdhcmJhZ2U6MTIzNCIgfSBc CisrICAgIH0KKysKKysjIFRoZSBiZXN0IHdheSB0byB0ZXN0IGRpZmZlcmVudCB0eXBlcyBvZiBj b25uZWN0aW9ucyBpcyB0byBzZXQgdGhlCisrIyBHREJfVEVTVF9TT0NLRVRIT1NUIHZhcmlhYmxl IGFjY29yZGluZ2x5LgorK3NhdmVfdmFycyB7IEdEQl9URVNUX1NPQ0tFVEhPU1QgfSB7CisrICAg IGZvcmVhY2ggbGluZSAkdGVzdF9wYXJhbXMgeworKwlzZXQgc29ja2hvc3QgW2xpbmRleCAkbGlu ZSAwXQorKwlzZXQgZ2Ric2VydmVyX3Nob3VsZF9mYWlsIFtsaW5kZXggJGxpbmUgMV0KKysJc2V0 IHByZWZpeCBbbGluZGV4ICRsaW5lIDJdCisrCisrCXdpdGhfdGVzdF9wcmVmaXggJHByZWZpeCB7 CisrCSAgICBzZXQgR0RCX1RFU1RfU09DS0VUSE9TVCAkc29ja2hvc3QKKysJICAgIHNldCB0ZXN0 ICJzdGFydCBnZGJzZXJ2ZXIiCisrCisrCSAgICAjIFRyeSB0byBzdGFydCBnZGJzZXJ2ZXIuCisr CSAgICBzZXQgY2F0Y2hyZXMgW2NhdGNoIHtzZXQgcmVzIFtnZGJzZXJ2ZXJfc3RhcnQgIiIgJHRh cmdldF9leGVjXX0gZXJybXNnXQorKworKwkgICAgaWYgeyAkY2F0Y2hyZXMgIT0gMCB9IHsKKysJ CWlmIHsgJGdkYnNlcnZlcl9zaG91bGRfZmFpbCB9IHsKKysJCSAgICBwYXNzICIkdGVzdDogZ2Ri c2VydmVyIGZhaWxlZCBhcyBleHBlY3RlZCIKKysJCX0gZWxzZSB7CisrCQkgICAgZmFpbCAiJHRl c3Q6ICRlcnJtc2ciCisrCQl9CisrCQljb250aW51ZQorKwkgICAgfSBlbHNlIHsKKysJCWlmIHsg JGdkYnNlcnZlcl9zaG91bGRfZmFpbCB9IHsKKysJCSAgICBmYWlsICIkdGVzdDogZ2Ric2VydmVy IHNob3VsZCBmYWlsIGJ1dCBkaWQgbm90IgorKwkJfSBlbHNlIHsKKysJCSAgICBwYXNzICIkdGVz dCIKKysJCX0KKysJICAgIH0KKysKKysJICAgIHNldCBnZGJzZXJ2ZXJfcHJvdG9jb2wgW2xpbmRl eCAkcmVzIDBdCisrCSAgICBzZXQgZ2Ric2VydmVyX2dkYnBvcnQgW2xpbmRleCAkcmVzIDFdCisr CSAgICBzZXQgdGVzdCAiY29ubmVjdCB0byBnZGJzZXJ2ZXIgdXNpbmcgJHNvY2tob3N0IgorKwor KwkgICAgaWYgeyBbZ2RiX3RhcmdldF9jbWQgJGdkYnNlcnZlcl9wcm90b2NvbCAkZ2Ric2VydmVy X2dkYnBvcnRdID09IDAgfSB7CisrCQlwYXNzICR0ZXN0CisrCSAgICB9IGVsc2UgeworKwkJZmFp bCAkdGVzdAorKwkgICAgfQorKwl9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2Vy dmVyLXN1cHBvcnQuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9y dC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cAorQEAg LTIxMSw3ICsyMTEsNyBAQCBwcm9jIGdkYnNlcnZlcl9kZWZhdWx0X2dldF9yZW1vdGVfYWRkcmVz cyB7IGhvc3QgcG9ydCB9IHsKKyAjIERlZmF1bHQgcm91dGluZSB0byBjb21wdXRlIHRoZSAiY29t bSIgYXJndW1lbnQgZm9yIGdkYnNlcnZlci4KKyAKKyBwcm9jIGdkYnNlcnZlcl9kZWZhdWx0X2dl dF9jb21tX3BvcnQgeyBwb3J0IH0geworLSAgICByZXR1cm4gIjokcG9ydCIKKysgICAgcmV0dXJu ICIkcG9ydCIKKyB9CisgCisgIyBTdGFydCBhIGdkYnNlcnZlciBwcm9jZXNzIHdpdGggaW5pdGlh bCBPUFRJT05TIGFuZCB0cmFpbGluZyBBUkdVTUVOVFMuCitAQCAtMjIxLDYgKzIyMSw3IEBAIHBy b2MgZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCB7IHBvcnQgfSB7CisgCisgcHJvYyBn ZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50cyB9IHsKKyAgICAgZ2xvYmFsIHBvcnRu dW0KKysgICAgZ2xvYmFsIEdEQl9URVNUX1NPQ0tFVEhPU1QKKyAKKyAgICAgIyBQb3J0IGlkIC0t IGVpdGhlciBzcGVjaWZpZWQgaW4gYmFzZWJvYXJkIGZpbGUsIG9yIG1hbmFnZWQgaGVyZS4KKyAg ICAgaWYgW3RhcmdldF9pbmZvIGV4aXN0cyBnZGIsc29ja2V0cG9ydF0geworQEAgLTIzMSwxMCAr MjMyLDIyIEBAIHByb2MgZ2Ric2VydmVyX3N0YXJ0IHsgb3B0aW9ucyBhcmd1bWVudHMgfSB7Cisg ICAgIH0KKyAKKyAgICAgIyBFeHRyYWN0IHRoZSBsb2NhbCBhbmQgcmVtb3RlIGhvc3QgaWRzIGZy b20gdGhlIHRhcmdldCBib2FyZCBzdHJ1Y3QuCistICAgIGlmIFt0YXJnZXRfaW5mbyBleGlzdHMg c29ja2V0aG9zdF0geworKyAgICBpZiB7IFtpbmZvIGV4aXN0cyBHREJfVEVTVF9TT0NLRVRIT1NU XSB9IHsKKysJIyBUaGUgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8gcHJvdmlkZSBhIHBvcnQgbnVt YmVyLCBqdXN0IGEKKysJIyBob3N0bmFtZS9hZGRyZXNzLCB0aGVyZWZvcmUgd2UgYWRkIHRoZSB0 cmFpbGluZyAiOiIgaGVyZS4KKysJc2V0IGRlYnVnaG9zdCAiJHtHREJfVEVTVF9TT0NLRVRIT1NU fToiCisrCSMgRXNjYXBlIG9wZW4gYW5kIGNsb3NlIHNxdWFyZSBicmFja2V0cy4KKysJc2V0IGRl YnVnaG9zdF90bXAgW3N0cmluZyBtYXAgeyBbIFxcWyBdIFxcXSB9ICRkZWJ1Z2hvc3RdCisrCSMg V2UgbmVlZCBhICJnZGJzZXJ2ZXIiIHZlcnNpb24gb2YgdGhlIGRlYnVnaG9zdCwgd2hpY2ggd2ls bAorKwkjIGhhdmUgdGhlIHBvc3NpYmxlIGNvbm5lY3Rpb24gcHJlZml4IHN0cmlwcGVkLiAgVGhp cyBpcworKwkjIGJlY2F1c2UgZ2Ric2VydmVyIGN1cnJlbnRseSBkb2Vzbid0IHJlY29nbml6ZSB0 aGUgcHJlZml4ZXMuCisrCXJlZ3N1YiAtYWxsICJeXCh0Y3A6fHVkcDp8dGNwNDp8dWRwNDp8dGNw Njp8dWRwNjpcKSIgJGRlYnVnaG9zdF90bXAgIiIgZGVidWdob3N0X2dkYnNlcnZlcgorKyAgICB9 IGVsc2VpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIHNvY2tldGhvc3RdIHsKKyAJc2V0IGRlYnVnaG9z dCBbdGFyZ2V0X2luZm8gc29ja2V0aG9zdF0KKysJc2V0IGRlYnVnaG9zdF9nZGJzZXJ2ZXIgJGRl YnVnaG9zdAorICAgICB9IGVsc2UgeworIAlzZXQgZGVidWdob3N0ICJsb2NhbGhvc3Q6IgorKwlz ZXQgZGVidWdob3N0X2dkYnNlcnZlciAkZGVidWdob3N0CisgICAgIH0KKyAKKyAgICAgIyBTb21l IGJvYXJkcyB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBwb3J0IHRoYXQgaXMgcGFzc2Vk IHRvCitAQCAtMjc3LDggKzI5MCwxNCBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMg YXJndW1lbnRzIH0geworIAlpZiB7ICRvcHRpb25zICE9ICIiIH0geworIAkgICAgYXBwZW5kIGdk YnNlcnZlcl9jb21tYW5kICIgJG9wdGlvbnMiCisgCX0KKysJaWYgeyAkZGVidWdob3N0X2dkYnNl cnZlciAhPSAiIiB9IHsKKysJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICRkZWJ1Z2hv c3RfZ2Ric2VydmVyIgorKwl9CisgCWlmIHsgJHBvcnRudW0gIT0gIiIgfSB7CistCSAgICBhcHBl bmQgZ2Ric2VydmVyX2NvbW1hbmQgIiBbJGdldF9jb21tX3BvcnQgJHBvcnRudW1dIgorKwkgICAg aWYgeyAkZGVidWdob3N0X2dkYnNlcnZlciA9PSAiIiB9IHsKKysJCWFwcGVuZCBnZGJzZXJ2ZXJf Y29tbWFuZCAiICIKKysJICAgIH0KKysJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiWyRn ZXRfY29tbV9wb3J0ICRwb3J0bnVtXSIKKyAJfQorIAlpZiB7ICRhcmd1bWVudHMgIT0gIiIgfSB7 CisgCSAgICBhcHBlbmQgZ2Ric2VydmVyX2NvbW1hbmQgIiAkYXJndW1lbnRzIgorQEAgLTMwNyw2 ICszMjYsOSBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewor IAkJICAgIGNvbnRpbnVlCisgCQl9CisgCSAgICB9CisrCSAgICAtcmUgIi4qOiBjYW5ub3QgcmVz b2x2ZSBuYW1lOiBOYW1lIG9yIHNlcnZpY2Ugbm90IGtub3duXHJcbiIgeworKwkJZXJyb3IgImdk YnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBuYW1lLiIKKysJICAgIH0KKyAJICAgIHRpbWVvdXQgewor IAkJZXJyb3IgIlRpbWVvdXQgd2FpdGluZyBmb3IgZ2Ric2VydmVyIHJlc3BvbnNlLiIKKyAJICAg IH0KK2RpZmYgLS1naXQgYS9nZGIvdW5pdHRlc3RzL3BhcnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxm dGVzdHMuYyBiL2dkYi91bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5j CituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3VuaXR0ZXN0 cy9wYXJzZS1jb25uZWN0aW9uLXNwZWMtc2VsZnRlc3RzLmMKK0BAIC0wLDAgKzEsMjQ5IEBACisr LyogU2VsZiB0ZXN0cyBmb3IgcGFyc2luZyBjb25uZWN0aW9uIHNwZWNzIGZvciBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgImRlZnMu aCIKKysjaW5jbHVkZSAic2VsZnRlc3QuaCIKKysjaW5jbHVkZSAiY29tbW9uL25ldHN0dWZmLmgi CisrI2luY2x1ZGUgImRpYWdub3N0aWNzLmgiCisrI2lmZGVmIFVTRV9XSU4zMkFQSQorKyNpbmNs dWRlIDx3aW5zb2NrMi5oPgorKyNpbmNsdWRlIDx3c3BpYXBpLmg+CisrI2Vsc2UKKysjaW5jbHVk ZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjaW5jbHVkZSA8bmV0 ZGIuaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5o PgorKyNlbmRpZgorKworK25hbWVzcGFjZSBzZWxmdGVzdHMgeworK25hbWVzcGFjZSBwYXJzZV9j b25uZWN0aW9uX3NwZWNfdGVzdHMgeworKworKy8qIEF1eGlsaWFyeSBzdHJ1Y3QgdGhhdCBob2xk cyBpbmZvIGFib3V0IGEgc3BlY2lmaWMgdGVzdCBmb3IgYQorKyAgIGNvbm5lY3Rpb24gc3BlYy4g ICovCisrCisrc3RydWN0IHBhcnNlX2Nvbm5fdGVzdAorK3sKKysgIC8qIFRoZSBjb25uZWN0aW9u IHNwZWMuICAqLworKyAgY29uc3QgY2hhciAqY29ubnNwZWM7CisrCisrICAvKiBFeHBlY3RlZCBy ZXN1bHQgZnJvbSAncGFyc2VfY29ubmVjdGlvbl9zcGVjJy4gICovCisrICBwYXJzZWRfY29ubmVj dGlvbl9zcGVjIGV4cGVjdGVkX3Jlc3VsdDsKKysKKysgIC8qIFRydWUgaWYgdGhpcyB0ZXN0IHNo b3VsZCBmYWlsLCBmYWxzZSBvdGhlcndpc2UuICBJZiB0cnVlLCBvbmx5CisrICAgICB0aGUgQ09O TlNQRUMgZmllbGQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgdmFsaWQuICAqLworKyAgYm9vbCBz aG91bGRfZmFpbDsKKysKKysgIC8qIFRoZSBleHBlY3RlZCBBSV9GQU1JTFkgdG8gYmUgZm91bmQg b24gdGhlICdzdHJ1Y3QgYWRkcmluZm8nCisrICAgICBISU5ULiAgKi8KKysgIGludCBleHBfYWlf ZmFtaWx5OworKworKyAgLyogVGhlIGV4cGVjdGVkIEFJX1NPQ0tUWVBFIHRvIGJlIGZvdW5kIG9u IHRoZSAnc3RydWN0IGFkZHJpbmZvJworKyAgICAgSElOVC4gICovCisrICBpbnQgZXhwX2FpX3Nv Y2t0eXBlOworKworKyAgLyogVGhlIGV4cGVjdGVkIEFJX1BST1RPQ09MIHRvIGJlIGZvdW5kIG9u IHRoZSAnc3RydWN0IGFkZHJpbmZvJworKyAgICAgSElOVC4gICovCisrICBpbnQgZXhwX2FpX3By b3RvY29sOworK307CisrCisrLyogU29tZSBkZWZpbmVzIHRvIGhlbHAgdXMgZmlsbCBhICdzdHJ1 Y3QgcGFyc2VfY29ubl90ZXN0Jy4gICovCisrCisrLyogSW5pdGlhbGl6ZSBhIGZ1bGwgZW50cnku ICAqLworKyNkZWZpbmUgSU5JVF9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIFNIT1VM RF9GQUlMLCBFWFBfQUlfRkFNSUxZLCBcCisrCQkgICBFWFBfQUlfU09DS1RZUEUsIEVYUF9BSV9Q Uk9UT0NPTCkJCQlcCisrICB7IEFERFIsIHsgRVhQX0hPU1QsIEVYUF9QT1JUIH0sIFNIT1VMRF9G QUlMLCBFWFBfQUlfRkFNSUxZLCBcCisrICAgIEVYUF9BSV9TT0NLVFlQRSwgRVhQX0FJX1BST1RP Q09MIH0KKysKKysvKiBJbml0aWFsaXplIGFuIHVucHJlZml4ZWQgZW50cnkuICBJbiB0aGlzIGNh c2UsIHdlIGRvbid0IGV4cGVjdAorKyAgIGFueXRoaW5nIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZv JyBISU5ULiAgKi8KKysjZGVmaW5lIElOSVRfVU5QUkVGSVhFRF9FTlRSWShBRERSLCBFWFBfSE9T VCwgRVhQX1BPUlQpIFwKKysgIElOSVRfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwg ZmFsc2UsIDAsIDAsIDApCisrCisrLyogSW5pdGlhbGl6ZWQgYW4gdW5wcmVmaXhlZCBJUHY2IGVu dHJ5LiAgSW4gdGhpcyBjYXNlLCB3ZSBkb24ndAorKyAgIGV4cGVjdCBhbnl0aGluZyBvbiB0aGUg J3N0cnVjdCBhZGRyaW5mbycgSElOVC4gICovCisrI2RlZmluZSBJTklUX1VOUFJFRklYRURfSVBW Nl9FTlRSWShBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQpIFwKKysgIElOSVRfRU5UUlkgKEFERFIs IEVYUF9IT1NULCBFWFBfUE9SVCwgZmFsc2UsIEFGX0lORVQ2LCAwLCAwKQorKworKy8qIEluaXRp YWxpemUgYSBwcmVmaXhlZCBlbnRyeS4gICovCisrI2RlZmluZSBJTklUX1BSRUZJWEVEX0VOVFJZ KEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgRVhQX0FJX0ZBTUlMWSwgXAorKwkJCSAgICBFWFBf QUlfU09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkgXAorKyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQ X0hPU1QsIEVYUF9QT1JULCBmYWxzZSwgRVhQX0FJX0ZBTUlMWSwgXAorKwkgICAgICBFWFBfQUlf U09DS1RZUEUsIEVYUF9BSV9QUk9UT0NPTCkKKysKKysvKiBJbml0aWFsaXplIGFuIGVudHJ5IHBy ZWZpeGVkIHdpdGggInRjcDQ6Ii4gICovCisrI2RlZmluZSBJTklUX1BSRUZJWEVEX0lQVjRfVENQ KEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAorKyAgSU5JVF9QUkVGSVhFRF9FTlRSWSAoQURE UiwgRVhQX0hPU1QsIEVYUF9QT1JULCBBRl9JTkVULCBTT0NLX1NUUkVBTSwgXAorKwkJICAgICAg IElQUFJPVE9fVENQKQorKworKy8qIEluaXRpYWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAi dGNwNjoiLiAgKi8KKysjZGVmaW5lIElOSVRfUFJFRklYRURfSVBWNl9UQ1AoQUREUiwgRVhQX0hP U1QsIEVYUF9QT1JUKSBcCisrICBJTklUX1BSRUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwg RVhQX1BPUlQsIEFGX0lORVQ2LCBTT0NLX1NUUkVBTSwgXAorKwkJICAgICAgIElQUFJPVE9fVENQ KQorKworKy8qIEluaXRpYWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidWRwNDoiLiAgKi8K KysjZGVmaW5lIElOSVRfUFJFRklYRURfSVBWNF9VRFAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JU KSBcCisrICBJTklUX1BSRUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFG X0lORVQsIFNPQ0tfREdSQU0sIFwKKysJCSAgICAgICBJUFBST1RPX1VEUCkKKysKKysvKiBJbml0 aWFsaXplIGFuIGVudHJ5IHByZWZpeGVkIHdpdGggInVkcDY6Ii4gICovCisrI2RlZmluZSBJTklU X1BSRUZJWEVEX0lQVjZfVURQKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAorKyAgSU5JVF9Q UkVGSVhFRF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBBRl9JTkVUNiwgU09DS19E R1JBTSwgXAorKwkJICAgICAgIElQUFJPVE9fVURQKQorKworKy8qIEluaXRpYWxpemUgYSBib2d1 cyBlbnRyeSwgaS5lLiwgYSBjb25uZWN0aW9uIHNwZWMgdGhhdCBzaG91bGQKKysgICBmYWlsLiAg Ki8KKysjZGVmaW5lIElOSVRfQk9HVVNfRU5UUlkoQUREUikgXAorKyAgSU5JVF9FTlRSWSAoQURE UiwgIiIsICIiLCB0cnVlLCAwLCAwLCAwKQorKworKy8qIFRoZSB2YXJpYWJsZSB3aGljaCBob2xk cyBhbGwgb2Ygb3VyIHRlc3RzLiAgKi8KKysKKytzdGF0aWMgY29uc3QgcGFyc2VfY29ubl90ZXN0 IGNvbm5fdGVzdFtdID0KKysgIHsKKysgICAgLyogVW5wcmVmaXhlZCBhZGRyZXNzZXMuICAqLwor KworKyAgICAvKiBJUHY0LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJTklUX1VO UFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAor KyAgICAvKiBJUHY0LCBvbmx5IGhvc3QuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkg KCIxMjcuMC4wLjEiLCAiMTI3LjAuMC4xIiwgIiIpLAorKyAgICAvKiBJUHY0LCBtaXNzaW5nIHBv cnQuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCIxMjcuMC4wLjE6IiwgIjEyNy4w LjAuMSIsICIiKSwKKysKKysgICAgLyogSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50LCBubyBi cmFja2V0cy4gICovCisrICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjo6MToxMjM0IiwgIjo6 MSIsICIxMjM0IiksCisrICAgIC8qIElQdjYsIG1pc3NpbmcgcG9ydCwgbm8gYnJhY2tldHMuICAq LworKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCI6OjE6IiwgIjo6MSIsICIiKSwKKysgICAg LyogSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50LCB3aXRoIGJyYWNrZXRzLiAgKi8KKysgICAg SU5JVF9VTlBSRUZJWEVEX0lQVjZfRU5UUlkgKCJbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0Iiks CisrICAgIC8qIElQdjYsIG9ubHkgaG9zdCwgd2l0aCBicmFja2V0cy4gICovCisrICAgIElOSVRf VU5QUkVGSVhFRF9JUFY2X0VOVFJZICgiWzo6MV0iLCAiOjoxIiwgIiIpLAorKyAgICAvKiBJUHY2 LCBtaXNzaW5nIHBvcnQsIHdpdGggYnJhY2tldHMuICAqLworKyAgICBJTklUX1VOUFJFRklYRURf SVBWNl9FTlRSWSAoIls6OjFdOiIsICI6OjEiLCAiIiksCisrCisrICAgIC8qIFVuc3BlY2lmaWVk LCBvbmx5IHBvcnQuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfRU5UUlkgKCI6MTIzNCIsICJs b2NhbGhvc3QiLCAiMTIzNCIpLAorKworKyAgICAvKiBQcmVmaXhlZCBhZGRyZXNzZXMuICAqLwor KworKyAgICAvKiBQcmVmaXhlZCAidGNwNDoiIElQdjQsIGhvc3QgYW5kIHBvcnQgcHJlc2VudHMu ICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjE6MTIzNCIs ICIxMjcuMC4wLjEiLCAiMTIzNCIpLAorKyAgICAvKiBQcmVmaXhlZCAidGNwNDoiIElQdjQsIG9u bHkgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNF9UQ1AgKCJ0Y3A0OjoxMjM0Iiwg ImxvY2FsaG9zdCIsICIxMjM0IiksCisrICAgIC8qIFByZWZpeGVkICJ0Y3A0OiIgSVB2NCwgb25s eSBob3N0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1RDUCAoInRjcDQ6MTI3LjAuMC4x IiwgIjEyNy4wLjAuMSIsICIiKSwKKysgICAgLyogUHJlZml4ZWQgInRjcDQ6IiBJUHY0LCBtaXNz aW5nIHBvcnQuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4w LjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKKysKKysgICAgLyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0 LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVURQ ICgidWRwNDoxMjcuMC4wLjE6MTIzNCIsICIxMjcuMC4wLjEiLCAiMTIzNCIpLAorKyAgICAvKiBQ cmVmaXhlZCAidWRwNDoiIElQdjQsIG9ubHkgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklYRURf SVBWNF9VRFAgKCJ1ZHA0OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCisrICAgIC8qIFBy ZWZpeGVkICJ1ZHA0OiIgSVB2NCwgb25seSBob3N0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9J UFY0X1VEUCAoInVkcDQ6MTI3LjAuMC4xIiwgIjEyNy4wLjAuMSIsICIiKSwKKysgICAgLyogUHJl Zml4ZWQgInVkcDQ6IiBJUHY0LCBtaXNzaW5nIHBvcnQuICAqLworKyAgICBJTklUX1BSRUZJWEVE X0lQVjRfVURQICgidWRwNDoxMjcuMC4wLjE6IiwgIjEyNy4wLjAuMSIsICIiKSwKKysKKysKKysg ICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2LCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLwor KyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjo6OjE6MTIzNCIsICI6OjEiLCAiMTIz NCIpLAorKyAgICAvKiBQcmVmaXhlZCAidGNwNjoiIElQdjYsIG9ubHkgcG9ydC4gICovCisrICAg IElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2OjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0 IiksCisrICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2Niwgb25seSBob3N0LiAgKi8KKysgICAg Ly9JTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjo6OjEiLCAiOjoxIiwgIiIpLAorKyAgICAv KiBQcmVmaXhlZCAidGNwNjoiIElQdjYsIG1pc3NpbmcgcG9ydC4gICovCisrICAgIElOSVRfUFJF RklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojo6MToiLCAiOjoxIiwgIiIpLAorKworKyAgICAvKiBQcmVm aXhlZCAidWRwNjoiIElQdjYsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4gICovCisrICAgIElOSVRf UFJFRklYRURfSVBWNl9VRFAgKCJ1ZHA2Ojo6MToxMjM0IiwgIjo6MSIsICIxMjM0IiksCisrICAg IC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2Niwgb25seSBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVG SVhFRF9JUFY2X1VEUCAoInVkcDY6OjEyMzQiLCAibG9jYWxob3N0IiwgIjEyMzQiKSwKKysgICAg LyogUHJlZml4ZWQgInVkcDY6IiBJUHY2LCBvbmx5IGhvc3QuICAqLworKyAgICAvL0lOSVRfUFJF RklYRURfSVBWNl9VRFAgKCJ1ZHA2Ojo6MSIsICI6OjEiLCAiIiksCisrICAgIC8qIFByZWZpeGVk ICJ1ZHA2OiIgSVB2NiwgbWlzc2luZyBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2 X1VEUCAoInVkcDY6OjoxOiIsICI6OjEiLCAiIiksCisrCisrICAgIC8qIFByZWZpeGVkICJ0Y3A2 OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJ TklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0Iiks CisrICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBvbmx5IGhvc3Qu ICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjoxXSIsICI6OjEiLCAi IiksCisrICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBtaXNzaW5n IHBvcnQuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVENQICgidGNwNjpbOjoxXToiLCAi OjoxIiwgIiIpLAorKworKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYgd2l0aCBicmFja2V0 cywgaG9zdCBhbmQgcG9ydCBwcmVzZW50LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VE UCAoInVkcDY6Wzo6MV06MTIzNCIsICI6OjEiLCAiMTIzNCIpLAorKyAgICAvKiBQcmVmaXhlZCAi dWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgb25seSBob3N0LiAgKi8KKysgICAgSU5JVF9QUkVG SVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6MV0iLCAiOjoxIiwgIiIpLAorKyAgICAvKiBQcmVmaXhl ZCAidWRwNjoiIElQdjYgd2l0aCBicmFja2V0cywgbWlzc2luZyBwb3J0LiAgKi8KKysgICAgSU5J VF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6Wzo6MV06IiwgIjo6MSIsICIiKSwKKysKKysKKysg ICAgLyogQm9ndXMgYWRkcmVzc2VzLiAgKi8KKysgICAgSU5JVF9CT0dVU19FTlRSWSAoInRjcDY6 Wzo6MV0xMjM6NDQiKSwKKysgICAgSU5JVF9CT0dVU19FTlRSWSAoIls6OjEiKSwKKysgICAgSU5J VF9CT0dVU19FTlRSWSAoInRjcDY6OjoxXToiKSwKKysgIH07CisrCisrLyogVGVzdCBhIGNvbm5l Y3Rpb24gc3BlYyBDLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Rlc3RfY29ubiAoY29uc3QgcGFy c2VfY29ubl90ZXN0ICZjKQorK3sKKysgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworKyAgcGFyc2Vk X2Nvbm5lY3Rpb25fc3BlYyByZXQ7CisrCisrICBtZW1zZXQgKCZoaW50LCAwLCBzaXplb2YgKGhp bnQpKTsKKysKKysgIFRSWQorKyAgICB7CisrICAgICAgcmV0ID0gcGFyc2VfY29ubmVjdGlvbl9z cGVjIChjLmNvbm5zcGVjLCAmaGludCk7CisrICAgIH0KKysgIENBVENIIChleCwgUkVUVVJOX01B U0tfRVJST1IpCisrICAgIHsKKysgICAgICAvKiBJZiB3ZSBjYXVnaHQgYW4gZXJyb3IsIHdlIHNo b3VsZCBjaGVjayBpZiB0aGlzIGNvbm5lY3Rpb24KKysJIHNwZWMgd2FzIHN1cHBvc2VkIHRvIGZh aWwuICAqLworKyAgICAgIFNFTEZfQ0hFQ0sgKGMuc2hvdWxkX2ZhaWwpOworKyAgICAgIHJldHVy bjsKKysgICAgfQorKyAgRU5EX0NBVENICisrCisrICBTRUxGX0NIRUNLICghYy5zaG91bGRfZmFp bCk7CisrICBTRUxGX0NIRUNLIChyZXQuaG9zdF9zdHIgPT0gYy5leHBlY3RlZF9yZXN1bHQuaG9z dF9zdHIpOworKyAgU0VMRl9DSEVDSyAocmV0LnBvcnRfc3RyID09IGMuZXhwZWN0ZWRfcmVzdWx0 LnBvcnRfc3RyKTsKKysgIFNFTEZfQ0hFQ0sgKGhpbnQuYWlfZmFtaWx5ID09IGMuZXhwX2FpX2Zh bWlseSk7CisrICBTRUxGX0NIRUNLIChoaW50LmFpX3NvY2t0eXBlID09IGMuZXhwX2FpX3NvY2t0 eXBlKTsKKysgIFNFTEZfQ0hFQ0sgKGhpbnQuYWlfcHJvdG9jb2wgPT0gYy5leHBfYWlfcHJvdG9j b2wpOworK30KKysKKysvKiBSdW4gdGhlIHRlc3RzIGFzc29jaWF0ZWQgd2l0aCBwYXJzaW5nIGNv bm5lY3Rpb24gc3BlY3MuICAqLworKworK3N0YXRpYyB2b2lkCisrcnVuX3Rlc3RzICgpCisrewor KyAgZm9yIChjb25zdCBwYXJzZV9jb25uX3Rlc3QgJmMgOiBjb25uX3Rlc3QpCisrICAgIHRlc3Rf Y29ubiAoYyk7CisrfQorK30gLyogbmFtZXNwYWNlIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0 cyAqLworK30gLyogbmFtZXNwYWNlIHNlbGZ0ZXN0cyAqLworKworK3ZvaWQKKytfaW5pdGlhbGl6 ZV9wYXJzZV9jb25uZWN0aW9uX3NwZWNfc2VsZnRlc3RzICgpCisreworKyAgc2VsZnRlc3RzOjpy ZWdpc3Rlcl90ZXN0ICgicGFyc2VfY29ubmVjdGlvbl9zcGVjIiwKKysJCQkgICAgc2VsZnRlc3Rz OjpwYXJzZV9jb25uZWN0aW9uX3NwZWNfdGVzdHM6OnJ1bl90ZXN0cyk7CisrfQoKZGlmZiAtLWdp dCBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMi5wYXRjaCBiL2dkYi1yaGJ6ODgxODQ5LWlwdjYt Mm9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5Yzk2Ni4uMDAwMDAw MAotLS0gYS9nZGItcmhiejg4MTg0OS1pcHY2LTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw2MyArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogU2VyZ2lvIER1cmlnYW4gSnVuaW9yIDxzZXJnaW9kakByZWRoYXQuY29tPgotRGF0 ZTogRnJpLCAxMyBKdWwgMjAxOCAxNjoyMDozNCAtMDQwMAotU3ViamVjdDogZ2RiLXJoYno4ODE4 NDktaXB2Ni0yb2YyLnBhdGNoCi0KLTs7IEltcGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9n ZGJzZXJ2ZXIgKFJIIEJaIDg4MTg0OSwgU2VyZ2lvIER1cmlnYW4gSnVuaW9yKS4KLQotRXhwZWN0 IGZvciBhbm90aGVyIHZhcmlhbnQgb2YgZXJyb3IgbWVzc2FnZSB3aGVuIGdkYnNlcnZlciBjYW5u b3QgcmVzb2x2ZSBob3N0bmFtZQotCi1JJ3ZlIG5vdGljZWQgdGhhdCBvbiBhIGZldyBob3N0cywg d2hlbiBnaXZlbiBhbiBpbnZhbGlkIGhvc3RuYW1lLAotZ2Ric2VydmVyIGZhaWxzIHdpdGg6Ci0K LSAgc3Bhd24gLy4uLy4uL2dkYi9nZGJzZXJ2ZXIvZ2Ric2VydmVyIC0tb25jZSB0Y3A4OjEyMzoy MzUzIC9nZGIvYnVpbGQvZmVkb3JhLXMzOTB4L2J1aWxkL2dkYi90ZXN0c3VpdGUvb3V0cHV0cy9n ZGIuc2VydmVyL3NlcnZlci1jb25uZWN0L3NlcnZlci1jb25uZWN0Ci0gIHRjcDg6MTIzOjIzNTM6 IGNhbm5vdCByZXNvbHZlIG5hbWU6IE5vIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGhvc3RuYW1l Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eCi0gIEV4aXRpbmcKLQotVW5mb3J0dW5hdGVseSwgdGhpcyBjYXVz ZXMgYSBmYWlsIG9uIHRoZSBuZXcKLWdkYi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3QuZXhwIHRlc3Qg KGludHJvZHVjZWQgYnkgdGhlIElQdjYgcGF0Y2gpOgotCi0gIEZBSUw6IGdkYi5zZXJ2ZXIvc2Vy dmVyLWNvbm5lY3QuZXhwOiB0Y3A4OiBzdGFydCBnZGJzZXJ2ZXI6IGdkYnNlcnZlciBzaG91bGQg ZmFpbCBidXQgZGlkIG5vdAotCi1UaGlzIGhhcHBlbnMgYmVjYXVzZSB3ZSdyZSBleHBlY3Rpbmcg Zm9yIGFub3RoZXIgdmFyaWFudCBvZiB0aGlzIGVycm9yCi1tZXNzYWdlOgotCi0gIGNhbm5vdCBy ZXNvbHZlIG5hbWU6IE5hbWUgb3Igc2VydmljZSBub3Qga25vd24KLQotVGhlcmVmb3JlLCB0aGlz IHBhdGNoIGV4dGVuZHMgdGhlIGhlbHBlciBmdW5jdGlvbiAnZ2Ric2VydmVyX3N0YXJ0JyB0bwot YWxzbyByZWNvZ25pemUgdGhlICJObyBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBob3N0bmFtZSIg bWVzc2FnZS4KLVRoaXMgImZpeGVzIiB0aGUgdGVzdGNhc2Ugb24gdGhlIGhvc3RzIHRoYXQgdXNl IHRoaXMgdmFyaWFudC4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0yMDE4LTA3LTEzICBT ZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotCi0JKiBsaWIvZ2Ri c2VydmVyLXN1cHBvcnQuZXhwIChnZGJzZXJ2ZXJfc3RhcnQpOiBFeHBlY3QgZm9yIHRoZQotCW1l c3NhZ2UgIk5vIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGhvc3RuYW1lIiB3aGVuIGdkYnNlcnZl cgotCWNhbm5vdCByZXNvbHZlIHRoZSBob3N0bmFtZS4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCi0rKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotQEAgLTEsMyAr MSw5IEBACi0rMjAxOC0wNy0xMyAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVk aGF0LmNvbT4KLSsKLSsJKiBsaWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIChnZGJzZXJ2ZXJfc3Rh cnQpOiBFeHBlY3QgZm9yIHRoZQotKwltZXNzYWdlICJObyBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0 aCBob3N0bmFtZSIgd2hlbiBnZGJzZXJ2ZXIKLSsJY2Fubm90IHJlc29sdmUgdGhlIGhvc3RuYW1l LgotKwotIDIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhh dC5jb20+Ci0gCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0gCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUv bGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2Vy dmVyLXN1cHBvcnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9y dC5leHAKLUBAIC0zMjYsNyArMzI2LDcgQEAgcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25z IGFyZ3VtZW50cyB9IHsKLSAJCSAgICBjb250aW51ZQotIAkJfQotIAkgICAgfQotLQkgICAgLXJl ICIuKjogY2Fubm90IHJlc29sdmUgbmFtZTogTmFtZSBvciBzZXJ2aWNlIG5vdCBrbm93blxyXG4i IHsKLSsJICAgIC1yZSAiLio6IGNhbm5vdCByZXNvbHZlIG5hbWU6IFwoTm8gYWRkcmVzcyBhc3Nv Y2lhdGVkIHdpdGggaG9zdG5hbWV8TmFtZSBvciBzZXJ2aWNlIG5vdCBrbm93blwpXHJcbiIgewot IAkJZXJyb3IgImdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBuYW1lLiIKLSAJICAgIH0KLSAJICAg IHRpbWVvdXQgewoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMy5wYXRjaCBi L2dkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zOTBiZTBmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYno4ODE4NDktaXB2 Ni0yb2YzLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2Rq QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE1OjIzOjI3IC0wNDAwCitTdWJq ZWN0OiBnZGItcmhiejg4MTg0OS1pcHY2LTJvZjMucGF0Y2gKKworTWF0Y2ggYW55IGtpbmQgb2Yg ZXJyb3IgYWZ0ZXIgImNhbm5vdCByZXNvbHZlIG5hbWUiIG9uIGxpYi9nZGJzZXJ2ZXItc3VwcG9y dC5leHA6Z2Ric2VydmVyX3N0YXJ0CisKK09uIGNvbW1pdDoKKworY29tbWl0IDdmMWY3ZTIzOTM5 YWRjN2Q3MTAzNmExN2ZjNjA4MWUzYWY3Y2E1ODUKK0F1dGhvcjogU2VyZ2lvIER1cmlnYW4gSnVu aW9yIDxzZXJnaW9kakByZWRoYXQuY29tPgorRGF0ZTogICBGcmkgSnVsIDEzIDE2OjIwOjM0IDIw MTggLTA0MDAKKworICAgIEV4cGVjdCBmb3IgYW5vdGhlciB2YXJpYW50IG9mIGVycm9yIG1lc3Nh Z2Ugd2hlbiBnZGJzZXJ2ZXIgY2Fubm90IHJlc29sdmUgaG9zdG5hbWUKKworSSBleHRlbmRlZCB0 aGUgcmVndWxhciBleHByZXNzaW9uIGJlaW5nIHVzZWQgdG8gaWRlbnRpZnkgd2hldGhlcgorZ2Ri c2VydmVyIGNvdWxkIG5vdCByZXNvbHZlIGEgKGhvc3QpbmFtZS4gIFRoaXMgd2FzIG5lZWRlZCBi ZWNhdXNlIHRoZQorZXJyb3IgbWVzc2FnZSBiZWluZyBwcmludGVkIGhhZCBhIGRpZmZlcmVudCB2 YXJpYXRpb24gYWNyb3NzIHNvbWUKK3N5c3RlbXMuICBIb3dldmVyLCBhcyBpdCB0dXJucyBvdXQs IEkndmUganVzdCBub3RpY2VkIHRoYXQgdGhlIG1lc3NhZ2UKK2hhcyB5ZXQgYW5vdGhlciB2YXJp YXRpb246CisKKyAgdGFyZ2V0IHJlbW90ZSB0Y3A4OjEyMzoyMzUzCisgIHRjcDg6MTIzOjIzNTM6 IGNhbm5vdCByZXNvbHZlIG5hbWU6IFN5c3RlbSBlcnJvcgorICAgICAgICAgICAgICAgICBeXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKyAgdGNwODoxMjM6MjM1MzogTm8gc3VjaCBm aWxlIG9yIGRpcmVjdG9yeS4KKyAgKGdkYikgRkFJTDogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVj dC5leHA6IHRjcDg6IGNvbm5lY3QgdG8gZ2Ric2VydmVyIHVzaW5nIHRjcDg6MTIzCisKK3doaWNo IGlzIGNhdXNpbmcgRkFJTHMgb24gc29tZSBzeXN0ZW1zIChuYW1lbHksIEZlZG9yYS1pNjg2IG9u CitCdWlsZEJvdCkuCisKK1NvIGluc3RlYWQgb2YgdHJ5aW5nIHRvIHByZWRpY3QgZXZlcnl0aGlu ZyB0aGF0IGNhbiBiZSBwcmludGVkLCBJCitkZWNpZGVkIHRvIGp1c3QgbWF0Y2ggYW55dGhpbmcg YWZ0ZXIgdGhlICJjYW5ub3QgcmVzb2x2ZSBuYW1lOiAiIHBhcnQuCitUaGlzIHBhdGNoIGltcGxl bWVudHMgdGhhdC4KKworUmVncmVzc2lvbiB0ZXN0ZWQgb24gdGhlIEJ1aWxkQm90LgorCitnZGIv dGVzdHN1aXRlL0NoYW5nZUxvZzoKKzIwMTgtMDctMzAgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAg PHNlcmdpb2RqQHJlZGhhdC5jb20+CisKKwkqIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgKGdk YnNlcnZlcl9zdGFydCk6IE1hdGNoIGFueSBraW5kIG9mCisJZXJyb3IgYWZ0ZXIgImNhbm5vdCBy ZXNvbHZlIG5hbWUiIHN0cmluZy4KKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dk YnNlcnZlci1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0 LmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwCisrKysg Yi9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKK0BAIC0zMjYsNyArMzI2 LDcgQEAgcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50cyB9IHsKKyAJCSAg ICBjb250aW51ZQorIAkJfQorIAkgICAgfQorLQkgICAgLXJlICIuKjogY2Fubm90IHJlc29sdmUg bmFtZTogTmFtZSBvciBzZXJ2aWNlIG5vdCBrbm93blxyXG4iIHsKKysJICAgIC1yZSAiLio6IGNh bm5vdCByZXNvbHZlIG5hbWU6IC4qXHJcbiIgeworIAkJZXJyb3IgImdkYnNlcnZlciBjYW5ub3Qg cmVzb2x2ZSBuYW1lLiIKKyAJICAgIH0KKyAJICAgIHRpbWVvdXQgewoKZGlmZiAtLWdpdCBhL2dk Yi1yaGJ6ODgxODQ5LWlwdjYtM29mMy5wYXRjaCBiL2dkYi1yaGJ6ODgxODQ5LWlwdjYtM29mMy5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODljYjE4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLXJoYno4ODE4NDktaXB2Ni0zb2YzLnBhdGNoCkBAIC0wLDAgKzEsNzIg QEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBT ZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDMg QXVnIDIwMTggMTg6MDQ6MzggLTA0MDAKK1N1YmplY3Q6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtM29m My5wYXRjaAorCitGaXggdGhpbmtvIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBkaXNhYmxlIFRD UCdzIE5hZ2xlIGFsZ29yaXRobQorCitUaGlzIHBhdGNoIGZpeGVzIGEgdGhpbmtvIHRoYXQgaGFw cGVuZWQgd2hlbiBJIHdhcyBpbXBsZW1lbnRpbmcgdGhlCitJUHY2IHN1cHBvcnQgb24gR0RCL2dk YnNlcnZlci4gIE9uIGNlcnRhaW4gc2l0dWF0aW9ucywgaXQgaXMgbmVjZXNzYXJ5Cit0byBkaXNh YmxlIFRDUCdzIE5hZ2xlIGFsZ29yaXRobSAoTk9ERUxBWSkuICBGb3Igb2J2aW91cyByZWFzb25z LCB0aGlzCitvbmx5IGFwcGxpZXMgd2hlbiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgVENQIGNvbm5l Y3Rpb24uCisKK1doaWxlIGltcGxlbWVudGluZyB0aGUgSVB2NiBwYXRjaCwgSSBub3RpY2VkIHRo YXQgdGhlIG5ldF9vcGVuCitmdW5jdGlvbiAob24gZ2RiL3Nlci10Y3AuYykga2VwdCBhIGZsYWcg aW5kaWNhdGluZyB3aGV0aGVyIHRoZQorY29ubmVjdGlvbiB0eXBlIHdhcyBVRFAgb3IgVENQLiAg SSBlbGltaW5hdGVkIHRoYXQgZmxhZywgYW5kIHN0YXJ0ZWQKK3VzaW5nIHRoZSAnc3RydWN0IGFk ZHJpbmZvIConIHJlbGF0ZWQgdG8gdGhlIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbgorZGlyZWN0bHku ICBIb3dldmVyLCBJIG1hZGUgYSBtaXN0YWtlOgorCisgIGlmIChzdWNjZXNzX2FpbmZvLT5haV9z b2NrdHlwZSA9PSBJUFBST1RPX1RDUCkKKyAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5e CisgICAgeworICAgICAgLyogRGlzYWJsZSBOYWdsZSBhbGdvcml0aG0uICBOZWVkZWQgaW4gc29t ZSBjYXNlcy4gICovCisgICAgICBpbnQgdG1wID0gMTsKKworICAgICAgc2V0c29ja29wdCAoc2Ni LT5mZCwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLAorCQkgIChjaGFyICopICZ0bXAsIHNpemVv ZiAodG1wKSk7CisgICAgfQorCitUaGUgJ2FpX3NvY2t0eXBlJyBmaWVsZCBzcGVjaWZpZXMgdGhl IHNvY2tldCB0eXBlIChTT0NLX1NUUkVBTSBvcgorU09DS19ER1JBTSksIGFuZCBub3QgdGhlIHBy b3RvY29sLiAgVGhpcyB0ZXN0IHdhcyBhbHdheXMgZmFpbGluZywgYW5kCit0aGUgTmFnbGUgYWxn b3JpdGhtIHdhcyBuZXZlciBiZWluZyBkaXNhYmxlZC4KKworVGhlIG9idmlvdXMgZml4IGlzIHRv IHVzZSB0aGUgJ2FpX3Byb3RvY29sJyBmaWVsZC4gIFRoaXMgaXMgd2hhdCB0aGlzCitwYXRjaCBk b2VzLgorCitIdWdlICJ0aGFuayB5b3UiIHRvIEpvZWwgQnJvYmVja2VyIHdobyByZXBvcnRlZCB0 aGUgcmVncmVzc2lvbiAoaGUgd2FzCitleHBlcmllbmNpbmcgYW4gdW51c3VhbCBkZWxheSB3aGls ZSBkZWJ1Z2dpbmcgYSBiYXJlLW1ldGFsIHByb2dyYW0KK3J1bm5pbmcgdW5kZXIgUUVNVSkgYW5k IGhlbHBlZCBtZSBzZXQgdXAgYSBwcm9wZXIgcmVwcm9kdWNlciBmb3IgdGhlCitidWcuCisKK2dk Yi9DaGFuZ2VMb2c6CisyMDE4LTA4LTAzICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9k akByZWRoYXQuY29tPgorCisJKiBzZXItdGNwLmMgKG5ldF9vcGVuKTogRml4IHRoaW5rbyB3aGVu IGRlY2lkaW5nIHdoZXRoZXIgdG8KKwlkaXNhYmxlIFRDUCdzIE5hZ2xlIGFsZ29yaXRobSAodXNl ICJhaV9wcm90b2NvbCIgaW5zdGVhZCBvZgorCSJhaV9zb2NrdHlwZSIpLgorCitkaWZmIC0tZ2l0 IGEvZ2RiL0NoYW5nZUxvZyBiL2dkYi9DaGFuZ2VMb2cKKy0tLSBhL2dkYi9DaGFuZ2VMb2cKKysr KyBiL2dkYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsOSBAQAorKzIwMTgtMDgtMDMgIFNlcmdpbyBE dXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisrCisrCSogc2VyLXRjcC5jIChu ZXRfb3Blbik6IEZpeCB0aGlua28gd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvCisrCWRpc2FibGUg VENQJ3MgTmFnbGUgYWxnb3JpdGhtICh1c2UgImFpX3Byb3RvY29sIiBpbnN0ZWFkIG9mCisrCSJh aV9zb2NrdHlwZSIpLgorKworIDIwMTgtMDctMjUgIEFsYW4gSGF5d2FyZCAgPGFsYW4uaGF5d2Fy ZEBhcm0uY29tPgorIAorIAkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfcmVnaXN0ZXJf Yml0c2l6ZSk6IFJlbmFtZS4KK2RpZmYgLS1naXQgYS9nZGIvc2VyLXRjcC5jIGIvZ2RiL3Nlci10 Y3AuYworLS0tIGEvZ2RiL3Nlci10Y3AuYworKysrIGIvZ2RiL3Nlci10Y3AuYworQEAgLTM2Nyw3 ICszNjcsNyBAQCBuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1l KQorIAorICAgaW9jdGwgKHNjYi0+ZmQsIEZJT05CSU8sICZpb2FyZyk7CisgCistICBpZiAoc3Vj Y2Vzc19haW5mby0+YWlfc29ja3R5cGUgPT0gSVBQUk9UT19UQ1ApCisrICBpZiAoc3VjY2Vzc19h aW5mby0+YWlfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1ApCisgICAgIHsKKyAgICAgICAvKiBEaXNh YmxlIE5hZ2xlIGFsZ29yaXRobS4gIE5lZWRlZCBpbiBzb21lIGNhc2VzLiAgKi8KKyAgICAgICBp bnQgdG1wID0gMTsKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDdkYjZm NzIuLjZmMzg3MmEgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yNiw3 ICsyNiw3IEBAIFZlcnNpb246IDguMS45MC4le3NuYXBzcmN9CiAKICMgVGhlIHJlbGVhc2UgYWx3 YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAj IGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVw ZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMzklez9kaXN0 fQorUmVsZWFzZTogNDAlez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRo IGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BM KyBhbmQgTEdQTHYyKyBhbmQgTEdQTHYzKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBH RkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC0xNjksMTQgKzE2OSwxMSBAQCBT b3VyY2U1OiAle2xpYnN0ZGN4eHB5dGhvbn0udGFyLnh6CiBTb3VyY2U2OiBnZGJ0dWkKIAogIyBs aWJpcHQ6IEludGVsIFByb2Nlc3NvciBUcmFjZSBEZWNvZGVyIExpYnJhcnkKLSVnbG9iYWwgbGli aXB0X3ZlcnNpb24gMS42LjEKKyVnbG9iYWwgbGliaXB0X3ZlcnNpb24gMi4wCiAjPWZlZG9yYQog U291cmNlNzogdiV7bGliaXB0X3ZlcnNpb259LnRhci5negogIz1mZWRvcmEKIFBhdGNoMTE0Mjog djEuNS1saWJpcHQtc3RhdGljLnBhdGNoCi0jIFtyaGVsIGR0cyBsaWJpcHRdIEZpeCBbLVdlcnJv cj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dIHdpdGggZ2NjLTcuMS4xLgotIz1wdXNoK2phbgotUGF0 Y2gxMTcxOiB2MS42LjEtaW1wbGljaXQtZmFsbHRocm91Z2gucGF0Y2gKIAogIyMgW3Rlc3RzdWl0 ZV0gRml4IGZhbHNlIHNlbGZ0ZXN0LmV4cCBGQUlMIGZyb20gc3lzdGVtIHJlYWRsaW5lLTYuMysg KFBhdHJpY2sgUGFsa2EpLgogIyM9ZmVkb3JhdGVzdApAQCAtNDE1LDcgKzQxMiw2IEBAIHRhciB4 emYgJXtTT1VSQ0U3fQogKAogIGNkIHByb2Nlc3Nvci10cmFjZS0le2xpYmlwdF92ZXJzaW9ufQog JXBhdGNoMTE0MiAtcDEKLSVwYXRjaDExNzEgLXAxCiApCiAlZW5kaWYKIApAQCAtMTAyNiw2ICsx MDIyLDExIEBAIGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBXZWQgQXVnICA4IDIwMTggU2Vy Z2lvIER1cmlnYW4gSnVuaW9yIDxzZXJnaW9kakByZWRoYXQuY29tPiAtIDguMS45MC4yMDE4MDcy Ny00MC5mYzI5CistIFJlYnVpbGQgZHVlIHRvIG5ldyBsaWJpcHQgcmVsZWFzZS4KKy0gQWRqdXN0 IGJ1bmRsZWQgbGliaXB0OyByZW1vdmUgdW5uZWNlc3NhcnkgcGF0Y2guCistIFN5bmMgSVB2NiBw YXRjaCB3aXRoIEYtMjggR0RCLgorCiAqIFdlZCBBdWcgIDggMjAxOCBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA4LjEuOTAuMjAxODA3MjctMzkuZmMyOQogLSBb ZHRzXSBGaXggYnVpbGQgYnkgcmVtb3ZpbmcgYSBwYXRjaCBmb3IgYWxyZWFkeSByZW1vdmVkIHBh aG9sZS5weSAuCiAtIFtkdHMgcmhlbDZdIEZpeCBidWlsZCBieSB1cGRhdGluZyBnZGItZ25hdC1k d2FyZi1jcmFzaC0zb2YzLnBhdGNoIC4KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCAxOTNjNTdkLi41ZDhiODUzIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEsMyArMSwzIEBACiBTSEE1MTIgKGdkYi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIw MTgwNjI2LnRhci54eikgPSBhOGIxYzU0ZGQzNDhjZmViMzdkYTczZjk2ODc0Mjg5NmJlM2RkMTNh NDIxNWY4ZDg1MTk4NzBjMmFiZWE5MTVmNTE3NmMzZmE2OTg5ZGRkMTBmMjAwMjBhMTZmMGZhYjIw Y2JhZTY4ZWU4ZDU4YTgyMjM0ZDg3NzgwMjM1MjBmOAotU0hBNTEyICh2MS42LjEudGFyLmd6KSA9 IGM3YzljOGJhNzgwMjFmZmYzZmRlMTJhMjE2ZjU3MjljNjAzMTExNGU1YTcyN2Y0OWI3ZmYxYTMx YzUzYjVkZGJhMjRkMWIzYWVlMjUyZDgyNzhlY2QxZmFmZTc4YTQ0ZWQwNTljMTJiOWViMjllY2Ez MzA5M2UwNzIwNjczNDY4CiBTSEE1MTIgKGdkYi04LjEuOTAuMjAxODA3MjcudGFyLnh6KSA9IDBm OGU5Y2ZhZWFmOWYyMjM2MWIzYjhkNWQ0OTBkMGE4YmVhM2VlYWFhMGM2ODEzZDVkZjBhNmQ1MjY3 ZmYzZjU5Nzc0N2NjMGU5N2Q3MGM0MTk2ZDc4ZWUzMmUwZTgyZDU4OTMyODNkNzFiNDQ5ZDg5NzAz ODkzYmYxYWUwMDE0CitTSEE1MTIgKHYyLjAudGFyLmd6KSA9IGVjNjMxNTFlODQyYzgxY2M3M2Vh MTFiYTU2MGI2M2UwMDVjZWZiZTE5ZDk4ZGUyNGFlNWM4Y2FhNGRlN2M5YzFkNzFkMWVjNWI2MjE0 YTM0NzU5MmVhYzY3NWI3NWEzZDJiMjZkNDY5MWNhODZmOTEwMjBlYmZlYThlOTEyOTM5CgpkaWZm IC0tZ2l0IGEvdjEuNS1saWJpcHQtc3RhdGljLnBhdGNoIGIvdjEuNS1saWJpcHQtc3RhdGljLnBh dGNoCmluZGV4IDQ3N2I2YzQuLjY1OTk0NDUgMTAwNjQ0Ci0tLSBhL3YxLjUtbGliaXB0LXN0YXRp Yy5wYXRjaAorKysgYi92MS41LWxpYmlwdC1zdGF0aWMucGF0Y2gKQEAgLTEsNiArMSw4IEBACi0t LS0gcHJvY2Vzc29yLXRyYWNlLTEuNS9saWJpcHQvQ01ha2VMaXN0cy50eHQtb3JpZwkyMDE2LTA0 LTA3IDA4OjUyOjE0LjAwMDAwMDAwMCArMDIwMAotKysrIHByb2Nlc3Nvci10cmFjZS0xLjUvbGli aXB0L0NNYWtlTGlzdHMudHh0CTIwMTYtMDgtMTcgMjM6MTI6MjMuMjQxMTA5MjQ0ICswMjAwCi1A QCAtODEsNyArODEsNyBAQCBlbmRpZiAoQ01BS0VfSE9TVF9XSU4zMikKK0luZGV4OiBwcm9jZXNz b3ItdHJhY2UtMi4wL2xpYmlwdC9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHByb2Nl c3Nvci10cmFjZS0yLjAub3JpZy9saWJpcHQvQ01ha2VMaXN0cy50eHQKKysrKyBwcm9jZXNzb3It dHJhY2UtMi4wL2xpYmlwdC9DTWFrZUxpc3RzLnR4dAorQEAgLTg1LDcgKzg1LDcgQEAgZW5kaWYg KENNQUtFX0hPU1RfV0lOMzIpCiAgCiAgc2V0KExJQklQVF9GSUxFUyAke0xJQklQVF9GSUxFU30g JHtMSUJJUFRfU0VDVElPTl9GSUxFU30pCiAgCkBAIC05LDggKzExLDEwIEBACiAgICAke0xJQklQ VF9GSUxFU30KICApCiAgCi0tLS0gcHJvY2Vzc29yLXRyYWNlLTEuNS9saWJpcHQvc3JjL3Bvc2l4 L2luaXQuYy1vcmlnCTIwMTYtMDQtMDcgMDg6NTI6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgcHJv Y2Vzc29yLXRyYWNlLTEuNS9saWJpcHQvc3JjL3Bvc2l4L2luaXQuYwkyMDE2LTA4LTIzIDA5OjA0 OjExLjU0MDE3NjY2OCArMDIwMAorSW5kZXg6IHByb2Nlc3Nvci10cmFjZS0yLjAvbGliaXB0L3Ny Yy9wb3NpeC9pbml0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcm9jZXNzb3ItdHJhY2UtMi4wLm9yaWcv bGliaXB0L3NyYy9wb3NpeC9pbml0LmMKKysrKyBwcm9jZXNzb3ItdHJhY2UtMi4wL2xpYmlwdC9z cmMvcG9zaXgvaW5pdC5jCiBAQCAtMjksNyArMjksNyBAQAogICNpbmNsdWRlICJwdF9pbGQuaCIK ICAKCmRpZmYgLS1naXQgYS92MS42LjEtaW1wbGljaXQtZmFsbHRocm91Z2gucGF0Y2ggYi92MS42 LjEtaW1wbGljaXQtZmFsbHRocm91Z2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGRiODQ0ZDMuLjAwMDAwMDAKLS0tIGEvdjEuNi4xLWltcGxpY2l0LWZhbGx0aHJvdWdoLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotZ2NjLTcuMS4xLTEuZmMyNy54ODZf NjQKLS9ob21lL2prcmF0b2NoL3JlZGhhdC9mZWRvcmEvbGliaXB0L21hc3Rlci9wcm9jZXNzb3It dHJhY2UtMS42LjEvbGliaXB0L3NyYy9wdF9ibG9ja19kZWNvZGVyLmM6IEluIGZ1bmN0aW9uIOKA mHB0X2Jsa19wcm9jZWVkX25vX2V2ZW50X2NhY2hlZOKAmToKLS9ob21lL2prcmF0b2NoL3JlZGhh dC9mZWRvcmEvbGliaXB0L21hc3Rlci9wcm9jZXNzb3ItdHJhY2UtMS42LjEvbGliaXB0L3NyYy9w dF9ibG9ja19kZWNvZGVyLmM6MjI4Mjo2OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwg dGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCi0gICBpZiAoYmNlLmlzaXpl KSB7Ci0gICAgICBeCi0vaG9tZS9qa3JhdG9jaC9yZWRoYXQvZmVkb3JhL2xpYmlwdC9tYXN0ZXIv cHJvY2Vzc29yLXRyYWNlLTEuNi4xL2xpYmlwdC9zcmMvcHRfYmxvY2tfZGVjb2Rlci5jOjIzMjg6 Mjogbm90ZTogaGVyZQotICBjYXNlIHB0YnFfZGVjb2RlOiB7Ci0gIF5+fn4KLQotZGlmZiAtLWdp dCBhL2xpYmlwdC9zcmMvcHRfYmxvY2tfZGVjb2Rlci5jIGIvbGliaXB0L3NyYy9wdF9ibG9ja19k ZWNvZGVyLmMKLWluZGV4IDIxNzgzYTYuLjkxZDViYjMgMTAwNjQ0Ci0tLS0gYS9saWJpcHQvc3Jj L3B0X2Jsb2NrX2RlY29kZXIuYwotKysrIGIvbGliaXB0L3NyYy9wdF9ibG9ja19kZWNvZGVyLmMK LUBAIC0yMDk1LDYgKzIwOTUsOSBAQCBzdGF0aWMgaW50IHB0X2Jsa19wcm9jZWVkX25vX2V2ZW50 X2NhY2hlZChzdHJ1Y3QgcHRfYmxvY2tfZGVjb2RlciAqZGVjb2RlciwKLSAJCX0KLSAKLSAJCS8q IEZhbGwgdGhyb3VnaCB0byBwdGJxX2RlY29kZS4gKi8KLSsjaWYgX19HTlVDX18gPj0gNwotKwkJ X19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSk7Ci0rI2VuZGlmCi0gCi0gCWNhc2UgcHRicV9k ZWNvZGU6IHsKLSAJCXN0cnVjdCBwdF9pbnNuX2V4dCBpZXh0Owo=