From mboxrd@z Thu Jan 1 00:00:00 1970 From: Elena Ufimtseva Subject: Re: [PATCH v2 1/3] x86: remove PVHv1 code Date: Wed, 1 Mar 2017 08:03:42 -0800 Message-ID: <20170301160342.GB14885@localhost.localdomain> References: <20170228173941.69473-1-roger.pau@citrix.com> <20170228173941.69473-2-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cj6l3-00070S-KD for xen-devel@lists.xenproject.org; Wed, 01 Mar 2017 16:05:42 +0000 Content-Disposition: inline In-Reply-To: <20170228173941.69473-2-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Roger Pau Monne Cc: Kevin Tian , Tamas K Lengyel , Wei Liu , Jun Nakajima , Razvan Cojocaru , George Dunlap , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBGZWIgMjgsIDIwMTcgYXQgMDU6Mzk6MzlQTSArMDAwMCwgUm9nZXIgUGF1IE1vbm5l IHdyb3RlOgo+IFRoaXMgcmVtb3ZhbCBhcHBsaWVzIHRvIGJvdGggdGhlIGh5cGVydmlzb3IgYW5k IHRoZSB0b29sc3RhY2sgc2lkZSBvZiBQVkh2MS4KPiAKPiBOb3RlIHRoYXQgb24gdGhlIHRvb2xz dGFjayBzaWRlIHRoZXJlJ3Mgb25lIGhpY2N1cDogb24geGwgdGhlICJwdmgiCj4gY29uZmlndXJh dGlvbiBvcHRpb24gaXMgdHJhbnNsYXRlZCB0byBidWlsZGVyPSJodm0iLAo+IGRldmljZV9tb2Rl bF92ZXJzaW9uPSJub25lIi4gIFRoaXMgaXMgZG9uZSBiZWNhdXNlIG90aGVyd2lzZSB4bCB3b3Vs ZCBzdGFydAo+IHBhcnNpbmcgUFYgbGlrZSBvcHRpb25zLCBhbmQgZmlsbGluZyB0aGUgUFYgc3Ry dWN0IGF0IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvCj4gKHdoaWNoIGluIHR1cm4gcG9sbHV0ZXMg dGhlIEhWTSBvbmUgYmVjYXVzZSBpdCdzIGEgdW5pb24pLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJv Z2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgoKZ2Ric3ggYml0czoKCkFja2Vk LWJ5OiBFbGVuYSBVZmltdHNldmEgPGVsZW5hLnVmaW10c2V2YUBvcmFjbGUuY29tPgoKPiAtLS0K PiBDaGFuZ2VzIHNpbmNlIHYxOgo+ICAtIFJlbW92ZSBkb20wcHZoIG9wdGlvbiBmcm9tIHRoZSBj b21tYW5kIGxpbmUgZG9jcy4KPiAgLSBCdW1wIGRvbWN0bCBpbnRlcmZhY2UgdmVyc2lvbiBkdWUg dG8gdGhlIHJlbW92ZWQgQ0RGIGZsYWcuCj4gCj4gLS0tCj4gQ2M6IElhbiBKYWNrc29uIDxpYW4u amFja3NvbkBldS5jaXRyaXguY29tPgo+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t Pgo+IENjOiBFbGVuYSBVZmltdHNldmEgPGVsZW5hLnVmaW10c2V2YUBvcmFjbGUuY29tPgo+IENj OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50 QGNpdHJpeC5jb20+Cj4gQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4K PiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4gQ2M6IEdlb3JnZSBEdW5s YXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KPiBDYzogUmF6dmFuIENvam9jYXJ1IDxy Y29qb2NhcnVAYml0ZGVmZW5kZXIuY29tPgo+IENjOiBUYW1hcyBLIExlbmd5ZWwgPHRhbWFzQHRr bGVuZ3llbC5jb20+Cj4gLS0tCj4gIGRvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbiAgICAgICAgICAg IHwgIDEwICstCj4gIGRvY3MvbWlzYy9wdmgtcmVhZG1lLnR4dCAgICAgICAgICAgIHwgIDYzIC0t LS0tLS0tCj4gIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIHwgICA3IC0KPiAg dG9vbHMvZGVidWdnZXIvZ2Ric3gveGcveGdfbWFpbi5jICAgfCAgIDQgKy0KPiAgdG9vbHMvbGli eGMvaW5jbHVkZS94Y19kb20uaCAgICAgICAgfCAgIDEgLQo+ICB0b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaCAgICAgICB8ICAgMiArLQo+ICB0b29scy9saWJ4Yy94Y19jcHVpZF94ODYuYyAg ICAgICAgICB8ICAxMyArLQo+ICB0b29scy9saWJ4Yy94Y19kb21fY29yZS5jICAgICAgICAgICB8 ICAgOSAtLQo+ICB0b29scy9saWJ4Yy94Y19kb21feDg2LmMgICAgICAgICAgICB8ICA0OSArKyst LS0KPiAgdG9vbHMvbGlieGMveGNfZG9tYWluLmMgICAgICAgICAgICAgfCAgIDEgLQo+ICB0b29s cy9saWJ4bC9saWJ4bF9jcmVhdGUuYyAgICAgICAgICB8ICAzMSArKy0tCj4gIHRvb2xzL2xpYnhs L2xpYnhsX2RvbS5jICAgICAgICAgICAgIHwgICAxIC0KPiAgdG9vbHMvbGlieGwvbGlieGxfaW50 ZXJuYWwuaCAgICAgICAgfCAgIDEgLQo+ICB0b29scy9saWJ4bC9saWJ4bF94ODYuYyAgICAgICAg ICAgICB8ICAgNyArLQo+ICB0b29scy94bC94bF9wYXJzZS5jICAgICAgICAgICAgICAgICB8ICAx MCArLQo+ICB4ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyAgICAgICAgICAgICB8ICAgMyArLQo+ICB4 ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAgICAgICB8ICA0MiArLS0tLS0KPiAgeGVuL2Fy Y2gveDg2L2RvbWFpbl9idWlsZC5jICAgICAgICAgfCAyODcgKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9kb21jdGwuYyAgICAgICAgICAgICAgIHwg ICA3ICstCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAgIHwgIDgxICstLS0t LS0tLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9oeXBlcmNhbGwuYyAgICAgICAgfCAgIDQgKy0KPiAg eGVuL2FyY2gveDg2L2h2bS9pby5jICAgICAgICAgICAgICAgfCAgIDIgLQo+ICB4ZW4vYXJjaC94 ODYvaHZtL2lvcmVxLmMgICAgICAgICAgICB8ICAgMyArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2ly cS5jICAgICAgICAgICAgICB8ICAgMyAtCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyAg ICAgICAgIHwgIDM1ICstLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgICAg IHwgIDEyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgIHwgICAyICst Cj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgICAgIHwgICAyICstCj4gIHhlbi9h cmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgIHwgICA2ICstCj4gIHhlbi9hcmNoL3g4Ni9w aHlzZGV2LmMgICAgICAgICAgICAgIHwgICA4IC0KPiAgeGVuL2FyY2gveDg2L3NldHVwLmMgICAg ICAgICAgICAgICAgfCAgIDcgLQo+ICB4ZW4vYXJjaC94ODYvdGltZS5jICAgICAgICAgICAgICAg ICB8ICAyNyAtLS0tCj4gIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAgICAgIHwgICAy IC0KPiAgeGVuL2NvbW1vbi9kb21jdGwuYyAgICAgICAgICAgICAgICAgfCAgMTAgLS0KPiAgeGVu L2NvbW1vbi9rZXJuZWwuYyAgICAgICAgICAgICAgICAgfCAgIDUgLQo+ICB4ZW4vY29tbW9uL3Zt X2V2ZW50LmMgICAgICAgICAgICAgICB8ICAgOCArLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2Rv bWFpbi5oICAgICAgICB8ICAgMSAtCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAg ICAgIHwgICAzIC0KPiAgeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAgICAgICAgfCAgMTQg Ky0KPiAgeGVuL2luY2x1ZGUveGVuL3NjaGVkLmggICAgICAgICAgICAgfCAgIDkgKy0KPiAgNDAg ZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNjk2IGRlbGV0aW9ucygtKQo+ICBkZWxl dGUgbW9kZSAxMDA2NDQgZG9jcy9taXNjL3B2aC1yZWFkbWUudHh0Cj4gCj4gZGlmZiAtLWdpdCBh L2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbiBiL2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbgo+IGlu ZGV4IDUwNWMxMTEuLmRhMWZkZDcgMTAwNjQ0Cj4gLS0tIGEvZG9jcy9tYW4veGwuY2ZnLnBvZC41 LmluCj4gKysrIGIvZG9jcy9tYW4veGwuY2ZnLnBvZC41LmluCj4gQEAgLTEwNjQsNiArMTA2NCwx MiBAQCBGSUZPLWJhc2VkIGV2ZW50IGNoYW5uZWwgQUJJIHN1cHBvcnQgdXAgdG8gMTMxLDA3MSBl dmVudCBjaGFubmVscy4KPiAgT3RoZXIgZ3Vlc3RzIGFyZSBsaW1pdGVkIHRvIDQwOTUgKDY0LWJp dCB4ODYgYW5kIEFSTSkgb3IgMTAyMyAoMzItYml0Cj4gIHg4NikuCj4gIAo+ICs9aXRlbSBCPHB2 aD1CT09MRUFOPgo+ICsKPiArU2VsZWN0cyB3aGV0aGVyIHRvIHJ1biB0aGlzIFBWIGd1ZXN0IGlu IGFuIEhWTSBjb250YWluZXIuIERlZmF1bHQgaXMgMC4KPiArTm90ZSB0aGF0IHRoaXMgb3B0aW9u IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBidWlsZGVyPSJodm0iIGFuZAo+ICtkZXZpY2VfbW9k ZWxfdmVyc2lvbj0ibm9uZSIKPiArCj4gID1iYWNrCj4gIAo+ICA9aGVhZDIgUGFyYXZpcnR1YWxp c2VkIChQVikgR3Vlc3QgU3BlY2lmaWMgT3B0aW9ucwo+IEBAIC0xMTA4LDEwICsxMTE0LDYgQEAg aWYgeW91ciBwYXJ0aWN1bGFyIGd1ZXN0IGtlcm5lbCBkb2VzIG5vdCByZXF1aXJlIHRoaXMgYmVo YXZpb3VyIHRoZW4KPiAgaXQgaXMgc2FmZSB0byBhbGxvdyB0aGlzIHRvIGJlIGVuYWJsZWQgYnV0 IHlvdSBtYXkgd2lzaCB0byBkaXNhYmxlIGl0Cj4gIGFueXdheS4KPiAgCj4gLT1pdGVtIEI8cHZo PUJPT0xFQU4+Cj4gLQo+IC1TZWxlY3RzIHdoZXRoZXIgdG8gcnVuIHRoaXMgUFYgZ3Vlc3QgaW4g YW4gSFZNIGNvbnRhaW5lci4gRGVmYXVsdCBpcyAwLgo+IC0KPiAgPWJhY2sKPiAgCj4gID1oZWFk MiBGdWxseS12aXJ0dWFsaXNlZCAoSFZNKSBHdWVzdCBTcGVjaWZpYyBPcHRpb25zCj4gZGlmZiAt LWdpdCBhL2RvY3MvbWlzYy9wdmgtcmVhZG1lLnR4dCBiL2RvY3MvbWlzYy9wdmgtcmVhZG1lLnR4 dAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGM1YjNkZTQuLjAwMDAwMDAKPiAt LS0gYS9kb2NzL21pc2MvcHZoLXJlYWRtZS50eHQKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsNjMg KzAsMCBAQAo+IC0KPiAtUFZIIDogYW4geDg2IFBWIGd1ZXN0IHJ1bm5pbmcgaW4gYW4gSFZNIGNv bnRhaW5lci4KPiAtCj4gLVNlZTogaHR0cDovL2Jsb2cueGVuLm9yZy9pbmRleC5waHAvMjAxMi8x MC8yMy90aGUtcGFyYXZpcnR1YWxpemF0aW9uLXNwZWN0cnVtLXBhcnQtMS10aGUtZW5kcy1vZi10 aGUtc3BlY3RydW0vCj4gLQo+IC1BdCB0aGUgbW9tZW50IEhBUCBpcyByZXF1aXJlZCBmb3IgUFZI Lgo+IC0KPiAtQXQgcHJlc2VudCB0aGUgb25seSBQVkggZ3Vlc3QgaXMgYW4geDg2IDY0Yml0IFBW IGxpbnV4LiBQYXRjaGVzIGFyZSBhdDoKPiAtICAgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj bS9saW51eC9rZXJuZWwvZ2l0L2tvbnJhZC94ZW4uZ2l0Cj4gLQo+IC1BIFBWSCBndWVzdCBrZXJu ZWwgbXVzdCBzdXBwb3J0IGZvbGxvd2luZyBmZWF0dXJlcywgYXMgZGVmaW5lZCBmb3IgbGludXgK PiAtaW4gYXJjaC94ODYveGVuL3hlbi1oZWFkLlM6Cj4gLQo+IC0gICAjZGVmaW5lIEZFQVRVUkVT X1BWSCAifHdyaXRhYmxlX2Rlc2NyaXB0b3JfdGFibGVzIiBcCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICJ8YXV0b190cmFuc2xhdGVkX3BoeXNtYXAiICAgIFwKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgInxzdXBlcnZpc29yX21vZGVfa2VybmVsIiAgICAgXAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAifGh2bV9jYWxsYmFja192ZWN0b3IiCj4gLQo+IC1JbiBhIG51dHNoZWxsOgo+ IC0qIHRoZSBndWVzdCB1c2VzIGF1dG8gdHJhbnNsYXRlOgo+IC0gLSBwMm0gaXMgbWFuYWdlZCBi eSB4ZW4KPiAtIC0gcGFnZXRhYmxlcyBhcmUgb3duZWQgYnkgdGhlIGd1ZXN0Cj4gLSAtIG1tdV91 cGRhdGUgaHlwZXJjYWxsIG5vdCBhdmFpbGFibGUKPiAtKiBpdCB1c2VzIGV2ZW50IGNhbGxiYWNr IGFuZCBub3QgdmxhcGljIGVtdWxhdGlvbiwKPiAtKiBJRFQgaXMgbmF0aXZlLCBzbyBzZXRfdHJh cF90YWJsZSBoY2FsbCBpcyBhbHNvIE4vQSBmb3IgYSBQVkggZ3Vlc3QuCj4gLQo+IC1Gb3IgYSBm dWxsIGxpc3Qgb2YgaGNhbGxzIHN1cHBvcnRlZCBmb3IgUFZILCBzZWUgcHZoX2h5cGVyY2FsbDY0 X3RhYmxlCj4gLWluIGFyY2gveDg2L2h2bS9odm0uYyBpbiB4ZW4uICBGcm9tIHRoZSBBQkkgcHJl c3BlY3RpdmUsIGl0J3MgbW9zdGx5IGEKPiAtUFYgZ3Vlc3Qgd2l0aCBhdXRvIHRyYW5zbGF0ZSwg YWx0aG91Z2ggaXQgZG9lcyB1c2UgaHZtX29wIGZvciBzZXR0aW5nCj4gLWNhbGxiYWNrIHZlY3Rv ciwgYW5kIGhhcyBhIHNwZWNpYWwgdmVyc2lvbiBvZiBhcmNoX3NldF9ndWVzdF9pbmZvIGZvciBi cmluZ2luZwo+IC11cCBzZWNvbmRhcnkgY3B1cy4KPiAtCj4gLVRoZSBpbml0aWFsIHBoYXNlIHRh cmdldHMgdGhlIGJvb3Rpbmcgb2YgYSA2NGJpdCBVUC9TTVAgbGludXggZ3Vlc3QgaW4gUFZICj4g LW1vZGUuIFRoaXMgaXMgZG9uZSBieSBhZGRpbmc6IHB2aD0xIGluIHRoZSBjb25maWcgZmlsZS4g eGwsIGFuZCBub3QgeG0sIGlzCj4gLXN1cHBvcnRlZC4gUGhhc2UgSSBwYXRjaGVzIGFyZSBicm9r ZW4gaW50byB0aHJlZSBwYXJ0czoKPiAtICAgLSB4ZW4gY2hhbmdlcyBmb3IgYm9vdGluZyBvZiA2 NGJpdCBQVkggZ3Vlc3QKPiAtICAgLSB0b29scyBjaGFuZ2VzIGZvciBjcmVhdGluZyBhIFBWSCBn dWVzdAo+IC0gICAtIGJvb3Qgb2YgNjRiaXQgZG9tMCBpbiBQVkggbW9kZS4KPiAtCj4gLVRvIGJv b3QgNjRiaXQgZG9tMCBpbiBQVkggbW9kZSwgYWRkIGRvbTBwdmggdG8gZ3J1YiB4ZW4gY29tbWFu ZCBsaW5lLgo+IC0KPiAtRm9sbG93aW5nIGZpeG1lJ3MgZXhpc3QgaW4gdGhlIGNvZGU6Cj4gLSAg LSBhcmNoL3g4Ni90aW1lLmM6IHN1cHBvcnQgbW9yZSB0c2MgbW9kZXMuCj4gLQo+IC1Gb2xsb3dp bmcgcmVtYWluIHRvIGJlIGRvbmUgZm9yIFBWSDoKPiAtICAgLSBHZXQgcmlkIG9mIFBWSCBtb2Rl LCBtYWtlIGl0IGp1c3QgSFZNIHdpdGggc29tZSBmbGFncyBzZXQKPiAtICAgLSBpbXBsZW1lbnQg YXJjaF9nZXRfaW5mb19ndWVzdCgpIGZvciBwdmguCj4gLSAgIC0gSW52ZXN0aWdhdGUgd2hhdCBl bHNlIG5lZWRzIHRvIGJlIGRvbmUgZm9yIFZNSSBzdXBwb3J0Lgo+IC0gICAtIEFNRCBwb3J0Lgo+ IC0gICAtIDMyYml0IFBWSCBndWVzdCBzdXBwb3J0IGluIGJvdGggbGludXggYW5kIHhlbi4gWGVu IGNoYW5nZXMgYXJlIHRhZ2dlZAo+IC0gICAgICIzMmJpdGZpeG1lIi4KPiAtICAgLSBBZGQgc3Vw cG9ydCBmb3IgbW9uaXRvcmluZyBndWVzdCBiZWhhdmlvci4gU2VlIGh2bV9tZW1vcnlfZXZlbnQq IGZ1bmN0aW9ucwo+IC0gICAgIGluIGh2bS5jCj4gLSAgIC0gdmNwdSBob3RwbHVnIHN1cHBvcnQK PiAtICAgLSBMaXZlIG1pZ3JhdGlvbiBvZiBQVkggZ3Vlc3RzLgo+IC0gICAtIEF2YWlsIFBWSCBk b20wIG9mIHBvc3RlZCBpbnRlcnJ1cHRzLiAoVGhpcyB3aWxsIGJlIGEgYmlnIHdpbikuCj4gLQo+ IC0KPiAtTm90ZSwgYW55IGVtYWlscyB0byBtZSBtdXN0IGJlIGNjJ2QgdG8geGVuIGRldmVsIG1h aWxpbmcgbGlzdC4gT1RPSCwgcGxlYXNlCj4gLWNjIG1lIG9uIFBWSCBlbWFpbHMgdG8gdGhlIHhl biBkZXZlbCBtYWlsaW5nIGxpc3QuCj4gLQo+IC1NdWtlc2ggUmF0aG9yCj4gLW11a2VzaC5yYXRo b3IgW2F0XSBvcmFjbGUgW2RvdF0gY29tCj4gZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24K PiBpbmRleCAzYWNiYjMzLi5lMDY5NTk0IDEwMDY0NAo+IC0tLSBhL2RvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLm1hcmtkb3duCj4gKysrIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFy a2Rvd24KPiBAQCAtNjc1LDEzICs2NzUsNiBAQCBGbGFnIHRoYXQgbWFrZXMgYSBkb20wIGJvb3Qg aW4gUFZIdjIgbW9kZS4KPiAgCj4gIEZsYWcgdGhhdCBtYWtlcyBhIGRvbTAgdXNlIHNoYWRvdyBw YWdpbmcuCj4gIAo+IC0jIyMgZG9tMHB2aAo+IC0+IGA9IDxib29sZWFuPmAKPiAtCj4gLT4gRGVm YXVsdDogYGZhbHNlYAo+IC0KPiAtRmxhZyB0aGF0IG1ha2VzIGEgNjRiaXQgZG9tMCBib290IGlu IFBWSCBtb2RlLiBObyAzMmJpdCBzdXBwb3J0IGF0IHByZXNlbnQuCj4gLQo+ICAjIyMgZHR1YXJ0 IChBUk0pCj4gID4gYD0gcGF0aCBbOm9wdGlvbnNdYAo+ICAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMv ZGVidWdnZXIvZ2Ric3gveGcveGdfbWFpbi5jIGIvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcveGdf bWFpbi5jCj4gaW5kZXggOGM4YTQwMi4uN2ViZjkxNCAxMDA2NDQKPiAtLS0gYS90b29scy9kZWJ1 Z2dlci9nZGJzeC94Zy94Z19tYWluLmMKPiArKysgYi90b29scy9kZWJ1Z2dlci9nZGJzeC94Zy94 Z19tYWluLmMKPiBAQCAtNzksNyArNzksNiBAQCBpbnQgeGd0cmNfb24gPSAwOwo+ICBzdHJ1Y3Qg eGVuX2RvbWN0bCBkb21jdGw7ICAgICAgICAgLyoganVzdCB1c2UgYSBnbG9iYWwgZG9tY3RsICov Cj4gIAo+ICBzdGF0aWMgaW50ICAgICBfaHZtX2d1ZXN0OyAgICAgICAgLyogaHZtIGd1ZXN0PyAz MmJpdCBIVk1zIGhhdmUgNjRiaXQgY29udGV4dCAqLwo+IC1zdGF0aWMgaW50ICAgICBfcHZoX2d1 ZXN0OyAgICAgICAgLyogUFYgZ3Vlc3QgaW4gSFZNIGNvbnRhaW5lciAqLwo+ICBzdGF0aWMgZG9t aWRfdCBfZG9tX2lkOyAgICAgICAgICAgLyogZ3Vlc3QgZG9taWQgKi8KPiAgc3RhdGljIGludCAg ICAgX21heF92Y3B1X2lkOyAgICAgIC8qIHRodXMgbWF4X3ZjcHVfaWQrMSBWQ1BVcyAqLwo+ICBz dGF0aWMgaW50ICAgICBfZG9tMF9mZDsgICAgICAgICAgLyogZmQgb2YgL2Rldi9wcml2Y21kICov Cj4gQEAgLTMwOCw3ICszMDcsNiBAQCB4Z19hdHRhY2goaW50IGRvbWlkLCBpbnQgZ3Vlc3RfYml0 bmVzcykKPiAgCj4gICAgICBfbWF4X3ZjcHVfaWQgPSBkb21jdGwudS5nZXRkb21haW5pbmZvLm1h eF92Y3B1X2lkOwo+ICAgICAgX2h2bV9ndWVzdCA9IChkb21jdGwudS5nZXRkb21haW5pbmZvLmZs YWdzICYgWEVOX0RPTUlORl9odm1fZ3Vlc3QpOwo+IC0gICAgX3B2aF9ndWVzdCA9IChkb21jdGwu dS5nZXRkb21haW5pbmZvLmZsYWdzICYgWEVOX0RPTUlORl9wdmhfZ3Vlc3QpOwo+ICAgICAgcmV0 dXJuIF9tYXhfdmNwdV9pZDsKPiAgfQo+ICAKPiBAQCAtMzY5LDcgKzM2Nyw3IEBAIF9jaGFuZ2Vf VEYodmNwdWlkX3Qgd2hpY2hfdmNwdSwgaW50IGd1ZXN0X2JpdG5lc3MsIGludCBzZXRpdCkKPiAg ICAgIGludCBzeiA9IHNpemVvZihhbnljKTsKPiAgCj4gICAgICAvKiBmaXJzdCB0cnkgdGhlIE1U RiBmb3IgaHZtIGd1ZXN0LiBvdGhlcndpc2UgZG8gbWFudWFsbHkgKi8KPiAtICAgIGlmIChfaHZt X2d1ZXN0IHx8IF9wdmhfZ3Vlc3QpIHsKPiArICAgIGlmIChfaHZtX2d1ZXN0KSB7Cj4gICAgICAg ICAgZG9tY3RsLnUuZGVidWdfb3AudmNwdSA9IHdoaWNoX3ZjcHU7Cj4gICAgICAgICAgZG9tY3Rs LnUuZGVidWdfb3Aub3AgPSBzZXRpdCA/IFhFTl9ET01DVExfREVCVUdfT1BfU0lOR0xFX1NURVBf T04gOgo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fRE9NQ1RM X0RFQlVHX09QX1NJTkdMRV9TVEVQX09GRjsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5j bHVkZS94Y19kb20uaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKPiBpbmRleCA2MDhj YmMyLi5iNDE2ZWI1IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgK PiArKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCj4gQEAgLTE2NCw3ICsxNjQsNiBA QCBzdHJ1Y3QgeGNfZG9tX2ltYWdlIHsKPiAgICAgIGRvbWlkX3QgY29uc29sZV9kb21pZDsKPiAg ICAgIGRvbWlkX3QgeGVuc3RvcmVfZG9taWQ7Cj4gICAgICB4ZW5fcGZuX3Qgc2hhcmVkX2luZm9f bWZuOwo+IC0gICAgaW50IHB2aF9lbmFibGVkOwo+ICAKPiAgICAgIHhjX2ludGVyZmFjZSAqeGNo Owo+ICAgICAgZG9taWRfdCBndWVzdF9kb21pZDsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+IGluZGV4 IGE0ODk4MWEuLmE3MDgzZjggMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmgKPiArKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+IEBAIC00NDMsNyAr NDQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGNfZG9taW5mbyB7Cj4gICAgICB1aW50MzJfdCAgICAg IHNzaWRyZWY7Cj4gICAgICB1bnNpZ25lZCBpbnQgIGR5aW5nOjEsIGNyYXNoZWQ6MSwgc2h1dGRv d246MSwKPiAgICAgICAgICAgICAgICAgICAgcGF1c2VkOjEsIGJsb2NrZWQ6MSwgcnVubmluZzox LAo+IC0gICAgICAgICAgICAgICAgICBodm06MSwgZGVidWdnZWQ6MSwgcHZoOjEsIHhlbnN0b3Jl OjEsIGhhcDoxOwo+ICsgICAgICAgICAgICAgICAgICBodm06MSwgZGVidWdnZWQ6MSwgeGVuc3Rv cmU6MSwgaGFwOjE7Cj4gICAgICB1bnNpZ25lZCBpbnQgIHNodXRkb3duX3JlYXNvbjsgLyogb25s eSBtZWFuaW5nZnVsIGlmIHNodXRkb3duPT0xICovCj4gICAgICB1bnNpZ25lZCBsb25nIG5yX3Bh Z2VzOyAvKiBjdXJyZW50IG51bWJlciwgbm90IG1heGltdW0gKi8KPiAgICAgIHVuc2lnbmVkIGxv bmcgbnJfb3V0c3RhbmRpbmdfcGFnZXM7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2Nw dWlkX3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKPiBpbmRleCAzNWVjY2ExLi4x YmVkZjA1IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jCj4gKysrIGIv dG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKPiBAQCAtMTY3LDcgKzE2Nyw2IEBAIHN0cnVjdCBj cHVpZF9kb21haW5faW5mbwo+ICAgICAgfSB2ZW5kb3I7Cj4gIAo+ICAgICAgYm9vbCBodm07Cj4g LSAgICBib29sIHB2aDsKPiAgICAgIHVpbnQ2NF90IHhmZWF0dXJlX21hc2s7Cj4gIAo+ICAgICAg dWludDMyX3QgKmZlYXR1cmVzZXQ7Cj4gQEAgLTIzMSw3ICsyMzAsNiBAQCBzdGF0aWMgaW50IGdl dF9jcHVpZF9kb21haW5faW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKPiAg ICAgICAgICByZXR1cm4gLUVTUkNIOwo+ICAKPiAgICAgIGluZm8tPmh2bSA9IGRpLmh2bTsKPiAt ICAgIGluZm8tPnB2aCA9IGRpLnB2aDsKPiAgCj4gICAgICBpbmZvLT5mZWF0dXJlc2V0ID0gY2Fs bG9jKGhvc3RfbnJfZmVhdHVyZXMsIHNpemVvZigqaW5mby0+ZmVhdHVyZXNldCkpOwo+ICAgICAg aWYgKCAhaW5mby0+ZmVhdHVyZXNldCApCj4gQEAgLTY4MiwxMyArNjgwLDEwIEBAIHN0YXRpYyB2 b2lkIHNhbml0aXNlX2ZlYXR1cmVzZXQoc3RydWN0IGNwdWlkX2RvbWFpbl9pbmZvICppbmZvKQo+ ICAgICAgICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1NZU0NBTEwsIGluZm8tPmZl YXR1cmVzZXQpOwo+ICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgaWYgKCAhaW5mby0+cHZoICkK PiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QU0UsIGlu Zm8tPmZlYXR1cmVzZXQpOwo+IC0gICAgICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNF MzYsIGluZm8tPmZlYXR1cmVzZXQpOwo+IC0gICAgICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRV UkVfUEdFLCBpbmZvLT5mZWF0dXJlc2V0KTsKPiAtICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9G RUFUVVJFX1BBR0UxR0IsIGluZm8tPmZlYXR1cmVzZXQpOwo+IC0gICAgICAgIH0KPiArICAgICAg ICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFLCBpbmZvLT5mZWF0dXJlc2V0KTsKPiArICAgICAg ICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFMzYsIGluZm8tPmZlYXR1cmVzZXQpOwo+ICsgICAg ICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QR0UsIGluZm8tPmZlYXR1cmVzZXQpOwo+ICsgICAg ICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QQUdFMUdCLCBpbmZvLT5mZWF0dXJlc2V0KTsKPiAg ICAgIH0KPiAgCj4gICAgICBpZiAoIGluZm8tPnhmZWF0dXJlX21hc2sgPT0gMCApCj4gZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9jb3JlLmMgYi90b29scy9saWJ4Yy94Y19kb21fY29y ZS5jCj4gaW5kZXggMzZjZDNjOC4uY2Y0MDM0MyAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy94 Y19kb21fY29yZS5jCj4gKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYwo+IEBAIC04OTYs MTUgKzg5Niw2IEBAIGludCB4Y19kb21fcGFyc2VfaW1hZ2Uoc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tKQo+ICAgICAgICAgIGdvdG8gZXJyOwo+ICAgICAgfQo+ICAKPiAtICAgIGlmICggZG9tLT5w dmhfZW5hYmxlZCApCj4gLSAgICB7Cj4gLSAgICAgICAgY29uc3QgY2hhciAqcHZoX2ZlYXR1cmVz ID0gIndyaXRhYmxlX2Rlc2NyaXB0b3JfdGFibGVzfCIKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYXV0b190cmFuc2xhdGVkX3BoeXNtYXB8Igo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJzdXBlcnZpc29yX21vZGVfa2VybmVsfCIKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHZtX2NhbGxiYWNrX3ZlY3RvciI7Cj4gLSAg ICAgICAgZWxmX3hlbl9wYXJzZV9mZWF0dXJlcyhwdmhfZmVhdHVyZXMsIGRvbS0+Zl9yZXF1ZXN0 ZWQsIE5VTEwpOwo+IC0gICAgfQo+IC0KPiAgICAgIC8qIGNoZWNrIGZlYXR1cmVzICovCj4gICAg ICBmb3IgKCBpID0gMDsgaSA8IFhFTkZFQVRfTlJfU1VCTUFQUzsgaSsrICkKPiAgICAgIHsKPiBk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfZG9t X3g4Ni5jCj4gaW5kZXggNjQ5NWU3Zi4uYzE3NmMwMCAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4 Yy94Y19kb21feDg2LmMKPiArKysgYi90b29scy9saWJ4Yy94Y19kb21feDg2LmMKPiBAQCAtMzcz LDcgKzM3Myw3IEBAIHN0YXRpYyB4ODZfcGdlbnRyeV90IGdldF9wZ19wcm90X3g4NihzdHJ1Y3Qg eGNfZG9tX2ltYWdlICpkb20sIGludCBsLAo+ICAgICAgdW5zaWduZWQgbTsKPiAgCj4gICAgICBw cm90ID0gZG9teDg2LT5wYXJhbXMtPmx2bF9wcm90W2xdOwo+IC0gICAgaWYgKCBsID4gMCB8fCBk b20tPnB2aF9lbmFibGVkICkKPiArICAgIGlmICggbCA+IDAgKQo+ICAgICAgICAgIHJldHVybiBw cm90Owo+ICAKPiAgICAgIGZvciAoIG0gPSAwOyBtIDwgZG9teDg2LT5uX21hcHBpbmdzOyBtKysg KQo+IEBAIC04NzAsMTggKzg3MCwxNSBAQCBzdGF0aWMgaW50IHZjcHVfeDg2XzMyKHN0cnVjdCB4 Y19kb21faW1hZ2UgKmRvbSkKPiAgICAgIERPTVBSSU5URigiJXM6IGNyMzogcGZuIDB4JSIgUFJJ cGZuICIgbWZuIDB4JSIgUFJJcGZuICIiLAo+ICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywg ZG9tLT5wZ3RhYmxlc19zZWcucGZuLCBjcjNfcGZuKTsKPiAgCj4gLSAgICBpZiAoICFkb20tPnB2 aF9lbmFibGVkICkKPiAtICAgIHsKPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3MuZHMgPSBGTEFU X0tFUk5FTF9EU19YODZfMzI7Cj4gLSAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmVzID0gRkxBVF9L RVJORUxfRFNfWDg2XzMyOwo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVncy5mcyA9IEZMQVRfS0VS TkVMX0RTX1g4Nl8zMjsKPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3MuZ3MgPSBGTEFUX0tFUk5F TF9EU19YODZfMzI7Cj4gLSAgICAgICAgY3R4dC0+dXNlcl9yZWdzLnNzID0gRkxBVF9LRVJORUxf U1NfWDg2XzMyOwo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVncy5jcyA9IEZMQVRfS0VSTkVMX0NT X1g4Nl8zMjsKPiAtCj4gLSAgICAgICAgY3R4dC0+a2VybmVsX3NzID0gY3R4dC0+dXNlcl9yZWdz LnNzOwo+IC0gICAgICAgIGN0eHQtPmtlcm5lbF9zcCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7Cj4g LSAgICB9Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuZHMgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7 Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuZXMgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gKyAg ICBjdHh0LT51c2VyX3JlZ3MuZnMgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gKyAgICBjdHh0 LT51c2VyX3JlZ3MuZ3MgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gKyAgICBjdHh0LT51c2Vy X3JlZ3Muc3MgPSBGTEFUX0tFUk5FTF9TU19YODZfMzI7Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3Mu Y3MgPSBGTEFUX0tFUk5FTF9DU19YODZfMzI7Cj4gKwo+ICsgICAgY3R4dC0+a2VybmVsX3NzID0g Y3R4dC0+dXNlcl9yZWdzLnNzOwo+ICsgICAgY3R4dC0+a2VybmVsX3NwID0gY3R4dC0+dXNlcl9y ZWdzLmVzcDsKPiAgCj4gICAgICByYyA9IHhjX3ZjcHVfc2V0Y29udGV4dChkb20tPnhjaCwgZG9t LT5ndWVzdF9kb21pZCwgMCwgJmFueV9jdHgpOwo+ICAgICAgaWYgKCByYyAhPSAwICkKPiBAQCAt OTE2LDE4ICs5MTMsMTUgQEAgc3RhdGljIGludCB2Y3B1X3g4Nl82NChzdHJ1Y3QgeGNfZG9tX2lt YWdlICpkb20pCj4gICAgICBET01QUklOVEYoIiVzOiBjcjM6IHBmbiAweCUiIFBSSXBmbiAiIG1m biAweCUiIFBSSXBmbiAiIiwKPiAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGRvbS0+cGd0 YWJsZXNfc2VnLnBmbiwgY3IzX3Bmbik7Cj4gIAo+IC0gICAgaWYgKCAhZG9tLT5wdmhfZW5hYmxl ZCApCj4gLSAgICB7Cj4gLSAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmRzID0gRkxBVF9LRVJORUxf RFNfWDg2XzY0Owo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVncy5lcyA9IEZMQVRfS0VSTkVMX0RT X1g4Nl82NDsKPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3MuZnMgPSBGTEFUX0tFUk5FTF9EU19Y ODZfNjQ7Cj4gLSAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmdzID0gRkxBVF9LRVJORUxfRFNfWDg2 XzY0Owo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVncy5zcyA9IEZMQVRfS0VSTkVMX1NTX1g4Nl82 NDsKPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3MuY3MgPSBGTEFUX0tFUk5FTF9DU19YODZfNjQ7 Cj4gLQo+IC0gICAgICAgIGN0eHQtPmtlcm5lbF9zcyA9IGN0eHQtPnVzZXJfcmVncy5zczsKPiAt ICAgICAgICBjdHh0LT5rZXJuZWxfc3AgPSBjdHh0LT51c2VyX3JlZ3MuZXNwOwo+IC0gICAgfQo+ ICsgICAgY3R4dC0+dXNlcl9yZWdzLmRzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Owo+ICsgICAg Y3R4dC0+dXNlcl9yZWdzLmVzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Owo+ICsgICAgY3R4dC0+ dXNlcl9yZWdzLmZzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Owo+ICsgICAgY3R4dC0+dXNlcl9y ZWdzLmdzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Owo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLnNz ID0gRkxBVF9LRVJORUxfU1NfWDg2XzY0Owo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmNzID0gRkxB VF9LRVJORUxfQ1NfWDg2XzY0Owo+ICsKPiArICAgIGN0eHQtPmtlcm5lbF9zcyA9IGN0eHQtPnVz ZXJfcmVncy5zczsKPiArICAgIGN0eHQtPmtlcm5lbF9zcCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7 Cj4gIAo+ICAgICAgcmMgPSB4Y192Y3B1X3NldGNvbnRleHQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3Rf ZG9taWQsIDAsICZhbnlfY3R4KTsKPiAgICAgIGlmICggcmMgIT0gMCApCj4gQEAgLTExMDYsNyAr MTEwMCw3IEBAIHN0YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p Cj4gICAgICByYyA9IHg4Nl9jb21wYXQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIGRvbS0+ Z3Vlc3RfdHlwZSk7Cj4gICAgICBpZiAoIHJjICkKPiAgICAgICAgICByZXR1cm4gcmM7Cj4gLSAg ICBpZiAoIHhjX2RvbV9mZWF0dXJlX3RyYW5zbGF0ZWQoZG9tKSAmJiAhZG9tLT5wdmhfZW5hYmxl ZCApCj4gKyAgICBpZiAoIHhjX2RvbV9mZWF0dXJlX3RyYW5zbGF0ZWQoZG9tKSApCj4gICAgICB7 Cj4gICAgICAgICAgZG9tLT5zaGFkb3dfZW5hYmxlZCA9IDE7Cj4gICAgICAgICAgcmMgPSB4ODZf c2hhZG93KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkKTsKPiBAQCAtMTU5NCw5ICsxNTg4LDYg QEAgc3RhdGljIGludCBtYXBfZ3JhbnRfdGFibGVfZnJhbWVzKHN0cnVjdCB4Y19kb21faW1hZ2Ug KmRvbSkKPiAgewo+ICAgICAgaW50IGksIHJjOwo+ICAKPiAtICAgIGlmICggZG9tLT5wdmhfZW5h YmxlZCApCj4gLSAgICAgICAgcmV0dXJuIDA7Cj4gLQo+ICAgICAgZm9yICggaSA9IDA7IDsgaSsr ICkKPiAgICAgIHsKPiAgICAgICAgICByYyA9IHhjX2RvbWFpbl9hZGRfdG9fcGh5c21hcChkb20t PnhjaCwgZG9tLT5ndWVzdF9kb21pZCwKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9t YWluLmMgYi90b29scy9saWJ4Yy94Y19kb21haW4uYwo+IGluZGV4IGQ4NjJlNTMuLmVhM2YxOTMg MTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKPiArKysgYi90b29scy9saWJ4 Yy94Y19kb21haW4uYwo+IEBAIC0zNzAsNyArMzcwLDYgQEAgaW50IHhjX2RvbWFpbl9nZXRpbmZv KHhjX2ludGVyZmFjZSAqeGNoLAo+ICAgICAgICAgIGluZm8tPnJ1bm5pbmcgID0gISEoZG9tY3Rs LnUuZ2V0ZG9tYWluaW5mby5mbGFncyZYRU5fRE9NSU5GX3J1bm5pbmcpOwo+ICAgICAgICAgIGlu Zm8tPmh2bSAgICAgID0gISEoZG9tY3RsLnUuZ2V0ZG9tYWluaW5mby5mbGFncyZYRU5fRE9NSU5G X2h2bV9ndWVzdCk7Cj4gICAgICAgICAgaW5mby0+ZGVidWdnZWQgPSAhIShkb21jdGwudS5nZXRk b21haW5pbmZvLmZsYWdzJlhFTl9ET01JTkZfZGVidWdnZWQpOwo+IC0gICAgICAgIGluZm8tPnB2 aCAgICAgID0gISEoZG9tY3RsLnUuZ2V0ZG9tYWluaW5mby5mbGFncyZYRU5fRE9NSU5GX3B2aF9n dWVzdCk7Cj4gICAgICAgICAgaW5mby0+eGVuc3RvcmUgPSAhIShkb21jdGwudS5nZXRkb21haW5p bmZvLmZsYWdzJlhFTl9ET01JTkZfeHNfZG9tYWluKTsKPiAgICAgICAgICBpbmZvLT5oYXAgICAg ICA9ICEhKGRvbWN0bC51LmdldGRvbWFpbmluZm8uZmxhZ3MmWEVOX0RPTUlORl9oYXApOwo+ICAK PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMgYi90b29scy9saWJ4bC9s aWJ4bF9jcmVhdGUuYwo+IGluZGV4IGU3NDFiOWEuLmMyM2JhMmYgMTAwNjQ0Cj4gLS0tIGEvdG9v bHMvbGlieGwvbGlieGxfY3JlYXRlLmMKPiArKysgYi90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUu Ywo+IEBAIC0zOCw5ICszOCw2IEBAIGludCBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9pbmZvX3NldGRl ZmF1bHQobGlieGxfX2djICpnYywKPiAgICAgIGlmIChjX2luZm8tPnR5cGUgPT0gTElCWExfRE9N QUlOX1RZUEVfSFZNKSB7Cj4gICAgICAgICAgbGlieGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZjX2lu Zm8tPmhhcCwgdHJ1ZSk7Cj4gICAgICAgICAgbGlieGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZjX2lu Zm8tPm9vcywgdHJ1ZSk7Cj4gLSAgICB9IGVsc2Ugewo+IC0gICAgICAgIGxpYnhsX2RlZmJvb2xf c2V0ZGVmYXVsdCgmY19pbmZvLT5wdmgsIGZhbHNlKTsKPiAtICAgICAgICBsaWJ4bF9kZWZib29s X3NldGRlZmF1bHQoJmNfaW5mby0+aGFwLCBsaWJ4bF9kZWZib29sX3ZhbChjX2luZm8tPnB2aCkp Owo+ICAgICAgfQo+ICAKPiAgICAgIGxpYnhsX2RlZmJvb2xfc2V0ZGVmYXVsdCgmY19pbmZvLT5y dW5faG90cGx1Z19zY3JpcHRzLCB0cnVlKTsKPiBAQCAtNDc1LDggKzQ3Miw2IEBAIGludCBsaWJ4 bF9fZG9tYWluX2J1aWxkKGxpYnhsX19nYyAqZ2MsCj4gIAo+ICAgICAgICAgIGJyZWFrOwo+ICAg ICAgY2FzZSBMSUJYTF9ET01BSU5fVFlQRV9QVjoKPiAtICAgICAgICBzdGF0ZS0+cHZoX2VuYWJs ZWQgPSBsaWJ4bF9kZWZib29sX3ZhbChkX2NvbmZpZy0+Y19pbmZvLnB2aCk7Cj4gLQo+ICAgICAg ICAgIHJldCA9IGxpYnhsX19idWlsZF9wdihnYywgZG9taWQsIGluZm8sIHN0YXRlKTsKPiAgICAg ICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICBnb3RvIG91dDsKPiBAQCAtNTM2LDE0ICs1MzEs NiBAQCBpbnQgbGlieGxfX2RvbWFpbl9tYWtlKGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RvbWFpbl9j b25maWcgKmRfY29uZmlnLAo+ICAgICAgICAgIGZsYWdzIHw9IFhFTl9ET01DVExfQ0RGX2h2bV9n dWVzdDsKPiAgICAgICAgICBmbGFncyB8PSBsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5oYXApID8g WEVOX0RPTUNUTF9DREZfaGFwIDogMDsKPiAgICAgICAgICBmbGFncyB8PSBsaWJ4bF9kZWZib29s X3ZhbChpbmZvLT5vb3MpID8gMCA6IFhFTl9ET01DVExfQ0RGX29vc19vZmY7Cj4gLSAgICB9IGVs c2UgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPnB2aCkpIHsKPiAtICAgICAgICBmbGFncyB8 PSBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3Q7Cj4gLSAgICAgICAgaWYgKCFsaWJ4bF9kZWZib29s X3ZhbChpbmZvLT5oYXApKSB7Cj4gLSAgICAgICAgICAgIExPR0QoRVJST1IsICpkb21pZCwgIkhB UCBtdXN0IGJlIG9uIGZvciBQVkgiKTsKPiAtICAgICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsK PiAtICAgICAgICAgICAgZ290byBvdXQ7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIGZsYWdzIHw9 IFhFTl9ET01DVExfQ0RGX2hhcDsKPiAgICAgIH0KPiAgCj4gICAgICAvKiBVbHRpbWF0ZWx5LCBo YW5kbGUgaXMgYW4gYXJyYXkgb2YgMTYgdWludDhfdCwgc2FtZSBhcyB1dWlkICovCj4gQEAgLTg1 OSw2ICs4NDYsMjQgQEAgc3RhdGljIHZvaWQgaW5pdGlhdGVfZG9tYWluX2NyZWF0ZShsaWJ4bF9f ZWdjICplZ2MsCj4gICAgICAgICAgZ290byBlcnJvcl9vdXQ7Cj4gICAgICB9Cj4gIAo+ICsgICAg bGlieGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZkX2NvbmZpZy0+Y19pbmZvLnB2aCwgZmFsc2UpOwo+ ICsgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGRfY29uZmlnLT5jX2luZm8ucHZoKSkgewo+ICsg ICAgICAgIGlmIChkX2NvbmZpZy0+Y19pbmZvLnR5cGUgIT0gTElCWExfRE9NQUlOX1RZUEVfSFZN KSB7Cj4gKyAgICAgICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiSW52YWxpZCBkb21haW4gdHlw ZSBmb3IgUFZIOiAlcyIsCj4gKyAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX3R5cGVfdG9f c3RyaW5nKGRfY29uZmlnLT5jX2luZm8udHlwZSkpOwo+ICsgICAgICAgICAgICByZXQgPSBFUlJP Ul9JTlZBTDsKPiArICAgICAgICAgICAgZ290byBlcnJvcl9vdXQ7Cj4gKyAgICAgICAgfQo+ICsg ICAgICAgIGlmIChkX2NvbmZpZy0+Yl9pbmZvLmRldmljZV9tb2RlbF92ZXJzaW9uICE9Cj4gKyAg ICAgICAgICAgIExJQlhMX0RFVklDRV9NT0RFTF9WRVJTSU9OX05PTkUpIHsKPiArICAgICAgICAg ICAgTE9HRChFUlJPUiwgZG9taWQsICJJbnZhbGlkIGRldmljZSBtb2RlbCB2ZXJzaW9uIGZvciBQ Vkg6ICVzIiwKPiArICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfbW9kZWxfdmVyc2lvbl90 b19zdHJpbmcoCj4gKyAgICAgICAgICAgICAgICAgICAgIGRfY29uZmlnLT5iX2luZm8uZGV2aWNl X21vZGVsX3ZlcnNpb24pKTsKPiArICAgICAgICAgICAgcmV0ID0gRVJST1JfSU5WQUw7Cj4gKyAg ICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gICAg ICAvKiBJZiB0YXJnZXRfbWVta2IgaXMgc21hbGxlciB0aGFuIG1heF9tZW1rYiwgdGhlIHN1YnNl cXVlbnQgY2FsbAo+ICAgICAgICogdG8gbGlieGMgd2hlbiBidWlsZGluZyBIVk0gZG9tYWluIHdp bGwgZW5hYmxlIFBvRCBtb2RlLgo+ICAgICAgICovCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiBpbmRleCBkNTE5YzhkLi5l MTMzOTYyIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jCj4gKysrIGIvdG9v bHMvbGlieGwvbGlieGxfZG9tLmMKPiBAQCAtNjkwLDcgKzY5MCw2IEBAIGludCBsaWJ4bF9fYnVp bGRfcHYobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCj4gICAgICAgICAgcmV0dXJuIEVS Uk9SX0ZBSUw7Cj4gICAgICB9Cj4gIAo+IC0gICAgZG9tLT5wdmhfZW5hYmxlZCA9IHN0YXRlLT5w dmhfZW5hYmxlZDsKPiAgICAgIGRvbS0+Y29udGFpbmVyX3R5cGUgPSBYQ19ET01fUFZfQ09OVEFJ TkVSOwo+ICAKPiAgICAgIExPRyhERUJVRywgInB2IGtlcm5lbCBtYXBwZWQgJWQgcGF0aCAlcyIs IHN0YXRlLT5wdl9rZXJuZWwubWFwcGVkLCBzdGF0ZS0+cHZfa2VybmVsLnBhdGgpOwo+IGRpZmYg LS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxf aW50ZXJuYWwuaAo+IGluZGV4IDViYmVkZTUuLjc3MjI2NjUgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMv bGlieGwvbGlieGxfaW50ZXJuYWwuaAo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmgKPiBAQCAtMTEyOSw3ICsxMTI5LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAgICAgbGlieGxf X2ZpbGVfcmVmZXJlbmNlIHB2X2tlcm5lbDsKPiAgICAgIGxpYnhsX19maWxlX3JlZmVyZW5jZSBw dl9yYW1kaXNrOwo+ICAgICAgY29uc3QgY2hhciAqIHB2X2NtZGxpbmU7Cj4gLSAgICBib29sIHB2 aF9lbmFibGVkOwo+ICAKPiAgICAgIHhlbl92bWVtcmFuZ2VfdCAqdm1lbXJhbmdlczsKPiAgICAg IHVpbnQzMl90IG51bV92bWVtcmFuZ2VzOwo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF94ODYuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jCj4gaW5kZXggNWRhNzUwNC4uZWI2YmY2 NiAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF94ODYuYwo+ICsrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsX3g4Ni5jCj4gQEAgLTMzOCwxMSArMzM4LDggQEAgaW50IGxpYnhsX19hcmNoX2Rv bWFpbl9jcmVhdGUobGlieGxfX2djICpnYywgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcs Cj4gICAgICBpZiAocnRjX3RpbWVvZmZzZXQpCj4gICAgICAgICAgeGNfZG9tYWluX3NldF90aW1l X29mZnNldChjdHgtPnhjaCwgZG9taWQsIHJ0Y190aW1lb2Zmc2V0KTsKPiAgCj4gLSAgICBpZiAo ZF9jb25maWctPmJfaW5mby50eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX0hWTSB8fAo+IC0gICAg ICAgIGxpYnhsX2RlZmJvb2xfdmFsKGRfY29uZmlnLT5jX2luZm8ucHZoKSkgewo+IC0KPiAtICAg ICAgICB1bnNpZ25lZCBsb25nIHNoYWRvdzsKPiAtICAgICAgICBzaGFkb3cgPSAoZF9jb25maWct PmJfaW5mby5zaGFkb3dfbWVta2IgKyAxMDIzKSAvIDEwMjQ7Cj4gKyAgICBpZiAoZF9jb25maWct PmJfaW5mby50eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX0hWTSkgewo+ICsgICAgICAgIHVuc2ln bmVkIGxvbmcgc2hhZG93ID0gKGRfY29uZmlnLT5iX2luZm8uc2hhZG93X21lbWtiICsgMTAyMykg LyAxMDI0Owo+ICAgICAgICAgIHhjX3NoYWRvd19jb250cm9sKGN0eC0+eGNoLCBkb21pZCwgWEVO X0RPTUNUTF9TSEFET1dfT1BfU0VUX0FMTE9DQVRJT04sIE5VTEwsIDAsICZzaGFkb3csIDAsIE5V TEwpOwo+ICAgICAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcGFyc2UuYyBiL3Rv b2xzL3hsL3hsX3BhcnNlLmMKPiBpbmRleCAxZWYwYzI3Li5iYWM0MGI3IDEwMDY0NAo+IC0tLSBh L3Rvb2xzL3hsL3hsX3BhcnNlLmMKPiArKysgYi90b29scy94bC94bF9wYXJzZS5jCj4gQEAgLTc2 MCw3ICs3NjAsMTUgQEAgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdf c291cmNlLAo+ICAgICAgICAgICFzdHJuY21wKGJ1ZiwgImh2bSIsIHN0cmxlbihidWYpKSkKPiAg ICAgICAgICBjX2luZm8tPnR5cGUgPSBMSUJYTF9ET01BSU5fVFlQRV9IVk07Cj4gIAo+IC0gICAg eGx1X2NmZ19nZXRfZGVmYm9vbChjb25maWcsICJwdmgiLCAmY19pbmZvLT5wdmgsIDApOwo+ICsg ICAgaWYgKCF4bHVfY2ZnX2dldF9kZWZib29sKGNvbmZpZywgInB2aCIsICZjX2luZm8tPnB2aCwg MCkpIHsKPiArICAgICAgICAvKiBOQjogd2UgbmVlZCB0byBzZXQgdGhlIHR5cGUgaGVyZSwgb3Ig ZWxzZSB3ZSB3aWxsIGZhbGwgaW50bwo+ICsgICAgICAgICAqIHRoZSBQViBwYXRoLCBhbmQgdGhl IHNldCBvZiBvcHRpb25zIHdpbGwgYmUgY29tcGxldGVseSB3cm9uZwo+ICsgICAgICAgICAqIChl dmVuIG1vcmUgYmVjYXVzZSB0aGUgUFYgYW5kIEhWTSBvcHRpb25zIGFyZSBpbnNpZGUgYW4gdW5p b24pLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIGNfaW5mby0+dHlwZSA9IExJQlhMX0RPTUFJ Tl9UWVBFX0hWTTsKPiArICAgICAgICBiX2luZm8tPmRldmljZV9tb2RlbF92ZXJzaW9uID0gTElC WExfREVWSUNFX01PREVMX1ZFUlNJT05fTk9ORTsKPiArICAgIH0KPiArCj4gICAgICB4bHVfY2Zn X2dldF9kZWZib29sKGNvbmZpZywgImhhcCIsICZjX2luZm8tPmhhcCwgMCk7Cj4gIAo+ICAgICAg aWYgKHhsdV9jZmdfcmVwbGFjZV9zdHJpbmcgKGNvbmZpZywgIm5hbWUiLCAmY19pbmZvLT5uYW1l LCAwKSkgewo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNo L3g4Ni9jcHUvdnBtdS5jCj4gaW5kZXggYzg2MTVlOC4uZDMxOWRlYSAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCj4g QEAgLTIyNSw4ICsyMjUsNyBAQCB2b2lkIHZwbXVfZG9faW50ZXJydXB0KHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzKQo+ICAgICAgICAgIGlmICggIXZwbXUtPnhlbnBtdV9kYXRhICkKPiAgICAg ICAgICAgICAgcmV0dXJuOwo+ICAKPiAtICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KHNhbXBsaW5n KSAmJgo+IC0gICAgICAgICAgICAgISh2cG11X21vZGUgJiBYRU5QTVVfTU9ERV9BTEwpICYmCj4g KyAgICAgICAgaWYgKCAhKHZwbXVfbW9kZSAmIFhFTlBNVV9NT0RFX0FMTCkgJiYKPiAgICAgICAg ICAgICAgICF2cG11LT5hcmNoX3ZwbXVfb3BzLT5kb19pbnRlcnJ1cHQocmVncykgKQo+ICAgICAg ICAgICAgICByZXR1cm47Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMg Yi94ZW4vYXJjaC94ODYvZG9tYWluLmMKPiBpbmRleCA3ZDMwNzFlLi43NWRlZDI1IDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4u Ywo+IEBAIC0zMjgsNyArMzI4LDcgQEAgaW50IHN3aXRjaF9jb21wYXQoc3RydWN0IGRvbWFpbiAq ZCkKPiAgCj4gICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgfHwgZC0+dG90X3BhZ2VzICE9IDAg KQo+ICAgICAgICAgIHJldHVybiAtRUFDQ0VTOwo+IC0gICAgaWYgKCBpc19wdl8zMmJpdF9kb21h aW4oZCkgfHwgaXNfcHZoXzMyYml0X2RvbWFpbihkKSApCj4gKyAgICBpZiAoIGlzX3B2XzMyYml0 X2RvbWFpbihkKSApCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gIAo+ICAgICAgZC0+YXJjaC5oYXNf MzJiaXRfc2hpbmZvID0gMTsKPiBAQCAtMzM5LDEyICszMzksNyBAQCBpbnQgc3dpdGNoX2NvbXBh dChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgewo+ICAgICAgICAgIHJjID0gc2V0dXBfY29tcGF0 X2FyZ194bGF0KHYpOwo+ICAgICAgICAgIGlmICggIXJjICkKPiAtICAgICAgICB7Cj4gLSAgICAg ICAgICAgIGlmICggIWlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgICAgICAgICAgICAgcmMgPSBz ZXR1cF9jb21wYXRfbDQodik7Cj4gLSAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAg IHJjID0gaHZtX3NldF9tb2RlKHYsIDQpOwo+IC0gICAgICAgIH0KPiArICAgICAgICAgICAgcmMg PSBzZXR1cF9jb21wYXRfbDQodik7Cj4gIAo+ICAgICAgICAgIGlmICggcmMgKQo+ICAgICAgICAg ICAgICBnb3RvIHVuZG9fYW5kX2ZhaWw7Cj4gQEAgLTM2Myw3ICszNTgsNyBAQCBpbnQgc3dpdGNo X2NvbXBhdChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgewo+ICAgICAgICAgIGZyZWVfY29tcGF0 X2FyZ194bGF0KHYpOwo+ICAKPiAtICAgICAgICBpZiAoICFpc19wdmhfZG9tYWluKGQpICYmICFw YWdldGFibGVfaXNfbnVsbCh2LT5hcmNoLmd1ZXN0X3RhYmxlKSApCj4gKyAgICAgICAgaWYgKCAh cGFnZXRhYmxlX2lzX251bGwodi0+YXJjaC5ndWVzdF90YWJsZSkgKQo+ICAgICAgICAgICAgICBy ZWxlYXNlX2NvbXBhdF9sNCh2KTsKPiAgICAgIH0KPiAgCj4gQEAgLTg3Myw3ICs4NjgsNyBAQCBp bnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKPiAgCj4gICAgICAvKiBUaGUgY29udGV4dCBpcyBhIGNv bXBhdC1tb2RlIG9uZSBpZiB0aGUgdGFyZ2V0IGRvbWFpbiBpcyBjb21wYXQtbW9kZTsKPiAgICAg ICAqIHdlIGV4cGVjdCB0aGUgdG9vbHMgdG8gRFRSVCBldmVuIGluIGNvbXBhdC1tb2RlIGNhbGxl cnMuICovCj4gLSAgICBjb21wYXQgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgfHwgaXNfcHZoXzMy Yml0X2RvbWFpbihkKTsKPiArICAgIGNvbXBhdCA9IGlzX3B2XzMyYml0X2RvbWFpbihkKTsKPiAg Cj4gICNkZWZpbmUgYyhmbGQpIChjb21wYXQgPyAoYy5jbXAtPmZsZCkgOiAoYy5uYXQtPmZsZCkp Cj4gICAgICBmbGFncyA9IGMoZmxhZ3MpOwo+IEBAIC05MjUsMTggKzkyMCw2IEBAIGludCBhcmNo X3NldF9pbmZvX2d1ZXN0KAo+ICAgICAgICAgICAgICAgKGMobGR0X2VudHMpID4gODE5MikgKQo+ ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgIH0KPiAtICAgIGVsc2UgaWYgKCBp c19wdmhfZG9tYWluKGQpICkKPiAtICAgIHsKPiAtICAgICAgICBpZiAoIGMoY3RybHJlZ1swXSkg fHwgYyhjdHJscmVnWzFdKSB8fCBjKGN0cmxyZWdbMl0pIHx8Cj4gLSAgICAgICAgICAgICBjKGN0 cmxyZWdbNF0pIHx8IGMoY3RybHJlZ1s1XSkgfHwgYyhjdHJscmVnWzZdKSB8fAo+IC0gICAgICAg ICAgICAgYyhjdHJscmVnWzddKSB8fCAgYyhsZHRfYmFzZSkgfHwgYyhsZHRfZW50cykgfHwKPiAt ICAgICAgICAgICAgIGModXNlcl9yZWdzLmNzKSB8fCBjKHVzZXJfcmVncy5zcykgfHwgYyh1c2Vy X3JlZ3MuZXMpIHx8Cj4gLSAgICAgICAgICAgICBjKHVzZXJfcmVncy5kcykgfHwgYyh1c2VyX3Jl Z3MuZnMpIHx8IGModXNlcl9yZWdzLmdzKSB8fAo+IC0gICAgICAgICAgICAgYyhrZXJuZWxfc3Mp IHx8IGMoa2VybmVsX3NwKSB8fCBjKGdkdF9lbnRzKSB8fAo+IC0gICAgICAgICAgICAgKCFjb21w YXQgJiYgKGMubmF0LT5nc19iYXNlX2tlcm5lbCB8fAo+IC0gICAgICAgICAgICAgIGMubmF0LT5m c19iYXNlIHx8IGMubmF0LT5nc19iYXNlX3VzZXIpKSApCj4gLSAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+IC0gICAgfQo+ICAKPiAgICAgIHYtPmZwdV9pbml0aWFsaXNlZCA9ICEhKGZsYWdz ICYgVkdDRl9JMzg3X1ZBTElEKTsKPiAgCj4gQEAgLTk5MiwyMSArOTc1LDcgQEAgaW50IGFyY2hf c2V0X2luZm9fZ3Vlc3QoCj4gICAgICAgICAgICAgIHYtPmFyY2guZGVidWdyZWdbaV0gPSBjKGRl YnVncmVnW2ldKTsKPiAgCj4gICAgICAgICAgaHZtX3NldF9pbmZvX2d1ZXN0KHYpOwo+IC0KPiAt ICAgICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgfHwgdi0+aXNfaW5pdGlhbGlzZWQgKQo+IC0g ICAgICAgICAgICBnb3RvIG91dDsKPiAtCj4gLSAgICAgICAgLyogTkI6IE5vIG5lZWQgdG8gdXNl IFBWIGNyMyB1bi1waWNrbGluZyBtYWNyb3MgKi8KPiAtICAgICAgICBjcjNfZ2ZuID0gYyhjdHJs cmVnWzNdKSA+PiBQQUdFX1NISUZUOwo+IC0gICAgICAgIGNyM19wYWdlID0gZ2V0X3BhZ2VfZnJv bV9nZm4oZCwgY3IzX2dmbiwgTlVMTCwgUDJNX0FMTE9DKTsKPiAtCj4gLSAgICAgICAgdi0+YXJj aC5jcjMgPSBwYWdlX3RvX21hZGRyKGNyM19wYWdlKTsKPiAtICAgICAgICB2LT5hcmNoLmh2bV92 Y3B1Lmd1ZXN0X2NyWzNdID0gYyhjdHJscmVnWzNdKTsKPiAtICAgICAgICB2LT5hcmNoLmd1ZXN0 X3RhYmxlID0gcGFnZXRhYmxlX2Zyb21fcGFnZShjcjNfcGFnZSk7Cj4gLQo+IC0gICAgICAgIEFT U0VSVChwYWdpbmdfbW9kZV9lbmFibGVkKGQpKTsKPiAtCj4gLSAgICAgICAgZ290byBwdmhfc2tp cF9wdl9zdHVmZjsKPiArICAgICAgICBnb3RvIG91dDsKPiAgICAgIH0KPiAgCj4gICAgICBpbml0 X2ludDgwX2RpcmVjdF90cmFwKHYpOwo+IEBAIC0xMjU5LDcgKzEyMjgsNiBAQCBpbnQgYXJjaF9z ZXRfaW5mb19ndWVzdCgKPiAgCj4gICAgICBjbGVhcl9iaXQoX1ZQRl9pbl9yZXNldCwgJnYtPnBh dXNlX2ZsYWdzKTsKPiAgCj4gLSBwdmhfc2tpcF9wdl9zdHVmZjoKPiAgICAgIGlmICggdi0+dmNw dV9pZCA9PSAwICkKPiAgICAgICAgICB1cGRhdGVfZG9tYWluX3dhbGxjbG9ja190aW1lKGQpOwo+ ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gv eDg2L2RvbWFpbl9idWlsZC5jCj4gaW5kZXggNTA2NzgwZi4uODhmNjVjYiAxMDA2NDQKPiAtLS0g YS94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKPiArKysgYi94ZW4vYXJjaC94ODYvZG9tYWlu X2J1aWxkLmMKPiBAQCAtNDcxLDE0MSArNDcxLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IHByb2Nl c3NfZG9tMF9pb3BvcnRzX2Rpc2FibGUoc3RydWN0IGRvbWFpbiAqZG9tMCkKPiAgICAgIH0KPiAg fQo+ICAKPiAtc3RhdGljIF9faW5pdCB2b2lkIHB2aF9hZGRfbWVtX21hcHBpbmcoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBsb25nIG5yX21mbnMpCj4g LXsKPiAtICAgIHVuc2lnbmVkIGxvbmcgaTsKPiAtICAgIHAybV9hY2Nlc3NfdCBhOwo+IC0gICAg bWZuX3Qgb21mbjsKPiAtICAgIHAybV90eXBlX3QgdDsKPiAtICAgIGludCByYzsKPiAtCj4gLSAg ICBmb3IgKCBpID0gMDsgaSA8IG5yX21mbnM7IGkrKyApCj4gLSAgICB7Cj4gLSAgICAgICAgaWYg KCAhaW9tZW1fYWNjZXNzX3Blcm1pdHRlZChkLCBtZm4gKyBpLCBtZm4gKyBpKSApCj4gLSAgICAg ICAgewo+IC0gICAgICAgICAgICBvbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm4g KyBpLCAmdCk7Cj4gLSAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dm bihnZm4gKyBpKSwgb21mbiwgUEFHRV9PUkRFUl80Syk7Cj4gLSAgICAgICAgICAgIGNvbnRpbnVl Owo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAgaWYgKCByYW5nZXNldF9jb250YWluc19zaW5n bGV0b24obW1pb19yb19yYW5nZXMsIG1mbiArIGkpICkKPiAtICAgICAgICAgICAgYSA9IHAybV9h Y2Nlc3NfcjsKPiAtICAgICAgICBlbHNlCj4gLSAgICAgICAgICAgIGEgPSBwMm1fYWNjZXNzX3J3 Owo+IC0KPiAtICAgICAgICBpZiAoIChyYyA9IHNldF9tbWlvX3AybV9lbnRyeShkLCBnZm4gKyBp LCBfbWZuKG1mbiArIGkpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBBR0VfT1JERVJfNEssIGEpKSApCj4gLSAgICAgICAgICAgIHBhbmljKCJwdmhfYWRkX21lbV9t YXBwaW5nOiBnZm46JWx4IG1mbjolbHggaTolbGQgcmM6JWRcbiIsCj4gLSAgICAgICAgICAgICAg ICAgIGdmbiwgbWZuLCBpLCByYyk7Cj4gLSAgICAgICAgaWYgKCAhKGkgJiAweGZmZmZmKSApCj4g LSAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKPiAtICAgIH0KPiAt fQo+IC0KPiAtLyoKPiAtICogU2V0IHRoZSAxOjEgbWFwIGZvciBhbGwgbm9uLVJBTSByZWdpb25z IGZvciBkb20gMC4gVGh1cywgZG9tMCB3aWxsIGhhdmUKPiAtICogdGhlIGVudGlyZSBpbyByZWdp b24gbWFwcGVkIGluIHRoZSBFUFQvTlBULgo+IC0gKgo+IC0gKiBwdmggZml4bWU6IFRoZSBmb2xs b3dpbmcgZG9lc24ndCBtYXAgTU1JTyByYW5nZXMgd2hlbiB0aGV5IHNpdCBhYm92ZSB0aGUKPiAt ICogICAgICAgICAgICBoaWdoZXN0IEU4MjAgY292ZXJlZCBhZGRyZXNzLgo+IC0gKi8KPiAtc3Rh dGljIF9faW5pdCB2b2lkIHB2aF9tYXBfYWxsX2lvbWVtKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgbnJfcGFnZXMpCj4gLXsKPiAtICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCBl bmRfcGZuLCBlbmQgPSAwLCBzdGFydCA9IDA7Cj4gLSAgICBjb25zdCBzdHJ1Y3QgZTgyMGVudHJ5 ICplbnRyeTsKPiAtICAgIHVuc2lnbmVkIGxvbmcgbnVtcCwgbm1hcCwgbmF2YWlsLCBtZm4sIG5y X2hvbGVzID0gMDsKPiAtICAgIHVuc2lnbmVkIGludCBpOwo+IC0gICAgc3RydWN0IHBhZ2VfaW5m byAqcGFnZTsKPiAtICAgIGludCByYzsKPiAtCj4gLSAgICBmb3IgKCBpID0gMCwgZW50cnkgPSBl ODIwLm1hcDsgaSA8IGU4MjAubnJfbWFwOyBpKyssIGVudHJ5KysgKQo+IC0gICAgewo+IC0gICAg ICAgIGVuZCA9IGVudHJ5LT5hZGRyICsgZW50cnktPnNpemU7Cj4gLQo+IC0gICAgICAgIGlmICgg ZW50cnktPnR5cGUgPT0gRTgyMF9SQU0gfHwgZW50cnktPnR5cGUgPT0gRTgyMF9VTlVTQUJMRSB8 fAo+IC0gICAgICAgICAgICAgaSA9PSBlODIwLm5yX21hcCAtIDEgKQo+IC0gICAgICAgIHsKPiAt ICAgICAgICAgICAgc3RhcnRfcGZuID0gUEZOX0RPV04oc3RhcnQpOwo+IC0KPiAtICAgICAgICAg ICAgLyogVW51c2VkIFJBTSBhcmVhcyBhcmUgbWFya2VkIFVOVVNBQkxFLCBzbyBza2lwIHRoZW0g dG9vICovCj4gLSAgICAgICAgICAgIGlmICggZW50cnktPnR5cGUgPT0gRTgyMF9SQU0gfHwgZW50 cnktPnR5cGUgPT0gRTgyMF9VTlVTQUJMRSApCj4gLSAgICAgICAgICAgICAgICBlbmRfcGZuID0g UEZOX1VQKGVudHJ5LT5hZGRyKTsKPiAtICAgICAgICAgICAgZWxzZQo+IC0gICAgICAgICAgICAg ICAgZW5kX3BmbiA9IFBGTl9VUChlbmQpOwo+IC0KPiAtICAgICAgICAgICAgaWYgKCBzdGFydF9w Zm4gPCBlbmRfcGZuICkKPiAtICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgbnVtcCA9 IGVuZF9wZm4gLSBzdGFydF9wZm47Cj4gLSAgICAgICAgICAgICAgICAvKiBBZGQgcGFnZXMgdG8g dGhlIG1hcHBpbmcgKi8KPiAtICAgICAgICAgICAgICAgIHB2aF9hZGRfbWVtX21hcHBpbmcoZCwg c3RhcnRfcGZuLCBzdGFydF9wZm4sIG51bXApOwo+IC0gICAgICAgICAgICAgICAgaWYgKCBzdGFy dF9wZm4gPCBucl9wYWdlcyApCj4gLSAgICAgICAgICAgICAgICAgICAgbnJfaG9sZXMgKz0gKGVu ZF9wZm4gPCBucl9wYWdlcykgPwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudW1wIDogKG5yX3BhZ2VzIC0gc3RhcnRfcGZuKTsKPiAtICAgICAgICAgICAgfQo+IC0gICAg ICAgICAgICBzdGFydCA9IGVuZDsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAgLyoK PiAtICAgICAqIFNvbWUgQklPU2VzIG1heSBub3QgcmVwb3J0IGlvIHNwYWNlIGFib3ZlIHJhbSB0 aGF0IGlzIGxlc3MgdGhhbiA0R0IuIFNvCj4gLSAgICAgKiB3ZSBtYXAgYW55IG5vbi1yYW0gdXB0 byA0R0IuCj4gLSAgICAgKi8KPiAtICAgIGlmICggZW5kIDwgR0IoNCkgKQo+IC0gICAgewo+IC0g ICAgICAgIHN0YXJ0X3BmbiA9IFBGTl9VUChlbmQpOwo+IC0gICAgICAgIGVuZF9wZm4gPSAoR0Io NCkpID4+IFBBR0VfU0hJRlQ7Cj4gLSAgICAgICAgbnVtcCA9IGVuZF9wZm4gLSBzdGFydF9wZm47 Cj4gLSAgICAgICAgcHZoX2FkZF9tZW1fbWFwcGluZyhkLCBzdGFydF9wZm4sIHN0YXJ0X3Bmbiwg bnVtcCk7Cj4gLSAgICB9Cj4gLQo+IC0gICAgLyoKPiAtICAgICAqIEFkZCB0aGUgbWVtb3J5IHJl bW92ZWQgYnkgdGhlIGhvbGVzIGF0IHRoZSBlbmQgb2YgdGhlCj4gLSAgICAgKiBtZW1vcnkgbWFw Lgo+IC0gICAgICovCj4gLSAgICBwYWdlID0gcGFnZV9saXN0X2ZpcnN0KCZkLT5wYWdlX2xpc3Qp Owo+IC0gICAgZm9yICggaSA9IDAsIGVudHJ5ID0gZTgyMC5tYXA7IGkgPCBlODIwLm5yX21hcCAm JiBucl9ob2xlcyA+IDA7Cj4gLSAgICAgICAgICBpKyssIGVudHJ5KysgKQo+IC0gICAgewo+IC0g ICAgICAgIGlmICggZW50cnktPnR5cGUgIT0gRTgyMF9SQU0gKQo+IC0gICAgICAgICAgICBjb250 aW51ZTsKPiAtCj4gLSAgICAgICAgZW5kX3BmbiA9IFBGTl9VUChlbnRyeS0+YWRkciArIGVudHJ5 LT5zaXplKTsKPiAtICAgICAgICBpZiAoIGVuZF9wZm4gPD0gbnJfcGFnZXMgKQo+IC0gICAgICAg ICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAgbmF2YWlsID0gZW5kX3BmbiAtIG5yX3BhZ2Vz Owo+IC0gICAgICAgIG5tYXAgPSBtaW4obmF2YWlsLCBucl9ob2xlcyk7Cj4gLSAgICAgICAgbnJf aG9sZXMgLT0gbm1hcDsKPiAtICAgICAgICBzdGFydF9wZm4gPSBtYXhfdCh1bnNpZ25lZCBsb25n LCBucl9wYWdlcywgUEZOX0RPV04oZW50cnktPmFkZHIpKTsKPiAtICAgICAgICAvKgo+IC0gICAg ICAgICAqIFBvcHVsYXRlIHRoaXMgbWVtb3J5IHJlZ2lvbiB1c2luZyB0aGUgcGFnZXMKPiAtICAg ICAgICAgKiBwcmV2aW91c2x5IHJlbW92ZWQgYnkgdGhlIE1NSU8gaG9sZXMuCj4gLSAgICAgICAg ICovCj4gLSAgICAgICAgZG8KPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIG1mbiA9IHBhZ2Vf dG9fbWZuKHBhZ2UpOwo+IC0gICAgICAgICAgICBpZiAoIGdldF9ncGZuX2Zyb21fbWZuKG1mbikg IT0gSU5WQUxJRF9NMlBfRU5UUlkgKQo+IC0gICAgICAgICAgICAgICAgY29udGludWU7Cj4gLQo+ IC0gICAgICAgICAgICByYyA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihzdGFydF9w Zm4pLCBfbWZuKG1mbiksIDApOwo+IC0gICAgICAgICAgICBpZiAoIHJjICE9IDAgKQo+IC0gICAg ICAgICAgICAgICAgcGFuaWMoIlVuYWJsZSB0byBhZGQgZ3BmbiAlI2x4IG1mbiAlI2x4IHRvIERv bTAgcGh5c21hcDogJWQiLAo+IC0gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcGZuLCBtZm4s IHJjKTsKPiAtICAgICAgICAgICAgc3RhcnRfcGZuKys7Cj4gLSAgICAgICAgICAgIG5tYXAtLTsK PiAtICAgICAgICAgICAgaWYgKCAhKG5tYXAgJiAweGZmZmZmKSApCj4gLSAgICAgICAgICAgICAg ICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKPiAtICAgICAgICB9IHdoaWxlICggKChwYWdl ID0gcGFnZV9saXN0X25leHQocGFnZSwgJmQtPnBhZ2VfbGlzdCkpICE9IE5VTEwpCj4gLSAgICAg ICAgICAgICAgICAgICYmIG5tYXAgKTsKPiAtICAgICAgICBBU1NFUlQobm1hcCA9PSAwKTsKPiAt ICAgICAgICBpZiAoIHBhZ2UgPT0gTlVMTCApCj4gLSAgICAgICAgICAgIGJyZWFrOwo+IC0gICAg fQo+IC0KPiAtICAgIEFTU0VSVChucl9ob2xlcyA9PSAwKTsKPiAtfQo+IC0KPiAgc3RhdGljIF9f aW5pdCB2b2lkIHB2aF9zZXR1cF9lODIwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg bnJfcGFnZXMpCj4gIHsKPiAgICAgIHN0cnVjdCBlODIwZW50cnkgKmVudHJ5LCAqZW50cnlfZ3Vl c3Q7Cj4gQEAgLTY3NiwxMiArNTQxLDYgQEAgc3RhdGljIF9faW5pdCB2b2lkIHB2aF9zZXR1cF9l ODIwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCj4gIHN0YXRpYyBf X2luaXQgdm9pZCBkb20wX3VwZGF0ZV9waHlzbWFwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgcGZuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgbWZuLCB1bnNpZ25lZCBsb25nIHZwaHlzbWFwX3MpCj4gIHsKPiAtICAgIGlmICggaXNf cHZoX2RvbWFpbihkKSApCj4gLSAgICB7Cj4gLSAgICAgICAgaW50IHJjID0gZ3Vlc3RfcGh5c21h cF9hZGRfcGFnZShkLCBfZ2ZuKHBmbiksIF9tZm4obWZuKSwgMCk7Cj4gLSAgICAgICAgQlVHX09O KHJjKTsKPiAtICAgICAgICByZXR1cm47Cj4gLSAgICB9Cj4gICAgICBpZiAoICFpc19wdl8zMmJp dF9kb21haW4oZCkgKQo+ICAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKXZwaHlzbWFwX3MpW3Bm bl0gPSBtZm47Cj4gICAgICBlbHNlCj4gQEAgLTY5MCw3OCArNTQ5LDYgQEAgc3RhdGljIF9faW5p dCB2b2lkIGRvbTBfdXBkYXRlX3BoeXNtYXAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBwZm4sCj4gICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBmbik7Cj4gIH0KPiAgCj4gLS8q IFJlcGxhY2UgbWZucyB3aXRoIHBmbnMgaW4gZG9tMCBwYWdlIHRhYmxlcyAqLwo+IC1zdGF0aWMg X19pbml0IHZvaWQgcHZoX2ZpeHVwX3BhZ2VfdGFibGVzX2Zvcl9oYXAoc3RydWN0IHZjcHUgKnYs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIHZfc3RhcnQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZfZW5kKQo+IC17Cj4gLSAgICBpbnQgaSwgaiwg azsKPiAtICAgIGw0X3BnZW50cnlfdCAqcGw0ZSwgKmw0c3RhcnQ7Cj4gLSAgICBsM19wZ2VudHJ5 X3QgKnBsM2U7Cj4gLSAgICBsMl9wZ2VudHJ5X3QgKnBsMmU7Cj4gLSAgICBsMV9wZ2VudHJ5X3Qg KnBsMWU7Cj4gLSAgICB1bnNpZ25lZCBsb25nIGNyM19wZm47Cj4gLQo+IC0gICAgQVNTRVJUKHBh Z2luZ19tb2RlX2VuYWJsZWQodi0+ZG9tYWluKSk7Cj4gLQo+IC0gICAgbDRzdGFydCA9IG1hcF9k b21haW5fcGFnZShfbWZuKHBhZ2V0YWJsZV9nZXRfcGZuKHYtPmFyY2guZ3Vlc3RfdGFibGUpKSk7 Cj4gLQo+IC0gICAgLyogQ2xlYXIgZW50cmllcyBwcmlvciB0byBndWVzdCBMNCBzdGFydCAqLwo+ IC0gICAgcGw0ZSA9IGw0c3RhcnQgKyBsNF90YWJsZV9vZmZzZXQodl9zdGFydCk7Cj4gLSAgICBt ZW1zZXQobDRzdGFydCwgMCwgKHVuc2lnbmVkIGxvbmcpcGw0ZSAtICh1bnNpZ25lZCBsb25nKWw0 c3RhcnQpOwo+IC0KPiAtICAgIGZvciAoIDsgcGw0ZSA8PSBsNHN0YXJ0ICsgbDRfdGFibGVfb2Zm c2V0KHZfZW5kIC0gMSk7IHBsNGUrKyApCj4gLSAgICB7Cj4gLSAgICAgICAgcGwzZSA9IG1hcF9s M3RfZnJvbV9sNGUoKnBsNGUpOwo+IC0gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgUEFHRV9TSVpF IC8gc2l6ZW9mKCpwbDNlKTsgaSsrLCBwbDNlKysgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAg ICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MoKnBsM2UpICYgX1BBR0VfUFJFU0VOVCkgKQo+IC0gICAg ICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgICAgICBwbDJlID0gbWFwX2wydF9m cm9tX2wzZSgqcGwzZSk7Cj4gLSAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgUEFHRV9TSVpF IC8gc2l6ZW9mKCpwbDJlKTsgaisrLCBwbDJlKysgKQo+IC0gICAgICAgICAgICB7Cj4gLSAgICAg ICAgICAgICAgICBpZiAoICEobDJlX2dldF9mbGFncygqcGwyZSkgICYgX1BBR0VfUFJFU0VOVCkg KQo+IC0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+IC0KPiAtICAgICAgICAgICAgICAg IHBsMWUgPSBtYXBfbDF0X2Zyb21fbDJlKCpwbDJlKTsKPiAtICAgICAgICAgICAgICAgIGZvciAo IGsgPSAwOyBrIDwgUEFHRV9TSVpFIC8gc2l6ZW9mKCpwbDFlKTsgaysrLCBwbDFlKysgKQo+IC0g ICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAgIGlmICggIShsMWVfZ2V0X2Zs YWdzKCpwbDFlKSAmIF9QQUdFX1BSRVNFTlQpICkKPiAtICAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4gLQo+IC0gICAgICAgICAgICAgICAgICAgICpwbDFlID0gbDFlX2Zyb21fcGZu KGdldF9ncGZuX2Zyb21fbWZuKGwxZV9nZXRfcGZuKCpwbDFlKSksCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbDFlX2dldF9mbGFncygqcGwxZSkpOwo+IC0gICAg ICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwxZSk7 Cj4gLSAgICAgICAgICAgICAgICAqcGwyZSA9IGwyZV9mcm9tX3BmbihnZXRfZ3Bmbl9mcm9tX21m bihsMmVfZ2V0X3BmbigqcGwyZSkpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbDJlX2dldF9mbGFncygqcGwyZSkpOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAg ICAgIHVubWFwX2RvbWFpbl9wYWdlKHBsMmUpOwo+IC0gICAgICAgICAgICAqcGwzZSA9IGwzZV9m cm9tX3BmbihnZXRfZ3Bmbl9mcm9tX21mbihsM2VfZ2V0X3BmbigqcGwzZSkpLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsM2VfZ2V0X2ZsYWdzKCpwbDNlKSk7Cj4gLSAgICAg ICAgfQo+IC0gICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHBsM2UpOwo+IC0gICAgICAgICpwbDRl ID0gbDRlX2Zyb21fcGZuKGdldF9ncGZuX2Zyb21fbWZuKGw0ZV9nZXRfcGZuKCpwbDRlKSksCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRlX2dldF9mbGFncygqcGw0ZSkpOwo+IC0g ICAgfQo+IC0KPiAtICAgIC8qIENsZWFyIGVudHJpZXMgcG9zdCBndWVzdCBMNC4gKi8KPiAtICAg IGlmICggKHVuc2lnbmVkIGxvbmcpcGw0ZSAmIChQQUdFX1NJWkUgLSAxKSApCj4gLSAgICAgICAg bWVtc2V0KHBsNGUsIDAsIFBBR0VfU0laRSAtICgodW5zaWduZWQgbG9uZylwbDRlICYgKFBBR0Vf U0laRSAtIDEpKSk7Cj4gLQo+IC0gICAgdW5tYXBfZG9tYWluX3BhZ2UobDRzdGFydCk7Cj4gLQo+ IC0gICAgY3IzX3BmbiA9IGdldF9ncGZuX2Zyb21fbWZuKHBhZGRyX3RvX3Bmbih2LT5hcmNoLmNy MykpOwo+IC0gICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSA9IHBmbl90b19wYWRkcihj cjNfcGZuKTsKPiAtCj4gLSAgICAvKgo+IC0gICAgICogRmluYWxseSwgd2UgdXBkYXRlIHRoZSBw YWdpbmcgbW9kZXMgKGhhcF91cGRhdGVfcGFnaW5nX21vZGVzKS4gVGhpcyB3aWxsCj4gLSAgICAg KiBjcmVhdGUgbW9uaXRvcl90YWJsZSBmb3IgdXMsIHVwZGF0ZSB2LT5hcmNoLmNyMywgYW5kIHVw ZGF0ZSB2bWNzLmNyMy4KPiAtICAgICAqLwo+IC0gICAgcGFnaW5nX3VwZGF0ZV9wYWdpbmdfbW9k ZXModik7Cj4gLX0KPiAtCj4gIHN0YXRpYyBfX2luaXQgdm9pZCBtYXJrX3B2X3B0X3BhZ2VzX3Jk b25seShzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbDRfcGdlbnRyeV90ICpsNHN0YXJ0LAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2cHRfc3RhcnQsCj4gQEAgLTEw NTMsOCArODQwLDYgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoCj4gICAg ICBsM19wZ2VudHJ5X3QgKmwzdGFiID0gTlVMTCwgKmwzc3RhcnQgPSBOVUxMOwo+ICAgICAgbDJf cGdlbnRyeV90ICpsMnRhYiA9IE5VTEwsICpsMnN0YXJ0ID0gTlVMTDsKPiAgICAgIGwxX3BnZW50 cnlfdCAqbDF0YWIgPSBOVUxMLCAqbDFzdGFydCA9IE5VTEw7Cj4gLSAgICBwYWRkcl90IHNoYXJl ZF9pbmZvX3BhZGRyID0gMDsKPiAtICAgIHUzMiBzYXZlX3B2aF9wZ19tb2RlID0gMDsKPiAgCj4g ICAgICAvKgo+ICAgICAgICogVGhpcyBmdWxseSBkZXNjcmliZXMgdGhlIG1lbW9yeSBsYXlvdXQg b2YgdGhlIGluaXRpYWwgZG9tYWluLiBBbGwgCj4gQEAgLTExMzUsMTMgKzkyMCw2IEBAIHN0YXRp YyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2KAo+ICAgICAgICAgICAgICByYyA9IC1FSU5W QUw7Cj4gICAgICAgICAgICAgIGdvdG8gb3V0Owo+ICAgICAgICAgIH0KPiAtICAgICAgICBpZiAo IGlzX3B2aF9kb21haW4oZCkgJiYKPiAtICAgICAgICAgICAgICF0ZXN0X2JpdChYRU5GRUFUX2h2 bV9jYWxsYmFja192ZWN0b3IsIHBhcm1zLmZfc3VwcG9ydGVkKSApCj4gLSAgICAgICAgewo+IC0g ICAgICAgICAgICBwcmludGsoIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IFBWSCBtb2RlXG4iKTsK PiAtICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwo+IC0gICAgICAgICAgICBnb3RvIG91dDsKPiAt ICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAgaWYgKCBjb21wYXQzMiApCj4gQEAgLTEyMDcs MTIgKzk4NSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2KAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHN0YXJ0X2luZm8pICsKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBkb20wX3ZnYV9jb25zb2xlX2luZm8pKTsK PiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgewo+IC0gICAgICAgIHNo YXJlZF9pbmZvX3BhZGRyID0gcm91bmRfcGd1cCh2c3RhcnRpbmZvX2VuZCkgLSB2X3N0YXJ0Owo+ IC0gICAgICAgIHZzdGFydGluZm9fZW5kICAgKz0gUEFHRV9TSVpFOwo+IC0gICAgfQo+IC0KPiAg ICAgIHZwdF9zdGFydCAgICAgICAgPSByb3VuZF9wZ3VwKHZzdGFydGluZm9fZW5kKTsKPiAgICAg IGZvciAoIG5yX3B0X3BhZ2VzID0gMjsgOyBucl9wdF9wYWdlcysrICkKPiAgICAgIHsKPiBAQCAt MTQ1OCwxMSArMTIzMCw2IEBAIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2KAo+ ICAgICAgICAgIHNldHVwX2RvbTBfdmNwdShkLCBpLCBjcHUpOwo+ICAgICAgfQo+ICAKPiAtICAg IC8qCj4gLSAgICAgKiBwdmg6IHdlIHRlbXBvcmFyaWx5IGRpc2FibGUgZC0+YXJjaC5wYWdpbmcu bW9kZSBzbyB0aGF0IHdlIGNhbiBidWlsZCBjcjMKPiAtICAgICAqIG5lZWRlZCB0byBydW4gb24g ZG9tMCdzIHBhZ2UgdGFibGVzLgo+IC0gICAgICovCj4gLSAgICBzYXZlX3B2aF9wZ19tb2RlID0g ZC0+YXJjaC5wYWdpbmcubW9kZTsKPiAgICAgIGQtPmFyY2gucGFnaW5nLm1vZGUgPSAwOwo+ICAK PiAgICAgIC8qIFNldCB1cCBDUjMgdmFsdWUgZm9yIHdyaXRlX3B0YmFzZSAqLwo+IEBAIC0xNTMy LDI1ICsxMjk5LDYgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICBucl9wYWdlcyk7Cj4gICAgICB9Cj4gIAo+IC0gICAgLyoK PiAtICAgICAqIFdlIGVuYWJsZSBwYWdpbmcgbW9kZSBhZ2FpbiBzbyBndWVzdF9waHlzbWFwX2Fk ZF9wYWdlIGFuZAo+IC0gICAgICogcGFnaW5nX3NldF9hbGxvY2F0aW9uIHdpbGwgZG8gdGhlIHJp Z2h0IHRoaW5nIGZvciB1cy4KPiAtICAgICAqLwo+IC0gICAgZC0+YXJjaC5wYWdpbmcubW9kZSA9 IHNhdmVfcHZoX3BnX21vZGU7Cj4gLQo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAt ICAgIHsKPiAtICAgICAgICBib29sIHByZWVtcHRlZDsKPiAtCj4gLSAgICAgICAgZG8gewo+IC0g ICAgICAgICAgICBwcmVlbXB0ZWQgPSBmYWxzZTsKPiAtICAgICAgICAgICAgcGFnaW5nX3NldF9h bGxvY2F0aW9uKGQsIGRvbTBfcGFnaW5nX3BhZ2VzKGQsIG5yX3BhZ2VzKSwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZwcmVlbXB0ZWQpOwo+IC0gICAgICAgICAgICBwcm9j ZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKPiAtICAgICAgICB9IHdoaWxlICggcHJlZW1wdGVkICk7 Cj4gLSAgICB9Cj4gLQo+IC0KPiAgICAgIC8qIFdyaXRlIHRoZSBwaHlzLT5tYWNoaW5lIGFuZCBt YWNoaW5lLT5waHlzIHRhYmxlIGVudHJpZXMuICovCj4gICAgICBmb3IgKCBwZm4gPSAwOyBwZm4g PCBjb3VudDsgcGZuKysgKQo+ICAgICAgewo+IEBAIC0xNjI4LDE1ICsxMzc2LDYgQEAgc3RhdGlj IGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoCj4gICAgICAgICAgc2ktPmNvbnNvbGUuZG9t MC5pbmZvX3NpemUgPSBzaXplb2Yoc3RydWN0IGRvbTBfdmdhX2NvbnNvbGVfaW5mbyk7Cj4gICAg ICB9Cj4gIAo+IC0gICAgLyoKPiAtICAgICAqIFBWSDogV2UgbmVlZCB0byB1cGRhdGUgc2ktPnNo YXJlZF9pbmZvIHdoaWxlIHdlIGFyZSBvbiBkb20wIHBhZ2UgdGFibGVzLAo+IC0gICAgICogYnV0 IG5lZWQgdG8gZGVmZXIgdGhlIHAybSB1cGRhdGUgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBmaXhlZCB1 cCB0aGUKPiAtICAgICAqIHBhZ2UgdGFibGVzIGZvciBQVkggc28gdGhhdCB0aGUgbTJwIGZvciB0 aGUgc2kgcHRlIGVudHJ5IHJldHVybnMKPiAtICAgICAqIGNvcnJlY3QgcGZuLgo+IC0gICAgICov Cj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgICAgIHNpLT5zaGFyZWRfaW5m byA9IHNoYXJlZF9pbmZvX3BhZGRyOwo+IC0KPiAgICAgIGlmICggaXNfcHZfMzJiaXRfZG9tYWlu KGQpICkKPiAgICAgICAgICB4bGF0X3N0YXJ0X2luZm8oc2ksIFhMQVRfc3RhcnRfaW5mb19jb25z b2xlX2RvbTApOwo+ICAKPiBAQCAtMTY3MCwxNiArMTQwOSw4IEBAIHN0YXRpYyBpbnQgX19pbml0 IGNvbnN0cnVjdF9kb20wX3B2KAo+ICAgICAgcmVncy0+X2VmbGFncyA9IFg4Nl9FRkxBR1NfSUY7 Cj4gIAo+ICAjaWZkZWYgQ09ORklHX1NIQURPV19QQUdJTkcKPiAtICAgIGlmICggb3B0X2RvbTBf c2hhZG93ICkKPiAtICAgIHsKPiAtICAgICAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0g ICAgICAgIHsKPiAtICAgICAgICAgICAgcHJpbnRrKCJVbnN1cHBvcnRlZCBvcHRpb24gZG9tMF9z aGFkb3cgZm9yIFBWSFxuIik7Cj4gLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAg ICAgIH0KPiAtICAgICAgICBpZiAoIHBhZ2luZ19lbmFibGUoZCwgUEdfU0hfZW5hYmxlKSA9PSAw ICkgCj4gLSAgICAgICAgICAgIHBhZ2luZ191cGRhdGVfcGFnaW5nX21vZGVzKHYpOwo+IC0gICAg fQo+ICsgICAgaWYgKCBvcHRfZG9tMF9zaGFkb3cgJiYgcGFnaW5nX2VuYWJsZShkLCBQR19TSF9l bmFibGUpID09IDAgKQo+ICsgICAgICAgIHBhZ2luZ191cGRhdGVfcGFnaW5nX21vZGVzKHYpOwo+ ICAjZW5kaWYKPiAgCj4gICAgICAvKgo+IEBAIC0xNjk2LDIwICsxNDI3LDYgQEAgc3RhdGljIGlu dCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoCj4gICAgICAgICAgcHJpbnRrKCIgWGVuIHdhcm5p bmc6IGRvbTAga2VybmVsIGJyb2tlbiBFTEY6ICVzXG4iLAo+ICAgICAgICAgICAgICAgICBlbGZf Y2hlY2tfYnJva2VuKCZlbGYpKTsKPiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+ IC0gICAgewo+IC0gICAgICAgIC8qIGZpbmFsbHksIGZpeHVwIHRoZSBwYWdlIHRhYmxlLCByZXBs YWNpbmcgbWZucyB3aXRoIHBmbnMgKi8KPiAtICAgICAgICBwdmhfZml4dXBfcGFnZV90YWJsZXNf Zm9yX2hhcCh2LCB2X3N0YXJ0LCB2X2VuZCk7Cj4gLQo+IC0gICAgICAgIC8qIHRoZSBwdCBoYXMg Y29ycmVjdCBwZm4gZm9yIHNpLCBub3cgdXBkYXRlIHRoZSBtZm4gaW4gdGhlIHAybSAqLwo+IC0g ICAgICAgIG1mbiA9IHZpcnRfdG9fbWZuKGQtPnNoYXJlZF9pbmZvKTsKPiAtICAgICAgICBwZm4g PSBzaGFyZWRfaW5mb19wYWRkciA+PiBQQUdFX1NISUZUOwo+IC0gICAgICAgIGRvbTBfdXBkYXRl X3BoeXNtYXAoZCwgcGZuLCBtZm4sIDApOwo+IC0KPiAtICAgICAgICBwdmhfbWFwX2FsbF9pb21l bShkLCBucl9wYWdlcyk7Cj4gLSAgICAgICAgcHZoX3NldHVwX2U4MjAoZCwgbnJfcGFnZXMpOwo+ IC0gICAgfQo+IC0KPiAgICAgIGlmICggZC0+ZG9tYWluX2lkID09IGhhcmR3YXJlX2RvbWlkICkK PiAgICAgICAgICBpb21tdV9od2RvbV9pbml0KGQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCj4gaW5kZXggYTNkZDI3Ni4u MmMxODkzZCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKPiArKysgYi94ZW4v YXJjaC94ODYvZG9tY3RsLmMKPiBAQCAtNjE4LDkgKzYxOCw4IEBAIGxvbmcgYXJjaF9kb19kb21j dGwoCj4gICAgICAgICAgYnJlYWs7Cj4gIAo+ICAgICAgY2FzZSBYRU5fRE9NQ1RMX2dldF9hZGRy ZXNzX3NpemU6Cj4gLSAgICAgICAgZG9tY3RsLT51LmFkZHJlc3Nfc2l6ZS5zaXplID0KPiAtICAg ICAgICAgICAgKGlzX3B2XzMyYml0X2RvbWFpbihkKSB8fCBpc19wdmhfMzJiaXRfZG9tYWluKGQp KSA/Cj4gLSAgICAgICAgICAgIDMyIDogQklUU19QRVJfTE9ORzsKPiArICAgICAgICBkb21jdGwt PnUuYWRkcmVzc19zaXplLnNpemUgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgPyAzMiA6Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQklUU19QRVJfTE9ORzsKPiAgICAgICAgICBjb3B5YmFjayA9IDE7Cj4gICAgICAgICAgYnJl YWs7Cj4gIAo+IEBAIC0xNDkzLDcgKzE0OTIsNyBAQCB2b2lkIGFyY2hfZ2V0X2luZm9fZ3Vlc3Qo c3RydWN0IHZjcHUgKnYsIHZjcHVfZ3Vlc3RfY29udGV4dF91IGMpCj4gIHsKPiAgICAgIHVuc2ln bmVkIGludCBpOwo+ICAgICAgY29uc3Qgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKPiAt ICAgIGJvb2xfdCBjb21wYXQgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgfHwgaXNfcHZoXzMyYml0 X2RvbWFpbihkKTsKPiArICAgIGJvb2xfdCBjb21wYXQgPSBpc19wdl8zMmJpdF9kb21haW4oZCk7 Cj4gICNkZWZpbmUgYyhmbGQpICghY29tcGF0ID8gKGMubmF0LT5mbGQpIDogKGMuY21wLT5mbGQp KQo+ICAKPiAgICAgIGlmICggIWlzX3B2X2RvbWFpbihkKSApCj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gaW5kZXggOWVlYjBh Mi4uYjk1YjUwMCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gKysrIGIv eGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IEBAIC0xODAsOSArMTgwLDYgQEAgc3RhdGljIGludCBf X2luaXQgaHZtX2VuYWJsZSh2b2lkKQo+ICAgICAgICAgIHByaW50aygiXG4iKTsKPiAgICAgIH0K PiAgCj4gLSAgICBpZiAoICFmbnMtPnB2aF9zdXBwb3J0ZWQgKQo+IC0gICAgICAgIHByaW50ayhY RU5MT0dfSU5GTyAiSFZNOiBQVkggbW9kZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1c biIpOwo+IC0KPiAgICAgIGlmICggIW9wdF9hbHRwMm1fZW5hYmxlZCApCj4gICAgICAgICAgaHZt X2Z1bmNzLmFsdHAybV9zdXBwb3J0ZWQgPSAwOwo+ICAKPiBAQCAtNDMxLDEwICs0MjgsNiBAQCB1 NjQgaHZtX2dldF9ndWVzdF90c2NfZml4ZWQoc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IGF0X3Rz YykKPiAgCj4gIHZvaWQgaHZtX21pZ3JhdGVfdGltZXJzKHN0cnVjdCB2Y3B1ICp2KQo+ICB7Cj4g LSAgICAvKiBQVkggZG9lc24ndCB1c2UgcnRjIGFuZCBlbXVsYXRlZCB0aW1lcnMsIGl0IHVzZXMg cHZjbG9jayBtZWNoYW5pc20uICovCj4gLSAgICBpZiAoIGlzX3B2aF92Y3B1KHYpICkKPiAtICAg ICAgICByZXR1cm47Cj4gLQo+ICAgICAgcnRjX21pZ3JhdGVfdGltZXJzKHYpOwo+ICAgICAgcHRf bWlncmF0ZSh2KTsKPiAgfQo+IEBAIC01OTQsMTkgKzU4Nyw2IEBAIHN0YXRpYyBpbnQgaHZtX3By aW50X2xpbmUoCj4gICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW50IGhhbmRsZV9wdmhfaW8oCj4gLSAgICBpbnQgZGlyLCB1bnNpZ25lZCBpbnQgcG9ydCwgdW5z aWduZWQgaW50IGJ5dGVzLCB1aW50MzJfdCAqdmFsKQo+IC17Cj4gLSAgICBzdHJ1Y3QgZG9tYWlu ICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKPiAtCj4gLSAgICBpZiAoIGRpciA9PSBJT1JFUV9X UklURSApCj4gLSAgICAgICAgZ3Vlc3RfaW9fd3JpdGUocG9ydCwgYnl0ZXMsICp2YWwsIGN1cnJk KTsKPiAtICAgIGVsc2UKPiAtICAgICAgICAqdmFsID0gZ3Vlc3RfaW9fcmVhZChwb3J0LCBieXRl cywgY3VycmQpOwo+IC0KPiAtICAgIHJldHVybiBYODZFTVVMX09LQVk7Cj4gLX0KPiAtCj4gIGlu dCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKPiAgewo+ICAgICAgaW50 IHJjOwo+IEBAIC02MTgsMjIgKzU5OCw2IEBAIGludCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3Ry dWN0IGRvbWFpbiAqZCkKPiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgIH0KPiAgCj4g LSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgewo+IC0gICAgICAgIGlmICggIWh2 bV9mdW5jcy5wdmhfc3VwcG9ydGVkICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIHByaW50 ayhYRU5MT0dfR19XQVJOSU5HICJBdHRlbXB0IHRvIGNyZWF0ZSBhIFBWSCBndWVzdCAiCj4gLSAg ICAgICAgICAgICAgICAgICAib24gYSBzeXN0ZW0gd2l0aG91dCBuZWNlc3NhcnkgaGFyZHdhcmUg c3VwcG9ydFxuIik7Cj4gLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgIH0K PiAtICAgICAgICBpZiAoICFoYXBfZW5hYmxlZChkKSApCj4gLSAgICAgICAgewo+IC0gICAgICAg ICAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiUFZIIGd1ZXN0IG11c3QgaGF2ZSBIQVAgb25cbiIp Owo+IC0gICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAg fQo+IC0KPiAgICAgIHNwaW5fbG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xvY2sp Owo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFyY2guaHZtX2RvbWFpbi51Y19sb2NrKTsKPiAg ICAgIHNwaW5fbG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOwo+ IEBAIC02NzUsMTIgKzYzOSw2IEBAIGludCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRv bWFpbiAqZCkKPiAgCj4gICAgICBodm1faW9yZXFfaW5pdChkKTsKPiAgCj4gLSAgICBpZiAoIGlz X3B2aF9kb21haW4oZCkgKQo+IC0gICAgewo+IC0gICAgICAgIHJlZ2lzdGVyX3BvcnRpb19oYW5k bGVyKGQsIDAsIDB4MTAwMDMsIGhhbmRsZV9wdmhfaW8pOwo+IC0gICAgICAgIHJldHVybiAwOwo+ IC0gICAgfQo+IC0KPiAgICAgIGh2bV9pbml0X2d1ZXN0X3RpbWUoZCk7Cj4gIAo+ICAgICAgZC0+ YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVFJJUExFX0ZBVUxUX1JFQVNPTl0gPSBT SFVURE9XTl9yZWJvb3Q7Cj4gQEAgLTcyMyw5ICs2ODEsNiBAQCBpbnQgaHZtX2RvbWFpbl9pbml0 aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpCj4gIAo+ICB2b2lkIGh2bV9kb21haW5fcmVsaW5xdWlz aF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkKPiAgewo+IC0gICAgaWYgKCBpc19wdmhfZG9t YWluKGQpICkKPiAtICAgICAgICByZXR1cm47Cj4gLQo+ICAgICAgaWYgKCBodm1fZnVuY3Mubmh2 bV9kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMgKQo+ICAgICAgICAgIGh2bV9mdW5jcy5uaHZt X2RvbWFpbl9yZWxpbnF1aXNoX3Jlc291cmNlcyhkKTsKPiAgCj4gQEAgLTc1NCw5ICs3MDksNiBA QCB2b2lkIGh2bV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQo+ICAKPiAgICAgIGh2 bV9kZXN0cm95X2NhY2hlYXR0cl9yZWdpb25fbGlzdChkKTsKPiAgCj4gLSAgICBpZiAoIGlzX3B2 aF9kb21haW4oZCkgKQo+IC0gICAgICAgIHJldHVybjsKPiAtCj4gICAgICBodm1fZnVuY3MuZG9t YWluX2Rlc3Ryb3koZCk7Cj4gICAgICBydGNfZGVpbml0KGQpOwo+ICAgICAgc3RkdmdhX2RlaW5p dChkKTsKPiBAQCAtMTUyNSwxMyArMTQ3Nyw2IEBAIGludCBodm1fdmNwdV9pbml0aWFsaXNlKHN0 cnVjdCB2Y3B1ICp2KQo+ICAKPiAgICAgIHYtPmFyY2guaHZtX3ZjcHUuaW5qZWN0X2V2ZW50LnZl Y3RvciA9IEhWTV9FVkVOVF9WRUNUT1JfVU5TRVQ7Cj4gIAo+IC0gICAgaWYgKCBpc19wdmhfZG9t YWluKGQpICkKPiAtICAgIHsKPiAtICAgICAgICAvKiBUaGlzIGlzIGZvciBodm1fbG9uZ19tb2Rl X2VuYWJsZWQodikuICovCj4gLSAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVyID0g RUZFUl9MTUEgfCBFRkVSX0xNRTsKPiAtICAgICAgICByZXR1cm4gMDsKPiAtICAgIH0KPiAtCj4g ICAgICByYyA9IHNldHVwX2NvbXBhdF9hcmdfeGxhdCh2KTsgLyogdGVhcmRvd246IGZyZWVfY29t cGF0X2FyZ194bGF0KCkgKi8KPiAgICAgIGlmICggcmMgIT0gMCApCj4gICAgICAgICAgZ290byBm YWlsNDsKPiBAQCAtMTg2OSw5ICsxODE0LDYgQEAgaW50IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1 bHQocGFkZHJfdCBncGEsIHVuc2lnbmVkIGxvbmcgZ2xhLAo+ICAgICAgICAgICAgICBfX3B1dF9n Zm4oaG9zdHAybSwgZ2ZuKTsKPiAgCj4gICAgICAgICAgcmMgPSAwOwo+IC0gICAgICAgIGlmICgg dW5saWtlbHkoaXNfcHZoX2RvbWFpbihjdXJyZCkpICkKPiAtICAgICAgICAgICAgZ290byBvdXQ7 Cj4gLQo+ICAgICAgICAgIGlmICggIWhhbmRsZV9tbWlvX3dpdGhfdHJhbnNsYXRpb24oZ2xhLCBn cGEgPj4gUEFHRV9TSElGVCwgbnBmZWMpICkKPiAgICAgICAgICAgICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7Cj4gICAgICAgICAgcmMgPSAxOwo+IEBAIC0yMjEx LDE1ICsyMTUzLDYgQEAgaW50IGh2bV9zZXRfY3IwKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xf dCBtYXlfZGVmZXIpCj4gICAgICAgICAgICh2YWx1ZSAmIChYODZfQ1IwX1BFIHwgWDg2X0NSMF9Q RykpID09IFg4Nl9DUjBfUEcgKQo+ICAgICAgICAgIGdvdG8gZ3BmOwo+ICAKPiAtICAgIC8qIEEg cHZoIGlzIG5vdCBleHBlY3RlZCB0byBjaGFuZ2UgdG8gcmVhbCBtb2RlLiAqLwo+IC0gICAgaWYg KCBpc19wdmhfZG9tYWluKGQpICYmCj4gLSAgICAgICAgICh2YWx1ZSAmIChYODZfQ1IwX1BFIHwg WDg2X0NSMF9QRykpICE9IChYODZfQ1IwX1BHIHwgWDg2X0NSMF9QRSkgKQo+IC0gICAgewo+IC0g ICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HCj4gLSAgICAgICAgICAgICAgICJQVkggYXR0 ZW1wdGluZyB0byB0dXJuIG9mZiBQRS9QRy4gQ1IwOiVseFxuIiwgdmFsdWUpOwo+IC0gICAgICAg IGdvdG8gZ3BmOwo+IC0gICAgfQo+IC0KPiAgICAgIGlmICggbWF5X2RlZmVyICYmIHVubGlrZWx5 KHYtPmRvbWFpbi0+YXJjaC5tb25pdG9yLndyaXRlX2N0cmxyZWdfZW5hYmxlZCAmCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb25pdG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVO VF9YODZfQ1IwKSkgKQo+ICAgICAgewo+IEBAIC0yMzg0LDExICsyMzE3LDYgQEAgaW50IGh2bV9z ZXRfY3I0KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICJFRkVSLkxNQSBpcyBzZXQiKTsKPiAgICAgICAgICAgICAgZ290byBn cGY7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIGlmICggaXNfcHZoX3ZjcHUodikgKQo+IC0gICAg ICAgIHsKPiAtICAgICAgICAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMXzEsICIzMi1iaXQgUFZI IGd1ZXN0IGNsZWFyZWQgQ1I0LlBBRSIpOwo+IC0gICAgICAgICAgICBnb3RvIGdwZjsKPiAtICAg ICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAgb2xkX2NyID0gdi0+YXJjaC5odm1fdmNwdS5ndWVz dF9jcls0XTsKPiBAQCAtMzU0Miw4ICszNDcwLDcgQEAgaW50IGh2bV9tc3Jfd3JpdGVfaW50ZXJj ZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50LAo+ICAgICAgICAgIGJy ZWFrOwo+ICAKPiAgICAgIGNhc2UgTVNSX0lBMzJfQVBJQ0JBU0U6Cj4gLSAgICAgICAgaWYgKCB1 bmxpa2VseShpc19wdmhfdmNwdSh2KSkgfHwKPiAtICAgICAgICAgICAgICF2bGFwaWNfbXNyX3Nl dCh2Y3B1X3ZsYXBpYyh2KSwgbXNyX2NvbnRlbnQpICkKPiArICAgICAgICBpZiAoICF2bGFwaWNf bXNyX3NldCh2Y3B1X3ZsYXBpYyh2KSwgbXNyX2NvbnRlbnQpICkKPiAgICAgICAgICAgICAgZ290 byBncF9mYXVsdDsKPiAgICAgICAgICBicmVhazsKPiAgCj4gQEAgLTQwNjYsOCArMzk5Myw3IEBA IHN0YXRpYyBpbnQgaHZtb3Bfc2V0X3BhcmFtKAo+ICAgICAgICAgIHJldHVybiAtRVNSQ0g7Cj4g IAo+ICAgICAgcmMgPSAtRUlOVkFMOwo+IC0gICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9t YWluKGQpIHx8Cj4gLSAgICAgICAgIChpc19wdmhfZG9tYWluKGQpICYmIChhLmluZGV4ICE9IEhW TV9QQVJBTV9DQUxMQkFDS19JUlEpKSApCj4gKyAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl9k b21haW4oZCkgKQo+ICAgICAgICAgIGdvdG8gb3V0Owo+ICAKPiAgICAgIHJjID0gaHZtX2FsbG93 X3NldF9wYXJhbShkLCAmYSk7Cj4gQEAgLTQzMjIsOCArNDI0OCw3IEBAIHN0YXRpYyBpbnQgaHZt b3BfZ2V0X3BhcmFtKAo+ICAgICAgICAgIHJldHVybiAtRVNSQ0g7Cj4gIAo+ICAgICAgcmMgPSAt RUlOVkFMOwo+IC0gICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpIHx8Cj4gLSAg ICAgICAgIChpc19wdmhfZG9tYWluKGQpICYmIChhLmluZGV4ICE9IEhWTV9QQVJBTV9DQUxMQkFD S19JUlEpKSApCj4gKyAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQo+ICAg ICAgICAgIGdvdG8gb3V0Owo+ICAKPiAgICAgIHJjID0gaHZtX2FsbG93X2dldF9wYXJhbShkLCAm YSk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMgYi94ZW4vYXJj aC94ODYvaHZtL2h5cGVyY2FsbC5jCj4gaW5kZXggNjQ5OWNhYS4uOGNjN2NjNiAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2 bS9oeXBlcmNhbGwuYwo+IEBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBsb25nIGh2bV9waHlzZGV2 X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+ICAgICAgc3dp dGNoICggY21kICkKPiAgICAgIHsKPiAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgaWYgKCAhaXNf cHZoX3ZjcHUoY3VycikgfHwgIWlzX2hhcmR3YXJlX2RvbWFpbihjdXJyLT5kb21haW4pICkKPiAr ICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oY3Vyci0+ZG9tYWluKSApCj4gICAgICAg ICAgICAgIHJldHVybiAtRU5PU1lTOwo+ICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwo+ICAg ICAgY2FzZSBQSFlTREVWT1BfbWFwX3BpcnE6Cj4gQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGxv bmcgaHZtX3BoeXNkZXZfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBh cmcpCj4gICAgICBjYXNlIFBIWVNERVZPUF9lb2k6Cj4gICAgICBjYXNlIFBIWVNERVZPUF9pcnFf c3RhdHVzX3F1ZXJ5Ogo+ICAgICAgY2FzZSBQSFlTREVWT1BfZ2V0X2ZyZWVfcGlycToKPiAtICAg ICAgICBpZiAoICFoYXNfcGlycShjdXJyLT5kb21haW4pICYmICFpc19wdmhfdmNwdShjdXJyKSAp Cj4gKyAgICAgICAgaWYgKCAhaGFzX3BpcnEoY3Vyci0+ZG9tYWluKSApCj4gICAgICAgICAgICAg IHJldHVybiAtRU5PU1lTOwo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgfQo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL2lvLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKPiBpbmRleCAy MDVmYjY4Li41MDE2MzAwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYwo+IEBAIC04NCw4ICs4NCw2IEBAIGJvb2wgaHZtX2Vt dWxhdGVfb25lX2luc24oaHZtX2VtdWxhdGVfdmFsaWRhdGVfdCAqdmFsaWRhdGUpCj4gICAgICBz dHJ1Y3QgaHZtX3ZjcHVfaW8gKnZpbyA9ICZjdXJyLT5hcmNoLmh2bV92Y3B1Lmh2bV9pbzsKPiAg ICAgIGludCByYzsKPiAgCj4gLSAgICBBU1NFUlQoIWlzX3B2aF92Y3B1KGN1cnIpKTsKPiAtCj4g ICAgICBodm1fZW11bGF0ZV9pbml0X29uY2UoJmN0eHQsIHZhbGlkYXRlLCBndWVzdF9jcHVfdXNl cl9yZWdzKCkpOwo+ICAKPiAgICAgIHJjID0gaHZtX2VtdWxhdGVfb25lKCZjdHh0KTsKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3Jl cS5jCj4gaW5kZXggZWJiM2VjYS4uYWQyZWRhZCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYv aHZtL2lvcmVxLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiBAQCAtMTM4Nyw4 ICsxMzg3LDcgQEAgdm9pZCBodm1faW9yZXFfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAg c3Bpbl9sb2NrX2luaXQoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4g ICAgICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0 KTsKPiAgCj4gLSAgICBpZiAoICFpc19wdmhfZG9tYWluKGQpICkKPiAtICAgICAgICByZWdpc3Rl cl9wb3J0aW9faGFuZGxlcihkLCAweGNmOCwgNCwgaHZtX2FjY2Vzc19jZjgpOwo+ICsgICAgcmVn aXN0ZXJfcG9ydGlvX2hhbmRsZXIoZCwgMHhjZjgsIDQsIGh2bV9hY2Nlc3NfY2Y4KTsKPiAgfQo+ ICAKPiAgLyoKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pcnEuYyBiL3hlbi9hcmNo L3g4Ni9odm0vaXJxLmMKPiBpbmRleCBmZjdkMjg4Li43NjA1NDRiIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vaXJxLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2lycS5jCj4gQEAg LTQyMyw5ICs0MjMsNiBAQCBzdHJ1Y3QgaHZtX2ludGFjayBodm1fdmNwdV9oYXNfcGVuZGluZ19p cnEoc3RydWN0IHZjcHUgKnYpCj4gICAgICAgICAgICYmIHZjcHVfaW5mbyh2LCBldnRjaG5fdXBj YWxsX3BlbmRpbmcpICkKPiAgICAgICAgICByZXR1cm4gaHZtX2ludGFja192ZWN0b3IocGxhdC0+ aXJxLmNhbGxiYWNrX3ZpYS52ZWN0b3IpOwo+ICAKPiAtICAgIGlmICggaXNfcHZoX3ZjcHUodikg KQo+IC0gICAgICAgIHJldHVybiBodm1faW50YWNrX25vbmU7Cj4gLQo+ICAgICAgaWYgKCB2bGFw aWNfYWNjZXB0X3BpY19pbnRyKHYpICYmIHBsYXQtPnZwaWNbMF0uaW50X291dHB1dCApCj4gICAg ICAgICAgcmV0dXJuIGh2bV9pbnRhY2tfcGljKDApOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS92bXgvdm1jcy5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCj4gaW5k ZXggMDNlNjhhZC4uZjk4YThiNyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92 bWNzLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKPiBAQCAtMTA2OCwyMCAr MTA2OCw2IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpCj4gICAg ICAgICAgICAgICAgICAgIHZteF9waW5fYmFzZWRfZXhlY19jb250cm9sICYgflBJTl9CQVNFRF9Q T1NURURfSU5URVJSVVBUKTsKPiAgICAgIH0KPiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4o ZCkgKQo+IC0gICAgewo+IC0gICAgICAgIC8qIFVucmVzdHJpY3RlZCBndWVzdCAocmVhbCBtb2Rl IGZvciBFUFQpICovCj4gLSAgICAgICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2Nv bnRyb2wgJj0KPiAtICAgICAgICAgICAgflNFQ09OREFSWV9FWEVDX1VOUkVTVFJJQ1RFRF9HVUVT VDsKPiAtCj4gLSAgICAgICAgLyogU3RhcnQgaW4gNjQtYml0IG1vZGUuIFBWSCAzMmJpdGZpeG1l LiAqLwo+IC0gICAgICAgIHZtZW50cnlfY3RsIHw9IFZNX0VOVFJZX0lBMzJFX01PREU7ICAgICAg IC8qIEdVRVNUX0VGRVIuTE1FL0xNQSBpZ25vcmVkICovCj4gLQo+IC0gICAgICAgIEFTU0VSVCh2 LT5hcmNoLmh2bV92bXguZXhlY19jb250cm9sICYgQ1BVX0JBU0VEX0FDVElWQVRFX1NFQ09OREFS WV9DT05UUk9MUyk7Cj4gLSAgICAgICAgQVNTRVJUKHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRy b2wgJiBDUFVfQkFTRURfQUNUSVZBVEVfTVNSX0JJVE1BUCk7Cj4gLSAgICAgICAgQVNTRVJUKCEo di0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCAmIENQVV9CQVNFRF9SRFRTQ19FWElUSU5HKSk7 Cj4gLSAgICB9Cj4gLQo+ICAgICAgdm14X3VwZGF0ZV9jcHVfZXhlY19jb250cm9sKHYpOwo+ICAK PiAgICAgIF9fdm13cml0ZShWTV9FWElUX0NPTlRST0xTLCB2bWV4aXRfY3RsKTsKPiBAQCAtMTIx NywxMSArMTIwMyw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYp Cj4gICAgICBfX3Ztd3JpdGUoR1VFU1RfRFNfQVJfQllURVMsIDB4YzA5Myk7Cj4gICAgICBfX3Zt d3JpdGUoR1VFU1RfRlNfQVJfQllURVMsIDB4YzA5Myk7Cj4gICAgICBfX3Ztd3JpdGUoR1VFU1Rf R1NfQVJfQllURVMsIDB4YzA5Myk7Cj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0g ICAgICAgIC8qIENTLkwgPT0gMSwgZXhlYywgcmVhZC93cml0ZSwgYWNjZXNzZWQuICovCj4gLSAg ICAgICAgX192bXdyaXRlKEdVRVNUX0NTX0FSX0JZVEVTLCAweGEwOWIpOwo+IC0gICAgZWxzZQo+ IC0gICAgICAgIF9fdm13cml0ZShHVUVTVF9DU19BUl9CWVRFUywgMHhjMDliKTsgLyogZXhlYy9y ZWFkLCBhY2Nlc3NlZCAqLwo+ICsgICAgX192bXdyaXRlKEdVRVNUX0NTX0FSX0JZVEVTLCAweGMw OWIpOyAvKiBleGVjL3JlYWQsIGFjY2Vzc2VkICovCj4gIAo+ICAgICAgLyogR3Vlc3QgSURULiAq Lwo+ICAgICAgX192bXdyaXRlKEdVRVNUX0lEVFJfQkFTRSwgMCk7Cj4gQEAgLTEyNTEsMjMgKzEy MzMsMTAgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfdm1jcyhzdHJ1Y3QgdmNwdSAqdikKPiAgICAg ICAgICAgICAgICB8ICgxVSA8PCBUUkFQX25vX2RldmljZSk7Cj4gICAgICB2bXhfdXBkYXRlX2V4 Y2VwdGlvbl9iaXRtYXAodik7Cj4gIAo+IC0gICAgLyoKPiAtICAgICAqIEluIEhWTSBkb21haW5z LCB0aGlzIGhhcHBlbnMgb24gdGhlIHJlYWxtb2RlLT5wYWdpbmcKPiAtICAgICAqIHRyYW5zaXRp b24uICBTaW5jZSBQVkggbmV2ZXIgZ29lcyB0aHJvdWdoIHRoaXMgdHJhbnNpdGlvbiwgd2UKPiAt ICAgICAqIG5lZWQgdG8gZG8gaXQgYXQgc3RhcnQtb2YtZGF5Lgo+IC0gICAgICovCj4gLSAgICBp ZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgICAgIHZteF91cGRhdGVfZGVidWdfc3RhdGUo dik7Cj4gLQo+ICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclswXSA9IFg4Nl9DUjBfUEUg fCBYODZfQ1IwX0VUOwo+IC0KPiAtICAgIC8qIFBWSCBkb21haW5zIGFsd2F5cyBzdGFydCBpbiBw YWdpbmcgbW9kZSAqLwo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAtICAgICAgICB2 LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzBdIHw9IFg4Nl9DUjBfUEc7Cj4gLQo+ICAgICAgaHZt X3VwZGF0ZV9ndWVzdF9jcih2LCAwKTsKPiAgCj4gLSAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0 X2NyWzRdID0gaXNfcHZoX2RvbWFpbihkKSA/IFg4Nl9DUjRfUEFFIDogMDsKPiArICAgIHYtPmFy Y2guaHZtX3ZjcHUuZ3Vlc3RfY3JbNF0gPSAwOwo+ICAgICAgaHZtX3VwZGF0ZV9ndWVzdF9jcih2 LCA0KTsKPiAgCj4gICAgICBpZiAoIGNwdV9oYXNfdm14X3Rwcl9zaGFkb3cgKQo+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jCj4gaW5kZXggNjBiN2M5Mi4uODQwNGIwMyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYv aHZtL3ZteC92bXguYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gQEAgLTIw NjMsOSArMjA2Myw2IEBAIHN0YXRpYyBpbnQgdm14X3NldF9tb2RlKHN0cnVjdCB2Y3B1ICp2LCBp bnQgbW9kZSkKPiAgewo+ICAgICAgdW5zaWduZWQgbG9uZyBhdHRyOwo+ICAKPiAtICAgIGlmICgg IWlzX3B2aF92Y3B1KHYpICkKPiAtICAgICAgICByZXR1cm4gMDsKPiAtCj4gICAgICBBU1NFUlQo KG1vZGUgPT0gNCkgfHwgKG1vZGUgPT0gOCkpOwo+ICAKPiAgICAgIGF0dHIgPSAobW9kZSA9PSA0 KSA/IDB4YzA5YiA6IDB4YTA5YjsKPiBAQCAtMjMwMCwxMiArMjI5Nyw2IEBAIGNvbnN0IHN0cnVj dCBodm1fZnVuY3Rpb25fdGFibGUgKiBfX2luaXQgc3RhcnRfdm14KHZvaWQpCj4gICAgICAgICAg dm14X2Z1bmN0aW9uX3RhYmxlLnN5bmNfcGlyX3RvX2lyciA9IE5VTEw7Cj4gICAgICB9Cj4gIAo+ IC0gICAgaWYgKCBjcHVfaGFzX3ZteF9lcHQKPiAtICAgICAgICAgJiYgY3B1X2hhc192bXhfcGF0 Cj4gLSAgICAgICAgICYmIGNwdV9oYXNfdm14X21zcl9iaXRtYXAKPiAtICAgICAgICAgJiYgY3B1 X2hhc192bXhfc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCApCj4gLSAgICAgICAgdm14X2Z1bmN0aW9u X3RhYmxlLnB2aF9zdXBwb3J0ZWQgPSAxOwo+IC0KPiAgICAgIGlmICggY3B1X2hhc192bXhfdHNj X3NjYWxpbmcgKQo+ICAgICAgICAgIHZteF9mdW5jdGlvbl90YWJsZS50c2Nfc2NhbGluZy5yYXRp b19mcmFjX2JpdHMgPSA0ODsKPiAgCj4gQEAgLTM4MDAsOCArMzc5MSw3IEBAIHZvaWQgdm14X3Zt ZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICAgICAgICAgIGlmICgg ZXhpdF9xdWFsaWZpY2F0aW9uICYgMHgxMCApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICAv KiBJTlMsIE9VVFMgKi8KPiAtICAgICAgICAgICAgaWYgKCB1bmxpa2VseShpc19wdmhfdmNwdSh2 KSkgLyogUFZIIGZpeG1lICovIHx8Cj4gLSAgICAgICAgICAgICAgICAgIWh2bV9lbXVsYXRlX29u ZV9pbnNuKHg4Nl9pbnNuX2lzX3BvcnRpbykgKQo+ICsgICAgICAgICAgICBpZiAoICFodm1fZW11 bGF0ZV9vbmVfaW5zbih4ODZfaW5zbl9pc19wb3J0aW8pICkKPiAgICAgICAgICAgICAgICAgIGh2 bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwo+ICAgICAgICAgIH0KPiAg ICAgICAgICBlbHNlCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gv eDg2L21tLmMKPiBpbmRleCAxNjYxZTY2Li4xMmRhYmNmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L3g4Ni9tbS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tLmMKPiBAQCAtMzA0MSw3ICszMDQxLDcg QEAgc3RhdGljIHN0cnVjdCBkb21haW4gKmdldF9wZ19vd25lcihkb21pZF90IGRvbWlkKQo+ICAg ICAgICAgIGdvdG8gb3V0Owo+ICAgICAgfQo+ICAKPiAtICAgIGlmICggIWlzX3B2aF9kb21haW4o Y3VycikgJiYgdW5saWtlbHkocGFnaW5nX21vZGVfdHJhbnNsYXRlKGN1cnIpKSApCj4gKyAgICBp ZiAoIHVubGlrZWx5KHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShjdXJyKSkgKQo+ICAgICAgewo+ICAg ICAgICAgIE1FTV9MT0coIkNhbm5vdCBtaXggZm9yZWlnbiBtYXBwaW5ncyB3aXRoIHRyYW5zbGF0 ZWQgZG9tYWlucyIpOwo+ICAgICAgICAgIGdvdG8gb3V0Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiBpbmRleCBiYmZh NTRlLi4wN2UyY2NkIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+IEBAIC01MzIsNyArNTMyLDcgQEAgcDJtX3B0 X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZu X3QgbWZuLAo+ICAKPiAgICAgIGlmICggdW5saWtlbHkocDJtX2lzX2ZvcmVpZ24ocDJtdCkpICkK PiAgICAgIHsKPiAtICAgICAgICAvKiBwdmggZml4bWU6IGZvcmVpZ24gdHlwZXMgYXJlIG9ubHkg c3VwcG9ydGVkIG9uIGVwdCBhdCBwcmVzZW50ICovCj4gKyAgICAgICAgLyogaHZtIGZpeG1lOiBm b3JlaWduIHR5cGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBvbiBlcHQgYXQgcHJlc2VudCAqLwo+ICAg ICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiVW5pbXBsZW1lbnRlZCBmb3JlaWduIHAy bSB0eXBlLlxuIik7Cj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gICAgICB9Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IGlu ZGV4IDJlZWU5Y2QuLmE1NjUxYTMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5j Cj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCj4gQEAgLTU4OSw3ICs1ODksNyBAQCBpbnQg cDJtX2FsbG9jX3RhYmxlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gIH0KPiAgCj4gIC8qCj4g LSAqIHB2aCBmaXhtZTogd2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgcHZoIG5vbi1oYXJkd2FyZSBk b21haW5zLCB0aGlzIHBhdGggbXVzdAo+ICsgKiBodm0gZml4bWU6IHdoZW4gYWRkaW5nIHN1cHBv cnQgZm9yIHB2aCBub24taGFyZHdhcmUgZG9tYWlucywgdGhpcyBwYXRoIG11c3QKPiAgICogY2xl YW51cCBhbnkgZm9yZWlnbiBwMm0gdHlwZXMgKHJlbGVhc2UgcmVmY250cyBvbiB0aGVtKS4KPiAg ICovCj4gIHZvaWQgcDJtX3RlYXJkb3duKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gQEAgLTI0 MTEsMTAgKzI0MTEsMTAgQEAgaW50IHAybV9hZGRfZm9yZWlnbihzdHJ1Y3QgZG9tYWluICp0ZG9t LCB1bnNpZ25lZCBsb25nIGZnZm4sCj4gICAgICBzdHJ1Y3QgZG9tYWluICpmZG9tOwo+ICAKPiAg ICAgIEFTU0VSVCh0ZG9tKTsKPiAtICAgIGlmICggZm9yZWlnbmRvbSA9PSBET01JRF9TRUxGIHx8 ICFpc19wdmhfZG9tYWluKHRkb20pICkKPiArICAgIGlmICggZm9yZWlnbmRvbSA9PSBET01JRF9T RUxGICkKPiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgIC8qCj4gLSAgICAgKiBwdmgg Zml4bWU6IHVudGlsIHN1cHBvcnQgaXMgYWRkZWQgdG8gcDJtIHRlYXJkb3duIGNvZGUgdG8gY2xl YW51cCBhbnkKPiArICAgICAqIGh2bSBmaXhtZTogdW50aWwgc3VwcG9ydCBpcyBhZGRlZCB0byBw Mm0gdGVhcmRvd24gY29kZSB0byBjbGVhbnVwIGFueQo+ICAgICAgICogZm9yZWlnbiBlbnRyaWVz LCBsaW1pdCB0aGlzIHRvIGhhcmR3YXJlIGRvbWFpbiBvbmx5Lgo+ICAgICAgICovCj4gICAgICBp ZiAoICFpc19oYXJkd2FyZV9kb21haW4odGRvbSkgKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvcGh5c2Rldi5jIGIveGVuL2FyY2gveDg2L3BoeXNkZXYuYwo+IGluZGV4IGZjNDViZmIuLjgx Y2Q2YzkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3BoeXNkZXYuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9waHlzZGV2LmMKPiBAQCAtNTE3LDEwICs1MTcsNiBAQCByZXRfdCBkb19waHlzZGV2 X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+ICAgICAgICAg IHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKPiAgICAgICAgICBzdHJ1Y3QgcGh5c2Rldl9z ZXRfaW9wbCBzZXRfaW9wbDsKPiAgCj4gLSAgICAgICAgcmV0ID0gLUVOT1NZUzsKPiAtICAgICAg ICBpZiAoIGlzX3B2aF92Y3B1KGN1cnIpICkKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gLQo+ICAg ICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gICAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnNl dF9pb3BsLCBhcmcsIDEpICE9IDAgKQo+ICAgICAgICAgICAgICBicmVhazsKPiBAQCAtNTM2LDEw ICs1MzIsNiBAQCByZXRfdCBkb19waHlzZGV2X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0odm9pZCkgYXJnKQo+ICAgICAgICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsK PiAgICAgICAgICBzdHJ1Y3QgcGh5c2Rldl9zZXRfaW9iaXRtYXAgc2V0X2lvYml0bWFwOwo+ICAK PiAtICAgICAgICByZXQgPSAtRU5PU1lTOwo+IC0gICAgICAgIGlmICggaXNfcHZoX3ZjcHUoY3Vy cikgKQo+IC0gICAgICAgICAgICBicmVhazsKPiAtCj4gICAgICAgICAgcmV0ID0gLUVGQVVMVDsK PiAgICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmc2V0X2lvYml0bWFwLCBhcmcsIDEpICE9 IDAgKQo+ICAgICAgICAgICAgICBicmVhazsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Nl dHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwo+IGluZGV4IGRhYjY3ZDUuLjRhODA3YjggMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKPiArKysgYi94ZW4vYXJjaC94ODYvc2V0 dXAuYwo+IEBAIC02MiwxMCArNjIsNiBAQCBpbnRlZ2VyX3BhcmFtKCJtYXhjcHVzIiwgbWF4X2Nw dXMpOwo+ICAKPiAgdW5zaWduZWQgbG9uZyBfX3JlYWRfbW9zdGx5IGNyNF9wdjMyX21hc2s7Cj4g IAo+IC0vKiBCb290IGRvbTAgaW4gcHZoIG1vZGUgKi8KPiAtc3RhdGljIGJvb2xfdCBfX2luaXRk YXRhIG9wdF9kb20wcHZoOwo+IC1ib29sZWFuX3BhcmFtKCJkb20wcHZoIiwgb3B0X2RvbTBwdmgp Owo+IC0KPiAgLyogKioqKiBMaW51eCBjb25maWcgb3B0aW9uOiBwcm9wYWdhdGVkIHRvIGRvbWFp bjAuICovCj4gIC8qICJhY3BpPW9mZiI6ICAgIFNpc2FibGVzIGJvdGggQUNQSSB0YWJsZSBwYXJz aW5nIGFuZCBpbnRlcnByZXRlci4gKi8KPiAgLyogImFjcGk9Zm9yY2UiOiAgT3ZlcnJpZGUgdGhl IGRpc2FibGUgYmxhY2tsaXN0LiAgICAgICAgICAgICAgICAgICAqLwo+IEBAIC0xNTQ1LDkgKzE1 NDEsNiBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1i aV9wKQo+ICAKPiAgICAgIGluaXRfZ3Vlc3RfY3B1aWQoKTsKPiAgCj4gLSAgICBpZiAoIG9wdF9k b20wcHZoICkKPiAtICAgICAgICBkb21jcl9mbGFncyB8PSBET01DUkZfcHZoIHwgRE9NQ1JGX2hh cDsKPiAtCj4gICAgICBpZiAoIGRvbTBfcHZoICkKPiAgICAgIHsKPiAgICAgICAgICBkb21jcl9m bGFncyB8PSBET01DUkZfaHZtIHwKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RpbWUuYyBi L3hlbi9hcmNoL3g4Ni90aW1lLmMKPiBpbmRleCAzYWQyYWIwLi5iNzM5ZGM4IDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni90aW1lLmMKPiArKysgYi94ZW4vYXJjaC94ODYvdGltZS5jCj4gQEAg LTIwMTMsMzMgKzIwMTMsNiBAQCB2b2lkIHRzY19zZXRfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAo+ ICAgICAgICAgIGQtPmFyY2gudnRzYyA9IDA7Cj4gICAgICAgICAgcmV0dXJuOwo+ICAgICAgfQo+ IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAtICAgIHsKPiAtICAgICAgICAvKgo+IC0g ICAgICAgICAqIFBWSCBmaXhtZTogc3VwcG9ydCBtb3JlIHRzYyBtb2Rlcy4KPiAtICAgICAgICAg Kgo+IC0gICAgICAgICAqIE5COiBUaGUgcmVhc29uIHRoaXMgaXMgZGlzYWJsZWQgaGVyZSBhcHBl YXJzIHRvIGJlIHdpdGgKPiAtICAgICAgICAgKiBhZGRpdGlvbmFsIHN1cHBvcnQgcmVxdWlyZWQg dG8gZG8gdGhlIFBWIFJEVFNDIGVtdWxhdGlvbi4KPiAtICAgICAgICAgKiBTaW5jZSB3ZSdyZSBu byBsb25nZXIgdGFraW5nIHRoZSBQViBlbXVsYXRpb24gcGF0aCBmb3IKPiAtICAgICAgICAgKiBh bnl0aGluZywgd2UgbWF5IGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCj4gLSAg ICAgICAgICoKPiAtICAgICAgICAgKiBwdmhmaXhtZTogRXhwZXJpbWVudHMgc2hvdyB0aGF0ICJk ZWZhdWx0IiB3b3JrcyBmb3IgUFZILAo+IC0gICAgICAgICAqIGJ1dCAiYWx3YXlzX2VtdWxhdGUi IGRvZXMgbm90IGZvciBzb21lIHJlYXNvbi4gIEZpZ3VyZSBvdXQKPiAtICAgICAgICAgKiB3aHku Cj4gLSAgICAgICAgICovCj4gLSAgICAgICAgc3dpdGNoICggdHNjX21vZGUgKQo+IC0gICAgICAg IHsKPiAtICAgICAgICBjYXNlIFRTQ19NT0RFX05FVkVSX0VNVUxBVEU6Cj4gLSAgICAgICAgICAg IGJyZWFrOwo+IC0gICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAgIHByaW50ayhYRU5MT0df V0FSTklORwo+IC0gICAgICAgICAgICAgICAgICAgIlBWSCBjdXJyZW50bHkgZG9lcyBub3Qgc3Vw cG9ydCB0c2MgZW11bGF0aW9uLiBTZXR0aW5nIHRpbWVyX21vZGUgPSBuZXZlcl9lbXVsYXRlXG4i KTsKPiAtICAgICAgICAgICAgLyogRkFMTFRIUlUgKi8KPiAtICAgICAgICBjYXNlIFRTQ19NT0RF X0RFRkFVTFQ6Cj4gLSAgICAgICAgICAgIHRzY19tb2RlID0gVFNDX01PREVfTkVWRVJfRU1VTEFU RTsKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+ICAKPiAgICAg IHN3aXRjaCAoIGQtPmFyY2gudHNjX21vZGUgPSB0c2NfbW9kZSApCj4gICAgICB7Cj4gZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCj4gaW5kZXgg NDQ5MmM5Yy4uYjIyYWFjYyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5jCj4gKysr IGIveGVuL2NvbW1vbi9kb21haW4uYwo+IEBAIC0zMDQsOCArMzA0LDYgQEAgc3RydWN0IGRvbWFp biAqZG9tYWluX2NyZWF0ZShkb21pZF90IGRvbWlkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3Ms Cj4gIAo+ICAgICAgaWYgKCBkb21jcl9mbGFncyAmIERPTUNSRl9odm0gKQo+ICAgICAgICAgIGQt Pmd1ZXN0X3R5cGUgPSBndWVzdF90eXBlX2h2bTsKPiAtICAgIGVsc2UgaWYgKCBkb21jcl9mbGFn cyAmIERPTUNSRl9wdmggKQo+IC0gICAgICAgIGQtPmd1ZXN0X3R5cGUgPSBndWVzdF90eXBlX3B2 aDsKPiAgICAgIGVsc2UKPiAgICAgICAgICBkLT5ndWVzdF90eXBlID0gZ3Vlc3RfdHlwZV9wdjsK PiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tY3RsLmMgYi94ZW4vY29tbW9uL2RvbWN0 bC5jCj4gaW5kZXggOTNlMzAyOS4uOTUxYTVkYyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2Rv bWN0bC5jCj4gKysrIGIveGVuL2NvbW1vbi9kb21jdGwuYwo+IEBAIC0xOTQsOSArMTk0LDYgQEAg dm9pZCBnZXRkb21haW5pbmZvKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX2dl dGRvbWFpbmluZm8gKmluZm8pCj4gICAgICBjYXNlIGd1ZXN0X3R5cGVfaHZtOgo+ICAgICAgICAg IGluZm8tPmZsYWdzIHw9IFhFTl9ET01JTkZfaHZtX2d1ZXN0Owo+ICAgICAgICAgIGJyZWFrOwo+ IC0gICAgY2FzZSBndWVzdF90eXBlX3B2aDoKPiAtICAgICAgICBpbmZvLT5mbGFncyB8PSBYRU5f RE9NSU5GX3B2aF9ndWVzdDsKPiAtICAgICAgICBicmVhazsKPiAgICAgIGRlZmF1bHQ6Cj4gICAg ICAgICAgYnJlYWs7Cj4gICAgICB9Cj4gQEAgLTUwMSw3ICs0OTgsNiBAQCBsb25nIGRvX2RvbWN0 bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwpCj4gICAgICAg ICAgcmV0ID0gLUVJTlZBTDsKPiAgICAgICAgICBpZiAoIChvcC0+dS5jcmVhdGVkb21haW4uZmxh Z3MgJgo+ICAgICAgICAgICAgICAgfihYRU5fRE9NQ1RMX0NERl9odm1fZ3Vlc3QKPiAtICAgICAg ICAgICAgICAgfCBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3QKPiAgICAgICAgICAgICAgICAgfCBY RU5fRE9NQ1RMX0NERl9oYXAKPiAgICAgICAgICAgICAgICAgfCBYRU5fRE9NQ1RMX0NERl9zM19p bnRlZ3JpdHkKPiAgICAgICAgICAgICAgICAgfCBYRU5fRE9NQ1RMX0NERl9vb3Nfb2ZmCj4gQEAg LTUzMiwxNSArNTI4LDkgQEAgbG9uZyBkb19kb21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQo+ICAgICAgICAgICAgICByb3ZlciA9IGRvbTsKPiAgICAg ICAgICB9Cj4gIAo+IC0gICAgICAgIGlmICggKG9wLT51LmNyZWF0ZWRvbWFpbi5mbGFncyAmIFhF Tl9ET01DVExfQ0RGX2h2bV9ndWVzdCkKPiAtICAgICAgICAgICAgICYmIChvcC0+dS5jcmVhdGVk b21haW4uZmxhZ3MgJiBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3QpICkKPiAtICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gLQo+ICAgICAgICAgIGRvbWNyX2ZsYWdzID0gMDsKPiAgICAgICAg ICBpZiAoIG9wLT51LmNyZWF0ZWRvbWFpbi5mbGFncyAmIFhFTl9ET01DVExfQ0RGX2h2bV9ndWVz dCApCj4gICAgICAgICAgICAgIGRvbWNyX2ZsYWdzIHw9IERPTUNSRl9odm07Cj4gLSAgICAgICAg aWYgKCBvcC0+dS5jcmVhdGVkb21haW4uZmxhZ3MgJiBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3Qg KQo+IC0gICAgICAgICAgICBkb21jcl9mbGFncyB8PSBET01DUkZfcHZoOwo+ICAgICAgICAgIGlm ICggb3AtPnUuY3JlYXRlZG9tYWluLmZsYWdzICYgWEVOX0RPTUNUTF9DREZfaGFwICkKPiAgICAg ICAgICAgICAgZG9tY3JfZmxhZ3MgfD0gRE9NQ1JGX2hhcDsKPiAgICAgICAgICBpZiAoIG9wLT51 LmNyZWF0ZWRvbWFpbi5mbGFncyAmIFhFTl9ET01DVExfQ0RGX3MzX2ludGVncml0eSApCj4gZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24va2VybmVsLmMgYi94ZW4vY29tbW9uL2tlcm5lbC5jCj4gaW5k ZXggNGI4N2M2MC4uYTRhZTYxMiAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2tlcm5lbC5jCj4g KysrIGIveGVuL2NvbW1vbi9rZXJuZWwuYwo+IEBAIC0zMjQsMTEgKzMyNCw2IEBAIERPKHhlbl92 ZXJzaW9uKShpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoMVUgPDwgWEVORkVBVF9oaWdobWVtX2Fzc2lzdCkg fAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxVSA8PCBYRU5GRUFUX2dudHRhYl9t YXBfYXZhaWxfYml0cyk7Cj4gICAgICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAg Y2FzZSBndWVzdF90eXBlX3B2aDoKPiAtICAgICAgICAgICAgICAgIGZpLnN1Ym1hcCB8PSAoMVUg PDwgWEVORkVBVF9odm1fc2FmZV9wdmNsb2NrKSB8Cj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDFVIDw8IFhFTkZFQVRfc3VwZXJ2aXNvcl9tb2RlX2tlcm5lbCkgfAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgxVSA8PCBYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3Ip Owo+IC0gICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgIGNhc2UgZ3Vlc3RfdHlw ZV9odm06Cj4gICAgICAgICAgICAgICAgICBmaS5zdWJtYXAgfD0gKDFVIDw8IFhFTkZFQVRfaHZt X3NhZmVfcHZjbG9jaykgfAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxVSA8PCBY RU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IpIHwKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92 bV9ldmVudC5jIGIveGVuL2NvbW1vbi92bV9ldmVudC5jCj4gaW5kZXggNDUwNDZkMS4uMGZlOWE1 MyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL3ZtX2V2ZW50LmMKPiArKysgYi94ZW4vY29tbW9u L3ZtX2V2ZW50LmMKPiBAQCAtNjA2LDggKzYwNiw4IEBAIGludCB2bV9ldmVudF9kb21jdGwoc3Ry dWN0IGRvbWFpbiAqZCwgeGVuX2RvbWN0bF92bV9ldmVudF9vcF90ICp2ZWMsCj4gICAgICAgICAg ICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gIAo+ICAg ICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+IC0gICAgICAgICAgICAvKiBwdmggZml4bWU6 IHAybV9pc19mb3JlaWduIHR5cGVzIG5lZWQgYWRkcmVzc2luZyAqLwo+IC0gICAgICAgICAgICBp ZiAoIGlzX3B2aF92Y3B1KGN1cnJlbnQpIHx8IGlzX3B2aF9kb21haW4oaGFyZHdhcmVfZG9tYWlu KSApCj4gKyAgICAgICAgICAgIC8qIGh2bSBmaXhtZTogcDJtX2lzX2ZvcmVpZ24gdHlwZXMgbmVl ZCBhZGRyZXNzaW5nICovCj4gKyAgICAgICAgICAgIGlmICggaXNfaHZtX2RvbWFpbihoYXJkd2Fy ZV9kb21haW4pICkKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAKPiAgICAgICAgICAgICAg cmMgPSAtRU5PREVWOwo+IEBAIC03MDcsOCArNzA3LDggQEAgaW50IHZtX2V2ZW50X2RvbWN0bChz dHJ1Y3QgZG9tYWluICpkLCB4ZW5fZG9tY3RsX3ZtX2V2ZW50X29wX3QgKnZlYywKPiAgICAgICAg ICB7Cj4gICAgICAgICAgY2FzZSBYRU5fVk1fRVZFTlRfRU5BQkxFOgo+ICAgICAgICAgICAgICBy YyA9IC1FT1BOT1RTVVBQOwo+IC0gICAgICAgICAgICAvKiBwdmggZml4bWU6IHAybV9pc19mb3Jl aWduIHR5cGVzIG5lZWQgYWRkcmVzc2luZyAqLwo+IC0gICAgICAgICAgICBpZiAoIGlzX3B2aF92 Y3B1KGN1cnJlbnQpIHx8IGlzX3B2aF9kb21haW4oaGFyZHdhcmVfZG9tYWluKSApCj4gKyAgICAg ICAgICAgIC8qIGh2bSBmaXhtZTogcDJtX2lzX2ZvcmVpZ24gdHlwZXMgbmVlZCBhZGRyZXNzaW5n ICovCj4gKyAgICAgICAgICAgIGlmICggaXNfaHZtX2RvbWFpbihoYXJkd2FyZV9kb21haW4pICkK PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAKPiAgICAgICAgICAgICAgcmMgPSAtRU5PREVW Owo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9kb21haW4uaAo+IGluZGV4IDFiZWVmMmYuLjhmMGVkYWYgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvZG9tYWluLmgKPiBAQCAtMTUsNyArMTUsNiBAQAo+ICAjZGVmaW5lIGhhc18zMmJpdF9zaGlu Zm8oZCkgICAgKChkKS0+YXJjaC5oYXNfMzJiaXRfc2hpbmZvKQo+ICAjZGVmaW5lIGlzX3B2XzMy Yml0X2RvbWFpbihkKSAgKChkKS0+YXJjaC5pc18zMmJpdF9wdikKPiAgI2RlZmluZSBpc19wdl8z MmJpdF92Y3B1KHYpICAgIChpc19wdl8zMmJpdF9kb21haW4oKHYpLT5kb21haW4pKQo+IC0jZGVm aW5lIGlzX3B2aF8zMmJpdF9kb21haW4oZCkgKGlzX3B2aF9kb21haW4oZCkgJiYgaGFzXzMyYml0 X3NoaW5mbyhkKSkKPiAgCj4gICNkZWZpbmUgaXNfaHZtX3B2X2V2dGNobl9kb21haW4oZCkgKGhh c19odm1fY29udGFpbmVyX2RvbWFpbihkKSAmJiBcCj4gICAgICAgICAgZC0+YXJjaC5odm1fZG9t YWluLmlycS5jYWxsYmFja192aWFfdHlwZSA9PSBIVk1JUlFfY2FsbGJhY2tfdmVjdG9yKQo+IGRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL2h2bS5oCj4gaW5kZXggODdiMjAzYS4uOGM4YzYzMyAxMDA2NDQKPiAtLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2h2bS5oCj4gQEAgLTkxLDkgKzkxLDYgQEAgc3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSB7 Cj4gICAgICAvKiBTdXBwb3J0IEhhcmR3YXJlLUFzc2lzdGVkIFBhZ2luZz8gKi8KPiAgICAgIGJv b2xfdCBoYXBfc3VwcG9ydGVkOwo+ICAKPiAtICAgIC8qIE5lY2Vzc2FyeSBoYXJkd2FyZSBzdXBw b3J0IGZvciBQVkggbW9kZT8gKi8KPiAtICAgIGJvb2xfdCBwdmhfc3VwcG9ydGVkOwo+IC0KPiAg ICAgIC8qIE5lY2Vzc2FyeSBoYXJkd2FyZSBzdXBwb3J0IGZvciBhbHRlcm5hdGUgcDJtJ3M/ICov Cj4gICAgICBib29sIGFsdHAybV9zdXBwb3J0ZWQ7Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9wdWJsaWMvZG9tY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKPiBpbmRl eCA4NWNiYjdjLi45ZTNjZTIxIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21j dGwuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAo+IEBAIC0zNyw3ICszNyw3 IEBACj4gICNpbmNsdWRlICJodm0vc2F2ZS5oIgo+ICAjaW5jbHVkZSAibWVtb3J5LmgiCj4gIAo+ IC0jZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04gMHgwMDAwMDAwYwo+ICsjZGVm aW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04gMHgwMDAwMDAwZAo+ICAKPiAgLyoKPiAg ICogTkIuIHhlbl9kb21jdGwuZG9tYWluIGlzIGFuIElOL09VVCBwYXJhbWV0ZXIgZm9yIHRoaXMg b3BlcmF0aW9uLgo+IEBAIC02MCwxMSArNjAsOCBAQCBzdHJ1Y3QgeGVuX2RvbWN0bF9jcmVhdGVk b21haW4gewo+ICAgLyogRGlzYWJsZSBvdXQtb2Ytc3luYyBzaGFkb3cgcGFnZSB0YWJsZXM/ICov Cj4gICNkZWZpbmUgX1hFTl9ET01DVExfQ0RGX29vc19vZmYgICAgICAgMwo+ICAjZGVmaW5lIFhF Tl9ET01DVExfQ0RGX29vc19vZmYgICAgICAgICgxVTw8X1hFTl9ET01DVExfQ0RGX29vc19vZmYp Cj4gLSAvKiBJcyB0aGlzIGEgUFZIIGd1ZXN0IChhcyBvcHBvc2VkIHRvIGFuIEhWTSBvciBQViBn dWVzdCk/ICovCj4gLSNkZWZpbmUgX1hFTl9ET01DVExfQ0RGX3B2aF9ndWVzdCAgICAgNAo+IC0j ZGVmaW5lIFhFTl9ET01DVExfQ0RGX3B2aF9ndWVzdCAgICAgICgxVTw8X1hFTl9ET01DVExfQ0RG X3B2aF9ndWVzdCkKPiAgIC8qIElzIHRoaXMgYSB4ZW5zdG9yZSBkb21haW4/ICovCj4gLSNkZWZp bmUgX1hFTl9ET01DVExfQ0RGX3hzX2RvbWFpbiAgICAgNQo+ICsjZGVmaW5lIF9YRU5fRE9NQ1RM X0NERl94c19kb21haW4gICAgIDQKPiAgI2RlZmluZSBYRU5fRE9NQ1RMX0NERl94c19kb21haW4g ICAgICAoMVU8PF9YRU5fRE9NQ1RMX0NERl94c19kb21haW4pCj4gICAgICB1aW50MzJfdCBmbGFn czsKPiAgICAgIHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcgY29uZmlnOwo+IEBAIC05Nywx NCArOTQsMTEgQEAgc3RydWN0IHhlbl9kb21jdGxfZ2V0ZG9tYWluaW5mbyB7Cj4gICAvKiBCZWlu ZyBkZWJ1Z2dlZC4gICovCj4gICNkZWZpbmUgX1hFTl9ET01JTkZfZGVidWdnZWQgIDYKPiAgI2Rl ZmluZSBYRU5fRE9NSU5GX2RlYnVnZ2VkICAgKDFVPDxfWEVOX0RPTUlORl9kZWJ1Z2dlZCkKPiAt LyogZG9tYWluIGlzIFBWSCAqLwo+IC0jZGVmaW5lIF9YRU5fRE9NSU5GX3B2aF9ndWVzdCA3Cj4g LSNkZWZpbmUgWEVOX0RPTUlORl9wdmhfZ3Vlc3QgICgxVTw8X1hFTl9ET01JTkZfcHZoX2d1ZXN0 KQo+ICAvKiBkb21haW4gaXMgYSB4ZW5zdG9yZSBkb21haW4gKi8KPiAtI2RlZmluZSBfWEVOX0RP TUlORl94c19kb21haW4gOAo+ICsjZGVmaW5lIF9YRU5fRE9NSU5GX3hzX2RvbWFpbiA3Cj4gICNk ZWZpbmUgWEVOX0RPTUlORl94c19kb21haW4gICgxVTw8X1hFTl9ET01JTkZfeHNfZG9tYWluKQo+ ICAvKiBkb21haW4gaGFzIGhhcmR3YXJlIGFzc2lzdGVkIHBhZ2luZyAqLwo+IC0jZGVmaW5lIF9Y RU5fRE9NSU5GX2hhcCAgICAgICA5Cj4gKyNkZWZpbmUgX1hFTl9ET01JTkZfaGFwICAgICAgIDgK PiAgI2RlZmluZSBYRU5fRE9NSU5GX2hhcCAgICAgICAgKDFVPDxfWEVOX0RPTUlORl9oYXApCj4g ICAvKiBYRU5fRE9NSU5GX3NodXRkb3duIGd1ZXN0LXN1cHBsaWVkIGNvZGUuICAqLwo+ICAjZGVm aW5lIFhFTl9ET01JTkZfc2h1dGRvd25tYXNrIDI1NQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4vc2NoZWQuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCj4gaW5kZXggMDkyOWMwYi4u Y2MxMTk5OSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAo+ICsrKyBiL3hl bi9pbmNsdWRlL3hlbi9zY2hlZC5oCj4gQEAgLTMxMiw3ICszMTIsNyBAQCBzdHJ1Y3QgZXZ0Y2hu X3BvcnRfb3BzOwo+ICAgKiB3aWxsIGJlIGZhbHNlLCBidXQgaGFzX2h2bV9jb250YWluZXJfKiBj aGVja3Mgd2lsbCBiZSB0cnVlLgo+ICAgKi8KPiAgZW51bSBndWVzdF90eXBlIHsKPiAtICAgIGd1 ZXN0X3R5cGVfcHYsIGd1ZXN0X3R5cGVfcHZoLCBndWVzdF90eXBlX2h2bQo+ICsgICAgZ3Vlc3Rf dHlwZV9wdiwgZ3Vlc3RfdHlwZV9odm0KPiAgfTsKPiAgCj4gIHN0cnVjdCBkb21haW4KPiBAQCAt NTU1LDExICs1NTUsOCBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fY3JlYXRlKGRvbWlkX3QgZG9t aWQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywKPiAgIC8qIERPTUNSRl9vb3Nfb2ZmOiBkb250 IHVzZSBvdXQtb2Ytc3luYyBvcHRpbWl6YXRpb24gZm9yIHNoYWRvdyBwYWdlIHRhYmxlcyAqLwo+ ICAjZGVmaW5lIF9ET01DUkZfb29zX29mZiAgICAgICAgIDQKPiAgI2RlZmluZSBET01DUkZfb29z X29mZiAgICAgICAgICAoMVU8PF9ET01DUkZfb29zX29mZikKPiAtIC8qIERPTUNSRl9wdmg6IENy ZWF0ZSBQViBkb21haW4gaW4gSFZNIGNvbnRhaW5lci4gKi8KPiAtI2RlZmluZSBfRE9NQ1JGX3B2 aCAgICAgICAgICAgICA1Cj4gLSNkZWZpbmUgRE9NQ1JGX3B2aCAgICAgICAgICAgICAgKDFVPDxf RE9NQ1JGX3B2aCkKPiAgIC8qIERPTUNSRl94c19kb21haW46IHhlbnN0b3JlIGRvbWFpbiAqLwo+ IC0jZGVmaW5lIF9ET01DUkZfeHNfZG9tYWluICAgICAgIDYKPiArI2RlZmluZSBfRE9NQ1JGX3hz X2RvbWFpbiAgICAgICA1Cj4gICNkZWZpbmUgRE9NQ1JGX3hzX2RvbWFpbiAgICAgICAgKDFVPDxf RE9NQ1JGX3hzX2RvbWFpbikKPiAgCj4gIC8qCj4gQEAgLTg3NSw4ICs4NzIsNiBAQCB2b2lkIHdh dGNoZG9nX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpOwo+ICAKPiAgI2RlZmluZSBp c19wdl9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlwZSA9PSBndWVzdF90eXBlX3B2KQo+ICAjZGVm aW5lIGlzX3B2X3ZjcHUodikgICAoaXNfcHZfZG9tYWluKCh2KS0+ZG9tYWluKSkKPiAtI2RlZmlu ZSBpc19wdmhfZG9tYWluKGQpICgoZCktPmd1ZXN0X3R5cGUgPT0gZ3Vlc3RfdHlwZV9wdmgpCj4g LSNkZWZpbmUgaXNfcHZoX3ZjcHUodikgICAoaXNfcHZoX2RvbWFpbigodiktPmRvbWFpbikpCj4g ICNkZWZpbmUgaXNfaHZtX2RvbWFpbihkKSAoKGQpLT5ndWVzdF90eXBlID09IGd1ZXN0X3R5cGVf aHZtKQo+ICAjZGVmaW5lIGlzX2h2bV92Y3B1KHYpICAgKGlzX2h2bV9kb21haW4odi0+ZG9tYWlu KSkKPiAgI2RlZmluZSBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlw ZSAhPSBndWVzdF90eXBlX3B2KQo+IC0tIAo+IDIuMTAuMSAoQXBwbGUgR2l0LTc4KQo+IAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==