From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH] xen: additionally restrict xenforeignmemory operations Date: Tue, 28 Mar 2017 08:27:52 +0000 Message-ID: <2b0d6c084def417b8d8958440246a7ae@AMSPEX02CL03.citrite.net> References: <1490374688-488-1-git-send-email-paul.durrant@citrix.com> <7b2c8d7868db4d47a832524c304c84a5@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1csmTq-0007Fs-KG for xen-devel@lists.xenproject.org; Tue, 28 Mar 2017 08:27:54 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Stefano Stabellini' Cc: Anthony Perard , "xen-devel@lists.xenproject.org" , "qemu-devel@nongnu.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFN0ZWZhbm8gU3RhYmVsbGluaSBb bWFpbHRvOnNzdGFiZWxsaW5pQGtlcm5lbC5vcmddCj4gU2VudDogMjcgTWFyY2ggMjAxNyAxODo0 Ngo+IFRvOiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPgo+IENjOiAnU3Rl ZmFubyBTdGFiZWxsaW5pJyA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz47IHFlbXUtZGV2ZWxAbm9u Z251Lm9yZzsKPiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7IEFudGhvbnkgUGVyYXJk Cj4gPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Cj4gU3ViamVjdDogUkU6IFtQQVRDSF0geGVu OiBhZGRpdGlvbmFsbHkgcmVzdHJpY3QgeGVuZm9yZWlnbm1lbW9yeSBvcGVyYXRpb25zCj4gCj4g T24gTW9uLCAyNyBNYXIgMjAxNywgUGF1bCBEdXJyYW50IHdyb3RlOgo+ID4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQo+ID4gW3NuaXBdCj4gPiA+Cj4gPiA+IFRoaXMgaXMgT0sgYnV0IHRo ZSBmaWxlIGlzIGdyb3dpbmcgdG9vIGVudGFuZ2xlZC4gV2hhdCBkbyB5b3UgdGhpbmsgb2YKPiA+ ID4gdGhlIGZvbGxvd2luZywgd2hpY2ggbW92ZXMgdGhlIGlmCj4gQ09ORklHX1hFTl9DVFJMX0lO VEVSRkFDRV9WRVJTSU9OCj4gPiA+IDwKPiA+ID4gNDA3MDEgYXQgdGhlIHRvcD8gVGhpcyB3YXkg d2UgZG9uJ3QgaGF2ZSB0byBhZGQgeWV0IGFub3RoZXIgaWZkZWYuCj4gPiA+Cj4gPgo+ID4gWWVz LCB0aGlzIGxvb2tzIGJldHRlciBhbmQgYXBwZWFycyB0byBEVFJULiBJIGFzc3VtZSB5b3Ugd2ls bCBqdXN0IGFwcGx5IHRoaXMKPiB2ZXJzaW9uIGFuZCBkb24ndCB3YW50IGJlIHRvIHJlc3VibWl0 Pwo+IAo+IEFjdHVhbGx5LCBJIHdvdWxkIHByZWZlciBpZiB5b3UgY291bGQgdGVzdCBpdCBwcm9w ZXJseSBhbmQgcmVzdWJtaXQgdGhlCj4gcGF0Y2guIFRoYW5rcyEKPiAKCk9rLCBzdXJlLiBJIGdh dmUgaXQgYSBxdWljayB0cnkgeWVzdGVyZGF5IGJ1dCBJJ2xsIHNlbmQgaXQgYXMgdjIgbGF0ZXIu CgogIFBhdWwKCj4gCj4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2Nv bW1vbi5oCj4gPiA+IGIvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCj4gPiA+IGluZGV4IDRm M2JkMzUuLjYyNGZiODYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvaHcveGVuL3hlbl9jb21t b24uaAo+ID4gPiArKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKPiA+ID4gQEAgLTI3 LDYgKzI3LDU4IEBAIGV4dGVybiB4Y19pbnRlcmZhY2UgKnhlbl94YzsKPiA+ID4gICAqIFdlIGRv bid0IHN1cHBvcnQgWGVuIHByaW9yIHRvIDQuMi4wLgo+ID4gPiAgICovCj4gPiA+Cj4gPiA+ICsv KiBYZW4gNC4yIHRocm91Z2ggNC42ICovCj4gPiA+ICsjaWYgQ09ORklHX1hFTl9DVFJMX0lOVEVS RkFDRV9WRVJTSU9OIDwgNDA3MDEKPiA+ID4gKwo+ID4gPiArdHlwZWRlZiB4Y19pbnRlcmZhY2Ug eGVuZm9yZWlnbm1lbW9yeV9oYW5kbGU7Cj4gPiA+ICt0eXBlZGVmIHhjX2V2dGNobiB4ZW5ldnRj aG5faGFuZGxlOwo+ID4gPiArdHlwZWRlZiB4Y19nbnR0YWIgeGVuZ250dGFiX2hhbmRsZTsKPiA+ ID4gKwo+ID4gPiArI2RlZmluZSB4ZW5ldnRjaG5fb3BlbihsLCBmKSB4Y19ldnRjaG5fb3Blbihs LCBmKTsKPiA+ID4gKyNkZWZpbmUgeGVuZXZ0Y2huX2Nsb3NlKGgpIHhjX2V2dGNobl9jbG9zZSho KQo+ID4gPiArI2RlZmluZSB4ZW5ldnRjaG5fZmQoaCkgeGNfZXZ0Y2huX2ZkKGgpCj4gPiA+ICsj ZGVmaW5lIHhlbmV2dGNobl9wZW5kaW5nKGgpIHhjX2V2dGNobl9wZW5kaW5nKGgpCj4gPiA+ICsj ZGVmaW5lIHhlbmV2dGNobl9ub3RpZnkoaCwgcCkgeGNfZXZ0Y2huX25vdGlmeShoLCBwKQo+ID4g PiArI2RlZmluZSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihoLCBkLCBwKQo+ID4gPiB4Y19l dnRjaG5fYmluZF9pbnRlcmRvbWFpbihoLCBkLCBwKQo+ID4gPiArI2RlZmluZSB4ZW5ldnRjaG5f dW5tYXNrKGgsIHApIHhjX2V2dGNobl91bm1hc2soaCwgcCkKPiA+ID4gKyNkZWZpbmUgeGVuZXZ0 Y2huX3VuYmluZChoLCBwKSB4Y19ldnRjaG5fdW5iaW5kKGgsIHApCj4gPiA+ICsKPiA+ID4gKyNk ZWZpbmUgeGVuZ250dGFiX29wZW4obCwgZikgeGNfZ250dGFiX29wZW4obCwgZikKPiA+ID4gKyNk ZWZpbmUgeGVuZ250dGFiX2Nsb3NlKGgpIHhjX2dudHRhYl9jbG9zZShoKQo+ID4gPiArI2RlZmlu ZSB4ZW5nbnR0YWJfc2V0X21heF9ncmFudHMoaCwgbikKPiB4Y19nbnR0YWJfc2V0X21heF9ncmFu dHMoaCwgbikKPiA+ID4gKyNkZWZpbmUgeGVuZ250dGFiX21hcF9ncmFudF9yZWYoaCwgZCwgciwg cCkKPiB4Y19nbnR0YWJfbWFwX2dyYW50X3JlZihoLAo+ID4gPiBkLCByLCBwKQo+ID4gPiArI2Rl ZmluZSB4ZW5nbnR0YWJfdW5tYXAoaCwgYSwgbikgeGNfZ250dGFiX211bm1hcChoLCBhLCBuKQo+ ID4gPiArI2RlZmluZSB4ZW5nbnR0YWJfbWFwX2dyYW50X3JlZnMoaCwgYywgZCwgciwgcCkgXAo+ ID4gPiArICAgIHhjX2dudHRhYl9tYXBfZ3JhbnRfcmVmcyhoLCBjLCBkLCByLCBwKQo+ID4gPiAr I2RlZmluZSB4ZW5nbnR0YWJfbWFwX2RvbWFpbl9ncmFudF9yZWZzKGgsIGMsIGQsIHIsIHApIFwK PiA+ID4gKyAgICB4Y19nbnR0YWJfbWFwX2RvbWFpbl9ncmFudF9yZWZzKGgsIGMsIGQsIHIsIHAp Cj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgeGVuZm9yZWlnbm1lbW9yeV9vcGVuKGwsIGYpIHhlbl94 Ywo+ID4gPiArI2RlZmluZSB4ZW5mb3JlaWdubWVtb3J5X2Nsb3NlKGgpCj4gPiA+ICsKPiA+ID4g K3N0YXRpYyBpbmxpbmUgdm9pZCAqeGVuZm9yZWlnbm1lbW9yeV9tYXAoeGNfaW50ZXJmYWNlICpo LCB1aW50MzJfdAo+IGRvbSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHByb3QsIHNpemVfdCBwYWdlcywKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeGVuX3Bmbl90IGFyclsvKnBhZ2VzKi9dLAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXJyWy8q cGFnZXMqL10pCj4gPiA+ICt7Cj4gPiA+ICsgICAgaWYgKGVycikKPiA+ID4gKyAgICAgICAgcmV0 dXJuIHhjX21hcF9mb3JlaWduX2J1bGsoaCwgZG9tLCBwcm90LCBhcnIsIGVyciwgcGFnZXMpOwo+ ID4gPiArICAgIGVsc2UKPiA+ID4gKyAgICAgICAgcmV0dXJuIHhjX21hcF9mb3JlaWduX3BhZ2Vz KGgsIGRvbSwgcHJvdCwgYXJyLCBwYWdlcyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKyNkZWZp bmUgeGVuZm9yZWlnbm1lbW9yeV91bm1hcChoLCBwLCBzKSBtdW5tYXAocCwgcyAqCj4gWENfUEFH RV9TSVpFKQo+ID4gPiArCj4gPiA+ICsjZWxzZSAvKiBDT05GSUdfWEVOX0NUUkxfSU5URVJGQUNF X1ZFUlNJT04gPj0gNDA3MDEgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPHhlbmV2dGNobi5o Pgo+ID4gPiArI2luY2x1ZGUgPHhlbmdudHRhYi5oPgo+ID4gPiArI2luY2x1ZGUgPHhlbmZvcmVp Z25tZW1vcnkuaD4KPiA+ID4gKwo+ID4gPiArI2VuZGlmCj4gPiA+ICsKPiA+ID4gK2V4dGVybiB4 ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGVuX2ZtZW07Cj4gPiA+ICsKPiA+ID4gICNpZiBDT05G SUdfWEVOX0NUUkxfSU5URVJGQUNFX1ZFUlNJT04gPCA0MDkwMAo+ID4gPgo+ID4gPiAgdHlwZWRl ZiB4Y19pbnRlcmZhY2UgeGVuZGV2aWNlbW9kZWxfaGFuZGxlOwo+ID4gPiBAQCAtMTU5LDYgKzIx MSwxMyBAQCBzdGF0aWMgaW5saW5lIGludCB4ZW5kZXZpY2Vtb2RlbF9yZXN0cmljdCgKPiA+ID4g ICAgICByZXR1cm4gLTE7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMgaW5saW5lIGludCB4 ZW5mb3JlaWdubWVtb3J5X3Jlc3RyaWN0KAo+ID4gPiArICAgIHhlbmZvcmVpZ25tZW1vcnlfaGFu ZGxlICpmbWVtLCBkb21pZF90IGRvbWlkKQo+ID4gPiArewo+ID4gPiArICAgIGVycm5vID0gRU5P VFRZOwo+ID4gPiArICAgIHJldHVybiAtMTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgI2Vsc2Ug LyogQ09ORklHX1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OID49IDQwOTAwICovCj4gPiA+Cj4g PiA+ICAjaW5jbHVkZSA8eGVuZGV2aWNlbW9kZWwuaD4KPiA+ID4gQEAgLTIxNSw2OSArMjc0LDMy IEBAIHN0YXRpYyBpbmxpbmUgaW50IHhlbl9tb2RpZmllZF9tZW1vcnkoZG9taWRfdAo+ID4gPiBk b21pZCwgdWludDY0X3QgZmlyc3RfcGZuLAo+ID4gPgo+ID4gPiAgc3RhdGljIGlubGluZSBpbnQg eGVuX3Jlc3RyaWN0KGRvbWlkX3QgZG9taWQpCj4gPiA+ICB7Cj4gPiA+IC0gICAgaW50IHJjID0g eGVuZGV2aWNlbW9kZWxfcmVzdHJpY3QoeGVuX2Rtb2QsIGRvbWlkKTsKPiA+ID4gKyAgICBpbnQg cmM7Cj4gPiA+Cj4gPiA+IC0gICAgdHJhY2VfeGVuX2RvbWlkX3Jlc3RyaWN0KGVycm5vKTsKPiA+ ID4gKyAgICAvKiBBdHRlbXB0IHRvIHJlc3RyaWN0IGRldmljZW1vZGVsIG9wZXJhdGlvbnMgKi8K PiA+ID4gKyAgICByYyA9IHhlbmRldmljZW1vZGVsX3Jlc3RyaWN0KHhlbl9kbW9kLCBkb21pZCk7 Cj4gPiA+ICsgICAgdHJhY2VfeGVuX2RvbWlkX3Jlc3RyaWN0KHJjID8gZXJybm8gOiAwKTsKPiA+ ID4KPiA+ID4gLSAgICBpZiAoZXJybm8gPT0gRU5PVFRZKSB7Cj4gPiA+IC0gICAgICAgIHJldHVy biAwOwo+ID4gPiArICAgIGlmIChyYyA8IDApIHsKPiA+ID4gKyAgICAgICAgLyoKPiA+ID4gKyAg ICAgICAgICogSWYgZXJybm8gaXMgRU5PVFRZIHRoZW4gcmVzdHJpY3Rpb24gaXMgbm90IGltcGxl bWVudGVkIHNvCj4gPiA+ICsgICAgICAgICAqIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJ5aW5nIHRv IHJlc3RyaWN0IG90aGVyIHR5cGVzIG9mCj4gPiA+ICsgICAgICAgICAqIG9wZXJhdGlvbiwgYnV0 IGl0IHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGZhaWx1cmUuCj4gPiA+ICsgICAgICAgICAq Lwo+ID4gPiArICAgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZKSB7Cj4gPiA+ICsgICAgICAgICAg ICByZXR1cm4gMDsKPiA+ID4gKyAgICAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgICAgIHJldHVy biByYzsKPiA+ID4gICAgICB9Cj4gPiA+Cj4gPiA+IC0gICAgcmV0dXJuIHJjOwo+ID4gPiAtfQo+ ID4gPiAtCj4gPiA+IC0vKiBYZW4gNC4yIHRocm91Z2ggNC42ICovCj4gPiA+IC0jaWYgQ09ORklH X1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OIDwgNDA3MDEKPiA+ID4gLQo+ID4gPiAtdHlwZWRl ZiB4Y19pbnRlcmZhY2UgeGVuZm9yZWlnbm1lbW9yeV9oYW5kbGU7Cj4gPiA+IC10eXBlZGVmIHhj X2V2dGNobiB4ZW5ldnRjaG5faGFuZGxlOwo+ID4gPiAtdHlwZWRlZiB4Y19nbnR0YWIgeGVuZ250 dGFiX2hhbmRsZTsKPiA+ID4gLQo+ID4gPiAtI2RlZmluZSB4ZW5ldnRjaG5fb3BlbihsLCBmKSB4 Y19ldnRjaG5fb3BlbihsLCBmKTsKPiA+ID4gLSNkZWZpbmUgeGVuZXZ0Y2huX2Nsb3NlKGgpIHhj X2V2dGNobl9jbG9zZShoKQo+ID4gPiAtI2RlZmluZSB4ZW5ldnRjaG5fZmQoaCkgeGNfZXZ0Y2hu X2ZkKGgpCj4gPiA+IC0jZGVmaW5lIHhlbmV2dGNobl9wZW5kaW5nKGgpIHhjX2V2dGNobl9wZW5k aW5nKGgpCj4gPiA+IC0jZGVmaW5lIHhlbmV2dGNobl9ub3RpZnkoaCwgcCkgeGNfZXZ0Y2huX25v dGlmeShoLCBwKQo+ID4gPiAtI2RlZmluZSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihoLCBk LCBwKQo+ID4gPiB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihoLCBkLCBwKQo+ID4gPiAtI2Rl ZmluZSB4ZW5ldnRjaG5fdW5tYXNrKGgsIHApIHhjX2V2dGNobl91bm1hc2soaCwgcCkKPiA+ID4g LSNkZWZpbmUgeGVuZXZ0Y2huX3VuYmluZChoLCBwKSB4Y19ldnRjaG5fdW5iaW5kKGgsIHApCj4g PiA+IC0KPiA+ID4gLSNkZWZpbmUgeGVuZ250dGFiX29wZW4obCwgZikgeGNfZ250dGFiX29wZW4o bCwgZikKPiA+ID4gLSNkZWZpbmUgeGVuZ250dGFiX2Nsb3NlKGgpIHhjX2dudHRhYl9jbG9zZSho KQo+ID4gPiAtI2RlZmluZSB4ZW5nbnR0YWJfc2V0X21heF9ncmFudHMoaCwgbikgeGNfZ250dGFi X3NldF9tYXhfZ3JhbnRzKGgsCj4gbikKPiA+ID4gLSNkZWZpbmUgeGVuZ250dGFiX21hcF9ncmFu dF9yZWYoaCwgZCwgciwgcCkKPiB4Y19nbnR0YWJfbWFwX2dyYW50X3JlZihoLAo+ID4gPiBkLCBy LCBwKQo+ID4gPiAtI2RlZmluZSB4ZW5nbnR0YWJfdW5tYXAoaCwgYSwgbikgeGNfZ250dGFiX211 bm1hcChoLCBhLCBuKQo+ID4gPiAtI2RlZmluZSB4ZW5nbnR0YWJfbWFwX2dyYW50X3JlZnMoaCwg YywgZCwgciwgcCkgXAo+ID4gPiAtICAgIHhjX2dudHRhYl9tYXBfZ3JhbnRfcmVmcyhoLCBjLCBk LCByLCBwKQo+ID4gPiAtI2RlZmluZSB4ZW5nbnR0YWJfbWFwX2RvbWFpbl9ncmFudF9yZWZzKGgs IGMsIGQsIHIsIHApIFwKPiA+ID4gLSAgICB4Y19nbnR0YWJfbWFwX2RvbWFpbl9ncmFudF9yZWZz KGgsIGMsIGQsIHIsIHApCj4gPiA+IC0KPiA+ID4gLSNkZWZpbmUgeGVuZm9yZWlnbm1lbW9yeV9v cGVuKGwsIGYpIHhlbl94Ywo+ID4gPiAtI2RlZmluZSB4ZW5mb3JlaWdubWVtb3J5X2Nsb3NlKGgp Cj4gPiA+ICsgICAgLyogUmVzdHJpY3QgZm9yZWlnbm1lbW9yeSBvcGVyYXRpb25zICovCj4gPiA+ ICsgICAgcmMgPSB4ZW5mb3JlaWdubWVtb3J5X3Jlc3RyaWN0KHhlbl9mbWVtLCBkb21pZCk7Cj4g PiA+ICsgICAgdHJhY2VfeGVuX2RvbWlkX3Jlc3RyaWN0KHJjID8gZXJybm8gOiAwKTsKPiA+ID4K PiA+ID4gLXN0YXRpYyBpbmxpbmUgdm9pZCAqeGVuZm9yZWlnbm1lbW9yeV9tYXAoeGNfaW50ZXJm YWNlICpoLCB1aW50MzJfdAo+IGRvbSwKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHByb3QsIHNpemVfdCBwYWdlcywKPiA+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeGVuX3Bmbl90IGFyclsvKnBhZ2Vz Ki9dLAo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg ZXJyWy8qcGFnZXMqL10pCj4gPiA+IC17Cj4gPiA+IC0gICAgaWYgKGVycikKPiA+ID4gLSAgICAg ICAgcmV0dXJuIHhjX21hcF9mb3JlaWduX2J1bGsoaCwgZG9tLCBwcm90LCBhcnIsIGVyciwgcGFn ZXMpOwo+ID4gPiAtICAgIGVsc2UKPiA+ID4gLSAgICAgICAgcmV0dXJuIHhjX21hcF9mb3JlaWdu X3BhZ2VzKGgsIGRvbSwgcHJvdCwgYXJyLCBwYWdlcyk7Cj4gPiA+ICsgICAgcmV0dXJuIHJjOwo+ ID4gPiAgfQo+ID4gPgo+ID4gPiAtI2RlZmluZSB4ZW5mb3JlaWdubWVtb3J5X3VubWFwKGgsIHAs IHMpIG11bm1hcChwLCBzICoKPiBYQ19QQUdFX1NJWkUpCj4gPiA+IC0KPiA+ID4gLSNlbHNlIC8q IENPTkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA+PSA0MDcwMSAqLwo+ID4gPiAtCj4g PiA+IC0jaW5jbHVkZSA8eGVuZXZ0Y2huLmg+Cj4gPiA+IC0jaW5jbHVkZSA8eGVuZ250dGFiLmg+ Cj4gPiA+IC0jaW5jbHVkZSA8eGVuZm9yZWlnbm1lbW9yeS5oPgo+ID4gPiAtCj4gPiA+IC0jZW5k aWYKPiA+ID4gLQo+ID4gPiAtZXh0ZXJuIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICp4ZW5fZm1l bTsKPiA+ID4gLQo+ID4gPiAgdm9pZCBkZXN0cm95X2h2bV9kb21haW4oYm9vbCByZWJvb3QpOwo+ ID4gPgo+ID4gPiAgLyogc2h1dGRvd24vZGVzdHJveSBjdXJyZW50IGRvbWFpbiBiZWNhdXNlIG9m IGFuIGVycm9yICovCj4gPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==