From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 31AF9C6FA86 for ; Mon, 26 Sep 2022 10:25:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gFTChTZyC4mWTWXJSnWETSXWKGNSatYSph2i3SCDGlA=; b=EVfzmQjZN9z31c aC2oH4mM4gTLPPAm+xCOZcX69h/sJhuRkzVY3/g3rCTTjqGQ7+hsJMxEGTeRrY5ML9IThAtLX3iNm u0u6mrEl36ZPT4BELfli6a581hKtSbULPOM+hdhzA0nGVH6HppD+klcvO/L7ODF/iGQGdBupZsdJN 8wuF2AJ6ojcpL1ZDFzWdji/+vQSlHCN4b6UuQ/eYwMSTWeg3dx8S1+D6XistgBmXHzHzz67tqIXKO jFXDPprirUUFl0nG66mAGEzFpBtUm+iNpSSmYNMIFdruS4UERRk4b9ZOV+0DFqkOUa0L8GxhQgH07 5pecrKuUT76rLaeuswfw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oclH1-0045Aa-H4; Mon, 26 Sep 2022 10:23:40 +0000 Received: from fllv0015.ext.ti.com ([198.47.19.141]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oclGp-00453n-Vs for linux-arm-kernel@lists.infradead.org; Mon, 26 Sep 2022 10:23:31 +0000 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 28QANF39125775; Mon, 26 Sep 2022 05:23:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1664187795; bh=Nj3jHzxcN0pnBYyg1v0ArlFBvaBcVqVyvSCy/1g9Bys=; h=Date:Subject:To:CC:References:From:In-Reply-To; b=a6CTpcsTEKCVW3o3ZdlI2/1gb+05/0lwSzvviATRYm3mruWSdr/Ah7CBMSS7RVifk eUGeyE9NPiS5HJerktwEJijTUW4Bq+pRb+mWPY1cAhYcbH8AiqGr2ENXXGuB6JATgz k6i6aHFKbGklRkztiYNsJul5dDWDiJ0VpieDsZrI= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 28QANFFR041771 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Sep 2022 05:23:15 -0500 Received: from DFLE110.ent.ti.com (10.64.6.31) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.6; Mon, 26 Sep 2022 05:23:14 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DFLE110.ent.ti.com (10.64.6.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.6 via Frontend Transport; Mon, 26 Sep 2022 05:23:14 -0500 Received: from [10.24.69.114] (ileaxei01-snat2.itg.ti.com [10.180.69.6]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 28QAN9IO042027; Mon, 26 Sep 2022 05:23:10 -0500 Message-ID: <5fa0c5f8-d32e-64a0-5692-b95d48fbd2cd@ti.com> Date: Mon, 26 Sep 2022 15:53:09 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [EXTERNAL] Re: [PATCH v5 2/6] remoteproc: pru: Add APIs to get and put the PRU cores Content-Language: en-US To: Mathieu Poirier References: <20220607045650.4999-1-p-mohan@ti.com> <20220607045650.4999-3-p-mohan@ti.com> <20220712175949.GB2945984@p14s> <20220714172015.GA3106020@p14s> <20c544ef-40b3-dcbc-1f29-aac140725b57@ti.com> <7e7ed572-93fe-a9c8-f11e-d555e5113fd1@ti.com> <20220906192827.GA65147@p14s> <694da03a-e34d-1939-8b01-a75bc25495e0@ti.com> <992019ad-5c58-d420-8a18-a82228f8e086@smile.fr> From: Md Danish Anwar In-Reply-To: X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220926_032328_412975_1FC1566A X-CRM114-Status: GOOD ( 41.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nm@ti.com, devicetree@vger.kernel.org, vigneshr@ti.com, robh@kernel.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, Md Danish Anwar , bjorn.andersson@linaro.org, rogerq@kernel.org, krzysztof.kozlowski+dt@linaro.org, ssantosh@kernel.org, Romain Naour , Kishon Vijay Abraham I , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWF0aGlldSwKCk9uIDIwLzA5LzIyIDAyOjE1LCBNYXRoaWV1IFBvaXJpZXIgd3JvdGU6Cj4g T24gVHVlLCAxMyBTZXB0IDIwMjIgYXQgMDU6NDAsIE1kIERhbmlzaCBBbndhciA8YTA1MDExNzlA dGkuY29tPiB3cm90ZToKPj4KPj4gSGkgTWF0aGlldSwKPj4KPj4gT24gMTIvMDkvMjIgMTg6NTQs IFJvbWFpbiBOYW91ciB3cm90ZToKPj4+IEhpIERhbmlzaCwgQWxsLAo+Pj4KPj4+IExlIDA3LzA5 LzIwMjIgw6AgMTE6MjQsIE1kIERhbmlzaCBBbndhciBhIMOpY3JpdCA6Cj4+Pj4gSGkgTWF0aGll dSwKPj4+Pgo+Pj4+IE9uIDA3LzA5LzIyIDAwOjU4LCBNYXRoaWV1IFBvaXJpZXIgd3JvdGU6Cj4+ Pj4+IE9uIEZyaSwgU2VwIDAyLCAyMDIyIGF0IDAzOjA5OjA0UE0gKzA1MzAsIE1kIERhbmlzaCBB bndhciB3cm90ZToKPj4+Pj4+IEhpIE1hdGhpZXUsCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IE9uIDE1 LzA3LzIyIDExOjUyLCBLaXNob24gVmlqYXkgQWJyYWhhbSBJIHdyb3RlOgo+Pj4+Pj4+ICtEYW5p c2gKPj4+Pj4+Pgo+Pj4+Pj4+IEhpIE1hdGhpZXUsCj4+Pj4+Pj4KPj4+Pj4+PiBPbiAxNC8wNy8y MiAyMjo1MCwgTWF0aGlldSBQb2lyaWVyIHdyb3RlOgo+Pj4+Pj4+PiBPbiBUdWUsIEp1bCAxMiwg MjAyMiBhdCAxMTo1OTo0OUFNIC0wNjAwLCBNYXRoaWV1IFBvaXJpZXIgd3JvdGU6Cj4+Pj4+Pj4+ PiBIaSBQdXJhbmpheSwKPj4+Pj4+Pgo+Pj4+Pj4+IFJlbW92ZWQgUHVyYW5qYXkgKGFzIGhlIGlz IG5vIGxvbmdlciB3aXRoIFRJKSBhbmQgYWRkaW5nIERhbmlzaC4KPj4+Pj4+Pgo+Pj4+Pj4+IFJl Z2FyZHMsCj4+Pj4+Pj4gS2lzaG9uCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gT24gVHVlLCBKdW4gMDcs IDIwMjIgYXQgMTA6MjY6NDZBTSArMDUzMCwgUHVyYW5qYXkgTW9oYW4gd3JvdGU6Cj4+Pj4+Pj4+ Pj4gRnJvbTogVGVybyBLcmlzdG8gPHQta3Jpc3RvQHRpLmNvbT4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4+IEFkZCB0d28gbmV3IEFQSXMsIHBydV9ycHJvY19nZXQoKSBhbmQgcHJ1X3Jwcm9jX3B1dCgp LCB0byB0aGUgUFJVCj4+Pj4+Pj4+Pj4gZHJpdmVyIHRvIGFsbG93IGNsaWVudCBkcml2ZXJzIHRv IGFjcXVpcmUgYW5kIHJlbGVhc2UgdGhlIHJlbW90ZXByb2MKPj4+Pj4+Pj4+PiBkZXZpY2UgYXNz b2NpYXRlZCB3aXRoIGEgUFJVIGNvcmUuIFRoZSBQUlUgY29yZXMgYXJlIHRyZWF0ZWQgYXMKPj4+ Pj4+Pj4+PiByZXNvdXJjZXMgd2l0aCBvbmx5IG9uZSBjbGllbnQgb3duaW5nIGl0IGF0IGEgdGlt ZS4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IFRoZSBwcnVfcnByb2NfZ2V0KCkgZnVuY3Rpb24gcmV0 dXJucyB0aGUgcnByb2MgaGFuZGxlIGNvcnJlc3BvbmRpbmcKPj4+Pj4+Pj4+PiB0byBhIFBSVSBj b3JlIGlkZW50aWZpZWQgYnkgdGhlIGRldmljZSB0cmVlICJ0aSxwcnVzIiBwcm9wZXJ0eSB1bmRl cgo+Pj4+Pj4+Pj4+IHRoZSBjbGllbnQgbm9kZS4gVGhlIHBydV9ycHJvY19wdXQoKSBpcyB0aGUg Y29tcGxlbWVudGFyeSBmdW5jdGlvbgo+Pj4+Pj4+Pj4+IHRvIHBydV9ycHJvY19nZXQoKS4KPj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IENvLWRldmVsb3BlZC1ieTogU3VtYW4gQW5uYSA8cy1hbm5hQHRp LmNvbT4KPj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBTdW1hbiBBbm5hIDxzLWFubmFAdGkuY29t Pgo+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFRlcm8gS3Jpc3RvIDx0LWtyaXN0b0B0aS5jb20+ Cj4+Pj4+Pj4+Pj4gQ28tZGV2ZWxvcGVkLWJ5OiBHcnplZ29yeiBKYXN6Y3p5ayA8Z3J6ZWdvcnou amFzemN6eWtAbGluYXJvLm9yZz4KPj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBK YXN6Y3p5ayA8Z3J6ZWdvcnouamFzemN6eWtAbGluYXJvLm9yZz4KPj4+Pj4+Pj4+PiBDby1kZXZl bG9wZWQtYnk6IFB1cmFuamF5IE1vaGFuIDxwLW1vaGFuQHRpLmNvbT4KPj4+Pj4+Pj4+PiBTaWdu ZWQtb2ZmLWJ5OiBQdXJhbmpheSBNb2hhbiA8cC1tb2hhbkB0aS5jb20+Cj4+Pj4+Pj4+Pj4gLS0t Cj4+Pj4+Pj4+Pj4gICBkcml2ZXJzL3JlbW90ZXByb2MvcHJ1X3Jwcm9jLmMgfCAxMzggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+Pj4+Pj4+Pj4gICBpbmNsdWRlL2xpbnV4L3By dXNzLmggICAgICAgICAgfCAgNTYgKysrKysrKysrKysrKwo+Pj4+Pj4+Pj4+ICAgMiBmaWxlcyBj aGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPj4+Pj4+Pj4+PiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3BydXNzLmgKPj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3JlbW90ZXByb2MvcHJ1X3Jwcm9jLmMgYi9kcml2ZXJz L3JlbW90ZXByb2MvcHJ1X3Jwcm9jLmMKPj4+Pj4+Pj4+PiBpbmRleCAxNzc3YTAxZmE4NGUuLjdh MzViNDAwMjg3YSAxMDA2NDQKPj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL3JlbW90ZXByb2MvcHJ1 X3Jwcm9jLmMKPj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL3JlbW90ZXByb2MvcHJ1X3Jwcm9jLmMK Pj4+Pj4+Pj4+PiBAQCAtMiwxMiArMiwxMyBAQAo+Pj4+Pj4+Pj4+ICAgLyoKPj4+Pj4+Pj4+PiAg ICAqIFBSVS1JQ1NTIHJlbW90ZXByb2MgZHJpdmVyIGZvciB2YXJpb3VzIFRJIFNvQ3MKPj4+Pj4+ Pj4+PiAgICAqCj4+Pj4+Pj4+Pj4gLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIFRleGFzIElu c3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHBzOi8vd3d3LnRpLmNvbS8KPj4+Pj4+Pj4+PiAr ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjIgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVk IC0gaHR0cHM6Ly93d3cudGkuY29tLwo+Pj4+Pj4+Pj4+ICAgICoKPj4+Pj4+Pj4+PiAgICAqIEF1 dGhvcihzKToKPj4+Pj4+Pj4+PiAgICAqICAgU3VtYW4gQW5uYSA8cy1hbm5hQHRpLmNvbT4KPj4+ Pj4+Pj4+PiAgICAqICAgQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29tPgo+Pj4+Pj4+Pj4+ICAg ICogICBHcnplZ29yeiBKYXN6Y3p5ayA8Z3J6ZWdvcnouamFzemN6eWtAbGluYXJvLm9yZz4gZm9y IFRleGFzIEluc3RydW1lbnRzCj4+Pj4+Pj4+Pj4gKyAqICAgIFB1cmFuamF5IE1vaGFuIDxwLW1v aGFuQHRpLmNvbT4KPj4+Pj4+Pj4+PiAgICAqLwo+Pj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4 L2JpdG9wcy5oPgo+Pj4+Pj4+Pj4+IEBAIC0xNiw2ICsxNyw3IEBACj4+Pj4+Pj4+Pj4gICAjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+Pj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvb2ZfZGV2 aWNlLmg+Cj4+Pj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+Cj4+Pj4+Pj4+Pj4g KyNpbmNsdWRlIDxsaW51eC9wcnVzcy5oPgo+Pj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L3By dXNzX2RyaXZlci5oPgo+Pj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L3JlbW90ZXByb2MuaD4K Pj4+Pj4+Pj4+PiBAQCAtMTExLDYgKzExMyw4IEBAIHN0cnVjdCBwcnVfcHJpdmF0ZV9kYXRhIHsK Pj4+Pj4+Pj4+PiAgICAqIEBycHJvYzogcmVtb3RlcHJvYyBwb2ludGVyIGZvciB0aGlzIFBSVSBj b3JlCj4+Pj4+Pj4+Pj4gICAgKiBAZGF0YTogUFJVIGNvcmUgc3BlY2lmaWMgZGF0YQo+Pj4+Pj4+ Pj4+ICAgICogQG1lbV9yZWdpb25zOiBkYXRhIGZvciBlYWNoIG9mIHRoZSBQUlUgbWVtb3J5IHJl Z2lvbnMKPj4+Pj4+Pj4+PiArICogQGNsaWVudF9ucDogY2xpZW50IGRldmljZSBub2RlCj4+Pj4+ Pj4+Pj4gKyAqIEBsb2NrOiBtdXRleCB0byBwcm90ZWN0IGNsaWVudCB1c2FnZQo+Pj4+Pj4+Pj4+ ICAgICogQGZ3X25hbWU6IG5hbWUgb2YgZmlybXdhcmUgaW1hZ2UgdXNlZCBkdXJpbmcgbG9hZGlu Zwo+Pj4+Pj4+Pj4+ICAgICogQG1hcHBlZF9pcnE6IHZpcnR1YWwgaW50ZXJydXB0IG51bWJlcnMg b2YgY3JlYXRlZCBmdyBzcGVjaWZpYyBtYXBwaW5nCj4+Pj4+Pj4+Pj4gICAgKiBAcHJ1X2ludGVy cnVwdF9tYXA6IHBvaW50ZXIgdG8gaW50ZXJydXB0IG1hcHBpbmcgZGVzY3JpcHRpb24gKGZpcm13 YXJlKQo+Pj4+Pj4+Pj4+IEBAIC0xMjYsNiArMTMwLDggQEAgc3RydWN0IHBydV9ycHJvYyB7Cj4+ Pj4+Pj4+Pj4gICAgICAgIHN0cnVjdCBycHJvYyAqcnByb2M7Cj4+Pj4+Pj4+Pj4gICAgICAgIGNv bnN0IHN0cnVjdCBwcnVfcHJpdmF0ZV9kYXRhICpkYXRhOwo+Pj4+Pj4+Pj4+ICAgICAgICBzdHJ1 Y3QgcHJ1c3NfbWVtX3JlZ2lvbiBtZW1fcmVnaW9uc1tQUlVfSU9NRU1fTUFYXTsKPj4+Pj4+Pj4+ PiArICAgICAgc3RydWN0IGRldmljZV9ub2RlICpjbGllbnRfbnA7Cj4+Pj4+Pj4+Pj4gKyAgICAg IHN0cnVjdCBtdXRleCBsb2NrOyAvKiBjbGllbnQgYWNjZXNzIGxvY2sgKi8KPj4+Pj4+Pj4+PiAg ICAgICAgY29uc3QgY2hhciAqZndfbmFtZTsKPj4+Pj4+Pj4+PiAgICAgICAgdW5zaWduZWQgaW50 ICptYXBwZWRfaXJxOwo+Pj4+Pj4+Pj4+ICAgICAgICBzdHJ1Y3QgcHJ1X2lycV9yc2MgKnBydV9p bnRlcnJ1cHRfbWFwOwo+Pj4+Pj4+Pj4+IEBAIC0xNDYsNiArMTUyLDEyNSBAQCB2b2lkIHBydV9j b250cm9sX3dyaXRlX3JlZyhzdHJ1Y3QgcHJ1X3Jwcm9jICpwcnUsIHVuc2lnbmVkIGludCByZWcs IHUzMiB2YWwpCj4+Pj4+Pj4+Pj4gICAgICAgIHdyaXRlbF9yZWxheGVkKHZhbCwgcHJ1LT5tZW1f cmVnaW9uc1tQUlVfSU9NRU1fQ1RSTF0udmEgKyByZWcpOwo+Pj4+Pj4+Pj4+ICAgfQo+Pj4+Pj4+ Pj4+ICtzdGF0aWMgc3RydWN0IHJwcm9jICpfX3BydV9ycHJvY19nZXQoc3RydWN0IGRldmljZV9u b2RlICpucCwgaW50IGluZGV4KQo+Pj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+Pj4gKyAgICAgIHN0cnVj dCBkZXZpY2Vfbm9kZSAqcnByb2NfbnAgPSBOVUxMOwo+Pj4+Pj4+Pj4+ICsgICAgICBzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2Owo+Pj4+Pj4+Pj4+ICsgICAgICBzdHJ1Y3QgcnByb2MgKnJw cm9jOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArICAgICAgcnByb2NfbnAgPSBvZl9wYXJzZV9w aGFuZGxlKG5wLCAidGkscHJ1cyIsIGluZGV4KTsKPj4+Pj4+Pj4+PiArICAgICAgaWYgKCFycHJv Y19ucCB8fCAhb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShycHJvY19ucCkpCj4+Pj4+Pj4+Pj4gKyAg ICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+ Pj4+ICsgICAgICBwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShycHJvY19ucCk7Cj4+Pj4+ Pj4+Pj4gKyAgICAgIG9mX25vZGVfcHV0KHJwcm9jX25wKTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+ Pj4gKyAgICAgIGlmICghcGRldiB8fCAhKCZwZGV2LT5kZXYpIHx8ICEoKCZwZGV2LT5kZXYpLT5k cml2ZXIpKQo+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgIC8qIHByb2JhYmx5IFBSVSBub3QgeWV0 IHByb2JlZCAqLwo+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FUFJP QkVfREVGRVIpOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArICAgICAgLyogbWFrZSBzdXJlIGl0 IGlzIFBSVSBycHJvYyAqLwo+Pj4+Pj4+Pj4+ICsgICAgICBpZiAoIWlzX3BydV9ycHJvYygmcGRl di0+ZGV2KSkgewo+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgIHB1dF9kZXZpY2UoJnBkZXYtPmRl dik7Cj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cj4+ Pj4+Pj4+Pj4gKyAgICAgIH0KPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKyAgICAgIHJwcm9jID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4+Pj4+Pj4+Pj4gKyAgICAgIHB1dF9kZXZpY2Uo JnBkZXYtPmRldik7Cj4+Pj4+Pj4+Pj4gKyAgICAgIGlmICghcnByb2MpCj4+Pj4+Pj4+Pj4gKyAg ICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4+Pj4+Pj4+Pj4gKwo+ Pj4+Pj4+Pj4+ICsgICAgICBnZXRfZGV2aWNlKCZycHJvYy0+ZGV2KTsKPj4+Pj4+Pj4+PiArCj4+ Pj4+Pj4+Pj4gKyAgICAgIHJldHVybiBycHJvYzsKPj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+ICsK Pj4+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+Pj4gKyAqIHBydV9ycHJvY19nZXQoKSAtIGdldCB0aGUg UFJVIHJwcm9jIGluc3RhbmNlIGZyb20gYSBkZXZpY2Ugbm9kZQo+Pj4+Pj4+Pj4+ICsgKiBAbnA6 IHRoZSB1c2VyL2NsaWVudCBkZXZpY2Ugbm9kZQo+Pj4+Pj4+Pj4+ICsgKiBAaW5kZXg6IGluZGV4 IHRvIHVzZSBmb3IgdGhlIHRpLHBydXMgcHJvcGVydHkKPj4+Pj4+Pj4+PiArICogQHBydV9pZDog b3B0aW9uYWwgcG9pbnRlciB0byByZXR1cm4gdGhlIFBSVSByZW1vdGVwcm9jIHByb2Nlc3NvciBp ZAo+Pj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGxvb2tzIHRocm91 Z2ggYSBjbGllbnQgZGV2aWNlIG5vZGUncyAidGkscHJ1cyIgcHJvcGVydHkgYXQKPj4+Pj4+Pj4+ PiArICogaW5kZXggQGluZGV4IGFuZCByZXR1cm5zIHRoZSBycHJvYyBoYW5kbGUgZm9yIGEgdmFs aWQgUFJVIHJlbW90ZSBwcm9jZXNzb3IgaWYKPj4+Pj4+Pj4+PiArICogZm91bmQuIFRoZSBmdW5j dGlvbiBhbGxvd3Mgb25seSBvbmUgdXNlciB0byBvd24gdGhlIFBSVSBycHJvYyByZXNvdXJjZSBh dCBhCj4+Pj4+Pj4+Pj4gKyAqIHRpbWUuIENhbGxlciBtdXN0IGNhbGwgcHJ1X3Jwcm9jX3B1dCgp IHdoZW4gZG9uZSB3aXRoIHVzaW5nIHRoZSBycHJvYywgbm90Cj4+Pj4+Pj4+Pj4gKyAqIHJlcXVp cmVkIGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgZmFpbHVyZS4KPj4+Pj4+Pj4+PiArICoKPj4+ Pj4+Pj4+PiArICogV2hlbiBvcHRpb25hbCBAcHJ1X2lkIHBvaW50ZXIgaXMgcGFzc2VkIHRoZSBQ UlUgcmVtb3RlcHJvYyBwcm9jZXNzb3IgaWQgaXMKPj4+Pj4+Pj4+PiArICogcmV0dXJuZWQuCj4+ Pj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+Pj4gKyAqIFJldHVybjogcnByb2MgaGFuZGxlIG9uIHN1Y2Nl c3MsIGFuZCBhbiBFUlJfUFRSIG9uIGZhaWx1cmUgdXNpbmcgb25lCj4+Pj4+Pj4+Pj4gKyAqIG9m IHRoZSBmb2xsb3dpbmcgZXJyb3IgdmFsdWVzCj4+Pj4+Pj4+Pj4gKyAqICAgIC1FTk9ERVYgaWYg ZGV2aWNlIGlzIG5vdCBmb3VuZAo+Pj4+Pj4+Pj4+ICsgKiAgICAtRUJVU1kgaWYgUFJVIGlzIGFs cmVhZHkgYWNxdWlyZWQgYnkgYW55b25lCj4+Pj4+Pj4+Pj4gKyAqICAgIC1FUFJPQkVfREVGRVIg aXMgUFJVIGRldmljZSBpcyBub3QgcHJvYmVkIHlldAo+Pj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4+ PiArc3RydWN0IHJwcm9jICpwcnVfcnByb2NfZ2V0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGlu dCBpbmRleCwKPj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBydXNz X3BydV9pZCAqcHJ1X2lkKQo+Pj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+Pj4gKyAgICAgIHN0cnVjdCBy cHJvYyAqcnByb2M7Cj4+Pj4+Pj4+Pj4gKyAgICAgIHN0cnVjdCBwcnVfcnByb2MgKnBydTsKPj4+ Pj4+Pj4+PiArICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ PiArICAgICAgdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpOwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ IFRoZXJlIHNob3VsZCBiZSBhIG1vZHVsZV9wdXQoKSBpbiBwcnVfcnByb2NfcHV0KCkuLi4KPj4+ Pj4+Pj4KPj4+Pj4+Pj4gLi4uIGFuZCBpbiB0aGUgZXJyb3IgcGF0aCBvZiB0aGlzIGZ1bmN0aW9u Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IE1vcmUgY29tbWVudHMgdG8gY29tZSB0b21v cnJvdy4gIEknbSBlc3BlY2lhbGx5IHdvcnJpZWQgYWJvdXQgdGhpcyBBUEkgcmFjaW5nCj4+Pj4+ Pj4+PiB3aXRoIGEgcmVtb3RlIHByb2Nlc3NvciBiZWluZyByZW1vdmVkIG9yIGRldGFjaGVkLgo+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gTG9va2luZyBhdCB3aGF0IGlzIGRvbmUgaW4gd2t1 cF9tM19pcGNfcHJvYmUoKSwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNhbGwKPj4+Pj4+Pj4g cnByb2NfZ2V0X2J5X2hhbmRsZSgpIGhlcmUgYW5kIHRoYXQgd291bGQgbWFrZSBzdXJlIHRoZSBy ZW1vdGUgcHJvY2Vzc29yIGRvZXNuJ3QKPj4+Pj4+Pj4gZ28gYXdheSBiZWZvcmUgdGhlIGVuZCBv ZiB0aGUgZnVuY3Rpb24uCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IE1vcmUgY29tbWVudHMgdG8gY29tZS4u Lgo+Pj4+Pj4KPj4+Pj4+IEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgcnByb2NfZ2V0X2J5X2hhbmRs ZSgpIGhlcmUgaW5zdGVhZCBvZgo+Pj4+Pj4gX19wcnVfZ2V0X3Byb2MoKSwgYnV0IHRoYXQgd291 bGQgbm90IHByb3ZpZGUgbXVsdGlwbGUgZnVuY3Rpb25hbGl0eS4KPj4+Pj4+Cj4+Pj4+PiBUaGUg QVBJIHJwcm9jX2dldF9ieV9oYW5kbGUoKSByZXR1cm5zIHJwcm9jIGhhbmRsZSBvbiBzdWNjZXNz LCBhbmQgTlVMTCBvbgo+Pj4+Pj4gZmFpbHVyZSB3aGVyZSBhcyBfX3BydV9nZXRfcHJvYygpIHJl dHVybnMgRVJSX1BUUiBvbiBmYWlsdXJlIHdoaWNoIHByb3ZpZGVzCj4+Pj4+PiBtdWx0aXBsZSBm dW5jdGlvbmFsaXR5IGFuZCBvcHBvcnR1bml0eSBmb3IgdXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl bgo+Pj4+Pj4gbXVsdGlwbGUgZXJyb3JzLgo+Pj4+Pj4KPj4+Pj4+IFNvIHdlIGhhdmUgdGhlc2Ug dGhyZWUgb3B0aW9ucy4KPj4+Pj4+Cj4+Pj4+PiAxLiBJZiB3ZSdyZSB1c2luZyB0aGUgQVBJIHJw cm9jX2dldF9ieV9oYW5kbGUoKSBhbmQgd2Ugd2FudCB0aGUgbXVsdGlwbGUKPj4+Pj4+IEVSUl9Q VFIgb24gZmFpbHVyZSB0aGVuIHdlIHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIEFQSSBycHJvY19n ZXRfYnlfaGFuZGxlKCkKPj4+Pj4+IGFuZCBhbHNvIGFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgdXNl cyBycHJvY19nZXRfYnlfaGFuZGxlKCkuCj4+Pj4+Pgo+Pj4+Pgo+Pj4+PiBOb3Qgb3B0aW1hbC4K Pj4+Pj4KPj4+Pj4+IDIuIEtlZXAgdGhlIEFQSSBycHJvY19nZXRfYnlfaGFuZGxlKCkgYXMgaXQg aXMuIFRoYXQgd2lsbCByZXN0cmljdCB1cyBmcm9tCj4+Pj4+PiB1c2luZyBtdWx0aXBsZSBFUlJf UFRSIG9uIGRpZmZlcmVudCBraW5kcyBvZiBlcnJvci4KPj4+Pj4+Cj4+Pj4+Cj4+Pj4+IE5vdCBv cHRpbWFsLgo+Pj4+Pgo+Pj4+Pj4gMy4gSW5zdGVhZCBvZiB1c2luZyBycHJvY19nZXRfYnlfaGFu ZGxlKCksIGtlZXAgdXNpbmcgX19wcnVfZ2V0X3Byb2MoKS4gVGhpcwo+Pj4+Pj4gd2lsbCBtYWtl IHN1cmUgd2UgaGF2ZSB0aGUgcHJvcGVyIEVSUl9QVFIgdG8gcmV0cnVuIGZvciBkaWZmZXJlbnQg a2luZHMgb2YKPj4+Pj4+IGVycm9ycy4KPj4+Pj4+Cj4+Pj4+Cj4+Pj4+IFVuYWNjZXB0YWJsZSBm b3IgdGhlIHJlYXNvbiBJIGFscmVhZHkgc3RhdGVkLgo+Pj4+Pgo+Pj4+Pj4gUGxlYXNlIGxldCBt ZSBrbm93IHdoaWNoIG9wdGlvbiB0byBjb250aW51ZSB3aXRoLgo+Pj4+Pgo+Pj4+PiBJIHN1Z2dl c3QgYnVpbGRpbmcgYSB3cmFwcGVyIHRoYXQgZG9lcyBldmVyeXRoaW5nIHlvdSB3YW50IGFyb3Vu ZCBycHJvY19nZXRfYnlfcGhhbmRsZSgpLgo+Pgo+PiBXZSBjYW4gaW50cm9kdWNlIGEgbmV3IEFQ SSBfX3Jwcm9jX2dldF9ieV9waGFuZGxlKCkgc2ltaWxhciB0byB0aGUgQVBJCj4+IHJwcm9jX2dl dF9ieV9waGFuZGxlKCkuIFRoZSBuZXcgQVBJIF9fcnByb2NfZ2V0X2J5X3BoYW5kbGUoKSB3aWxs IGRvIGFsbCB0aGUKPj4gZnVuY3Rpb25hbGl0eSBvZiBnZXR0aW5nIHRoZSBycHJvYy4gT24gc3Vj Y2VzcyBpdCB3aWxsIHJldHVybiBycHJvYyBhbmQgb24KPj4gZmFpbHVyZSBpdCB3aWxsIHJldHVy biB0aGUgZGlmZmVyZW50IEVSUl9QVFIuCj4+IElmIHJwcm9jIGlzIG5vdCBwcm9iZWQgeWV0LCBp dCB3aWxsIHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpLgo+Pgo+PiBUaGlzIHdpbGwgbWFr ZSBzdXJlIHRoYXQgd2UncmUgZ2V0dGluZyBkaWZmZXJlbnQgZXJyb3IgY29kZXMgZm9yIGRpZmZl cmVudAo+PiBlcnJvcnMgZnJvbSBwcnVfcnByb2NfZ2V0KCkuCj4+Cj4+IFRoZSBvbGQgQVBJIHJw cm9jX2dldF9ieV9oYW5kbGUoKSB3aWxsIGludm9rZSB0aGUgbmV3IEFQSS4gT24gc3VjY2VzcyB0 aGUgbmV3Cj4+IEFQSSB3aWxsIHJldHVybiBycHJvYyBhbmQgdGhlIG9sZCBBUEkgd2lsbCBhbHNv IHJldHVybiBycHJvYy4gT24gZmFpbHVyZSB0aGUKPj4gbmV3IEFQSSB3aWxsIHJldHVybiBkaWZm ZXJlbnQgZXJyb3IgY29kZXMgd2hpbGUgdGhlIG9sZCBBUEkgd2lsbCBwcmVzZXJ2ZSBpdCdzCj4+ IG5hdHVyZSBhbmQgcmV0dXJuIE5VTEwuCj4gCj4gSSBtZWFudCB0byBjcmVhdGUgYSB3cmFwcGVy IGFyb3VuZCBycHJvY19nZXRfYnlfaGFuZGxlKCkgdGhhdCBpcyBsb2NhbAo+IHRvIHBydV9ycHJv Yy5jLiAgVGhhdCB3YXkgeW91IGNhbiBlbmFjdCB0aGUgYmVoYXZpb3IgeW91IHdhbnQgd2l0aG91 dAo+IGhhdmluZyB0byBjb25zdHJhaW4gb3RoZXJzIGluIHRoaXMgc3BlY2lmaWMgZGVzaWduLgo+ IAo+IFRoYW5rcywKPiBNYXRoaWV1Cj4gCkFzIFRoZSBBUEkgcnByb2NfZ2V0X2J5X3BoYW5kbGUo KSByZXR1cm5zIG51bGwgb24gZmFpbHVyZSwgSSBhbSBub3QgYWJsZSB0bwpjcmVhdGUgYSB3cmFw cGVyIGFyb3VuZCB0aGlzIEFQSSwgd2hpY2ggaXMgbG9jYWwgdG8gcHJ1X3Jwcm9jLmMgdG8gZW5h Y3QgdGhlCmRpZmZlcmVudCBiZWhhdmlvcnMgdGhhdCBJIHdhbnQuIEFzIHRoZSBBUEkgaXMgb25s eSByZXR1cm5pbmcgbnVsbCBvbiBmYWlsdXJlCmJ1dCBwcnVfcnByb2NfZ2V0IG5lZWRzIGRpZmZl cmVudCBlcnJvciBjb2RlcyBmb3IgZGlmZmVyZW50IGZhaWx1cmVzLiBXZSBjYW4KY3JlYXRlIGEg d3JhcHBlciBidXQgdGhhdCB3b24ndCBiZSBhYmxlIHRvIHByb3ZpZGUgZGlmZmVyZW50IGVycm9y IGNvZGVzIHRoYXQKd2Ugd2FudCBpbiBwcnVfcnByb2NfZ2V0KCkuCgpUaGlzIGlzIHdoeSBJIGFt IHN1Z2dlc3RpbmcgdG8gaW50cm9kdWNlIG5ldyBBUEkgW19fcnByb2NfZ2V0X2J5X3BoYW5kbGUo KV0Kc2ltaWxhciB0byBycHJvY19nZXRfYnlfaGFuZGxlKCkuIFRoZSBuZXcgQVBJIGNhbiByZXR1 cm4gZGlmZmVyZW50IGVycm9yIGNvZGVzCm9uIGRpZmZlcmVudCBlcnJvci4gV2hpbGUgdGhlIG9s ZGVyIEFQSSBbcnByb2NfZ2V0X2J5X2hhbmRsZSgpXSB3aWxsIGNhbGwgdGhlCm5ldyBBUEkgYW5k IG9uIGZhaWx1cmUgb24gbmV3IEFQSSB0aGUgb2xkZXIgQVBJIHdpbGwganVzdCByZXR1cm4gbnVs bAppcnJlc3BlY3RpdmUgb2YgdGhlIGVycm9yIGNvZGUgcmV0dXJuZWQgYnkgdGhlIG5ldyBBUEku IFRodXMgcHJlc2VydmluZyBpdCdzCm9yaWdpbmFsIGRlc2lnbi4KClRoaXMgd2F5IHdlIGNhbiBl bmFjdCB0aGUgYmVoYXZpb3IgdGhhdCB3ZSB3YW50IGJ5IGNhbGxpbmcgdGhlIG5ldyBBUEkgd2hp bGUKdGhlIG90aGVyIEFQSXMgZGVwZW5kZW50IG9uIHRoZSBvbGRlciBBUEksIGNhbiBzdGlsbCBj YWxsCnJwcm9jX2dldF9ieV9waGFuZGxlKCkgd2l0aG91dCBhbnkgY2hhbmdlIHRvIHRoZSBleGlz dGluZyBkZXNpZ24uCgpXZSBjYW4gaGF2ZSBhIGxpdHRsZSBkaXNjdXNzaW9uIHRvIGRpc2N1c3Mg dGhpcyBmdXJ0aGVyIG9uIHNvbWUgSVJDIGNoYW5uZWwgb3IKbWVldGluZyBpZiBpdCdzIHBvc3Np YmxlLgoKVGhhbmtzLApEYW5pc2gKCgo+Pgo+PiBUaGUgQVBJIF9fcnByb2NfZ2V0X2J5X2hhbmRs ZSB3aWxsIGxvb2sgbGlrZSB0aGlzLgo+Pgo+PiBzdHJ1Y3QgcnByb2MgKl9fcnByb2NfZ2V0X2J5 X2hhbmRsZShwaGFuZGxlIHBoYW5kbGUpCj4+IHsKPj4gICAgICAgICBzdHJ1Y3QgcnByb2MgKnJw cm9jID0gTlVMTCwgKnI7Cj4+ICAgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucDsKPj4KPj4g ICAgICAgICBucCA9IG9mX2ZpbmRfbm9kZV9ieV9waGFuZGxlKHBoYW5kbGUpOwo+PiAgICAgICAg IGlmICghbnApCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPj4KPj4gICAgICAgICBy Y3VfcmVhZF9sb2NrKCk7Cj4+ICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UociwgJnJw cm9jX2xpc3QsIG5vZGUpIHsKPj4gICAgICAgICAgICAgICAgIGlmIChyLT5kZXYucGFyZW50ICYm IHItPmRldi5wYXJlbnQtPm9mX25vZGUgPT0gbnApIHsKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgLypwcmV2ZW50IHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyByZW1vdmVk ICovCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5X21vZHVsZV9nZXQoci0+ZGV2 LnBhcmVudC0+ZHJpdmVyLT5vd25lcikpIHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXZfZXJyKCZyLT5kZXYsICJjYW4ndCBnZXQgb3duZXJcbiIpOwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICB9 Cj4+Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcm9jID0gcjsKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0X2RldmljZSgmcnByb2MtPmRldik7Cj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgIH0KPj4gICAgICAg ICByY3VfcmVhZF91bmxvY2soKTsKPj4KPj4gICAgICAgICBvZl9ub2RlX3B1dChucCk7Cj4+Cj4+ ICAgICAgICAgaWYoIXJwcm9jKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVQ Uk9CRV9ERUZFUik7Cj4+Cj4+ICAgICAgICAgcmV0dXJuIHJwcm9jOwo+PiB9Cj4+Cj4+IFRoZSBB UEkgcnByb2NfZ2V0X2J5X2hhbmRsZSgpIHdpbGwgbG9vayBsaWtlIHRoaXMuCj4+Cj4+IHN0cnVj dCBycHJvYyAqcnByb2NfZ2V0X2J5X3BoYW5kbGUocGhhbmRsZSBwaGFuZGxlKQo+PiB7Cj4+ICAg ICAgICAgc3RydWN0IHJwcm9jICpycHJvYyA9IE5VTEw7Cj4+Cj4+ICAgICAgICAgcnByb2MgPSBf X3Jwcm9jX2dldF9ieV9oYW5kbGUocGhhbmRsZSk7Cj4+Cj4+ICAgICAgICAgaWYoIXJwcm9jIHx8 IElTX0VSUihycHJvYykpCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPj4KPj4gICAg ICAgICByZXR1cm4gcnByb2M7Cj4+IH0KPj4KPj4gVGhpcyB3YXkgaW4gcHJ1X3Jwcm9jX2dldCgp LCB3ZSdsbCBnZXQgdGhlIHJwcm9jIGJ5IHBoYW5kbGUgYW5kIHdlJ2xsIHN0aWxsCj4+IHJldHVy biBkaWZmZXJlbnQgZXJyb3IgY29kZXMgZGVwZW5kaW5nIHVwb24gZmFpbHVyZSBjYXNlcy4gV2Un bGwgYWxzbyBiZSBhYmxlCj4+IHRvIHByZXNlcnZlIHRoZSBhY3R1YWwgZnVuY3Rpb25hbGl0eSBv ZiBycHJvY19nZXRfYnlfcGhhbmRsZSgpIHNvIHRoYXQgdGhlCj4+IG90aGVyIEFQSXMgdXNpbmcg cnByb2NfZ2V0X2J5X3BoYW5kbGUoKSB3b24ndCBnZXQgYWZmZWN0ZWQuCj4+Cj4+IFBsZWFzZSBs ZXQgbWUga25vdyBpZiB0aGlzIGxvb2tzIGdvb2QuCj4+Cj4+Pj4+Cj4+Pj4KPj4+PiBTdXJlLCBJ J2xsIGRvIHRoYXQuIEknbGwgc2hhcmUgdGhpcyBjaGFuZ2UgaW4gdjYgb2YgdGhpcyBwYXRjaCBz ZXJpZXMuCj4+Pgo+Pj4gSSdtIGFibGUgdG8gdGVzdCB0aGUgVEkgcHJ1ZXRoIGRyaXZlciBmcm9t IHRoZSB0aS1saW51eC01LjEwLnkgdHJlZSBbMV0gb24gYQo+Pj4gQU01NzQ5IGNwdSAoY3VzdG9t IGJvYXJkKS4gQnV0IEkgbmVlZCBhIG1vcmUgcmVjZW50IGtlcm5lbCAoYXQgbGVhc3QgNS4xNSkg dG8KPj4+IHN1cHBvcnQgb3RoZXIgZGV2aWNlcyByZWNlbnRseSBhZGRlZCB0byB0aGUgTGludXgg a2VybmVsICh3aWZpNiBtb2R1bGUgYW5kIGFuCj4+PiBldGhlcm5ldCBzd2l0Y2gpLiBBbHNvIGl0 IHdvdWxkIGJlIG5pY2UgaWYgdGhpcyBkcml2ZXIgaXMgZmluYWxseSBtZXJnZWQgaW4gdGhlCj4+ PiBMaW51eCBrZXJuZWwuCj4+Pgo+Pj4gTWF5YmUgSSBjYW4gaGVscCB0byB0ZXN0IHRoaXMgc2Vy aWVzIGJ1dCBJIG5vdGljZWQgaXQgb25seSBwcm92aWRlIHRoZSBkcml2ZXIKPj4+IGZvciBUSSBB TTY1NHggY3B1cyBbMl0uIENhbiB5b3UgYWxzbyBwcm92aWRlIHBhdGNoZXMgZm9yIGJhc2ljIEVN QUMgc3VwcG9ydCB3aXRoCj4+PiB0aGUgVEkgQU01NzR4IHRvbz8gKEkgZG9uJ3QgbmVlZCBhZHZh bmNlZCBmZWF0dXJlcyBsaWtlIGZyYW1lIHRpbWVzdGFtcGluZywgSFNSCj4+PiBldGMpLgo+Pj4K Pj4+IEFsc28sIHdoYXQgYWJvdXQgcGF0Y2hlcyBwcmVzZW50IGluIHRoZSB0aS1saW51eC1rZXJu ZWwgdHJlZSBhbmQgbm90IGluY2x1ZGVkCj4+PiB0aGlzIHRoaXMgc2VyaWVzPyBFc3BlY2lhbGx5 IHBhdGNoZXMgdGhhdCBtb2RpZnkgdGhlIGtlcm5lbCBuZXR3b3JrIHN0YWNrIFszXQo+Pj4gKG5l dC9ycG1zZzogYWRkIHN1cHBvcnQgZm9yIG5ldyBycG1zZyBzb2NrZXRzKS4gSXMgdGhpcyBuZXcg c29ja2V0IHByb3RvY29sCj4+PiByZWFsbHkgbmVlZGVkPwo+Pj4KPj4+IE5vdGljZSB0aGUgcGF0 Y2ggYWRkaW5nIHRoZSBycG1zZyBzb2NrZXRzIFszXSBhbHJlYWR5IGNvbmZsaWN0IHdpdGggdGhl IHVwc3RyZWFtCj4+PiBrZXJuZWwgc2luY2UgdGhlIEFGX01DVFAgZGVmaW5pdGlvbiBub3cgdXNl IHRoZSB2YWx1ZSB0ZW1wb3Jhcmx5IHVzZWQgYnkKPj4+IEFGX1JQTVNHIFs0XS4KPj4+Cj4+PiBD YW4geW91IHNlbmQgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBjb21wbGV0ZSBzZXJpZXM/Cj4+ Pgo+Pj4gVGhhbmtzIQo+Pj4KPj4+IFsxXSBodHRwczovL2dpdC50aS5jb20vY2dpdC90aS1saW51 eC1rZXJuZWwvdGktbGludXgta2VybmVsL2xvZy8/aD10aS1saW51eC01LjEwLnkKPj4+Cj4+PiBb Ml0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcmVtb3RlcHJvYy8yMDIyMDQwNjA5NDM1 OC43ODk1LTEtcC1tb2hhbkB0aS5jb20vCj4+Pgo+Pj4gWzNdCj4+PiBodHRwczovL2dpdC50aS5j b20vY2dpdC90aS1saW51eC1rZXJuZWwvdGktbGludXgta2VybmVsL2NvbW1pdC8/aD10aS1saW51 eC01LjEwLnkmaWQ9ZjRiOTc4YTk3OGMzODE0OWY3MTJkZGQxMzdmMTJlZDVmYjkxNDE2MQo+Pj4K Pj4+IFs0XQo+Pj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n aXQvc3RhYmxlL2xpbnV4LmdpdC9jb21taXQvP2lkPWJjNDlkODE2OWFhNzIyOTUxMDRmMTU1ODgz MGM1NjhlZmI5NDYzMTUKPj4+Cj4+PiBCZXN0IHJlZ2FyZHMsCj4+PiBSb21haW4KPj4+Cj4+Pgo+ Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gVGhhbmtzLAo+Pj4+Pj4gRGFuaXNoCj4+Pj4+Pgo+Pj4+Pj4KPj4+ Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4+IFRoYW5rcywKPj4+Pj4+Pj4+IE1hdGhpZXUKPj4+Pj4+ Pj4+Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsgICAgICBycHJvYyA9IF9fcHJ1X3Jwcm9jX2dl dChucCwgaW5kZXgpOwo+Pj4+Pj4+Pj4+ICsgICAgICBpZiAoSVNfRVJSKHJwcm9jKSkKPj4+Pj4+ Pj4+PiArICAgICAgICAgICAgICByZXR1cm4gcnByb2M7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ ICsgICAgICBwcnUgPSBycHJvYy0+cHJpdjsKPj4+Pj4+Pj4+PiArICAgICAgZGV2ID0gJnJwcm9j LT5kZXY7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsgICAgICBtdXRleF9sb2NrKCZwcnUtPmxv Y2spOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArICAgICAgaWYgKHBydS0+Y2xpZW50X25wKSB7 Cj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZwcnUtPmxvY2spOwo+Pj4+ Pj4+Pj4+ICsgICAgICAgICAgICAgIHB1dF9kZXZpY2UoZGV2KTsKPj4+Pj4+Pj4+PiArICAgICAg ICAgICAgICByZXR1cm4gRVJSX1BUUigtRUJVU1kpOwo+Pj4+Pj4+Pj4+ICsgICAgICB9Cj4+Pj4+ Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsgICAgICBwcnUtPmNsaWVudF9ucCA9IG5wOwo+Pj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+PiArICAgICAgbXV0ZXhfdW5sb2NrKCZwcnUtPmxvY2spOwo+Pj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+PiArICAgICAgaWYgKHBydV9pZCkKPj4+Pj4+Pj4+PiArICAgICAgICAgICAg ICAqcHJ1X2lkID0gcHJ1LT5pZDsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKyAgICAgIHJldHVy biBycHJvYzsKPj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChwcnVf cnByb2NfZ2V0KTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+Pj4+ICsgKiBw cnVfcnByb2NfcHV0KCkgLSByZWxlYXNlIHRoZSBQUlUgcnByb2MgcmVzb3VyY2UKPj4+Pj4+Pj4+ PiArICogQHJwcm9jOiB0aGUgcnByb2MgcmVzb3VyY2UgdG8gcmVsZWFzZQo+Pj4+Pj4+Pj4+ICsg Kgo+Pj4+Pj4+Pj4+ICsgKiBSZWxlYXNlcyB0aGUgUFJVIHJwcm9jIHJlc291cmNlIGFuZCBtYWtl cyBpdCBhdmFpbGFibGUgdG8gb3RoZXIKPj4+Pj4+Pj4+PiArICogdXNlcnMuCj4+Pj4+Pj4+Pj4g KyAqLwo+Pj4+Pj4+Pj4+ICt2b2lkIHBydV9ycHJvY19wdXQoc3RydWN0IHJwcm9jICpycHJvYykK Pj4+Pj4+Pj4+PiArewo+Pj4+Pj4+Pj4+ICsgICAgICBzdHJ1Y3QgcHJ1X3Jwcm9jICpwcnU7Cj4+ Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsgICAgICBpZiAoSVNfRVJSX09SX05VTEwocnByb2MpIHx8 ICFpc19wcnVfcnByb2MocnByb2MtPmRldi5wYXJlbnQpKQo+Pj4+Pj4+Pj4+ICsgICAgICAgICAg ICAgIHJldHVybjsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKyAgICAgIHBydSA9IHJwcm9jLT5w cml2Owo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArICAgICAgbXV0ZXhfbG9jaygmcHJ1LT5sb2Nr KTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKyAgICAgIGlmICghcHJ1LT5jbGllbnRfbnApIHsK Pj4+Pj4+Pj4+PiArICAgICAgICAgICAgICBtdXRleF91bmxvY2soJnBydS0+bG9jayk7Cj4+Pj4+ Pj4+Pj4gKyAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+Pj4+Pj4+ICsgICAgICB9Cj4+Pj4+Pj4+ Pj4gKwo+Pj4+Pj4+Pj4+ICsgICAgICBwcnUtPmNsaWVudF9ucCA9IE5VTEw7Cj4+Pj4+Pj4+Pj4g KyAgICAgIG11dGV4X3VubG9jaygmcHJ1LT5sb2NrKTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4g KyAgICAgIHB1dF9kZXZpY2UoJnJwcm9jLT5kZXYpOwo+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+Pj4g K0VYUE9SVF9TWU1CT0xfR1BMKHBydV9ycHJvY19wdXQpOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ PiAgIHN0YXRpYyBpbmxpbmUgdTMyIHBydV9kZWJ1Z19yZWFkX3JlZyhzdHJ1Y3QgcHJ1X3Jwcm9j ICpwcnUsIHVuc2lnbmVkIGludCByZWcpCj4+Pj4+Pj4+Pj4gICB7Cj4+Pj4+Pj4+Pj4gICAgICAg IHJldHVybiByZWFkbF9yZWxheGVkKHBydS0+bWVtX3JlZ2lvbnNbUFJVX0lPTUVNX0RFQlVHXS52 YSArIHJlZyk7Cj4+Pj4+Pj4+Pj4gQEAgLTQzOCw3ICs1NjMsNyBAQCBzdGF0aWMgdm9pZCAqcHJ1 X2RfZGFfdG9fdmEoc3RydWN0IHBydV9ycHJvYyAqcHJ1LCB1MzIgZGEsIHNpemVfdCBsZW4pCj4+ Pj4+Pj4+Pj4gICAgICAgIGRyYW0wID0gcHJ1c3MtPm1lbV9yZWdpb25zW1BSVVNTX01FTV9EUkFN MF07Cj4+Pj4+Pj4+Pj4gICAgICAgIGRyYW0xID0gcHJ1c3MtPm1lbV9yZWdpb25zW1BSVVNTX01F TV9EUkFNMV07Cj4+Pj4+Pj4+Pj4gICAgICAgIC8qIFBSVTEgaGFzIGl0cyBsb2NhbCBSQU0gYWRk cmVzc2VzIHJldmVyc2VkICovCj4+Pj4+Pj4+Pj4gLSAgICAgIGlmIChwcnUtPmlkID09IDEpCj4+ Pj4+Pj4+Pj4gKyAgICAgIGlmIChwcnUtPmlkID09IFBSVVNTX1BSVTEpCj4+Pj4+Pj4+Pj4gICAg ICAgICAgICAgICAgc3dhcChkcmFtMCwgZHJhbTEpOwo+Pj4+Pj4+Pj4+ICAgICAgICBzaHJkX3Jh bSA9IHBydXNzLT5tZW1fcmVnaW9uc1tQUlVTU19NRU1fU0hSRF9SQU0yXTsKPj4+Pj4+Pj4+PiBA QCAtNzQ3LDE0ICs4NzIsMTQgQEAgc3RhdGljIGludCBwcnVfcnByb2Nfc2V0X2lkKHN0cnVjdCBw cnVfcnByb2MgKnBydSkKPj4+Pj4+Pj4+PiAgICAgICAgY2FzZSBSVFUwX0lSQU1fQUREUl9NQVNL Ogo+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoOwo+Pj4+Pj4+Pj4+ICAgICAg ICBjYXNlIFBSVTBfSVJBTV9BRERSX01BU0s6Cj4+Pj4+Pj4+Pj4gLSAgICAgICAgICAgICAgcHJ1 LT5pZCA9IDA7Cj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgcHJ1LT5pZCA9IFBSVVNTX1BSVTA7 Cj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+Pj4+Pj4gICAgICAgIGNhc2Ug VFhfUFJVMV9JUkFNX0FERFJfTUFTSzoKPj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICBmYWxsdGhy b3VnaDsKPj4+Pj4+Pj4+PiAgICAgICAgY2FzZSBSVFUxX0lSQU1fQUREUl9NQVNLOgo+Pj4+Pj4+ Pj4+ICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoOwo+Pj4+Pj4+Pj4+ICAgICAgICBjYXNlIFBS VTFfSVJBTV9BRERSX01BU0s6Cj4+Pj4+Pj4+Pj4gLSAgICAgICAgICAgICAgcHJ1LT5pZCA9IDE7 Cj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgcHJ1LT5pZCA9IFBSVVNTX1BSVTE7Cj4+Pj4+Pj4+ Pj4gICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+Pj4+Pj4gICAgICAgIGRlZmF1bHQ6Cj4+Pj4+ Pj4+Pj4gICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPj4+Pj4+Pj4+PiBAQCAtODE2LDYg Kzk0MSw4IEBAIHN0YXRpYyBpbnQgcHJ1X3Jwcm9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4+Pj4+Pj4+Pj4gICAgICAgIHBydS0+cHJ1c3MgPSBwbGF0Zm9ybV9nZXRfZHJ2 ZGF0YShwcGRldik7Cj4+Pj4+Pj4+Pj4gICAgICAgIHBydS0+cnByb2MgPSBycHJvYzsKPj4+Pj4+ Pj4+PiAgICAgICAgcHJ1LT5md19uYW1lID0gZndfbmFtZTsKPj4+Pj4+Pj4+PiArICAgICAgcHJ1 LT5jbGllbnRfbnAgPSBOVUxMOwo+Pj4+Pj4+Pj4+ICsgICAgICBtdXRleF9pbml0KCZwcnUtPmxv Y2spOwo+Pj4+Pj4+Pj4+ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShtZW1fbmFt ZXMpOyBpKyspIHsKPj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICByZXMgPSBwbGF0Zm9ybV9nZXRf cmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLAo+Pj4+Pj4+Pj4+IEBAIC05MDMs NyArMTAzMCw3IEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHBydV9ycHJvY19tYXRjaCk7Cj4+ Pj4+Pj4+Pj4gICBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBwcnVfcnByb2NfZHJpdmVy ID0gewo+Pj4+Pj4+Pj4+ICAgICAgICAuZHJpdmVyID0gewo+Pj4+Pj4+Pj4+IC0gICAgICAgICAg ICAgIC5uYW1lICAgPSAicHJ1LXJwcm9jIiwKPj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAubmFt ZSAgID0gUFJVX1JQUk9DX0RSVk5BTUUsCj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgLm9mX21h dGNoX3RhYmxlID0gcHJ1X3Jwcm9jX21hdGNoLAo+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgIC5z dXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwKPj4+Pj4+Pj4+PiAgICAgICAgfSwKPj4+Pj4+Pj4+ PiBAQCAtOTE1LDUgKzEwNDIsNiBAQCBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHBydV9ycHJvY19k cml2ZXIpOwo+Pj4+Pj4+Pj4+ICAgTU9EVUxFX0FVVEhPUigiU3VtYW4gQW5uYSA8cy1hbm5hQHRp LmNvbT4iKTsKPj4+Pj4+Pj4+PiAgIE1PRFVMRV9BVVRIT1IoIkFuZHJldyBGLiBEYXZpcyA8YWZk QHRpLmNvbT4iKTsKPj4+Pj4+Pj4+PiAgIE1PRFVMRV9BVVRIT1IoIkdyemVnb3J6IEphc3pjenlr IDxncnplZ29yei5qYXN6Y3p5a0BsaW5hcm8ub3JnPiIpOwo+Pj4+Pj4+Pj4+ICtNT0RVTEVfQVVU SE9SKCJQdXJhbmpheSBNb2hhbiA8cC1tb2hhbkB0aS5jb20+Iik7Cj4+Pj4+Pj4+Pj4gICBNT0RV TEVfREVTQ1JJUFRJT04oIlBSVS1JQ1NTIFJlbW90ZSBQcm9jZXNzb3IgRHJpdmVyIik7Cj4+Pj4+ Pj4+Pj4gICBNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvcHJ1c3MuaCBiL2luY2x1ZGUvbGludXgvcHJ1c3MuaAo+Pj4+Pj4+Pj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mZGM3 MTliNDNkYjAKPj4+Pj4+Pj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4+Pj4+Pj4gKysrIGIvaW5jbHVk ZS9saW51eC9wcnVzcy5oCj4+Pj4+Pj4+Pj4gQEAgLTAsMCArMSw1NiBAQAo+Pj4+Pj4+Pj4+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4+Pj4+Pj4+Pj4gKy8q Kgo+Pj4+Pj4+Pj4+ICsgKiBQUlUtSUNTUyBTdWJzeXN0ZW0gdXNlciBpbnRlcmZhY2VzCj4+Pj4+ Pj4+Pj4gKyAqCj4+Pj4+Pj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIyIFRleGFzIElu c3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tCj4+Pj4+Pj4+Pj4gKyAq ICAgIFN1bWFuIEFubmEgPHMtYW5uYUB0aS5jb20+Cj4+Pj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+PiArI2lmbmRlZiBfX0xJTlVYX1BSVVNTX0gKPj4+Pj4+Pj4+PiArI2RlZmlu ZSBfX0xJTlVYX1BSVVNTX0gKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KPj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+Pj4+Pj4+ Pj4gKwo+Pj4+Pj4+Pj4+ICsjZGVmaW5lIFBSVV9SUFJPQ19EUlZOQU1FICJwcnUtcnByb2MiCj4+ Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsvKgo+Pj4+Pj4+Pj4+ICsgKiBlbnVtIHBydXNzX3BydV9p ZCAtIFBSVSBjb3JlIGlkZW50aWZpZXJzCj4+Pj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+Pj4+ICtlbnVt IHBydXNzX3BydV9pZCB7Cj4+Pj4+Pj4+Pj4gKyAgICAgIFBSVVNTX1BSVTAgPSAwLAo+Pj4+Pj4+ Pj4+ICsgICAgICBQUlVTU19QUlUxLAo+Pj4+Pj4+Pj4+ICsgICAgICBQUlVTU19OVU1fUFJVUywK Pj4+Pj4+Pj4+PiArfTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gK3N0cnVjdCBkZXZpY2Vfbm9k ZTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19QUlVfUkVN T1RFUFJPQykKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gK3N0cnVjdCBycHJvYyAqcHJ1X3Jwcm9j X2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBpbnQgaW5kZXgsCj4+Pj4+Pj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSBwcnVzc19wcnVfaWQgKnBydV9pZCk7Cj4+Pj4+Pj4+ Pj4gK3ZvaWQgcHJ1X3Jwcm9jX3B1dChzdHJ1Y3QgcnByb2MgKnJwcm9jKTsKPj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+Pj4gKyNlbHNlCj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICtzdGF0aWMgaW5saW5l IHN0cnVjdCBycHJvYyAqCj4+Pj4+Pj4+Pj4gK3BydV9ycHJvY19nZXQoc3RydWN0IGRldmljZV9u b2RlICpucCwgaW50IGluZGV4LCBlbnVtIHBydXNzX3BydV9pZCAqcHJ1X2lkKQo+Pj4+Pj4+Pj4+ ICt7Cj4+Pj4+Pj4+Pj4gKyAgICAgIHJldHVybiBFUlJfUFRSKC1FT1BOT1RTVVBQKTsKPj4+Pj4+ Pj4+PiArfQo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArc3RhdGljIGlubGluZSB2b2lkIHBydV9y cHJvY19wdXQoc3RydWN0IHJwcm9jICpycHJvYykgeyB9Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ ICsjZW5kaWYgLyogQ09ORklHX1BSVV9SRU1PVEVQUk9DICovCj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+ Pj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNfcHJ1X3Jwcm9jKHN0cnVjdCBkZXZpY2UgKmRldikK Pj4+Pj4+Pj4+PiArewo+Pj4+Pj4+Pj4+ICsgICAgICBjb25zdCBjaGFyICpkcnZfbmFtZSA9IGRl dl9kcml2ZXJfc3RyaW5nKGRldik7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsgICAgICBpZiAo c3RybmNtcChkcnZfbmFtZSwgUFJVX1JQUk9DX0RSVk5BTUUsIHNpemVvZihQUlVfUlBST0NfRFJW TkFNRSkpKQo+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4+Pj4+Pj4+ PiArCj4+Pj4+Pj4+Pj4gKyAgICAgIHJldHVybiB0cnVlOwo+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+ Pj4gKwo+Pj4+Pj4+Pj4+ICsjZW5kaWYgLyogX19MSU5VWF9QUlVTU19IICovCj4+Pj4+Pj4+Pj4g LS0KPj4+Pj4+Pj4+PiAyLjE3LjEKPj4+Pj4+Pj4+Pgo+Pj4+Cj4+PgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=