From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Woods, Brian" Subject: Re: [PATCH 10/14] x86/mm: Switch {get, put}_gfn() infrastructure to using gfn_t Date: Mon, 26 Nov 2018 15:51:53 +0000 Message-ID: <20181126155149.GD28856@amd.com> 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 Content-ID: <64B983442DCDC64D963CD8A0E6074F83@namprd12.prod.outlook.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Andrew Cooper Cc: Kevin Tian , Tamas K Lengyel , Wei Liu , Jun Nakajima , Razvan Cojocaru , George Dunlap , Tim Deegan , Xen-devel , Paul Durrant , Jan Beulich , Boris Ostrovsky , "Woods, Brian" , "Suthikulpanit, Suravee" , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBOb3YgMjEsIDIwMTggYXQgMDE6MjE6MThQTSArMDAwMCwgQW5keSBDb29wZXIgd3Jv dGU6Cj4gU2VlbWluZ2x5LCBhIG1ham9yaXR5IG9mIHVzZXJzIGVpdGhlciBvdmVycmlkZSB0aGUg aGVscGVycyBhbnl3YXksIG9yIGhhdmUgYW4KPiBnZm5fdCBpbiB0aGVpciBoYW5kcy4KPiAKPiBV cGRhdGUgdGhlIEFQSSwgYW5kIGFkanVzdCBhbGwgdXNlcnMgdG8gbWF0Y2guCj4gCj4gRG9pbmcg dGhpcyBoaWdobGlnaHRlZCBhIGdhcGluZyBhbHRwMm0gc2VjdXJpdHkgaG9sZSBpbgo+IHZteF92 Y3B1X3VwZGF0ZV92bWZ1bmNfdmUoKSwgd2hpY2ggd2lsbCBuZWVkIGFkZHJlc3Npbmcgbm93IHdl IGNhbiBkaXNjdXNzIHRoZQo+IHByb2JsZW0gYW5kIG9wdGlvbnMgcHVibGljbHkuCj4gCj4gU2ln bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCkFz IGZhciBhcyB0aGUgc3ZtIGFuZCBpb21tdSBwYXJ0cwoKQWNrZWQtYnk6IEJyaWFuIFdvb2RzIDxi cmlhbi53b29kc0BhbWQuY29tPgoKPiAtLS0KPiBDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1 c2UuY29tPgo+IENDOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+IENDOiBSb2dlciBQ YXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KPiBDQzogUmF6dmFuIENvam9jYXJ1IDxy Y29qb2NhcnVAYml0ZGVmZW5kZXIuY29tPgo+IENDOiBUYW1hcyBLIExlbmd5ZWwgPHRhbWFzQHRr bGVuZ3llbC5jb20+Cj4gQ0M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4 LmNvbT4KPiBDQzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cj4gQ0M6IFBhdWwgRHVycmFudCA8 cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gQ0M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1h QGludGVsLmNvbT4KPiBDQzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4gQ0M6 IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Cj4gQ0M6IFN1cmF2 ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+Cj4gQ0M6IEJy aWFuIFdvb2RzIDxicmlhbi53b29kc0BhbWQuY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1 L21jaGVjay9tY2FjdGlvbi5jICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNo ZWNrL21jZS5jICAgICAgICAgICAgIHwgMTQgKysrLS0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1L21j aGVjay92bWNlLmMgICAgICAgICAgICB8ICA0ICstCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNoZWNr L3ZtY2UuaCAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L2RlYnVnLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgNiArLS0KPiAgeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAg ICAgICAgICAgICAgfCAxOSArKysrLS0tLS0KPiAgeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAg ICAgICAgICAgICAgICAgfCAgOCArKy0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAg ICAgICAgICAgICAgIHwgMTYgKysrKy0tLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9ncmFudF90YWJs ZS5jICAgICAgICAgICAgfCAgNCArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAg ICAgICAgICAgICB8IDI1ICsrKysrKy0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL210cnIuYyAg ICAgICAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jICAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICAg ICAgICAgICAgfCAgNyArKy0tCj4gIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTAgKystLS0KPiAgeGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYyAgICAgICAgICAg ICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9oYXAuYyAgICAgICAg ICB8ICA2ICstLQo+ICB4ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jICAgICAgICAgICAgICB8 ICA1ICstLQo+ICB4ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYyAgICAgICAgICAgICB8IDI0 ICsrKysrLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgICAgICAg IHwgNDUgKysrKysrKysrKy0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21t b24uYyAgICAgICAgICAgfCAgNCArLQo+ICB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMg ICAgICAgICAgICB8IDY4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2Fy Y2gveDg2L21tL3NoYWRvdy90eXBlcy5oICAgICAgICAgICAgfCAgNCAtLQo+ICB4ZW4vY29tbW9u L2dyYW50X3RhYmxlLmMgICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCj4gIHhlbi9jb21tb24v bWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKystLS0tLS0KPiAgeGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2d1ZXN0LmMgfCAgOCAtLS0tCj4gIHhlbi9pbmNs dWRlL2FzbS14ODYvZ3Vlc3RfcHQuaCAgICAgICAgICAgIHwgIDQgLS0KPiAgeGVuL2luY2x1ZGUv YXNtLXg4Ni9wMm0uaCAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrLS0tLS0tLQo+ICAyOCBm aWxlcyBjaGFuZ2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgMTk1IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2FjdGlvbi5jIGIveGVuL2FyY2gv eDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYwo+IGluZGV4IGU0MjI2NzQuLmM4ZTBjZjIgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMKPiBAQCAtODksNyArODksNyBAQCBtY19tZW1l cnJfZGhhbmRsZXIoc3RydWN0IG1jYV9iaW5mbyAqYmluZm8sCj4gICAgICAgICAgICAgICAgICBB U1NFUlQoZCk7Cj4gICAgICAgICAgICAgICAgICBnZm4gPSBnZXRfZ3Bmbl9mcm9tX21mbigoYmFu ay0+bWNfYWRkcikgPj4gUEFHRV9TSElGVCk7Cj4gIAo+IC0gICAgICAgICAgICAgICAgaWYgKCB1 bm1tYXBfYnJva2VuX3BhZ2UoZCwgX21mbihtZm4pLCBnZm4pICkKPiArICAgICAgICAgICAgICAg IGlmICggdW5tbWFwX2Jyb2tlbl9wYWdlKGQsIF9tZm4obWZuKSwgX2dmbihnZm4pKSApCj4gICAg ICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJVbm1hcCBicm9r ZW4gbWVtb3J5ICVseCBmb3IgRE9NJWQgZmFpbGVkXG4iLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZm4sIGQtPmRvbWFpbl9pZCk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9j cHUvbWNoZWNrL21jZS5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKPiBpbmRleCAz MGNkYjA2Li5jOTZjMDUzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21j ZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKPiBAQCAtMTQ2OSw5ICsx NDY5LDYgQEAgbG9uZyBkb19tY2EoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWNfdCkgdV94 ZW5fbWMpCj4gICAgICAgICAgICAgIHN0cnVjdCBkb21haW4gKmQ7Cj4gICAgICAgICAgICAgIHN0 cnVjdCBtY2luZm9fbXNyICptc3I7Cj4gICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwo+IC0g ICAgICAgICAgICBwYWRkcl90IGdhZGRyOwo+IC0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdm biwgbWZuOwo+IC0gICAgICAgICAgICBwMm1fdHlwZV90IHQ7Cj4gIAo+ICAgICAgICAgICAgICBk b21pZCA9IChtY19tc3JpbmplY3QtPm1jaW5qX2RvbWlkID09IERPTUlEX1NFTEYpID8KPiAgICAg ICAgICAgICAgICAgICAgICBjdXJyZW50LT5kb21haW4tPmRvbWFpbl9pZCA6IG1jX21zcmluamVj dC0+bWNpbmpfZG9taWQ7Cj4gQEAgLTE0ODksMTEgKzE0ODYsMTIgQEAgbG9uZyBkb19tY2EoWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWNfdCkgdV94ZW5fbWMpCj4gICAgICAgICAgICAgICAg ICAgIGkgPCBtY19tc3JpbmplY3QtPm1jaW5qX2NvdW50Owo+ICAgICAgICAgICAgICAgICAgICBp KyssIG1zcisrICkKPiAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgZ2FkZHIgPSBt c3ItPnZhbHVlOwo+IC0gICAgICAgICAgICAgICAgZ2ZuID0gUEZOX0RPV04oZ2FkZHIpOwo+IC0g ICAgICAgICAgICAgICAgbWZuID0gbWZuX3goZ2V0X2dmbihkLCBnZm4sICZ0KSk7Cj4gKyAgICAg ICAgICAgICAgICBwMm1fdHlwZV90IHQ7Cj4gKyAgICAgICAgICAgICAgICBwYWRkcl90IGdhZGRy ID0gbXNyLT52YWx1ZTsKPiArICAgICAgICAgICAgICAgIGdmbl90IGdmbiA9IF9nZm4oUEZOX0RP V04oZ2FkZHIpKTsKPiArICAgICAgICAgICAgICAgIG1mbl90IG1mbiA9IGdldF9nZm4oZCwgZ2Zu LCAmdCk7Cj4gIAo+IC0gICAgICAgICAgICAgICAgaWYgKCBtZm4gPT0gbWZuX3goSU5WQUxJRF9N Rk4pICkKPiArICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkK PiAgICAgICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdm bik7Cj4gICAgICAgICAgICAgICAgICAgICAgcHV0X2RvbWFpbihkKTsKPiBAQCAtMTUwMSw3ICsx NDk5LDcgQEAgbG9uZyBkb19tY2EoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWNfdCkgdV94 ZW5fbWMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMLCBn Zm4sIGRvbWlkKTsKPiAgICAgICAgICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgICAgICAgICBt c3ItPnZhbHVlID0gcGZuX3RvX3BhZGRyKG1mbikgfCAoZ2FkZHIgJiAoUEFHRV9TSVpFIC0gMSkp Owo+ICsgICAgICAgICAgICAgICAgbXNyLT52YWx1ZSA9IG1mbl90b19tYWRkcihtZm4pIHwgKGdh ZGRyICYgKFBBR0VfU0laRSAtIDEpKTsKPiAgCj4gICAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQs IGdmbik7Cj4gICAgICAgICAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9t Y2hlY2svdm1jZS5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jCj4gaW5kZXggZjE1 ODM1ZS4uZTI1N2U5NCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNl LmMKPiArKysgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMKPiBAQCAtNTEyLDcgKzUx Miw3IEBAIGludCBmaWxsX3Ztc3JfZGF0YShzdHJ1Y3QgbWNpbmZvX2JhbmsgKm1jX2JhbmssIHN0 cnVjdCBkb21haW4gKmQsCj4gICAqIFhYWCBmb2xsb3dpbmcgc2l0dWF0aW9uIG1pc3NlZDoKPiAg ICogUG9ELCBGb3JlaWduIG1hcHBlZCwgR3JhbnRlZCwgU2hhcmVkCj4gICAqLwo+IC1pbnQgdW5t bWFwX2Jyb2tlbl9wYWdlKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbiwgdW5zaWduZWQgbG9u ZyBnZm4pCj4gK2ludCB1bm1tYXBfYnJva2VuX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3Qg bWZuLCBnZm5fdCBnZm4pCj4gIHsKPiAgICAgIG1mbl90IHJfbWZuOwo+ICAgICAgcDJtX3R5cGVf dCBwdDsKPiBAQCAtNTMzLDcgKzUzMyw3IEBAIGludCB1bm1tYXBfYnJva2VuX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgbWZuX3QgbWZuLCB1bnNpZ25lZCBsb25nIGdmbikKPiAgICAgIGlmICggcDJt X3RvX21hc2socHQpICYgUDJNX1VOTUFQX1RZUEVTKQo+ICAgICAgewo+ICAgICAgICAgIEFTU0VS VChtZm5fZXEocl9tZm4sIG1mbikpOwo+IC0gICAgICAgIHJjID0gcDJtX2NoYW5nZV90eXBlX29u ZShkLCBnZm4sIHB0LCBwMm1fcmFtX2Jyb2tlbik7Cj4gKyAgICAgICAgcmMgPSBwMm1fY2hhbmdl X3R5cGVfb25lKGQsIGdmbl94KGdmbiksIHB0LCBwMm1fcmFtX2Jyb2tlbik7Cj4gICAgICB9Cj4g ICAgICBwdXRfZ2ZuKGQsIGdmbik7Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1 L21jaGVjay92bWNlLmggYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmgKPiBpbmRleCAy Nzk3ZTAwLi5hMzdmM2JlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3Zt Y2UuaAo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuaAo+IEBAIC05LDcgKzks NyBAQCBpbnQgdm1jZV9pbml0KHN0cnVjdCBjcHVpbmZvX3g4NiAqYyk7Cj4gICAgICAgICAgJiYg aGFyZHdhcmVfZG9tYWluLT52Y3B1WzBdIFwKPiAgICAgICAgICAmJiBndWVzdF9lbmFibGVkX2V2 ZW50KGhhcmR3YXJlX2RvbWFpbi0+dmNwdVswXSwgVklSUV9NQ0EpKQo+ICAKPiAtaW50IHVubW1h cF9icm9rZW5fcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBtZm4sIHVuc2lnbmVkIGxvbmcg Z2ZuKTsKPiAraW50IHVubW1hcF9icm9rZW5fcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBt Zm4sIGdmbl90IGdmbik7Cj4gIAo+ICBpbnQgdm1jZV9pbnRlbF9yZG1zcihjb25zdCBzdHJ1Y3Qg dmNwdSAqLCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90ICp2YWwpOwo+ICBpbnQgdm1jZV9pbnRlbF93 cm1zcihzdHJ1Y3QgdmNwdSAqLCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCk7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jIGIveGVuL2FyY2gveDg2L2RlYnVnLmMKPiBpbmRl eCBhNTAwZGYwLi43YzJkYzhjIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jCj4g KysrIGIveGVuL2FyY2gveDg2L2RlYnVnLmMKPiBAQCAtNTgsNyArNTgsNyBAQCBkYmdfaHZtX3Zh Mm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgaW50IHRvYWRkciwgZ2ZuX3Qg KmdmbikKPiAgICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47Cj4gICAgICB9Cj4gIAo+IC0gICAg bWZuID0gZ2V0X2dmbihkcCwgZ2ZuX3goKmdmbiksICZnZm50eXBlKTsKPiArICAgIG1mbiA9IGdl dF9nZm4oZHAsICpnZm4sICZnZm50eXBlKTsKPiAgICAgIGlmICggcDJtX2lzX3JlYWRvbmx5KGdm bnR5cGUpICYmIHRvYWRkciApCj4gICAgICB7Cj4gICAgICAgICAgREJHUDIoImtkYjpwMm1faXNf cmVhZG9ubHk6IGdmbnR5cGU6JXhcbiIsIGdmbnR5cGUpOwo+IEBAIC03MCw3ICs3MCw3IEBAIGRi Z19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQgdG9hZGRy LCBnZm5fdCAqZ2ZuKQo+ICAKPiAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkK PiAgICAgIHsKPiAtICAgICAgICBwdXRfZ2ZuKGRwLCBnZm5feCgqZ2ZuKSk7Cj4gKyAgICAgICAg cHV0X2dmbihkcCwgKmdmbik7Cj4gICAgICAgICAgKmdmbiA9IElOVkFMSURfR0ZOOwo+ICAgICAg fQo+ICAKPiBAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGJnX3J3X2d1 ZXN0X21lbShzdHJ1Y3QgZG9tYWluICpkcCwgdm9pZCAqIF9fdXNlciBnYWRkciwKPiAgCj4gICAg ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UodmEpOwo+ICAgICAgICAgIGlmICggIWdmbl9lcShnZm4s IElOVkFMSURfR0ZOKSApCj4gLSAgICAgICAgICAgIHB1dF9nZm4oZHAsIGdmbl94KGdmbikpOwo+ ICsgICAgICAgICAgICBwdXRfZ2ZuKGRwLCBnZm4pOwo+ICAKPiAgICAgICAgICBhZGRyICs9IHBh Z2VjbnQ7Cj4gICAgICAgICAgYnVmICs9IHBhZ2VjbnQ7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IGluZGV4IGI0ZDU5NDguLjMy N2M5NjEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCj4gQEAgLTY3Nyw3ICs2NzcsNyBAQCBpbnQgYXJjaF9kb21haW5fc29m dF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgaW50IHJldCA9IDA7Cj4gICAgICBzdHJ1 Y3QgZG9tYWluICpvd25lcjsKPiAgICAgIG1mbl90IG1mbjsKPiAtICAgIHVuc2lnbmVkIGxvbmcg Z2ZuOwo+ICsgICAgZ2ZuX3QgZ2ZuOwo+ICAgICAgcDJtX3R5cGVfdCBwMm10Owo+ICAgICAgdW5z aWduZWQgaW50IGk7Cj4gIAo+IEBAIC03MTEsMTkgKzcxMSwxOSBAQCBpbnQgYXJjaF9kb21haW5f c29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgQVNTRVJUKCBvd25lciA9PSBkICk7 Cj4gIAo+ICAgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7Cj4gLSAgICBnZm4gPSBtZm5fdG9f Z21mbihkLCBtZm5feChtZm4pKTsKPiArICAgIGdmbiA9IF9nZm4obWZuX3RvX2dtZm4oZCwgbWZu X3gobWZuKSkpOwo+ICAKPiAgICAgIC8qCj4gICAgICAgKiBnZm4gPT0gSU5WQUxJRF9HRk4gaW5k aWNhdGVzIHRoYXQgdGhlIHNoYXJlZF9pbmZvIHBhZ2Ugd2FzIG5ldmVyIG1hcHBlZAo+ICAgICAg ICogdG8gdGhlIGRvbWFpbidzIGFkZHJlc3Mgc3BhY2UgYW5kIHRoZXJlIGlzIG5vdGhpbmcgdG8g cmVwbGFjZS4KPiAgICAgICAqLwo+IC0gICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4p ICkKPiArICAgIGlmICggZ2ZuX2VxKGdmbiwgSU5WQUxJRF9HRk4pICkKPiAgICAgICAgICBnb3Rv IGV4aXRfcHV0X3BhZ2U7Cj4gIAo+ICAgICAgaWYgKCAhbWZuX2VxKGdldF9nZm5fcXVlcnkoZCwg Z2ZuLCAmcDJtdCksIG1mbikgKQo+ICAgICAgewo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19F UlIgIkZhaWxlZCB0byBnZXQgRG9tJWQncyBzaGFyZWRfaW5mbyBHRk4gKCVseClcbiIsCj4gLSAg ICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuKTsKPiArICAgICAgICAgICAgICAgZC0+ZG9t YWluX2lkLCBnZm5feChnZm4pKTsKPiAgICAgICAgICByZXQgPSAtRUlOVkFMOwo+ICAgICAgICAg IGdvdG8gZXhpdF9wdXRfZ2ZuOwo+ICAgICAgfQo+IEBAIC03MzIsMjYgKzczMiwyNSBAQCBpbnQg YXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgaWYgKCAhbmV3 X3BhZ2UgKQo+ICAgICAgewo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIkZhaWxlZCB0 byBhbGxvYyBhIHBhZ2UgdG8gcmVwbGFjZSIKPiAtICAgICAgICAgICAgICAgIiBEb20lZCdzIHNo YXJlZF9pbmZvIGZyYW1lICVseFxuIiwgZC0+ZG9tYWluX2lkLCBnZm4pOwo+ICsgICAgICAgICAg ICAgICAiIERvbSVkJ3Mgc2hhcmVkX2luZm8gZnJhbWUgJWx4XG4iLCBkLT5kb21haW5faWQsIGdm bl94KGdmbikpOwo+ICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gICAgICAgICAgZ290byBleGl0 X3B1dF9nZm47Cj4gICAgICB9Cj4gIAo+IC0gICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9yZW1vdmVf cGFnZShkLCBfZ2ZuKGdmbiksIG1mbiwgUEFHRV9PUkRFUl80Syk7Cj4gKyAgICByZXQgPSBndWVz dF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIGdmbiwgbWZuLCBQQUdFX09SREVSXzRLKTsKPiAgICAg IGlmICggcmV0ICkKPiAgICAgIHsKPiAgICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWls ZWQgdG8gcmVtb3ZlIERvbSVkJ3Mgc2hhcmVkX2luZm8gZnJhbWUgJWx4XG4iLAo+IC0gICAgICAg ICAgICAgICBkLT5kb21haW5faWQsIGdmbik7Cj4gKyAgICAgICAgICAgICAgIGQtPmRvbWFpbl9p ZCwgZ2ZuX3goZ2ZuKSk7Cj4gICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UobmV3X3BhZ2UpOwo+ ICAgICAgICAgIGdvdG8gZXhpdF9wdXRfZ2ZuOwo+ICAgICAgfQo+ICAKPiAtICAgIHJldCA9IGd1 ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihnZm4pLCBwYWdlX3RvX21mbihuZXdfcGFnZSks Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEspOwo+ICsg ICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBnZm4sIHBhZ2VfdG9fbWZuKG5ld19w YWdlKSwgUEFHRV9PUkRFUl80Syk7Cj4gICAgICBpZiAoIHJldCApCj4gICAgICB7Cj4gICAgICAg ICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiRmFpbGVkIHRvIGFkZCBhIHBhZ2UgdG8gcmVwbGFjZSIK PiAtICAgICAgICAgICAgICAgIiBEb20lZCdzIHNoYXJlZF9pbmZvIGZyYW1lICVseFxuIiwgZC0+ ZG9tYWluX2lkLCBnZm4pOwo+ICsgICAgICAgICAgICAgICAiIERvbSVkJ3Mgc2hhcmVkX2luZm8g ZnJhbWUgJWx4XG4iLCBkLT5kb21haW5faWQsIGdmbl94KGdmbikpOwo+ICAgICAgICAgIGZyZWVf ZG9taGVhcF9wYWdlKG5ld19wYWdlKTsKPiAgICAgIH0KPiAgIGV4aXRfcHV0X2dmbjoKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCj4g aW5kZXggYWE4YWQxOS4uNjk0YjRkNSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvZG9tY3Rs LmMKPiArKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKPiBAQCAtMTI1MywxNSArMTI1MywxNSBA QCBsb25nIGFyY2hfZG9fZG9tY3RsKAo+ICAgICAgY2FzZSBYRU5fRE9NQ1RMX3NldF9icm9rZW5f cGFnZV9wMm06Cj4gICAgICB7Cj4gICAgICAgICAgcDJtX3R5cGVfdCBwdDsKPiAtICAgICAgICB1 bnNpZ25lZCBsb25nIHBmbiA9IGRvbWN0bC0+dS5zZXRfYnJva2VuX3BhZ2VfcDJtLnBmbjsKPiAt ICAgICAgICBtZm5fdCBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIHBmbiwgJnB0KTsKPiArICAgICAg ICBnZm5fdCBnZm4gPSBfZ2ZuKGRvbWN0bC0+dS5zZXRfYnJva2VuX3BhZ2VfcDJtLnBmbik7Cj4g KyAgICAgICAgbWZuX3QgbWZuID0gZ2V0X2dmbl9xdWVyeShkLCBnZm4sICZwdCk7Cj4gIAo+ICAg ICAgICAgIGlmICggdW5saWtlbHkoIW1mbl92YWxpZChtZm4pKSB8fCB1bmxpa2VseSghcDJtX2lz X3JhbShwdCkpICkKPiAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiAgICAgICAgICBlbHNl Cj4gLSAgICAgICAgICAgIHJldCA9IHAybV9jaGFuZ2VfdHlwZV9vbmUoZCwgcGZuLCBwdCwgcDJt X3JhbV9icm9rZW4pOwo+ICsgICAgICAgICAgICByZXQgPSBwMm1fY2hhbmdlX3R5cGVfb25lKGQs IGdmbl94KGdmbiksIHB0LCBwMm1fcmFtX2Jyb2tlbik7Cj4gIAo+IC0gICAgICAgIHB1dF9nZm4o ZCwgcGZuKTsKPiArICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7Cj4gICAgICAgICAgYnJlYWs7Cj4g ICAgICB9Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJj aC94ODYvaHZtL2RtLmMKPiBpbmRleCBkNmQwZThiLi45OTM4ZjRiIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vZG0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwo+IEBAIC0y NjksMTQgKzI2OSwxNCBAQCBzdGF0aWMgaW50IHNldF9tZW1fdHlwZShzdHJ1Y3QgZG9tYWluICpk LAo+ICAKPiAgICAgIHdoaWxlICggaXRlciA8IGRhdGEtPm5yICkKPiAgICAgIHsKPiAtICAgICAg ICB1bnNpZ25lZCBsb25nIHBmbiA9IGRhdGEtPmZpcnN0X3BmbiArIGl0ZXI7Cj4gKyAgICAgICAg Z2ZuX3QgZ2ZuID0gX2dmbihkYXRhLT5maXJzdF9wZm4gKyBpdGVyKTsKPiAgICAgICAgICBwMm1f dHlwZV90IHQ7Cj4gIAo+IC0gICAgICAgIGdldF9nZm5fdW5zaGFyZShkLCBwZm4sICZ0KTsKPiAr ICAgICAgICBnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ2ZuLCAmdCk7Cj4gICAgICAgICAgaWYgKCBwMm1f aXNfcGFnaW5nKHQpICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIHB1dF9nZm4oZCwgcGZu KTsKPiAtICAgICAgICAgICAgcDJtX21lbV9wYWdpbmdfcG9wdWxhdGUoZCwgcGZuKTsKPiArICAg ICAgICAgICAgcHV0X2dmbihkLCBnZm4pOwo+ICsgICAgICAgICAgICBwMm1fbWVtX3BhZ2luZ19w b3B1bGF0ZShkLCBnZm5feChnZm4pKTsKPiAgICAgICAgICAgICAgcmV0dXJuIC1FQUdBSU47Cj4g ICAgICAgICAgfQo+ICAKPiBAQCAtMjg1LDkgKzI4NSw5IEBAIHN0YXRpYyBpbnQgc2V0X21lbV90 eXBlKHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgZWxzZSBpZiAoICFhbGxvd19wMm1fdHlw ZV9jaGFuZ2UodCwgbWVtdHlwZVttZW1fdHlwZV0pICkKPiAgICAgICAgICAgICAgcmMgPSAtRUlO VkFMOwo+ICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgcmMgPSBwMm1fY2hhbmdlX3R5cGVf b25lKGQsIHBmbiwgdCwgbWVtdHlwZVttZW1fdHlwZV0pOwo+ICsgICAgICAgICAgICByYyA9IHAy bV9jaGFuZ2VfdHlwZV9vbmUoZCwgZ2ZuX3goZ2ZuKSwgdCwgbWVtdHlwZVttZW1fdHlwZV0pOwo+ ICAKPiAtICAgICAgICBwdXRfZ2ZuKGQsIHBmbik7Cj4gKyAgICAgICAgcHV0X2dmbihkLCBnZm4p Owo+ICAKPiAgICAgICAgICBpZiAoIHJjICkKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVs YXRlLmMKPiBpbmRleCAyZDAyZWYxLi4xMzM1YjJjIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vZW11bGF0ZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiBAQCAt MjU1LDEzICsyNTUsMTMgQEAgc3RhdGljIGludCBodm1lbXVsX2RvX2lvKAo+ICAgICAgICAgICAq IHNvIHRoZSBkZXZpY2UgbW9kZWwgc2lkZSBuZWVkcyB0byBjaGVjayB0aGUgaW5jb21pbmcgaW9y ZXEgZXZlbnQuCj4gICAgICAgICAgICovCj4gICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMgPSBOVUxMOwo+IC0gICAgICAgIHAybV90eXBlX3QgcDJtdCA9IHAybV9pbnZhbGlkOwo+ ICAKPiAgICAgICAgICBpZiAoIGlzX21taW8gKQo+ICAgICAgICAgIHsKPiAtICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJfdG9fcGZuKGFkZHIpOwo+ICsgICAgICAgICAgICBw Mm1fdHlwZV90IHAybXQgPSBwMm1faW52YWxpZDsKPiArICAgICAgICAgICAgZ2ZuX3QgZ2ZuID0g Z2FkZHJfdG9fZ2ZuKGFkZHIpOwo+ICAKPiAtICAgICAgICAgICAgZ2V0X2dmbl9xdWVyeV91bmxv Y2tlZChjdXJyZCwgZ21mbiwgJnAybXQpOwo+ICsgICAgICAgICAgICBnZXRfZ2ZuX3F1ZXJ5X3Vu bG9ja2VkKGN1cnJkLCBnZm4sICZwMm10KTsKPiAgCj4gICAgICAgICAgICAgIGlmICggcDJtdCA9 PSBwMm1faW9yZXFfc2VydmVyICkKPiAgICAgICAgICAgICAgewo+IEBAIC0xNTkwLDcgKzE1OTAs NyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfcmVwX2lucygKPiAgICAgIGlmICggcmMgIT0gWDg2RU1V TF9PS0FZICkKPiAgICAgICAgICByZXR1cm4gcmM7Cj4gIAo+IC0gICAgKHZvaWQpIGdldF9nZm5f cXVlcnlfdW5sb2NrZWQoY3VycmVudC0+ZG9tYWluLCBncGEgPj4gUEFHRV9TSElGVCwgJnAybXQp Owo+ICsgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZW50LT5kb21haW4sIGdhZGRyX3Rv X2dmbihncGEpLCAmcDJtdCk7Cj4gICAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZGlyZWN0IHx8 IHAybXQgPT0gcDJtX21taW9fZG0gKQo+ICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExF QUJMRTsKPiAgCj4gQEAgLTE2NzEsNyArMTY3MSw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9yZXBf b3V0cygKPiAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKPiAgICAgICAgICByZXR1cm4g cmM7Cj4gIAo+IC0gICAgKHZvaWQpIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoY3VycmVudC0+ZG9t YWluLCBncGEgPj4gUEFHRV9TSElGVCwgJnAybXQpOwo+ICsgICAgZ2V0X2dmbl9xdWVyeV91bmxv Y2tlZChjdXJyZW50LT5kb21haW4sIGdhZGRyX3RvX2dmbihncGEpLCAmcDJtdCk7Cj4gICAgICBp ZiAoIHAybXQgPT0gcDJtX21taW9fZGlyZWN0IHx8IHAybXQgPT0gcDJtX21taW9fZG0gKQo+ICAg ICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKPiAgCj4gQEAgLTE3NTAsOCArMTc1 MCw4IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9yZXBfbW92cygKPiAgICAgIH0KPiAgCj4gICAgICAv KiBDaGVjayBmb3IgTU1JTyBvcHMgKi8KPiAtICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9j a2VkKGN1cnJlbnQtPmRvbWFpbiwgc2dwYSA+PiBQQUdFX1NISUZULCAmc3AybXQpOwo+IC0gICAg KHZvaWQpIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoY3VycmVudC0+ZG9tYWluLCBkZ3BhID4+IFBB R0VfU0hJRlQsICZkcDJtdCk7Cj4gKyAgICBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJlbnQt PmRvbWFpbiwgZ2FkZHJfdG9fZ2ZuKHNncGEpLCAmc3AybXQpOwo+ICsgICAgZ2V0X2dmbl9xdWVy eV91bmxvY2tlZChjdXJyZW50LT5kb21haW4sIGdhZGRyX3RvX2dmbihkZ3BhKSwgJmRwMm10KTsK PiAgCj4gICAgICBpZiAoIHNwMm10ID09IHAybV9tbWlvX2RpcmVjdCB8fCBkcDJtdCA9PSBwMm1f bW1pb19kaXJlY3QgfHwKPiAgICAgICAgICAgKHNwMm10ID09IHAybV9tbWlvX2RtICYmIGRwMm10 ID09IHAybV9tbWlvX2RtKSApCj4gQEAgLTE4NzgsNyArMTg3OCw3IEBAIHN0YXRpYyBpbnQgaHZt ZW11bF9yZXBfc3RvcygKPiAgICAgIH0KPiAgCj4gICAgICAvKiBDaGVjayBmb3IgTU1JTyBvcCAq Lwo+IC0gICAgKHZvaWQpZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZW50LT5kb21haW4sIGdw YSA+PiBQQUdFX1NISUZULCAmcDJtdCk7Cj4gKyAgICBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1 cnJlbnQtPmRvbWFpbiwgZ2FkZHJfdG9fZ2ZuKGdwYSksICZwMm10KTsKPiAgCj4gICAgICBzd2l0 Y2ggKCBwMm10ICkKPiAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9ncmFu dF90YWJsZS5jIGIveGVuL2FyY2gveDg2L2h2bS9ncmFudF90YWJsZS5jCj4gaW5kZXggZWNkN2Qw Ny4uMDRhMzEwNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2dyYW50X3RhYmxlLmMK PiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2dyYW50X3RhYmxlLmMKPiBAQCAtNTEsNyArNTEsNyBA QCBpbnQgY3JlYXRlX2dyYW50X3AybV9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIG1mbl90IGZyYW1l LAo+ICBpbnQgcmVwbGFjZV9ncmFudF9wMm1fbWFwcGluZyh1aW50NjRfdCBhZGRyLCBtZm5fdCBm cmFtZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbmV3X2FkZHIs IHVuc2lnbmVkIGludCBmbGFncykKPiAgewo+IC0gICAgdW5zaWduZWQgbG9uZyBnZm4gPSAodW5z aWduZWQgbG9uZykoYWRkciA+PiBQQUdFX1NISUZUKTsKPiArICAgIGdmbl90IGdmbiA9IGdhZGRy X3RvX2dmbihhZGRyKTsKPiAgICAgIHAybV90eXBlX3QgdHlwZTsKPiAgICAgIG1mbl90IG9sZF9t Zm47Cj4gICAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwo+IEBAIC02OCw3 ICs2OCw3IEBAIGludCByZXBsYWNlX2dyYW50X3AybV9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIG1m bl90IGZyYW1lLAo+ICAgICAgICAgICAgICAgICAgIHR5cGUsIG1mbl94KG9sZF9tZm4pLCBtZm5f eChmcmFtZSkpOwo+ICAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwo+ICAgICAg fQo+IC0gICAgaWYgKCBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgZnJh bWUsIFBBR0VfT1JERVJfNEspICkKPiArICAgIGlmICggZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFn ZShkLCBnZm4sIGZyYW1lLCBQQUdFX09SREVSXzRLKSApCj4gICAgICB7Cj4gICAgICAgICAgcHV0 X2dmbihkLCBnZm4pOwo+ICAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0u Ywo+IGluZGV4IGRiNjBmMjMuLjk4N2MyNmEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2 bS9odm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBAQCAtMTY3OSw3ICsxNjc5 LDcgQEAgdm9pZCBodm1faW5qZWN0X2V2ZW50KGNvbnN0IHN0cnVjdCB4ODZfZXZlbnQgKmV2ZW50 KQo+ICBpbnQgaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdChwYWRkcl90IGdwYSwgdW5zaWduZWQg bG9uZyBnbGEsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBucGZlYyBu cGZlYykKPiAgewo+IC0gICAgdW5zaWduZWQgbG9uZyBnZm4gPSBncGEgPj4gUEFHRV9TSElGVDsK PiArICAgIGdmbl90IGdmbiA9IGdhZGRyX3RvX2dmbihncGEpOwo+ICAgICAgcDJtX3R5cGVfdCBw Mm10Owo+ICAgICAgcDJtX2FjY2Vzc190IHAybWE7Cj4gICAgICBtZm5fdCBtZm47Cj4gQEAgLTE3 MjksNyArMTcyOSw3IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3Bh LCB1bnNpZ25lZCBsb25nIGdsYSwKPiAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4gICAgICAgICAg Y2FzZSBORVNURURIVk1fUEFHRUZBVUxUX0wwX0VSUk9SOgo+ICAgICAgICAgICAgICAvKiBncGEg aXMgbm93IHRyYW5zbGF0ZWQgdG8gbDEgZ3Vlc3QgYWRkcmVzcywgdXBkYXRlIGdmbi4gKi8KPiAt ICAgICAgICAgICAgZ2ZuID0gZ3BhID4+IFBBR0VfU0hJRlQ7Cj4gKyAgICAgICAgICAgIGdmbiA9 IGdhZGRyX3RvX2dmbihncGEpOwo+ICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICB9Cj4g ICAgICB9Cj4gQEAgLTE4MTcsNyArMTgxNyw3IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2Zh dWx0KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwKPiAgICAgICAgICAgICAgewo+ICAg ICAgICAgICAgICAgICAgYm9vbF90IHN2ZTsKPiAgCj4gLSAgICAgICAgICAgICAgICBwMm0tPmdl dF9lbnRyeShwMm0sIF9nZm4oZ2ZuKSwgJnAybXQsICZwMm1hLCAwLCBOVUxMLCAmc3ZlKTsKPiAr ICAgICAgICAgICAgICAgIHAybS0+Z2V0X2VudHJ5KHAybSwgZ2ZuLCAmcDJtdCwgJnAybWEsIDAs IE5VTEwsICZzdmUpOwo+ICAKPiAgICAgICAgICAgICAgICAgIGlmICggIXN2ZSAmJiBhbHRwMm1f dmNwdV9lbXVsYXRlX3ZlKGN1cnIpICkKPiAgICAgICAgICAgICAgICAgIHsKPiBAQCAtMTg2Miw3 ICsxODYyLDcgQEAgaW50IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBncGEsIHVu c2lnbmVkIGxvbmcgZ2xhLAo+ICAgICAgewo+ICAgICAgICAgIEFTU0VSVChwMm1faXNfaG9zdHAy bShwMm0pKTsKPiAgICAgICAgICBzaGFyaW5nX2Vub21lbSA9IAo+IC0gICAgICAgICAgICAobWVt X3NoYXJpbmdfdW5zaGFyZV9wYWdlKGN1cnJkLCBnZm4sIDApIDwgMCk7Cj4gKyAgICAgICAgICAg IChtZW1fc2hhcmluZ191bnNoYXJlX3BhZ2UoY3VycmQsIGdmbl94KGdmbiksIDApIDwgMCk7Cj4g ICAgICAgICAgcmMgPSAxOwo+ICAgICAgICAgIGdvdG8gb3V0X3B1dF9nZm47Cj4gICAgICB9Cj4g QEAgLTE4NzgsNyArMTg3OCw3IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRy X3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwKPiAgICAgICAgICAgKi8KPiAgICAgICAgICBpZiAo IG5wZmVjLndyaXRlX2FjY2VzcyApCj4gICAgICAgICAgewo+IC0gICAgICAgICAgICBwYWdpbmdf bWFya19wZm5fZGlydHkoY3VycmQsIF9wZm4oZ2ZuKSk7Cj4gKyAgICAgICAgICAgIHBhZ2luZ19t YXJrX3Bmbl9kaXJ0eShjdXJyZCwgX3BmbihnZm5feChnZm4pKSk7Cj4gICAgICAgICAgICAgIC8q Cj4gICAgICAgICAgICAgICAqIElmIHAybSBpcyByZWFsbHkgYW4gYWx0cDJtLCB1bmxvY2sgaXQg YmVmb3JlIGNoYW5naW5nIHRoZSB0eXBlLAo+ICAgICAgICAgICAgICAgKiBhcyBwMm1fYWx0cDJt X3Byb3BhZ2F0ZV9jaGFuZ2UoKSBuZWVkcyB0byBhY3F1aXJlIHRoZQo+IEBAIC0xODg2LDcgKzE4 ODYsNyBAQCBpbnQgaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdChwYWRkcl90IGdwYSwgdW5zaWdu ZWQgbG9uZyBnbGEsCj4gICAgICAgICAgICAgICAqLwo+ICAgICAgICAgICAgICBpZiAoIHAybSAh PSBob3N0cDJtICkKPiAgICAgICAgICAgICAgICAgIF9fcHV0X2dmbihwMm0sIGdmbik7Cj4gLSAg ICAgICAgICAgIHAybV9jaGFuZ2VfdHlwZV9vbmUoY3VycmQsIGdmbiwgcDJtX3JhbV9sb2dkaXJ0 eSwgcDJtX3JhbV9ydyk7Cj4gKyAgICAgICAgICAgIHAybV9jaGFuZ2VfdHlwZV9vbmUoY3VycmQs IGdmbl94KGdmbiksIHAybV9yYW1fbG9nZGlydHksIHAybV9yYW1fcncpOwo+ICAgICAgICAgICAg ICBfX3B1dF9nZm4oaG9zdHAybSwgZ2ZuKTsKPiAgCj4gICAgICAgICAgICAgIGdvdG8gb3V0Owo+ IEBAIC0xOTE2LDE2ICsxOTE2LDE2IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBh ZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwKPiAgICAgICAqIHNsZWVwIG9uIGV2ZW50IHJp bmcgd2FpdCBxdWV1ZXMsIGFuZCB3ZSBtdXN0IG5vdCBob2xkCj4gICAgICAgKiBsb2NrcyBpbiBz dWNoIGNpcmN1bXN0YW5jZSAqLwo+ICAgICAgaWYgKCBwYWdlZCApCj4gLSAgICAgICAgcDJtX21l bV9wYWdpbmdfcG9wdWxhdGUoY3VycmQsIGdmbik7Cj4gKyAgICAgICAgcDJtX21lbV9wYWdpbmdf cG9wdWxhdGUoY3VycmQsIGdmbl94KGdmbikpOwo+ICAgICAgaWYgKCBzaGFyaW5nX2Vub21lbSAp Cj4gICAgICB7Cj4gICAgICAgICAgaW50IHJ2Owo+ICAKPiAtICAgICAgICBpZiAoIChydiA9IG1l bV9zaGFyaW5nX25vdGlmeV9lbm9tZW0oY3VycmQsIGdmbiwgdHJ1ZSkpIDwgMCApCj4gKyAgICAg ICAgaWYgKCAocnYgPSBtZW1fc2hhcmluZ19ub3RpZnlfZW5vbWVtKGN1cnJkLCBnZm5feChnZm4p LCB0cnVlKSkgPCAwICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxP R19FUlIsICJEb21haW4gJWh1IGF0dGVtcHQgdG8gdW5zaGFyZSAiCj4gICAgICAgICAgICAgICAg ICAgICAgICJnZm4gJWx4LCBFTk9NRU0gYW5kIG5vIGhlbHBlciAocmMgJWQpXG4iLAo+IC0gICAg ICAgICAgICAgICAgICAgICBjdXJyZC0+ZG9tYWluX2lkLCBnZm4sIHJ2KTsKPiArICAgICAgICAg ICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgZ2ZuX3goZ2ZuKSwgcnYpOwo+ICAgICAgICAg ICAgICAvKiBDcmFzaCB0aGUgZG9tYWluICovCj4gICAgICAgICAgICAgIHJjID0gMDsKPiAgICAg ICAgICB9Cj4gQEAgLTQ2MDEsOCArNDYwMSw5IEBAIHN0YXRpYyBpbnQgZG9fYWx0cDJtX29wKAo+ ICAgICAgICAgIHYgPSBkLT52Y3B1W2EudS5lbmFibGVfbm90aWZ5LnZjcHVfaWRdOwo+ICAKPiAg ICAgICAgICBpZiAoICFnZm5fZXEodmNwdV9hbHRwMm0odikudmVpbmZvX2dmbiwgSU5WQUxJRF9H Rk4pIHx8Cj4gLSAgICAgICAgICAgICBtZm5fZXEoZ2V0X2dmbl9xdWVyeV91bmxvY2tlZCh2LT5k b21haW4sCj4gLSAgICAgICAgICAgICAgICAgICAgYS51LmVuYWJsZV9ub3RpZnkuZ2ZuLCAmcDJt dCksIElOVkFMSURfTUZOKSApCj4gKyAgICAgICAgICAgICBtZm5fZXEoZ2V0X2dmbl9xdWVyeV91 bmxvY2tlZCgKPiArICAgICAgICAgICAgICAgICAgICAgICAgdi0+ZG9tYWluLCBfZ2ZuKGEudS5l bmFibGVfbm90aWZ5LmdmbiksICZwMm10KSwKPiArICAgICAgICAgICAgICAgICAgICBJTlZBTElE X01GTikgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwo+ICAgICAg ICAgICAgICBicmVhazsKPiBAQCAtNDg2Niw3ICs0ODY3LDcgQEAgc3RhdGljIGludCBodm1vcF9n ZXRfbWVtX3R5cGUoCj4gICAgICAgKiB0eXBlLCBub3QgaW4gYWxsb2NhdGluZyBvciB1bnNoYXJp bmcuIFRoYXQnbGwgaGFwcGVuCj4gICAgICAgKiBvbiBhY2Nlc3MuCj4gICAgICAgKi8KPiAtICAg IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgYS5wZm4sICZ0KTsKPiArICAgIGdldF9nZm5fcXVl cnlfdW5sb2NrZWQoZCwgX2dmbihhLnBmbiksICZ0KTsKPiAgICAgIGlmICggcDJtX2lzX21taW8o dCkgKQo+ICAgICAgICAgIGEubWVtX3R5cGUgPSAgSFZNTUVNX21taW9fZG07Cj4gICAgICBlbHNl IGlmICggdCA9PSBwMm1faW9yZXFfc2VydmVyICkKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS9tdHJyLmMgYi94ZW4vYXJjaC94ODYvaHZtL210cnIuYwo+IGluZGV4IGI4ZmEzNDAuLmY1 NTNlNGQgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9tdHJyLmMKPiArKysgYi94ZW4v YXJjaC94ODYvaHZtL210cnIuYwo+IEBAIC0zNjYsNyArMzY2LDcgQEAgdWludDMyX3QgZ2V0X3Bh dF9mbGFncyhzdHJ1Y3QgdmNwdSAqdiwKPiAgICAgIHsKPiAgICAgICAgICBzdHJ1Y3QgZG9tYWlu ICpkID0gdi0+ZG9tYWluOwo+ICAgICAgICAgIHAybV90eXBlX3QgcDJtdDsKPiAtICAgICAgICBn ZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIHBhZGRyX3RvX3BmbihncGFkZHIpLCAmcDJtdCk7Cj4g KyAgICAgICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnYWRkcl90b19nZm4oZ3BhZGRyKSwg JnAybXQpOwo+ICAgICAgICAgIGlmIChwMm1faXNfcmFtKHAybXQpKQo+ICAgICAgICAgICAgICBn ZHByaW50ayhYRU5MT0dfV0FSTklORywKPiAgICAgICAgICAgICAgICAgICAgICAiQ29uZmxpY3Qg b2NjdXJzIGZvciBhIGdpdmVuIGd1ZXN0IGwxZSBmbGFnczoleCAiCj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKPiBp bmRleCBiOWE4OTAwLi40NmY5ODkzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3Zt L3N2bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKPiBAQCAtMTc2Miw3ICsx NzYyLDcgQEAgc3RhdGljIHZvaWQgc3ZtX2RvX25lc3RlZF9wZ2ZhdWx0KHN0cnVjdCB2Y3B1ICp2 LAo+ICAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVpbnQ2NF90IHBmZWMsIHBhZGRy X3QgZ3BhKQo+ICB7Cj4gICAgICBpbnQgcmV0Owo+IC0gICAgdW5zaWduZWQgbG9uZyBnZm4gPSBn cGEgPj4gUEFHRV9TSElGVDsKPiArICAgIGdmbl90IGdmbiA9IGdhZGRyX3RvX2dmbihncGEpOwo+ ICAgICAgbWZuX3QgbWZuOwo+ICAgICAgcDJtX3R5cGVfdCBwMm10Owo+ICAgICAgcDJtX2FjY2Vz c190IHAybWE7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVu L2FyY2gveDg2L2h2bS92bXgvdm14LmMKPiBpbmRleCAzNjVlZWIyLi5iNTM3MGRkIDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2 bS92bXgvdm14LmMKPiBAQCAtMjE5OSw3ICsyMTk5LDggQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVf dXBkYXRlX3ZtZnVuY192ZShzdHJ1Y3QgdmNwdSAqdikKPiAgICAgICAgICAgICAgcDJtX3R5cGVf dCB0Owo+ICAgICAgICAgICAgICBtZm5fdCBtZm47Cj4gIAo+IC0gICAgICAgICAgICBtZm4gPSBn ZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbl94KHZjcHVfYWx0cDJtKHYpLnZlaW5mb19nZm4p LCAmdCk7Cj4gKyAgICAgICAgICAgIC8qIFRPRE86IFRoaXMgaXMgYSBzZWN1cml0eSBpc3N1ZS4u LiAqLwo+ICsgICAgICAgICAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIHZjcHVf YWx0cDJtKHYpLnZlaW5mb19nZm4sICZ0KTsKPiAgCj4gICAgICAgICAgICAgIGlmICggIW1mbl9l cShtZm4sIElOVkFMSURfTUZOKSApCj4gICAgICAgICAgICAgIHsKPiBAQCAtMzMyOCw3ICszMzI5 LDcgQEAgc3RhdGljIHZvaWQgZXB0X2hhbmRsZV92aW9sYXRpb24oZXB0X3F1YWxfdCBxLCBwYWRk cl90IGdwYSkKPiAgCj4gICAgICAgICAgX2QuZ3BhID0gZ3BhOwo+ICAgICAgICAgIF9kLnF1YWxp ZmljYXRpb24gPSBxLnJhdzsKPiAtICAgICAgICBfZC5tZm4gPSBtZm5feChnZXRfZ2ZuX3F1ZXJ5 X3VubG9ja2VkKGQsIGdmbiwgJl9kLnAybXQpKTsKPiArICAgICAgICBfZC5tZm4gPSBtZm5feChn ZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIF9nZm4oZ2ZuKSwgJl9kLnAybXQpKTsKPiAgCj4gICAg ICAgICAgX190cmFjZV92YXIoVFJDX0hWTV9OUEYsIDAsIHNpemVvZihfZCksICZfZCk7Cj4gICAg ICB9Cj4gQEAgLTMzNTgsNyArMzM1OSw3IEBAIHN0YXRpYyB2b2lkIGVwdF9oYW5kbGVfdmlvbGF0 aW9uKGVwdF9xdWFsX3QgcSwgcGFkZHJfdCBncGEpCj4gICAgICB9Cj4gIAo+ICAgICAgLyogRXZl cnl0aGluZyBlbHNlIGlzIGFuIGVycm9yLiAqLwo+IC0gICAgbWZuID0gZ2V0X2dmbl9xdWVyeV91 bmxvY2tlZChkLCBnZm4sICZwMm10KTsKPiArICAgIG1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2Nr ZWQoZCwgX2dmbihnZm4pLCAmcDJtdCk7Cj4gICAgICBncHJpbnRrKFhFTkxPR19FUlIsCj4gICAg ICAgICAgICAgICJFUFQgdmlvbGF0aW9uICUjbHggKCVjJWMlYy8lYyVjJWMpIGdwYSAlIyJQUklw YWRkciIgbWZuICUjbHggdHlwZSAlaVxuIiwKPiAgICAgICAgICAgICAgcS5yYXcsCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKPiBpbmRleCAyOGEw MDMwLi5jM2M3NjI4IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCj4gKysrIGIveGVu L2FyY2gveDg2L21tLmMKPiBAQCAtNDM2NCwxMSArNDM2NCwxMSBAQCBpbnQgeGVubWVtX2FkZF90 b19waHlzbWFwX29uZSgKPiAgICAgICAgICAgICAgcDJtX3R5cGVfdCBwMm10Owo+ICAKPiAgICAg ICAgICAgICAgZ2ZuID0gaWR4Owo+IC0gICAgICAgICAgICBtZm4gPSBnZXRfZ2ZuX3Vuc2hhcmUo ZCwgZ2ZuLCAmcDJtdCk7Cj4gKyAgICAgICAgICAgIG1mbiA9IGdldF9nZm5fdW5zaGFyZShkLCBf Z2ZuKGdmbiksICZwMm10KTsKPiAgICAgICAgICAgICAgLyogSWYgdGhlIHBhZ2UgaXMgc3RpbGwg c2hhcmVkLCBleGl0IGVhcmx5ICovCj4gICAgICAgICAgICAgIGlmICggcDJtX2lzX3NoYXJlZChw Mm10KSApCj4gICAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ2Zu KTsKPiArICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnZm4pKTsKPiAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgIHBh Z2UgPSBnZXRfcGFnZV9mcm9tX21mbihtZm4sIGQpOwo+IEBAIC00Mzg5LDcgKzQzODksNyBAQCBp bnQgeGVubWVtX2FkZF90b19waHlzbWFwX29uZSgKPiAgICAgIH0KPiAgCj4gICAgICAvKiBSZW1v dmUgcHJldmlvdXNseSBtYXBwZWQgcGFnZSBpZiBpdCB3YXMgcHJlc2VudC4gKi8KPiAtICAgIHBy ZXZfbWZuID0gbWZuX3goZ2V0X2dmbihkLCBnZm5feChncGZuKSwgJnAybXQpKTsKPiArICAgIHBy ZXZfbWZuID0gbWZuX3goZ2V0X2dmbihkLCBncGZuLCAmcDJtdCkpOwo+ICAgICAgaWYgKCBtZm5f dmFsaWQoX21mbihwcmV2X21mbikpICkKPiAgICAgIHsKPiAgICAgICAgICBpZiAoIGlzX3hlbl9o ZWFwX21mbihwcmV2X21mbikgKQo+IEBAIC00NDAwLDcgKzQ0MDAsNyBAQCBpbnQgeGVubWVtX2Fk ZF90b19waHlzbWFwX29uZSgKPiAgICAgICAgICAgICAgcmMgPSBndWVzdF9yZW1vdmVfcGFnZShk LCBnZm5feChncGZuKSk7Cj4gICAgICB9Cj4gICAgICAvKiBJbiB0aGUgWEVOTUFQU1BBQ0VfZ21m biBjYXNlIHdlIHN0aWxsIGhvbGQgYSByZWYgb24gdGhlIG9sZCBwYWdlLiAqLwo+IC0gICAgcHV0 X2dmbihkLCBnZm5feChncGZuKSk7Cj4gKyAgICBwdXRfZ2ZuKGQsIGdwZm4pOwo+ICAKPiAgICAg IGlmICggcmMgKQo+ICAgICAgICAgIGdvdG8gcHV0X2JvdGg7Cj4gQEAgLTQ0MjMsNyArNDQyMyw3 IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ICAgcHV0X2JvdGg6Cj4gICAgICAv KiBJbiB0aGUgWEVOTUFQU1BBQ0VfZ21mbiBjYXNlLCB3ZSB0b29rIGEgcmVmIG9mIHRoZSBnZm4g YXQgdGhlIHRvcC4gKi8KPiAgICAgIGlmICggc3BhY2UgPT0gWEVOTUFQU1BBQ0VfZ21mbiApCj4g LSAgICAgICAgcHV0X2dmbihkLCBnZm4pOwo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnZm4p KTsKPiAgCj4gICAgICBpZiAoIHBhZ2UgKQo+ICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2FyY2gveDg2L21tL2hh cC9oYXAuYwo+IGluZGV4IDNkNjUxYjkuLjBhYzdkMTAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L21tL2hhcC9oYXAuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKPiBAQCAt NjgxLDcgKzY4MSw3IEBAIGhhcF9wYWdpbmdfZ2V0X21vZGUoc3RydWN0IHZjcHUgKnYpCj4gIHN0 YXRpYyB2b2lkIGhhcF91cGRhdGVfcGFnaW5nX21vZGVzKHN0cnVjdCB2Y3B1ICp2KQo+ICB7Cj4g ICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwo+IC0gICAgdW5zaWduZWQgbG9uZyBj cjNfZ2ZuID0gdi0+YXJjaC5odm0uZ3Vlc3RfY3JbM10gPj4gUEFHRV9TSElGVDsKPiArICAgIGdm bl90IGNyM19nZm4gPSBnYWRkcl90b19nZm4odi0+YXJjaC5odm0uZ3Vlc3RfY3JbM10pOwo+ICAg ICAgcDJtX3R5cGVfdCB0Owo+ICAKPiAgICAgIC8qIFdlIGhvbGQgb250byB0aGUgY3IzIGFzIGl0 IG1heSBiZSBtb2RpZmllZCBsYXRlciwgYW5kCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9oYXAvbmVzdGVkX2hhcC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKPiBp bmRleCBkMmEwN2E1Li5kODNjNDM2IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAv bmVzdGVkX2hhcC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKPiBA QCAtMTUwLDEyICsxNTAsMTIgQEAgbmVzdGVkaGFwX3dhbGtfTDBfcDJtKHN0cnVjdCBwMm1fZG9t YWluICpwMm0sIHBhZGRyX3QgTDFfZ3BhLCBwYWRkcl90ICpMMF9ncGEsCj4gICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBhZ2Vfb3JkZXIsCj4gICAgICAgICAgICAgICAgICAg ICAgICBib29sX3QgYWNjZXNzX3IsIGJvb2xfdCBhY2Nlc3NfdywgYm9vbF90IGFjY2Vzc194KQo+ ICB7Cj4gKyAgICBnZm5fdCBsMV9nZm4gPSBnYWRkcl90b19nZm4oTDFfZ3BhKTsKPiAgICAgIG1m bl90IG1mbjsKPiAgICAgIGludCByYzsKPiAgCj4gICAgICAvKiB3YWxrIEwwIFAyTSB0YWJsZSAq Lwo+IC0gICAgbWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIEwxX2dwYSA+PiBQQUdFX1NI SUZULCBwMm10LCBwMm1hLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwYWdl X29yZGVyKTsKPiArICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3MocDJtLCBsMV9nZm4sIHAy bXQsIHAybWEsIDAsIHBhZ2Vfb3JkZXIpOwo+ICAKPiAgICAgIHJjID0gTkVTVEVESFZNX1BBR0VG QVVMVF9ESVJFQ1RfTU1JTzsKPiAgICAgIGlmICggKnAybXQgPT0gcDJtX21taW9fZGlyZWN0ICkK PiBAQCAtMTc4LDcgKzE3OCw3IEBAIG5lc3RlZGhhcF93YWxrX0wwX3AybShzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLCBwYWRkcl90IEwxX2dwYSwgcGFkZHJfdCAqTDBfZ3BhLAo+ICBkaXJlY3RfbW1p b19vdXQ6Cj4gICAgICAqTDBfZ3BhID0gKG1mbl94KG1mbikgPDwgUEFHRV9TSElGVCkgKyAoTDFf Z3BhICYgflBBR0VfTUFTSyk7Cj4gIG91dDoKPiAtICAgIF9fcHV0X2dmbihwMm0sIEwxX2dwYSA+ PiBQQUdFX1NISUZUKTsKPiArICAgIF9fcHV0X2dmbihwMm0sIGwxX2dmbik7Cj4gICAgICByZXR1 cm4gcmM7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fYWNjZXNz LmMgYi94ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jCj4gaW5kZXggMzBjMmYxYS4uY2FhMzNj MyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jCj4gKysrIGIveGVu L2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYwo+IEBAIC0yNjMsNyArMjYzLDYgQEAgaW50IHAybV9z ZXRfYWx0cDJtX21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHAybV9kb21haW4g KmhwMm0sCj4gICAgICBwMm1fdHlwZV90IHQ7Cj4gICAgICBwMm1fYWNjZXNzX3Qgb2xkX2E7Cj4g ICAgICB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlcjsKPiAtICAgIHVuc2lnbmVkIGxvbmcgZ2ZuX2wg PSBnZm5feChnZm4pOwo+ICAgICAgaW50IHJjOwo+ICAKPiAgICAgIG1mbiA9IGFwMm0tPmdldF9l bnRyeShhcDJtLCBnZm4sICZ0LCAmb2xkX2EsIDAsIE5VTEwsIE5VTEwpOwo+IEBAIC0yNzIsNyAr MjcxLDcgQEAgaW50IHAybV9zZXRfYWx0cDJtX21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IHAybV9kb21haW4gKmhwMm0sCj4gICAgICBpZiAoICFtZm5fdmFsaWQobWZuKSApCj4g ICAgICB7Cj4gIAo+IC0gICAgICAgIG1mbiA9IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhocDJtLCBn Zm5fbCwgJnQsICZvbGRfYSwKPiArICAgICAgICBtZm4gPSBfX2dldF9nZm5fdHlwZV9hY2Nlc3Mo aHAybSwgZ2ZuLCAmdCwgJm9sZF9hLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQMk1fQUxMT0MgfCBQMk1fVU5TSEFSRSwgJnBhZ2Vfb3JkZXIsIDApOwo+ICAKPiAgICAg ICAgICByYyA9IC1FU1JDSDsKPiBAQCAtMjgzLDcgKzI4Miw3IEBAIGludCBwMm1fc2V0X2FsdHAy bV9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwMm1fZG9tYWluICpocDJtLAo+ ICAgICAgICAgIGlmICggcGFnZV9vcmRlciAhPSBQQUdFX09SREVSXzRLICkKPiAgICAgICAgICB7 Cj4gICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9IH4oKDFVTCA8PCBwYWdlX29yZGVy KSAtIDEpOwo+IC0gICAgICAgICAgICBnZm5fdCBnZm4yID0gX2dmbihnZm5fbCAmIG1hc2spOwo+ ICsgICAgICAgICAgICBnZm5fdCBnZm4yID0gX2dmbihnZm5feChnZm4pICYgbWFzayk7Cj4gICAg ICAgICAgICAgIG1mbl90IG1mbjIgPSBfbWZuKG1mbl94KG1mbikgJiBtYXNrKTsKPiAgCj4gICAg ICAgICAgICAgIHJjID0gYXAybS0+c2V0X2VudHJ5KGFwMm0sIGdmbjIsIG1mbjIsIHBhZ2Vfb3Jk ZXIsIHQsIG9sZF9hLCAxKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL21lbV9zaGFy aW5nLmMgYi94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYwo+IGluZGV4IDU3M2QzNTQuLjdm MmJmODAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiArKysg Yi94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYwo+IEBAIC00OTksNyArNDk5LDcgQEAgc3Rh dGljIGludCBhdWRpdCh2b2lkKQo+ICAgICAgICAgICAgICAgICAgZXJyb3JzKys7Cj4gICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBvX21m biA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZy0+Z2ZuLCAmdCk7IAo+ICsgICAgICAgICAg ICBvX21mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgX2dmbihnLT5nZm4pLCAmdCk7Cj4g ICAgICAgICAgICAgIGlmICggIW1mbl9lcShvX21mbiwgbWZuKSApCj4gICAgICAgICAgICAgIHsK PiAgICAgICAgICAgICAgICAgIE1FTV9TSEFSSU5HX0RFQlVHKCJJbmNvcnJlY3QgUDJNIGZvciBk PSVodSwgUEZOPSVseC4iCj4gQEAgLTczMiwxMiArNzMyLDEyIEBAIHN0YXRpYyBpbnQgZGVidWdf Z2ZuKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbikKPiAgICAgIG1mbl90IG1mbjsKPiAgICAg IGludCBudW1fcmVmczsKPiAgCj4gLSAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbl94KGdm biksICZwMm10KTsKPiArICAgIG1mbiA9IGdldF9nZm5fcXVlcnkoZCwgZ2ZuLCAmcDJtdCk7Cj4g IAo+ICAgICAgTUVNX1NIQVJJTkdfREVCVUcoIkRlYnVnIGZvciBkb20lZCwgZ2ZuPSUiIFBSSV9n Zm4gIlxuIiwgCj4gICAgICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGdmbl94KGdm bikpOwo+ICAgICAgbnVtX3JlZnMgPSBkZWJ1Z19tZm4obWZuKTsKPiAtICAgIHB1dF9nZm4oZCwg Z2ZuX3goZ2ZuKSk7Cj4gKyAgICBwdXRfZ2ZuKGQsIGdmbik7Cj4gIAo+ICAgICAgcmV0dXJuIG51 bV9yZWZzOwo+ICB9Cj4gQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW50IG5vbWluYXRlX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ICAKPiAgICAgICpwaGFuZGxlID0gMFVM Owo+ICAKPiAtICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3MoaHAybSwgZ2ZuX3goZ2ZuKSwg JnAybXQsICZwMm1hLCAwLCBOVUxMKTsKPiArICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3Mo aHAybSwgZ2ZuLCAmcDJtdCwgJnAybWEsIDAsIE5VTEwpOwo+ICAKPiAgICAgIC8qIENoZWNrIGlm IG1mbiBpcyB2YWxpZCAqLwo+ICAgICAgcmV0ID0gLUVJTlZBTDsKPiBAQCAtODIwLDcgKzgyMCw3 IEBAIHN0YXRpYyBpbnQgbm9taW5hdGVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4s Cj4gICAgICAgICAgICAgIGlmICggIWFwMm0gKQo+ICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gIAo+IC0gICAgICAgICAgICBhbWZuID0gX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKGFwMm0sIGdm bl94KGdmbiksICZhcDJtdCwgJmFwMm1hLAo+ICsgICAgICAgICAgICBhbWZuID0gX19nZXRfZ2Zu X3R5cGVfYWNjZXNzKGFwMm0sIGdmbiwgJmFwMm10LCAmYXAybWEsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgZmFsc2UpOwo+ICAgICAgICAgICAg ICBpZiAoIG1mbl92YWxpZChhbWZuKSAmJiAoIW1mbl9lcShhbWZuLCBtZm4pIHx8IGFwMm1hICE9 IHAybWEpICkKPiAgICAgICAgICAgICAgewo+IEBAIC04ODUsNyArODg1LDcgQEAgc3RhdGljIGlu dCBub21pbmF0ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKPiAgICAgIHJldCA9 IDA7Cj4gIAo+ICBvdXQ6Cj4gLSAgICBwdXRfZ2ZuKGQsIGdmbl94KGdmbikpOwo+ICsgICAgcHV0 X2dmbihkLCBnZm4pOwo+ICAgICAgcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBAQCAtMTEyNCwxMSAr MTEyNCwxMSBAQCBpbnQgX19tZW1fc2hhcmluZ191bnNoYXJlX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwKPiAgICAgIGludCBsYXN0X2dmbjsKPiAgICAgIGdmbl9pbmZvX3QgKmdmbl9pbmZvID0gTlVM TDsKPiAgICAgCj4gLSAgICBtZm4gPSBnZXRfZ2ZuKGQsIGdmbiwgJnAybXQpOwo+ICsgICAgbWZu ID0gZ2V0X2dmbihkLCBfZ2ZuKGdmbiksICZwMm10KTsKPiAgICAgIAo+ICAgICAgLyogSGFzIHNv bWVvbmUgYWxyZWFkeSB1bnNoYXJlZCBpdD8gKi8KPiAgICAgIGlmICggIXAybV9pc19zaGFyZWQo cDJtdCkgKSB7Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm4pOwo+ICsgICAgICAgIHB1dF9nZm4o ZCwgX2dmbihnZm4pKTsKPiAgICAgICAgICByZXR1cm4gMDsKPiAgICAgIH0KPiAgCj4gQEAgLTEx NzUsNyArMTE3NSw3IEBAIGludCBfX21lbV9zaGFyaW5nX3Vuc2hhcmVfcGFnZShzdHJ1Y3QgZG9t YWluICpkLAo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgaWYgKCAhZ2V0X3BhZ2UocGFnZSwg ZCkgKQo+ICAgICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7 Cj4gKyAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIF9nZm4oZ2ZuKSk7Cj4gICAgICAgICAgICAg ICAgICBkb21haW5fY3Jhc2goZCk7Cj4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVPVkVSRkxP VzsKPiAgICAgICAgICAgICAgfQo+IEBAIC0xMTgzLDcgKzExODMsNyBAQCBpbnQgX19tZW1fc2hh cmluZ191bnNoYXJlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAgICAgICAgIHB1 dF9wYWdlKHBhZ2UpOwo+ICAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiAgICAgICAgICB9 Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm4pOwo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihn Zm4pKTsKPiAgCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICB9Cj4gQEAgLTEyMDIsNyArMTIw Miw3IEBAIGludCBfX21lbV9zaGFyaW5nX3Vuc2hhcmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAo+ ICAgICAgICAgIC8qIFVuZG8gZGVjIG9mIG5yX3NhdmVkX21mbnMsIGFzIHRoZSByZXRyeSB3aWxs IGRlY3JlYXNlIGFnYWluLiAqLwo+ICAgICAgICAgIGF0b21pY19pbmMoJm5yX3NhdmVkX21mbnMp Owo+ICAgICAgICAgIG1lbV9zaGFyaW5nX3BhZ2VfdW5sb2NrKG9sZF9wYWdlKTsKPiAtICAgICAg ICBwdXRfZ2ZuKGQsIGdmbik7Cj4gKyAgICAgICAgcHV0X2dmbihkLCBfZ2ZuKGdmbikpOwo+ICAg ICAgICAgIC8qIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcGxhY2luZyBhbiBldmVudAo+ICAg ICAgICAgICAqIGluIHRoZSByaW5nICovCj4gICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gQEAg LTEyMzAsNyArMTIzMCw3IEBAIGludCBfX21lbV9zaGFyaW5nX3Vuc2hhcmVfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLAo+ICAgICAgICogbWFya2luZyBkaXJ0eSBpcyBmZWFzaWJsZSAqLwo+ICAgICAg cGFnaW5nX21hcmtfZGlydHkoZCwgcGFnZV90b19tZm4ocGFnZSkpOwo+ICAgICAgLyogV2UgZG8g bm90IG5lZWQgdG8gdW5sb2NrIGEgcHJpdmF0ZSBwYWdlICovCj4gLSAgICBwdXRfZ2ZuKGQsIGdm bik7Cj4gKyAgICBwdXRfZ2ZuKGQsIF9nZm4oZ2ZuKSk7Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+ ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21t L3AybS5jCj4gaW5kZXggZjUyYTcxZS4uMTliMzgzZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94 ODYvbW0vcDJtLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBAQCAtNDA5LDEyICs0 MDksMTEgQEAgdm9pZCBwMm1fdW5sb2NrX2FuZF90bGJfZmx1c2goc3RydWN0IHAybV9kb21haW4g KnAybSkKPiAgICAgICAgICBtbV93cml0ZV91bmxvY2soJnAybS0+bG9jayk7Cj4gIH0KPiAgCj4g LW1mbl90IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nIGdmbl9sLAo+ICttZm5fdCBfX2dldF9nZm5fdHlwZV9hY2Nlc3Moc3RydWN0IHAy bV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBl X3QgKnQsIHAybV9hY2Nlc3NfdCAqYSwgcDJtX3F1ZXJ5X3QgcSwKPiAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgKnBhZ2Vfb3JkZXIsIGJvb2xfdCBsb2NrZWQpCj4gIHsKPiAgICAg IG1mbl90IG1mbjsKPiAtICAgIGdmbl90IGdmbiA9IF9nZm4oZ2ZuX2wpOwo+ICAKPiAgICAgIC8q IFVuc2hhcmUgbWFrZXMgbm8gc2Vuc2Ugd2l0aHVvdCBwb3B1bGF0ZS4gKi8KPiAgICAgIGlmICgg cSAmIFAyTV9VTlNIQVJFICkKPiBAQCAtNDI1LDcgKzQyNCw3IEBAIG1mbl90IF9fZ2V0X2dmbl90 eXBlX2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbl9sLAo+ ICAgICAgICAgIC8qIE5vdCBuZWNlc3NhcmlseSB0cnVlLCBidXQgZm9yIG5vbi10cmFuc2xhdGVk IGd1ZXN0cywgd2UgY2xhaW0KPiAgICAgICAgICAgKiBpdCdzIHRoZSBtb3N0IGdlbmVyaWMga2lu ZCBvZiBtZW1vcnkgKi8KPiAgICAgICAgICAqdCA9IHAybV9yYW1fcnc7Cj4gLSAgICAgICAgcmV0 dXJuIF9tZm4oZ2ZuX2wpOwo+ICsgICAgICAgIHJldHVybiBfbWZuKGdmbl94KGdmbikpOwo+ICAg ICAgfQo+ICAKPiAgICAgIGlmICggbG9ja2VkICkKPiBAQCAtNDM5LDggKzQzOCw4IEBAIG1mbl90 IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBs b25nIGdmbl9sLAo+ICAgICAgICAgIEFTU0VSVChwMm1faXNfaG9zdHAybShwMm0pKTsKPiAgICAg ICAgICAvKiBUcnkgdG8gdW5zaGFyZS4gSWYgd2UgZmFpbCwgY29tbXVuaWNhdGUgRU5PTUVNIHdp dGhvdXQKPiAgICAgICAgICAgKiBzbGVlcGluZy4gKi8KPiAtICAgICAgICBpZiAoIG1lbV9zaGFy aW5nX3Vuc2hhcmVfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuX2wsIDApIDwgMCApCj4gLSAgICAgICAg ICAgIG1lbV9zaGFyaW5nX25vdGlmeV9lbm9tZW0ocDJtLT5kb21haW4sIGdmbl9sLCBmYWxzZSk7 Cj4gKyAgICAgICAgaWYgKCBtZW1fc2hhcmluZ191bnNoYXJlX3BhZ2UocDJtLT5kb21haW4sIGdm bl94KGdmbiksIDApIDwgMCApCj4gKyAgICAgICAgICAgIG1lbV9zaGFyaW5nX25vdGlmeV9lbm9t ZW0ocDJtLT5kb21haW4sIGdmbl94KGdmbiksIGZhbHNlKTsKPiAgICAgICAgICBtZm4gPSBwMm0t PmdldF9lbnRyeShwMm0sIGdmbiwgdCwgYSwgcSwgcGFnZV9vcmRlciwgTlVMTCk7Cj4gICAgICB9 Cj4gIAo+IEBAIC00NTUsNyArNDU0LDcgQEAgbWZuX3QgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsCj4gICAgICByZXR1cm4g bWZuOwo+ICB9Cj4gIAo+IC12b2lkIF9fcHV0X2dmbihzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1 bnNpZ25lZCBsb25nIGdmbikKPiArdm9pZCBfX3B1dF9nZm4oc3RydWN0IHAybV9kb21haW4gKnAy bSwgZ2ZuX3QgZ2ZuKQo+ICB7Cj4gICAgICBpZiAoICFwMm0gfHwgIXBhZ2luZ19tb2RlX3RyYW5z bGF0ZShwMm0tPmRvbWFpbikgKQo+ICAgICAgICAgIC8qIE5vdGhpbmcgdG8gZG8gaW4gdGhpcyBj YXNlICovCj4gQEAgLTQ4NCw3ICs0ODMsNyBAQCBzdHJ1Y3QgcGFnZV9pbmZvICpwMm1fZ2V0X3Bh Z2VfZnJvbV9nZm4oCj4gICAgICB7Cj4gICAgICAgICAgLyogRmFzdCBwYXRoOiBsb29rIHVwIGFu ZCBnZXQgb3V0ICovCj4gICAgICAgICAgcDJtX3JlYWRfbG9jayhwMm0pOwo+IC0gICAgICAgIG1m biA9IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbl94KGdmbiksIHQsIGEsIDAsIE5VTEws IDApOwo+ICsgICAgICAgIG1mbiA9IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbiwgdCwg YSwgMCwgTlVMTCwgMCk7Cj4gICAgICAgICAgaWYgKCBwMm1faXNfYW55X3JhbSgqdCkgJiYgbWZu X3ZhbGlkKG1mbikKPiAgICAgICAgICAgICAgICYmICEoKHEgJiBQMk1fVU5TSEFSRSkgJiYgcDJt X2lzX3NoYXJlZCgqdCkpICkKPiAgICAgICAgICB7Cj4gQEAgLTUxMywxNCArNTEyLDE0IEBAIHN0 cnVjdCBwYWdlX2luZm8gKnAybV9nZXRfcGFnZV9mcm9tX2dmbigKPiAgICAgIH0KPiAgCj4gICAg ICAvKiBTbG93IHBhdGg6IHRha2UgdGhlIHdyaXRlIGxvY2sgYW5kIGRvIGZpeHVwcyAqLwo+IC0g ICAgbWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbl94KGdmbiksIHQsIGEsIHEsIE5V TEwpOwo+ICsgICAgbWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbiwgdCwgYSwgcSwg TlVMTCk7Cj4gICAgICBpZiAoIHAybV9pc19yYW0oKnQpICYmIG1mbl92YWxpZChtZm4pICkKPiAg ICAgIHsKPiAgICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKPiAgICAgICAgICBpZiAo ICFnZXRfcGFnZShwYWdlLCBwMm0tPmRvbWFpbikgKQo+ICAgICAgICAgICAgICBwYWdlID0gTlVM TDsKPiAgICAgIH0KPiAtICAgIHB1dF9nZm4ocDJtLT5kb21haW4sIGdmbl94KGdmbikpOwo+ICsg ICAgcHV0X2dmbihwMm0tPmRvbWFpbiwgZ2ZuKTsKPiAgCj4gICAgICByZXR1cm4gcGFnZTsKPiAg fQo+IEBAIC0xMjc4LDcgKzEyNzcsNyBAQCBpbnQgc2V0X3NoYXJlZF9wMm1fZW50cnkoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm5fbCwgbWZuX3QgbWZuKQo+ICAgICAgaWYgKCBy YyApCj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwKPiAgICAgICAgICAgICAgICAgICAi cDJtX3NldF9lbnRyeSBmYWlsZWQhIG1mbj0lMDhseCByYzolZFxuIiwKPiAtICAgICAgICAgICAg ICAgICBtZm5feChnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKHAybS0+ZG9tYWluLCBnZm5fbCwgJm90 KSksIHJjKTsKPiArICAgICAgICAgICAgICAgICBtZm5feChnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2Vk KHAybS0+ZG9tYWluLCBnZm4sICZvdCkpLCByYyk7Cj4gICAgICByZXR1cm4gcmM7Cj4gIH0KPiAg Cj4gQEAgLTIxODcsOCArMjE4Niw3IEBAIGJvb2wgcDJtX2FsdHAybV9sYXp5X2NvcHkoc3RydWN0 IHZjcHUgKnYsIHBhZGRyX3QgZ3BhLAo+ICAKPiAgICAgIEFTU0VSVChwMm1fbG9ja2VkX2J5X21l KGhwMm0pKTsKPiAgCj4gLSAgICBtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKGFwMm0sIGdmbl94 KGdmbiksICZwMm10LCAmcDJtYSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg JnBhZ2Vfb3JkZXIpOwo+ICsgICAgbWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhhcDJtLCBnZm4s ICZwMm10LCAmcDJtYSwgMCwgJnBhZ2Vfb3JkZXIpOwo+ICAKPiAgICAgIC8qIEVudHJ5IGFscmVh ZHkgcHJlc2VudCBpbiBhcDJtPyAgQ2FsbGVyIHNob3VsZCBoYW5kbGUgdGhlIGZhdWx0LiAqLwo+ ICAgICAgaWYgKCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKPiBAQCAtMjE5Nyw4ICsyMTk1 LDcgQEAgYm9vbCBwMm1fYWx0cDJtX2xhenlfY29weShzdHJ1Y3QgdmNwdSAqdiwgcGFkZHJfdCBn cGEsCj4gICAgICAgICAgZ290byBwdXRfYXAybTsKPiAgICAgIH0KPiAgCj4gLSAgICBtZm4gPSBn ZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbl94KGdmbiksICZwMm10LCAmcDJtYSwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX0FMTE9DLCAmcGFnZV9vcmRlcik7Cj4gKyAg ICBtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbiwgJnAybXQsICZwMm1hLCBQMk1f QUxMT0MsICZwYWdlX29yZGVyKTsKPiAgCj4gICAgICAvKiBFbnRyeSBub3QgcHJlc2VudCBpbiBo cDJtPyAgQ2FsbGVyIHNob3VsZCBoYW5kbGUgdGhlIGZhdWx0LiAqLwo+ICAgICAgaWYgKCBtZm5f ZXEobWZuLCBJTlZBTElEX01GTikgKQo+IEBAIC0yMjMwLDkgKzIyMjcsOSBAQCBib29sIHAybV9h bHRwMm1fbGF6eV9jb3B5KHN0cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGdwYSwKPiAgICAgIHJldCA9 IHRydWU7Cj4gIAo+ICBwdXRfaHAybToKPiAtICAgIF9fcHV0X2dmbihocDJtLCBnZm5feChnZm4p KTsKPiArICAgIF9fcHV0X2dmbihocDJtLCBnZm4pOwo+ICBwdXRfYXAybToKPiAtICAgIF9fcHV0 X2dmbihhcDJtLCBnZm5feChnZm4pKTsKPiArICAgIF9fcHV0X2dmbihhcDJtLCBnZm4pOwo+ICAK PiAgICAgIHJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMjM5Niw3ICsyMzkzLDcgQEAgaW50IHAybV9j aGFuZ2VfYWx0cDJtX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4LAo+ICAg ICAgLyogQ2hlY2sgaG9zdCBwMm0gaWYgbm8gdmFsaWQgZW50cnkgaW4gYWx0ZXJuYXRlICovCj4g ICAgICBpZiAoICFtZm5fdmFsaWQobWZuKSApCj4gICAgICB7Cj4gLSAgICAgICAgbWZuID0gX19n ZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbl94KG9sZF9nZm4pLCAmdCwgJmEsCj4gKyAgICAg ICAgbWZuID0gX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIG9sZF9nZm4sICZ0LCAmYSwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX0FMTE9DLCAmcGFnZV9vcmRl ciwgMCk7Cj4gIAo+ICAgICAgICAgIGlmICggIW1mbl92YWxpZChtZm4pIHx8IHQgIT0gcDJtX3Jh bV9ydyApCj4gQEAgLTI0NzcsNyArMjQ3NCw3IEBAIGludCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9j aGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ICAgICAgICAgICAgICBjb250aW51 ZTsKPiAgCj4gICAgICAgICAgcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwo+IC0gICAgICAg IG0gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuX3goZ2ZuKSwgJnQsICZhLCAwLCBOVUxM KTsKPiArICAgICAgICBtID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbiwgJnQsICZhLCAw LCBOVUxMKTsKPiAgCj4gICAgICAgICAgLyogQ2hlY2sgZm9yIGEgZHJvcHBlZCBwYWdlIHRoYXQg bWF5IGltcGFjdCB0aGlzIGFsdHAybSAqLwo+ICAgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5W QUxJRF9NRk4pICYmCj4gQEAgLTI0OTIsNyArMjQ4OSw3IEBAIGludCBwMm1fYWx0cDJtX3Byb3Bh Z2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ICAgICAgICAgICAgICBl bHNlCj4gICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgIC8qIEF0IGxlYXN0IDIgYWx0 cDJtJ3MgaW1wYWN0ZWQsIHNvIHJlc2V0IGV2ZXJ5dGhpbmcgKi8KPiAtICAgICAgICAgICAgICAg IF9fcHV0X2dmbihwMm0sIGdmbl94KGdmbikpOwo+ICsgICAgICAgICAgICAgICAgX19wdXRfZ2Zu KHAybSwgZ2ZuKTsKPiAgCj4gICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9B TFRQMk07IGkrKyApCj4gICAgICAgICAgICAgICAgICB7Cj4gQEAgLTI1MTksNyArMjUxNiw3IEBA IGludCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3Qg Z2ZuLAo+ICAgICAgICAgICAgICAgICAgcmV0ID0gcmM7Cj4gICAgICAgICAgfQo+ICAKPiAtICAg ICAgICBfX3B1dF9nZm4ocDJtLCBnZm5feChnZm4pKTsKPiArICAgICAgICBfX3B1dF9nZm4ocDJt LCBnZm4pOwo+ICAgICAgfQo+ICAKPiAgICAgIGFsdHAybV9saXN0X3VubG9jayhkKTsKPiBAQCAt MjU5MCw3ICsyNTg3LDcgQEAgdm9pZCBhdWRpdF9wMm0oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAg ICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgfQo+ICAKPiAtICAgICAgICBwMm1mbiA9IGdl dF9nZm5fdHlwZV9hY2Nlc3MocDJtLCBnZm4sICZ0eXBlLCAmcDJtYSwgMCwgTlVMTCk7Cj4gKyAg ICAgICAgcDJtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgX2dmbihnZm4pLCAmdHlwZSwg JnAybWEsIDAsIE5VTEwpOwo+ICAgICAgICAgIGlmICggbWZuX3gocDJtZm4pICE9IG1mbiApCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICBtcGJhZCsrOwo+IEBAIC0yNjA1LDcgKzI2MDIsNyBA QCB2b2lkIGF1ZGl0X3AybShzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgICAgICAgKiBibG93 IGF3YXkgdGhlIG0ycCBlbnRyeS4gKi8KPiAgICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4o bWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIF9fcHV0X2dm bihwMm0sIGdmbik7Cj4gKyAgICAgICAgX19wdXRfZ2ZuKHAybSwgX2dmbihnZm4pKTsKPiAgCj4g ICAgICAgICAgUDJNX1BSSU5USygiT0s6IG1mbj0lI2x4LCBnZm49JSNseCwgcDJtZm49JSNseFxu IiwKPiAgICAgICAgICAgICAgICAgICAgICAgICBtZm4sIGdmbiwgbWZuX3gocDJtZm4pKTsKPiBA QCAtMjY5OCw3ICsyNjk1LDcgQEAgaW50IHAybV9hZGRfZm9yZWlnbihzdHJ1Y3QgZG9tYWluICp0 ZG9tLCB1bnNpZ25lZCBsb25nIGZnZm4sCj4gICAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsK PiAgCj4gICAgICAvKiBSZW1vdmUgcHJldmlvdXNseSBtYXBwZWQgcGFnZSBpZiBpdCBpcyBwcmVz ZW50LiAqLwo+IC0gICAgcHJldl9tZm4gPSBnZXRfZ2ZuKHRkb20sIGdwZm4sICZwMm10X3ByZXYp Owo+ICsgICAgcHJldl9tZm4gPSBnZXRfZ2ZuKHRkb20sIF9nZm4oZ3BmbiksICZwMm10X3ByZXYp Owo+ICAgICAgaWYgKCBtZm5fdmFsaWQocHJldl9tZm4pICkKPiAgICAgIHsKPiAgICAgICAgICBp ZiAoIGlzX3hlbl9oZWFwX21mbihtZm5feChwcmV2X21mbikpICkKPiBAQCAtMjcyOSw3ICsyNzI2 LDcgQEAgaW50IHAybV9hZGRfZm9yZWlnbihzdHJ1Y3QgZG9tYWluICp0ZG9tLCB1bnNpZ25lZCBs b25nIGZnZm4sCj4gICAgICAgKiBhZnRlciBzZXRfZm9yZWlnbl9wMm1fZW50cnkgc28gYW5vdGhl ciBjcHUgZG9lc24ndCBwb3B1bGF0ZSB0aGUgZ3Bmbgo+ICAgICAgICogYmVmb3JlIHVzLgo+ICAg ICAgICovCj4gLSAgICBwdXRfZ2ZuKHRkb20sIGdwZm4pOwo+ICsgICAgcHV0X2dmbih0ZG9tLCBf Z2ZuKGdwZm4pKTsKPiAgCj4gIG91dDoKPiAgICAgIGlmICggZmRvbSApCj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93 L2NvbW1vbi5jCj4gaW5kZXggNjEzMDRkNy4uODVjZTc2MSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9j b21tb24uYwo+IEBAIC0zMzM4LDcgKzMzMzgsNyBAQCBpbnQgc2hhZG93X3RyYWNrX2RpcnR5X3Zy YW0oc3RydWN0IGRvbWFpbiAqZCwKPiAgCj4gICAgICAgICAgLyogSXRlcmF0ZSBvdmVyIFZSQU0g dG8gdHJhY2sgZGlydHkgYml0cy4gKi8KPiAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG5yOyBp KysgKSB7Cj4gLSAgICAgICAgICAgIG1mbl90IG1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQo ZCwgYmVnaW5fcGZuICsgaSwgJnQpOwo+ICsgICAgICAgICAgICBtZm5fdCBtZm4gPSBnZXRfZ2Zu X3F1ZXJ5X3VubG9ja2VkKGQsIF9nZm4oYmVnaW5fcGZuICsgaSksICZ0KTsKPiAgICAgICAgICAg ICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPiAgICAgICAgICAgICAgaW50IGRpcnR5ID0gMDsK PiAgICAgICAgICAgICAgcGFkZHJfdCBzbDFtYSA9IGRpcnR5X3ZyYW0tPnNsMW1hW2ldOwo+IEBA IC0zNDE4LDcgKzM0MTgsNyBAQCBpbnQgc2hhZG93X3RyYWNrX2RpcnR5X3ZyYW0oc3RydWN0IGRv bWFpbiAqZCwKPiAgICAgICAgICAgICAgICogd3JpdGUgYWNjZXNzICovCj4gICAgICAgICAgICAg IGZvciAoIGkgPSBiZWdpbl9wZm47IGkgPCBlbmRfcGZuOyBpKysgKQo+ICAgICAgICAgICAgICB7 Cj4gLSAgICAgICAgICAgICAgICBtZm5fdCBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQs IGksICZ0KTsKPiArICAgICAgICAgICAgICAgIG1mbl90IG1mbiA9IGdldF9nZm5fcXVlcnlfdW5s b2NrZWQoZCwgX2dmbihpKSwgJnQpOwo+ICAgICAgICAgICAgICAgICAgaWYgKCAhbWZuX2VxKG1m biwgSU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgICAgICAgICAgICBmbHVzaF90bGIgfD0gc2hf cmVtb3ZlX3dyaXRlX2FjY2VzcyhkLCBtZm4sIDEsIDApOwo+ICAgICAgICAgICAgICB9Cj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvbXVsdGkuYwo+IGluZGV4IDdlOWNiYzYuLmRlM2ZjZDcgMTAwNjQ0Cj4gLS0tIGEv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3No YWRvdy9tdWx0aS5jCj4gQEAgLTIxMjYsNyArMjEyNiw4IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVf Z2w0ZShzdHJ1Y3QgdmNwdSAqdiwgdm9pZCAqbmV3X2dlLCBtZm5fdCBzbDRtZm4sIHZvaWQgKnNl KQo+ICAgICAgICAgICAhZ3Vlc3RfbDRlX3JzdmRfYml0cyh2LCBuZXdfZ2w0ZSkgKQo+ICAgICAg ewo+ICAgICAgICAgIGdmbl90IGdsM2dmbiA9IGd1ZXN0X2w0ZV9nZXRfZ2ZuKG5ld19nbDRlKTsK PiAtICAgICAgICBtZm5fdCBnbDNtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbl94 KGdsM2dmbiksICZwMm10KTsKPiArICAgICAgICBtZm5fdCBnbDNtZm4gPSBnZXRfZ2ZuX3F1ZXJ5 X3VubG9ja2VkKGQsIGdsM2dmbiwgJnAybXQpOwo+ICsKPiAgICAgICAgICBpZiAoIHAybV9pc19y YW0ocDJtdCkgKQo+ICAgICAgICAgICAgICBzbDNtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBn bDNtZm4sIFNIX3R5cGVfbDNfc2hhZG93KTsKPiAgICAgICAgICBlbHNlIGlmICggcDJtdCAhPSBw Mm1fcG9wdWxhdGVfb25fZGVtYW5kICkKPiBAQCAtMjE4NSw3ICsyMTg2LDggQEAgc3RhdGljIGlu dCB2YWxpZGF0ZV9nbDNlKHN0cnVjdCB2Y3B1ICp2LCB2b2lkICpuZXdfZ2UsIG1mbl90IHNsM21m biwgdm9pZCAqc2UpCj4gICAgICAgICAgICFndWVzdF9sM2VfcnN2ZF9iaXRzKHYsIG5ld19nbDNl KSApCj4gICAgICB7Cj4gICAgICAgICAgZ2ZuX3QgZ2wyZ2ZuID0gZ3Vlc3RfbDNlX2dldF9nZm4o bmV3X2dsM2UpOwo+IC0gICAgICAgIG1mbl90IGdsMm1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2Nr ZWQoZCwgZ2ZuX3goZ2wyZ2ZuKSwgJnAybXQpOwo+ICsgICAgICAgIG1mbl90IGdsMm1mbiA9IGdl dF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2wyZ2ZuLCAmcDJtdCk7Cj4gKwo+ICAgICAgICAgIGlm ICggcDJtX2lzX3JhbShwMm10KSApCj4gICAgICAgICAgICAgIHNsMm1mbiA9IGdldF9zaGFkb3df c3RhdHVzKGQsIGdsMm1mbiwgU0hfdHlwZV9sMl9zaGFkb3cpOwo+ICAgICAgICAgIGVsc2UgaWYg KCBwMm10ICE9IHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQgKQo+IEBAIC0yMjM2LDcgKzIyMzgsOCBA QCBzdGF0aWMgaW50IHZhbGlkYXRlX2dsMmUoc3RydWN0IHZjcHUgKnYsIHZvaWQgKm5ld19nZSwg bWZuX3Qgc2wybWZuLCB2b2lkICpzZSkKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZQo+ICAg ICAgICAgIHsKPiAtICAgICAgICAgICAgbWZuX3QgZ2wxbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxv Y2tlZChkLCBnZm5feChnbDFnZm4pLCAmcDJtdCk7Cj4gKyAgICAgICAgICAgIG1mbl90IGdsMW1m biA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2wxZ2ZuLCAmcDJtdCk7Cj4gKwo+ICAgICAg ICAgICAgICBpZiAoIHAybV9pc19yYW0ocDJtdCkgKQo+ICAgICAgICAgICAgICAgICAgc2wxbWZu ID0gZ2V0X3NoYWRvd19zdGF0dXMoZCwgZ2wxbWZuLCBTSF90eXBlX2wxX3NoYWRvdyk7Cj4gICAg ICAgICAgICAgIGVsc2UgaWYgKCBwMm10ICE9IHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQgKQo+IEBA IC0yMjcwLDcgKzIyNzMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2dsMWUoc3RydWN0IHZjcHUg KnYsIHZvaWQgKm5ld19nZSwgbWZuX3Qgc2wxbWZuLCB2b2lkICpzZSkKPiAgICAgICAgICAgIWd1 ZXN0X2wxZV9yc3ZkX2JpdHModiwgbmV3X2dsMWUpICkKPiAgICAgIHsKPiAgICAgICAgICBnZm4g PSBndWVzdF9sMWVfZ2V0X2dmbihuZXdfZ2wxZSk7Cj4gLSAgICAgICAgZ21mbiA9IGdldF9nZm5f cXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2ZuKSwgJnAybXQpOwo+ICsgICAgICAgIGdtZm4gPSBn ZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbiwgJnAybXQpOwo+ICAgICAgfQo+ICAKPiAgICAg IGwxZV9wcm9wYWdhdGVfZnJvbV9ndWVzdCh2LCBuZXdfZ2wxZSwgZ21mbiwgJm5ld19zbDFlLCBm dF9wcmVmZXRjaCwgcDJtdCk7Cj4gQEAgLTIzMzUsNyArMjMzOCw3IEBAIHZvaWQgc2hfcmVzeW5j X2wxKHN0cnVjdCB2Y3B1ICp2LCBtZm5fdCBnbDFtZm4sIG1mbl90IHNucG1mbikKPiAgICAgICAg ICAgICAgICAgICAhZ3Vlc3RfbDFlX3JzdmRfYml0cyh2LCBnbDFlKSApCj4gICAgICAgICAgICAg IHsKPiAgICAgICAgICAgICAgICAgIGdmbiA9IGd1ZXN0X2wxZV9nZXRfZ2ZuKGdsMWUpOwo+IC0g ICAgICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2Zu KSwgJnAybXQpOwo+ICsgICAgICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2Nr ZWQoZCwgZ2ZuLCAmcDJtdCk7Cj4gICAgICAgICAgICAgIH0KPiAgCj4gICAgICAgICAgICAgIGwx ZV9wcm9wYWdhdGVfZnJvbV9ndWVzdCh2LCBnbDFlLCBnbWZuLCAmbnNsMWUsIGZ0X3ByZWZldGNo LCBwMm10KTsKPiBAQCAtMjYxNSw3ICsyNjE4LDcgQEAgc3RhdGljIHZvaWQgc2hfcHJlZmV0Y2go c3RydWN0IHZjcHUgKnYsIHdhbGtfdCAqZ3csCj4gICAgICAgICAgICAgICAhZ3Vlc3RfbDFlX3Jz dmRfYml0cyh2LCBnbDFlKSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBnZm4gPSBndWVz dF9sMWVfZ2V0X2dmbihnbDFlKTsKPiAtICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVlcnlf dW5sb2NrZWQoZCwgZ2ZuX3goZ2ZuKSwgJnAybXQpOwo+ICsgICAgICAgICAgICBnbWZuID0gZ2V0 X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm4sICZwMm10KTsKPiAgICAgICAgICB9Cj4gICAgICAg ICAgZWxzZQo+ICAgICAgICAgIHsKPiBAQCAtMzA3MSw3ICszMDc0LDcgQEAgc3RhdGljIGludCBz aF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAo+ICAgICAgICAgIFNIQURPV19QUklOVEsoIkJB RCBnZm49JSJTSF9QUklfZ2ZuIiBnbWZuPSUiUFJJX21mbiJcbiIsCj4gICAgICAgICAgICAgICAg ICAgICAgICBnZm5feChnZm4pLCBtZm5feChnbWZuKSk7Cj4gICAgICAgICAgc2hfcmVzZXRfZWFy bHlfdW5zaGFkb3codik7Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm5feChnZm4pKTsKPiArICAg ICAgICBwdXRfZ2ZuKGQsIGdmbik7Cj4gICAgICAgICAgZ290byBwcm9wYWdhdGU7Cj4gICAgICB9 Cj4gIAo+IEBAIC0zMTE3LDcgKzMxMjAsNyBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3Ry dWN0IHZjcHUgKnYsCj4gICAgICBpZiAoIHJjICYgR1dfUk1XUl9SRVdBTEsgKQo+ICAgICAgewo+ ICAgICAgICAgIHBhZ2luZ191bmxvY2soZCk7Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm5feChn Zm4pKTsKPiArICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7Cj4gICAgICAgICAgZ290byByZXdhbGs7 Cj4gICAgICB9Cj4gICNlbmRpZiAvKiBPT1MgKi8KPiBAQCAtMzEyNiw3ICszMTI5LDcgQEAgc3Rh dGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAo+ICAgICAgewo+ICAgICAgICAg IHBlcmZjX2luY3Ioc2hhZG93X2luY29uc2lzdGVudF9nd2Fsayk7Cj4gICAgICAgICAgcGFnaW5n X3VubG9jayhkKTsKPiAtICAgICAgICBwdXRfZ2ZuKGQsIGdmbl94KGdmbikpOwo+ICsgICAgICAg IHB1dF9nZm4oZCwgZ2ZuKTsKPiAgICAgICAgICBnb3RvIHJld2FsazsKPiAgICAgIH0KPiAgCj4g QEAgLTMxNTMsNyArMzE1Niw3IEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNw dSAqdiwKPiAgICAgICAgICBBU1NFUlQoZC0+aXNfc2h1dHRpbmdfZG93bik7Cj4gICNlbmRpZgo+ ICAgICAgICAgIHBhZ2luZ191bmxvY2soZCk7Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm5feChn Zm4pKTsKPiArICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7Cj4gICAgICAgICAgdHJhY2Vfc2hhZG93 X2dlbihUUkNfU0hBRE9XX0RPTUZfRFlJTkcsIHZhKTsKPiAgICAgICAgICByZXR1cm4gMDsKPiAg ICAgIH0KPiBAQCAtMzE3MSw3ICszMTc0LDcgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0 cnVjdCB2Y3B1ICp2LAo+ICAgICAgICAgICAqIGZhaWxlZC4gV2UgY2Fubm90IHNhZmVseSBjb250 aW51ZSBzaW5jZSBzb21lIHBhZ2UgaXMgc3RpbGwKPiAgICAgICAgICAgKiBPT1MgYnV0IG5vdCBp biB0aGUgaGFzaCB0YWJsZSBhbnltb3JlLiAqLwo+ICAgICAgICAgIHBhZ2luZ191bmxvY2soZCk7 Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnZm5feChnZm4pKTsKPiArICAgICAgICBwdXRfZ2ZuKGQs IGdmbik7Cj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICB9Cj4gIAo+IEBAIC0zMTgxLDcgKzMx ODQsNyBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsCj4gICAgICB7 Cj4gICAgICAgICAgcGVyZmNfaW5jcihzaGFkb3dfaW5jb25zaXN0ZW50X2d3YWxrKTsKPiAgICAg ICAgICBwYWdpbmdfdW5sb2NrKGQpOwo+IC0gICAgICAgIHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7 Cj4gKyAgICAgICAgcHV0X2dmbihkLCBnZm4pOwo+ICAgICAgICAgIGdvdG8gcmV3YWxrOwo+ICAg ICAgfQo+ICAjZW5kaWYgLyogT09TICovCj4gQEAgLTMyNjcsNyArMzI3MCw3IEBAIHN0YXRpYyBp bnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKPiAgICAgIFNIQURPV19QUklOVEsoImZp eGVkXG4iKTsKPiAgICAgIHNoYWRvd19hdWRpdF90YWJsZXModik7Cj4gICAgICBwYWdpbmdfdW5s b2NrKGQpOwo+IC0gICAgcHV0X2dmbihkLCBnZm5feChnZm4pKTsKPiArICAgIHB1dF9nZm4oZCwg Z2ZuKTsKPiAgICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7Cj4gIAo+ICAgZW11bGF0ZToK PiBAQCAtMzMzNyw3ICszMzQwLDcgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2 Y3B1ICp2LAo+ICAgICAgc2hfYXVkaXRfZ3codiwgJmd3KTsKPiAgICAgIHNoYWRvd19hdWRpdF90 YWJsZXModik7Cj4gICAgICBwYWdpbmdfdW5sb2NrKGQpOwo+IC0gICAgcHV0X2dmbihkLCBnZm5f eChnZm4pKTsKPiArICAgIHB1dF9nZm4oZCwgZ2ZuKTsKPiAgCj4gICAgICB0aGlzX2NwdSh0cmFj ZV9lbXVsYXRlX3dyaXRlX3ZhbCkgPSAwOwo+ICAKPiBAQCAtMzUyMSw3ICszNTI0LDcgQEAgc3Rh dGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAo+ICAgICAgc2hhZG93X2F1ZGl0 X3RhYmxlcyh2KTsKPiAgICAgIHNoX3Jlc2V0X2Vhcmx5X3Vuc2hhZG93KHYpOwo+ICAgICAgcGFn aW5nX3VubG9jayhkKTsKPiAtICAgIHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7Cj4gKyAgICBwdXRf Z2ZuKGQsIGdmbik7Cj4gICAgICB0cmFjZV9zaGFkb3dfZ2VuKFRSQ19TSEFET1dfTU1JTywgdmEp Owo+ICAgICAgcmV0dXJuIChoYW5kbGVfbW1pb193aXRoX3RyYW5zbGF0aW9uKHZhLCBncGEgPj4g UEFHRV9TSElGVCwgYWNjZXNzKQo+ICAgICAgICAgICAgICA/IEVYQ1JFVF9mYXVsdF9maXhlZCA6 IDApOwo+IEBAIC0zNTM1LDcgKzM1MzgsNyBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3Ry dWN0IHZjcHUgKnYsCj4gICAgICBzaGFkb3dfYXVkaXRfdGFibGVzKHYpOwo+ICAgICAgc2hfcmVz ZXRfZWFybHlfdW5zaGFkb3codik7Cj4gICAgICBwYWdpbmdfdW5sb2NrKGQpOwo+IC0gICAgcHV0 X2dmbihkLCBnZm5feChnZm4pKTsKPiArICAgIHB1dF9nZm4oZCwgZ2ZuKTsKPiAgCj4gIHByb3Bh Z2F0ZToKPiAgICAgIHRyYWNlX25vdF9zaGFkb3dfZmF1bHQoZ3cubDFlLCB2YSk7Cj4gQEAgLTQx MTYsNyArNDExOSw3IEBAIHNoX3VwZGF0ZV9jcjMoc3RydWN0IHZjcHUgKnYsIGludCBkb19sb2Nr aW5nLCBib29sIG5vZmx1c2gpCj4gICAgICAgICAgICAgIGlmICggZ3Vlc3RfbDNlX2dldF9mbGFn cyhnbDNlW2ldKSAmIF9QQUdFX1BSRVNFTlQgKQo+ICAgICAgICAgICAgICB7Cj4gICAgICAgICAg ICAgICAgICBnbDJnZm4gPSBndWVzdF9sM2VfZ2V0X2dmbihnbDNlW2ldKTsKPiAtICAgICAgICAg ICAgICAgIGdsMm1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2wyZ2ZuKSwg JnAybXQpOwo+ICsgICAgICAgICAgICAgICAgZ2wybWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tl ZChkLCBnbDJnZm4sICZwMm10KTsKPiAgICAgICAgICAgICAgICAgIGlmICggcDJtX2lzX3JhbShw Mm10KSApCj4gICAgICAgICAgICAgICAgICAgICAgZmx1c2ggfD0gc2hfcmVtb3ZlX3dyaXRlX2Fj Y2VzcyhkLCBnbDJtZm4sIDIsIDApOwo+ICAgICAgICAgICAgICB9Cj4gQEAgLTQxMjksNyArNDEz Miw3IEBAIHNoX3VwZGF0ZV9jcjMoc3RydWN0IHZjcHUgKnYsIGludCBkb19sb2NraW5nLCBib29s IG5vZmx1c2gpCj4gICAgICAgICAgICAgIGlmICggZ3Vlc3RfbDNlX2dldF9mbGFncyhnbDNlW2ld KSAmIF9QQUdFX1BSRVNFTlQgKQo+ICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICBn bDJnZm4gPSBndWVzdF9sM2VfZ2V0X2dmbihnbDNlW2ldKTsKPiAtICAgICAgICAgICAgICAgIGds Mm1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2wyZ2ZuKSwgJnAybXQpOwo+ ICsgICAgICAgICAgICAgICAgZ2wybWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnbDJn Zm4sICZwMm10KTsKPiAgICAgICAgICAgICAgICAgIGlmICggcDJtX2lzX3JhbShwMm10KSApCj4g ICAgICAgICAgICAgICAgICAgICAgc2hfc2V0X3RvcGxldmVsX3NoYWRvdyh2LCBpLCBnbDJtZm4s IChpID09IDMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IFNIX3R5cGVfbDJoX3NoYWRvdwo+IEBAIC00NTM2LDcgKzQ1MzksNyBAQCBzdGF0aWMgdm9pZCBz aF9wYWdldGFibGVfZHlpbmcocGFkZHJfdCBncGEpCj4gICAgICBwMm1fdHlwZV90IHAybXQ7Cj4g ICAgICBjaGFyICpnbDNwYSA9IE5VTEw7Cj4gICAgICBndWVzdF9sM2VfdCAqZ2wzZSA9IE5VTEw7 Cj4gLSAgICB1bnNpZ25lZCBsb25nIGwzZ2ZuOwo+ICsgICAgZ2ZuX3QgbDNnZm47Cj4gICAgICBt Zm5fdCBsM21mbjsKPiAgCj4gICAgICBnY3IzID0gdi0+YXJjaC5odm0uZ3Vlc3RfY3JbM107Cj4g QEAgLTQ1NDQsOCArNDU0Nyw4IEBAIHN0YXRpYyB2b2lkIHNoX3BhZ2V0YWJsZV9keWluZyhwYWRk cl90IGdwYSkKPiAgICAgIGlmICggZ2NyMyA9PSBncGEgKQo+ICAgICAgICAgIGZhc3RfcGF0aCA9 IDE7Cj4gIAo+IC0gICAgbDNnZm4gPSBncGEgPj4gUEFHRV9TSElGVDsKPiAtICAgIGwzbWZuID0g Z2V0X2dmbl9xdWVyeShkLCBfZ2ZuKGwzZ2ZuKSwgJnAybXQpOwo+ICsgICAgbDNnZm4gPSBnYWRk cl90b19nZm4oZ3BhKTsKPiArICAgIGwzbWZuID0gZ2V0X2dmbl9xdWVyeShkLCBsM2dmbiwgJnAy bXQpOwo+ICAgICAgaWYgKCAhbWZuX3ZhbGlkKGwzbWZuKSB8fCAhcDJtX2lzX3JhbShwMm10KSAp Cj4gICAgICB7Cj4gICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAic2hfcGFnZXRhYmxlX2R5 aW5nOiBncGEgbm90IHZhbGlkICUiUFJJcGFkZHIiXG4iLAo+IEBAIC00NTczLDggKzQ1NzYsNyBA QCBzdGF0aWMgdm9pZCBzaF9wYWdldGFibGVfZHlpbmcocGFkZHJfdCBncGEpCj4gICAgICAgICAg ZWxzZQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgLyogcmV0cmlldmluZyB0aGUgbDJzICov Cj4gLSAgICAgICAgICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbl94KGd1 ZXN0X2wzZV9nZXRfZ2ZuKGdsM2VbaV0pKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnAybXQpOwo+ICsgICAgICAgICAgICBnbWZuID0gZ2V0X2dmbl9xdWVy eV91bmxvY2tlZChkLCBndWVzdF9sM2VfZ2V0X2dmbihnbDNlW2ldKSwgJnAybXQpOwo+ICAgICAg ICAgICAgICBzbWZuID0gdW5saWtlbHkobWZuX2VxKGdtZm4sIElOVkFMSURfTUZOKSkKPiAgICAg ICAgICAgICAgICAgICAgID8gSU5WQUxJRF9NRk4KPiAgICAgICAgICAgICAgICAgICAgIDogc2hh ZG93X2hhc2hfbG9va3VwKGQsIG1mbl94KGdtZm4pLCBTSF90eXBlX2wyX3BhZV9zaGFkb3cpOwo+ IEBAIC00NjA5LDEwICs0NjExLDExIEBAIHN0YXRpYyB2b2lkIHNoX3BhZ2V0YWJsZV9keWluZyhw YWRkcl90IGdwYSkKPiAgewo+ICAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50Owo+ICAgICAg c3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKPiArICAgIGdmbl90IGdmbiA9IGdhZGRyX3Rv X2dmbihncGEpOwo+ICAgICAgbWZuX3Qgc21mbiwgZ21mbjsKPiAgICAgIHAybV90eXBlX3QgcDJt dDsKPiAgCj4gLSAgICBnbWZuID0gZ2V0X2dmbl9xdWVyeShkLCBfZ2ZuKGdwYSA+PiBQQUdFX1NI SUZUKSwgJnAybXQpOwo+ICsgICAgZ21mbiA9IGdldF9nZm5fcXVlcnkoZCwgZ2ZuLCAmcDJtdCk7 Cj4gICAgICBwYWdpbmdfbG9jayhkKTsKPiAgCj4gICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID09 IDIKPiBAQCAtNDYzNyw3ICs0NjQwLDcgQEAgc3RhdGljIHZvaWQgc2hfcGFnZXRhYmxlX2R5aW5n KHBhZGRyX3QgZ3BhKQo+ICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93LnBhZ2V0YWJsZV9keWlu ZyA9IDE7Cj4gIAo+ICAgICAgcGFnaW5nX3VubG9jayhkKTsKPiAtICAgIHB1dF9nZm4oZCwgZ3Bh ID4+IFBBR0VfU0hJRlQpOwo+ICsgICAgcHV0X2dmbihkLCBnZm4pOwo+ICB9Cj4gICNlbmRpZgo+ ICAKPiBAQCAtNDc1OSw3ICs0NzYyLDcgQEAgaW50IHNoX2F1ZGl0X2wxX3RhYmxlKHN0cnVjdCB2 Y3B1ICp2LCBtZm5fdCBzbDFtZm4sIG1mbl90IHgpCj4gICAgICAgICAgICAgIHsKPiAgICAgICAg ICAgICAgICAgIGdmbiA9IGd1ZXN0X2wxZV9nZXRfZ2ZuKCpnbDFlKTsKPiAgICAgICAgICAgICAg ICAgIG1mbiA9IHNoYWRvd19sMWVfZ2V0X21mbigqc2wxZSk7Cj4gLSAgICAgICAgICAgICAgICBn bWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZCh2LT5kb21haW4sIGdmbl94KGdmbiksICZwMm10 KTsKPiArICAgICAgICAgICAgICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKHYtPmRv bWFpbiwgZ2ZuLCAmcDJtdCk7Cj4gICAgICAgICAgICAgICAgICBpZiAoICFwMm1faXNfZ3JhbnQo cDJtdCkgJiYgIW1mbl9lcShnbWZuLCBtZm4pICkKPiAgICAgICAgICAgICAgICAgICAgICBBVURJ VF9GQUlMKDEsICJiYWQgdHJhbnNsYXRpb246IGdmbiAlIiBTSF9QUklfZ2ZuCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiIC0tPiAlIiBQUklfbWZuICIgIT0gbWZuICUiIFBSSV9t Zm4sCj4gQEAgLTQ4MzIsMTYgKzQ4MzUsMTUgQEAgaW50IHNoX2F1ZGl0X2wyX3RhYmxlKHN0cnVj dCB2Y3B1ICp2LCBtZm5fdCBzbDJtZm4sIG1mbl90IHgpCj4gICAgICAgICAgICAgIGdtZm4gPSAo Z3Vlc3RfbDJlX2dldF9mbGFncygqZ2wyZSkgJiBfUEFHRV9QU0UpCj4gICAgICAgICAgICAgICAg ICA/IGdldF9mbDFfc2hhZG93X3N0YXR1cyhkLCBnZm4pCj4gICAgICAgICAgICAgICAgICA6IGdl dF9zaGFkb3dfc3RhdHVzKGQsCj4gLSAgICAgICAgICAgICAgICAgICAgZ2V0X2dmbl9xdWVyeV91 bmxvY2tlZChkLCBnZm5feChnZm4pLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnAybXQpLCBTSF90eXBlX2wxX3NoYWRvdyk7Cj4gKyAgICAgICAgICAgICAgICAg ICAgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm4sICZwMm10KSwgU0hfdHlwZV9sMV9zaGFk b3cpOwo+ICAgICAgICAgICAgICBpZiAoICFtZm5fZXEoZ21mbiwgbWZuKSApCj4gICAgICAgICAg ICAgICAgICBBVURJVF9GQUlMKDIsICJiYWQgdHJhbnNsYXRpb246IGdmbiAlIiBTSF9QUklfZ2Zu Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKC0tPiAlIiBQUklfbWZuICIpIgo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0tPiAlIiBQUklfbWZuICIgIT0gbWZuICUiIFBS SV9tZm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGdmbiksCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChndWVzdF9sMmVfZ2V0X2ZsYWdzKCpnbDJlKSAmIF9QQUdF X1BTRSkgPyAwCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWZuX3goZ2V0X2dmbl9x dWVyeV91bmxvY2tlZChkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm bl94KGdmbiksICZwMm10KSksIG1mbl94KGdtZm4pLCBtZm5feChtZm4pKTsKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiBtZm5feChnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbiwg JnAybXQpKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3goZ21mbiksIG1mbl94 KG1mbikpOwo+ICAgICAgICAgIH0KPiAgICAgIH0pOwo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2Uo Z3ApOwo+IEBAIC00ODgxLDggKzQ4ODMsNyBAQCBpbnQgc2hfYXVkaXRfbDNfdGFibGUoc3RydWN0 IHZjcHUgKnYsIG1mbl90IHNsM21mbiwgbWZuX3QgeCkKPiAgICAgICAgICB7Cj4gICAgICAgICAg ICAgIGdmbiA9IGd1ZXN0X2wzZV9nZXRfZ2ZuKCpnbDNlKTsKPiAgICAgICAgICAgICAgbWZuID0g c2hhZG93X2wzZV9nZXRfbWZuKCpzbDNlKTsKPiAtICAgICAgICAgICAgZ21mbiA9IGdldF9zaGFk b3dfc3RhdHVzKGQsIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkLCBnZm5feChnZm4pLCAmcDJtdCksCj4gKyAgICAgICAg ICAgIGdtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQs IGdmbiwgJnAybXQpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChH VUVTVF9QQUdJTkdfTEVWRUxTID09IDMgfHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXNfcHZfMzJiaXRfZG9tYWluKGQpKQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICYmICFzaGFkb3dfbW9kZV9leHRlcm5hbChkKQo+IEBAIC00OTMx LDggKzQ5MzIsNyBAQCBpbnQgc2hfYXVkaXRfbDRfdGFibGUoc3RydWN0IHZjcHUgKnYsIG1mbl90 IHNsNG1mbiwgbWZuX3QgeCkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIGdmbiA9IGd1ZXN0 X2w0ZV9nZXRfZ2ZuKCpnbDRlKTsKPiAgICAgICAgICAgICAgbWZuID0gc2hhZG93X2w0ZV9nZXRf bWZuKCpzbDRlKTsKPiAtICAgICAgICAgICAgZ21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGdl dF9nZm5fcXVlcnlfdW5sb2NrZWQoCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkLCBnZm5feChnZm4pLCAmcDJtdCksCj4gKyAgICAgICAgICAgIGdtZm4gPSBnZXRfc2hh ZG93X3N0YXR1cyhkLCBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbiwgJnAybXQpLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfdHlwZV9sM19zaGFkb3cpOwo+ ICAgICAgICAgICAgICBpZiAoICFtZm5fZXEoZ21mbiwgbWZuKSApCj4gICAgICAgICAgICAgICAg ICBBVURJVF9GQUlMKDQsICJiYWQgdHJhbnNsYXRpb246IGdmbiAlIiBTSF9QUklfZ2ZuCj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvdHlwZXMuaCBiL3hlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvdHlwZXMuaAo+IGluZGV4IGQ1MDk2NzQuLmY2ODg5MTkgMTAwNjQ0Cj4gLS0tIGEv eGVuL2FyY2gveDg2L21tL3NoYWRvdy90eXBlcy5oCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3No YWRvdy90eXBlcy5oCj4gQEAgLTE5MywxMCArMTkzLDYgQEAgc3RhdGljIGlubGluZSBzaGFkb3df bDRlX3Qgc2hhZG93X2w0ZV9mcm9tX21mbihtZm5fdCBtZm4sIHUzMiBmbGFncykKPiAgfSkKPiAg I2VuZGlmCj4gIAo+IC0gLyogT3ZlcnJpZGUgZ2V0X2dmbiB0byB3b3JrIHdpdGggZ2ZuX3QgKi8K PiAtI3VuZGVmIGdldF9nZm5fcXVlcnkKPiAtI2RlZmluZSBnZXRfZ2ZuX3F1ZXJ5KGQsIGcsIHQp IGdldF9nZm5fdHlwZSgoZCksIGdmbl94KGcpLCAodCksIDApCj4gLQo+ICAvKiBUaGUgc2hhZG93 IHR5cGVzIG5lZWRlZCBmb3IgdGhlIHZhcmlvdXMgbGV2ZWxzLiAqLwo+ICAKPiAgI2lmIEdVRVNU X1BBR0lOR19MRVZFTFMgPT0gMgo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxl LmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKPiBpbmRleCBmNzg2MGY2Li41NGY5MDlmIDEw MDY0NAo+IC0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwo+ICsrKyBiL3hlbi9jb21tb24v Z3JhbnRfdGFibGUuYwo+IEBAIC0yMDk5LDcgKzIwOTksNyBAQCBnbnR0YWJfdHJhbnNmZXIoCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICBwMm1fdHlwZV90IHAybXQ7Cj4gIAo+IC0gICAgICAg ICAgICBtZm4gPSBnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ29wLm1mbiwgJnAybXQpOwo+ICsgICAgICAg ICAgICBtZm4gPSBnZXRfZ2ZuX3Vuc2hhcmUoZCwgX2dmbihnb3AubWZuKSwgJnAybXQpOwo+ICAg ICAgICAgICAgICBpZiAoIHAybV9pc19zaGFyZWQocDJtdCkgfHwgIXAybV9pc192YWxpZChwMm10 KSApCj4gICAgICAgICAgICAgICAgICBtZm4gPSBJTlZBTElEX01GTjsKPiAgICAgICAgICB9Cj4g QEAgLTIxMTEsNyArMjExMSw3IEBAIGdudHRhYl90cmFuc2ZlcigKPiAgICAgICAgICBpZiAoIHVu bGlrZWx5KCFtZm5fdmFsaWQobWZuKSkgKQo+ICAgICAgICAgIHsKPiAgI2lmZGVmIENPTkZJR19Y ODYKPiAtICAgICAgICAgICAgcHV0X2dmbihkLCBnb3AubWZuKTsKPiArICAgICAgICAgICAgcHV0 X2dmbihkLCBfZ2ZuKGdvcC5tZm4pKTsKPiAgI2VuZGlmCj4gICAgICAgICAgICAgIGdkcHJpbnRr KFhFTkxPR19JTkZPLCAib3V0LW9mLXJhbmdlICVseFxuIiwgKHVuc2lnbmVkIGxvbmcpZ29wLm1m bik7Cj4gICAgICAgICAgICAgIGdvcC5zdGF0dXMgPSBHTlRTVF9iYWRfcGFnZTsKPiBAQCAtMjEy Miw3ICsyMTIyLDcgQEAgZ250dGFiX3RyYW5zZmVyKAo+ICAgICAgICAgIGlmICggKHJjID0gc3Rl YWxfcGFnZShkLCBwYWdlLCAwKSkgPCAwICkKPiAgICAgICAgICB7Cj4gICNpZmRlZiBDT05GSUdf WDg2Cj4gLSAgICAgICAgICAgIHB1dF9nZm4oZCwgZ29wLm1mbik7Cj4gKyAgICAgICAgICAgIHB1 dF9nZm4oZCwgX2dmbihnb3AubWZuKSk7Cj4gICNlbmRpZgo+ICAgICAgICAgICAgICBnb3Auc3Rh dHVzID0gcmMgPT0gLUVJTlZBTCA/IEdOVFNUX2JhZF9wYWdlIDogR05UU1RfZ2VuZXJhbF9lcnJv cjsKPiAgICAgICAgICAgICAgZ290byBjb3B5YmFjazsKPiBAQCAtMjE1NCw3ICsyMTU0LDcgQEAg Z250dGFiX3RyYW5zZmVyKAo+ICAgICAgICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihlKTsKPiAg ICAgICAgICBwdXRfZ2ZuX2FuZF9jb3B5YmFjazoKPiAgI2lmZGVmIENPTkZJR19YODYKPiAtICAg ICAgICAgICAgcHV0X2dmbihkLCBnb3AubWZuKTsKPiArICAgICAgICAgICAgcHV0X2dmbihkLCBf Z2ZuKGdvcC5tZm4pKTsKPiAgI2VuZGlmCj4gICAgICAgICAgICAgIHBhZ2UtPmNvdW50X2luZm8g Jj0gfihQR0NfY291bnRfbWFza3xQR0NfYWxsb2NhdGVkKTsKPiAgICAgICAgICAgICAgZnJlZV9k b21oZWFwX3BhZ2UocGFnZSk7Cj4gQEAgLTIyNDMsNyArMjI0Myw3IEBAIGdudHRhYl90cmFuc2Zl cigKPiAgCj4gICAgICAgICAgc3Bpbl91bmxvY2soJmUtPnBhZ2VfYWxsb2NfbG9jayk7Cj4gICNp ZmRlZiBDT05GSUdfWDg2Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnb3AubWZuKTsKPiArICAgICAg ICBwdXRfZ2ZuKGQsIF9nZm4oZ29wLm1mbikpOwo+ICAjZW5kaWYKPiAgCj4gICAgICAgICAgVFJB Q0VfMUQoVFJDX01FTV9QQUdFX0dSQU5UX1RSQU5TRkVSLCBlLT5kb21haW5faWQpOwo+IGRpZmYg LS1naXQgYS94ZW4vY29tbW9uL21lbW9yeS5jIGIveGVuL2NvbW1vbi9tZW1vcnkuYwo+IGluZGV4 IDE3NWJkNjIuLmM1OWEwMTcgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9tZW1vcnkuYwo+ICsr KyBiL3hlbi9jb21tb24vbWVtb3J5LmMKPiBAQCAtMzAzLDEwICszMDMsMTAgQEAgaW50IGd1ZXN0 X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ21mbikKPiAgICAg IGludCByYzsKPiAgCj4gICNpZmRlZiBDT05GSUdfWDg2Cj4gLSAgICBtZm4gPSBnZXRfZ2ZuX3F1 ZXJ5KGQsIGdtZm4sICZwMm10KTsKPiArICAgIG1mbiA9IGdldF9nZm5fcXVlcnkoZCwgX2dmbihn bWZuKSwgJnAybXQpOwo+ICAgICAgaWYgKCB1bmxpa2VseShwMm10ID09IHAybV9pbnZhbGlkKSB8 fCB1bmxpa2VseShwMm10ID09IHAybV9tbWlvX2RtKSApCj4gICAgICB7Cj4gLSAgICAgICAgcHV0 X2dmbihkLCBnbWZuKTsKPiArICAgICAgICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbikpOwo+ICAKPiAg ICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiAgICAgIH0KPiBAQCAtMzM2LDcgKzMzNiw3IEBAIGlu dCBndWVzdF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdtZm4p Cj4gICAgICAgICAgICAgIGdvdG8gb3V0X3B1dF9nZm47Cj4gICAgICAgICAgfQo+ICAKPiAtICAg ICAgICBwdXRfZ2ZuKGQsIGdtZm4pOwo+ICsgICAgICAgIHB1dF9nZm4oZCwgX2dmbihnbWZuKSk7 Cj4gIAo+ICAgICAgICAgIGlmICggcGFnZSApCj4gICAgICAgICAgewo+IEBAIC0zNTksNyArMzU5 LDcgQEAgaW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgZ21mbikKPiAgICAgIGlmICggdW5saWtlbHkoIW1mbl92YWxpZChtZm4pKSApCj4gICAgICB7 Cj4gICNpZmRlZiBDT05GSUdfWDg2Cj4gLSAgICAgICAgcHV0X2dmbihkLCBnbWZuKTsKPiArICAg ICAgICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbikpOwo+ICAjZW5kaWYKPiAgICAgICAgICBnZHByaW50 ayhYRU5MT0dfSU5GTywgIkRvbWFpbiAldSBwYWdlIG51bWJlciAlbHggaW52YWxpZFxuIiwKPiAg ICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ21mbik7Cj4gQEAgLTM4Miw3ICszODIsNyBA QCBpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBn bWZuKQo+ICAgICAgICAgICAgICBnb3RvIG91dF9wdXRfZ2ZuOwo+ICAgICAgICAgIH0KPiAgICAg ICAgICAvKiBNYXliZSB0aGUgbWZuIGNoYW5nZWQgKi8KPiAtICAgICAgICBtZm4gPSBnZXRfZ2Zu X3F1ZXJ5X3VubG9ja2VkKGQsIGdtZm4sICZwMm10KTsKPiArICAgICAgICBtZm4gPSBnZXRfZ2Zu X3F1ZXJ5X3VubG9ja2VkKGQsIF9nZm4oZ21mbiksICZwMm10KTsKPiAgICAgICAgICBBU1NFUlQo IXAybV9pc19zaGFyZWQocDJtdCkpOwo+ICAgICAgfQo+ICAjZW5kaWYgLyogQ09ORklHX1g4NiAq Lwo+IEBAIC0zOTEsNyArMzkxLDcgQEAgaW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ21mbikKPiAgICAgIGlmICggdW5saWtlbHkoIWdldF9wYWdl KHBhZ2UsIGQpKSApCj4gICAgICB7Cj4gICNpZmRlZiBDT05GSUdfWDg2Cj4gLSAgICAgICAgcHV0 X2dmbihkLCBnbWZuKTsKPiArICAgICAgICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbikpOwo+ICAjZW5k aWYKPiAgICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIkJhZCBwYWdlIGZyZWUgZm9yIGRv bWFpbiAldVxuIiwgZC0+ZG9tYWluX2lkKTsKPiAgCj4gQEAgLTQxNiw3ICs0MTYsNyBAQCBpbnQg Z3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnbWZuKQo+ ICAKPiAgI2lmZGVmIENPTkZJR19YODYKPiAgIG91dF9wdXRfZ2ZuOgo+IC0gICAgcHV0X2dmbihk LCBnbWZuKTsKPiArICAgIHB1dF9nZm4oZCwgX2dmbihnbWZuKSk7Cj4gICNlbmRpZgo+ICAKPiAg ICAgIC8qCj4gQEAgLTY1MSwxMCArNjUxLDEwIEBAIHN0YXRpYyBsb25nIG1lbW9yeV9leGNoYW5n ZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9tZW1vcnlfZXhjaGFuZ2VfdCkgYXJnKQo+ICAg ICAgICAgICAgICAgICAgcDJtX3R5cGVfdCBwMm10Owo+ICAKPiAgICAgICAgICAgICAgICAgIC8q IFNoYXJlZCBwYWdlcyBjYW5ub3QgYmUgZXhjaGFuZ2VkICovCj4gLSAgICAgICAgICAgICAgICBt Zm4gPSBnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ21mbiArIGssICZwMm10KTsKPiArICAgICAgICAgICAg ICAgIG1mbiA9IGdldF9nZm5fdW5zaGFyZShkLCBfZ2ZuKGdtZm4gKyBrKSwgJnAybXQpOwo+ICAg ICAgICAgICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpICkKPiAgICAgICAgICAgICAg ICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdtZm4gKyBrKTsKPiArICAg ICAgICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbiArIGspKTsKPiAgICAgICAgICAg ICAgICAgICAgICByYyA9IC1FTk9NRU07Cj4gICAgICAgICAgICAgICAgICAgICAgZ290byBmYWls OyAKPiAgICAgICAgICAgICAgICAgIH0KPiBAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRpYyBsb25n IG1lbW9yeV9leGNoYW5nZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9tZW1vcnlfZXhjaGFu Z2VfdCkgYXJnKQo+ICAgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseSghbWZuX3ZhbGlkKG1m bikpICkKPiAgICAgICAgICAgICAgICAgIHsKPiAgI2lmZGVmIENPTkZJR19YODYKPiAtICAgICAg ICAgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdtZm4gKyBrKTsKPiArICAgICAgICAgICAgICAgICAg ICBwdXRfZ2ZuKGQsIF9nZm4oZ21mbiArIGspKTsKPiAgI2VuZGlmCj4gICAgICAgICAgICAgICAg ICAgICAgcmMgPSAtRUlOVkFMOwo+ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiBA QCAtNjc2LDE0ICs2NzYsMTQgQEAgc3RhdGljIGxvbmcgbWVtb3J5X2V4Y2hhbmdlKFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX21lbW9yeV9leGNoYW5nZV90KSBhcmcpCj4gICAgICAgICAgICAg ICAgICBpZiAoIHVubGlrZWx5KHJjKSApCj4gICAgICAgICAgICAgICAgICB7Cj4gICNpZmRlZiBD T05GSUdfWDg2Cj4gLSAgICAgICAgICAgICAgICAgICAgcHV0X2dmbihkLCBnbWZuICsgayk7Cj4g KyAgICAgICAgICAgICAgICAgICAgcHV0X2dmbihkLCBfZ2ZuKGdtZm4gKyBrKSk7Cj4gICNlbmRp Zgo+ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiAgICAgICAgICAgICAgICAgIH0K PiAgCj4gICAgICAgICAgICAgICAgICBwYWdlX2xpc3RfYWRkKHBhZ2UsICZpbl9jaHVua19saXN0 KTsKPiAgI2lmZGVmIENPTkZJR19YODYKPiAtICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ21m biArIGspOwo+ICsgICAgICAgICAgICAgICAgcHV0X2dmbihkLCBfZ2ZuKGdtZm4gKyBrKSk7Cj4g ICNlbmRpZgo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+IGRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vlc3QuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FtZC9pb21tdV9ndWVzdC5jCj4gaW5kZXggMDNjYTBjZi4uN2FiM2M3NyAxMDA2NDQK PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vlc3QuYwo+ICsrKyBi L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9ndWVzdC5jCj4gQEAgLTIxLDE0ICsy MSw2IEBACj4gICNpbmNsdWRlIDxhc20vYW1kLWlvbW11Lmg+Cj4gICNpbmNsdWRlIDxhc20vaHZt L3N2bS9hbWQtaW9tbXUtcHJvdG8uaD4KPiAgCj4gLS8qIE92ZXJyaWRlIHtnZXQscHV0fV9nZm4g dG8gd29yayB3aXRoIGdmbl90ICovCj4gLSN1bmRlZiBnZXRfZ2ZuCj4gLSNkZWZpbmUgZ2V0X2dm bihkLCBnLCB0KSBnZXRfZ2ZuX3R5cGUoZCwgZ2ZuX3goZyksIHQsIFAyTV9BTExPQykKPiAtI3Vu ZGVmIGdldF9nZm5fcXVlcnkKPiAtI2RlZmluZSBnZXRfZ2ZuX3F1ZXJ5KGQsIGcsIHQpIGdldF9n Zm5fdHlwZShkLCBnZm5feChnKSwgdCwgMCkKPiAtI3VuZGVmIHB1dF9nZm4KPiAtI2RlZmluZSBw dXRfZ2ZuKGQsIGcpIF9fcHV0X2dmbihwMm1fZ2V0X2hvc3RwMm0oZCksIGdmbl94KGcpKQo+IC0K PiAgI2RlZmluZSBJT01NVV9NTUlPX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAw Cj4gICNkZWZpbmUgSU9NTVVfTU1JT19QQUdFX05SICAgICAgICAgICAgICAgICAgICAgIDB4OAo+ ICAjZGVmaW5lIFJJTkdfQkZfTEVOR1RIX01BU0sgICAgICAgICAgICAgICAgICAgICAweDBGMDAw MDAwCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaAo+IGluZGV4IDg2ODRiODMuLjg3YzY4MTUgMTAwNjQ0 Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCj4gKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCj4gQEAgLTM4LDEwICszOCw2IEBAIGdmbl90b19wYWRkcihn Zm5fdCBnZm4pCj4gICAgICByZXR1cm4gKChwYWRkcl90KWdmbl94KGdmbikpIDw8IFBBR0VfU0hJ RlQ7Cj4gIH0KPiAgCj4gLS8qIE92ZXJyaWRlIGdldF9nZm4gdG8gd29yayB3aXRoIGdmbl90ICov Cj4gLSN1bmRlZiBnZXRfZ2ZuCj4gLSNkZWZpbmUgZ2V0X2dmbihkLCBnLCB0KSBnZXRfZ2ZuX3R5 cGUoKGQpLCBnZm5feChnKSwgKHQpLCBQMk1fQUxMT0MpCj4gLQo+ICAvKiBNYXNrIGNvdmVyaW5n IHRoZSByZXNlcnZlZCBiaXRzIGZyb20gc3VwZXJwYWdlIGFsaWdubWVudC4gKi8KPiAgI2RlZmlu ZSBTVVBFUlBBR0VfUlNWRChiaXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICAgICAgKCgoMXVsIDw8IChiaXQpKSAtIDEpICYgfihfUEFHRV9QU0VfUEFU IHwgKF9QQUdFX1BTRV9QQVQgLSAxdWwpKSkKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiBpbmRleCA4YmQ2ZjY0Li5l MzMyZjA2IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCj4gQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIHAybV91 bmxvY2tfYW5kX3RsYl9mbHVzaChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKTsKPiAgICogcHV0X2dm bi4gKioqKi8KPiAgCj4gIG1mbl90IF9fbm9ubnVsbCgzLCA0KSBfX2dldF9nZm5fdHlwZV9hY2Nl c3MoCj4gLSAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgcDJt X3R5cGVfdCAqdCwKPiArICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90IGdmbiwgcDJt X3R5cGVfdCAqdCwKPiAgICAgIHAybV9hY2Nlc3NfdCAqYSwgcDJtX3F1ZXJ5X3QgcSwgdW5zaWdu ZWQgaW50ICpwYWdlX29yZGVyLCBib29sX3QgbG9ja2VkKTsKPiAgCj4gIC8qCj4gQEAgLTQ0NCw3 ICs0NDQsNyBAQCBtZm5fdCBfX25vbm51bGwoMywgNCkgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKAo+ ICAgKiB0aGUgZW50cnkgd2FzIGZvdW5kIGluLgo+ICAgKi8KPiAgc3RhdGljIGlubGluZSBtZm5f dCBfX25vbm51bGwoMywgNCkgZ2V0X2dmbl90eXBlX2FjY2VzcygKPiAtICAgIHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBwMm1fdHlwZV90ICp0LAo+ICsgICAgc3Ry dWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuLCBwMm1fdHlwZV90ICp0LAo+ICAgICAgcDJt X2FjY2Vzc190ICphLCBwMm1fcXVlcnlfdCBxLCB1bnNpZ25lZCBpbnQgKnBhZ2Vfb3JkZXIpCj4g IHsKPiAgICAgIHJldHVybiBfX2dldF9nZm5fdHlwZV9hY2Nlc3MocDJtLCBnZm4sIHQsIGEsIHEs IHBhZ2Vfb3JkZXIsIHRydWUpOwo+IEBAIC00NTIsMjIgKzQ1MiwyMSBAQCBzdGF0aWMgaW5saW5l IG1mbl90IF9fbm9ubnVsbCgzLCA0KSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKAo+ICAKPiAgLyogR2Vu ZXJhbCBjb252ZXJzaW9uIGZ1bmN0aW9uIGZyb20gZ2ZuIHRvIG1mbiAqLwo+ICBzdGF0aWMgaW5s aW5lIG1mbl90IF9fbm9ubnVsbCgzKSBnZXRfZ2ZuX3R5cGUoCj4gLSAgICBzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgcDJtX3R5cGVfdCAqdCwgcDJtX3F1ZXJ5X3QgcSkKPiAr ICAgIHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCwgcDJtX3F1ZXJ5 X3QgcSkKPiAgewo+ICAgICAgcDJtX2FjY2Vzc190IGE7Cj4gICAgICByZXR1cm4gZ2V0X2dmbl90 eXBlX2FjY2VzcyhwMm1fZ2V0X2hvc3RwMm0oZCksIGdmbiwgdCwgJmEsIHEsIE5VTEwpOwo+ICB9 Cj4gIAo+ICAvKiBTeW50YWN0aWMgc3VnYXI6IG1vc3QgY2FsbGVycyB3aWxsIHVzZSBvbmUgb2Yg dGhlc2UuICovCj4gLSNkZWZpbmUgZ2V0X2dmbihkLCBnLCB0KSAgICAgICAgIGdldF9nZm5fdHlw ZSgoZCksIChnKSwgKHQpLCBQMk1fQUxMT0MpCj4gLSNkZWZpbmUgZ2V0X2dmbl9xdWVyeShkLCBn LCB0KSAgIGdldF9nZm5fdHlwZSgoZCksIChnKSwgKHQpLCAwKQo+IC0jZGVmaW5lIGdldF9nZm5f dW5zaGFyZShkLCBnLCB0KSBnZXRfZ2ZuX3R5cGUoKGQpLCAoZyksICh0KSwgXAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX0FMTE9DIHwgUDJNX1VO U0hBUkUpCj4gKyNkZWZpbmUgZ2V0X2dmbihkLCBnLCB0KSAgICAgICAgIGdldF9nZm5fdHlwZShk LCBnLCB0LCBQMk1fQUxMT0MpCj4gKyNkZWZpbmUgZ2V0X2dmbl9xdWVyeShkLCBnLCB0KSAgIGdl dF9nZm5fdHlwZShkLCBnLCB0LCAwKQo+ICsjZGVmaW5lIGdldF9nZm5fdW5zaGFyZShkLCBnLCB0 KSBnZXRfZ2ZuX3R5cGUoZCwgZywgdCwgUDJNX0FMTE9DIHwgUDJNX1VOU0hBUkUpCj4gIAo+ICAv KiBXaWxsIHJlbGVhc2UgdGhlIHAybV9sb2NrIGZvciB0aGlzIGdmbiBlbnRyeS4gKi8KPiAtdm9p ZCBfX3B1dF9nZm4oc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pOwo+ ICt2b2lkIF9fcHV0X2dmbihzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBnZm5fdCBnZm4pOwo+ICAK PiAtI2RlZmluZSBwdXRfZ2ZuKGQsIGdmbikgX19wdXRfZ2ZuKHAybV9nZXRfaG9zdHAybSgoZCkp LCAoZ2ZuKSkKPiArI2RlZmluZSBwdXRfZ2ZuKGQsIGcpIF9fcHV0X2dmbihwMm1fZ2V0X2hvc3Rw Mm0oZCksIGcpCj4gIAo+ICAvKgo+ICAgKiBUaGUgaW50ZW50IG9mIHRoZSAidW5sb2NrZWQiIGFj Y2Vzc29yIGlzIHRvIGhhdmUgdGhlIGNhbGxlciBub3Qgd29ycnkgYWJvdXQKPiBAQCAtNDg0LDkg KzQ4Myw4IEBAIHZvaWQgX19wdXRfZ2ZuKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVk IGxvbmcgZ2ZuKTsKPiAgICogQW55IG90aGVyIHR5cGUgb2YgcXVlcnkgY2FuIGNhdXNlIGEgY2hh bmdlIGluIHRoZSBwMm0gYW5kIG1heSBuZWVkIHRvCj4gICAqIHBlcmZvcm0gbG9ja2luZy4KPiAg ICovCj4gLXN0YXRpYyBpbmxpbmUgbWZuX3QgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChzdHJ1Y3Qg ZG9tYWluICpkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBnZm4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwMm1fdHlwZV90ICp0KQo+ICtzdGF0aWMgaW5saW5lIG1mbl90IGdldF9nZm5fcXVl cnlfdW5sb2NrZWQoCj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHAybV90eXBl X3QgKnQpCj4gIHsKPiAgICAgIHAybV9hY2Nlc3NfdCBhOwo+ICAgICAgcmV0dXJuIF9fZ2V0X2dm bl90eXBlX2FjY2VzcyhwMm1fZ2V0X2hvc3RwMm0oZCksIGdmbiwgdCwgJmEsIDAsIE5VTEwsIDAp Owo+IEBAIC01NjksOSArNTY3LDkgQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gIAo+ICAgICAgLyogTm93IGRvIHRoZSBnZXRzICov Cj4gICAgICAqZmlyc3RfbWZuICA9IGdldF9nZm5fdHlwZV9hY2Nlc3MocDJtX2dldF9ob3N0cDJt KHJ2YWwtPmZpcnN0X2RvbWFpbiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ZuX3gocnZhbC0+Zmlyc3RfZ2ZuKSwgZmlyc3RfdCwgZmlyc3RfYSwgcSwgTlVMTCk7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZhbC0+Zmlyc3RfZ2Zu LCBmaXJzdF90LCBmaXJzdF9hLCBxLCBOVUxMKTsKPiAgICAgICpzZWNvbmRfbWZuID0gZ2V0X2dm bl90eXBlX2FjY2VzcyhwMm1fZ2V0X2hvc3RwMm0ocnZhbC0+c2Vjb25kX2RvbWFpbiksCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3gocnZhbC0+c2Vjb25kX2dm biksIHNlY29uZF90LCBzZWNvbmRfYSwgcSwgTlVMTCk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcnZhbC0+c2Vjb25kX2dmbiwgc2Vjb25kX3QsIHNlY29uZF9hLCBx LCBOVUxMKTsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkIHB1dF90d29fZ2ZucyhzdHJ1 Y3QgdHdvX2dmbnMgKmFyZykKPiBAQCAtNTc5LDggKzU3Nyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBwdXRfdHdvX2dmbnMoc3RydWN0IHR3b19nZm5zICphcmcpCj4gICAgICBpZiAoICFhcmcgKQo+ ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAgICBwdXRfZ2ZuKGFyZy0+c2Vjb25kX2RvbWFpbiwg Z2ZuX3goYXJnLT5zZWNvbmRfZ2ZuKSk7Cj4gLSAgICBwdXRfZ2ZuKGFyZy0+Zmlyc3RfZG9tYWlu LCAgZ2ZuX3goYXJnLT5maXJzdF9nZm4pKTsKPiArICAgIHB1dF9nZm4oYXJnLT5zZWNvbmRfZG9t YWluLCBhcmctPnNlY29uZF9nZm4pOwo+ICsgICAgcHV0X2dmbihhcmctPmZpcnN0X2RvbWFpbiwg IGFyZy0+Zmlyc3RfZ2ZuKTsKPiAgfQo+ICAKPiAgLyogSW5pdCB0aGUgZGF0YXN0cnVjdHVyZXMg Zm9yIGxhdGVyIHVzZSBieSB0aGUgcDJtIGNvZGUgKi8KPiAtLSAKPiAyLjEuNAo+IAoKLS0gCkJy aWFuIFdvb2RzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs