From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() to use typesafe MFN Date: Thu, 9 May 2019 11:19:16 -0700 (PDT) Message-ID: References: <20190507151458.29350-1-julien.grall@arm.com> <20190507151458.29350-14-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOndY-0007UP-Hp for xen-devel@lists.xenproject.org; Thu, 09 May 2019 18:19:20 +0000 In-Reply-To: <20190507151458.29350-14-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Tamas K Lengyel , Jan Beulich , xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org T24gVHVlLCA3IE1heSAyMDE5LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gVGhlIGZpcnN0IHBhcmFt ZXRlciBvZiB7cyxnfWV0X2dwZm5fZnJvbV9tZm4oKSBpcyBhbiBNRk4sIHNvIGl0IGNhbiBiZQo+ IHN3aXRjaGVkIHRvIHVzZSB0aGUgdHlwZXNhZmUuCj4gCj4gQXQgdGhlIHNhbWUgdGltZSwgcmVw bGFjZSBncGZuIHdpdGggcGZuIGluIHRoZSBoZWxwZXJzIGFzIHRoZXkgYWxsIGRlYWwKPiB3aXRo IFBGTiBhbmQgYWxzbyB0dXJuIHRoZSBtYWNyb3MgdG8gc3RhdGljIGlubGluZS4KPiAKPiBOb3Rl IHRoYXQgdGhlIHJldHVybiBvZiB0aGUgZ2V0dGVyIGFuZCB0aGUgMm5kIHBhcmFtZXRlciBvZiB0 aGUgc2V0dGVyCj4gaGF2ZSBub3QgYmVlbiBjb252ZXJ0ZWQgdG8gdXNlIHR5cGVzYWZlIFBGTiBi ZWNhdXNlIGl0IHdhcyByZXF1aXJpbmcKPiBtb3JlIGNoYW5nZXMgdGhhbiBleHBlY3RlZC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKSSBv bmx5IHNraW1tZWQgdGhyb3VnaCB0aGUgeDg2IGJpdHMuCgpBY2tlZC1ieTogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgoKCj4gLS0tCj4gICAgIENoYW5nZXMgaW4g djI6Cj4gICAgICAgICAtIFBhdGNoIGFkZGVkCj4gLS0tCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNo ZWNrL21jYWN0aW9uLmMgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAg ICAgIHwgMTQgKysrKy0tLS0KPiAgeGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMgICAgICB8 IDE5ICsrKysrLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgICAgICAgICAgfCAg NCArLS0KPiAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICAgICB8IDM3ICsrKysrKysr KystLS0tLS0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgICAgICAgICAgIHwgNjYg KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L21t L3BhZ2luZy5jICAgICAgICAgICB8ICA0ICstLQo+ICB4ZW4vYXJjaC94ODYvcHYvZG9tMF9idWls ZC5jICAgICAgIHwgIDYgKystLQo+ICB4ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMgICAgICAg IHwgNDEgKysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAg ICAgICAgICAgICB8ICAyICstCj4gIHhlbi9jb21tb24vcGFnZV9hbGxvYy5jICAgICAgICAgICAg fCAgMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggICAgICAgICAgIHwgIDIgKy0KPiAg eGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oICB8ICAyICstCj4gIHhlbi9pbmNsdWRl L2FzbS14ODYvbW0uaCAgICAgICAgICAgfCAxNiArKysrKy0tLS0KPiAgeGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaCAgICAgICAgICB8ICAyICstCj4gIDE1IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNl cnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2FjdGlv bi5jCj4gaW5kZXggNjkzMzJmYjg0ZC4uNWU3OGZiNzcwMyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvY3B1L21jaGVjay9tY2FjdGlvbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hl Y2svbWNhY3Rpb24uYwo+IEBAIC04OSw3ICs4OSw3IEBAIG1jX21lbWVycl9kaGFuZGxlcihzdHJ1 Y3QgbWNhX2JpbmZvICpiaW5mbywKPiAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAg ZCA9IGdldF9kb21haW5fYnlfaWQoYmFuay0+bWNfZG9taWQpOwo+ICAgICAgICAgICAgICAgICAg QVNTRVJUKGQpOwo+IC0gICAgICAgICAgICAgICAgZ2ZuID0gZ2V0X2dwZm5fZnJvbV9tZm4oKGJh bmstPm1jX2FkZHIpID4+IFBBR0VfU0hJRlQpOwo+ICsgICAgICAgICAgICAgICAgZ2ZuID0gZ2V0 X3Bmbl9mcm9tX21mbihtYWRkcl90b19tZm4oYmFuay0+bWNfYWRkcikpOwo+ICAKPiAgICAgICAg ICAgICAgICAgIGlmICggdW5tbWFwX2Jyb2tlbl9wYWdlKGQsIG1mbiwgZ2ZuKSApCj4gICAgICAg ICAgICAgICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gv eDg2L21tLmMKPiBpbmRleCA3ZDg4N2YyNjk5Li42MGM0NzU4MmJlIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9tbS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tLmMKPiBAQCAtNTAyLDcgKzUw Miw3IEBAIHZvaWQgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9ndWVzdChzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlLCBzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgaWYgKCBwYWdlX2dldF9vd25lcihwYWdlKSA9 PSBkICkKPiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0gICAgc2V0X2dwZm5fZnJvbV9tZm4obWZu X3gocGFnZV90b19tZm4ocGFnZSkpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICBzZXRfcGZu X2Zyb21fbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gIAo+ICAg ICAgc3Bpbl9sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwo+ICAKPiBAQCAtMTA3Nyw3ICsxMDc3 LDcgQEAgZ2V0X3BhZ2VfZnJvbV9sMWUoCj4gIAo+ICAgICAgICAgICAgICBnZHByaW50ayhYRU5M T0dfV0FSTklORywgIkVycm9yIHVwZGF0aW5nIG1hcHBpbmdzIGZvciBtZm4gJSIgUFJJX21mbgo+ ICAgICAgICAgICAgICAgICAgICAgICAiIChwZm4gJSIgUFJJX3BmbiAiLCBmcm9tIEwxIGVudHJ5 ICUiIFBSSXB0ZSAiKSBmb3IgZCVkXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICBtZm4sIGdl dF9ncGZuX2Zyb21fbWZuKG1mbiksCj4gKyAgICAgICAgICAgICAgICAgICAgIG1mbiwgZ2V0X3Bm bl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAgICAgICAgICAgICAgICAgICAgICBsMWVfZ2V0X2lu dHB0ZShsMWUpLCBsMWVfb3duZXItPmRvbWFpbl9pZCk7Cj4gICAgICAgICAgICAgIHJldHVybiBl cnI7Cj4gICAgICAgICAgfQo+IEBAIC0xMDg4LDcgKzEwODgsNyBAQCBnZXRfcGFnZV9mcm9tX2wx ZSgKPiAgIGNvdWxkX25vdF9waW46Cj4gICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkVy cm9yIGdldHRpbmcgbWZuICUiIFBSSV9tZm4gIiAocGZuICUiIFBSSV9wZm4KPiAgICAgICAgICAg ICAgICIpIGZyb20gTDEgZW50cnkgJSIgUFJJcHRlICIgZm9yIGwxZV9vd25lciBkJWQsIHBnX293 bmVyIGQlZFxuIiwKPiAtICAgICAgICAgICAgIG1mbiwgZ2V0X2dwZm5fZnJvbV9tZm4obWZuKSwK PiArICAgICAgICAgICAgIG1mbiwgZ2V0X3Bmbl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAgICAg ICAgICAgICAgbDFlX2dldF9pbnRwdGUobDFlKSwgbDFlX293bmVyLT5kb21haW5faWQsIHBnX293 bmVyLT5kb21haW5faWQpOwo+ICAgICAgaWYgKCByZWFsX3BnX293bmVyICE9IE5VTEwgKQo+ICAg ICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+IEBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMgaW50 IGFsbG9jX3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5 cGUsCj4gICAgICAgICAgICAgICAgICAgIiAocGZuICUiIFBSSV9wZm4gIikgZm9yIHR5cGUgJSIg UFJ0eXBlX2luZm8KPiAgICAgICAgICAgICAgICAgICAiOiBjYWY9JTA4bHggdGFmPSUiIFBSdHlw ZV9pbmZvICJcbiIsCj4gICAgICAgICAgICAgICAgICAgbWZuX3gocGFnZV90b19tZm4ocGFnZSkp LAo+IC0gICAgICAgICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1mbl94KHBhZ2VfdG9fbWZu KHBhZ2UpKSksCj4gKyAgICAgICAgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3RvX21m bihwYWdlKSksCj4gICAgICAgICAgICAgICAgICAgdHlwZSwgcGFnZS0+Y291bnRfaW5mbywgcGFn ZS0+dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgICAgIGlmICggcGFnZSAhPSBjdXJyZW50LT5h cmNoLm9sZF9ndWVzdF90YWJsZSApCj4gICAgICAgICAgICAgIHBhZ2UtPnUuaW51c2UudHlwZV9p bmZvID0gMDsKPiBAQCAtMjg5MCw3ICsyODkwLDcgQEAgc3RhdGljIGludCBfZ2V0X3BhZ2VfdHlw ZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUsCj4gICAgICAgICAg ICAgICAgICAgICAgICJCYWQgdHlwZSAoc2F3ICUiIFBSdHlwZV9pbmZvICIgIT0gZXhwICUiIFBS dHlwZV9pbmZvICIpICIKPiAgICAgICAgICAgICAgICAgICAgICAgImZvciBtZm4gJSIgUFJJX21m biAiIChwZm4gJSIgUFJJX3BmbiAiKVxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgeCwgdHlw ZSwgbWZuX3gocGFnZV90b19tZm4ocGFnZSkpLAo+IC0gICAgICAgICAgICAgICAgICAgICBnZXRf Z3Bmbl9mcm9tX21mbihtZm5feChwYWdlX3RvX21mbihwYWdlKSkpKTsKPiArICAgICAgICAgICAg ICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3RvX21mbihwYWdlKSkpOwo+ICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZSBpZiAoIHVu bGlrZWx5KCEoeCAmIFBHVF92YWxpZGF0ZWQpKSApCj4gQEAgLTQwMDIsNyArNDAwMiw3IEBAIGxv bmcgZG9fbW11X3VwZGF0ZSgKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAg ICB9Cj4gIAo+IC0gICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pLCBncGZu KTsKPiArICAgICAgICAgICAgc2V0X3Bmbl9mcm9tX21mbihtZm4sIGdwZm4pOwo+ICAgICAgICAg ICAgICBwYWdpbmdfbWFya19wZm5fZGlydHkocGdfb3duZXIsIF9wZm4oZ3BmbikpOwo+ICAKPiAg ICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gQEAgLTQ1MjksNyArNDUyOSw3IEBAIGludCB4 ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ICAgICAgICAgIGdvdG8gcHV0X2JvdGg7Cj4gIAo+ ICAgICAgLyogVW5tYXAgZnJvbSBvbGQgbG9jYXRpb24sIGlmIGFueS4gKi8KPiAtICAgIG9sZF9n cGZuID0gZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSk7Cj4gKyAgICBvbGRfZ3BmbiA9IGdl dF9wZm5fZnJvbV9tZm4obWZuKTsKPiAgICAgIEFTU0VSVCghU0hBUkVEX00yUChvbGRfZ3Bmbikp Owo+ICAgICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZuICYmIG9sZF9ncGZuICE9IGdm biApCj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5j IGIveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBpbmRleCA1YWM5ZDhmNTRjLi5hZjkw M2MxMWU5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gKysr IGIveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBAQCAtMzkxLDExICszOTEsMTIgQEAg c3RhdGljIGlubGluZSB2b2lkIG1lbV9zaGFyaW5nX2dmbl9kZXN0cm95KHN0cnVjdCBwYWdlX2lu Zm8gKnBhZ2UsCj4gICAgICB4ZnJlZShnZm5faW5mbyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgcGFnZV9pbmZvKiBtZW1fc2hhcmluZ19sb29rdXAodW5zaWduZWQgbG9uZyBtZm4pCj4gK3N0 YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvKiBtZW1fc2hhcmluZ19sb29rdXAobWZuX3QgbWZuKQo+ICB7 Cj4gLSAgICBpZiAoIG1mbl92YWxpZChfbWZuKG1mbikpICkKPiArICAgIGlmICggbWZuX3ZhbGlk KG1mbikgKQo+ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8qIHBhZ2UgPSBtZm5f dG9fcGFnZShfbWZuKG1mbikpOwo+ICsgICAgICAgIHN0cnVjdCBwYWdlX2luZm8qIHBhZ2UgPSBt Zm5fdG9fcGFnZShtZm4pOwo+ICsKPiAgICAgICAgICBpZiAoIHBhZ2VfZ2V0X293bmVyKHBhZ2Up ID09IGRvbV9jb3cgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgLyogQ291bnQgaGFzIHRv IGJlIGF0IGxlYXN0IHR3bywgYmVjYXVzZSB3ZSdyZSBjYWxsZWQKPiBAQCAtNDA0LDcgKzQwNSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvKiBtZW1fc2hhcmluZ19sb29rdXAodW5zaWduZWQg bG9uZyBtZm4pCj4gICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdCA9IHJlYWRfYXRvbWljKCZw YWdlLT51LmludXNlLnR5cGVfaW5mbyk7Cj4gICAgICAgICAgICAgIEFTU0VSVCgodCAmIFBHVF90 eXBlX21hc2spID09IFBHVF9zaGFyZWRfcGFnZSk7Cj4gICAgICAgICAgICAgIEFTU0VSVCgodCAm IFBHVF9jb3VudF9tYXNrKSA+PSAyKTsKPiAtICAgICAgICAgICAgQVNTRVJUKFNIQVJFRF9NMlAo Z2V0X2dwZm5fZnJvbV9tZm4obWZuKSkpOwo+ICsgICAgICAgICAgICBBU1NFUlQoU0hBUkVEX00y UChnZXRfcGZuX2Zyb21fbWZuKG1mbikpKTsKPiAgICAgICAgICAgICAgcmV0dXJuIHBhZ2U7Cj4g ICAgICAgICAgfQo+ICAgICAgfQo+IEBAIC00NjQsMTAgKzQ2NSwxMCBAQCBzdGF0aWMgaW50IGF1 ZGl0KHZvaWQpCj4gICAgICAgICAgfQo+ICAKPiAgICAgICAgICAvKiBDaGVjayB0aGUgbTJwIGVu dHJ5ICovCj4gLSAgICAgICAgaWYgKCAhU0hBUkVEX00yUChnZXRfZ3Bmbl9mcm9tX21mbihtZm5f eChtZm4pKSkgKQo+ICsgICAgICAgIGlmICggIVNIQVJFRF9NMlAoZ2V0X3Bmbl9mcm9tX21mbiht Zm4pKSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgIE1FTV9TSEFSSU5HX0RFQlVHKCJtZm4g JWx4IHNoYXJlZCwgYnV0IHdyb25nIG0ycCBlbnRyeSAoJWx4KSFcbiIsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSwgZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZu KSkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KG1mbiksIGdldF9wZm5f ZnJvbV9tZm4obWZuKSk7Cj4gICAgICAgICAgICAgZXJyb3JzKys7Cj4gICAgICAgICAgfQo+ICAK PiBAQCAtNjkzLDcgKzY5NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5mbyAqX19n cmFiX3NoYXJlZF9wYWdlKG1mbl90IG1mbikKPiAgICAgIGlmICggIW1lbV9zaGFyaW5nX3BhZ2Vf bG9jayhwZykgKQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+ICAKPiAtICAgIGlmICggbWVtX3No YXJpbmdfbG9va3VwKG1mbl94KG1mbikpID09IE5VTEwgKQo+ICsgICAgaWYgKCBtZW1fc2hhcmlu Z19sb29rdXAobWZuKSA9PSBOVUxMICkKPiAgICAgIHsKPiAgICAgICAgICBtZW1fc2hhcmluZ19w YWdlX3VubG9jayhwZyk7Cj4gICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gQEAgLTg3Nyw3ICs4Nzgs NyBAQCBzdGF0aWMgaW50IG5vbWluYXRlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2Zu LAo+ICAgICAgYXRvbWljX2luYygmbnJfc2hhcmVkX21mbnMpOwo+ICAKPiAgICAgIC8qIFVwZGF0 ZSBtMnAgZW50cnkgdG8gU0hBUkVEX00yUF9FTlRSWSAqLwo+IC0gICAgc2V0X2dwZm5fZnJvbV9t Zm4obWZuX3gobWZuKSwgU0hBUkVEX00yUF9FTlRSWSk7Cj4gKyAgICBzZXRfcGZuX2Zyb21fbWZu KG1mbiwgU0hBUkVEX00yUF9FTlRSWSk7Cj4gIAo+ICAgICAgKnBoYW5kbGUgPSBwYWdlLT5zaGFy aW5nLT5oYW5kbGU7Cj4gICAgICBhdWRpdF9hZGRfbGlzdChwYWdlKTsKPiBAQCAtMTIyMiw3ICsx MjIzLDcgQEAgcHJpdmF0ZV9wYWdlX2ZvdW5kOgo+ICAgICAgfQo+ICAKPiAgICAgIC8qIFVwZGF0 ZSBtMnAgZW50cnkgKi8KPiAtICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KHBhZ2VfdG9fbWZu KHBhZ2UpKSwgZ2ZuKTsKPiArICAgIHNldF9wZm5fZnJvbV9tZm4ocGFnZV90b19tZm4ocGFnZSks IGdmbik7Cj4gIAo+ICAgICAgLyogTm93IHRoYXQgdGhlIGdmbjwtPm1mbiBtYXAgaXMgcHJvcGVy bHkgZXN0YWJsaXNoZWQsCj4gICAgICAgKiBtYXJraW5nIGRpcnR5IGlzIGZlYXNpYmxlICovCj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgYi94ZW4vYXJjaC94ODYvbW0v cDJtLXBvZC5jCj4gaW5kZXggNDMxMzg2MzA2Ni4uOWUwMDE3MzhmNCAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2Qu Ywo+IEBAIC02NTIsNyArNjUyLDcgQEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihzdHJ1 Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHVuc2lnbmVkIGludCBvcmRlcikKPiAgICAgICAgICAg ICAgfQo+ICAgICAgICAgICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKPiAgICAgICAgICAg ICAgZm9yICggaiA9IDA7IGogPCBuOyArK2ogKQo+IC0gICAgICAgICAgICAgICAgc2V0X2dwZm5f ZnJvbV9tZm4obWZuX3gobWZuKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICsgICAgICAgICAgICAg ICAgc2V0X3Bmbl9mcm9tX21mbihtZm4sIElOVkFMSURfTTJQX0VOVFJZKTsKPiAgICAgICAgICAg ICAgcDJtX3BvZF9jYWNoZV9hZGQocDJtLCBwYWdlLCBjdXJfb3JkZXIpOwo+ICAKPiAgICAgICAg ICAgICAgc3RlYWxfZm9yX2NhY2hlID0gICggcDJtLT5wb2QuZW50cnlfY291bnQgPiBwMm0tPnBv ZC5jb3VudCApOwo+IEBAIC0xMjAzLDcgKzEyMDMsNyBAQCBwMm1fcG9kX2RlbWFuZF9wb3B1bGF0 ZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBnZm5fdCBnZm4sCj4gIAo+ICAgICAgZm9yKCBpID0g MDsgaSA8ICgxVUwgPDwgb3JkZXIpOyBpKysgKQo+ICAgICAgewo+IC0gICAgICAgIHNldF9ncGZu X2Zyb21fbWZuKG1mbl94KG1mbikgKyBpLCBnZm5feChnZm5fYWxpZ25lZCkgKyBpKTsKPiArICAg ICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBpKSwgZ2ZuX3goZ2ZuX2FsaWduZWQp ICsgaSk7Cj4gICAgICAgICAgcGFnaW5nX21hcmtfcGZuX2RpcnR5KGQsIF9wZm4oZ2ZuX3goZ2Zu X2FsaWduZWQpICsgaSkpOwo+ICAgICAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCj4gaW5kZXggY2FmYzlmMjk5 Yi4uMGU4NTgxOWY5YiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiAr KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiBAQCAtOTkxLDcgKzk5MSw4IEBAIHN0YXRp YyBpbnQgcDJtX3B0X2NoYW5nZV9lbnRyeV90eXBlX3JhbmdlKHN0cnVjdCBwMm1fZG9tYWluICpw Mm0sCj4gIGxvbmcgcDJtX3B0X2F1ZGl0X3AybShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQo+ICB7 Cj4gICAgICB1bnNpZ25lZCBsb25nIGVudHJ5X2NvdW50ID0gMCwgcG1iYWQgPSAwOwo+IC0gICAg dW5zaWduZWQgbG9uZyBtZm4sIGdmbiwgbTJwZm47Cj4gKyAgICB1bnNpZ25lZCBsb25nIGdmbiwg bTJwZm47Cj4gKyAgICBtZm5fdCBtZm47Cj4gIAo+ICAgICAgQVNTRVJUKHAybV9sb2NrZWRfYnlf bWUocDJtKSk7Cj4gICAgICBBU1NFUlQocG9kX2xvY2tlZF9ieV9tZShwMm0pKTsKPiBAQCAtMTAz MCwxOSArMTAzMSwxOSBAQCBsb25nIHAybV9wdF9hdWRpdF9wMm0oc3RydWN0IHAybV9kb21haW4g KnAybSkKPiAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGZvciAxR0Igc3VwZXIgcGFnZSAqLwo+ ICAgICAgICAgICAgICAgICAgaWYgKCBsM2VfZ2V0X2ZsYWdzKGwzZVtpM10pICYgX1BBR0VfUFNF ICkKPiAgICAgICAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICBtZm4gPSBsM2Vf Z2V0X3BmbihsM2VbaTNdKTsKPiAtICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlk KF9tZm4obWZuKSkpOwo+ICsgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwzZV9nZXRfbWZuKGwz ZVtpM10pOwo+ICsgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSk7Cj4g ICAgICAgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSB0byBjb3ZlciA1MTJ4NTEyIDRLIHBhZ2Vz ICovCj4gICAgICAgICAgICAgICAgICAgICAgZm9yICggaTIgPSAwOyAKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpMiA8IChMMl9QQUdFVEFCTEVfRU5UUklFUyAqIEwxX1BBR0VUQUJMRV9F TlRSSUVTKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMisrKQo+ICAgICAgICAgICAg ICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4gPSBnZXRfZ3Bmbl9m cm9tX21mbihtZm4raTIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBtMnBmbiA9IGdldF9w Zm5fZnJvbV9tZm4obWZuX2FkZChtZm4sIGkyKSk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg IGlmICggbTJwZm4gIT0gKGdmbiArIGkyKSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHsK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtYmFkKys7Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUjbHgi Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gZ2ZuICUjbHhc biIsIGdmbitpMiwgbWZuK2kyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX1BS SU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4iIGdmbiAlI2x4XG4iLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4gKyBpMiwgbWZuX3go bWZuX2FkZChtZm4sIGkyKSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG0ycGZuKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRygpOwo+ICAgICAg ICAgICAgICAgICAgICAgICAgICB9Cj4gQEAgLTEwNjcsMTcgKzEwNjgsMTcgQEAgbG9uZyBwMm1f cHRfYXVkaXRfcDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gICAgICAgICAgICAgICAgICAg ICAgLyogY2hlY2sgZm9yIHN1cGVyIHBhZ2UgKi8KPiAgICAgICAgICAgICAgICAgICAgICBpZiAo IGwyZV9nZXRfZmxhZ3MobDJlW2kyXSkgJiBfUEFHRV9QU0UgKQo+ICAgICAgICAgICAgICAgICAg ICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgbWZuID0gbDJlX2dldF9wZm4obDJlW2ky XSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtZm5fdmFsaWQoX21mbihtZm4p KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwyZV9nZXRfbWZuKGwyZVtpMl0p Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpMSA9IDA7IGkxIDwgTDFfUEFHRVRBQkxFX0VO VFJJRVM7IGkxKyspCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG0ycGZuID0gZ2V0X2dwZm5fZnJvbV9tZm4obWZuK2kxKTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG0ycGZuID0gZ2V0X3Bmbl9mcm9tX21mbihtZm5fYWRk KG1mbiwgaTEpKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFsbG93IHNoYXJl ZCBNMlBzICovCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChtMnBmbiAhPSAo Z2ZuICsgaTEpKSAmJiAhU0hBUkVEX00yUChtMnBmbikgKQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtYmFkKys7Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX1BSSU5USygibWlzbWF0Y2g6IGdm biAlI2x4IC0+IG1mbiAlI2x4Igo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuK2kxLCBtZm4raTEsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUDJNX1BSSU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1m biAlIlBSSV9tZm4iIC0+IGdmbiAlI2x4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2ZuICsgaTEsIG1mbl94KG1mbl9hZGQobWZuLCBpMSkpLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4pOwo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRygpOwo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQo+IEBAIC0xMDk5LDE5ICsxMTAwLDE5IEBAIGxvbmcgcDJtX3B0X2F1ZGl0X3Ay bShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudHJ5X2NvdW50Kys7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICBtZm4gPSBsMWVfZ2V0X3BmbihsMWVbaTFdKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAg QVNTRVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAg bTJwZm4gPSBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBtZm4gPSBsMWVfZ2V0X21mbihsMWVbaTFdKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg QVNTRVJUKG1mbl92YWxpZChtZm4pKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4g PSBnZXRfcGZuX2Zyb21fbWZuKG1mbik7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg bTJwZm4gIT0gZ2ZuICYmCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBw Mm1fbW1pb19kaXJlY3QgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcDJtX2lz X2dyYW50KHR5cGUpICYmCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXAybV9pc19z aGFyZWQodHlwZSkgKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwbWJhZCsrOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpbnRrKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUjbHgiCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuLCBtZm4sIG0ycGZuKTsK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9QUklOVEsoIm1pc21hdGNoOiBnZm4g JSNseCAtPiBtZm4gJSNseCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuLCBtZm4sIG0ycGZuKTsKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaW50aygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4i IC0+IGdmbiAlI2x4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm biwgbWZuX3gobWZuKSwgbTJwZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJN X1BSSU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4iIC0+IGdmbiAlI2x4 XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4sIG1mbl94 KG1mbiksIG0ycGZuKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRygpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICAgICAgICAgfQo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBp bmRleCAzYzk4ZjcyZGJiLi4wMDNlZDk3NTIxIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IEBAIC03NjksNyArNzY5LDcg QEAgdm9pZCBwMm1fZmluYWxfdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKPiAgCj4gIAo+ICBz dGF0aWMgaW50Cj4gLXAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKPiArcDJtX3JlbW92ZV9wYWdlKHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsIG1mbl90IG1mbiwKPiAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQo+ICB7Cj4gICAgICB1bnNp Z25lZCBsb25nIGk7Cj4gQEAgLTc4MywxNyArNzgzLDE3IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1m biwKPiAgICAgICAgICByZXR1cm4gMDsKPiAgCj4gICAgICBBU1NFUlQoZ2ZuX2xvY2tlZF9ieV9t ZShwMm0sIGdmbikpOwo+IC0gICAgUDJNX0RFQlVHKCJyZW1vdmluZyBnZm49JSNseCBtZm49JSNs eFxuIiwgZ2ZuX2wsIG1mbik7Cj4gKyAgICBQMk1fREVCVUcoInJlbW92aW5nIGdmbj0lI2x4IG1m bj0lIlBSSV9tZm4iXG4iLCBnZm5fbCwgbWZuX3gobWZuKSk7Cj4gIAo+IC0gICAgaWYgKCBtZm5f dmFsaWQoX21mbihtZm4pKSApCj4gKyAgICBpZiAoIG1mbl92YWxpZChtZm4pICkKPiAgICAgIHsK PiAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICBtZm5fcmV0dXJuID0gcDJtLT5nZXRfZW50cnkocDJt LCBnZm5fYWRkKGdmbiwgaSksICZ0LCAmYSwgMCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwo+ICAgICAgICAgICAgICBpZiAoICFwMm1faXNf Z3JhbnQodCkgJiYgIXAybV9pc19zaGFyZWQodCkgJiYgIXAybV9pc19mb3JlaWduKHQpICkKPiAt ICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbitpLCBJTlZBTElEX00yUF9FTlRS WSk7Cj4gLSAgICAgICAgICAgIEFTU0VSVCggIXAybV9pc192YWxpZCh0KSB8fCBtZm4gKyBpID09 IG1mbl94KG1mbl9yZXR1cm4pICk7Cj4gKyAgICAgICAgICAgICAgICBzZXRfcGZuX2Zyb21fbWZu KG1mbl9hZGQobWZuLCBpKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICsgICAgICAgICAgICBBU1NF UlQoICFwMm1faXNfdmFsaWQodCkgfHwgbWZuX2VxKG1mbl9hZGQobWZuLCBpKSwgbWZuX3JldHVy bikgKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gICAgICByZXR1cm4gcDJtX3NldF9lbnRyeShw Mm0sIGdmbiwgSU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAo+IEBAIC04MDcs NyArODA3LDcgQEAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBn Zm5fdCBnZm4sCj4gICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJt KGQpOwo+ICAgICAgaW50IHJjOwo+ICAgICAgZ2ZuX2xvY2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIp Owo+IC0gICAgcmMgPSBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBnZm5feChnZm4pLCBtZm5feChtZm4p LCBwYWdlX29yZGVyKTsKPiArICAgIHJjID0gcDJtX3JlbW92ZV9wYWdlKHAybSwgZ2ZuX3goZ2Zu KSwgbWZuLCBwYWdlX29yZGVyKTsKPiAgICAgIGdmbl91bmxvY2socDJtLCBnZm4sIHBhZ2Vfb3Jk ZXIpOwo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gQEAgLTkwOCw3ICs5MDgsNyBAQCBndWVzdF9w aHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIG1mbl90IG1mbiwK PiAgICAgICAgICBlbHNlIGlmICggcDJtX2lzX3JhbShvdCkgJiYgIXAybV9pc19wYWdlZChvdCkg KQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChvbWZuKSk7Cj4g LSAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG9tZm4pLCBJTlZBTElEX00yUF9F TlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4ob21mbiwgSU5WQUxJRF9NMlBf RU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNlIGlmICggb3QgPT0gcDJtX3BvcHVs YXRlX29uX2RlbWFuZCApCj4gICAgICAgICAgewo+IEBAIC05NTEsNyArOTUxLDcgQEAgZ3Vlc3Rf cGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4s Cj4gICAgICAgICAgICAgICAgICBQMk1fREVCVUcoIm9sZCBnZm49JSNseCAtPiBtZm4gJSNseFxu IiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChvZ2ZuKSAsIG1mbl94KG9tZm4p KTsKPiAgICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG9tZm4sIG1mbl9hZGQobWZuLCBpKSkg KQo+IC0gICAgICAgICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbl94KG9nZm4p LCBtZm5feChtZm5fYWRkKG1mbiwgaSkpLAo+ICsgICAgICAgICAgICAgICAgICAgIHAybV9yZW1v dmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5fYWRkKG1mbiwgaSksCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAg fQo+IEBAIC05NjgsOCArOTY4LDggQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRv bWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAgICAgICAgaWYgKCAhcDJtX2lzX2dy YW50KHQpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDFV TCA8PCBwYWdlX29yZGVyKTsgaSsrICkKPiAtICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21f bWZuKG1mbl94KG1mbl9hZGQobWZuLCBpKSksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiArICAgICAgICAgICAgICAgIHNldF9w Zm5fZnJvbV9tZm4obWZuX2FkZChtZm4sIGkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4g ICAgICBlbHNlCj4gQEAgLTEyNzIsNyArMTI3Miw3IEBAIHN0YXRpYyBpbnQgc2V0X3R5cGVkX3Ay bV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbl9sLAo+ICAgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBvcmRlcik7ICsraSApCj4gICAgICAgICAgewo+ICAg ICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbl9hZGQob21mbiwgaSkpKTsKPiAtICAgICAg ICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gob21mbikgKyBpLCBJTlZBTElEX00yUF9FTlRS WSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4obWZuX2FkZChvbWZuLCBpKSwgSU5W QUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgCj4gQEAgLTE0NjcsNyAr MTQ2Nyw3IEBAIGludCBzZXRfc2hhcmVkX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbl9sLCBtZm5fdCBtZm4pCj4gICAgICBwZ190eXBlID0gcmVhZF9hdG9taWMo JihtZm5fdG9fcGFnZShvbWZuKS0+dS5pbnVzZS50eXBlX2luZm8pKTsKPiAgICAgIGlmICggKHBn X3R5cGUgJiBQR1RfY291bnRfbWFzaykgPT0gMAo+ICAgICAgICAgICB8fCAocGdfdHlwZSAmIFBH VF90eXBlX21hc2spICE9IFBHVF9zaGFyZWRfcGFnZSApCj4gLSAgICAgICAgc2V0X2dwZm5fZnJv bV9tZm4obWZuX3gob21mbiksIElOVkFMSURfTTJQX0VOVFJZKTsKPiArICAgICAgICBzZXRfcGZu X2Zyb21fbWZuKG9tZm4sIElOVkFMSURfTTJQX0VOVFJZKTsKPiAgCj4gICAgICBQMk1fREVCVUco InNldCBzaGFyZWQgJWx4ICVseFxuIiwgZ2ZuX2wsIG1mbl94KG1mbikpOwo+ICAgICAgcmMgPSBw Mm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBtZm4sIFBBR0VfT1JERVJfNEssIHAybV9yYW1fc2hhcmVk LAo+IEBAIC0xODIxLDcgKzE4MjEsNyBAQCBpbnQgcDJtX21lbV9wYWdpbmdfcHJlcChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbl9sLCB1aW50NjRfdCBidWZmZXIpCj4gICAgICBy ZXQgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBtZm4sIFBBR0VfT1JERVJfNEssCj4gICAgICAg ICAgICAgICAgICAgICAgICAgIHBhZ2luZ19tb2RlX2xvZ19kaXJ0eShkKSA/IHAybV9yYW1fbG9n ZGlydHkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDogcDJtX3JhbV9ydywgYSk7Cj4gLSAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pLCBn Zm5fbCk7Cj4gKyAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbiwgZ2ZuX2wpOwo+ICAKPiAgICAgIGlm ICggIXBhZ2VfZXh0YW50ICkKPiAgICAgICAgICBhdG9taWNfZGVjKCZkLT5wYWdlZF9wYWdlcyk7 Cj4gQEAgLTE4NzIsNyArMTg3Miw3IEBAIHZvaWQgcDJtX21lbV9wYWdpbmdfcmVzdW1lKHN0cnVj dCBkb21haW4gKmQsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwMm1fcmFtX3J3LCBhKTsKPiAgCj4gICAgICAgICAgICAgIGlm ICggIXJjICkKPiAtICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbiks IGdmbl94KGdmbikpOwo+ICsgICAgICAgICAgICAgICAgc2V0X3Bmbl9mcm9tX21mbihtZm4sIGdm bl94KGdmbikpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCAw KTsKPiAgICAgIH0KPiBAQCAtMjYzNSw3ICsyNjM1LDcgQEAgaW50IHAybV9jaGFuZ2VfYWx0cDJt X2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4LAo+ICAgICAgaWYgKCBnZm5f ZXEobmV3X2dmbiwgSU5WQUxJRF9HRk4pICkKPiAgICAgIHsKPiAgICAgICAgICBpZiAoIG1mbl92 YWxpZChtZm4pICkKPiAtICAgICAgICAgICAgcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdmbl94KG9s ZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKTsKPiArICAgICAgICAgICAgcDJtX3Jl bW92ZV9wYWdlKGFwMm0sIGdmbl94KG9sZF9nZm4pLCBtZm4sIFBBR0VfT1JERVJfNEspOwo+ICAg ICAgICAgIHJjID0gMDsKPiAgICAgICAgICBnb3RvIG91dDsKPiAgICAgIH0KPiBAQCAtMjc3Miw4 ICsyNzcyLDggQEAgdm9pZCBhdWRpdF9wMm0oc3RydWN0IGRvbWFpbiAqZCwKPiAgewo+ICAgICAg c3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPiAgICAgIHN0cnVjdCBkb21haW4gKm9kOwo+IC0gICAg dW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKPiAtICAgIG1mbl90IHAybWZuOwo+ICsgICAgdW5zaWdu ZWQgbG9uZyBnZm47Cj4gKyAgICBtZm5fdCBwMm1mbiwgbWZuOwo+ICAgICAgdW5zaWduZWQgbG9u ZyBvcnBoYW5zX2NvdW50ID0gMCwgbXBiYWQgPSAwLCBwbWJhZCA9IDA7Cj4gICAgICBwMm1fYWNj ZXNzX3QgcDJtYTsKPiAgICAgIHAybV90eXBlX3QgdHlwZTsKPiBAQCAtMjc5NSw1NCArMjc5NSw1 NCBAQCB2b2lkIGF1ZGl0X3AybShzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgc3Bpbl9sb2NrKCZk LT5wYWdlX2FsbG9jX2xvY2spOwo+ICAgICAgcGFnZV9saXN0X2Zvcl9lYWNoICggcGFnZSwgJmQt PnBhZ2VfbGlzdCApCj4gICAgICB7Cj4gLSAgICAgICAgbWZuID0gbWZuX3gocGFnZV90b19tZm4o cGFnZSkpOwo+ICsgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+ICAKPiAtICAgICAg ICBQMk1fUFJJTlRLKCJhdWRpdGluZyBndWVzdCBwYWdlLCBtZm49JSNseFxuIiwgbWZuKTsKPiAr ICAgICAgICBQMk1fUFJJTlRLKCJhdWRpdGluZyBndWVzdCBwYWdlLCBtZm49JSJQUklfbWZuIlxu IiwgbWZuX3gobWZuKSk7Cj4gIAo+ICAgICAgICAgIG9kID0gcGFnZV9nZXRfb3duZXIocGFnZSk7 Cj4gIAo+ICAgICAgICAgIGlmICggb2QgIT0gZCApCj4gICAgICAgICAgewo+IC0gICAgICAgICAg ICBQMk1fUFJJTlRLKCJ3cm9uZyBvd25lciAlI2x4IC0+ICVwKCV1KSAhPSAlcCgldSlcbiIsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgbWZuLCBvZCwgKG9kP29kLT5kb21haW5faWQ6LTEpLCBk LCBkLT5kb21haW5faWQpOwo+ICsgICAgICAgICAgICBQMk1fUFJJTlRLKCJ3cm9uZyBvd25lciAl IlBSSV9tZm4iIC0+ICVwKCV1KSAhPSAlcCgldSlcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgbWZuX3gobWZuKSwgb2QsIChvZD9vZC0+ZG9tYWluX2lkOi0xKSwgZCwgZC0+ZG9tYWluX2lk KTsKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgfQo+ICAKPiAtICAgICAgICBn Zm4gPSBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pOwo+ICsgICAgICAgIGdmbiA9IGdldF9wZm5fZnJv bV9tZm4obWZuKTsKPiAgICAgICAgICBpZiAoIGdmbiA9PSBJTlZBTElEX00yUF9FTlRSWSApCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICBvcnBoYW5zX2NvdW50Kys7Cj4gLSAgICAgICAgICAg IFAyTV9QUklOVEsoIm9ycGhhbmVkIGd1ZXN0IHBhZ2U6IG1mbj0lI2x4IGhhcyBpbnZhbGlkIGdm blxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuKTsKPiArICAgICAgICAgICAg UDJNX1BSSU5USygib3JwaGFuZWQgZ3Vlc3QgcGFnZTogbWZuPSUiUFJJX21mbiIgaGFzIGludmFs aWQgZ2ZuXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KG1mbikpOwo+ICAgICAg ICAgICAgICBjb250aW51ZTsKPiAgICAgICAgICB9Cj4gIAo+ICAgICAgICAgIGlmICggU0hBUkVE X00yUChnZm4pICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIFAyTV9QUklOVEsoInNoYXJl ZCBtZm4gKCVseCkgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gLSAgICAgICAgICAgICAgICAg ICAgbWZuKTsKPiArICAgICAgICAgICAgUDJNX1BSSU5USygic2hhcmVkIG1mbiAoJSJQUklfbWZu Iikgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWZu X3gobWZuKSk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPiAgCj4gICAg ICAgICAgcDJtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuLCAmdHlwZSwgJnAybWEs IDAsIE5VTEwpOwo+IC0gICAgICAgIGlmICggbWZuX3gocDJtZm4pICE9IG1mbiApCj4gKyAgICAg ICAgaWYgKCAhbWZuX2VxKHAybWZuLCBtZm4pICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAg IG1wYmFkKys7Cj4gLSAgICAgICAgICAgIFAyTV9QUklOVEsoIm1hcCBtaXNtYXRjaCBtZm4gJSNs eCAtPiBnZm4gJSNseCAtPiBtZm4gJSNseCIKPiArICAgICAgICAgICAgUDJNX1BSSU5USygibWFw IG1pc21hdGNoIG1mbiAlIlBSSV9tZm4iIC0+IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4iIgo+ ICAgICAgICAgICAgICAgICAgICAgICAgICIgKC0+IGdmbiAlI2x4KVxuIiwKPiAtICAgICAgICAg ICAgICAgICAgICAgICBtZm4sIGdmbiwgbWZuX3gocDJtZm4pLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIG1mbl94KG1mbiksIGdmbiwgbWZuX3gocDJtZm4pLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgIChtZm5fdmFsaWQocDJtZm4pCj4gLSAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0 X2dwZm5fZnJvbV9tZm4obWZuX3gocDJtZm4pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICA/ IGdldF9wZm5fZnJvbV9tZm4ocDJtZm4pCj4gICAgICAgICAgICAgICAgICAgICAgICAgIDogLTF1 KSk7Cj4gICAgICAgICAgICAgIC8qIFRoaXMgbTJwIGVudHJ5IGlzIHN0YWxlOiB0aGUgZG9tYWlu IGhhcyBhbm90aGVyIGZyYW1lIGluCj4gICAgICAgICAgICAgICAqIHRoaXMgcGh5c2ljYWwgc2xv dC4gIE5vIGdyZWF0IGRpc2FzdGVyLCBidXQgZm9yIG5lYXRuZXNzLAo+ICAgICAgICAgICAgICAg KiBibG93IGF3YXkgdGhlIG0ycCBlbnRyeS4gKi8KPiAtICAgICAgICAgICAgc2V0X2dwZm5fZnJv bV9tZm4obWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJv bV9tZm4obWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIF9f cHV0X2dmbihwMm0sIGdmbik7Cj4gIAo+IC0gICAgICAgIFAyTV9QUklOVEsoIk9LOiBtZm49JSNs eCwgZ2ZuPSUjbHgsIHAybWZuPSUjbHhcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgbWZu LCBnZm4sIG1mbl94KHAybWZuKSk7Cj4gKyAgICAgICAgUDJNX1BSSU5USygiT0s6IG1mbj0lIlBS SV9tZm4iLCBnZm49JSNseCwgcDJtZm49JSJQUklfbWZuIlxuIiwKPiArICAgICAgICAgICAgICAg ICAgIG1mbl94KG1mbiksIGdmbiwgbWZuX3gocDJtZm4pKTsKPiAgICAgIH0KPiAgICAgIHNwaW5f dW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3BhZ2luZy5jIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gaW5kZXggOWIwZjI2 OGU3NC4uY2VmMmY5MDE4NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMK PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHZv aWQgcGFnaW5nX21hcmtfZGlydHkoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKPiAgICAg ICAgICByZXR1cm47Cj4gIAo+ICAgICAgLyogV2UgL3JlYWxseS8gbWVhbiBQRk4gaGVyZSwgZXZl biBmb3Igbm9uLXRyYW5zbGF0ZWQgZ3Vlc3RzLiAqLwo+IC0gICAgcGZuID0gX3BmbihnZXRfZ3Bm bl9mcm9tX21mbihtZm5feChnbWZuKSkpOwo+ICsgICAgcGZuID0gX3BmbihnZXRfcGZuX2Zyb21f bWZuKGdtZm4pKTsKPiAgCj4gICAgICBwYWdpbmdfbWFya19wZm5fZGlydHkoZCwgcGZuKTsKPiAg fQo+IEBAIC0zNjIsNyArMzYyLDcgQEAgaW50IHBhZ2luZ19tZm5faXNfZGlydHkoc3RydWN0IGRv bWFpbiAqZCwgbWZuX3QgZ21mbikKPiAgICAgIEFTU0VSVChwYWdpbmdfbW9kZV9sb2dfZGlydHko ZCkpOwo+ICAKPiAgICAgIC8qIFdlIC9yZWFsbHkvIG1lYW4gUEZOIGhlcmUsIGV2ZW4gZm9yIG5v bi10cmFuc2xhdGVkIGd1ZXN0cy4gKi8KPiAtICAgIHBmbiA9IF9wZm4oZ2V0X2dwZm5fZnJvbV9t Zm4obWZuX3goZ21mbikpKTsKPiArICAgIHBmbiA9IF9wZm4oZ2V0X3Bmbl9mcm9tX21mbihnbWZu KSk7Cj4gICAgICAvKiBJbnZhbGlkIHBhZ2VzIGNhbid0IGJlIGRpcnR5LiAqLwo+ICAgICAgaWYg KCB1bmxpa2VseSghVkFMSURfTTJQKHBmbl94KHBmbikpKSApCj4gICAgICAgICAgcmV0dXJuIDA7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94 ODYvcHYvZG9tMF9idWlsZC5jCj4gaW5kZXggY2VmMmQ0MjI1NC4uYjM5YWI2NzA5MiAxMDA2NDQK PiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2 L3B2L2RvbTBfYnVpbGQuYwo+IEBAIC0zOSw3ICszOSw3IEBAIHZvaWQgX19pbml0IGRvbTBfdXBk YXRlX3BoeXNtYXAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCj4gICAgICBl bHNlCj4gICAgICAgICAgKCh1bnNpZ25lZCBpbnQgKil2cGh5c21hcF9zKVtwZm5dID0gbWZuOwo+ ICAKPiAtICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbiwgcGZuKTsKPiArICAgIHNldF9wZm5fZnJv bV9tZm4oX21mbihtZm4pLCBwZm4pOwo+ICB9Cj4gIAo+ICBzdGF0aWMgX19pbml0IHZvaWQgbWFy a19wdl9wdF9wYWdlc19yZG9ubHkoc3RydWN0IGRvbWFpbiAqZCwKPiBAQCAtNzk4LDggKzc5OCw4 IEBAIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAg IHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQo+ICAgICAgewo+ICAg ICAgICAgIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiAtICAgICAgICBCVUdfT04o U0hBUkVEX00yUChnZXRfZ3Bmbl9mcm9tX21mbihtZm4pKSk7Cj4gLSAgICAgICAgaWYgKCBnZXRf Z3Bmbl9mcm9tX21mbihtZm4pID49IGNvdW50ICkKPiArICAgICAgICBCVUdfT04oU0hBUkVEX00y UChnZXRfcGZuX2Zyb21fbWZuKF9tZm4obWZuKSkpKTsKPiArICAgICAgICBpZiAoIGdldF9wZm5f ZnJvbV9tZm4oX21mbihtZm4pKSA+PSBjb3VudCApCj4gICAgICAgICAgewo+ICAgICAgICAgICAg ICBCVUdfT04oaXNfcHZfMzJiaXRfZG9tYWluKGQpKTsKPiAgICAgICAgICAgICAgaWYgKCAhcGFn ZS0+dS5pbnVzZS50eXBlX2luZm8gJiYKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82 NC90cmFwcy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jCj4gaW5kZXggNDRhZjc2NWUz ZS4uZjgwZjIyNTBmZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMK PiArKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKPiBAQCAtMTg0LDcgKzE4NCw4IEBA IHZvaWQgdmNwdV9zaG93X3JlZ2lzdGVycyhjb25zdCBzdHJ1Y3QgdmNwdSAqdikKPiAgCj4gIHZv aWQgc2hvd19wYWdlX3dhbGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICB7Cj4gLSAgICB1bnNpZ25l ZCBsb25nIHBmbiwgbWZuID0gcmVhZF9jcjMoKSA+PiBQQUdFX1NISUZUOwo+ICsgICAgdW5zaWdu ZWQgbG9uZyBwZm47Cj4gKyAgICBtZm5fdCBtZm4gPSBtYWRkcl90b19tZm4ocmVhZF9jcjMoKSk7 Cj4gICAgICBsNF9wZ2VudHJ5X3QgbDRlLCAqbDR0Owo+ICAgICAgbDNfcGdlbnRyeV90IGwzZSwg KmwzdDsKPiAgICAgIGwyX3BnZW50cnlfdCBsMmUsICpsMnQ7Cj4gQEAgLTE5NCw1MiArMTk1LDUy IEBAIHZvaWQgc2hvd19wYWdlX3dhbGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICAgICAgaWYgKCAh aXNfY2Fub25pY2FsX2FkZHJlc3MoYWRkcikgKQo+ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAg ICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgIGw0dCA9IG1hcF9kb21h aW5fcGFnZShtZm4pOwo+ICAgICAgbDRlID0gbDR0W2w0X3RhYmxlX29mZnNldChhZGRyKV07Cj4g ICAgICB1bm1hcF9kb21haW5fcGFnZShsNHQpOwo+IC0gICAgbWZuID0gbDRlX2dldF9wZm4obDRl KTsKPiAtICAgIHBmbiA9IG1mbl92YWxpZChfbWZuKG1mbikpICYmIG1hY2hpbmVfdG9fcGh5c19t YXBwaW5nX3ZhbGlkID8KPiAtICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1mbikgOiBJTlZB TElEX00yUF9FTlRSWTsKPiArICAgIG1mbiA9IGw0ZV9nZXRfbWZuKGw0ZSk7Cj4gKyAgICBwZm4g PSBtZm5fdmFsaWQobWZuKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxpZCA/Cj4gKyAg ICAgICAgICBnZXRfcGZuX2Zyb21fbWZuKG1mbikgOiBJTlZBTElEX00yUF9FTlRSWTsKPiAgICAg IHByaW50aygiIEw0WzB4JTAzbHhdID0gJSJQUklwdGUiICUwMTZseFxuIiwKPiAgICAgICAgICAg ICBsNF90YWJsZV9vZmZzZXQoYWRkciksIGw0ZV9nZXRfaW50cHRlKGw0ZSksIHBmbik7Cj4gICAg ICBpZiAoICEobDRlX2dldF9mbGFncyhsNGUpICYgX1BBR0VfUFJFU0VOVCkgfHwKPiAtICAgICAg ICAgIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiArICAgICAgICAgIW1mbl92YWxpZChtZm4pICkK PiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0gICAgbDN0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4o bWZuKSk7Cj4gKyAgICBsM3QgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKPiAgICAgIGwzZSA9IGwz dFtsM190YWJsZV9vZmZzZXQoYWRkcildOwo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDN0KTsK PiAtICAgIG1mbiA9IGwzZV9nZXRfcGZuKGwzZSk7Cj4gLSAgICBwZm4gPSBtZm5fdmFsaWQoX21m bihtZm4pKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxpZCA/Cj4gLSAgICAgICAgICBn ZXRfZ3Bmbl9mcm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4gKyAgICBtZm4gPSBs M2VfZ2V0X21mbihsM2UpOwo+ICsgICAgcGZuID0gbWZuX3ZhbGlkKG1mbikgJiYgbWFjaGluZV90 b19waHlzX21hcHBpbmdfdmFsaWQgPwo+ICsgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihtZm4p IDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4gICAgICBwcmludGsoIiBMM1sweCUwM2x4XSA9ICUiUFJJ cHRlIiAlMDE2bHglc1xuIiwKPiAgICAgICAgICAgICBsM190YWJsZV9vZmZzZXQoYWRkciksIGwz ZV9nZXRfaW50cHRlKGwzZSksIHBmbiwKPiAgICAgICAgICAgICAobDNlX2dldF9mbGFncyhsM2Up ICYgX1BBR0VfUFNFKSA/ICIgKFBTRSkiIDogIiIpOwo+ICAgICAgaWYgKCAhKGwzZV9nZXRfZmxh Z3MobDNlKSAmIF9QQUdFX1BSRVNFTlQpIHx8Cj4gICAgICAgICAgIChsM2VfZ2V0X2ZsYWdzKGwz ZSkgJiBfUEFHRV9QU0UpIHx8Cj4gLSAgICAgICAgICFtZm5fdmFsaWQoX21mbihtZm4pKSApCj4g KyAgICAgICAgICFtZm5fdmFsaWQobWZuKSApCj4gICAgICAgICAgcmV0dXJuOwo+ICAKPiAtICAg IGwydCA9IG1hcF9kb21haW5fcGFnZShfbWZuKG1mbikpOwo+ICsgICAgbDJ0ID0gbWFwX2RvbWFp bl9wYWdlKG1mbik7Cj4gICAgICBsMmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKPiAg ICAgIHVubWFwX2RvbWFpbl9wYWdlKGwydCk7Cj4gLSAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUp Owo+IC0gICAgcGZuID0gbWZuX3ZhbGlkKF9tZm4obWZuKSkgJiYgbWFjaGluZV90b19waHlzX21h cHBpbmdfdmFsaWQgPwo+IC0gICAgICAgICAgZ2V0X2dwZm5fZnJvbV9tZm4obWZuKSA6IElOVkFM SURfTTJQX0VOVFJZOwo+ICsgICAgbWZuID0gbDJlX2dldF9tZm4obDJlKTsKPiArICAgIHBmbiA9 IG1mbl92YWxpZChtZm4pICYmIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiArICAg ICAgICAgIGdldF9wZm5fZnJvbV9tZm4obWZuKSA6IElOVkFMSURfTTJQX0VOVFJZOwo+ICAgICAg cHJpbnRrKCIgTDJbMHglMDNseF0gPSAlIlBSSXB0ZSIgJTAxNmx4JXNcbiIsCj4gICAgICAgICAg ICAgbDJfdGFibGVfb2Zmc2V0KGFkZHIpLCBsMmVfZ2V0X2ludHB0ZShsMmUpLCBwZm4sCj4gICAg ICAgICAgICAgKGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9QQUdFX1BTRSkgPyAiIChQU0UpIiA6ICIi KTsKPiAgICAgIGlmICggIShsMmVfZ2V0X2ZsYWdzKGwyZSkgJiBfUEFHRV9QUkVTRU5UKSB8fAo+ ICAgICAgICAgICAobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFNFKSB8fAo+IC0gICAgICAg ICAhbWZuX3ZhbGlkKF9tZm4obWZuKSkgKQo+ICsgICAgICAgICAhbWZuX3ZhbGlkKG1mbikgKQo+ ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAgICBsMXQgPSBtYXBfZG9tYWluX3BhZ2UoX21mbiht Zm4pKTsKPiArICAgIGwxdCA9IG1hcF9kb21haW5fcGFnZShtZm4pOwo+ICAgICAgbDFlID0gbDF0 W2wxX3RhYmxlX29mZnNldChhZGRyKV07Cj4gICAgICB1bm1hcF9kb21haW5fcGFnZShsMXQpOwo+ IC0gICAgbWZuID0gbDFlX2dldF9wZm4obDFlKTsKPiAtICAgIHBmbiA9IG1mbl92YWxpZChfbWZu KG1mbikpICYmIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiAtICAgICAgICAgIGdl dF9ncGZuX2Zyb21fbWZuKG1mbikgOiBJTlZBTElEX00yUF9FTlRSWTsKPiArICAgIG1mbiA9IGwx ZV9nZXRfbWZuKGwxZSk7Cj4gKyAgICBwZm4gPSBtZm5fdmFsaWQobWZuKSAmJiBtYWNoaW5lX3Rv X3BoeXNfbWFwcGluZ192YWxpZCA/Cj4gKyAgICAgICAgICBnZXRfcGZuX2Zyb21fbWZuKG1mbikg OiBJTlZBTElEX00yUF9FTlRSWTsKPiAgICAgIHByaW50aygiIEwxWzB4JTAzbHhdID0gJSJQUklw dGUiICUwMTZseFxuIiwKPiAgICAgICAgICAgICBsMV90YWJsZV9vZmZzZXQoYWRkciksIGwxZV9n ZXRfaW50cHRlKGwxZSksIHBmbik7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9tZW1v cnkuYyBiL3hlbi9jb21tb24vbWVtb3J5LmMKPiBpbmRleCBkNmE1ODBkYTMxLi5lZWNjOTY3MWZm IDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24vbWVtb3J5LmMKPiArKysgYi94ZW4vY29tbW9uL21l bW9yeS5jCj4gQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZV9waHlzbWFw KHN0cnVjdCBtZW1vcF9hcmdzICphKQo+ICAgICAgICAgICAgICBpZiAoICFwYWdpbmdfbW9kZV90 cmFuc2xhdGUoZCkgKQo+ICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICBmb3IgKCBq ID0gMDsgaiA8ICgxVSA8PCBhLT5leHRlbnRfb3JkZXIpOyBqKysgKQo+IC0gICAgICAgICAgICAg ICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbl9hZGQobWZuLCBqKSksIGdwZm4gKyBq KTsKPiArICAgICAgICAgICAgICAgICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBq KSwgZ3BmbiArIGopOwo+ICAKPiAgICAgICAgICAgICAgICAgIC8qIEluZm9ybSB0aGUgZG9tYWlu IG9mIHRoZSBuZXcgcGFnZSdzIG1hY2hpbmUgYWRkcmVzcy4gKi8gCj4gICAgICAgICAgICAgICAg ICBpZiAoIHVubGlrZWx5KF9fY29weV9tZm5fdG9fZ3Vlc3Rfb2Zmc2V0KGEtPmV4dGVudF9saXN0 LCBpLAo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYyBiL3hlbi9jb21tb24v cGFnZV9hbGxvYy5jCj4gaW5kZXggNjA2MWNjZTI0Zi4uYTEwMGUwM2UyZSAxMDA2NDQKPiAtLS0g YS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+ICsrKyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5j Cj4gQEAgLTE0MjQsNyArMTQyNCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKPiAg Cj4gICAgICAgICAgLyogVGhpcyBwYWdlIGlzIG5vdCBhIGd1ZXN0IGZyYW1lIGFueSBtb3JlLiAq Lwo+ICAgICAgICAgIHBhZ2Vfc2V0X293bmVyKCZwZ1tpXSwgTlVMTCk7IC8qIHNldF9ncGZuX2Zy b21fbWZuIHNub29wcyBwZyBvd25lciAqLwo+IC0gICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1m bl94KG1mbikgKyBpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgc2V0X3Bmbl9mcm9t X21mbihtZm5fYWRkKG1mbiwgKyBpKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAKPiAgICAgICAg ICBpZiAoIG5lZWRfc2NydWIgKQo+ICAgICAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9tbS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCj4gaW5kZXggYTljYjk4 YTZjNy4uM2MwM2JlM2JjYSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgK PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKPiBAQCAtMzIyLDcgKzMyMiw3IEBAIHN0 cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ3ZhKHN0cnVjdCB2Y3B1ICp2LCB2YWRkcl90 IHZhLAo+ICAjZGVmaW5lIFNIQVJFRF9NMlAoX2UpICAgICAgICAgICAoKF9lKSA9PSBTSEFSRURf TTJQX0VOVFJZKQo+ICAKPiAgLyogV2UgZG9uJ3QgaGF2ZSBhIE0yUCBvbiBBcm0gKi8KPiAtI2Rl ZmluZSBzZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBmbikgZG8geyAodm9pZCkgKG1mbiksICh2b2lk KShwZm4pOyB9IHdoaWxlICgwKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3Bmbl9mcm9tX21m bihtZm5fdCBtZm4sIHVuc2lnbmVkIGxvbmcgcGZuKSB7fQo+ICAKPiAgLyogQXJjaC1zcGVjaWZp YyBwb3J0aW9uIG9mIG1lbW9yeV9vcCBoeXBlcmNhbGwuICovCj4gIGxvbmcgYXJjaF9tZW1vcnlf b3AoaW50IG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZyk7Cj4gZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaCBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvZ3JhbnRfdGFibGUuaAo+IGluZGV4IDY2MTIyOGRkMzkuLmQ3MzFiOWU0OWYgMTAwNjQ0Cj4g LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCj4gKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCj4gQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIGlubGlu ZSBpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcodWludDY0X3QgYWRkciwgbWZuX3QgZnJh bWUsCj4gICNkZWZpbmUgZ250dGFiX2dldF9mcmFtZV9nZm4oZ3QsIHN0LCBpZHgpICh7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICBtZm5fdCBtZm5fID0gKHN0KSA/IGdudHRh Yl9zdGF0dXNfbWZuKGd0LCBpZHgpICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAg ICAgICAgICAgICAgICA6IGdudHRhYl9zaGFyZWRfbWZuKGd0LCBpZHgpOyAgICAgICAgICAgICAg ICAgICAgICBcCj4gLSAgICB1bnNpZ25lZCBsb25nIGdwZm5fID0gZ2V0X2dwZm5fZnJvbV9tZm4o bWZuX3gobWZuXykpOyAgICAgICAgICAgICAgICBcCj4gKyAgICB1bnNpZ25lZCBsb25nIGdwZm5f ID0gZ2V0X3Bmbl9mcm9tX21mbihtZm5fKTsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAg ICBWQUxJRF9NMlAoZ3Bmbl8pID8gX2dmbihncGZuXykgOiBJTlZBTElEX0dGTjsgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gIH0pCj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKPiBpbmRleCA0NzIxNzI1YzYwLi5i Y2U2MDYxOWMzIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+ICsrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+IEBAIC00OTIsMjIgKzQ5MiwyNiBAQCBleHRlcm4g c3RydWN0IGRvbWFpbiAqZG9tX3hlbiwgKmRvbV9pbywgKmRvbV9jb3c7CS8qIGZvciB2bWNvcmVp bmZvICovCj4gICAqLwo+ICBleHRlcm4gYm9vbCBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxp ZDsKPiAgCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ3Bmbl9mcm9tX21mbih1bnNpZ25lZCBs b25nIG1mbiwgdW5zaWduZWQgbG9uZyBwZm4pCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGZu X2Zyb21fbWZuKG1mbl90IG1mbiwgdW5zaWduZWQgbG9uZyBwZm4pCj4gIHsKPiAtICAgIHN0cnVj dCBkb21haW4gKmQgPSBwYWdlX2dldF9vd25lcihtZm5fdG9fcGFnZShfbWZuKG1mbikpKTsKPiAr ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbWZuXyA9IG1mbl94KG1mbik7Cj4gKyAgICBzdHJ1Y3Qg ZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3BhZ2UobWZuKSk7Cj4gICAgICB1bnNp Z25lZCBsb25nIGVudHJ5ID0gKGQgJiYgKGQgPT0gZG9tX2NvdykpID8gU0hBUkVEX00yUF9FTlRS WSA6IHBmbjsKPiAgCj4gICAgICBpZiAoIW1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkKQo+ ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAgICBpZiAoIG1mbiA+PSAoUkRXUl9DT01QQVRfTVBU X1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8gNCApCj4gLSAgICAgICAg Y29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRyeTsKPiAtICAgIG1hY2hp bmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRyeTsKPiArICAgIGlmICggbWZuXyA+PSAoUkRX Ul9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8gNCAp Cj4gKyAgICAgICAgY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl9dID0gZW50cnk7 Cj4gKyAgICBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ1ttZm5fXSA9IGVudHJ5Owo+ICB9Cj4gIAo+ ICBleHRlcm4gc3RydWN0IHJhbmdlc2V0ICptbWlvX3JvX3JhbmdlczsKPiAgCj4gLSNkZWZpbmUg Z2V0X2dwZm5fZnJvbV9tZm4obWZuKSAgICAgIChtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ1sobWZu KV0pCj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfcGZuX2Zyb21fbWZuKG1mbl90 IG1mbikKPiArewo+ICsgICAgcmV0dXJuIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl94KG1m bildOwo+ICt9Cj4gIAo+ICAjZGVmaW5lIGNvbXBhdF9wZm5fdG9fY3IzKHBmbikgKCgodW5zaWdu ZWQpKHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCkocGZuKSA+PiAyMCkpCj4gICNkZWZpbmUgY29t cGF0X2NyM190b19wZm4oY3IzKSAoKCh1bnNpZ25lZCkoY3IzKSA+PiAxMikgfCAoKHVuc2lnbmVk KShjcjMpIDw8IDIwKSkKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiBpbmRleCAwMTU3NTY4YmU5Li4wN2I3ZWM2ZGIw IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L3AybS5oCj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgaW5saW5lIHN0 cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAo+ICBzdGF0aWMgaW5saW5lIGdmbl90 IG1mbl90b19nZm4oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgbWZuKQo+ICB7Cj4gICAg ICBpZiAoIHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSApCj4gLSAgICAgICAgcmV0dXJuIF9nZm4o Z2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSkpOwo+ICsgICAgICAgIHJldHVybiBfZ2ZuKGdl dF9wZm5fZnJvbV9tZm4obWZuKSk7Cj4gICAgICBlbHNlCj4gICAgICAgICAgcmV0dXJuIF9nZm4o bWZuX3gobWZuKSk7Cj4gIH0KPiAtLSAKPiAyLjExLjAKPiAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA78EC04AB1 for ; Thu, 9 May 2019 18:19:39 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 870472177B for ; Thu, 9 May 2019 18:19:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="kVWviw87" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 870472177B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOndZ-0007UU-K5; Thu, 09 May 2019 18:19:21 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOndY-0007UP-Hp for xen-devel@lists.xenproject.org; Thu, 09 May 2019 18:19:20 +0000 X-Inumbo-ID: f550a088-7286-11e9-8980-bc764e045a96 Received: from mail.kernel.org (unknown [198.145.29.99]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id f550a088-7286-11e9-8980-bc764e045a96; Thu, 09 May 2019 18:19:18 +0000 (UTC) Received: from localhost (c-67-164-102-47.hsd1.ca.comcast.net [67.164.102.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 19AB12177E; Thu, 9 May 2019 18:19:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557425957; bh=9rRwxseHqyLmfvMqkJ4tQvNEO2BcAlxV9xR8+tVnIpc=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=kVWviw87f99HTwpxLCURmkwDCCHQxsq/1zKFbtPWMnlf5YNWq29s9M7pFW5D++t+/ 39wLpCkkZ6wNrHdRji7ZFEceOYGO4SgrIw06USUdRdswdFRCJ3DTU/jFjW2LW95488 Kn4RUp/CeQ7a50LNsRR2SMfwiUH//igw+W2HDpSs= Date: Thu, 9 May 2019 11:19:16 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-T480s To: Julien Grall In-Reply-To: <20190507151458.29350-14-julien.grall@arm.com> Message-ID: References: <20190507151458.29350-1-julien.grall@arm.com> <20190507151458.29350-14-julien.grall@arm.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Subject: Re: [Xen-devel] [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() to use typesafe MFN X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Tamas K Lengyel , Jan Beulich , xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190509181916.WAdDgu1O0T82aRuYzxefzgqpMKlmbLLG1Qj2HLvVAYQ@z> T24gVHVlLCA3IE1heSAyMDE5LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gVGhlIGZpcnN0IHBhcmFt ZXRlciBvZiB7cyxnfWV0X2dwZm5fZnJvbV9tZm4oKSBpcyBhbiBNRk4sIHNvIGl0IGNhbiBiZQo+ IHN3aXRjaGVkIHRvIHVzZSB0aGUgdHlwZXNhZmUuCj4gCj4gQXQgdGhlIHNhbWUgdGltZSwgcmVw bGFjZSBncGZuIHdpdGggcGZuIGluIHRoZSBoZWxwZXJzIGFzIHRoZXkgYWxsIGRlYWwKPiB3aXRo IFBGTiBhbmQgYWxzbyB0dXJuIHRoZSBtYWNyb3MgdG8gc3RhdGljIGlubGluZS4KPiAKPiBOb3Rl IHRoYXQgdGhlIHJldHVybiBvZiB0aGUgZ2V0dGVyIGFuZCB0aGUgMm5kIHBhcmFtZXRlciBvZiB0 aGUgc2V0dGVyCj4gaGF2ZSBub3QgYmVlbiBjb252ZXJ0ZWQgdG8gdXNlIHR5cGVzYWZlIFBGTiBi ZWNhdXNlIGl0IHdhcyByZXF1aXJpbmcKPiBtb3JlIGNoYW5nZXMgdGhhbiBleHBlY3RlZC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKSSBv bmx5IHNraW1tZWQgdGhyb3VnaCB0aGUgeDg2IGJpdHMuCgpBY2tlZC1ieTogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgoKCj4gLS0tCj4gICAgIENoYW5nZXMgaW4g djI6Cj4gICAgICAgICAtIFBhdGNoIGFkZGVkCj4gLS0tCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNo ZWNrL21jYWN0aW9uLmMgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAg ICAgIHwgMTQgKysrKy0tLS0KPiAgeGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMgICAgICB8 IDE5ICsrKysrLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgICAgICAgICAgfCAg NCArLS0KPiAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICAgICB8IDM3ICsrKysrKysr KystLS0tLS0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgICAgICAgICAgIHwgNjYg KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L21t L3BhZ2luZy5jICAgICAgICAgICB8ICA0ICstLQo+ICB4ZW4vYXJjaC94ODYvcHYvZG9tMF9idWls ZC5jICAgICAgIHwgIDYgKystLQo+ICB4ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMgICAgICAg IHwgNDEgKysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAg ICAgICAgICAgICB8ICAyICstCj4gIHhlbi9jb21tb24vcGFnZV9hbGxvYy5jICAgICAgICAgICAg fCAgMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggICAgICAgICAgIHwgIDIgKy0KPiAg eGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oICB8ICAyICstCj4gIHhlbi9pbmNsdWRl L2FzbS14ODYvbW0uaCAgICAgICAgICAgfCAxNiArKysrKy0tLS0KPiAgeGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaCAgICAgICAgICB8ICAyICstCj4gIDE1IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNl cnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2FjdGlv bi5jCj4gaW5kZXggNjkzMzJmYjg0ZC4uNWU3OGZiNzcwMyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvY3B1L21jaGVjay9tY2FjdGlvbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hl Y2svbWNhY3Rpb24uYwo+IEBAIC04OSw3ICs4OSw3IEBAIG1jX21lbWVycl9kaGFuZGxlcihzdHJ1 Y3QgbWNhX2JpbmZvICpiaW5mbywKPiAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAg ZCA9IGdldF9kb21haW5fYnlfaWQoYmFuay0+bWNfZG9taWQpOwo+ICAgICAgICAgICAgICAgICAg QVNTRVJUKGQpOwo+IC0gICAgICAgICAgICAgICAgZ2ZuID0gZ2V0X2dwZm5fZnJvbV9tZm4oKGJh bmstPm1jX2FkZHIpID4+IFBBR0VfU0hJRlQpOwo+ICsgICAgICAgICAgICAgICAgZ2ZuID0gZ2V0 X3Bmbl9mcm9tX21mbihtYWRkcl90b19tZm4oYmFuay0+bWNfYWRkcikpOwo+ICAKPiAgICAgICAg ICAgICAgICAgIGlmICggdW5tbWFwX2Jyb2tlbl9wYWdlKGQsIG1mbiwgZ2ZuKSApCj4gICAgICAg ICAgICAgICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gv eDg2L21tLmMKPiBpbmRleCA3ZDg4N2YyNjk5Li42MGM0NzU4MmJlIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9tbS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tLmMKPiBAQCAtNTAyLDcgKzUw Miw3IEBAIHZvaWQgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9ndWVzdChzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlLCBzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgaWYgKCBwYWdlX2dldF9vd25lcihwYWdlKSA9 PSBkICkKPiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0gICAgc2V0X2dwZm5fZnJvbV9tZm4obWZu X3gocGFnZV90b19tZm4ocGFnZSkpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICBzZXRfcGZu X2Zyb21fbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gIAo+ICAg ICAgc3Bpbl9sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwo+ICAKPiBAQCAtMTA3Nyw3ICsxMDc3 LDcgQEAgZ2V0X3BhZ2VfZnJvbV9sMWUoCj4gIAo+ICAgICAgICAgICAgICBnZHByaW50ayhYRU5M T0dfV0FSTklORywgIkVycm9yIHVwZGF0aW5nIG1hcHBpbmdzIGZvciBtZm4gJSIgUFJJX21mbgo+ ICAgICAgICAgICAgICAgICAgICAgICAiIChwZm4gJSIgUFJJX3BmbiAiLCBmcm9tIEwxIGVudHJ5 ICUiIFBSSXB0ZSAiKSBmb3IgZCVkXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICBtZm4sIGdl dF9ncGZuX2Zyb21fbWZuKG1mbiksCj4gKyAgICAgICAgICAgICAgICAgICAgIG1mbiwgZ2V0X3Bm bl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAgICAgICAgICAgICAgICAgICAgICBsMWVfZ2V0X2lu dHB0ZShsMWUpLCBsMWVfb3duZXItPmRvbWFpbl9pZCk7Cj4gICAgICAgICAgICAgIHJldHVybiBl cnI7Cj4gICAgICAgICAgfQo+IEBAIC0xMDg4LDcgKzEwODgsNyBAQCBnZXRfcGFnZV9mcm9tX2wx ZSgKPiAgIGNvdWxkX25vdF9waW46Cj4gICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkVy cm9yIGdldHRpbmcgbWZuICUiIFBSSV9tZm4gIiAocGZuICUiIFBSSV9wZm4KPiAgICAgICAgICAg ICAgICIpIGZyb20gTDEgZW50cnkgJSIgUFJJcHRlICIgZm9yIGwxZV9vd25lciBkJWQsIHBnX293 bmVyIGQlZFxuIiwKPiAtICAgICAgICAgICAgIG1mbiwgZ2V0X2dwZm5fZnJvbV9tZm4obWZuKSwK PiArICAgICAgICAgICAgIG1mbiwgZ2V0X3Bmbl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAgICAg ICAgICAgICAgbDFlX2dldF9pbnRwdGUobDFlKSwgbDFlX293bmVyLT5kb21haW5faWQsIHBnX293 bmVyLT5kb21haW5faWQpOwo+ICAgICAgaWYgKCByZWFsX3BnX293bmVyICE9IE5VTEwgKQo+ICAg ICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+IEBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMgaW50 IGFsbG9jX3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5 cGUsCj4gICAgICAgICAgICAgICAgICAgIiAocGZuICUiIFBSSV9wZm4gIikgZm9yIHR5cGUgJSIg UFJ0eXBlX2luZm8KPiAgICAgICAgICAgICAgICAgICAiOiBjYWY9JTA4bHggdGFmPSUiIFBSdHlw ZV9pbmZvICJcbiIsCj4gICAgICAgICAgICAgICAgICAgbWZuX3gocGFnZV90b19tZm4ocGFnZSkp LAo+IC0gICAgICAgICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1mbl94KHBhZ2VfdG9fbWZu KHBhZ2UpKSksCj4gKyAgICAgICAgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3RvX21m bihwYWdlKSksCj4gICAgICAgICAgICAgICAgICAgdHlwZSwgcGFnZS0+Y291bnRfaW5mbywgcGFn ZS0+dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgICAgIGlmICggcGFnZSAhPSBjdXJyZW50LT5h cmNoLm9sZF9ndWVzdF90YWJsZSApCj4gICAgICAgICAgICAgIHBhZ2UtPnUuaW51c2UudHlwZV9p bmZvID0gMDsKPiBAQCAtMjg5MCw3ICsyODkwLDcgQEAgc3RhdGljIGludCBfZ2V0X3BhZ2VfdHlw ZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUsCj4gICAgICAgICAg ICAgICAgICAgICAgICJCYWQgdHlwZSAoc2F3ICUiIFBSdHlwZV9pbmZvICIgIT0gZXhwICUiIFBS dHlwZV9pbmZvICIpICIKPiAgICAgICAgICAgICAgICAgICAgICAgImZvciBtZm4gJSIgUFJJX21m biAiIChwZm4gJSIgUFJJX3BmbiAiKVxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgeCwgdHlw ZSwgbWZuX3gocGFnZV90b19tZm4ocGFnZSkpLAo+IC0gICAgICAgICAgICAgICAgICAgICBnZXRf Z3Bmbl9mcm9tX21mbihtZm5feChwYWdlX3RvX21mbihwYWdlKSkpKTsKPiArICAgICAgICAgICAg ICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3RvX21mbihwYWdlKSkpOwo+ICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZSBpZiAoIHVu bGlrZWx5KCEoeCAmIFBHVF92YWxpZGF0ZWQpKSApCj4gQEAgLTQwMDIsNyArNDAwMiw3IEBAIGxv bmcgZG9fbW11X3VwZGF0ZSgKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAg ICB9Cj4gIAo+IC0gICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pLCBncGZu KTsKPiArICAgICAgICAgICAgc2V0X3Bmbl9mcm9tX21mbihtZm4sIGdwZm4pOwo+ICAgICAgICAg ICAgICBwYWdpbmdfbWFya19wZm5fZGlydHkocGdfb3duZXIsIF9wZm4oZ3BmbikpOwo+ICAKPiAg ICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gQEAgLTQ1MjksNyArNDUyOSw3IEBAIGludCB4 ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ICAgICAgICAgIGdvdG8gcHV0X2JvdGg7Cj4gIAo+ ICAgICAgLyogVW5tYXAgZnJvbSBvbGQgbG9jYXRpb24sIGlmIGFueS4gKi8KPiAtICAgIG9sZF9n cGZuID0gZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSk7Cj4gKyAgICBvbGRfZ3BmbiA9IGdl dF9wZm5fZnJvbV9tZm4obWZuKTsKPiAgICAgIEFTU0VSVCghU0hBUkVEX00yUChvbGRfZ3Bmbikp Owo+ICAgICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZuICYmIG9sZF9ncGZuICE9IGdm biApCj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5j IGIveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBpbmRleCA1YWM5ZDhmNTRjLi5hZjkw M2MxMWU5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gKysr IGIveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBAQCAtMzkxLDExICszOTEsMTIgQEAg c3RhdGljIGlubGluZSB2b2lkIG1lbV9zaGFyaW5nX2dmbl9kZXN0cm95KHN0cnVjdCBwYWdlX2lu Zm8gKnBhZ2UsCj4gICAgICB4ZnJlZShnZm5faW5mbyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1 Y3QgcGFnZV9pbmZvKiBtZW1fc2hhcmluZ19sb29rdXAodW5zaWduZWQgbG9uZyBtZm4pCj4gK3N0 YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvKiBtZW1fc2hhcmluZ19sb29rdXAobWZuX3QgbWZuKQo+ICB7 Cj4gLSAgICBpZiAoIG1mbl92YWxpZChfbWZuKG1mbikpICkKPiArICAgIGlmICggbWZuX3ZhbGlk KG1mbikgKQo+ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8qIHBhZ2UgPSBtZm5f dG9fcGFnZShfbWZuKG1mbikpOwo+ICsgICAgICAgIHN0cnVjdCBwYWdlX2luZm8qIHBhZ2UgPSBt Zm5fdG9fcGFnZShtZm4pOwo+ICsKPiAgICAgICAgICBpZiAoIHBhZ2VfZ2V0X293bmVyKHBhZ2Up ID09IGRvbV9jb3cgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgLyogQ291bnQgaGFzIHRv IGJlIGF0IGxlYXN0IHR3bywgYmVjYXVzZSB3ZSdyZSBjYWxsZWQKPiBAQCAtNDA0LDcgKzQwNSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvKiBtZW1fc2hhcmluZ19sb29rdXAodW5zaWduZWQg bG9uZyBtZm4pCj4gICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdCA9IHJlYWRfYXRvbWljKCZw YWdlLT51LmludXNlLnR5cGVfaW5mbyk7Cj4gICAgICAgICAgICAgIEFTU0VSVCgodCAmIFBHVF90 eXBlX21hc2spID09IFBHVF9zaGFyZWRfcGFnZSk7Cj4gICAgICAgICAgICAgIEFTU0VSVCgodCAm IFBHVF9jb3VudF9tYXNrKSA+PSAyKTsKPiAtICAgICAgICAgICAgQVNTRVJUKFNIQVJFRF9NMlAo Z2V0X2dwZm5fZnJvbV9tZm4obWZuKSkpOwo+ICsgICAgICAgICAgICBBU1NFUlQoU0hBUkVEX00y UChnZXRfcGZuX2Zyb21fbWZuKG1mbikpKTsKPiAgICAgICAgICAgICAgcmV0dXJuIHBhZ2U7Cj4g ICAgICAgICAgfQo+ICAgICAgfQo+IEBAIC00NjQsMTAgKzQ2NSwxMCBAQCBzdGF0aWMgaW50IGF1 ZGl0KHZvaWQpCj4gICAgICAgICAgfQo+ICAKPiAgICAgICAgICAvKiBDaGVjayB0aGUgbTJwIGVu dHJ5ICovCj4gLSAgICAgICAgaWYgKCAhU0hBUkVEX00yUChnZXRfZ3Bmbl9mcm9tX21mbihtZm5f eChtZm4pKSkgKQo+ICsgICAgICAgIGlmICggIVNIQVJFRF9NMlAoZ2V0X3Bmbl9mcm9tX21mbiht Zm4pKSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgIE1FTV9TSEFSSU5HX0RFQlVHKCJtZm4g JWx4IHNoYXJlZCwgYnV0IHdyb25nIG0ycCBlbnRyeSAoJWx4KSFcbiIsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSwgZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZu KSkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KG1mbiksIGdldF9wZm5f ZnJvbV9tZm4obWZuKSk7Cj4gICAgICAgICAgICAgZXJyb3JzKys7Cj4gICAgICAgICAgfQo+ICAK PiBAQCAtNjkzLDcgKzY5NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5mbyAqX19n cmFiX3NoYXJlZF9wYWdlKG1mbl90IG1mbikKPiAgICAgIGlmICggIW1lbV9zaGFyaW5nX3BhZ2Vf bG9jayhwZykgKQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+ICAKPiAtICAgIGlmICggbWVtX3No YXJpbmdfbG9va3VwKG1mbl94KG1mbikpID09IE5VTEwgKQo+ICsgICAgaWYgKCBtZW1fc2hhcmlu Z19sb29rdXAobWZuKSA9PSBOVUxMICkKPiAgICAgIHsKPiAgICAgICAgICBtZW1fc2hhcmluZ19w YWdlX3VubG9jayhwZyk7Cj4gICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gQEAgLTg3Nyw3ICs4Nzgs NyBAQCBzdGF0aWMgaW50IG5vbWluYXRlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2Zu LAo+ICAgICAgYXRvbWljX2luYygmbnJfc2hhcmVkX21mbnMpOwo+ICAKPiAgICAgIC8qIFVwZGF0 ZSBtMnAgZW50cnkgdG8gU0hBUkVEX00yUF9FTlRSWSAqLwo+IC0gICAgc2V0X2dwZm5fZnJvbV9t Zm4obWZuX3gobWZuKSwgU0hBUkVEX00yUF9FTlRSWSk7Cj4gKyAgICBzZXRfcGZuX2Zyb21fbWZu KG1mbiwgU0hBUkVEX00yUF9FTlRSWSk7Cj4gIAo+ICAgICAgKnBoYW5kbGUgPSBwYWdlLT5zaGFy aW5nLT5oYW5kbGU7Cj4gICAgICBhdWRpdF9hZGRfbGlzdChwYWdlKTsKPiBAQCAtMTIyMiw3ICsx MjIzLDcgQEAgcHJpdmF0ZV9wYWdlX2ZvdW5kOgo+ICAgICAgfQo+ICAKPiAgICAgIC8qIFVwZGF0 ZSBtMnAgZW50cnkgKi8KPiAtICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KHBhZ2VfdG9fbWZu KHBhZ2UpKSwgZ2ZuKTsKPiArICAgIHNldF9wZm5fZnJvbV9tZm4ocGFnZV90b19tZm4ocGFnZSks IGdmbik7Cj4gIAo+ICAgICAgLyogTm93IHRoYXQgdGhlIGdmbjwtPm1mbiBtYXAgaXMgcHJvcGVy bHkgZXN0YWJsaXNoZWQsCj4gICAgICAgKiBtYXJraW5nIGRpcnR5IGlzIGZlYXNpYmxlICovCj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgYi94ZW4vYXJjaC94ODYvbW0v cDJtLXBvZC5jCj4gaW5kZXggNDMxMzg2MzA2Ni4uOWUwMDE3MzhmNCAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2Qu Ywo+IEBAIC02NTIsNyArNjUyLDcgQEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihzdHJ1 Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHVuc2lnbmVkIGludCBvcmRlcikKPiAgICAgICAgICAg ICAgfQo+ICAgICAgICAgICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKPiAgICAgICAgICAg ICAgZm9yICggaiA9IDA7IGogPCBuOyArK2ogKQo+IC0gICAgICAgICAgICAgICAgc2V0X2dwZm5f ZnJvbV9tZm4obWZuX3gobWZuKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICsgICAgICAgICAgICAg ICAgc2V0X3Bmbl9mcm9tX21mbihtZm4sIElOVkFMSURfTTJQX0VOVFJZKTsKPiAgICAgICAgICAg ICAgcDJtX3BvZF9jYWNoZV9hZGQocDJtLCBwYWdlLCBjdXJfb3JkZXIpOwo+ICAKPiAgICAgICAg ICAgICAgc3RlYWxfZm9yX2NhY2hlID0gICggcDJtLT5wb2QuZW50cnlfY291bnQgPiBwMm0tPnBv ZC5jb3VudCApOwo+IEBAIC0xMjAzLDcgKzEyMDMsNyBAQCBwMm1fcG9kX2RlbWFuZF9wb3B1bGF0 ZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBnZm5fdCBnZm4sCj4gIAo+ICAgICAgZm9yKCBpID0g MDsgaSA8ICgxVUwgPDwgb3JkZXIpOyBpKysgKQo+ICAgICAgewo+IC0gICAgICAgIHNldF9ncGZu X2Zyb21fbWZuKG1mbl94KG1mbikgKyBpLCBnZm5feChnZm5fYWxpZ25lZCkgKyBpKTsKPiArICAg ICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBpKSwgZ2ZuX3goZ2ZuX2FsaWduZWQp ICsgaSk7Cj4gICAgICAgICAgcGFnaW5nX21hcmtfcGZuX2RpcnR5KGQsIF9wZm4oZ2ZuX3goZ2Zu X2FsaWduZWQpICsgaSkpOwo+ICAgICAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCj4gaW5kZXggY2FmYzlmMjk5 Yi4uMGU4NTgxOWY5YiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiAr KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiBAQCAtOTkxLDcgKzk5MSw4IEBAIHN0YXRp YyBpbnQgcDJtX3B0X2NoYW5nZV9lbnRyeV90eXBlX3JhbmdlKHN0cnVjdCBwMm1fZG9tYWluICpw Mm0sCj4gIGxvbmcgcDJtX3B0X2F1ZGl0X3AybShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQo+ICB7 Cj4gICAgICB1bnNpZ25lZCBsb25nIGVudHJ5X2NvdW50ID0gMCwgcG1iYWQgPSAwOwo+IC0gICAg dW5zaWduZWQgbG9uZyBtZm4sIGdmbiwgbTJwZm47Cj4gKyAgICB1bnNpZ25lZCBsb25nIGdmbiwg bTJwZm47Cj4gKyAgICBtZm5fdCBtZm47Cj4gIAo+ICAgICAgQVNTRVJUKHAybV9sb2NrZWRfYnlf bWUocDJtKSk7Cj4gICAgICBBU1NFUlQocG9kX2xvY2tlZF9ieV9tZShwMm0pKTsKPiBAQCAtMTAz MCwxOSArMTAzMSwxOSBAQCBsb25nIHAybV9wdF9hdWRpdF9wMm0oc3RydWN0IHAybV9kb21haW4g KnAybSkKPiAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGZvciAxR0Igc3VwZXIgcGFnZSAqLwo+ ICAgICAgICAgICAgICAgICAgaWYgKCBsM2VfZ2V0X2ZsYWdzKGwzZVtpM10pICYgX1BBR0VfUFNF ICkKPiAgICAgICAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICBtZm4gPSBsM2Vf Z2V0X3BmbihsM2VbaTNdKTsKPiAtICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlk KF9tZm4obWZuKSkpOwo+ICsgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwzZV9nZXRfbWZuKGwz ZVtpM10pOwo+ICsgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSk7Cj4g ICAgICAgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSB0byBjb3ZlciA1MTJ4NTEyIDRLIHBhZ2Vz ICovCj4gICAgICAgICAgICAgICAgICAgICAgZm9yICggaTIgPSAwOyAKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpMiA8IChMMl9QQUdFVEFCTEVfRU5UUklFUyAqIEwxX1BBR0VUQUJMRV9F TlRSSUVTKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMisrKQo+ICAgICAgICAgICAg ICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4gPSBnZXRfZ3Bmbl9m cm9tX21mbihtZm4raTIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBtMnBmbiA9IGdldF9w Zm5fZnJvbV9tZm4obWZuX2FkZChtZm4sIGkyKSk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg IGlmICggbTJwZm4gIT0gKGdmbiArIGkyKSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHsK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtYmFkKys7Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUjbHgi Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gZ2ZuICUjbHhc biIsIGdmbitpMiwgbWZuK2kyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX1BS SU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4iIGdmbiAlI2x4XG4iLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4gKyBpMiwgbWZuX3go bWZuX2FkZChtZm4sIGkyKSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG0ycGZuKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRygpOwo+ICAgICAg ICAgICAgICAgICAgICAgICAgICB9Cj4gQEAgLTEwNjcsMTcgKzEwNjgsMTcgQEAgbG9uZyBwMm1f cHRfYXVkaXRfcDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gICAgICAgICAgICAgICAgICAg ICAgLyogY2hlY2sgZm9yIHN1cGVyIHBhZ2UgKi8KPiAgICAgICAgICAgICAgICAgICAgICBpZiAo IGwyZV9nZXRfZmxhZ3MobDJlW2kyXSkgJiBfUEFHRV9QU0UgKQo+ICAgICAgICAgICAgICAgICAg ICAgIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgbWZuID0gbDJlX2dldF9wZm4obDJlW2ky XSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtZm5fdmFsaWQoX21mbihtZm4p KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwyZV9nZXRfbWZuKGwyZVtpMl0p Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpMSA9IDA7IGkxIDwgTDFfUEFHRVRBQkxFX0VO VFJJRVM7IGkxKyspCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG0ycGZuID0gZ2V0X2dwZm5fZnJvbV9tZm4obWZuK2kxKTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG0ycGZuID0gZ2V0X3Bmbl9mcm9tX21mbihtZm5fYWRk KG1mbiwgaTEpKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFsbG93IHNoYXJl ZCBNMlBzICovCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChtMnBmbiAhPSAo Z2ZuICsgaTEpKSAmJiAhU0hBUkVEX00yUChtMnBmbikgKQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtYmFkKys7Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX1BSSU5USygibWlzbWF0Y2g6IGdm biAlI2x4IC0+IG1mbiAlI2x4Igo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuK2kxLCBtZm4raTEsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUDJNX1BSSU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1m biAlIlBSSV9tZm4iIC0+IGdmbiAlI2x4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2ZuICsgaTEsIG1mbl94KG1mbl9hZGQobWZuLCBpMSkpLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4pOwo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRygpOwo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQo+IEBAIC0xMDk5LDE5ICsxMTAwLDE5IEBAIGxvbmcgcDJtX3B0X2F1ZGl0X3Ay bShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudHJ5X2NvdW50Kys7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICBtZm4gPSBsMWVfZ2V0X3BmbihsMWVbaTFdKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAg QVNTRVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAg bTJwZm4gPSBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBtZm4gPSBsMWVfZ2V0X21mbihsMWVbaTFdKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg QVNTRVJUKG1mbl92YWxpZChtZm4pKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4g PSBnZXRfcGZuX2Zyb21fbWZuKG1mbik7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg bTJwZm4gIT0gZ2ZuICYmCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBw Mm1fbW1pb19kaXJlY3QgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcDJtX2lz X2dyYW50KHR5cGUpICYmCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXAybV9pc19z aGFyZWQodHlwZSkgKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwbWJhZCsrOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpbnRrKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUjbHgiCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuLCBtZm4sIG0ycGZuKTsK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9QUklOVEsoIm1pc21hdGNoOiBnZm4g JSNseCAtPiBtZm4gJSNseCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuLCBtZm4sIG0ycGZuKTsKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaW50aygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4i IC0+IGdmbiAlI2x4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm biwgbWZuX3gobWZuKSwgbTJwZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJN X1BSSU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4iIC0+IGdmbiAlI2x4 XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4sIG1mbl94 KG1mbiksIG0ycGZuKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRygpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICAgICAgICAgfQo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBp bmRleCAzYzk4ZjcyZGJiLi4wMDNlZDk3NTIxIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IEBAIC03NjksNyArNzY5LDcg QEAgdm9pZCBwMm1fZmluYWxfdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKPiAgCj4gIAo+ICBz dGF0aWMgaW50Cj4gLXAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKPiArcDJtX3JlbW92ZV9wYWdlKHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsIG1mbl90IG1mbiwKPiAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQo+ICB7Cj4gICAgICB1bnNp Z25lZCBsb25nIGk7Cj4gQEAgLTc4MywxNyArNzgzLDE3IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1m biwKPiAgICAgICAgICByZXR1cm4gMDsKPiAgCj4gICAgICBBU1NFUlQoZ2ZuX2xvY2tlZF9ieV9t ZShwMm0sIGdmbikpOwo+IC0gICAgUDJNX0RFQlVHKCJyZW1vdmluZyBnZm49JSNseCBtZm49JSNs eFxuIiwgZ2ZuX2wsIG1mbik7Cj4gKyAgICBQMk1fREVCVUcoInJlbW92aW5nIGdmbj0lI2x4IG1m bj0lIlBSSV9tZm4iXG4iLCBnZm5fbCwgbWZuX3gobWZuKSk7Cj4gIAo+IC0gICAgaWYgKCBtZm5f dmFsaWQoX21mbihtZm4pKSApCj4gKyAgICBpZiAoIG1mbl92YWxpZChtZm4pICkKPiAgICAgIHsK PiAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICBtZm5fcmV0dXJuID0gcDJtLT5nZXRfZW50cnkocDJt LCBnZm5fYWRkKGdmbiwgaSksICZ0LCAmYSwgMCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwo+ICAgICAgICAgICAgICBpZiAoICFwMm1faXNf Z3JhbnQodCkgJiYgIXAybV9pc19zaGFyZWQodCkgJiYgIXAybV9pc19mb3JlaWduKHQpICkKPiAt ICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbitpLCBJTlZBTElEX00yUF9FTlRS WSk7Cj4gLSAgICAgICAgICAgIEFTU0VSVCggIXAybV9pc192YWxpZCh0KSB8fCBtZm4gKyBpID09 IG1mbl94KG1mbl9yZXR1cm4pICk7Cj4gKyAgICAgICAgICAgICAgICBzZXRfcGZuX2Zyb21fbWZu KG1mbl9hZGQobWZuLCBpKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICsgICAgICAgICAgICBBU1NF UlQoICFwMm1faXNfdmFsaWQodCkgfHwgbWZuX2VxKG1mbl9hZGQobWZuLCBpKSwgbWZuX3JldHVy bikgKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gICAgICByZXR1cm4gcDJtX3NldF9lbnRyeShw Mm0sIGdmbiwgSU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAo+IEBAIC04MDcs NyArODA3LDcgQEAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBn Zm5fdCBnZm4sCj4gICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJt KGQpOwo+ICAgICAgaW50IHJjOwo+ICAgICAgZ2ZuX2xvY2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIp Owo+IC0gICAgcmMgPSBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBnZm5feChnZm4pLCBtZm5feChtZm4p LCBwYWdlX29yZGVyKTsKPiArICAgIHJjID0gcDJtX3JlbW92ZV9wYWdlKHAybSwgZ2ZuX3goZ2Zu KSwgbWZuLCBwYWdlX29yZGVyKTsKPiAgICAgIGdmbl91bmxvY2socDJtLCBnZm4sIHBhZ2Vfb3Jk ZXIpOwo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gQEAgLTkwOCw3ICs5MDgsNyBAQCBndWVzdF9w aHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIG1mbl90IG1mbiwK PiAgICAgICAgICBlbHNlIGlmICggcDJtX2lzX3JhbShvdCkgJiYgIXAybV9pc19wYWdlZChvdCkg KQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChvbWZuKSk7Cj4g LSAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG9tZm4pLCBJTlZBTElEX00yUF9F TlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4ob21mbiwgSU5WQUxJRF9NMlBf RU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNlIGlmICggb3QgPT0gcDJtX3BvcHVs YXRlX29uX2RlbWFuZCApCj4gICAgICAgICAgewo+IEBAIC05NTEsNyArOTUxLDcgQEAgZ3Vlc3Rf cGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4s Cj4gICAgICAgICAgICAgICAgICBQMk1fREVCVUcoIm9sZCBnZm49JSNseCAtPiBtZm4gJSNseFxu IiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChvZ2ZuKSAsIG1mbl94KG9tZm4p KTsKPiAgICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG9tZm4sIG1mbl9hZGQobWZuLCBpKSkg KQo+IC0gICAgICAgICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbl94KG9nZm4p LCBtZm5feChtZm5fYWRkKG1mbiwgaSkpLAo+ICsgICAgICAgICAgICAgICAgICAgIHAybV9yZW1v dmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5fYWRkKG1mbiwgaSksCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAg fQo+IEBAIC05NjgsOCArOTY4LDggQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRv bWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAgICAgICAgaWYgKCAhcDJtX2lzX2dy YW50KHQpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDFV TCA8PCBwYWdlX29yZGVyKTsgaSsrICkKPiAtICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21f bWZuKG1mbl94KG1mbl9hZGQobWZuLCBpKSksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiArICAgICAgICAgICAgICAgIHNldF9w Zm5fZnJvbV9tZm4obWZuX2FkZChtZm4sIGkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4g ICAgICBlbHNlCj4gQEAgLTEyNzIsNyArMTI3Miw3IEBAIHN0YXRpYyBpbnQgc2V0X3R5cGVkX3Ay bV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbl9sLAo+ICAgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBvcmRlcik7ICsraSApCj4gICAgICAgICAgewo+ICAg ICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbl9hZGQob21mbiwgaSkpKTsKPiAtICAgICAg ICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gob21mbikgKyBpLCBJTlZBTElEX00yUF9FTlRS WSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4obWZuX2FkZChvbWZuLCBpKSwgSU5W QUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgCj4gQEAgLTE0NjcsNyAr MTQ2Nyw3IEBAIGludCBzZXRfc2hhcmVkX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbl9sLCBtZm5fdCBtZm4pCj4gICAgICBwZ190eXBlID0gcmVhZF9hdG9taWMo JihtZm5fdG9fcGFnZShvbWZuKS0+dS5pbnVzZS50eXBlX2luZm8pKTsKPiAgICAgIGlmICggKHBn X3R5cGUgJiBQR1RfY291bnRfbWFzaykgPT0gMAo+ICAgICAgICAgICB8fCAocGdfdHlwZSAmIFBH VF90eXBlX21hc2spICE9IFBHVF9zaGFyZWRfcGFnZSApCj4gLSAgICAgICAgc2V0X2dwZm5fZnJv bV9tZm4obWZuX3gob21mbiksIElOVkFMSURfTTJQX0VOVFJZKTsKPiArICAgICAgICBzZXRfcGZu X2Zyb21fbWZuKG9tZm4sIElOVkFMSURfTTJQX0VOVFJZKTsKPiAgCj4gICAgICBQMk1fREVCVUco InNldCBzaGFyZWQgJWx4ICVseFxuIiwgZ2ZuX2wsIG1mbl94KG1mbikpOwo+ICAgICAgcmMgPSBw Mm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBtZm4sIFBBR0VfT1JERVJfNEssIHAybV9yYW1fc2hhcmVk LAo+IEBAIC0xODIxLDcgKzE4MjEsNyBAQCBpbnQgcDJtX21lbV9wYWdpbmdfcHJlcChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbl9sLCB1aW50NjRfdCBidWZmZXIpCj4gICAgICBy ZXQgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBtZm4sIFBBR0VfT1JERVJfNEssCj4gICAgICAg ICAgICAgICAgICAgICAgICAgIHBhZ2luZ19tb2RlX2xvZ19kaXJ0eShkKSA/IHAybV9yYW1fbG9n ZGlydHkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDogcDJtX3JhbV9ydywgYSk7Cj4gLSAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pLCBn Zm5fbCk7Cj4gKyAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbiwgZ2ZuX2wpOwo+ICAKPiAgICAgIGlm ICggIXBhZ2VfZXh0YW50ICkKPiAgICAgICAgICBhdG9taWNfZGVjKCZkLT5wYWdlZF9wYWdlcyk7 Cj4gQEAgLTE4NzIsNyArMTg3Miw3IEBAIHZvaWQgcDJtX21lbV9wYWdpbmdfcmVzdW1lKHN0cnVj dCBkb21haW4gKmQsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwMm1fcmFtX3J3LCBhKTsKPiAgCj4gICAgICAgICAgICAgIGlm ICggIXJjICkKPiAtICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbiks IGdmbl94KGdmbikpOwo+ICsgICAgICAgICAgICAgICAgc2V0X3Bmbl9mcm9tX21mbihtZm4sIGdm bl94KGdmbikpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCAw KTsKPiAgICAgIH0KPiBAQCAtMjYzNSw3ICsyNjM1LDcgQEAgaW50IHAybV9jaGFuZ2VfYWx0cDJt X2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4LAo+ICAgICAgaWYgKCBnZm5f ZXEobmV3X2dmbiwgSU5WQUxJRF9HRk4pICkKPiAgICAgIHsKPiAgICAgICAgICBpZiAoIG1mbl92 YWxpZChtZm4pICkKPiAtICAgICAgICAgICAgcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdmbl94KG9s ZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKTsKPiArICAgICAgICAgICAgcDJtX3Jl bW92ZV9wYWdlKGFwMm0sIGdmbl94KG9sZF9nZm4pLCBtZm4sIFBBR0VfT1JERVJfNEspOwo+ICAg ICAgICAgIHJjID0gMDsKPiAgICAgICAgICBnb3RvIG91dDsKPiAgICAgIH0KPiBAQCAtMjc3Miw4 ICsyNzcyLDggQEAgdm9pZCBhdWRpdF9wMm0oc3RydWN0IGRvbWFpbiAqZCwKPiAgewo+ICAgICAg c3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPiAgICAgIHN0cnVjdCBkb21haW4gKm9kOwo+IC0gICAg dW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKPiAtICAgIG1mbl90IHAybWZuOwo+ICsgICAgdW5zaWdu ZWQgbG9uZyBnZm47Cj4gKyAgICBtZm5fdCBwMm1mbiwgbWZuOwo+ICAgICAgdW5zaWduZWQgbG9u ZyBvcnBoYW5zX2NvdW50ID0gMCwgbXBiYWQgPSAwLCBwbWJhZCA9IDA7Cj4gICAgICBwMm1fYWNj ZXNzX3QgcDJtYTsKPiAgICAgIHAybV90eXBlX3QgdHlwZTsKPiBAQCAtMjc5NSw1NCArMjc5NSw1 NCBAQCB2b2lkIGF1ZGl0X3AybShzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgc3Bpbl9sb2NrKCZk LT5wYWdlX2FsbG9jX2xvY2spOwo+ICAgICAgcGFnZV9saXN0X2Zvcl9lYWNoICggcGFnZSwgJmQt PnBhZ2VfbGlzdCApCj4gICAgICB7Cj4gLSAgICAgICAgbWZuID0gbWZuX3gocGFnZV90b19tZm4o cGFnZSkpOwo+ICsgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+ICAKPiAtICAgICAg ICBQMk1fUFJJTlRLKCJhdWRpdGluZyBndWVzdCBwYWdlLCBtZm49JSNseFxuIiwgbWZuKTsKPiAr ICAgICAgICBQMk1fUFJJTlRLKCJhdWRpdGluZyBndWVzdCBwYWdlLCBtZm49JSJQUklfbWZuIlxu IiwgbWZuX3gobWZuKSk7Cj4gIAo+ICAgICAgICAgIG9kID0gcGFnZV9nZXRfb3duZXIocGFnZSk7 Cj4gIAo+ICAgICAgICAgIGlmICggb2QgIT0gZCApCj4gICAgICAgICAgewo+IC0gICAgICAgICAg ICBQMk1fUFJJTlRLKCJ3cm9uZyBvd25lciAlI2x4IC0+ICVwKCV1KSAhPSAlcCgldSlcbiIsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgbWZuLCBvZCwgKG9kP29kLT5kb21haW5faWQ6LTEpLCBk LCBkLT5kb21haW5faWQpOwo+ICsgICAgICAgICAgICBQMk1fUFJJTlRLKCJ3cm9uZyBvd25lciAl IlBSSV9tZm4iIC0+ICVwKCV1KSAhPSAlcCgldSlcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgbWZuX3gobWZuKSwgb2QsIChvZD9vZC0+ZG9tYWluX2lkOi0xKSwgZCwgZC0+ZG9tYWluX2lk KTsKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgfQo+ICAKPiAtICAgICAgICBn Zm4gPSBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pOwo+ICsgICAgICAgIGdmbiA9IGdldF9wZm5fZnJv bV9tZm4obWZuKTsKPiAgICAgICAgICBpZiAoIGdmbiA9PSBJTlZBTElEX00yUF9FTlRSWSApCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICBvcnBoYW5zX2NvdW50Kys7Cj4gLSAgICAgICAgICAg IFAyTV9QUklOVEsoIm9ycGhhbmVkIGd1ZXN0IHBhZ2U6IG1mbj0lI2x4IGhhcyBpbnZhbGlkIGdm blxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuKTsKPiArICAgICAgICAgICAg UDJNX1BSSU5USygib3JwaGFuZWQgZ3Vlc3QgcGFnZTogbWZuPSUiUFJJX21mbiIgaGFzIGludmFs aWQgZ2ZuXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KG1mbikpOwo+ICAgICAg ICAgICAgICBjb250aW51ZTsKPiAgICAgICAgICB9Cj4gIAo+ICAgICAgICAgIGlmICggU0hBUkVE X00yUChnZm4pICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIFAyTV9QUklOVEsoInNoYXJl ZCBtZm4gKCVseCkgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gLSAgICAgICAgICAgICAgICAg ICAgbWZuKTsKPiArICAgICAgICAgICAgUDJNX1BSSU5USygic2hhcmVkIG1mbiAoJSJQUklfbWZu Iikgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWZu X3gobWZuKSk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPiAgCj4gICAg ICAgICAgcDJtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuLCAmdHlwZSwgJnAybWEs IDAsIE5VTEwpOwo+IC0gICAgICAgIGlmICggbWZuX3gocDJtZm4pICE9IG1mbiApCj4gKyAgICAg ICAgaWYgKCAhbWZuX2VxKHAybWZuLCBtZm4pICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAg IG1wYmFkKys7Cj4gLSAgICAgICAgICAgIFAyTV9QUklOVEsoIm1hcCBtaXNtYXRjaCBtZm4gJSNs eCAtPiBnZm4gJSNseCAtPiBtZm4gJSNseCIKPiArICAgICAgICAgICAgUDJNX1BSSU5USygibWFw IG1pc21hdGNoIG1mbiAlIlBSSV9tZm4iIC0+IGdmbiAlI2x4IC0+IG1mbiAlIlBSSV9tZm4iIgo+ ICAgICAgICAgICAgICAgICAgICAgICAgICIgKC0+IGdmbiAlI2x4KVxuIiwKPiAtICAgICAgICAg ICAgICAgICAgICAgICBtZm4sIGdmbiwgbWZuX3gocDJtZm4pLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIG1mbl94KG1mbiksIGdmbiwgbWZuX3gocDJtZm4pLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgIChtZm5fdmFsaWQocDJtZm4pCj4gLSAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0 X2dwZm5fZnJvbV9tZm4obWZuX3gocDJtZm4pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICA/ IGdldF9wZm5fZnJvbV9tZm4ocDJtZm4pCj4gICAgICAgICAgICAgICAgICAgICAgICAgIDogLTF1 KSk7Cj4gICAgICAgICAgICAgIC8qIFRoaXMgbTJwIGVudHJ5IGlzIHN0YWxlOiB0aGUgZG9tYWlu IGhhcyBhbm90aGVyIGZyYW1lIGluCj4gICAgICAgICAgICAgICAqIHRoaXMgcGh5c2ljYWwgc2xv dC4gIE5vIGdyZWF0IGRpc2FzdGVyLCBidXQgZm9yIG5lYXRuZXNzLAo+ICAgICAgICAgICAgICAg KiBibG93IGF3YXkgdGhlIG0ycCBlbnRyeS4gKi8KPiAtICAgICAgICAgICAgc2V0X2dwZm5fZnJv bV9tZm4obWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJv bV9tZm4obWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIF9f cHV0X2dmbihwMm0sIGdmbik7Cj4gIAo+IC0gICAgICAgIFAyTV9QUklOVEsoIk9LOiBtZm49JSNs eCwgZ2ZuPSUjbHgsIHAybWZuPSUjbHhcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgbWZu LCBnZm4sIG1mbl94KHAybWZuKSk7Cj4gKyAgICAgICAgUDJNX1BSSU5USygiT0s6IG1mbj0lIlBS SV9tZm4iLCBnZm49JSNseCwgcDJtZm49JSJQUklfbWZuIlxuIiwKPiArICAgICAgICAgICAgICAg ICAgIG1mbl94KG1mbiksIGdmbiwgbWZuX3gocDJtZm4pKTsKPiAgICAgIH0KPiAgICAgIHNwaW5f dW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3BhZ2luZy5jIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gaW5kZXggOWIwZjI2 OGU3NC4uY2VmMmY5MDE4NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMK PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHZv aWQgcGFnaW5nX21hcmtfZGlydHkoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKPiAgICAg ICAgICByZXR1cm47Cj4gIAo+ICAgICAgLyogV2UgL3JlYWxseS8gbWVhbiBQRk4gaGVyZSwgZXZl biBmb3Igbm9uLXRyYW5zbGF0ZWQgZ3Vlc3RzLiAqLwo+IC0gICAgcGZuID0gX3BmbihnZXRfZ3Bm bl9mcm9tX21mbihtZm5feChnbWZuKSkpOwo+ICsgICAgcGZuID0gX3BmbihnZXRfcGZuX2Zyb21f bWZuKGdtZm4pKTsKPiAgCj4gICAgICBwYWdpbmdfbWFya19wZm5fZGlydHkoZCwgcGZuKTsKPiAg fQo+IEBAIC0zNjIsNyArMzYyLDcgQEAgaW50IHBhZ2luZ19tZm5faXNfZGlydHkoc3RydWN0IGRv bWFpbiAqZCwgbWZuX3QgZ21mbikKPiAgICAgIEFTU0VSVChwYWdpbmdfbW9kZV9sb2dfZGlydHko ZCkpOwo+ICAKPiAgICAgIC8qIFdlIC9yZWFsbHkvIG1lYW4gUEZOIGhlcmUsIGV2ZW4gZm9yIG5v bi10cmFuc2xhdGVkIGd1ZXN0cy4gKi8KPiAtICAgIHBmbiA9IF9wZm4oZ2V0X2dwZm5fZnJvbV9t Zm4obWZuX3goZ21mbikpKTsKPiArICAgIHBmbiA9IF9wZm4oZ2V0X3Bmbl9mcm9tX21mbihnbWZu KSk7Cj4gICAgICAvKiBJbnZhbGlkIHBhZ2VzIGNhbid0IGJlIGRpcnR5LiAqLwo+ICAgICAgaWYg KCB1bmxpa2VseSghVkFMSURfTTJQKHBmbl94KHBmbikpKSApCj4gICAgICAgICAgcmV0dXJuIDA7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94 ODYvcHYvZG9tMF9idWlsZC5jCj4gaW5kZXggY2VmMmQ0MjI1NC4uYjM5YWI2NzA5MiAxMDA2NDQK PiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2 L3B2L2RvbTBfYnVpbGQuYwo+IEBAIC0zOSw3ICszOSw3IEBAIHZvaWQgX19pbml0IGRvbTBfdXBk YXRlX3BoeXNtYXAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCj4gICAgICBl bHNlCj4gICAgICAgICAgKCh1bnNpZ25lZCBpbnQgKil2cGh5c21hcF9zKVtwZm5dID0gbWZuOwo+ ICAKPiAtICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbiwgcGZuKTsKPiArICAgIHNldF9wZm5fZnJv bV9tZm4oX21mbihtZm4pLCBwZm4pOwo+ICB9Cj4gIAo+ICBzdGF0aWMgX19pbml0IHZvaWQgbWFy a19wdl9wdF9wYWdlc19yZG9ubHkoc3RydWN0IGRvbWFpbiAqZCwKPiBAQCAtNzk4LDggKzc5OCw4 IEBAIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAg IHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQo+ICAgICAgewo+ICAg ICAgICAgIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiAtICAgICAgICBCVUdfT04o U0hBUkVEX00yUChnZXRfZ3Bmbl9mcm9tX21mbihtZm4pKSk7Cj4gLSAgICAgICAgaWYgKCBnZXRf Z3Bmbl9mcm9tX21mbihtZm4pID49IGNvdW50ICkKPiArICAgICAgICBCVUdfT04oU0hBUkVEX00y UChnZXRfcGZuX2Zyb21fbWZuKF9tZm4obWZuKSkpKTsKPiArICAgICAgICBpZiAoIGdldF9wZm5f ZnJvbV9tZm4oX21mbihtZm4pKSA+PSBjb3VudCApCj4gICAgICAgICAgewo+ICAgICAgICAgICAg ICBCVUdfT04oaXNfcHZfMzJiaXRfZG9tYWluKGQpKTsKPiAgICAgICAgICAgICAgaWYgKCAhcGFn ZS0+dS5pbnVzZS50eXBlX2luZm8gJiYKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82 NC90cmFwcy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jCj4gaW5kZXggNDRhZjc2NWUz ZS4uZjgwZjIyNTBmZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMK PiArKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKPiBAQCAtMTg0LDcgKzE4NCw4IEBA IHZvaWQgdmNwdV9zaG93X3JlZ2lzdGVycyhjb25zdCBzdHJ1Y3QgdmNwdSAqdikKPiAgCj4gIHZv aWQgc2hvd19wYWdlX3dhbGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICB7Cj4gLSAgICB1bnNpZ25l ZCBsb25nIHBmbiwgbWZuID0gcmVhZF9jcjMoKSA+PiBQQUdFX1NISUZUOwo+ICsgICAgdW5zaWdu ZWQgbG9uZyBwZm47Cj4gKyAgICBtZm5fdCBtZm4gPSBtYWRkcl90b19tZm4ocmVhZF9jcjMoKSk7 Cj4gICAgICBsNF9wZ2VudHJ5X3QgbDRlLCAqbDR0Owo+ICAgICAgbDNfcGdlbnRyeV90IGwzZSwg KmwzdDsKPiAgICAgIGwyX3BnZW50cnlfdCBsMmUsICpsMnQ7Cj4gQEAgLTE5NCw1MiArMTk1LDUy IEBAIHZvaWQgc2hvd19wYWdlX3dhbGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICAgICAgaWYgKCAh aXNfY2Fub25pY2FsX2FkZHJlc3MoYWRkcikgKQo+ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAg ICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgIGw0dCA9IG1hcF9kb21h aW5fcGFnZShtZm4pOwo+ICAgICAgbDRlID0gbDR0W2w0X3RhYmxlX29mZnNldChhZGRyKV07Cj4g ICAgICB1bm1hcF9kb21haW5fcGFnZShsNHQpOwo+IC0gICAgbWZuID0gbDRlX2dldF9wZm4obDRl KTsKPiAtICAgIHBmbiA9IG1mbl92YWxpZChfbWZuKG1mbikpICYmIG1hY2hpbmVfdG9fcGh5c19t YXBwaW5nX3ZhbGlkID8KPiAtICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1mbikgOiBJTlZB TElEX00yUF9FTlRSWTsKPiArICAgIG1mbiA9IGw0ZV9nZXRfbWZuKGw0ZSk7Cj4gKyAgICBwZm4g PSBtZm5fdmFsaWQobWZuKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxpZCA/Cj4gKyAg ICAgICAgICBnZXRfcGZuX2Zyb21fbWZuKG1mbikgOiBJTlZBTElEX00yUF9FTlRSWTsKPiAgICAg IHByaW50aygiIEw0WzB4JTAzbHhdID0gJSJQUklwdGUiICUwMTZseFxuIiwKPiAgICAgICAgICAg ICBsNF90YWJsZV9vZmZzZXQoYWRkciksIGw0ZV9nZXRfaW50cHRlKGw0ZSksIHBmbik7Cj4gICAg ICBpZiAoICEobDRlX2dldF9mbGFncyhsNGUpICYgX1BBR0VfUFJFU0VOVCkgfHwKPiAtICAgICAg ICAgIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiArICAgICAgICAgIW1mbl92YWxpZChtZm4pICkK PiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0gICAgbDN0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4o bWZuKSk7Cj4gKyAgICBsM3QgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKPiAgICAgIGwzZSA9IGwz dFtsM190YWJsZV9vZmZzZXQoYWRkcildOwo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDN0KTsK PiAtICAgIG1mbiA9IGwzZV9nZXRfcGZuKGwzZSk7Cj4gLSAgICBwZm4gPSBtZm5fdmFsaWQoX21m bihtZm4pKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxpZCA/Cj4gLSAgICAgICAgICBn ZXRfZ3Bmbl9mcm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4gKyAgICBtZm4gPSBs M2VfZ2V0X21mbihsM2UpOwo+ICsgICAgcGZuID0gbWZuX3ZhbGlkKG1mbikgJiYgbWFjaGluZV90 b19waHlzX21hcHBpbmdfdmFsaWQgPwo+ICsgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihtZm4p IDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4gICAgICBwcmludGsoIiBMM1sweCUwM2x4XSA9ICUiUFJJ cHRlIiAlMDE2bHglc1xuIiwKPiAgICAgICAgICAgICBsM190YWJsZV9vZmZzZXQoYWRkciksIGwz ZV9nZXRfaW50cHRlKGwzZSksIHBmbiwKPiAgICAgICAgICAgICAobDNlX2dldF9mbGFncyhsM2Up ICYgX1BBR0VfUFNFKSA/ICIgKFBTRSkiIDogIiIpOwo+ICAgICAgaWYgKCAhKGwzZV9nZXRfZmxh Z3MobDNlKSAmIF9QQUdFX1BSRVNFTlQpIHx8Cj4gICAgICAgICAgIChsM2VfZ2V0X2ZsYWdzKGwz ZSkgJiBfUEFHRV9QU0UpIHx8Cj4gLSAgICAgICAgICFtZm5fdmFsaWQoX21mbihtZm4pKSApCj4g KyAgICAgICAgICFtZm5fdmFsaWQobWZuKSApCj4gICAgICAgICAgcmV0dXJuOwo+ICAKPiAtICAg IGwydCA9IG1hcF9kb21haW5fcGFnZShfbWZuKG1mbikpOwo+ICsgICAgbDJ0ID0gbWFwX2RvbWFp bl9wYWdlKG1mbik7Cj4gICAgICBsMmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKPiAg ICAgIHVubWFwX2RvbWFpbl9wYWdlKGwydCk7Cj4gLSAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUp Owo+IC0gICAgcGZuID0gbWZuX3ZhbGlkKF9tZm4obWZuKSkgJiYgbWFjaGluZV90b19waHlzX21h cHBpbmdfdmFsaWQgPwo+IC0gICAgICAgICAgZ2V0X2dwZm5fZnJvbV9tZm4obWZuKSA6IElOVkFM SURfTTJQX0VOVFJZOwo+ICsgICAgbWZuID0gbDJlX2dldF9tZm4obDJlKTsKPiArICAgIHBmbiA9 IG1mbl92YWxpZChtZm4pICYmIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiArICAg ICAgICAgIGdldF9wZm5fZnJvbV9tZm4obWZuKSA6IElOVkFMSURfTTJQX0VOVFJZOwo+ICAgICAg cHJpbnRrKCIgTDJbMHglMDNseF0gPSAlIlBSSXB0ZSIgJTAxNmx4JXNcbiIsCj4gICAgICAgICAg ICAgbDJfdGFibGVfb2Zmc2V0KGFkZHIpLCBsMmVfZ2V0X2ludHB0ZShsMmUpLCBwZm4sCj4gICAg ICAgICAgICAgKGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9QQUdFX1BTRSkgPyAiIChQU0UpIiA6ICIi KTsKPiAgICAgIGlmICggIShsMmVfZ2V0X2ZsYWdzKGwyZSkgJiBfUEFHRV9QUkVTRU5UKSB8fAo+ ICAgICAgICAgICAobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFNFKSB8fAo+IC0gICAgICAg ICAhbWZuX3ZhbGlkKF9tZm4obWZuKSkgKQo+ICsgICAgICAgICAhbWZuX3ZhbGlkKG1mbikgKQo+ ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAgICBsMXQgPSBtYXBfZG9tYWluX3BhZ2UoX21mbiht Zm4pKTsKPiArICAgIGwxdCA9IG1hcF9kb21haW5fcGFnZShtZm4pOwo+ICAgICAgbDFlID0gbDF0 W2wxX3RhYmxlX29mZnNldChhZGRyKV07Cj4gICAgICB1bm1hcF9kb21haW5fcGFnZShsMXQpOwo+ IC0gICAgbWZuID0gbDFlX2dldF9wZm4obDFlKTsKPiAtICAgIHBmbiA9IG1mbl92YWxpZChfbWZu KG1mbikpICYmIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiAtICAgICAgICAgIGdl dF9ncGZuX2Zyb21fbWZuKG1mbikgOiBJTlZBTElEX00yUF9FTlRSWTsKPiArICAgIG1mbiA9IGwx ZV9nZXRfbWZuKGwxZSk7Cj4gKyAgICBwZm4gPSBtZm5fdmFsaWQobWZuKSAmJiBtYWNoaW5lX3Rv X3BoeXNfbWFwcGluZ192YWxpZCA/Cj4gKyAgICAgICAgICBnZXRfcGZuX2Zyb21fbWZuKG1mbikg OiBJTlZBTElEX00yUF9FTlRSWTsKPiAgICAgIHByaW50aygiIEwxWzB4JTAzbHhdID0gJSJQUklw dGUiICUwMTZseFxuIiwKPiAgICAgICAgICAgICBsMV90YWJsZV9vZmZzZXQoYWRkciksIGwxZV9n ZXRfaW50cHRlKGwxZSksIHBmbik7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9tZW1v cnkuYyBiL3hlbi9jb21tb24vbWVtb3J5LmMKPiBpbmRleCBkNmE1ODBkYTMxLi5lZWNjOTY3MWZm IDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24vbWVtb3J5LmMKPiArKysgYi94ZW4vY29tbW9uL21l bW9yeS5jCj4gQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZV9waHlzbWFw KHN0cnVjdCBtZW1vcF9hcmdzICphKQo+ICAgICAgICAgICAgICBpZiAoICFwYWdpbmdfbW9kZV90 cmFuc2xhdGUoZCkgKQo+ICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICBmb3IgKCBq ID0gMDsgaiA8ICgxVSA8PCBhLT5leHRlbnRfb3JkZXIpOyBqKysgKQo+IC0gICAgICAgICAgICAg ICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbl9hZGQobWZuLCBqKSksIGdwZm4gKyBq KTsKPiArICAgICAgICAgICAgICAgICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBq KSwgZ3BmbiArIGopOwo+ICAKPiAgICAgICAgICAgICAgICAgIC8qIEluZm9ybSB0aGUgZG9tYWlu IG9mIHRoZSBuZXcgcGFnZSdzIG1hY2hpbmUgYWRkcmVzcy4gKi8gCj4gICAgICAgICAgICAgICAg ICBpZiAoIHVubGlrZWx5KF9fY29weV9tZm5fdG9fZ3Vlc3Rfb2Zmc2V0KGEtPmV4dGVudF9saXN0 LCBpLAo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYyBiL3hlbi9jb21tb24v cGFnZV9hbGxvYy5jCj4gaW5kZXggNjA2MWNjZTI0Zi4uYTEwMGUwM2UyZSAxMDA2NDQKPiAtLS0g YS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+ICsrKyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5j Cj4gQEAgLTE0MjQsNyArMTQyNCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKPiAg Cj4gICAgICAgICAgLyogVGhpcyBwYWdlIGlzIG5vdCBhIGd1ZXN0IGZyYW1lIGFueSBtb3JlLiAq Lwo+ICAgICAgICAgIHBhZ2Vfc2V0X293bmVyKCZwZ1tpXSwgTlVMTCk7IC8qIHNldF9ncGZuX2Zy b21fbWZuIHNub29wcyBwZyBvd25lciAqLwo+IC0gICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1m bl94KG1mbikgKyBpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgc2V0X3Bmbl9mcm9t X21mbihtZm5fYWRkKG1mbiwgKyBpKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAKPiAgICAgICAg ICBpZiAoIG5lZWRfc2NydWIgKQo+ICAgICAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9tbS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCj4gaW5kZXggYTljYjk4 YTZjNy4uM2MwM2JlM2JjYSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgK PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKPiBAQCAtMzIyLDcgKzMyMiw3IEBAIHN0 cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ3ZhKHN0cnVjdCB2Y3B1ICp2LCB2YWRkcl90 IHZhLAo+ICAjZGVmaW5lIFNIQVJFRF9NMlAoX2UpICAgICAgICAgICAoKF9lKSA9PSBTSEFSRURf TTJQX0VOVFJZKQo+ICAKPiAgLyogV2UgZG9uJ3QgaGF2ZSBhIE0yUCBvbiBBcm0gKi8KPiAtI2Rl ZmluZSBzZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBmbikgZG8geyAodm9pZCkgKG1mbiksICh2b2lk KShwZm4pOyB9IHdoaWxlICgwKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3Bmbl9mcm9tX21m bihtZm5fdCBtZm4sIHVuc2lnbmVkIGxvbmcgcGZuKSB7fQo+ICAKPiAgLyogQXJjaC1zcGVjaWZp YyBwb3J0aW9uIG9mIG1lbW9yeV9vcCBoeXBlcmNhbGwuICovCj4gIGxvbmcgYXJjaF9tZW1vcnlf b3AoaW50IG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZyk7Cj4gZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaCBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvZ3JhbnRfdGFibGUuaAo+IGluZGV4IDY2MTIyOGRkMzkuLmQ3MzFiOWU0OWYgMTAwNjQ0Cj4g LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCj4gKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCj4gQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIGlubGlu ZSBpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcodWludDY0X3QgYWRkciwgbWZuX3QgZnJh bWUsCj4gICNkZWZpbmUgZ250dGFiX2dldF9mcmFtZV9nZm4oZ3QsIHN0LCBpZHgpICh7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICBtZm5fdCBtZm5fID0gKHN0KSA/IGdudHRh Yl9zdGF0dXNfbWZuKGd0LCBpZHgpICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAg ICAgICAgICAgICAgICA6IGdudHRhYl9zaGFyZWRfbWZuKGd0LCBpZHgpOyAgICAgICAgICAgICAg ICAgICAgICBcCj4gLSAgICB1bnNpZ25lZCBsb25nIGdwZm5fID0gZ2V0X2dwZm5fZnJvbV9tZm4o bWZuX3gobWZuXykpOyAgICAgICAgICAgICAgICBcCj4gKyAgICB1bnNpZ25lZCBsb25nIGdwZm5f ID0gZ2V0X3Bmbl9mcm9tX21mbihtZm5fKTsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAg ICBWQUxJRF9NMlAoZ3Bmbl8pID8gX2dmbihncGZuXykgOiBJTlZBTElEX0dGTjsgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gIH0pCj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKPiBpbmRleCA0NzIxNzI1YzYwLi5i Y2U2MDYxOWMzIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+ICsrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+IEBAIC00OTIsMjIgKzQ5MiwyNiBAQCBleHRlcm4g c3RydWN0IGRvbWFpbiAqZG9tX3hlbiwgKmRvbV9pbywgKmRvbV9jb3c7CS8qIGZvciB2bWNvcmVp bmZvICovCj4gICAqLwo+ICBleHRlcm4gYm9vbCBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxp ZDsKPiAgCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZ3Bmbl9mcm9tX21mbih1bnNpZ25lZCBs b25nIG1mbiwgdW5zaWduZWQgbG9uZyBwZm4pCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGZu X2Zyb21fbWZuKG1mbl90IG1mbiwgdW5zaWduZWQgbG9uZyBwZm4pCj4gIHsKPiAtICAgIHN0cnVj dCBkb21haW4gKmQgPSBwYWdlX2dldF9vd25lcihtZm5fdG9fcGFnZShfbWZuKG1mbikpKTsKPiAr ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbWZuXyA9IG1mbl94KG1mbik7Cj4gKyAgICBzdHJ1Y3Qg ZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3BhZ2UobWZuKSk7Cj4gICAgICB1bnNp Z25lZCBsb25nIGVudHJ5ID0gKGQgJiYgKGQgPT0gZG9tX2NvdykpID8gU0hBUkVEX00yUF9FTlRS WSA6IHBmbjsKPiAgCj4gICAgICBpZiAoIW1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkKQo+ ICAgICAgICAgIHJldHVybjsKPiAgCj4gLSAgICBpZiAoIG1mbiA+PSAoUkRXUl9DT01QQVRfTVBU X1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8gNCApCj4gLSAgICAgICAg Y29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRyeTsKPiAtICAgIG1hY2hp bmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRyeTsKPiArICAgIGlmICggbWZuXyA+PSAoUkRX Ul9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8gNCAp Cj4gKyAgICAgICAgY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl9dID0gZW50cnk7 Cj4gKyAgICBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ1ttZm5fXSA9IGVudHJ5Owo+ICB9Cj4gIAo+ ICBleHRlcm4gc3RydWN0IHJhbmdlc2V0ICptbWlvX3JvX3JhbmdlczsKPiAgCj4gLSNkZWZpbmUg Z2V0X2dwZm5fZnJvbV9tZm4obWZuKSAgICAgIChtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ1sobWZu KV0pCj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfcGZuX2Zyb21fbWZuKG1mbl90 IG1mbikKPiArewo+ICsgICAgcmV0dXJuIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl94KG1m bildOwo+ICt9Cj4gIAo+ICAjZGVmaW5lIGNvbXBhdF9wZm5fdG9fY3IzKHBmbikgKCgodW5zaWdu ZWQpKHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCkocGZuKSA+PiAyMCkpCj4gICNkZWZpbmUgY29t cGF0X2NyM190b19wZm4oY3IzKSAoKCh1bnNpZ25lZCkoY3IzKSA+PiAxMikgfCAoKHVuc2lnbmVk KShjcjMpIDw8IDIwKSkKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiBpbmRleCAwMTU3NTY4YmU5Li4wN2I3ZWM2ZGIw IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L3AybS5oCj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgaW5saW5lIHN0 cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAo+ICBzdGF0aWMgaW5saW5lIGdmbl90 IG1mbl90b19nZm4oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgbWZuKQo+ICB7Cj4gICAg ICBpZiAoIHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSApCj4gLSAgICAgICAgcmV0dXJuIF9nZm4o Z2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSkpOwo+ICsgICAgICAgIHJldHVybiBfZ2ZuKGdl dF9wZm5fZnJvbV9tZm4obWZuKSk7Cj4gICAgICBlbHNlCj4gICAgICAgICAgcmV0dXJuIF9nZm4o bWZuX3gobWZuKSk7Cj4gIH0KPiAtLSAKPiAyLjExLjAKPiAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=