From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx3-rdu2.redhat.com ([66.187.233.73] helo=mx1.redhat.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fIxx7-0006hO-GA for kexec@lists.infradead.org; Wed, 16 May 2018 15:02:55 +0000 Subject: Re: [PATCH 2/2] support kdump when AMD secure memory encryption is active References: <20180515015133.4363-1-lijiang@redhat.com> <20180515015133.4363-3-lijiang@redhat.com> <96b6d169-de5c-7ca8-df87-3d316526733a@amd.com> From: lijiang Message-ID: <10c50f0c-ac9f-b3be-e99c-901bf4a82b21@redhat.com> Date: Wed, 16 May 2018 23:02:34 +0800 MIME-Version: 1.0 In-Reply-To: <96b6d169-de5c-7ca8-df87-3d316526733a@amd.com> Content-Language: en-US List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Tom Lendacky , linux-kernel@vger.kernel.org Cc: dyoung@redhat.com, kexec@lists.infradead.org 5ZyoIDIwMTjlubQwNeaciDE25pelIDA0OjE4LCBUb20gTGVuZGFja3kg5YaZ6YGTOgo+IE9uIDUv MTQvMjAxOCA4OjUxIFBNLCBMaWFuYm8gSmlhbmcgd3JvdGU6Cj4+IFdoZW4gc21lIGVuYWJsZWQg b24gQU1EIHNlcnZlciwgd2UgYWxzbyBuZWVkIHRvIHN1cHBvcnQga2R1bXAuIEJlY2F1c2UKPj4g dGhlIG1lbW9yeSBpcyBlbmNyeXB0ZWQgaW4gdGhlIGZpcnN0IGtlcm5lbCwgd2Ugd2lsbCByZW1h cCB0aGUgb2xkIG1lbW9yeQo+PiBlbmNyeXB0ZWQgdG8gdGhlIHNlY29uZCBrZXJuZWwoY3Jhc2gg a2VybmVsKSwgYW5kIHNtZSBpcyBhbHNvIGVuYWJsZWQgaW4KPj4gdGhlIHNlY29uZCBrZXJuZWws IG90aGVyd2lzZSB0aGUgb2xkIG1lbW9yeSBlbmNyeXB0ZWQgY2FuIG5vdCBiZSBkZWNyeXB0ZWQu Cj4+IEJlY2F1c2Ugc2ltcGx5IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIEMtYml0IG9uIGEgcGFn ZSB3aWxsIG5vdAo+PiBhdXRvbWF0aWNhbGx5IGVuY3J5cHQgdGhlIGV4aXN0aW5nIGNvbnRlbnRz IG9mIGEgcGFnZSwgYW5kIGFueSBkYXRhIGluIHRoZQo+PiBwYWdlIHByaW9yIHRvIHRoZSBDLWJp dCBtb2RpZmljYXRpb24gd2lsbCBiZWNvbWUgdW5pbnRlbGxpZ2libGUuIEEgcGFnZSBvZgo+PiBt ZW1vcnkgdGhhdCBpcyBtYXJrZWQgZW5jcnlwdGVkIHdpbGwgYmUgYXV0b21hdGljYWxseSBkZWNy eXB0ZWQgd2hlbiByZWFkCj4+IGZyb20gRFJBTSBhbmQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGVu Y3J5cHRlZCB3aGVuIHdyaXR0ZW4gdG8gRFJBTS4KPj4KPj4gRm9yIHRoZSBrZHVtcCwgaXQgaXMg bmVjZXNzYXJ5IHRvIGRpc3Rpbmd1aXNoIHdoZXRoZXIgdGhlIG1lbW9yeSBpcwo+PiBlbmNyeXB0 ZWQuIEZ1cnRoZXJtb3JlLCB3ZSBzaG91bGQgYWxzbyBrbm93IHdoaWNoIHBhcnQgb2YgdGhlIG1l bW9yeSBpcwo+PiBlbmNyeXB0ZWQgb3IgZGVjcnlwdGVkLiBXZSB3aWxsIGFwcHJvcHJpYXRlbHkg cmVtYXAgdGhlIG1lbW9yeSBhY2NvcmRpbmcKPj4gdG8gdGhlIHNwZWNpZmljIHNpdHVhdGlvbiBp biBvcmRlciB0byB0ZWxsIGNwdSBob3cgdG8gZGVhbCB3aXRoIHRoZSBkYXRhKAo+PiBlbmNyeXB0 ZWQgb3IgdW5lbmNyeXB0ZWQpLiBGb3IgZXhhbXBsZSwgd2hlbiBzbWUgZW5hYmxlZCwgaWYgdGhl IG9sZCBtZW1vcnkKPj4gaXMgZW5jcnlwdGVkLCB3ZSB3aWxsIHJlbWFwIHRoZSBvbGQgbWVtb3J5 IGluIGVuY3J5cHRlZCB3YXksIHdoaWNoIHdpbGwKPj4gYXV0b21hdGljYWxseSBkZWNyeXB0IHRo ZSBvbGQgbWVtb3J5IGVuY3J5cHRlZCB3aGVuIHdlIHJlYWQgdGhvc2UgZGF0YSBmcm9tCj4+IHRo ZSByZW1hcHBpbmcgYWRkcmVzcy4KPj4KPj4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPj4gfCBmaXJzdC1rZXJuZWwgfCBzZWNvbmQta2VybmVsIHwga2R1 bXAgc3VwcG9ydCB8Cj4+IHwgICAgICAobWVtX2VuY3J5cHQ9b258b2ZmKSAgICB8ICAgKHllc3xu bykgICAgfAo+PiB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LXwKPj4gfCAgICAgb24gICAgICAgfCAgICAgb24gICAgICAgIHwgICAgIHllcyAgICAgICB8Cj4+ IHwgICAgIG9mZiAgICAgIHwgICAgIG9mZiAgICAgICB8ICAgICB5ZXMgICAgICAgfAo+PiB8ICAg ICBvbiAgICAgICB8ICAgICBvZmYgICAgICAgfCAgICAgbm8gICAgICAgIHwKPj4gfCAgICAgb2Zm ICAgICAgfCAgICAgb24gICAgICAgIHwgICAgIG5vICAgICAgICB8Cj4+IHxfX19fX19fX19fX19f X3xfX19fX19fX19fX19fX198X19fX19fX19fX19fX19ffAo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBM aWFuYm8gSmlhbmcgPGxpamlhbmdAcmVkaGF0LmNvbT4KPj4gLS0tCj4+ICBhcmNoL3g4Ni9pbmNs dWRlL2FzbS9kbWkuaCAgICAgIHwgMTQgKysrKysrKysrKysrKy0KPj4gIGFyY2gveDg2L2tlcm5l bC9hY3BpL2Jvb3QuYyAgICAgfCAgOCArKysrKysrKwo+PiAgYXJjaC94ODYva2VybmVsL2NyYXNo X2R1bXBfNjQuYyB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgZHJpdmVycy9h Y3BpL3RhYmxlcy5jICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKystCj4+ICBkcml2ZXJzL2lv bW11L2FtZF9pb21tdV9pbml0LmMgIHwgIDkgKysrKysrKystCj4+ICBmcy9wcm9jL3ZtY29yZS5j ICAgICAgICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t Cj4+ICBpbmNsdWRlL2xpbnV4L2NyYXNoX2R1bXAuaCAgICAgIHwgIDQgKysrKwo+PiAga2VybmVs L2tleGVjX2NvcmUuYyAgICAgICAgICAgICB8IDEyICsrKysrKysrKysrKwo+PiAgOCBmaWxlcyBj aGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdp dCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2RtaS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZG1p LmgKPj4gaW5kZXggMGFiMmFiMi4uYTU2NjNiNCAxMDA2NDQKPj4gLS0tIGEvYXJjaC94ODYvaW5j bHVkZS9hc20vZG1pLmgKPj4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZG1pLmgKPj4gQEAg LTcsNiArNywxMCBAQAo+PiAgCj4+ICAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4+ICAjaW5jbHVkZSA8 YXNtL3NldHVwLmg+Cj4+ICsjaWZkZWYgQ09ORklHX0FNRF9NRU1fRU5DUllQVAo+IAo+IEkgZG9u J3QgdGhpbmsgeW91IG5lZWQgYWxsIG9mIHRoZSAjaWZkZWYgc3R1ZmYgdGhyb3VnaG91dCB0aGlz Cj4gcGF0Y2guICBFdmVyeXRoaW5nIHNob3VsZCB3b3JrIGp1c3QgZmluZSB3aXRob3V0IGl0Lgo+ IApUaGFua3MgVG9tLiBUaGUgbWFjcm8gd2lsbCBiZSBkZWxldGVkIGZyb20gdGhpcyBwYXRjaC4K VGhhbmtzLgoKTGlhbmJvCj4+ICsjaW5jbHVkZSA8bGludXgvY3Jhc2hfZHVtcC5oPgo+PiArI2lu Y2x1ZGUgPGxpbnV4L21lbV9lbmNyeXB0Lmg+Cj4+ICsjZW5kaWYKPj4gIAo+PiAgc3RhdGljIF9f YWx3YXlzX2lubGluZSBfX2luaXQgdm9pZCAqZG1pX2FsbG9jKHVuc2lnbmVkIGxlbikKPj4gIHsK Pj4gQEAgLTE0LDcgKzE4LDE1IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX19pbml0IHZvaWQg KmRtaV9hbGxvYyh1bnNpZ25lZCBsZW4pCj4+ICB9Cj4+ICAKPj4gIC8qIFVzZSBlYXJseSBJTyBt YXBwaW5ncyBmb3IgRE1JIGJlY2F1c2UgaXQncyBpbml0aWFsaXplZCBlYXJseSAqLwo+PiAtI2Rl ZmluZSBkbWlfZWFybHlfcmVtYXAJCWVhcmx5X21lbXJlbWFwCj4+ICtzdGF0aWMgX19hbHdheXNf aW5saW5lIF9faW5pdCB2b2lkICpkbWlfZWFybHlfcmVtYXAocmVzb3VyY2Vfc2l6ZV90Cj4+ICsJ CQkJCXBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQo+PiArewo+PiArI2lmZGVmIENPTkZJ R19BTURfTUVNX0VOQ1JZUFQKPiAKPiBBZ2Fpbiwgbm8gbmVlZCBmb3IgdGhlICNpZmRlZiBoZXJl LiAgWW91IHNob3VsZCBwcm9iYWJseSBhdWRpdCB0aGUKPiBjb2RlIGZvciBhbGwgb2YgdGhlc2Ug YW5kIHRydWx5IGRldGVybWluZSBpZiB0aGV5IGFyZSByZWFsbHkgbmVlZGVkLgo+IApJdCB3aWxs IGJlIGZpeGVkIGluIHRoZSBwYXRjaCB2Mi4KVGhhbmtzLgo+PiArCWlmIChzbWVfYWN0aXZlKCkg JiYgaXNfa2R1bXBfa2VybmVsKCkpCj4gCj4gVXNlIG9mIHNtZV9hY3RpdmUoKSBoZXJlIGlzIGdv b2Qgc2luY2UgdW5kZXIgU0VWLCB0aGlzIGFyZWEgd2lsbCBiZQo+IGVuY3J5cHRlZC4KPiAKPj4g KwkJcmV0dXJuIGVhcmx5X21lbXJlbWFwX2RlY3J5cHRlZChwaHlzX2FkZHIsIHNpemUpOwo+PiAr I2VuZGlmCj4+ICsJcmV0dXJuIGVhcmx5X21lbXJlbWFwKHBoeXNfYWRkciwgc2l6ZSk7Cj4gCj4g SW5zdGVhZCBvZiBkb2luZyB0aGlzLCBtYXliZSBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIHB1dCB0 aGlzIGxvZ2ljCj4gc29tZXdoZXJlIGluIHRoZSBlYXJseV9tZW1yZW1hcCgpIHBhdGguICBQb3Nz aWJseSBzbWFydGVuIHVwIHRoZQo+IGVhcmx5X21lbXJlbWFwX3BncHJvdF9hZGp1c3QoKSBmdW5j dGlvbiB3aXRoIHNvbWUga2R1bXAga2VybmVsCj4gcmVsYXRlZCBsb2dpYy4gIE5vdCBzdXJlIGl0 J3MgcG9zc2libGUsIGJ1dCB3b3VsZCBiZSBuaWNlIHNpbmNlIHlvdQo+IGhhdmUgdGhpcyBsb2dp YyBpbiBhIGNvdXBsZSBvZiBwbGFjZXMuCj4gCkdvb2QgaWRlYS4gSWYgd2UgcHV0IHRoaXMgbG9n aWMgaW50byB0aGUgZWFybHlfbWVtcmVtYXAgcGF0aCwgdGhlcmUgYXJlCm1hbnkgY29kZXMgdGhh dCB3aWxsIG5vdCBoYXZlIHRvIGJlIG1vZGlmaWVkLCBmb3IgZXhhbXBsZSwgZG1pLCBhY3BpLgoK VGhhbmtzLgo+PiArfQo+PiAgI2RlZmluZSBkbWlfZWFybHlfdW5tYXAJCWVhcmx5X21lbXVubWFw Cj4+ICAjZGVmaW5lIGRtaV9yZW1hcChfeCwgX2wpCW1lbXJlbWFwKF94LCBfbCwgTUVNUkVNQVBf V0IpCj4+ICAjZGVmaW5lIGRtaV91bm1hcChfeCkJCW1lbXVubWFwKF94KQo+PiBkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jIGIvYXJjaC94ODYva2VybmVsL2FjcGkvYm9v dC5jCj4+IGluZGV4IDNiMjA2MDcuLjM1NGFkNjYgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gveDg2L2tl cm5lbC9hY3BpL2Jvb3QuYwo+PiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmMKPj4g QEAgLTQ4LDYgKzQ4LDEwIEBACj4+ICAjaW5jbHVkZSA8YXNtL21wc3BlYy5oPgo+PiAgI2luY2x1 ZGUgPGFzbS9zbXAuaD4KPj4gICNpbmNsdWRlIDxhc20vaTgyNTkuaD4KPj4gKyNpZmRlZiBDT05G SUdfQU1EX01FTV9FTkNSWVBUCj4+ICsjaW5jbHVkZSA8bGludXgvY3Jhc2hfZHVtcC5oPgo+PiAr I2luY2x1ZGUgPGxpbnV4L21lbV9lbmNyeXB0Lmg+Cj4+ICsjZW5kaWYKPj4gIAo+PiAgI2luY2x1 ZGUgInNsZWVwLmgiIC8qIFRvIGluY2x1ZGUgeDg2X2FjcGlfc3VzcGVuZF9sb3dsZXZlbCAqLwo+ PiAgc3RhdGljIGludCBfX2luaXRkYXRhIGFjcGlfZm9yY2UgPSAwOwo+PiBAQCAtMTI0LDYgKzEy OCwxMCBAQCB2b2lkIF9faW5pdCBfX2lvbWVtICpfX2FjcGlfbWFwX3RhYmxlKHVuc2lnbmVkIGxv bmcgcGh5cywgdW5zaWduZWQgbG9uZyBzaXplKQo+PiAgCWlmICghcGh5cyB8fCAhc2l6ZSkKPj4g IAkJcmV0dXJuIE5VTEw7Cj4+ICAKPj4gKyNpZmRlZiBDT05GSUdfQU1EX01FTV9FTkNSWVBUCj4+ ICsJaWYgKHNtZV9hY3RpdmUoKSAmJiBpc19rZHVtcF9rZXJuZWwoKSkKPj4gKwkJcmV0dXJuIGVh cmx5X21lbXJlbWFwX2RlY3J5cHRlZChwaHlzLCBzaXplKTsKPj4gKyNlbmRpZgo+IAo+IFNhbWUg YXMgcHJldmlvdXMgY29tbWVudChzKS4KPiAKPj4gIAlyZXR1cm4gZWFybHlfbWVtcmVtYXAocGh5 cywgc2l6ZSk7Cj4+ICB9Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcmFz aF9kdW1wXzY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3Jhc2hfZHVtcF82NC5jCj4+IGluZGV4IDRm MmUwNzcuLjJlZjY3ZmMgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcmFzaF9kdW1w XzY0LmMKPj4gKysrIGIvYXJjaC94ODYva2VybmVsL2NyYXNoX2R1bXBfNjQuYwo+PiBAQCAtNDgs MyArNDgsMzAgQEAgc3NpemVfdCBjb3B5X29sZG1lbV9wYWdlKHVuc2lnbmVkIGxvbmcgcGZuLCBj aGFyICpidWYsCj4+ICAJaW91bm1hcCh2YWRkcik7Cj4+ICAJcmV0dXJuIGNzaXplOwo+PiAgfQo+ PiArCj4+ICsjaWZkZWYgQ09ORklHX0FNRF9NRU1fRU5DUllQVAo+PiArc3NpemVfdCBjb3B5X29s ZG1lbV9wYWdlX2VuY3J5cHRlZCh1bnNpZ25lZCBsb25nIHBmbiwgY2hhciAqYnVmLAo+PiArCQlz aXplX3QgY3NpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbnQgdXNlcmJ1ZikKPj4gK3sKPj4g Kwl2b2lkICAqdmFkZHI7Cj4+ICsKPj4gKwlpZiAoIWNzaXplKQo+PiArCQlyZXR1cm4gMDsKPj4g Kwo+PiArCXZhZGRyID0gaW9yZW1hcF9lbmNyeXB0ZWQocGZuIDw8IFBBR0VfU0hJRlQsIFBBR0Vf U0laRSk7Cj4+ICsJaWYgKCF2YWRkcikKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlp ZiAodXNlcmJ1Zikgewo+PiArCQlpZiAoY29weV90b191c2VyKGJ1ZiwgdmFkZHIgKyBvZmZzZXQs IGNzaXplKSkgewo+PiArCQkJaW91bm1hcCh2YWRkcik7Cj4+ICsJCQlyZXR1cm4gLUVGQVVMVDsK Pj4gKwkJfQo+PiArCX0gZWxzZQo+PiArCQltZW1jcHkoYnVmLCB2YWRkciArIG9mZnNldCwgY3Np emUpOwo+PiArCj4+ICsJc2V0X2lvdW5tYXBfbm9ubGF6eSgpOwo+PiArCWlvdW5tYXAodmFkZHIp Owo+PiArCXJldHVybiBjc2l6ZTsKPj4gK30KPj4gKyNlbmRpZgo+IAo+IFRoaXMgc2VlbXMgZXhh Y3RseSB0aGUgc2FtZSBhcyBjb3B5X29sZG1lbV9wYWdlKCkgd2l0aCB0aGUgZGlmZmVyZW5jZQo+ IGJlaW5nIHRoZSB0eXBlIG9mIGlvcmVtYXAgZG9uZS4gIE1pZ2h0IGJlIGJldHRlciB0byBtYWtl IHRoZSBjb2RlCj4gYWZ0ZXIgdGhlIGlvcmVtYXAncyBhIGNvbW1vbiBwaWVjZSBvZiBjb2RlIHRo YXQgZWFjaCBvZiB0aGUgY29weV9vbGRtZW0KPiBmdW5jdGlvbnMgd291bGQgY2FsbC4KPiAKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90YWJsZXMuYyBiL2RyaXZlcnMvYWNwaS90YWJsZXMu Ywo+PiBpbmRleCA4NDljNGZiLi42ZGE5YjBjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2FjcGkv dGFibGVzLmMKPj4gKysrIGIvZHJpdmVycy9hY3BpL3RhYmxlcy5jCj4+IEBAIC0zNiw2ICszNiwx MCBAQAo+PiAgI2luY2x1ZGUgPGxpbnV4L21lbWJsb2NrLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgv aW5pdHJkLmg+Cj4+ICAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPj4gKyNpZmRlZiBDT05GSUdfQU1E X01FTV9FTkNSWVBUCj4+ICsjaW5jbHVkZSA8bGludXgvY3Jhc2hfZHVtcC5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L21lbV9lbmNyeXB0Lmg+Cj4+ICsjZW5kaWYKPj4gIAo+PiAgI2lmZGVmIENPTkZJ R19BQ1BJX0NVU1RPTV9EU0RUCj4+ICAjaW5jbHVkZSBDT05GSUdfQUNQSV9DVVNUT01fRFNEVF9G SUxFCj4+IEBAIC01NjYsNyArNTcwLDE1IEBAIHZvaWQgX19pbml0IGFjcGlfdGFibGVfdXBncmFk ZSh2b2lkKQo+PiAgCQkJY2xlbiA9IHNpemU7Cj4+ICAJCQlpZiAoY2xlbiA+IE1BUF9DSFVOS19T SVpFIC0gc2xvcCkKPj4gIAkJCQljbGVuID0gTUFQX0NIVU5LX1NJWkUgLSBzbG9wOwo+PiAtCQkJ ZGVzdF9wID0gZWFybHlfbWVtcmVtYXAoZGVzdF9hZGRyICYgUEFHRV9NQVNLLAo+PiArI2lmZGVm IENPTkZJR19BTURfTUVNX0VOQ1JZUFQKPj4gKwkJCWlmIChzbWVfYWN0aXZlKCkgJiYgaXNfa2R1 bXBfa2VybmVsKCkpCj4+ICsJCQkJZGVzdF9wID0gZWFybHlfbWVtcmVtYXBfZGVjcnlwdGVkKAo+ PiArCQkJCQkJZGVzdF9hZGRyICYgUEFHRV9NQVNLLAo+PiArCQkJCQkJY2xlbiArIHNsb3ApOwo+ PiArCQkJZWxzZQo+PiArI2VuZGlmCj4+ICsJCQkJZGVzdF9wID0gZWFybHlfbWVtcmVtYXAoCj4+ ICsJCQkJCQlkZXN0X2FkZHIgJiBQQUdFX01BU0ssCj4gCj4gU28gaWYgdGhlIGRlc3RfYWRkciAo YmFzZWQgb2ZmIG9mIGFjcGlfdGFibGVzX2FkZHIpIHdhcyBhZGRlZCB0byB0aGUgZTgyMAo+IG1h cCBhcyBhbiBBQ1BJIGFyZWEgKHdoaWNoIGl0IHdpbGwgYmUpLCB0aGVuIGl0IHdvdWxkIGJlIG1h cHBlZCBwcm9wZXJseQo+IChpbiBib3RoIFNNRSBhbmQgU0VWKSB3aXRob3V0IG5lZWRpbmcgdGhl IGlmL3RoZW4vZWxzZS4KPiAKCj4+ICAJCQkJCQljbGVuICsgc2xvcCk7Cj4+ICAJCQltZW1jcHko ZGVzdF9wICsgc2xvcCwgc3JjX3AsIGNsZW4pOwo+PiAgCQkJZWFybHlfbWVtdW5tYXAoZGVzdF9w LCBjbGVuICsgc2xvcCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZF9pb21tdV9p bml0LmMgYi9kcml2ZXJzL2lvbW11L2FtZF9pb21tdV9pbml0LmMKPj4gaW5kZXggOTA0YzU3NS4u OGVjYmRkYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9pb21tdS9hbWRfaW9tbXVfaW5pdC5jCj4+ ICsrKyBiL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11X2luaXQuYwo+PiBAQCAtODg5LDExICs4ODks MTggQEAgc3RhdGljIGJvb2wgY29weV9kZXZpY2VfdGFibGUodm9pZCkKPj4gIAl9Cj4+ICAKPj4g IAlvbGRfZGV2dGJfcGh5cyA9IGVudHJ5ICYgUEFHRV9NQVNLOwo+PiArCWlmIChzbWVfYWN0aXZl KCkgJiYgaXNfa2R1bXBfa2VybmVsKCkpCj4gCj4gVXNlIG1lbV9lbmNyeXB0X2FjdGl2ZSgpIGhl cmUgdG8gY292ZXIgYm90aCBTTUUgYW5kIFNFVi4KPiAKPj4gKwkJb2xkX2RldnRiX3BoeXMgPSBf X3NtZV9jbHIob2xkX2RldnRiX3BoeXMpOwo+PiAgCWlmIChvbGRfZGV2dGJfcGh5cyA+PSAweDEw MDAwMDAwMFVMTCkgewo+PiAgCQlwcl9lcnIoIlRoZSBhZGRyZXNzIG9mIG9sZCBkZXZpY2UgdGFi bGUgaXMgYWJvdmUgNEcsIG5vdCB0cnVzdHdvcnRoeSFcbiIpOwo+PiAgCQlyZXR1cm4gZmFsc2U7 Cj4+ICAJfQo+PiAtCW9sZF9kZXZ0YiA9IG1lbXJlbWFwKG9sZF9kZXZ0Yl9waHlzLCBkZXZfdGFi bGVfc2l6ZSwgTUVNUkVNQVBfV0IpOwo+PiArCWlmIChzbWVfYWN0aXZlKCkgJiYgaXNfa2R1bXBf a2VybmVsKCkpCj4+ICsJCW9sZF9kZXZ0YiA9IGlvcmVtYXBfZW5jcnlwdGVkKG9sZF9kZXZ0Yl9w aHlzLAo+PiArCQkJCQlkZXZfdGFibGVfc2l6ZSk7Cj4+ICsJZWxzZQo+PiArCQlvbGRfZGV2dGIg PSBtZW1yZW1hcChvbGRfZGV2dGJfcGh5cywKPj4gKwkJCQkJZGV2X3RhYmxlX3NpemUsIE1FTVJF TUFQX1dCKTsKPiAKPiBXaGF0IGhhcHBlbnMgdG8gdGhlIG1lbXJlbWFwIGhlcmUsIGRvZXMgaXQg ZmFsbCBiYWNrIHRvIHRoZSBpb3JlbWFwIGFuZAo+IGVuZCB1cCBnZXR0aW5nIG1hcHBlZCBkZWNy eXB0ZWQ/ICBJdCB3b3VsZCBiZSBuaWNlIHRvIGRvIHRoZSByaWdodCB0aGluZwo+IHVuZGVyIHRo ZSBjb3ZlcnMgb2YgbWVtcmVtYXAuICBOb3Qgc3VyZSB3aGF0IHRoYXQgd291bGQgdGFrZSwgYnV0 IGl0IHdvdWxkCj4ga2VlcCB0aGUgY29kZSBuaWNlIGFuZCBjbGVhbi4KPiAKPj4gIAlpZiAoIW9s ZF9kZXZ0YikKPj4gIAkJcmV0dXJuIGZhbHNlOwo+PiAgCj4+IGRpZmYgLS1naXQgYS9mcy9wcm9j L3ZtY29yZS5jIGIvZnMvcHJvYy92bWNvcmUuYwo+PiBpbmRleCBhNDVmMGFmLi4zMTZlMmIwIDEw MDY0NAo+PiAtLS0gYS9mcy9wcm9jL3ZtY29yZS5jCj4+ICsrKyBiL2ZzL3Byb2Mvdm1jb3JlLmMK Pj4gQEAgLTI1LDYgKzI1LDEwIEBACj4+ICAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgo+PiAg I2luY2x1ZGUgPGFzbS9pby5oPgo+PiAgI2luY2x1ZGUgImludGVybmFsLmgiCj4+ICsjaWZkZWYg Q09ORklHX0FNRF9NRU1fRU5DUllQVAo+PiArI2luY2x1ZGUgPGxpbnV4L21lbV9lbmNyeXB0Lmg+ Cj4+ICsjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KPj4gKyNlbmRpZgo+PiAgCj4+ICAvKiBMaXN0 IHJlcHJlc2VudGluZyBjaHVua3Mgb2YgY29udGlndW91cyBtZW1vcnkgYXJlYXMgYW5kIHRoZWly IG9mZnNldHMgaW4KPj4gICAqIHZtY29yZSBmaWxlLgo+PiBAQCAtODYsNyArOTAsOCBAQCBzdGF0 aWMgaW50IHBmbl9pc19yYW0odW5zaWduZWQgbG9uZyBwZm4pCj4+ICAKPj4gIC8qIFJlYWRzIGEg cGFnZSBmcm9tIHRoZSBvbGRtZW0gZGV2aWNlIGZyb20gZ2l2ZW4gb2Zmc2V0LiAqLwo+PiAgc3Rh dGljIHNzaXplX3QgcmVhZF9mcm9tX29sZG1lbShjaGFyICpidWYsIHNpemVfdCBjb3VudCwKPj4g LQkJCQl1NjQgKnBwb3MsIGludCB1c2VyYnVmKQo+PiArCQkJCXU2NCAqcHBvcywgaW50IHVzZXJi dWYsCj4+ICsJCQkJYm9vbCBlbmNyeXB0ZWQpCj4+ICB7Cj4+ICAJdW5zaWduZWQgbG9uZyBwZm4s IG9mZnNldDsKPj4gIAlzaXplX3QgbnJfYnl0ZXM7Cj4+IEBAIC0xMDgsOCArMTEzLDE1IEBAIHN0 YXRpYyBzc2l6ZV90IHJlYWRfZnJvbV9vbGRtZW0oY2hhciAqYnVmLCBzaXplX3QgY291bnQsCj4+ ICAJCWlmIChwZm5faXNfcmFtKHBmbikgPT0gMCkKPj4gIAkJCW1lbXNldChidWYsIDAsIG5yX2J5 dGVzKTsKPj4gIAkJZWxzZSB7Cj4+IC0JCQl0bXAgPSBjb3B5X29sZG1lbV9wYWdlKHBmbiwgYnVm LCBucl9ieXRlcywKPj4gKyNpZmRlZiBDT05GSUdfQU1EX01FTV9FTkNSWVBUCj4+ICsJCQlpZiAo ZW5jcnlwdGVkKQo+PiArCQkJCXRtcCA9IGNvcHlfb2xkbWVtX3BhZ2VfZW5jcnlwdGVkKHBmbiwg YnVmLAo+PiArCQkJCQkgICAgICAgbnJfYnl0ZXMsIG9mZnNldCwgdXNlcmJ1Zik7Cj4+ICsJCQll bHNlCj4+ICsjZW5kaWYKPj4gKwkJCQl0bXAgPSBjb3B5X29sZG1lbV9wYWdlKHBmbiwgYnVmLCBu cl9ieXRlcywKPj4gIAkJCQkJCW9mZnNldCwgdXNlcmJ1Zik7PiArCj4+ICAJCQlpZiAodG1wIDwg MCkKPj4gIAkJCQlyZXR1cm4gdG1wOwo+PiAgCQl9Cj4+IEBAIC0xNDMsNyArMTU1LDcgQEAgdm9p ZCBfX3dlYWsgZWxmY29yZWhkcl9mcmVlKHVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyKQo+PiAgICov Cj4+ICBzc2l6ZV90IF9fd2VhayBlbGZjb3JlaGRyX3JlYWQoY2hhciAqYnVmLCBzaXplX3QgY291 bnQsIHU2NCAqcHBvcykKPj4gIHsKPj4gLQlyZXR1cm4gcmVhZF9mcm9tX29sZG1lbShidWYsIGNv dW50LCBwcG9zLCAwKTsKPj4gKwlyZXR1cm4gcmVhZF9mcm9tX29sZG1lbShidWYsIGNvdW50LCBw cG9zLCAwLCBmYWxzZSk7Cj4gCj4gRm9yIFNFViwgdGhpcyB3aWxsIGxpa2VseSBiZSBlbmNyeXB0 ZWQsIHNvIHlvdSBjYW4gcHJvYmFibHkgcmVwbGFjZSB0aGUKPiAiZmFsc2UiIHdpdGggc2V2X2Fj dGl2ZSgpIHNvIHRoYXQgdW5kZXIgU01FIGl0IGlzIHVuLWVuY3J5cHRlZCBidXQgdW5kZXIKSXQn cyBmaW5lIHRvIHVzZSB0aGUgc2V2X2FjdGl2ZS4KVGhhbmtzLgo+IFNFViBpdCBpcyBlbmNyeXB0 ZWQuICBXaGVyZSBpcyB0aGUgZWxmY29yZWhkciBzdG9yZWQ/ICBJIHdvbmRlciBpZiBpdAo+IGNv dWxkIGJlIGNyZWF0ZWQgYXMgZW5jcnlwdGVkIHVuZGVyIFNNRSBhbmQgdGhlbiB5b3UgY291bGQg YWN0dWFsbHkgcmVtb3ZlCj4gdGhlIGVuY3J5cHRlZCBwYXJhbWV0ZXIgZnJvbSByZWFkX2Zyb21f b2xkbWVtKCkgYW5kIGFsd2F5cyBtYXAgZW5jcnlwdGVkLgo+IElmIFNNRSBvciBTRVYgYXJlIGFj dGl2ZSBpdCB3aWxsIGJlIG1hcHBlZCBlbmNyeXB0ZWQgYW5kIGlmIHRoZXkgYXJlbid0Cj4gdGhl biBpdCBpcyBtYXBwZWQgbm9ybWFsbHkuCj4gClRoYW5rIHlvdSwgVG9tLgpJdCBsb29rcyBsaWtl IHZlcnkgd2VsbCwgYnV0IGl0cyBwYWdlIGlzIGFjdHVhbGx5IGVuY3J5cHRlZCwgYmVjYXVzZSB3 ZSB3aWxsIGNvcHkgdGhlIGNvbnRlbnQKZnJvbSBlbmNyeXB0ZWQgYXJlYSh1c2VyIHNwYWNlKSB0 byB1bmVuY3J5cHRlZCBhcmVhKGtlcm5lbCBzcGFjZSksIHdoaWNoIGxlYWRzIHRvIGl0IGhhcwpj b21wbGV0ZWQgdGhlIGRlY3J5cHRpb24uIEkgcmVtZW1iZXIgaXQgaXMgbGlrZSB0aGlzLiBJdCBp cyBoYXJkIHRvIGRpc3Rpbmd1aXNoIHRoZSBjYXNlIHdoZW4Kd2UgbG9hZCBrZXJuZWwgaW1hZ2Ug YW5kIGluaXRyZCBieSBrZXhlYy4gTWF5YmUgaXQgd2lsbCBtYWtlIHRoZSBwcm9ibGVtIG1vcmUg Y29tcGxpY2F0ZWQuCgpJIGFtIHZlcnkgZ2xhZCB0aGF0IHlvdSBjYW4gaGVscCB0byByZXZpZXcg dGhpcyBwYXRjaC4gVGhlIHBhdGNoIHdpbGwgYmUgaW1wcm92ZWQgaW4gdGhlCnBhdGNoIHYyLiBI b3BlIHlvdSB3b3VsZCBsaWtlIHRvIGhlbHAgbWUgcmV2aWV3IHRoZSBwYXRjaGVzLgoKVGhhbmtz CkxpYW5ibwo+PiAgfQo+PiAgCj4+ICAvKgo+PiBAQCAtMTUxLDcgKzE2MywxMSBAQCBzc2l6ZV90 IF9fd2VhayBlbGZjb3JlaGRyX3JlYWQoY2hhciAqYnVmLCBzaXplX3QgY291bnQsIHU2NCAqcHBv cykKPj4gICAqLwo+PiAgc3NpemVfdCBfX3dlYWsgZWxmY29yZWhkcl9yZWFkX25vdGVzKGNoYXIg KmJ1Ziwgc2l6ZV90IGNvdW50LCB1NjQgKnBwb3MpCj4+ICB7Cj4+IC0JcmV0dXJuIHJlYWRfZnJv bV9vbGRtZW0oYnVmLCBjb3VudCwgcHBvcywgMCk7Cj4+ICsJYm9vbCBmbGFnID0gZmFsc2U7Cj4+ ICsjaWZkZWYgQ09ORklHX0FNRF9NRU1fRU5DUllQVAo+PiArCWZsYWcgPSBzbWVfYWN0aXZlKCk7 Cj4+ICsjZW5kaWYKPj4gKwlyZXR1cm4gcmVhZF9mcm9tX29sZG1lbShidWYsIGNvdW50LCBwcG9z LCAwLCBmbGFnKTsKPj4gIH0KPj4gIAo+PiAgLyoKPj4gQEAgLTE2MSw2ICsxNzcsMTAgQEAgaW50 IF9fd2VhayByZW1hcF9vbGRtZW1fcGZuX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LAo+PiAgCQkJCSAgdW5zaWduZWQgbG9uZyBmcm9tLCB1bnNpZ25lZCBsb25nIHBmbiwKPj4gIAkJ CQkgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgcHJvdCkKPj4gIHsKPj4gKyNpZmRlZiBD T05GSUdfQU1EX01FTV9FTkNSWVBUCj4+ICsJaWYgKHNtZV9hY3RpdmUoKSkKPiAKPiBObyBuZWVk IGZvciB0aGUgc21lX2FjdGl2ZSgpIGNoZWNrIGhlcmUsIHRoZSBlbmNyeXB0aW9uIHdpbGwgYmUg YXBwbGllZCwKPiBmb3IgYm90aCBTTUUgYW5kIFNFViwgaWYgbWVtb3J5IGVuY3J5cHRpb24gaXMg YWN0aXZlLCBvdGhlcndpc2UgaXQgd29uJ3QuCj4gCj4+ICsJCXByb3QgPSBfX3BncHJvdChwZ3By b3RfdmFsKHByb3QpIHwgX1BBR0VfRU5DKTsKPiAKPiAgIHByb3QgPSBwZ3Byb3RfZW5jcnlwdGVk KHByb3QpOwo+IApHcmVhdC4gVGhhbmtzLgo+PiArI2VuZGlmPiAgCXJldHVybiByZW1hcF9wZm5f cmFuZ2Uodm1hLCBmcm9tLCBwZm4sIHNpemUsIHByb3QpOwo+PiAgfQo+PiAgCj4+IEBAIC0xODgs NiArMjA4LDExIEBAIHN0YXRpYyBzc2l6ZV90IF9fcmVhZF92bWNvcmUoY2hhciAqYnVmZmVyLCBz aXplX3QgYnVmbGVuLCBsb2ZmX3QgKmZwb3MsCj4+ICAJc2l6ZV90IHRzejsKPj4gIAl1NjQgc3Rh cnQ7Cj4+ICAJc3RydWN0IHZtY29yZSAqbSA9IE5VTEw7Cj4+ICsJYm9vbCBzbWVfZmxhZyA9IGZh bHNlOwo+PiArCj4+ICsjaWZkZWYgQ09ORklHX0FNRF9NRU1fRU5DUllQVAo+PiArCXNtZV9mbGFn ID0gc21lX2FjdGl2ZSgpOz4gKyNlbmRpZgo+IAo+IFByb2JhYmx5IGp1c3Qgd2FudCBtZW1fZW5j cnlwdF9hY3RpdmUoKSBoZXJlIHRvIGdldCBib3RoIFNNRSBhbmQgU0VWCj4gY2FzZXMgbWFwcGVk IGFzIGVuY3J5cHRlZC4KPiAKR3JlYXQuIFRoYW5rcy4KPiBUaGFua3MsCj4gVG9tCj4gCj4+ICAK Pj4gIAlpZiAoYnVmbGVuID09IDAgfHwgKmZwb3MgPj0gdm1jb3JlX3NpemUpCj4+ICAJCXJldHVy biAwOwo+PiBAQCAtMjM1LDcgKzI2MCw4IEBAIHN0YXRpYyBzc2l6ZV90IF9fcmVhZF92bWNvcmUo Y2hhciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuLCBsb2ZmX3QgKmZwb3MsCj4+ICAJCQkJCSAgICBt LT5vZmZzZXQgKyBtLT5zaXplIC0gKmZwb3MsCj4+ICAJCQkJCSAgICBidWZsZW4pOwo+PiAgCQkJ c3RhcnQgPSBtLT5wYWRkciArICpmcG9zIC0gbS0+b2Zmc2V0Owo+PiAtCQkJdG1wID0gcmVhZF9m cm9tX29sZG1lbShidWZmZXIsIHRzeiwgJnN0YXJ0LCB1c2VyYnVmKTsKPj4gKwkJCXRtcCA9IHJl YWRfZnJvbV9vbGRtZW0oYnVmZmVyLCB0c3osICZzdGFydCwKPj4gKwkJCQkJCXVzZXJidWYsIHNt ZV9mbGFnKTsKPj4gIAkJCWlmICh0bXAgPCAwKQo+PiAgCQkJCXJldHVybiB0bXA7Cj4+ICAJCQli dWZsZW4gLT0gdHN6Owo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcmFzaF9kdW1wLmgg Yi9pbmNsdWRlL2xpbnV4L2NyYXNoX2R1bXAuaAo+PiBpbmRleCBmN2FjMmFhLi4wMjRhZTllIDEw MDY0NAo+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2NyYXNoX2R1bXAuaAo+PiArKysgYi9pbmNsdWRl L2xpbnV4L2NyYXNoX2R1bXAuaAo+PiBAQCAtMjUsNiArMjUsMTAgQEAgZXh0ZXJuIGludCByZW1h cF9vbGRtZW1fcGZuX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+PiAgCj4+ICBl eHRlcm4gc3NpemVfdCBjb3B5X29sZG1lbV9wYWdlKHVuc2lnbmVkIGxvbmcsIGNoYXIgKiwgc2l6 ZV90LAo+PiAgCQkJCQkJdW5zaWduZWQgbG9uZywgaW50KTsKPj4gKyNpZmRlZiBDT05GSUdfQU1E X01FTV9FTkNSWVBUCj4+ICtleHRlcm4gc3NpemVfdCBjb3B5X29sZG1lbV9wYWdlX2VuY3J5cHRl ZCh1bnNpZ25lZCBsb25nLCBjaGFyICosIHNpemVfdCwKPj4gKwkJCQkJCXVuc2lnbmVkIGxvbmcs IGludCk7Cj4+ICsjZW5kaWYKPj4gIHZvaWQgdm1jb3JlX2NsZWFudXAodm9pZCk7Cj4+ICAKPj4g IC8qIEFyY2hpdGVjdHVyZSBjb2RlIGRlZmluZXMgdGhpcyBpZiB0aGVyZSBhcmUgb3RoZXIgcG9z c2libGUgRUxGCj4+IGRpZmYgLS1naXQgYS9rZXJuZWwva2V4ZWNfY29yZS5jIGIva2VybmVsL2tl eGVjX2NvcmUuYwo+PiBpbmRleCAyMGZlZjFhLi4zYzIyYTliIDEwMDY0NAo+PiAtLS0gYS9rZXJu ZWwva2V4ZWNfY29yZS5jCj4+ICsrKyBiL2tlcm5lbC9rZXhlY19jb3JlLmMKPj4gQEAgLTQ3MSw2 ICs0NzEsMTYgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpraW1hZ2VfYWxsb2NfY3Jhc2hfY29udHJv bF9wYWdlcyhzdHJ1Y3Qga2ltYWdlICppbWFnZSwKPj4gIAkJfQo+PiAgCX0KPj4gIAo+PiArCWlm IChwYWdlcykgewo+PiArCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7Cj4+ICsKPj4gKwkJcGFnZXMt Pm1hcHBpbmcgPSBOVUxMOwo+PiArCQlzZXRfcGFnZV9wcml2YXRlKHBhZ2VzLCBvcmRlcik7Cj4+ ICsJCWNvdW50ID0gMSA8PCBvcmRlcjsKPj4gKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKysp Cj4+ICsJCQlTZXRQYWdlUmVzZXJ2ZWQocGFnZXMgKyBpKTsKPj4gKwkJYXJjaF9rZXhlY19wb3N0 X2FsbG9jX3BhZ2VzKHBhZ2VfYWRkcmVzcyhwYWdlcyksIDEgPDwgb3JkZXIsIDApOwo+PiArCX0K Pj4gIAlyZXR1cm4gcGFnZXM7Cj4+ICB9Cj4+ICAKPj4gQEAgLTg2NSw2ICs4NzUsNyBAQCBzdGF0 aWMgaW50IGtpbWFnZV9sb2FkX2NyYXNoX3NlZ21lbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2UsCj4+ ICAJCQlyZXN1bHQgID0gLUVOT01FTTsKPj4gIAkJCWdvdG8gb3V0Owo+PiAgCQl9Cj4+ICsJCWFy Y2hfa2V4ZWNfcG9zdF9hbGxvY19wYWdlcyhwYWdlX2FkZHJlc3MocGFnZSksIDEsIDApOwo+PiAg CQlwdHIgPSBrbWFwKHBhZ2UpOwo+PiAgCQlwdHIgKz0gbWFkZHIgJiB+UEFHRV9NQVNLOwo+PiAg CQltY2h1bmsgPSBtaW5fdChzaXplX3QsIG1ieXRlcywKPj4gQEAgLTg4Miw2ICs4OTMsNyBAQCBz dGF0aWMgaW50IGtpbWFnZV9sb2FkX2NyYXNoX3NlZ21lbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2Us Cj4+ICAJCQlyZXN1bHQgPSBjb3B5X2Zyb21fdXNlcihwdHIsIGJ1ZiwgdWNodW5rKTsKPj4gIAkJ a2V4ZWNfZmx1c2hfaWNhY2hlX3BhZ2UocGFnZSk7Cj4+ICAJCWt1bm1hcChwYWdlKTsKPj4gKwkJ YXJjaF9rZXhlY19wcmVfZnJlZV9wYWdlcyhwYWdlX2FkZHJlc3MocGFnZSksIDEpOwo+PiAgCQlp ZiAocmVzdWx0KSB7Cj4+ICAJCQlyZXN1bHQgPSAtRUZBVUxUOwo+PiAgCQkJZ290byBvdXQ7Cj4+ CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBt YWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg==