From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 17/19] x86/hvm: Avoid __hvm_copy() raising #PF behind the emulators back Date: Mon, 28 Nov 2016 11:56:34 +0000 Message-ID: References: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> <1480331616-6165-18-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480331616-6165-18-git-send-email-andrew.cooper3@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Kevin Tian , "Tim (Xen.org)" , Jun Nakajima , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDI4IE5vdmVtYmVyIDIwMTYgMTE6 MTQKPiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3 IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IEphbiBCZXVsaWNoCj4gPEpCZXVs aWNoQHN1c2UuY29tPjsgUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IFRp bQo+IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBp bnRlbC5jb20+OyBLZXZpbgo+IFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgo+IFN1YmplY3Q6 IFtQQVRDSCB2MiAxNy8xOV0geDg2L2h2bTogQXZvaWQgX19odm1fY29weSgpIHJhaXNpbmcgI1BG IGJlaGluZAo+IHRoZSBlbXVsYXRvcnMgYmFjawo+IAo+IERyb3AgdGhlIGNhbGwgdG8gaHZtX2lu amVjdF9wYWdlX2ZhdWx0KCkgaW4gX19odm1fY29weSgpLCBhbmQgcmVxdWlyZQo+IGNhbGxlcnMK PiB0byBpbmplY3QgdGhlIHBhZ2VmYXVsdCB0aGVtc2VsdmVzLgo+IAo+IE5vIGZ1bmN0aW9uYWwg Y2hhbmdlLgoKVGhhdCdzIG5vdCB0aGUgd2F5IGl0IGxvb2tzIG9uIHRoZSBmYWNlIG9mIGl0LiBZ b3UndmUgaW5kZWVkIHJlbW92ZWQgdGhlIGNhbGwgdG8gaHZtX2luamVjdF9wYWdlX2ZhdWx0KCkg YnV0IHNvbWUgb2YgdGhlIGNhbGxlcnMgbm93IGNhbGwgeDg2X2VtdWxfcGFnZWZhdWx0KCkuIEkn ZCBjYWxsIHRoYXQgYSBmdW5jdGlvbmFsIGNoYW5nZS4uLiBjbGVhcmx5IHRoZSBjaGFuZ2UgeW91 IGludGVuZGVkLCBidXQgc3RpbGwgYSBmdW5jdGlvbmFsIGNoYW5nZS4KCiAgUGF1bAoKPiAKPiBT aWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ IC0tLQo+IENDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Cj4gQ0M6IFBhdWwgRHVy cmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gQ0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4u b3JnPgo+IENDOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+Cj4gQ0M6IEtl dmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvaHZt L2VtdWxhdGUuYyAgICAgICAgfCAgMiArKwo+ICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAg ICAgICAgfCAxMSArKysrKysrKystLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMgICAg ICAgfCAyMCArKysrKysrKysrKysrKystLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L2Nv bW1vbi5jICAgfCAgMSArCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaCB8ICA0 ICstLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgYi94ZW4vYXJj aC94ODYvaHZtL2VtdWxhdGUuYwo+IGluZGV4IGVmZDZkMzIuLmYwN2MwMjYgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2Vt dWxhdGUuYwo+IEBAIC03OTksNiArNzk5LDcgQEAgc3RhdGljIGludCBfX2h2bWVtdWxfcmVhZCgK PiAgICAgIGNhc2UgSFZNQ09QWV9va2F5Ogo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSBI Vk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOgo+ICsgICAgICAgIHg4Nl9lbXVsX3BhZ2VmYXVsdChwZmlu Zm8uZWMsIHBmaW5mby5saW5lYXIsICZodm1lbXVsX2N0eHQtPmN0eHQpOwo+ICAgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKPiAgICAgIGNhc2UgSFZNQ09QWV9iYWRfZ2ZuX3RvX21m bjoKPiAgICAgICAgICBpZiAoIGFjY2Vzc190eXBlID09IGh2bV9hY2Nlc3NfaW5zbl9mZXRjaCAp Cj4gQEAgLTkwNSw2ICs5MDYsNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfd3JpdGUoCj4gICAgICBj YXNlIEhWTUNPUFlfb2theToKPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgSFZNQ09QWV9i YWRfZ3ZhX3RvX2dmbjoKPiArICAgICAgICB4ODZfZW11bF9wYWdlZmF1bHQocGZpbmZvLmVjLCBw ZmluZm8ubGluZWFyLCAmaHZtZW11bF9jdHh0LT5jdHh0KTsKPiAgICAgICAgICByZXR1cm4gWDg2 RU1VTF9FWENFUFRJT047Cj4gICAgICBjYXNlIEhWTUNPUFlfYmFkX2dmbl90b19tZm46Cj4gICAg ICAgICAgcmV0dXJuIGh2bWVtdWxfbGluZWFyX21taW9fd3JpdGUoYWRkciwgYnl0ZXMsIHBfZGF0 YSwgcGZlYywKPiBodm1lbXVsX2N0eHQsIDApOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv aHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IGluZGV4IDM3ZWFlZTIuLmNlNzc1 MjAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMKPiBAQCAtMjkyNyw2ICsyOTI3LDggQEAgdm9pZCBodm1fdGFza19zd2l0 Y2goCj4gCj4gICAgICByYyA9IGh2bV9jb3B5X2Zyb21fZ3Vlc3RfbGluZWFyKAo+ICAgICAgICAg ICZ0c3MsIHByZXZfdHIuYmFzZSwgc2l6ZW9mKHRzcyksIFBGRUNfcGFnZV9wcmVzZW50LCAmcGZp bmZvKTsKPiArICAgIGlmICggcmMgPT0gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbiApCj4gKyAgICAg ICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7Cj4gICAg ICBpZiAoIHJjICE9IEhWTUNPUFlfb2theSApCj4gICAgICAgICAgZ290byBvdXQ7Cj4gCj4gQEAg LTI5NjUsMTEgKzI5NjcsMTUgQEAgdm9pZCBodm1fdGFza19zd2l0Y2goCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlb2YodHNzKSwgdHJhY2UpIC0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVvZih0c3MpLCBl aXApLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZFQ19wYWdlX3ByZXNl bnQsICZwZmluZm8pOwo+ICsgICAgaWYgKCByYyA9PSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuICkK PiArICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFy KTsKPiAgICAgIGlmICggcmMgIT0gSFZNQ09QWV9va2F5ICkKPiAgICAgICAgICBnb3RvIG91dDsK PiAKPiAgICAgIHJjID0gaHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIoCj4gICAgICAgICAgJnRz cywgdHIuYmFzZSwgc2l6ZW9mKHRzcyksIFBGRUNfcGFnZV9wcmVzZW50LCAmcGZpbmZvKTsKPiAr ICAgIGlmICggcmMgPT0gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbiApCj4gKyAgICAgICAgaHZtX2lu amVjdF9wYWdlX2ZhdWx0KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7Cj4gICAgICAvKgo+ICAg ICAgICogTm90ZTogVGhlIEhWTUNPUFlfZ2ZuX3NoYXJlZCBjYXNlIGNvdWxkIGJlIG9wdGltaXNl ZCwgaWYgdGhlIGNhbGxlZQo+ICAgICAgICogZnVuY3Rpb25zIGtuZXcgd2Ugd2FudCBSTyBhY2Nl c3MuCj4gQEAgLTMwMTIsNyArMzAxOCwxMCBAQCB2b2lkIGh2bV90YXNrX3N3aXRjaCgKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHNzLmJhY2tfbGluaywgc2l6ZW9m KHRzcy5iYWNrX2xpbmspLCAwLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZwZmluZm8pOwo+ICAgICAgICAgIGlmICggcmMgPT0gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dm biApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZp bmZvLmVjLCBwZmluZm8ubGluZWFyKTsKPiAgICAgICAgICAgICAgZXhuX3JhaXNlZCA9IDE7Cj4g KyAgICAgICAgfQo+ICAgICAgICAgIGVsc2UgaWYgKCByYyAhPSBIVk1DT1BZX29rYXkgKQo+ICAg ICAgICAgICAgICBnb3RvIG91dDsKPiAgICAgIH0KPiBAQCAtMzExNCw4ICszMTIzLDYgQEAgc3Rh dGljIGVudW0gaHZtX2NvcHlfcmVzdWx0IF9faHZtX2NvcHkoCj4gICAgICAgICAgICAgICAgICB7 Cj4gICAgICAgICAgICAgICAgICAgICAgcGZpbmZvLT5saW5lYXIgPSBhZGRyOwo+ICAgICAgICAg ICAgICAgICAgICAgIHBmaW5mby0+ZWMgPSBwZmVjOwo+IC0KPiAtICAgICAgICAgICAgICAgICAg ICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZlYywgYWRkcik7Cj4gICAgICAgICAgICAgICAgICB9 Cj4gICAgICAgICAgICAgICAgICByZXR1cm4gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbjsKPiAgICAg ICAgICAgICAgfQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKPiBi L3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwo+IGluZGV4IGZkN2VhMGEuLmU2ZTllYmQgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCj4gKysrIGIveGVuL2FyY2gv eDg2L2h2bS92bXgvdnZteC5jCj4gQEAgLTM5Niw3ICszOTYsNiBAQCBzdGF0aWMgaW50IGRlY29k ZV92bXhfaW5zdChzdHJ1Y3QgY3B1X3VzZXJfcmVncwo+ICpyZWdzLAo+ICAgICAgc3RydWN0IHZj cHUgKnYgPSBjdXJyZW50Owo+ICAgICAgdW5pb24gdm14X2luc3RfaW5mbyBpbmZvOwo+ICAgICAg c3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgc2VnOwo+IC0gICAgcGFnZWZhdWx0X2luZm9fdCBwZmlu Zm87Cj4gICAgICB1bnNpZ25lZCBsb25nIGJhc2UsIGluZGV4LCBzZWdfYmFzZSwgZGlzcCwgb2Zm c2V0Owo+ICAgICAgaW50IHNjYWxlLCBzaXplOwo+IAo+IEBAIC00NTEsMTAgKzQ1MCwxNyBAQCBz dGF0aWMgaW50IGRlY29kZV92bXhfaW5zdChzdHJ1Y3QgY3B1X3VzZXJfcmVncwo+ICpyZWdzLAo+ ICAgICAgICAgICAgICAgIG9mZnNldCArIHNpemUgLSAxID4gc2VnLmxpbWl0KSApCj4gICAgICAg ICAgICAgIGdvdG8gZ3BfZmF1bHQ7Cj4gCj4gLSAgICAgICAgaWYgKCBwb3BlcmFuZFMgIT0gTlVM TCAmJgo+IC0gICAgICAgICAgICAgaHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIocG9wZXJhbmRT LCBiYXNlLCBzaXplLCAwLCAmcGZpbmZvKQo+IC0gICAgICAgICAgICAgICAgICAhPSBIVk1DT1BZ X29rYXkgKQo+IC0gICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047Cj4gKyAgICAg ICAgaWYgKCBwb3BlcmFuZFMgIT0gTlVMTCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBw YWdlZmF1bHRfaW5mb190IHBmaW5mbzsKPiArICAgICAgICAgICAgaW50IHJjID0gaHZtX2NvcHlf ZnJvbV9ndWVzdF9saW5lYXIocG9wZXJhbmRTLCBiYXNlLCBzaXplLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAmcGZpbmZvKTsKPiArCj4gKyAg ICAgICAgICAgIGlmICggcmMgPT0gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbiApCj4gKyAgICAgICAg ICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyKTsK PiArICAgICAgICAgICAgaWYgKCByYyAhPSBIVk1DT1BZX29rYXkgKQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+ICsgICAgICAgIH0KPiAgICAgICAgICBkZWNv ZGUtPm1lbSA9IGJhc2U7Cj4gICAgICAgICAgZGVjb2RlLT5sZW4gPSBzaXplOwo+ICAgICAgfQo+ IEBAIC0xNjIzLDYgKzE2MjksOCBAQCBpbnQgbnZteF9oYW5kbGVfdm1wdHJzdChzdHJ1Y3QgY3B1 X3VzZXJfcmVncwo+ICpyZWdzKQo+ICAgICAgZ3BhID0gbnZjcHUtPm52X3Z2bWN4YWRkcjsKPiAK PiAgICAgIHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3RfbGluZWFyKGRlY29kZS5tZW0sICZncGEsIGRl Y29kZS5sZW4sIDAsCj4gJnBmaW5mbyk7Cj4gKyAgICBpZiAoIHJjID09IEhWTUNPUFlfYmFkX2d2 YV90b19nZm4gKQo+ICsgICAgICAgIGh2bV9pbmplY3RfcGFnZV9mYXVsdChwZmluZm8uZWMsIHBm aW5mby5saW5lYXIpOwo+ICAgICAgaWYgKCByYyAhPSBIVk1DT1BZX29rYXkgKQo+ICAgICAgICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKPiAKPiBAQCAtMTY5NCw2ICsxNzAyLDggQEAgaW50 IG52bXhfaGFuZGxlX3ZtcmVhZChzdHJ1Y3QgY3B1X3VzZXJfcmVncwo+ICpyZWdzKQo+ICAgICAg c3dpdGNoICggZGVjb2RlLnR5cGUgKSB7Cj4gICAgICBjYXNlIFZNWF9JTlNUX01FTVJFR19UWVBF X01FTU9SWToKPiAgICAgICAgICByYyA9IGh2bV9jb3B5X3RvX2d1ZXN0X2xpbmVhcihkZWNvZGUu bWVtLCAmdmFsdWUsIGRlY29kZS5sZW4sIDAsCj4gJnBmaW5mbyk7Cj4gKyAgICAgICAgaWYgKCBy YyA9PSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuICkKPiArICAgICAgICAgICAgaHZtX2luamVjdF9w YWdlX2ZhdWx0KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7Cj4gICAgICAgICAgaWYgKCByYyAh PSBIVk1DT1BZX29rYXkgKQo+ICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047 Cj4gICAgICAgICAgYnJlYWs7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMKPiBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiBpbmRleCAwNzYw ZTc2Li5mYmU0OWUxIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9u LmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gQEAgLTE5OCw2ICsx OTgsNyBAQCBodm1fcmVhZChlbnVtIHg4Nl9zZWdtZW50IHNlZywKPiAgICAgIGNhc2UgSFZNQ09Q WV9va2F5Ogo+ICAgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7Cj4gICAgICBjYXNlIEhWTUNP UFlfYmFkX2d2YV90b19nZm46Cj4gKyAgICAgICAgeDg2X2VtdWxfcGFnZWZhdWx0KHBmaW5mby5l YywgcGZpbmZvLmxpbmVhciwgJnNoX2N0eHQtPmN0eHQpOwo+ICAgICAgICAgIHJldHVybiBYODZF TVVMX0VYQ0VQVElPTjsKPiAgICAgIGNhc2UgSFZNQ09QWV9iYWRfZ2ZuX3RvX21mbjoKPiAgICAg IGNhc2UgSFZNQ09QWV91bmhhbmRsZWFibGU6Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3N1cHBvcnQuaCBiL3hlbi9pbmNsdWRlL2FzbS0KPiB4ODYvaHZtL3N1cHBvcnQu aAo+IGluZGV4IDc4MzQ5ZjguLjNkNzY3ZDcgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vc3VwcG9ydC5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9y dC5oCj4gQEAgLTg1LDkgKzg1LDcgQEAgZW51bSBodm1fY29weV9yZXN1bHQgaHZtX2NvcHlfZnJv bV9ndWVzdF9waHlzKAo+ICAgKiAgSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbjogU29tZSBndWVzdCB2 aXJ0dWFsIGFkZHJlc3MgZGlkIG5vdCBoYXZlIGEKPiB2YWxpZAo+ICAgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgbWFwcGluZyB0byBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MuICBUaGUKPiAg ICogICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VmYXVsdF9pbmZvX3Qgc3RydWN0dXJlIHdp bGwgYmUgZmlsbGVkIGluIGlmCj4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRl ZCwgYW5kIGEgcGFnZSBmYXVsdCBleGNlcHRpb24gaXMKPiAtICogICAgICAgICAgICAgICAgICAg ICAgICAgIGF1dG9tYXRpY2FsbHkgcXVldWVkIGZvciBpbmplY3Rpb24gaW50byB0aGUKPiAtICog ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgSFZNIFZDUFUuCj4gKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm92aWRlZC4KPiAgICovCj4gIHR5cGVkZWYgc3RydWN0IHBhZ2Vm YXVsdF9pbmZvCj4gIHsKPiAtLQo+IDIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==