From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: Re: [PATCH RESEND 3/4] qdisk, hw/block/xen_disk: Perform grant copy instead of grant map. Date: Wed, 01 Jun 2016 09:52:58 +0200 Message-ID: <1464767578.8602.19.camel@localhost> References: <1464669898-28495-1-git-send-email-paulinaszubarczyk@gmail.com> <1464669898-28495-4-git-send-email-paulinaszubarczyk@gmail.com> <0235970d-7dc4-4f39-3f88-483f9065aed1@cantab.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b80yV-00034p-CF for xen-devel@lists.xenproject.org; Wed, 01 Jun 2016 07:53:59 +0000 Received: by mail-lf0-f66.google.com with SMTP id w16so1079756lfd.0 for ; Wed, 01 Jun 2016 00:53:57 -0700 (PDT) In-Reply-To: <0235970d-7dc4-4f39-3f88-483f9065aed1@cantab.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: David Vrabel Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, ian.jackson@eu.citrix.com, P.Gawkowski@ii.pw.edu.pl, anthony.perard@citrix.com, xen-devel@lists.xenproject.org, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAyMDE2LTA1LTMxIGF0IDEwOjM3ICswMTAwLCBEYXZpZCBWcmFiZWwgd3JvdGU6Cj4g T24gMzEvMDUvMjAxNiAwNTo0NCwgUGF1bGluYSBTenViYXJjenlrIHdyb3RlOgo+ID4gR3JhbnQg Y29weSBvcGVyYXRpb24gaXMgZGl2aWRlZCBpbnRvIHR3byBwaGFzZXMgZGlmZmVyZW50IGZvcgo+ ID4gJ3JlYWQnIGFuZCAnd3JpdGUnIG9wZXJhdGlvbi4KPiA+IAo+ID4gRm9yIGEgJ3JlYWQnIG9w ZXJhdGlvbiB0aGUgZmxvdyBpcyBhcyBmb2xsb3c6Cj4gPiAgICAgMS4gYWxsb2NhdGUgbG9jYWwg YnVmZmVycyBmb3IgYWxsIHRoZSBzZWdtZW50cyBjb250YWluZWQgaW4KPiA+ICAgICAgICBhIHJl cXVlc3QuCj4gCj4gQWxsb2NhdGluZyBidWZmZXJzIHBhZ2UtYnktcGFnZSBsb29rcyBzdWItb3B0 aW1hbCB0byBtZS4gIFdoeSBub3QKPiBhbGxvY2F0ZSBvbmUgbGFyZ2UgYnVmZmVyIGZvciB0aGUg d2hvbGUgcmVxdWVzdD8KSSB0aG91Z2h0IGFib3V0IGNhY2hpbmcgdGhlIHBhZ2VzIGFuZCByZXVz ZSB0aGVtIGlmIHRoZXJlIGFyZSBtb3JlIHJlcXVlc3QuIApJIGRpZCB0aGUgY2hhbmdlIGluIHRo ZSBuZXh0IHBhdGNoIDQvNC4gCgo+ID4gICAgIDIuIGZpbGwgdGhlIHJlcXVlc3QgaW8gdmVjdG9y cyB3aXRoIHRoZSBidWZmZXJzJyBhZGRyZXNzZXMKPiA+ICAgICAzLiBpbnZva2UgcmVhZCBvcGVy YXRpb24gYnkgcWVtdSBkZXZpY2UKPiA+ICAgICA0LiBpbiB0aGUgY29tcGxldGl0aW9uIGNhbGwg Z3JhbnQgY29weQo+ID4gICAgIDUuIGZyZWUgdGhlIGJ1ZmZlcnMKPiA+IAo+ID4gRnVuY3Rpb24g J2lvcmVxX3JlYWRfaW5pdCcgaW1wbGVtZW50cyAxLiBhbmQgMi4gc3RlcC4gSXQgaXMgY2FsbGVk Cj4gPiBpbnN0ZWFkIG9mICdpb3JlcV9tYXAnIGluICdpb3JlcV9ydW5pb19xZW11X2FpbycuIFRo ZW4gdGhlIGZ1bmN0aW9uCj4gPiAnaW9yZXFfcnVuaW9fcWVtdV9haW8nIGNvbnRpbnVlcyB3aXRo b3V0aCBjaGFuZ2VzIHBlcmZvcm1pbmcgc3RlcCAzLgo+ID4gU3RlcHMgNC4gYW5kIDUuIGFyZSBj YWxsZWQgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uCj4gPiAncWVtdV9haW9fY29tcGxldGUnLiBU aGUgaW9yZXFfcmVhZCcgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgZm9yCj4gPiBzdGVwIDQgd2hp Y2ggY2FsbHMgdGhlIG5ldyBmdW5jdGlvbiAneGNfZ250dGFiX2NvcHlfZ3JhbnQnIHByZXNlbnRl ZAo+ID4gaW4gdGhlIG90aGVyIHBhcnQgb2YgdGhlIHBhdGNoLgo+ID4gCj4gPiBGb3IgYSAnd3Jp dGUnIG9wZXJhdGlvbiBzdGVwcyA0LiBoYXBwZW5zIGJlZm9yZSBzdGVwIDIuLiBGaXJzdCBkYXRh Cj4gPiBhcmUgY29waWVkIGZyb20gY2FsbGluZyBndWVzdCBkb21haW5zIGFuZCB0aGVuIHFlbXUg b3BlcmF0ZXMgb24KPiA+IHRoZW0uCj4gPiAtLS0KPiA+ICBody9ibG9jay94ZW5fZGlzay5jIHwg MTg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ICAxIGZpbGUgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMoKykKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMgYi9ody9ibG9jay94ZW5fZGlzay5jCj4gPiBpbmRleCAz Yjc4ODJlLi40M2NkOWM5IDEwMDY0NAo+ID4gLS0tIGEvaHcvYmxvY2sveGVuX2Rpc2suYwo+ID4g KysrIGIvaHcvYmxvY2sveGVuX2Rpc2suYwo+ID4gQEAgLTI4NCw2ICsyODQsMTU0IEBAIGVycjoK PiA+ICAgICAgcmV0dXJuIC0xOwo+ID4gIH0KPiA+ICAKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCog Z2V0X2J1ZmZlcih2b2lkKSB7Cj4gPiArICAgIHZvaWQgKmJ1ZjsKPiA+ICsKPiA+ICsgICAgYnVm ID0gbW1hcChOVUxMLCAxIDw8IFhDX1BBR0VfU0hJRlQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUs IAo+ID4gKyAgICAgICAgICAgICAgIE1BUF9TSEFSRUQgfCBNQVBfQU5PTllNT1VTLCAtMSwgMCk7 Cj4gPiArCj4gPiArICAgIGlmICh1bmxpa2VseShidWYgPT0gTUFQX0ZBSUxFRCkpCj4gPiArICAg ICAgICByZXR1cm4gTlVMTDsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIGJ1ZjsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIGludCBmcmVlX2J1ZmZlcih2b2lkKiBidWYpIHsKPiA+ICsgICAgcmV0dXJu IG11bm1hcChidWYsIDEgPDwgWENfUEFHRV9TSElGVCk7Cj4gCj4gSSB3b3VsZCBtYWtlIHRoaXMg dm9pZCBhbmQgYXNzZXJ0KCkgdGhlIG11bm1hcCBpcyBzdWNjZXNzZnVsIHNpbmNlIGlmCj4gYnVm IGlzIHZhbGlkIHRoZSBtdW5tYXAoKSBjYW5ub3QgZmFpbC4gIFRoaXMgbWVhbnMuLi4KPiAKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBmcmVlX2J1ZmZlcnModm9pZCoqIHBhZ2UsIGludCBj b3VudCkgCj4gCj4gVGhpcyBjYW4gYmUgdm9pZCBhbmQuLi4KPiAKPiA+ICt7Cj4gPiArICAgIGlu dCBpLCByID0gMDsKPiA+ICsKPiA+ICsgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsg Cj4gPiArICAgICAgICAKPiA+ICsgICAgICAgIGlmKGZyZWVfYnVmZmVyKHBhZ2VbaV0pKSAKPiA+ ICsgICAgICAgICAgICByID0gMTsKPiA+ICsgICAgICAgIAo+ID4gKyAgICAgICAgcGFnZVtpXSA9 IE5VTEw7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0dXJuIHI7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBpbnQgaW9yZXFfd3JpdGUoc3RydWN0IGlvcmVxICppb3JlcSkgCj4gPiArewo+ ID4gKyAgICBYZW5HbnR0YWIgZ250ID0gaW9yZXEtPmJsa2Rldi0+eGVuZGV2LmdudHRhYmRldjsK PiA+ICsgICAgdWludDE2X3QgZG9taWRzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07 Cj4gPiArICAgIHVpbnQzMl90IHJlZnNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsK PiA+ICsgICAgdWludDMyX3Qgb2Zmc2V0W0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07 Cj4gPiArICAgIHVpbnQzMl90IGxlbltCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwo+ ID4gKyAgICB2b2lkICpwYWdlc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwo+ID4g KyAgICBpbnQgaSwgY291bnQgPSAwLCByYywgcjsKPiA+ICsgICAgLyogQ29weSB0aGUgZGF0YSBm b3Igd3JpdGUgb3BlcmF0aW9uIGZyb20gZ3Vlc3QgZ3JhbnQgcGFnZXMgYWRkcmVzc2VkIGJ5IAo+ ID4gKyAgICAgKiBkb21pZHMsIHJlZnMsIG9mZnNldCwgbGVuIHRvIGxvY2FsIGJ1ZmZlcnMuCj4g PiArICAgICAqIAo+ID4gKyAgICAgKiBCdWZmZXJlcyBhcmUgdGhlbiBtYXBwZWQgdG8gdGhlIHBl bmRpbmcgcmVxdWVzdCBmb3IgZnVydGhlciAKPiA+ICsgICAgICogY29tcGxldGl0aW9uLgo+ID4g KyAgICAgKi8KPiA+ICsKPiA+ICsgICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0gMCkgewo+ID4gKyAg ICAgICAgciA9IDA7IGdvdG8gb3V0Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGNvdW50ID0g aW9yZXEtPnYubmlvdjsKPiA+ICsgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPiA+ ICsgICAgICAgIGRvbWlkc1tpXSA9IGlvcmVxLT5kb21pZHNbaV07Cj4gPiArICAgICAgICByZWZz W2ldICAgPSBpb3JlcS0+cmVmc1tpXTsKPiA+ICsgICAgICAgIG9mZnNldFtpXSA9IGlvcmVxLT5y ZXEuc2VnW2ldLmZpcnN0X3NlY3QgKiBpb3JlcS0+YmxrZGV2LT5maWxlX2JsazsKPiA+ICsgICAg ICAgIGxlbltpXSA9IChpb3JlcS0+cmVxLnNlZ1tpXS5sYXN0X3NlY3QgLSBpb3JlcS0+cmVxLnNl Z1tpXS5maXJzdF9zZWN0ICsgMSkgCj4gPiArICAgICAgICAgICAgICAgICAgKiBpb3JlcS0+Ymxr ZGV2LT5maWxlX2JsazsKPiA+ICsgICAgICAgIHBhZ2VzW2ldICA9IGdldF9idWZmZXIoKTsKPiA+ ICsKPiA+ICsgICAgICAgIGlmKCFwYWdlc1tpXSkgewo+ID4gKyAgICAgICAgICAgIHhlbl9iZV9w cmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwgCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAiZmFpbGVkIHRvIGFsbG9jIHBhZ2UsIGVycm5vICVkIFxuIiwgZXJybm8pOwo+ID4g KyAgICAgICAgICAgIHIgPSAxOyBnb3RvIG91dDsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ ID4gKyAgICByYyA9IHhjX2dudHRhYl9jb3B5X2dyYW50KGdudCwgY291bnQsIGRvbWlkcywgcmVm cywgcGFnZXMsIG9mZnNldCwgbGVuLCAxKTsKPiA+ICsKPiA+ICsgICAgaWYocmMpIHsKPiA+ICsg ICAgICAgIHhlbl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwgCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gY29weSBkYXRhIGZvciB3cml0ZSAlZCBcbiIs IHJjKTsKPiA+ICsKPiA+ICsgICAgICAgIGlmKGZyZWVfYnVmZmVycyhpb3JlcS0+cGFnZSwgaW9y ZXEtPnYubmlvdikpIHsKPiA+ICsgICAgICAgICAgICB4ZW5fYmVfcHJpbnRmKCZpb3JlcS0+Ymxr ZGV2LT54ZW5kZXYsIDAsIAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0 byBmcmVlIHBhZ2UsIGVycm5vICVkIFxuIiwgZXJybm8pOwo+ID4gKyAgICAgICAgfQo+ID4gKyAg ICAgICAgciA9IDE7IGdvdG8gb3V0Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGZvciAoaSA9 IDA7IGkgPCBpb3JlcS0+di5uaW92OyBpKyspIHsKPiA+ICsgICAgICAgIGlvcmVxLT5wYWdlW2ld ID0gcGFnZXNbaV07Cj4gPiArICAgICAgICBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2UgKz0gKHVp bnRwdHJfdClwYWdlc1tpXTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICByID0gMDsKPiA+ICtv dXQ6Cj4gPiArICAgIHJldHVybiByOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGlvcmVx X3JlYWRfaW5pdChzdHJ1Y3QgaW9yZXEgKmlvcmVxKSAKPiA+ICt7Cj4gPiArICAgIGludCBpOwo+ ID4gKwo+ID4gKyAgICBpZiAoaW9yZXEtPnYubmlvdiA9PSAwKSB7Cj4gPiArICAgICAgICByZXR1 cm4gMDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnYu bmlvdjsgaSsrKSB7Cj4gPiArICAgICAgICBpb3JlcS0+cGFnZVtpXSA9IGdldF9idWZmZXIoKTsK PiA+ICsgICAgICAgIGlmKCFpb3JlcS0+cGFnZVtpXSkgewo+ID4gKyAgICAgICAgICAgIHJldHVy biAtMTsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGlvcmVxLT52LmlvdltpXS5pb3ZfYmFz ZSArPSAodWludHB0cl90KWlvcmVxLT5wYWdlW2ldOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAg IHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGlvcmVxX3JlYWQoc3RydWN0 IGlvcmVxICppb3JlcSkgCj4gPiArewo+ID4gKyAgICBYZW5HbnR0YWIgZ250ID0gaW9yZXEtPmJs a2Rldi0+eGVuZGV2LmdudHRhYmRldjsKPiA+ICsgICAgdWludDE2X3QgZG9taWRzW0JMS0lGX01B WF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Cj4gPiArICAgIHVpbnQzMl90IHJlZnNbQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKPiA+ICsgICAgdWludDMyX3Qgb2Zmc2V0W0JMS0lGX01B WF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Cj4gPiArICAgIHVpbnQzMl90IGxlbltCTEtJRl9NQVhf U0VHTUVOVFNfUEVSX1JFUVVFU1RdOwo+ID4gKyAgICB2b2lkICpwYWdlc1tCTEtJRl9NQVhfU0VH TUVOVFNfUEVSX1JFUVVFU1RdOwo+ID4gKyAgICBpbnQgaSwgY291bnQgPSAwLCByYzsKPiA+ICsK PiA+ICsgICAgLyogQ29weSB0aGUgZGF0YSBmcm9tIGxvY2FsIGJ1ZmZlcnMgdG8gZ3Vlc3QgZ3Jh bnQgcGFnZXMgYWRkcmVzc2VkIGJ5IAo+ID4gKyAgICAgKiBkb21pZHMsIHJlZnMsIG9mZnNldCBv biB0aGUgY29tcGxldGl0aW9uIG9mIHJlYWQgb3BlcmF0aW9uLgo+ID4gKyAgICAgKi8KPiA+ICsK PiA+ICsgICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0gMCkgewo+ID4gKyAgICAgICAgcmV0dXJuIDA7 Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgY291bnQgPSBpb3JlcS0+di5uaW92Owo+ID4gKyAg ICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ID4gKyAgICAgICAgZG9taWRzW2ldID0g aW9yZXEtPmRvbWlkc1tpXTsKPiA+ICsgICAgICAgIHJlZnNbaV0gICA9IGlvcmVxLT5yZWZzW2ld Owo+ID4gKyAgICAgICAgb2Zmc2V0W2ldID0gaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCAq IGlvcmVxLT5ibGtkZXYtPmZpbGVfYmxrOwo+ID4gKyAgICAgICAgbGVuW2ldID0gKGlvcmVxLT5y ZXEuc2VnW2ldLmxhc3Rfc2VjdCAtIGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKyAxKSAK PiA+ICsgICAgICAgICAgICAgICAgICogaW9yZXEtPmJsa2Rldi0+ZmlsZV9ibGs7Cj4gPiArICAg ICAgICBwYWdlc1tpXSAgID0gaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlOwo+ID4gKyAgICB9Cj4g Cj4gWW91IGNhbiBidWlsZCB0aGUgb3BzIGZvciByZWFkL3dyaXRlIGF0IHRoZSBzYW1lIHRpbWUg dXNpbmcgdGhlIHNhbWUKPiBjb2RlIGFzIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIGRpcmVj dGlvbi4KPiA+ICsKPiA+ICsgICAgcmMgPSB4Y19nbnR0YWJfY29weV9ncmFudChnbnQsIGNvdW50 LCBkb21pZHMsIHJlZnMsIHBhZ2VzLCBvZmZzZXQsIGxlbiwgMCk7Cj4gPiArICAgIAo+ID4gKyAg ICBpZihyYykgewo+ID4gKyAgICAgICAgeGVuX2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVu ZGV2LCAwLCAKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBjb3B5IGRhdGEg dG8gZ3Vlc3QgJWQgXG4iLCByYyk7Cj4gPiArICAgICAgICByZXR1cm4gLTE7Cj4gPiArICAgIH0K PiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgaW9y ZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSk7Cj4gPiAgCj4gPiAgc3RhdGlj IHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQo+ID4gQEAgLTMx Myw2ICs0NjEsMjIgQEAgc3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVl LCBpbnQgcmV0KQo+ID4gICAgICB9Cj4gPiAgCj4gPiAgICAgIGlvcmVxLT5zdGF0dXMgPSBpb3Jl cS0+YWlvX2Vycm9ycyA/IEJMS0lGX1JTUF9FUlJPUiA6IEJMS0lGX1JTUF9PS0FZOwo+ID4gKyAg ICAKPiA+ICsgICAgc3dpdGNoKGlvcmVxLT5yZXEub3BlcmF0aW9uKSB7Cj4gPiArICAgIGNhc2Ug QkxLSUZfT1BfUkVBRDogCj4gPiArICAgICAgICBpZihpb3JlcV9yZWFkKGlvcmVxKSkgewo+ID4g KyAgICAgICAgICAgIHhlbl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwgCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGNvcHkgcmVhZCBkYXRhIHRv IGd1ZXN0XG4iKTsKPiAKPiBZb3UgbmVlZCB0byByZXBvcnQgdGhlIGZhaWx1cmUgYmFjayB0byB0 aGUgZnJvbnRlbmQuCj4gCj4gPiArICAgICAgICB9Cj4gCj4gTmVlZCBhIGNvbW1lbnQgaGVyZSBz aW5jZSB5b3UncmUgZGVsaWJlcmF0aW5nIG1pc3NpbmcgdGhlICJicmVhayIuCj4gCj4gPiArICAg IGNhc2UgQkxLSUZfT1BfV1JJVEU6Cj4gPiArICAgICAgICBpZihmcmVlX2J1ZmZlcnMoaW9yZXEt PnBhZ2UsIGlvcmVxLT52Lm5pb3YpKSB7Cj4gCj4gLi4ueW91IGRvbid0IG5lZWQgdG8gY29uc2lk ZXIgZXJyb3JzIGhlcmUgKHNlZSBjb21tZW50IG9uIGZyZWVfYnVmZmVyKCkKPiBhYm92ZSkuClRo YW5rIHlvdSBmb3IgYWxsIHRoZSBhYm92ZSByZW1hcmtzIEkgd2lsbCBjb3JyZWN0IHRoZSBjb2Rl LgoKUGF1bGluYQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==