From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Thu, 8 Aug 2019 22:32:14 +0300 Message-ID: <20190808193214.GA6055@pendragon.ideasonboard.com> References: <20190707181937.6250-6-laurent.pinchart@ideasonboard.com> <1f98e5f0-d513-d3f2-420d-80e0e0c3c71b@samsung.com> <20190711073548.GD15868@phenom.ffwll.local> <1d48919c-e876-152c-0f05-64eb4c62fcaf@samsung.com> <20190711131816.GM15868@phenom.ffwll.local> <6bbb03e6-0228-a3ea-f1bb-8ed6e52114d7@samsung.com> <20190711155035.GO15868@phenom.ffwll.local> <7797e98a-9587-b501-9869-9393b6fc6bd2@samsung.com> <20190716090039.GW15868@phenom.ffwll.local> <9c21691c-ffd1-43ed-13f8-121271ff053e@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 010E86E0C2 for ; Thu, 8 Aug 2019 19:32:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <9c21691c-ffd1-43ed-13f8-121271ff053e@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGVsbG8sCgpPbiBUdWUsIEp1bCAxNiwgMjAxOSBhdCAwMzo1NzoyMVBNICswMjAwLCBBbmRyemVq IEhhamRhIHdyb3RlOgo+IE9uIDE2LjA3LjIwMTkgMTE6MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4gPiBPbiBGcmksIEp1bCAxMiwgMjAxOSBhdCAxMTowMTozOEFNICswMjAwLCBBbmRyemVqIEhh amRhIHdyb3RlOgo+ID4+IE9uIDExLjA3LjIwMTkgMTc6NTAsIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4gPj4+IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDA1OjEyOjI2UE0gKzAyMDAsIEFuZHJ6ZWog SGFqZGEgd3JvdGU6Cj4gPj4+PiBPbiAxMS4wNy4yMDE5IDE1OjE4LCBEYW5pZWwgVmV0dGVyIHdy b3RlOgo+ID4+Pj4+IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDAyOjQxOjAxUE0gKzAyMDAsIEFu ZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPj4+Pj4+IE9uIDExLjA3LjIwMTkgMDk6MzUsIERhbmllbCBW ZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+PiBPbiBXZWQsIEp1bCAxMCwgMjAxOSBhdCAwMjoxMjoxNFBN ICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+ID4+Pj4+Pj4+IEhpIExhdXJlbnQsCj4gPj4+ Pj4+Pj4KPiA+Pj4+Pj4+PiBJIGxpa2UgdGhlIGFwcHJvYWNoLCBjdXJyZW50IHByYWN0aWNlIHdo ZW4gYWxtb3N0IGV2ZXJ5IGJyaWRnZSBzaG91bGQKPiA+Pj4+Pj4+PiBvcHRpb25hbGx5IGltcGxl bWVudCBjb25uZWN0b3IsIG9yIGFsdGVybmF0aXZlbHkgZG93bnN0cmVhbSBicmlkZ2Ugb3IKPiA+ Pj4+Pj4+PiBwYW5lbCBpcyB2ZXJ5IHBhaW5mdWwuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gWWVhaCBJ IHRoaW5rIHRoaXMgbG9va3MgbW9zdGx5IHJlYXNvbmFibGUuIFNvbWUgYXBpIGRlc2lnbiBjb21t ZW50cyBvbiB0b3AKPiA+Pj4+Pj4+IG9mIEFuZHJ6ZWonLCB3aXRoIHRoZSBmYWlyIHdhcm5pbmcg dGhhdCBJIGRpZG4ndCBib3RoZXIgdG8gcmVhZCB1cCBvbiBob3cKPiA+Pj4+Pj4+IGl0J3MgYWxs IHVzZWQgaW4gdGhlIGVuZC4gSSBwcm9iYWJseSBzaG91bGQgZ28gYW5kIGRvIHRoYXQsIGF0IGxl YXN0IHRvCj4gPj4+Pj4+PiBnZXQgYSBmZWVsaW5nIGZvciB3aGF0IHlvdXIgaHBkX2NiIHVzdWFs bHkgZG9lcy4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gTW9yZSBjb21tZW50cyBpbmxpbmVkLgo+ID4+ Pj4+Pj4+Cj4gPj4+Pj4+Pj4gT24gMDcuMDcuMjAxOSAyMDoxOCwgTGF1cmVudCBQaW5jaGFydCB3 cm90ZToKPiA+Pj4+Pj4+Pj4gVG8gc3VwcG9ydCBpbXBsZW1lbnRhdGlvbiBvZiBEUk0gY29ubmVj dG9ycyBvbiB0b3Agb2YgRFJNIGJyaWRnZXMKPiA+Pj4+Pj4+Pj4gaW5zdGVhZCBvZiBieSBicmlk Z2VzLCB0aGUgZHJtX2JyaWRnZSBuZWVkcyB0byBleHBvc2UgbmV3IG9wZXJhdGlvbnMgYW5kCj4g Pj4+Pj4+Pj4+IGRhdGE6Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IC0gT3V0cHV0IGRldGVjdGlv biwgaG90LXBsdWcgbm90aWZpY2F0aW9uLCBtb2RlIHJldHJpZXZhbCBhbmQgRURJRAo+ID4+Pj4+ Pj4+PiAgIHJldHJpZXZhbCBvcGVyYXRpb25zCj4gPj4+Pj4+Pj4+IC0gQml0bWFzayBvZiBzdXBw b3J0ZWQgb3BlcmF0aW9ucwo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gV2h5IGRvIHdlIG5lZWQgdGhl c2UgYml0bWFzayBhdCBhbGw/IFdoeSBjYW5ub3Qgd2UgcmVseSBvbiBwcmVzZW5jZSBvZgo+ID4+ Pj4+Pj4+IG9wZXJhdGlvbidzIGNhbGxiYWNrPwo+ID4+Pj4+Pj4gWWVhaCBhbHNvIG5vdCBhIGh1 Z2UgZmFuIG9mIHRoZXNlIGJpdG1hc2tzLiBTbWVsbHMgbGlrZQo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+ IERSSVZFUl9HRU18RFJJVkVSX01PREVTRVQsIGFuZCBJIHBlcnNvbmFsbHkgcmVhbGx5IGhhdGUg dGhvc2UuIEVhc3kgdG8KPiA+Pj4+Pj4+IGFkZCwgZ2VuZXJhbGx5IGdvb2QgZXhjdXNlIHRvIG5v dCBoYXZlIHRvIHRoaW5rIHRocm91Z2ggdGhlIGRlc2lnbiBiZXR3ZWVuCj4gPj4+Pj4+PiBkaWZm ZXJlbnQgcGFydHMgb2YgZHJpdmVycyAtICJqdXN0IiBhZGQgYW5vdGhlciBmbGFnLgo+ID4+Pj4+ Pj4KPiA+Pj4+Pj4+Pj4gLSBCcmlkZ2Ugb3V0cHV0IHR5cGUKPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+ Pj4gQWRkIGFuZCBkb2N1bWVudCB0aGVzZS4KPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gVGhyZWUg bmV3IGJyaWRnZSBoZWxwZXIgZnVuY3Rpb25zIGFyZSBhbHNvIGFkZGVkIHRvIGhhbmRsZSBob3Qg cGx1Zwo+ID4+Pj4+Pj4+PiBub3RpZmljYXRpb24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3Bh cmVudCBhcyBwb3NzaWJsZSBmb3IgdGhlCj4gPj4+Pj4+Pj4+IGJyaWRnZXMuCj4gPj4+Pj4+Pj4K PiA+Pj4+Pj4+PiBEb2N1bWVudGF0aW9uIG9mIG5ldyBvcHNlcyBkb2VzIG5vdCBleHBsYWluIGhv dyBpdCBzaG91bGQgY29vcGVyYXRlIHdpdGgKPiA+Pj4+Pj4+PiBicmlkZ2UgY2hhaW5pbmcsIEkg c3VwcG9zZSB0aGV5IHNob3VsZCBiZSBjaGFpbmVkIGV4cGxpY2l0bHksIGFtIEkKPiA+Pj4+Pj4+ PiByaWdodD8gTW9yZSBjb21tZW50cyBhYm91dCBpdCBsYXRlci4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+ Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlk ZWFzb25ib2FyZC5jb20+Cj4gPj4+Pj4+Pj4+IC0tLQo+ID4+Pj4+Pj4+PiAgZHJpdmVycy9ncHUv ZHJtL2RybV9icmlkZ2UuYyB8ICA5MiArKysrKysrKysrKysrKysrKysrCj4gPj4+Pj4+Pj4+ICBp bmNsdWRlL2RybS9kcm1fYnJpZGdlLmggICAgIHwgMTcwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCj4gPj4+Pj4+Pj4+ICAyIGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2Uu Ywo+ID4+Pj4+Pj4+PiBpbmRleCA1MTk1NzdmMzYzZTMuLjNjMmEyNTVkZjdhZiAxMDA2NDQKPiA+ Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4+Pj4+Pj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPj4+Pj4+Pj4+IEBAIC03MCw2ICs3 MCw4IEBAIHN0YXRpYyBMSVNUX0hFQUQoYnJpZGdlX2xpc3QpOwo+ID4+Pj4+Pj4+PiAgICovCj4g Pj4+Pj4+Pj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Cj4gPj4+Pj4+Pj4+ICB7Cj4gPj4+Pj4+Pj4+ICsJbXV0ZXhfaW5pdCgmYnJpZGdlLT5ocGRfbXV0 ZXgpOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICAJbXV0ZXhfbG9jaygmYnJpZGdlX2xvY2sp Owo+ID4+Pj4+Pj4+PiAgCWxpc3RfYWRkX3RhaWwoJmJyaWRnZS0+bGlzdCwgJmJyaWRnZV9saXN0 KTsKPiA+Pj4+Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsKPiA+Pj4+Pj4+Pj4g QEAgLTg2LDYgKzg4LDggQEAgdm9pZCBkcm1fYnJpZGdlX3JlbW92ZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQo+ID4+Pj4+Pj4+PiAgCW11dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPiA+Pj4+ Pj4+Pj4gIAlsaXN0X2RlbF9pbml0KCZicmlkZ2UtPmxpc3QpOwo+ID4+Pj4+Pj4+PiAgCW11dGV4 X3VubG9jaygmYnJpZGdlX2xvY2spOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJbXV0ZXhf ZGVzdHJveSgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+PiAgfQo+ID4+Pj4+Pj4+PiAg RVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX3JlbW92ZSk7Cj4gPj4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+ Pj4gQEAgLTQ2Myw2ICs0NjcsOTQgQEAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4gIH0KPiA+Pj4+Pj4+Pj4gIEVYUE9S VF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKTsKPiA+Pj4+Pj4+Pj4gIAo+ID4+Pj4+ Pj4+PiArLyoqCj4gPj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUgLSBlbmFibGUg aG90IHBsdWcgZGV0ZWN0aW9uIGZvciB0aGUgYnJpZGdlCj4gPj4+Pj4+Pj4+ICsgKiBAYnJpZGdl OiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+Pj4gKyAqIEBjYjogaG90LXBsdWcg ZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4+Pj4+ICsgKiBAZGF0YTogZGF0YSB0byBiZSBwYXNz ZWQgdG8gdGhlIGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ID4+Pj4+Pj4+PiArICoKPiA+ Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBhbmQgcmVnaXN0 ZXIgdGhlIGdpdmVuIEBjYiBhbmQgQGRhdGEgYXMKPiA+Pj4+Pj4+Pj4gKyAqIGhvdCBwbHVnIG5v dGlmaWNhdGlvbiBjYWxsYmFjay4gRnJvbSBub3cgb24gdGhlIEBjYiB3aWxsIGJlIGNhbGxlZCB3 aXRoCj4gPj4+Pj4+Pj4+ICsgKiBAZGF0YSB3aGVuIGFuIG91dHB1dCBzdGF0dXMgY2hhbmdlIGlz IGRldGVjdGVkIGJ5IHRoZSBicmlkZ2UsIHVudGlsIGhvdCBwbHVnCj4gPj4+Pj4+Pj4+ICsgKiBu b3RpZmljYXRpb24gZ2V0cyBkaXNhYmxlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKS4K PiA+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+ICsgKiBIb3QgcGx1ZyBkZXRlY3Rpb24gaXMgc3Vw cG9ydGVkIG9ubHkgaWYgdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaXMgc2V0IGluCj4gPj4+ Pj4+Pj4+ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlvbiBzaGFsbCBub3QgYmUgY2FsbGVk IHdoZW4gdGhlIGZsYWcgaXMgbm90IHNldC4KPiA+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+ICsg KiBPbmx5IG9uZSBob3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sgY2FuIGJlIHJlZ2lzdGVyZWQg YXQgYSB0aW1lLCBpdCBpcyBhbgo+ID4+Pj4+Pj4+PiArICogZXJyb3IgdG8gY2FsbCB0aGlzIGZ1 bmN0aW9uIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGlzIGFscmVhZHkgZW5hYmxlZCBmb3IKPiA+ Pj4+Pj4+Pj4gKyAqIHRoZSBicmlkZ2UuCj4gPj4+Pj4+Pj4+ICsgKi8KPiA+Pj4+Pj4+PiBUbyBz aW1wbGlmeSBhcmNoaXRlY3R1cmUgbWF5YmUgd291bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQg anVzdCBvbgo+ID4+Pj4+Pj4+IGJyaWRnZSBhdHRhY2g6Cj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBi cmlkZ2UtPmhwZF9jYiA9IGNiOwo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gYnJpZGdlLT5ocGRfZGF0 YSA9IGRhdGE7Cj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiByZXQgPSBkcm1fYnJpZGdlX2F0dGFjaCgu Li4pOwo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFllYWggSSBsaWtlIHRoaXMgbW9yZS4gVGhlIG90aGVy IHByb2JsZW0gaGVyZSBpcywgd2hhdCBpZiB5b3UgbmVlZCBtb3JlCj4gPj4+Pj4+PiB0aGFuIDEg Y2FsbGJhY2sgcmVnaXN0ZXJzIG9uIHRoZSBzYW1lIGJyaWRnZSBoZHAgc2lnbmFsPwo+ID4+Pj4+ Pj4KPiA+Pj4+Pj4+PiBUaGlzIHdheSB3ZSBjb3VsZCBhdm9pZCBhZGRpbmcgbmV3IGNhbGxiYWNr cyBocGRfKGVuYWJsZXxkaXNhYmxlKQo+ID4+Pj4+Pj4+IHdpdGhvdXQgYmlnIHNhY3JpZmljZXMu Cj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBPbmUgbW9yZSB0aGluZzogSFBEIGluIERpc3BsYXlQb3J0 L0hETUkgYmVzaWRlIHNpZ25hbGxpbmcgcGx1Zy91bnBsdWcsCj4gPj4+Pj4+Pj4gbm90aWZpZXMg YWJvdXQgc2luayBzdGF0dXMgY2hhbmdlLCBob3cgaXQgdHJhbnNsYXRlcyB0byB0aGlzIGNiPwo+ ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+PiArCQkJICAgdm9pZCAoKmNiKSh2b2lkICpk YXRhLAo+ID4+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3Rh dHVzKSwKPiA+Pj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKmRhdGEpCj4gPj4+Pj4+Pj4+ICt7Cj4gPj4+ Pj4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhwZF9lbmFibGUpCj4gPj4+ Pj4+Pj4+ICsJCXJldHVybjsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArCW11dGV4X2xvY2so JmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArCWlmIChXQVJO KGJyaWRnZS0+aHBkX2NiLCAiSG90IHBsdWcgZGV0ZWN0aW9uIGFscmVhZHkgZW5hYmxlZFxuIikp Cj4gPj4+Pj4+Pj4+ICsJCWdvdG8gdW5sb2NrOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJ YnJpZGdlLT5ocGRfY2IgPSBjYjsKPiA+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9kYXRhID0gZGF0 YTsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArCWJyaWRnZS0+ZnVuY3MtPmhwZF9lbmFibGUo YnJpZGdlKTsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArdW5sb2NrOgo+ID4+Pj4+Pj4+PiAr CW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+PiArfQo+ID4+Pj4+ Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZW5hYmxlKTsKPiA+Pj4+Pj4+ Pj4gKwo+ID4+Pj4+Pj4+PiArLyoqCj4gPj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9kaXNh YmxlIC0gZGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UKPiA+Pj4+Pj4+ Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ID4+Pj4+Pj4+PiArICoK PiA+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2Rpc2FibGUgYW5kIHVu cmVnaXN0ZXIgdGhlIGhvdCBwbHVnIGRldGVjdGlvbgo+ID4+Pj4+Pj4+PiArICogY2FsbGJhY2sg cHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkuIE9uY2Ug dGhpcwo+ID4+Pj4+Pj4+PiArICogZnVuY3Rpb24gcmV0dXJucyB0aGUgY2FsbGJhY2sgd2lsbCBu b3QgYmUgY2FsbGVkIGJ5IHRoZSBicmlkZ2Ugd2hlbiBhbgo+ID4+Pj4+Pj4+PiArICogb3V0cHV0 IHN0YXR1cyBjaGFuZ2Ugb2NjdXJzLgo+ID4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+Pj4gKyAqIEhv dCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9I UEQgZmxhZyBpcyBzZXQgaW4KPiA+Pj4+Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBUaGlzIGZ1bmN0 aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0Lgo+ID4+Pj4+ Pj4+PiArICovCj4gPj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+Pj4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+Pj4gKwlpZiAoIWJy aWRnZSB8fCAhYnJpZGdlLT5mdW5jcy0+aHBkX2Rpc2FibGUpCj4gPj4+Pj4+Pj4+ICsJCXJldHVy bjsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211 dGV4KTsKPiA+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZGlzYWJsZShicmlkZ2UpOwo+ ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfY2IgPSBOVUxMOwo+ID4+Pj4+ Pj4+PiArCWJyaWRnZS0+aHBkX2RhdGEgPSBOVUxMOwo+ID4+Pj4+Pj4+PiArCW11dGV4X3VubG9j aygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+PiArfQo+ID4+Pj4+Pj4+PiArRVhQT1JU X1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSk7Cj4gPj4+Pj4+Pj4+ICsKPiA+Pj4+ Pj4+Pj4gKy8qKgo+ID4+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5IC0gbm90aWZ5 IGhvdCBwbHVnIGRldGVjdGlvbiBldmVudHMKPiA+Pj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRn ZSBjb250cm9sIHN0cnVjdHVyZQo+ID4+Pj4+Pj4+PiArICogQHN0YXR1czogb3V0cHV0IGNvbm5l Y3Rpb24gc3RhdHVzCj4gPj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+PiArICogQnJpZGdlIGRyaXZl cnMgc2hhbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHJlcG9ydCBob3QgcGx1ZyBldmVudHMgd2hl biB0aGV5Cj4gPj4+Pj4+Pj4+ICsgKiBkZXRlY3QgYSBjaGFuZ2UgaW4gdGhlIG91dHB1dCBzdGF0 dXMsIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGhhcyBiZWVuCj4gPj4+Pj4+Pj4+ICsgKiBlbmFi bGVkIGJ5IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGNhbGxiYWNrLgo+ID4+Pj4+ Pj4+PiArICoKPiA+Pj4+Pj4+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hhbGwgYmUgY2FsbGVkIGlu IGEgY29udGV4dCB0aGF0IGNhbiBzbGVlcC4KPiA+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+PiAr dm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ Pj4+Pj4+Pj4gKwkJCSAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKQo+ID4+Pj4+ Pj4+PiArewo+ID4+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+ Pj4+Pj4+Pj4gKwlpZiAoYnJpZGdlLT5ocGRfY2IpCj4gPj4+Pj4+Pj4+ICsJCWJyaWRnZS0+aHBk X2NiKGJyaWRnZS0+aHBkX2RhdGEsIHN0YXR1cyk7Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gU28gdGhp cyBpc24ndCBxdWl0ZSB3aGF0IEkgaGFkIGluIG1pbmQuIEluc3RlYWQgc29tZXRoaW5nIGxpa2Ug dGhpczoKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiAJLyogaXRlcmF0ZXMgb3ZlciBhbGwgYnJpZGdlcyBp biB0aGUgY2hhaW4gY29udGFpbmluZyBAYnJpZGdlICovCj4gPj4+Pj4+PiAJZm9yX2VhY2hfYnJp ZGdlKHRtcF9icmlkZ2UsIGJyaWRnZSkgewo+ID4+Pj4+Pj4gCQlpZiAodG1wX2JyaWRnZSA9PSBi cmlkZ2UpCj4gPj4+Pj4+PiAJCQljb250aW51ZTsKPiA+Pj4+Pj4+IAkJaWYgKGJyaWRnZS0+aHBk X25vdGlmeSk7Cj4gPj4+Pj4+PiAJCQlicmlkZ2UtPmhwZF9ub3RpZnkodG1wX2JyaWRnZSwgYnJp ZGdlLCBzdGF0dXMpOwo+ID4+Pj4+Pj4gCX0KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiAJZW5jb2RlciA9 IGVuY29kZXJfZm9yX2JyaWRnZShicmlkZ2UpOwo+ID4+Pj4+Pj4gCWlmIChlbmNvZGVyLT5oZWxw ZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkpCj4gPj4+Pj4+PiAJCWVuY29kZXItPmhlbHBl cl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeShlbmNvZGVyLCBicmlkZ2UsIHN0YXR1cyk7Cj4g Pj4+Pj4+Pgo+ID4+Pj4+Pj4gCWRldiA9IGJyaWRnZS0+ZGV2Cj4gPj4+Pj4+PiAJaWYgKGRldi0+ bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KQo+ID4+Pj4+Pj4g CQlkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeShkZXYs IGJyaWRnZSwgc3RhdHVzKQo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IE5vIHJlZ2lzdGVyIGNhbGxiYWNr IG5lZWRlZCwgbm8gbG9ja2luZyBuZWVkZWQsIGV2ZXJ5b25lIGdldHMgZXhhY3RseSB0aGUKPiA+ Pj4+Pj4+IGhwZCB0aGV5IHdhbnQvbmVlZC4KPiA+Pj4+Pj4gQXMgSSB1bmRlcnN0YW5kIHlvdSB3 YW50IHRvIG5vdGlmeSBldmVyeSBtZW1iZXIgb2YgdGhlIHBpcGVsaW5lLgo+ID4+Pj4+Pgo+ID4+ Pj4+PiBJIHRoaW5rIGl0IHNob3VsZCBiZSBlbm91Z2ggdG8gbm90aWZ5IG9ubHkgdGhlIHNvdXJj ZSwgYW5kIHRoZW4gc291cmNlCj4gPj4+Pj4+IHNob3VsZCBkZWNpZGUgaWYvd2hlbiB0aGUgaHBk IHNob3VsZCBiZSBwcm9wYWdhdGVkIHVwc3RyZWFtLgo+ID4+Pj4+Pgo+ID4+Pj4+PiBJdCBsb29r cyBtb3JlIGdlbmVyaWMgZm9yIG1lLgo+ID4+Pj4+Cj4gPj4+Pj4gSSdtIG5vdCBwYXJzaW5nIC4u LiBkbyB5b3UgdGhpbmsgbXkgaWRlYSBpcyBtb3JlIGdlbmVyaWMgYW5kIHVzZWZ1bCwgb3IKPiA+ Pj4+PiB0aGUgb25lIGZyb20gTGF1cmVudD8gS2luZGEgY29uZnVzZWQgaGVyZS4KPiA+Pj4+Cj4g Pj4+PiBSZWdhcmRpbmcgZ2VuZXJhbCBpZGVhOgo+ID4+Pj4KPiA+Pj4+IDEuIExhdXJlbnQncyBh cHByb2FjaCBpcyB0byBub3RpZnkgb25seSBjb25zdW1lciwgSSBndWVzcyB1c3VhbGx5IHZpZGVv Cj4gPj4+PiBzb3VyY2UuCj4gPj4+Pgo+ID4+Pj4gMi4gWW91ciBpcyB0byBub3RpZnkgYWxsIG90 aGVyIGJyaWRnZXMgYW5kIGVuY29kZXIuCj4gPj4+Pgo+ID4+Pj4gQW5kIEkgcHJlZmVyIDFzdCBh cHByb2FjaCwgd2h5Ogo+ID4+Pj4KPiA+Pj4+IC0gdGhlIHNvdXJjZSBjYW4gZGVjaWRlIGlmL3do ZW4gYW5kIHRvIHdobyBwcm9wYWdhdGUgdGhlIHNpZ25hbCwKPiA+Pj4+Cj4gPj4+PiAtIGlzIG1v cmUgZ2VuZXJpYywgZm9yIGV4YW1wbGUgaWYgYnJpZGdlIHNlbmQgc2lnbmFsIHRvIHR3bwo+ID4+ Pj4gbW9uaXRvcnMvcGFuZWxzLCBpdCBjYW4gZGVsYXkgaHBkIHByb3BhZ2F0aW9uIHRpbGwgYm90 aCBzaW5rcyBhcmUgcHJlc2VudCwKPiA+Pj4KPiA+Pj4gV2l0aCBMYXVyZW50J3MgYXBwcm9hY2gg dGhlIGJyaWRnZSBjYW5ub3Qgc2VuZCB0aGUgaHBkIHRvIG1vcmUgdGhhbiBvbmUKPiA+Pj4gY29u c3VtZXIuIFRoZXJlJ3Mgb25seSAxIGNhbGxiYWNrLiBTbyB5b3UncmUgZXhhbXBsZSBkb2Vzbid0 IHdvcmsuCj4gPj4KPiA+PiBJZiB0aGVyZSB3aWxsIGJlIHR3byBjb25zdW1lcnMsIHRoZXJlIHdp bGwgYmUgdHdvIGJyaWRnZSBhdHRhY2htZW50cywKPiA+PiB0aHVzIHRoZXJlIHdpbGwgYmUgdHdv IG5vdGlmaWNhdGlvbnMsIGl0IHNob3VsZCB3b3JrLgo+ID4KPiA+IDIgY29uc3VtZXJzLCAxIHBy b2R1Y2VyLiBUaGVyZSdzIG9ubHkgX29uZV8gY2FsbGJhY2sgaW4gdGhlIHByb2R1Y2VyLiBUaGUK PiA+IGNhbGxiYWNrIGlzIHJlZ2lzdGVyZWQgb24gdGhlIHByb2R1Y2UgYnJpZGdlLCBub3Qgb24g dGhlIGNvbnN1bWVyIGJyaWRnZQo+ID4gKG9yIEknbSB0b3RhbGxseSBtaXNyZWFkaW5nIHdoYXQg TGF1cmVudCBkb2VzIGhlcmUpLgo+IAo+IEkgaGF2ZSBhc3N1bWVkIHRoYXQgaWYgZGV2aWNlcyBl eHBvc2VzIHR3byBoYXJkd2FyZSBzaW5rIGludGVyZmFjZXMgaXQKPiB3aWxsIGV4cG9zZSB0d28g c2VwYXJhdGUgYnJpZGdlcyAtIG9mIGNvdXJzZSBpdCB3aWxsIG5vdCB3b3JrIHdpdGgKPiAiYnJp ZGdlIGNoYWluaW5nIiB0aGluZywgYnV0IHRoaXMgaXMgYSBkaWZmZXJlbnQgc3RvcnkuCgpEYW5p ZWwgaXMgcmlnaHQgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IGFsbG93cyBv bmUKY29uc3VtZXIuIFRoaXMgaXMgaG93ZXZlciBub3QgYSBsaW1pdGF0aW9uIG9mIHRoZSBBUEks IGJ1dCBvZiBpdHMKaW1wbGVtZW50YXRpb24sIGFzIEkgb25seSBuZWVkZWQgYSBzaW5nbGUgY29u c3VtZXIuIFRoZSBoZWxwZXJzIGluIHRoaXMKc2VyaWVzIGVuc3VyZSB0aGF0IG5laXRoZXIgdGhl IGNvbnN1bWVyIG5vciB0aGUgcHJvZHVjZXIgcG9rZSBpbiB0aGUKZHJtX2JyaWRnZSBzdHJ1Y3R1 cmUgdG8gY2FsbCBiYWNrIHRvIHRoZSBIUEQgaGFuZGxlcjoKCi0gVGhlIGNvbnN1bWVyIGNhbGxz IGRybV9icmlkZ2VfaHBkX2VuYWJsZSgpIGFuZAogIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKSwg d2hpY2ggY291bGQgb2ZmZXIgYSByZWZlcmVuY2UtY291bnRlZAogIGJlaGF2aW91ciBpZiBkZXNp cmVkIHdpdGhvdXQgY2hhbmdlcyB0byB0aGUgY29uc3VtZXIuCgotIFRoZSBwcm9kdWNlciBnZXRz IGNvbmZpZ3VyZWQgYnkgLmhwZF9lbmFibGUoKSBhbmQgLmhwZF9kaXNhYmxlKCksCiAgd2hpY2gg Y291bGQgYWxzbyBlYXNpbHkgYWNjb21tb2RhdGUgcmVmZXJlbmNlLWNvdW50aW5nIGluIHRoZSBk cm0KICBicmlkZ2UgY29yZSB3aXRob3V0IGNoYW5nZXMgdG8gdGhlIHByb2R1Y2VyLgoKLSBUaGUg cHJvZHVjZXIgbm90aWZpZXMgSFBEIHdpdGggZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCksIHdoaWNo IGNvdWxkCiAgZWFzaWx5IGJlIGV4dGVuZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29uc3VtZXJz IHdpdGhvdXQgY2hhbmdlcyB0bwogIHRoZSBwcm9kdWNlci4KClRoaXMgaXMgYWN0dWFsbHkgbXkg c2Vjb25kIHZlcnNpb24gb2YgdGhlIEhQRCBtZWNoYW5pc20uIFRoZSBmaXJzdAp2ZXJzaW9uIHdh cyBuZXZlciBwb3N0ZWQsIHBva2VkIGludG8gZHJtX2JyaWRnZSwgYW5kIHJlcXVpcmVkIHRoZQpw cm9kdWNlciB0byBiZSBhd2FyZSBvZiB0aGUgY2FsbGJhY2tzLiBBZnRlciBkaXNjdXNzaW5nIHRo aXMgcHJpdmF0ZWx5CndpdGggRGFuaWVsLCBJIGNhbWUgdXAgd2l0aCB0aGUgaW1wbGVtZW50YXRp b24gaW4gdGhpcyBzZXJpZXMgdGhhdCwKd2hpbGUgbm90IHN1cHBvcnRpbmcgbXVsdGlwbGUgY29u c3VtZXJzIG5vdywgbWFrZXMgaXQgZWFzeSB0byBleHRlbmQKbGF0ZXIgd2l0aG91dCBtaW5pbWFs IGVmZm9ydC4KCkRhbmllbCdzIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uIGFib3ZlIGxvb2tzIHJl YXNvbmFibGUgdG8gbWUsIHByb3ZpZGVkCndlIGNhbiBpdGVyYXRlIG92ZXIgdGhlIGJyaWRnZXMg aW4gYW4gb3JkZXIgdGhhdCBkb24ndCBkZXBlbmQgb24gdGhlCnBvc2l0aW9uIG9mIHRoZSBwcm9k dWNlciBpbiB0aGUgY2hhaW4gKHNob3VsZCBiZSBlYXN5IHRvIHNvbHZlIGJ5CnN0YXJ0aW5nIGF0 IHRoZSBlbmNvZGVyIGZvciBpbnN0YW5jZSkuIEl0IGhvd2V2ZXIgbG9va3MgYSBiaXQgbGlrZSBh Cm1pZGxheWVyIHRvIG1lIDotKSBUaGF0J3Mgd2h5IEkgaGF2ZSBhIHNpbWlsYXIgaW1wbGVtZW50 YXRpb24gaW4gdGhlCmNvbm5lY3Rvci1icmlkZ2UgaGVscGVyLCB3aGljaCBjb3VsZCBiZSBleHRl bmRlZCB0byBjYWxsCmVuY29kZXItPmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSgp IGFuZApkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSgp IGluc3RlYWQgb2YKaGFyZGNvZGluZyBkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KCkuIE1v dmluZyB0aGUgY29kZSB0bwpkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSB3b3VsZCBvbiB0aGUgb3Ro ZXIgaGFuZCBzZXQgdGhlIG5vdGlmaWNhdGlvbgpzZXF1ZW5jZSB0b3dhcmRzIHRoZSBlbmNvZGVy IGFuZCBkcml2ZXIgaW4gc3RvbmUuIERhbmllbCwgZG8geW91IHRoaW5rCnRoYXQgd291bGQgYmUg YmV0dGVyID8KCkkgd291bGQgbGlrZSB0byByZW1pbmQgZXZlcnlib2R5IHRoYXQgdGhpcyBzZXJp ZXMgaXNuJ3QgdGhlIGxhc3QgSSB3aWxsCmV2ZXIgc3VibWl0LCBhbmQgSSBwbGFuIHRvIGRvIG1v cmUgd29yayBvbiBkcm1fYnJpZGdlIGFuZCBkcm1fcGFuZWwuIEknbQpvcGVuIHRvIHN1Z2dlc3Rp b25zLCBhbmQgY2FuIGFkZHJlc3MgcHJvYmxlbXMgb24gdG9wIG9mIHRoZXNlIHBhdGNoZXMsCnBy b3ZpZGVkIG9idmlvdXNseSB0aGF0IHRoaXMgc2VyaWVzIGRvZXNuJ3QgZ28gaW4gdGhlIHdyb25n IGRpcmVjdGlvbi4KSSdtIG9mIGNvdXJzZSBhbHNvIHdpbGxpbmcgdG8gcmV3b3JrIHRoaXMgc2Vy aWVzLCBidXQgZ2l2ZW4gdGhlIGFtb3VudApvZiB3b3JrIHdlIGhhdmUgaW4gdGhlIGRybV9icmlk Z2UgcmVhbG0sIEkgY2FuJ3QgZml4IGV2ZXJ5dGhpbmcgaW4gb25lCmdvIDotKQoKPiA+Pj4+IC0g aXQgcmVzZW1ibGVzIGhhcmR3YXJlIHdpcmVzIDopCj4gPj4+Cj4gPj4+IFRoaXMgaXNuJ3QgZm9y IHRoZSBodyB3aXJlcyBhZmFpdWkuIFRoZSBodyBocGQgdGVybWluYXRlcyBpbiB0aGUgc291cmNl Cj4gPj4+IGJyaWRnZSwgd2hpY2ggdGhlbiBjYWxscyBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSB0 byBpbmZvcm0gYW55b25lIGVsc2UKPiA+Pj4gaW50ZXJlc3RlZCBpbiB0aGF0IGhwZCBzaW5nYWwu IFRoaXMgaW5jbHVkZXM6Cj4gPj4+IC0gT3RoZXIgYnJpZGdlcywgZS5nLiBpZiB0aGV5IHByb3Zp ZGUgQ0VDIHN1cHBvcnQuCj4gPj4+IC0gT3RoZXIgYnJpZGdlcywgbWF5YmUgdGhleSBuZWVkIHRv IHJlLXJ1biB0aGUgSERDUCBzdGF0ZSBlbmdpbmUKPiA+Pj4gLSBPdmVyYWxsIGRyaXZlciwgc28g aXQgY2FuIHVwZGF0ZSB0aGUgbW9kZXMvY29ubmVjdG9yIHN0YXR1cyBhbmQgc2VuZCB0aGUKPiA+ Pj4gICB1ZXZlbnQgdG8gdGhlIGRyaXZlci4KPiA+Pj4gLSBPdmVyYWxsIGRpc3BsYXkgcGlwZWxp bmUgZm9yIHRoaXMgc3BlY2lmaWMgYnJpZGdlLCBtYXliZSB5b3UgbmVlZCB0bwo+ID4+PiAgIHNo dXQgZG93bi9yZS1lbmFibGUgdGhlIHBpcGUgYmVjYXVzZSAkcmVhc29ucy4KPiA+Pj4gIAo+ID4+ PiBUaGF0J3MgYXQgbGVhc3QgbXkgdW5kZXJzdGFuZGluZyBmcm9tIGxvdHMgb2YgY2hhdHMgd2l0 aCBMYXVyZW50IGFib3V0Cj4gPj4+IHdoYXQgaGUgd2FudHMgdG8gZG8gaGVyZS4KClRoYXQncyBj b3JyZWN0LCBhbmQgdGhhdCdzIHdoYXQgSSB3YXMgdHJ5aW5nIHRvIGltcGxlbWVudCA6LSkgVGhl Cm5vdGlmaWNhdGlvbiwgaW4gdGhpcyBwYXRjaCBzZXJpZXMsIGdvZXMgZnJvbSB0aGUgcHJvZHVj ZXIgYnJpZGdlIHRvIGEKY2VudHJhbCBwbGFjZSAobmFtZWx5IHRoZSBjb25uZWN0b3IsIHdpdGgg YSBoZWxwZXIgaW1wbGVtZW50YXRpb24KYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhpcyBzZXJpZXMs IGJ1dCBjdXN0b20gaW1wbGVtZW50YXRpb25zIGluIGRpc3BsYXkKZHJpdmVycyBhcmUgZmluZSBp ZiBuZWVkZWQpIHRoYXQgdGhlbiBkaXNwYXRjaGVzIHRoZSBub3RpZmljYXRpb24gdG8gYWxsCmJy aWRnZXMgKHRocm91Z2ggdGhlIC5sb3N0X2hvdHBsdWcoKSBvcGVyYXRpb24sIHdoaWNoIHdlIGNv dWxkIHJlcGxhY2UKYnkgYW4gLmhwZF9ub3RpZnkoKSBvcGVyYXRpb24pIGZvciB0aGUgZmlyc3Qg dHdvIHB1cnBvc2VzIGxpc3RlZCBhYm92ZSwKYW5kIHRoZW4gdG8gdGhlIG92ZXJhbGwgZHJpdmVy LiBUaGUgb25seSB0aGluZyBJIGRvbid0IHN1cHBvcnQgeWV0IGlzCmRpc3BhdGNoaW5nIHRvIHRo ZSBkaXNwbGF5IHBpcGVsaW5lIChpdGVtIDQgaW4gdGhlIGxpc3QgYWJvdmUpIGFzIEkgaGFkCm5v IG5lZWQgZm9yIHRoYXQsIGFuZCBkaWRuJ3Qgd2FudCB0byBkZXZlbG9wIGFuIEFQSSB3aXRoIG5v IHVzZXIuIFRoaXMKd291bGQgaG93ZXZlciBub3QgYmUgZGlmZmljdWx0IHRvIGRvIHdoZW4gbmVl ZGVkLCB0aGUgbmVlZCBpcyB0YWtlbiBpbnRvCmFjY291bnQgaW4gdGhlIHByb3Bvc2VkIGltcGxl bWVudGF0aW9uLgoKPiA+PiBJIGRvIG5vdCBrbm93IHRoZSBmdWxsIHBpY3R1cmUsIGJ1dCB0aGUg c29sdXRpb24gd2hlcmUgcGFydGljdWxhciBicmlkZ2UKPiA+PiBub3RpZmllcyBldmVyeXRoaW5n IHVuY29uZGl0aW9uYWxseSBzZWVtcyB0byBtZSBtdWNoIGxlc3MgZmxleGlibGUuCj4gPj4KPiA+ PiBJZiBIUEQgc2lnbmFscyBpcyByZWNlaXZlZCBieSB0aGUgY29uc3VtZXIsIGlmIHRoZXJlIGFy ZSBubyBvYnN0YWNsZXMgaXQKPiA+PiBjYW4gcHJvcGFnYXRlIGl0IGZ1cnRoZXIsIHVwc3RyZWFt IGJyaWRnZS9lbmNvZGVyIG9yIHRvIGRybSBjb3JlIC0gaXQKPiA+PiB3aWxsIG1pbWljIHlvdXIg c2NlbmFyaW8uCj4gPj4KPiA+PiBCdXQgdGhlcmUgYXJlIGFsc28gb3RoZXIgc2NlbmFyaW9zIHdo ZXJlIGJyaWRnZSBkb2VzIG5vdCB3YW50IHRvCj4gPj4gcHJvcGFnYXRlIHNpZ25hbCwgYmVjYXVz ZSBmb3IgZXhhbXBsZToKPiA+Pgo+ID4+IC0gaXQgd2FudHMgdG8gd2FpdCBmb3Igb3RoZXIgc2lu a3MgdG8gd2FrZSB1cCwKPiA+Cj4gPiBUaGUgb3RoZXIgc2luayBjYW4ganVzdCBkbyB0aGF0IGlu IHRoZWlyIGhwZCBjYWxsYmFjay4KPiA+Cj4gPj4gLSBpdCBwcm9wYWdhdGVzIEhQRCBzaWduYWwg dmlhIGhhcmR3YXJlIHdpcmUsCj4gPgo+ID4gQWdhaW4sIHRoZSBvdGhlciBzaW5rIGNhbiBqdXN0 IG5vdCBsaXN0ZW4gdG8gc3cgaHBkIGluIHRoYXQgY2FzZSwgYW5kIHVzZQo+ID4gdGhlIHdpcmUv aHcgaHBkIGludGVycnVwdC4KPiAKPiBJZiBpdCBzaG91bGQgaWdub3JlIEhQRCwgd2h5IGl0IHNo b3VsZCByZWNlaXZlIGl0IGF0IGFsbCAtIGl0IGlzCj4gdW5uZWNlc3Nhcnkgbm9pc2UuIEFuZCBJ IGFtIGFmcmFpZCB3aXRoIG1vcmUgY29tcGxpY2F0ZWQgcGlwZWxpbmVzIGl0Cj4gd2lsbCBiZSBp bXBvc3NpYmxlIGZvciBwYXJ0aWN1bGFyIGNvbXBvbmVudCAoYnJpZGdlL2VuY29kZXIvd2hhdGV2 ZXIpIHRvCj4gZGlzdGluZ3Vpc2ggaWYgSFBEIG5vdGlmaWNhdGlvbiB3aGljaCBjYW1lIGZyb20g bm9uLWRpcmVjdGx5IGNvbm5lY3RlZAo+IGNvbXBvbmVudCBzaG91bGQgYmUgaWdub3JlZCBvciBu b3QuCj4gCj4gPj4gLSBmaXJzdCBpdCB3YW50cyB0byB2ZXJpZnkgaWYgdGhlIHNpbmsgaXMgdmFs aWQvY29tcGF0aWJsZS9hdXRob3JpemVkCj4gPj4gZGV2aWNlLgo+ID4KPiA+IE5vdyB5b3UgbG9z dCBtZS4gV2h5IHdvdWxkIHNvbWVvbmUgZ2x1ZSBpbmNvbXBhdGlibGUgSVAgaW50byBhIFNvQyBv cgo+ID4gYm9hcmQ/Cj4gCj4gQnJpZGdlIGNhbiBoYXZlIGV4dGVybmFsIGNvbm5lY3RvcnMsIGFu ZCB0aGUgdXNlciBjYW4gY29ubmVjdCB0aGVyZQo+IGFueXRoaW5nLgo+IAo+ID4+IEluIGdlbmVy YWwgSFBEIGlzIGlucHV0IHNpZ25hbCBmb3Igbm90aWZ5IG9mIHN0YXRlIGNoYW5nZXMgb24gcGFy dGljdWxhcgo+ID4+IGJ1cywgaW4gY2FzZSBvZiB0eXBpY2FsIHZpZGVvIGJyaWRnZSBvbiBpdHMg b3V0cHV0IHZpZGVvIGJ1cy4KPiA+Pgo+ID4+IEluIGNhc2Ugb2YgYnJpZGdlcyB0aGV5IGhhdmUg YWxzbyBpbnB1dCB2aWRlbyBidXNlcywgYW5kIHRoZXkgY2FuIHNlbmQKPiA+PiBIUEQgc2lnbmFs IHZpYSB0aGlzIGJ1cywgYnV0IHRoaXMgaXMgaW5kZWVkIGRpZmZlcmVudCBIUEQgc2lnbmFsLCBl dmVuCj4gPj4gaWYgZm9yIG1vc3QgY2FzZXMgdGhleSBsb29rcyBzaW1pbGFyLgo+ID4KPiA+IEFo LCBJIHRoaW5rIHRoaXMgaXMgYSBwcm9ibGVtIHdlIHdpbGwgZXZlbnR1YWxseSBoYXZlLiBCdXQg aXQncyBub3QKPiA+IHNvbWV0aGluZyB3ZSdyZSBjdXJyZW50bHkgc29sdmluZyBoZXJlIGF0IGFs bCBJIHRoaW5rLgo+IAo+IEN1cnJlbnRseSBzaWk4NjIwIGRldmljZSBpbiB0bTIgc2VuZHMgaHBk IHNpZ25hbCB1cHN0cmVhbSB2aWEgaGFyZHdhcmUKPiBsaW5lLCBzbyB0aGlzIGlzIG5vdCBzb21l dGhpbmcgZnJvbSBmYXIgZnV0dXJlLiBBbmQgSSBndWVzcyB3aXRoIEhQRAo+IGJyb2FkY2FzdGlu ZyBpdCBjb3VsZCBiZSByYWN5L2Vycm9yIHByb25lLCBmb3IgZXhhbXBsZSBFRElEIHJlYWRpbmcg Y2FuCj4gZmFpbCBkdWUgdG8gYnJpZGdlIGJlaW5nIG5vdCByZWFkeSAoZGRjIG9mIHNpaTg2MjAg aXMgY29ubmVjdGVkIHRvIGkyYwo+IGNvbnRyb2xsZXIgdmlhIGh3IHdpcmVzIGFsc28pLgo+IAo+ ID4+Pj4gQW5kIHJlZ2FyZGluZyBpbXBsZW1lbnRhdGlvbjoKPiA+Pj4+Cj4gPj4+PiAxLiBMYXVy ZW50IHByb3Bvc2VzIHRvIHJlZ2lzdGVyIGNhbGxiYWNrIGRybV9icmlkZ2VfaHBkX2VuYWJsZS4K PiA+Pj4+Cj4gPj4+PiAyLiBZb3UgcHJvcG9zZSB0byBhZGQgb3BzIGhwZF9ub3RpZnkgaW4gYnJp ZGdlcyBhbmQgZW5jb2RlcnMuCj4gPj4+Pgo+ID4+Pj4gWW91ciBwcm9wb3NpdGlvbiBpcyBtb3Jl IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGlmIHdlIHdhbnQgdG8gbm90aWZ5IG9ubHkKPiA+Pj4+IHNv dXJjZSB3ZSBzaG91bGQgbG9jYXRlIGl0IGJ5IHBhcnNpbmcgbm90aWZpY2F0aW9uIGNoYWluICh3 aGF0IGFib3V0Cj4gPj4+PiB1bmNoYWluZWQgYnJpZGdlcyksIG9yIHN0b3JlIHBvaW50ZXIgc29t ZXdoZXJlIGR1cmluZyBhdHRhY2htZW50Lgo+ID4+Pj4KPiA+Pj4+IEl0IHN0aWxsIGxlYXZlcyB1 cyB3aXRoIHRoaXMgdWdseSBkdWFsaXNtIC0gc291cmNlIGlzIGVuY29kZXIgb3IgYnJpZGdlLAo+ ID4+Pj4gc2ltaWxhcmx5IHRvIHNpbmsgYXMgYnJpZGdlIG9yIHBhbmVsLCBidXQgZml4aW5nIGl0 IGNhbiBiZSBkb25lIGxhdGVyLgo+ID4+Pgo+ID4+PiBVaCBJIHRoaW5rIHdlJ3JlIG5vdCB0YWxr aW5nIGFib3V0IHRoZSBzYW1lIHRoaW5nIHJlYWxseS4gTXkgdW5kZXJzdGFuZGluZwo+ID4+PiBp cyB0aGF0IHRoaXMgY2FsbGJhY2sgaXMgaWYgc29tZW9uZSAob3V0c2lkZSBvZiB0aGlzIGJyaWRn ZSkgaXMgaW50ZXJlc3RlZAo+ID4+PiBpbiBhIGhwZCBzaWduYWwgX2Zyb21fIHRoaXMgYnJpZGdl LiBXaGljaCBtZWFucyB5b3UgY2FuIG9ubHkgZXZlciBoYXZlIDEKPiA+Pj4gbGlzdGVuZXIuCj4g Pj4KPiA+PiBEbyB3ZSBoYXZlIHJlYWwgbGlmZSBleGFtcGxlcz8KPiA+Pgo+ID4+IEkgd2FudCB0 byBkaXN0aW5ndWlzaCB0d28gc2l0dWF0aW9uczoKPiA+Pgo+ID4+IC0gYW5vdGhlciBkZXZpY2Ug d2FudHMgdG8ga25vdyBpZiBpbnB1dCBidXMgb2YgdGhlIGJyaWRnZSBoYXMgY2hhbmdlZCBzdGF0 ZSwKPiA+Pgo+ID4+IC0gYW5vdGhlciBkZXZpY2Ugd2FudHMgdG8ga25vdyBpZiBvdXRwdXQgYnVz IG9mIHRoZSBicmlkZ2UgaGFzIGNoYW5nZWQKPiA+PiBzdGF0ZS4KPiA+Cj4gPiBVaCwgdGhhdCdz IHdoYXQgZHJtX2JyaWRnZV9zdGF0ZSBpcyBmb3IgKGlmIGl0IGV2ZXIgaGFwcGVucykuIFRoYXQn cyBob3cKPiA+IGJyaWRnZXMgY2FuIGV4Y2hhbmdlIHN0YXRlIGFuZCBpbmZvcm1hdGlvbiBhYm91 dCBlYWNoIGFub3RoZXIuIGhwZCBpcwo+ID4gYWJvdXQgdGhlIHBoeXNpY2FsIHdvcmxkLCBpLmUu ICJpcyB0aGVyZSBhIGNhYmxlIHBsdWdnZWQgaW50byB0aGUgcG9ydAo+ID4gSSdtIGRyaXZpbmc/ Ii4gV2UncmUgbm90IGdvaW5nIHRvIHVzZSBmYWtlIGhwZCB0byB1cGRhdGUgYnJpZGdlIHN0YXRl IGFuZAo+ID4gZnVuIHN0dWZmIGxpa2UgdGhhdCwgd2UgaGF2ZSB0aGUgYXRvbWljX2NoZWNrIG1h Y2hpbmVyeSBmb3IgdGhpcy4KPiAKPiBNeSBxdWVzdGlvbiB3YXMgaWYgd2UgaGF2ZSByZWFsIGV4 YW1wbGVzIHRoYXQgdXBzdHJlYW0gZGV2aWNlIHJlcXVpcmVzCj4ga25vd2xlZGdlIGFib3V0IHN0 YXRlIG9mIG91dHB1dCBsaW5lIG9mIHRoZSBicmlkZ2U/Cj4gCj4gVG8gYmUgbW9yZSBwcmVjaXNl LCB3ZSBoYXZlIGZvbGxvd2luZyBkaXNwbGF5IHBpcGVsaW5lOgo+IAo+IEEtLT5CLS0+Qwo+IAo+ IEFuZCBDIHNlbmRzIEhQRCB0byBCIChpZSBzaWduYWwgdGhhdCBzdGF0ZSBvZiBsaW5lIGJldHdl ZW4gQiBhbmQgQwo+IGNoYW5nZWQpLiBEb2VzIEEgcmVhbGx5IHdhbnRzIHRvIGtub3cgdGhpcyBp bmZvcm1hdGlvbj8gb3IgaXQgc2hvdWxkCj4ganVzdCBuZWVkIHRvIGtub3cgaWYgc3RhdGUgb2Yg bGluZSBBLS0+QiBjaGFuZ2VkPwoKVGhlcmUncyBvbmUgcmVhbCBsaWZlIGV4YW1wbGUsIHdoZXJl IEEgaXMgYW4gSERNSSBlbmNvZGVyLCBCIGlzIGFuIEhETUkKRVNEIHByb3RlY3RvciBhbmQgbGV2 ZWwgc2hpZnRlciwgYW5kIEMgaXMgdGhlIHBoeXNpY2FsIEhETUkgY29ubmVjdG9yLgpXaGVuIHRo ZSBIRE1JIGNhYmxlIGlzIHVucGx1Z2dlZCwgdGhlIENFQyBjb250cm9sbGVyIHBhcnQgb2YgQSBu ZWVkcyB0bwpiZSBub3RpZmllZCBpbiBvcmRlciB0byByZXNldCB0aGUgQ0VDIHN0YXRlIG1hY2hp bmUuIE9uZSBjb3VsZCBob3dldmVyCmFyZ3VlIHRoYXQgaW4gdGhhdCBjYXNlIHRoZSBBLUIgbGlu ayBzdGF0ZSBjaGFuZ2VzIHRvbywgYnV0IHRoZQppbXBvcnRhbnQgcGFydCBpcyB0aGF0IEhQRCBk ZXRlY3Rpb24gaXMgbm90IHBlcmZvcm1lZCBieSBBLCB3aGlsZSBBCm5lZWRzIHRvIGJlIGluZm9y bWVkIG9mIGxvc3QgaG90cGx1Zy4KCj4gPj4+IFlvdSBzZWVtIHRvIGhhdmUgc29tZSBvdGhlciBp ZGVhIGhlcmUuCj4gPj4+Cj4gPj4+Pj4+Pj4+ICsJbXV0ZXhfdW5sb2NrKCZicmlkZ2UtPmhwZF9t dXRleCk7Cj4gPj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1f YnJpZGdlX2hwZF9ub3RpZnkpOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICAjaWZkZWYgQ09O RklHX09GCj4gPj4+Pj4+Pj4+ICAvKioKPiA+Pj4+Pj4+Pj4gICAqIG9mX2RybV9maW5kX2JyaWRn ZSAtIGZpbmQgdGhlIGJyaWRnZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkZXZpY2Ugbm9kZSBpbgo+ ID4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVk ZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4+IGluZGV4IDA4ZGMxNWY5M2RlZC4uYjk0NDVh YTViMWVmIDEwMDY0NAo+ID4+Pj4+Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgK PiA+Pj4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4+IEBA IC0yMyw4ICsyMyw5IEBACj4gPj4+Pj4+Pj4+ICAjaWZuZGVmIF9fRFJNX0JSSURHRV9IX18KPiA+ Pj4+Pj4+Pj4gICNkZWZpbmUgX19EUk1fQlJJREdFX0hfXwo+ID4+Pj4+Pj4+PiAgCj4gPj4+Pj4+ Pj4+IC0jaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ID4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4 L2N0eXBlLmg+Cj4gPj4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ID4+Pj4+Pj4+ PiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gPj4+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9tb2RlX29iamVjdC5oPgo+ID4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZXMuaD4K PiA+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+PiBAQCAtMzM0LDYgKzMzNSwxMTAgQEAgc3RydWN0IGRy bV9icmlkZ2VfZnVuY3Mgewo+ID4+Pj4+Pj4+PiAgCSAqLwo+ID4+Pj4+Pj4+PiAgCXZvaWQgKCph dG9taWNfcG9zdF9kaXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+ PiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4+Pj4+Pj4+PiAr Cj4gPj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+ICsJICogQGRldGVjdDoKPiA+Pj4+Pj4+Pj4g KwkgKgo+ID4+Pj4+Pj4+PiArCSAqIENoZWNrIGlmIGFueXRoaW5nIGlzIGF0dGFjaGVkIHRvIHRo ZSBicmlkZ2Ugb3V0cHV0Lgo+ID4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+ICsJICogVGhpcyBj YWxsYmFjayBpcyBvcHRpb25hbCwgaWYgbm90IGltcGxlbWVudGVkIHRoZSBicmlkZ2Ugd2lsbCBi ZQo+ID4+Pj4+Pj4+PiArCSAqIGNvbnNpZGVyZWQgYXMgYWx3YXlzIGhhdmluZyBhIGNvbXBvbmVu dCBhdHRhY2hlZCB0byBpdHMgb3V0cHV0Lgo+ID4+Pj4+Pj4+PiArCSAqIEJyaWRnZXMgdGhhdCBp bXBsZW1lbnQgdGhpcyBjYWxsYmFjayBzaGFsbCBzZXQgdGhlCj4gPj4+Pj4+Pj4+ICsJICogRFJN X0JSSURHRV9PUF9ERVRFQ1QgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4+Pj4+ Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+ Pj4+Pj4+PiArCSAqIGRybV9jb25uZWN0b3Jfc3RhdHVzIGluZGljYXRpbmcgdGhlIGJyaWRnZSBv dXRwdXQgc3RhdHVzLgo+ID4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+PiArCWVudW0gZHJtX2Nv bm5lY3Rvcl9zdGF0dXMgKCpkZXRlY3QpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4+ Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+ICsJICogQGdldF9tb2RlczoK PiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+PiArCSAqIEZpbGwgYWxsIG1vZGVzIGN1cnJlbnRs eSB2YWxpZCBmb3IgdGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IKPiA+Pj4+Pj4+Pj4g KwkgKiB3aXRoIGRybV9tb2RlX3Byb2JlZF9hZGQoKS4KPiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+PiArCSAqIFRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIGlzIG1vc3RseSBpbnRlbmRlZCB0byBz dXBwb3J0IG5vbi1wcm9iYWJsZQo+ID4+Pj4+Pj4+PiArCSAqIGRpc3BsYXlzIHN1Y2ggYXMgbWFu eSBmaXhlZCBwYW5lbHMuIEJyaWRnZXMgdGhhdCBzdXBwb3J0IHJlYWRpbmcKPiA+Pj4+Pj4+Pj4g KwkgKiBFRElEIHNoYWxsIGxlYXZlIEBnZXRfbW9kZXMgdW5pbXBsZW1lbnRlZCBhbmQgaW1wbGVt ZW50IHRoZQo+ID4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxs YmFjayBpbnN0ZWFkLgo+ID4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+ICsJICogVGhpcyBjYWxs YmFjayBpcyBvcHRpb25hbC4gQnJpZGdlcyB0aGF0IGltcGxlbWVudCBpdCBzaGFsbCBzZXQgdGhl Cj4gPj4+Pj4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9NT0RFUyBmbGFnIGluIHRoZWlyICZkcm1f YnJpZGdlLT5vcHMuCj4gPj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4gKwkgKiBSRVRVUk5TOgo+ ID4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+ICsJICogVGhlIG51bWJlciBvZiBtb2RlcyBhZGRl ZCBieSBjYWxsaW5nIGRybV9tb2RlX3Byb2JlZF9hZGQoKS4KPiA+Pj4+Pj4+Pj4gKwkgKi8KPiA+ Pj4+Pj4+Pj4gKwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4g Pj4+Pj4+Pj4+ICsJCQkgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPj4+Pj4+ Pj4+ICsKPiA+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4gKwkgKiBAZ2V0X2VkaWQ6Cj4gPj4+ Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4gKwkgKiBSZWFkIGFuZCBwYXJzZSB0aGUgRURJRCBkYXRh IG9mIHRoZSBjb25uZWN0ZWQgZGlzcGxheS4KPiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+PiAr CSAqIFRoZSBAZ2V0X2VkaWQgY2FsbGJhY2sgaXMgdGhlIHByZWZlcnJlZCB3YXkgb2YgcmVwb3J0 aW5nIG1vZGUKPiA+Pj4+Pj4+Pj4gKwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBkaXNwbGF5IGNvbm5l Y3RlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4gQnJpZGdlcwo+ID4+Pj4+Pj4+PiArCSAqIHRoYXQg c3VwcG9ydCByZWFkaW5kIEVESUQgc2hhbGwgaW1wbGVtZW50IHRoaXMgY2FsbGJhY2sgYW5kIGxl YXZlCj4gPj4+Pj4+Pj4+ICsJICogdGhlIEBnZXRfbW9kZXMgY2FsbGJhY2sgdW5pbXBsZW1lbnRl ZC4KPiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+PiArCSAqIFRoZSBjYWxsZXIgb2YgdGhpcyBv cGVyYXRpb24gc2hhbGwgZmlyc3QgdmVyaWZ5IHRoZSBvdXRwdXQKPiA+Pj4+Pj4+Pj4gKwkgKiBj b25uZWN0aW9uIHN0YXR1cyBhbmQgcmVmcmFpbiBmcm9tIHJlYWRpbmcgRURJRCBmcm9tIGEgZGlz Y29ubmVjdGVkCj4gPj4+Pj4+Pj4+ICsJICogb3V0cHV0Lgo+ID4+Pj4+Pj4+PiArCSAqCj4gPj4+ Pj4+Pj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gQnJpZGdlcyB0aGF0IGltcGxl bWVudCBpdCBzaGFsbCBzZXQgdGhlCj4gPj4+Pj4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9FRElE IGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+PiArCSAqIFJFVFVSTlM6Cj4gPj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4gKwkgKiBBbiBl ZGlkIHN0cnVjdHVyZSBuZXdseSBhbGxvY2F0ZWQgd2l0aCBrbWFsbG9jKCkgKG9yIHNpbWlsYXIp IG9uCj4gPj4+Pj4+Pj4+ICsJICogc3VjY2Vzcywgb3IgTlVMTCBvdGhlcndpc2UuIFRoZSBjYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcKPiA+Pj4+Pj4+Pj4gKwkgKiB0aGUgcmV0dXJu ZWQgZWRpZCBzdHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+ID4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+ Pj4+PiArCXN0cnVjdCBlZGlkICooKmdldF9lZGlkKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl LAo+ID4+Pj4+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ Pj4+Pj4+PiBJdCBvdmVybGFwcyB3aXRoIGdldF9tb2RlcywgSSBndWVzcyBwcmVzZW5jZSBvZiBv bmUgb3BzIHNob3VsZCBkaXNhbGxvdwo+ID4+Pj4+Pj4+IHByZXNlbmNlIG9mIGFub3RoZXIgb25l Pwo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gSSBhbSBub3QgcmVhbGx5IGNvbnZpbmNlZCB3ZSBuZWVk IHRoaXMgb3AgYXQgYWxsLCBjYW5ub3Qgd2UganVzdCBhc3NpZ24KPiA+Pj4+Pj4+PiBzb21lIGhl bHBlciBmdW5jdGlvbiB0byAuZ2V0X21vZGVzIGNiLCB3aGljaCB3aWxsIGRvIHRoZSBzYW1lPwo+ ID4+Pj4+Pj4gUGxhbiBCKTogZGl0Y2ggLT5nZXRfZWRpZCwgcmVxdWlyZSB0aGF0IHRoZSBkcml2 ZXIgaGFzIC0+Z2V0X21vZGVzIGluIHRoYXQKPiA+Pj4+Pj4+IGNhc2UsIGFuZCByZXF1aXJlIHRo YXQgaWYgaXQgaGFzIGFuIGVkaWQgaXQgbXVzdCBmaWxsIG91dCBjb25uZWN0b3ItPmluZm8KPiA+ Pj4+Pj4+IGFuZCBjb25uZWN0b3ItPmVkaWQgY29ycmVjdGx5Lgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+ IEJ0dyBpZiBhIGhwZCBoYXBwZW5zLCB3aG8ncyByZXNwb25pYmxlIGZvciBtYWtpbmcgc3VyZSB0 aGUgZWRpZC9tb2RlIGxpc3QKPiA+Pj4+Pj4+IGluIHRoZSBjb25uZWN0b3IgaXMgdXAtdG8tZGF0 ZT8gV2l0aCB5b3VyIGN1cnJlbnQgY2FsbGJhY2sgZGVzaWduIHRoYXQncwo+ID4+Pj4+Pj4gdXAg dG8gdGhlIGNhbGxiYWNrLCB3aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBkcm1fYnJp ZGdlX2hwZF9ub3RpZnkKPiA+Pj4+Pj4+IHNob3VsZCBndWFyYW50ZWUgdGhhdCBpdCdsbCBmaXJz dCB3YWxrIHRoZSBjb25uZWN0b3JzIHRvIHVwZGF0ZSBzdGF0dXMgYW5kCj4gPj4+Pj4+PiBlZGlk L21vZGUgbGlzdCBmb3IgdGhlIGZpbmFsIGRybV9jb25uZWN0b3IuIEFuZCB0aGVuIGluc3RlYWQg b2YganVzdAo+ID4+Pj4+Pj4gcGFzc2luZyB0aGUgc2ltcGxlICJzdGF0dXMiLCBpdCdsbCBwYXNz IHRoZSBjb25uZWN0b3IsIHdpdGggZXZlcnl0aGluZwo+ID4+Pj4+Pj4gY29ycmVjdGx5IHVwZGF0 ZWQuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gT3RoZXJ3aXNlIGV2ZXJ5b25lIGludGVyZXN0ZWQgaW4g dGhhdCBocGQgc2lnbmFsIHdpbGwgZ28gYW5kIHJlLWZldGNoIHRoZQo+ID4+Pj4+Pj4gZWRpZCwg d2hpY2ggaXMgbm90IHNvIGF3ZXNvbWUgOi0pCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+PiArCj4gPj4+ Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+ICsJICogQGxvc3RfaG90cGx1ZzoKPiA+Pj4+Pj4+Pj4g KwkgKgo+ID4+Pj4+Pj4+PiArCSAqIE5vdGlmeSB0aGUgYnJpZGdlIG9mIGRpc3BsYXkgZGlzY29u bmVjdGlvbi4KPiA+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgb3B0aW9uYWwsIGl0IG1heSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzIHRoYXQKPiA+Pj4+ Pj4+Pj4gKwkgKiBuZWVkIHRvIGJlIG5vdGlmaWVkIG9mIGRpc3BsYXkgZGlzY29ubmVjdGlvbiBm b3IgaW50ZXJuYWwgcmVhc29ucy4KPiA+Pj4+Pj4+Pj4gKwkgKiBPbmUgdXNlIGNhc2UgaXMgdG8g cmVzZXQgdGhlIGludGVybmFsIHN0YXRlIG9mIENFQyBjb250cm9sbGVycyBmb3IKPiA+Pj4+Pj4+ Pj4gKwkgKiBIRE1JIGJyaWRnZXMuCj4gPj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+ICsJdm9p ZCAoKmxvc3RfaG90cGx1Zykoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+ ICsKPiA+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2VuYWJsZToKPiA+Pj4+ Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+PiArCSAqIEVuYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24uIEZy b20gbm93IG9uIHRoZSBicmlkZ2Ugc2hhbGwgY2FsbAo+ID4+Pj4+Pj4+PiArCSAqIGRybV9icmlk Z2VfaHBkX25vdGlmeSgpIGVhY2ggdGltZSBhIGNoYW5nZSBpcyBkZXRlY3RlZCBpbiB0aGUgb3V0 cHV0Cj4gPj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMsIHVudGlsIGhvdCBwbHVnIGRl dGVjdGlvbiBnZXRzIGRpc2FibGVkIHdpdGgKPiA+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2Rpc2FibGUu Cj4gPj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlv bmFsIGFuZCBzaGFsbCBvbmx5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMKPiA+Pj4+Pj4+Pj4g KwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcgbm90aWZpY2F0aW9uIHdpdGhvdXQgcG9sbGluZy4g QnJpZGdlcyB0aGF0Cj4gPj4+Pj4+Pj4+ICsJICogaW1wbGVtZW50IGl0IHNoYWxsIGFsc28gaW1w bGVtZW50IHRoZSBAaHBkX2Rpc2FibGUgY2FsbGJhY2sgYW5kIHNldAo+ID4+Pj4+Pj4+PiArCSAq IHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4g Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9lbmFibGUpKHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UpOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJLyoqCj4gPj4+ Pj4+Pj4+ICsJICogQGhwZF9kaXNhYmxlOgo+ID4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+ICsJ ICogRGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24uIE9uY2UgdGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBicmlkZ2UKPiA+Pj4+Pj4+Pj4gKwkgKiBzaGFsbCBub3QgY2FsbCBkcm1fYnJpZGdlX2hw ZF9ub3RpZnkoKSB3aGVuIGEgY2hhbmdlIGluIHRoZSBvdXRwdXQKPiA+Pj4+Pj4+Pj4gKwkgKiBj b25uZWN0aW9uIHN0YXR1cyBvY2N1cnMuCj4gPj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4gKwkg KiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGFuZCBzaGFsbCBvbmx5IGJlIGltcGxlbWVudGVk IGJ5IGJyaWRnZXMKPiA+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcgbm90aWZp Y2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4gPj4+Pj4+Pj4+ICsJICogaW1w bGVtZW50IGl0IHNoYWxsIGFsc28gaW1wbGVtZW50IHRoZSBAaHBkX2VuYWJsZSBjYWxsYmFjayBh bmQgc2V0Cj4gPj4+Pj4+Pj4+ICsJICogdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaW4gdGhl aXIgJmRybV9icmlkZ2UtPm9wcy4KPiA+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4gKwl2b2lk ICgqaHBkX2Rpc2FibGUpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4+Pj4+Pj4+PiAg fTsKPiA+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+PiAgLyoqCj4gPj4+Pj4+Pj4+IEBAIC0zNzIsNiAr NDc3LDM4IEBAIHN0cnVjdCBkcm1fYnJpZGdlX3RpbWluZ3Mgewo+ID4+Pj4+Pj4+PiAgCWJvb2wg ZHVhbF9saW5rOwo+ID4+Pj4+Pj4+PiAgfTsKPiA+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+PiArLyoq Cj4gPj4+Pj4+Pj4+ICsgKiBlbnVtIGRybV9icmlkZ2Vfb3BzIC0gQml0bWFzayBvZiBvcGVyYXRp b25zIHN1cHBvcnRlZCBieSB0aGUgYnJpZGdlCj4gPj4+Pj4+Pj4+ICsgKi8KPiA+Pj4+Pj4+Pj4g K2VudW0gZHJtX2JyaWRnZV9vcHMgewo+ID4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+PiArCSAq IEBEUk1fQlJJREdFX09QX0RFVEVDVDogVGhlIGJyaWRnZSBjYW4gZGV0ZWN0IGRpc3BsYXlzIGNv bm5lY3RlZCB0bwo+ID4+Pj4+Pj4+PiArCSAqIGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQg dGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudCB0aGUKPiA+Pj4+Pj4+Pj4gKwkgKiAmZHJtX2JyaWRn ZV9mdW5jcy0+ZGV0ZWN0IGNhbGxiYWNrLgo+ID4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+PiAr CURSTV9CUklER0VfT1BfREVURUNUID0gQklUKDApLAo+ID4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+ Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX0VESUQ6IFRoZSBicmlkZ2UgY2FuIHJldHJpZXZlIHRo ZSBFRElEIG9mIHRoZSBkaXNwbGF5Cj4gPj4+Pj4+Pj4+ICsJICogY29ubmVjdGVkIHRvIGl0cyBv dXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudAo+ID4+Pj4+ Pj4+PiArCSAqIHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQgY2FsbGJhY2suCj4gPj4+ Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9FRElEID0gQklUKDEpLAo+ ID4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX0hQRDogVGhl IGJyaWRnZSBjYW4gZGV0ZWN0IGhvdC1wbHVnIGFuZCBob3QtdW5wbHVnCj4gPj4+Pj4+Pj4+ICsJ ICogd2l0aG91dCByZXF1aXJpbmcgcG9sbGluZy4gQnJpZGdlcyB0aGF0IHNldCB0aGlzIGZsYWcg c2hhbGwKPiA+Pj4+Pj4+Pj4gKwkgKiBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5o cGRfZW5hYmxlIGFuZAo+ID4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5kaXNhYmxl X2hwZF9jYiBjYWxsYmFja3MuCj4gPj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+ICsJRFJNX0JS SURHRV9PUF9IUEQgPSBCSVQoMiksCj4gPj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+ICsJICog QERSTV9CUklER0VfT1BfTU9ERVM6IFRoZSBicmlkZ2UgY2FuIHJldHJpZXZpbmcgdGhlIG1vZGVz IHN1cHBvcnRlZAo+ID4+Pj4+Pj4+PiArCSAqIGJ5IHRoZSBkaXNwbGF5IGF0IGl0cyBvdXRwdXQu IFRoaXMgZG9lcyBub3QgaW5jbHVkZSByZWFkaW5kIEVESUQKPiA+Pj4+Pj4+Pj4gKwkgKiB3aGlj aCBpcyBzZXBhcmF0ZWx5IGNvdmVyZWQgYnkgQERSTV9CUklER0VfT1BfRURJRC4gQnJpZGdlcyB0 aGF0IHNldAo+ID4+Pj4+Pj4+PiArCSAqIHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlICZk cm1fYnJpZGdlX2Z1bmNzLT5nZXRfbW9kZXMgY2FsbGJhY2suCj4gPj4+Pj4+Pj4+ICsJICovCj4g Pj4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9NT0RFUyA9IEJJVCgzKSwKPiA+Pj4+Pj4+Pj4gK307 Cj4gPj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4gIC8qKgo+ID4+Pj4+Pj4+PiAgICogc3RydWN0IGRy bV9icmlkZ2UgLSBjZW50cmFsIERSTSBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+ Pj4gICAqLwo+ID4+Pj4+Pj4+PiBAQCAtMzk4LDYgKzUzNSwyOSBAQCBzdHJ1Y3QgZHJtX2JyaWRn ZSB7Cj4gPj4+Pj4+Pj4+ICAJY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgKmZ1bmNzOwo+ ID4+Pj4+Pj4+PiAgCS8qKiBAZHJpdmVyX3ByaXZhdGU6IHBvaW50ZXIgdG8gdGhlIGJyaWRnZSBk cml2ZXIncyBpbnRlcm5hbCBjb250ZXh0ICovCj4gPj4+Pj4+Pj4+ICAJdm9pZCAqZHJpdmVyX3By aXZhdGU7Cj4gPj4+Pj4+Pj4+ICsJLyoqIEBvcHM6IGJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBzdXBw b3J0ZWQgYnkgdGhlIGJyaWRnZSAqLwo+ID4+Pj4+Pj4+PiArCWVudW0gZHJtX2JyaWRnZV9vcHMg b3BzOwo+ID4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+PiArCSAqIEB0eXBlOiBUeXBlIG9mIHRo ZSBjb25uZWN0aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4gPj4+Pj4+Pj4+ICsJICogKERSTV9N T0RFX0NPTk5FQ1RPUl8qKS4gRm9yIGJyaWRnZXMgYXQgdGhlIGVuZCBvZiB0aGlzIGNoYWluIHRo aXMKPiA+Pj4+Pj4+Pj4gKwkgKiBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIGNvbm5lY3RlZCBkaXNw bGF5Lgo+ID4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+PiArCWludCB0eXBlOwo+ID4+Pj4+Pj4+ PiArCS8qKiBwcml2YXRlOiAqLwo+ID4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+PiArCSAqIEBo cGRfbXV0ZXg6IFByb3RlY3RzIHRoZSBAaHBkX2NiIGFuZCBAaHBkX2RhdGEgZmllbGRzLgo+ID4+ Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+PiArCXN0cnVjdCBtdXRleCBocGRfbXV0ZXg7Cj4gPj4+ Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+ICsJICogQGhwZF9jYjogSG90IHBsdWcgZGV0ZWN0aW9u IGNhbGxiYWNrLCByZWdpc3RlcmVkIHdpdGgKPiA+Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hw ZF9lbmFibGUoKS4KPiA+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4gKwl2b2lkICgqaHBkX2Ni KSh2b2lkICpkYXRhLCBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4gPj4+Pj4+ Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+ICsJICogQGhwZF9kYXRhOiBQcml2YXRlIGRhdGEgcGFzc2Vk IHRvIHRoZSBIb3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+Pj4+Pj4+Pj4gKwkgKiBAaHBk X2NiLgo+ID4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+PiArCXZvaWQgKmhwZF9kYXRhOwo+ID4+ Pj4+Pj4+PiAgfTsKPiA+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+PiAgdm9pZCBkcm1fYnJpZGdlX2Fk ZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+Pj4gQEAgLTQyOCw2ICs1ODgs MTQgQEAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UsCj4gPj4+Pj4+Pj4+ICB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+PiAgCQkJICAgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+PiArdm9pZCBkcm1f YnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4g KwkJCSAgIHZvaWQgKCpjYikodm9pZCAqZGF0YSwKPiA+Pj4+Pj4+Pj4gKwkJCQkgICAgICBlbnVt IGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyksCj4gPj4+Pj4+Pj4+ICsJCQkgICB2b2lkICpk YXRhKTsKPiA+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZGlzYWJsZShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfbm90aWZ5 KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4+ICsJCQkgICBlbnVtIGRybV9j b25uZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4gICNpZmRl ZiBDT05GSUdfRFJNX1BBTkVMX0JSSURHRQo+ID4+Pj4+Pj4+PiAgc3RydWN0IGRybV9icmlkZ2Ug KmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLAo+ID4+Pj4+Pj4+ PiAgCQkJCQl1MzIgY29ubmVjdG9yX3R5cGUpOwoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNo YXJ0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==