From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 10/14] x86/mm: Switch {get, put}_gfn() infrastructure to using gfn_t Date: Wed, 21 Nov 2018 16:12:58 +0000 Message-ID: <7f2033d7d0284c918b61e2ca6bd85175@AMSPEX02CL03.citrite.net> References: <1542806482-24030-1-git-send-email-andrew.cooper3@citrix.com> <1542806482-24030-11-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1542806482-24030-11-git-send-email-andrew.cooper3@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Tamas K Lengyel , Wei Liu , Jun Nakajima , Razvan Cojocaru , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Jan Beulich , Boris Ostrovsky , Brian Woods , Suravee Suthikulpanit , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgQ29vcGVyIFttYWls dG86YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbV0NCj4gU2VudDogMjEgTm92ZW1iZXIgMjAxOCAx MzoyMQ0KPiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4NCj4gQ2M6IEFu ZHJldyBDb29wZXIgPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBKYW4gQmV1bGljaA0KPiA8 SkJldWxpY2hAc3VzZS5jb20+OyBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgUm9nZXIg UGF1IE1vbm5lDQo+IDxyb2dlci5wYXVAY2l0cml4LmNvbT47IFJhenZhbiBDb2pvY2FydSA8cmNv am9jYXJ1QGJpdGRlZmVuZGVyLmNvbT47IFRhbWFzDQo+IEsgTGVuZ3llbCA8dGFtYXNAdGtsZW5n eWVsLmNvbT47IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47DQo+IFRp bSAoWGVuLm9yZykgPHRpbUB4ZW4ub3JnPjsgUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0 cml4LmNvbT47IEp1bg0KPiBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT47IEtldmlu IFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPjsNCj4gQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5v c3Ryb3Zza3lAb3JhY2xlLmNvbT47IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdA0KPiA8c3VyYXZlZS5z dXRoaWt1bHBhbml0QGFtZC5jb20+OyBCcmlhbiBXb29kcyA8YnJpYW4ud29vZHNAYW1kLmNvbT4N Cj4gU3ViamVjdDogW1BBVENIIDEwLzE0XSB4ODYvbW06IFN3aXRjaCB7Z2V0LHB1dH1fZ2ZuKCkg aW5mcmFzdHJ1Y3R1cmUgdG8NCj4gdXNpbmcgZ2ZuX3QNCj4gDQo+IFNlZW1pbmdseSwgYSBtYWpv cml0eSBvZiB1c2VycyBlaXRoZXIgb3ZlcnJpZGUgdGhlIGhlbHBlcnMgYW55d2F5LCBvciBoYXZl DQo+IGFuDQo+IGdmbl90IGluIHRoZWlyIGhhbmRzLg0KPiANCj4gVXBkYXRlIHRoZSBBUEksIGFu ZCBhZGp1c3QgYWxsIHVzZXJzIHRvIG1hdGNoLg0KPiANCj4gRG9pbmcgdGhpcyBoaWdobGlnaHRl ZCBhIGdhcGluZyBhbHRwMm0gc2VjdXJpdHkgaG9sZSBpbg0KPiB2bXhfdmNwdV91cGRhdGVfdm1m dW5jX3ZlKCksIHdoaWNoIHdpbGwgbmVlZCBhZGRyZXNzaW5nIG5vdyB3ZSBjYW4gZGlzY3Vzcw0K PiB0aGUNCj4gcHJvYmxlbSBhbmQgb3B0aW9ucyBwdWJsaWNseS4NCj4gDQo+IFNpZ25lZC1vZmYt Ynk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQoNClJldmlld2Vk LWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiBD QzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPg0KPiBDQzogV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT4NCj4gQ0M6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPg0KPiBDQzogUmF6dmFuIENvam9jYXJ1IDxyY29qb2NhcnVAYml0ZGVmZW5kZXIuY29tPg0K PiBDQzogVGFtYXMgSyBMZW5neWVsIDx0YW1hc0B0a2xlbmd5ZWwuY29tPg0KPiBDQzogR2Vvcmdl IER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPg0KPiBDQzogVGltIERlZWdhbiA8 dGltQHhlbi5vcmc+DQo+IENDOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29t Pg0KPiBDQzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPg0KPiBDQzogS2V2 aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+DQo+IENDOiBCb3JpcyBPc3Ryb3Zza3kgPGJv cmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPg0KPiBDQzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxz dXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4NCj4gQ0M6IEJyaWFuIFdvb2RzIDxicmlhbi53 b29kc0BhbWQuY29tPg0KPiAtLS0NCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9u LmMgICAgICAgIHwgIDIgKy0NCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jICAgICAg ICAgICAgIHwgMTQgKysrLS0tLQ0KPiAgeGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jICAg ICAgICAgICAgfCAgNCArLQ0KPiAgeGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5oICAgICAg ICAgICAgfCAgMiArLQ0KPiAgeGVuL2FyY2gveDg2L2RlYnVnLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgNiArLS0NCj4gIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAgICAgICAgICAg IHwgMTkgKysrKy0tLS0tDQo+ICB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgICAgICAgICAg ICAgICB8ICA4ICsrLS0NCj4gIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAgICAgICAgICAg ICAgIHwgMTIgKysrLS0tDQo+ICB4ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyAgICAgICAgICAg ICAgICB8IDE2ICsrKystLS0tDQo+ICB4ZW4vYXJjaC94ODYvaHZtL2dyYW50X3RhYmxlLmMgICAg ICAgICAgICB8ICA0ICstDQo+ICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICAgICAg ICAgICB8IDI1ICsrKysrKy0tLS0tLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgICAgICAg ICAgICAgICAgICAgfCAgMiArLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgICAgICAg ICAgICAgICAgfCAgMiArLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICAgICAg ICAgICAgfCAgNyArKy0tDQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAg ICAgICB8IDEwICsrLS0tDQo+ICB4ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jICAgICAgICAgICAg ICAgICB8ICAyICstDQo+ICB4ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9oYXAuYyAgICAgICAg ICB8ICA2ICstLQ0KPiAgeGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYyAgICAgICAgICAgICAg fCAgNSArLS0NCj4gIHhlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jICAgICAgICAgICAgIHwg MjQgKysrKystLS0tLS0NCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgICAg ICAgIHwgNDUgKysrKysrKysrKy0tLS0tLS0tLS0NCj4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMgICAgICAgICAgIHwgIDQgKy0NCj4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVs dGkuYyAgICAgICAgICAgIHwgNjggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0NCj4gLS0tLS0N Cj4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvdHlwZXMuaCAgICAgICAgICAgIHwgIDQgLS0NCj4g IHhlbi9jb21tb24vZ3JhbnRfdGFibGUuYyAgICAgICAgICAgICAgICAgIHwgMTAgKystLS0NCj4g IHhlbi9jb21tb24vbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKystLS0t LS0NCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9ndWVzdC5jIHwgIDggLS0t LQ0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oICAgICAgICAgICAgfCAgNCAtLQ0K PiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCAgICAgICAgICAgICAgICAgfCAzMCArKysrKysr LS0tLS0tLQ0KPiAgMjggZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDE5NSBkZWxl dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2Fj dGlvbi5jDQo+IGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYw0KPiBpbmRleCBl NDIyNjc0Li5jOGUwY2YyIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9t Y2FjdGlvbi5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMNCj4g QEAgLTg5LDcgKzg5LDcgQEAgbWNfbWVtZXJyX2RoYW5kbGVyKHN0cnVjdCBtY2FfYmluZm8gKmJp bmZvLA0KPiAgICAgICAgICAgICAgICAgIEFTU0VSVChkKTsNCj4gICAgICAgICAgICAgICAgICBn Zm4gPSBnZXRfZ3Bmbl9mcm9tX21mbigoYmFuay0+bWNfYWRkcikgPj4gUEFHRV9TSElGVCk7DQo+ IA0KPiAtICAgICAgICAgICAgICAgIGlmICggdW5tbWFwX2Jyb2tlbl9wYWdlKGQsIF9tZm4obWZu KSwgZ2ZuKSApDQo+ICsgICAgICAgICAgICAgICAgaWYgKCB1bm1tYXBfYnJva2VuX3BhZ2UoZCwg X21mbihtZm4pLCBfZ2ZuKGdmbikpICkNCj4gICAgICAgICAgICAgICAgICB7DQo+ICAgICAgICAg ICAgICAgICAgICAgIHByaW50aygiVW5tYXAgYnJva2VuIG1lbW9yeSAlbHggZm9yIERPTSVkIGZh aWxlZFxuIiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbiwgZC0+ZG9tYWluX2lk KTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jIGIveGVuL2Fy Y2gveDg2L2NwdS9tY2hlY2svbWNlLmMNCj4gaW5kZXggMzBjZGIwNi4uYzk2YzA1MyAxMDA2NDQN Cj4gLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMNCj4gKysrIGIveGVuL2FyY2gv eDg2L2NwdS9tY2hlY2svbWNlLmMNCj4gQEAgLTE0NjksOSArMTQ2OSw2IEBAIGxvbmcgZG9fbWNh KFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX21jX3QpDQo+IHVfeGVuX21jKQ0KPiAgICAgICAg ICAgICAgc3RydWN0IGRvbWFpbiAqZDsNCj4gICAgICAgICAgICAgIHN0cnVjdCBtY2luZm9fbXNy ICptc3I7DQo+ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsNCj4gLSAgICAgICAgICAgIHBh ZGRyX3QgZ2FkZHI7DQo+IC0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwgbWZuOw0KPiAt ICAgICAgICAgICAgcDJtX3R5cGVfdCB0Ow0KPiANCj4gICAgICAgICAgICAgIGRvbWlkID0gKG1j X21zcmluamVjdC0+bWNpbmpfZG9taWQgPT0gRE9NSURfU0VMRikgPw0KPiAgICAgICAgICAgICAg ICAgICAgICBjdXJyZW50LT5kb21haW4tPmRvbWFpbl9pZCA6IG1jX21zcmluamVjdC0NCj4gPm1j aW5qX2RvbWlkOw0KPiBAQCAtMTQ4OSwxMSArMTQ4NiwxMiBAQCBsb25nIGRvX21jYShYRU5fR1VF U1RfSEFORExFX1BBUkFNKHhlbl9tY190KQ0KPiB1X3hlbl9tYykNCj4gICAgICAgICAgICAgICAg ICAgIGkgPCBtY19tc3JpbmplY3QtPm1jaW5qX2NvdW50Ow0KPiAgICAgICAgICAgICAgICAgICAg aSsrLCBtc3IrKyApDQo+ICAgICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgZ2FkZHIg PSBtc3ItPnZhbHVlOw0KPiAtICAgICAgICAgICAgICAgIGdmbiA9IFBGTl9ET1dOKGdhZGRyKTsN Cj4gLSAgICAgICAgICAgICAgICBtZm4gPSBtZm5feChnZXRfZ2ZuKGQsIGdmbiwgJnQpKTsNCj4g KyAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHQ7DQo+ICsgICAgICAgICAgICAgICAgcGFkZHJf dCBnYWRkciA9IG1zci0+dmFsdWU7DQo+ICsgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuID0gX2dm bihQRk5fRE9XTihnYWRkcikpOw0KPiArICAgICAgICAgICAgICAgIG1mbl90IG1mbiA9IGdldF9n Zm4oZCwgZ2ZuLCAmdCk7DQo+IA0KPiAtICAgICAgICAgICAgICAgIGlmICggbWZuID09IG1mbl94 KElOVkFMSURfTUZOKSApDQo+ICsgICAgICAgICAgICAgICAgaWYgKCBtZm5fZXEobWZuLCBJTlZB TElEX01GTikgKQ0KPiAgICAgICAgICAgICAgICAgIHsNCj4gICAgICAgICAgICAgICAgICAgICAg cHV0X2dmbihkLCBnZm4pOw0KPiAgICAgICAgICAgICAgICAgICAgICBwdXRfZG9tYWluKGQpOw0K PiBAQCAtMTUwMSw3ICsxNDk5LDcgQEAgbG9uZyBkb19tY2EoWEVOX0dVRVNUX0hBTkRMRV9QQVJB TSh4ZW5fbWNfdCkNCj4gdV94ZW5fbWMpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLUVJTlZBTCwgZ2ZuLCBkb21pZCk7DQo+ICAgICAgICAgICAgICAgICAgfQ0KPiAN Cj4gLSAgICAgICAgICAgICAgICBtc3ItPnZhbHVlID0gcGZuX3RvX3BhZGRyKG1mbikgfCAoZ2Fk ZHIgJiAoUEFHRV9TSVpFIC0NCj4gMSkpOw0KPiArICAgICAgICAgICAgICAgIG1zci0+dmFsdWUg PSBtZm5fdG9fbWFkZHIobWZuKSB8IChnYWRkciAmIChQQUdFX1NJWkUgLQ0KPiAxKSk7DQo+IA0K PiAgICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gICAgICAgICAgICAgIH0NCj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYw0KPiBiL3hlbi9hcmNo L3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYw0KPiBpbmRleCBmMTU4MzVlLi5lMjU3ZTk0IDEwMDY0NA0K PiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMNCj4gKysrIGIveGVuL2FyY2gv eDg2L2NwdS9tY2hlY2svdm1jZS5jDQo+IEBAIC01MTIsNyArNTEyLDcgQEAgaW50IGZpbGxfdm1z cl9kYXRhKHN0cnVjdCBtY2luZm9fYmFuayAqbWNfYmFuaywgc3RydWN0DQo+IGRvbWFpbiAqZCwN Cj4gICAqIFhYWCBmb2xsb3dpbmcgc2l0dWF0aW9uIG1pc3NlZDoNCj4gICAqIFBvRCwgRm9yZWln biBtYXBwZWQsIEdyYW50ZWQsIFNoYXJlZA0KPiAgICovDQo+IC1pbnQgdW5tbWFwX2Jyb2tlbl9w YWdlKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbiwgdW5zaWduZWQgbG9uZyBnZm4pDQo+ICtp bnQgdW5tbWFwX2Jyb2tlbl9wYWdlKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbiwgZ2ZuX3Qg Z2ZuKQ0KPiAgew0KPiAgICAgIG1mbl90IHJfbWZuOw0KPiAgICAgIHAybV90eXBlX3QgcHQ7DQo+ IEBAIC01MzMsNyArNTMzLDcgQEAgaW50IHVubW1hcF9icm9rZW5fcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCBtZm5fdCBtZm4sDQo+IHVuc2lnbmVkIGxvbmcgZ2ZuKQ0KPiAgICAgIGlmICggcDJtX3Rv X21hc2socHQpICYgUDJNX1VOTUFQX1RZUEVTKQ0KPiAgICAgIHsNCj4gICAgICAgICAgQVNTRVJU KG1mbl9lcShyX21mbiwgbWZuKSk7DQo+IC0gICAgICAgIHJjID0gcDJtX2NoYW5nZV90eXBlX29u ZShkLCBnZm4sIHB0LCBwMm1fcmFtX2Jyb2tlbik7DQo+ICsgICAgICAgIHJjID0gcDJtX2NoYW5n ZV90eXBlX29uZShkLCBnZm5feChnZm4pLCBwdCwgcDJtX3JhbV9icm9rZW4pOw0KPiAgICAgIH0N Cj4gICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2NwdS9tY2hlY2svdm1jZS5oDQo+IGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5oDQo+ IGluZGV4IDI3OTdlMDAuLmEzN2YzYmUgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUv bWNoZWNrL3ZtY2UuaA0KPiArKysgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmgNCj4g QEAgLTksNyArOSw3IEBAIGludCB2bWNlX2luaXQoc3RydWN0IGNwdWluZm9feDg2ICpjKTsNCj4g ICAgICAgICAgJiYgaGFyZHdhcmVfZG9tYWluLT52Y3B1WzBdIFwNCj4gICAgICAgICAgJiYgZ3Vl c3RfZW5hYmxlZF9ldmVudChoYXJkd2FyZV9kb21haW4tPnZjcHVbMF0sIFZJUlFfTUNBKSkNCj4g DQo+IC1pbnQgdW5tbWFwX2Jyb2tlbl9wYWdlKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbiwg dW5zaWduZWQgbG9uZyBnZm4pOw0KPiAraW50IHVubW1hcF9icm9rZW5fcGFnZShzdHJ1Y3QgZG9t YWluICpkLCBtZm5fdCBtZm4sIGdmbl90IGdmbik7DQo+IA0KPiAgaW50IHZtY2VfaW50ZWxfcmRt c3IoY29uc3Qgc3RydWN0IHZjcHUgKiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCAqdmFsKTsNCj4g IGludCB2bWNlX2ludGVsX3dybXNyKHN0cnVjdCB2Y3B1ICosIHVpbnQzMl90IG1zciwgdWludDY0 X3QgdmFsKTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jIGIveGVuL2FyY2gv eDg2L2RlYnVnLmMNCj4gaW5kZXggYTUwMGRmMC4uN2MyZGM4YyAxMDA2NDQNCj4gLS0tIGEveGVu L2FyY2gveDg2L2RlYnVnLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2RlYnVnLmMNCj4gQEAgLTU4 LDcgKzU4LDcgQEAgZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAq ZHAsIGludA0KPiB0b2FkZHIsIGdmbl90ICpnZm4pDQo+ICAgICAgICAgIHJldHVybiBJTlZBTElE X01GTjsNCj4gICAgICB9DQo+IA0KPiAtICAgIG1mbiA9IGdldF9nZm4oZHAsIGdmbl94KCpnZm4p LCAmZ2ZudHlwZSk7DQo+ICsgICAgbWZuID0gZ2V0X2dmbihkcCwgKmdmbiwgJmdmbnR5cGUpOw0K PiAgICAgIGlmICggcDJtX2lzX3JlYWRvbmx5KGdmbnR5cGUpICYmIHRvYWRkciApDQo+ICAgICAg ew0KPiAgICAgICAgICBEQkdQMigia2RiOnAybV9pc19yZWFkb25seTogZ2ZudHlwZToleFxuIiwg Z2ZudHlwZSk7DQo+IEBAIC03MCw3ICs3MCw3IEBAIGRiZ19odm1fdmEybWZuKGRiZ3ZhX3QgdmFk ZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQNCj4gdG9hZGRyLCBnZm5fdCAqZ2ZuKQ0KPiANCj4g ICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApDQo+ICAgICAgew0KPiAtICAgICAg ICBwdXRfZ2ZuKGRwLCBnZm5feCgqZ2ZuKSk7DQo+ICsgICAgICAgIHB1dF9nZm4oZHAsICpnZm4p Ow0KPiAgICAgICAgICAqZ2ZuID0gSU5WQUxJRF9HRk47DQo+ICAgICAgfQ0KPiANCj4gQEAgLTE4 OSw3ICsxODksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRiZ19yd19ndWVzdF9tZW0oc3RydWN0 IGRvbWFpbg0KPiAqZHAsIHZvaWQgKiBfX3VzZXIgZ2FkZHIsDQo+IA0KPiAgICAgICAgICB1bm1h cF9kb21haW5fcGFnZSh2YSk7DQo+ICAgICAgICAgIGlmICggIWdmbl9lcShnZm4sIElOVkFMSURf R0ZOKSApDQo+IC0gICAgICAgICAgICBwdXRfZ2ZuKGRwLCBnZm5feChnZm4pKTsNCj4gKyAgICAg ICAgICAgIHB1dF9nZm4oZHAsIGdmbik7DQo+IA0KPiAgICAgICAgICBhZGRyICs9IHBhZ2VjbnQ7 DQo+ICAgICAgICAgIGJ1ZiArPSBwYWdlY250Ow0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jDQo+IGluZGV4IGI0ZDU5NDguLjMyN2M5 NjEgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYw0KPiArKysgYi94ZW4vYXJj aC94ODYvZG9tYWluLmMNCj4gQEAgLTY3Nyw3ICs2NzcsNyBAQCBpbnQgYXJjaF9kb21haW5fc29m dF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgIGludCByZXQgPSAwOw0KPiAgICAgIHN0 cnVjdCBkb21haW4gKm93bmVyOw0KPiAgICAgIG1mbl90IG1mbjsNCj4gLSAgICB1bnNpZ25lZCBs b25nIGdmbjsNCj4gKyAgICBnZm5fdCBnZm47DQo+ICAgICAgcDJtX3R5cGVfdCBwMm10Ow0KPiAg ICAgIHVuc2lnbmVkIGludCBpOw0KPiANCj4gQEAgLTcxMSwxOSArNzExLDE5IEBAIGludCBhcmNo X2RvbWFpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpDQo+ICAgICAgQVNTRVJUKCBvd25l ciA9PSBkICk7DQo+IA0KPiAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOw0KPiAtICAgIGdm biA9IG1mbl90b19nbWZuKGQsIG1mbl94KG1mbikpOw0KPiArICAgIGdmbiA9IF9nZm4obWZuX3Rv X2dtZm4oZCwgbWZuX3gobWZuKSkpOw0KPiANCj4gICAgICAvKg0KPiAgICAgICAqIGdmbiA9PSBJ TlZBTElEX0dGTiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2hhcmVkX2luZm8gcGFnZSB3YXMgbmV2ZXIN Cj4gbWFwcGVkDQo+ICAgICAgICogdG8gdGhlIGRvbWFpbidzIGFkZHJlc3Mgc3BhY2UgYW5kIHRo ZXJlIGlzIG5vdGhpbmcgdG8gcmVwbGFjZS4NCj4gICAgICAgKi8NCj4gLSAgICBpZiAoIGdmbiA9 PSBnZm5feChJTlZBTElEX0dGTikgKQ0KPiArICAgIGlmICggZ2ZuX2VxKGdmbiwgSU5WQUxJRF9H Rk4pICkNCj4gICAgICAgICAgZ290byBleGl0X3B1dF9wYWdlOw0KPiANCj4gICAgICBpZiAoICFt Zm5fZXEoZ2V0X2dmbl9xdWVyeShkLCBnZm4sICZwMm10KSwgbWZuKSApDQo+ICAgICAgew0KPiAg ICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWlsZWQgdG8gZ2V0IERvbSVkJ3Mgc2hhcmVk X2luZm8gR0ZODQo+ICglbHgpXG4iLA0KPiAtICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBn Zm4pOw0KPiArICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBnZm5feChnZm4pKTsNCj4gICAg ICAgICAgcmV0ID0gLUVJTlZBTDsNCj4gICAgICAgICAgZ290byBleGl0X3B1dF9nZm47DQo+ICAg ICAgfQ0KPiBAQCAtNzMyLDI2ICs3MzIsMjUgQEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQo c3RydWN0IGRvbWFpbiAqZCkNCj4gICAgICBpZiAoICFuZXdfcGFnZSApDQo+ICAgICAgew0KPiAg ICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWlsZWQgdG8gYWxsb2MgYSBwYWdlIHRvIHJl cGxhY2UiDQo+IC0gICAgICAgICAgICAgICAiIERvbSVkJ3Mgc2hhcmVkX2luZm8gZnJhbWUgJWx4 XG4iLCBkLT5kb21haW5faWQsIGdmbik7DQo+ICsgICAgICAgICAgICAgICAiIERvbSVkJ3Mgc2hh cmVkX2luZm8gZnJhbWUgJWx4XG4iLCBkLT5kb21haW5faWQsDQo+IGdmbl94KGdmbikpOw0KPiAg ICAgICAgICByZXQgPSAtRU5PTUVNOw0KPiAgICAgICAgICBnb3RvIGV4aXRfcHV0X2dmbjsNCj4g ICAgICB9DQo+IA0KPiAtICAgIHJldCA9IGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dm bihnZm4pLCBtZm4sIFBBR0VfT1JERVJfNEspOw0KPiArICAgIHJldCA9IGd1ZXN0X3BoeXNtYXBf cmVtb3ZlX3BhZ2UoZCwgZ2ZuLCBtZm4sIFBBR0VfT1JERVJfNEspOw0KPiAgICAgIGlmICggcmV0 ICkNCj4gICAgICB7DQo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIkZhaWxlZCB0byBy ZW1vdmUgRG9tJWQncyBzaGFyZWRfaW5mbyBmcmFtZQ0KPiAlbHhcbiIsDQo+IC0gICAgICAgICAg ICAgICBkLT5kb21haW5faWQsIGdmbik7DQo+ICsgICAgICAgICAgICAgICBkLT5kb21haW5faWQs IGdmbl94KGdmbikpOw0KPiAgICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZShuZXdfcGFnZSk7DQo+ ICAgICAgICAgIGdvdG8gZXhpdF9wdXRfZ2ZuOw0KPiAgICAgIH0NCj4gDQo+IC0gICAgcmV0ID0g Z3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdmbiksIHBhZ2VfdG9fbWZuKG5ld19wYWdl KSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEspOw0K PiArICAgIHJldCA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgZ2ZuLCBwYWdlX3RvX21mbihu ZXdfcGFnZSksDQo+IFBBR0VfT1JERVJfNEspOw0KPiAgICAgIGlmICggcmV0ICkNCj4gICAgICB7 DQo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIkZhaWxlZCB0byBhZGQgYSBwYWdlIHRv IHJlcGxhY2UiDQo+IC0gICAgICAgICAgICAgICAiIERvbSVkJ3Mgc2hhcmVkX2luZm8gZnJhbWUg JWx4XG4iLCBkLT5kb21haW5faWQsIGdmbik7DQo+ICsgICAgICAgICAgICAgICAiIERvbSVkJ3Mg c2hhcmVkX2luZm8gZnJhbWUgJWx4XG4iLCBkLT5kb21haW5faWQsDQo+IGdmbl94KGdmbikpOw0K PiAgICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZShuZXdfcGFnZSk7DQo+ICAgICAgfQ0KPiAgIGV4 aXRfcHV0X2dmbjoNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9h cmNoL3g4Ni9kb21jdGwuYw0KPiBpbmRleCBhYThhZDE5Li42OTRiNGQ1IDEwMDY0NA0KPiAtLS0g YS94ZW4vYXJjaC94ODYvZG9tY3RsLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jDQo+ IEBAIC0xMjUzLDE1ICsxMjUzLDE1IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoDQo+ICAgICAgY2Fz ZSBYRU5fRE9NQ1RMX3NldF9icm9rZW5fcGFnZV9wMm06DQo+ICAgICAgew0KPiAgICAgICAgICBw Mm1fdHlwZV90IHB0Ow0KPiAtICAgICAgICB1bnNpZ25lZCBsb25nIHBmbiA9IGRvbWN0bC0+dS5z ZXRfYnJva2VuX3BhZ2VfcDJtLnBmbjsNCj4gLSAgICAgICAgbWZuX3QgbWZuID0gZ2V0X2dmbl9x dWVyeShkLCBwZm4sICZwdCk7DQo+ICsgICAgICAgIGdmbl90IGdmbiA9IF9nZm4oZG9tY3RsLT51 LnNldF9icm9rZW5fcGFnZV9wMm0ucGZuKTsNCj4gKyAgICAgICAgbWZuX3QgbWZuID0gZ2V0X2dm bl9xdWVyeShkLCBnZm4sICZwdCk7DQo+IA0KPiAgICAgICAgICBpZiAoIHVubGlrZWx5KCFtZm5f dmFsaWQobWZuKSkgfHwgdW5saWtlbHkoIXAybV9pc19yYW0ocHQpKSApDQo+ICAgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOw0KPiAgICAgICAgICBlbHNlDQo+IC0gICAgICAgICAgICByZXQgPSBw Mm1fY2hhbmdlX3R5cGVfb25lKGQsIHBmbiwgcHQsIHAybV9yYW1fYnJva2VuKTsNCj4gKyAgICAg ICAgICAgIHJldCA9IHAybV9jaGFuZ2VfdHlwZV9vbmUoZCwgZ2ZuX3goZ2ZuKSwgcHQsIHAybV9y YW1fYnJva2VuKTsNCj4gDQo+IC0gICAgICAgIHB1dF9nZm4oZCwgcGZuKTsNCj4gKyAgICAgICAg cHV0X2dmbihkLCBnZm4pOw0KPiAgICAgICAgICBicmVhazsNCj4gICAgICB9DQo+IA0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9kbS5jIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jDQo+ IGluZGV4IGQ2ZDBlOGIuLjk5MzhmNGIgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v ZG0uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2RtLmMNCj4gQEAgLTI2OSwxNCArMjY5LDE0 IEBAIHN0YXRpYyBpbnQgc2V0X21lbV90eXBlKHN0cnVjdCBkb21haW4gKmQsDQo+IA0KPiAgICAg IHdoaWxlICggaXRlciA8IGRhdGEtPm5yICkNCj4gICAgICB7DQo+IC0gICAgICAgIHVuc2lnbmVk IGxvbmcgcGZuID0gZGF0YS0+Zmlyc3RfcGZuICsgaXRlcjsNCj4gKyAgICAgICAgZ2ZuX3QgZ2Zu ID0gX2dmbihkYXRhLT5maXJzdF9wZm4gKyBpdGVyKTsNCj4gICAgICAgICAgcDJtX3R5cGVfdCB0 Ow0KPiANCj4gLSAgICAgICAgZ2V0X2dmbl91bnNoYXJlKGQsIHBmbiwgJnQpOw0KPiArICAgICAg ICBnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ2ZuLCAmdCk7DQo+ICAgICAgICAgIGlmICggcDJtX2lzX3Bh Z2luZyh0KSApDQo+ICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgIHB1dF9nZm4oZCwgcGZuKTsN Cj4gLSAgICAgICAgICAgIHAybV9tZW1fcGFnaW5nX3BvcHVsYXRlKGQsIHBmbik7DQo+ICsgICAg ICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgICAgICAgICBwMm1fbWVtX3BhZ2luZ19w b3B1bGF0ZShkLCBnZm5feChnZm4pKTsNCj4gICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOw0K PiAgICAgICAgICB9DQo+IA0KPiBAQCAtMjg1LDkgKzI4NSw5IEBAIHN0YXRpYyBpbnQgc2V0X21l bV90eXBlKHN0cnVjdCBkb21haW4gKmQsDQo+ICAgICAgICAgIGVsc2UgaWYgKCAhYWxsb3dfcDJt X3R5cGVfY2hhbmdlKHQsIG1lbXR5cGVbbWVtX3R5cGVdKSApDQo+ICAgICAgICAgICAgICByYyA9 IC1FSU5WQUw7DQo+ICAgICAgICAgIGVsc2UNCj4gLSAgICAgICAgICAgIHJjID0gcDJtX2NoYW5n ZV90eXBlX29uZShkLCBwZm4sIHQsIG1lbXR5cGVbbWVtX3R5cGVdKTsNCj4gKyAgICAgICAgICAg IHJjID0gcDJtX2NoYW5nZV90eXBlX29uZShkLCBnZm5feChnZm4pLCB0LA0KPiBtZW10eXBlW21l bV90eXBlXSk7DQo+IA0KPiAtICAgICAgICBwdXRfZ2ZuKGQsIHBmbik7DQo+ICsgICAgICAgIHB1 dF9nZm4oZCwgZ2ZuKTsNCj4gDQo+ICAgICAgICAgIGlmICggcmMgKQ0KPiAgICAgICAgICAgICAg YnJlYWs7DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jDQo+IGluZGV4IDJkMDJlZjEuLjEzMzViMmMgMTAwNjQ0DQo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vZW11bGF0ZS5jDQo+IEBAIC0yNTUsMTMgKzI1NSwxMyBAQCBzdGF0aWMgaW50IGh2bWVtdWxf ZG9faW8oDQo+ICAgICAgICAgICAqIHNvIHRoZSBkZXZpY2UgbW9kZWwgc2lkZSBuZWVkcyB0byBj aGVjayB0aGUgaW5jb21pbmcgaW9yZXENCj4gZXZlbnQuDQo+ICAgICAgICAgICAqLw0KPiAgICAg ICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyA9IE5VTEw7DQo+IC0gICAgICAgIHAybV90 eXBlX3QgcDJtdCA9IHAybV9pbnZhbGlkOw0KPiANCj4gICAgICAgICAgaWYgKCBpc19tbWlvICkN Cj4gICAgICAgICAgew0KPiAtICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJf dG9fcGZuKGFkZHIpOw0KPiArICAgICAgICAgICAgcDJtX3R5cGVfdCBwMm10ID0gcDJtX2ludmFs aWQ7DQo+ICsgICAgICAgICAgICBnZm5fdCBnZm4gPSBnYWRkcl90b19nZm4oYWRkcik7DQo+IA0K PiAtICAgICAgICAgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZCwgZ21mbiwgJnAybXQp Ow0KPiArICAgICAgICAgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZCwgZ2ZuLCAmcDJt dCk7DQo+IA0KPiAgICAgICAgICAgICAgaWYgKCBwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQ0K PiAgICAgICAgICAgICAgew0KPiBAQCAtMTU5MCw3ICsxNTkwLDcgQEAgc3RhdGljIGludCBodm1l bXVsX3JlcF9pbnMoDQo+ICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQ0KPiAgICAgICAg ICByZXR1cm4gcmM7DQo+IA0KPiAtICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1 cnJlbnQtPmRvbWFpbiwgZ3BhID4+IFBBR0VfU0hJRlQsDQo+ICZwMm10KTsNCj4gKyAgICBnZXRf Z2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJlbnQtPmRvbWFpbiwgZ2FkZHJfdG9fZ2ZuKGdwYSksICZw Mm10KTsNCj4gICAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZGlyZWN0IHx8IHAybXQgPT0gcDJt X21taW9fZG0gKQ0KPiAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7DQo+IA0K PiBAQCAtMTY3MSw3ICsxNjcxLDcgQEAgc3RhdGljIGludCBodm1lbXVsX3JlcF9vdXRzKA0KPiAg ICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkNCj4gICAgICAgICAgcmV0dXJuIHJjOw0KPiAN Cj4gLSAgICAodm9pZCkgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZW50LT5kb21haW4sIGdw YSA+PiBQQUdFX1NISUZULA0KPiAmcDJtdCk7DQo+ICsgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tl ZChjdXJyZW50LT5kb21haW4sIGdhZGRyX3RvX2dmbihncGEpLCAmcDJtdCk7DQo+ICAgICAgaWYg KCBwMm10ID09IHAybV9tbWlvX2RpcmVjdCB8fCBwMm10ID09IHAybV9tbWlvX2RtICkNCj4gICAg ICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOw0KPiANCj4gQEAgLTE3NTAsOCArMTc1 MCw4IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9yZXBfbW92cygNCj4gICAgICB9DQo+IA0KPiAgICAg IC8qIENoZWNrIGZvciBNTUlPIG9wcyAqLw0KPiAtICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3Vu bG9ja2VkKGN1cnJlbnQtPmRvbWFpbiwgc2dwYSA+PiBQQUdFX1NISUZULA0KPiAmc3AybXQpOw0K PiAtICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJlbnQtPmRvbWFpbiwgZGdw YSA+PiBQQUdFX1NISUZULA0KPiAmZHAybXQpOw0KPiArICAgIGdldF9nZm5fcXVlcnlfdW5sb2Nr ZWQoY3VycmVudC0+ZG9tYWluLCBnYWRkcl90b19nZm4oc2dwYSksICZzcDJtdCk7DQo+ICsgICAg Z2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZW50LT5kb21haW4sIGdhZGRyX3RvX2dmbihkZ3Bh KSwgJmRwMm10KTsNCj4gDQo+ICAgICAgaWYgKCBzcDJtdCA9PSBwMm1fbW1pb19kaXJlY3QgfHwg ZHAybXQgPT0gcDJtX21taW9fZGlyZWN0IHx8DQo+ICAgICAgICAgICAoc3AybXQgPT0gcDJtX21t aW9fZG0gJiYgZHAybXQgPT0gcDJtX21taW9fZG0pICkNCj4gQEAgLTE4NzgsNyArMTg3OCw3IEBA IHN0YXRpYyBpbnQgaHZtZW11bF9yZXBfc3RvcygNCj4gICAgICB9DQo+IA0KPiAgICAgIC8qIENo ZWNrIGZvciBNTUlPIG9wICovDQo+IC0gICAgKHZvaWQpZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChj dXJyZW50LT5kb21haW4sIGdwYSA+PiBQQUdFX1NISUZULA0KPiAmcDJtdCk7DQo+ICsgICAgZ2V0 X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZW50LT5kb21haW4sIGdhZGRyX3RvX2dmbihncGEpLCAm cDJtdCk7DQo+IA0KPiAgICAgIHN3aXRjaCAoIHAybXQgKQ0KPiAgICAgIHsNCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vZ3JhbnRfdGFibGUuYw0KPiBiL3hlbi9hcmNoL3g4Ni9odm0v Z3JhbnRfdGFibGUuYw0KPiBpbmRleCBlY2Q3ZDA3Li4wNGEzMTA2IDEwMDY0NA0KPiAtLS0gYS94 ZW4vYXJjaC94ODYvaHZtL2dyYW50X3RhYmxlLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9n cmFudF90YWJsZS5jDQo+IEBAIC01MSw3ICs1MSw3IEBAIGludCBjcmVhdGVfZ3JhbnRfcDJtX21h cHBpbmcodWludDY0X3QgYWRkciwgbWZuX3QgZnJhbWUsDQo+ICBpbnQgcmVwbGFjZV9ncmFudF9w Mm1fbWFwcGluZyh1aW50NjRfdCBhZGRyLCBtZm5fdCBmcmFtZSwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90IG5ld19hZGRyLCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQo+ ICB7DQo+IC0gICAgdW5zaWduZWQgbG9uZyBnZm4gPSAodW5zaWduZWQgbG9uZykoYWRkciA+PiBQ QUdFX1NISUZUKTsNCj4gKyAgICBnZm5fdCBnZm4gPSBnYWRkcl90b19nZm4oYWRkcik7DQo+ICAg ICAgcDJtX3R5cGVfdCB0eXBlOw0KPiAgICAgIG1mbl90IG9sZF9tZm47DQo+ICAgICAgc3RydWN0 IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFpbjsNCj4gQEAgLTY4LDcgKzY4LDcgQEAgaW50IHJl cGxhY2VfZ3JhbnRfcDJtX21hcHBpbmcodWludDY0X3QgYWRkciwgbWZuX3QNCj4gZnJhbWUsDQo+ ICAgICAgICAgICAgICAgICAgIHR5cGUsIG1mbl94KG9sZF9tZm4pLCBtZm5feChmcmFtZSkpOw0K PiAgICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsNCj4gICAgICB9DQo+IC0gICAg aWYgKCBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgZnJhbWUsIFBBR0Vf T1JERVJfNEspICkNCj4gKyAgICBpZiAoIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ2Zu LCBmcmFtZSwgUEFHRV9PUkRFUl80SykgKQ0KPiAgICAgIHsNCj4gICAgICAgICAgcHV0X2dmbihk LCBnZm4pOw0KPiAgICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsNCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jDQo+ IGluZGV4IGRiNjBmMjMuLjk4N2MyNmEgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYw0KPiBAQCAtMTY3OSw3ICsxNjc5 LDcgQEAgdm9pZCBodm1faW5qZWN0X2V2ZW50KGNvbnN0IHN0cnVjdCB4ODZfZXZlbnQgKmV2ZW50 KQ0KPiAgaW50IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBncGEsIHVuc2lnbmVk IGxvbmcgZ2xhLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5wZmVj IG5wZmVjKQ0KPiAgew0KPiAtICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0gZ3BhID4+IFBBR0VfU0hJ RlQ7DQo+ICsgICAgZ2ZuX3QgZ2ZuID0gZ2FkZHJfdG9fZ2ZuKGdwYSk7DQo+ICAgICAgcDJtX3R5 cGVfdCBwMm10Ow0KPiAgICAgIHAybV9hY2Nlc3NfdCBwMm1hOw0KPiAgICAgIG1mbl90IG1mbjsN Cj4gQEAgLTE3MjksNyArMTcyOSw3IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBh ZGRyX3QgZ3BhLCB1bnNpZ25lZA0KPiBsb25nIGdsYSwNCj4gICAgICAgICAgICAgIHJldHVybiAx Ow0KPiAgICAgICAgICBjYXNlIE5FU1RFREhWTV9QQUdFRkFVTFRfTDBfRVJST1I6DQo+ICAgICAg ICAgICAgICAvKiBncGEgaXMgbm93IHRyYW5zbGF0ZWQgdG8gbDEgZ3Vlc3QgYWRkcmVzcywgdXBk YXRlIGdmbi4gKi8NCj4gLSAgICAgICAgICAgIGdmbiA9IGdwYSA+PiBQQUdFX1NISUZUOw0KPiAr ICAgICAgICAgICAgZ2ZuID0gZ2FkZHJfdG9fZ2ZuKGdwYSk7DQo+ICAgICAgICAgICAgICBicmVh azsNCj4gICAgICAgICAgfQ0KPiAgICAgIH0NCj4gQEAgLTE4MTcsNyArMTgxNyw3IEBAIGludCBo dm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZA0KPiBsb25nIGds YSwNCj4gICAgICAgICAgICAgIHsNCj4gICAgICAgICAgICAgICAgICBib29sX3Qgc3ZlOw0KPiAN Cj4gLSAgICAgICAgICAgICAgICBwMm0tPmdldF9lbnRyeShwMm0sIF9nZm4oZ2ZuKSwgJnAybXQs ICZwMm1hLCAwLCBOVUxMLA0KPiAmc3ZlKTsNCj4gKyAgICAgICAgICAgICAgICBwMm0tPmdldF9l bnRyeShwMm0sIGdmbiwgJnAybXQsICZwMm1hLCAwLCBOVUxMLCAmc3ZlKTsNCj4gDQo+ICAgICAg ICAgICAgICAgICAgaWYgKCAhc3ZlICYmIGFsdHAybV92Y3B1X2VtdWxhdGVfdmUoY3VycikgKQ0K PiAgICAgICAgICAgICAgICAgIHsNCj4gQEAgLTE4NjIsNyArMTg2Miw3IEBAIGludCBodm1faGFw X25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZA0KPiBsb25nIGdsYSwNCj4g ICAgICB7DQo+ICAgICAgICAgIEFTU0VSVChwMm1faXNfaG9zdHAybShwMm0pKTsNCj4gICAgICAg ICAgc2hhcmluZ19lbm9tZW0gPQ0KPiAtICAgICAgICAgICAgKG1lbV9zaGFyaW5nX3Vuc2hhcmVf cGFnZShjdXJyZCwgZ2ZuLCAwKSA8IDApOw0KPiArICAgICAgICAgICAgKG1lbV9zaGFyaW5nX3Vu c2hhcmVfcGFnZShjdXJyZCwgZ2ZuX3goZ2ZuKSwgMCkgPCAwKTsNCj4gICAgICAgICAgcmMgPSAx Ow0KPiAgICAgICAgICBnb3RvIG91dF9wdXRfZ2ZuOw0KPiAgICAgIH0NCj4gQEAgLTE4NzgsNyAr MTg3OCw3IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLCB1bnNp Z25lZA0KPiBsb25nIGdsYSwNCj4gICAgICAgICAgICovDQo+ICAgICAgICAgIGlmICggbnBmZWMu d3JpdGVfYWNjZXNzICkNCj4gICAgICAgICAgew0KPiAtICAgICAgICAgICAgcGFnaW5nX21hcmtf cGZuX2RpcnR5KGN1cnJkLCBfcGZuKGdmbikpOw0KPiArICAgICAgICAgICAgcGFnaW5nX21hcmtf cGZuX2RpcnR5KGN1cnJkLCBfcGZuKGdmbl94KGdmbikpKTsNCj4gICAgICAgICAgICAgIC8qDQo+ ICAgICAgICAgICAgICAgKiBJZiBwMm0gaXMgcmVhbGx5IGFuIGFsdHAybSwgdW5sb2NrIGl0IGJl Zm9yZSBjaGFuZ2luZyB0aGUNCj4gdHlwZSwNCj4gICAgICAgICAgICAgICAqIGFzIHAybV9hbHRw Mm1fcHJvcGFnYXRlX2NoYW5nZSgpIG5lZWRzIHRvIGFjcXVpcmUgdGhlDQo+IEBAIC0xODg2LDcg KzE4ODYsNyBAQCBpbnQgaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdChwYWRkcl90IGdwYSwgdW5z aWduZWQNCj4gbG9uZyBnbGEsDQo+ICAgICAgICAgICAgICAgKi8NCj4gICAgICAgICAgICAgIGlm ICggcDJtICE9IGhvc3RwMm0gKQ0KPiAgICAgICAgICAgICAgICAgIF9fcHV0X2dmbihwMm0sIGdm bik7DQo+IC0gICAgICAgICAgICBwMm1fY2hhbmdlX3R5cGVfb25lKGN1cnJkLCBnZm4sIHAybV9y YW1fbG9nZGlydHksDQo+IHAybV9yYW1fcncpOw0KPiArICAgICAgICAgICAgcDJtX2NoYW5nZV90 eXBlX29uZShjdXJyZCwgZ2ZuX3goZ2ZuKSwgcDJtX3JhbV9sb2dkaXJ0eSwNCj4gcDJtX3JhbV9y dyk7DQo+ICAgICAgICAgICAgICBfX3B1dF9nZm4oaG9zdHAybSwgZ2ZuKTsNCj4gDQo+ICAgICAg ICAgICAgICBnb3RvIG91dDsNCj4gQEAgLTE5MTYsMTYgKzE5MTYsMTYgQEAgaW50IGh2bV9oYXBf bmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBncGEsDQo+IHVuc2lnbmVkIGxvbmcgZ2xhLA0KPiAg ICAgICAqIHNsZWVwIG9uIGV2ZW50IHJpbmcgd2FpdCBxdWV1ZXMsIGFuZCB3ZSBtdXN0IG5vdCBo b2xkDQo+ICAgICAgICogbG9ja3MgaW4gc3VjaCBjaXJjdW1zdGFuY2UgKi8NCj4gICAgICBpZiAo IHBhZ2VkICkNCj4gLSAgICAgICAgcDJtX21lbV9wYWdpbmdfcG9wdWxhdGUoY3VycmQsIGdmbik7 DQo+ICsgICAgICAgIHAybV9tZW1fcGFnaW5nX3BvcHVsYXRlKGN1cnJkLCBnZm5feChnZm4pKTsN Cj4gICAgICBpZiAoIHNoYXJpbmdfZW5vbWVtICkNCj4gICAgICB7DQo+ICAgICAgICAgIGludCBy djsNCj4gDQo+IC0gICAgICAgIGlmICggKHJ2ID0gbWVtX3NoYXJpbmdfbm90aWZ5X2Vub21lbShj dXJyZCwgZ2ZuLCB0cnVlKSkgPCAwICkNCj4gKyAgICAgICAgaWYgKCAocnYgPSBtZW1fc2hhcmlu Z19ub3RpZnlfZW5vbWVtKGN1cnJkLCBnZm5feChnZm4pLCB0cnVlKSkgPA0KPiAwICkNCj4gICAg ICAgICAgew0KPiAgICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgIkRvbWFpbiAlaHUg YXR0ZW1wdCB0byB1bnNoYXJlICINCj4gICAgICAgICAgICAgICAgICAgICAgICJnZm4gJWx4LCBF Tk9NRU0gYW5kIG5vIGhlbHBlciAocmMgJWQpXG4iLA0KPiAtICAgICAgICAgICAgICAgICAgICAg Y3VycmQtPmRvbWFpbl9pZCwgZ2ZuLCBydik7DQo+ICsgICAgICAgICAgICAgICAgICAgICBjdXJy ZC0+ZG9tYWluX2lkLCBnZm5feChnZm4pLCBydik7DQo+ICAgICAgICAgICAgICAvKiBDcmFzaCB0 aGUgZG9tYWluICovDQo+ICAgICAgICAgICAgICByYyA9IDA7DQo+ICAgICAgICAgIH0NCj4gQEAg LTQ2MDEsOCArNDYwMSw5IEBAIHN0YXRpYyBpbnQgZG9fYWx0cDJtX29wKA0KPiAgICAgICAgICB2 ID0gZC0+dmNwdVthLnUuZW5hYmxlX25vdGlmeS52Y3B1X2lkXTsNCj4gDQo+ICAgICAgICAgIGlm ICggIWdmbl9lcSh2Y3B1X2FsdHAybSh2KS52ZWluZm9fZ2ZuLCBJTlZBTElEX0dGTikgfHwNCj4g LSAgICAgICAgICAgICBtZm5fZXEoZ2V0X2dmbl9xdWVyeV91bmxvY2tlZCh2LT5kb21haW4sDQo+ IC0gICAgICAgICAgICAgICAgICAgIGEudS5lbmFibGVfbm90aWZ5LmdmbiwgJnAybXQpLCBJTlZB TElEX01GTikgKQ0KPiArICAgICAgICAgICAgIG1mbl9lcShnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2Vk KA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgdi0+ZG9tYWluLCBfZ2ZuKGEudS5lbmFibGVf bm90aWZ5LmdmbiksICZwMm10KSwNCj4gKyAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9NRk4p ICkNCj4gICAgICAgICAgew0KPiAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOw0KPiAgICAgICAg ICAgICAgYnJlYWs7DQo+IEBAIC00ODY2LDcgKzQ4NjcsNyBAQCBzdGF0aWMgaW50IGh2bW9wX2dl dF9tZW1fdHlwZSgNCj4gICAgICAgKiB0eXBlLCBub3QgaW4gYWxsb2NhdGluZyBvciB1bnNoYXJp bmcuIFRoYXQnbGwgaGFwcGVuDQo+ICAgICAgICogb24gYWNjZXNzLg0KPiAgICAgICAqLw0KPiAt ICAgIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgYS5wZm4sICZ0KTsNCj4gKyAgICBnZXRfZ2Zu X3F1ZXJ5X3VubG9ja2VkKGQsIF9nZm4oYS5wZm4pLCAmdCk7DQo+ICAgICAgaWYgKCBwMm1faXNf bW1pbyh0KSApDQo+ICAgICAgICAgIGEubWVtX3R5cGUgPSAgSFZNTUVNX21taW9fZG07DQo+ICAg ICAgZWxzZSBpZiAoIHQgPT0gcDJtX2lvcmVxX3NlcnZlciApDQo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaHZtL210cnIuYyBiL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+IGluZGV4IGI4 ZmEzNDAuLmY1NTNlNGQgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+IEBAIC0zNjYsNyArMzY2LDcgQEAgdWlu dDMyX3QgZ2V0X3BhdF9mbGFncyhzdHJ1Y3QgdmNwdSAqdiwNCj4gICAgICB7DQo+ICAgICAgICAg IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47DQo+ICAgICAgICAgIHAybV90eXBlX3QgcDJt dDsNCj4gLSAgICAgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBwYWRkcl90b19wZm4oZ3Bh ZGRyKSwgJnAybXQpOw0KPiArICAgICAgICBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdhZGRy X3RvX2dmbihncGFkZHIpLCAmcDJtdCk7DQo+ICAgICAgICAgIGlmIChwMm1faXNfcmFtKHAybXQp KQ0KPiAgICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsDQo+ICAgICAgICAgICAg ICAgICAgICAgICJDb25mbGljdCBvY2N1cnMgZm9yIGEgZ2l2ZW4gZ3Vlc3QgbDFlIGZsYWdzOiV4 ICINCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVuL2FyY2gv eDg2L2h2bS9zdm0vc3ZtLmMNCj4gaW5kZXggYjlhODkwMC4uNDZmOTg5MyAxMDA2NDQNCj4gLS0t IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9z dm0vc3ZtLmMNCj4gQEAgLTE3NjIsNyArMTc2Miw3IEBAIHN0YXRpYyB2b2lkIHN2bV9kb19uZXN0 ZWRfcGdmYXVsdChzdHJ1Y3QgdmNwdSAqdiwNCj4gICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVncywgdWludDY0X3QgcGZlYywgcGFkZHJfdCBncGEpDQo+ICB7DQo+ICAgICAgaW50IHJldDsN Cj4gLSAgICB1bnNpZ25lZCBsb25nIGdmbiA9IGdwYSA+PiBQQUdFX1NISUZUOw0KPiArICAgIGdm bl90IGdmbiA9IGdhZGRyX3RvX2dmbihncGEpOw0KPiAgICAgIG1mbl90IG1mbjsNCj4gICAgICBw Mm1fdHlwZV90IHAybXQ7DQo+ICAgICAgcDJtX2FjY2Vzc190IHAybWE7DQo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5j DQo+IGluZGV4IDM2NWVlYjIuLmI1MzcwZGQgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3ZteC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jDQo+IEBAIC0y MTk5LDcgKzIxOTksOCBAQCBzdGF0aWMgdm9pZCB2bXhfdmNwdV91cGRhdGVfdm1mdW5jX3ZlKHN0 cnVjdCB2Y3B1DQo+ICp2KQ0KPiAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0Ow0KPiAgICAgICAg ICAgICAgbWZuX3QgbWZuOw0KPiANCj4gLSAgICAgICAgICAgIG1mbiA9IGdldF9nZm5fcXVlcnlf dW5sb2NrZWQoZCwNCj4gZ2ZuX3godmNwdV9hbHRwMm0odikudmVpbmZvX2dmbiksICZ0KTsNCj4g KyAgICAgICAgICAgIC8qIFRPRE86IFRoaXMgaXMgYSBzZWN1cml0eSBpc3N1ZS4uLiAqLw0KPiAr ICAgICAgICAgICAgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCB2Y3B1X2FsdHAybSh2 KS52ZWluZm9fZ2ZuLA0KPiAmdCk7DQo+IA0KPiAgICAgICAgICAgICAgaWYgKCAhbWZuX2VxKG1m biwgSU5WQUxJRF9NRk4pICkNCj4gICAgICAgICAgICAgIHsNCj4gQEAgLTMzMjgsNyArMzMyOSw3 IEBAIHN0YXRpYyB2b2lkIGVwdF9oYW5kbGVfdmlvbGF0aW9uKGVwdF9xdWFsX3QgcSwNCj4gcGFk ZHJfdCBncGEpDQo+IA0KPiAgICAgICAgICBfZC5ncGEgPSBncGE7DQo+ICAgICAgICAgIF9kLnF1 YWxpZmljYXRpb24gPSBxLnJhdzsNCj4gLSAgICAgICAgX2QubWZuID0gbWZuX3goZ2V0X2dmbl9x dWVyeV91bmxvY2tlZChkLCBnZm4sICZfZC5wMm10KSk7DQo+ICsgICAgICAgIF9kLm1mbiA9IG1m bl94KGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgX2dmbihnZm4pLCAmX2QucDJtdCkpOw0KPiAN Cj4gICAgICAgICAgX190cmFjZV92YXIoVFJDX0hWTV9OUEYsIDAsIHNpemVvZihfZCksICZfZCk7 DQo+ICAgICAgfQ0KPiBAQCAtMzM1OCw3ICszMzU5LDcgQEAgc3RhdGljIHZvaWQgZXB0X2hhbmRs ZV92aW9sYXRpb24oZXB0X3F1YWxfdCBxLA0KPiBwYWRkcl90IGdwYSkNCj4gICAgICB9DQo+IA0K PiAgICAgIC8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBhbiBlcnJvci4gKi8NCj4gLSAgICBtZm4gPSBn ZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbiwgJnAybXQpOw0KPiArICAgIG1mbiA9IGdldF9n Zm5fcXVlcnlfdW5sb2NrZWQoZCwgX2dmbihnZm4pLCAmcDJtdCk7DQo+ICAgICAgZ3ByaW50ayhY RU5MT0dfRVJSLA0KPiAgICAgICAgICAgICAgIkVQVCB2aW9sYXRpb24gJSNseCAoJWMlYyVjLyVj JWMlYykgZ3BhICUjIlBSSXBhZGRyIiBtZm4gJSNseA0KPiB0eXBlICVpXG4iLA0KPiAgICAgICAg ICAgICAgcS5yYXcsDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNo L3g4Ni9tbS5jDQo+IGluZGV4IDI4YTAwMzAuLmMzYzc2MjggMTAwNjQ0DQo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9tbS5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jDQo+IEBAIC00MzY0LDExICs0 MzY0LDExIEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKA0KPiAgICAgICAgICAgICAg cDJtX3R5cGVfdCBwMm10Ow0KPiANCj4gICAgICAgICAgICAgIGdmbiA9IGlkeDsNCj4gLSAgICAg ICAgICAgIG1mbiA9IGdldF9nZm5fdW5zaGFyZShkLCBnZm4sICZwMm10KTsNCj4gKyAgICAgICAg ICAgIG1mbiA9IGdldF9nZm5fdW5zaGFyZShkLCBfZ2ZuKGdmbiksICZwMm10KTsNCj4gICAgICAg ICAgICAgIC8qIElmIHRoZSBwYWdlIGlzIHN0aWxsIHNoYXJlZCwgZXhpdCBlYXJseSAqLw0KPiAg ICAgICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpICkNCj4gICAgICAgICAgICAgIHsN Cj4gLSAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgICAgICAgICAgICAg cHV0X2dmbihkLCBfZ2ZuKGdmbikpOw0KPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVN Ow0KPiAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21f bWZuKG1mbiwgZCk7DQo+IEBAIC00Mzg5LDcgKzQzODksNyBAQCBpbnQgeGVubWVtX2FkZF90b19w aHlzbWFwX29uZSgNCj4gICAgICB9DQo+IA0KPiAgICAgIC8qIFJlbW92ZSBwcmV2aW91c2x5IG1h cHBlZCBwYWdlIGlmIGl0IHdhcyBwcmVzZW50LiAqLw0KPiAtICAgIHByZXZfbWZuID0gbWZuX3go Z2V0X2dmbihkLCBnZm5feChncGZuKSwgJnAybXQpKTsNCj4gKyAgICBwcmV2X21mbiA9IG1mbl94 KGdldF9nZm4oZCwgZ3BmbiwgJnAybXQpKTsNCj4gICAgICBpZiAoIG1mbl92YWxpZChfbWZuKHBy ZXZfbWZuKSkgKQ0KPiAgICAgIHsNCj4gICAgICAgICAgaWYgKCBpc194ZW5faGVhcF9tZm4ocHJl dl9tZm4pICkNCj4gQEAgLTQ0MDAsNyArNDQwMCw3IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNt YXBfb25lKA0KPiAgICAgICAgICAgICAgcmMgPSBndWVzdF9yZW1vdmVfcGFnZShkLCBnZm5feChn cGZuKSk7DQo+ICAgICAgfQ0KPiAgICAgIC8qIEluIHRoZSBYRU5NQVBTUEFDRV9nbWZuIGNhc2Ug d2Ugc3RpbGwgaG9sZCBhIHJlZiBvbiB0aGUgb2xkIHBhZ2UuDQo+ICovDQo+IC0gICAgcHV0X2dm bihkLCBnZm5feChncGZuKSk7DQo+ICsgICAgcHV0X2dmbihkLCBncGZuKTsNCj4gDQo+ICAgICAg aWYgKCByYyApDQo+ICAgICAgICAgIGdvdG8gcHV0X2JvdGg7DQo+IEBAIC00NDIzLDcgKzQ0MjMs NyBAQCBpbnQgeGVubWVtX2FkZF90b19waHlzbWFwX29uZSgNCj4gICBwdXRfYm90aDoNCj4gICAg ICAvKiBJbiB0aGUgWEVOTUFQU1BBQ0VfZ21mbiBjYXNlLCB3ZSB0b29rIGEgcmVmIG9mIHRoZSBn Zm4gYXQgdGhlIHRvcC4NCj4gKi8NCj4gICAgICBpZiAoIHNwYWNlID09IFhFTk1BUFNQQUNFX2dt Zm4gKQ0KPiAtICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwg X2dmbihnZm4pKTsNCj4gDQo+ICAgICAgaWYgKCBwYWdlICkNCj4gICAgICAgICAgcHV0X3BhZ2Uo cGFnZSk7DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2Fy Y2gveDg2L21tL2hhcC9oYXAuYw0KPiBpbmRleCAzZDY1MWI5Li4wYWM3ZDEwIDEwMDY0NA0KPiAt LS0gYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9o YXAvaGFwLmMNCj4gQEAgLTY4MSw3ICs2ODEsNyBAQCBoYXBfcGFnaW5nX2dldF9tb2RlKHN0cnVj dCB2Y3B1ICp2KQ0KPiAgc3RhdGljIHZvaWQgaGFwX3VwZGF0ZV9wYWdpbmdfbW9kZXMoc3RydWN0 IHZjcHUgKnYpDQo+ICB7DQo+ICAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsNCj4g LSAgICB1bnNpZ25lZCBsb25nIGNyM19nZm4gPSB2LT5hcmNoLmh2bS5ndWVzdF9jclszXSA+PiBQ QUdFX1NISUZUOw0KPiArICAgIGdmbl90IGNyM19nZm4gPSBnYWRkcl90b19nZm4odi0+YXJjaC5o dm0uZ3Vlc3RfY3JbM10pOw0KPiAgICAgIHAybV90eXBlX3QgdDsNCj4gDQo+ICAgICAgLyogV2Ug aG9sZCBvbnRvIHRoZSBjcjMgYXMgaXQgbWF5IGJlIG1vZGlmaWVkIGxhdGVyLCBhbmQNCj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jDQo+IGIveGVuL2FyY2gv eDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMNCj4gaW5kZXggZDJhMDdhNS4uZDgzYzQzNiAxMDA2NDQN Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMNCj4gKysrIGIveGVuL2Fy Y2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMNCj4gQEAgLTE1MCwxMiArMTUwLDEyIEBAIG5lc3Rl ZGhhcF93YWxrX0wwX3AybShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLA0KPiBwYWRkcl90IEwxX2dw YSwgcGFkZHJfdCAqTDBfZ3BhLA0KPiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCAqcGFnZV9vcmRlciwNCj4gICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgYWNjZXNzX3Is IGJvb2xfdCBhY2Nlc3NfdywgYm9vbF90IGFjY2Vzc194KQ0KPiAgew0KPiArICAgIGdmbl90IGwx X2dmbiA9IGdhZGRyX3RvX2dmbihMMV9ncGEpOw0KPiAgICAgIG1mbl90IG1mbjsNCj4gICAgICBp bnQgcmM7DQo+IA0KPiAgICAgIC8qIHdhbGsgTDAgUDJNIHRhYmxlICovDQo+IC0gICAgbWZuID0g Z2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIEwxX2dwYSA+PiBQQUdFX1NISUZULCBwMm10LCBwMm1h LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcGFnZV9vcmRlcik7DQo+ICsg ICAgbWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGwxX2dmbiwgcDJtdCwgcDJtYSwgMCwg cGFnZV9vcmRlcik7DQo+IA0KPiAgICAgIHJjID0gTkVTVEVESFZNX1BBR0VGQVVMVF9ESVJFQ1Rf TU1JTzsNCj4gICAgICBpZiAoICpwMm10ID09IHAybV9tbWlvX2RpcmVjdCApDQo+IEBAIC0xNzgs NyArMTc4LDcgQEAgbmVzdGVkaGFwX3dhbGtfTDBfcDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0s IHBhZGRyX3QNCj4gTDFfZ3BhLCBwYWRkcl90ICpMMF9ncGEsDQo+ICBkaXJlY3RfbW1pb19vdXQ6 DQo+ICAgICAgKkwwX2dwYSA9IChtZm5feChtZm4pIDw8IFBBR0VfU0hJRlQpICsgKEwxX2dwYSAm IH5QQUdFX01BU0spOw0KPiAgb3V0Og0KPiAtICAgIF9fcHV0X2dmbihwMm0sIEwxX2dwYSA+PiBQ QUdFX1NISUZUKTsNCj4gKyAgICBfX3B1dF9nZm4ocDJtLCBsMV9nZm4pOw0KPiAgICAgIHJldHVy biByYzsNCj4gIH0NCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vz cy5jIGIveGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYw0KPiBpbmRleCAzMGMyZjFhLi5jYWEz M2MzIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jDQo+ICsrKyBi L3hlbi9hcmNoL3g4Ni9tbS9tZW1fYWNjZXNzLmMNCj4gQEAgLTI2Myw3ICsyNjMsNiBAQCBpbnQg cDJtX3NldF9hbHRwMm1fbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QNCj4gcDJt X2RvbWFpbiAqaHAybSwNCj4gICAgICBwMm1fdHlwZV90IHQ7DQo+ICAgICAgcDJtX2FjY2Vzc190 IG9sZF9hOw0KPiAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyOw0KPiAtICAgIHVuc2lnbmVk IGxvbmcgZ2ZuX2wgPSBnZm5feChnZm4pOw0KPiAgICAgIGludCByYzsNCj4gDQo+ICAgICAgbWZu ID0gYXAybS0+Z2V0X2VudHJ5KGFwMm0sIGdmbiwgJnQsICZvbGRfYSwgMCwgTlVMTCwgTlVMTCk7 DQo+IEBAIC0yNzIsNyArMjcxLDcgQEAgaW50IHAybV9zZXRfYWx0cDJtX21lbV9hY2Nlc3Moc3Ry dWN0IGRvbWFpbiAqZCwgc3RydWN0DQo+IHAybV9kb21haW4gKmhwMm0sDQo+ICAgICAgaWYgKCAh bWZuX3ZhbGlkKG1mbikgKQ0KPiAgICAgIHsNCj4gDQo+IC0gICAgICAgIG1mbiA9IF9fZ2V0X2dm bl90eXBlX2FjY2VzcyhocDJtLCBnZm5fbCwgJnQsICZvbGRfYSwNCj4gKyAgICAgICAgbWZuID0g X19nZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbiwgJnQsICZvbGRfYSwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9BTExPQyB8IFAyTV9VTlNIQVJFLCAmcGFn ZV9vcmRlciwNCj4gMCk7DQo+IA0KPiAgICAgICAgICByYyA9IC1FU1JDSDsNCj4gQEAgLTI4Myw3 ICsyODIsNyBAQCBpbnQgcDJtX3NldF9hbHRwMm1fbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3QNCj4gcDJtX2RvbWFpbiAqaHAybSwNCj4gICAgICAgICAgaWYgKCBwYWdlX29yZGVy ICE9IFBBR0VfT1JERVJfNEsgKQ0KPiAgICAgICAgICB7DQo+ICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1hc2sgPSB+KCgxVUwgPDwgcGFnZV9vcmRlcikgLSAxKTsNCj4gLSAgICAgICAgICAg IGdmbl90IGdmbjIgPSBfZ2ZuKGdmbl9sICYgbWFzayk7DQo+ICsgICAgICAgICAgICBnZm5fdCBn Zm4yID0gX2dmbihnZm5feChnZm4pICYgbWFzayk7DQo+ICAgICAgICAgICAgICBtZm5fdCBtZm4y ID0gX21mbihtZm5feChtZm4pICYgbWFzayk7DQo+IA0KPiAgICAgICAgICAgICAgcmMgPSBhcDJt LT5zZXRfZW50cnkoYXAybSwgZ2ZuMiwgbWZuMiwgcGFnZV9vcmRlciwgdCwgb2xkX2EsDQo+IDEp Ow0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMgYi94ZW4vYXJj aC94ODYvbW0vbWVtX3NoYXJpbmcuYw0KPiBpbmRleCA1NzNkMzU0Li43ZjJiZjgwIDEwMDY0NA0K PiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYw0KPiArKysgYi94ZW4vYXJjaC94 ODYvbW0vbWVtX3NoYXJpbmcuYw0KPiBAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyBpbnQgYXVk aXQodm9pZCkNCj4gICAgICAgICAgICAgICAgICBlcnJvcnMrKzsNCj4gICAgICAgICAgICAgICAg ICBjb250aW51ZTsNCj4gICAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIG9fbWZuID0gZ2V0 X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnLT5nZm4sICZ0KTsNCj4gKyAgICAgICAgICAgIG9fbWZu ID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBfZ2ZuKGctPmdmbiksICZ0KTsNCj4gICAgICAg ICAgICAgIGlmICggIW1mbl9lcShvX21mbiwgbWZuKSApDQo+ICAgICAgICAgICAgICB7DQo+ICAg ICAgICAgICAgICAgICAgTUVNX1NIQVJJTkdfREVCVUcoIkluY29ycmVjdCBQMk0gZm9yIGQ9JWh1 LCBQRk49JWx4LiINCj4gQEAgLTczMiwxMiArNzMyLDEyIEBAIHN0YXRpYyBpbnQgZGVidWdfZ2Zu KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbikNCj4gICAgICBtZm5fdCBtZm47DQo+ICAgICAg aW50IG51bV9yZWZzOw0KPiANCj4gLSAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbl94KGdm biksICZwMm10KTsNCj4gKyAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbiwgJnAybXQpOw0K PiANCj4gICAgICBNRU1fU0hBUklOR19ERUJVRygiRGVidWcgZm9yIGRvbSVkLCBnZm49JSIgUFJJ X2dmbiAiXG4iLA0KPiAgICAgICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuX3go Z2ZuKSk7DQo+ICAgICAgbnVtX3JlZnMgPSBkZWJ1Z19tZm4obWZuKTsNCj4gLSAgICBwdXRfZ2Zu KGQsIGdmbl94KGdmbikpOw0KPiArICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gDQo+ICAgICAgcmV0 dXJuIG51bV9yZWZzOw0KPiAgfQ0KPiBAQCAtNzc1LDcgKzc3NSw3IEBAIHN0YXRpYyBpbnQgbm9t aW5hdGVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sDQo+IA0KPiAgICAgICpwaGFu ZGxlID0gMFVMOw0KPiANCj4gLSAgICBtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdm bl94KGdmbiksICZwMm10LCAmcDJtYSwgMCwgTlVMTCk7DQo+ICsgICAgbWZuID0gZ2V0X2dmbl90 eXBlX2FjY2VzcyhocDJtLCBnZm4sICZwMm10LCAmcDJtYSwgMCwgTlVMTCk7DQo+IA0KPiAgICAg IC8qIENoZWNrIGlmIG1mbiBpcyB2YWxpZCAqLw0KPiAgICAgIHJldCA9IC1FSU5WQUw7DQo+IEBA IC04MjAsNyArODIwLDcgQEAgc3RhdGljIGludCBub21pbmF0ZV9wYWdlKHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbiwNCj4gICAgICAgICAgICAgIGlmICggIWFwMm0gKQ0KPiAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiANCj4gLSAgICAgICAgICAgIGFtZm4gPSBfX2dldF9nZm5fdHlw ZV9hY2Nlc3MoYXAybSwgZ2ZuX3goZ2ZuKSwgJmFwMm10LA0KPiAmYXAybWEsDQo+ICsgICAgICAg ICAgICBhbWZuID0gX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKGFwMm0sIGdmbiwgJmFwMm10LCAmYXAy bWEsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEws IGZhbHNlKTsNCj4gICAgICAgICAgICAgIGlmICggbWZuX3ZhbGlkKGFtZm4pICYmICghbWZuX2Vx KGFtZm4sIG1mbikgfHwgYXAybWEgIT0gcDJtYSkNCj4gKQ0KPiAgICAgICAgICAgICAgew0KPiBA QCAtODg1LDcgKzg4NSw3IEBAIHN0YXRpYyBpbnQgbm9taW5hdGVfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCBnZm5fdCBnZm4sDQo+ICAgICAgcmV0ID0gMDsNCj4gDQo+ICBvdXQ6DQo+IC0gICAgcHV0 X2dmbihkLCBnZm5feChnZm4pKTsNCj4gKyAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICAgICAgcmV0 dXJuIHJldDsNCj4gIH0NCj4gDQo+IEBAIC0xMTI0LDExICsxMTI0LDExIEBAIGludCBfX21lbV9z aGFyaW5nX3Vuc2hhcmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLA0KPiAgICAgIGludCBsYXN0X2dm bjsNCj4gICAgICBnZm5faW5mb190ICpnZm5faW5mbyA9IE5VTEw7DQo+IA0KPiAtICAgIG1mbiA9 IGdldF9nZm4oZCwgZ2ZuLCAmcDJtdCk7DQo+ICsgICAgbWZuID0gZ2V0X2dmbihkLCBfZ2ZuKGdm biksICZwMm10KTsNCj4gDQo+ICAgICAgLyogSGFzIHNvbWVvbmUgYWxyZWFkeSB1bnNoYXJlZCBp dD8gKi8NCj4gICAgICBpZiAoICFwMm1faXNfc2hhcmVkKHAybXQpICkgew0KPiAtICAgICAgICBw dXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnZm4pKTsNCj4gICAg ICAgICAgcmV0dXJuIDA7DQo+ICAgICAgfQ0KPiANCj4gQEAgLTExNzUsNyArMTE3NSw3IEBAIGlu dCBfX21lbV9zaGFyaW5nX3Vuc2hhcmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLA0KPiAgICAgICAg ICB7DQo+ICAgICAgICAgICAgICBpZiAoICFnZXRfcGFnZShwYWdlLCBkKSApDQo+ICAgICAgICAg ICAgICB7DQo+IC0gICAgICAgICAgICAgICAgcHV0X2dmbihkLCBnZm4pOw0KPiArICAgICAgICAg ICAgICAgIHB1dF9nZm4oZCwgX2dmbihnZm4pKTsNCj4gICAgICAgICAgICAgICAgICBkb21haW5f Y3Jhc2goZCk7DQo+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7DQo+ICAgICAg ICAgICAgICB9DQo+IEBAIC0xMTgzLDcgKzExODMsNyBAQCBpbnQgX19tZW1fc2hhcmluZ191bnNo YXJlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwNCj4gICAgICAgICAgICAgICAgICBwdXRfcGFnZShw YWdlKTsNCj4gICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOw0KPiAgICAgICAgICB9DQo+IC0g ICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gKyAgICAgICAgcHV0X2dmbihkLCBfZ2ZuKGdmbikp Ow0KPiANCj4gICAgICAgICAgcmV0dXJuIDA7DQo+ICAgICAgfQ0KPiBAQCAtMTIwMiw3ICsxMjAy LDcgQEAgaW50IF9fbWVtX3NoYXJpbmdfdW5zaGFyZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsDQo+ ICAgICAgICAgIC8qIFVuZG8gZGVjIG9mIG5yX3NhdmVkX21mbnMsIGFzIHRoZSByZXRyeSB3aWxs IGRlY3JlYXNlIGFnYWluLg0KPiAqLw0KPiAgICAgICAgICBhdG9taWNfaW5jKCZucl9zYXZlZF9t Zm5zKTsNCj4gICAgICAgICAgbWVtX3NoYXJpbmdfcGFnZV91bmxvY2sob2xkX3BhZ2UpOw0KPiAt ICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnZm4p KTsNCj4gICAgICAgICAgLyogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwbGFjaW5nIGFuIGV2 ZW50DQo+ICAgICAgICAgICAqIGluIHRoZSByaW5nICovDQo+ICAgICAgICAgIHJldHVybiAtRU5P TUVNOw0KPiBAQCAtMTIzMCw3ICsxMjMwLDcgQEAgaW50IF9fbWVtX3NoYXJpbmdfdW5zaGFyZV9w YWdlKHN0cnVjdCBkb21haW4gKmQsDQo+ICAgICAgICogbWFya2luZyBkaXJ0eSBpcyBmZWFzaWJs ZSAqLw0KPiAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIHBhZ2VfdG9fbWZuKHBhZ2UpKTsNCj4g ICAgICAvKiBXZSBkbyBub3QgbmVlZCB0byB1bmxvY2sgYSBwcml2YXRlIHBhZ2UgKi8NCj4gLSAg ICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgcHV0X2dmbihkLCBfZ2ZuKGdmbikpOw0KPiAgICAg IHJldHVybiAwOw0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0u YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYw0KPiBpbmRleCBmNTJhNzFlLi4xOWIzODNmIDEwMDY0 NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L21t L3AybS5jDQo+IEBAIC00MDksMTIgKzQwOSwxMSBAQCB2b2lkIHAybV91bmxvY2tfYW5kX3RsYl9m bHVzaChzdHJ1Y3QgcDJtX2RvbWFpbg0KPiAqcDJtKQ0KPiAgICAgICAgICBtbV93cml0ZV91bmxv Y2soJnAybS0+bG9jayk7DQo+ICB9DQo+IA0KPiAtbWZuX3QgX19nZXRfZ2ZuX3R5cGVfYWNjZXNz KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsDQo+ICttZm5fdCBf X2dldF9nZm5fdHlwZV9hY2Nlc3Moc3RydWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuLA0K PiAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90ICp0LCBwMm1fYWNjZXNzX3QgKmEsIHAy bV9xdWVyeV90IHEsDQo+ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqcGFnZV9v cmRlciwgYm9vbF90IGxvY2tlZCkNCj4gIHsNCj4gICAgICBtZm5fdCBtZm47DQo+IC0gICAgZ2Zu X3QgZ2ZuID0gX2dmbihnZm5fbCk7DQo+IA0KPiAgICAgIC8qIFVuc2hhcmUgbWFrZXMgbm8gc2Vu c2Ugd2l0aHVvdCBwb3B1bGF0ZS4gKi8NCj4gICAgICBpZiAoIHEgJiBQMk1fVU5TSEFSRSApDQo+ IEBAIC00MjUsNyArNDI0LDcgQEAgbWZuX3QgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKHN0cnVjdCBw Mm1fZG9tYWluICpwMm0sDQo+IHVuc2lnbmVkIGxvbmcgZ2ZuX2wsDQo+ICAgICAgICAgIC8qIE5v dCBuZWNlc3NhcmlseSB0cnVlLCBidXQgZm9yIG5vbi10cmFuc2xhdGVkIGd1ZXN0cywgd2UgY2xh aW0NCj4gICAgICAgICAgICogaXQncyB0aGUgbW9zdCBnZW5lcmljIGtpbmQgb2YgbWVtb3J5ICov DQo+ICAgICAgICAgICp0ID0gcDJtX3JhbV9ydzsNCj4gLSAgICAgICAgcmV0dXJuIF9tZm4oZ2Zu X2wpOw0KPiArICAgICAgICByZXR1cm4gX21mbihnZm5feChnZm4pKTsNCj4gICAgICB9DQo+IA0K PiAgICAgIGlmICggbG9ja2VkICkNCj4gQEAgLTQzOSw4ICs0MzgsOCBAQCBtZm5fdCBfX2dldF9n Zm5fdHlwZV9hY2Nlc3Moc3RydWN0IHAybV9kb21haW4gKnAybSwNCj4gdW5zaWduZWQgbG9uZyBn Zm5fbCwNCj4gICAgICAgICAgQVNTRVJUKHAybV9pc19ob3N0cDJtKHAybSkpOw0KPiAgICAgICAg ICAvKiBUcnkgdG8gdW5zaGFyZS4gSWYgd2UgZmFpbCwgY29tbXVuaWNhdGUgRU5PTUVNIHdpdGhv dXQNCj4gICAgICAgICAgICogc2xlZXBpbmcuICovDQo+IC0gICAgICAgIGlmICggbWVtX3NoYXJp bmdfdW5zaGFyZV9wYWdlKHAybS0+ZG9tYWluLCBnZm5fbCwgMCkgPCAwICkNCj4gLSAgICAgICAg ICAgIG1lbV9zaGFyaW5nX25vdGlmeV9lbm9tZW0ocDJtLT5kb21haW4sIGdmbl9sLCBmYWxzZSk7 DQo+ICsgICAgICAgIGlmICggbWVtX3NoYXJpbmdfdW5zaGFyZV9wYWdlKHAybS0+ZG9tYWluLCBn Zm5feChnZm4pLCAwKSA8IDAgKQ0KPiArICAgICAgICAgICAgbWVtX3NoYXJpbmdfbm90aWZ5X2Vu b21lbShwMm0tPmRvbWFpbiwgZ2ZuX3goZ2ZuKSwgZmFsc2UpOw0KPiAgICAgICAgICBtZm4gPSBw Mm0tPmdldF9lbnRyeShwMm0sIGdmbiwgdCwgYSwgcSwgcGFnZV9vcmRlciwgTlVMTCk7DQo+ICAg ICAgfQ0KPiANCj4gQEAgLTQ1NSw3ICs0NTQsNyBAQCBtZm5fdCBfX2dldF9nZm5fdHlwZV9hY2Nl c3Moc3RydWN0IHAybV9kb21haW4gKnAybSwNCj4gdW5zaWduZWQgbG9uZyBnZm5fbCwNCj4gICAg ICByZXR1cm4gbWZuOw0KPiAgfQ0KPiANCj4gLXZvaWQgX19wdXRfZ2ZuKHN0cnVjdCBwMm1fZG9t YWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQ0KPiArdm9pZCBfX3B1dF9nZm4oc3RydWN0IHAy bV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuKQ0KPiAgew0KPiAgICAgIGlmICggIXAybSB8fCAhcGFn aW5nX21vZGVfdHJhbnNsYXRlKHAybS0+ZG9tYWluKSApDQo+ICAgICAgICAgIC8qIE5vdGhpbmcg dG8gZG8gaW4gdGhpcyBjYXNlICovDQo+IEBAIC00ODQsNyArNDgzLDcgQEAgc3RydWN0IHBhZ2Vf aW5mbyAqcDJtX2dldF9wYWdlX2Zyb21fZ2ZuKA0KPiAgICAgIHsNCj4gICAgICAgICAgLyogRmFz dCBwYXRoOiBsb29rIHVwIGFuZCBnZXQgb3V0ICovDQo+ICAgICAgICAgIHAybV9yZWFkX2xvY2so cDJtKTsNCj4gLSAgICAgICAgbWZuID0gX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuX3go Z2ZuKSwgdCwgYSwgMCwgTlVMTCwgMCk7DQo+ICsgICAgICAgIG1mbiA9IF9fZ2V0X2dmbl90eXBl X2FjY2VzcyhwMm0sIGdmbiwgdCwgYSwgMCwgTlVMTCwgMCk7DQo+ICAgICAgICAgIGlmICggcDJt X2lzX2FueV9yYW0oKnQpICYmIG1mbl92YWxpZChtZm4pDQo+ICAgICAgICAgICAgICAgJiYgISgo cSAmIFAyTV9VTlNIQVJFKSAmJiBwMm1faXNfc2hhcmVkKCp0KSkgKQ0KPiAgICAgICAgICB7DQo+ IEBAIC01MTMsMTQgKzUxMiwxNCBAQCBzdHJ1Y3QgcGFnZV9pbmZvICpwMm1fZ2V0X3BhZ2VfZnJv bV9nZm4oDQo+ICAgICAgfQ0KPiANCj4gICAgICAvKiBTbG93IHBhdGg6IHRha2UgdGhlIHdyaXRl IGxvY2sgYW5kIGRvIGZpeHVwcyAqLw0KPiAtICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3Mo cDJtLCBnZm5feChnZm4pLCB0LCBhLCBxLCBOVUxMKTsNCj4gKyAgICBtZm4gPSBnZXRfZ2ZuX3R5 cGVfYWNjZXNzKHAybSwgZ2ZuLCB0LCBhLCBxLCBOVUxMKTsNCj4gICAgICBpZiAoIHAybV9pc19y YW0oKnQpICYmIG1mbl92YWxpZChtZm4pICkNCj4gICAgICB7DQo+ICAgICAgICAgIHBhZ2UgPSBt Zm5fdG9fcGFnZShtZm4pOw0KPiAgICAgICAgICBpZiAoICFnZXRfcGFnZShwYWdlLCBwMm0tPmRv bWFpbikgKQ0KPiAgICAgICAgICAgICAgcGFnZSA9IE5VTEw7DQo+ICAgICAgfQ0KPiAtICAgIHB1 dF9nZm4ocDJtLT5kb21haW4sIGdmbl94KGdmbikpOw0KPiArICAgIHB1dF9nZm4ocDJtLT5kb21h aW4sIGdmbik7DQo+IA0KPiAgICAgIHJldHVybiBwYWdlOw0KPiAgfQ0KPiBAQCAtMTI3OCw3ICsx Mjc3LDcgQEAgaW50IHNldF9zaGFyZWRfcDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkDQo+IGxvbmcgZ2ZuX2wsIG1mbl90IG1mbikNCj4gICAgICBpZiAoIHJjICkNCj4gICAgICAg ICAgZ2RwcmludGsoWEVOTE9HX0VSUiwNCj4gICAgICAgICAgICAgICAgICAgInAybV9zZXRfZW50 cnkgZmFpbGVkISBtZm49JTA4bHggcmM6JWRcbiIsDQo+IC0gICAgICAgICAgICAgICAgIG1mbl94 KGdldF9nZm5fcXVlcnlfdW5sb2NrZWQocDJtLT5kb21haW4sIGdmbl9sLCAmb3QpKSwNCj4gcmMp Ow0KPiArICAgICAgICAgICAgICAgICBtZm5feChnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKHAybS0+ ZG9tYWluLCBnZm4sICZvdCkpLA0KPiByYyk7DQo+ICAgICAgcmV0dXJuIHJjOw0KPiAgfQ0KPiAN Cj4gQEAgLTIxODcsOCArMjE4Niw3IEBAIGJvb2wgcDJtX2FsdHAybV9sYXp5X2NvcHkoc3RydWN0 IHZjcHUgKnYsIHBhZGRyX3QNCj4gZ3BhLA0KPiANCj4gICAgICBBU1NFUlQocDJtX2xvY2tlZF9i eV9tZShocDJtKSk7DQo+IA0KPiAtICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3MoYXAybSwg Z2ZuX3goZ2ZuKSwgJnAybXQsICZwMm1hLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwgJnBhZ2Vfb3JkZXIpOw0KPiArICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3MoYXAy bSwgZ2ZuLCAmcDJtdCwgJnAybWEsIDAsICZwYWdlX29yZGVyKTsNCj4gDQo+ICAgICAgLyogRW50 cnkgYWxyZWFkeSBwcmVzZW50IGluIGFwMm0/ICBDYWxsZXIgc2hvdWxkIGhhbmRsZSB0aGUgZmF1 bHQuICovDQo+ICAgICAgaWYgKCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkNCj4gQEAgLTIx OTcsOCArMjE5NSw3IEBAIGJvb2wgcDJtX2FsdHAybV9sYXp5X2NvcHkoc3RydWN0IHZjcHUgKnYs IHBhZGRyX3QNCj4gZ3BhLA0KPiAgICAgICAgICBnb3RvIHB1dF9hcDJtOw0KPiAgICAgIH0NCj4g DQo+IC0gICAgbWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhocDJtLCBnZm5feChnZm4pLCAmcDJt dCwgJnAybWEsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQMk1fQUxMT0MsICZw YWdlX29yZGVyKTsNCj4gKyAgICBtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbiwg JnAybXQsICZwMm1hLCBQMk1fQUxMT0MsDQo+ICZwYWdlX29yZGVyKTsNCj4gDQo+ICAgICAgLyog RW50cnkgbm90IHByZXNlbnQgaW4gaHAybT8gIENhbGxlciBzaG91bGQgaGFuZGxlIHRoZSBmYXVs dC4gKi8NCj4gICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApDQo+IEBAIC0yMjMw LDkgKzIyMjcsOSBAQCBib29sIHAybV9hbHRwMm1fbGF6eV9jb3B5KHN0cnVjdCB2Y3B1ICp2LCBw YWRkcl90DQo+IGdwYSwNCj4gICAgICByZXQgPSB0cnVlOw0KPiANCj4gIHB1dF9ocDJtOg0KPiAt ICAgIF9fcHV0X2dmbihocDJtLCBnZm5feChnZm4pKTsNCj4gKyAgICBfX3B1dF9nZm4oaHAybSwg Z2ZuKTsNCj4gIHB1dF9hcDJtOg0KPiAtICAgIF9fcHV0X2dmbihhcDJtLCBnZm5feChnZm4pKTsN Cj4gKyAgICBfX3B1dF9nZm4oYXAybSwgZ2ZuKTsNCj4gDQo+ICAgICAgcmV0dXJuIHJldDsNCj4g IH0NCj4gQEAgLTIzOTYsNyArMjM5Myw3IEBAIGludCBwMm1fY2hhbmdlX2FsdHAybV9nZm4oc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQNCj4gaW50IGlkeCwNCj4gICAgICAvKiBDaGVjayBob3N0 IHAybSBpZiBubyB2YWxpZCBlbnRyeSBpbiBhbHRlcm5hdGUgKi8NCj4gICAgICBpZiAoICFtZm5f dmFsaWQobWZuKSApDQo+ICAgICAgew0KPiAtICAgICAgICBtZm4gPSBfX2dldF9nZm5fdHlwZV9h Y2Nlc3MoaHAybSwgZ2ZuX3gob2xkX2dmbiksICZ0LCAmYSwNCj4gKyAgICAgICAgbWZuID0gX19n ZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIG9sZF9nZm4sICZ0LCAmYSwNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9BTExPQywgJnBhZ2Vfb3JkZXIsIDApOw0KPiAN Cj4gICAgICAgICAgaWYgKCAhbWZuX3ZhbGlkKG1mbikgfHwgdCAhPSBwMm1fcmFtX3J3ICkNCj4g QEAgLTI0NzcsNyArMjQ3NCw3IEBAIGludCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwNCj4gZ2ZuX3QgZ2ZuLA0KPiAgICAgICAgICAgICAgY29udGludWU7DQo+ IA0KPiAgICAgICAgICBwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1baV07DQo+IC0gICAgICAgIG0g PSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuX3goZ2ZuKSwgJnQsICZhLCAwLCBOVUxMKTsN Cj4gKyAgICAgICAgbSA9IGdldF9nZm5fdHlwZV9hY2Nlc3MocDJtLCBnZm4sICZ0LCAmYSwgMCwg TlVMTCk7DQo+IA0KPiAgICAgICAgICAvKiBDaGVjayBmb3IgYSBkcm9wcGVkIHBhZ2UgdGhhdCBt YXkgaW1wYWN0IHRoaXMgYWx0cDJtICovDQo+ICAgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5W QUxJRF9NRk4pICYmDQo+IEBAIC0yNDkyLDcgKzI0ODksNyBAQCBpbnQgcDJtX2FsdHAybV9wcm9w YWdhdGVfY2hhbmdlKHN0cnVjdCBkb21haW4gKmQsDQo+IGdmbl90IGdmbiwNCj4gICAgICAgICAg ICAgIGVsc2UNCj4gICAgICAgICAgICAgIHsNCj4gICAgICAgICAgICAgICAgICAvKiBBdCBsZWFz dCAyIGFsdHAybSdzIGltcGFjdGVkLCBzbyByZXNldCBldmVyeXRoaW5nICovDQo+IC0gICAgICAg ICAgICAgICAgX19wdXRfZ2ZuKHAybSwgZ2ZuX3goZ2ZuKSk7DQo+ICsgICAgICAgICAgICAgICAg X19wdXRfZ2ZuKHAybSwgZ2ZuKTsNCj4gDQo+ICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7 IGkgPCBNQVhfQUxUUDJNOyBpKysgKQ0KPiAgICAgICAgICAgICAgICAgIHsNCj4gQEAgLTI1MTks NyArMjUxNiw3IEBAIGludCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFp biAqZCwNCj4gZ2ZuX3QgZ2ZuLA0KPiAgICAgICAgICAgICAgICAgIHJldCA9IHJjOw0KPiAgICAg ICAgICB9DQo+IA0KPiAtICAgICAgICBfX3B1dF9nZm4ocDJtLCBnZm5feChnZm4pKTsNCj4gKyAg ICAgICAgX19wdXRfZ2ZuKHAybSwgZ2ZuKTsNCj4gICAgICB9DQo+IA0KPiAgICAgIGFsdHAybV9s aXN0X3VubG9jayhkKTsNCj4gQEAgLTI1OTAsNyArMjU4Nyw3IEBAIHZvaWQgYXVkaXRfcDJtKHN0 cnVjdCBkb21haW4gKmQsDQo+ICAgICAgICAgICAgICBjb250aW51ZTsNCj4gICAgICAgICAgfQ0K PiANCj4gLSAgICAgICAgcDJtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuLCAmdHlw ZSwgJnAybWEsIDAsIE5VTEwpOw0KPiArICAgICAgICBwMm1mbiA9IGdldF9nZm5fdHlwZV9hY2Nl c3MocDJtLCBfZ2ZuKGdmbiksICZ0eXBlLCAmcDJtYSwgMCwNCj4gTlVMTCk7DQo+ICAgICAgICAg IGlmICggbWZuX3gocDJtZm4pICE9IG1mbiApDQo+ICAgICAgICAgIHsNCj4gICAgICAgICAgICAg IG1wYmFkKys7DQo+IEBAIC0yNjA1LDcgKzI2MDIsNyBAQCB2b2lkIGF1ZGl0X3AybShzdHJ1Y3Qg ZG9tYWluICpkLA0KPiAgICAgICAgICAgICAgICogYmxvdyBhd2F5IHRoZSBtMnAgZW50cnkuICov DQo+ICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm4sIElOVkFMSURfTTJQX0VOVFJZ KTsNCj4gICAgICAgICAgfQ0KPiAtICAgICAgICBfX3B1dF9nZm4ocDJtLCBnZm4pOw0KPiArICAg ICAgICBfX3B1dF9nZm4ocDJtLCBfZ2ZuKGdmbikpOw0KPiANCj4gICAgICAgICAgUDJNX1BSSU5U SygiT0s6IG1mbj0lI2x4LCBnZm49JSNseCwgcDJtZm49JSNseFxuIiwNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgbWZuLCBnZm4sIG1mbl94KHAybWZuKSk7DQo+IEBAIC0yNjk4LDcgKzI2OTUs NyBAQCBpbnQgcDJtX2FkZF9mb3JlaWduKHN0cnVjdCBkb21haW4gKnRkb20sIHVuc2lnbmVkDQo+ IGxvbmcgZmdmbiwNCj4gICAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsNCj4gDQo+ICAgICAg LyogUmVtb3ZlIHByZXZpb3VzbHkgbWFwcGVkIHBhZ2UgaWYgaXQgaXMgcHJlc2VudC4gKi8NCj4g LSAgICBwcmV2X21mbiA9IGdldF9nZm4odGRvbSwgZ3BmbiwgJnAybXRfcHJldik7DQo+ICsgICAg cHJldl9tZm4gPSBnZXRfZ2ZuKHRkb20sIF9nZm4oZ3BmbiksICZwMm10X3ByZXYpOw0KPiAgICAg IGlmICggbWZuX3ZhbGlkKHByZXZfbWZuKSApDQo+ICAgICAgew0KPiAgICAgICAgICBpZiAoIGlz X3hlbl9oZWFwX21mbihtZm5feChwcmV2X21mbikpICkNCj4gQEAgLTI3MjksNyArMjcyNiw3IEBA IGludCBwMm1fYWRkX2ZvcmVpZ24oc3RydWN0IGRvbWFpbiAqdGRvbSwgdW5zaWduZWQNCj4gbG9u ZyBmZ2ZuLA0KPiAgICAgICAqIGFmdGVyIHNldF9mb3JlaWduX3AybV9lbnRyeSBzbyBhbm90aGVy IGNwdSBkb2Vzbid0IHBvcHVsYXRlIHRoZQ0KPiBncGZuDQo+ICAgICAgICogYmVmb3JlIHVzLg0K PiAgICAgICAqLw0KPiAtICAgIHB1dF9nZm4odGRvbSwgZ3Bmbik7DQo+ICsgICAgcHV0X2dmbih0 ZG9tLCBfZ2ZuKGdwZm4pKTsNCj4gDQo+ICBvdXQ6DQo+ICAgICAgaWYgKCBmZG9tICkNCj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMNCj4gYi94ZW4vYXJjaC94 ODYvbW0vc2hhZG93L2NvbW1vbi5jDQo+IGluZGV4IDYxMzA0ZDcuLjg1Y2U3NjEgMTAwNjQ0DQo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMNCj4gKysrIGIveGVuL2FyY2gv eDg2L21tL3NoYWRvdy9jb21tb24uYw0KPiBAQCAtMzMzOCw3ICszMzM4LDcgQEAgaW50IHNoYWRv d190cmFja19kaXJ0eV92cmFtKHN0cnVjdCBkb21haW4gKmQsDQo+IA0KPiAgICAgICAgICAvKiBJ dGVyYXRlIG92ZXIgVlJBTSB0byB0cmFjayBkaXJ0eSBiaXRzLiAqLw0KPiAgICAgICAgICBmb3Ig KCBpID0gMDsgaSA8IG5yOyBpKysgKSB7DQo+IC0gICAgICAgICAgICBtZm5fdCBtZm4gPSBnZXRf Z2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGJlZ2luX3BmbiArIGksICZ0KTsNCj4gKyAgICAgICAgICAg IG1mbl90IG1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgX2dmbihiZWdpbl9wZm4gKyBp KSwNCj4gJnQpOw0KPiAgICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsNCj4gICAg ICAgICAgICAgIGludCBkaXJ0eSA9IDA7DQo+ICAgICAgICAgICAgICBwYWRkcl90IHNsMW1hID0g ZGlydHlfdnJhbS0+c2wxbWFbaV07DQo+IEBAIC0zNDE4LDcgKzM0MTgsNyBAQCBpbnQgc2hhZG93 X3RyYWNrX2RpcnR5X3ZyYW0oc3RydWN0IGRvbWFpbiAqZCwNCj4gICAgICAgICAgICAgICAqIHdy aXRlIGFjY2VzcyAqLw0KPiAgICAgICAgICAgICAgZm9yICggaSA9IGJlZ2luX3BmbjsgaSA8IGVu ZF9wZm47IGkrKyApDQo+ICAgICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgbWZuX3Qg bWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBpLCAmdCk7DQo+ICsgICAgICAgICAgICAg ICAgbWZuX3QgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBfZ2ZuKGkpLCAmdCk7DQo+ ICAgICAgICAgICAgICAgICAgaWYgKCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkNCj4gICAg ICAgICAgICAgICAgICAgICAgZmx1c2hfdGxiIHw9IHNoX3JlbW92ZV93cml0ZV9hY2Nlc3MoZCwg bWZuLCAxLCAwKTsNCj4gICAgICAgICAgICAgIH0NCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9tbS9zaGFkb3cvbXVsdGkuYw0KPiBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYw0K PiBpbmRleCA3ZTljYmM2Li5kZTNmY2Q3IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0v c2hhZG93L211bHRpLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jDQo+ IEBAIC0yMTI2LDcgKzIxMjYsOCBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2dsNGUoc3RydWN0IHZj cHUgKnYsIHZvaWQNCj4gKm5ld19nZSwgbWZuX3Qgc2w0bWZuLCB2b2lkICpzZSkNCj4gICAgICAg ICAgICFndWVzdF9sNGVfcnN2ZF9iaXRzKHYsIG5ld19nbDRlKSApDQo+ICAgICAgew0KPiAgICAg ICAgICBnZm5fdCBnbDNnZm4gPSBndWVzdF9sNGVfZ2V0X2dmbihuZXdfZ2w0ZSk7DQo+IC0gICAg ICAgIG1mbl90IGdsM21mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2wzZ2Zu KSwgJnAybXQpOw0KPiArICAgICAgICBtZm5fdCBnbDNtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9j a2VkKGQsIGdsM2dmbiwgJnAybXQpOw0KPiArDQo+ICAgICAgICAgIGlmICggcDJtX2lzX3JhbShw Mm10KSApDQo+ICAgICAgICAgICAgICBzbDNtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBnbDNt Zm4sIFNIX3R5cGVfbDNfc2hhZG93KTsNCj4gICAgICAgICAgZWxzZSBpZiAoIHAybXQgIT0gcDJt X3BvcHVsYXRlX29uX2RlbWFuZCApDQo+IEBAIC0yMTg1LDcgKzIxODYsOCBAQCBzdGF0aWMgaW50 IHZhbGlkYXRlX2dsM2Uoc3RydWN0IHZjcHUgKnYsIHZvaWQNCj4gKm5ld19nZSwgbWZuX3Qgc2wz bWZuLCB2b2lkICpzZSkNCj4gICAgICAgICAgICFndWVzdF9sM2VfcnN2ZF9iaXRzKHYsIG5ld19n bDNlKSApDQo+ICAgICAgew0KPiAgICAgICAgICBnZm5fdCBnbDJnZm4gPSBndWVzdF9sM2VfZ2V0 X2dmbihuZXdfZ2wzZSk7DQo+IC0gICAgICAgIG1mbl90IGdsMm1mbiA9IGdldF9nZm5fcXVlcnlf dW5sb2NrZWQoZCwgZ2ZuX3goZ2wyZ2ZuKSwgJnAybXQpOw0KPiArICAgICAgICBtZm5fdCBnbDJt Zm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdsMmdmbiwgJnAybXQpOw0KPiArDQo+ICAg ICAgICAgIGlmICggcDJtX2lzX3JhbShwMm10KSApDQo+ICAgICAgICAgICAgICBzbDJtZm4gPSBn ZXRfc2hhZG93X3N0YXR1cyhkLCBnbDJtZm4sIFNIX3R5cGVfbDJfc2hhZG93KTsNCj4gICAgICAg ICAgZWxzZSBpZiAoIHAybXQgIT0gcDJtX3BvcHVsYXRlX29uX2RlbWFuZCApDQo+IEBAIC0yMjM2 LDcgKzIyMzgsOCBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2dsMmUoc3RydWN0IHZjcHUgKnYsIHZv aWQNCj4gKm5ld19nZSwgbWZuX3Qgc2wybWZuLCB2b2lkICpzZSkNCj4gICAgICAgICAgfQ0KPiAg ICAgICAgICBlbHNlDQo+ICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgIG1mbl90IGdsMW1mbiA9 IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2wxZ2ZuKSwNCj4gJnAybXQpOw0KPiAr ICAgICAgICAgICAgbWZuX3QgZ2wxbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnbDFn Zm4sICZwMm10KTsNCj4gKw0KPiAgICAgICAgICAgICAgaWYgKCBwMm1faXNfcmFtKHAybXQpICkN Cj4gICAgICAgICAgICAgICAgICBzbDFtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBnbDFtZm4s IFNIX3R5cGVfbDFfc2hhZG93KTsNCj4gICAgICAgICAgICAgIGVsc2UgaWYgKCBwMm10ICE9IHAy bV9wb3B1bGF0ZV9vbl9kZW1hbmQgKQ0KPiBAQCAtMjI3MCw3ICsyMjczLDcgQEAgc3RhdGljIGlu dCB2YWxpZGF0ZV9nbDFlKHN0cnVjdCB2Y3B1ICp2LCB2b2lkDQo+ICpuZXdfZ2UsIG1mbl90IHNs MW1mbiwgdm9pZCAqc2UpDQo+ICAgICAgICAgICAhZ3Vlc3RfbDFlX3JzdmRfYml0cyh2LCBuZXdf Z2wxZSkgKQ0KPiAgICAgIHsNCj4gICAgICAgICAgZ2ZuID0gZ3Vlc3RfbDFlX2dldF9nZm4obmV3 X2dsMWUpOw0KPiAtICAgICAgICBnbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm5f eChnZm4pLCAmcDJtdCk7DQo+ICsgICAgICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2Vk KGQsIGdmbiwgJnAybXQpOw0KPiAgICAgIH0NCj4gDQo+ICAgICAgbDFlX3Byb3BhZ2F0ZV9mcm9t X2d1ZXN0KHYsIG5ld19nbDFlLCBnbWZuLCAmbmV3X3NsMWUsIGZ0X3ByZWZldGNoLA0KPiBwMm10 KTsNCj4gQEAgLTIzMzUsNyArMjMzOCw3IEBAIHZvaWQgc2hfcmVzeW5jX2wxKHN0cnVjdCB2Y3B1 ICp2LCBtZm5fdCBnbDFtZm4sDQo+IG1mbl90IHNucG1mbikNCj4gICAgICAgICAgICAgICAgICAg IWd1ZXN0X2wxZV9yc3ZkX2JpdHModiwgZ2wxZSkgKQ0KPiAgICAgICAgICAgICAgew0KPiAgICAg ICAgICAgICAgICAgIGdmbiA9IGd1ZXN0X2wxZV9nZXRfZ2ZuKGdsMWUpOw0KPiAtICAgICAgICAg ICAgICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbl94KGdmbiksICZwMm10 KTsNCj4gKyAgICAgICAgICAgICAgICBnbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBn Zm4sICZwMm10KTsNCj4gICAgICAgICAgICAgIH0NCj4gDQo+ICAgICAgICAgICAgICBsMWVfcHJv cGFnYXRlX2Zyb21fZ3Vlc3QodiwgZ2wxZSwgZ21mbiwgJm5zbDFlLCBmdF9wcmVmZXRjaCwNCj4g cDJtdCk7DQo+IEBAIC0yNjE1LDcgKzI2MTgsNyBAQCBzdGF0aWMgdm9pZCBzaF9wcmVmZXRjaChz dHJ1Y3QgdmNwdSAqdiwgd2Fsa190ICpndywNCj4gICAgICAgICAgICAgICAhZ3Vlc3RfbDFlX3Jz dmRfYml0cyh2LCBnbDFlKSApDQo+ICAgICAgICAgIHsNCj4gICAgICAgICAgICAgIGdmbiA9IGd1 ZXN0X2wxZV9nZXRfZ2ZuKGdsMWUpOw0KPiAtICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVl cnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2ZuKSwgJnAybXQpOw0KPiArICAgICAgICAgICAgZ21mbiA9 IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuLCAmcDJtdCk7DQo+ICAgICAgICAgIH0NCj4g ICAgICAgICAgZWxzZQ0KPiAgICAgICAgICB7DQo+IEBAIC0zMDcxLDcgKzMwNzQsNyBAQCBzdGF0 aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsDQo+ICAgICAgICAgIFNIQURPV19Q UklOVEsoIkJBRCBnZm49JSJTSF9QUklfZ2ZuIiBnbWZuPSUiUFJJX21mbiJcbiIsDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgZ2ZuX3goZ2ZuKSwgbWZuX3goZ21mbikpOw0KPiAgICAgICAgICBz aF9yZXNldF9lYXJseV91bnNoYWRvdyh2KTsNCj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm5feChn Zm4pKTsNCj4gKyAgICAgICAgcHV0X2dmbihkLCBnZm4pOw0KPiAgICAgICAgICBnb3RvIHByb3Bh Z2F0ZTsNCj4gICAgICB9DQo+IA0KPiBAQCAtMzExNyw3ICszMTIwLDcgQEAgc3RhdGljIGludCBz aF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LA0KPiAgICAgIGlmICggcmMgJiBHV19STVdSX1JF V0FMSyApDQo+ICAgICAgew0KPiAgICAgICAgICBwYWdpbmdfdW5sb2NrKGQpOw0KPiAtICAgICAg ICBwdXRfZ2ZuKGQsIGdmbl94KGdmbikpOw0KPiArICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ ICAgICAgICAgIGdvdG8gcmV3YWxrOw0KPiAgICAgIH0NCj4gICNlbmRpZiAvKiBPT1MgKi8NCj4g QEAgLTMxMjYsNyArMzEyOSw3IEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNw dSAqdiwNCj4gICAgICB7DQo+ICAgICAgICAgIHBlcmZjX2luY3Ioc2hhZG93X2luY29uc2lzdGVu dF9nd2Fsayk7DQo+ICAgICAgICAgIHBhZ2luZ191bmxvY2soZCk7DQo+IC0gICAgICAgIHB1dF9n Zm4oZCwgZ2ZuX3goZ2ZuKSk7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gICAgICAg ICAgZ290byByZXdhbGs7DQo+ICAgICAgfQ0KPiANCj4gQEAgLTMxNTMsNyArMzE1Niw3IEBAIHN0 YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwNCj4gICAgICAgICAgQVNTRVJU KGQtPmlzX3NodXR0aW5nX2Rvd24pOw0KPiAgI2VuZGlmDQo+ICAgICAgICAgIHBhZ2luZ191bmxv Y2soZCk7DQo+IC0gICAgICAgIHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7DQo+ICsgICAgICAgIHB1 dF9nZm4oZCwgZ2ZuKTsNCj4gICAgICAgICAgdHJhY2Vfc2hhZG93X2dlbihUUkNfU0hBRE9XX0RP TUZfRFlJTkcsIHZhKTsNCj4gICAgICAgICAgcmV0dXJuIDA7DQo+ICAgICAgfQ0KPiBAQCAtMzE3 MSw3ICszMTc0LDcgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LA0K PiAgICAgICAgICAgKiBmYWlsZWQuIFdlIGNhbm5vdCBzYWZlbHkgY29udGludWUgc2luY2Ugc29t ZSBwYWdlIGlzIHN0aWxsDQo+ICAgICAgICAgICAqIE9PUyBidXQgbm90IGluIHRoZSBoYXNoIHRh YmxlIGFueW1vcmUuICovDQo+ICAgICAgICAgIHBhZ2luZ191bmxvY2soZCk7DQo+IC0gICAgICAg IHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4g ICAgICAgICAgcmV0dXJuIDA7DQo+ICAgICAgfQ0KPiANCj4gQEAgLTMxODEsNyArMzE4NCw3IEBA IHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwNCj4gICAgICB7DQo+ICAg ICAgICAgIHBlcmZjX2luY3Ioc2hhZG93X2luY29uc2lzdGVudF9nd2Fsayk7DQo+ICAgICAgICAg IHBhZ2luZ191bmxvY2soZCk7DQo+IC0gICAgICAgIHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7DQo+ ICsgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gICAgICAgICAgZ290byByZXdhbGs7DQo+ICAg ICAgfQ0KPiAgI2VuZGlmIC8qIE9PUyAqLw0KPiBAQCAtMzI2Nyw3ICszMjcwLDcgQEAgc3RhdGlj IGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LA0KPiAgICAgIFNIQURPV19QUklOVEso ImZpeGVkXG4iKTsNCj4gICAgICBzaGFkb3dfYXVkaXRfdGFibGVzKHYpOw0KPiAgICAgIHBhZ2lu Z191bmxvY2soZCk7DQo+IC0gICAgcHV0X2dmbihkLCBnZm5feChnZm4pKTsNCj4gKyAgICBwdXRf Z2ZuKGQsIGdmbik7DQo+ICAgICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsNCj4gDQo+ICAg ZW11bGF0ZToNCj4gQEAgLTMzMzcsNyArMzM0MCw3IEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVs dChzdHJ1Y3QgdmNwdSAqdiwNCj4gICAgICBzaF9hdWRpdF9ndyh2LCAmZ3cpOw0KPiAgICAgIHNo YWRvd19hdWRpdF90YWJsZXModik7DQo+ICAgICAgcGFnaW5nX3VubG9jayhkKTsNCj4gLSAgICBw dXRfZ2ZuKGQsIGdmbl94KGdmbikpOw0KPiArICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gDQo+ICAg ICAgdGhpc19jcHUodHJhY2VfZW11bGF0ZV93cml0ZV92YWwpID0gMDsNCj4gDQo+IEBAIC0zNTIx LDcgKzM1MjQsNyBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsDQo+ ICAgICAgc2hhZG93X2F1ZGl0X3RhYmxlcyh2KTsNCj4gICAgICBzaF9yZXNldF9lYXJseV91bnNo YWRvdyh2KTsNCj4gICAgICBwYWdpbmdfdW5sb2NrKGQpOw0KPiAtICAgIHB1dF9nZm4oZCwgZ2Zu X3goZ2ZuKSk7DQo+ICsgICAgcHV0X2dmbihkLCBnZm4pOw0KPiAgICAgIHRyYWNlX3NoYWRvd19n ZW4oVFJDX1NIQURPV19NTUlPLCB2YSk7DQo+ICAgICAgcmV0dXJuIChoYW5kbGVfbW1pb193aXRo X3RyYW5zbGF0aW9uKHZhLCBncGEgPj4gUEFHRV9TSElGVCwgYWNjZXNzKQ0KPiAgICAgICAgICAg ICAgPyBFWENSRVRfZmF1bHRfZml4ZWQgOiAwKTsNCj4gQEAgLTM1MzUsNyArMzUzOCw3IEBAIHN0 YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwNCj4gICAgICBzaGFkb3dfYXVk aXRfdGFibGVzKHYpOw0KPiAgICAgIHNoX3Jlc2V0X2Vhcmx5X3Vuc2hhZG93KHYpOw0KPiAgICAg IHBhZ2luZ191bmxvY2soZCk7DQo+IC0gICAgcHV0X2dmbihkLCBnZm5feChnZm4pKTsNCj4gKyAg ICBwdXRfZ2ZuKGQsIGdmbik7DQo+IA0KPiAgcHJvcGFnYXRlOg0KPiAgICAgIHRyYWNlX25vdF9z aGFkb3dfZmF1bHQoZ3cubDFlLCB2YSk7DQo+IEBAIC00MTE2LDcgKzQxMTksNyBAQCBzaF91cGRh dGVfY3IzKHN0cnVjdCB2Y3B1ICp2LCBpbnQgZG9fbG9ja2luZywgYm9vbA0KPiBub2ZsdXNoKQ0K PiAgICAgICAgICAgICAgaWYgKCBndWVzdF9sM2VfZ2V0X2ZsYWdzKGdsM2VbaV0pICYgX1BBR0Vf UFJFU0VOVCApDQo+ICAgICAgICAgICAgICB7DQo+ICAgICAgICAgICAgICAgICAgZ2wyZ2ZuID0g Z3Vlc3RfbDNlX2dldF9nZm4oZ2wzZVtpXSk7DQo+IC0gICAgICAgICAgICAgICAgZ2wybWZuID0g Z2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm5feChnbDJnZm4pLCAmcDJtdCk7DQo+ICsgICAg ICAgICAgICAgICAgZ2wybWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnbDJnZm4sICZw Mm10KTsNCj4gICAgICAgICAgICAgICAgICBpZiAoIHAybV9pc19yYW0ocDJtdCkgKQ0KPiAgICAg ICAgICAgICAgICAgICAgICBmbHVzaCB8PSBzaF9yZW1vdmVfd3JpdGVfYWNjZXNzKGQsIGdsMm1m biwgMiwgMCk7DQo+ICAgICAgICAgICAgICB9DQo+IEBAIC00MTI5LDcgKzQxMzIsNyBAQCBzaF91 cGRhdGVfY3IzKHN0cnVjdCB2Y3B1ICp2LCBpbnQgZG9fbG9ja2luZywgYm9vbA0KPiBub2ZsdXNo KQ0KPiAgICAgICAgICAgICAgaWYgKCBndWVzdF9sM2VfZ2V0X2ZsYWdzKGdsM2VbaV0pICYgX1BB R0VfUFJFU0VOVCApDQo+ICAgICAgICAgICAgICB7DQo+ICAgICAgICAgICAgICAgICAgZ2wyZ2Zu ID0gZ3Vlc3RfbDNlX2dldF9nZm4oZ2wzZVtpXSk7DQo+IC0gICAgICAgICAgICAgICAgZ2wybWZu ID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm5feChnbDJnZm4pLCAmcDJtdCk7DQo+ICsg ICAgICAgICAgICAgICAgZ2wybWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnbDJnZm4s ICZwMm10KTsNCj4gICAgICAgICAgICAgICAgICBpZiAoIHAybV9pc19yYW0ocDJtdCkgKQ0KPiAg ICAgICAgICAgICAgICAgICAgICBzaF9zZXRfdG9wbGV2ZWxfc2hhZG93KHYsIGksIGdsMm1mbiwg KGkgPT0gMykNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IFNIX3R5cGVfbDJoX3NoYWRvdw0KPiBAQCAtNDUzNiw3ICs0NTM5LDcgQEAgc3RhdGljIHZvaWQg c2hfcGFnZXRhYmxlX2R5aW5nKHBhZGRyX3QgZ3BhKQ0KPiAgICAgIHAybV90eXBlX3QgcDJtdDsN Cj4gICAgICBjaGFyICpnbDNwYSA9IE5VTEw7DQo+ICAgICAgZ3Vlc3RfbDNlX3QgKmdsM2UgPSBO VUxMOw0KPiAtICAgIHVuc2lnbmVkIGxvbmcgbDNnZm47DQo+ICsgICAgZ2ZuX3QgbDNnZm47DQo+ ICAgICAgbWZuX3QgbDNtZm47DQo+IA0KPiAgICAgIGdjcjMgPSB2LT5hcmNoLmh2bS5ndWVzdF9j clszXTsNCj4gQEAgLTQ1NDQsOCArNDU0Nyw4IEBAIHN0YXRpYyB2b2lkIHNoX3BhZ2V0YWJsZV9k eWluZyhwYWRkcl90IGdwYSkNCj4gICAgICBpZiAoIGdjcjMgPT0gZ3BhICkNCj4gICAgICAgICAg ZmFzdF9wYXRoID0gMTsNCj4gDQo+IC0gICAgbDNnZm4gPSBncGEgPj4gUEFHRV9TSElGVDsNCj4g LSAgICBsM21mbiA9IGdldF9nZm5fcXVlcnkoZCwgX2dmbihsM2dmbiksICZwMm10KTsNCj4gKyAg ICBsM2dmbiA9IGdhZGRyX3RvX2dmbihncGEpOw0KPiArICAgIGwzbWZuID0gZ2V0X2dmbl9xdWVy eShkLCBsM2dmbiwgJnAybXQpOw0KPiAgICAgIGlmICggIW1mbl92YWxpZChsM21mbikgfHwgIXAy bV9pc19yYW0ocDJtdCkgKQ0KPiAgICAgIHsNCj4gICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJV RyAic2hfcGFnZXRhYmxlX2R5aW5nOiBncGEgbm90IHZhbGlkDQo+ICUiUFJJcGFkZHIiXG4iLA0K PiBAQCAtNDU3Myw4ICs0NTc2LDcgQEAgc3RhdGljIHZvaWQgc2hfcGFnZXRhYmxlX2R5aW5nKHBh ZGRyX3QgZ3BhKQ0KPiAgICAgICAgICBlbHNlDQo+ICAgICAgICAgIHsNCj4gICAgICAgICAgICAg IC8qIHJldHJpZXZpbmcgdGhlIGwycyAqLw0KPiAtICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5f cXVlcnlfdW5sb2NrZWQoZCwNCj4gZ2ZuX3goZ3Vlc3RfbDNlX2dldF9nZm4oZ2wzZVtpXSkpLA0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAybXQpOw0KPiAr ICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ3Vlc3RfbDNlX2dl dF9nZm4oZ2wzZVtpXSksDQo+ICZwMm10KTsNCj4gICAgICAgICAgICAgIHNtZm4gPSB1bmxpa2Vs eShtZm5fZXEoZ21mbiwgSU5WQUxJRF9NRk4pKQ0KPiAgICAgICAgICAgICAgICAgICAgID8gSU5W QUxJRF9NRk4NCj4gICAgICAgICAgICAgICAgICAgICA6IHNoYWRvd19oYXNoX2xvb2t1cChkLCBt Zm5feChnbWZuKSwNCj4gU0hfdHlwZV9sMl9wYWVfc2hhZG93KTsNCj4gQEAgLTQ2MDksMTAgKzQ2 MTEsMTEgQEAgc3RhdGljIHZvaWQgc2hfcGFnZXRhYmxlX2R5aW5nKHBhZGRyX3QgZ3BhKQ0KPiAg ew0KPiAgICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsNCj4gICAgICBzdHJ1Y3QgZG9tYWlu ICpkID0gdi0+ZG9tYWluOw0KPiArICAgIGdmbl90IGdmbiA9IGdhZGRyX3RvX2dmbihncGEpOw0K PiAgICAgIG1mbl90IHNtZm4sIGdtZm47DQo+ICAgICAgcDJtX3R5cGVfdCBwMm10Ow0KPiANCj4g LSAgICBnbWZuID0gZ2V0X2dmbl9xdWVyeShkLCBfZ2ZuKGdwYSA+PiBQQUdFX1NISUZUKSwgJnAy bXQpOw0KPiArICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbiwgJnAybXQpOw0KPiAgICAg IHBhZ2luZ19sb2NrKGQpOw0KPiANCj4gICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID09IDINCj4g QEAgLTQ2MzcsNyArNDY0MCw3IEBAIHN0YXRpYyB2b2lkIHNoX3BhZ2V0YWJsZV9keWluZyhwYWRk cl90IGdwYSkNCj4gICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cucGFnZXRhYmxlX2R5aW5nID0g MTsNCj4gDQo+ICAgICAgcGFnaW5nX3VubG9jayhkKTsNCj4gLSAgICBwdXRfZ2ZuKGQsIGdwYSA+ PiBQQUdFX1NISUZUKTsNCj4gKyAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICB9DQo+ICAjZW5kaWYN Cj4gDQo+IEBAIC00NzU5LDcgKzQ3NjIsNyBAQCBpbnQgc2hfYXVkaXRfbDFfdGFibGUoc3RydWN0 IHZjcHUgKnYsIG1mbl90IHNsMW1mbiwNCj4gbWZuX3QgeCkNCj4gICAgICAgICAgICAgIHsNCj4g ICAgICAgICAgICAgICAgICBnZm4gPSBndWVzdF9sMWVfZ2V0X2dmbigqZ2wxZSk7DQo+ICAgICAg ICAgICAgICAgICAgbWZuID0gc2hhZG93X2wxZV9nZXRfbWZuKCpzbDFlKTsNCj4gLSAgICAgICAg ICAgICAgICBnbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZCh2LT5kb21haW4sIGdmbl94KGdm biksDQo+ICZwMm10KTsNCj4gKyAgICAgICAgICAgICAgICBnbWZuID0gZ2V0X2dmbl9xdWVyeV91 bmxvY2tlZCh2LT5kb21haW4sIGdmbiwgJnAybXQpOw0KPiAgICAgICAgICAgICAgICAgIGlmICgg IXAybV9pc19ncmFudChwMm10KSAmJiAhbWZuX2VxKGdtZm4sIG1mbikgKQ0KPiAgICAgICAgICAg ICAgICAgICAgICBBVURJVF9GQUlMKDEsICJiYWQgdHJhbnNsYXRpb246IGdmbiAlIiBTSF9QUklf Z2ZuDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtLT4gJSIgUFJJX21mbiAi ICE9IG1mbiAlIiBQUklfbWZuLA0KPiBAQCAtNDgzMiwxNiArNDgzNSwxNSBAQCBpbnQgc2hfYXVk aXRfbDJfdGFibGUoc3RydWN0IHZjcHUgKnYsIG1mbl90DQo+IHNsMm1mbiwgbWZuX3QgeCkNCj4g ICAgICAgICAgICAgIGdtZm4gPSAoZ3Vlc3RfbDJlX2dldF9mbGFncygqZ2wyZSkgJiBfUEFHRV9Q U0UpDQo+ICAgICAgICAgICAgICAgICAgPyBnZXRfZmwxX3NoYWRvd19zdGF0dXMoZCwgZ2ZuKQ0K PiAgICAgICAgICAgICAgICAgIDogZ2V0X3NoYWRvd19zdGF0dXMoZCwNCj4gLSAgICAgICAgICAg ICAgICAgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm5feChnZm4pLA0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwMm10KSwgU0hfdHlwZV9sMV9zaGFk b3cpOw0KPiArICAgICAgICAgICAgICAgICAgICBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdm biwgJnAybXQpLA0KPiBTSF90eXBlX2wxX3NoYWRvdyk7DQo+ICAgICAgICAgICAgICBpZiAoICFt Zm5fZXEoZ21mbiwgbWZuKSApDQo+ICAgICAgICAgICAgICAgICAgQVVESVRfRkFJTCgyLCAiYmFk IHRyYW5zbGF0aW9uOiBnZm4gJSIgU0hfUFJJX2dmbg0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAoLS0+ICUiIFBSSV9tZm4gIikiDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiIC0tPiAlIiBQUklfbWZuICIgIT0gbWZuICUiIFBSSV9tZm4sDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZm5feChnZm4pLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGd1ZXN0X2wyZV9nZXRfZmxhZ3MoKmdsMmUpICYgX1BBR0VfUFNFKSA/IDANCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogbWZuX3goZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLA0KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChnZm4pLCAmcDJtdCkpLCBt Zm5feChnbWZuKSwNCj4gbWZuX3gobWZuKSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICA6IG1mbl94KGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuLA0KPiAmcDJtdCkpLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3goZ21mbiksIG1mbl94KG1mbikpOw0KPiAg ICAgICAgICB9DQo+ICAgICAgfSk7DQo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoZ3ApOw0KPiBA QCAtNDg4MSw4ICs0ODgzLDcgQEAgaW50IHNoX2F1ZGl0X2wzX3RhYmxlKHN0cnVjdCB2Y3B1ICp2 LCBtZm5fdCBzbDNtZm4sDQo+IG1mbl90IHgpDQo+ICAgICAgICAgIHsNCj4gICAgICAgICAgICAg IGdmbiA9IGd1ZXN0X2wzZV9nZXRfZ2ZuKCpnbDNlKTsNCj4gICAgICAgICAgICAgIG1mbiA9IHNo YWRvd19sM2VfZ2V0X21mbigqc2wzZSk7DQo+IC0gICAgICAgICAgICBnbWZuID0gZ2V0X3NoYWRv d19zdGF0dXMoZCwgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZCgNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkLCBnZm5feChnZm4pLCAmcDJtdCksDQo+ICsgICAgICAg ICAgICBnbWZuID0gZ2V0X3NoYWRvd19zdGF0dXMoZCwgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChk LCBnZm4sDQo+ICZwMm10KSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gMyB8fA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaXNfcHZfMzJiaXRfZG9tYWluKGQpKQ0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhc2hhZG93X21vZGVfZXh0ZXJuYWwoZCkNCj4g QEAgLTQ5MzEsOCArNDkzMiw3IEBAIGludCBzaF9hdWRpdF9sNF90YWJsZShzdHJ1Y3QgdmNwdSAq diwgbWZuX3Qgc2w0bWZuLA0KPiBtZm5fdCB4KQ0KPiAgICAgICAgICB7DQo+ICAgICAgICAgICAg ICBnZm4gPSBndWVzdF9sNGVfZ2V0X2dmbigqZ2w0ZSk7DQo+ICAgICAgICAgICAgICBtZm4gPSBz aGFkb3dfbDRlX2dldF9tZm4oKnNsNGUpOw0KPiAtICAgICAgICAgICAgZ21mbiA9IGdldF9zaGFk b3dfc3RhdHVzKGQsIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoDQo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZCwgZ2ZuX3goZ2ZuKSwgJnAybXQpLA0KPiArICAgICAgICAg ICAgZ21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwg Z2ZuLA0KPiAmcDJtdCksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U0hfdHlwZV9sM19zaGFkb3cpOw0KPiAgICAgICAgICAgICAgaWYgKCAhbWZuX2VxKGdtZm4sIG1m bikgKQ0KPiAgICAgICAgICAgICAgICAgIEFVRElUX0ZBSUwoNCwgImJhZCB0cmFuc2xhdGlvbjog Z2ZuICUiIFNIX1BSSV9nZm4NCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv dHlwZXMuaA0KPiBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvdHlwZXMuaA0KPiBpbmRleCBkNTA5 Njc0Li5mNjg4OTE5IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L3R5cGVz LmgNCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy90eXBlcy5oDQo+IEBAIC0xOTMsMTAg KzE5Myw2IEBAIHN0YXRpYyBpbmxpbmUgc2hhZG93X2w0ZV90IHNoYWRvd19sNGVfZnJvbV9tZm4o bWZuX3QNCj4gbWZuLCB1MzIgZmxhZ3MpDQo+ICB9KQ0KPiAgI2VuZGlmDQo+IA0KPiAtIC8qIE92 ZXJyaWRlIGdldF9nZm4gdG8gd29yayB3aXRoIGdmbl90ICovDQo+IC0jdW5kZWYgZ2V0X2dmbl9x dWVyeQ0KPiAtI2RlZmluZSBnZXRfZ2ZuX3F1ZXJ5KGQsIGcsIHQpIGdldF9nZm5fdHlwZSgoZCks IGdmbl94KGcpLCAodCksIDApDQo+IC0NCj4gIC8qIFRoZSBzaGFkb3cgdHlwZXMgbmVlZGVkIGZv ciB0aGUgdmFyaW91cyBsZXZlbHMuICovDQo+IA0KPiAgI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMg PT0gMg0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1v bi9ncmFudF90YWJsZS5jDQo+IGluZGV4IGY3ODYwZjYuLjU0ZjkwOWYgMTAwNjQ0DQo+IC0tLSBh L3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYw0KPiArKysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxl LmMNCj4gQEAgLTIwOTksNyArMjA5OSw3IEBAIGdudHRhYl90cmFuc2ZlcigNCj4gICAgICAgICAg ew0KPiAgICAgICAgICAgICAgcDJtX3R5cGVfdCBwMm10Ow0KPiANCj4gLSAgICAgICAgICAgIG1m biA9IGdldF9nZm5fdW5zaGFyZShkLCBnb3AubWZuLCAmcDJtdCk7DQo+ICsgICAgICAgICAgICBt Zm4gPSBnZXRfZ2ZuX3Vuc2hhcmUoZCwgX2dmbihnb3AubWZuKSwgJnAybXQpOw0KPiAgICAgICAg ICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpIHx8ICFwMm1faXNfdmFsaWQocDJtdCkgKQ0K PiAgICAgICAgICAgICAgICAgIG1mbiA9IElOVkFMSURfTUZOOw0KPiAgICAgICAgICB9DQo+IEBA IC0yMTExLDcgKzIxMTEsNyBAQCBnbnR0YWJfdHJhbnNmZXIoDQo+ICAgICAgICAgIGlmICggdW5s aWtlbHkoIW1mbl92YWxpZChtZm4pKSApDQo+ICAgICAgICAgIHsNCj4gICNpZmRlZiBDT05GSUdf WDg2DQo+IC0gICAgICAgICAgICBwdXRfZ2ZuKGQsIGdvcC5tZm4pOw0KPiArICAgICAgICAgICAg cHV0X2dmbihkLCBfZ2ZuKGdvcC5tZm4pKTsNCj4gICNlbmRpZg0KPiAgICAgICAgICAgICAgZ2Rw cmludGsoWEVOTE9HX0lORk8sICJvdXQtb2YtcmFuZ2UgJWx4XG4iLCAodW5zaWduZWQNCj4gbG9u Zylnb3AubWZuKTsNCj4gICAgICAgICAgICAgIGdvcC5zdGF0dXMgPSBHTlRTVF9iYWRfcGFnZTsN Cj4gQEAgLTIxMjIsNyArMjEyMiw3IEBAIGdudHRhYl90cmFuc2ZlcigNCj4gICAgICAgICAgaWYg KCAocmMgPSBzdGVhbF9wYWdlKGQsIHBhZ2UsIDApKSA8IDAgKQ0KPiAgICAgICAgICB7DQo+ICAj aWZkZWYgQ09ORklHX1g4Ng0KPiAtICAgICAgICAgICAgcHV0X2dmbihkLCBnb3AubWZuKTsNCj4g KyAgICAgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnb3AubWZuKSk7DQo+ICAjZW5kaWYNCj4gICAg ICAgICAgICAgIGdvcC5zdGF0dXMgPSByYyA9PSAtRUlOVkFMID8gR05UU1RfYmFkX3BhZ2UgOg0K PiBHTlRTVF9nZW5lcmFsX2Vycm9yOw0KPiAgICAgICAgICAgICAgZ290byBjb3B5YmFjazsNCj4g QEAgLTIxNTQsNyArMjE1NCw3IEBAIGdudHRhYl90cmFuc2ZlcigNCj4gICAgICAgICAgICAgIHJj dV91bmxvY2tfZG9tYWluKGUpOw0KPiAgICAgICAgICBwdXRfZ2ZuX2FuZF9jb3B5YmFjazoNCj4g ICNpZmRlZiBDT05GSUdfWDg2DQo+IC0gICAgICAgICAgICBwdXRfZ2ZuKGQsIGdvcC5tZm4pOw0K PiArICAgICAgICAgICAgcHV0X2dmbihkLCBfZ2ZuKGdvcC5tZm4pKTsNCj4gICNlbmRpZg0KPiAg ICAgICAgICAgICAgcGFnZS0+Y291bnRfaW5mbyAmPSB+KFBHQ19jb3VudF9tYXNrfFBHQ19hbGxv Y2F0ZWQpOw0KPiAgICAgICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UocGFnZSk7DQo+IEBAIC0y MjQzLDcgKzIyNDMsNyBAQCBnbnR0YWJfdHJhbnNmZXIoDQo+IA0KPiAgICAgICAgICBzcGluX3Vu bG9jaygmZS0+cGFnZV9hbGxvY19sb2NrKTsNCj4gICNpZmRlZiBDT05GSUdfWDg2DQo+IC0gICAg ICAgIHB1dF9nZm4oZCwgZ29wLm1mbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnb3Au bWZuKSk7DQo+ICAjZW5kaWYNCj4gDQo+ICAgICAgICAgIFRSQUNFXzFEKFRSQ19NRU1fUEFHRV9H UkFOVF9UUkFOU0ZFUiwgZS0+ZG9tYWluX2lkKTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v bWVtb3J5LmMgYi94ZW4vY29tbW9uL21lbW9yeS5jDQo+IGluZGV4IDE3NWJkNjIuLmM1OWEwMTcg MTAwNjQ0DQo+IC0tLSBhL3hlbi9jb21tb24vbWVtb3J5LmMNCj4gKysrIGIveGVuL2NvbW1vbi9t ZW1vcnkuYw0KPiBAQCAtMzAzLDEwICszMDMsMTAgQEAgaW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkDQo+IGxvbmcgZ21mbikNCj4gICAgICBpbnQgcmM7DQo+ IA0KPiAgI2lmZGVmIENPTkZJR19YODYNCj4gLSAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdt Zm4sICZwMm10KTsNCj4gKyAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIF9nZm4oZ21mbiksICZw Mm10KTsNCj4gICAgICBpZiAoIHVubGlrZWx5KHAybXQgPT0gcDJtX2ludmFsaWQpIHx8IHVubGlr ZWx5KHAybXQgPT0gcDJtX21taW9fZG0pICkNCj4gICAgICB7DQo+IC0gICAgICAgIHB1dF9nZm4o ZCwgZ21mbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnbWZuKSk7DQo+IA0KPiAgICAg ICAgICByZXR1cm4gLUVOT0VOVDsNCj4gICAgICB9DQo+IEBAIC0zMzYsNyArMzM2LDcgQEAgaW50 IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcNCj4gZ21m bikNCj4gICAgICAgICAgICAgIGdvdG8gb3V0X3B1dF9nZm47DQo+ICAgICAgICAgIH0NCj4gDQo+ IC0gICAgICAgIHB1dF9nZm4oZCwgZ21mbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihn bWZuKSk7DQo+IA0KPiAgICAgICAgICBpZiAoIHBhZ2UgKQ0KPiAgICAgICAgICB7DQo+IEBAIC0z NTksNyArMzU5LDcgQEAgaW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcNCj4gZ21mbikNCj4gICAgICBpZiAoIHVubGlrZWx5KCFtZm5fdmFsaWQobWZu KSkgKQ0KPiAgICAgIHsNCj4gICNpZmRlZiBDT05GSUdfWDg2DQo+IC0gICAgICAgIHB1dF9nZm4o ZCwgZ21mbik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnbWZuKSk7DQo+ICAjZW5kaWYN Cj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJEb21haW4gJXUgcGFnZSBudW1iZXIg JWx4IGludmFsaWRcbiIsDQo+ICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBnbWZuKTsN Cj4gQEAgLTM4Miw3ICszODIsNyBAQCBpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZw0KPiBnbWZuKQ0KPiAgICAgICAgICAgICAgZ290byBvdXRfcHV0 X2dmbjsNCj4gICAgICAgICAgfQ0KPiAgICAgICAgICAvKiBNYXliZSB0aGUgbWZuIGNoYW5nZWQg Ki8NCj4gLSAgICAgICAgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnbWZuLCAmcDJt dCk7DQo+ICsgICAgICAgIG1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgX2dmbihnbWZu KSwgJnAybXQpOw0KPiAgICAgICAgICBBU1NFUlQoIXAybV9pc19zaGFyZWQocDJtdCkpOw0KPiAg ICAgIH0NCj4gICNlbmRpZiAvKiBDT05GSUdfWDg2ICovDQo+IEBAIC0zOTEsNyArMzkxLDcgQEAg aW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcNCj4g Z21mbikNCj4gICAgICBpZiAoIHVubGlrZWx5KCFnZXRfcGFnZShwYWdlLCBkKSkgKQ0KPiAgICAg IHsNCj4gICNpZmRlZiBDT05GSUdfWDg2DQo+IC0gICAgICAgIHB1dF9nZm4oZCwgZ21mbik7DQo+ ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnbWZuKSk7DQo+ICAjZW5kaWYNCj4gICAgICAgICAg Z2RwcmludGsoWEVOTE9HX0lORk8sICJCYWQgcGFnZSBmcmVlIGZvciBkb21haW4gJXVcbiIsIGQt DQo+ID5kb21haW5faWQpOw0KPiANCj4gQEAgLTQxNiw3ICs0MTYsNyBAQCBpbnQgZ3Vlc3RfcmVt b3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZw0KPiBnbWZuKQ0KPiANCj4g ICNpZmRlZiBDT05GSUdfWDg2DQo+ICAgb3V0X3B1dF9nZm46DQo+IC0gICAgcHV0X2dmbihkLCBn bWZuKTsNCj4gKyAgICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbikpOw0KPiAgI2VuZGlmDQo+IA0KPiAg ICAgIC8qDQo+IEBAIC02NTEsMTAgKzY1MSwxMCBAQCBzdGF0aWMgbG9uZw0KPiBtZW1vcnlfZXhj aGFuZ2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWVtb3J5X2V4Y2hhbmdlX3QpIGFyZykN Cj4gICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHAybXQ7DQo+IA0KPiAgICAgICAgICAgICAg ICAgIC8qIFNoYXJlZCBwYWdlcyBjYW5ub3QgYmUgZXhjaGFuZ2VkICovDQo+IC0gICAgICAgICAg ICAgICAgbWZuID0gZ2V0X2dmbl91bnNoYXJlKGQsIGdtZm4gKyBrLCAmcDJtdCk7DQo+ICsgICAg ICAgICAgICAgICAgbWZuID0gZ2V0X2dmbl91bnNoYXJlKGQsIF9nZm4oZ21mbiArIGspLCAmcDJt dCk7DQo+ICAgICAgICAgICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpICkNCj4gICAg ICAgICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ21mbiAr IGspOw0KPiArICAgICAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbiArIGspKTsN Cj4gICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOw0KPiAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGZhaWw7DQo+ICAgICAgICAgICAgICAgICAgfQ0KPiBAQCAtNjY0LDcgKzY2NCw3 IEBAIHN0YXRpYyBsb25nDQo+IG1lbW9yeV9leGNoYW5nZShYRU5fR1VFU1RfSEFORExFX1BBUkFN KHhlbl9tZW1vcnlfZXhjaGFuZ2VfdCkgYXJnKQ0KPiAgICAgICAgICAgICAgICAgIGlmICggdW5s aWtlbHkoIW1mbl92YWxpZChtZm4pKSApDQo+ICAgICAgICAgICAgICAgICAgew0KPiAgI2lmZGVm IENPTkZJR19YODYNCj4gLSAgICAgICAgICAgICAgICAgICAgcHV0X2dmbihkLCBnbWZuICsgayk7 DQo+ICsgICAgICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnbWZuICsgaykpOw0KPiAg I2VuZGlmDQo+ICAgICAgICAgICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsNCj4gICAgICAgICAg ICAgICAgICAgICAgZ290byBmYWlsOw0KPiBAQCAtNjc2LDE0ICs2NzYsMTQgQEAgc3RhdGljIGxv bmcNCj4gbWVtb3J5X2V4Y2hhbmdlKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX21lbW9yeV9l eGNoYW5nZV90KSBhcmcpDQo+ICAgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseShyYykgKQ0K PiAgICAgICAgICAgICAgICAgIHsNCj4gICNpZmRlZiBDT05GSUdfWDg2DQo+IC0gICAgICAgICAg ICAgICAgICAgIHB1dF9nZm4oZCwgZ21mbiArIGspOw0KPiArICAgICAgICAgICAgICAgICAgICBw dXRfZ2ZuKGQsIF9nZm4oZ21mbiArIGspKTsNCj4gICNlbmRpZg0KPiAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGZhaWw7DQo+ICAgICAgICAgICAgICAgICAgfQ0KPiANCj4gICAgICAgICAgICAg ICAgICBwYWdlX2xpc3RfYWRkKHBhZ2UsICZpbl9jaHVua19saXN0KTsNCj4gICNpZmRlZiBDT05G SUdfWDg2DQo+IC0gICAgICAgICAgICAgICAgcHV0X2dmbihkLCBnbWZuICsgayk7DQo+ICsgICAg ICAgICAgICAgICAgcHV0X2dmbihkLCBfZ2ZuKGdtZm4gKyBrKSk7DQo+ICAjZW5kaWYNCj4gICAg ICAgICAgICAgIH0NCj4gICAgICAgICAgfQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL2lvbW11X2d1ZXN0LmMNCj4gYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h bWQvaW9tbXVfZ3Vlc3QuYw0KPiBpbmRleCAwM2NhMGNmLi43YWIzYzc3IDEwMDY0NA0KPiAtLS0g YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vlc3QuYw0KPiArKysgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vlc3QuYw0KPiBAQCAtMjEsMTQgKzIxLDYg QEANCj4gICNpbmNsdWRlIDxhc20vYW1kLWlvbW11Lmg+DQo+ICAjaW5jbHVkZSA8YXNtL2h2bS9z dm0vYW1kLWlvbW11LXByb3RvLmg+DQo+IA0KPiAtLyogT3ZlcnJpZGUge2dldCxwdXR9X2dmbiB0 byB3b3JrIHdpdGggZ2ZuX3QgKi8NCj4gLSN1bmRlZiBnZXRfZ2ZuDQo+IC0jZGVmaW5lIGdldF9n Zm4oZCwgZywgdCkgZ2V0X2dmbl90eXBlKGQsIGdmbl94KGcpLCB0LCBQMk1fQUxMT0MpDQo+IC0j dW5kZWYgZ2V0X2dmbl9xdWVyeQ0KPiAtI2RlZmluZSBnZXRfZ2ZuX3F1ZXJ5KGQsIGcsIHQpIGdl dF9nZm5fdHlwZShkLCBnZm5feChnKSwgdCwgMCkNCj4gLSN1bmRlZiBwdXRfZ2ZuDQo+IC0jZGVm aW5lIHB1dF9nZm4oZCwgZykgX19wdXRfZ2ZuKHAybV9nZXRfaG9zdHAybShkKSwgZ2ZuX3goZykp DQo+IC0NCj4gICNkZWZpbmUgSU9NTVVfTU1JT19TSVpFICAgICAgICAgICAgICAgICAgICAgICAg IDB4ODAwMA0KPiAgI2RlZmluZSBJT01NVV9NTUlPX1BBR0VfTlIgICAgICAgICAgICAgICAgICAg ICAgMHg4DQo+ICAjZGVmaW5lIFJJTkdfQkZfTEVOR1RIX01BU0sgICAgICAgICAgICAgICAgICAg ICAweDBGMDAwMDAwDQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0 LmggYi94ZW4vaW5jbHVkZS9hc20tDQo+IHg4Ni9ndWVzdF9wdC5oDQo+IGluZGV4IDg2ODRiODMu Ljg3YzY4MTUgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaA0K PiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmgNCj4gQEAgLTM4LDEwICszOCw2 IEBAIGdmbl90b19wYWRkcihnZm5fdCBnZm4pDQo+ICAgICAgcmV0dXJuICgocGFkZHJfdClnZm5f eChnZm4pKSA8PCBQQUdFX1NISUZUOw0KPiAgfQ0KPiANCj4gLS8qIE92ZXJyaWRlIGdldF9nZm4g dG8gd29yayB3aXRoIGdmbl90ICovDQo+IC0jdW5kZWYgZ2V0X2dmbg0KPiAtI2RlZmluZSBnZXRf Z2ZuKGQsIGcsIHQpIGdldF9nZm5fdHlwZSgoZCksIGdmbl94KGcpLCAodCksIFAyTV9BTExPQykN Cj4gLQ0KPiAgLyogTWFzayBjb3ZlcmluZyB0aGUgcmVzZXJ2ZWQgYml0cyBmcm9tIHN1cGVycGFn ZSBhbGlnbm1lbnQuICovDQo+ICAjZGVmaW5lIFNVUEVSUEFHRV9SU1ZEKGJpdCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgKCgoMXVsIDw8IChi aXQpKSAtIDEpICYgfihfUEFHRV9QU0VfUEFUIHwgKF9QQUdFX1BTRV9QQVQgLSAxdWwpKSkNCj4g ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3AybS5oDQo+IGluZGV4IDhiZDZmNjQuLmUzMzJmMDYgMTAwNjQ0DQo+IC0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvcDJtLmgNCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaA0K PiBAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgcDJtX3VubG9ja19hbmRfdGxiX2ZsdXNoKHN0cnVj dCBwMm1fZG9tYWluICpwMm0pOw0KPiAgICogcHV0X2dmbi4gKioqKi8NCj4gDQo+ICBtZm5fdCBf X25vbm51bGwoMywgNCkgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKA0KPiAtICAgIHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBwMm1fdHlwZV90ICp0LA0KPiArICAgIHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCwNCj4gICAgICBw Mm1fYWNjZXNzX3QgKmEsIHAybV9xdWVyeV90IHEsIHVuc2lnbmVkIGludCAqcGFnZV9vcmRlciwg Ym9vbF90DQo+IGxvY2tlZCk7DQo+IA0KPiAgLyoNCj4gQEAgLTQ0NCw3ICs0NDQsNyBAQCBtZm5f dCBfX25vbm51bGwoMywgNCkgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKA0KPiAgICogdGhlIGVudHJ5 IHdhcyBmb3VuZCBpbi4NCj4gICAqLw0KPiAgc3RhdGljIGlubGluZSBtZm5fdCBfX25vbm51bGwo MywgNCkgZ2V0X2dmbl90eXBlX2FjY2VzcygNCj4gLSAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LCB1bnNpZ25lZCBsb25nIGdmbiwgcDJtX3R5cGVfdCAqdCwNCj4gKyAgICBzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLCBnZm5fdCBnZm4sIHAybV90eXBlX3QgKnQsDQo+ICAgICAgcDJtX2FjY2Vzc190 ICphLCBwMm1fcXVlcnlfdCBxLCB1bnNpZ25lZCBpbnQgKnBhZ2Vfb3JkZXIpDQo+ICB7DQo+ICAg ICAgcmV0dXJuIF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbiwgdCwgYSwgcSwgcGFnZV9v cmRlciwgdHJ1ZSk7DQo+IEBAIC00NTIsMjIgKzQ1MiwyMSBAQCBzdGF0aWMgaW5saW5lIG1mbl90 IF9fbm9ubnVsbCgzLCA0KQ0KPiBnZXRfZ2ZuX3R5cGVfYWNjZXNzKA0KPiANCj4gIC8qIEdlbmVy YWwgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tIGdmbiB0byBtZm4gKi8NCj4gIHN0YXRpYyBpbmxp bmUgbWZuX3QgX19ub25udWxsKDMpIGdldF9nZm5fdHlwZSgNCj4gLSAgICBzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgcDJtX3R5cGVfdCAqdCwgcDJtX3F1ZXJ5X3QgcSkNCj4g KyAgICBzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHAybV90eXBlX3QgKnQsIHAybV9xdWVy eV90IHEpDQo+ICB7DQo+ICAgICAgcDJtX2FjY2Vzc190IGE7DQo+ICAgICAgcmV0dXJuIGdldF9n Zm5fdHlwZV9hY2Nlc3MocDJtX2dldF9ob3N0cDJtKGQpLCBnZm4sIHQsICZhLCBxLCBOVUxMKTsN Cj4gIH0NCj4gDQo+ICAvKiBTeW50YWN0aWMgc3VnYXI6IG1vc3QgY2FsbGVycyB3aWxsIHVzZSBv bmUgb2YgdGhlc2UuICovDQo+IC0jZGVmaW5lIGdldF9nZm4oZCwgZywgdCkgICAgICAgICBnZXRf Z2ZuX3R5cGUoKGQpLCAoZyksICh0KSwgUDJNX0FMTE9DKQ0KPiAtI2RlZmluZSBnZXRfZ2ZuX3F1 ZXJ5KGQsIGcsIHQpICAgZ2V0X2dmbl90eXBlKChkKSwgKGcpLCAodCksIDApDQo+IC0jZGVmaW5l IGdldF9nZm5fdW5zaGFyZShkLCBnLCB0KSBnZXRfZ2ZuX3R5cGUoKGQpLCAoZyksICh0KSwgXA0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9BTExP QyB8IFAyTV9VTlNIQVJFKQ0KPiArI2RlZmluZSBnZXRfZ2ZuKGQsIGcsIHQpICAgICAgICAgZ2V0 X2dmbl90eXBlKGQsIGcsIHQsIFAyTV9BTExPQykNCj4gKyNkZWZpbmUgZ2V0X2dmbl9xdWVyeShk LCBnLCB0KSAgIGdldF9nZm5fdHlwZShkLCBnLCB0LCAwKQ0KPiArI2RlZmluZSBnZXRfZ2ZuX3Vu c2hhcmUoZCwgZywgdCkgZ2V0X2dmbl90eXBlKGQsIGcsIHQsIFAyTV9BTExPQyB8DQo+IFAyTV9V TlNIQVJFKQ0KPiANCj4gIC8qIFdpbGwgcmVsZWFzZSB0aGUgcDJtX2xvY2sgZm9yIHRoaXMgZ2Zu IGVudHJ5LiAqLw0KPiAtdm9pZCBfX3B1dF9nZm4oc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5z aWduZWQgbG9uZyBnZm4pOw0KPiArdm9pZCBfX3B1dF9nZm4oc3RydWN0IHAybV9kb21haW4gKnAy bSwgZ2ZuX3QgZ2ZuKTsNCj4gDQo+IC0jZGVmaW5lIHB1dF9nZm4oZCwgZ2ZuKSBfX3B1dF9nZm4o cDJtX2dldF9ob3N0cDJtKChkKSksIChnZm4pKQ0KPiArI2RlZmluZSBwdXRfZ2ZuKGQsIGcpIF9f cHV0X2dmbihwMm1fZ2V0X2hvc3RwMm0oZCksIGcpDQo+IA0KPiAgLyoNCj4gICAqIFRoZSBpbnRl bnQgb2YgdGhlICJ1bmxvY2tlZCIgYWNjZXNzb3IgaXMgdG8gaGF2ZSB0aGUgY2FsbGVyIG5vdCB3 b3JyeQ0KPiBhYm91dA0KPiBAQCAtNDg0LDkgKzQ4Myw4IEBAIHZvaWQgX19wdXRfZ2ZuKHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcNCj4gZ2ZuKTsNCj4gICAqIEFueSBvdGhl ciB0eXBlIG9mIHF1ZXJ5IGNhbiBjYXVzZSBhIGNoYW5nZSBpbiB0aGUgcDJtIGFuZCBtYXkgbmVl ZCB0bw0KPiAgICogcGVyZm9ybSBsb2NraW5nLg0KPiAgICovDQo+IC1zdGF0aWMgaW5saW5lIG1m bl90IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoc3RydWN0IGRvbWFpbiAqZCwNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90ICp0 KQ0KPiArc3RhdGljIGlubGluZSBtZm5fdCBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKA0KPiArICAg IHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCkNCj4gIHsNCj4gICAg ICBwMm1fYWNjZXNzX3QgYTsNCj4gICAgICByZXR1cm4gX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKHAy bV9nZXRfaG9zdHAybShkKSwgZ2ZuLCB0LCAmYSwgMCwgTlVMTCwNCj4gMCk7DQo+IEBAIC01Njks OSArNTY3LDkgQEAgZG8gew0KPiBcDQo+IA0KPiAgICAgIC8qIE5vdyBkbyB0aGUgZ2V0cyAqLw0K PiAgICAgICpmaXJzdF9tZm4gID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm1fZ2V0X2hvc3RwMm0o cnZhbC0NCj4gPmZpcnN0X2RvbWFpbiksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdmbl94KHJ2YWwtPmZpcnN0X2dmbiksIGZpcnN0X3QsDQo+IGZpcnN0X2EsIHEs IE5VTEwpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydmFsLT5m aXJzdF9nZm4sIGZpcnN0X3QsIGZpcnN0X2EsDQo+IHEsIE5VTEwpOw0KPiAgICAgICpzZWNvbmRf bWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm1fZ2V0X2hvc3RwMm0ocnZhbC0NCj4gPnNlY29u ZF9kb21haW4pLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5f eChydmFsLT5zZWNvbmRfZ2ZuKSwgc2Vjb25kX3QsDQo+IHNlY29uZF9hLCBxLCBOVUxMKTsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZhbC0+c2Vjb25kX2dmbiwg c2Vjb25kX3QsDQo+IHNlY29uZF9hLCBxLCBOVUxMKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgaW5s aW5lIHZvaWQgcHV0X3R3b19nZm5zKHN0cnVjdCB0d29fZ2ZucyAqYXJnKQ0KPiBAQCAtNTc5LDgg KzU3Nyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdHdvX2dmbnMoc3RydWN0IHR3b19nZm5z ICphcmcpDQo+ICAgICAgaWYgKCAhYXJnICkNCj4gICAgICAgICAgcmV0dXJuOw0KPiANCj4gLSAg ICBwdXRfZ2ZuKGFyZy0+c2Vjb25kX2RvbWFpbiwgZ2ZuX3goYXJnLT5zZWNvbmRfZ2ZuKSk7DQo+ IC0gICAgcHV0X2dmbihhcmctPmZpcnN0X2RvbWFpbiwgIGdmbl94KGFyZy0+Zmlyc3RfZ2ZuKSk7 DQo+ICsgICAgcHV0X2dmbihhcmctPnNlY29uZF9kb21haW4sIGFyZy0+c2Vjb25kX2dmbik7DQo+ ICsgICAgcHV0X2dmbihhcmctPmZpcnN0X2RvbWFpbiwgIGFyZy0+Zmlyc3RfZ2ZuKTsNCj4gIH0N Cj4gDQo+ICAvKiBJbml0IHRoZSBkYXRhc3RydWN0dXJlcyBmb3IgbGF0ZXIgdXNlIGJ5IHRoZSBw Mm0gY29kZSAqLw0KPiAtLQ0KPiAyLjEuNA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs