From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v5 2/4] iommu: rename wrapper functions Date: Wed, 19 Dec 2018 16:26:43 +0000 Message-ID: <73164231020348b0b564bb3a95531803@AMSPEX02CL03.citrite.net> References: <20181217092259.19762-1-paul.durrant@citrix.com> <20181217092259.19762-3-paul.durrant@citrix.com> <79ea7fa6d1fd4ebfb49e673722a2a4c0@AMSPEX02CL03.citrite.net> <5C1A70990200007800207B46@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gZegt-0001TE-O7 for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 16:27:23 +0000 In-Reply-To: <5C1A70990200007800207B46@prv1-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: 'Jan Beulich' , George Dunlap Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , Andrew Cooper , "Tim (Xen.org)" , Julien Grall , Jun Nakajima , xen-devel , Ian Jackson , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKYW4gQmV1bGljaCBbbWFpbHRv OkpCZXVsaWNoQHN1c2UuY29tXQ0KPiBTZW50OiAxOSBEZWNlbWJlciAyMDE4IDE2OjI0DQo+IFRv OiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPg0KPiBDYzogSnVsaWVuIEdy YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT47IEFuZHJldyBDb29wZXINCj4gPEFuZHJldy5Db29w ZXIzQGNpdHJpeC5jb20+OyBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+ OyBJYW4NCj4gSmFja3NvbiA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47IFJvZ2VyIFBhdSBNb25u ZSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Ow0KPiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t PjsgSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPjsNCj4gS2V2aW4gVGlhbiA8 a2V2aW4udGlhbkBpbnRlbC5jb20+OyBTdGVmYW5vIFN0YWJlbGxpbmkNCj4gPHNzdGFiZWxsaW5p QGtlcm5lbC5vcmc+OyB4ZW4tZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz47 DQo+IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT47IFRpbSAo WGVuLm9yZykNCj4gPHRpbUB4ZW4ub3JnPg0KPiBTdWJqZWN0OiBSZTogW1hlbi1kZXZlbF0gW1BB VENIIHY1IDIvNF0gaW9tbXU6IHJlbmFtZSB3cmFwcGVyIGZ1bmN0aW9ucw0KPiANCj4gPj4+IE9u IDE5LjEyLjE4IGF0IDEwOjA1LCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+IHdyb3RlOg0KPiA+ IEp1bGllbiwgcGluZz8NCj4gDQo+IFNlZWluZyBKdWxpZW4ncyByZXBseSwgZGlkIHlvdSBwZXJo YXBzIG1lYW4gdG8gcGluZyBHZW9yZ2UgaW5zdGVhZA0KPiAodGhlIG1pbmltYWwgY2hhbmdlIHRv IHAybS1lcHQuYyBwcm9iYWJseSBkb2Vzbid0IG5lZWQgYQ0KPiBzZXBhcmF0ZSBFUFQgbWFpbnRh aW5lciBhY2spPw0KDQpObywgSSBtaXN0YWtlbmx5IHJlbWVtYmVyZWQgdGhpcyBwYXRjaCB0b3Vj aGluZyBBUk0gY29kZS4gQnV0LCB5ZXMgSSBndWVzcyBpdCBkb2VzIG5lZWQgYW4gYWNrIGZyb20g R2VvcmdlIGJlY2F1c2Ugb2YgdGhlIG1lbW9yeSBodW5rcy4NCg0KICBQYXVsDQoNCj4gDQo+IEph bg0KPiANCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogUGF1bCBE dXJyYW50IFttYWlsdG86cGF1bC5kdXJyYW50QGNpdHJpeC5jb21dDQo+ID4+IFNlbnQ6IDE3IERl Y2VtYmVyIDIwMTggMDk6MjMNCj4gPj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y Zw0KPiA+PiBDYzogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IEFuZHJl dyBDb29wZXINCj4gPj4gPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBXZWkgTGl1IDx3ZWku bGl1MkBjaXRyaXguY29tPjsgUm9nZXIgUGF1DQo+ID4+IE1vbm5lIDxyb2dlci5wYXVAY2l0cml4 LmNvbT47IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47DQo+ID4+IElh biBKYWNrc29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgSnVsaWVuIEdyYWxsDQo+IDxqdWxp ZW4uZ3JhbGxAYXJtLmNvbT47DQo+ID4+IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndp bGtAb3JhY2xlLmNvbT47IFN0ZWZhbm8gU3RhYmVsbGluaQ0KPiA+PiA8c3N0YWJlbGxpbmlAa2Vy bmVsLm9yZz47IFRpbSAoWGVuLm9yZykgPHRpbUB4ZW4ub3JnPjsgSnVuIE5ha2FqaW1hDQo+ID4+ IDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPjsgS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5j b20+OyBHZW9yZ2UNCj4gRHVubGFwDQo+ID4+IDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+DQo+ ID4+IFN1YmplY3Q6IFtQQVRDSCB2NSAyLzRdIGlvbW11OiByZW5hbWUgd3JhcHBlciBmdW5jdGlv bnMNCj4gPj4NCj4gPj4gQSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgYWRkIHNlbWFudGljYWxseSBk aWZmZXJlbnQgdmVyc2lvbnMgb2YNCj4gPj4gaW9tbXVfbWFwL3VubWFwKCkgc28sIGluIGFkdmFu Y2Ugb2YgdGhhdCBjaGFuZ2UsIHRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUNCj4gPj4gZXhpc3Rpbmcg ZnVuY3Rpb25zIHRvIGlvbW11X2xlZ2FjeV9tYXAvdW5tYXAoKSBhbmQgbW9kaWZpZXMgYWxsIGNh bGwtDQo+ID4+IHNpdGVzLg0KPiA+PiBJdCBhbHNvIGFkanVzdHMgYSBjb21tZW50IHRoYXQgcmVm ZXJzIHRvIGlvbW11X21hcF9wYWdlKCksIHdoaWNoIHdhcw0KPiByZS0NCj4gPj4gbmFtZWQgYnkg YSBwcmV2aW91cyBwYXRjaC4NCj4gPj4NCj4gPj4gVGhpcyBwYXRjaCBpcyBwdXJlbHkgY29zbWV0 aWMuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLg0KPiA+Pg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBQYXVs IER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KPiA+PiBBY2tlZC1ieTogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPkENCj4gPj4gLS0tDQo+ID4+IENjOiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPg0KPiA+PiBDYzogV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT4NCj4gPj4gQ2M6ICJSb2dlciBQYXUgTW9ubsOpIiA8cm9nZXIucGF1QGNp dHJpeC5jb20+DQo+ID4+IENjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJp eC5jb20+DQo+ID4+IENjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4N Cj4gPj4gQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+DQo+ID4+IENjOiBL b25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+DQo+ID4+IENjOiBT dGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+DQo+ID4+IENjOiBUaW0g RGVlZ2FuIDx0aW1AeGVuLm9yZz4NCj4gPj4gQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1h QGludGVsLmNvbT4NCj4gPj4gQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPg0K PiA+PiBDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPg0KPiA+ Pg0KPiA+PiB2MjoNCj4gPj4gIC0gTmV3IGluIHYyLg0KPiA+Pg0KPiA+PiB2MzoNCj4gPj4gIC0g TGVhdmUgaW9tbXVfaW90bGJfZmx1c2hbX2FsbF0gYWxvbmUuDQo+ID4+ICAtIE1ha2UgcGF0Y2gg cHVyZWx5IGNvc21ldGljLg0KPiA+PiAgLSBGaXggY29tbWVudCBpbiB4ZW4vaW9tbXUuaC4NCj4g Pj4gLS0tDQo+ID4+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICB8IDExICsr KysrKy0tLS0tDQo+ID4+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAgICAgICAgICB8ICA0 ICsrLS0NCj4gPj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgICAgIHwgIDUgKysr LS0NCj4gPj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgIHwgMTIgKysrKysr LS0tLS0tDQo+ID4+ICB4ZW4vYXJjaC94ODYveDg2XzY0L21tLmMgICAgICAgICAgICB8ICA5ICsr KysrLS0tLQ0KPiA+PiAgeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAgICAgfCAxNCAr KysrKysrLS0tLS0tLQ0KPiA+PiAgeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAgICAgICAgICAgICAg fCAgNCArKy0tDQo+ID4+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICB8ICA2 ICsrKy0tLQ0KPiA+PiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMgfCAgNCAr Ky0tDQo+ID4+ICB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICB8IDE2ICsrKysr KysrKysrLS0tLS0NCj4gPj4gIDEwIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDM4 IGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMg Yi94ZW4vYXJjaC94ODYvbW0uYw0KPiA+PiBpbmRleCAxNDMxZjM0N2YzLi4wYWQzOTQwYmIzIDEw MDY0NA0KPiA+PiAtLS0gYS94ZW4vYXJjaC94ODYvbW0uYw0KPiA+PiArKysgYi94ZW4vYXJjaC94 ODYvbW0uYw0KPiA+PiBAQCAtMjgwMSwxMiArMjgwMSwxMyBAQCBzdGF0aWMgaW50IF9nZXRfcGFn ZV90eXBlKHN0cnVjdCBwYWdlX2luZm8NCj4gKnBhZ2UsDQo+ID4+IHVuc2lnbmVkIGxvbmcgdHlw ZSwNCj4gPj4gICAgICAgICAgICAgIG1mbl90IG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOw0KPiA+ Pg0KPiA+PiAgICAgICAgICAgICAgaWYgKCAoeCAmIFBHVF90eXBlX21hc2spID09IFBHVF93cml0 YWJsZV9wYWdlICkNCj4gPj4gLSAgICAgICAgICAgICAgICBpb21tdV9yZXQgPSBpb21tdV91bm1h cChkLCBfZGZuKG1mbl94KG1mbikpLA0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBBR0VfT1JERVJfNEspOw0KPiA+PiArICAgICAgICAgICAgICAgIGlvbW11 X3JldCA9IGlvbW11X2xlZ2FjeV91bm1hcChkLCBfZGZuKG1mbl94KG1mbikpLA0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRL KTsNCj4gPj4gICAgICAgICAgICAgIGVsc2UgaWYgKCB0eXBlID09IFBHVF93cml0YWJsZV9wYWdl ICkNCj4gPj4gLSAgICAgICAgICAgICAgICBpb21tdV9yZXQgPSBpb21tdV9tYXAoZCwgX2Rmbiht Zm5feChtZm4pKSwgbWZuLA0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQUdFX09SREVSXzRLLA0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJT01NVUZfcmVhZGFibGUgfA0KPiBJT01NVUZfd3JpdGFibGUpOw0KPiA+PiArICAg ICAgICAgICAgICAgIGlvbW11X3JldCA9IGlvbW11X2xlZ2FjeV9tYXAoZCwgX2RmbihtZm5feCht Zm4pKSwgbWZuLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFHRV9PUkRFUl80SywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8DQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfd3JpdGFibGUpOw0KPiA+PiAgICAg ICAgICB9DQo+ID4+ICAgICAgfQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMNCj4gPj4gaW5kZXggNmU0 ZTM3NWJhZC4uNjRhNDljMDdiNyAxMDA2NDQNCj4gPj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3Ay bS1lcHQuYw0KPiA+PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jDQo+ID4+IEBAIC04 ODIsOCArODgyLDggQEAgb3V0Og0KPiA+PiAgICAgICAgICAgICAgcmMgPSBpb21tdV9wdGVfZmx1 c2goZCwgZ2ZuLCAmZXB0X2VudHJ5LT5lcHRlLCBvcmRlciwNCj4gPj4gdnRkX3B0ZV9wcmVzZW50 KTsNCj4gPj4gICAgICAgICAgZWxzZSBpZiAoIG5lZWRfaW9tbXVfcHRfc3luYyhkKSApDQo+ID4+ ICAgICAgICAgICAgICByYyA9IGlvbW11X2ZsYWdzID8NCj4gPj4gLSAgICAgICAgICAgICAgICBp b21tdV9tYXAoZCwgX2RmbihnZm4pLCBtZm4sIG9yZGVyLCBpb21tdV9mbGFncykgOg0KPiA+PiAt ICAgICAgICAgICAgICAgIGlvbW11X3VubWFwKGQsIF9kZm4oZ2ZuKSwgb3JkZXIpOw0KPiA+PiAr ICAgICAgICAgICAgICAgIGlvbW11X2xlZ2FjeV9tYXAoZCwgX2RmbihnZm4pLCBtZm4sIG9yZGVy LA0KPiBpb21tdV9mbGFncykgOg0KPiA+PiArICAgICAgICAgICAgICAgIGlvbW11X2xlZ2FjeV91 bm1hcChkLCBfZGZuKGdmbiksIG9yZGVyKTsNCj4gPj4gICAgICB9DQo+ID4+DQo+ID4+ICAgICAg dW5tYXBfZG9tYWluX3BhZ2UodGFibGUpOw0KPiA+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jDQo+ID4+IGluZGV4IDE3YTZi NjFmMTIuLjY5ZmZiMDgxNzkgMTAwNjQ0DQo+ID4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cHQuYw0KPiA+PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMNCj4gPj4gQEAgLTY4Niw4 ICs2ODYsOSBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90 DQo+IGdmbl8sDQo+ID4+IG1mbl90IG1mbiwNCj4gPj4NCj4gPj4gICAgICAgICAgaWYgKCBuZWVk X2lvbW11X3B0X3N5bmMocDJtLT5kb21haW4pICkNCj4gPj4gICAgICAgICAgICAgIHJjID0gaW9t bXVfcHRlX2ZsYWdzID8NCj4gPj4gLSAgICAgICAgICAgICAgICBpb21tdV9tYXAoZCwgX2Rmbihn Zm4pLCBtZm4sIHBhZ2Vfb3JkZXIsDQo+IGlvbW11X3B0ZV9mbGFncykNCj4gPj4gOg0KPiA+PiAt ICAgICAgICAgICAgICAgIGlvbW11X3VubWFwKGQsIF9kZm4oZ2ZuKSwgcGFnZV9vcmRlcik7DQo+ ID4+ICsgICAgICAgICAgICAgICAgaW9tbXVfbGVnYWN5X21hcChkLCBfZGZuKGdmbiksIG1mbiwg cGFnZV9vcmRlciwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvbW11 X3B0ZV9mbGFncykgOg0KPiA+PiArICAgICAgICAgICAgICAgIGlvbW11X2xlZ2FjeV91bm1hcChk LCBfZGZuKGdmbiksIHBhZ2Vfb3JkZXIpOw0KPiA+PiAgICAgICAgICBlbHNlIGlmICggaW9tbXVf dXNlX2hhcF9wdChkKSAmJiBpb21tdV9vbGRfZmxhZ3MgKQ0KPiA+PiAgICAgICAgICAgICAgYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKHAybS0+ZG9tYWluLCBnZm4sIHBhZ2Vfb3JkZXIpOw0KPiA+PiAg ICAgIH0NCj4gPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNo L3g4Ni9tbS9wMm0uYw0KPiA+PiBpbmRleCBmZWE0NDk3OTEwLi5lZDc2ZTk2ZDMzIDEwMDY0NA0K PiA+PiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMNCj4gPj4gKysrIGIveGVuL2FyY2gveDg2 L21tL3AybS5jDQo+ID4+IEBAIC03MzMsNyArNzMzLDcgQEAgcDJtX3JlbW92ZV9wYWdlKHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkDQo+IGxvbmcNCj4gPj4gZ2ZuX2wsIHVuc2lnbmVk IGxvbmcgbWZuLA0KPiA+Pg0KPiA+PiAgICAgIGlmICggIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShw Mm0tPmRvbWFpbikgKQ0KPiA+PiAgICAgICAgICByZXR1cm4gbmVlZF9pb21tdV9wdF9zeW5jKHAy bS0+ZG9tYWluKSA/DQo+ID4+IC0gICAgICAgICAgICBpb21tdV91bm1hcChwMm0tPmRvbWFpbiwg X2RmbihtZm4pLCBwYWdlX29yZGVyKSA6IDA7DQo+ID4+ICsgICAgICAgICAgICBpb21tdV9sZWdh Y3lfdW5tYXAocDJtLT5kb21haW4sIF9kZm4obWZuKSwgcGFnZV9vcmRlcikgOg0KPiAwOw0KPiA+ Pg0KPiA+PiAgICAgIEFTU0VSVChnZm5fbG9ja2VkX2J5X21lKHAybSwgZ2ZuKSk7DQo+ID4+ICAg ICAgUDJNX0RFQlVHKCJyZW1vdmluZyBnZm49JSNseCBtZm49JSNseFxuIiwgZ2ZuX2wsIG1mbik7 DQo+ID4+IEBAIC03ODAsOCArNzgwLDggQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0 IGRvbWFpbiAqZCwgZ2ZuX3QNCj4gZ2ZuLA0KPiA+PiBtZm5fdCBtZm4sDQo+ID4+DQo+ID4+ICAg ICAgaWYgKCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGQpICkNCj4gPj4gICAgICAgICAgcmV0dXJu IChuZWVkX2lvbW11X3B0X3N5bmMoZCkgJiYgdCA9PSBwMm1fcmFtX3J3KSA/DQo+ID4+IC0gICAg ICAgICAgICBpb21tdV9tYXAoZCwgX2RmbihtZm5feChtZm4pKSwgbWZuLCBwYWdlX29yZGVyLA0K PiA+PiAtICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8IElPTU1VRl93cml0 YWJsZSkgOiAwOw0KPiA+PiArICAgICAgICAgICAgaW9tbXVfbGVnYWN5X21hcChkLCBfZGZuKG1m bl94KG1mbikpLCBtZm4sIHBhZ2Vfb3JkZXIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElPTU1VRl9yZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSkgOiAwOw0KPiA+Pg0KPiA+ PiAgICAgIC8qIGZvcmVpZ24gcGFnZXMgYXJlIGFkZGVkIHRocnUgcDJtX2FkZF9mb3JlaWduICov DQo+ID4+ICAgICAgaWYgKCBwMm1faXNfZm9yZWlnbih0KSApDQo+ID4+IEBAIC0xMTUxLDggKzEx NTEsOCBAQCBpbnQgc2V0X2lkZW50aXR5X3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLA0KPiA+ PiB1bnNpZ25lZCBsb25nIGdmbl9sLA0KPiA+PiAgICAgIHsNCj4gPj4gICAgICAgICAgaWYgKCAh bmVlZF9pb21tdV9wdF9zeW5jKGQpICkNCj4gPj4gICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ PiAtICAgICAgICByZXR1cm4gaW9tbXVfbWFwKGQsIF9kZm4oZ2ZuX2wpLCBfbWZuKGdmbl9sKSwg UEFHRV9PUkRFUl80SywNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVh ZGFibGUgfCBJT01NVUZfd3JpdGFibGUpOw0KPiA+PiArICAgICAgICByZXR1cm4gaW9tbXVfbGVn YWN5X21hcChkLCBfZGZuKGdmbl9sKSwgX21mbihnZm5fbCksDQo+ID4+IFBBR0VfT1JERVJfNEss DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8 IElPTU1VRl93cml0YWJsZSk7DQo+ID4+ICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgIGdmbl9sb2Nr KHAybSwgZ2ZuLCAwKTsNCj4gPj4gQEAgLTEyNDIsNyArMTI0Miw3IEBAIGludCBjbGVhcl9pZGVu dGl0eV9wMm1fZW50cnkoc3RydWN0IGRvbWFpbiAqZCwNCj4gPj4gdW5zaWduZWQgbG9uZyBnZm5f bCkNCj4gPj4gICAgICB7DQo+ID4+ICAgICAgICAgIGlmICggIW5lZWRfaW9tbXVfcHRfc3luYyhk KSApDQo+ID4+ICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPj4gLSAgICAgICAgcmV0dXJuIGlv bW11X3VubWFwKGQsIF9kZm4oZ2ZuX2wpLCBQQUdFX09SREVSXzRLKTsNCj4gPj4gKyAgICAgICAg cmV0dXJuIGlvbW11X2xlZ2FjeV91bm1hcChkLCBfZGZuKGdmbl9sKSwgUEFHRV9PUkRFUl80Syk7 DQo+ID4+ICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgIGdmbl9sb2NrKHAybSwgZ2ZuLCAwKTsNCj4g Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9hcmNoL3g4Ni94 ODZfNjQvbW0uYw0KPiA+PiBpbmRleCAxMjZhNDg2ZDJlLi5kOGY1NThiYzNhIDEwMDY0NA0KPiA+ PiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMNCj4gPj4gKysrIGIveGVuL2FyY2gveDg2 L3g4Nl82NC9tbS5jDQo+ID4+IEBAIC0xNDM2LDE1ICsxNDM2LDE2IEBAIGludCBtZW1vcnlfYWRk KHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQNCj4gbG9uZw0KPiA+PiBlcGZuLCB1bnNpZ25l ZCBpbnQgcHhtKQ0KPiA+PiAgICAgICAgICAgIW5lZWRfaW9tbXVfcHRfc3luYyhoYXJkd2FyZV9k b21haW4pICkNCj4gPj4gICAgICB7DQo+ID4+ICAgICAgICAgIGZvciAoIGkgPSBzcGZuOyBpIDwg ZXBmbjsgaSsrICkNCj4gPj4gLSAgICAgICAgICAgIGlmICggaW9tbXVfbWFwKGhhcmR3YXJlX2Rv bWFpbiwgX2RmbihpKSwgX21mbihpKSwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg IFBBR0VfT1JERVJfNEssDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZf cmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpICkNCj4gPj4gKyAgICAgICAgICAgIGlmICggaW9t bXVfbGVnYWN5X21hcChoYXJkd2FyZV9kb21haW4sIF9kZm4oaSksIF9tZm4oaSksDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80SywNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZf d3JpdGFibGUpICkNCj4gPj4gICAgICAgICAgICAgICAgICBicmVhazsNCj4gPj4gICAgICAgICAg aWYgKCBpICE9IGVwZm4gKQ0KPiA+PiAgICAgICAgICB7DQo+ID4+ICAgICAgICAgICAgICB3aGls ZSAoaS0tID4gb2xkX21heCkNCj4gPj4gICAgICAgICAgICAgICAgICAvKiBJZiBzdGF0ZW1lbnQg dG8gc2F0aXNmeSBfX211c3RfY2hlY2suICovDQo+ID4+IC0gICAgICAgICAgICAgICAgaWYgKCBp b21tdV91bm1hcChoYXJkd2FyZV9kb21haW4sIF9kZm4oaSksDQo+IFBBR0VfT1JERVJfNEspDQo+ ID4+ICkNCj4gPj4gKyAgICAgICAgICAgICAgICBpZiAoIGlvbW11X2xlZ2FjeV91bm1hcChoYXJk d2FyZV9kb21haW4sIF9kZm4oaSksDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUEFHRV9PUkRFUl80SykgKQ0KPiA+PiAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsNCj4gPj4NCj4gPj4gICAgICAgICAgICAgIGdvdG8gZGVzdHJveV9tMnA7DQo+ID4+ IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dyYW50 X3RhYmxlLmMNCj4gPj4gaW5kZXggYjY3YWU5ZTNmNS4uZmQwOTlhOGYyNSAxMDA2NDQNCj4gPj4g LS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jDQo+ID4+ICsrKyBiL3hlbi9jb21tb24vZ3Jh bnRfdGFibGUuYw0KPiA+PiBAQCAtMTEzNCwxNCArMTEzNCwxNCBAQCBtYXBfZ3JhbnRfcmVmKA0K PiA+PiAgICAgICAgICAgICAgICEob2xkX3BpbiAmIChHTlRQSU5faHN0d19tYXNrfEdOVFBJTl9k ZXZ3X21hc2spKSApDQo+ID4+ICAgICAgICAgIHsNCj4gPj4gICAgICAgICAgICAgIGlmICggIShr aW5kICYgTUFQS0lORF9XUklURSkgKQ0KPiA+PiAtICAgICAgICAgICAgICAgIGVyciA9IGlvbW11 X21hcChsZCwgX2RmbihtZm5feChtZm4pKSwgbWZuLCAwLA0KPiA+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpOw0KPiA+ PiArICAgICAgICAgICAgICAgIGVyciA9IGlvbW11X2xlZ2FjeV9tYXAobGQsIF9kZm4obWZuX3go bWZuKSksIG1mbiwgMCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElPTU1VRl9yZWFkYWJsZSB8DQo+ID4+IElPTU1VRl93cml0YWJsZSk7DQo+ID4+ICAgICAg ICAgIH0NCj4gPj4gICAgICAgICAgZWxzZSBpZiAoIGFjdF9waW4gJiYgIW9sZF9waW4gKQ0KPiA+ PiAgICAgICAgICB7DQo+ID4+ICAgICAgICAgICAgICBpZiAoICFraW5kICkNCj4gPj4gLSAgICAg ICAgICAgICAgICBlcnIgPSBpb21tdV9tYXAobGQsIF9kZm4obWZuX3gobWZuKSksIG1mbiwgMCwN Cj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlKTsN Cj4gPj4gKyAgICAgICAgICAgICAgICBlcnIgPSBpb21tdV9sZWdhY3lfbWFwKGxkLCBfZGZuKG1m bl94KG1mbikpLCBtZm4sIDAsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJT01NVUZfcmVhZGFibGUpOw0KPiA+PiAgICAgICAgICB9DQo+ID4+ICAgICAgICAg IGlmICggZXJyICkNCj4gPj4gICAgICAgICAgew0KPiA+PiBAQCAtMTM4OSwxMCArMTM4OSwxMCBA QCB1bm1hcF9jb21tb24oDQo+ID4+DQo+ID4+ICAgICAgICAgIGtpbmQgPSBtYXBraW5kKGxndCwg cmQsIG9wLT5tZm4pOw0KPiA+PiAgICAgICAgICBpZiAoICFraW5kICkNCj4gPj4gLSAgICAgICAg ICAgIGVyciA9IGlvbW11X3VubWFwKGxkLCBfZGZuKG1mbl94KG9wLT5tZm4pKSwgMCk7DQo+ID4+ ICsgICAgICAgICAgICBlcnIgPSBpb21tdV9sZWdhY3lfdW5tYXAobGQsIF9kZm4obWZuX3gob3At Pm1mbikpLCAwKTsNCj4gPj4gICAgICAgICAgZWxzZSBpZiAoICEoa2luZCAmIE1BUEtJTkRfV1JJ VEUpICkNCj4gPj4gLSAgICAgICAgICAgIGVyciA9IGlvbW11X21hcChsZCwgX2RmbihtZm5feChv cC0+bWZuKSksIG9wLT5tZm4sIDAsDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg SU9NTVVGX3JlYWRhYmxlKTsNCj4gPj4gKyAgICAgICAgICAgIGVyciA9IGlvbW11X2xlZ2FjeV9t YXAobGQsIF9kZm4obWZuX3gob3AtPm1mbikpLCBvcC0+bWZuLA0KPiAwLA0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGUpOw0KPiA+Pg0KPiA+ PiAgICAgICAgICBkb3VibGVfZ3RfdW5sb2NrKGxndCwgcmd0KTsNCj4gPj4NCj4gPj4gZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29tbW9uL21lbW9yeS5jDQo+ID4+IGlu ZGV4IDVmN2QwODFjNjEuLmYzN2ViMjg4ZDQgMTAwNjQ0DQo+ID4+IC0tLSBhL3hlbi9jb21tb24v bWVtb3J5LmMNCj4gPj4gKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYw0KPiA+PiBAQCAtODUzLDEx ICs4NTMsMTEgQEAgaW50IHhlbm1lbV9hZGRfdG9fcGh5c21hcChzdHJ1Y3QgZG9tYWluICpkLA0K PiBzdHJ1Y3QNCj4gPj4geGVuX2FkZF90b19waHlzbWFwICp4YXRwLA0KPiA+Pg0KPiA+PiAgICAg ICAgICB0aGlzX2NwdShpb21tdV9kb250X2ZsdXNoX2lvdGxiKSA9IDA7DQo+ID4+DQo+ID4+IC0g ICAgICAgIHJldCA9IGlvbW11X2lvdGxiX2ZsdXNoKGQsIF9kZm4oeGF0cC0+aWR4IC0gZG9uZSks IGRvbmUpOw0KPiA+PiArICAgICAgICByZXQgPSBpb21tdV9mbHVzaChkLCBfZGZuKHhhdHAtPmlk eCAtIGRvbmUpLCBkb25lKTsNCj4gPj4gICAgICAgICAgaWYgKCB1bmxpa2VseShyZXQpICYmIHJj ID49IDAgKQ0KPiA+PiAgICAgICAgICAgICAgcmMgPSByZXQ7DQo+ID4+DQo+ID4+IC0gICAgICAg IHJldCA9IGlvbW11X2lvdGxiX2ZsdXNoKGQsIF9kZm4oeGF0cC0+Z3BmbiAtIGRvbmUpLCBkb25l KTsNCj4gPj4gKyAgICAgICAgcmV0ID0gaW9tbXVfZmx1c2goZCwgX2Rmbih4YXRwLT5ncGZuIC0g ZG9uZSksIGRvbmUpOw0KPiA+PiAgICAgICAgICBpZiAoIHVubGlrZWx5KHJldCkgJiYgcmMgPj0g MCApDQo+ID4+ICAgICAgICAgICAgICByYyA9IHJldDsNCj4gPj4gICAgICB9DQo+ID4+IGRpZmYg LS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jDQo+ID4+IGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvaW9tbXUuYw0KPiA+PiBpbmRleCBjMWNjZTA4NTUxLi4xMDU5OTVhMzQz IDEwMDY0NA0KPiA+PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jDQo+ID4+ ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMNCj4gPj4gQEAgLTMwNCw4ICsz MDQsOCBAQCB2b2lkIGlvbW11X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpDQo+ID4+ ICAgICAgYXJjaF9pb21tdV9kb21haW5fZGVzdHJveShkKTsNCj4gPj4gIH0NCj4gPj4NCj4gPj4g LWludCBpb21tdV9tYXAoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5fdCBtZm4sDQo+ ID4+IC0gICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpDQo+ID4+ICtpbnQgaW9tbXVfbGVnYWN5X21hcChzdHJ1Y3QgZG9tYWluICpkLCBkZm5f dCBkZm4sIG1mbl90IG1mbiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBwYWdlX29yZGVyLCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQo+ID4+ICB7DQo+ID4+ICAgICAgY29u c3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7DQo+ID4+ICAgICAgdW5z aWduZWQgbG9uZyBpOw0KPiA+PiBAQCAtMzQ1LDcgKzM0NSw3IEBAIGludCBpb21tdV9tYXAoc3Ry dWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5fdA0KPiBtZm4sDQo+ID4+ICAgICAgcmV0dXJu IHJjOw0KPiA+PiAgfQ0KPiA+Pg0KPiA+PiAtaW50IGlvbW11X3VubWFwKHN0cnVjdCBkb21haW4g KmQsIGRmbl90IGRmbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpDQo+ID4+ICtpbnQgaW9tbXVf bGVnYWN5X3VubWFwKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgdW5zaWduZWQgaW50DQo+ ID4+IHBhZ2Vfb3JkZXIpDQo+ID4+ICB7DQo+ID4+ICAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9p b21tdSAqaGQgPSBkb21faW9tbXUoZCk7DQo+ID4+ICAgICAgdW5zaWduZWQgbG9uZyBpOw0KPiA+ PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMNCj4gPj4g Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYw0KPiA+PiBpbmRleCBjNjhhNzIy NzlkLi5iMTIyODlhMThmIDEwMDY0NA0KPiA+PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC94ODYvaW9tbXUuYw0KPiA+PiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9t bXUuYw0KPiA+PiBAQCAtMjQxLDggKzI0MSw4IEBAIHZvaWQgX19od2RvbV9pbml0IGFyY2hfaW9t bXVfaHdkb21faW5pdChzdHJ1Y3QNCj4gZG9tYWluDQo+ID4+ICpkKQ0KPiA+PiAgICAgICAgICBp ZiAoIHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSApDQo+ID4+ICAgICAgICAgICAgICByYyA9IHNl dF9pZGVudGl0eV9wMm1fZW50cnkoZCwgcGZuLCBwMm1fYWNjZXNzX3J3LCAwKTsNCj4gPj4gICAg ICAgICAgZWxzZQ0KPiA+PiAtICAgICAgICAgICAgcmMgPSBpb21tdV9tYXAoZCwgX2RmbihwZm4p LCBfbWZuKHBmbiksIFBBR0VfT1JERVJfNEssDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpOw0KPiA+PiArICAgICAgICAg ICAgcmMgPSBpb21tdV9sZWdhY3lfbWFwKGQsIF9kZm4ocGZuKSwgX21mbihwZm4pLA0KPiBQQUdF X09SREVSXzRLLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V Rl9yZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSk7DQo+ID4+ICAgICAgICAgIGlmICggcmMgKQ0K PiA+PiAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICIgZCVkOiBJT01NVSBtYXBw aW5nIGZhaWxlZDogJWRcbiIsDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lk LCByYyk7DQo+ID4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCBiL3hlbi9p bmNsdWRlL3hlbi9pb21tdS5oDQo+ID4+IGluZGV4IDNkNzgxMjY4MDEuLjFmODc1YWEzMjggMTAw NjQ0DQo+ID4+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oDQo+ID4+ICsrKyBiL3hlbi9p bmNsdWRlL3hlbi9pb21tdS5oDQo+ID4+IEBAIC04MywxNSArODMsMjEgQEAgaW50IGlvbW11X2Nv bnN0cnVjdChzdHJ1Y3QgZG9tYWluICpkKTsNCj4gPj4gIC8qIEZ1bmN0aW9uIHVzZWQgaW50ZXJu YWxseSwgdXNlIGlvbW11X2RvbWFpbl9kZXN0cm95ICovDQo+ID4+ICB2b2lkIGlvbW11X3RlYXJk b3duKHN0cnVjdCBkb21haW4gKmQpOw0KPiA+Pg0KPiA+PiAtLyogaW9tbXVfbWFwX3BhZ2UoKSB0 YWtlcyBmbGFncyB0byBkaXJlY3QgdGhlIG1hcHBpbmcgb3BlcmF0aW9uLiAqLw0KPiA+PiArLyoN Cj4gPj4gKyAqIFRoZSBmb2xsb3dpbmcgZmxhZ3MgYXJlIHBhc3NlZCB0byBtYXAgb3BlcmF0aW9u cyBhbmQgcGFzc2VkIGJ5DQo+IGxvb2t1cA0KPiA+PiArICogb3BlcmF0aW9ucy4NCj4gPj4gKyAq Lw0KPiA+PiAgI2RlZmluZSBfSU9NTVVGX3JlYWRhYmxlIDANCj4gPj4gICNkZWZpbmUgSU9NTVVG X3JlYWRhYmxlICAoMXU8PF9JT01NVUZfcmVhZGFibGUpDQo+ID4+ICAjZGVmaW5lIF9JT01NVUZf d3JpdGFibGUgMQ0KPiA+PiAgI2RlZmluZSBJT01NVUZfd3JpdGFibGUgICgxdTw8X0lPTU1VRl93 cml0YWJsZSkNCj4gPj4gLWludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwKHN0cnVjdCBkb21haW4g KmQsIGRmbl90IGRmbiwgbWZuX3QgbWZuLA0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIsIHVuc2lnbmVkIGludA0KPiBmbGFncyk7DQo+ID4+ IC1pbnQgX19tdXN0X2NoZWNrIGlvbW11X3VubWFwKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRm biwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vf b3JkZXIpOw0KPiA+PiArDQo+ID4+ICtpbnQgX19tdXN0X2NoZWNrIGlvbW11X2xlZ2FjeV9tYXAo c3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5fdA0KPiBtZm4sDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIsDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsN Cj4gPj4gK2ludCBfX211c3RfY2hlY2sgaW9tbXVfbGVnYWN5X3VubWFwKHN0cnVjdCBkb21haW4g KmQsIGRmbl90IGRmbiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBwYWdlX29yZGVyKTsNCj4gPj4gKw0KPiA+PiAgaW50IF9fbXVzdF9jaGVj ayBpb21tdV9sb29rdXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIG1mbl90DQo+ ID4+ICptZm4sDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCAqZmxhZ3MpOw0KPiA+Pg0KPiA+PiAtLQ0KPiA+PiAyLjExLjANCj4gPg0KPiA+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gWGVuLWRl dmVsIG1haWxpbmcgbGlzdA0KPiA+IFhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiA+ IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWwN Cj4gDQo+IA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs