From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v2 for 4.7] xen: Rename of xSplice to livepatch. Date: Thu, 2 Jun 2016 11:16:44 -0400 Message-ID: <20160602151643.GA378@char.us.oracle.com> References: <1464876327-23528-1-git-send-email-konrad.wilk@oracle.com> <575063DB02000078000F1297@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8UNP-0007hk-PU for xen-devel@lists.xenproject.org; Thu, 02 Jun 2016 15:17:40 +0000 Content-Disposition: inline In-Reply-To: <575063DB02000078000F1297@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Martin Pohlack , Ross Lagerwall , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org PiAKPiA+IEBAIC0zNTYsNyArMzU2LDcgQEAgc3RhdGljIGNoYXIgKnBvaW50ZXIoY2hhciAqc3Ry LCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipmbXRfcHRyLAo+ID4gICAgICAgICAgfQo+ID4gIAo+ ID4gICAgICAgICAgLyoKPiA+IC0gICAgICAgICAqIG5hbWVidWYgY29udGVudHMgYW5kIHMgZm9y IGNvcmUgaHlwZXJ2aXNvciBhcmUgc2FtZSBidXQgZm9yIHhTcGxpY2UKPiA+ICsgICAgICAgICAq IG5hbWVidWYgY29udGVudHMgYW5kIHMgZm9yIGNvcmUgaHlwZXJ2aXNvciBhcmUgc2FtZSBidXQg Zm9yIGxpdmUgcGF0Y2gKPiAKPiAibGl2ZSBwYXRjaCIgaGVyZSBhbmQgLi4uCj4gCj4gPiAtLS0g YS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCj4gPiArKysgYi94ZW4vaW5jbHVkZS94ZW4v ZWxmc3RydWN0cy5oCj4gPiBAQCAtMzUzLDcgKzM1Myw3IEBAIHR5cGVkZWYgc3RydWN0IHsKPiA+ ICAjZGVmaW5lCUVMRjY0X1JfVFlQRShpbmZvKQkoKGluZm8pICYgMHhGRkZGRkZGRikKPiA+ICAj ZGVmaW5lIEVMRjY0X1JfSU5GTyhzLHQpIAkoKChzKSA8PCAzMikgKyAodV9pbnQzMl90KSh0KSkK PiA+ICAKPiA+IC0vKiB4ODYtNjQgcmVsb2NhdGlvbiB0eXBlcy4gV2UgbGlzdCBvbmx5IHRoZSBv bmVzIHhTcGxpY2UgaW1wbGVtZW50cy4gKi8KPiA+ICsvKiB4ODYtNjQgcmVsb2NhdGlvbiB0eXBl cy4gV2UgbGlzdCBvbmx5IHRoZSBvbmVzIExpdmUgUGF0Y2ggaW1wbGVtZW50cy4gKi8KPiAKPiAi TGl2ZSBQYXRjaCIgaGVyZSAtIHBsZWFzZSB0cnkgdG8gYmUgY29uc2lzdGVudCAocGVyc29uYWxs eSBJIHByZWZlcgo+IHRoZSBsYXR0ZXIpLgoKQXdlc29tZSEKCkxpdmUgUGF0Y2ggaXQgaXMuIEkg ZGlkIGl0IGFsc28gdG8gdHdvIG90aGVyIGZpbGVzIHdoZXJlIGl0IGhhZAppdCBhcyAnbGl2ZSBw YXRjaCcgKG9yIGxpdmUgcGF0Y2hpbmcpOgp4ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLgp4ZW4v aW5jbHVkZS94ZW4vbGl2ZXBhdGNoLmgKCj4gCj4gV2l0aCB0aG9zZSB0YWtlbiBjYXJlIG9mLAoK QWxsIGRvbmUuCj4gQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiAK CgpUaGFuayB5b3UgYWdhaW4gZm9yIHF1aWNrIHJldmlldyBvZiB0aGlzIGJpZyBhbmQgYm9yaW5n IHBhdGNoLgoKRm9yIHJlZmVyZW5jZSBoZXJlIGl0IGlzIChjb21waWxpbmcgYW5kIHRlc3Rpbmcg aXQgcmlnaHQgbm93KQoKRnJvbSAxMmEyZjRkM2MzMDI5ZGRjOTQxODFmZTM5OTNjZTRhMWU4MmQz ZGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb25yYWQgUnplc3p1dGVrIFdpbGsg PGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkRhdGU6IFdlZCwgMSBKdW4gMjAxNiAyMDoxNDo0NyAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggdjMgZm9yIDQuN10geGVuOiBSZW5hbWUgb2YgeFNwbGljZSB0 byBsaXZlcGF0Y2guCgpTcGVjaWZpY2FsbHk6CgpzL1wueHNwbGljZS9cLmxpdmVwYXRjaC8Kcy9Y U1BMSUNFL0xJVkVQQVRDSC8Kcy94c3BsaWNlL2xpdmVwYXRjaC8Kcy9saXZlcGF0Y2hfcGF0Y2hf ZnVuYy9saXZlcGF0Y2hfZnVuYy8Kcy94U3BsaWNlL1hlbiBMaXZlIFBhdGNoLwpzL2xpdmVwYXRj aGluZy9saXZlcGF0Y2gvCgpBbmQgdGhlbiBtb2RpZnkgc29tZSBvZiB0aGUgZnVuY3Rpb24gYXJn dW1lbnRzCnRvIGhhdmUgdHdvIG1vcmUgY2hhcmFjdGVycy4KClNpZ25lZC1vZmYtYnk6IEtvbnJh ZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQWNrZWQtYnk6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KCi0tLQpDYzogUm9zcyBMYWdlcndhbGwgPHJvc3Mu bGFnZXJ3YWxsQGNpdHJpeC5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29t PgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJh ZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtl cm5lbC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdlaS5s aXUyQGNpdHJpeC5jb20+CkNjOiBNYXJ0aW4gUG9obGFjayA8bXBvaGxhY2tAYW1hem9uLmRlPgoK djI6IERpdGNoIHRoZSBMSVZFX1BBVENIIGFuZCAnTGl2ZSBQYXRjaGluZycgaW5jb25zaXRlbmN5 LgogICAgSW5jbHVkZSBSb3NzJ3MgZW1haWwgY29ycmVjdGx5LgogICAgRG9uJ3QgbW92ZSBhbHBo YWJldGljYWxseSB0aGUgI2luY2x1ZGUgaGVhZGVyIGFzIGl0IGlzCiAgICBpbmNvbnNpc3RlbnQK djM6IHMvbGl2ZXBhdGNoaW5nL2xpdmVwYXRjaC8KICAgIEFsdGVyIHNvbWUgb2YgdGhlICJsaXZl IHBhdGNoaW5nIiBvciAibGl2ZSBwYXRjaCIgdG8gc2F5CiAgICAiTGl2ZSBQYXRjaCIKICAgIE1v dmUgaW4gY29tbW9uL01ha2VmaWxlIHRoZSBsaXZlcGF0Y2ggZW50cnkgKGl0IGlzIHNvcnRlZCkK ICAgIE1vdmUgdGhlIExJVkVQQVRDSCBpbiBNQUlOVEFJTkVSUyBmaWxlIGluIHRoZSBwcm9wZXIg bG9jYXRpb24KICAgIChpdCBpcyBzb3J0ZWQpLiBBZGQgSmFuJ3MgQWNrLgotLS0KIC5naXRpZ25v cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBNQUlO VEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQog ZG9jcy9taXNjL3t4c3BsaWNlLm1hcmtkb3duID0+IGxpdmVwYXRjaC5tYXJrZG93bn0gfCAxODQg KysrKystLS0tLQogdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUg ICAgICAgfCAgIDIgKy0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oICAgICAgICAgICAg ICAgICAgICAgIHwgIDMyICstCiB0b29scy9saWJ4Yy94Y19taXNjLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE0MiArKysrLS0tLQogdG9vbHMvbWlzYy9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHRvb2xzL21pc2Mve3hlbi14c3BsaWNl LmMgPT4geGVuLWxpdmVwYXRjaC5jfSAgICAgIHwgIDYyICsrLS0KIHhlbi9hcmNoL2FybS9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0v e3hzcGxpY2UuYyA9PiBsaXZlcGF0Y2guY30gICAgICAgICAgICB8ICAzOCArLS0KIHhlbi9hcmNo L3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiB4ZW4v YXJjaC94ODYvYWx0ZXJuYXRpdmUuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArLQog eGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQg Ky0KIHhlbi9hcmNoL3g4Ni9leHRhYmxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA4ICstCiB4ZW4vYXJjaC94ODYve3hzcGxpY2UuYyA9PiBsaXZlcGF0Y2guY30gICAgICAgICAg ICB8ICA1NiArKy0tCiB4ZW4vYXJjaC94ODYvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA1OCArKy0tCiB4ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkLmMgICAg ICAgICAgICAgICAgICB8ICAgNiArLQogeGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxk LmMgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9yZXBsYWNl X3dvcmxkLmMgICAgICAgICAgICAgIHwgICA2ICstCiB4ZW4vYXJjaC94ODYvdHJhcHMuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogeGVuL2NvbW1vbi9LY29uZmlnICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHhlbi9jb21tb24vTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCiB4ZW4vY29tbW9uL3t4 c3BsaWNlLmMgPT4gbGl2ZXBhdGNoLmN9ICAgICAgICAgICAgICB8IDM3MCArKysrKysrKysrLS0t LS0tLS0tLS0KIHhlbi9jb21tb24ve3hzcGxpY2VfZWxmLmMgPT4gbGl2ZXBhdGNoX2VsZi5jfSAg ICAgIHwgMTA5ICsrKy0tLQogeGVuL2NvbW1vbi9zeXNjdGwuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHhlbi9jb21tb24vdmlydHVhbF9yZWdpb24uYyAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA0ICstCiB4ZW4vY29tbW9uL3ZzcHJpbnRmLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50 LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNj dGwuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMTM4ICsrKystLS0tCiB4ZW4vaW5jbHVkZS94 ZW4vZWxmc3RydWN0cy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogeGVuL2luY2x1 ZGUveGVuL3t4c3BsaWNlLmggPT4gbGl2ZXBhdGNoLmh9ICAgICAgICAgfCAxMDAgKysrLS0tCiB4 ZW4vaW5jbHVkZS94ZW4ve3hzcGxpY2VfZWxmLmggPT4gbGl2ZXBhdGNoX2VsZi5ofSB8ICAzNSAr LQogeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDQgKy0KIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzICAgICAgICAgICAgICAg IHwgICA0ICstCiAzNCBmaWxlcyBjaGFuZ2VkLCA3MzIgaW5zZXJ0aW9ucygrKSwgNzMxIGRlbGV0 aW9ucygtKQogcmVuYW1lIGRvY3MvbWlzYy97eHNwbGljZS5tYXJrZG93biA9PiBsaXZlcGF0Y2gu bWFya2Rvd259ICg4NyUpCiByZW5hbWUgdG9vbHMvbWlzYy97eGVuLXhzcGxpY2UuYyA9PiB4ZW4t bGl2ZXBhdGNoLmN9ICg4NiUpCiByZW5hbWUgeGVuL2FyY2gvYXJtL3t4c3BsaWNlLmMgPT4gbGl2 ZXBhdGNoLmN9ICgyOSUpCiByZW5hbWUgeGVuL2FyY2gveDg2L3t4c3BsaWNlLmMgPT4gbGl2ZXBh dGNoLmN9ICg3NCUpCiByZW5hbWUgeGVuL2NvbW1vbi97eHNwbGljZS5jID0+IGxpdmVwYXRjaC5j fSAoNzUlKQogcmVuYW1lIHhlbi9jb21tb24ve3hzcGxpY2VfZWxmLmMgPT4gbGl2ZXBhdGNoX2Vs Zi5jfSAoNzIlKQogcmVuYW1lIHhlbi9pbmNsdWRlL3hlbi97eHNwbGljZS5oID0+IGxpdmVwYXRj aC5ofSAoMzQlKQogcmVuYW1lIHhlbi9pbmNsdWRlL3hlbi97eHNwbGljZV9lbGYuaCA9PiBsaXZl cGF0Y2hfZWxmLmh9ICg1NiUpCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUK aW5kZXggMWI3MzI5My4uNzM0NzgwMSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0 aWdub3JlCkBAIC0xODIsNyArMTgyLDcgQEAgdG9vbHMvbWlzYy94ZW5fY3B1cGVyZgogdG9vbHMv bWlzYy94ZW4tY3B1aWQKIHRvb2xzL21pc2MveGVuLWRldGVjdAogdG9vbHMvbWlzYy94ZW4tdG1l bS1saXN0LXBhcnNlCi10b29scy9taXNjL3hlbi14c3BsaWNlCit0b29scy9taXNjL3hlbi1saXZl cGF0Y2gKIHRvb2xzL21pc2MveGVucGVyZgogdG9vbHMvbWlzYy94ZW5wbQogdG9vbHMvbWlzYy94 ZW4taHZtY3R4CkBAIC0yNDcsOSArMjQ3LDkgQEAgeGVuL2FyY2gveDg2L2VmaS9jaGVjay5lZmkK IHhlbi9hcmNoL3g4Ni9lZmkvZGlzYWJsZWQKIHhlbi9hcmNoL3g4Ni9lZmkvbWtyZWxvYwogeGVu L2FyY2gveDg2L3Rlc3QvY29uZmlnLmgKLXhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9oZWxsb193b3Js ZC54c3BsaWNlCi14ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkLnhzcGxpY2UKLXhlbi9h cmNoL3g4Ni90ZXN0L3hlbl9yZXBsYWNlX3dvcmxkLnhzcGxpY2UKK3hlbi9hcmNoL3g4Ni90ZXN0 L3hlbl9oZWxsb193b3JsZC5saXZlcGF0Y2gKK3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29y bGQubGl2ZXBhdGNoCit4ZW4vYXJjaC94ODYvdGVzdC94ZW5fcmVwbGFjZV93b3JsZC5saXZlcGF0 Y2gKIHhlbi9hcmNoLyovZWZpL2Jvb3QuYwogeGVuL2FyY2gvKi9lZmkvY29tcGF0LmMKIHhlbi9h cmNoLyovZWZpL2VmaS5oCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmlu ZGV4IDYyZjRmZmQuLjlhMjI0ZDQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5U QUlORVJTCkBAIC0yNjEsNiArMjYxLDE2IEBAIEY6ICAgICAgeGVuL2luY2x1ZGUve2tleGVjLGtp bWFnZX0uaAogRjogICAgICB4ZW4vYXJjaC94ODYvbWFjaGluZV9rZXhlYy5jCiBGOiAgICAgIHhl bi9hcmNoL3g4Ni94ODZfNjQva2V4ZWNfcmVsb2MuUwogCitMSVZFUEFUQ0gKK006ICBLb25yYWQg Unplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CitNOiAgUm9zcyBMYWdlcndh bGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CitTOiAgU3VwcG9ydGVkCitGOiAgZG9jcy9t aXNjL2xpdmVwYXRjaC5tYXJrZG93bgorRjogIHRvb2xzL21pc2MveGVuLWxpdmVwYXRjaC5jCitG OiAgeGVuL2FyY2gvKi9saXZlcGF0Y2gqCitGOiAgeGVuL2NvbW1vbi9saXZlcGF0Y2gqCitGOiAg eGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaCoKKwogTUFDSElORSBDSEVDSyAoTUNBKSAmIFJBUwog TToJQ2hyaXN0b3BoIEVnZ2VyIDxjaGVnZ2VyQGFtYXpvbi5kZT4KIE06CUxpdSBKaW5zb25nIDxq aW5zb25nLmxpdUBhbGliYWJhLWluYy5jb20+CkBAIC00NzAsMTYgKzQ4MCw2IEBAIEY6ICB4ZW4v aW5jbHVkZS94c20vCiBGOiAgeGVuL3hzbS8KIEY6ICBkb2NzL21pc2MveHNtLWZsYXNrLnR4dAog Ci1YU1BMSUNFCi1NOiAgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUu Y29tPgotTTogIFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgotUzog IFN1cHBvcnRlZAotRjogIGRvY3MvbWlzYy94c3BsaWNlLm1hcmtkb3duCi1GOiAgdG9vbHMvbWlz Yy94ZW4teHNwbGljZS5jCi1GOiAgeGVuL2FyY2gvKi94c3BsaWNlKgotRjogIHhlbi9jb21tb24v eHNwbGljZSoKLUY6ICB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZSoKLQogVEhFIFJFU1QKIE06CUFu ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CiBNOglHZW9yZ2UgRHVubGFw IDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CmRpZmYgLS1naXQgYS9kb2NzL21pc2MveHNw bGljZS5tYXJrZG93biBiL2RvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24Kc2ltaWxhcml0eSBp bmRleCA4NyUKcmVuYW1lIGZyb20gZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24KcmVuYW1lIHRv IGRvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24KaW5kZXggMDVjMWE1NS4uZWZkYThjZiAxMDA2 NDQKLS0tIGEvZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24KKysrIGIvZG9jcy9taXNjL2xpdmVw YXRjaC5tYXJrZG93bgpAQCAtMSw0ICsxLDQgQEAKLSMgeFNwbGljZSBEZXNpZ24gdjEKKyMgWGVu IExpdmUgUGF0Y2hpbmcgRGVzaWduIHYxCiAKICMjIFJhdGlvbmFsZQogCkBAIC0yNjUsNyArMjY1 LDcgQEAgc3RydWN0dXJlcyB1c2luZyBFbGYgdHlwZXMsIGV0YykuIFRoaXMgZGVzaWduIHdpbGwg ZXhwbGFpbiB0aGUgc3RydWN0dXJlcwogYW5kIGhvdyB0aGV5IGFyZSB1c2VkIHRvZ2V0aGVyIGFu ZCBub3QgZGlnIGluIHRoZSBFTEYgZm9ybWF0IC0gZXhjZXB0IG1lbnRpb24KIHRoYXQgdGhlIHNl Y3Rpb24gbmFtZXMgc2hvdWxkIG1hdGNoIHRoZSBzdHJ1Y3R1cmUgbmFtZXMuCiAKLVRoZSB4U3Bs aWNlIHBheWxvYWQgaXMgYSByZWxvY2F0YWJsZSBFTEYgYmluYXJ5LiBBIHR5cGljYWwgYmluYXJ5 IHdvdWxkIGhhdmU6CitUaGUgWGVuIExpdmUgUGF0Y2ggcGF5bG9hZCBpcyBhIHJlbG9jYXRhYmxl IEVMRiBiaW5hcnkuIEEgdHlwaWNhbCBiaW5hcnkgd291bGQgaGF2ZToKIAogICogT25lIG9yIG1v cmUgLnRleHQgc2VjdGlvbnMuCiAgKiBaZXJvIG9yIG1vcmUgcmVhZC1vbmx5IGRhdGEgc2VjdGlv bnMuCkBAIC0yNzksMjQgKzI3OSwyNCBAQCBJdCBtYXkgYWxzbyBoYXZlIHNvbWUgYXJjaGl0ZWN0 dXJlLXNwZWNpZmljIHNlY3Rpb25zLiBGb3IgZXhhbXBsZToKICAqIEV4Y2VwdGlvbiB0YWJsZXMu CiAgKiBSZWxvY2F0aW9ucyBmb3IgZWFjaCBvZiB0aGVzZSBzZWN0aW9ucy4KIAotVGhlIHhTcGxp Y2UgY29yZSBjb2RlIGxvYWRzIHRoZSBwYXlsb2FkIGFzIGEgc3RhbmRhcmQgRUxGIGJpbmFyeSwg cmVsb2NhdGVzIGl0CitUaGUgWGVuIExpdmUgUGF0Y2ggY29yZSBjb2RlIGxvYWRzIHRoZSBwYXls b2FkIGFzIGEgc3RhbmRhcmQgRUxGIGJpbmFyeSwgcmVsb2NhdGVzIGl0CiBhbmQgaGFuZGxlcyB0 aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmMgc2VjdGlvbnMgYXMgbmVlZGVkLiBUaGlzIHByb2Nlc3Mg aXMgbXVjaAogbGlrZSB3aGF0IHRoZSBMaW51eCBrZXJuZWwgbW9kdWxlIGxvYWRlciBkb2VzLgog CiBUaGUgcGF5bG9hZCBjb250YWlucyBhdCBsZWFzdCB0aHJlZSBzZWN0aW9uczoKIAotICogYC54 c3BsaWNlLmZ1bmNzYCAtIHdoaWNoIGlzIGFuIGFycmF5IG9mIHhzcGxpY2VfcGF0Y2hfZnVuYyBz dHJ1Y3R1cmVzLgotICogYC54c3BsaWNlLmRlcGVuZHNgIC0gd2hpY2ggaXMgYW4gRUxGIE5vdGUg dGhhdCBkZXNjcmliZXMgd2hhdCB0aGUgcGF5bG9hZAorICogYC5saXZlcGF0Y2guZnVuY3NgIC0g d2hpY2ggaXMgYW4gYXJyYXkgb2YgbGl2ZXBhdGNoX2Z1bmMgc3RydWN0dXJlcy4KKyAqIGAubGl2 ZXBhdGNoLmRlcGVuZHNgIC0gd2hpY2ggaXMgYW4gRUxGIE5vdGUgdGhhdCBkZXNjcmliZXMgd2hh dCB0aGUgcGF5bG9hZAogICAgIGRlcGVuZHMgb24uICoqTVVTVCoqIGhhdmUgb25lLgogICogIGAu bm90ZS5nbnUuYnVpbGQtaWRgIC0gdGhlIGJ1aWxkLWlkIG9mIHRoaXMgcGF5bG9hZC4gKipNVVNU KiogaGF2ZSBvbmUuCiAKLSMjIyAueHNwbGljZS5mdW5jcworIyMjIC5saXZlcGF0Y2guZnVuY3MK IAotVGhlIGAueHNwbGljZS5mdW5jc2AgY29udGFpbnMgYW4gYXJyYXkgb2YgeHNwbGljZV9wYXRj aF9mdW5jIHN0cnVjdHVyZXMKK1RoZSBgLmxpdmVwYXRjaC5mdW5jc2AgY29udGFpbnMgYW4gYXJy YXkgb2YgbGl2ZXBhdGNoX2Z1bmMgc3RydWN0dXJlcwogd2hpY2ggZGVzY3JpYmUgdGhlIGZ1bmN0 aW9ucyB0byBiZSBwYXRjaGVkOgogCiA8cHJlPgotc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyB7 ICAKK3N0cnVjdCBsaXZlcGF0Y2hfZnVuYyB7ICAKICAgICBjb25zdCBjaGFyICpuYW1lOyAgCiAg ICAgdm9pZCAqbmV3X2FkZHI7ICAKICAgICB2b2lkICpvbGRfYWRkcjsgIApAQCAtMzI5LDI0ICsz MjksMjQgQEAgVGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyA2NCBieXRlcyBvbiA2NC1iaXQg aHlwZXJ2aXNvcnMuIEl0IHdpbGwgYmUKIAogKiBgb3BhcXVlYCAqKk1VU1QqKiBiZSB6ZXJvLgog Ci1UaGUgc2l6ZSBvZiB0aGUgYHhzcGxpY2VfcGF0Y2hfZnVuY2AgYXJyYXkgaXMgZGV0ZXJtaW5l ZCBmcm9tIHRoZSBFTEYgc2VjdGlvbgorVGhlIHNpemUgb2YgdGhlIGBsaXZlcGF0Y2hfZnVuY2Ag YXJyYXkgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBFTEYgc2VjdGlvbgogc2l6ZS4KIAotV2hlbiBh cHBseWluZyB0aGUgcGF0Y2ggdGhlIGh5cGVydmlzb3IgaXRlcmF0ZXMgb3ZlciBlYWNoIGB4c3Bs aWNlX3BhdGNoX2Z1bmNgCitXaGVuIGFwcGx5aW5nIHRoZSBwYXRjaCB0aGUgaHlwZXJ2aXNvciBp dGVyYXRlcyBvdmVyIGVhY2ggYGxpdmVwYXRjaF9mdW5jYAogc3RydWN0dXJlIGFuZCB0aGUgY29y ZSBjb2RlIGluc2VydHMgYSB0cmFtcG9saW5lIGF0IGBvbGRfYWRkcmAgdG8gYG5ld19hZGRyYC4K IFRoZSBgbmV3X2FkZHJgIGlzIGFsdGVyZWQgd2hlbiB0aGUgRUxGIHBheWxvYWQgaXMgbG9hZGVk LgogCi1XaGVuIHJldmVydGluZyBhIHBhdGNoLCB0aGUgaHlwZXJ2aXNvciBpdGVyYXRlcyBvdmVy IGVhY2ggYHhzcGxpY2VfcGF0Y2hfZnVuY2AKK1doZW4gcmV2ZXJ0aW5nIGEgcGF0Y2gsIHRoZSBo eXBlcnZpc29yIGl0ZXJhdGVzIG92ZXIgZWFjaCBgbGl2ZXBhdGNoX2Z1bmNgCiBhbmQgdGhlIGNv cmUgY29kZSBjb3BpZXMgdGhlIGRhdGEgZnJvbSB0aGUgdW5kbyBidWZmZXIgKHByaXZhdGUgaW50 ZXJuYWwgY29weSkKIHRvIGBvbGRfYWRkcmAuCiAKLSMjIyBFeGFtcGxlIG9mIC54c3BsaWNlLmZ1 bmNzCisjIyMgRXhhbXBsZSBvZiAubGl2ZXBhdGNoLmZ1bmNzCiAKIEEgc2ltcGxlIGV4YW1wbGUg b2Ygd2hhdCBhIHBheWxvYWQgZmlsZSBjYW4gYmU6CiAKIDxwcmU+CiAvKiBNVVNUIGJlIGluIHN5 bmMgd2l0aCBoeXBlcnZpc29yLiAqLyAgCi1zdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIHsgIAor c3RydWN0IGxpdmVwYXRjaF9mdW5jIHsgIAogICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAKICAgICB2 b2lkICpuZXdfYWRkcjsgIAogICAgIHZvaWQgKm9sZF9hZGRyOyAgCkBAIC0zNjQsMjYgKzM2NCwy NiBAQCBjb25zdCBjaGFyICp4ZW5faGVsbG9fd29ybGQodm9pZCkKIAogc3RhdGljIHVuc2lnbmVk IGNoYXIgcGF0Y2hfdGhpc19mbmNbXSA9ICJ4ZW5fZXh0cmFfdmVyc2lvbiI7ICAKIAotc3RydWN0 IHhzcGxpY2VfcGF0Y2hfZnVuYyB4c3BsaWNlX2hlbGxvX3dvcmxkID0geyAgCi0gICAgLnZlcnNp b24gPSBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTiwKK3N0cnVjdCBsaXZlcGF0Y2hfZnVuYyBsaXZl cGF0Y2hfaGVsbG9fd29ybGQgPSB7ICAKKyAgICAudmVyc2lvbiA9IExJVkVQQVRDSF9QQVlMT0FE X1ZFUlNJT04sCiAgICAgLm5hbWUgPSBwYXRjaF90aGlzX2ZuYywgIAogICAgIC5uZXdfYWRkciA9 IHhlbl9oZWxsb193b3JsZCwgIAogICAgIC5vbGRfYWRkciA9ICh2b2lkICopMHhmZmZmODJkMDgw MTM5NjNjLCAvKiBFeHRyYWN0ZWQgZnJvbSB4ZW4tc3ltcy4gKi8gIAogICAgIC5uZXdfc2l6ZSA9 IDEzLCAvKiBUbyBiZSBiZSBjb21wdXRlZCBieSBzY3JpcHRzLiAqLyAgCiAgICAgLm9sZF9zaXpl ID0gMTMsIC8qIC0tLS0tLS0tLS0tIiItLS0tLS0tLS0tLS0tLS0gICovICAKLX0gX19hdHRyaWJ1 dGVfXygoX19zZWN0aW9uX18oIi54c3BsaWNlLmZ1bmNzIikpKTsgIAorfSBfX2F0dHJpYnV0ZV9f KChfX3NlY3Rpb25fXygiLmxpdmVwYXRjaC5mdW5jcyIpKSk7ICAKIAogPC9wcmU+CiAKIENvZGUg bXVzdCBiZSBjb21waWxlZCB3aXRoIC1mUElDLgogCi0jIyMgLnhzcGxpY2UuZGVwZW5kcyBhbmQg Lm5vdGUuZ251LmJ1aWxkLWlkCisjIyMgLmxpdmVwYXRjaC5kZXBlbmRzIGFuZCAubm90ZS5nbnUu YnVpbGQtaWQKIAogVG8gc3VwcG9ydCBkZXBlbmRlbmNpZXMgY2hlY2tpbmcgYW5kIHNhZmUgbG9h ZGluZyAodG8gbG9hZCB0aGUKIGFwcHJvcGlhdGUgcGF5bG9hZCBhZ2FpbnN0IHRoZSByaWdodCBo eXBlcnZpc29yKSB0aGVyZSBpcyBhIG5lZWQKIHRvIGVtYmJlZCBhbiBidWlsZC1pZCBkZXBlbmRl bmN5LgogCi1UaGlzIGlzIGRvbmUgYnkgdGhlIHBheWxvYWQgY29udGFpbmluZyBhbiBzZWN0aW9u IGAueHNwbGljZS5kZXBlbmRzYAorVGhpcyBpcyBkb25lIGJ5IHRoZSBwYXlsb2FkIGNvbnRhaW5p bmcgYW4gc2VjdGlvbiBgLmxpdmVwYXRjaC5kZXBlbmRzYAogd2hpY2ggZm9sbG93cyB0aGUgZm9y bWF0IG9mIGFuIEVMRiBOb3RlLiBUaGUgY29udGVudHMgb2YgdGhpcwogKG5hbWUsIGFuZCBkZXNj cmlwdGlvbikgYXJlIHNwZWNpZmljIHRvIHRoZSBsaW5rZXIgdXRpbGl6ZWQgdG8KIGJ1aWxkIHRo ZSBoeXBldmlzb3IgYW5kIHBheWxvYWQuCkBAIC00MjQsOCArNDI0LDggQEAgb25lIHVpbnQzMl90 IHRvIGRldGVybWluZSB0aGUgc3ViLW9wZXJhdGlvbnMgYW5kIG9uZSBwYWRkaW5nIGZpZWxkIHdo aWNoCiAqTVVTVCogYWx3YXlzIGJlIHplcm8uCiAKIDxwcmU+Ci1zdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX29wIHsgIAotICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgLyogSU46 IFhFTl9TWVNDVExfWFNQTElDRV8qLiAqLyAgCitzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hf b3AgeyAgCisgICAgdWludDMyX3QgY21kOyAgICAgICAgICAgICAgICAgICAvKiBJTjogWEVOX1NZ U0NUTF9MSVZFUEFUQ0hfKi4gKi8gIAogICAgIHVpbnQzMl90IHBhZDsgICAgICAgICAgICAgICAg ICAgLyogSU46IEFsd2F5cyB6ZXJvLiAqLyAgCiAJdW5pb24geyAgCiAgICAgICAgICAgLi4uIHNl ZSBiZWxvdyAuLi4gIApAQCAtNDM1LDkgKzQzNSw5IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxp Y2Vfb3AgewogPC9wcmU+CiB3aGlsZSB0aGUgcmVzdCBvZiBoeXBlcmNhbGwgc3BlY2lmaWMgc3Ry dWN0dXJlcyBhcmUgcGFydCBvZiB0aGUgdGhpcyBzdHJ1Y3R1cmUuCiAKLSMjIyBCYXNpYyB0eXBl OiBzdHJ1Y3QgeGVuX3hzcGxpY2VfbmFtZQorIyMjIEJhc2ljIHR5cGU6IHN0cnVjdCB4ZW5fbGl2 ZXBhdGNoX25hbWUKIAotTW9zdCBvZiB0aGUgaHlwZXJjYWxscyBlbXBsb3kgYW4gc2hhcmVkIHN0 cnVjdHVyZSBjYWxsZWQgYHN0cnVjdCB4ZW5feHNwbGljZV9uYW1lYAorTW9zdCBvZiB0aGUgaHlw ZXJjYWxscyBlbXBsb3kgYW4gc2hhcmVkIHN0cnVjdHVyZSBjYWxsZWQgYHN0cnVjdCB4ZW5fbGl2 ZXBhdGNoX25hbWVgCiB3aGljaCBjb250YWluczoKIAogICogYG5hbWVgIC0gcG9pbnRlciB3aGVy ZSB0aGUgc3RyaW5nIGZvciB0aGUgbmFtZSBpcyBsb2NhdGVkLgpAQCAtNDUxLDI1ICs0NTEsMjUg QEAgVGhlIHN0cnVjdHVyZSBpcyBhcyBmb2xsb3c6CiAgKiAgVW5pcXVlbHkgaWRlbnRpZmllcyB0 aGUgcGF5bG9hZC4gIFNob3VsZCBiZSBodW1hbiByZWFkYWJsZS4gIAogICogSW5jbHVkZXMgdGhl IE5VTCB0ZXJtaW5hdG9yICAKICAqLyAgCi0jZGVmaW5lIFhFTl9YU1BMSUNFX05BTUVfU0laRSAx MjggIAotc3RydWN0IHhlbl94c3BsaWNlX25hbWUgeyAgCisjZGVmaW5lIFhFTl9MSVZFUEFUQ0hf TkFNRV9TSVpFIDEyOCAgCitzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9uYW1lIHsgIAogICAgIFhFTl9H VUVTVF9IQU5ETEVfNjQoY2hhcikgbmFtZTsgICAgICAgICAvKiBJTiwgcG9pbnRlciB0byBuYW1l LiAqLyAgCiAgICAgdWludDE2X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElO LCBzaXplIG9mIG5hbWUuIE1heSBiZSB1cHRvICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhFTl9YU1BMSUNFX05BTUVfU0laRS4gKi8gIAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fTElWRVBBVENIX05B TUVfU0laRS4gKi8gIAogICAgIHVpbnQxNl90IHBhZFszXTsgICAgICAgICAgICAgICAgICAgICAg ICAvKiBJTjogTVVTVCBiZSB6ZXJvLiAqLyAKIH07ICAKIDwvcHJlPgogCi0jIyMgWEVOX1NZU0NU TF9YU1BMSUNFX1VQTE9BRCAoMCkKKyMjIyBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9VUExPQUQgKDAp CiAKIFVwbG9hZCBhIHBheWxvYWQgdG8gdGhlIGh5cGVydmlzb3IuIFRoZSBwYXlsb2FkIGlzIHZl cmlmaWVkCiBhZ2FpbnN0IGJhc2ljIGNoZWNrcyBhbmQgaWYgdGhlcmUgYXJlIGFueSBpc3N1ZXMg dGhlIHByb3BlciByZXR1cm4gY29kZQogd2lsbCBiZSByZXR1cm5lZC4gVGhlIHBheWxvYWQgaXMg bm90IGFwcGxpZWQgYXQgdGhpcyB0aW1lIC0gdGhhdCBpcwotY29udHJvbGxlZCBieSAqWEVOX1NZ U0NUTF9YU1BMSUNFX0FDVElPTiouCitjb250cm9sbGVkIGJ5ICpYRU5fU1lTQ1RMX0xJVkVQQVRD SF9BQ1RJT04qLgogCiBUaGUgY2FsbGVyIHByb3ZpZGVzOgogCi0gKiBBIGBzdHJ1Y3QgeGVuX3hz cGxpY2VfbmFtZWAgY2FsbGVkIGBuYW1lYCB3aGljaCBoYXMgdGhlIHVuaXF1ZSBuYW1lLgorICog QSBgc3RydWN0IHhlbl9saXZlcGF0Y2hfbmFtZWAgY2FsbGVkIGBuYW1lYCB3aGljaCBoYXMgdGhl IHVuaXF1ZSBuYW1lLgogICogYHNpemVgIHRoZSBzaXplIG9mIHRoZSBFTEYgcGF5bG9hZCAoaW4g Ynl0ZXMpLgogICogYHBheWxvYWRgIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2Ygd2hlcmUgdGhlIEVM RiBwYXlsb2FkIGlzLgogCkBAIC00ODUsMjkgKzQ4NSwyOSBAQCBUaGUgYHBheWxvYWRgIGlzIHRo ZSBFTEYgcGF5bG9hZCBhcyBtZW50aW9uZWQgaW4gdGhlIGBQYXlsb2FkIGZvcm1hdGAgc2VjdGlv bi4KIFRoZSBzdHJ1Y3R1cmUgaXMgYXMgZm9sbG93OgogCiA8cHJlPgotc3RydWN0IHhlbl9zeXNj dGxfeHNwbGljZV91cGxvYWQgeyAgCi0gICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAgICAg ICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLyAgCitzdHJ1Y3QgeGVuX3N5c2N0bF9s aXZlcGF0Y2hfdXBsb2FkIHsgIAorICAgIHhlbl9saXZlcGF0Y2hfbmFtZV90IG5hbWU7ICAgICAg ICAgIC8qIElOLCBuYW1lIG9mIHRoZSBwYXRjaC4gKi8gIAogICAgIHVpbnQ2NF90IHNpemU7ICAg ICAgICAgICAgICAgICAgICAgIC8qIElOLCBzaXplIG9mIHRoZSBFTEYgZmlsZS4gKi8gIAogICAg IFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgpIHBheWxvYWQ7IC8qIElOOiBFTEYgZmlsZS4gKi8g IAogfTsgIAogPC9wcmU+CiAKLSMjIyBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUICgxKQorIyMjIFhF Tl9TWVNDVExfTElWRVBBVENIX0dFVCAoMSkKIAogUmV0cmlldmUgYW4gc3RhdHVzIG9mIGFuIHNw ZWNpZmljIHBheWxvYWQuIFRoaXMgY2FsbGVyIHByb3ZpZGVzOgogCi0gKiBBIGBzdHJ1Y3QgeGVu X3hzcGxpY2VfbmFtZWAgY2FsbGVkIGBuYW1lYCB3aGljaCBoYXMgdGhlIHVuaXF1ZSBuYW1lLgot ICogQSBgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1c2Agc3RydWN0dXJlLiBUaGUgbWVtYmVyIHZh bHVlcyB3aWxsCisgKiBBIGBzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9uYW1lYCBjYWxsZWQgYG5hbWVg IHdoaWNoIGhhcyB0aGUgdW5pcXVlIG5hbWUuCisgKiBBIGBzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9z dGF0dXNgIHN0cnVjdHVyZS4gVGhlIG1lbWJlciB2YWx1ZXMgd2lsbAogICAgYmUgb3Zlci13cml0 dGVuIHVwb24gY29tcGxldGlvbi4KIAotVXBvbiBjb21wbGV0aW9uIHRoZSBgc3RydWN0IHhlbl94 c3BsaWNlX3N0YXR1c2AgaXMgdXBkYXRlZC4KK1Vwb24gY29tcGxldGlvbiB0aGUgYHN0cnVjdCB4 ZW5fbGl2ZXBhdGNoX3N0YXR1c2AgaXMgdXBkYXRlZC4KIAogICogYHN0YXR1c2AgLSBpbmRpY2F0 ZXMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBwYXlsb2FkOgotICAgKiAqWFNQTElDRV9TVEFU VVNfQ0hFQ0tFRCogICgxKSBsb2FkZWQgYW5kIHRoZSBFTEYgcGF5bG9hZCBzYWZldHkgY2hlY2tz IHBhc3NlZC4KLSAgICogKlhTUExJQ0VfU1RBVFVTX0FQUExJRUQqICgyKSBsb2FkZWQsIGNoZWNr ZWQsIGFuZCBhcHBsaWVkLgorICAgKiAqTElWRVBBVENIX1NUQVRVU19DSEVDS0VEKiAgKDEpIGxv YWRlZCBhbmQgdGhlIEVMRiBwYXlsb2FkIHNhZmV0eSBjaGVja3MgcGFzc2VkLgorICAgKiAqTElW RVBBVENIX1NUQVRVU19BUFBMSUVEKiAoMikgbG9hZGVkLCBjaGVja2VkLCBhbmQgYXBwbGllZC4K ICAgICogIE5vIG90aGVyIHZhbHVlIGlzIHBvc3NpYmxlLgogICogYHJjYCAtIC1YRU5fRVhYIHR5 cGUgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIHBlcmZvcm1pbmcgdGhlIGxhc3QKLSAgIFhTUExJ Q0VfQUNUSU9OXyogb3BlcmF0aW9uLiBUaGUgbm9ybWFsIHZhbHVlcyBjYW4gYmUgemVybyBvciAt WEVOX0VBR0FJTiB3aGljaAorICAgTElWRVBBVENIX0FDVElPTl8qIG9wZXJhdGlvbi4gVGhlIG5v cm1hbCB2YWx1ZXMgY2FuIGJlIHplcm8gb3IgLVhFTl9FQUdBSU4gd2hpY2gKICAgIHJlc3BlY3Rp dmVseSBtZWFuOiBzdWNjZXNzIG9yIG9wZXJhdGlvbiBpbiBwcm9ncmVzcy4gT3RoZXIgdmFsdWVz CiAgICBpbXBseSBhbiBlcnJvciBvY2N1cnJlZC4gSWYgdGhlcmUgaXMgYW4gZXJyb3IgaW4gYHJj YCwgYHN0YXR1c2Agd2lsbCAqKk5PVCoqCiAgICBoYXZlIGNoYW5nZWQuCkBAIC01MTksMTUgKzUx OSwxNSBAQCByYz0tWEVOX0VBR0FJTiBhbmQgcmV0dXJuIHZhbHVlIGNhbiBiZSAwKS4KIEZvciBl eGFtcGxlLCBzdXBwb3NpbmcgdGhlcmUgaXMgYW4gcGF5bG9hZDoKIAogPHByZT4KLSBzdGF0dXM6 IFhTUExJQ0VfU1RBVFVTX0NIRUNLRUQKKyBzdGF0dXM6IExJVkVQQVRDSF9TVEFUVVNfQ0hFQ0tF RAogIHJjOiAwCiA8L3ByZT4KIAotV2UgYXBwbHkgYW4gYWN0aW9uIC0gWFNQTElDRV9BQ1RJT05f UkVWRVJUIC0gdG8gcmV2ZXJ0IGl0ICh3aGljaCB3b24ndCB3b3JrCitXZSBhcHBseSBhbiBhY3Rp b24gLSBMSVZFUEFUQ0hfQUNUSU9OX1JFVkVSVCAtIHRvIHJldmVydCBpdCAod2hpY2ggd29uJ3Qg d29yawogYXMgd2UgaGF2ZSBub3QgZXZlbiBhcHBsaWVkIGl0LiBBZnRlcndhcmRzIHdlIHdpbGwg aGF2ZToKIAogPHByZT4KLSBzdGF0dXM6IFhTUExJQ0VfU1RBVFVTX0NIRUNLRUQKKyBzdGF0dXM6 IExJVkVQQVRDSF9TVEFUVVNfQ0hFQ0tFRAogIHJjOiAtWEVOX0VJTlZBTAogPC9wcmU+CiAKQEAg LTUzOCwyMCArNTM4LDIwIEBAIFRoaXMgb3BlcmF0aW9uIGlzIHN5bmNocm9ub3VzIGFuZCBkb2Vz IG5vdCByZXF1aXJlIHByZWVtcHRpb24uCiBUaGUgc3RydWN0dXJlIGlzIGFzIGZvbGxvdzoKIAog PHByZT4KLXN0cnVjdCB4ZW5feHNwbGljZV9zdGF0dXMgeyAgCi0jZGVmaW5lIFhTUExJQ0VfU1RB VFVTX0NIRUNLRUQgICAgICAxICAKLSNkZWZpbmUgWFNQTElDRV9TVEFUVVNfQVBQTElFRCAgICAg IDIgIAotICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAgICAgLyogT1VUOiBYU1BMSUNF X1NUQVRFXyouICovICAKK3N0cnVjdCB4ZW5fbGl2ZXBhdGNoX3N0YXR1cyB7ICAKKyNkZWZpbmUg TElWRVBBVENIX1NUQVRVU19DSEVDS0VEICAgICAgMSAgCisjZGVmaW5lIExJVkVQQVRDSF9TVEFU VVNfQVBQTElFRCAgICAgIDIgIAorICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAgICAg LyogT1VUOiBMSVZFUEFUQ0hfU1RBVEVfKi4gKi8gIAogICAgIGludDMyX3QgcmM7ICAgICAgICAg ICAgICAgICAgICAgLyogT1VUOiAwIGlmIG5vIGVycm9yLCBvdGhlcndpc2UgLVhFTl9FWFguICov ICAKIH07ICAKIAotc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeyAgCi0gICAgeGVuX3hz cGxpY2VfbmFtZV90IG5hbWU7ICAgICAgICAvKiBJTiwgdGhlIG5hbWUgb2YgdGhlIHBheWxvYWQu ICovICAKLSAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7ICAgIC8qIElOL09VVDogc3Rh dHVzIG9mIHRoZSBwYXlsb2FkLiAqLyAgCitzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hfZ2V0 IHsgIAorICAgIHhlbl9saXZlcGF0Y2hfbmFtZV90IG5hbWU7ICAgICAgLyogSU4sIHRoZSBuYW1l IG9mIHRoZSBwYXlsb2FkLiAqLyAgCisgICAgeGVuX2xpdmVwYXRjaF9zdGF0dXNfdCBzdGF0dXM7 ICAvKiBJTi9PVVQ6IHN0YXR1cyBvZiB0aGUgcGF5bG9hZC4gKi8gIAogfTsgIAogPC9wcmU+CiAK LSMjIyBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCAoMikKKyMjIyBYRU5fU1lTQ1RMX0xJVkVQQVRD SF9MSVNUICgyKQogCiBSZXRyaWV2ZSBhbiBhcnJheSBvZiBhYmJyZXZpYXRlZCBzdGF0dXMgYW5k IG5hbWVzIG9mIHBheWxvYWRzIHRoYXQgYXJlIGxvYWRlZCBpbiB0aGUKIGh5cGVydmlzb3IuCkBA IC01NjgsMTEgKzU2OCwxMSBAQCBUaGUgY2FsbGVyIHByb3ZpZGVzOgogICAgIGluIHRoZSBoeXBl cmNhbGwgYmVpbmcgYSBwcm9iaW5nIG9uZSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgcGF5bG9h ZHMKICAgICAoYW5kIHVwZGF0ZSB0aGUgYHZlcnNpb25gKS4KICAqIGBwYWRgIC0gKk1VU1QqIGJl IHplcm8uCi0gKiBgc3RhdHVzYCB2aXJ0dWFsIGFkZHJlc3Mgb2Ygd2hlcmUgdG8gd3JpdGUgYHN0 cnVjdCB4ZW5feHNwbGljZV9zdGF0dXNgCisgKiBgc3RhdHVzYCB2aXJ0dWFsIGFkZHJlc3Mgb2Yg d2hlcmUgdG8gd3JpdGUgYHN0cnVjdCB4ZW5fbGl2ZXBhdGNoX3N0YXR1c2AKICAgIHN0cnVjdHVy ZXMuIENhbGxlciAqTVVTVCogYWxsb2NhdGUgdXAgdG8gYG5yYCBvZiB0aGVtLgogICogYG5hbWVg IC0gdmlydHVhbCBhZGRyZXNzIG9mIHdoZXJlIHRvIHdyaXRlIHRoZSB1bmlxdWUgbmFtZSBvZiB0 aGUgcGF5bG9hZC4KICAgIENhbGxlciAqTVVTVCogYWxsb2NhdGUgdXAgdG8gYG5yYCBvZiB0aGVt LiBFYWNoICpNVVNUKiBiZSBvZgotICAgKipYRU5fWFNQTElDRV9OQU1FX1NJWkUqKiBzaXplLiBO b3RlIHRoYXQgKipYRU5fWFNQTElDRV9OQU1FX1NJWkUqKiBpbmNsdWRlcworICAgKipYRU5fTElW RVBBVENIX05BTUVfU0laRSoqIHNpemUuIE5vdGUgdGhhdCAqKlhFTl9MSVZFUEFUQ0hfTkFNRV9T SVpFKiogaW5jbHVkZXMKICAgIHRoZSBOVUwgdGVybWluYXRvci4KICAqIGBsZW5gIC0gdmlydHVh bCBhZGRyZXNzIG9mIHdoZXJlIHRvIHdyaXRlIHRoZSBsZW5ndGggb2YgZWFjaCB1bmlxdWUgbmFt ZQogICAgb2YgdGhlIHBheWxvYWQuIENhbGxlciAqTVVTVCogYWxsb2NhdGUgdXAgdG8gYG5yYCBv ZiB0aGVtLiBFYWNoICpNVVNUKiBiZQpAQCAtNTk3LDE0ICs1OTcsMTQgQEAgYmV0d2VlbiBlYWNo IGludm9jYXRpb24uIGlmIHRoZSB2ZXJzaW9uIGRpZmZlcnMgaXQgc2hvdWxkIGRpc2NhcmQgdGhl IHN0YWxlCiBkYXRhIGFuZCBzdGFydCBmcm9tIHNjcmF0Y2guIEl0IGlzIE9LIGZvciB0aGUgdG9v bHN0YWNrIHRvIHVzZSB0aGUgbmV3CiBgdmVyc2lvbmAgZmllbGQuCiAKLVRoZSBgc3RydWN0IHhl bl94c3BsaWNlX3N0YXR1c2Agc3RydWN0dXJlIGNvbnRhaW5zIGFuIHN0YXR1cyBvZiBwYXlsb2Fk IHdoaWNoIGluY2x1ZGVzOgorVGhlIGBzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9zdGF0dXNgIHN0cnVj dHVyZSBjb250YWlucyBhbiBzdGF0dXMgb2YgcGF5bG9hZCB3aGljaCBpbmNsdWRlczoKIAogICog YHN0YXR1c2AgLSBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBwYXlsb2FkOgot ICAgKiAqWFNQTElDRV9TVEFUVVNfQ0hFQ0tFRCogICgxKSBsb2FkZWQgYW5kIHRoZSBFTEYgcGF5 bG9hZCBzYWZldHkgY2hlY2tzIHBhc3NlZC4KLSAgICogKlhTUExJQ0VfU1RBVFVTX0FQUExJRUQq ICgyKSBsb2FkZWQsIGNoZWNrZWQsIGFuZCBhcHBsaWVkLgorICAgKiAqTElWRVBBVENIX1NUQVRV U19DSEVDS0VEKiAgKDEpIGxvYWRlZCBhbmQgdGhlIEVMRiBwYXlsb2FkIHNhZmV0eSBjaGVja3Mg cGFzc2VkLgorICAgKiAqTElWRVBBVENIX1NUQVRVU19BUFBMSUVEKiAoMikgbG9hZGVkLCBjaGVj a2VkLCBhbmQgYXBwbGllZC4KICAgICogIE5vIG90aGVyIHZhbHVlIGlzIHBvc3NpYmxlLgogICog YHJjYCAtIC1YRU5fRVhYIHR5cGUgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIHBlcmZvcm1pbmcg dGhlIGxhc3QKLSAgIFhTUExJQ0VfQUNUSU9OXyogb3BlcmF0aW9uLiBUaGUgbm9ybWFsIHZhbHVl cyBjYW4gYmUgemVybyBvciAtWEVOX0VBR0FJTiB3aGljaAorICAgTElWRVBBVENIX0FDVElPTl8q IG9wZXJhdGlvbi4gVGhlIG5vcm1hbCB2YWx1ZXMgY2FuIGJlIHplcm8gb3IgLVhFTl9FQUdBSU4g d2hpY2gKICAgIHJlc3BlY3RpdmVseSBtZWFuOiBzdWNjZXNzIG9yIG9wZXJhdGlvbiBpbiBwcm9n cmVzcy4gT3RoZXIgdmFsdWVzCiAgICBpbXBseSBhbiBlcnJvciBvY2N1cnJlZC4gSWYgdGhlcmUg aXMgYW4gZXJyb3IgaW4gYHJjYCwgYHN0YXR1c2Agd2lsbCAqKk5PVCoqCiAgICBoYXZlIGNoYW5n ZWQuCkBAIC02MTIsNyArNjEyLDcgQEAgVGhlIGBzdHJ1Y3QgeGVuX3hzcGxpY2Vfc3RhdHVzYCBz dHJ1Y3R1cmUgY29udGFpbnMgYW4gc3RhdHVzIG9mIHBheWxvYWQgd2hpY2ggaW4KIFRoZSBzdHJ1 Y3R1cmUgaXMgYXMgZm9sbG93OgogCiA8cHJlPgotc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9s aXN0IHsgIAorc3RydWN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX2xpc3QgeyAgCiAgICAgdWludDMy X3QgdmVyc2lvbjsgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVDogSHlwZXJ2aXNvciBzdGFt cHMgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElmIHZhcmllcyBiZXR3ZWVuIGNhbGxzLCB3ZSBhcmUgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0aW5nIHN0YWxlIGRhdGEuICovICAKQEAgLTYy MiwzOCArNjIyLDM4IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdCB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBwYXlsb2Fk cyBhbmQgdmVyc2lvbi4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPVVQ6IEhvdyBtYW55IHBheWxvYWRzIGxlZnQuICovICAKICAgICB1aW50MzJfdCBw YWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IE11c3QgYmUgemVyby4gKi8gIAot ICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpIHN0YXR1czsgIC8q IE9VVC4gTXVzdCBoYXZlIGVub3VnaCAgCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh4ZW5fbGl2 ZXBhdGNoX3N0YXR1c190KSBzdGF0dXM7ICAvKiBPVVQuIE11c3QgaGF2ZSBlbm91Z2ggIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZSBhbGxvY2F0 ZSBmb3IgbnIgb2YgdGhlbS4gKi8gIAogICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQoY2hhcikgaWQ7 ICAgICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIG5hbWVzLiBFYWNoIG1lbWJlciAgCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1VU1QgWEVOX1hTUExJQ0Vf TkFNRV9TSVpFIGluIHNpemUuICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTVVTVCBYRU5fTElWRVBBVENIX05BTUVfU0laRSBpbiBzaXplLiAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgaGF2ZSBuciBv ZiB0aGVtLiAqLyAgCiAgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50MzIpIGxlbjsgICAgICAg IC8qIE9VVDogQXJyYXkgb2YgbGVuZ3RocyBvZiBuYW1lJ3MuICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBoYXZlIG5yIG9mIHRoZW0uICovICAK IH07ICAKIDwvcHJlPgogCi0jIyMgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiAoMykKKyMjIyBY RU5fU1lTQ1RMX0xJVkVQQVRDSF9BQ1RJT04gKDMpCiAKIFBlcmZvcm0gYW4gb3BlcmF0aW9uIG9u IHRoZSBwYXlsb2FkIHN0cnVjdHVyZSByZWZlcmVuY2VkIGJ5IHRoZSBgbmFtZWAgZmllbGQuCiBU aGUgb3BlcmF0aW9uIHJlcXVlc3QgaXMgYXN5bmNocm9ub3VzIGFuZCB0aGUgc3RhdHVzIHNob3Vs ZCBiZSByZXRyaWV2ZWQKLWJ5IHVzaW5nIGVpdGhlciAqKlhFTl9TWVNDVExfWFNQTElDRV9HRVQq KiBvciAqKlhFTl9TWVNDVExfWFNQTElDRV9MSVNUKiogaHlwZXJjYWxsLgorYnkgdXNpbmcgZWl0 aGVyICoqWEVOX1NZU0NUTF9MSVZFUEFUQ0hfR0VUKiogb3IgKipYRU5fU1lTQ1RMX0xJVkVQQVRD SF9MSVNUKiogaHlwZXJjYWxsLgogCiBUaGUgY2FsbGVyIHByb3ZpZGVzOgogCi0gKiBBICdzdHJ1 Y3QgeGVuX3hzcGxpY2VfbmFtZWAgYG5hbWVgIGNvbnRhaW5pbmcgdGhlIHVuaXF1ZSBuYW1lLgor ICogQSAnc3RydWN0IHhlbl9saXZlcGF0Y2hfbmFtZWAgYG5hbWVgIGNvbnRhaW5pbmcgdGhlIHVu aXF1ZSBuYW1lLgogICogYGNtZGAgdGhlIGNvbW1hbmQgcmVxdWVzdGVkOgotICAqICpYU1BMSUNF X0FDVElPTl9VTkxPQUQqICgxKSB1bmxvYWQgdGhlIHBheWxvYWQuCisgICogKkxJVkVQQVRDSF9B Q1RJT05fVU5MT0FEKiAoMSkgdW5sb2FkIHRoZSBwYXlsb2FkLgogICAgQW55IGZ1cnRoZXIgaHlw ZXJjYWxscyBhZ2FpbnN0IHRoZSBgbmFtZWAgd2lsbCByZXN1bHQgaW4gZmFpbHVyZSB1bmxlc3MK LSAgICoqWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCoqIGh5cGVyY2FsbCBpcyBwZXJmb21lZCB3 aXRoIHNhbWUgYG5hbWVgLgotICAqICpYU1BMSUNFX0FDVElPTl9SRVZFUlQqICgyKSByZXZlcnQg dGhlIHBheWxvYWQuIElmIHRoZSBvcGVyYXRpb24gdGFrZXMKLSAgbW9yZSB0aW1lIHRoYW4gdGhl IHVwcGVyIGJvdW5kIG9mIHRpbWUgdGhlIGByY2AgaW4gYHhlbl94c3BsaWNlX3N0YXR1cycKLSAg cmV0cmlldmVkIHZpYSAqKlhFTl9TWVNDVExfWFNQTElDRV9HRVQqKiB3aWxsIGJlIC1YRU5fRUJV U1kuCi0gICogKlhTUExJQ0VfQUNUSU9OX0FQUExZKiAoMykgYXBwbHkgdGhlIHBheWxvYWQuIElm IHRoZSBvcGVyYXRpb24gdGFrZXMKLSAgbW9yZSB0aW1lIHRoYW4gdGhlIHVwcGVyIGJvdW5kIG9m IHRpbWUgdGhlIGByY2AgaW4gYHhlbl94c3BsaWNlX3N0YXR1cycKLSAgcmV0cmlldmVkIHZpYSAq KlhFTl9TWVNDVExfWFNQTElDRV9HRVQqKiB3aWxsIGJlIC1YRU5fRUJVU1kuCi0gICogKlhTUExJ Q0VfQUNUSU9OX1JFUExBQ0UqICg0KSByZXZlcnQgYWxsIGFwcGxpZWQgcGF5bG9hZHMgYW5kIGFw cGx5IHRoaXMKKyAgICoqWEVOX1NZU0NUTF9MSVZFUEFUQ0hfVVBMT0FEKiogaHlwZXJjYWxsIGlz IHBlcmZvbWVkIHdpdGggc2FtZSBgbmFtZWAuCisgICogKkxJVkVQQVRDSF9BQ1RJT05fUkVWRVJU KiAoMikgcmV2ZXJ0IHRoZSBwYXlsb2FkLiBJZiB0aGUgb3BlcmF0aW9uIHRha2VzCisgIG1vcmUg dGltZSB0aGFuIHRoZSB1cHBlciBib3VuZCBvZiB0aW1lIHRoZSBgcmNgIGluIGB4ZW5fbGl2ZXBh dGNoX3N0YXR1cycKKyAgcmV0cmlldmVkIHZpYSAqKlhFTl9TWVNDVExfTElWRVBBVENIX0dFVCoq IHdpbGwgYmUgLVhFTl9FQlVTWS4KKyAgKiAqTElWRVBBVENIX0FDVElPTl9BUFBMWSogKDMpIGFw cGx5IHRoZSBwYXlsb2FkLiBJZiB0aGUgb3BlcmF0aW9uIHRha2VzCisgIG1vcmUgdGltZSB0aGFu IHRoZSB1cHBlciBib3VuZCBvZiB0aW1lIHRoZSBgcmNgIGluIGB4ZW5fbGl2ZXBhdGNoX3N0YXR1 cycKKyAgcmV0cmlldmVkIHZpYSAqKlhFTl9TWVNDVExfTElWRVBBVENIX0dFVCoqIHdpbGwgYmUg LVhFTl9FQlVTWS4KKyAgKiAqTElWRVBBVENIX0FDVElPTl9SRVBMQUNFKiAoNCkgcmV2ZXJ0IGFs bCBhcHBsaWVkIHBheWxvYWRzIGFuZCBhcHBseSB0aGlzCiAgIHBheWxvYWQuIElmIHRoZSBvcGVy YXRpb24gdGFrZXMgbW9yZSB0aW1lIHRoYW4gdGhlIHVwcGVyIGJvdW5kIG9mIHRpbWUKLSAgdGhl IGByY2AgaW4gYHhlbl94c3BsaWNlX3N0YXR1cycgcmV0cmlldmVkIHZpYSAqKlhFTl9TWVNDVExf WFNQTElDRV9HRVQqKgorICB0aGUgYHJjYCBpbiBgeGVuX2xpdmVwYXRjaF9zdGF0dXMnIHJldHJp ZXZlZCB2aWEgKipYRU5fU1lTQ1RMX0xJVkVQQVRDSF9HRVQqKgogICB3aWxsIGJlIC1YRU5fRUJV U1kuCiAgKiBgdGltZWAgdGhlIHVwcGVyIGJvdW5kIG9mIHRpbWUgKG1zKSB0aGUgY21kIHNob3Vs ZCB0YWtlLiBaZXJvIG1lYW5zIGluZmluaXRlLgogICAgSWYgd2l0aGluIHRoZSB0aW1lIHRoZSBv cGVyYXRpb24gZG9lcyBub3Qgc3VjY2VlZCB0aGUgb3BlcmF0aW9uIHdvdWxkIGdvIGluCkBAIC02 NjUsMTMgKzY2NSwxMyBAQCBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgemVybyB1bmxlc3MgdGhl IHByb3ZpZGVkIGZpZWxkcyBhcmUgaW5jb3JyZWN0LgogVGhlIHN0cnVjdHVyZSBpcyBhcyBmb2xs b3c6CiAKIDxwcmU+Ci0jZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1VOTE9BRCAgMSAgCi0jZGVmaW5l IFhTUExJQ0VfQUNUSU9OX1JFVkVSVCAgMiAgCi0jZGVmaW5lIFhTUExJQ0VfQUNUSU9OX0FQUExZ ICAgMyAgCi0jZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0UgNCAgCi1zdHJ1Y3QgeGVuX3N5 c2N0bF94c3BsaWNlX2FjdGlvbiB7ICAKLSAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAg ICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLyAgCi0gICAgdWludDMyX3Qg Y21kOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBYU1BMSUNFX0FDVElPTl8qICov ICAKKyNkZWZpbmUgTElWRVBBVENIX0FDVElPTl9VTkxPQUQgIDEgIAorI2RlZmluZSBMSVZFUEFU Q0hfQUNUSU9OX1JFVkVSVCAgMiAgCisjZGVmaW5lIExJVkVQQVRDSF9BQ1RJT05fQVBQTFkgICAz ICAKKyNkZWZpbmUgTElWRVBBVENIX0FDVElPTl9SRVBMQUNFIDQgIAorc3RydWN0IHhlbl9zeXNj dGxfbGl2ZXBhdGNoX2FjdGlvbiB7ICAKKyAgICB4ZW5fbGl2ZXBhdGNoX25hbWVfdCBuYW1lOyAg ICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLyAgCisgICAgdWludDMyX3Qg Y21kOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBMSVZFUEFUQ0hfQUNUSU9OXyog Ki8gIAogICAgIHVpbnQzMl90IHRpbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjog WmVybyBpZiBubyB0aW1lb3V0LiAqLyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBPciB1cHBlciBib3VuZCBvZiB0aW1lIChtcykgKi8gICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIG9wZXJhdGlvbiB0 byB0YWtlLiAqLyAgCkBAIC02NzksMTEgKzY3OSwxMSBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX2FjdGlvbiB7CiAKIDwvcHJlPgogCi0jIyBTdGF0ZSBkaWFncmFtcyBvZiBYU1BMSUNFX0FD VElPTiBjb21tYW5kcy4KKyMjIFN0YXRlIGRpYWdyYW1zIG9mIExJVkVQQVRDSF9BQ1RJT04gY29t bWFuZHMuCiAKIFRoZXJlIGlzIGEgc3RyaWN0IG9yZGVyaW5nIHN0YXRlIG9mIHdoYXQgdGhlIGNv bW1hbmRzIGNhbiBiZS4KLVRoZSBYU1BMSUNFX0FDVElPTiBwcmVmaXggaGFzIGJlZW4gZHJvcHBl ZCB0byBlYXN5IHJlYWRpbmcgYW5kCi1kb2VzIG5vdCBpbmNsdWRlIHRoZSBYU1BMSUNFX1NUQVRF UzoKK1RoZSBMSVZFUEFUQ0hfQUNUSU9OIHByZWZpeCBoYXMgYmVlbiBkcm9wcGVkIHRvIGVhc3kg cmVhZGluZyBhbmQKK2RvZXMgbm90IGluY2x1ZGUgdGhlIExJVkVQQVRDSF9TVEFURVM6CiAKIDxw cmU+CiAgICAgICAgICAgICAgIC8tPlwgIApAQCAtNjkzLDExICs2OTMsMTEgQEAgZG9lcyBub3Qg aW5jbHVkZSB0aGUgWFNQTElDRV9TVEFURVM6CiAgICAgICAgICAgICAgICAgIFwtLS0tLS0tLS0t LS0tLS0tLS0tPC0tLS0tLS0tLS0tLS0vICAKIAogPC9wcmU+Ci0jIyBTdGF0ZSB0cmFuc2l0aW9u IHRhYmxlIG9mIFhTUExJQ0VfQUNUSU9OIGNvbW1hbmRzIGFuZCBYU1BMSUNFX1NUQVRVUy4KKyMj IFN0YXRlIHRyYW5zaXRpb24gdGFibGUgb2YgTElWRVBBVENIX0FDVElPTiBjb21tYW5kcyBhbmQg TElWRVBBVENIX1NUQVRVUy4KIAogTm90ZSB0aGF0OgogCi0gLSBUaGUgQ0hFQ0tFRCBzdGF0ZSBp cyB0aGUgc3RhcnRpbmcgb25lIGFjaGlldmVkIHdpdGggKlhFTl9TWVNDVExfWFNQTElDRV9VUExP QUQqIGh5cGVyY2FsbC4KKyAtIFRoZSBDSEVDS0VEIHN0YXRlIGlzIHRoZSBzdGFydGluZyBvbmUg YWNoaWV2ZWQgd2l0aCAqWEVOX1NZU0NUTF9MSVZFUEFUQ0hfVVBMT0FEKiBoeXBlcmNhbGwuCiAg LSBUaGUgUkVWRVJUIG9wZXJhdGlvbiBvbiBzdWNjZXNzIHdpbGwgYXV0b21hdGljYWxseSBtb3Zl IHRvIHRoZSBDSEVDS0VEIHN0YXRlLgogIC0gVGhlcmUgYXJlIHR3byBTVEFURVM6IENIRUNLRUQg YW5kIEFQUExJRUQuCiAgLSBUaGVyZSBhcmUgZm91ciBhY3Rpb25zIChha2EgY29tbWFuZHMpOiBB UFBMWSwgUkVQTEFDRSwgUkVWRVJULCBhbmQgVU5MT0FELgpAQCAtNzM1LDEwICs3MzUsMTAgQEAg QWxsIHRoZSBvdGhlciBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaW52YWxpZC4KIAogVGhlIG5vcm1h bCBzZXF1ZW5jZSBvZiBldmVudHMgaXMgdG86CiAKLSAxLiAqWEVOX1NZU0NUTF9YU1BMSUNFX1VQ TE9BRCogdG8gdXBsb2FkIHRoZSBwYXlsb2FkLiBJZiB0aGVyZSBhcmUgZXJyb3JzICpTVE9QKiBo ZXJlLgotIDIuICpYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUKiB0byBjaGVjayB0aGUgYC0+cmNgLiBJ ZiAqLVhFTl9FQUdBSU4qIHNwaW4uIElmIHplcm8gZ28gdG8gbmV4dCBzdGVwLgotIDMuICpYRU5f U1lTQ1RMX1hTUExJQ0VfQUNUSU9OKiB3aXRoICpYU1BMSUNFX0FDVElPTl9BUFBMWSogdG8gYXBw bHkgdGhlIHBhdGNoLgotIDQuICpYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUKiB0byBjaGVjayB0aGUg YC0+cmNgLiBJZiBpbiAqLVhFTl9FQUdBSU4qIHNwaW4uIElmIHplcm8gZXhpdCB3aXRoIHN1Y2Nl c3MuCisgMS4gKlhFTl9TWVNDVExfTElWRVBBVENIX1VQTE9BRCogdG8gdXBsb2FkIHRoZSBwYXls b2FkLiBJZiB0aGVyZSBhcmUgZXJyb3JzICpTVE9QKiBoZXJlLgorIDIuICpYRU5fU1lTQ1RMX0xJ VkVQQVRDSF9HRVQqIHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmICotWEVOX0VBR0FJTiogc3Bpbi4g SWYgemVybyBnbyB0byBuZXh0IHN0ZXAuCisgMy4gKlhFTl9TWVNDVExfTElWRVBBVENIX0FDVElP Tiogd2l0aCAqTElWRVBBVENIX0FDVElPTl9BUFBMWSogdG8gYXBwbHkgdGhlIHBhdGNoLgorIDQu ICpYRU5fU1lTQ1RMX0xJVkVQQVRDSF9HRVQqIHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmIGluICot WEVOX0VBR0FJTiogc3Bpbi4gSWYgemVybyBleGl0IHdpdGggc3VjY2Vzcy4KIAogCiAjIyBBZGRl bmR1bQpAQCAtODA5LDE0ICs4MDksMTQgQEAgSG90cGF0Y2ggZ2VuZXJhdGlvbiBvZnRlbiByZXF1 aXJlcyBzdXBwb3J0IGZvciBjb21waWxpbmcgdGhlIHRhcmdldAogd2l0aCAtZmZ1bmN0aW9uLXNl Y3Rpb25zIC8gLWZkYXRhLXNlY3Rpb25zLiAgQ2hhbmdlcyB3b3VsZCBoYXZlIHRvCiBiZSBkb25l IHRvIHRoZSBsaW5rZXIgc2NyaXB0cyB0byBzdXBwb3J0IHRoaXMuCiAKLSMjIyBHZW5lcmF0aW9u IG9mIHhTcGxpY2UgRUxGIHBheWxvYWRzCisjIyMgR2VuZXJhdGlvbiBvZiBMaXZlIFBhdGNoIEVM RiBwYXlsb2FkcwogCiBUaGUgZGVzaWduIG9mIHRoYXQgaXMgbm90IGRpc2N1c3NlZCBpbiB0aGlz IGRlc2lnbi4KIAogVGhpcyBpcyBpbXBsZW1lbnRlZCBpbiBhIHNlcGVyYXRlIHRvb2wgd2hpY2gg bGl2ZXMgaW4gYSBzZXBlcmF0ZQogR0lUIHJlcG8uCiAKLUN1cnJlbnRseSBpdCByZXNpZGVzIGF0 IGh0dHBzOi8vZ2l0aHViLmNvbS9yb3NzbGFnZXJ3YWxsL3hzcGxpY2UtYnVpbGQKK0N1cnJlbnRs eSBpdCByZXNpZGVzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9yb3NzbGFnZXJ3YWxsL2xpdmVwYXRj aC1idWlsZAogCiAjIyMgRXhjZXB0aW9uIHRhYmxlcyBhbmQgc3ltYm9sIHRhYmxlcyBncm93dGgK IApAQCAtODc5LDkgKzg3OSw5IEBAIFRoaXMgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIFhlbiBQcm9q ZWN0IGh5cGVydmlzb3IuCiAKIE9ubHkgdGhlIHByaXZpbGVnZWQgZG9tYWluIHNob3VsZCBiZSBh bGxvd2VkIHRvIGRvIHRoaXMgb3BlcmF0aW9uLgogCi0jIyMgeFNwbGljZSBpbnRlcmRlcGVuZGVu Y2llcworIyMjIExpdmUgcGF0Y2ggaW50ZXJkZXBlbmRlbmNpZXMKIAoteFNwbGljZSBwYXRjaGVz IGludGVyZGVwZW5kZW5jaWVzIGFyZSB0cmlja3kuCitMaXZlIHBhdGNoIHBhdGNoZXMgaW50ZXJk ZXBlbmRlbmNpZXMgYXJlIHRyaWNreS4KIAogVGhlcmUgYXJlIHRoZSB3YXlzIHRoaXMgY2FuIGJl IGFkZHJlc3NlZDoKICAqIEEgc2luZ2xlIGxhcmdlIHBhdGNoIHRoYXQgc3Vic3VtZXMgYW5kIHJl cGxhY2VzIGFsbCBwcmV2aW91cyBvbmVzLgpAQCAtOTE4LDcgKzkxOCw3IEBAIGJ1aWxkLWlkLgog CiAjIE5vdCBZZXQgRG9uZQogCi1UaGlzIGlzIGZvciBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHhT cGxpY2UuCitUaGlzIGlzIGZvciBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIGxpdmUgcGF0Y2hpbmcu CiAKICMjIFRPRE8gR29hbHMKIApAQCAtOTMwLDcgKzkzMCw3IEBAIFRoZSBpbXBsZW1lbnRhdGlv biBtdXN0IGFsc28gaGF2ZSBhIG1lY2hhbmlzbSBmb3IgKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIp OgogICogRGVhbCB3aXRoIE5NSS9NQ0UgY2hlY2tzIGR1cmluZyBwYXRjaGluZyBpbnN0ZWFkIG9m IGlnbm9yaW5nIHRoZW0uCiAgKiBGdXJ0aGVyIHNhZmV0eSBjaGVja3MgKGJsYWNrbGlzdCBvZiB3 aGljaCBmdW5jdGlvbnMgY2Fubm90IGJlIHBhdGNoZWQsIGNoZWNrCiAgICB0aGUgc3RhY2ssIG1h a2Ugc3VyZSB0aGUgcGF5bG9hZCBpcyBidWlsdCB3aXRoIHNhbWUgY29tcGlsZXIgYXMgaHlwZXJ2 aXNvcikuCi0gICBTcGVjaWZpY2FsbHkgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB4U3BsaWNl IGNvZGVwYXRocyBjYW5ub3QgYmUgcGF0Y2hlZC4KKyAgIFNwZWNpZmljYWxseSB3ZSB3YW50IHRv IG1ha2Ugc3VyZSB0aGF0IGxpdmUgcGF0Y2hpbmcgY29kZXBhdGhzIGNhbm5vdCBiZSBwYXRjaGVk LgogICogTk9QIG91dCB0aGUgY29kZSBzZXF1ZW5jZSBpZiBgbmV3X3NpemVgIGlzIHplcm8uCiAg KiBEZWFsIHdpdGggb3RoZXIgcmVsb2NhdGlvbiB0eXBlczogIFJfWDg2XzY0X1s4LDE2LDMyLDMy U10sIFJfWDg2XzY0X1BDWzgsMTYsNjRdCiAgICBpbiBwYXlsb2FkIGZpbGUuCmRpZmYgLS1naXQg YS90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSBiL3Rvb2xzL2Zs YXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCmluZGV4IDBiMWM5NTUuLjUwYWE2 MDIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVu LnRlCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCkBA IC03NCw3ICs3NCw3IEBAIGFsbG93IGRvbTBfdCB4ZW5fdDp4ZW4yIHsKICAgICBnZXRfc3ltYm9s CiAgICAgZ2V0X2NwdV9sZXZlbGxpbmdfY2FwcwogICAgIGdldF9jcHVfZmVhdHVyZXNldAotICAg IHhzcGxpY2Vfb3AKKyAgICBsaXZlcGF0Y2hfb3AKIH07CiAKICMgQWxsb3cgZG9tMCB0byB1c2Ug YWxsIFhFTlZFUl8gc3Vib3BzIHRoYXQgaGF2ZSBjaGVja3MuCmRpZmYgLS1naXQgYS90b29scy9s aWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmlu ZGV4IGRjNTQ2MTIuLjZhZTFhMmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNjEwLDE1ICsy NjEwLDE1IEBAIGNvbnN0IHVpbnQzMl90ICp4Y19nZXRfZmVhdHVyZV9kZWVwX2RlcHModWludDMy X3QgZmVhdHVyZSk7CiAKICNlbmRpZgogCi1pbnQgeGNfeHNwbGljZV91cGxvYWQoeGNfaW50ZXJm YWNlICp4Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hh ciAqcGF5bG9hZCwgdWludDMyX3Qgc2l6ZSk7CitpbnQgeGNfbGl2ZXBhdGNoX3VwbG9hZCh4Y19p bnRlcmZhY2UgKnhjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUsIHVuc2ln bmVkIGNoYXIgKnBheWxvYWQsIHVpbnQzMl90IHNpemUpOwogCi1pbnQgeGNfeHNwbGljZV9nZXQo eGNfaW50ZXJmYWNlICp4Y2gsCi0gICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKLSAgICAg ICAgICAgICAgICAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCAqc3RhdHVzKTsKK2ludCB4Y19saXZl cGF0Y2hfZ2V0KHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAgICAgICAgICAgICAgY2hhciAq bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIHhlbl9saXZlcGF0Y2hfc3RhdHVzX3QgKnN0YXR1 cyk7CiAKIC8qCi0gKiBUaGUgaGVhcnQgb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBnZXQgYW4gYXJy YXkgb2YgeGVuX3hzcGxpY2Vfc3RhdHVzX3QuCisgKiBUaGUgaGVhcnQgb2YgdGhpcyBmdW5jdGlv biBpcyB0byBnZXQgYW4gYXJyYXkgb2YgeGVuX2xpdmVwYXRjaF9zdGF0dXNfdC4KICAqCiAgKiBI b3dldmVyIGl0IGlzIGNvbXBsZXggYmVjYXVzZSBpdCBoYXMgdG8gZGVhbCB3aXRoIHRoZSBoeXBl cnZpc29yCiAgKiByZXR1cm5pbmcgc29tZSBvZiB0aGUgcmVxdWVzdGVkIGRhdGEgb3IgZGF0YSBi ZWluZyBzdGFsZQpAQCAtMjYzOCwxMCArMjYzOCwxMCBAQCBpbnQgeGNfeHNwbGljZV9nZXQoeGNf aW50ZXJmYWNlICp4Y2gsCiAgKiBudW1iZXIgb2YgZW50cmllcyB0aGF0ICdpbmZvJywgJ25hbWUn LCBhbmQgJ2xlbicgYXJyYXlzIGNhbgogICogYmUgZmlsbGVkIHVwIHdpdGguCiAgKgotICogRWFj aCBlbnRyeSBpbiB0aGUgJ25hbWUnIGFycmF5IGlzIGV4cGVjdGVkIHRvIGJlIG9mIFhFTl9YU1BM SUNFX05BTUVfU0laRQorICogRWFjaCBlbnRyeSBpbiB0aGUgJ25hbWUnIGFycmF5IGlzIGV4cGVj dGVkIHRvIGJlIG9mIFhFTl9MSVZFUEFUQ0hfTkFNRV9TSVpFCiAgKiBsZW5ndGguCiAgKgotICog RWFjaCBlbnRyeSBpbiB0aGUgJ2luZm8nIGFycmF5IGlzIGV4cGVjdGVkIHRvIGJlIG9mIHhlbl94 c3BsaWNlX3N0YXR1c190CisgKiBFYWNoIGVudHJ5IGluIHRoZSAnaW5mbycgYXJyYXkgaXMgZXhw ZWN0ZWQgdG8gYmUgb2YgeGVuX2xpdmVwYXRjaF9zdGF0dXNfdAogICogc3RydWN0dXJlIHNpemUu CiAgKgogICogRWFjaCBlbnRyeSBpbiB0aGUgJ2xlbicgYXJyYXkgaXMgZXhwZWN0ZWQgdG8gYmUg b2YgdWludDMyX3Qgc2l6ZS4KQEAgLTI2NTUsMTAgKzI2NTUsMTAgQEAgaW50IHhjX3hzcGxpY2Vf Z2V0KHhjX2ludGVyZmFjZSAqeGNoLAogICogd2lsbCBjb250YWluIHRoZSBudW1iZXIgb2YgZW50 cmllcyB0aGF0IGhhZCBiZWVuIHN1Y2Nlc2Z1bGx5CiAgKiByZXRyaWV2ZWQgKGlmIGFueSkuCiAg Ki8KLWludCB4Y194c3BsaWNlX2xpc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHVuc2lnbmVkIGludCBt YXgsIHVuc2lnbmVkIGludCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgeGVuX3hzcGxpY2Vf c3RhdHVzX3QgKmluZm8sIGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 ICpsZW4sIHVuc2lnbmVkIGludCAqZG9uZSwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50ICpsZWZ0KTsKK2ludCB4Y19saXZlcGF0Y2hfbGlzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdW5z aWduZWQgaW50IG1heCwgdW5zaWduZWQgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAg IHhlbl9saXZlcGF0Y2hfc3RhdHVzX3QgKmluZm8sIGNoYXIgKm5hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgKmxlbiwgdW5zaWduZWQgaW50ICpkb25lLAorICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCAqbGVmdCk7CiAKIC8qCiAgKiBUaGUgb3BlcmF0aW9ucyBh cmUgYXN5bmNocm9ub3VzIGFuZCB0aGUgaHlwZXJ2aXNvciBtYXkgdGFrZSBhIHdoaWxlCkBAIC0y NjY2LDEwICsyNjY2LDEwIEBAIGludCB4Y194c3BsaWNlX2xpc3QoeGNfaW50ZXJmYWNlICp4Y2gs IHVuc2lnbmVkIGludCBtYXgsIHVuc2lnbmVkIGludCBzdGFydCwKICAqIG9wZXJhdGlvbiBpZiBp dCBjb3VsZCBub3QgYmUgY29tcGxldGVkIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUKICAqIChp biBtcykuIFZhbHVlIG9mIDAgbWVhbnMgbGV0IGh5cGVydmlzb3IgZGVjaWRlIHRoZSBiZXN0IHRp bWVvdXQuCiAgKi8KLWludCB4Y194c3BsaWNlX2FwcGx5KHhjX2ludGVyZmFjZSAqeGNoLCBjaGFy ICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KTsKLWludCB4Y194c3BsaWNlX3JldmVydCh4Y19pbnRl cmZhY2UgKnhjaCwgY2hhciAqbmFtZSwgdWludDMyX3QgdGltZW91dCk7Ci1pbnQgeGNfeHNwbGlj ZV91bmxvYWQoeGNfaW50ZXJmYWNlICp4Y2gsIGNoYXIgKm5hbWUsIHVpbnQzMl90IHRpbWVvdXQp OwotaW50IHhjX3hzcGxpY2VfcmVwbGFjZSh4Y19pbnRlcmZhY2UgKnhjaCwgY2hhciAqbmFtZSwg dWludDMyX3QgdGltZW91dCk7CitpbnQgeGNfbGl2ZXBhdGNoX2FwcGx5KHhjX2ludGVyZmFjZSAq eGNoLCBjaGFyICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KTsKK2ludCB4Y19saXZlcGF0Y2hfcmV2 ZXJ0KHhjX2ludGVyZmFjZSAqeGNoLCBjaGFyICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KTsKK2lu dCB4Y19saXZlcGF0Y2hfdW5sb2FkKHhjX2ludGVyZmFjZSAqeGNoLCBjaGFyICpuYW1lLCB1aW50 MzJfdCB0aW1lb3V0KTsKK2ludCB4Y19saXZlcGF0Y2hfcmVwbGFjZSh4Y19pbnRlcmZhY2UgKnhj aCwgY2hhciAqbmFtZSwgdWludDMyX3QgdGltZW91dCk7CiAKIC8qIENvbXBhdCBzaGltcyAqLwog I2luY2x1ZGUgInhlbmN0cmxfY29tcGF0LmgiCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19t aXNjLmMgYi90b29scy9saWJ4Yy94Y19taXNjLmMKaW5kZXggZDczZjYyMi4uMDZlOTBkZSAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pc2Mu YwpAQCAtNjk2LDE2ICs2OTYsMTYgQEAgaW50IHhjX2h2bV9pbmplY3RfdHJhcCgKICAgICByZXR1 cm4gcmM7CiB9CiAKLWludCB4Y194c3BsaWNlX3VwbG9hZCh4Y19pbnRlcmZhY2UgKnhjaCwKLSAg ICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgKnBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6 ZSkKK2ludCB4Y19saXZlcGF0Y2hfdXBsb2FkKHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKnBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXpl KQogewogICAgIGludCByYzsKICAgICBERUNMQVJFX1NZU0NUTDsKICAgICBERUNMQVJFX0hZUEVS Q0FMTF9CVUZGRVIoY2hhciwgbG9jYWwpOwogICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRShu YW1lLCAwIC8qIGxhdGVyICovLCBYQ19IWVBFUkNBTExfQlVGRkVSX0JPVU5DRV9JTik7Ci0gICAg eGVuX3hzcGxpY2VfbmFtZV90IGRlZl9uYW1lID0geyAucGFkID0geyAwLCAwLCAwIH0gfTsKKyAg ICB4ZW5fbGl2ZXBhdGNoX25hbWVfdCBkZWZfbmFtZSA9IHsgLnBhZCA9IHsgMCwgMCwgMCB9IH07 CiAKICAgICBpZiAoICFuYW1lIHx8ICFwYXlsb2FkICkKICAgICB7CkBAIC03MTQsNyArNzE0LDcg QEAgaW50IHhjX3hzcGxpY2VfdXBsb2FkKHhjX2ludGVyZmFjZSAqeGNoLAogICAgIH0KIAogICAg IGRlZl9uYW1lLnNpemUgPSBzdHJsZW4obmFtZSkgKyAxOwotICAgIGlmICggZGVmX25hbWUuc2l6 ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0laRSApCisgICAgaWYgKCBkZWZfbmFtZS5zaXplID4gWEVO X0xJVkVQQVRDSF9OQU1FX1NJWkUgKQogICAgIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAg ICAgICAgIHJldHVybiAtMTsKQEAgLTczMywxNCArNzMzLDE0IEBAIGludCB4Y194c3BsaWNlX3Vw bG9hZCh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICB9CiAgICAgbWVtY3B5KGxvY2FsLCBwYXlsb2Fk LCBzaXplKTsKIAotICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3A7Ci0gICAg c3lzY3RsLnUueHNwbGljZS5jbWQgPSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEOwotICAgIHN5 c2N0bC51LnhzcGxpY2UucGFkID0gMDsKLSAgICBzeXNjdGwudS54c3BsaWNlLnUudXBsb2FkLnNp emUgPSBzaXplOwotICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHN5c2N0bC51LnhzcGxpY2UudS51 cGxvYWQucGF5bG9hZCwgbG9jYWwpOworICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX2xpdmVw YXRjaF9vcDsKKyAgICBzeXNjdGwudS5saXZlcGF0Y2guY21kID0gWEVOX1NZU0NUTF9MSVZFUEFU Q0hfVVBMT0FEOworICAgIHN5c2N0bC51LmxpdmVwYXRjaC5wYWQgPSAwOworICAgIHN5c2N0bC51 LmxpdmVwYXRjaC51LnVwbG9hZC5zaXplID0gc2l6ZTsKKyAgICBzZXRfeGVuX2d1ZXN0X2hhbmRs ZShzeXNjdGwudS5saXZlcGF0Y2gudS51cGxvYWQucGF5bG9hZCwgbG9jYWwpOwogCi0gICAgc3lz Y3RsLnUueHNwbGljZS51LnVwbG9hZC5uYW1lID0gZGVmX25hbWU7Ci0gICAgc2V0X3hlbl9ndWVz dF9oYW5kbGUoc3lzY3RsLnUueHNwbGljZS51LnVwbG9hZC5uYW1lLm5hbWUsIG5hbWUpOworICAg IHN5c2N0bC51LmxpdmVwYXRjaC51LnVwbG9hZC5uYW1lID0gZGVmX25hbWU7CisgICAgc2V0X3hl bl9ndWVzdF9oYW5kbGUoc3lzY3RsLnUubGl2ZXBhdGNoLnUudXBsb2FkLm5hbWUubmFtZSwgbmFt ZSk7CiAKICAgICByYyA9IGRvX3N5c2N0bCh4Y2gsICZzeXNjdGwpOwogCkBAIC03NTAsMTQgKzc1 MCwxNCBAQCBpbnQgeGNfeHNwbGljZV91cGxvYWQoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgcmV0 dXJuIHJjOwogfQogCi1pbnQgeGNfeHNwbGljZV9nZXQoeGNfaW50ZXJmYWNlICp4Y2gsCi0gICAg ICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICB4ZW5feHNwbGlj ZV9zdGF0dXNfdCAqc3RhdHVzKQoraW50IHhjX2xpdmVwYXRjaF9nZXQoeGNfaW50ZXJmYWNlICp4 Y2gsCisgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAg ICAgeGVuX2xpdmVwYXRjaF9zdGF0dXNfdCAqc3RhdHVzKQogewogICAgIGludCByYzsKICAgICBE RUNMQVJFX1NZU0NUTDsKICAgICBERUNMQVJFX0hZUEVSQ0FMTF9CT1VOQ0UobmFtZSwgMCAvKmFk anVzdCBsYXRlciAqLywgWENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4pOwotICAgIHhlbl94 c3BsaWNlX25hbWVfdCBkZWZfbmFtZSA9IHsgLnBhZCA9IHsgMCwgMCwgMCB9IH07CisgICAgeGVu X2xpdmVwYXRjaF9uYW1lX3QgZGVmX25hbWUgPSB7IC5wYWQgPSB7IDAsIDAsIDAgfSB9OwogCiAg ICAgaWYgKCAhbmFtZSApCiAgICAgewpAQCAtNzY2LDcgKzc2Niw3IEBAIGludCB4Y194c3BsaWNl X2dldCh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICB9CiAKICAgICBkZWZfbmFtZS5zaXplID0gc3Ry bGVuKG5hbWUpICsgMTsKLSAgICBpZiAoIGRlZl9uYW1lLnNpemUgPiBYRU5fWFNQTElDRV9OQU1F X1NJWkUgKQorICAgIGlmICggZGVmX25hbWUuc2l6ZSA+IFhFTl9MSVZFUEFUQ0hfTkFNRV9TSVpF ICkKICAgICB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CkBA IC03NzcsMjcgKzc3NywyNyBAQCBpbnQgeGNfeHNwbGljZV9nZXQoeGNfaW50ZXJmYWNlICp4Y2gs CiAgICAgaWYgKCB4Y19oeXBlcmNhbGxfYm91bmNlX3ByZSh4Y2gsIG5hbWUpICkKICAgICAgICAg cmV0dXJuIC0xOwogCi0gICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExfeHNwbGljZV9vcDsKLSAg ICBzeXNjdGwudS54c3BsaWNlLmNtZCA9IFhFTl9TWVNDVExfWFNQTElDRV9HRVQ7Ci0gICAgc3lz Y3RsLnUueHNwbGljZS5wYWQgPSAwOworICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX2xpdmVw YXRjaF9vcDsKKyAgICBzeXNjdGwudS5saXZlcGF0Y2guY21kID0gWEVOX1NZU0NUTF9MSVZFUEFU Q0hfR0VUOworICAgIHN5c2N0bC51LmxpdmVwYXRjaC5wYWQgPSAwOwogCi0gICAgc3lzY3RsLnUu eHNwbGljZS51LmdldC5zdGF0dXMuc3RhdGUgPSAwOwotICAgIHN5c2N0bC51LnhzcGxpY2UudS5n ZXQuc3RhdHVzLnJjID0gMDsKKyAgICBzeXNjdGwudS5saXZlcGF0Y2gudS5nZXQuc3RhdHVzLnN0 YXRlID0gMDsKKyAgICBzeXNjdGwudS5saXZlcGF0Y2gudS5nZXQuc3RhdHVzLnJjID0gMDsKIAot ICAgIHN5c2N0bC51LnhzcGxpY2UudS5nZXQubmFtZSA9IGRlZl9uYW1lOwotICAgIHNldF94ZW5f Z3Vlc3RfaGFuZGxlKHN5c2N0bC51LnhzcGxpY2UudS5nZXQubmFtZS5uYW1lLCBuYW1lKTsKKyAg ICBzeXNjdGwudS5saXZlcGF0Y2gudS5nZXQubmFtZSA9IGRlZl9uYW1lOworICAgIHNldF94ZW5f Z3Vlc3RfaGFuZGxlKHN5c2N0bC51LmxpdmVwYXRjaC51LmdldC5uYW1lLm5hbWUsIG5hbWUpOwog CiAgICAgcmMgPSBkb19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKIAogICAgIHhjX2h5cGVyY2FsbF9i b3VuY2VfcG9zdCh4Y2gsIG5hbWUpOwogCi0gICAgbWVtY3B5KHN0YXR1cywgJnN5c2N0bC51Lnhz cGxpY2UudS5nZXQuc3RhdHVzLCBzaXplb2YoKnN0YXR1cykpOworICAgIG1lbWNweShzdGF0dXMs ICZzeXNjdGwudS5saXZlcGF0Y2gudS5nZXQuc3RhdHVzLCBzaXplb2YoKnN0YXR1cykpOwogCiAg ICAgcmV0dXJuIHJjOwogfQogCiAvKgotICogVGhlIGhlYXJ0IG9mIHRoaXMgZnVuY3Rpb24gaXMg dG8gZ2V0IGFuIGFycmF5IG9mIHhlbl94c3BsaWNlX3N0YXR1c190LgorICogVGhlIGhlYXJ0IG9m IHRoaXMgZnVuY3Rpb24gaXMgdG8gZ2V0IGFuIGFycmF5IG9mIHhlbl9saXZlcGF0Y2hfc3RhdHVz X3QuCiAgKgogICogSG93ZXZlciBpdCBpcyBjb21wbGV4IGJlY2F1c2UgaXQgaGFzIHRvIGRlYWwg d2l0aCB0aGUgaHlwZXJ2aXNvcgogICogcmV0dXJuaW5nIHNvbWUgb2YgdGhlIHJlcXVlc3RlZCBk YXRhIG9yIGRhdGEgYmVpbmcgc3RhbGUKQEAgLTgxNywxMCArODE3LDEwIEBAIGludCB4Y194c3Bs aWNlX2dldCh4Y19pbnRlcmZhY2UgKnhjaCwKICAqIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgJ2lu Zm8nLCAnbmFtZScsIGFuZCAnbGVuJyBhcnJheXMgY2FuCiAgKiBiZSBmaWxsZWQgdXAgd2l0aC4K ICAqCi0gKiBFYWNoIGVudHJ5IGluIHRoZSAnbmFtZScgYXJyYXkgaXMgZXhwZWN0ZWQgdG8gYmUg b2YgWEVOX1hTUExJQ0VfTkFNRV9TSVpFCisgKiBFYWNoIGVudHJ5IGluIHRoZSAnbmFtZScgYXJy YXkgaXMgZXhwZWN0ZWQgdG8gYmUgb2YgWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkUKICAqIGxlbmd0 aC4KICAqCi0gKiBFYWNoIGVudHJ5IGluIHRoZSAnaW5mbycgYXJyYXkgaXMgZXhwZWN0ZWQgdG8g YmUgb2YgeGVuX3hzcGxpY2Vfc3RhdHVzX3QKKyAqIEVhY2ggZW50cnkgaW4gdGhlICdpbmZvJyBh cnJheSBpcyBleHBlY3RlZCB0byBiZSBvZiB4ZW5fbGl2ZXBhdGNoX3N0YXR1c190CiAgKiBzdHJ1 Y3R1cmUgc2l6ZS4KICAqCiAgKiBFYWNoIGVudHJ5IGluIHRoZSAnbGVuJyBhcnJheSBpcyBleHBl Y3RlZCB0byBiZSBvZiB1aW50MzJfdCBzaXplLgpAQCAtODM0LDExICs4MzQsMTEgQEAgaW50IHhj X3hzcGxpY2VfZ2V0KHhjX2ludGVyZmFjZSAqeGNoLAogICogd2lsbCBjb250YWluIHRoZSBudW1i ZXIgb2YgZW50cmllcyB0aGF0IGhhZCBiZWVuIHN1Y2Nlc2Z1bGx5CiAgKiByZXRyaWV2ZWQgKGlm IGFueSkuCiAgKi8KLWludCB4Y194c3BsaWNlX2xpc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHVuc2ln bmVkIGludCBtYXgsIHVuc2lnbmVkIGludCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgeGVu X3hzcGxpY2Vfc3RhdHVzX3QgKmluZm8sCi0gICAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUs IHVpbnQzMl90ICpsZW4sCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZG9uZSwK LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpsZWZ0KQoraW50IHhjX2xpdmVwYXRj aF9saXN0KHhjX2ludGVyZmFjZSAqeGNoLCB1bnNpZ25lZCBpbnQgbWF4LCB1bnNpZ25lZCBpbnQg c3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgeGVuX2xpdmVwYXRjaF9zdGF0dXNfdCAqaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLCB1aW50MzJfdCAqbGVuLAorICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZG9uZSwKKyAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgKmxlZnQpCiB7CiAgICAgaW50IHJjOwogICAgIERFQ0xBUkVfU1lT Q1RMOwpAQCAtODU3LDE2ICs4NTcsMTYgQEAgaW50IHhjX3hzcGxpY2VfbGlzdCh4Y19pbnRlcmZh Y2UgKnhjaCwgdW5zaWduZWQgaW50IG1heCwgdW5zaWduZWQgaW50IHN0YXJ0LAogICAgICAgICBy ZXR1cm4gLTE7CiAgICAgfQogCi0gICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExfeHNwbGljZV9v cDsKLSAgICBzeXNjdGwudS54c3BsaWNlLmNtZCA9IFhFTl9TWVNDVExfWFNQTElDRV9MSVNUOwot ICAgIHN5c2N0bC51LnhzcGxpY2UucGFkID0gMDsKLSAgICBzeXNjdGwudS54c3BsaWNlLnUubGlz dC52ZXJzaW9uID0gMDsKLSAgICBzeXNjdGwudS54c3BsaWNlLnUubGlzdC5pZHggPSBzdGFydDsK LSAgICBzeXNjdGwudS54c3BsaWNlLnUubGlzdC5wYWQgPSAwOworICAgIHN5c2N0bC5jbWQgPSBY RU5fU1lTQ1RMX2xpdmVwYXRjaF9vcDsKKyAgICBzeXNjdGwudS5saXZlcGF0Y2guY21kID0gWEVO X1NZU0NUTF9MSVZFUEFUQ0hfTElTVDsKKyAgICBzeXNjdGwudS5saXZlcGF0Y2gucGFkID0gMDsK KyAgICBzeXNjdGwudS5saXZlcGF0Y2gudS5saXN0LnZlcnNpb24gPSAwOworICAgIHN5c2N0bC51 LmxpdmVwYXRjaC51Lmxpc3QuaWR4ID0gc3RhcnQ7CisgICAgc3lzY3RsLnUubGl2ZXBhdGNoLnUu bGlzdC5wYWQgPSAwOwogCiAgICAgbWF4X2JhdGNoX3N6ID0gbWF4OwogICAgIC8qIENvbnZpZW5j ZSB2YWx1ZS4gKi8KLSAgICBzeiA9IHNpemVvZigqbmFtZSkgKiBYRU5fWFNQTElDRV9OQU1FX1NJ WkU7CisgICAgc3ogPSBzaXplb2YoKm5hbWUpICogWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkU7CiAg ICAgKmRvbmUgPSAwOwogICAgICpsZWZ0ID0gMDsKICAgICBkbyB7CkBAIC04ODYsNyArODg2LDcg QEAgaW50IHhjX3hzcGxpY2VfbGlzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdW5zaWduZWQgaW50IG1h eCwgdW5zaWduZWQgaW50IHN0YXJ0LAogCiAgICAgICAgIG5yID0gbWluKG1heCAtICpkb25lLCBt YXhfYmF0Y2hfc3opOwogCi0gICAgICAgIHN5c2N0bC51LnhzcGxpY2UudS5saXN0Lm5yID0gbnI7 CisgICAgICAgIHN5c2N0bC51LmxpdmVwYXRjaC51Lmxpc3QubnIgPSBucjsKICAgICAgICAgLyog Rml4IHRoZSBzaXplIChtYXkgdmFyeSBiZXR3ZWVuIGh5cGVyY2FsbHMpLiAqLwogICAgICAgICBI WVBFUkNBTExfQk9VTkNFX1NFVF9TSVpFKGluZm8sIG5yICogc2l6ZW9mKCppbmZvKSk7CiAgICAg ICAgIEhZUEVSQ0FMTF9CT1VOQ0VfU0VUX1NJWkUobmFtZSwgbnIgKiBucik7CkBAIC05MDgsOSAr OTA4LDkgQEAgaW50IHhjX3hzcGxpY2VfbGlzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdW5zaWduZWQg aW50IG1heCwgdW5zaWduZWQgaW50IHN0YXJ0LAogICAgICAgICBpZiAoIHJjICkKICAgICAgICAg ICAgIGJyZWFrOwogCi0gICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHN5c2N0bC51LnhzcGxp Y2UudS5saXN0LnN0YXR1cywgaW5mbyk7Ci0gICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHN5 c2N0bC51LnhzcGxpY2UudS5saXN0Lm5hbWUsIG5hbWUpOwotICAgICAgICBzZXRfeGVuX2d1ZXN0 X2hhbmRsZShzeXNjdGwudS54c3BsaWNlLnUubGlzdC5sZW4sIGxlbik7CisgICAgICAgIHNldF94 ZW5fZ3Vlc3RfaGFuZGxlKHN5c2N0bC51LmxpdmVwYXRjaC51Lmxpc3Quc3RhdHVzLCBpbmZvKTsK KyAgICAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoc3lzY3RsLnUubGl2ZXBhdGNoLnUubGlzdC5u YW1lLCBuYW1lKTsKKyAgICAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoc3lzY3RsLnUubGl2ZXBh dGNoLnUubGlzdC5sZW4sIGxlbik7CiAKICAgICAgICAgcmMgPSBkb19zeXNjdGwoeGNoLCAmc3lz Y3RsKTsKICAgICAgICAgLyoKQEAgLTkzMyw5ICs5MzMsOSBAQCBpbnQgeGNfeHNwbGljZV9saXN0 KHhjX2ludGVyZmFjZSAqeGNoLCB1bnNpZ25lZCBpbnQgbWF4LCB1bnNpZ25lZCBpbnQgc3RhcnQs CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAoICF2ZXJzaW9uICkKLSAgICAgICAg ICAgIHZlcnNpb24gPSBzeXNjdGwudS54c3BsaWNlLnUubGlzdC52ZXJzaW9uOworICAgICAgICAg ICAgdmVyc2lvbiA9IHN5c2N0bC51LmxpdmVwYXRjaC51Lmxpc3QudmVyc2lvbjsKIAotICAgICAg ICBpZiAoIHN5c2N0bC51LnhzcGxpY2UudS5saXN0LnZlcnNpb24gIT0gdmVyc2lvbiApCisgICAg ICAgIGlmICggc3lzY3RsLnUubGl2ZXBhdGNoLnUubGlzdC52ZXJzaW9uICE9IHZlcnNpb24gKQog ICAgICAgICB7CiAgICAgICAgICAgICAvKiBXZSBjb3VsZCBtYWtlIHRoaXMgY29uZmlndXJhYmxl IGFzIHBhcmFtZXRlcj8gKi8KICAgICAgICAgICAgIGlmICggcmV0cmllcysrID4gMyApCkBAIC05 NDUsNyArOTQ1LDcgQEAgaW50IHhjX3hzcGxpY2VfbGlzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdW5z aWduZWQgaW50IG1heCwgdW5zaWduZWQgaW50IHN0YXJ0LAogICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKmRvbmUgPSAwOyAvKiBSZXRyeSBmcm9tIHNj cmF0Y2guICovCi0gICAgICAgICAgICB2ZXJzaW9uID0gc3lzY3RsLnUueHNwbGljZS51Lmxpc3Qu dmVyc2lvbjsKKyAgICAgICAgICAgIHZlcnNpb24gPSBzeXNjdGwudS5saXZlcGF0Y2gudS5saXN0 LnZlcnNpb247CiAgICAgICAgICAgICBhZGp1c3QgPSAxOyAvKiBBbmQgbWFrZSBzdXJlIHdlIGNv bnRpbnVlIGluIHRoZSBsb29wLiAqLwogICAgICAgICAgICAgLyogTm8gbWVtb3J5IGxlYWtzLiAq LwogICAgICAgICAgICAgeGNfaHlwZXJjYWxsX2JvdW5jZV9wb3N0KHhjaCwgaW5mbyk7CkBAIC05 NjEsNyArOTYxLDcgQEAgaW50IHhjX3hzcGxpY2VfbGlzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdW5z aWduZWQgaW50IG1heCwgdW5zaWduZWQgaW50IHN0YXJ0LAogICAgICAgICAgICAgcmMgPSAtMTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICpsZWZ0ID0gc3lzY3RsLnUu eHNwbGljZS51Lmxpc3QubnI7IC8qIFRvdGFsIHJlbWFpbmluZyBjb3VudC4gKi8KKyAgICAgICAg KmxlZnQgPSBzeXNjdGwudS5saXZlcGF0Y2gudS5saXN0Lm5yOyAvKiBUb3RhbCByZW1haW5pbmcg Y291bnQuICovCiAgICAgICAgIC8qIENvcHkgb25seSB1cCAncmMnIG9mIGRhdGEnIC0gd2UgY291 bGQgYWRkICdtaW4ocmMsbnIpIGlmIGRlc2lyZWQuICovCiAgICAgICAgIEhZUEVSQ0FMTF9CT1VO Q0VfU0VUX1NJWkUoaW5mbywgKHJjICogc2l6ZW9mKCppbmZvKSkpOwogICAgICAgICBIWVBFUkNB TExfQk9VTkNFX1NFVF9TSVpFKG5hbWUsIChyYyAqIHN6KSk7CkBAIC05NzMsNyArOTczLDcgQEAg aW50IHhjX3hzcGxpY2VfbGlzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdW5zaWduZWQgaW50IG1heCwg dW5zaWduZWQgaW50IHN0YXJ0LAogICAgICAgICAvKiBBbmQgdXBkYXRlIGhvdyBtYW55IGVsZW1l bnRzIG9mIGluZm8gd2UgaGF2ZSBjb3BpZWQgaW50by4gKi8KICAgICAgICAgKmRvbmUgKz0gcmM7 CiAgICAgICAgIC8qIFVwZGF0ZSBpZHguICovCi0gICAgICAgIHN5c2N0bC51LnhzcGxpY2UudS5s aXN0LmlkeCA9ICpkb25lOworICAgICAgICBzeXNjdGwudS5saXZlcGF0Y2gudS5saXN0LmlkeCA9 ICpkb25lOwogICAgIH0gd2hpbGUgKCBhZGp1c3QgfHwgKCpkb25lIDwgbWF4ICYmICpsZWZ0ICE9 IDApICk7CiAKICAgICBpZiAoIHJjIDwgMCApCkBAIC05ODYsMjAgKzk4NiwyMCBAQCBpbnQgeGNf eHNwbGljZV9saXN0KHhjX2ludGVyZmFjZSAqeGNoLCB1bnNpZ25lZCBpbnQgbWF4LCB1bnNpZ25l ZCBpbnQgc3RhcnQsCiAgICAgcmV0dXJuIHJjID4gMCA/IDAgOiByYzsKIH0KIAotc3RhdGljIGlu dCBfeGNfeHNwbGljZV9hY3Rpb24oeGNfaW50ZXJmYWNlICp4Y2gsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IGFjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHRpbWVvdXQpCitzdGF0aWMgaW50IF94Y19saXZlcGF0Y2hfYWN0aW9uKHhjX2ludGVyZmFj ZSAqeGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYWN0aW9uLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lb3V0KQogewogICAgIGludCBy YzsKICAgICBERUNMQVJFX1NZU0NUTDsKICAgICAvKiBUaGUgc2l6ZSBpcyBmaWd1cmVkIG91dCB3 aGVuIHdlIHN0cmxlbihuYW1lKSAqLwogICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRShuYW1l LCAwLCBYQ19IWVBFUkNBTExfQlVGRkVSX0JPVU5DRV9JTik7Ci0gICAgeGVuX3hzcGxpY2VfbmFt ZV90IGRlZl9uYW1lID0geyAucGFkID0geyAwLCAwLCAwIH0gfTsKKyAgICB4ZW5fbGl2ZXBhdGNo X25hbWVfdCBkZWZfbmFtZSA9IHsgLnBhZCA9IHsgMCwgMCwgMCB9IH07CiAKICAgICBkZWZfbmFt ZS5zaXplID0gc3RybGVuKG5hbWUpICsgMTsKIAotICAgIGlmICggZGVmX25hbWUuc2l6ZSA+IFhF Tl9YU1BMSUNFX05BTUVfU0laRSApCisgICAgaWYgKCBkZWZfbmFtZS5zaXplID4gWEVOX0xJVkVQ QVRDSF9OQU1FX1NJWkUgKQogICAgIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAg IHJldHVybiAtMTsKQEAgLTEwMTAsMTQgKzEwMTAsMTQgQEAgc3RhdGljIGludCBfeGNfeHNwbGlj ZV9hY3Rpb24oeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgaWYgKCB4Y19oeXBlcmNhbGxfYm91bmNl X3ByZSh4Y2gsIG5hbWUpICkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgc3lzY3RsLmNtZCA9 IFhFTl9TWVNDVExfeHNwbGljZV9vcDsKLSAgICBzeXNjdGwudS54c3BsaWNlLmNtZCA9IFhFTl9T WVNDVExfWFNQTElDRV9BQ1RJT047Ci0gICAgc3lzY3RsLnUueHNwbGljZS5wYWQgPSAwOwotICAg IHN5c2N0bC51LnhzcGxpY2UudS5hY3Rpb24uY21kID0gYWN0aW9uOwotICAgIHN5c2N0bC51Lnhz cGxpY2UudS5hY3Rpb24udGltZW91dCA9IHRpbWVvdXQ7CisgICAgc3lzY3RsLmNtZCA9IFhFTl9T WVNDVExfbGl2ZXBhdGNoX29wOworICAgIHN5c2N0bC51LmxpdmVwYXRjaC5jbWQgPSBYRU5fU1lT Q1RMX0xJVkVQQVRDSF9BQ1RJT047CisgICAgc3lzY3RsLnUubGl2ZXBhdGNoLnBhZCA9IDA7Cisg ICAgc3lzY3RsLnUubGl2ZXBhdGNoLnUuYWN0aW9uLmNtZCA9IGFjdGlvbjsKKyAgICBzeXNjdGwu dS5saXZlcGF0Y2gudS5hY3Rpb24udGltZW91dCA9IHRpbWVvdXQ7CiAKLSAgICBzeXNjdGwudS54 c3BsaWNlLnUuYWN0aW9uLm5hbWUgPSBkZWZfbmFtZTsKLSAgICBzZXRfeGVuX2d1ZXN0X2hhbmRs ZShzeXNjdGwudS54c3BsaWNlLnUuYWN0aW9uLm5hbWUubmFtZSwgbmFtZSk7CisgICAgc3lzY3Rs LnUubGl2ZXBhdGNoLnUuYWN0aW9uLm5hbWUgPSBkZWZfbmFtZTsKKyAgICBzZXRfeGVuX2d1ZXN0 X2hhbmRsZShzeXNjdGwudS5saXZlcGF0Y2gudS5hY3Rpb24ubmFtZS5uYW1lLCBuYW1lKTsKIAog ICAgIHJjID0gZG9fc3lzY3RsKHhjaCwgJnN5c2N0bCk7CiAKQEAgLTEwMjYsMjQgKzEwMjYsMjQg QEAgc3RhdGljIGludCBfeGNfeHNwbGljZV9hY3Rpb24oeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAg cmV0dXJuIHJjOwogfQogCi1pbnQgeGNfeHNwbGljZV9hcHBseSh4Y19pbnRlcmZhY2UgKnhjaCwg Y2hhciAqbmFtZSwgdWludDMyX3QgdGltZW91dCkKK2ludCB4Y19saXZlcGF0Y2hfYXBwbHkoeGNf aW50ZXJmYWNlICp4Y2gsIGNoYXIgKm5hbWUsIHVpbnQzMl90IHRpbWVvdXQpCiB7Ci0gICAgcmV0 dXJuIF94Y194c3BsaWNlX2FjdGlvbih4Y2gsIG5hbWUsIFhTUExJQ0VfQUNUSU9OX0FQUExZLCB0 aW1lb3V0KTsKKyAgICByZXR1cm4gX3hjX2xpdmVwYXRjaF9hY3Rpb24oeGNoLCBuYW1lLCBMSVZF UEFUQ0hfQUNUSU9OX0FQUExZLCB0aW1lb3V0KTsKIH0KIAotaW50IHhjX3hzcGxpY2VfcmV2ZXJ0 KHhjX2ludGVyZmFjZSAqeGNoLCBjaGFyICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KQoraW50IHhj X2xpdmVwYXRjaF9yZXZlcnQoeGNfaW50ZXJmYWNlICp4Y2gsIGNoYXIgKm5hbWUsIHVpbnQzMl90 IHRpbWVvdXQpCiB7Ci0gICAgcmV0dXJuIF94Y194c3BsaWNlX2FjdGlvbih4Y2gsIG5hbWUsIFhT UExJQ0VfQUNUSU9OX1JFVkVSVCwgdGltZW91dCk7CisgICAgcmV0dXJuIF94Y19saXZlcGF0Y2hf YWN0aW9uKHhjaCwgbmFtZSwgTElWRVBBVENIX0FDVElPTl9SRVZFUlQsIHRpbWVvdXQpOwogfQog Ci1pbnQgeGNfeHNwbGljZV91bmxvYWQoeGNfaW50ZXJmYWNlICp4Y2gsIGNoYXIgKm5hbWUsIHVp bnQzMl90IHRpbWVvdXQpCitpbnQgeGNfbGl2ZXBhdGNoX3VubG9hZCh4Y19pbnRlcmZhY2UgKnhj aCwgY2hhciAqbmFtZSwgdWludDMyX3QgdGltZW91dCkKIHsKLSAgICByZXR1cm4gX3hjX3hzcGxp Y2VfYWN0aW9uKHhjaCwgbmFtZSwgWFNQTElDRV9BQ1RJT05fVU5MT0FELCB0aW1lb3V0KTsKKyAg ICByZXR1cm4gX3hjX2xpdmVwYXRjaF9hY3Rpb24oeGNoLCBuYW1lLCBMSVZFUEFUQ0hfQUNUSU9O X1VOTE9BRCwgdGltZW91dCk7CiB9CiAKLWludCB4Y194c3BsaWNlX3JlcGxhY2UoeGNfaW50ZXJm YWNlICp4Y2gsIGNoYXIgKm5hbWUsIHVpbnQzMl90IHRpbWVvdXQpCitpbnQgeGNfbGl2ZXBhdGNo X3JlcGxhY2UoeGNfaW50ZXJmYWNlICp4Y2gsIGNoYXIgKm5hbWUsIHVpbnQzMl90IHRpbWVvdXQp CiB7Ci0gICAgcmV0dXJuIF94Y194c3BsaWNlX2FjdGlvbih4Y2gsIG5hbWUsIFhTUExJQ0VfQUNU SU9OX1JFUExBQ0UsIHRpbWVvdXQpOworICAgIHJldHVybiBfeGNfbGl2ZXBhdGNoX2FjdGlvbih4 Y2gsIG5hbWUsIExJVkVQQVRDSF9BQ1RJT05fUkVQTEFDRSwgdGltZW91dCk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS90b29scy9taXNjL01ha2VmaWxlIGIvdG9vbHMvbWlzYy9NYWtlZmlsZQppbmRl eCAzYTVmODQyLi5jZWUyYjk5IDEwMDY0NAotLS0gYS90b29scy9taXNjL01ha2VmaWxlCisrKyBi L3Rvb2xzL21pc2MvTWFrZWZpbGUKQEAgLTMyLDcgKzMyLDcgQEAgSU5TVEFMTF9TQklOICAgICAg ICAgICAgICAgICAgICs9IHhlbmxvY2twcm9mCiBJTlNUQUxMX1NCSU4gICAgICAgICAgICAgICAg ICAgKz0geGVucGVyZgogSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9IHhlbnBtCiBJ TlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAgKz0geGVud2F0Y2hkb2dkCi1JTlNUQUxMX1NC SU4gICAgICAgICAgICAgICAgICAgKz0geGVuLXhzcGxpY2UKK0lOU1RBTExfU0JJTiAgICAgICAg ICAgICAgICAgICArPSB4ZW4tbGl2ZXBhdGNoCiBJTlNUQUxMX1NCSU4gKz0gJChJTlNUQUxMX1NC SU4teSkKIAogIyBFdmVyeXRoaW5nIHRvIGJlIGluc3RhbGxlZCBpbiBhIHByaXZhdGUgYmluLwpA QCAtMTA0LDcgKzEwNCw3IEBAIHhlbi1tZm5kdW1wOiB4ZW4tbWZuZHVtcC5vCiB4ZW53YXRjaGRv Z2Q6IHhlbndhdGNoZG9nZC5vCiAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19s aWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZMQUdTKQogCi14ZW4teHNwbGljZTogeGVuLXhzcGxpY2Uu bworeGVuLWxpdmVwYXRjaDogeGVuLWxpdmVwYXRjaC5vCiAJJChDQykgJChMREZMQUdTKSAtbyAk QCAkPCAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW4tbG93bWVt ZDogeGVuLWxvd21lbWQubwpkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy94ZW4teHNwbGljZS5jIGIv dG9vbHMvbWlzYy94ZW4tbGl2ZXBhdGNoLmMKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZy b20gdG9vbHMvbWlzYy94ZW4teHNwbGljZS5jCnJlbmFtZSB0byB0b29scy9taXNjL3hlbi1saXZl cGF0Y2guYwppbmRleCBkZGFhMDc5Li4yOGYzMzlhIDEwMDY0NAotLS0gYS90b29scy9taXNjL3hl bi14c3BsaWNlLmMKKysrIGIvdG9vbHMvbWlzYy94ZW4tbGl2ZXBhdGNoLmMKQEAgLTIwLDggKzIw LDggQEAgc3RhdGljIHhjX2ludGVyZmFjZSAqeGNoOwogdm9pZCBzaG93X2hlbHAodm9pZCkKIHsK ICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICJ4ZW4teHNwbGljZTogWHNwbGljZSB0 ZXN0IHRvb2xcbiIKLSAgICAgICAgICAgICJVc2FnZTogeGVuLXhzcGxpY2UgPGNvbW1hbmQ+IFth cmdzXVxuIgorICAgICAgICAgICAgInhlbi1saXZlcGF0Y2g6IGxpdmUgcGF0Y2hpbmcgdGVzdCB0 b29sXG4iCisgICAgICAgICAgICAiVXNhZ2U6IHhlbi1saXZlcGF0Y2ggPGNvbW1hbmQ+IFthcmdz XVxuIgogICAgICAgICAgICAgIiA8bmFtZT4gQW4gdW5pcXVlIG5hbWUgb2YgcGF5bG9hZC4gVXAg dG8gJWQgY2hhcmFjdGVycy5cbiIKICAgICAgICAgICAgICJDb21tYW5kczpcbiIKICAgICAgICAg ICAgICIgIGhlbHAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHBcbiIKQEAgLTMz LDcgKzMzLDcgQEAgdm9pZCBzaG93X2hlbHAodm9pZCkKICAgICAgICAgICAgICIgIHVubG9hZCA8 bmFtZT4gICAgICAgICAgdW5sb2FkIG5hbWUgPG5hbWU+IHBhdGNoLlxuIgogICAgICAgICAgICAg IiAgbG9hZCAgPGZpbGU+ICAgICAgICAgICB1cGxvYWQgYW5kIGFwcGx5IDxmaWxlPi5cbiIKICAg ICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBpcyB0aGUgPGZpbGU+IG5h bWVcbiIsCi0gICAgICAgICAgICBYRU5fWFNQTElDRV9OQU1FX1NJWkUpOworICAgICAgICAgICAg WEVOX0xJVkVQQVRDSF9OQU1FX1NJWkUpOwogfQogCiAvKiB3cmFwcGVyIGZ1bmN0aW9uICovCkBA IC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgaGVscF9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAKIHN0YXRpYyBjb25zdCBjaGFyICpzdGF0ZTJzdHIodW5zaWduZWQgaW50IHN0YXRlKQog ewotI2RlZmluZSBTVEFURSh4KSBbWFNQTElDRV9TVEFURV8jI3hdID0gI3gKKyNkZWZpbmUgU1RB VEUoeCkgW0xJVkVQQVRDSF9TVEFURV8jI3hdID0gI3gKICAgICBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgbmFtZXNbXSA9IHsKICAgICAgICAgICAgIFNUQVRFKENIRUNLRUQpLAogICAgICAgICAg ICAgU1RBVEUoQVBQTElFRCksCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpz dGF0ZTJzdHIodW5zaWduZWQgaW50IHN0YXRlKQogc3RhdGljIGludCBsaXN0X2Z1bmMoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgICB1bnNpZ25lZCBpbnQgaWR4LCBkb25lLCBsZWZ0LCBp OwotICAgIHhlbl94c3BsaWNlX3N0YXR1c190ICppbmZvID0gTlVMTDsKKyAgICB4ZW5fbGl2ZXBh dGNoX3N0YXR1c190ICppbmZvID0gTlVMTDsKICAgICBjaGFyICpuYW1lID0gTlVMTDsKICAgICB1 aW50MzJfdCAqbGVuID0gTlVMTDsKICAgICBpbnQgcmMgPSBFTk9NRU07CkBAIC03OCw3ICs3OCw3 IEBAIHN0YXRpYyBpbnQgbGlzdF9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaW5m byA9IG1hbGxvYyhzaXplb2YoKmluZm8pICogTUFYX0xFTik7CiAgICAgaWYgKCAhaW5mbyApCiAg ICAgICAgIHJldHVybiByYzsKLSAgICBuYW1lID0gbWFsbG9jKHNpemVvZigqbmFtZSkgKiBYRU5f WFNQTElDRV9OQU1FX1NJWkUgKiBNQVhfTEVOKTsKKyAgICBuYW1lID0gbWFsbG9jKHNpemVvZigq bmFtZSkgKiBYRU5fTElWRVBBVENIX05BTUVfU0laRSAqIE1BWF9MRU4pOwogICAgIGlmICggIW5h bWUgKQogICAgIHsKICAgICAgICAgZnJlZShpbmZvKTsKQEAgLTk3LDkgKzk3LDkgQEAgc3RhdGlj IGludCBsaXN0X2Z1bmMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgZG9uZSA9IDA7 CiAgICAgICAgIC8qIFRoZSBtZW1zZXQgaXMgZG9uZSB0byBjYXRjaCBlcnJvcnMuICovCiAgICAg ICAgIG1lbXNldChpbmZvLCAnQScsIHNpemVvZigqaW5mbykgKiBNQVhfTEVOKTsKLSAgICAgICAg bWVtc2V0KG5hbWUsICdCJywgc2l6ZW9mKCpuYW1lKSAqIE1BWF9MRU4gKiBYRU5fWFNQTElDRV9O QU1FX1NJWkUpOworICAgICAgICBtZW1zZXQobmFtZSwgJ0InLCBzaXplb2YoKm5hbWUpICogTUFY X0xFTiAqIFhFTl9MSVZFUEFUQ0hfTkFNRV9TSVpFKTsKICAgICAgICAgbWVtc2V0KGxlbiwgJ0Mn LCBzaXplb2YoKmxlbikgKiBNQVhfTEVOKTsKLSAgICAgICAgcmMgPSB4Y194c3BsaWNlX2xpc3Qo eGNoLCBNQVhfTEVOLCBpZHgsIGluZm8sIG5hbWUsIGxlbiwgJmRvbmUsICZsZWZ0KTsKKyAgICAg ICAgcmMgPSB4Y19saXZlcGF0Y2hfbGlzdCh4Y2gsIE1BWF9MRU4sIGlkeCwgaW5mbywgbmFtZSwg bGVuLCAmZG9uZSwgJmxlZnQpOwogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgewogICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbGlzdCAlZC8lZDogJWQoJXMpIVxuIiwK QEAgLTExMyw4ICsxMTMsOCBAQCBzdGF0aWMgaW50IGxpc3RfZnVuYyhpbnQgYXJnYywgY2hhciAq YXJndltdKQogICAgICAgICAgICAgY2hhciAqc3RyOwogCiAgICAgICAgICAgICBzeiA9IGxlbltp XTsKLSAgICAgICAgICAgIHN0ciA9IG5hbWUgKyAoaSAqIFhFTl9YU1BMSUNFX05BTUVfU0laRSk7 Ci0gICAgICAgICAgICBmb3IgKCBqID0gc3o7IGogPCBYRU5fWFNQTElDRV9OQU1FX1NJWkU7IGor KyApCisgICAgICAgICAgICBzdHIgPSBuYW1lICsgKGkgKiBYRU5fTElWRVBBVENIX05BTUVfU0la RSk7CisgICAgICAgICAgICBmb3IgKCBqID0gc3o7IGogPCBYRU5fTElWRVBBVENIX05BTUVfU0la RTsgaisrICkKICAgICAgICAgICAgICAgICBzdHJbal0gPSAnXDAnOwogCiAgICAgICAgICAgICBw cmludGYoIiUtNDBzfCAlcyIsIHN0ciwgc3RhdGUyc3RyKGluZm9baV0uc3RhdGUpKTsKQEAgLTEz NiwxNCArMTM2LDE0IEBAIHN0YXRpYyBpbnQgbGlzdF9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiBzdGF0aWMgaW50IGdldF9uYW1lKGludCBhcmdjLCBjaGFyICphcmd2W10sIGNoYXIgKm5h bWUpCiB7CiAgICAgc3NpemVfdCBsZW4gPSBzdHJsZW4oYXJndlswXSk7Ci0gICAgaWYgKCBsZW4g PiBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKQorICAgIGlmICggbGVuID4gWEVOX0xJVkVQQVRDSF9O QU1FX1NJWkUgKQogICAgIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJJRCBNVVNUIGJlICVk IGNoYXJhY3RlcnMhXG4iLCBYRU5fWFNQTElDRV9OQU1FX1NJWkUpOworICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIklEIE1VU1QgYmUgJWQgY2hhcmFjdGVycyFcbiIsIFhFTl9MSVZFUEFUQ0hfTkFN RV9TSVpFKTsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBlcnJubzsK ICAgICB9CiAgICAgLyogRG9uJ3Qgd2FudCBhbnkgZnVubnkgc3RyaW5ncyBmcm9tIHRoZSBzdGFj ay4gKi8KLSAgICBtZW1zZXQobmFtZSwgMCwgWEVOX1hTUExJQ0VfTkFNRV9TSVpFKTsKKyAgICBt ZW1zZXQobmFtZSwgMCwgWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkUpOwogICAgIHN0cm5jcHkobmFt ZSwgYXJndlswXSwgbGVuKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBz dGF0aWMgaW50IGdldF9uYW1lKGludCBhcmdjLCBjaGFyICphcmd2W10sIGNoYXIgKm5hbWUpCiBz dGF0aWMgaW50IHVwbG9hZF9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAgICAgY2hh ciAqZmlsZW5hbWU7Ci0gICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07CisgICAg Y2hhciBuYW1lW1hFTl9MSVZFUEFUQ0hfTkFNRV9TSVpFXTsKICAgICBpbnQgZmQgPSAwLCByYzsK ICAgICBzdHJ1Y3Qgc3RhdCBidWY7CiAgICAgdW5zaWduZWQgY2hhciAqZmJ1ZjsKQEAgLTE5Miw3 ICsxOTIsNyBAQCBzdGF0aWMgaW50IHVwbG9hZF9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAgICAgICAgIHJldHVybiBlcnJubzsKICAgICB9CiAgICAgcHJpbnRmKCJVcGxvYWRpbmcgJXMg KCV6dSBieXRlcylcbiIsIGZpbGVuYW1lLCBsZW4pOwotICAgIHJjID0geGNfeHNwbGljZV91cGxv YWQoeGNoLCBuYW1lLCBmYnVmLCBsZW4pOworICAgIHJjID0geGNfbGl2ZXBhdGNoX3VwbG9hZCh4 Y2gsIG5hbWUsIGZidWYsIGxlbik7CiAgICAgaWYgKCByYyApCiAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiVXBsb2FkIGZhaWxlZDogJXMsIGVycm9yOiAlZCglcykhXG4iLAogICAgICAgICAgICAg ICAgIGZpbGVuYW1lLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKQEAgLTIyNCwyNSArMjI0LDI1 IEBAIHN0cnVjdCB7CiAgICAgaW50ICgqZnVuY3Rpb24pKHhjX2ludGVyZmFjZSAqeGNoLCBjaGFy ICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KTsKICAgICB1bnNpZ25lZCBpbnQgZXhlY3V0ZWQ7IC8q IEhhcyB0aGUgZnVuY3Rpb24gYmVlbiBjYWxsZWQ/LiAqLwogfSBhY3Rpb25fb3B0aW9uc1tdID0g ewotICAgIHsgICAuYWxsb3cgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQsCi0gICAgICAgIC5leHBl Y3RlZCA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRCwKKyAgICB7ICAgLmFsbG93ID0gTElWRVBBVENI X1NUQVRFX0NIRUNLRUQsCisgICAgICAgIC5leHBlY3RlZCA9IExJVkVQQVRDSF9TVEFURV9BUFBM SUVELAogICAgICAgICAubmFtZSA9ICJhcHBseSIsCi0gICAgICAgIC5mdW5jdGlvbiA9IHhjX3hz cGxpY2VfYXBwbHksCisgICAgICAgIC5mdW5jdGlvbiA9IHhjX2xpdmVwYXRjaF9hcHBseSwKICAg ICB9LAotICAgIHsgICAuYWxsb3cgPSBYU1BMSUNFX1NUQVRFX0FQUExJRUQsCi0gICAgICAgIC5l eHBlY3RlZCA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCwKKyAgICB7ICAgLmFsbG93ID0gTElWRVBB VENIX1NUQVRFX0FQUExJRUQsCisgICAgICAgIC5leHBlY3RlZCA9IExJVkVQQVRDSF9TVEFURV9D SEVDS0VELAogICAgICAgICAubmFtZSA9ICJyZXZlcnQiLAotICAgICAgICAuZnVuY3Rpb24gPSB4 Y194c3BsaWNlX3JldmVydCwKKyAgICAgICAgLmZ1bmN0aW9uID0geGNfbGl2ZXBhdGNoX3JldmVy dCwKICAgICB9LAotICAgIHsgICAuYWxsb3cgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQsCisgICAg eyAgIC5hbGxvdyA9IExJVkVQQVRDSF9TVEFURV9DSEVDS0VELAogICAgICAgICAuZXhwZWN0ZWQg PSAtWEVOX0VOT0VOVCwKICAgICAgICAgLm5hbWUgPSAidW5sb2FkIiwKLSAgICAgICAgLmZ1bmN0 aW9uID0geGNfeHNwbGljZV91bmxvYWQsCisgICAgICAgIC5mdW5jdGlvbiA9IHhjX2xpdmVwYXRj aF91bmxvYWQsCiAgICAgfSwKLSAgICB7ICAgLmFsbG93ID0gWFNQTElDRV9TVEFURV9DSEVDS0VE LAotICAgICAgICAuZXhwZWN0ZWQgPSBYU1BMSUNFX1NUQVRFX0FQUExJRUQsCisgICAgeyAgIC5h bGxvdyA9IExJVkVQQVRDSF9TVEFURV9DSEVDS0VELAorICAgICAgICAuZXhwZWN0ZWQgPSBMSVZF UEFUQ0hfU1RBVEVfQVBQTElFRCwKICAgICAgICAgLm5hbWUgPSAicmVwbGFjZSIsCi0gICAgICAg IC5mdW5jdGlvbiA9IHhjX3hzcGxpY2VfcmVwbGFjZSwKKyAgICAgICAgLmZ1bmN0aW9uID0geGNf bGl2ZXBhdGNoX3JlcGxhY2UsCiAgICAgfSwKIH07CiAKQEAgLTI1Myw5ICsyNTMsOSBAQCBzdHJ1 Y3QgewogCiBpbnQgYWN0aW9uX2Z1bmMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgdW5zaWduZWQg aW50IGlkeCkKIHsKLSAgICBjaGFyIG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsKKyAgICBj aGFyIG5hbWVbWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkVdOwogICAgIGludCByYywgb3JpZ2luYWxf c3RhdGU7Ci0gICAgeGVuX3hzcGxpY2Vfc3RhdHVzX3Qgc3RhdHVzOworICAgIHhlbl9saXZlcGF0 Y2hfc3RhdHVzX3Qgc3RhdHVzOwogICAgIHVuc2lnbmVkIGludCByZXRyeSA9IDA7CiAKICAgICBp ZiAoIGFyZ2MgIT0gMSApCkBAIC0yNzEsNyArMjcxLDcgQEAgaW50IGFjdGlvbl9mdW5jKGludCBh cmdjLCBjaGFyICphcmd2W10sIHVuc2lnbmVkIGludCBpZHgpCiAgICAgICAgIHJldHVybiBFSU5W QUw7CiAKICAgICAvKiBDaGVjayBpbml0aWFsIHN0YXR1cy4gKi8KLSAgICByYyA9IHhjX3hzcGxp Y2VfZ2V0KHhjaCwgbmFtZSwgJnN0YXR1cyk7CisgICAgcmMgPSB4Y19saXZlcGF0Y2hfZ2V0KHhj aCwgbmFtZSwgJnN0YXR1cyk7CiAgICAgaWYgKCByYyApCiAgICAgewogICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzIGZhaWxlZCB0byBnZXQgc3RhdHVzICVkKCVzKSFcbiIsCkBAIC0zMTIsNyAr MzEyLDcgQEAgaW50IGFjdGlvbl9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10sIHVuc2lnbmVk IGludCBpZHgpCiAKICAgICBvcmlnaW5hbF9zdGF0ZSA9IHN0YXR1cy5zdGF0ZTsKICAgICBkbyB7 Ci0gICAgICAgIHJjID0geGNfeHNwbGljZV9nZXQoeGNoLCBuYW1lLCAmc3RhdHVzKTsKKyAgICAg ICAgcmMgPSB4Y19saXZlcGF0Y2hfZ2V0KHhjaCwgbmFtZSwgJnN0YXR1cyk7CiAgICAgICAgIGlm ICggcmMgKQogICAgICAgICB7CiAgICAgICAgICAgICByYyA9IC1lcnJubzsKQEAgLTQzMiw3ICs0 MzIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICBpZiAoIGog PT0gQVJSQVlfU0laRShhY3Rpb25fb3B0aW9ucykgKQogICAgICAgICB7CiAgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIlVucmVjb2duaXNlZCBjb21tYW5kICclcycgLS0gdHJ5ICIKLSAgICAg ICAgICAgICAgICAgICAiJ3hlbi14c3BsaWNlIGhlbHAnXG4iLCBhcmd2WzFdKTsKKyAgICAgICAg ICAgICAgICAgICAiJ3hlbi1saXZlcGF0Y2ggaGVscCdcbiIsIGFyZ3ZbMV0pOwogICAgICAgICAg ICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCBlYWQwY2MwLi5hZjRk MGUxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJt L01ha2VmaWxlCkBAIC00MCw3ICs0MCw3IEBAIG9iai15ICs9IGRldmljZS5vCiBvYmoteSArPSBk ZWNvZGUubwogb2JqLXkgKz0gcHJvY2Vzc29yLm8KIG9iai15ICs9IHNtYy5vCi1vYmotJChDT05G SUdfWFNQTElDRSkgKz0geHNwbGljZS5vCitvYmotJChDT05GSUdfTElWRVBBVENIKSArPSBsaXZl cGF0Y2gubwogCiAjb2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMKc2ltaWxhcml0eSBpbmRleCAy OSUKcmVuYW1lIGZyb20geGVuL2FyY2gvYXJtL3hzcGxpY2UuYwpyZW5hbWUgdG8geGVuL2FyY2gv YXJtL2xpdmVwYXRjaC5jCmluZGV4IGRiMGRjZTIuLjUyN2Q2OTEgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL2FybS94c3BsaWNlLmMKKysrIGIveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jCkBAIC00LDY3 ICs0LDY3IEBACiAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4K ICNpbmNsdWRlIDx4ZW4vbGliLmg+Ci0jaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+Ci0jaW5j bHVkZSA8eGVuL3hzcGxpY2UuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoX2VsZi5oPgorI2lu Y2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KIAotdm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50 ZXIodm9pZCkKK3ZvaWQgYXJjaF9saXZlcGF0Y2hfZW50ZXIodm9pZCkKIHsKIH0KIAotdm9pZCBh cmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUodm9pZCkKK3ZvaWQgYXJjaF9saXZlcGF0Y2hfbGVh dmUodm9pZCkKIHsKIH0KIAotaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1 Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKQoraW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9m dW5jKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKIHsKICAgICByZXR1cm4gLUVO T1NZUzsKIH0KIAotdm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVjdCB4c3BsaWNlX3Bh dGNoX2Z1bmMgKmZ1bmMpCit2b2lkIGFyY2hfbGl2ZXBhdGNoX2FwcGx5X2ptcChzdHJ1Y3QgbGl2 ZXBhdGNoX2Z1bmMgKmZ1bmMpCiB7CiB9CiAKLXZvaWQgYXJjaF94c3BsaWNlX3JldmVydF9qbXAo Y29uc3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKK3ZvaWQgYXJjaF9saXZlcGF0 Y2hfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiB7CiB9CiAK LXZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpCit2b2lkIGFyY2hfbGl2ZXBhdGNo X3Bvc3RfYWN0aW9uKHZvaWQpCiB7CiB9CiAKLXZvaWQgYXJjaF94c3BsaWNlX21hc2sodm9pZCkK K3ZvaWQgYXJjaF9saXZlcGF0Y2hfbWFzayh2b2lkKQogewogfQogCi12b2lkIGFyY2hfeHNwbGlj ZV91bm1hc2sodm9pZCkKK3ZvaWQgYXJjaF9saXZlcGF0Y2hfdW5tYXNrKHZvaWQpCiB7CiB9CiAK LWludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZikKK2ludCBhcmNoX2xpdmVwYXRjaF92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZWxmICplbGYpCiB7CiAgICAgcmV0dXJuIC1FTk9TWVM7CiB9CiAKLWludCBhcmNoX3hzcGxpY2Vf cGVyZm9ybV9yZWwoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCitp bnQgYXJjaF9saXZlcGF0Y2hfcGVyZm9ybV9yZWwoc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Vs Zl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGxpdmVwYXRjaF9lbGZfc2VjICpyZWxhKQogewogICAgIHJldHVybiAtRU5PU1lTOwogfQogCi1p bnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMg KmJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjICpyZWxhKQoraW50IGFyY2hfbGl2ZXBhdGNoX3BlcmZvcm1fcmVsYShzdHJ1Y3Qg bGl2ZXBhdGNoX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqcmVsYSkKIHsKICAgICBy ZXR1cm4gLUVOT1NZUzsKIH0KIAotaW50IGFyY2hfeHNwbGljZV9zZWN1cmUoY29uc3Qgdm9pZCAq dmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUpCitpbnQgYXJjaF9saXZl cGF0Y2hfc2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFf dHlwZSB0eXBlKQogewogICAgIHJldHVybiAtRU5PU1lTOwogfQogCi12b2lkIF9faW5pdCBhcmNo X3hzcGxpY2VfaW5pdCh2b2lkKQordm9pZCBfX2luaXQgYXJjaF9saXZlcGF0Y2hfaW5pdCh2b2lk KQogewogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUgYi94ZW4vYXJjaC94 ODYvTWFrZWZpbGUKaW5kZXggNDY2NWE2OC4uYjM3N2M5MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAtNyw3ICs3LDcgQEAg c3ViZGlyLSQoQ09ORklHX1hFTk9QUk9GKSArPSBvcHJvZmlsZQogc3ViZGlyLXkgKz0geDg2XzY0 CiAKIGFsdGVybmF0aXZlLXkgOj0gYWx0ZXJuYXRpdmUuaW5pdC5vCi1hbHRlcm5hdGl2ZS0kKENP TkZJR19YU1BMSUNFKSA6PQorYWx0ZXJuYXRpdmUtJChDT05GSUdfTElWRVBBVENIKSA6PQogb2Jq LWJpbi15ICs9ICQoYWx0ZXJuYXRpdmUteSkKIG9iai15ICs9IGFwaWMubwogb2JqLXkgKz0gYml0 b3BzLm8KQEAgLTMwLDYgKzMwLDcgQEAgb2JqLXkgKz0gZmx1c2h0bGIubwogb2JqLXkgKz0gaTM4 Ny5vCiBvYmoteSArPSBpODI1OS5vCiBvYmoteSArPSBpb19hcGljLm8KK29iai0kKENPTkZJR19M SVZFUEFUQ0gpICs9IGFsdGVybmF0aXZlLm8gbGl2ZXBhdGNoLm8KIG9iai15ICs9IG1zaS5vCiBv YmoteSArPSBpb3BvcnRfZW11bGF0ZS5vCiBvYmoteSArPSBpcnEubwpAQCAtNjMsNyArNjQsNiBA QCBvYmoteSArPSB4ODZfZW11bGF0ZS5vCiBvYmoteSArPSB0Ym9vdC5vCiBvYmoteSArPSBocGV0 Lm8KIG9iai15ICs9IHZtX2V2ZW50Lm8KLW9iai0kKENPTkZJR19YU1BMSUNFKSArPSBhbHRlcm5h dGl2ZS5vIHhzcGxpY2Uubwogb2JqLXkgKz0geHN0YXRlLm8KIAogb2JqLSQoY3Jhc2hfZGVidWcp ICs9IGdkYnN0dWIubwpAQCAtODAsNyArODAsNyBAQCBlbHNlCiBub3Rlc19waGRycyA9CiBlbmRp ZgogCi1pZmRlZiBDT05GSUdfWFNQTElDRQoraWZkZWYgQ09ORklHX0xJVkVQQVRDSAogYWxsX3N5 bWJvbHMgPSAtLWFsbC1zeW1ib2xzCiBpZmRlZiBDT05GSUdfRkFTVF9TWU1CT0xfTE9PS1VQCiBh bGxfc3ltYm9scyA9IC0tYWxsLXN5bWJvbHMgLS1zb3J0LWJ5LW5hbWUKQEAgLTk1LDcgKzk1LDcg QEAgJChUQVJHRVQpOiAkKFRBUkdFVCktc3ltcyAkKGVmaS15KSBib290L21rZWxmMzIKIAogLlBI T05ZOiB0ZXN0cwogdGVzdHM6Ci0JJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVzLm1rIC1DIHRl c3QgeHNwbGljZQorCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAtQyB0ZXN0IGxpdmVw YXRjaAogCiBBTExfT0JKUyA6PSAkKEJBU0VESVIpL2FyY2gveDg2L2Jvb3QvYnVpbHRfaW4ubyAk KEJBU0VESVIpL2FyY2gveDg2L2VmaS9idWlsdF9pbi5vICQoQUxMX09CSlMpCiAKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jIGIveGVuL2FyY2gveDg2L2FsdGVybmF0aXZl LmMKaW5kZXggYzE4OGExNS4uYmU0MGIxMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2FsdGVy bmF0aXZlLmMKKysrIGIveGVuL2FyY2gveDg2L2FsdGVybmF0aXZlLmMKQEAgLTIyLDE0ICsyMiwx NCBAQAogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vdHJhcHMuaD4KICNp bmNsdWRlIDxhc20vbm1pLmg+Ci0jaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKyNpbmNsdWRlIDx4 ZW4vbGl2ZXBhdGNoLmg+CiAKICNkZWZpbmUgTUFYX1BBVENIX0xFTiAoMjU1LTEpCiAKIGV4dGVy biBzdHJ1Y3QgYWx0X2luc3RyIF9fYWx0X2luc3RydWN0aW9uc1tdLCBfX2FsdF9pbnN0cnVjdGlv bnNfZW5kW107CiAKICNpZmRlZiBLOF9OT1AxCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr OG5vcHNbXSBpbml0X29yX3hzcGxpY2VfY29uc3QgPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBrOG5vcHNbXSBpbml0X29yX2xpdmVwYXRjaF9jb25zdCA9IHsKICAgICBLOF9OT1AxLAog ICAgIEs4X05PUDIsCiAgICAgSzhfTk9QMywKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgazhub3BzW10gaW5pdF9vcl94c3BsaWNlX2NvbnN0ID0gewogICAgIEs4 X05PUDcsCiAgICAgSzhfTk9QOAogfTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICogY29u c3Qgazhfbm9wc1tBU01fTk9QX01BWCsxXSBpbml0X29yX3hzcGxpY2VfY29uc3RyZWwgPSB7Citz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqIGNvbnN0IGs4X25vcHNbQVNNX05PUF9NQVgrMV0g aW5pdF9vcl9saXZlcGF0Y2hfY29uc3RyZWwgPSB7CiAgICAgTlVMTCwKICAgICBrOG5vcHMsCiAg ICAgazhub3BzICsgMSwKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgKiBjb25zdCBrOF9ub3BzW0FTTV9OT1BfTUFYKzFdIGluaXRfb3JfeHNwbGljZV9jb25zdHIK ICNlbmRpZgogCiAjaWZkZWYgUDZfTk9QMQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcDZu b3BzW10gaW5pdF9vcl94c3BsaWNlX2NvbnN0ID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgcDZub3BzW10gaW5pdF9vcl9saXZlcGF0Y2hfY29uc3QgPSB7CiAgICAgUDZfTk9QMSwKICAg ICBQNl9OT1AyLAogICAgIFA2X05PUDMsCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHA2bm9wc1tdIGluaXRfb3JfeHNwbGljZV9jb25zdCA9IHsKICAgICBQNl9O T1A3LAogICAgIFA2X05PUDgKIH07Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqIGNvbnN0 IHA2X25vcHNbQVNNX05PUF9NQVgrMV0gaW5pdF9vcl94c3BsaWNlX2NvbnN0cmVsID0geworc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBjb25zdCBwNl9ub3BzW0FTTV9OT1BfTUFYKzFdIGlu aXRfb3JfbGl2ZXBhdGNoX2NvbnN0cmVsID0gewogICAgIE5VTEwsCiAgICAgcDZub3BzLAogICAg IHA2bm9wcyArIDEsCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy ICogY29uc3QgcDZfbm9wc1tBU01fTk9QX01BWCsxXSBpbml0X29yX3hzcGxpY2VfY29uc3RyCiB9 OwogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICogY29uc3QgKmlkZWFsX25v cHMgaW5pdF9vcl94c3BsaWNlX2RhdGEgPSBrOF9ub3BzOworc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgKiBjb25zdCAqaWRlYWxfbm9wcyBpbml0X29yX2xpdmVwYXRjaF9kYXRhID0gazhfbm9w czsKIAogc3RhdGljIGludCBfX2luaXQgbWFza19ubWlfY2FsbGJhY2soY29uc3Qgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MsIGludCBjcHUpCiB7CkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGlj IHZvaWQgX19pbml0IGFyY2hfaW5pdF9pZGVhbF9ub3BzKHZvaWQpCiB9CiAKIC8qIFVzZSB0aGlz IHRvIGFkZCBub3BzIHRvIGEgYnVmZmVyLCB0aGVuIHRleHRfcG9rZSB0aGUgd2hvbGUgYnVmZmVy LiAqLwotc3RhdGljIHZvaWQgaW5pdF9vcl94c3BsaWNlIGFkZF9ub3BzKHZvaWQgKmluc25zLCB1 bnNpZ25lZCBpbnQgbGVuKQorc3RhdGljIHZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYWRkX25vcHMo dm9pZCAqaW5zbnMsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAgICAgd2hpbGUgKCBsZW4gPiAwICkK ICAgICB7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIHZvaWQgaW5pdF9vcl94c3BsaWNlIGFk ZF9ub3BzKHZvaWQgKmluc25zLCB1bnNpZ25lZCBpbnQgbGVuKQogICogWW91IHNob3VsZCBydW4g dGhpcyB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQgb3Igb24gY29kZSB0aGF0IGlzIG5vdAogICog ZXhlY3V0aW5nLgogICovCi1zdGF0aWMgdm9pZCAqaW5pdF9vcl94c3BsaWNlIHRleHRfcG9rZSh2 b2lkICphZGRyLCBjb25zdCB2b2lkICpvcGNvZGUsIHNpemVfdCBsZW4pCitzdGF0aWMgdm9pZCAq aW5pdF9vcl9saXZlcGF0Y2ggdGV4dF9wb2tlKHZvaWQgKmFkZHIsIGNvbnN0IHZvaWQgKm9wY29k ZSwgc2l6ZV90IGxlbikKIHsKICAgICBtZW1jcHkoYWRkciwgb3Bjb2RlLCBsZW4pOwogICAgIHN5 bmNfY29yZSgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkICppbml0X29yX3hzcGxp Y2UgdGV4dF9wb2tlKHZvaWQgKmFkZHIsIGNvbnN0IHZvaWQgKm9wY29kZSwgc2l6ZV90IGxlCiAg KiBBUHMgaGF2ZSBsZXNzIGNhcGFiaWxpdGllcyB0aGFuIHRoZSBib290IHByb2Nlc3NvciBhcmUg bm90IGhhbmRsZWQuCiAgKiBUb3VnaC4gTWFrZSBzdXJlIHlvdSBkaXNhYmxlIHN1Y2ggZmVhdHVy ZXMgYnkgaGFuZC4KICAqLwotdm9pZCBpbml0X29yX3hzcGxpY2UgYXBwbHlfYWx0ZXJuYXRpdmVz X25vY2hlY2soc3RydWN0IGFsdF9pbnN0ciAqc3RhcnQsIHN0cnVjdCBhbHRfaW5zdHIgKmVuZCkK K3ZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYXBwbHlfYWx0ZXJuYXRpdmVzX25vY2hlY2soc3RydWN0 IGFsdF9pbnN0ciAqc3RhcnQsIHN0cnVjdCBhbHRfaW5zdHIgKmVuZCkKIHsKICAgICBzdHJ1Y3Qg YWx0X2luc3RyICphOwogICAgIHU4ICppbnN0ciwgKnJlcGxhY2VtZW50OwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IDVhZjJj YzUuLmYyZDdmNDcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4v YXJjaC94ODYvZG9tYWluLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx4ZW4vY3B1Lmg+ CiAjaW5jbHVkZSA8eGVuL3dhaXQuaD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+Ci0j aW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAjaW5j bHVkZSA8cHVibGljL3N5c2N0bC5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vaHZtX3ZjcHUuaD4K ICNpbmNsdWRlIDxhc20vcmVncy5oPgpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIGlk bGVfbG9vcCh2b2lkKQogICAgICAgICAgKiBXZSBNVVNUIGJlIGxhc3QgKG9yIGJlZm9yZSBwbV9p ZGxlKS4gT3RoZXJ3aXNlIGFmdGVyIHdlIGdldCB0aGUKICAgICAgICAgICogc29mdGlycSB3ZSB3 b3VsZCBleGVjdXRlIHBtX2lkbGUgKGFuZCBzbGVlcCkgYW5kIG5vdCBwYXRjaC4KICAgICAgICAg ICovCi0gICAgICAgIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsoKTsKKyAgICAgICAgY2hlY2tfZm9y X2xpdmVwYXRjaF93b3JrKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv ZXh0YWJsZS5jIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwppbmRleCAzNDlkZjc5Li43MDE0NDFh IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZXh0YWJsZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9l eHRhYmxlLmMKQEAgLTcsNyArNyw3IEBACiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CiAjaW5j bHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KLSNp bmNsdWRlIDx4ZW4veHNwbGljZS5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KIAogI2Rl ZmluZSBFWF9GSUVMRChwdHIsIGZpZWxkKSAoKHVuc2lnbmVkIGxvbmcpJihwdHIpLT5maWVsZCAr IChwdHIpLT5maWVsZCkKIApAQCAtMjEsNyArMjEsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgZXhfY29udChjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICp4KQogCXJl dHVybiBFWF9GSUVMRCh4LCBjb250KTsKIH0KIAotc3RhdGljIGludCBpbml0X29yX3hzcGxpY2Ug Y21wX2V4KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCitzdGF0aWMgaW50IGluaXRfb3Jf bGl2ZXBhdGNoIGNtcF9leChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewogCWNvbnN0 IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmwgPSBhLCAqciA9IGI7CiAJdW5zaWduZWQg bG9uZyBsaXAgPSBleF9hZGRyKGwpOwpAQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgaW50IGluaXRf b3JfeHNwbGljZSBjbXBfZXgoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIH0KIAogI2lm bmRlZiBzd2FwX2V4Ci1zdGF0aWMgdm9pZCBpbml0X29yX3hzcGxpY2Ugc3dhcF9leCh2b2lkICph LCB2b2lkICpiLCBpbnQgc2l6ZSkKK3N0YXRpYyB2b2lkIGluaXRfb3JfbGl2ZXBhdGNoIHN3YXBf ZXgodm9pZCAqYSwgdm9pZCAqYiwgaW50IHNpemUpCiB7CiAJc3RydWN0IGV4Y2VwdGlvbl90YWJs ZV9lbnRyeSAqbCA9IGEsICpyID0gYiwgdG1wOwogCWxvbmcgZGVsdGEgPSBiIC0gYTsKQEAgLTQ5 LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgaW5pdF9vcl94c3BsaWNlIHN3YXBfZXgodm9pZCAqYSwg dm9pZCAqYiwgaW50IHNpemUpCiB9CiAjZW5kaWYKIAotdm9pZCBpbml0X29yX3hzcGxpY2Ugc29y dF9leGNlcHRpb25fdGFibGUoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqc3RhcnQsCit2 b2lkIGluaXRfb3JfbGl2ZXBhdGNoIHNvcnRfZXhjZXB0aW9uX3RhYmxlKHN0cnVjdCBleGNlcHRp b25fdGFibGVfZW50cnkgKnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqc3RvcCkKIHsKICAgICBzb3J0KHN0 YXJ0LCBzdG9wIC0gc3RhcnQsCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveHNwbGljZS5jIGIv eGVuL2FyY2gveDg2L2xpdmVwYXRjaC5jCnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9t IHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMKcmVuYW1lIHRvIHhlbi9hcmNoL3g4Ni9saXZlcGF0Y2gu YwppbmRleCBmZjEzNDZjLi4wYWE3MTIyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveHNwbGlj ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9saXZlcGF0Y2guYwpAQCAtOCwyNiArOCwyNiBAQAogI2lu Y2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPHhlbi9wZm4uaD4KICNpbmNsdWRlIDx4ZW4vdm1h cC5oPgotI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgotI2luY2x1ZGUgPHhlbi94c3BsaWNl Lmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaF9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBh dGNoLmg+CiAKICNpbmNsdWRlIDxhc20vbm1pLmg+CiAKICNkZWZpbmUgUEFUQ0hfSU5TTl9TSVpF IDUKIAotdm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9pZCkKK3ZvaWQgYXJjaF9s aXZlcGF0Y2hfZW50ZXIodm9pZCkKIHsKICAgICAvKiBEaXNhYmxlIFdQIHRvIGFsbG93IGNoYW5n ZXMgdG8gcmVhZC1vbmx5IHBhZ2VzLiAqLwogICAgIHdyaXRlX2NyMChyZWFkX2NyMCgpICYgflg4 Nl9DUjBfV1ApOwogfQogCi12b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSh2b2lkKQor dm9pZCBhcmNoX2xpdmVwYXRjaF9sZWF2ZSh2b2lkKQogewogICAgIC8qIFJlaW5zdGF0ZSBXUC4g Ki8KICAgICB3cml0ZV9jcjAocmVhZF9jcjAoKSB8IFg4Nl9DUjBfV1ApOwogfQogCi1pbnQgYXJj aF94c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1 bmMpCitpbnQgYXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2Z1bmMoY29uc3Qgc3RydWN0IGxpdmVwYXRj aF9mdW5jICpmdW5jKQogewogICAgIC8qIE5vIE5PUCBwYXRjaGluZyB5ZXQuICovCiAgICAgaWYg KCAhZnVuYy0+bmV3X3NpemUgKQpAQCAtMzksNyArMzksNyBAQCBpbnQgYXJjaF94c3BsaWNlX3Zl cmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCiAgICAgcmV0 dXJuIDA7CiB9CiAKLXZvaWQgYXJjaF94c3BsaWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9w YXRjaF9mdW5jICpmdW5jKQordm9pZCBhcmNoX2xpdmVwYXRjaF9hcHBseV9qbXAoc3RydWN0IGxp dmVwYXRjaF9mdW5jICpmdW5jKQogewogICAgIGludDMyX3QgdmFsOwogICAgIHVpbnQ4X3QgKm9s ZF9wdHI7CkBAIC01NSwxMyArNTUsMTMgQEAgdm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCiAgICAgbWVtY3B5KG9sZF9wdHIsICZ2YWws IHNpemVvZih2YWwpKTsKIH0KIAotdm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBz dHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKQordm9pZCBhcmNoX2xpdmVwYXRjaF9yZXZl cnRfam1wKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKIHsKICAgICBtZW1jcHko ZnVuYy0+b2xkX2FkZHIsIGZ1bmMtPm9wYXF1ZSwgUEFUQ0hfSU5TTl9TSVpFKTsKIH0KIAogLyog U2VyaWFsaXNlIHRoZSBDUFUgcGlwZWxpbmUuICovCi12b2lkIGFyY2hfeHNwbGljZV9wb3N0X2Fj dGlvbih2b2lkKQordm9pZCBhcmNoX2xpdmVwYXRjaF9wb3N0X2FjdGlvbih2b2lkKQogewogICAg IGNwdWlkX2VheCgwKTsKIH0KQEAgLTc3LDE3ICs3NywxNyBAQCBzdGF0aWMgaW50IG1hc2tfbm1p X2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBpbnQgY3B1KQogICAg IHJldHVybiAxOwogfQogCi12b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpCit2b2lkIGFyY2hf bGl2ZXBhdGNoX21hc2sodm9pZCkKIHsKICAgICBzYXZlZF9ubWlfY2FsbGJhY2sgPSBzZXRfbm1p X2NhbGxiYWNrKG1hc2tfbm1pX2NhbGxiYWNrKTsKIH0KIAotdm9pZCBhcmNoX3hzcGxpY2VfdW5t YXNrKHZvaWQpCit2b2lkIGFyY2hfbGl2ZXBhdGNoX3VubWFzayh2b2lkKQogewogICAgIHNldF9u bWlfY2FsbGJhY2soc2F2ZWRfbm1pX2NhbGxiYWNrKTsKIH0KIAotaW50IGFyY2hfeHNwbGljZV92 ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoraW50IGFyY2hfbGl2ZXBh dGNoX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZikKIHsKIAogICAg IGNvbnN0IEVsZl9FaGRyICpoZHIgPSBlbGYtPmhkcjsKQEAgLTk2LDcgKzk2LDcgQEAgaW50IGFy Y2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAg ICAgICAgaGRyLT5lX2lkZW50W0VJX0NMQVNTXSAhPSBFTEZDTEFTUzY0IHx8CiAgICAgICAgICBo ZHItPmVfaWRlbnRbRUlfREFUQV0gIT0gRUxGREFUQTJMU0IgKQogICAgIHsKLSAgICAgICAgZHBy aW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogVW5zdXBwb3J0ZWQgRUxGIE1hY2hpbmUgdHlw ZSFcbiIsCisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogVW5zdXBw b3J0ZWQgRUxGIE1hY2hpbmUgdHlwZSFcbiIsCiAgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsK ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogICAgIH0KQEAgLTEwNCwxOCArMTA0LDE4IEBA IGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK2ludCBhcmNoX2xpdmVwYXRj aF9wZXJmb3JtX3JlbChzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqYmFzZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9z ZWMgKnJlbGEpCiB7Ci0gICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU0hUX1JF TCByZWxvY2F0aW9uIHVuc3VwcG9ydGVkXG4iLAorICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElW RVBBVENIICIlczogU0hUX1JFTCByZWxvY2F0aW9uIHVuc3VwcG9ydGVkXG4iLAogICAgICAgICAg ICAgZWxmLT5uYW1lKTsKICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiB9CiAKLWludCBhcmNoX3hz cGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMg KnJlbGEpCitpbnQgYXJjaF9saXZlcGF0Y2hfcGVyZm9ybV9yZWxhKHN0cnVjdCBsaXZlcGF0Y2hf ZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBs aXZlcGF0Y2hfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpyZWxhKQogewogICAgIGNvbnN0IEVsZl9S ZWxBICpyOwogICAgIHVuc2lnbmVkIGludCBzeW1uZHgsIGk7CkBAIC0xMjksNyArMTI5LDcgQEAg aW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCiAg ICAgaWYgKCByZWxhLT5zZWMtPnNoX2VudHNpemUgPCBzaXplb2YoRWxmX1JlbEEpIHx8CiAgICAg ICAgICByZWxhLT5zZWMtPnNoX3NpemUgJSByZWxhLT5zZWMtPnNoX2VudHNpemUgKQogICAgIHsK LSAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiByZWxhdGl2 ZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBM SVZFUEFUQ0ggIiVzOiBTZWN0aW9uIHJlbGF0aXZlIGhlYWRlciBpcyBjb3JydXB0ZWQhXG4iLAog ICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAg IH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwKIAogICAgICAgICBpZiAoIHN5bW5keCA+IGVsZi0+bnN5bSAp CiAgICAgICAgIHsKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6 IFJlbGF0aXZlIHJlbG9jYXRpb24gd2FudHMgc3ltYm9sQCV1IHdoaWNoIGlzIHBhc3QgZW5kIVxu IiwKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogUmVsYXRp dmUgcmVsb2NhdGlvbiB3YW50cyBzeW1ib2xAJXUgd2hpY2ggaXMgcGFzdCBlbmQhXG4iLAogICAg ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIHN5bW5keCk7CiAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKICAgICAgICAgfQpAQCAtMTgxLDE0ICsxODEsMTQgQEAgaW50IGFyY2hfeHNwbGlj ZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCiAgICAgICAgICAgICAqKGlu dDMyX3QgKilkZXN0ID0gdmFsOwogICAgICAgICAgICAgaWYgKCAoaW50NjRfdCl2YWwgIT0gKihp bnQzMl90ICopZGVzdCApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZHByaW50ayhY RU5MT0dfRVJSLCBYU1BMSUNFICIlczogT3ZlcmZsb3cgaW4gcmVsb2NhdGlvbiAldSBpbiAlcyBm b3IgJXMhXG4iLAorICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENI ICIlczogT3ZlcmZsb3cgaW4gcmVsb2NhdGlvbiAldSBpbiAlcyBmb3IgJXMhXG4iLAogICAgICAg ICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpLCByZWxhLT5uYW1lLCBiYXNlLT5uYW1lKTsK ICAgICAgICAgICAgICAgICByZXR1cm4gLUVPVkVSRkxPVzsKICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBkcHJpbnRrKFhF TkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmhhbmRsZWQgcmVsb2NhdGlvbiAlbHVcbiIsCisgICAg ICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFVuaGFuZGxlZCByZWxv Y2F0aW9uICVsdVxuIiwKICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBFTEY2NF9SX1RZ UEUoci0+cl9pbmZvKSk7CiAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiAgICAgICAg IH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwKICAgICByZXR1cm4gMDsKIAogIGJhZF9vZmZzZXQ6Ci0gICAg ZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogUmVsYXRpdmUgcmVsb2NhdGlvbiBvZmZz ZXQgaXMgcGFzdCAlcyBzZWN0aW9uIVxuIiwKKyAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQ QVRDSCAiJXM6IFJlbGF0aXZlIHJlbG9jYXRpb24gb2Zmc2V0IGlzIHBhc3QgJXMgc2VjdGlvbiFc biIsCiAgICAgICAgICAgICBlbGYtPm5hbWUsIGJhc2UtPm5hbWUpOwogICAgIHJldHVybiAtRUlO VkFMOwogfQpAQCAtMjA3LDcgKzIwNyw3IEBAIGludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxh KHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAogICogd2Ugc2VjdXJlIHRoZSBtZW1vcnkgYnkgcHV0 dGluZyBpbiB0aGUgcHJvcGVyIHBhZ2UgdGFibGUgYXR0cmlidXRlcwogICogZm9yIHRoZSBkZXNp cmVkIHR5cGUuCiAgKi8KLWludCBhcmNoX3hzcGxpY2Vfc2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1 bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFfdHlwZSB0eXBlKQoraW50IGFyY2hfbGl2ZXBhdGNo X3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUg dHlwZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpdmE7CiAg ICAgdW5zaWduZWQgaW50IGZsYWc7CkBAIC0yMTUsOSArMjE1LDkgQEAgaW50IGFyY2hfeHNwbGlj ZV9zZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBl IHR5cGUpCiAgICAgQVNTRVJUKHZhKTsKICAgICBBU1NFUlQocGFnZXMpOwogCi0gICAgaWYgKCB0 eXBlID09IFhTUExJQ0VfVkFfUlggKQorICAgIGlmICggdHlwZSA9PSBMSVZFUEFUQ0hfVkFfUlgg KQogICAgICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JYOwotICAgIGVsc2UgaWYgKCB0eXBl ID09IFhTUExJQ0VfVkFfUlcgKQorICAgIGVsc2UgaWYgKCB0eXBlID09IExJVkVQQVRDSF9WQV9S VyApCiAgICAgICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlc7CiAgICAgZWxzZQogICAgICAg ICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JPOwpAQCAtMjI3LDcgKzIyNyw3IEBAIGludCBhcmNo X3hzcGxpY2Vfc2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0g dmFfdHlwZSB0eXBlKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIF9faW5pdCBhcmNoX3hzcGxp Y2VfaW5pdCh2b2lkKQordm9pZCBfX2luaXQgYXJjaF9saXZlcGF0Y2hfaW5pdCh2b2lkKQogewog ICAgIHZvaWQgKnN0YXJ0LCAqZW5kOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdGVzdC9N YWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni90ZXN0L01ha2VmaWxlCmluZGV4IGE5ZDQzYTEuLjIzZGZm MWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni90ZXN0L01ha2VmaWxlCisrKyBiL3hlbi9hcmNo L3g4Ni90ZXN0L01ha2VmaWxlCkBAIC01LDI0ICs1LDI0IEBAIENPREVfU1o9JChzaGVsbCBubSAt LWRlZmluZWQgLVMgJCgxKSB8IGdyZXAgJCgyKSB8IGF3ayAneyBwcmludCAiMHgiJCQyfScpCiAK IC5QSE9OWTogZGVmYXVsdAogCi1YU1BMSUNFIDo9IHhlbl9oZWxsb193b3JsZC54c3BsaWNlCi1Y U1BMSUNFX0JZRSA6PSB4ZW5fYnllX3dvcmxkLnhzcGxpY2UKLVhTUExJQ0VfUkVQTEFDRSA6PSB4 ZW5fcmVwbGFjZV93b3JsZC54c3BsaWNlCitMSVZFUEFUQ0ggOj0geGVuX2hlbGxvX3dvcmxkLmxp dmVwYXRjaAorTElWRVBBVENIX0JZRSA6PSB4ZW5fYnllX3dvcmxkLmxpdmVwYXRjaAorTElWRVBB VENIX1JFUExBQ0UgOj0geGVuX3JlcGxhY2Vfd29ybGQubGl2ZXBhdGNoCiAKLWRlZmF1bHQ6IHhz cGxpY2UKK2RlZmF1bHQ6IGxpdmVwYXRjaAogCi1pbnN0YWxsOiB4c3BsaWNlCi0JJChJTlNUQUxM X0RBVEEpICQoWFNQTElDRSkgJChERVNURElSKSQoREVCVUdfRElSKS8kKFhTUExJQ0UpCi0JJChJ TlNUQUxMX0RBVEEpICQoWFNQTElDRV9CWUUpICQoREVTVERJUikkKERFQlVHX0RJUikvJChYU1BM SUNFX0JZRSkKLQkkKElOU1RBTExfREFUQSkgJChYU1BMSUNFX1JFUExBQ0UpICQoREVTVERJUikk KERFQlVHX0RJUikvJChYU1BMSUNFX1JFUExBQ0UpCitpbnN0YWxsOiBsaXZlcGF0Y2gKKwkkKElO U1RBTExfREFUQSkgJChMSVZFUEFUQ0gpICQoREVTVERJUikkKERFQlVHX0RJUikvJChMSVZFUEFU Q0gpCisJJChJTlNUQUxMX0RBVEEpICQoTElWRVBBVENIX0JZRSkgJChERVNURElSKSQoREVCVUdf RElSKS8kKExJVkVQQVRDSF9CWUUpCisJJChJTlNUQUxMX0RBVEEpICQoTElWRVBBVENIX1JFUExB Q0UpICQoREVTVERJUikkKERFQlVHX0RJUikvJChMSVZFUEFUQ0hfUkVQTEFDRSkKIHVuaW5zdGFs bDoKLQlybSAtZiAkKERFU1RESVIpJChERUJVR19ESVIpLyQoWFNQTElDRSkKLQlybSAtZiAkKERF U1RESVIpJChERUJVR19ESVIpLyQoWFNQTElDRV9CWUUpCi0Jcm0gLWYgJChERVNURElSKSQoREVC VUdfRElSKS8kKFhTUExJQ0VfUkVQTEFDRSkKKwlybSAtZiAkKERFU1RESVIpJChERUJVR19ESVIp LyQoTElWRVBBVENIKQorCXJtIC1mICQoREVTVERJUikkKERFQlVHX0RJUikvJChMSVZFUEFUQ0hf QllFKQorCXJtIC1mICQoREVTVERJUikkKERFQlVHX0RJUikvJChMSVZFUEFUQ0hfUkVQTEFDRSkK IAogLlBIT05ZOiBjbGVhbgogY2xlYW46OgotCXJtIC1mICoubyAuKi5vLmQgKi54c3BsaWNlIGNv bmZpZy5oCisJcm0gLWYgKi5vIC4qLm8uZCAqLmxpdmVwYXRjaCBjb25maWcuaAogCiAjCiAjIFRv IGNvbXB1dGUgdGhlc2UgdmFsdWVzIHdlIG5lZWQgdGhlIGJpbmFyeSBmaWxlczogeGVuLXN5bXMK QEAgLTM4LDEyICszOCwxMiBAQCBjb25maWcuaDogeGVuX2hlbGxvX3dvcmxkX2Z1bmMubwogCiB4 ZW5faGVsbG9fd29ybGQubzogY29uZmlnLmgKIAotLlBIT05ZOiAkKFhTUExJQ0UpCi0kKFhTUExJ Q0UpOiB4ZW5faGVsbG9fd29ybGRfZnVuYy5vIHhlbl9oZWxsb193b3JsZC5vIG5vdGUubwotCSQo TEQpICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1yIC1vICQoWFNQTElDRSkgJF4KKy5Q SE9OWTogJChMSVZFUEFUQ0gpCiskKExJVkVQQVRDSCk6IHhlbl9oZWxsb193b3JsZF9mdW5jLm8g eGVuX2hlbGxvX3dvcmxkLm8gbm90ZS5vCisJJChMRCkgJChMREZMQUdTKSAkKGJ1aWxkX2lkX2xp bmtlcikgLXIgLW8gJChMSVZFUEFUQ0gpICReCiAKICMKLSMgVGhpcyB0YXJnZXQgaXMgb25seSBh Y2Nlc3NpYmxlIGlmIENPTkZJR19YU1BMSUNFIGlzIGRlZmluZWQsIHdoaWNoCisjIFRoaXMgdGFy Z2V0IGlzIG9ubHkgYWNjZXNzaWJsZSBpZiBDT05GSUdfTElWRVBBVENIIGlzIGRlZmluZWQsIHdo aWNoCiAjIGRlcGVuZHMgb24gJChidWlsZF9pZF9saW5rZXIpIGJlaW5nIGF2YWlsYWJsZS4gSGVu Y2Ugd2UgZG8gbm90CiAjIG5lZWQgYW55IGNoZWNrcy4KICMKQEAgLTU1LDMxICs1NSwzMSBAQCAk KFhTUExJQ0UpOiB4ZW5faGVsbG9fd29ybGRfZnVuYy5vIHhlbl9oZWxsb193b3JsZC5vIG5vdGUu bwogbm90ZS5vOgogCSQoT0JKQ09QWSkgLU8gYmluYXJ5IC0tb25seS1zZWN0aW9uPS5ub3RlLmdu dS5idWlsZC1pZCAkKEJBU0VESVIpL3hlbi1zeW1zICRALmJpbgogCSQoT0JKQ09QWSkgLUkgYmlu YXJ5IC1PIGVsZjY0LXg4Ni02NCAtQiBpMzg2Ong4Ni02NCBcCi0JCSAgIC0tcmVuYW1lLXNlY3Rp b249LmRhdGE9LnhzcGxpY2UuZGVwZW5kcyAtUyAkQC5iaW4gJEAKKwkJICAgLS1yZW5hbWUtc2Vj dGlvbj0uZGF0YT0ubGl2ZXBhdGNoLmRlcGVuZHMgLVMgJEAuYmluICRACiAJcm0gLWYgJEAuYmlu CiAKICMKLSMgRXh0cmFjdCB0aGUgYnVpbGQtaWQgb2YgdGhlIHhlbl9oZWxsb193b3JsZC54c3Bs aWNlCisjIEV4dHJhY3QgdGhlIGJ1aWxkLWlkIG9mIHRoZSB4ZW5faGVsbG9fd29ybGQubGl2ZXBh dGNoCiAjICh3aGljaCB4ZW5fYnllX3dvcmxkIHdpbGwgZGVwZW5kIG9uKS4KICMKIC5QSE9OWTog aGVsbG9fd29ybGRfbm90ZS5vCi1oZWxsb193b3JsZF9ub3RlLm86ICQoWFNQTElDRSkKLQkkKE9C SkNPUFkpIC1PIGJpbmFyeSAtLW9ubHktc2VjdGlvbj0ubm90ZS5nbnUuYnVpbGQtaWQgJChYU1BM SUNFKSAkQC5iaW4KK2hlbGxvX3dvcmxkX25vdGUubzogJChMSVZFUEFUQ0gpCisJJChPQkpDT1BZ KSAtTyBiaW5hcnkgLS1vbmx5LXNlY3Rpb249Lm5vdGUuZ251LmJ1aWxkLWlkICQoTElWRVBBVENI KSAkQC5iaW4KIAkkKE9CSkNPUFkpICAtSSBiaW5hcnkgLU8gZWxmNjQteDg2LTY0IC1CIGkzODY6 eDg2LTY0IFwKLQkJICAgLS1yZW5hbWUtc2VjdGlvbj0uZGF0YT0ueHNwbGljZS5kZXBlbmRzIC1T ICRALmJpbiAkQAorCQkgICAtLXJlbmFtZS1zZWN0aW9uPS5kYXRhPS5saXZlcGF0Y2guZGVwZW5k cyAtUyAkQC5iaW4gJEAKIAlybSAtZiAkQC5iaW4KIAogeGVuX2J5ZV93b3JsZC5vOiBjb25maWcu aAogCi0uUEhPTlk6ICQoWFNQTElDRV9CWUUpCi0kKFhTUExJQ0VfQllFKTogeGVuX2J5ZV93b3Js ZF9mdW5jLm8geGVuX2J5ZV93b3JsZC5vIGhlbGxvX3dvcmxkX25vdGUubwotCSQoTEQpICQoTERG TEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1yIC1vICQoWFNQTElDRV9CWUUpICReCisuUEhPTlk6 ICQoTElWRVBBVENIX0JZRSkKKyQoTElWRVBBVENIX0JZRSk6IHhlbl9ieWVfd29ybGRfZnVuYy5v IHhlbl9ieWVfd29ybGQubyBoZWxsb193b3JsZF9ub3RlLm8KKwkkKExEKSAkKExERkxBR1MpICQo YnVpbGRfaWRfbGlua2VyKSAtciAtbyAkKExJVkVQQVRDSF9CWUUpICReCiAKIHhlbl9yZXBsYWNl X3dvcmxkLm86IGNvbmZpZy5oCiAKLS5QSE9OWTogJChYU1BMSUNFX1JFUExBQ0UpCi0kKFhTUExJ Q0VfUkVQTEFDRSk6IHhlbl9yZXBsYWNlX3dvcmxkX2Z1bmMubyB4ZW5fcmVwbGFjZV93b3JsZC5v IG5vdGUubwotCSQoTEQpICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1yIC1vICQoWFNQ TElDRV9SRVBMQUNFKSAkXgorLlBIT05ZOiAkKExJVkVQQVRDSF9SRVBMQUNFKQorJChMSVZFUEFU Q0hfUkVQTEFDRSk6IHhlbl9yZXBsYWNlX3dvcmxkX2Z1bmMubyB4ZW5fcmVwbGFjZV93b3JsZC5v IG5vdGUubworCSQoTEQpICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1yIC1vICQoTElW RVBBVENIX1JFUExBQ0UpICReCiAKLS5QSE9OWTogeHNwbGljZQoteHNwbGljZTogJChYU1BMSUNF KSAkKFhTUExJQ0VfQllFKSAkKFhTUExJQ0VfUkVQTEFDRSkKKy5QSE9OWTogbGl2ZXBhdGNoCits aXZlcGF0Y2g6ICQoTElWRVBBVENIKSAkKExJVkVQQVRDSF9CWUUpICQoTElWRVBBVENIX1JFUExB Q0UpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkLmMgYi94ZW4v YXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkLmMKaW5kZXggZjkzZjk2OS4uYjc1ZTBiMSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2J5ZV93b3JsZC5jCisrKyBiL3hlbi9hcmNo L3g4Ni90ZXN0L3hlbl9ieWVfd29ybGQuYwpAQCAtNywxNSArNywxNSBAQAogI2luY2x1ZGUgPHhl bi9saWIuaD4KICNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4vdmVyc2lvbi5o PgotI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaC5oPgog CiAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgogCiBzdGF0aWMgY2hhciBieWVfd29ybGRfcGF0 Y2hfdGhpc19mbmNbXSA9ICJ4ZW5fZXh0cmFfdmVyc2lvbiI7CiBleHRlcm4gY29uc3QgY2hhciAq eGVuX2J5ZV93b3JsZCh2b2lkKTsKIAotc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyBfX3NlY3Rp b24oIi54c3BsaWNlLmZ1bmNzIikgeHNwbGljZV94ZW5fYnllX3dvcmxkID0gewotICAgIC52ZXJz aW9uID0gWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04sCitzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgX19z ZWN0aW9uKCIubGl2ZXBhdGNoLmZ1bmNzIikgbGl2ZXBhdGNoX3hlbl9ieWVfd29ybGQgPSB7Cisg ICAgLnZlcnNpb24gPSBMSVZFUEFUQ0hfUEFZTE9BRF9WRVJTSU9OLAogICAgIC5uYW1lID0gYnll X3dvcmxkX3BhdGNoX3RoaXNfZm5jLAogICAgIC5uZXdfYWRkciA9IHhlbl9ieWVfd29ybGQsCiAg ICAgLm9sZF9hZGRyID0geGVuX2V4dHJhX3ZlcnNpb24sCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYyBiL3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9oZWxsb193 b3JsZC5jCmluZGV4IDhhZmQ2NmUuLjQyMmJkZjEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni90 ZXN0L3hlbl9oZWxsb193b3JsZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9oZWxsb193 b3JsZC5jCkBAIC02LDE1ICs2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8 eGVuL3R5cGVzLmg+CiAjaW5jbHVkZSA8eGVuL3ZlcnNpb24uaD4KLSNpbmNsdWRlIDx4ZW4veHNw bGljZS5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KIAogI2luY2x1ZGUgPHB1YmxpYy9z eXNjdGwuaD4KIAogc3RhdGljIGNoYXIgaGVsbG9fd29ybGRfcGF0Y2hfdGhpc19mbmNbXSA9ICJ4 ZW5fZXh0cmFfdmVyc2lvbiI7CiBleHRlcm4gY29uc3QgY2hhciAqeGVuX2hlbGxvX3dvcmxkKHZv aWQpOwogCi1zdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIF9fc2VjdGlvbigiLnhzcGxpY2UuZnVu Y3MiKSB4c3BsaWNlX3hlbl9oZWxsb193b3JsZCA9IHsKLSAgICAudmVyc2lvbiA9IFhTUExJQ0Vf UEFZTE9BRF9WRVJTSU9OLAorc3RydWN0IGxpdmVwYXRjaF9mdW5jIF9fc2VjdGlvbigiLmxpdmVw YXRjaC5mdW5jcyIpIGxpdmVwYXRjaF94ZW5faGVsbG9fd29ybGQgPSB7CisgICAgLnZlcnNpb24g PSBMSVZFUEFUQ0hfUEFZTE9BRF9WRVJTSU9OLAogICAgIC5uYW1lID0gaGVsbG9fd29ybGRfcGF0 Y2hfdGhpc19mbmMsCiAgICAgLm5ld19hZGRyID0geGVuX2hlbGxvX3dvcmxkLAogICAgIC5vbGRf YWRkciA9IHhlbl9leHRyYV92ZXJzaW9uLApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Rlc3Qv eGVuX3JlcGxhY2Vfd29ybGQuYyBiL3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9yZXBsYWNlX3dvcmxk LmMKaW5kZXggZmFiMjg0MS4uYTJhMjIxYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Rlc3Qv eGVuX3JlcGxhY2Vfd29ybGQuYworKysgYi94ZW4vYXJjaC94ODYvdGVzdC94ZW5fcmVwbGFjZV93 b3JsZC5jCkBAIC02LDE1ICs2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8 eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi90eXBlcy5oPgotI2luY2x1ZGUgPHhlbi94c3BsaWNl Lmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaC5oPgogCiAjaW5jbHVkZSA8cHVibGljL3N5c2N0 bC5oPgogCiBzdGF0aWMgY2hhciB4ZW5fcmVwbGFjZV93b3JsZF9uYW1lW10gPSAieGVuX2V4dHJh X3ZlcnNpb24iOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnhlbl9yZXBsYWNlX3dvcmxkKHZvaWQpOwog Ci1zdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIF9fc2VjdGlvbigiLnhzcGxpY2UuZnVuY3MiKSB4 c3BsaWNlX3hlbl9yZXBsYWNlX3dvcmxkID0gewotICAgIC52ZXJzaW9uID0gWFNQTElDRV9QQVlM T0FEX1ZFUlNJT04sCitzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgX19zZWN0aW9uKCIubGl2ZXBhdGNo LmZ1bmNzIikgbGl2ZXBhdGNoX3hlbl9yZXBsYWNlX3dvcmxkID0geworICAgIC52ZXJzaW9uID0g TElWRVBBVENIX1BBWUxPQURfVkVSU0lPTiwKICAgICAubmFtZSA9IHhlbl9yZXBsYWNlX3dvcmxk X25hbWUsCiAgICAgLm9sZF9hZGRyID0gMCwgLyogRm9yY2VzIHRoZSBoeXBlcnZpc29yIHRvIGxv b2t1cCAubmFtZSAqLwogICAgIC5uZXdfYWRkciA9IHhlbl9yZXBsYWNlX3dvcmxkLApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwppbmRleCA1 ZDcyMzJkLi5jNGUwZTZmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdHJhcHMuYworKysgYi94 ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1ZGUgPHhlbi9wYWdp bmcuaD4KICNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4ZW4vd2F0 Y2hkb2cuaD4KLSNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0 Y2guaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5j bHVkZSA8YXNtL2F0b21pYy5oPgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVu L2NvbW1vbi9LY29uZmlnCmluZGV4IDkxZWE5MDQuLmNkNTk1NzQgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24vS2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTE5Miw5ICsxOTIsOSBA QCBjb25maWcgU0NIRURfREVGQVVMVAogCiBlbmRtZW51CiAKLSMgRW5hYmxlL0Rpc2FibGUgeHNw bGljZSBzdXBwb3J0Ci1jb25maWcgWFNQTElDRQotCWJvb2wgInhTcGxpY2UgbGl2ZSBwYXRjaGlu ZyBzdXBwb3J0IChURUNIIFBSRVZJRVcpIgorIyBFbmFibGUvRGlzYWJsZSBsaXZlIHBhdGNoaW5n IHN1cHBvcnQKK2NvbmZpZyBMSVZFUEFUQ0gKKwlib29sICJMaXZlIHBhdGNoaW5nIHN1cHBvcnQg KFRFQ0ggUFJFVklFVykiCiAJZGVmYXVsdCBuCiAJZGVwZW5kcyBvbiBYODYgJiYgSEFTX0JVSUxE X0lEID0gInkiCiAJLS0taGVscC0tLQpAQCAtMjA3LDEzICsyMDcsMTMgQEAgY29uZmlnIFhTUExJ Q0UKIGNvbmZpZyBGQVNUX1NZTUJPTF9MT09LVVAKIAlib29sICJGYXN0IHN5bWJvbCBsb29rdXAg KGJpZ2dlciBiaW5hcnkpIgogCWRlZmF1bHQgeQotCWRlcGVuZHMgb24gWFNQTElDRQorCWRlcGVu ZHMgb24gTElWRVBBVENICiAJLS0taGVscC0tLQogCSAgV2hlbiBzZWFyY2hpbmcgZm9yIHN5bWJv bCBhZGRyZXNzZXMgd2UgY2FuIHVzZSB0aGUgYnVpbHQtaW4gc3lzdGVtCiAJICB0aGF0IGlzIG9w dGltaXplZCBmb3Igc2VhcmNoaW5nIHN5bWJvbHMgdXNpbmcgYWRkcmVzc2VzIGFzIHRoZSBrZXku CiAJICBIb3dldmVyIHVzaW5nIGl0IGZvciB0aGUgaW52ZXJzZSAoZmluZCBhZGRyZXNzIHVzaW5n IHRoZSBzeW1ib2wgbmFtZSkKIAkgIGl0IGlzIHNsb3cuIFRoaXMgZXh0cmEgZGF0YSBhbmQgY29k ZSAofjU1a0IpIHNwZWVkcyB1cCB0aGUgc2VhcmNoLgotCSAgVGhlIG9ubHkgdXNlciBvZiB0aGlz IGlzIHhTcGxpY2UuCisJICBUaGUgb25seSB1c2VyIG9mIHRoaXMgaXMgTGl2ZSBwYXRjaGluZy4K IAogCSAgSWYgdW5zdXJlLCBzYXkgWS4KIGVuZG1lbnUKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v TWFrZWZpbGUgYi94ZW4vY29tbW9uL01ha2VmaWxlCmluZGV4IGFmZDg0YjYuLmRkYTk5MjUgMTAw NjQ0Ci0tLSBhL3hlbi9jb21tb24vTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpA QCAtMTcsNiArMTcsNyBAQCBvYmoteSArPSBrZXloYW5kbGVyLm8KIG9iai0kKENPTkZJR19LRVhF QykgKz0ga2V4ZWMubwogb2JqLSQoQ09ORklHX0tFWEVDKSArPSBraW1hZ2Uubwogb2JqLXkgKz0g bGliLm8KK29iai0kKENPTkZJR19MSVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5vIGxpdmVwYXRjaF9l bGYubwogb2JqLXkgKz0gbHpvLm8KIG9iai0kKENPTkZJR19IQVNfTUVNX0FDQ0VTUykgKz0gbWVt X2FjY2Vzcy5vCiBvYmoteSArPSBtZW1vcnkubwpAQCAtNTgsOCArNTksNiBAQCBvYmoteSArPSB2 c3ByaW50Zi5vCiBvYmoteSArPSB3YWl0Lm8KIG9iai0kKENPTkZJR19YRU5PUFJPRikgKz0geGVu b3Byb2Yubwogb2JqLXkgKz0geG1hbGxvY190bHNmLm8KLW9iai0kKENPTkZJR19YU1BMSUNFKSAr PSB4c3BsaWNlLm8KLW9iai0kKENPTkZJR19YU1BMSUNFKSArPSB4c3BsaWNlX2VsZi5vCiAKIG9i ai1iaW4tJChDT05GSUdfWDg2KSArPSAkKGZvcmVhY2ggbixkZWNvbXByZXNzIGJ1bnppcDIgdW54 eiB1bmx6bWEgdW5sem8gdW5sejQgZWFybHljcGlvLCQobikuaW5pdC5vKQogCmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMKc2ltaWxhcml0 eSBpbmRleCA3NSUKcmVuYW1lIGZyb20geGVuL2NvbW1vbi94c3BsaWNlLmMKcmVuYW1lIHRvIHhl bi9jb21tb24vbGl2ZXBhdGNoLmMKaW5kZXggYjY4ODc1Yi4uM2ZlNDIyMyAxMDA2NDQKLS0tIGEv eGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2NvbW1vbi9saXZlcGF0Y2guYwpAQCAtMjEs OCArMjEsOCBAQAogI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgogI2luY2x1ZGUgPHhl bi92bWFwLmg+CiAjaW5jbHVkZSA8eGVuL3dhaXQuaD4KLSNpbmNsdWRlIDx4ZW4veHNwbGljZV9l bGYuaD4KLSNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2hf ZWxmLmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaC5oPgogCiAjaW5jbHVkZSA8YXNtL2V2ZW50 Lmg+CiAKQEAgLTQ0LDEzICs0NCwxMyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHBheWxvYWRfY250 Owogc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3ZlcnNpb24gPSAxOwogCiAvKiBUbyBjb250 YWluIHRoZSBFTEYgTm90ZSBoZWFkZXIuICovCi1zdHJ1Y3QgeHNwbGljZV9idWlsZF9pZCB7Citz dHJ1Y3QgbGl2ZXBhdGNoX2J1aWxkX2lkIHsKICAgIGNvbnN0IHZvaWQgKnA7CiAgICB1bnNpZ25l ZCBpbnQgbGVuOwogfTsKIAogc3RydWN0IHBheWxvYWQgewotICAgIHVpbnQzMl90IHN0YXRlOyAg ICAgICAgICAgICAgICAgICAgICAvKiBPbmUgb2YgdGhlIFhTUExJQ0VfU1RBVEVfKi4gKi8KKyAg ICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgLyogT25lIG9mIHRoZSBMSVZF UEFUQ0hfU1RBVEVfKi4gKi8KICAgICBpbnQzMl90IHJjOyAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogMCBvciAtWEVOX0VYWC4gKi8KICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7ICAgICAg ICAgICAgICAgLyogTGlua2VkIHRvICdwYXlsb2FkX2xpc3QnLiAqLwogICAgIGNvbnN0IHZvaWQg KnRleHRfYWRkcjsgICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgLnRleHQuICov CkBAIC02MSw0NCArNjEsNDQgQEAgc3RydWN0IHBheWxvYWQgewogICAgIHNpemVfdCByb19zaXpl OyAgICAgICAgICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUgKGlmIGFueSkuICovCiAg ICAgdW5zaWduZWQgaW50IHBhZ2VzOyAgICAgICAgICAgICAgICAgIC8qIFRvdGFsIHBhZ2VzIGZv ciBbdGV4dCxydyxyb11fYWRkciAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgYXBwbGllZF9saXN0 OyAgICAgICAvKiBMaW5rZWQgdG8gJ2FwcGxpZWRfbGlzdCcuICovCi0gICAgc3RydWN0IHhzcGxp Y2VfcGF0Y2hfZnVuYyAqZnVuY3M7ICAgIC8qIFRoZSBhcnJheSBvZiBmdW5jdGlvbnMgdG8gcGF0 Y2guICovCisgICAgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jczsgICAgICAgIC8qIFRoZSBh cnJheSBvZiBmdW5jdGlvbnMgdG8gcGF0Y2guICovCiAgICAgdW5zaWduZWQgaW50IG5mdW5jczsg ICAgICAgICAgICAgICAgIC8qIE5yIG9mIGZ1bmN0aW9ucyB0byBwYXRjaC4gKi8KLSAgICBjb25z dCBzdHJ1Y3QgeHNwbGljZV9zeW1ib2wgKnN5bXRhYjsgLyogQWxsIHN5bWJvbHMuICovCisgICAg Y29uc3Qgc3RydWN0IGxpdmVwYXRjaF9zeW1ib2wgKnN5bXRhYjsgLyogQWxsIHN5bWJvbHMuICov CiAgICAgY29uc3QgY2hhciAqc3RydGFiOyAgICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8g LnN0cnRhYi4gKi8KICAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gcmVnaW9uOyAgICAgICAgLyog c3ltYm9sLCBidWcuZnJhbWUgcGF0Y2hpbmcgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0YWJsZSAoeDg2KS4gKi8KICAgICB1bnNpZ25l ZCBpbnQgbnN5bXM7ICAgICAgICAgICAgICAgICAgLyogTnIgb2YgZW50cmllcyBpbiAuc3RydGFi IGFuZCBzeW1ib2xzLiAqLwotICAgIHN0cnVjdCB4c3BsaWNlX2J1aWxkX2lkIGlkOyAgICAgICAg ICAvKiBFTEZOT1RFX0RFU0MoLm5vdGUuZ251LmJ1aWxkLWlkKSBvZiB0aGUgcGF5bG9hZC4gKi8K LSAgICBzdHJ1Y3QgeHNwbGljZV9idWlsZF9pZCBkZXA7ICAgICAgICAgLyogRUxGTk9URV9ERVND KC54c3BsaWNlLmRlcGVuZHMpLiAqLwotICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJ WkVdOyAgICAvKiBOYW1lIG9mIGl0LiAqLworICAgIHN0cnVjdCBsaXZlcGF0Y2hfYnVpbGRfaWQg aWQ7ICAgICAgICAvKiBFTEZOT1RFX0RFU0MoLm5vdGUuZ251LmJ1aWxkLWlkKSBvZiB0aGUgcGF5 bG9hZC4gKi8KKyAgICBzdHJ1Y3QgbGl2ZXBhdGNoX2J1aWxkX2lkIGRlcDsgICAgICAgLyogRUxG Tk9URV9ERVNDKC5saXZlcGF0Y2guZGVwZW5kcykuICovCisgICAgY2hhciBuYW1lW1hFTl9MSVZF UEFUQ0hfTkFNRV9TSVpFXTsgLyogTmFtZSBvZiBpdC4gKi8KIH07CiAKIC8qIERlZmluZXMgYW4g b3V0c3RhbmRpbmcgcGF0Y2hpbmcgYWN0aW9uLiAqLwotc3RydWN0IHhzcGxpY2Vfd29yaworc3Ry dWN0IGxpdmVwYXRjaF93b3JrCiB7CiAgICAgYXRvbWljX3Qgc2VtYXBob3JlOyAgICAgICAgICAv KiBVc2VkIHRvIHJlbmRlenZvdXMgQ1BVcyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hlY2tfZm9yX3hzcGxpY2Vfd29yay4gKi8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoZWNrX2Zvcl9saXZlcGF0Y2hfd29yay4gKi8KICAgICB1aW50MzJf dCB0aW1lb3V0OyAgICAgICAgICAgIC8qIFRpbWVvdXQgdG8gZG8gdGhlIG9wZXJhdGlvbi4gKi8K ICAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsgICAgICAgIC8qIFRoZSBwYXlsb2FkIG9uIHdoaWNo IHRvIGFjdC4gKi8KICAgICB2b2xhdGlsZSBib29sX3QgZG9fd29yazsgICAgIC8qIFNpZ25hbHMg d29yayB0byBkby4gKi8KICAgICB2b2xhdGlsZSBib29sX3QgcmVhZHk7ICAgICAgIC8qIFNpZ25h bHMgYWxsIENQVXMgc3luY2hyb25pemVkLiAqLwotICAgIHVuc2lnbmVkIGludCBjbWQ7ICAgICAg ICAgICAgLyogQWN0aW9uIHJlcXVlc3Q6IFhTUExJQ0VfQUNUSU9OXyogKi8KKyAgICB1bnNpZ25l ZCBpbnQgY21kOyAgICAgICAgICAgIC8qIEFjdGlvbiByZXF1ZXN0OiBMSVZFUEFUQ0hfQUNUSU9O XyogKi8KIH07CiAKIC8qIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvdXRzdGFuZGluZyBwYXRjaGlu ZyBhY3Rpb24uICovCi1zdGF0aWMgc3RydWN0IHhzcGxpY2Vfd29yayB4c3BsaWNlX3dvcms7Citz dGF0aWMgc3RydWN0IGxpdmVwYXRjaF93b3JrIGxpdmVwYXRjaF93b3JrOwogCiAvKgotICogSW5k aWNhdGUgd2hldGhlciB0aGUgQ1BVIG5lZWRzIHRvIGNvbnN1bHQgeHNwbGljZV93b3JrIHN0cnVj dHVyZS4KLSAqIFdlIHdhbnQgYW4gcGVyLWNwdSBkYXRhIHN0cnVjdHVyZSBvdGhlcndpc2UgdGhl IGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsKLSAqIHdvdWxkIGhhbW1lciBhIGdsb2JhbCB4c3BsaWNl X3dvcmsgc3RydWN0dXJlIG9uIGV2ZXJ5IGd1ZXN0IFZNRVhJVC4KKyAqIEluZGljYXRlIHdoZXRo ZXIgdGhlIENQVSBuZWVkcyB0byBjb25zdWx0IGxpdmVwYXRjaF93b3JrIHN0cnVjdHVyZS4KKyAq IFdlIHdhbnQgYW4gcGVyLWNwdSBkYXRhIHN0cnVjdHVyZSBvdGhlcndpc2UgdGhlIGNoZWNrX2Zv cl9saXZlcGF0Y2hfd29yaworICogd291bGQgaGFtbWVyIGEgZ2xvYmFsIGxpdmVwYXRjaF93b3Jr IHN0cnVjdHVyZSBvbiBldmVyeSBndWVzdCBWTUVYSVQuCiAgKiBIYXZpbmcgYW4gcGVyLWNwdSBs ZXNzZW5zIHRoZSBsb2FkLgogICovCiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoYm9vbF90LCB3b3Jr X3RvX2RvKTsKIAotc3RhdGljIGludCBnZXRfbmFtZShjb25zdCB4ZW5feHNwbGljZV9uYW1lX3Qg Km5hbWUsIGNoYXIgKm4pCitzdGF0aWMgaW50IGdldF9uYW1lKGNvbnN0IHhlbl9saXZlcGF0Y2hf bmFtZV90ICpuYW1lLCBjaGFyICpuKQogewotICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFtZS0+ c2l6ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0laRSApCisgICAgaWYgKCAhbmFtZS0+c2l6ZSB8fCBu YW1lLT5zaXplID4gWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkUgKQogICAgICAgICByZXR1cm4gLUVJ TlZBTDsKIAogICAgIGlmICggbmFtZS0+cGFkWzBdIHx8IG5hbWUtPnBhZFsxXSB8fCBuYW1lLT5w YWRbMl0gKQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBpbnQgZ2V0X25hbWUoY29uc3QgeGVu X3hzcGxpY2VfbmFtZV90ICpuYW1lLCBjaGFyICpuKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0 aWMgaW50IHZlcmlmeV9wYXlsb2FkKGNvbnN0IHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAq dXBsb2FkLCBjaGFyICpuKQorc3RhdGljIGludCB2ZXJpZnlfcGF5bG9hZChjb25zdCB4ZW5fc3lz Y3RsX2xpdmVwYXRjaF91cGxvYWRfdCAqdXBsb2FkLCBjaGFyICpuKQogewogICAgIGlmICggZ2V0 X25hbWUoJnVwbG9hZC0+bmFtZSwgbikgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAgLTE1 OSw3ICsxNTksNyBAQCBib29sX3QgaXNfcGF0Y2goY29uc3Qgdm9pZCAqcHRyKQogICAgIHJldHVy biByOwogfQogCi11bnNpZ25lZCBsb25nIHhzcGxpY2Vfc3ltYm9sc19sb29rdXBfYnlfbmFtZShj b25zdCBjaGFyICpzeW1uYW1lKQordW5zaWduZWQgbG9uZyBsaXZlcGF0Y2hfc3ltYm9sc19sb29r dXBfYnlfbmFtZShjb25zdCBjaGFyICpzeW1uYW1lKQogewogICAgIGNvbnN0IHN0cnVjdCBwYXls b2FkICpkYXRhOwogCkBAIC0xODEsMTAgKzE4MSwxMCBAQCB1bnNpZ25lZCBsb25nIHhzcGxpY2Vf c3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBjaGFyICpzeW1uYW1lKQogICAgIHJldHVybiAw OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqeHNwbGljZV9zeW1ib2xzX2xvb2t1cCh1bnNpZ25l ZCBsb25nIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nICpzeW1ib2xzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZWJ1ZikKK3N0YXRpYyBjb25zdCBjaGFyICps aXZlcGF0Y2hfc3ltYm9sc19sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzeW1ib2xzaXpl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nICpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoYXIgKm5hbWVidWYpCiB7CiAgICAgY29uc3Qgc3RydWN0IHBheWxvYWQgKmRhdGE7CiAgICAg dW5zaWduZWQgaW50IGksIGJlc3Q7CkBAIC0yNDgsOCArMjQ4LDggQEAgc3RhdGljIHN0cnVjdCBw YXlsb2FkICpmaW5kX3BheWxvYWQoY29uc3QgY2hhciAqbmFtZSkKIH0KIAogLyoKLSAqIEZ1bmN0 aW9ucyByZWxhdGVkIHRvIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgKHNlZSB4c3BsaWNlX3Vw bG9hZCksIGFuZAotICogZnJlZWluZyBwYXlsb2FkIChYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9O OlhTUExJQ0VfQUNUSU9OX1VOTE9BRCkuCisgKiBGdW5jdGlvbnMgcmVsYXRlZCB0byBYRU5fU1lT Q1RMX0xJVkVQQVRDSF9VUExPQUQgKHNlZSBsaXZlcGF0Y2hfdXBsb2FkKSwgYW5kCisgKiBmcmVl aW5nIHBheWxvYWQgKFhFTl9TWVNDVExfTElWRVBBVENIX0FDVElPTjpMSVZFUEFUQ0hfQUNUSU9O X1VOTE9BRCkuCiAgKi8KIAogc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkX2RhdGEoc3RydWN0IHBh eWxvYWQgKnBheWxvYWQpCkBAIC0yNzAsNyArMjcwLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9wYXls b2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQpCiAqIGFkZHJlc3Mgc3BhY2UgZm9yIHRo ZSBwYXlsb2FkICh1c2luZyBwYXNzZWQgaW4gc2l6ZSkuIFRoaXMgaXMgdXNlZCBpbgogKiBtb3Zl X3BheWxvYWQgdG8gZmlndXJlIG91dCB0aGUgZGVzdGluYXRpb24gbG9jYXRpb24gKGxvYWRfYWRk cikuCiAqLwotc3RhdGljIHZvaWQgY2FsY19zZWN0aW9uKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2Vs Zl9zZWMgKnNlYywgc2l6ZV90ICpzaXplLAorc3RhdGljIHZvaWQgY2FsY19zZWN0aW9uKGNvbnN0 IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqc2VjLCBzaXplX3QgKnNpemUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvZmZzZXQpCiB7CiAgICAgY29uc3QgRWxmX1No ZHIgKnMgPSBzZWMtPnNlYzsKQEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgdm9pZCBjYWxjX3Nl Y3Rpb24oY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjLCBzaXplX3QgKnNpemUsCiAg ICAgKnNpemUgPSBzLT5zaF9zaXplICsgYWxpZ25fc2l6ZTsKIH0KIAotc3RhdGljIGludCBtb3Zl X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxm KQorc3RhdGljIGludCBtb3ZlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVj dCBsaXZlcGF0Y2hfZWxmICplbGYpCiB7CiAgICAgdm9pZCAqdGV4dF9idWYsICpyb19idWYsICpy d19idWY7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGlu dCBtb3ZlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2Vs ZiAqZWxmKQogICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxvYWQt PnJvX3NpemUsICZvZmZzZXRbaV0pOwogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogTm90IHN1cHBvcnRpbmcgJXMg c2VjdGlvbiFcbiIsCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENI ICIlczogTm90IHN1cHBvcnRpbmcgJXMgc2VjdGlvbiFcbiIsCiAgICAgICAgICAgICAgICAgICAg IGVsZi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFtZSk7CiAgICAgICAgICAgICByYyA9IC1FT1BOT1RT VVBQOwogICAgICAgICAgICAgZ290byBvdXQ7CkBAIC0zMzUsNyArMzM1LDcgQEAgc3RhdGljIGlu dCBtb3ZlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2Vs ZiAqZWxmKQogICAgIHRleHRfYnVmID0gdm1hbGxvY194ZW4oc2l6ZSAqIFBBR0VfU0laRSk7CiAg ICAgaWYgKCAhdGV4dF9idWYgKQogICAgIHsKLSAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBY U1BMSUNFICIlczogQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGF5bG9hZCFcbiIsCisg ICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogQ291bGQgbm90IGFsbG9j YXRlIG1lbW9yeSBmb3IgcGF5bG9hZCFcbiIsCiAgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsK ICAgICAgICAgcmMgPSAtRU5PTUVNOwogICAgICAgICBnb3RvIG91dDsKQEAgLTM3MCw3ICszNzAs NyBAQCBzdGF0aWMgaW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbWVt Y3B5KGVsZi0+c2VjW2ldLmxvYWRfYWRkciwgZWxmLT5zZWNbaV0uZGF0YSwKICAgICAgICAgICAg ICAgICAgICAgICAgZWxmLT5zZWNbaV0uc2VjLT5zaF9zaXplKTsKLSAgICAgICAgICAgICAgICBk cHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IExvYWRlZCAlcyBhdCAlcFxuIiwKKyAg ICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENIICIlczogTG9hZGVk ICVzIGF0ICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnNl Y1tpXS5uYW1lLCBlbGYtPnNlY1tpXS5sb2FkX2FkZHIpOwogICAgICAgICAgICAgfQogICAgICAg ICAgICAgZWxzZQpAQCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyBpbnQgbW92ZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpwYXlsb2FkLCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKICAgICByZXR1 cm4gcmM7CiB9CiAKLXN0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBh eWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQorc3RhdGljIGludCBzZWN1cmVfcGF5bG9h ZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZikKIHsK ICAgICBpbnQgcmM7CiAgICAgdW5zaWduZWQgaW50IHRleHRfcGFnZXMsIHJ3X3BhZ2VzLCByb19w YWdlczsKQEAgLTM5Miw1NyArMzkyLDU3IEBAIHN0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQoc3Ry dWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAgIHRleHRf cGFnZXMgPSBQRk5fVVAocGF5bG9hZC0+dGV4dF9zaXplKTsKICAgICBBU1NFUlQodGV4dF9wYWdl cyk7CiAKLSAgICByYyA9IGFyY2hfeHNwbGljZV9zZWN1cmUocGF5bG9hZC0+dGV4dF9hZGRyLCB0 ZXh0X3BhZ2VzLCBYU1BMSUNFX1ZBX1JYKTsKKyAgICByYyA9IGFyY2hfbGl2ZXBhdGNoX3NlY3Vy ZShwYXlsb2FkLT50ZXh0X2FkZHIsIHRleHRfcGFnZXMsIExJVkVQQVRDSF9WQV9SWCk7CiAgICAg aWYgKCByYyApCiAgICAgICAgIHJldHVybiByYzsKIAogICAgIHJ3X3BhZ2VzID0gUEZOX1VQKHBh eWxvYWQtPnJ3X3NpemUpOwogICAgIGlmICggcndfcGFnZXMgKQogICAgIHsKLSAgICAgICAgcmMg PSBhcmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxvYWQtPnJ3X2FkZHIsIHJ3X3BhZ2VzLCBYU1BMSUNF X1ZBX1JXKTsKKyAgICAgICAgcmMgPSBhcmNoX2xpdmVwYXRjaF9zZWN1cmUocGF5bG9hZC0+cndf YWRkciwgcndfcGFnZXMsIExJVkVQQVRDSF9WQV9SVyk7CiAgICAgICAgIGlmICggcmMgKQogICAg ICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIHJvX3BhZ2VzID0gUEZOX1VQKHBheWxv YWQtPnJvX3NpemUpOwogICAgIGlmICggcm9fcGFnZXMgKQotICAgICAgICByYyA9IGFyY2hfeHNw bGljZV9zZWN1cmUocGF5bG9hZC0+cm9fYWRkciwgcm9fcGFnZXMsIFhTUExJQ0VfVkFfUk8pOwor ICAgICAgICByYyA9IGFyY2hfbGl2ZXBhdGNoX3NlY3VyZShwYXlsb2FkLT5yb19hZGRyLCByb19w YWdlcywgTElWRVBBVENIX1ZBX1JPKTsKIAogICAgIEFTU0VSVChyb19wYWdlcyArIHJ3X3BhZ2Vz ICsgdGV4dF9wYWdlcyA9PSBwYXlsb2FkLT5wYWdlcyk7CiAKICAgICByZXR1cm4gcmM7CiB9CiAK LXN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9zZWN0aW9ucyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZikKK3N0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9zZWN0aW9ucyhjb25zdCBzdHJ1Y3Qg bGl2ZXBhdGNoX2VsZiAqZWxmKQogewogICAgIHVuc2lnbmVkIGludCBpOwotICAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyBFTEZfWFNQTElDRV9GVU5DLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTEZfWFNQTElDRV9ERVBFTkRTLAorICAg IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyBFTEZfTElWRVBBVENIX0ZVTkMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVMRl9MSVZFUEFUQ0hf REVQRU5EUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUxGX0JV SUxEX0lEX05PVEV9OwogICAgIERFQ0xBUkVfQklUTUFQKGZvdW5kLCBBUlJBWV9TSVpFKG5hbWVz KSkgPSB7IDAgfTsKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShuYW1lcyk7IGkr KyApCiAgICAgewotICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7Cisg ICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqc2VjOwogCi0gICAgICAgIHNl YyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGVsZiwgbmFtZXNbaV0pOworICAgICAgICBzZWMg PSBsaXZlcGF0Y2hfZWxmX3NlY19ieV9uYW1lKGVsZiwgbmFtZXNbaV0pOwogICAgICAgICBpZiAo ICFzZWMgKQogICAgICAgICB7Ci0gICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJ Q0UgIiVzOiAlcyBpcyBtaXNzaW5nIVxuIiwKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgTElWRVBBVENIICIlczogJXMgaXMgbWlzc2luZyFcbiIsCiAgICAgICAgICAgICAgICAgICAg IGVsZi0+bmFtZSwgbmFtZXNbaV0pOwogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAg ICAgIH0KIAogICAgICAgICBpZiAoICFzZWMtPnNlYy0+c2hfc2l6ZSApCiAgICAgICAgIHsKLSAg ICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6ICVzIGlzIGVtcHR5IVxu IiwKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogJXMgaXMg ZW1wdHkhXG4iLAogICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIG5hbWVzW2ldKTsKICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCB0ZXN0 X2FuZF9zZXRfYml0KGksIGZvdW5kKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRwcmludGso WEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6ICVzIHdhcyBzZWVuIG1vcmUgdGhhbiBvbmNlIVxuIiwK KyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogJXMgd2FzIHNl ZW4gbW9yZSB0aGFuIG9uY2UhXG4iLAogICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIG5h bWVzW2ldKTsKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9CkBAIC00NTIs MTkgKzQ1MiwxOSBAQCBzdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfc2VjdGlvbnMoY29uc3Qgc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYpCiB9CiAKIHN0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhzcGxpY2VfZWxmICplbGYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGl2 ZXBhdGNoX2VsZiAqZWxmKQogewotICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNl YzsKKyAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnNlYzsKICAgICB1bnNpZ25l ZCBpbnQgaTsKLSAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmOworICAgIHN0cnVjdCBs aXZlcGF0Y2hfZnVuYyAqZjsKICAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsKICAg ICBjb25zdCBFbGZfTm90ZSAqbjsKIAotICAgIHNlYyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1l KGVsZiwgRUxGX1hTUExJQ0VfRlVOQyk7CisgICAgc2VjID0gbGl2ZXBhdGNoX2VsZl9zZWNfYnlf bmFtZShlbGYsIEVMRl9MSVZFUEFUQ0hfRlVOQyk7CiAgICAgQVNTRVJUKHNlYyk7CiAgICAgaWYg KCBzZWMtPnNlYy0+c2hfc2l6ZSAlIHNpemVvZigqcGF5bG9hZC0+ZnVuY3MpICkKICAgICB7Ci0g ICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFdyb25nIHNpemUgb2YgIkVM Rl9YU1BMSUNFX0ZVTkMiIVxuIiwKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFU Q0ggIiVzOiBXcm9uZyBzaXplIG9mICJFTEZfTElWRVBBVENIX0ZVTkMiIVxuIiwKICAgICAgICAg ICAgICAgICBlbGYtPm5hbWUpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CkBAIC00 NzgsMjEgKzQ3OCwyMSBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9h ZCAqcGF5bG9hZCwKIAogICAgICAgICBmID0gJihwYXlsb2FkLT5mdW5jc1tpXSk7CiAKLSAgICAg ICAgaWYgKCBmLT52ZXJzaW9uICE9IFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OICkKKyAgICAgICAg aWYgKCBmLT52ZXJzaW9uICE9IExJVkVQQVRDSF9QQVlMT0FEX1ZFUlNJT04gKQogICAgICAgICB7 Ci0gICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBXcm9uZyB2ZXJz aW9uICgldSkuIEV4cGVjdGVkICVkIVxuIiwKLSAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1l LCBmLT52ZXJzaW9uLCBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTik7CisgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFdyb25nIHZlcnNpb24gKCV1KS4gRXhwZWN0 ZWQgJWQhXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGYtPnZlcnNpb24sIExJ VkVQQVRDSF9QQVlMT0FEX1ZFUlNJT04pOwogICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQ OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCAhZi0+bmV3X2FkZHIgfHwgIWYtPm5ld19zaXpl ICkKICAgICAgICAgewotICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIl czogQWRkcmVzcyBvciBzaXplIGZpZWxkcyBhcmUgemVybyFcbiIsCisgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IEFkZHJlc3Mgb3Igc2l6ZSBmaWVsZHMgYXJl IHplcm8hXG4iLAogICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOwogICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7CiAgICAgICAgIH0KIAotICAgICAgICByYyA9IGFyY2hfeHNwbGljZV92 ZXJpZnlfZnVuYyhmKTsKKyAgICAgICAgcmMgPSBhcmNoX2xpdmVwYXRjaF92ZXJpZnlfZnVuYyhm KTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAgICByZXR1cm4gcmM7CiAKQEAgLTUwMiwy MCArNTAyLDIwIEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpw YXlsb2FkLAogICAgICAgICAgICAgZi0+b2xkX2FkZHIgPSAodm9pZCAqKXN5bWJvbHNfbG9va3Vw X2J5X25hbWUoZi0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoICFmLT5vbGRfYWRkciApCiAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZi0+b2xkX2FkZHIgPSAodm9pZCAqKXhzcGxpY2Vf c3ltYm9sc19sb29rdXBfYnlfbmFtZShmLT5uYW1lKTsKKyAgICAgICAgICAgICAgICBmLT5vbGRf YWRkciA9ICh2b2lkICopbGl2ZXBhdGNoX3N5bWJvbHNfbG9va3VwX2J5X25hbWUoZi0+bmFtZSk7 CiAgICAgICAgICAgICAgICAgaWYgKCAhZi0+b2xkX2FkZHIgKQogICAgICAgICAgICAgICAgIHsK LSAgICAgICAgICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogQ291 bGQgbm90IHJlc29sdmUgb2xkIGFkZHJlc3Mgb2YgJXNcbiIsCisgICAgICAgICAgICAgICAgICAg IGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogQ291bGQgbm90IHJlc29sdmUgb2xk IGFkZHJlc3Mgb2YgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1l LCBmLT5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVC VUcsIFhTUExJQ0UgIiVzOiBSZXNvbHZlZCBvbGQgYWRkcmVzcyAlcyA9PiAlcFxuIiwKKyAgICAg ICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBMSVZFUEFUQ0ggIiVzOiBSZXNvbHZlZCBvbGQg YWRkcmVzcyAlcyA9PiAlcFxuIiwKICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBmLT5u YW1lLCBmLT5vbGRfYWRkcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzZWMgPSB4c3BsaWNl X2VsZl9zZWNfYnlfbmFtZShlbGYsIEVMRl9CVUlMRF9JRF9OT1RFKTsKKyAgICBzZWMgPSBsaXZl cGF0Y2hfZWxmX3NlY19ieV9uYW1lKGVsZiwgRUxGX0JVSUxEX0lEX05PVEUpOwogICAgIGlmICgg c2VjICkKICAgICB7CiAgICAgICAgIGNvbnN0IHN0cnVjdCBwYXlsb2FkICpkYXRhOwpAQCAtNTQw LDE0ICs1NDAsMTQgQEAgc3RhdGljIGludCBwcmVwYXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQg KnBheWxvYWQsCiAgICAgICAgICAgICBpZiAoIGRhdGEtPmlkLmxlbiA9PSBwYXlsb2FkLT5pZC5s ZW4gJiYKICAgICAgICAgICAgICAgICAgIW1lbWNtcChkYXRhLT5pZC5wLCBwYXlsb2FkLT5pZC5w LCBkYXRhLT5pZC5sZW4pICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkcHJpbnRr KFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IEFscmVhZHkgbG9hZGVkIGFzICVzIVxuIiwKKyAg ICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENIICIlczogQWxyZWFk eSBsb2FkZWQgYXMgJXMhXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBk YXRhLT5uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLUVFWElTVDsKICAgICAgICAgICAg IH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHNlYyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1l KGVsZiwgRUxGX1hTUExJQ0VfREVQRU5EUyk7CisgICAgc2VjID0gbGl2ZXBhdGNoX2VsZl9zZWNf YnlfbmFtZShlbGYsIEVMRl9MSVZFUEFUQ0hfREVQRU5EUyk7CiAgICAgaWYgKCBzZWMgKQogICAg IHsKICAgICAgICAgbiA9IHNlYy0+bG9hZF9hZGRyOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHN0YXRp YyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAogICAgIC8qIFNl dHVwIHRoZSB2aXJ0dWFsIHJlZ2lvbiB3aXRoIHByb3BlciBkYXRhLiAqLwogICAgIHJlZ2lvbiA9 ICZwYXlsb2FkLT5yZWdpb247CiAKLSAgICByZWdpb24tPnN5bWJvbHNfbG9va3VwID0geHNwbGlj ZV9zeW1ib2xzX2xvb2t1cDsKKyAgICByZWdpb24tPnN5bWJvbHNfbG9va3VwID0gbGl2ZXBhdGNo X3N5bWJvbHNfbG9va3VwOwogICAgIHJlZ2lvbi0+c3RhcnQgPSBwYXlsb2FkLT50ZXh0X2FkZHI7 CiAgICAgcmVnaW9uLT5lbmQgPSBwYXlsb2FkLT50ZXh0X2FkZHIgKyBwYXlsb2FkLT50ZXh0X3Np emU7CiAKQEAgLTU3NiwxMyArNTc2LDEzIEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpwYXlsb2FkLAogICAgICAgICBjaGFyIHN0clsxNF07CiAKICAgICAgICAg c25wcmludGYoc3RyLCBzaXplb2Yoc3RyKSwgIi5idWdfZnJhbWVzLiV1IiwgaSk7Ci0gICAgICAg IHNlYyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGVsZiwgc3RyKTsKKyAgICAgICAgc2VjID0g bGl2ZXBhdGNoX2VsZl9zZWNfYnlfbmFtZShlbGYsIHN0cik7CiAgICAgICAgIGlmICggIXNlYyAp CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIHNlYy0+c2VjLT5zaF9zaXpl ICUgc2l6ZW9mKCpyZWdpb24tPmZyYW1lW2ldLmJ1Z3MpICkKICAgICAgICAgewotICAgICAgICAg ICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogV3Jvbmcgc2l6ZSBvZiAuYnVnX2Zy YW1lcy4ldSFcbiIsCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAi JXM6IFdyb25nIHNpemUgb2YgLmJ1Z19mcmFtZXMuJXUhXG4iLAogICAgICAgICAgICAgICAgICAg ICBlbGYtPm5hbWUsIGkpOwogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgICAgIH0K QEAgLTU5MywxNCArNTkzLDE0IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBw YXlsb2FkICpwYXlsb2FkLAogICAgIH0KIAogI2lmbmRlZiBDT05GSUdfQVJNCi0gICAgc2VjID0g eHNwbGljZV9lbGZfc2VjX2J5X25hbWUoZWxmLCAiLmFsdGluc3RydWN0aW9ucyIpOworICAgIHNl YyA9IGxpdmVwYXRjaF9lbGZfc2VjX2J5X25hbWUoZWxmLCAiLmFsdGluc3RydWN0aW9ucyIpOwog ICAgIGlmICggc2VjICkKICAgICB7CiAgICAgICAgIHN0cnVjdCBhbHRfaW5zdHIgKmEsICpzdGFy dCwgKmVuZDsKIAogICAgICAgICBpZiAoIHNlYy0+c2VjLT5zaF9zaXplICUgc2l6ZW9mKCphKSAp CiAgICAgICAgIHsKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6 IFNpemUgb2YgLmFsdF9pbnN0ciBpcyBub3QgbXVsdGlwbGUgb2YgJXp1IVxuIiwKKyAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogU2l6ZSBvZiAuYWx0X2luc3Ry IGlzIG5vdCBtdWx0aXBsZSBvZiAlenUhXG4iLAogICAgICAgICAgICAgICAgICAgICBlbGYtPm5h bWUsIHNpemVvZigqYSkpOwogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgICAgIH0K QEAgLTYxNiw3ICs2MTYsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5bG9hZChzdHJ1Y3QgcGF5 bG9hZCAqcGF5bG9hZCwKICAgICAgICAgICAgIGlmICggKGluc3RyIDwgcmVnaW9uLT5zdGFydCAm JiBpbnN0ciA+PSByZWdpb24tPmVuZCkgfHwKICAgICAgICAgICAgICAgICAgKHJlcGxhY2VtZW50 IDwgcmVnaW9uLT5zdGFydCAmJiByZXBsYWNlbWVudCA+PSByZWdpb24tPmVuZCkgKQogICAgICAg ICAgICAgewotICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXMg QWx0IHBhdGNoaW5nIG91dHNpZGUgcGF5bG9hZDogJXAhXG4iLAorICAgICAgICAgICAgICAgIGRw cmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlcyBBbHQgcGF0Y2hpbmcgb3V0c2lkZSBwYXls b2FkOiAlcCFcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGluc3RyKTsK ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICAgICAgICAgIH0KQEAgLTYyNCw3 ICs2MjQsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5 bG9hZCwKICAgICAgICAgYXBwbHlfYWx0ZXJuYXRpdmVzX25vY2hlY2soc3RhcnQsIGVuZCk7CiAg ICAgfQogCi0gICAgc2VjID0geHNwbGljZV9lbGZfc2VjX2J5X25hbWUoZWxmLCAiLmV4X3RhYmxl Iik7CisgICAgc2VjID0gbGl2ZXBhdGNoX2VsZl9zZWNfYnlfbmFtZShlbGYsICIuZXhfdGFibGUi KTsKICAgICBpZiAoIHNlYyApCiAgICAgewogICAgICAgICBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxl X2VudHJ5ICpzLCAqZTsKQEAgLTYzMiw3ICs2MzIsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5 bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwKICAgICAgICAgaWYgKCAhc2VjLT5zZWMtPnNo X3NpemUgfHwKICAgICAgICAgICAgICAoc2VjLT5zZWMtPnNoX3NpemUgJSBzaXplb2YoKnJlZ2lv bi0+ZXgpKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQ TElDRSAiJXM6IFdyb25nIHNpemUgb2YgLmV4X3RhYmxlIChleHA6JWx1IHZzICVsdSkhXG4iLAor ICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBXcm9uZyBzaXpl IG9mIC5leF90YWJsZSAoZXhwOiVsdSB2cyAlbHUpIVxuIiwKICAgICAgICAgICAgICAgICAgICAg ZWxmLT5uYW1lLCBzaXplb2YoKnJlZ2lvbi0+ZXgpLAogICAgICAgICAgICAgICAgICAgICBzZWMt PnNlYy0+c2hfc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAgLTY1MSw4ICs2 NTEsOCBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9h ZCwKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGJvb2xfdCBpc19wYXlsb2FkX3N5bWJvbChj b25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3N5bSAqc3ltKQorc3RhdGljIGJvb2xfdCBp c19wYXlsb2FkX3N5bWJvbChjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zeW0g KnN5bSkKIHsKICAgICBpZiAoIHN5bS0+c3ltLT5zdF9zaG5keCA9PSBTSE5fVU5ERUYgfHwKICAg ICAgICAgIHN5bS0+c3ltLT5zdF9zaG5keCA+PSBlbGYtPmhkci0+ZV9zaG51bSApCkBAIC02ODgs MTEgKzY4OCwxMSBAQCBzdGF0aWMgYm9vbF90IGlzX3BheWxvYWRfc3ltYm9sKGNvbnN0IHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLAogfQogCiBzdGF0aWMgaW50IGJ1aWxkX3N5bWJvbF90YWJsZShz dHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZikKIHsKICAgICB1bnNpZ25lZCBpbnQg aSwgaiwgbnN5bXMgPSAwOwogICAgIHNpemVfdCBzdHJ0YWJfbGVuID0gMDsKLSAgICBzdHJ1Y3Qg eHNwbGljZV9zeW1ib2wgKnN5bXRhYjsKKyAgICBzdHJ1Y3QgbGl2ZXBhdGNoX3N5bWJvbCAqc3lt dGFiOwogICAgIGNoYXIgKnN0cnRhYjsKIAogICAgIEFTU0VSVChwYXlsb2FkLT5uZnVuY3MpOwpA QCAtNzA3LDcgKzcwNyw3IEBAIHN0YXRpYyBpbnQgYnVpbGRfc3ltYm9sX3RhYmxlKHN0cnVjdCBw YXlsb2FkICpwYXlsb2FkLAogICAgICAgICB9CiAgICAgfQogCi0gICAgc3ltdGFiID0geG1hbGxv Y19hcnJheShzdHJ1Y3QgeHNwbGljZV9zeW1ib2wsIG5zeW1zKTsKKyAgICBzeW10YWIgPSB4bWFs bG9jX2FycmF5KHN0cnVjdCBsaXZlcGF0Y2hfc3ltYm9sLCBuc3ltcyk7CiAgICAgc3RydGFiID0g eG1hbGxvY19hcnJheShjaGFyLCBzdHJ0YWJfbGVuKTsKIAogICAgIGlmICggIXN0cnRhYiB8fCAh c3ltdGFiICkKQEAgLTc0OSwyMiArNzQ5LDIyIEBAIHN0YXRpYyBpbnQgYnVpbGRfc3ltYm9sX3Rh YmxlKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAogICAgICAgICBpZiAoICFmb3VuZCApCiAgICAg ICAgIHsKICAgICAgICAgICAgIGlmICggc3ltYm9sc19sb29rdXBfYnlfbmFtZShzeW10YWJbaV0u bmFtZSkgfHwKLSAgICAgICAgICAgICAgICAgeHNwbGljZV9zeW1ib2xzX2xvb2t1cF9ieV9uYW1l KHN5bXRhYltpXS5uYW1lKSApCisgICAgICAgICAgICAgICAgIGxpdmVwYXRjaF9zeW1ib2xzX2xv b2t1cF9ieV9uYW1lKHN5bXRhYltpXS5uYW1lKSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogZHVwbGljYXRlIG5ldyBzeW1i b2w6ICVzXG4iLAorICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENI ICIlczogZHVwbGljYXRlIG5ldyBzeW1ib2w6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lLCBzeW10YWJbaV0ubmFtZSk7CiAgICAgICAgICAgICAgICAgeGZyZWUoc3lt dGFiKTsKICAgICAgICAgICAgICAgICB4ZnJlZShzdHJ0YWIpOwogICAgICAgICAgICAgICAgIHJl dHVybiAtRUVYSVNUOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3ltdGFiW2ldLm5ld19z eW1ib2wgPSAxOwotICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVz OiBuZXcgc3ltYm9sICVzXG4iLAorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIExJ VkVQQVRDSCAiJXM6IG5ldyBzeW1ib2wgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICBlbGYt Pm5hbWUsIHN5bXRhYltpXS5uYW1lKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg IHsKICAgICAgICAgICAgIC8qIG5ld19zeW1ib2wgaXMgbm90IHNldC4gKi8KLSAgICAgICAgICAg IGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogb3ZlcnJpZGluZyBzeW1ib2wgJXNc biIsCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENIICIlczogb3Zl cnJpZGluZyBzeW1ib2wgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgc3lt dGFiW2ldLm5hbWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzkwLDEwICs3OTAsMTAgQEAgc3Rh dGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQogCiBzdGF0aWMgaW50 IGxvYWRfcGF5bG9hZF9kYXRhKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCB2b2lkICpyYXcsIHNp emVfdCBsZW4pCiB7Ci0gICAgc3RydWN0IHhzcGxpY2VfZWxmIGVsZiA9IHsgLm5hbWUgPSBwYXls b2FkLT5uYW1lLCAubGVuID0gbGVuIH07CisgICAgc3RydWN0IGxpdmVwYXRjaF9lbGYgZWxmID0g eyAubmFtZSA9IHBheWxvYWQtPm5hbWUsIC5sZW4gPSBsZW4gfTsKICAgICBpbnQgcmMgPSAwOwog Ci0gICAgcmMgPSB4c3BsaWNlX2VsZl9sb2FkKCZlbGYsIHJhdyk7CisgICAgcmMgPSBsaXZlcGF0 Y2hfZWxmX2xvYWQoJmVsZiwgcmF3KTsKICAgICBpZiAoIHJjICkKICAgICAgICAgZ290byBvdXQ7 CiAKQEAgLTgwMSwxMSArODAxLDExIEBAIHN0YXRpYyBpbnQgbG9hZF9wYXlsb2FkX2RhdGEoc3Ry dWN0IHBheWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc2l6ZV90IGxlbikKICAgICBpZiAoIHJj ICkKICAgICAgICAgZ290byBvdXQ7CiAKLSAgICByYyA9IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3lt Ym9scygmZWxmKTsKKyAgICByYyA9IGxpdmVwYXRjaF9lbGZfcmVzb2x2ZV9zeW1ib2xzKCZlbGYp OwogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIG91dDsKIAotICAgIHJjID0geHNwbGljZV9l bGZfcGVyZm9ybV9yZWxvY3MoJmVsZik7CisgICAgcmMgPSBsaXZlcGF0Y2hfZWxmX3BlcmZvcm1f cmVsb2NzKCZlbGYpOwogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIG91dDsKIApAQCAtODI4 LDE1ICs4MjgsMTUgQEAgc3RhdGljIGludCBsb2FkX3BheWxvYWRfZGF0YShzdHJ1Y3QgcGF5bG9h ZCAqcGF5bG9hZCwgdm9pZCAqcmF3LCBzaXplX3QgbGVuKQogICAgICAgICBmcmVlX3BheWxvYWRf ZGF0YShwYXlsb2FkKTsKIAogICAgIC8qIEZyZWUgb3VyIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVy ZS4gKi8KLSAgICB4c3BsaWNlX2VsZl9mcmVlKCZlbGYpOworICAgIGxpdmVwYXRjaF9lbGZfZnJl ZSgmZWxmKTsKIAogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIGludCB4c3BsaWNlX3VwbG9h ZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKK3N0YXRpYyBpbnQgbGl2ZXBh dGNoX3VwbG9hZCh4ZW5fc3lzY3RsX2xpdmVwYXRjaF91cGxvYWRfdCAqdXBsb2FkKQogewogICAg IHN0cnVjdCBwYXlsb2FkICpkYXRhLCAqZm91bmQ7Ci0gICAgY2hhciBuW1hFTl9YU1BMSUNFX05B TUVfU0laRV07CisgICAgY2hhciBuW1hFTl9MSVZFUEFUQ0hfTkFNRV9TSVpFXTsKICAgICB2b2lk ICpyYXdfZGF0YTsKICAgICBpbnQgcmM7CiAKQEAgLTg2Niw3ICs4NjYsNyBAQCBzdGF0aWMgaW50 IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogICAg ICAgICBpZiAoIHJjICkKICAgICAgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgIGRhdGEtPnN0 YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICBkYXRhLT5zdGF0ZSA9IExJVkVQ QVRDSF9TVEFURV9DSEVDS0VEOwogICAgICAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+bGlzdCk7 CiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5hcHBsaWVkX2xpc3QpOwogCkBAIC04OTAs MTEgKzg5MCwxMSBAQCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGlj ZV91cGxvYWRfdCAqdXBsb2FkKQogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIGludCB4c3Bs aWNlX2dldCh4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0X3QgKmdldCkKK3N0YXRpYyBpbnQgbGl2ZXBh dGNoX2dldCh4ZW5fc3lzY3RsX2xpdmVwYXRjaF9nZXRfdCAqZ2V0KQogewogICAgIHN0cnVjdCBw YXlsb2FkICpkYXRhOwogICAgIGludCByYzsKLSAgICBjaGFyIG5bWEVOX1hTUExJQ0VfTkFNRV9T SVpFXTsKKyAgICBjaGFyIG5bWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkVdOwogCiAgICAgcmMgPSBn ZXRfbmFtZSgmZ2V0LT5uYW1lLCBuKTsKICAgICBpZiAoIHJjICkKQEAgLTkyMSw5ICs5MjEsOSBA QCBzdGF0aWMgaW50IHhzcGxpY2VfZ2V0KHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCAqZ2V0KQog ICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHhzcGxpY2VfbGlzdCh4ZW5fc3lzY3RsX3hz cGxpY2VfbGlzdF90ICpsaXN0KQorc3RhdGljIGludCBsaXZlcGF0Y2hfbGlzdCh4ZW5fc3lzY3Rs X2xpdmVwYXRjaF9saXN0X3QgKmxpc3QpCiB7Ci0gICAgeGVuX3hzcGxpY2Vfc3RhdHVzX3Qgc3Rh dHVzOworICAgIHhlbl9saXZlcGF0Y2hfc3RhdHVzX3Qgc3RhdHVzOwogICAgIHN0cnVjdCBwYXls b2FkICpkYXRhOwogICAgIHVuc2lnbmVkIGludCBpZHggPSAwLCBpID0gMDsKICAgICBpbnQgcmMg PSAwOwpAQCAtOTM2LDcgKzkzNiw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9saXN0KHhlbl9zeXNj dGxfeHNwbGljZV9saXN0X3QgKmxpc3QpCiAKICAgICBpZiAoIGxpc3QtPm5yICYmCiAgICAgICAg ICAoIWd1ZXN0X2hhbmRsZV9va2F5KGxpc3QtPnN0YXR1cywgbGlzdC0+bnIpIHx8Ci0gICAgICAg ICAgIWd1ZXN0X2hhbmRsZV9va2F5KGxpc3QtPm5hbWUsIFhFTl9YU1BMSUNFX05BTUVfU0laRSAq IGxpc3QtPm5yKSB8fAorICAgICAgICAgICFndWVzdF9oYW5kbGVfb2theShsaXN0LT5uYW1lLCBY RU5fTElWRVBBVENIX05BTUVfU0laRSAqIGxpc3QtPm5yKSB8fAogICAgICAgICAgICFndWVzdF9o YW5kbGVfb2theShsaXN0LT5sZW4sIGxpc3QtPm5yKSkgKQogICAgICAgICByZXR1cm4gLUVJTlZB TDsKIApAQCAtOTYxLDcgKzk2MSw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9saXN0KHhlbl9zeXNj dGxfeHNwbGljZV9saXN0X3QgKmxpc3QpCiAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YS0+ bmFtZSkgKyAxOwogCiAgICAgICAgICAgICAvKiBOLkIuICdpZHgnICE9ICdpJy4gKi8KLSAgICAg ICAgICAgIGlmICggX19jb3B5X3RvX2d1ZXN0X29mZnNldChsaXN0LT5uYW1lLCBpZHggKiBYRU5f WFNQTElDRV9OQU1FX1NJWkUsCisgICAgICAgICAgICBpZiAoIF9fY29weV90b19ndWVzdF9vZmZz ZXQobGlzdC0+bmFtZSwgaWR4ICogWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bmFtZSwgbGVuKSB8fAogICAgICAg ICAgICAgICAgIF9fY29weV90b19ndWVzdF9vZmZzZXQobGlzdC0+bGVuLCBpZHgsICZsZW4sIDEp IHx8CiAgICAgICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0X29mZnNldChsaXN0LT5zdGF0dXMs IGlkeCwgJnN0YXR1cywgMSkgKQpAQCAtOTg3LDIyICs5ODcsMjIgQEAgc3RhdGljIGludCB4c3Bs aWNlX2xpc3QoeGVuX3N5c2N0bF94c3BsaWNlX2xpc3RfdCAqbGlzdCkKIC8qCiAgKiBUaGUgZm9s bG93aW5nIGZ1bmN0aW9ucyBnZXQgdGhlIENQVXMgaW50byBhbiBhcHByb3ByaWF0ZSBzdGF0ZSBh bmQKICAqIGFwcGx5IChvciByZXZlcnQpIGVhY2ggb2YgdGhlIHBheWxvYWQncyBmdW5jdGlvbnMu IFRoaXMgaXMgbmVlZGVkCi0gKiBmb3IgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiBvcGVyYXRp b24gKHNlZSB4c3BsaWNlX2FjdGlvbikuCisgKiBmb3IgWEVOX1NZU0NUTF9MSVZFUEFUQ0hfQUNU SU9OIG9wZXJhdGlvbiAoc2VlIGxpdmVwYXRjaF9hY3Rpb24pLgogICovCiAKIHN0YXRpYyBpbnQg YXBwbHlfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKIHsKICAgICB1bnNpZ25lZCBpbnQg aTsKIAotICAgIHByaW50ayhYRU5MT0dfSU5GTyBYU1BMSUNFICIlczogQXBwbHlpbmcgJXUgZnVu Y3Rpb25zXG4iLAorICAgIHByaW50ayhYRU5MT0dfSU5GTyBMSVZFUEFUQ0ggIiVzOiBBcHBseWlu ZyAldSBmdW5jdGlvbnNcbiIsCiAgICAgICAgICAgICBkYXRhLT5uYW1lLCBkYXRhLT5uZnVuY3Mp OwogCi0gICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVyKCk7CisgICAgYXJjaF9saXZlcGF0 Y2hfZW50ZXIoKTsKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQot ICAgICAgICBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKCZkYXRhLT5mdW5jc1tpXSk7CisgICAgICAg IGFyY2hfbGl2ZXBhdGNoX2FwcGx5X2ptcCgmZGF0YS0+ZnVuY3NbaV0pOwogCi0gICAgYXJjaF94 c3BsaWNlX3BhdGNoaW5nX2xlYXZlKCk7CisgICAgYXJjaF9saXZlcGF0Y2hfbGVhdmUoKTsKIAog ICAgIC8qCiAgICAgICogV2UgbmVlZCBSQ1UgdmFyaWFudCAod2hpY2ggaGFzIGJhcnJpZXJzKSBp biBjYXNlIHdlIGNyYXNoIGhlcmUuCkBAIC0xMDE4LDE0ICsxMDE4LDE0IEBAIHN0YXRpYyBpbnQg cmV2ZXJ0X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCiB7CiAgICAgdW5zaWduZWQgaW50 IGk7CiAKLSAgICBwcmludGsoWEVOTE9HX0lORk8gWFNQTElDRSAiJXM6IFJldmVydGluZ1xuIiwg ZGF0YS0+bmFtZSk7CisgICAgcHJpbnRrKFhFTkxPR19JTkZPIExJVkVQQVRDSCAiJXM6IFJldmVy dGluZ1xuIiwgZGF0YS0+bmFtZSk7CiAKLSAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIo KTsKKyAgICBhcmNoX2xpdmVwYXRjaF9lbnRlcigpOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBk YXRhLT5uZnVuY3M7IGkrKyApCi0gICAgICAgIGFyY2hfeHNwbGljZV9yZXZlcnRfam1wKCZkYXRh LT5mdW5jc1tpXSk7CisgICAgICAgIGFyY2hfbGl2ZXBhdGNoX3JldmVydF9qbXAoJmRhdGEtPmZ1 bmNzW2ldKTsKIAotICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSgpOworICAgIGFyY2hf bGl2ZXBhdGNoX2xlYXZlKCk7CiAKICAgICAvKgogICAgICAqIFdlIG5lZWQgUkNVIHZhcmlhbnQg KHdoaWNoIGhhcyBiYXJyaWVycykgaW4gY2FzZSB3ZSBjcmFzaCBoZXJlLgpAQCAtMTA0MSwzMSAr MTA0MSwzMSBAQCBzdGF0aWMgaW50IHJldmVydF9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRh KQogICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcgYWxsIG90aGVyIENQVXMgd2l0 aCBubyBkZWVwIHN0YWNrICh3ZSBtYXkKICAqIGhhdmUgY3B1X2lkbGUgb24gaXQpIGFuZCBJUlFz IGRpc2FibGVkLgogICovCi1zdGF0aWMgdm9pZCB4c3BsaWNlX2RvX2FjdGlvbih2b2lkKQorc3Rh dGljIHZvaWQgbGl2ZXBhdGNoX2RvX2FjdGlvbih2b2lkKQogewogICAgIGludCByYzsKICAgICBz dHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKm90aGVyLCAqdG1wOwogCi0gICAgZGF0YSA9IHhzcGxpY2Vf d29yay5kYXRhOworICAgIGRhdGEgPSBsaXZlcGF0Y2hfd29yay5kYXRhOwogICAgIC8qCiAgICAg ICogVGhpcyBmdW5jdGlvbiBhbmQgdGhlIHRyYW5zaXRpb24gZnJvbSBhc20gdG8gQyBjb2RlIHNo b3VsZCBiZSB0aGUgb25seQogICAgICAqIG9uZSBvbiBhbnkgc3RhY2suIE5vIG5lZWQgdG8gbG9j ayB0aGUgcGF5bG9hZCBsaXN0IG9yIGFwcGxpZWQgbGlzdC4KICAgICAgKi8KLSAgICBzd2l0Y2gg KCB4c3BsaWNlX3dvcmsuY21kICkKKyAgICBzd2l0Y2ggKCBsaXZlcGF0Y2hfd29yay5jbWQgKQog ICAgIHsKLSAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0FQUExZOgorICAgIGNhc2UgTElWRVBBVENI X0FDVElPTl9BUFBMWToKICAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEpOwogICAgICAg ICBpZiAoIHJjID09IDAgKQotICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRF X0FQUExJRUQ7CisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IExJVkVQQVRDSF9TVEFURV9BUFBM SUVEOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgor ICAgIGNhc2UgTElWRVBBVENIX0FDVElPTl9SRVZFUlQ6CiAgICAgICAgIHJjID0gcmV2ZXJ0X3Bh eWxvYWQoZGF0YSk7CiAgICAgICAgIGlmICggcmMgPT0gMCApCi0gICAgICAgICAgICBkYXRhLT5z dGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0g TElWRVBBVENIX1NUQVRFX0NIRUNLRUQ7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBYU1BM SUNFX0FDVElPTl9SRVBMQUNFOgorICAgIGNhc2UgTElWRVBBVENIX0FDVElPTl9SRVBMQUNFOgog ICAgICAgICByYyA9IDA7CiAgICAgICAgIC8qCiAJICogTi5COiBVc2UgJ2FwcGxpZWRfbGlzdCcg bWVtYmVyLCBub3QgJ2xpc3QnLiBXZSBhbHNvIGFidXNlIHRoZQpAQCAtMTA3NSw3ICsxMDc1LDcg QEAgc3RhdGljIHZvaWQgeHNwbGljZV9kb19hY3Rpb24odm9pZCkKICAgICAgICAgewogICAgICAg ICAgICAgb3RoZXItPnJjID0gcmV2ZXJ0X3BheWxvYWQob3RoZXIpOwogICAgICAgICAgICAgaWYg KCBvdGhlci0+cmMgPT0gMCApCi0gICAgICAgICAgICAgICAgb3RoZXItPnN0YXRlID0gWFNQTElD RV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgICAgIG90aGVyLT5zdGF0ZSA9IExJVkVQQVRD SF9TVEFURV9DSEVDS0VEOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgIHJjID0gLUVJTlZBTDsKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHN0YXRpYyB2b2lk IHhzcGxpY2VfZG9fYWN0aW9uKHZvaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJjID0gYXBw bHlfcGF5bG9hZChkYXRhKTsKICAgICAgICAgICAgIGlmICggcmMgPT0gMCApCi0gICAgICAgICAg ICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0FQUExJRUQ7CisgICAgICAgICAgICAg ICAgZGF0YS0+c3RhdGUgPSBMSVZFUEFUQ0hfU1RBVEVfQVBQTElFRDsKICAgICAgICAgfQogICAg ICAgICBicmVhazsKIApAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgc3RhdGljIHZvaWQgeHNwbGljZV9k b19hY3Rpb24odm9pZCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgLyogV2UgbXVzdCBz ZXQgcmMgYXMgeHNwbGljZV9hY3Rpb24gc2V0cyBpdCB0byAtRUFHQUlOIHdoZW4ga2lja2luZyBv Zi4gKi8KKyAgICAvKiBXZSBtdXN0IHNldCByYyBhcyBsaXZlcGF0Y2hfYWN0aW9uIHNldHMgaXQg dG8gLUVBR0FJTiB3aGVuIGtpY2tpbmcgb2YuICovCiAgICAgZGF0YS0+cmMgPSByYzsKIH0KIApA QCAtMTEwNSw3ICsxMTA1LDcgQEAgc3RhdGljIGJvb2xfdCBpc193b3JrX3NjaGVkdWxlZChjb25z dCBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKIHsKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBh eWxvYWRfbG9jaykpOwogCi0gICAgcmV0dXJuIHhzcGxpY2Vfd29yay5kb193b3JrICYmIHhzcGxp Y2Vfd29yay5kYXRhID09IGRhdGE7CisgICAgcmV0dXJuIGxpdmVwYXRjaF93b3JrLmRvX3dvcmsg JiYgbGl2ZXBhdGNoX3dvcmsuZGF0YSA9PSBkYXRhOwogfQogCiBzdGF0aWMgaW50IHNjaGVkdWxl X3dvcmsoc3RydWN0IHBheWxvYWQgKmRhdGEsIHVpbnQzMl90IGNtZCwgdWludDMyX3QgdGltZW91 dCkKQEAgLTExMTMsMzAgKzExMTMsMzAgQEAgc3RhdGljIGludCBzY2hlZHVsZV93b3JrKHN0cnVj dCBwYXlsb2FkICpkYXRhLCB1aW50MzJfdCBjbWQsIHVpbnQzMl90IHRpbWVvdXQpCiAgICAgQVNT RVJUKHNwaW5faXNfbG9ja2VkKCZwYXlsb2FkX2xvY2spKTsKIAogICAgIC8qIEZhaWwgaWYgYW4g b3BlcmF0aW9uIGlzIGFscmVhZHkgc2NoZWR1bGVkLiAqLwotICAgIGlmICggeHNwbGljZV93b3Jr LmRvX3dvcmsgKQorICAgIGlmICggbGl2ZXBhdGNoX3dvcmsuZG9fd29yayApCiAgICAgICAgIHJl dHVybiAtRUJVU1k7CiAKICAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCiAgICAgewotICAgICAg ICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogdW5hYmxlIHRvIGdldCBjcHVfbWFwcyBs b2NrIVxuIiwKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgTElWRVBBVENIICIlczogdW5hYmxl IHRvIGdldCBjcHVfbWFwcyBsb2NrIVxuIiwKICAgICAgICAgICAgICAgIGRhdGEtPm5hbWUpOwog ICAgICAgICByZXR1cm4gLUVCVVNZOwogICAgIH0KIAotICAgIHhzcGxpY2Vfd29yay5jbWQgPSBj bWQ7Ci0gICAgeHNwbGljZV93b3JrLmRhdGEgPSBkYXRhOwotICAgIHhzcGxpY2Vfd29yay50aW1l b3V0ID0gdGltZW91dCA/OiBNSUxMSVNFQ1MoMzApOworICAgIGxpdmVwYXRjaF93b3JrLmNtZCA9 IGNtZDsKKyAgICBsaXZlcGF0Y2hfd29yay5kYXRhID0gZGF0YTsKKyAgICBsaXZlcGF0Y2hfd29y ay50aW1lb3V0ID0gdGltZW91dCA/OiBNSUxMSVNFQ1MoMzApOwogCi0gICAgZHByaW50ayhYRU5M T0dfREVCVUcsIFhTUExJQ0UgIiVzOiB0aW1lb3V0IGlzICUiUFJJX3N0aW1lIm1zXG4iLAotICAg ICAgICAgICAgZGF0YS0+bmFtZSwgeHNwbGljZV93b3JrLnRpbWVvdXQgLyBNSUxMSVNFQ1MoMSkp OworICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBMSVZFUEFUQ0ggIiVzOiB0aW1lb3V0IGlzICUi UFJJX3N0aW1lIm1zXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwgbGl2ZXBhdGNoX3dvcmsu dGltZW91dCAvIE1JTExJU0VDUygxKSk7CiAKLSAgICBhdG9taWNfc2V0KCZ4c3BsaWNlX3dvcmsu c2VtYXBob3JlLCAtMSk7CisgICAgYXRvbWljX3NldCgmbGl2ZXBhdGNoX3dvcmsuc2VtYXBob3Jl LCAtMSk7CiAKLSAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAwOworICAgIGxpdmVwYXRjaF93b3Jr LnJlYWR5ID0gMDsKIAogICAgIHNtcF93bWIoKTsKIAotICAgIHhzcGxpY2Vfd29yay5kb193b3Jr ID0gMTsKKyAgICBsaXZlcGF0Y2hfd29yay5kb193b3JrID0gMTsKICAgICB0aGlzX2NwdSh3b3Jr X3RvX2RvKSA9IDE7CiAKICAgICBwdXRfY3B1X21hcHMoKTsKQEAgLTExNTAsOCArMTE1MCw4IEBA IHN0YXRpYyB2b2lkIHJlc2NoZWR1bGVfZm4odm9pZCAqdW51c2VkKQogICAgIHJhaXNlX3NvZnRp cnEoU0NIRURVTEVfU09GVElSUSk7CiB9CiAKLXN0YXRpYyBpbnQgeHNwbGljZV9zcGluKGF0b21p Y190ICpjb3VudGVyLCBzX3RpbWVfdCB0aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGNwdXMsIGNvbnN0IGNoYXIgKnMpCitzdGF0aWMgaW50IGxpdmVwYXRj aF9zcGluKGF0b21pY190ICpjb3VudGVyLCBzX3RpbWVfdCB0aW1lb3V0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1cywgY29uc3QgY2hhciAqcykKIHsKICAgICBp bnQgcmMgPSAwOwogCkBAIC0xMTYxLDEyICsxMTYxLDEyIEBAIHN0YXRpYyBpbnQgeHNwbGljZV9z cGluKGF0b21pY190ICpjb3VudGVyLCBzX3RpbWVfdCB0aW1lb3V0LAogICAgIC8qIExvZyAmIGFi b3J0LiAqLwogICAgIGlmICggYXRvbWljX3JlYWQoY291bnRlcikgIT0gY3B1cyApCiAgICAgewot ICAgICAgICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogVGltZWQgb3V0IG9uIHNlbWFw aG9yZSBpbiAlcyBxdWllc2NlIHBoYXNlICV1LyV1XG4iLAotICAgICAgICAgICAgICAgeHNwbGlj ZV93b3JrLmRhdGEtPm5hbWUsIHMsIGF0b21pY19yZWFkKGNvdW50ZXIpLCBjcHVzKTsKKyAgICAg ICAgcHJpbnRrKFhFTkxPR19FUlIgTElWRVBBVENIICIlczogVGltZWQgb3V0IG9uIHNlbWFwaG9y ZSBpbiAlcyBxdWllc2NlIHBoYXNlICV1LyV1XG4iLAorICAgICAgICAgICAgICAgbGl2ZXBhdGNo X3dvcmsuZGF0YS0+bmFtZSwgcywgYXRvbWljX3JlYWQoY291bnRlciksIGNwdXMpOwogICAgICAg ICByYyA9IC1FQlVTWTsKLSAgICAgICAgeHNwbGljZV93b3JrLmRhdGEtPnJjID0gcmM7CisgICAg ICAgIGxpdmVwYXRjaF93b3JrLmRhdGEtPnJjID0gcmM7CiAgICAgICAgIHNtcF93bWIoKTsKLSAg ICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsgPSAwOworICAgICAgICBsaXZlcGF0Y2hfd29yay5k b193b3JrID0gMDsKICAgICB9CiAKICAgICByZXR1cm4gcmM7CkBAIC0xMTc2LDkgKzExNzYsOSBA QCBzdGF0aWMgaW50IHhzcGxpY2Vfc3BpbihhdG9taWNfdCAqY291bnRlciwgc190aW1lX3QgdGlt ZW91dCwKICAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIG1hbmFnZXMgdGhlIHdvcmsgb2YgcXVp ZXNjaW5nIHRoZSBzeXN0ZW0gYW5kCiAgKiBwYXRjaGluZyBjb2RlLgogICovCi12b2lkIGNoZWNr X2Zvcl94c3BsaWNlX3dvcmsodm9pZCkKK3ZvaWQgY2hlY2tfZm9yX2xpdmVwYXRjaF93b3JrKHZv aWQpCiB7Ci0jZGVmaW5lIEFDVElPTih4KSBbWFNQTElDRV9BQ1RJT05fIyN4XSA9ICN4CisjZGVm aW5lIEFDVElPTih4KSBbTElWRVBBVENIX0FDVElPTl8jI3hdID0gI3gKICAgICBzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsKICAgICAgICAgICAgIEFDVElPTihBUFBMWSksCiAg ICAgICAgICAgICBBQ1RJT04oUkVWRVJUKSwKQEAgLTExOTUsNyArMTE5NSw3IEBAIHZvaWQgY2hl Y2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKQogCiAgICAgc21wX3JtYigpOwogICAgIC8qIEluIGNh c2Ugd2UgYWJvcnRlZCwgb3RoZXIgQ1BVcyBjYW4gc2tpcCByaWdodCBhd2F5LiAqLwotICAgIGlm ICggIXhzcGxpY2Vfd29yay5kb193b3JrICkKKyAgICBpZiAoICFsaXZlcGF0Y2hfd29yay5kb193 b3JrICkKICAgICB7CiAgICAgICAgIHBlcl9jcHUod29ya190b19kbywgY3B1KSA9IDA7CiAgICAg ICAgIHJldHVybjsKQEAgLTEyMDQsMjIgKzEyMDQsMjIgQEAgdm9pZCBjaGVja19mb3JfeHNwbGlj ZV93b3JrKHZvaWQpCiAgICAgQVNTRVJUKGxvY2FsX2lycV9pc19lbmFibGVkKCkpOwogCiAgICAg LyogU2V0IGF0IC0xLCBzbyB3aWxsIGdvIHVwIHRvIG51bV9vbmxpbmVfY3B1cyAtIDEuICovCi0g ICAgaWYgKCBhdG9taWNfaW5jX2FuZF90ZXN0KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlKSApCisg ICAgaWYgKCBhdG9taWNfaW5jX2FuZF90ZXN0KCZsaXZlcGF0Y2hfd29yay5zZW1hcGhvcmUpICkK ICAgICB7CiAgICAgICAgIHN0cnVjdCBwYXlsb2FkICpwOwogICAgICAgICB1bnNpZ25lZCBpbnQg Y3B1czsKIAotICAgICAgICBwID0geHNwbGljZV93b3JrLmRhdGE7CisgICAgICAgIHAgPSBsaXZl cGF0Y2hfd29yay5kYXRhOwogICAgICAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCiAgICAgICAg IHsKLSAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiBDUFUldSAtIHVu YWJsZSB0byBnZXQgY3B1X21hcHMgbG9jayFcbiIsCisgICAgICAgICAgICBwcmludGsoWEVOTE9H X0VSUiBMSVZFUEFUQ0ggIiVzOiBDUFUldSAtIHVuYWJsZSB0byBnZXQgY3B1X21hcHMgbG9jayFc biIsCiAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSwgY3B1KTsKICAgICAgICAgICAgIHBlcl9j cHUod29ya190b19kbywgY3B1KSA9IDA7Ci0gICAgICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+ cmMgPSAtRUJVU1k7CisgICAgICAgICAgICBsaXZlcGF0Y2hfd29yay5kYXRhLT5yYyA9IC1FQlVT WTsKICAgICAgICAgICAgIHNtcF93bWIoKTsKLSAgICAgICAgICAgIHhzcGxpY2Vfd29yay5kb193 b3JrID0gMDsKKyAgICAgICAgICAgIGxpdmVwYXRjaF93b3JrLmRvX3dvcmsgPSAwOwogICAgICAg ICAgICAgLyoKLSAgICAgICAgICAgICAqIERvIE5PVCBkZWNyZW1lbnQgeHNwbGljZV93b3JrLnNl bWFwaG9yZSBkb3duIC0gYXMgdGhhdCBtYXkgY2F1c2UKKyAgICAgICAgICAgICAqIERvIE5PVCBk ZWNyZW1lbnQgbGl2ZXBhdGNoX3dvcmsuc2VtYXBob3JlIGRvd24gLSBhcyB0aGF0IG1heSBjYXVz ZQogICAgICAgICAgICAgICogdGhlIG90aGVyIENQVSAod2hpY2ggbWF5IGJlIGF0IHRoaXMgcG9p bnQgcmVhZHkgdG8gaW5jcmVtZW50IGl0KQogICAgICAgICAgICAgICogdG8gYXNzdW1lIHRoZSBy b2xlIG9mIG1hc3RlciBhbmQgdGhlbiBuZWVkbGVzc2x5IHRpbWUgb3V0CiAgICAgICAgICAgICAg KiBvdXQgKGFzIGRvX3dvcmsgaXMgemVybykuCkBAIC0xMjI3LDU4ICsxMjI3LDU4IEBAIHZvaWQg Y2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg ICB9CiAgICAgICAgIC8qICJNYXNrIiBOTUlzLiAqLwotICAgICAgICBhcmNoX3hzcGxpY2VfbWFz aygpOworICAgICAgICBhcmNoX2xpdmVwYXRjaF9tYXNrKCk7CiAKICAgICAgICAgYmFycmllcigp OyAvKiBNVVNUIGRvIGl0IGFmdGVyIGdldF9jcHVfbWFwcy4gKi8KICAgICAgICAgY3B1cyA9IG51 bV9vbmxpbmVfY3B1cygpIC0gMTsKIAogICAgICAgICBpZiAoIGNwdXMgKQogICAgICAgICB7Ci0g ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IENQVSV1IC0gSVBJ aW5nIHRoZSBvdGhlciAldSBDUFVzXG4iLAorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVC VUcsIExJVkVQQVRDSCAiJXM6IENQVSV1IC0gSVBJaW5nIHRoZSBvdGhlciAldSBDUFVzXG4iLAog ICAgICAgICAgICAgICAgICAgICBwLT5uYW1lLCBjcHUsIGNwdXMpOwogICAgICAgICAgICAgc21w X2NhbGxfZnVuY3Rpb24ocmVzY2hlZHVsZV9mbiwgTlVMTCwgMCk7CiAgICAgICAgIH0KIAotICAg ICAgICB0aW1lb3V0ID0geHNwbGljZV93b3JrLnRpbWVvdXQgKyBOT1coKTsKLSAgICAgICAgaWYg KCB4c3BsaWNlX3NwaW4oJnhzcGxpY2Vfd29yay5zZW1hcGhvcmUsIHRpbWVvdXQsIGNwdXMsICJD UFUiKSApCisgICAgICAgIHRpbWVvdXQgPSBsaXZlcGF0Y2hfd29yay50aW1lb3V0ICsgTk9XKCk7 CisgICAgICAgIGlmICggbGl2ZXBhdGNoX3NwaW4oJmxpdmVwYXRjaF93b3JrLnNlbWFwaG9yZSwg dGltZW91dCwgY3B1cywgIkNQVSIpICkKICAgICAgICAgICAgIGdvdG8gYWJvcnQ7CiAKICAgICAg ICAgLyogQWxsIENQVXMgYXJlIHdhaXRpbmcsIG5vdyBzaWduYWwgdG8gZGlzYWJsZSBJUlFzLiAq LwotICAgICAgICBhdG9taWNfc2V0KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlLCAwKTsKKyAgICAg ICAgYXRvbWljX3NldCgmbGl2ZXBhdGNoX3dvcmsuc2VtYXBob3JlLCAwKTsKICAgICAgICAgLyoK ICAgICAgICAgICogTVVTVCBoYXZlIGEgYmFycmllciBhZnRlciBzZW1hcGhvcmUgc28gdGhhdCB0 aGUgb3RoZXIgQ1BVcyBkb24ndAogICAgICAgICAgKiBsZWFrIG91dCBvZiB0aGUgJ1dhaXQgZm9y IGFsbCBDUFVzIHRvIHJlbmRlenZvdXMnIGxvb3AgYW5kIGluY3JlbWVudAogICAgICAgICAgKiAn c2VtYXBob3JlJyBiZWZvcmUgd2Ugc2V0IGl0IHRvIHplcm8uCiAgICAgICAgICAqLwogICAgICAg ICBzbXBfd21iKCk7Ci0gICAgICAgIHhzcGxpY2Vfd29yay5yZWFkeSA9IDE7CisgICAgICAgIGxp dmVwYXRjaF93b3JrLnJlYWR5ID0gMTsKIAotICAgICAgICBpZiAoICF4c3BsaWNlX3NwaW4oJnhz cGxpY2Vfd29yay5zZW1hcGhvcmUsIHRpbWVvdXQsIGNwdXMsICJJUlEiKSApCisgICAgICAgIGlm ICggIWxpdmVwYXRjaF9zcGluKCZsaXZlcGF0Y2hfd29yay5zZW1hcGhvcmUsIHRpbWVvdXQsIGNw dXMsICJJUlEiKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdz KTsKICAgICAgICAgICAgIC8qIERvIHRoZSBwYXRjaGluZy4gKi8KLSAgICAgICAgICAgIHhzcGxp Y2VfZG9fYWN0aW9uKCk7CisgICAgICAgICAgICBsaXZlcGF0Y2hfZG9fYWN0aW9uKCk7CiAgICAg ICAgICAgICAvKiBTZXJpYWxpemUgYW5kIGZsdXNoIG91dCB0aGUgQ1BVIHZpYSBDUFVJRCBpbnN0 cnVjdGlvbiAob24geDg2KS4gKi8KLSAgICAgICAgICAgIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlv bigpOworICAgICAgICAgICAgYXJjaF9saXZlcGF0Y2hfcG9zdF9hY3Rpb24oKTsKICAgICAgICAg ICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKICAgICAgICAgfQogCiAgYWJvcnQ6Ci0gICAg ICAgIGFyY2hfeHNwbGljZV91bm1hc2soKTsKKyAgICAgICAgYXJjaF9saXZlcGF0Y2hfdW5tYXNr KCk7CiAKICAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMDsKLSAgICAgICAgeHNw bGljZV93b3JrLmRvX3dvcmsgPSAwOworICAgICAgICBsaXZlcGF0Y2hfd29yay5kb193b3JrID0g MDsKIAogICAgICAgICAvKiBwdXRfY3B1X21hcHMgaGFzIGFuIGJhcnJpZXIoKS4gKi8KICAgICAg ICAgcHV0X2NwdV9tYXBzKCk7CiAKLSAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJQ0Ug IiVzIGZpbmlzaGVkICVzIHdpdGggcmM9JWRcbiIsCi0gICAgICAgICAgICAgICBwLT5uYW1lLCBu YW1lc1t4c3BsaWNlX3dvcmsuY21kXSwgcC0+cmMpOworICAgICAgICBwcmludGsoWEVOTE9HX0lO Rk8gTElWRVBBVENIICIlcyBmaW5pc2hlZCAlcyB3aXRoIHJjPSVkXG4iLAorICAgICAgICAgICAg ICAgcC0+bmFtZSwgbmFtZXNbbGl2ZXBhdGNoX3dvcmsuY21kXSwgcC0+cmMpOwogICAgIH0KICAg ICBlbHNlCiAgICAgewogICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5kZXp2b3Vz LiAqLwotICAgICAgICB3aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICYmICF4c3BsaWNlX3dv cmsucmVhZHkgKQorICAgICAgICB3aGlsZSAoIGxpdmVwYXRjaF93b3JrLmRvX3dvcmsgJiYgIWxp dmVwYXRjaF93b3JrLnJlYWR5ICkKICAgICAgICAgICAgIGNwdV9yZWxheCgpOwogCiAgICAgICAg IC8qIERpc2FibGUgSVJRcyBhbmQgc2lnbmFsLiAqLwpAQCAtMTI4NywxNCArMTI4NywxNCBAQCB2 b2lkIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsodm9pZCkKICAgICAgICAgICogV2UgcmUtdXNlIHRo ZSBzZW1wYWhvcmUsIHNvIE1VU1QgaGF2ZSBpdCByZXNldCBieSBtYXN0ZXIgYmVmb3JlCiAgICAg ICAgICAqIHdlIGV4aXQgdGhlIGxvb3AgYWJvdmUuCiAgICAgICAgICAqLwotICAgICAgICBhdG9t aWNfaW5jKCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlKTsKKyAgICAgICAgYXRvbWljX2luYygmbGl2 ZXBhdGNoX3dvcmsuc2VtYXBob3JlKTsKIAogICAgICAgICAvKiBXYWl0IGZvciBwYXRjaGluZyB0 byBjb21wbGV0ZS4gKi8KLSAgICAgICAgd2hpbGUgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisg ICAgICAgIHdoaWxlICggbGl2ZXBhdGNoX3dvcmsuZG9fd29yayApCiAgICAgICAgICAgICBjcHVf cmVsYXgoKTsKIAogICAgICAgICAvKiBUbyBmbHVzaCBvdXQgcGlwZWxpbmUuICovCi0gICAgICAg IGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbigpOworICAgICAgICBhcmNoX2xpdmVwYXRjaF9wb3N0 X2FjdGlvbigpOwogICAgICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAKICAgICAgICAg cGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMDsKQEAgLTEzNDMsMTcgKzEzNDMsMTcgQEAgc3Rh dGljIGludCBidWlsZF9pZF9kZXAoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIGJvb2xfdCBpbnRl cm5hbCkKICAgICAgICAgIG1lbWNtcChpZCwgcGF5bG9hZC0+ZGVwLnAsIGxlbikgKQogICAgIHsK ICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCAiJXMlczogY2hlY2sgYWdhaW5zdCAlcyBidWls ZC1pZCBmYWlsZWQhXG4iLAotICAgICAgICAgICAgICAgIFhTUExJQ0UsIHBheWxvYWQtPm5hbWUs IG5hbWUpOworICAgICAgICAgICAgICAgIExJVkVQQVRDSCwgcGF5bG9hZC0+bmFtZSwgbmFtZSk7 CiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0 aW9uKQorc3RhdGljIGludCBsaXZlcGF0Y2hfYWN0aW9uKHhlbl9zeXNjdGxfbGl2ZXBhdGNoX2Fj dGlvbl90ICphY3Rpb24pCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7Ci0gICAgY2hhciBu W1hFTl9YU1BMSUNFX05BTUVfU0laRV07CisgICAgY2hhciBuW1hFTl9MSVZFUEFUQ0hfTkFNRV9T SVpFXTsKICAgICBpbnQgcmM7CiAKICAgICByYyA9IGdldF9uYW1lKCZhY3Rpb24tPm5hbWUsIG4p OwpAQCAtMTM4MSw4ICsxMzgxLDggQEAgc3RhdGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lz Y3RsX3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlvbikKIAogICAgIHN3aXRjaCAoIGFjdGlvbi0+Y21k ICkKICAgICB7Ci0gICAgY2FzZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQ6Ci0gICAgICAgIGlmICgg ZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9DSEVDS0VEICkKKyAgICBjYXNlIExJVkVQQVRD SF9BQ1RJT05fVU5MT0FEOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IExJVkVQQVRDSF9T VEFURV9DSEVDS0VEICkKICAgICAgICAgewogICAgICAgICAgICAgZnJlZV9wYXlsb2FkKGRhdGEp OwogICAgICAgICAgICAgLyogTm8gdG91Y2hpbmcgJ2RhdGEnIGZyb20gaGVyZSBvbiEgKi8KQEAg LTEzOTIsOCArMTM5Miw4IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94 c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAgICAg ICAgIGJyZWFrOwogCi0gICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQ6Ci0gICAgICAgIGlm ICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9BUFBMSUVEICkKKyAgICBjYXNlIExJVkVQ QVRDSF9BQ1RJT05fUkVWRVJUOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IExJVkVQQVRD SF9TVEFURV9BUFBMSUVEICkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBh eWxvYWQgKnA7CiAKQEAgLTE0MDMsNyArMTQwMyw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rp b24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiAgICAgICAgICAgICBpZiAo IHAgIT0gZGF0YSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZHByaW50ayhYRU5M T0dfRVJSLCAiJXMlczogY2FuJ3QgdW5sb2FkLiBUb3AgaXMgJXMhXG4iLAotICAgICAgICAgICAg ICAgICAgICAgICAgWFNQTElDRSwgZGF0YS0+bmFtZSwgcC0+bmFtZSk7CisgICAgICAgICAgICAg ICAgICAgICAgICBMSVZFUEFUQ0gsIGRhdGEtPm5hbWUsIHAtPm5hbWUpOwogICAgICAgICAgICAg ICAgIHJjID0gLUVCVVNZOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA QCAtMTQxMiw4ICsxNDEyLDggQEAgc3RhdGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lzY3Rs X3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlvbikKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAot ICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fQVBQTFk6Ci0gICAgICAgIGlmICggZGF0YS0+c3RhdGUg PT0gWFNQTElDRV9TVEFURV9DSEVDS0VEICkKKyAgICBjYXNlIExJVkVQQVRDSF9BQ1RJT05fQVBQ TFk6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gTElWRVBBVENIX1NUQVRFX0NIRUNLRUQg KQogICAgICAgICB7CiAgICAgICAgICAgICByYyA9IGJ1aWxkX2lkX2RlcChkYXRhLCAhIWxpc3Rf ZW1wdHkoJmFwcGxpZWRfbGlzdCkpOwogICAgICAgICAgICAgaWYgKCByYyApCkBAIC0xNDIzLDgg KzE0MjMsOCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9h Y3Rpb25fdCAqYWN0aW9uKQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBY U1BMSUNFX0FDVElPTl9SRVBMQUNFOgotICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJ Q0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgY2FzZSBMSVZFUEFUQ0hfQUNUSU9OX1JFUExBQ0U6Cisg ICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gTElWRVBBVENIX1NUQVRFX0NIRUNLRUQgKQogICAg ICAgICB7CiAgICAgICAgICAgICByYyA9IGJ1aWxkX2lkX2RlcChkYXRhLCAxIC8qIGFnYWluc3Qg aHlwZXJ2aXNvci4gKi8pOwogICAgICAgICAgICAgaWYgKCByYyApCkBAIC0xNDQ1LDI5ICsxNDQ1 LDI5IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlv bl90ICphY3Rpb24pCiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgeHNwbGljZV9vcCh4ZW5fc3lz Y3RsX3hzcGxpY2Vfb3BfdCAqeHNwbGljZSkKK2ludCBsaXZlcGF0Y2hfb3AoeGVuX3N5c2N0bF9s aXZlcGF0Y2hfb3BfdCAqbGl2ZXBhdGNoKQogewogICAgIGludCByYzsKIAotICAgIGlmICggeHNw bGljZS0+cGFkICkKKyAgICBpZiAoIGxpdmVwYXRjaC0+cGFkICkKICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CiAKLSAgICBzd2l0Y2ggKCB4c3BsaWNlLT5jbWQgKQorICAgIHN3aXRjaCAoIGxpdmVw YXRjaC0+Y21kICkKICAgICB7Ci0gICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEOgot ICAgICAgICByYyA9IHhzcGxpY2VfdXBsb2FkKCZ4c3BsaWNlLT51LnVwbG9hZCk7CisgICAgY2Fz ZSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9VUExPQUQ6CisgICAgICAgIHJjID0gbGl2ZXBhdGNoX3Vw bG9hZCgmbGl2ZXBhdGNoLT51LnVwbG9hZCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBY RU5fU1lTQ1RMX1hTUExJQ0VfR0VUOgotICAgICAgICByYyA9IHhzcGxpY2VfZ2V0KCZ4c3BsaWNl LT51LmdldCk7CisgICAgY2FzZSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9HRVQ6CisgICAgICAgIHJj ID0gbGl2ZXBhdGNoX2dldCgmbGl2ZXBhdGNoLT51LmdldCk7CiAgICAgICAgIGJyZWFrOwogCi0g ICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVDoKLSAgICAgICAgcmMgPSB4c3BsaWNlX2xp c3QoJnhzcGxpY2UtPnUubGlzdCk7CisgICAgY2FzZSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9MSVNU OgorICAgICAgICByYyA9IGxpdmVwYXRjaF9saXN0KCZsaXZlcGF0Y2gtPnUubGlzdCk7CiAgICAg ICAgIGJyZWFrOwogCi0gICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OOgotICAgICAg ICByYyA9IHhzcGxpY2VfYWN0aW9uKCZ4c3BsaWNlLT51LmFjdGlvbik7CisgICAgY2FzZSBYRU5f U1lTQ1RMX0xJVkVQQVRDSF9BQ1RJT046CisgICAgICAgIHJjID0gbGl2ZXBhdGNoX2FjdGlvbigm bGl2ZXBhdGNoLT51LmFjdGlvbik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKQEAg LTE0ODAsNyArMTQ4MCw3IEBAIGludCB4c3BsaWNlX29wKHhlbl9zeXNjdGxfeHNwbGljZV9vcF90 ICp4c3BsaWNlKQogCiBzdGF0aWMgY29uc3QgY2hhciAqc3RhdGUyc3RyKHVuc2lnbmVkIGludCBz dGF0ZSkKIHsKLSNkZWZpbmUgU1RBVEUoeCkgW1hTUExJQ0VfU1RBVEVfIyN4XSA9ICN4CisjZGVm aW5lIFNUQVRFKHgpIFtMSVZFUEFUQ0hfU1RBVEVfIyN4XSA9ICN4CiAgICAgc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IG5hbWVzW10gPSB7CiAgICAgICAgICAgICBTVEFURShDSEVDS0VEKSwKICAg ICAgICAgICAgIFNUQVRFKEFQUExJRUQpLApAQCAtMTQ5MywxNCArMTQ5MywxNCBAQCBzdGF0aWMg Y29uc3QgY2hhciAqc3RhdGUyc3RyKHVuc2lnbmVkIGludCBzdGF0ZSkKICAgICByZXR1cm4gbmFt ZXNbc3RhdGVdOwogfQogCi1zdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVkIGNo YXIga2V5KQorc3RhdGljIHZvaWQgbGl2ZXBhdGNoX3ByaW50YWxsKHVuc2lnbmVkIGNoYXIga2V5 KQogewogICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOwogICAgIGNvbnN0IHZvaWQgKmJpbmFyeV9p ZCA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IGxlbiA9IDA7CiAgICAgdW5zaWduZWQgaW50IGk7 CiAKLSAgICBwcmludGsoIiclYycgcHJlc3NlZCAtIER1bXBpbmcgYWxsIHhzcGxpY2UgcGF0Y2hl c1xuIiwga2V5KTsKKyAgICBwcmludGsoIiclYycgcHJlc3NlZCAtIER1bXBpbmcgYWxsIGxpdmVw YXRjaCBwYXRjaGVzXG4iLCBrZXkpOwogCiAgICAgaWYgKCAheGVuX2J1aWxkX2lkKCZiaW5hcnlf aWQsICZsZW4pICkKICAgICAgICAgcHJpbnRrKCJidWlsZC1pZDogJSpwaE5cbiIsIGxlbiwgYmlu YXJ5X2lkKTsKQEAgLTE1MTksNyArMTUxOSw3IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRh bGwodW5zaWduZWQgY2hhciBrZXkpCiAKICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5u ZnVuY3M7IGkrKyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgKmYgPSAmKGRhdGEtPmZ1bmNzW2ldKTsKKyAgICAgICAgICAgIHN0cnVjdCBsaXZlcGF0 Y2hfZnVuYyAqZiA9ICYoZGF0YS0+ZnVuY3NbaV0pOwogICAgICAgICAgICAgcHJpbnRrKCIgICAg JXMgcGF0Y2ggJXAoJXUpIHdpdGggJXAgKCV1KVxuIiwKICAgICAgICAgICAgICAgICAgICBmLT5u YW1lLCBmLT5vbGRfYWRkciwgZi0+b2xkX3NpemUsIGYtPm5ld19hZGRyLCBmLT5uZXdfc2l6ZSk7 CiAKQEAgLTE1NDQsMjAgKzE1NDQsMjAgQEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1 bnNpZ25lZCBjaGFyIGtleSkKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKIH0KIAot c3RhdGljIGludCBfX2luaXQgeHNwbGljZV9pbml0KHZvaWQpCitzdGF0aWMgaW50IF9faW5pdCBs aXZlcGF0Y2hfaW5pdCh2b2lkKQogewogICAgIGNvbnN0IHZvaWQgKmJpbmFyeV9pZDsKICAgICB1 bnNpZ25lZCBpbnQgbGVuOwogCiAgICAgaWYgKCAheGVuX2J1aWxkX2lkKCZiaW5hcnlfaWQsICZs ZW4pICkKLSAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJQ0UgIjogYnVpbGQtaWQ6ICUq cGhOXG4iLCBsZW4sIGJpbmFyeV9pZCk7CisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyBMSVZF UEFUQ0ggIjogYnVpbGQtaWQ6ICUqcGhOXG4iLCBsZW4sIGJpbmFyeV9pZCk7CiAKLSAgICByZWdp c3Rlcl9rZXloYW5kbGVyKCd4JywgeHNwbGljZV9wcmludGFsbCwgInByaW50IHhzcGxpY2luZyBp bmZvIiwgMSk7CisgICAgcmVnaXN0ZXJfa2V5aGFuZGxlcigneCcsIGxpdmVwYXRjaF9wcmludGFs bCwgInByaW50IGxpdmVwYXRjaCBpbmZvIiwgMSk7CiAKLSAgICBhcmNoX3hzcGxpY2VfaW5pdCgp OworICAgIGFyY2hfbGl2ZXBhdGNoX2luaXQoKTsKICAgICByZXR1cm4gMDsKIH0KLV9faW5pdGNh bGwoeHNwbGljZV9pbml0KTsKK19faW5pdGNhbGwobGl2ZXBhdGNoX2luaXQpOwogCiAvKgogICog TG9jYWwgdmFyaWFibGVzOgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jIGIv eGVuL2NvbW1vbi9saXZlcGF0Y2hfZWxmLmMKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZy b20geGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCnJlbmFtZSB0byB4ZW4vY29tbW9uL2xpdmVwYXRj aF9lbGYuYwppbmRleCBkNTk3NTlmLi43ODllOGZjIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hz cGxpY2VfZWxmLmMKKysrIGIveGVuL2NvbW1vbi9saXZlcGF0Y2hfZWxmLmMKQEAgLTUsMTEgKzUs MTIgQEAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5j bHVkZSA8eGVuL3N5bWJvbHMuaD4KLSNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KLSNpbmNs dWRlIDx4ZW4veHNwbGljZS5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2hfZWxmLmg+CisjaW5j bHVkZSA8eGVuL2xpdmVwYXRjaC5oPgogCi1jb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICp4 c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm5hbWUpCitjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKgorbGl2ZXBhdGNo X2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQogewogICAgIHVuc2lnbmVkIGlu dCBpOwogCkBAIC0yMiw3ICsyMyw3IEBAIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnhz cGxpY2VfZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqCiAgICAgcmV0 dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBpbnQgZWxmX3ZlcmlmeV9zdHJ0YWIoY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmX3NlYyAqc2VjKQorc3RhdGljIGludCBlbGZfdmVyaWZ5X3N0cnRhYihjb25z dCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnNlYykKIHsKICAgICBjb25zdCBFbGZfU2hkciAq czsKICAgICBjb25zdCBjaGFyICpjb250ZW50czsKQEAgLTQzLDI1ICs0NCwyNSBAQCBzdGF0aWMg aW50IGVsZl92ZXJpZnlfc3RydGFiKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYykK ICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBlbGZfcmVzb2x2ZV9zZWN0aW9ucyhzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgZWxmX3Jl c29sdmVfc2VjdGlvbnMoc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0 YSkKIHsKLSAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7CisgICAgc3RydWN0IGxpdmVw YXRjaF9lbGZfc2VjICpzZWM7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgRWxmX09mZiBkZWx0 YTsKICAgICBpbnQgcmM7CiAKLSAgICAvKiB4c3BsaWNlX2VsZl9sb2FkIHNhbml0eSBjaGVja2Vk IGVfc2hudW0uICovCi0gICAgc2VjID0geG1hbGxvY19hcnJheShzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjLCBlbGYtPmhkci0+ZV9zaG51bSk7CisgICAgLyogbGl2ZXBhdGNoX2VsZl9sb2FkIHNhbml0 eSBjaGVja2VkIGVfc2hudW0uICovCisgICAgc2VjID0geG1hbGxvY19hcnJheShzdHJ1Y3QgbGl2 ZXBhdGNoX2VsZl9zZWMsIGVsZi0+aGRyLT5lX3NobnVtKTsKICAgICBpZiAoICFzZWMgKQogICAg IHsKLSAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFIiVzOiBDb3VsZCBub3QgYWxs b2NhdGUgbWVtb3J5IGZvciBzZWN0aW9uIHRhYmxlIVxuIiwKKyAgICAgICAgZHByaW50ayhYRU5M T0dfRVJSLCBMSVZFUEFUQ0giJXM6IENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHNlY3Rp b24gdGFibGUhXG4iLAogICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKICAgICAgICAgcmV0dXJu IC1FTk9NRU07CiAgICAgfQogCiAgICAgZWxmLT5zZWMgPSBzZWM7CiAKLSAgICAvKiBlX3Nob2Zm IGFuZCBlX3NobnVtIG92ZXJmbG93IGNoZWNrcyBhcmUgZG9uZSBpbiB4c3BsaWNlX2hlYWRlcl9j aGVjay4gKi8KKyAgICAvKiBlX3Nob2ZmIGFuZCBlX3NobnVtIG92ZXJmbG93IGNoZWNrcyBhcmUg ZG9uZSBpbiBsaXZlcGF0Y2hfaGVhZGVyX2NoZWNrLiAqLwogICAgIGRlbHRhID0gZWxmLT5oZHIt PmVfc2hvZmYgKyBlbGYtPmhkci0+ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKICAg ICBBU1NFUlQoZGVsdGEgPD0gZWxmLT5sZW4pOwogCkBAIC04MCw3ICs4MSw3IEBAIHN0YXRpYyBp bnQgZWxmX3Jlc29sdmVfc2VjdGlvbnMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZv aWQgKmRhdGEpCiAgICAgICAgICAgICAgKHNlY1tpXS5zZWMtPnNoX3R5cGUgIT0gU0hUX05PQklU UyAmJiAvKiBTa2lwIFNIVF9OT0JJVFMgKi8KICAgICAgICAgICAgICAgKGRlbHRhID4gZWxmLT5s ZW4gfHwgKGRlbHRhICsgc2VjW2ldLnNlYy0+c2hfc2l6ZSA+IGVsZi0+bGVuKSkpICkKICAgICAg ICAgewotICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlv biBbJXVdIGRhdGEgJXMgb2YgcGF5bG9hZCFcbiIsCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIExJVkVQQVRDSCAiJXM6IFNlY3Rpb24gWyV1XSBkYXRhICVzIG9mIHBheWxvYWQhXG4i LAogICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGksCiAgICAgICAgICAgICAgICAgICAg IGRlbHRhIDwgc2l6ZW9mKEVsZl9FaGRyKSA/ICJhdCBFTEYgaGVhZGVyIiA6ICJpcyBwYXN0IGVu ZCIpOwogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CkBAIC05NCw3ICs5NSw3IEBAIHN0YXRp YyBpbnQgZWxmX3Jlc29sdmVfc2VjdGlvbnMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0 IHZvaWQgKmRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggZWxmLT5zeW10YWIgKQog ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElD RSAiJXM6IFVuc3VwcG9ydGVkIG11bHRpcGxlIHN5bWJvbCB0YWJsZXMhXG4iLAorICAgICAgICAg ICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogVW5zdXBwb3J0ZWQgbXVs dGlwbGUgc3ltYm9sIHRhYmxlcyFcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5h bWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKICAgICAgICAgICAgIH0K QEAgLTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25zKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgICAgICAgICAgICovCiAg ICAgICAgICAgICBpZiAoIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmsgPj0gZWxmLT5oZHItPmVf c2hudW0gKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRQorICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENI CiAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IFN5bWJvbCB0YWJsZSBpZHggKCV1KSB0byBz dHJ0YWIgcGFzdCBlbmQgKCV1KVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFt ZSwgZWxmLT5zeW10YWItPnNlYy0+c2hfbGluaywKICAgICAgICAgICAgICAgICAgICAgICAgIGVs Zi0+aGRyLT5lX3NobnVtKTsKQEAgLTExOSw3ICsxMjAsNyBAQCBzdGF0aWMgaW50IGVsZl9yZXNv bHZlX3NlY3Rpb25zKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQog CiAgICAgaWYgKCAhZWxmLT5zeW10YWIgKQogICAgIHsKLSAgICAgICAgZHByaW50ayhYRU5MT0df RVJSLCBYU1BMSUNFICIlczogTm8gc3ltYm9sIHRhYmxlIGZvdW5kIVxuIiwKKyAgICAgICAgZHBy aW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBObyBzeW1ib2wgdGFibGUgZm91bmQhXG4i LAogICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog ICAgIH0KQEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25z KHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgICAgICAgZWxm LT5zeW10YWItPnNlYy0+c2hfZW50c2l6ZSA8IHNpemVvZihFbGZfU3ltKSB8fAogICAgICAgICAg ZWxmLT5zeW10YWItPnNlYy0+c2hfc2l6ZSAlIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2VudHNpemUg KQogICAgIHsKLSAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU3ltYm9s IHRhYmxlIGhlYWRlciBpcyBjb3JydXB0ZWQhXG4iLAorICAgICAgICBkcHJpbnRrKFhFTkxPR19F UlIsIExJVkVQQVRDSCAiJXM6IFN5bWJvbCB0YWJsZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwK ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAg ICB9CkBAIC0xNDIsMTkgKzE0MywxOSBAQCBzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25z KHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgIHJjID0gZWxm X3ZlcmlmeV9zdHJ0YWIoZWxmLT5zdHJ0YWIpOwogICAgIGlmICggcmMgKQogICAgIHsKLSAgICAg ICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU3RyaW5nIHRhYmxlIHNlY3Rpb24g aXMgY29ycnVwdGVkXG4iLAorICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAi JXM6IFN0cmluZyB0YWJsZSBzZWN0aW9uIGlzIGNvcnJ1cHRlZFxuIiwKICAgICAgICAgICAgICAg ICBlbGYtPm5hbWUpOwogICAgIH0KIAogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIGludCBl bGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2 b2lkICpkYXRhKQorc3RhdGljIGludCBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzKHN0cnVjdCBs aXZlcGF0Y2hfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCiB7CiAgICAgY29uc3QgY2hhciAq c2hzdHJ0YWI7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgRWxmX09mZiBvZmZzZXQsIGRlbHRh OwotICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKKyAgICBzdHJ1Y3QgbGl2ZXBhdGNo X2VsZl9zZWMgKnNlYzsKICAgICBpbnQgcmM7CiAKICAgICAvKgpAQCAtMTY3LDcgKzE2OCw3IEBA IHN0YXRpYyBpbnQgZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcyhzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKICAgICByYyA9IGVsZl92ZXJpZnlfc3RydGFiKHNlYyk7 CiAgICAgaWYgKCByYyApCiAgICAgewotICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJ Q0UgIiVzOiBTZWN0aW9uIHN0cmluZyB0YWJsZSBpcyBjb3JydXB0ZWRcbiIsCisgICAgICAgIGRw cmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogU2VjdGlvbiBzdHJpbmcgdGFibGUgaXMg Y29ycnVwdGVkXG4iLAogICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CiAgICAgICAgIHJldHVy biByYzsKICAgICB9CkBAIC0xODUsNyArMTg2LDcgQEAgc3RhdGljIGludCBlbGZfcmVzb2x2ZV9z ZWN0aW9uX25hbWVzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQog ICAgICAgICAvKiBCb3VuZGFyeSBjaGVjayBvbiBvZmZzZXQgb2YgbmFtZSB3aXRoaW4gdGhlIC5z aHN0cnRhYi4gKi8KICAgICAgICAgaWYgKCBkZWx0YSA+PSBzZWMtPnNlYy0+c2hfc2l6ZSApCiAg ICAgICAgIHsKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNl Y3Rpb24gJXUgbmFtZSBpcyBub3Qgd2l0aGluIC5zaHN0cnRhYiFcbiIsCisgICAgICAgICAgICBk cHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFNlY3Rpb24gJXUgbmFtZSBpcyBub3Qg d2l0aGluIC5zaHN0cnRhYiFcbiIsCiAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaSk7 CiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICAgICAgfQpAQCAtMTk2LDEwICsxOTcs MTAgQEAgc3RhdGljIGludCBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzKHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMg aW50IGVsZl9nZXRfc3ltKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRh KQorc3RhdGljIGludCBlbGZfZ2V0X3N5bShzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLCBjb25z dCB2b2lkICpkYXRhKQogewotICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN5bXRh Yl9zZWMsICpzdHJ0YWJfc2VjOwotICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gKnN5bTsKKyAg ICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnN5bXRhYl9zZWMsICpzdHJ0YWJfc2Vj OworICAgIHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3N5bSAqc3ltOwogICAgIHVuc2lnbmVkIGludCBp LCBuc3ltOwogICAgIEVsZl9PZmYgb2Zmc2V0OwogICAgIEVsZl9Xb3JkIGRlbHRhOwpAQCAtMjIw LDEwICsyMjEsMTAgQEAgc3RhdGljIGludCBlbGZfZ2V0X3N5bShzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKICAgICAvKiBObyBuZWVkIHRvIGNoZWNrIHZhbHVlcyBh cyBlbGZfcmVzb2x2ZV9zZWN0aW9ucyBkaWQgaXQuICovCiAgICAgbnN5bSA9IHN5bXRhYl9zZWMt PnNlYy0+c2hfc2l6ZSAvIHN5bXRhYl9zZWMtPnNlYy0+c2hfZW50c2l6ZTsKIAotICAgIHN5bSA9 IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxpY2VfZWxmX3N5bSwgbnN5bSk7CisgICAgc3ltID0g eG1hbGxvY19hcnJheShzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zeW0sIG5zeW0pOwogICAgIGlmICgg IXN5bSApCiAgICAgewotICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBD b3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzeW1ib2xzXG4iLAorICAgICAgICBkcHJpbnRr KFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9y IHN5bWJvbHNcbiIsCiAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOwogICAgICAgICByZXR1cm4g LUVOT01FTTsKICAgICB9CkBAIC0yMzksNyArMjQwLDcgQEAgc3RhdGljIGludCBlbGZfZ2V0X3N5 bShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKICAgICAgICAgLyog Qm91bmRhcnkgY2hlY2sgd2l0aGluIHRoZSAuc3RydGFiLiAqLwogICAgICAgICBpZiAoIGRlbHRh ID49IHN0cnRhYl9zZWMtPnNlYy0+c2hfc2l6ZSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRw cmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFN5bWJvbCBbJXVdIG5hbWUgaXMgbm90IHdp dGhpbiAuc3RydGFiIVxuIiwKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBB VENIICIlczogU3ltYm9sIFsldV0gbmFtZSBpcyBub3Qgd2l0aGluIC5zdHJ0YWIhXG4iLAogICAg ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGkpOwogICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CiAgICAgICAgIH0KQEAgLTI1Miw3ICsyNTMsNyBAQCBzdGF0aWMgaW50IGVsZl9nZXRfc3lt KHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgIHJldHVybiAw OwogfQogCi1pbnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2Vs ZiAqZWxmKQoraW50IGxpdmVwYXRjaF9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCBsaXZlcGF0 Y2hfZWxmICplbGYpCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgaW50IHJjID0gMDsKQEAg LTI2OCw3ICsyNjksNyBAQCBpbnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4 c3BsaWNlX2VsZiAqZWxmKQogICAgICAgICBzd2l0Y2ggKCBpZHggKQogICAgICAgICB7CiAgICAg ICAgIGNhc2UgU0hOX0NPTU1PTjoKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQ TElDRSAiJXM6IFVuZXhwZWN0ZWQgY29tbW9uIHN5bWJvbDogJXNcbiIsCisgICAgICAgICAgICBk cHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFVuZXhwZWN0ZWQgY29tbW9uIHN5bWJv bDogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFt ZSk7CiAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3 NywyMSArMjc4LDIxIEBAIGludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhz cGxpY2VfZWxmICplbGYpCiAgICAgICAgICAgICBzdF92YWx1ZSA9IHN5bWJvbHNfbG9va3VwX2J5 X25hbWUoZWxmLT5zeW1baV0ubmFtZSk7CiAgICAgICAgICAgICBpZiAoICFzdF92YWx1ZSApCiAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RfdmFsdWUgPSB4c3BsaWNlX3N5bWJvbHNf bG9va3VwX2J5X25hbWUoZWxmLT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICAgICAgc3RfdmFs dWUgPSBsaXZlcGF0Y2hfc3ltYm9sc19sb29rdXBfYnlfbmFtZShlbGYtPnN5bVtpXS5uYW1lKTsK ICAgICAgICAgICAgICAgICBpZiAoICFzdF92YWx1ZSApCiAgICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmtub3du IHN5bWJvbDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwg TElWRVBBVENIICIlczogVW5rbm93biBzeW1ib2w6ICVzXG4iLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSk7CiAgICAgICAgICAgICAgICAg ICAgIHJjID0gLUVOT0VOVDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcs IFhTUExJQ0UgIiVzOiBVbmRlZmluZWQgc3ltYm9sIHJlc29sdmVkOiAlcyA9PiAlIyJQUkl4RWxm QWRkciJcbiIsCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENIICIl czogVW5kZWZpbmVkIHN5bWJvbCByZXNvbHZlZDogJXMgPT4gJSMiUFJJeEVsZkFkZHIiXG4iLAog ICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUsIHN0X3ZhbHVl KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0hOX0FCUzoKLSAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogQWJzb2x1dGUgc3ltYm9sOiAl cyA9PiAlIyJQUkl4RWxmQWRkciJcbiIsCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJV RywgTElWRVBBVENIICIlczogQWJzb2x1dGUgc3ltYm9sOiAlcyA9PiAlIyJQUkl4RWxmQWRkciJc biIsCiAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSwgc3lt LT5zdF92YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzA0LDcgKzMwNSw3IEBAIGlu dCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAK ICAgICAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRw cmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IE91dCBvZiBib3VuZHMgc3ltYm9sIHNlY3Rp b24gJSN4XG4iLAorICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENI ICIlczogT3V0IG9mIGJvdW5kcyBzeW1ib2wgc2VjdGlvbiAlI3hcbiIsCiAgICAgICAgICAgICAg ICAgICAgICAgICBlbGYtPm5hbWUsIGlkeCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICB9CkBAIC0zMTUsNyArMzE2LDcgQEAgaW50IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3lt Ym9scyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKIAogICAgICAgICAgICAgc3RfdmFsdWUgKz0g KHVuc2lnbmVkIGxvbmcpZWxmLT5zZWNbaWR4XS5sb2FkX2FkZHI7CiAgICAgICAgICAgICBpZiAo IGVsZi0+c3ltW2ldLm5hbWUgKQotICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVH LCBYU1BMSUNFICIlczogU3ltYm9sIHJlc29sdmVkOiAlcyA9PiAlIyJQUkl4RWxmQWRkciIgKCVz KVxuIiwKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENIICIl czogU3ltYm9sIHJlc29sdmVkOiAlcyA9PiAlIyJQUkl4RWxmQWRkciIgKCVzKVxuIiwKICAgICAg ICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lLAogICAgICAgICAg ICAgICAgICAgICAgICBzdF92YWx1ZSwgZWxmLT5zZWNbaWR4XS5uYW1lKTsKICAgICAgICAgfQpA QCAtMzI5LDkgKzMzMCw5IEBAIGludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0 IHhzcGxpY2VfZWxmICplbGYpCiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgeHNwbGljZV9lbGZf cGVyZm9ybV9yZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCitpbnQgbGl2ZXBhdGNoX2Vs Zl9wZXJmb3JtX3JlbG9jcyhzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmKQogewotICAgIHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKnIsICpiYXNlOworICAgIHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3Nl YyAqciwgKmJhc2U7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgaW50IHJjID0gMDsKIApAQCAt MzU3LDE2ICszNTgsMTYgQEAgaW50IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVjdCB4 c3BsaWNlX2VsZiAqZWxmKQogCiAgICAgICAgIGlmICggci0+c2VjLT5zaF9saW5rICE9IGVsZi0+ c3ltdGFiX2lkeCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwg WFNQTElDRSAiJXM6IFJlbGF0aXZlIGxpbmsgb2YgJXMgaXMgaW5jb3JyZWN0ICglZCwgZXhwZWN0 ZWQ9JWQpXG4iLAorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVz OiBSZWxhdGl2ZSBsaW5rIG9mICVzIGlzIGluY29ycmVjdCAoJWQsIGV4cGVjdGVkPSVkKVxuIiwK ICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCByLT5uYW1lLCByLT5zZWMtPnNoX2xpbmss IGVsZi0+c3ltdGFiX2lkeCk7CiAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGlmICggci0+c2VjLT5zaF90eXBlID09IFNI VF9SRUxBICkKLSAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShlbGYs IGJhc2UsIHIpOworICAgICAgICAgICAgcmMgPSBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbGEo ZWxmLCBiYXNlLCByKTsKICAgICAgICAgZWxzZSAvKiBTSFRfUkVMICovCi0gICAgICAgICAgICBy YyA9IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChlbGYsIGJhc2UsIHIpOworICAgICAgICAgICAg cmMgPSBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbChlbGYsIGJhc2UsIHIpOwogCiAgICAgICAg IGlmICggcmMgKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzUsMjEgKzM3NiwyMSBAQCBpbnQg eHNwbGljZV9lbGZfcGVyZm9ybV9yZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAgICAg cmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IHhzcGxpY2VfaGVhZGVyX2NoZWNrKGNvbnN0IHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQorc3RhdGljIGludCBsaXZlcGF0Y2hfaGVhZGVyX2NoZWNr KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYpCiB7CiAgICAgY29uc3QgRWxmX0VoZHIg KmhkciA9IGVsZi0+aGRyOwogICAgIGludCByYzsKIAogICAgIGlmICggc2l6ZW9mKCplbGYtPmhk cikgPiBlbGYtPmxlbiApCiAgICAgewotICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJ Q0UgIiVzOiBTZWN0aW9uIGhlYWRlciBpcyBiaWdnZXIgdGhhbiBwYXlsb2FkIVxuIiwKKyAgICAg ICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBTZWN0aW9uIGhlYWRlciBpcyBi aWdnZXIgdGhhbiBwYXlsb2FkIVxuIiwKICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOwogICAg ICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKICAgICBpZiAoICFJU19FTEYoKmhkcikgKQog ICAgIHsKLSAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogTm90IGFuIEVM RiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1lKTsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBM SVZFUEFUQ0ggIiVzOiBOb3QgYW4gRUxGIHBheWxvYWQhXG4iLCBlbGYtPm5hbWUpOwogICAgICAg ICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKQEAgLTQwMiwxNyArNDAzLDE3IEBAIHN0YXRpYyBp bnQgeHNwbGljZV9oZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAg ICAgICAgICBoZHItPmVfdHlwZSAhPSBFVF9SRUwgfHwKICAgICAgICAgIGhkci0+ZV9waG51bSAh PSAwICkKICAgICB7Ci0gICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IElu dmFsaWQgRUxGIHBheWxvYWQhXG4iLCBlbGYtPm5hbWUpOworICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIExJVkVQQVRDSCAiJXM6IEludmFsaWQgRUxGIHBheWxvYWQhXG4iLCBlbGYtPm5hbWUp OwogICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiAgICAgfQogCi0gICAgcmMgPSBhcmNoX3hz cGxpY2VfdmVyaWZ5X2VsZihlbGYpOworICAgIHJjID0gYXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2Vs ZihlbGYpOwogICAgIGlmICggcmMgKQogICAgICAgICByZXR1cm4gcmM7CiAKICAgICBpZiAoIGVs Zi0+aGRyLT5lX3Noc3RybmR4ID09IFNITl9VTkRFRiApCiAgICAgewotICAgICAgICBkcHJpbnRr KFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIG5hbWUgaWR4IGlzIHVuZGVmaW5lZCE/ XG4iLAorICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFNlY3Rpb24g bmFtZSBpZHggaXMgdW5kZWZpbmVkIT9cbiIsCiAgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsK ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQpAQCAtNDIwLDcgKzQyMSw3IEBAIHN0YXRp YyBpbnQgeHNwbGljZV9oZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYp CiAgICAgLyogQXJiaXRyYXJ5IGJvdW5kYXJ5IGxpbWl0LiAqLwogICAgIGlmICggZWxmLT5oZHIt PmVfc2hudW0gPj0gMTAyNCApCiAgICAgewotICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhT UExJQ0UgIiVzOiBUb28gbWFueSAoJXUpIHNlY3Rpb25zIVxuIiwKKyAgICAgICAgZHByaW50ayhY RU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBUb28gbWFueSAoJXUpIHNlY3Rpb25zIVxuIiwKICAg ICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3NobnVtKTsKICAgICAgICAgcmV0 dXJuIC1FT1BOT1RTVVBQOwogICAgIH0KQEAgLTQyOCwyMCArNDI5LDIwIEBAIHN0YXRpYyBpbnQg eHNwbGljZV9oZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAgICAg LyogQ2hlY2sgdGhhdCBzZWN0aW9uIG5hbWUgaW5kZXggaXMgd2l0aGluIHRoZSBzZWN0aW9ucy4g Ki8KICAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID49IGVsZi0+aGRyLT5lX3NobnVtICkK ICAgICB7Ci0gICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rpb24g bmFtZSBpZHggKCV1KSBpcyBwYXN0IGVuZCBvZiBzZWN0aW9ucyAoJXUpIVxuIiwKKyAgICAgICAg ZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBTZWN0aW9uIG5hbWUgaWR4ICgldSkg aXMgcGFzdCBlbmQgb2Ygc2VjdGlvbnMgKCV1KSFcbiIsCiAgICAgICAgICAgICAgICAgZWxmLT5u YW1lLCBlbGYtPmhkci0+ZV9zaHN0cm5keCwgZWxmLT5oZHItPmVfc2hudW0pOwogICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKICAgICBpZiAoIGVsZi0+aGRyLT5lX3Nob2ZmID49IGVs Zi0+bGVuICkKICAgICB7Ci0gICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6 IEJvZ3VzIGVfc2hvZmYhXG4iLCBlbGYtPm5hbWUpOworICAgICAgICBkcHJpbnRrKFhFTkxPR19F UlIsIExJVkVQQVRDSCAiJXM6IEJvZ3VzIGVfc2hvZmYhXG4iLCBlbGYtPm5hbWUpOwogICAgICAg ICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKICAgICBpZiAoIGVsZi0+aGRyLT5lX3NoZW50c2l6 ZSA8IHNpemVvZihFbGZfU2hkcikgKQogICAgIHsKLSAgICAgICAgZHByaW50ayhYRU5MT0dfRVJS LCBYU1BMSUNFICIlczogU2VjdGlvbiBoZWFkZXIgc2l6ZSBpcyAldSEgRXhwZWN0ZWQgJXp1IT9c biIsCisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogU2VjdGlvbiBo ZWFkZXIgc2l6ZSBpcyAldSEgRXhwZWN0ZWQgJXp1IT9cbiIsCiAgICAgICAgICAgICAgICAgZWxm LT5uYW1lLCBlbGYtPmhkci0+ZV9zaGVudHNpemUsIHNpemVvZihFbGZfU2hkcikpOwogICAgICAg ICByZXR1cm4gLUVJTlZBTDsKICAgICB9CkBAIC00NDksNyArNDUwLDcgQEAgc3RhdGljIGludCB4 c3BsaWNlX2hlYWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKICAgICBp ZiAoICgoZWxmLT5sZW4gLSBlbGYtPmhkci0+ZV9zaG9mZikgLyBlbGYtPmhkci0+ZV9zaGVudHNp emUpIDwKICAgICAgICAgIGVsZi0+aGRyLT5lX3NobnVtICkKICAgICB7Ci0gICAgICAgIGRwcmlu dGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rpb24gaGVhZGVyIHNpemUgaXMgY29ycnVw dGVkIVxuIiwKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBTZWN0 aW9uIGhlYWRlciBzaXplIGlzIGNvcnJ1cHRlZCFcbiIsCiAgICAgICAgICAgICAgICAgZWxmLT5u YW1lKTsKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQpAQCAtNDU3LDEzICs0NTgsMTMg QEAgc3RhdGljIGludCB4c3BsaWNlX2hlYWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IHhzcGxpY2VfZWxmX2xvYWQoc3RydWN0 IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCitpbnQgbGl2ZXBhdGNoX2VsZl9s b2FkKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCiB7CiAgICAg aW50IHJjOwogCiAgICAgZWxmLT5oZHIgPSBkYXRhOwogCi0gICAgcmMgPSB4c3BsaWNlX2hlYWRl cl9jaGVjayhlbGYpOworICAgIHJjID0gbGl2ZXBhdGNoX2hlYWRlcl9jaGVjayhlbGYpOwogICAg IGlmICggcmMgKQogICAgICAgICByZXR1cm4gcmM7CiAKQEAgLTQ4Miw3ICs0ODMsNyBAQCBpbnQg eHNwbGljZV9lbGZfbG9hZChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0 YSkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB4c3BsaWNlX2VsZl9mcmVlKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmKQordm9pZCBsaXZlcGF0Y2hfZWxmX2ZyZWUoc3RydWN0IGxpdmVwYXRjaF9l bGYgKmVsZikKIHsKICAgICB4ZnJlZShlbGYtPnNlYyk7CiAgICAgZWxmLT5zZWMgPSBOVUxMOwpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lzY3RsLmMKaW5k ZXggOWE0Y2MxZi4uNzVmNGMwNSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeXNjdGwuYworKysg Yi94ZW4vY29tbW9uL3N5c2N0bC5jCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8eHNtL3hz bS5oPgogI2luY2x1ZGUgPHhlbi9wbXN0YXQuaD4KICNpbmNsdWRlIDx4ZW4vZ2Nvdi5oPgotI2lu Y2x1ZGUgPHhlbi94c3BsaWNlLmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaC5oPgogCiBsb25n IGRvX3N5c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxfdCkgdV9zeXNjdGwp CiB7CkBAIC00NjEsOCArNDYxLDggQEAgbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogICAgICAgICByZXQgPSB0bWVtX2NvbnRyb2wo Jm9wLT51LnRtZW1fb3ApOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgWEVOX1NZU0NUTF94 c3BsaWNlX29wOgotICAgICAgICByZXQgPSB4c3BsaWNlX29wKCZvcC0+dS54c3BsaWNlKTsKKyAg ICBjYXNlIFhFTl9TWVNDVExfbGl2ZXBhdGNoX29wOgorICAgICAgICByZXQgPSBsaXZlcGF0Y2hf b3AoJm9wLT51LmxpdmVwYXRjaCk7CiAgICAgICAgIGlmICggcmV0ICE9IC1FTk9TWVMgJiYgcmV0 ICE9IC1FT1BOT1RTVVBQICkKICAgICAgICAgICAgIGNvcHliYWNrID0gMTsKICAgICAgICAgYnJl YWs7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMgYi94ZW4vY29tbW9u L3ZpcnR1YWxfcmVnaW9uLmMKaW5kZXggNDI2ZGZhMC4uYWEyMzkxOCAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCisrKyBiL3hlbi9jb21tb24vdmlydHVhbF9yZWdpb24u YwpAQCAtMjUsNyArMjUsNyBAQCBzdGF0aWMgc3RydWN0IHZpcnR1YWxfcmVnaW9uIGNvcmVfaW5p dCBfX2luaXRkYXRhID0gewogICogUkNVIGxvY2tpbmcuIEFkZGl0aW9ucyBhcmUgZG9uZSBlaXRo ZXIgYXQgc3RhcnR1cCAod2hlbiB0aGVyZSBpcyBvbmx5CiAgKiBvbmUgQ1BVKSBvciB3aGVuIGFs bCBDUFVzIGFyZSBydW5uaW5nIHdpdGhvdXQgSVJRcy4KICAqCi0gKiBEZWxldGlvbnMgYXJlIGJp dCB0cmlja3kuIFdlIGRvIGl0IHdoZW4geFNwbGljaW5nIChhbGwgQ1BVcyBydW5uaW5nCisgKiBE ZWxldGlvbnMgYXJlIGJpdCB0cmlja3kuIFdlIGRvIGl0IHdoZW4gTGl2ZSBQYXRjaCAoYWxsIENQ VXMgcnVubmluZwogICogd2l0aG91dCBJUlFzKSBvciBkdXJpbmcgYm9vdHVwICh3aGVuIGNsZWFy aW5nIHRoZSBpbml0KS4KICAqCiAgKiBIZW5jZSB3ZSB1c2UgbGlzdF9kZWxfcmN1ICh3aGljaCBz cG9ydHMgYW4gbWVtb3J5IGZlbmNlKSBhbmQgYSBzcGlubG9jawpAQCAtODUsNyArODUsNyBAQCBz dGF0aWMgdm9pZCByZW1vdmVfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpy KQogCiB2b2lkIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9u ICpyKQogewotICAgIC8qIEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIHhTcGxpY2UgLSB3aGlj aCBoYXMgSVJRcyBkaXNhYmxlZC4gKi8KKyAgICAvKiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgZnJv bSBMaXZlIFBhdGNoIC0gd2hpY2ggaGFzIElSUXMgZGlzYWJsZWQuICovCiAgICAgQVNTRVJUKCFs b2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKIAogICAgIHJlbW92ZV92aXJ0dWFsX3JlZ2lvbihyKTsK ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdnNwcmludGYuYyBiL3hlbi9jb21tb24vdnNwcmludGYu YwppbmRleCA3MGUxZWRmLi5iMDUwZWEzIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3ZzcHJpbnRm LmMKKysrIGIveGVuL2NvbW1vbi92c3ByaW50Zi5jCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVk ZSA8eGVuL3N5bWJvbHMuaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+Ci0jaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNo Lmg+CiAjaW5jbHVkZSA8YXNtL2RpdjY0Lmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIApAQCAt MzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBjaGFyICpwb2ludGVyKGNoYXIgKnN0ciwgY2hhciAqZW5k LCBjb25zdCBjaGFyICoqZm10X3B0ciwKICAgICAgICAgfQogCiAgICAgICAgIC8qCi0gICAgICAg ICAqIG5hbWVidWYgY29udGVudHMgYW5kIHMgZm9yIGNvcmUgaHlwZXJ2aXNvciBhcmUgc2FtZSBi dXQgZm9yIHhTcGxpY2UKKyAgICAgICAgICogbmFtZWJ1ZiBjb250ZW50cyBhbmQgcyBmb3IgY29y ZSBoeXBlcnZpc29yIGFyZSBzYW1lIGJ1dCBmb3IgTGl2ZSBQYXRjaAogICAgICAgICAgKiBwYXls b2FkcyB0aGV5IGRpZmZlciAobmFtZWJ1ZiBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgcGF5bG9h ZCkuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoIG5hbWVidWYgIT0gcyApCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3Vy cmVudC5oCmluZGV4IGZhNTU2MDIuLmU2NTg3ZTYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvY3VycmVudC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3VycmVudC5oCkBAIC04 NiwxNyArODYsMTcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY3B1X2luZm8gKmdldF9jcHVfaW5m byh2b2lkKQogdW5zaWduZWQgbG9uZyBnZXRfc3RhY2tfdHJhY2VfYm90dG9tKHVuc2lnbmVkIGxv bmcgc3ApOwogdW5zaWduZWQgbG9uZyBnZXRfc3RhY2tfZHVtcF9ib3R0b20gKHVuc2lnbmVkIGxv bmcgc3ApOwogCi0jaWZkZWYgQ09ORklHX1hTUExJQ0UKLSMgZGVmaW5lIENIRUNLX0ZPUl9YU1BM SUNFX1dPUksgImNhbGwgY2hlY2tfZm9yX3hzcGxpY2Vfd29yazsiCisjaWZkZWYgQ09ORklHX0xJ VkVQQVRDSAorIyBkZWZpbmUgQ0hFQ0tfRk9SX0xJVkVQQVRDSF9XT1JLICJjYWxsIGNoZWNrX2Zv cl9saXZlcGF0Y2hfd29yazsiCiAjZWxzZQotIyBkZWZpbmUgQ0hFQ0tfRk9SX1hTUExJQ0VfV09S SyAiIgorIyBkZWZpbmUgQ0hFQ0tfRk9SX0xJVkVQQVRDSF9XT1JLICIiCiAjZW5kaWYKIAogI2Rl ZmluZSByZXNldF9zdGFja19hbmRfanVtcChfX2ZuKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg ICAgICAgIm1vdiAlMCwlJSJfX09QInNwOyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgICAgQ0hFQ0tfRk9SX1hTUExJQ0VfV09SSyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgQ0hFQ0tfRk9SX0xJVkVQ QVRDSF9XT1JLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg ICAgICAgImptcCAlYzEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgICA6IDogInIiIChndWVzdF9jcHVfdXNlcl9yZWdzKCkpLCAi aSIgKF9fZm4pIDogIm1lbW9yeSIgKTsgICBcCiAgICAgICAgIHVucmVhY2hhYmxlKCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3Rs LmgKaW5kZXggYjJiMzEyYi4uODE5N2MxNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaApAQCAtODQ5LDY3ICs4 NDksNjcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9mZWF0dXJlc2V0IHhlbl9zeXNjdGxf ZmVhdHVyZXNldF90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0dXJl c2V0X3QpOwogCiAvKgotICogWEVOX1NZU0NUTF9YU1BMSUNFX29wCisgKiBYRU5fU1lTQ1RMX0xJ VkVQQVRDSF9vcAogICoKLSAqIFJlZmVyIHRvIHRoZSBkb2NzL3Vuc3RhYmxlL21pc2MveHNwbGlj ZS5tYXJrZG93bgorICogUmVmZXIgdG8gdGhlIGRvY3MvdW5zdGFibGUvbWlzYy9saXZlcGF0Y2gu bWFya2Rvd24KICAqIGZvciB0aGUgZGVzaWduIGRldGFpbHMgb2YgdGhpcyBoeXBlcmNhbGwuCiAg KgogICogVGhlcmUgYXJlIGZvdXIgc3ViLW9wczoKLSAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBM T0FEICgwKQotICogIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgKDEpCi0gKiAgWEVOX1NZU0NUTF9Y U1BMSUNFX0xJU1QgKDIpCi0gKiAgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiAoMykKKyAqICBY RU5fU1lTQ1RMX0xJVkVQQVRDSF9VUExPQUQgKDApCisgKiAgWEVOX1NZU0NUTF9MSVZFUEFUQ0hf R0VUICgxKQorICogIFhFTl9TWVNDVExfTElWRVBBVENIX0xJU1QgKDIpCisgKiAgWEVOX1NZU0NU TF9MSVZFUEFUQ0hfQUNUSU9OICgzKQogICoKICAqIFRoZSBub3JtYWwgc2VxdWVuY2Ugb2Ygc3Vi LW9wcyBpcyB0bzoKLSAqICAxKSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEIHRvIHVwbG9hZCB0 aGUgcGF5bG9hZC4gSWYgZXJyb3JzIFNUT1AuCi0gKiAgMikgWEVOX1NZU0NUTF9YU1BMSUNFX0dF VCB0byBjaGVjayB0aGUgYC0+cmNgLiBJZiAtWEVOX0VBR0FJTiBzcGluLgorICogIDEpIFhFTl9T WVNDVExfTElWRVBBVENIX1VQTE9BRCB0byB1cGxvYWQgdGhlIHBheWxvYWQuIElmIGVycm9ycyBT VE9QLgorICogIDIpIFhFTl9TWVNDVExfTElWRVBBVENIX0dFVCB0byBjaGVjayB0aGUgYC0+cmNg LiBJZiAtWEVOX0VBR0FJTiBzcGluLgogICogICAgIElmIHplcm8gZ28gdG8gbmV4dCBzdGVwLgot ICogIDMpIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04gd2l0aCBYU1BMSUNFX0FDVElPTl9BUFBM WSB0byBhcHBseSB0aGUgcGF0Y2guCi0gKiAgNCkgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCB0byBj aGVjayB0aGUgYC0+cmNgLiBJZiBpbiAtWEVOX0VBR0FJTiBzcGluLgorICogIDMpIFhFTl9TWVND VExfTElWRVBBVENIX0FDVElPTiB3aXRoIExJVkVQQVRDSF9BQ1RJT05fQVBQTFkgdG8gYXBwbHkg dGhlIHBhdGNoLgorICogIDQpIFhFTl9TWVNDVExfTElWRVBBVENIX0dFVCB0byBjaGVjayB0aGUg YC0+cmNgLiBJZiBpbiAtWEVOX0VBR0FJTiBzcGluLgogICogICAgIElmIHplcm8gZXhpdCB3aXRo IHN1Y2Nlc3MuCiAgKi8KIAotI2RlZmluZSBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTiAxCisjZGVm aW5lIExJVkVQQVRDSF9QQVlMT0FEX1ZFUlNJT04gMQogLyoKLSAqIC54c3BsaWNlLmZ1bmNzIHN0 cnVjdHVyZSBsYXlvdXQgZGVmaW5lZCBpbiB0aGUgYFBheWxvYWQgZm9ybWF0YAotICogc2VjdGlv biBpbiB0aGUgeFNwbGljZSBkZXNpZ24gZG9jdW1lbnQuCisgKiAubGl2ZXBhdGNoLmZ1bmNzIHN0 cnVjdHVyZSBsYXlvdXQgZGVmaW5lZCBpbiB0aGUgYFBheWxvYWQgZm9ybWF0YAorICogc2VjdGlv biBpbiB0aGUgTGl2ZSBQYXRjaCBkZXNpZ24gZG9jdW1lbnQuCiAgKgogICogV2UgZ3VhcmQgdGhp cyB3aXRoIF9fWEVOX18gYXMgdG9vbHN0YWNrcyBTSE9VTEQgbm90IHVzZSBpdC4KICAqLwogI2lm ZGVmIF9fWEVOX18KLXN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgeworc3RydWN0IGxpdmVwYXRj aF9mdW5jIHsKICAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAvKiBOYW1lIG9mIGZ1bmN0aW9u IHRvIGJlIHBhdGNoZWQuICovCiAgICAgdm9pZCAqbmV3X2FkZHI7CiAgICAgdm9pZCAqb2xkX2Fk ZHI7CiAgICAgdWludDMyX3QgbmV3X3NpemU7CiAgICAgdWludDMyX3Qgb2xkX3NpemU7Ci0gICAg dWludDhfdCB2ZXJzaW9uOyAgICAgICAgLyogTVVTVCBiZSBYU1BMSUNFX1BBWUxPQURfVkVSU0lP Ti4gKi8KKyAgICB1aW50OF90IHZlcnNpb247ICAgICAgICAvKiBNVVNUIGJlIExJVkVQQVRDSF9Q QVlMT0FEX1ZFUlNJT04uICovCiAgICAgdWludDhfdCBvcGFxdWVbMzFdOwogfTsKLXR5cGVkZWYg c3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyB4c3BsaWNlX3BhdGNoX2Z1bmNfdDsKK3R5cGVkZWYg c3RydWN0IGxpdmVwYXRjaF9mdW5jIGxpdmVwYXRjaF9mdW5jX3Q7CiAjZW5kaWYKIAogLyoKICAq IFN0cnVjdHVyZSBkZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVseSBpZGVudGlmaWVz IHRoZQogICogcGF5bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgotICogUmVjb21tZW5k ZWQgbGVuZ3RoIGlzIHVwdG8gWEVOX1hTUExJQ0VfTkFNRV9TSVpFLgorICogUmVjb21tZW5kZWQg bGVuZ3RoIGlzIHVwdG8gWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkUuCiAgKiBJbmNsdWRlcyB0aGUg TlVMIHRlcm1pbmF0b3IuCiAgKi8KLSNkZWZpbmUgWEVOX1hTUExJQ0VfTkFNRV9TSVpFIDEyOAot c3RydWN0IHhlbl94c3BsaWNlX25hbWUgeworI2RlZmluZSBYRU5fTElWRVBBVENIX05BTUVfU0la RSAxMjgKK3N0cnVjdCB4ZW5fbGl2ZXBhdGNoX25hbWUgewogICAgIFhFTl9HVUVTVF9IQU5ETEVf NjQoY2hhcikgbmFtZTsgICAgICAgICAvKiBJTjogcG9pbnRlciB0byBuYW1lLiAqLwogICAgIHVp bnQxNl90IHNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogc2l6ZSBvZiBuYW1l LiBNYXkgYmUgdXB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYRU5fWFNQTElDRV9OQU1FX1NJWkUuICovCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhFTl9MSVZFUEFUQ0hfTkFNRV9TSVpFLiAqLwogICAgIHVp bnQxNl90IHBhZFszXTsgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogTVVTVCBiZSB6ZXJv LiAqLwogfTsKLXR5cGVkZWYgc3RydWN0IHhlbl94c3BsaWNlX25hbWUgeGVuX3hzcGxpY2VfbmFt ZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3hzcGxpY2VfbmFtZV90KTsKK3R5cGVk ZWYgc3RydWN0IHhlbl9saXZlcGF0Y2hfbmFtZSB4ZW5fbGl2ZXBhdGNoX25hbWVfdDsKK0RFRklO RV9YRU5fR1VFU1RfSEFORExFKHhlbl9saXZlcGF0Y2hfbmFtZV90KTsKIAogLyoKICAqIFVwbG9h ZCBhIHBheWxvYWQgdG8gdGhlIGh5cGVydmlzb3IuIFRoZSBwYXlsb2FkIGlzIHZlcmlmaWVkCiAg KiBhZ2FpbnN0IGJhc2ljIGNoZWNrcyBhbmQgaWYgdGhlcmUgYXJlIGFueSBpc3N1ZXMgdGhlIHBy b3BlciByZXR1cm4gY29kZQogICogd2lsbCBiZSByZXR1cm5lZC4gVGhlIHBheWxvYWQgaXMgbm90 IGFwcGxpZWQgYXQgdGhpcyB0aW1lIC0gdGhhdCBpcwotICogY29udHJvbGxlZCBieSBYRU5fU1lT Q1RMX1hTUExJQ0VfQUNUSU9OLgorICogY29udHJvbGxlZCBieSBYRU5fU1lTQ1RMX0xJVkVQQVRD SF9BQ1RJT04uCiAgKgogICogVGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIGlmIHRoZSBwYXlsb2Fk IHdhcyBzdWNjZXNmdWxseSB1cGxvYWRlZC4KICAqIE90aGVyd2lzZSBhbiBFWFggcmV0dXJuIHZh bHVlIGlzIHByb3ZpZGVkLiBEdXBsaWNhdGUgYG5hbWVgIGFyZSBub3QKQEAgLTkxOCw0MiArOTE4 LDQyIEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNlX25hbWVfdCk7CiAgKiBU aGUgcGF5bG9hZCBhdCB0aGlzIHBvaW50IGlzIHZlcmlmaWVkIGFnYWluc3QgYmFzaWMgY2hlY2tz LgogICoKICAqIFRoZSBgcGF5bG9hZGAgaXMgdGhlIEVMRiBwYXlsb2FkIGFzIG1lbnRpb25lZCBp biB0aGUgYFBheWxvYWQgZm9ybWF0YAotICogc2VjdGlvbiBpbiB0aGUgeFNwbGljZSBkZXNpZ24g ZG9jdW1lbnQuCisgKiBzZWN0aW9uIGluIHRoZSBMaXZlIFBhdGNoIGRlc2lnbiBkb2N1bWVudC4K ICAqLwotI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEIDAKLXN0cnVjdCB4ZW5fc3lz Y3RsX3hzcGxpY2VfdXBsb2FkIHsKLSAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAgICAg ICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLworI2RlZmluZSBYRU5fU1lTQ1RM X0xJVkVQQVRDSF9VUExPQUQgMAorc3RydWN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX3VwbG9hZCB7 CisgICAgeGVuX2xpdmVwYXRjaF9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgIC8qIElOLCBuYW1l IG9mIHRoZSBwYXRjaC4gKi8KICAgICB1aW50NjRfdCBzaXplOyAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogSU4sIHNpemUgb2YgdGhlIEVMRiBmaWxlLiAqLwogICAgIFhFTl9HVUVTVF9IQU5E TEVfNjQodWludDgpIHBheWxvYWQ7ICAgICAvKiBJTiwgdGhlIEVMRiBmaWxlLiAqLwogfTsKLXR5 cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWQgeGVuX3N5c2N0bF94c3BsaWNl X3VwbG9hZF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX3Vw bG9hZF90KTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX3VwbG9hZCB4ZW5f c3lzY3RsX2xpdmVwYXRjaF91cGxvYWRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9z eXNjdGxfbGl2ZXBhdGNoX3VwbG9hZF90KTsKIAogLyoKICAqIFJldHJpZXZlIGFuIHN0YXR1cyBv ZiBhbiBzcGVjaWZpYyBwYXlsb2FkLgogICoKLSAqIFVwb24gY29tcGxldGlvbiB0aGUgYHN0cnVj dCB4ZW5feHNwbGljZV9zdGF0dXNgIGlzIHVwZGF0ZWQuCisgKiBVcG9uIGNvbXBsZXRpb24gdGhl IGBzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9zdGF0dXNgIGlzIHVwZGF0ZWQuCiAgKgogICogVGhlIHJl dHVybiB2YWx1ZSBpcyB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIFhFTl9FWFggb24gZmFpbHVyZS4gVGhp cyBvcGVyYXRpb24KICAqIGlzIHN5bmNocm9ub3VzIGFuZCBkb2VzIG5vdCByZXF1aXJlIHByZWVt cHRpb24uCiAgKi8KLSNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCAxCisjZGVmaW5lIFhF Tl9TWVNDVExfTElWRVBBVENIX0dFVCAxCiAKLXN0cnVjdCB4ZW5feHNwbGljZV9zdGF0dXMgewot I2RlZmluZSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgICAgICAxCi0jZGVmaW5lIFhTUExJQ0VfU1RB VEVfQVBQTElFRCAgICAgIDIKLSAgICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgLyog T1VUOiBYU1BMSUNFX1NUQVRFXyouICovCitzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9zdGF0dXMgewor I2RlZmluZSBMSVZFUEFUQ0hfU1RBVEVfQ0hFQ0tFRCAgICAgIDEKKyNkZWZpbmUgTElWRVBBVENI X1NUQVRFX0FQUExJRUQgICAgICAyCisgICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAg IC8qIE9VVDogTElWRVBBVENIX1NUQVRFXyouICovCiAgICAgaW50MzJfdCByYzsgICAgICAgICAg ICAgICAgICAgIC8qIE9VVDogMCBpZiBubyBlcnJvciwgb3RoZXJ3aXNlIC1YRU5fRVhYLiAqLwog fTsKLXR5cGVkZWYgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1cyB4ZW5feHNwbGljZV9zdGF0dXNf dDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNlX3N0YXR1c190KTsKK3R5cGVk ZWYgc3RydWN0IHhlbl9saXZlcGF0Y2hfc3RhdHVzIHhlbl9saXZlcGF0Y2hfc3RhdHVzX3Q7CitE RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbGl2ZXBhdGNoX3N0YXR1c190KTsKIAotc3RydWN0 IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgewotICAgIHhlbl94c3BsaWNlX25hbWVfdCBuYW1lOyAg ICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF5bG9hZC4gKi8KLSAgICB4ZW5feHNw bGljZV9zdGF0dXNfdCBzdGF0dXM7ICAgICAgICAgICAgLyogSU4vT1VULCBzdGF0ZSBvZiBpdC4g Ki8KK3N0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9nZXQgeworICAgIHhlbl9saXZlcGF0Y2hf bmFtZV90IG5hbWU7ICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF5bG9hZC4gKi8K KyAgICB4ZW5fbGl2ZXBhdGNoX3N0YXR1c190IHN0YXR1czsgICAgICAgICAgLyogSU4vT1VULCBz dGF0ZSBvZiBpdC4gKi8KIH07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0 IHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9z eXNjdGxfeHNwbGljZV9nZXRfdCk7Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRj aF9nZXQgeGVuX3N5c2N0bF9saXZlcGF0Y2hfZ2V0X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5fc3lzY3RsX2xpdmVwYXRjaF9nZXRfdCk7CiAKIC8qCiAgKiBSZXRyaWV2ZSBhbiBhcnJh eSBvZiBhYmJyZXZpYXRlZCBzdGF0dXMgYW5kIG5hbWVzIG9mIHBheWxvYWRzIHRoYXQgYXJlCkBA IC05NzYsOCArOTc2LDggQEAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3Bs aWNlX2dldF90KTsKICAqIGRhdGEgYW5kIHN0YXJ0IGZyb20gc2NyYXRjaC4gSXQgaXMgT0sgZm9y IHRoZSB0b29sc3RhY2sgdG8gdXNlIHRoZSBuZXcKICAqIGB2ZXJzaW9uYCBmaWVsZC4KICAqLwot I2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCAyCi1zdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX2xpc3QgeworI2RlZmluZSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9MSVNUIDIKK3N0cnVjdCB4 ZW5fc3lzY3RsX2xpdmVwYXRjaF9saXN0IHsKICAgICB1aW50MzJfdCB2ZXJzaW9uOyAgICAgICAg ICAgICAgICAgICAgICAgLyogT1VUOiBIeXBlcnZpc29yIHN0YW1wcyB2YWx1ZS4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdmFyaWVzIGJldHdlZW4g Y2FsbHMsIHdlIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKiBnZXR0aW5nIHN0YWxlIGRhdGEuICovCkBAIC05ODcsNDkgKzk4Nyw0OSBAQCBzdHJ1Y3Qg eGVuX3N5c2N0bF94c3BsaWNlX2xpc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhbW91bnQgb2YgcGF5bG9hZHMgYW5kIHZlcnNpb24uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDogSG93IG1hbnkgcGF5 bG9hZHMgbGVmdC4gKi8KICAgICB1aW50MzJfdCBwYWQ7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogSU46IE11c3QgYmUgemVyby4gKi8KLSAgICBYRU5fR1VFU1RfSEFORExFXzY0KHhlbl94 c3BsaWNlX3N0YXR1c190KSBzdGF0dXM7ICAvKiBPVVQuIE11c3QgaGF2ZSBlbm91Z2gKKyAgICBY RU5fR1VFU1RfSEFORExFXzY0KHhlbl9saXZlcGF0Y2hfc3RhdHVzX3QpIHN0YXR1czsgIC8qIE9V VC4gTXVzdCBoYXZlIGVub3VnaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzcGFjZSBhbGxvY2F0ZSBmb3IgbnIgb2YgdGhlbS4gKi8KICAgICBYRU5fR1VF U1RfSEFORExFXzY0KGNoYXIpIG5hbWU7ICAgICAgICAgLyogT1VUOiBBcnJheSBvZiBuYW1lcy4g RWFjaCBtZW1iZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTVVTVCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVVTVCBYRU5fTElWRVBBVENIX05BTUVfU0la RSBpbiBzaXplLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNdXN0IGhhdmUgbnIgb2YgdGhlbS4gKi8KICAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQz MikgbGVuOyAgICAgICAgLyogT1VUOiBBcnJheSBvZiBsZW5ndGhzIG9mIG5hbWUncy4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBoYXZlIG5yIG9m IHRoZW0uICovCiB9OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2xpc3QgeGVu X3N5c2N0bF94c3BsaWNlX2xpc3RfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNj dGxfeHNwbGljZV9saXN0X3QpOwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hf bGlzdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9saXN0X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5fc3lzY3RsX2xpdmVwYXRjaF9saXN0X3QpOwogCiAvKgogICogUGVyZm9ybSBhbiBvcGVy YXRpb24gb24gdGhlIHBheWxvYWQgc3RydWN0dXJlIHJlZmVyZW5jZWQgYnkgdGhlIGBuYW1lYCBm aWVsZC4KICAqIFRoZSBvcGVyYXRpb24gcmVxdWVzdCBpcyBhc3luY2hyb25vdXMgYW5kIHRoZSBz dGF0dXMgc2hvdWxkIGJlIHJldHJpZXZlZAotICogYnkgdXNpbmcgZWl0aGVyIFhFTl9TWVNDVExf WFNQTElDRV9HRVQgb3IgWEVOX1NZU0NUTF9YU1BMSUNFX0xJU1QgaHlwZXJjYWxsLgorICogYnkg dXNpbmcgZWl0aGVyIFhFTl9TWVNDVExfTElWRVBBVENIX0dFVCBvciBYRU5fU1lTQ1RMX0xJVkVQ QVRDSF9MSVNUIGh5cGVyY2FsbC4KICAqLwotI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNU SU9OIDMKLXN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uIHsKLSAgICB4ZW5feHNwbGlj ZV9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAq LwotI2RlZmluZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQgICAgICAgMQotI2RlZmluZSBYU1BMSUNF X0FDVElPTl9SRVZFUlQgICAgICAgMgotI2RlZmluZSBYU1BMSUNFX0FDVElPTl9BUFBMWSAgICAg ICAgMwotI2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVBMQUNFICAgICAgNAotICAgIHVpbnQzMl90 IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogWFNQTElDRV9BQ1RJT05fKi4g Ki8KKyNkZWZpbmUgWEVOX1NZU0NUTF9MSVZFUEFUQ0hfQUNUSU9OIDMKK3N0cnVjdCB4ZW5fc3lz Y3RsX2xpdmVwYXRjaF9hY3Rpb24geworICAgIHhlbl9saXZlcGF0Y2hfbmFtZV90IG5hbWU7ICAg ICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF0Y2guICovCisjZGVmaW5lIExJVkVQQVRD SF9BQ1RJT05fVU5MT0FEICAgICAgIDEKKyNkZWZpbmUgTElWRVBBVENIX0FDVElPTl9SRVZFUlQg ICAgICAgMgorI2RlZmluZSBMSVZFUEFUQ0hfQUNUSU9OX0FQUExZICAgICAgICAzCisjZGVmaW5l IExJVkVQQVRDSF9BQ1RJT05fUkVQTEFDRSAgICAgIDQKKyAgICB1aW50MzJfdCBjbWQ7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogSU46IExJVkVQQVRDSF9BQ1RJT05fKi4gKi8KICAgICB1 aW50MzJfdCB0aW1lb3V0OyAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IFplcm8gaWYgbm8g dGltZW91dC4gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogT3IgdXBwZXIgYm91bmQgb2YgdGltZSAobXMpICovCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBvcGVyYXRpb24gdG8gdGFrZS4gKi8KIH07Ci10 eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uIHhlbl9zeXNjdGxfeHNwbGlj ZV9hY3Rpb25fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9h Y3Rpb25fdCk7Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9hY3Rpb24geGVu X3N5c2N0bF9saXZlcGF0Y2hfYWN0aW9uX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f c3lzY3RsX2xpdmVwYXRjaF9hY3Rpb25fdCk7CiAKLXN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf b3AgewotICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjog WEVOX1NZU0NUTF9YU1BMSUNFXyouICovCitzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hfb3Ag eworICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogWEVO X1NZU0NUTF9MSVZFUEFUQ0hfKi4gKi8KICAgICB1aW50MzJfdCBwYWQ7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogSU46IEFsd2F5cyB6ZXJvLiAqLwogICAgIHVuaW9uIHsKLSAgICAgICAg eGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90IHVwbG9hZDsKLSAgICAgICAgeGVuX3N5c2N0bF94 c3BsaWNlX2xpc3RfdCBsaXN0OwotICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0X3QgZ2V0 OwotICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgYWN0aW9uOworICAgICAgICB4 ZW5fc3lzY3RsX2xpdmVwYXRjaF91cGxvYWRfdCB1cGxvYWQ7CisgICAgICAgIHhlbl9zeXNjdGxf bGl2ZXBhdGNoX2xpc3RfdCBsaXN0OworICAgICAgICB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9nZXRf dCBnZXQ7CisgICAgICAgIHhlbl9zeXNjdGxfbGl2ZXBhdGNoX2FjdGlvbl90IGFjdGlvbjsKICAg ICB9IHU7CiB9OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wIHhlbl9zeXNj dGxfeHNwbGljZV9vcF90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3Bs aWNlX29wX3QpOwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hfb3AgeGVuX3N5 c2N0bF9saXZlcGF0Y2hfb3BfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxf bGl2ZXBhdGNoX29wX3QpOwogCiBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgdWludDMyX3QgY21k OwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogI2RlZmluZSBYRU5f U1lTQ1RMX3RtZW1fb3AgICAgICAgICAgICAgICAgICAgICAgIDI0CiAjZGVmaW5lIFhFTl9TWVND VExfZ2V0X2NwdV9sZXZlbGxpbmdfY2FwcyAgICAgICAgMjUKICNkZWZpbmUgWEVOX1NZU0NUTF9n ZXRfY3B1X2ZlYXR1cmVzZXQgICAgICAgICAgICAyNgotI2RlZmluZSBYRU5fU1lTQ1RMX3hzcGxp Y2Vfb3AgICAgICAgICAgICAgICAgICAgIDI3CisjZGVmaW5lIFhFTl9TWVNDVExfbGl2ZXBhdGNo X29wICAgICAgICAgICAgICAgICAgMjcKICAgICB1aW50MzJfdCBpbnRlcmZhY2VfdmVyc2lvbjsg LyogWEVOX1NZU0NUTF9JTlRFUkZBQ0VfVkVSU0lPTiAqLwogICAgIHVuaW9uIHsKICAgICAgICAg c3RydWN0IHhlbl9zeXNjdGxfcmVhZGNvbnNvbGUgICAgICAgcmVhZGNvbnNvbGU7CkBAIC0xMDg2 LDcgKzEwODYsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lz Y3RsX3RtZW1fb3AgICAgICAgICAgIHRtZW1fb3A7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3Rs X2NwdV9sZXZlbGxpbmdfY2FwcyBjcHVfbGV2ZWxsaW5nX2NhcHM7CiAgICAgICAgIHN0cnVjdCB4 ZW5fc3lzY3RsX2NwdV9mZWF0dXJlc2V0ICAgIGNwdV9mZWF0dXJlc2V0OwotICAgICAgICBzdHJ1 Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wICAgICAgICB4c3BsaWNlOworICAgICAgICBzdHJ1Y3Qg eGVuX3N5c2N0bF9saXZlcGF0Y2hfb3AgICAgICBsaXZlcGF0Y2g7CiAgICAgICAgIHVpbnQ4X3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOwogICAgIH0gdTsKIH07CmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIGIveGVuL2luY2x1ZGUveGVuL2Vs ZnN0cnVjdHMuaAppbmRleCA2ODk1NGIwLi41ZjIwODJlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS94ZW4vZWxmc3RydWN0cy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKQEAg LTM1Myw3ICszNTMsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVmaW5lCUVMRjY0X1JfVFlQRShp bmZvKQkoKGluZm8pICYgMHhGRkZGRkZGRikKICNkZWZpbmUgRUxGNjRfUl9JTkZPKHMsdCkgCSgo KHMpIDw8IDMyKSArICh1X2ludDMyX3QpKHQpKQogCi0vKiB4ODYtNjQgcmVsb2NhdGlvbiB0eXBl cy4gV2UgbGlzdCBvbmx5IHRoZSBvbmVzIHhTcGxpY2UgaW1wbGVtZW50cy4gKi8KKy8qIHg4Ni02 NCByZWxvY2F0aW9uIHR5cGVzLiBXZSBsaXN0IG9ubHkgdGhlIG9uZXMgTGl2ZSBQYXRjaCBpbXBs ZW1lbnRzLiAqLwogI2RlZmluZSBSX1g4Nl82NF9OT05FCQkwCS8qIE5vIHJlbG9jICovCiAjZGVm aW5lIFJfWDg2XzY0XzY0CSAgICAJMQkvKiBEaXJlY3QgNjQgYml0ICAqLwogI2RlZmluZSBSX1g4 Nl82NF9QQzMyCQkyCS8qIFBDIHJlbGF0aXZlIDMyIGJpdCBzaWduZWQgKi8KZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoLmgK c2ltaWxhcml0eSBpbmRleCAzNCUKcmVuYW1lIGZyb20geGVuL2luY2x1ZGUveGVuL3hzcGxpY2Uu aApyZW5hbWUgdG8geGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaC5oCmluZGV4IDVmZmI2OWQuLjdh MDQ5MzkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2lu Y2x1ZGUveGVuL2xpdmVwYXRjaC5oCkBAIC0zLDExMCArMywxMTAgQEAKICAqCiAgKi8KIAotI2lm bmRlZiBfX1hFTl9YU1BMSUNFX0hfXwotI2RlZmluZSBfX1hFTl9YU1BMSUNFX0hfXworI2lmbmRl ZiBfX1hFTl9MSVZFUEFUQ0hfSF9fCisjZGVmaW5lIF9fWEVOX0xJVkVQQVRDSF9IX18KIAotc3Ry dWN0IHhzcGxpY2VfZWxmOwotc3RydWN0IHhzcGxpY2VfZWxmX3NlYzsKLXN0cnVjdCB4c3BsaWNl X2VsZl9zeW07Ci1zdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOworc3RydWN0IGxpdmVwYXRj aF9lbGY7CitzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWM7CitzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9z eW07CitzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hfb3A7CiAKICNpbmNsdWRlIDx4ZW4vZWxm c3RydWN0cy5oPgotI2lmZGVmIENPTkZJR19YU1BMSUNFCisjaWZkZWYgQ09ORklHX0xJVkVQQVRD SAogCiAvKgogICogV2UgdXNlIGFsdGVybmF0aXZlIGFuZCBleGNlcHRpb24gdGFibGUgY29kZSAt IHdoaWNoIGJ5IGRlZmF1bHQgYXJlIF9faW5pdAogICogb25seSwgaG93ZXZlciB3ZSBuZWVkIHRo ZW0gZHVyaW5nIHJ1bnRpbWUuIFRoZXNlIG1hY3JvcyBhbGxvd3MgdXMgdG8gYnVpbGQKICAqIHRo ZSBpbWFnZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucyBidWlsdC1pbi4gKFNlZSB0aGUgI2Vsc2UgYmVs b3cpLgogICovCi0jZGVmaW5lIGluaXRfb3JfeHNwbGljZV9jb25zdAotI2RlZmluZSBpbml0X29y X3hzcGxpY2VfY29uc3RyZWwKLSNkZWZpbmUgaW5pdF9vcl94c3BsaWNlX2RhdGEKLSNkZWZpbmUg aW5pdF9vcl94c3BsaWNlCisjZGVmaW5lIGluaXRfb3JfbGl2ZXBhdGNoX2NvbnN0CisjZGVmaW5l IGluaXRfb3JfbGl2ZXBhdGNoX2NvbnN0cmVsCisjZGVmaW5lIGluaXRfb3JfbGl2ZXBhdGNoX2Rh dGEKKyNkZWZpbmUgaW5pdF9vcl9saXZlcGF0Y2gKIAogLyogQ29udmVuaWVuY2UgZGVmaW5lIGZv ciBwcmludGsuICovCi0jZGVmaW5lIFhTUExJQ0UgICAgICAgICAgICAgInhzcGxpY2U6ICIKKyNk ZWZpbmUgTElWRVBBVENIICAgICAgICAgICAgICJsaXZlcGF0Y2g6ICIKIC8qIEVMRiBwYXlsb2Fk IHNwZWNpYWwgc2VjdGlvbiBuYW1lcy4gKi8KLSNkZWZpbmUgRUxGX1hTUExJQ0VfRlVOQyAgICAi LnhzcGxpY2UuZnVuY3MiCi0jZGVmaW5lIEVMRl9YU1BMSUNFX0RFUEVORFMgIi54c3BsaWNlLmRl cGVuZHMiCi0jZGVmaW5lIEVMRl9CVUlMRF9JRF9OT1RFICAgIi5ub3RlLmdudS5idWlsZC1pZCIK KyNkZWZpbmUgRUxGX0xJVkVQQVRDSF9GVU5DICAgICIubGl2ZXBhdGNoLmZ1bmNzIgorI2RlZmlu ZSBFTEZfTElWRVBBVENIX0RFUEVORFMgIi5saXZlcGF0Y2guZGVwZW5kcyIKKyNkZWZpbmUgRUxG X0JVSUxEX0lEX05PVEUgICAgICAiLm5vdGUuZ251LmJ1aWxkLWlkIgogCi1zdHJ1Y3QgeHNwbGlj ZV9zeW1ib2wgeworc3RydWN0IGxpdmVwYXRjaF9zeW1ib2wgewogICAgIGNvbnN0IGNoYXIgKm5h bWU7CiAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAg ICBib29sX3QgbmV3X3N5bWJvbDsKIH07CiAKLWludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lz Y3RsX3hzcGxpY2Vfb3AgKik7Ci12b2lkIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsodm9pZCk7Ci11 bnNpZ25lZCBsb25nIHhzcGxpY2Vfc3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBjaGFyICpz eW1uYW1lKTsKK2ludCBsaXZlcGF0Y2hfb3Aoc3RydWN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX29w ICopOwordm9pZCBjaGVja19mb3JfbGl2ZXBhdGNoX3dvcmsodm9pZCk7Cit1bnNpZ25lZCBsb25n IGxpdmVwYXRjaF9zeW1ib2xzX2xvb2t1cF9ieV9uYW1lKGNvbnN0IGNoYXIgKnN5bW5hbWUpOwog Ym9vbF90IGlzX3BhdGNoKGNvbnN0IHZvaWQgKmFkZHIpOwogaW50IHhlbl9idWlsZF9pZF9jaGVj ayhjb25zdCBFbGZfTm90ZSAqbiwgdW5zaWduZWQgaW50IG5fc3osCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHZvaWQgKipwLCB1bnNpZ25lZCBpbnQgKmxlbik7CiAKIC8qIEFyY2ggaG9v a3MuICovCi1pbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2Vf ZWxmICplbGYpOwotaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYyAqYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSk7Ci1pbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVs YShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKTsKK2ludCBhcmNo X2xpdmVwYXRjaF92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYpOwor aW50IGFyY2hfbGl2ZXBhdGNoX3BlcmZvcm1fcmVsKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9l bGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBsaXZlcGF0Y2hfZWxmX3NlYyAqcmVsYSk7CitpbnQgYXJjaF9saXZlcGF0Y2hfcGVyZm9ybV9y ZWxhKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpyZWxh KTsKIGVudW0gdmFfdHlwZSB7Ci0gICAgWFNQTElDRV9WQV9SWCwgLyogLnRleHQgKi8KLSAgICBY U1BMSUNFX1ZBX1JXLCAvKiAuZGF0YSAqLwotICAgIFhTUExJQ0VfVkFfUk8sIC8qIC5yb2RhdGEg Ki8KKyAgICBMSVZFUEFUQ0hfVkFfUlgsIC8qIC50ZXh0ICovCisgICAgTElWRVBBVENIX1ZBX1JX LCAvKiAuZGF0YSAqLworICAgIExJVkVQQVRDSF9WQV9STywgLyogLnJvZGF0YSAqLwogfTsKIAog LyoKLSAqIEZ1bmN0aW9uIHRvIHNlY3VyZSB0aGUgYWxsb2NhdGUgcGFnZXMgKGZyb20gYXJjaF94 c3BsaWNlX2FsbG9jX3BheWxvYWQpCisgKiBGdW5jdGlvbiB0byBzZWN1cmUgdGhlIGFsbG9jYXRl IHBhZ2VzIChmcm9tIGFyY2hfbGl2ZXBhdGNoX2FsbG9jX3BheWxvYWQpCiAgKiB3aXRoIHRoZSBy aWdodCBwYWdlIHBlcm1pc3Npb25zLgogICovCi1pbnQgYXJjaF94c3BsaWNlX3NlY3VyZShjb25z dCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZXMpOworaW50 IGFyY2hfbGl2ZXBhdGNoX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2Vz LCBlbnVtIHZhX3R5cGUgdHlwZXMpOwogCi12b2lkIGFyY2hfeHNwbGljZV9pbml0KHZvaWQpOwor dm9pZCBhcmNoX2xpdmVwYXRjaF9pbml0KHZvaWQpOwogCi0jaW5jbHVkZSA8cHVibGljL3N5c2N0 bC5oPiAvKiBGb3Igc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYy4gKi8KLWludCBhcmNoX3hzcGxp Y2VfdmVyaWZ5X2Z1bmMoY29uc3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYyk7Cisj aW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPiAvKiBGb3Igc3RydWN0IGxpdmVwYXRjaF9mdW5jLiAq LworaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZnVuYyAqZnVuYyk7CiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXJvdW5kIHRo ZSBjcml0aWNhbCByZWdpb24gcGF0Y2hpbmcgbGl2ZSBjb2RlLAogICogZm9yIGFuIGFyY2hpdGVj dHVyZSB0byB0YWtlIG1ha2UgYXBwcm9wcmF0aWUgZ2xvYmFsIHN0YXRlIGFkanVzdG1lbnRzLgog ICovCi12b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcih2b2lkKTsKLXZvaWQgYXJjaF94 c3BsaWNlX3BhdGNoaW5nX2xlYXZlKHZvaWQpOwordm9pZCBhcmNoX2xpdmVwYXRjaF9lbnRlcih2 b2lkKTsKK3ZvaWQgYXJjaF9saXZlcGF0Y2hfbGVhdmUodm9pZCk7CiAKLXZvaWQgYXJjaF94c3Bs aWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKTsKLXZvaWQgYXJj aF94c3BsaWNlX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVu Yyk7Ci12b2lkIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbih2b2lkKTsKK3ZvaWQgYXJjaF9saXZl cGF0Y2hfYXBwbHlfam1wKHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYyk7Cit2b2lkIGFyY2hf bGl2ZXBhdGNoX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKTsK K3ZvaWQgYXJjaF9saXZlcGF0Y2hfcG9zdF9hY3Rpb24odm9pZCk7CiAKLXZvaWQgYXJjaF94c3Bs aWNlX21hc2sodm9pZCk7Ci12b2lkIGFyY2hfeHNwbGljZV91bm1hc2sodm9pZCk7Cit2b2lkIGFy Y2hfbGl2ZXBhdGNoX21hc2sodm9pZCk7Cit2b2lkIGFyY2hfbGl2ZXBhdGNoX3VubWFzayh2b2lk KTsKICNlbHNlCiAKIC8qCi0gKiBJZiBub3QgY29tcGlsaW5nIHdpdGggeFNwbGljZSBjZXJ0YWlu IGZ1bmN0aW9uYWxpdHkgc2hvdWxkIHN0YXkgYXMKKyAqIElmIG5vdCBjb21waWxpbmcgd2l0aCBM aXZlIFBhdGNoIGNlcnRhaW4gZnVuY3Rpb25hbGl0eSBzaG91bGQgc3RheSBhcwogICogX19pbml0 LgogICovCi0jZGVmaW5lIGluaXRfb3JfeHNwbGljZV9jb25zdCAgICAgICBfX2luaXRjb25zdAot I2RlZmluZSBpbml0X29yX3hzcGxpY2VfY29uc3RyZWwgICAgX19pbml0Y29uc3RyZWwKLSNkZWZp bmUgaW5pdF9vcl94c3BsaWNlX2RhdGEgICAgICAgIF9faW5pdGRhdGEKLSNkZWZpbmUgaW5pdF9v cl94c3BsaWNlICAgICAgICAgICAgIF9faW5pdAorI2RlZmluZSBpbml0X29yX2xpdmVwYXRjaF9j b25zdCAgICAgICBfX2luaXRjb25zdAorI2RlZmluZSBpbml0X29yX2xpdmVwYXRjaF9jb25zdHJl bCAgICBfX2luaXRjb25zdHJlbAorI2RlZmluZSBpbml0X29yX2xpdmVwYXRjaF9kYXRhICAgICAg ICBfX2luaXRkYXRhCisjZGVmaW5lIGluaXRfb3JfbGl2ZXBhdGNoICAgICAgICAgICAgIF9faW5p dAogCiAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+IC8qIEZvciAtRU5PU1lTICovCi1zdGF0aWMgaW5s aW5lIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKm9wKQorc3Rh dGljIGlubGluZSBpbnQgbGl2ZXBhdGNoX29wKHN0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9v cCAqb3ApCiB7CiAgICAgcmV0dXJuIC1FTk9TWVM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBj aGVja19mb3JfeHNwbGljZV93b3JrKHZvaWQpIHsgfTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVj a19mb3JfbGl2ZXBhdGNoX3dvcmsodm9pZCkgeyB9Owogc3RhdGljIGlubGluZSBib29sX3QgaXNf cGF0Y2goY29uc3Qgdm9pZCAqYWRkcikKIHsKICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZiAvKiBD T05GSUdfWFNQTElDRSAqLworI2VuZGlmIC8qIENPTkZJR19MSVZFUEFUQ0ggKi8KIAotI2VuZGlm IC8qIF9fWEVOX1hTUExJQ0VfSF9fICovCisjZW5kaWYgLyogX19YRU5fTElWRVBBVENIX0hfXyAq LwogCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVu L3hzcGxpY2VfZWxmLmggYi94ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoX2VsZi5oCnNpbWlsYXJp dHkgaW5kZXggNTYlCnJlbmFtZSBmcm9tIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCnJl bmFtZSB0byB4ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoX2VsZi5oCmluZGV4IDc1MGRjOTQuLjdl N2M4NmUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCisrKyBiL3hl bi9pbmNsdWRlL3hlbi9saXZlcGF0Y2hfZWxmLmgKQEAgLTIsMTQgKzIsMTQgQEAKICAqIENvcHly aWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgogICovCiAKLSNpZm5kZWYgX19Y RU5fWFNQTElDRV9FTEZfSF9fCi0jZGVmaW5lIF9fWEVOX1hTUExJQ0VfRUxGX0hfXworI2lmbmRl ZiBfX1hFTl9MSVZFUEFUQ0hfRUxGX0hfXworI2RlZmluZSBfX1hFTl9MSVZFUEFUQ0hfRUxGX0hf XwogCiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CiAjaW5jbHVkZSA8eGVuL2VsZnN0cnVjdHMuaD4K IAotLyogVGhlIGZvbGxvd2luZyBkZXNjcmliZXMgYW4gRWxmIGZpbGUgYXMgY29uc3VtZWQgYnkg eFNwbGljZS4gKi8KLXN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgeworLyogVGhlIGZvbGxvd2luZyBk ZXNjcmliZXMgYW4gRWxmIGZpbGUgYXMgY29uc3VtZWQgYnkgWGVuIExpdmUgUGF0Y2guICovCitz dHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgewogICAgIGNvbnN0IEVsZl9TaGRyICpzZWM7ICAgICAg ICAgICAgICAgICAvKiBIb29rZWQgdXAgaW4gZWxmX3Jlc29sdmVfc2VjdGlvbnMuKi8KICAgICBj b25zdCBjaGFyICpuYW1lOyAgICAgICAgICAgICAgICAgICAgLyogSHVtYW4gcmVhZGFibGUgbmFt ZSBob29rZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcy4gKi8KQEAgLTE5LDMzICsxOSwzNCBAQCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRG9uZSBieSBsb2FkX3BheWxvYWRfZGF0YS4gKi8KIH07CiAKLXN0cnVjdCB4c3BsaWNl X2VsZl9zeW0geworc3RydWN0IGxpdmVwYXRjaF9lbGZfc3ltIHsKICAgICBjb25zdCBFbGZfU3lt ICpzeW07CiAgICAgY29uc3QgY2hhciAqbmFtZTsKIH07CiAKLXN0cnVjdCB4c3BsaWNlX2VsZiB7 CitzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiB7CiAgICAgY29uc3QgY2hhciAqbmFtZTsgICAgICAgICAg ICAgICAgICAgIC8qIFBvaW50ZXIgdG8gcGF5bG9hZC0+bmFtZS4gKi8KICAgICBzaXplX3QgbGVu OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBFTEYgZmlsZS4gKi8K ICAgICBjb25zdCBFbGZfRWhkciAqaGRyOyAgICAgICAgICAgICAgICAgLyogRUxGIGZpbGUuICov Ci0gICAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOyAgICAgICAgIC8qIEFycmF5IG9mIHNl Y3Rpb25zLCBhbGxvY2F0ZWQgYnkgdXMuICovCi0gICAgc3RydWN0IHhzcGxpY2VfZWxmX3N5bSAq c3ltOyAgICAgICAgIC8qIEFycmF5IG9mIHN5bWJvbHMgLCBhbGxvY2F0ZWQgYnkgdXMuICovCisg ICAgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpzZWM7ICAgICAgIC8qIEFycmF5IG9mIHNlY3Rp b25zLCBhbGxvY2F0ZWQgYnkgdXMuICovCisgICAgc3RydWN0IGxpdmVwYXRjaF9lbGZfc3ltICpz eW07ICAgICAgIC8qIEFycmF5IG9mIHN5bWJvbHMgLCBhbGxvY2F0ZWQgYnkgdXMuICovCiAgICAg dW5zaWduZWQgaW50IG5zeW07Ci0gICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3lt dGFiOy8qIFBvaW50ZXIgdG8gLnN5bXRhYiBzZWN0aW9uIC0gYWthIHRvCisgICAgY29uc3Qgc3Ry dWN0IGxpdmVwYXRjaF9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRlciB0byAuc3ltdGFiIHNlY3Rp b24gLSBha2EgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VjW3N5bXRhYl9pZHhdLiAqLwotICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN0 cnRhYjsvKiBQb2ludGVyIHRvIC5zdHJ0YWIgc2VjdGlvbi4gKi8KKyAgICBjb25zdCBzdHJ1Y3Qg bGl2ZXBhdGNoX2VsZl9zZWMgKnN0cnRhYjsvKiBQb2ludGVyIHRvIC5zdHJ0YWIgc2VjdGlvbi4g Ki8KICAgICB1bnNpZ25lZCBpbnQgc3ltdGFiX2lkeDsKIH07CiAKLWNvbnN0IHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgKnhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7Ci1pbnQgeHNwbGljZV9lbGZfbG9hZChzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSk7Ci12b2lkIHhzcGxpY2VfZWxmX2Zy ZWUoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZf c2VjICoKK2xpdmVwYXRjaF9lbGZfc2VjX2J5X25hbWUoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9l bGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7Citp bnQgbGl2ZXBhdGNoX2VsZl9sb2FkKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsIGNvbnN0IHZv aWQgKmRhdGEpOwordm9pZCBsaXZlcGF0Y2hfZWxmX2ZyZWUoc3RydWN0IGxpdmVwYXRjaF9lbGYg KmVsZik7CiAKLWludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2Vf ZWxmICplbGYpOwotaW50IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmKTsKK2ludCBsaXZlcGF0Y2hfZWxmX3Jlc29sdmVfc3ltYm9scyhzdHJ1Y3QgbGl2 ZXBhdGNoX2VsZiAqZWxmKTsKK2ludCBsaXZlcGF0Y2hfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVj dCBsaXZlcGF0Y2hfZWxmICplbGYpOwogCi0jZW5kaWYgLyogX19YRU5fWFNQTElDRV9FTEZfSF9f ICovCisjZW5kaWYgLyogX19YRU5fTElWRVBBVENIX0VMRl9IX18gKi8KIAogLyoKICAqIExvY2Fs IHZhcmlhYmxlczoKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svaG9va3MuYyBiL3hlbi94c20v Zmxhc2svaG9va3MuYwppbmRleCA3NDc3ZGJlLi4yMGQ0NmM4IDEwMDY0NAotLS0gYS94ZW4veHNt L2ZsYXNrL2hvb2tzLmMKKysrIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCkBAIC04MTQsOSArODE0 LDkgQEAgc3RhdGljIGludCBmbGFza19zeXNjdGwoaW50IGNtZCkKICAgICBjYXNlIFhFTl9TWVND VExfZ2V0X2NwdV9mZWF0dXJlc2V0OgogICAgICAgICByZXR1cm4gZG9tYWluX2hhc194ZW4oY3Vy cmVudC0+ZG9tYWluLCBYRU4yX19HRVRfQ1BVX0ZFQVRVUkVTRVQpOwogCi0gICAgY2FzZSBYRU5f U1lTQ1RMX3hzcGxpY2Vfb3A6CisgICAgY2FzZSBYRU5fU1lTQ1RMX2xpdmVwYXRjaF9vcDoKICAg ICAgICAgcmV0dXJuIGF2Y19jdXJyZW50X2hhc19wZXJtKFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFT U19YRU4yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOMl9fWFNQTElD RV9PUCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU4yX19M SVZFUEFUQ0hfT1AsIE5VTEwpOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnRrKCJmbGFz a19zeXNjdGw6IFVua25vd24gb3AgJWRcbiIsIGNtZCk7CmRpZmYgLS1naXQgYS94ZW4veHNtL2Zs YXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycyBiL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192 ZWN0b3JzCmluZGV4IDRkMWI1NDguLjNkMjkwNDIgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2sv cG9saWN5L2FjY2Vzc192ZWN0b3JzCisrKyBiL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192 ZWN0b3JzCkBAIC05Nyw4ICs5Nyw4IEBAIGNsYXNzIHhlbjIKICAgICBnZXRfY3B1X2xldmVsbGlu Z19jYXBzCiAjIFhFTl9TWVNDVExfZ2V0X2NwdV9mZWF0dXJlc2V0CiAgICAgZ2V0X2NwdV9mZWF0 dXJlc2V0Ci0jIFhFTl9TWVNDVExfeHNwbGljZV9vcAotICAgIHhzcGxpY2Vfb3AKKyMgWEVOX1NZ U0NUTF9saXZlcGF0Y2hfb3AKKyAgICBsaXZlcGF0Y2hfb3AKIH0KIAogIyBDbGFzc2VzIGRvbWFp biBhbmQgZG9tYWluMiBjb25zaXN0IG9mIG9wZXJhdGlvbnMgdGhhdCBhIGRvbWFpbiBwZXJmb3Jt cyBvbgotLSAKMi41LjUKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==