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 3BD99C7EE21 for ; Thu, 4 May 2023 13:08:48 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=E0MNUVQbc5KHuMuAL9yLCEWp0Bxbu1NnRWM60sORZiw=; b=JwtoZvA9bA20Tx XeTOAogbDqZZatyRta3+9Z35N3GKwxSBaF0HZMEsrhAR520Kgequ8XnakZbVi4YB/cDkgAQhlw8dn opqoGA+SQKJL/GAIwVW0cGK2ALkyQTh+pYHYR/1j00bhSusZOHueSMka8fD5bQGVLh5fDy0wVH/rV bSKvxR0G5dDAjlyV+jvDffRl+MuI9BVorcgIJw/Iooo2WMI6LP8T1/K8cSMbcThRac6SeIbwL7WDp OFW3/JH4mwTto1eCjar3cI2PBgLfAYHWP9x5K1BVFJbtKugpeJMH6DRq+8eRemDZakmlJ6h7J2C/d 4/fllhVfADO8aICv4xSg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1puYgJ-007w66-2R; Thu, 04 May 2023 13:07:35 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1puYgD-007w3x-12; Thu, 04 May 2023 13:07:34 +0000 Received: from nicolas-tpx395.localdomain (unknown [IPv6:2606:6d00:15:199e::580]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 904E266056D6; Thu, 4 May 2023 14:07:22 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1683205644; bh=EvEJNZhOepHq7DyGkOLiqGKBZeQCoCVFoN0vmNiuEO4=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=mTFvlTrq2oIBa0yVg1rIybhVAAfloANBk+vrtfPct7/Yy8/XvaF2rjl9cQIyEPLcQ nUd5GPSLrmZ/N7Wd+JWARKJe2u58M7kKwWr4kZmhIPgA6UZqX3erNBZJmShzxm63du pW/dsdQwor8pc5i/hf2kBS6nn1VtL71vXd8RfZhgnrminB/EomHoVnSfbwcEhrJ3D1 sOGSluC3s5RLTwP30tCpHy4cZK1SNv1G3GoMSIRzwHlYsKwz8mGMs288zpArORr8GM ZnFIJf/I1cyj4eTIotSGTjhvx/snBrNFv561/gCAC1KR49wKa2rdbGDP2Ig//U5PDc m9fEVw2uJQSXA== Message-ID: Subject: Re: [PATCH v2] media: mediatek: vcodec: support stateless hevc decoder From: Nicolas Dufresne To: Yunfei Dong =?UTF-8?Q?=28=E8=91=A3=E4=BA=91=E9=A3=9E=29?= , "wenst@chromium.org" , "nfraprado@collabora.com" , "benjamin.gaignard@collabora.com" , "angelogioacchino.delregno@collabora.com" , "hverkuil-cisco@xs4all.nl" Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "frkoenig@chromium.org" , "stevecho@chromium.org" , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , "daniel@ffwll.ch" , Project_Global_Chrome_Upstream_Group , "hsinyi@chromium.org" , "linux-arm-kernel@lists.infradead.org" , "matthias.bgg@gmail.com" Date: Thu, 04 May 2023 09:07:13 -0400 In-Reply-To: <2628ff2c9cd09b00fbc76610120c29aeec4f45f4.camel@mediatek.com> References: <20230428082329.28606-1-yunfei.dong@mediatek.com> <66a762390a84ed06fbbf8bd62578d8713deae601.camel@collabora.com> <2628ff2c9cd09b00fbc76610120c29aeec4f45f4.camel@mediatek.com> User-Agent: Evolution 3.48.1 (3.48.1-1.fc38) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230504_060729_831907_2C4D0AC3 X-CRM114-Status: GOOD ( 40.50 ) 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: , 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 TGUgamV1ZGkgMDQgbWFpIDIwMjMgw6AgMDc6NDIgKzAwMDAsIFl1bmZlaSBEb25nICjokaPkupHp o54pIGEgw6ljcml0wqA6Cj4gSGkgTmljb2xhcywKPiAKPiBUaGFua3MgZm9yIHlvdXIgc3VnZ2Vz dGlvbi4KPiBPbiBGcmksIDIwMjMtMDQtMjggYXQgMTA6MTUgLTA0MDAsIE5pY29sYXMgRHVmcmVz bmUgd3JvdGU6Cj4gPiBFeHRlcm5hbCBlbWFpbCA6IFBsZWFzZSBkbyBub3QgY2xpY2sgbGlua3Mg b3Igb3BlbiBhdHRhY2htZW50cyB1bnRpbAo+ID4geW91IGhhdmUgdmVyaWZpZWQgdGhlIHNlbmRl ciBvciB0aGUgY29udGVudC4KPiA+IAo+ID4gCj4gPiBIaSBZdW5mZWksCj4gPiAKPiA+IExlIHZl bmRyZWRpIDI4IGF2cmlsIDIwMjMgw6AgMTY6MjMgKzA4MDAsIFl1bmZlaSBEb25nIGEgw6ljcml0 IDoKPiA+ID4gQWRkIG1lZGlhdGVrIGhldmMgZGVjb2RlciBsaW51eCBkcml2ZXIgd2hpY2ggdXNl IHRoZSBzdGF0ZWxlc3MgQVBJCj4gPiA+IGluIE1UODE5NS4KPiA+ID4gCj4gPiA+IFNpZ25lZC1v ZmYtYnk6IFl1bmZlaSBEb25nIDx5dW5mZWkuZG9uZ0BtZWRpYXRlay5jb20+Cj4gPiAKPiA+IEkg aGF2ZSByZXByb2R1Y2VkIHRoZXNlIHJlc3VsdHMgb24gRGViaWFuIHdpdGggYSBHU3RyZWFtZXIg bWFpbi4KPiA+IFRob3VnaCwgeW91Cj4gPiBmb3Jnb3QgdG8gbWVudGlvbiB5b3VyIGRlcGVuZGVu Y3kuIFdvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIG1ha2UgYSB2Mwo+ID4gYW5kIHNpbXBseQo+ID4g aW5jbHVkZXMgQmVuamFtaW4ncyBwYXRjaCBpbiB5b3VyIHNlcmllcywgaXQgd2lsbCBtYWtlIHRo aXMgbXVjaAo+ID4gc2ltcGxlciBmb3IKPiA+IGV2ZXJ5b25lLCBhbmQgd2lsbCBmaXggdGhlIGJ1 aWxkIGlzc3VlcyBvZiBjb3Vyc2UuIERvbid0IGZvcmdldCB0bwo+ID4gYXBwbHkgbXkgUi1iCj4g PiBmb3IgdGhhdCBwYXRjaC4KPiA+IAo+ID4gVGVzdGVkLWJ5OiBOaWNvbGFzIER1ZnJlc25lIDxu aWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+Cj4gPiAKPiA+IERlcDoKPiA+IG1lZGlhOiB1 YXBpOiBIRVZDOiBBZGQgbnVtX2RlbHRhX3BvY3Nfb2ZfcmVmX3Jwc19pZHggZmllbGQKPiA+IAo+ IGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczovL3BhdGNod29yay5saW51eHR2Lm9y Zy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvP3Nlcmllcz0xMDMzMF9fOyEhQ1RSTktBOXdNZzBB UmJ3IWtIY2F4REJXMExLOXUwZDZ6bFluVzhGdVF5aGppcHV3SllKQlpfOVBrLVB3RlVwZ3pyX3Zs RVhFSVlPTGJtY3haT3NwMTE5V1VjbkZxZUd2Qmx6SVp1MFNjc2FUME84MFNnJAo+ID4gCj4gCj4g V2hldGhlciB5b3UgbWVhbiB0aGF0IHRoZSBwYXRjaCBtZXNzYWdlIGFzIGJlbG93Pwo+IAo+IG1l ZGlhOiBtZWRpYXRlazogdmNvZGVjOiBzdXBwb3J0IHN0YXRlbGVzcyBoZXZjIGRlY29kZXIKPiAK PiBBZGQgbWVkaWF0ZWsgaGV2YyBkZWNvZGVyIGxpbnV4IGRyaXZlciB3aGljaCB1c2UgdGhlIHN0 YXRlbGVzcyBBUEkgaW4KPiBNVDgxOTUuCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVuZmVpIERvbmcg PHl1bmZlaS5kb25nQG1lZGlhdGVrLmNvbT4KPiBUZXN0ZWQtYnk6IE5pY29sYXMgRHVmcmVzbmUg PG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KClllcy4KCj4gLS0tCj4gQ2hhbmdlZCBm cm9tIHYyOgo+IC0gZml4IG9uZSBidWlsZCB3YXJuaW5nLgo+IC0gYWRkIHRoZSBkZXBlbmRlbmN5 IHBhdGNoLgo+IAo+IENoYW5nZWQgZnJvbSB2MToKPiAtIGZpeCBidWlsZCBlcnJvciB3aGVuIGJ1 aWxkIDMyYml0IHN5c3RlbS4KPiAtIGhldmMgZmx1c3RlciB0ZXN0IHJlc3VsdDogMTMyLzE0NyAo bm90IHN1cHBvcnQ6IDEwYml0ID0+IDExIGFuZAo+IHJlc29sdXRpb24gPT4gNCkuCj4gLS0tCj4g RGVwZW5kcyBvbiBwYXRjaDoKPiBbMV06IG1lZGlhOiB1YXBpOiBIRVZDOiBBZGQgbnVtX2RlbHRh X3BvY3Nfb2ZfcmVmX3Jwc19pZHggZmllbGQuCgpZb3Ugd29uJ3QgbmVlZCB0aGF0IGxpbmUsIGFz IHRoZSBwYXRjaCB3aWxsIGJlIHBhcnQgb2YgYSAyIHBhdGNoIHNpbmdsZSBzZXJpZQpub3cuCgo+ ICAgICAgCj4gaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vcGF0Y2h3b3JrLmxp bnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8/c2VyaWVzPTEwMzMwX187ISFDVFJO S0E5d01nMEFSYncha0hjYXhEQlcwTEs5dTBkNnpsWW5XOEZ1UXloamlwdXdKWUpCWl85UGstUHdG VXBnenJfdmxFWEVJWU9MYm1jeFpPc3AxMTlXVWNuRnFlR3ZCbHpJWnUwU2NzYVQwTzgwU2ckCj4g PiAKPiAKPiA+IHJlZ2FyZHMsCj4gPiBOaWNvbGFzCj4gPiAKPiBCZXN0IFJlZ2FyZHMsCj4gWXVu ZmVpIERvbmcKPiA+ID4gLS0tCj4gPiA+IENoYW5nZWQgZnJvbSB2MToKPiA+ID4gLSBmaXggYnVp bGQgZXJyb3Igd2hlbiBidWlsZCAzMmJpdCBzeXN0ZW0uCj4gPiA+IC0gaGV2YyBmbHVzdGVyIHRl c3QgcmVzdWx0OiAxMzIvMTQ3IChub3Qgc3VwcG9ydDogMTBiaXQgPT4gMTEgYW5kCj4gPiA+IHJl c29sdXRpb24gPT4gNCkuCj4gPiA+IC0tLQo+ID4gPiBSZWZlcmVuY2Ugc2VyaWVzOgo+ID4gPiBb MV06IHRoaXMgcGF0Y2ggaXMgc2VuZCBieSBCZW5qYW1pbiBHYWlnbmFyZC4KPiA+ID4gICAgICBt ZXNzYWdlLWlkOiAKPiA+ID4gMjAyMzA0MTgxNjA3MTcuNzQzNTE3LTEtYmVuamFtaW4uZ2FpZ25h cmRAY29sbGFib3JhLmNvbQo+ID4gPiAKPiA+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRl ay92Y29kZWMvTWFrZWZpbGUgICB8ICAgIDEgKwo+ID4gPiAgLi4uL3Zjb2RlYy9tdGtfdmNvZGVj X2RlY19zdGF0ZWxlc3MuYyAgICAgICAgIHwgICA1OSArLQo+ID4gPiAgLi4uL3BsYXRmb3JtL21l ZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2Rydi5oIHwgICAgMSArCj4gPiA+ICAuLi4vdmNvZGVj L3ZkZWMvdmRlY19oZXZjX3JlcV9tdWx0aV9pZi5jICAgICAgfCAxMTAxCj4gPiA+ICsrKysrKysr KysrKysrKysrCj4gPiA+ICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lm LmMgICAgfCAgICA0ICsKPiA+ID4gIC4uLi9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19k cnZfaWYuaCAgICB8ICAgIDEgKwo+ID4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMTY2IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NAo+ID4gPiBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjL3ZkZWNfaGV2Y19yZXFfbXVs dGlfaWYuCj4gPiA+IGMKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9NYWtlZmlsZQo+ID4gPiBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbWVkaWF0ZWsvdmNvZGVjL01ha2VmaWxlCj4gPiA+IGluZGV4IDkzZTdhMzQzYjViMC4u ZDI0YjQ1MmQwZmIzIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21l ZGlhdGVrL3Zjb2RlYy9NYWtlZmlsZQo+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L21lZGlhdGVrL3Zjb2RlYy9NYWtlZmlsZQo+ID4gPiBAQCAtMTMsNiArMTMsNyBAQCBtdGstdmNv ZGVjLWRlYy15IDo9IHZkZWMvdmRlY19oMjY0X2lmLm8gXAo+ID4gPiAgICAgICAgICAgICAgIHZk ZWMvdmRlY19oMjY0X3JlcV9pZi5vIFwKPiA+ID4gICAgICAgICAgICAgICB2ZGVjL3ZkZWNfaDI2 NF9yZXFfY29tbW9uLm8gXAo+ID4gPiAgICAgICAgICAgICAgIHZkZWMvdmRlY19oMjY0X3JlcV9t dWx0aV9pZi5vIFwKPiA+ID4gKyAgICAgICAgICAgICB2ZGVjL3ZkZWNfaGV2Y19yZXFfbXVsdGlf aWYubyBcCj4gPiA+ICAgICAgICAgICAgICAgbXRrX3Zjb2RlY19kZWNfZHJ2Lm8gXAo+ID4gPiAg ICAgICAgICAgICAgIHZkZWNfZHJ2X2lmLm8gXAo+ID4gPiAgICAgICAgICAgICAgIHZkZWNfdnB1 X2lmLm8gXAo+ID4gPiBkaWZmIC0tZ2l0Cj4gPiA+IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t ZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfc3RhdGVsZXNzLmMKPiA+ID4gYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19zdGF0ZWxlc3Mu Ywo+ID4gPiBpbmRleCAzMDAwZGI5NzVlNWYuLjk5NTk5N2Y3MDJhMCAxMDA2NDQKPiA+ID4gLS0t Cj4gPiA+IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2Rl Y19kZWNfc3RhdGVsZXNzLmMKPiA+ID4gKysrCj4gPiA+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfc3RhdGVsZXNzLmMKPiA+ID4gQEAgLTEw NywxMSArMTA3LDYzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3N0YXRlbGVzc19jb250cm9s Cj4gPiA+IG10a19zdGF0ZWxlc3NfY29udHJvbHNbXSA9IHsKPiA+ID4gICAgICAgICAgICAgICB9 LAo+ID4gPiAgICAgICAgICAgICAgIC5jb2RlY190eXBlID0gVjRMMl9QSVhfRk1UX1ZQOV9GUkFN RSwKPiA+ID4gICAgICAgfSwKPiA+ID4gKyAgICAgewo+ID4gPiArICAgICAgICAgICAgIC5jZmcg PSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuaWQgPSBWNEwyX0NJRF9TVEFURUxFU1Nf SEVWQ19TUFMsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4gKyAgICAgICAgICAgICAuY29k ZWNfdHlwZSA9IFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFLAo+ID4gPiArICAgICB9LAo+ID4gPiAr ICAgICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmNmZyA9IHsKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIC5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1BQUywKPiA+ID4gKyAgICAgICAg ICAgICB9LAo+ID4gPiArICAgICAgICAgICAgIC5jb2RlY190eXBlID0gVjRMMl9QSVhfRk1UX0hF VkNfU0xJQ0UsCj4gPiA+ICsgICAgIH0sCj4gPiA+ICsgICAgIHsKPiA+ID4gKyAgICAgICAgICAg ICAuY2ZnID0gewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmlkID0gVjRMMl9DSURfU1RB VEVMRVNTX0hFVkNfU0NBTElOR19NQVRSSVgsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4g KyAgICAgICAgICAgICAuY29kZWNfdHlwZSA9IFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFLAo+ID4g PiArICAgICB9LAo+ID4gPiArICAgICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmNmZyA9IHsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIC5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX0RF Q09ERV9QQVJBTVMsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4gKyAgICAgICAgICAgICAu Y29kZWNfdHlwZSA9IFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFLAo+ID4gPiArICAgICB9LAo+ID4g PiArICAgICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmNmZyA9IHsKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgIC5pZCA9IFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19QUk9GSUxFLAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgLmRlZiA9IFY0TDJfTVBFR19WSURFT19IRVZDX1BST0ZJTEVf TUFJTiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5tYXggPSBWNEwyX01QRUdfVklERU9f SEVWQ19QUk9GSUxFX01BSU5fMTAsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAubWVudV9z a2lwX21hc2sgPQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoVjRMMl9N UEVHX1ZJREVPX0hFVkNfUFJPRklMRV9NQUlOCj4gPiA+IF9TVElMTF9QSUNUVVJFKSwKPiA+ID4g KyAgICAgICAgICAgICB9LAo+ID4gPiArICAgICAgICAgICAgIC5jb2RlY190eXBlID0gVjRMMl9Q SVhfRk1UX0hFVkNfU0xJQ0UsCj4gPiA+ICsgICAgIH0sCj4gPiA+ICsgICAgIHsKPiA+ID4gKyAg ICAgICAgICAgICAuY2ZnID0gewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmlkID0gVjRM Ml9DSURfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01PREUsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAubWluID0KPiA+ID4gVjRMMl9TVEFURUxFU1NfSEVWQ19ERUNPREVfTU9ERV9GUkFNRV9C QVNFRCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5kZWYgPQo+ID4gPiBWNEwyX1NUQVRF TEVTU19IRVZDX0RFQ09ERV9NT0RFX0ZSQU1FX0JBU0VELAo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgLm1heCA9Cj4gPiA+IFY0TDJfU1RBVEVMRVNTX0hFVkNfREVDT0RFX01PREVfRlJBTUVf QkFTRUQsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4gKyAgICAgICAgICAgICAuY29kZWNf dHlwZSA9IFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFLAo+ID4gPiArICAgICB9LAo+ID4gPiArICAg ICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmNmZyA9IHsKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIC5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NUQVJUX0NPREUsCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAubWluID0KPiA+ID4gVjRMMl9TVEFURUxFU1NfSEVWQ19TVEFSVF9D T0RFX0FOTkVYX0IsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuZGVmID0KPiA+ID4gVjRM Ml9TVEFURUxFU1NfSEVWQ19TVEFSVF9DT0RFX0FOTkVYX0IsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAubWF4ID0KPiA+ID4gVjRMMl9TVEFURUxFU1NfSEVWQ19TVEFSVF9DT0RFX0FOTkVY X0IsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4gKyAgICAgICAgICAgICAuY29kZWNfdHlw ZSA9IFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFLAo+ID4gPiArICAgICB9LAo+ID4gPiAgfTsKPiA+ ID4gCj4gPiA+ICAjZGVmaW5lIE5VTV9DVFJMUyBBUlJBWV9TSVpFKG10a19zdGF0ZWxlc3NfY29u dHJvbHMpCj4gPiA+IAo+ID4gPiAtc3RhdGljIHN0cnVjdCBtdGtfdmlkZW9fZm10IG10a192aWRl b19mb3JtYXRzWzVdOwo+ID4gPiArc3RhdGljIHN0cnVjdCBtdGtfdmlkZW9fZm10IG10a192aWRl b19mb3JtYXRzWzZdOwo+ID4gPiAKPiA+ID4gIHN0YXRpYyBzdHJ1Y3QgbXRrX3ZpZGVvX2ZtdCBk ZWZhdWx0X291dF9mb3JtYXQ7Cj4gPiA+ICBzdGF0aWMgc3RydWN0IG10a192aWRlb19mbXQgZGVm YXVsdF9jYXBfZm9ybWF0Owo+ID4gPiBAQCAtMzU2LDYgKzQwOCw3IEBAIHN0YXRpYyB2b2lkIG10 a192Y29kZWNfYWRkX2Zvcm1hdHModW5zaWduZWQgaW50Cj4gPiA+IGZvdXJjYywKPiA+ID4gICAg ICAgY2FzZSBWNEwyX1BJWF9GTVRfSDI2NF9TTElDRToKPiA+ID4gICAgICAgY2FzZSBWNEwyX1BJ WF9GTVRfVlA4X0ZSQU1FOgo+ID4gPiAgICAgICBjYXNlIFY0TDJfUElYX0ZNVF9WUDlfRlJBTUU6 Cj4gPiA+ICsgICAgIGNhc2UgVjRMMl9QSVhfRk1UX0hFVkNfU0xJQ0U6Cj4gPiA+ICAgICAgICAg ICAgICAgbXRrX3ZpZGVvX2Zvcm1hdHNbY291bnRfZm9ybWF0c10uZm91cmNjID0gZm91cmNjOwo+ ID4gPiAgICAgICAgICAgICAgIG10a192aWRlb19mb3JtYXRzW2NvdW50X2Zvcm1hdHNdLnR5cGUg PSBNVEtfRk1UX0RFQzsKPiA+ID4gICAgICAgICAgICAgICBtdGtfdmlkZW9fZm9ybWF0c1tjb3Vu dF9mb3JtYXRzXS5udW1fcGxhbmVzID0gMTsKPiA+ID4gQEAgLTQxMiw2ICs0NjUsMTAgQEAgc3Rh dGljIHZvaWQKPiA+ID4gbXRrX3Zjb2RlY19nZXRfc3VwcG9ydGVkX2Zvcm1hdHMoc3RydWN0IG10 a192Y29kZWNfY3R4ICpjdHgpCj4gPiA+ICAgICAgICAgICAgICAgbXRrX3Zjb2RlY19hZGRfZm9y bWF0cyhWNEwyX1BJWF9GTVRfVlA5X0ZSQU1FLCBjdHgpOwo+ID4gPiAgICAgICAgICAgICAgIG91 dF9mb3JtYXRfY291bnQrKzsKPiA+ID4gICAgICAgfQo+ID4gPiArICAgICBpZiAoY3R4LT5kZXYt PmRlY19jYXBhYmlsaXR5ICYgTVRLX1ZERUNfRk9STUFUX0hFVkNfRlJBTUUpIHsKPiA+ID4gKyAg ICAgICAgICAgICBtdGtfdmNvZGVjX2FkZF9mb3JtYXRzKFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNF LCBjdHgpOwo+ID4gPiArICAgICAgICAgICAgIG91dF9mb3JtYXRfY291bnQrKzsKPiA+ID4gKyAg ICAgfQo+ID4gPiAKPiA+ID4gICAgICAgaWYgKGNhcF9mb3JtYXRfY291bnQpCj4gPiA+ICAgICAg ICAgICAgICAgZGVmYXVsdF9jYXBfZm9ybWF0ID0KPiA+ID4gbXRrX3ZpZGVvX2Zvcm1hdHNbY2Fw X2Zvcm1hdF9jb3VudCAtIDFdOwo+ID4gPiBkaWZmIC0tZ2l0Cj4gPiA+IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kcnYuaAo+ID4gPiBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNfZHJ2LmgKPiA+ID4g aW5kZXggOWFjYWI1NGZkNjUwLi4xNDQyNTJmYThiZWEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNfZHJ2LmgKPiA+ID4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19k cnYuaAo+ID4gPiBAQCAtMzQ3LDYgKzM0Nyw3IEBAIGVudW0gbXRrX3ZkZWNfZm9ybWF0X3R5cGVz IHsKPiA+ID4gICAgICAgTVRLX1ZERUNfRk9STUFUX0gyNjRfU0xJQ0UgPSAweDEwMCwKPiA+ID4g ICAgICAgTVRLX1ZERUNfRk9STUFUX1ZQOF9GUkFNRSA9IDB4MjAwLAo+ID4gPiAgICAgICBNVEtf VkRFQ19GT1JNQVRfVlA5X0ZSQU1FID0gMHg0MDAsCj4gPiA+ICsgICAgIE1US19WREVDX0ZPUk1B VF9IRVZDX0ZSQU1FID0gMHgxMDAwLAo+ID4gPiAgICAgICBNVEtfVkNPREVDX0lOTkVSX1JBQ0lO RyA9IDB4MjAwMDAsCj4gPiA+ICB9Owo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdAo+ID4gPiBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWMvdmRlY19oZXZjX3JlcV9t dWx0aV9pCj4gPiA+IGYuYwo+ID4gPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsv dmNvZGVjL3ZkZWMvdmRlY19oZXZjX3JlcV9tdWx0aV9pCj4gPiA+IGYuYwo+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjgzMTk0MmMyZTU2NQo+ID4g PiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKwo+ID4gPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bWVkaWF0ZWsvdmNvZGVjL3ZkZWMvdmRlY19oZXZjX3JlcV9tdWx0aV9pCj4gPiA+IGYuYwo+ID4g PiBAQCAtMCwwICsxLDExMDEgQEAKPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wCj4gPiA+ICsvKgo+ID4gPiArICogQ29weXJpZ2h0IChjKSAyMDIzIE1lZGlhVGVrIElu Yy4KPiA+ID4gKyAqIEF1dGhvcjogWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlhdGVrLmNv bT4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4g PiA+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4gPiArI2luY2x1ZGUgPG1lZGlhL3ZpZGVv YnVmMi1kbWEtY29udGlnLmg+Cj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlICIuLi9tdGtfdmNvZGVj X3V0aWwuaCIKPiA+ID4gKyNpbmNsdWRlICIuLi9tdGtfdmNvZGVjX2RlYy5oIgo+ID4gPiArI2lu Y2x1ZGUgIi4uL210a192Y29kZWNfaW50ci5oIgo+ID4gPiArI2luY2x1ZGUgIi4uL3ZkZWNfZHJ2 X2Jhc2UuaCIKPiA+ID4gKyNpbmNsdWRlICIuLi92ZGVjX2Rydl9pZi5oIgo+ID4gPiArI2luY2x1 ZGUgIi4uL3ZkZWNfdnB1X2lmLmgiCj4gPiA+ICsKPiA+ID4gKy8qIHRoZSBzaXplIHVzZWQgdG8g c3RvcmUgaGV2YyB3cmFwIGluZm9ybWF0aW9uICovCj4gPiA+ICsjZGVmaW5lIFZERUNfSEVWQ19X UkFQX1NaICg1MzIgKiBTWl8xSykKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBIRVZDX01BWF9NVl9O VU0gMzIKPiA+ID4gKwo+ID4gPiArLyogZ2V0IHVzZWQgcGFyYW1ldGVycyBmb3Igc3BzL3BwcyAq Lwo+ID4gPiArI2RlZmluZSBHRVRfSEVWQ19WREVDX0ZMQUcoY29uZCwgZmxhZykgXAo+ID4gPiAr ICAgICB7IGRzdF9wYXJhbS0+Y29uZCA9ICgoc3JjX3BhcmFtLT5mbGFncyAmIGZsYWcpID8gKDEp IDogKDApKTsKPiA+ID4gfQo+ID4gPiArI2RlZmluZSBHRVRfSEVWQ19WREVDX1BBUkFNKHBhcmFt KSBcCj4gPiA+ICsgICAgIHsgZHN0X3BhcmFtLT5wYXJhbSA9IHNyY19wYXJhbS0+cGFyYW07IH0K PiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBlbnVtIHZkZWNfaGV2Y19jb3JlX2RlY19lcnJf dHlwZSAgLSBjb3JlIGRlY29kZSBlcnJvciB0eXBlCj4gPiA+ICsgKgo+ID4gPiArICogQFRSQU5T X0JVRkZFUl9GVUxMOiB0cmFucyBidWZmZXIgaXMgZnVsbAo+ID4gPiArICogQFNMSUNFX0hFQURF Ul9GVUxMOiBzbGljZSBoZWFkZXIgYnVmZmVyIGlzIGZ1bGwKPiA+ID4gKyAqLwo+ID4gPiArZW51 bSB2ZGVjX2hldmNfY29yZV9kZWNfZXJyX3R5cGUgewo+ID4gPiArICAgICBUUkFOU19CVUZGRVJf RlVMTCA9IDEsCj4gPiA+ICsgICAgIFNMSUNFX0hFQURFUl9GVUxMLAo+ID4gPiArfTsKPiA+ID4g Kwo+ID4gPiArLyoqCj4gPiA+ICsgKiBzdHJ1Y3QgbXRrX2hldmNfZHBiX2luZm8gIC0gaGV2YyBk cGIgaW5mb3JtYXRpb24KPiA+ID4gKyAqCj4gPiA+ICsgKiBAeV9kbWFfYWRkcjogICAgIFkgcGxh bmUgcGh5c2ljYWwgYWRkcmVzcwo+ID4gPiArICogQGNfZG1hX2FkZHI6ICAgICBDYkNyIHBsYW5l IHBoeXNpY2FsIGFkZHJlc3MKPiA+ID4gKyAqIEByZWZlcmVuY2VfZmxhZzogcmVmZXJlbmNlIHBp Y3R1cmUgZmxhZyAoc2hvcnQvbG9uZyB0ZXJtCj4gPiA+IHJlZmVyZW5jZSBwaWN0dXJlKQo+ID4g PiArICogQGZpZWxkOiAgICAgICAgICBmaWVsZCBwaWN0dXJlIGZsYWcKPiA+ID4gKyAqLwo+ID4g PiArc3RydWN0IG10a19oZXZjX2RwYl9pbmZvIHsKPiA+ID4gKyAgICAgZG1hX2FkZHJfdCB5X2Rt YV9hZGRyOwo+ID4gPiArICAgICBkbWFfYWRkcl90IGNfZG1hX2FkZHI7Cj4gPiA+ICsgICAgIGlu dCByZWZlcmVuY2VfZmxhZzsKPiA+ID4gKyAgICAgaW50IGZpZWxkOwo+ID4gPiArfTsKPiA+ID4g Kwo+ID4gPiArLyoKPiA+ID4gKyAqIHN0cnVjdCBtdGtfaGV2Y19zcHNfcGFyYW0gIC0gcGFyYW1l dGVycyBmb3Igc3BzCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBtdGtfaGV2Y19zcHNfcGFyYW0g ewo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIHZpZGVvX3BhcmFtZXRlcl9zZXRfaWQ7Cj4gPiA+ ICsgICAgIHVuc2lnbmVkIGNoYXIgc2VxX3BhcmFtZXRlcl9zZXRfaWQ7Cj4gPiA+ICsgICAgIHVu c2lnbmVkIHNob3J0IHBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXM7Cj4gPiA+ICsgICAgIHVuc2ln bmVkIHNob3J0IHBpY19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzOwo+ID4gPiArICAgICB1bnNpZ25l ZCBjaGFyIGJpdF9kZXB0aF9sdW1hX21pbnVzODsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBi aXRfZGVwdGhfY2hyb21hX21pbnVzODsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBsb2cyX21h eF9waWNfb3JkZXJfY250X2xzYl9taW51czQ7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgc3Bz X21heF9kZWNfcGljX2J1ZmZlcmluZ19taW51czE7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIg c3BzX21heF9udW1fcmVvcmRlcl9waWNzOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIHNwc19t YXhfbGF0ZW5jeV9pbmNyZWFzZV9wbHVzMTsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBsb2cy X21pbl9sdW1hX2NvZGluZ19ibG9ja19zaXplX21pbnVzMzsKPiA+ID4gKyAgICAgdW5zaWduZWQg Y2hhciBsb2cyX2RpZmZfbWF4X21pbl9sdW1hX2NvZGluZ19ibG9ja19zaXplOwo+ID4gPiArICAg ICB1bnNpZ25lZCBjaGFyIGxvZzJfbWluX2x1bWFfdHJhbnNmb3JtX2Jsb2NrX3NpemVfbWludXMy Owo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIGxvZzJfZGlmZl9tYXhfbWluX2x1bWFfdHJhbnNm b3JtX2Jsb2NrX3NpemU7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbWF4X3RyYW5zZm9ybV9o aWVyYXJjaHlfZGVwdGhfaW50ZXI7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbWF4X3RyYW5z Zm9ybV9oaWVyYXJjaHlfZGVwdGhfaW50cmE7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgcGNt X3NhbXBsZV9iaXRfZGVwdGhfbHVtYV9taW51czE7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIg cGNtX3NhbXBsZV9iaXRfZGVwdGhfY2hyb21hX21pbnVzMTsKPiA+ID4gKyAgICAgdW5zaWduZWQg Y2hhciBsb2cyX21pbl9wY21fbHVtYV9jb2RpbmdfYmxvY2tfc2l6ZV9taW51czM7Cj4gPiA+ICsg ICAgIHVuc2lnbmVkIGNoYXIgbG9nMl9kaWZmX21heF9taW5fcGNtX2x1bWFfY29kaW5nX2Jsb2Nr X3NpemU7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbnVtX3Nob3J0X3Rlcm1fcmVmX3BpY19z ZXRzOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIG51bV9sb25nX3Rlcm1fcmVmX3BpY3Nfc3Bz Owo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIGNocm9tYV9mb3JtYXRfaWRjOwo+ID4gPiArICAg ICB1bnNpZ25lZCBjaGFyIHNwc19tYXhfc3ViX2xheWVyc19taW51czE7Cj4gPiA+ICsgICAgIHVu c2lnbmVkIGNoYXIgc2VwYXJhdGVfY29sb3VyX3BsYW5lOwo+ID4gPiArICAgICB1bnNpZ25lZCBj aGFyIHNjYWxpbmdfbGlzdF9lbmFibGVkOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIGFtcF9l bmFibGVkOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIHNhbXBsZV9hZGFwdGl2ZV9vZmZzZXQ7 Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgcGNtX2VuYWJsZWQ7Cj4gPiA+ICsgICAgIHVuc2ln bmVkIGNoYXIgcGNtX2xvb3BfZmlsdGVyX2Rpc2FibGVkOwo+ID4gPiArICAgICB1bnNpZ25lZCBj aGFyIGxvbmdfdGVybV9yZWZfcGljc19lbmFibGVkOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFy IHNwc190ZW1wb3JhbF9tdnBfZW5hYmxlZDsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBzdHJv bmdfaW50cmFfc21vb3RoaW5nX2VuYWJsZWQ7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgcmVz ZXJ2ZWRbNV07Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICogc3RydWN0IG10 a19oZXZjX3Bwc19wYXJhbSAgLSBwYXJhbWV0ZXJzIGZvciBwcHMKPiA+ID4gKyAqLwo+ID4gPiAr c3RydWN0IG10a19oZXZjX3Bwc19wYXJhbSB7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgcGlj X3BhcmFtZXRlcl9zZXRfaWQ7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbnVtX2V4dHJhX3Ns aWNlX2hlYWRlcl9iaXRzOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIG51bV9yZWZfaWR4X2ww X2RlZmF1bHRfYWN0aXZlX21pbnVzMTsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBudW1fcmVm X2lkeF9sMV9kZWZhdWx0X2FjdGl2ZV9taW51czE7Cj4gPiA+ICsgICAgIGNoYXIgaW5pdF9xcF9t aW51czI2Owo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIGRpZmZfY3VfcXBfZGVsdGFfZGVwdGg7 Cj4gPiA+ICsgICAgIGNoYXIgcHBzX2NiX3FwX29mZnNldDsKPiA+ID4gKyAgICAgY2hhciBwcHNf Y3JfcXBfb2Zmc2V0Owo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIG51bV90aWxlX2NvbHVtbnNf bWludXMxOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIG51bV90aWxlX3Jvd3NfbWludXMxOwo+ ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbl93aWR0aF9taW51czFbMjBdOwo+ID4gPiAr ICAgICB1bnNpZ25lZCBjaGFyIHJvd19oZWlnaHRfbWludXMxWzIyXTsKPiA+ID4gKyAgICAgY2hh ciBwcHNfYmV0YV9vZmZzZXRfZGl2MjsKPiA+ID4gKyAgICAgY2hhciBwcHNfdGNfb2Zmc2V0X2Rp djI7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbG9nMl9wYXJhbGxlbF9tZXJnZV9sZXZlbF9t aW51czI7Cj4gPiA+ICsgICAgIGNoYXIgZGVwZW5kZW50X3NsaWNlX3NlZ21lbnRfZW5hYmxlZDsK PiA+ID4gKyAgICAgY2hhciBvdXRwdXRfZmxhZ19wcmVzZW50Owo+ID4gPiArICAgICBjaGFyIHNp Z25fZGF0YV9oaWRpbmdfZW5hYmxlZDsKPiA+ID4gKyAgICAgY2hhciBjYWJhY19pbml0X3ByZXNl bnQ7Cj4gPiA+ICsgICAgIGNoYXIgY29uc3RyYWluZWRfaW50cmFfcHJlZDsKPiA+ID4gKyAgICAg Y2hhciB0cmFuc2Zvcm1fc2tpcF9lbmFibGVkOwo+ID4gPiArICAgICBjaGFyIGN1X3FwX2RlbHRh X2VuYWJsZWQ7Cj4gPiA+ICsgICAgIGNoYXIgcHBzX3NsaWNlX2Nocm9tYV9xcF9vZmZzZXRzX3By ZXNlbnQ7Cj4gPiA+ICsgICAgIGNoYXIgd2VpZ2h0ZWRfcHJlZDsKPiA+ID4gKyAgICAgY2hhciB3 ZWlnaHRlZF9iaXByZWQ7Cj4gPiA+ICsgICAgIGNoYXIgdHJhbnNxdWFudF9ieXBhc3NfZW5hYmxl ZDsKPiA+ID4gKyAgICAgY2hhciBwcHNfZmxhZ190aWxlc19lbmFibGVkOwo+ID4gPiArICAgICBj aGFyIGVudHJvcHlfY29kaW5nX3N5bmNfZW5hYmxlZDsKPiA+ID4gKyAgICAgY2hhciBsb29wX2Zp bHRlcl9hY3Jvc3NfdGlsZXNfZW5hYmxlZDsKPiA+ID4gKyAgICAgY2hhciBwcHNfbG9vcF9maWx0 ZXJfYWNyb3NzX3NsaWNlc19lbmFibGVkOwo+ID4gPiArICAgICBjaGFyIGRlYmxvY2tpbmdfZmls dGVyX292ZXJyaWRlX2VuYWJsZWQ7Cj4gPiA+ICsgICAgIGNoYXIgcHBzX2Rpc2FibGVfZGVmbG9j a2luZ19maWx0ZXI7Cj4gPiA+ICsgICAgIGNoYXIgbGlzdHNfbW9kaWZpY2F0aW9uX3ByZXNlbnQ7 Cj4gPiA+ICsgICAgIGNoYXIgc2xpY2Vfc2VnbWVudF9oZWFkZXJfZXh0ZXJzaW9uX3ByZXNlbnQ7 Cj4gPiA+ICsgICAgIGNoYXIgZGVibG9ja2luZ19maWx0ZXJfY29udHJvbF9wcmVzZW50Owo+ID4g PiArICAgICBjaGFyIHVuaWZvcm1fc3BhY2luZzsKPiA+ID4gKyAgICAgY2hhciByZXNlcnZlZFs2 XTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBzdHJ1Y3QgbXRrX2hldmNf c2xpY2VfaGVhZGVyX3BhcmFtICAtIHBhcmFtZXRlcnMgZm9yIHNsaWNlCj4gPiA+IGhlYWRlcgo+ ID4gPiArICovCj4gPiA+ICtzdHJ1Y3QgbXRrX2hldmNfc2xpY2VfaGVhZGVyX3BhcmFtIHsKPiA+ ID4gKyAgICAgdW5zaWduZWQgaW50ICAgIHNsaWNlX3R5cGU7Cj4gPiA+ICsgICAgIHVuc2lnbmVk IGludCAgICBudW1fYWN0aXZlX3JlZl9sYXllcl9waWNzOwo+ID4gPiArICAgICBpbnQgICAgICAg ICAgICAgc2xpY2VfcXA7Cj4gPiA+ICsgICAgIGludCAgICAgICAgICAgICBzbGljZV9xcF9kZWx0 YV9jYjsKPiA+ID4gKyAgICAgaW50ICAgICAgICAgICAgIHNsaWNlX3FwX2RlbHRhX2NyOwo+ID4g PiArICAgICBpbnQgICAgICAgICAgICAgbnVtX3JlZl9pZHhbM107Cj4gPiA+ICsgICAgIHVuc2ln bmVkIGludCAgICBjb2xfcmVmX2lkeDsKPiA+ID4gKyAgICAgdW5zaWduZWQgaW50ICAgIGZpdmVf bWludXNfbWF4X251bV9tZXJnZV9jYW5kOwo+ID4gPiArICAgICBpbnQgICAgICAgICAgICAgc2xp Y2VfZGVibG9ja2luZ19maWx0ZXJfYmV0YV9vZmZzZXRfZGl2MjsKPiA+ID4gKyAgICAgaW50ICAg ICAgICAgICAgIHNsaWNlX2RlYmxvY2tpbmdfZmlsdGVyX3RjX29mZnNldF9kaXYyOwo+ID4gPiAr ICAgICB1bnNpZ25lZCBjaGFyICAgc2FvX2VuYWJsZV9mbGFnOwo+ID4gPiArICAgICB1bnNpZ25l ZCBjaGFyICAgc2FvX2VuYWJsZV9mbGFnX2Nocm9tYTsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hh ciAgIGNhYmFjX2luaXRfZmxhZzsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciAgIHNsaWNlX3Rt dnBfZmxhZ3NfcHJlc2VudDsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciAgIGNvbF9mcm9tX2ww X2ZsYWc7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgICBtdmRfbDFfemVyb19mbGFnOwo+ID4g PiArICAgICB1bnNpZ25lZCBjaGFyICAgc2xpY2VfbG9vcF9maWx0ZXJfYWNyb3NzX3NsaWNlc19l bmFibGVkX2ZsYWc7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgICBkZWJsb2NraW5nX2ZpbHRl cl9kaXNhYmxlX2ZsYWc7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGludCAgICBzbGljZV9yZWcwOwo+ ID4gPiArICAgICB1bnNpZ25lZCBpbnQgICAgc2xpY2VfcmVnMTsKPiA+ID4gKyAgICAgdW5zaWdu ZWQgaW50ICAgIHNsaWNlX3JlZzI7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGludCAgICBudW1fcnBz X2N1cnJfdGVtcF9saXN0Owo+ID4gPiArICAgICB1bnNpZ25lZCBpbnQgICAgcmVmX2xpc3RfbW9k ZTsKPiA+ID4gKyAgICAgaW50ICAgICAgICAgICAgIHN0cl9udW1fZGVsdGFfcG9jczsKPiA+ID4g KyAgICAgaW50ICAgICAgICAgICAgIHN0cl9udW1fbmVndGl2ZV9wb3NfcGljczsKPiA+ID4gKyAg ICAgaW50ICAgICAgICAgICAgIG51bV9sb25nX3Rlcm07Cj4gPiA+ICsgICAgIGludCAgICAgICAg ICAgICBudW1fbG9uZ190ZXJtX3NwczsKPiA+ID4gKyAgICAgdW5zaWduZWQgaW50ICAgIG1heF9j dV93aWR0aDsKPiA+ID4gKyAgICAgdW5zaWduZWQgaW50ICAgIG1heF9jdV9oZWlnaHQ7Cj4gPiA+ ICsgICAgIHVuc2lnbmVkIGludCAgICBudW1fZW50cnlfcG9pbnRfb2Zmc2V0czsKPiA+ID4gKyAg ICAgdW5zaWduZWQgaW50ICAgIGxhc3RfbGN1X3hfaW5fdGlsZVsxN107Cj4gPiA+ICsgICAgIHVu c2lnbmVkIGludCAgICBsYXN0X2xjdV95X2luX3RpbGVbMTddOwo+ID4gPiArICAgICB1bnNpZ25l ZCBjaGFyICAgbmFsX3VuaXRfdHlwZTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ ICsgKiBzdHJ1Y3Qgc2xpY2VfYXBpX2hldmNfc2NhbGluZ19tYXRyaXggIC0gcGFyYW1ldGVycyBm b3Igc2NhbGluZwo+ID4gPiBsaXN0Cj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBzbGljZV9hcGlf aGV2Y19zY2FsaW5nX21hdHJpeCB7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgc2NhbGluZ19s aXN0XzR4NFs2XVsxNl07Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgc2NhbGluZ19saXN0Xzh4 OFs2XVs2NF07Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgc2NhbGluZ19saXN0XzE2eDE2WzZd WzY0XTsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBzY2FsaW5nX2xpc3RfMzJ4MzJbMl1bNjRd Owo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIHNjYWxpbmdfbGlzdF9kY19jb2VmXzE2eDE2WzZd Owo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIHNjYWxpbmdfbGlzdF9kY19jb2VmXzMyeDMyWzJd Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIHN0cnVjdCBzbGljZV9oZXZj X2RwYl9lbnRyeSAgLSBlYWNoIGRwYiBpbmZvcm1hdGlvbgo+ID4gPiArICovCj4gPiA+ICtzdHJ1 Y3Qgc2xpY2VfaGV2Y19kcGJfZW50cnkgewo+ID4gPiArICAgICB1NjQgdGltZXN0YW1wOwo+ID4g PiArICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIGZp ZWxkX3BpYzsKPiA+ID4gKyAgICAgaW50IHBpY19vcmRlcl9jbnRfdmFsOwo+ID4gPiArfTsKPiA+ ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIHN0cnVjdCBzbGljZV9hcGlfaGV2Y19kZWNvZGVfcGFy YW0gLSBwYXJhbWV0ZXJzIGZvciBkZWNvZGUuCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBzbGlj ZV9hcGlfaGV2Y19kZWNvZGVfcGFyYW0gewo+ID4gPiArICAgICBzdHJ1Y3Qgc2xpY2VfaGV2Y19k cGJfZW50cnkKPiA+ID4gZHBiW1Y0TDJfSEVWQ19EUEJfRU5UUklFU19OVU1fTUFYXTsKPiA+ID4g KyAgICAgaW50IHBpY19vcmRlcl9jbnRfdmFsOwo+ID4gPiArICAgICB1bnNpZ25lZCBzaG9ydCBz aG9ydF90ZXJtX3JlZl9waWNfc2V0X3NpemU7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIHNob3J0IGxv bmdfdGVybV9yZWZfcGljX3NldF9zaXplOwo+ID4gPiArICAgICB1bnNpZ25lZCBjaGFyIG51bV9h Y3RpdmVfZHBiX2VudHJpZXM7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbnVtX3BvY19zdF9j dXJyX2JlZm9yZTsKPiA+ID4gKyAgICAgdW5zaWduZWQgY2hhciBudW1fcG9jX3N0X2N1cnJfYWZ0 ZXI7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIgbnVtX3BvY19sdF9jdXJyOwo+ID4gPiArICAg ICB1bnNpZ25lZCBjaGFyCj4gPiA+IHBvY19zdF9jdXJyX2JlZm9yZVtWNEwyX0hFVkNfRFBCX0VO VFJJRVNfTlVNX01BWF07Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGNoYXIKPiA+ID4gcG9jX3N0X2N1 cnJfYWZ0ZXJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ID4gPiArICAgICB1bnNp Z25lZCBjaGFyIHBvY19sdF9jdXJyW1Y0TDJfSEVWQ19EUEJfRU5UUklFU19OVU1fTUFYXTsKPiA+ ID4gKyAgICAgdW5zaWduZWQgY2hhciBudW1fZGVsdGFfcG9jc19vZl9yZWZfcnBzX2lkeDsKPiA+ ID4gKyAgICAgaW50IGZsYWdzOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsg KiBzdHJ1Y3QgaGV2Y19mYiAtIGhldmMgZGVjb2RlIGZyYW1lIGJ1ZmZlciBpbmZvcm1hdGlvbgo+ ID4gPiArICoKPiA+ID4gKyAqIEB2ZGVjX2ZiX3ZhOiB2aXJ0dWFsIGFkZHJlc3Mgb2Ygc3RydWN0 IHZkZWNfZmIKPiA+ID4gKyAqIEB5X2ZiX2RtYTogICBkbWEgYWRkcmVzcyBvZiBZIGZyYW1lIGJ1 ZmZlciAobHVtYSkKPiA+ID4gKyAqIEBjX2ZiX2RtYTogICBkbWEgYWRkcmVzcyBvZiBDIGZyYW1l IGJ1ZmZlciAoY2hyb21hKQo+ID4gPiArICogQHBvYzogICAgICAgIHBpY3R1cmUgb3JkZXIgY291 bnQgb2YgZnJhbWUgYnVmZmVyCj4gPiA+ICsgKiBAcmVzZXJ2ZWQ6ICAgZm9yIDggYnl0ZXMgYWxp Z25tZW50Cj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBoZXZjX2ZiIHsKPiA+ID4gKyAgICAgdTY0 IHZkZWNfZmJfdmE7Cj4gPiA+ICsgICAgIHU2NCB5X2ZiX2RtYTsKPiA+ID4gKyAgICAgdTY0IGNf ZmJfZG1hOwo+ID4gPiArICAgICBzMzIgcG9jOwo+ID4gPiArICAgICB1MzIgcmVzZXJ2ZWQ7Cj4g PiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2hldmNfc2xp Y2VfbGF0X2RlY19wYXJhbSAgLSBwYXJhbWV0ZXJzIGZvciBkZWNvZGUKPiA+ID4gY3VycmVudCBm cmFtZQo+ID4gPiArICoKPiA+ID4gKyAqIEBzcHM6ICAgICAgICAgICAgaGV2YyBzcHMgc3ludGF4 IHBhcmFtZXRlcnMKPiA+ID4gKyAqIEBwcHM6ICAgICAgICAgICAgaGV2YyBwcHMgc3ludGF4IHBh cmFtZXRlcnMKPiA+ID4gKyAqIEBzbGljZV9oZWFkZXI6ICAgaGV2YyBzbGljZSBoZWFkZXIgc3lu dGF4IHBhcmFtZXRlcnMKPiA+ID4gKyAqIEBzY2FsaW5nX21hdHJpeDogaGV2YyBzY2FsaW5nIGxp c3QgcGFyYW1ldGVycwo+ID4gPiArICogQGRlY29kZV9wYXJhbXM6ICBkZWNvZGVyIHBhcmFtZXRl cnMgb2YgZWFjaCBmcmFtZSB1c2VkIGZvcgo+ID4gPiBoYXJkd2FyZSBkZWNvZGUKPiA+ID4gKyAq IEBoZXZjX2RwYl9pbmZvOiAgZHBiIHJlZmVyZW5jZSBsaXN0Cj4gPiA+ICsgKi8KPiA+ID4gK3N0 cnVjdCB2ZGVjX2hldmNfc2xpY2VfbGF0X2RlY19wYXJhbSB7Cj4gPiA+ICsgICAgIHN0cnVjdCBt dGtfaGV2Y19zcHNfcGFyYW0gc3BzOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX2hldmNfcHBzX3Bh cmFtIHBwczsKPiA+ID4gKyAgICAgc3RydWN0IG10a19oZXZjX3NsaWNlX2hlYWRlcl9wYXJhbSBz bGljZV9oZWFkZXI7Cj4gPiA+ICsgICAgIHN0cnVjdCBzbGljZV9hcGlfaGV2Y19zY2FsaW5nX21h dHJpeCBzY2FsaW5nX21hdHJpeDsKPiA+ID4gKyAgICAgc3RydWN0IHNsaWNlX2FwaV9oZXZjX2Rl Y29kZV9wYXJhbSBkZWNvZGVfcGFyYW1zOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX2hldmNfZHBi X2luZm8KPiA+ID4gaGV2Y19kcGJfaW5mb1tWNEwyX0hFVkNfRFBCX0VOVFJJRVNfTlVNX01BWF07 Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2hldmNf c2xpY2VfaW5mbyAtIGRlY29kZSBpbmZvcm1hdGlvbgo+ID4gPiArICoKPiA+ID4gKyAqIEB3ZG1h X2VuZF9hZGRyX29mZnNldDogd2RtYSBlbmQgYWRkcmVzcyBvZmZzZXQKPiA+ID4gKyAqIEB0aW1l b3V0OiAgICAgICAgICAgICAgRGVjb2RlIHRpbWVvdXQ6IDEgdGltZW91dCwgMCBubyB0aW1lb3Vu dAo+ID4gPiArICogQHZkZWNfZmJfdmE6ICAgICAgICAgICBWREVDIGZyYW1lIGJ1ZmZlciBzdHJ1 Y3QgdmlydHVhbCBhZGRyZXNzCj4gPiA+ICsgKiBAY3JjOiAgICAgICAgICAgICAgICAgIFVzZWQg dG8gY2hlY2sgd2hldGhlciBoYXJkd2FyZSdzIHN0YXR1cwo+ID4gPiBpcyByaWdodAo+ID4gPiAr ICovCj4gPiA+ICtzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX2luZm8gewo+ID4gPiArICAgICAvKiBM QVQgZGVjIGFkZHIgKi8KPiA+ID4gKyAgICAgdTY0IHdkbWFfZW5kX2FkZHJfb2Zmc2V0Owo+ID4g PiArICAgICB1NjQgdGltZW91dDsKPiA+ID4gKyAgICAgdTY0IHZkZWNfZmJfdmE7Cj4gPiA+ICsg ICAgIHUzMiBjcmNbOF07Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICogc3Ry dWN0IHZkZWNfdnA5X3NsaWNlX21lbSAtIG1lbW9yeSBhZGRyZXNzIGFuZCBzaXplCj4gPiA+ICsg Ki8KPiA+ID4gK3N0cnVjdCB2ZGVjX2hldmNfc2xpY2VfbWVtIHsKPiA+ID4gKyAgICAgdW5pb24g ewo+ID4gPiArICAgICAgICAgICAgIHU2NCBidWY7Cj4gPiA+ICsgICAgICAgICAgICAgZG1hX2Fk ZHJfdCBkbWFfYWRkcjsKPiA+ID4gKyAgICAgfTsKPiA+ID4gKyAgICAgdW5pb24gewo+ID4gPiAr ICAgICAgICAgICAgIHNpemVfdCBzaXplOwo+ID4gPiArICAgICAgICAgICAgIGRtYV9hZGRyX3Qg ZG1hX2FkZHJfZW5kOwo+ID4gPiArICAgICAgICAgICAgIHU2NCBwYWRkaW5nOwo+ID4gPiArICAg ICB9Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19h djFfc2xpY2VfZmIgLSBmcmFtZSBidWZmZXIgZm9yIGRlY29kaW5nCj4gPiA+ICsgKiBAeTogIGN1 cnJlbnQgeSBidWZmZXIgYWRkcmVzcyBpbmZvCj4gPiA+ICsgKiBAYzogIGN1cnJlbnQgYyBidWZm ZXIgYWRkcmVzcyBpbmZvCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCB2ZGVjX2hldmNfc2xpY2Vf ZmIgewo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21lbSB5Owo+ID4gPiArICAg ICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21lbSBjOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiAr LyoqCj4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX3ZzaSAtIHNoYXJlZCBtZW1vcnkg Zm9yIGRlY29kZQo+ID4gPiBpbmZvcm1hdGlvbiBleGNoYW5nZQo+ID4gPiArICogICAgICAgIGJl dHdlZW4gU0NQIGFuZCBIb3N0Lgo+ID4gPiArICoKPiA+ID4gKyAqIEBiczogICAgICAgICAgICAg ICAgIGlucHV0IGJ1ZmZlciBpbmZvCj4gPiA+ICsgKgo+ID4gPiArICogQHViZTogICAgICAgICAg ICAgICAgdWJlIGJ1ZmZlcgo+ID4gPiArICogQHRyYW5zOiAgICAgICAgICAgICAgdHJhbnNjb2Rl ZCBidWZmZXIKPiA+ID4gKyAqIEBlcnJfbWFwOiAgICAgICAgICAgIGVyciBtYXAgYnVmZmVyCj4g PiA+ICsgKiBAc2xpY2VfYmM6ICAgICAgICAgICBzbGljZSBiYyBidWZmZXIKPiA+ID4gKyAqIEB3 cmFwOiAgICAgICAgICAgICAgIHRlbXAgYnVmZmVyCj4gPiA+ICsgKgo+ID4gPiArICogQGZiOiAg ICAgICAgICAgICAgICAgY3VycmVudCB5L2MgYnVmZmVyCj4gPiA+ICsgKiBAbXZfYnVmX2RtYTog ICAgICAgICBIVyB3b3JraW5nIG1vdGlvbiB2ZWN0b3IgYnVmZmVyCj4gPiA+ICsgKiBAZGVjOiAg ICAgICAgICAgICAgICBkZWNvZGUgaW5mb3JtYXRpb24gKEFQLVIsIFZQVS1XKQo+ID4gPiArICog QGhldmNfc2xpY2VfcGFyYW1zOiAgZGVjb2RlIHBhcmFtZXRlcnMgZm9yIGh3IHVzZWQKPiA+ID4g KyAqLwo+ID4gPiArc3RydWN0IHZkZWNfaGV2Y19zbGljZV92c2kgewo+ID4gPiArICAgICAvKiB1 c2VkIGluIExBVCBzdGFnZSAqLwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21l bSBiczsKPiA+ID4gKwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21lbSB1YmU7 Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX2hldmNfc2xpY2VfbWVtIHRyYW5zOwo+ID4gPiArICAg ICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21lbSBlcnJfbWFwOwo+ID4gPiArICAgICBzdHJ1Y3Qg dmRlY19oZXZjX3NsaWNlX21lbSBzbGljZV9iYzsKPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfaGV2 Y19zbGljZV9tZW0gd3JhcDsKPiA+ID4gKwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3Ns aWNlX2ZiIGZiOwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21lbSBtdl9idWZf ZG1hW0hFVkNfTUFYX01WX05VTV07Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX2hldmNfc2xpY2Vf aW5mbyBkZWM7Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX2hldmNfc2xpY2VfbGF0X2RlY19wYXJh bSBoZXZjX3NsaWNlX3BhcmFtczsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiAr ICogc3RydWN0IHZkZWNfaGV2Y19zbGljZV9zaGFyZV9pbmZvIC0gc2hhcmVkIGluZm9ybWF0aW9u IHVzZWQgdG8KPiA+ID4gZXhjaGFuZ2UKPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1lc3NhZ2UgYmV0d2VlbiBsYXQgYW5kCj4gPiA+IGNvcmUKPiA+ID4gKyAq Cj4gPiA+ICsgKiBAc3BzOiAgICAgICAgICAgICAgIHNlcXVlbmNlIGhlYWRlciBpbmZvcm1hdGlv biBmcm9tIHVzZXIgc3BhY2UKPiA+ID4gKyAqIEBkZWNfcGFyYW1zOiAgICAgICAgZGVjb2RlciBw YXJhbXMgZnJvbSB1c2VyIHNwYWNlCj4gPiA+ICsgKiBAaGV2Y19zbGljZV9wYXJhbXM6IGRlY29k ZXIgcGFyYW1zIHVzZWQgZm9yIGhhcmR3YXJlCj4gPiA+ICsgKiBAdHJhbnNfc3RhcnQ6ICAgICAg IHRyYW5zIHN0YXJ0IGRtYSBhZGRyZXNzCj4gPiA+ICsgKiBAdHJhbnNfZW5kOiAgICAgICAgIHRy YW5zIGVuZCBkbWEgYWRkcmVzcwo+ID4gPiArICovCj4gPiA+ICtzdHJ1Y3QgdmRlY19oZXZjX3Ns aWNlX3NoYXJlX2luZm8gewo+ID4gPiArICAgICBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfc3BzIHNw czsKPiA+ID4gKyAgICAgc3RydWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJhbXMgZGVjX3Bh cmFtczsKPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfaGV2Y19zbGljZV9sYXRfZGVjX3BhcmFtIGhl dmNfc2xpY2VfcGFyYW1zOwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX21lbSB0 cmFuczsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogc3RydWN0IHZkZWNf aGV2Y19zbGljZV9pbnN0IC0gaGV2YyBkZWNvZGVyIGluc3RhbmNlCj4gPiA+ICsgKgo+ID4gPiAr ICogQHNsaWNlX2RlY19udW06ICAgICAgaG93IG1hbnkgcGljdHVyZSBiZSBkZWNvZGVkCj4gPiA+ ICsgKiBAY3R4OiAgICAgICAgICAgICAgICBwb2ludCB0byBtdGtfdmNvZGVjX2N0eAo+ID4gPiAr ICogQHByZWRfYnVmOiAgICAgICAgICAgSFcgd29ya2luZyBwcmVkaWNhdGlvbiBidWZmZXIKPiA+ ID4gKyAqIEBtdl9idWY6ICAgICAgICAgICAgIEhXIHdvcmtpbmcgbW90aW9uIHZlY3RvciBidWZm ZXIKPiA+ID4gKyAqIEB2cHU6ICAgICAgICAgICAgICAgIFZQVSBpbnN0YW5jZQo+ID4gPiArICog QHZzaTogICAgICAgICAgICAgICAgdnNpIHVzZWQgZm9yIGxhdAo+ID4gPiArICogQHZzaV9jb3Jl OiAgICAgICAgICAgdnNpIHVzZWQgZm9yIGNvcmUKPiA+ID4gKyAqIEB3cmFwX2FkZHI6ICAgICAg ICAgIHdyYXAgYWRkcmVzcyB1c2VkIGZvciBoZXZjCj4gPiA+ICsgKgo+ID4gPiArICogQGhldmNf c2xpY2VfcGFyYW06ICAgdGhlIHBhcmFtZXRlcnMgdGhhdCBoYXJkd2FyZSB1c2UgdG8gZGVjb2Rl Cj4gPiA+ICsgKgo+ID4gPiArICogQHJlc29sdXRpb25fY2hhbmdlZDogcmVzb2x1dGlvbiBjaGFu Z2VkCj4gPiA+ICsgKiBAcmVhbGxvY19tdl9idWY6ICAgICByZWFsbG9jYXRlIG12IGJ1ZmZlcgo+ ID4gPiArICogQGNhcF9udW1fcGxhbmVzOiAgICAgbnVtYmVyIG9mIGNhcHR1cmUgcXVldWUgcGxh bmUKPiA+ID4gKyAqLwo+ID4gPiArc3RydWN0IHZkZWNfaGV2Y19zbGljZV9pbnN0IHsKPiA+ID4g KyAgICAgdW5zaWduZWQgaW50IHNsaWNlX2RlY19udW07Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtf dmNvZGVjX2N0eCAqY3R4Owo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gbXZfYnVm W0hFVkNfTUFYX01WX05VTV07Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX3ZwdV9pbnN0IHZwdTsK PiA+ID4gKyAgICAgc3RydWN0IHZkZWNfaGV2Y19zbGljZV92c2kgKnZzaTsKPiA+ID4gKyAgICAg c3RydWN0IHZkZWNfaGV2Y19zbGljZV92c2kgKnZzaV9jb3JlOwo+ID4gPiArICAgICBzdHJ1Y3Qg bXRrX3Zjb2RlY19tZW0gd3JhcF9hZGRyOwo+ID4gPiArCj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVj X2hldmNfc2xpY2VfbGF0X2RlY19wYXJhbSBoZXZjX3NsaWNlX3BhcmFtOwo+ID4gPiArCj4gPiA+ ICsgICAgIHVuc2lnbmVkIGludCByZXNvbHV0aW9uX2NoYW5nZWQ7Cj4gPiA+ICsgICAgIHVuc2ln bmVkIGludCByZWFsbG9jX212X2J1ZjsKPiA+ID4gKyAgICAgdW5zaWduZWQgaW50IGNhcF9udW1f cGxhbmVzOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIHVuc2lnbmVkIGludCB2ZGVj X2hldmNfZ2V0X212X2J1Zl9zaXplKHVuc2lnbmVkIGludCB3aWR0aCwKPiA+ID4gdW5zaWduZWQg aW50IGhlaWdodCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgaW50IHVuaXRfc2l6ZSA9ICh3aWR0aCAv IDE2KSAqIChoZWlnaHQgLyAxNikgKyA4Owo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiA2NCAq IHVuaXRfc2l6ZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgKnZkZWNfaGV2 Y19nZXRfY3RybF9wdHIoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgsCj4gPiA+IGludCBpZCkK PiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHY0bDJfY3RybCAqY3RybCA9IHY0bDJfY3RybF9m aW5kKCZjdHgtPmN0cmxfaGRsLCBpZCk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKCFjdHJsKQo+ ID4gPiArICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gPiArCj4gPiA+ ICsgICAgIHJldHVybiBjdHJsLT5wX2N1ci5wOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgdm9pZCB2ZGVjX2hldmNfZmlsbF9kcGJfaW5mbyhzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0 eCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdAo+ID4gPiBz bGljZV9hcGlfaGV2Y19kZWNvZGVfcGFyYW0gKmRlY29kZV9wYXJhbXMsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRrX2hldmNfZHBiX2luZm8KPiA+ID4g KmhldmNfZHBiX2luZm8pCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGNvbnN0IHN0cnVjdCBzbGljZV9o ZXZjX2RwYl9lbnRyeSAqZHBiOwo+ID4gPiArICAgICBzdHJ1Y3QgdmIyX3F1ZXVlICp2cTsKPiA+ ID4gKyAgICAgc3RydWN0IHZiMl9idWZmZXIgKnZiOwo+ID4gPiArICAgICBpbnQgaW5kZXg7Cj4g PiA+ICsKPiA+ID4gKyAgICAgdnEgPSB2NGwyX20ybV9nZXRfdnEoY3R4LT5tMm1fY3R4LAo+ID4g PiBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FKTsKPiA+ID4gKyAgICAgZm9yIChp bmRleCA9IDA7IGluZGV4IDwgVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVg7Cj4gPiA+IGlu ZGV4KyspIHsKPiA+ID4gKyAgICAgICAgICAgICBkcGIgPSAmZGVjb2RlX3BhcmFtcy0+ZHBiW2lu ZGV4XTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoaW5kZXggPj0gZGVjb2RlX3BhcmFtcy0+bnVt X2FjdGl2ZV9kcGJfZW50cmllcykKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgdmIgPSB2YjJfZmluZF9idWZmZXIodnEsIGRw Yi0+dGltZXN0YW1wKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAodmIgPCAwKSB7Cj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKCZjdHgtPmRldi0+cGxhdF9kZXYtPmRldiwKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZmVyZW5jZSBpbnZhbGlkOiBkcGJf aW5kZXgoJWQpCj4gPiA+IHRpbWVzdGFtcCglbGxkKSIsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZGV4LCBkcGItPnRpbWVzdGFtcCk7Cj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAg ICAgICAgICAgICBoZXZjX2RwYl9pbmZvW2luZGV4XS5maWVsZCA9IGRwYi0+ZmllbGRfcGljOwo+ ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgaGV2Y19kcGJfaW5mb1tpbmRleF0ueV9kbWFfYWRk ciA9Cj4gPiA+IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiLCAwKTsKPiA+ID4gKyAg ICAgICAgICAgICBpZiAoY3R4LT5xX2RhdGFbTVRLX1FfREFUQV9EU1RdLmZtdC0+bnVtX3BsYW5l cyA9PSAyKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaGV2Y19kcGJfaW5mb1tpbmRleF0u Y19kbWFfYWRkciA9Cj4gPiA+IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiLCAxKTsK PiA+ID4gKyAgICAgICAgICAgICBlbHNlCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBoZXZj X2RwYl9pbmZvW2luZGV4XS5jX2RtYV9hZGRyID0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaGV2Y19kcGJfaW5mb1tpbmRleF0ueV9kbWFfYWRkciArCj4gPiA+IGN0eC0+cGlj aW5mby5mYl9zelswXTsKPiA+ID4gKyAgICAgfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgdm9pZCB2ZGVjX2hldmNfY29weV9zcHNfcGFyYW1zKHN0cnVjdCBtdGtfaGV2Y19zcHNfcGFy YW0KPiA+ID4gKmRzdF9wYXJhbSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oZXZjX3Nwcwo+ID4gPiAqc3JjX3BhcmFtKQo+ ID4gPiArewo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX1BBUkFNKHZpZGVvX3BhcmFtZXRlcl9z ZXRfaWQpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX1BBUkFNKHNlcV9wYXJhbWV0ZXJfc2V0 X2lkKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShwaWNfd2lkdGhfaW5fbHVtYV9z YW1wbGVzKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShwaWNfaGVpZ2h0X2luX2x1 bWFfc2FtcGxlcyk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0oYml0X2RlcHRoX2x1 bWFfbWludXM4KTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShiaXRfZGVwdGhfY2hy b21hX21pbnVzOCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0obG9nMl9tYXhfcGlj X29yZGVyX2NudF9sc2JfbWludXM0KTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShz cHNfbWF4X2RlY19waWNfYnVmZmVyaW5nX21pbnVzMSk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZE RUNfUEFSQU0oc3BzX21heF9udW1fcmVvcmRlcl9waWNzKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNf VkRFQ19QQVJBTShzcHNfbWF4X2xhdGVuY3lfaW5jcmVhc2VfcGx1czEpOwo+ID4gPiArICAgICBH RVRfSEVWQ19WREVDX1BBUkFNKGxvZzJfbWluX2x1bWFfY29kaW5nX2Jsb2NrX3NpemVfbWludXMz KTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShsb2cyX2RpZmZfbWF4X21pbl9sdW1h X2NvZGluZ19ibG9ja19zaXplKQo+ID4gPiA7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFS QU0obG9nMl9taW5fbHVtYV90cmFuc2Zvcm1fYmxvY2tfc2l6ZV9taW51czIKPiA+ID4gKTsKPiA+ ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShsb2cyX2RpZmZfbWF4X21pbl9sdW1hX3RyYW5z Zm9ybV9ibG9ja19zaQo+ID4gPiB6ZSk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0o bWF4X3RyYW5zZm9ybV9oaWVyYXJjaHlfZGVwdGhfaW50ZXIpOwo+ID4gPiArICAgICBHRVRfSEVW Q19WREVDX1BBUkFNKG1heF90cmFuc2Zvcm1faGllcmFyY2h5X2RlcHRoX2ludHJhKTsKPiA+ID4g KyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShwY21fc2FtcGxlX2JpdF9kZXB0aF9sdW1hX21pbnVz MSk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0ocGNtX3NhbXBsZV9iaXRfZGVwdGhf Y2hyb21hX21pbnVzMSk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0obG9nMl9taW5f cGNtX2x1bWFfY29kaW5nX2Jsb2NrX3NpemVfbWludXMKPiA+ID4gMyk7Cj4gPiA+ICsgICAgIEdF VF9IRVZDX1ZERUNfUEFSQU0obG9nMl9kaWZmX21heF9taW5fcGNtX2x1bWFfY29kaW5nX2Jsb2Nr X3MKPiA+ID4gaXplKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShudW1fc2hvcnRf dGVybV9yZWZfcGljX3NldHMpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX1BBUkFNKG51bV9s b25nX3Rlcm1fcmVmX3BpY3Nfc3BzKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShj aHJvbWFfZm9ybWF0X2lkYyk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0oc3BzX21h eF9zdWJfbGF5ZXJzX21pbnVzMSk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19G TEFHKHNlcGFyYXRlX2NvbG91cl9wbGFuZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IFY0TDJfSEVWQ19TUFNfRkxBR19TRVBBUkFURV9DT0xPVVJfUExBTkUpOwo+ID4gPiArICAgICBH RVRfSEVWQ19WREVDX0ZMQUcoc2NhbGluZ19saXN0X2VuYWJsZWQsCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBWNEwyX0hFVkNfU1BTX0ZMQUdfU0NBTElOR19MSVNUX0VOQUJMRUQpOwo+ ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcoYW1wX2VuYWJsZWQsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBWNEwyX0hFVkNfU1BTX0ZMQUdfQU1QX0VOQUJMRUQpOwo+ID4gPiAr ICAgICBHRVRfSEVWQ19WREVDX0ZMQUcoc2FtcGxlX2FkYXB0aXZlX29mZnNldCwKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIFY0TDJfSEVWQ19TUFNfRkxBR19TQU1QTEVfQURBUFRJVkVf T0ZGU0VUKQo+ID4gPiA7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhwY21fZW5hYmxl ZCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFY0TDJfSEVWQ19TUFNfRkxBR19QQ01f RU5BQkxFRCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhwY21fbG9vcF9maWx0ZXJf ZGlzYWJsZWQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX0hFVkNfU1BTX0ZM QUdfUENNX0xPT1BfRklMVEVSX0RJU0FCTEUKPiA+ID4gRCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZD X1ZERUNfRkxBRyhsb25nX3Rlcm1fcmVmX3BpY3NfZW5hYmxlZCwKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIFY0TDJfSEVWQ19TUFNfRkxBR19MT05HX1RFUk1fUkVGX1BJQ1NfUFJFUwo+ ID4gPiBFTlQpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcoc3BzX3RlbXBvcmFsX212 cF9lbmFibGVkLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVjRMMl9IRVZDX1NQU19G TEFHX1NQU19URU1QT1JBTF9NVlBfRU5BQkxFCj4gPiA+IEQpOwo+ID4gPiArICAgICBHRVRfSEVW Q19WREVDX0ZMQUcoc3Ryb25nX2ludHJhX3Ntb290aGluZ19lbmFibGVkLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgVjRMMl9IRVZDX1NQU19GTEFHX1NUUk9OR19JTlRSQV9TTU9PVEhJ TkdfCj4gPiA+IEVOQUJMRUQpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCB2 ZGVjX2hldmNfY29weV9wcHNfcGFyYW1zKHN0cnVjdCBtdGtfaGV2Y19wcHNfcGFyYW0KPiA+ID4g KmRzdF9wYXJhbSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHY0bDJfY3RybF9oZXZjX3Bwcwo+ID4gPiAqc3JjX3BhcmFtKQo+ID4gPiArewo+ ID4gPiArICAgICBpbnQgaTsKPiA+ID4gKwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX1BBUkFN KHBpY19wYXJhbWV0ZXJfc2V0X2lkKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShu dW1fZXh0cmFfc2xpY2VfaGVhZGVyX2JpdHMpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX1BB UkFNKG51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZlX21pbnVzMSk7Cj4gPiA+ICsgICAgIEdF VF9IRVZDX1ZERUNfUEFSQU0obnVtX3JlZl9pZHhfbDFfZGVmYXVsdF9hY3RpdmVfbWludXMxKTsK PiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19QQVJBTShpbml0X3FwX21pbnVzMjYpOwo+ID4gPiAr ICAgICBHRVRfSEVWQ19WREVDX1BBUkFNKGRpZmZfY3VfcXBfZGVsdGFfZGVwdGgpOwo+ID4gPiAr ICAgICBHRVRfSEVWQ19WREVDX1BBUkFNKHBwc19jYl9xcF9vZmZzZXQpOwo+ID4gPiArICAgICBH RVRfSEVWQ19WREVDX1BBUkFNKHBwc19jcl9xcF9vZmZzZXQpOwo+ID4gPiArICAgICBHRVRfSEVW Q19WREVDX1BBUkFNKG51bV90aWxlX2NvbHVtbnNfbWludXMxKTsKPiA+ID4gKyAgICAgR0VUX0hF VkNfVkRFQ19QQVJBTShudW1fdGlsZV9yb3dzX21pbnVzMSk7Cj4gPiA+ICsgICAgIEdFVF9IRVZD X1ZERUNfUEFSQU0oaW5pdF9xcF9taW51czI2KTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19Q QVJBTShkaWZmX2N1X3FwX2RlbHRhX2RlcHRoKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19Q QVJBTShwaWNfcGFyYW1ldGVyX3NldF9pZCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFS QU0obnVtX2V4dHJhX3NsaWNlX2hlYWRlcl9iaXRzKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRF Q19QQVJBTShudW1fcmVmX2lkeF9sMF9kZWZhdWx0X2FjdGl2ZV9taW51czEpOwo+ID4gPiArICAg ICBHRVRfSEVWQ19WREVDX1BBUkFNKG51bV9yZWZfaWR4X2wxX2RlZmF1bHRfYWN0aXZlX21pbnVz MSk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0ocHBzX2JldGFfb2Zmc2V0X2RpdjIp Owo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX1BBUkFNKHBwc190Y19vZmZzZXRfZGl2Mik7Cj4g PiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfUEFSQU0obG9nMl9wYXJhbGxlbF9tZXJnZV9sZXZlbF9t aW51czIpOwo+ID4gPiArCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCAyMDsgaSsrKQo+ID4g PiArICAgICAgICAgICAgIGRzdF9wYXJhbS0+Y29sdW1uX3dpZHRoX21pbnVzMVtpXSA9IHNyY19w YXJhbS0KPiA+ID4gPiBjb2x1bW5fd2lkdGhfbWludXMxW2ldOwo+ID4gPiArICAgICBmb3IgKGkg PSAwOyBpIDwgMjI7IGkrKykKPiA+ID4gKyAgICAgICAgICAgICBkc3RfcGFyYW0tPnJvd19oZWln aHRfbWludXMxW2ldID0gc3JjX3BhcmFtLQo+ID4gPiA+IHJvd19oZWlnaHRfbWludXMxW2ldOwo+ ID4gPiArCj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhkZXBlbmRlbnRfc2xpY2Vfc2Vn bWVudF9lbmFibGVkLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVjRMMl9IRVZDX1BQ U19GTEFHX0RFUEVOREVOVF9TTElDRV9TRUdNRU5UCj4gPiA+IF9FTkFCTEVEKTsKPiA+ID4gKyAg ICAgR0VUX0hFVkNfVkRFQ19GTEFHKG91dHB1dF9mbGFnX3ByZXNlbnQsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBWNEwyX0hFVkNfUFBTX0ZMQUdfT1VUUFVUX0ZMQUdfUFJFU0VOVCk7 Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhzaWduX2RhdGFfaGlkaW5nX2VuYWJsZWQs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX0hFVkNfUFBTX0ZMQUdfU0lHTl9E QVRBX0hJRElOR19FTkFCTEUKPiA+ID4gRCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxB RyhjYWJhY19pbml0X3ByZXNlbnQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWNEwy X0hFVkNfUFBTX0ZMQUdfQ0FCQUNfSU5JVF9QUkVTRU5UKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNf VkRFQ19GTEFHKGNvbnN0cmFpbmVkX2ludHJhX3ByZWQsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBWNEwyX0hFVkNfUFBTX0ZMQUdfQ09OU1RSQUlORURfSU5UUkFfUFJFRCkKPiA+ID4g Owo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcodHJhbnNmb3JtX3NraXBfZW5hYmxlZCwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFY0TDJfSEVWQ19QUFNfRkxBR19UUkFOU0ZP Uk1fU0tJUF9FTkFCTEVEKQo+ID4gPiA7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhj dV9xcF9kZWx0YV9lbmFibGVkLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVjRMMl9I RVZDX1BQU19GTEFHX0NVX1FQX0RFTFRBX0VOQUJMRUQpOwo+ID4gPiArICAgICBHRVRfSEVWQ19W REVDX0ZMQUcocHBzX3NsaWNlX2Nocm9tYV9xcF9vZmZzZXRzX3ByZXNlbnQsCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBWNEwyX0hFVkNfUFBTX0ZMQUdfUFBTX1NMSUNFX0NIUk9NQV9R UF9PRkYKPiA+ID4gU0VUU19QUkVTRU5UKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19GTEFH KHdlaWdodGVkX3ByZWQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX0hFVkNf UFBTX0ZMQUdfV0VJR0hURURfUFJFRCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyh3 ZWlnaHRlZF9iaXByZWQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX0hFVkNf UFBTX0ZMQUdfV0VJR0hURURfQklQUkVEKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19GTEFH KHRyYW5zcXVhbnRfYnlwYXNzX2VuYWJsZWQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBWNEwyX0hFVkNfUFBTX0ZMQUdfVFJBTlNRVUFOVF9CWVBBU1NfRU5BQkwKPiA+ID4gRUQpOwo+ ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcocHBzX2ZsYWdfdGlsZXNfZW5hYmxlZCwKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFY0TDJfSEVWQ19QUFNfRkxBR19USUxFU19FTkFC TEVEKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19GTEFHKGVudHJvcHlfY29kaW5nX3N5bmNf ZW5hYmxlZCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFY0TDJfSEVWQ19QUFNfRkxB R19FTlRST1BZX0NPRElOR19TWU5DX0VOQQo+ID4gPiBCTEVEKTsKPiA+ID4gKyAgICAgR0VUX0hF VkNfVkRFQ19GTEFHKGxvb3BfZmlsdGVyX2Fjcm9zc190aWxlc19lbmFibGVkLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgVjRMMl9IRVZDX1BQU19GTEFHX0xPT1BfRklMVEVSX0FDUk9T U19USUxFCj4gPiA+IFNfRU5BQkxFRCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhw cHNfbG9vcF9maWx0ZXJfYWNyb3NzX3NsaWNlc19lbmFibGVkLAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgVjRMMl9IRVZDX1BQU19GTEFHX1BQU19MT09QX0ZJTFRFUl9BQ1JPU1NfCj4g PiA+IFNMSUNFU19FTkFCTEVEKTsKPiA+ID4gKyAgICAgR0VUX0hFVkNfVkRFQ19GTEFHKGRlYmxv Y2tpbmdfZmlsdGVyX292ZXJyaWRlX2VuYWJsZWQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBWNEwyX0hFVkNfUFBTX0ZMQUdfREVCTE9DS0lOR19GSUxURVJfT1ZFUlIKPiA+ID4gSURF X0VOQUJMRUQpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcocHBzX2Rpc2FibGVfZGVm bG9ja2luZ19maWx0ZXIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX0hFVkNf UFBTX0ZMQUdfUFBTX0RJU0FCTEVfREVCTE9DS0lOR18KPiA+ID4gRklMVEVSKTsKPiA+ID4gKyAg ICAgR0VUX0hFVkNfVkRFQ19GTEFHKGxpc3RzX21vZGlmaWNhdGlvbl9wcmVzZW50LAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgVjRMMl9IRVZDX1BQU19GTEFHX0xJU1RTX01PRElGSUNB VElPTl9QUkVTCj4gPiA+IEVOVCk7Cj4gPiA+ICsgICAgIEdFVF9IRVZDX1ZERUNfRkxBRyhzbGlj ZV9zZWdtZW50X2hlYWRlcl9leHRlcnNpb25fcHJlc2VudCwKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIFY0TDJfSEVWQ19QUFNfRkxBR19TTElDRV9TRUdNRU5UX0hFQURFUl9FWAo+ID4g PiBURU5TSU9OX1BSRVNFTlQpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcoZGVibG9j a2luZ19maWx0ZXJfY29udHJvbF9wcmVzZW50LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgVjRMMl9IRVZDX1BQU19GTEFHX0RFQkxPQ0tJTkdfRklMVEVSX0NPTlRSCj4gPiA+IE9MX1BS RVNFTlQpOwo+ID4gPiArICAgICBHRVRfSEVWQ19WREVDX0ZMQUcodW5pZm9ybV9zcGFjaW5nLAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVjRMMl9IRVZDX1BQU19GTEFHX1VOSUZPUk1f U1BBQ0lORyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNfaGV2Y19j b3B5X3NjYWxpbmdfbWF0cml4KHN0cnVjdAo+ID4gPiBzbGljZV9hcGlfaGV2Y19zY2FsaW5nX21h dHJpeCAqZHN0X21hdHJpeCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdAo+ID4gPiB2NGwyX2N0cmxfaGV2Y19zY2FsaW5nX21hdHJpeCAq c3JjX21hdHJpeCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgbWVtY3B5KGRzdF9tYXRyaXgsIHNyY19t YXRyaXgsIHNpemVvZigqc3JjX21hdHJpeCkpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgdm9pZAo+ID4gPiArdmRlY19oZXZjX2NvcHlfZGVjb2RlX3BhcmFtcyhzdHJ1Y3Qgc2xpY2Vf YXBpX2hldmNfZGVjb2RlX3BhcmFtCj4gPiA+ICpkc3RfcGFyYW1zLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QKPiA+ID4gdjRsMl9jdHJsX2hldmNfZGVjb2Rl X3BhcmFtcyAqc3JjX3BhcmFtcywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHY0bDJfaGV2Y19kcGJfZW50cnkKPiA+ID4gZHBiW1Y0TDJfSEVWQ19EUEJfRU5U UklFU19OVU1fTUFYXSkKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHNsaWNlX2hldmNfZHBi X2VudHJ5ICpkc3RfZW50cnk7Cj4gPiA+ICsgICAgIGNvbnN0IHN0cnVjdCB2NGwyX2hldmNfZHBi X2VudHJ5ICpzcmNfZW50cnk7Cj4gPiA+ICsgICAgIGludCBpOwo+ID4gPiArCj4gPiA+ICsgICAg IGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRzdF9wYXJhbXMtPmRwYik7IGkrKykgewo+ID4g PiArICAgICAgICAgICAgIGRzdF9lbnRyeSA9ICZkc3RfcGFyYW1zLT5kcGJbaV07Cj4gPiA+ICsg ICAgICAgICAgICAgc3JjX2VudHJ5ID0gJmRwYltpXTsKPiA+ID4gKwo+ID4gPiArICAgICAgICAg ICAgIGRzdF9lbnRyeS0+dGltZXN0YW1wID0gc3JjX2VudHJ5LT50aW1lc3RhbXA7Cj4gPiA+ICsg ICAgICAgICAgICAgZHN0X2VudHJ5LT5mbGFncyA9IHNyY19lbnRyeS0+ZmxhZ3M7Cj4gPiA+ICsg ICAgICAgICAgICAgZHN0X2VudHJ5LT5maWVsZF9waWMgPSBzcmNfZW50cnktPmZpZWxkX3BpYzsK PiA+ID4gKyAgICAgICAgICAgICBkc3RfZW50cnktPnBpY19vcmRlcl9jbnRfdmFsID0gc3JjX2Vu dHJ5LQo+ID4gPiA+IHBpY19vcmRlcl9jbnRfdmFsOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAg ICAgZHN0X3BhcmFtcy0+cG9jX3N0X2N1cnJfYmVmb3JlW2ldID0gc3JjX3BhcmFtcy0KPiA+ID4g PiBwb2Nfc3RfY3Vycl9iZWZvcmVbaV07Cj4gPiA+ICsgICAgICAgICAgICAgZHN0X3BhcmFtcy0+ cG9jX3N0X2N1cnJfYWZ0ZXJbaV0gPSBzcmNfcGFyYW1zLQo+ID4gPiA+IHBvY19zdF9jdXJyX2Fm dGVyW2ldOwo+ID4gPiArICAgICAgICAgICAgIGRzdF9wYXJhbXMtPnBvY19sdF9jdXJyW2ldID0g c3JjX3BhcmFtcy0KPiA+ID4gPiBwb2NfbHRfY3VycltpXTsKPiA+ID4gKyAgICAgfQo+ID4gPiAr Cj4gPiA+ICsgICAgIGRzdF9wYXJhbXMtPnBpY19vcmRlcl9jbnRfdmFsID0gc3JjX3BhcmFtcy0K PiA+ID4gPiBwaWNfb3JkZXJfY250X3ZhbDsKPiA+ID4gKyAgICAgZHN0X3BhcmFtcy0+c2hvcnRf dGVybV9yZWZfcGljX3NldF9zaXplID0gc3JjX3BhcmFtcy0KPiA+ID4gPiBzaG9ydF90ZXJtX3Jl Zl9waWNfc2V0X3NpemU7Cj4gPiA+ICsgICAgIGRzdF9wYXJhbXMtPmxvbmdfdGVybV9yZWZfcGlj X3NldF9zaXplID0gc3JjX3BhcmFtcy0KPiA+ID4gPiBsb25nX3Rlcm1fcmVmX3BpY19zZXRfc2l6 ZTsKPiA+ID4gKyAgICAgZHN0X3BhcmFtcy0+bnVtX2FjdGl2ZV9kcGJfZW50cmllcyA9IHNyY19w YXJhbXMtCj4gPiA+ID4gbnVtX2FjdGl2ZV9kcGJfZW50cmllczsKPiA+ID4gKyAgICAgZHN0X3Bh cmFtcy0+bnVtX3BvY19zdF9jdXJyX2JlZm9yZSA9IHNyY19wYXJhbXMtCj4gPiA+ID4gbnVtX3Bv Y19zdF9jdXJyX2JlZm9yZQo+ID4gPiArICAgICBkc3RfcGFyYW1zLT5udW1fcG9jX3N0X2N1cnJf YWZ0ZXIgPSBzcmNfcGFyYW1zLQo+ID4gPiA+IG51bV9wb2Nfc3RfY3Vycl9hZnRlcjsKPiA+ID4g KyAgICAgZHN0X3BhcmFtcy0+bnVtX2RlbHRhX3BvY3Nfb2ZfcmVmX3Jwc19pZHggPSBzcmNfcGFy YW1zLQo+ID4gPiA+IG51bV9kZWx0YV9wb2NzX29mX3JlZl9ycHNfaWR4Owo+ID4gPiArICAgICBk c3RfcGFyYW1zLT5udW1fcG9jX2x0X2N1cnIgPSBzcmNfcGFyYW1zLT5udW1fcG9jX2x0X2N1cnI7 Cj4gPiA+ICsgICAgIGRzdF9wYXJhbXMtPmZsYWdzID0gc3JjX3BhcmFtcy0+ZmxhZ3M7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgdmRlY19oZXZjX3NsaWNlX2ZpbGxfZGVjb2Rl X3BhcmFtZXRlcnMoc3RydWN0Cj4gPiA+IHZkZWNfaGV2Y19zbGljZV9pbnN0ICppbnN0LAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QK PiA+ID4gdmRlY19oZXZjX3NsaWNlX3NoYXJlX2luZm8gKnNoYXJlX2luZm8pCj4gPiA+ICt7Cj4g PiA+ICsgICAgIHN0cnVjdCB2ZGVjX2hldmNfc2xpY2VfbGF0X2RlY19wYXJhbSAqc2xpY2VfcGFy YW0gPSAmaW5zdC0KPiA+ID4gPiB2c2ktPmhldmNfc2xpY2VfcGFyYW1zOwo+ID4gPiArICAgICBj b25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfZGVjb2RlX3BhcmFtcyAqZGVjX3BhcmFtczsKPiA+ ID4gKyAgICAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oZXZjX3NjYWxpbmdfbWF0cml4ICpzcmNf bWF0cml4Owo+ID4gPiArICAgICBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfc3BzICpzcHM7 Cj4gPiA+ICsgICAgIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHMgKnBwczsKPiA+ID4g Kwo+ID4gPiArICAgICBkZWNfcGFyYW1zID0KPiA+ID4gKyAgICAgICAgICAgICB2ZGVjX2hldmNf Z2V0X2N0cmxfcHRyKGluc3QtPmN0eCwKPiA+ID4gVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfREVD T0RFX1BBUkFNUyk7Cj4gPiA+ICsgICAgIGlmIChJU19FUlIoZGVjX3BhcmFtcykpCj4gPiA+ICsg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGVjX3BhcmFtcyk7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgc3JjX21hdHJpeCA9Cj4gPiA+ICsgICAgICAgICAgICAgdmRlY19oZXZjX2dldF9jdHJsX3B0 cihpbnN0LT5jdHgsCj4gPiA+IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NDQUxJTkdfTUFUUklY KTsKPiA+ID4gKyAgICAgaWYgKElTX0VSUihzcmNfbWF0cml4KSkKPiA+ID4gKyAgICAgICAgICAg ICByZXR1cm4gUFRSX0VSUihzcmNfbWF0cml4KTsKPiA+ID4gKwo+ID4gPiArICAgICBzcHMgPSB2 ZGVjX2hldmNfZ2V0X2N0cmxfcHRyKGluc3QtPmN0eCwKPiA+ID4gVjRMMl9DSURfU1RBVEVMRVNT X0hFVkNfU1BTKTsKPiA+ID4gKyAgICAgaWYgKElTX0VSUihzcHMpKQo+ID4gPiArICAgICAgICAg ICAgIHJldHVybiBQVFJfRVJSKHNwcyk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgcHBzID0gdmRlY19o ZXZjX2dldF9jdHJsX3B0cihpbnN0LT5jdHgsCj4gPiA+IFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZD X1BQUyk7Cj4gPiA+ICsgICAgIGlmIChJU19FUlIocHBzKSkKPiA+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUihwcHMpOwo+ID4gPiArCj4gPiA+ICsgICAgIHZkZWNfaGV2Y19jb3B5X3Nw c19wYXJhbXMoJnNsaWNlX3BhcmFtLT5zcHMsIHNwcyk7Cj4gPiA+ICsgICAgIHZkZWNfaGV2Y19j b3B5X3Bwc19wYXJhbXMoJnNsaWNlX3BhcmFtLT5wcHMsIHBwcyk7Cj4gPiA+ICsgICAgIHZkZWNf aGV2Y19jb3B5X3NjYWxpbmdfbWF0cml4KCZzbGljZV9wYXJhbS0+c2NhbGluZ19tYXRyaXgsCj4g PiA+IHNyY19tYXRyaXgpOwo+ID4gPiArCj4gPiA+ICsgICAgIG1lbWNweSgmc2hhcmVfaW5mby0+ c3BzLCBzcHMsIHNpemVvZigqc3BzKSk7Cj4gPiA+ICsgICAgIG1lbWNweSgmc2hhcmVfaW5mby0+ ZGVjX3BhcmFtcywgZGVjX3BhcmFtcywKPiA+ID4gc2l6ZW9mKCpkZWNfcGFyYW1zKSk7Cj4gPiA+ ICsKPiA+ID4gKyAgICAgc2xpY2VfcGFyYW0tPmRlY29kZV9wYXJhbXMubnVtX3BvY19zdF9jdXJy X2JlZm9yZSA9Cj4gPiA+IGRlY19wYXJhbXMtPm51bV9wb2Nfc3RfY3Vycl9iZWZvcmU7Cj4gPiA+ ICsgICAgIHNsaWNlX3BhcmFtLT5kZWNvZGVfcGFyYW1zLm51bV9wb2Nfc3RfY3Vycl9hZnRlciA9 Cj4gPiA+IGRlY19wYXJhbXMtPm51bV9wb2Nfc3RfY3Vycl9hZnRlcjsKPiA+ID4gKyAgICAgc2xp Y2VfcGFyYW0tPmRlY29kZV9wYXJhbXMubnVtX3BvY19sdF9jdXJyID0gZGVjX3BhcmFtcy0KPiA+ ID4gPiBudW1fcG9jX2x0X2N1cnI7Cj4gPiA+ICsgICAgIHNsaWNlX3BhcmFtLT5kZWNvZGVfcGFy YW1zLm51bV9kZWx0YV9wb2NzX29mX3JlZl9ycHNfaWR4ID0KPiA+ID4gKyAgICAgICAgICAgICBk ZWNfcGFyYW1zLT5udW1fZGVsdGFfcG9jc19vZl9yZWZfcnBzX2lkeDsKPiA+ID4gKwo+ID4gPiAr ICAgICByZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgdmRlY19o ZXZjX3NsaWNlX2ZpbGxfZGVjb2RlX3JlZmxpc3Qoc3RydWN0Cj4gPiA+IHZkZWNfaGV2Y19zbGlj ZV9pbnN0ICppbnN0LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0Cj4gPiA+IHZkZWNfaGV2Y19zbGljZV9sYXRfZGVjX3BhcmFtICpzbGlj ZV9wYXJhbSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdAo+ID4gPiB2ZGVjX2hldmNfc2xpY2Vfc2hhcmVfaW5mbyAqc2hhcmVfaW5mbykK PiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJhbXMg KmRlY19wYXJhbXMgPQo+ID4gPiAmc2hhcmVfaW5mby0+ZGVjX3BhcmFtczsKPiA+ID4gKwo+ID4g PiArICAgICB2ZGVjX2hldmNfY29weV9kZWNvZGVfcGFyYW1zKCZzbGljZV9wYXJhbS0+ZGVjb2Rl X3BhcmFtcywKPiA+ID4gZGVjX3BhcmFtcywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaGFyZV9pbmZvLT5kZWNfcGFyYW1zLmRwYik7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgdmRlY19oZXZjX2ZpbGxfZHBiX2luZm8oaW5zdC0+Y3R4LCAmc2xpY2VfcGFyYW0tCj4gPiA+ ID4gZGVjb2RlX3BhcmFtcywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xp Y2VfcGFyYW0tPmhldmNfZHBiX2luZm8pOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IHZkZWNfaGV2Y19zbGljZV9hbGxvY19tdl9idWYoc3RydWN0Cj4gPiA+IHZkZWNfaGV2Y19z bGljZV9pbnN0ICppbnN0LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB2ZGVjX3BpY19pbmZvICpwaWMpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHVuc2ln bmVkIGludCBidWZfc3ogPSB2ZGVjX2hldmNfZ2V0X212X2J1Zl9zaXplKHBpYy0+YnVmX3csCj4g PiA+IHBpYy0+YnVmX2gpOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKm1lbTsK PiA+ID4gKyAgICAgaW50IGksIGVycjsKPiA+ID4gKwo+ID4gPiArICAgICBtdGtfdjRsMl9kZWJ1 ZygzLCAiYWxsb2NhdGUgbXYgYnVmZmVyIHNpemUgPSAweCV4IiwgYnVmX3N6KTsKPiA+ID4gKyAg ICAgZm9yIChpID0gMDsgaSA8IEhFVkNfTUFYX01WX05VTTsgaSsrKSB7Cj4gPiA+ICsgICAgICAg ICAgICAgbWVtID0gJmluc3QtPm12X2J1ZltpXTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAobWVt LT52YSkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIG10a192Y29kZWNfbWVtX2ZyZWUoaW5z dC0+Y3R4LCBtZW0pOwo+ID4gPiArICAgICAgICAgICAgIG1lbS0+c2l6ZSA9IGJ1Zl9zejsKPiA+ ID4gKyAgICAgICAgICAgICBlcnIgPSBtdGtfdmNvZGVjX21lbV9hbGxvYyhpbnN0LT5jdHgsIG1l bSk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKGVycikgewo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgbXRrX3Zjb2RlY19lcnIoaW5zdCwgImZhaWxlZCB0byBhbGxvY2F0ZSBtdgo+ID4gPiBi dWYiKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPiA+ICsgICAg ICAgICAgICAgfQo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIDA7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNfaGV2Y19zbGljZV9mcmVlX212 X2J1ZihzdHJ1Y3QKPiA+ID4gdmRlY19oZXZjX3NsaWNlX2luc3QgKmluc3QpCj4gPiA+ICt7Cj4g PiA+ICsgICAgIGludCBpOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKm1lbTsK PiA+ID4gKwo+ID4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwgSEVWQ19NQVhfTVZfTlVNOyBpKysp IHsKPiA+ID4gKyAgICAgICAgICAgICBtZW0gPSAmaW5zdC0+bXZfYnVmW2ldOwo+ID4gPiArICAg ICAgICAgICAgIGlmIChtZW0tPnZhKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgbXRrX3Zj b2RlY19tZW1fZnJlZShpbnN0LT5jdHgsIG1lbSk7Cj4gPiA+ICsgICAgIH0KPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgdmRlY19oZXZjX3NsaWNlX2dldF9waWNfaW5mbyhzdHJ1 Y3QKPiA+ID4gdmRlY19oZXZjX3NsaWNlX2luc3QgKmluc3QpCj4gPiA+ICt7Cj4gPiA+ICsgICAg IHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4ID0gaW5zdC0+Y3R4Owo+ID4gPiArICAgICB1MzIg ZGF0YVszXTsKPiA+ID4gKwo+ID4gPiArICAgICBkYXRhWzBdID0gY3R4LT5waWNpbmZvLnBpY193 Owo+ID4gPiArICAgICBkYXRhWzFdID0gY3R4LT5waWNpbmZvLnBpY19oOwo+ID4gPiArICAgICBk YXRhWzJdID0gY3R4LT5jYXB0dXJlX2ZvdXJjYzsKPiA+ID4gKyAgICAgdnB1X2RlY19nZXRfcGFy YW0oJmluc3QtPnZwdSwgZGF0YSwgMywgR0VUX1BBUkFNX1BJQ19JTkZPKTsKPiA+ID4gKwo+ID4g PiArICAgICBjdHgtPnBpY2luZm8uYnVmX3cgPSBBTElHTihjdHgtPnBpY2luZm8ucGljX3csCj4g PiA+IFZDT0RFQ19ERUNfQUxJR05FRF82NCk7Cj4gPiA+ICsgICAgIGN0eC0+cGljaW5mby5idWZf aCA9IEFMSUdOKGN0eC0+cGljaW5mby5waWNfaCwKPiA+ID4gVkNPREVDX0RFQ19BTElHTkVEXzY0 KTsKPiA+ID4gKyAgICAgY3R4LT5waWNpbmZvLmZiX3N6WzBdID0gaW5zdC0+dnB1LmZiX3N6WzBd Owo+ID4gPiArICAgICBjdHgtPnBpY2luZm8uZmJfc3pbMV0gPSBpbnN0LT52cHUuZmJfc3pbMV07 Cj4gPiA+ICsgICAgIGluc3QtPmNhcF9udW1fcGxhbmVzID0KPiA+ID4gKyAgICAgICAgICAgICBj dHgtPnFfZGF0YVtNVEtfUV9EQVRBX0RTVF0uZm10LT5udW1fcGxhbmVzOwo+ID4gPiArCj4gPiA+ ICsgICAgIG10a192Y29kZWNfZGVidWcoaW5zdCwgInBpYyglZCwgJWQpLCBidWYoJWQsICVkKSIs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY3R4LT5waWNpbmZvLnBpY193LCBjdHgtPnBp Y2luZm8ucGljX2gsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY3R4LT5waWNpbmZvLmJ1 Zl93LCBjdHgtPnBpY2luZm8uYnVmX2gpOwo+ID4gPiArICAgICBtdGtfdmNvZGVjX2RlYnVnKGlu c3QsICJZL0MoJWQsICVkKSIsIGN0eC0+cGljaW5mby5mYl9zelswXSwKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBjdHgtPnBpY2luZm8uZmJfc3pbMV0pOwo+ID4gPiArCj4gPiA+ICsgICAg IGlmIChjdHgtPmxhc3RfZGVjb2RlZF9waWNpbmZvLnBpY193ICE9IGN0eC0+cGljaW5mby5waWNf dyB8fAo+ID4gPiArICAgICAgICAgY3R4LT5sYXN0X2RlY29kZWRfcGljaW5mby5waWNfaCAhPSBj dHgtPnBpY2luZm8ucGljX2gpIHsKPiA+ID4gKyAgICAgICAgICAgICBpbnN0LT5yZXNvbHV0aW9u X2NoYW5nZWQgPSB0cnVlOwo+ID4gPiArICAgICAgICAgICAgIGlmIChjdHgtPmxhc3RfZGVjb2Rl ZF9waWNpbmZvLmJ1Zl93ICE9IGN0eC0KPiA+ID4gPiBwaWNpbmZvLmJ1Zl93IHx8Cj4gPiA+ICsg ICAgICAgICAgICAgICAgIGN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8uYnVmX2ggIT0gY3R4LQo+ ID4gPiA+IHBpY2luZm8uYnVmX2gpCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBpbnN0LT5y ZWFsbG9jX212X2J1ZiA9IHRydWU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBtdGtfdjRs Ml9kZWJ1ZygxLCAicmVzQ2hnOiAoJWQgJWQpIDogb2xkKCVkLCAlZCkgLT4KPiA+ID4gbmV3KCVk LCAlZCkiLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3QtPnJlc29sdXRp b25fY2hhbmdlZCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0LT5yZWFs bG9jX212X2J1ZiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmxhc3Rf ZGVjb2RlZF9waWNpbmZvLnBpY193LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8ucGljX2gsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LT5waWNpbmZvLnBpY193LCBjdHgtCj4gPiA+ID4gcGljaW5mby5waWNf aCk7Cj4gPiA+ICsgICAgIH0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgdmRl Y19oZXZjX3NsaWNlX2dldF9jcm9wX2luZm8oc3RydWN0Cj4gPiA+IHZkZWNfaGV2Y19zbGljZV9p bnN0ICppbnN0LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHY0bDJfcmVjdCAqY3IpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGNyLT5sZWZ0ID0gMDsK PiA+ID4gKyAgICAgY3ItPnRvcCA9IDA7Cj4gPiA+ICsgICAgIGNyLT53aWR0aCA9IGluc3QtPmN0 eC0+cGljaW5mby5waWNfdzsKPiA+ID4gKyAgICAgY3ItPmhlaWdodCA9IGluc3QtPmN0eC0+cGlj aW5mby5waWNfaDsKPiA+ID4gKwo+ID4gPiArICAgICBtdGtfdmNvZGVjX2RlYnVnKGluc3QsICJs PSVkLCB0PSVkLCB3PSVkLCBoPSVkIiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBjci0+ bGVmdCwgY3ItPnRvcCwgY3ItPndpZHRoLCBjci0+aGVpZ2h0KTsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCB2ZGVjX2hldmNfc2xpY2Vfc2V0dXBfbGF0X2J1ZmZlcihzdHJ1Y3QK PiA+ID4gdmRlY19oZXZjX3NsaWNlX2luc3QgKmluc3QsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtdGtfdmNvZGVjX21lbQo+ID4gPiAqYnMs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 ZGVjX2xhdF9idWYKPiA+ID4gKmxhdF9idWYsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgKnJlc19jaGcpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0 cnVjdCBtdGtfdmNvZGVjX21lbSAqbWVtOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX3ZpZGVvX2Rl Y19idWYgKnNyY19idWZfaW5mbzsKPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfaGV2Y19zbGljZV9z aGFyZV9pbmZvICpzaGFyZV9pbmZvOwo+ID4gPiArICAgICBpbnQgaSwgZXJyOwo+ID4gPiArCj4g PiA+ICsgICAgIGluc3QtPnZzaS0+YnMuZG1hX2FkZHIgPSAodTY0KWJzLT5kbWFfYWRkcjsKPiA+ ID4gKyAgICAgaW5zdC0+dnNpLT5icy5zaXplID0gYnMtPnNpemU7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgc3JjX2J1Zl9pbmZvID0gY29udGFpbmVyX29mKGJzLCBzdHJ1Y3QgbXRrX3ZpZGVvX2RlY19i dWYsCj4gPiA+IGJzX2J1ZmZlcik7Cj4gPiA+ICsgICAgIGxhdF9idWYtPnNyY19idWZfcmVxID0g c3JjX2J1Zl9pbmZvLQo+ID4gPiA+IG0ybV9idWYudmIudmIyX2J1Zi5yZXFfb2JqLnJlcTsKPiA+ ID4gKyAgICAgdjRsMl9tMm1fYnVmX2NvcHlfbWV0YWRhdGEoJnNyY19idWZfaW5mby0+bTJtX2J1 Zi52YiwKPiA+ID4gJmxhdF9idWYtPnRzX2luZm8sIHRydWUpOwo+ID4gPiArCj4gPiA+ICsgICAg ICpyZXNfY2hnID0gaW5zdC0+cmVzb2x1dGlvbl9jaGFuZ2VkOwo+ID4gPiArICAgICBpZiAoaW5z dC0+cmVzb2x1dGlvbl9jaGFuZ2VkKSB7Cj4gPiA+ICsgICAgICAgICAgICAgbXRrX3Zjb2RlY19k ZWJ1ZyhpbnN0LCAiLSByZXNvbHV0aW9uIGNoYW5nZWQgLSIpOwo+ID4gPiArICAgICAgICAgICAg IGlmIChpbnN0LT5yZWFsbG9jX212X2J1Zikgewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ZXJyID0gdmRlY19oZXZjX3NsaWNlX2FsbG9jX212X2J1ZihpbnN0LAo+ID4gPiAmaW5zdC0+Y3R4 LT5waWNpbmZvKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGluc3QtPnJlYWxsb2NfbXZf YnVmID0gZmFsc2U7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPiArICAgICAgICAg ICAgIH0KPiA+ID4gKyAgICAgICAgICAgICBpbnN0LT5yZXNvbHV0aW9uX2NoYW5nZWQgPSBmYWxz ZTsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBIRVZD X01BWF9NVl9OVU07IGkrKykgewo+ID4gPiArICAgICAgICAgICAgIG1lbSA9ICZpbnN0LT5tdl9i dWZbaV07Cj4gPiA+ICsgICAgICAgICAgICAgaW5zdC0+dnNpLT5tdl9idWZfZG1hW2ldLmRtYV9h ZGRyID0gbWVtLT5kbWFfYWRkcjsKPiA+ID4gKyAgICAgICAgICAgICBpbnN0LT52c2ktPm12X2J1 Zl9kbWFbaV0uc2l6ZSA9IG1lbS0+c2l6ZTsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsg ICAgIGluc3QtPnZzaS0+dWJlLmRtYV9hZGRyID0gbGF0X2J1Zi0+Y3R4LQo+ID4gPiA+IG1zZ19x dWV1ZS53ZG1hX2FkZHIuZG1hX2FkZHI7Cj4gPiA+ICsgICAgIGluc3QtPnZzaS0+dWJlLnNpemUg PSBsYXRfYnVmLT5jdHgtPm1zZ19xdWV1ZS53ZG1hX2FkZHIuc2l6ZTsKPiA+ID4gKwo+ID4gPiAr ICAgICBpbnN0LT52c2ktPmVycl9tYXAuZG1hX2FkZHIgPSBsYXRfYnVmLQo+ID4gPiA+IHdkbWFf ZXJyX2FkZHIuZG1hX2FkZHI7Cj4gPiA+ICsgICAgIGluc3QtPnZzaS0+ZXJyX21hcC5zaXplID0g bGF0X2J1Zi0+d2RtYV9lcnJfYWRkci5zaXplOwo+ID4gPiArCj4gPiA+ICsgICAgIGluc3QtPnZz aS0+c2xpY2VfYmMuZG1hX2FkZHIgPSBsYXRfYnVmLQo+ID4gPiA+IHNsaWNlX2JjX2FkZHIuZG1h X2FkZHI7Cj4gPiA+ICsgICAgIGluc3QtPnZzaS0+c2xpY2VfYmMuc2l6ZSA9IGxhdF9idWYtPnNs aWNlX2JjX2FkZHIuc2l6ZTsKPiA+ID4gKwo+ID4gPiArICAgICBpbnN0LT52c2ktPnRyYW5zLmRt YV9hZGRyX2VuZCA9IGluc3QtPmN0eC0KPiA+ID4gPiBtc2dfcXVldWUud2RtYV9ycHRyX2FkZHI7 Cj4gPiA+ICsgICAgIGluc3QtPnZzaS0+dHJhbnMuZG1hX2FkZHIgPSBpbnN0LT5jdHgtCj4gPiA+ ID4gbXNnX3F1ZXVlLndkbWFfd3B0cl9hZGRyOwo+ID4gPiArCj4gPiA+ICsgICAgIHNoYXJlX2lu Zm8gPSBsYXRfYnVmLT5wcml2YXRlX2RhdGE7Cj4gPiA+ICsgICAgIHNoYXJlX2luZm8tPnRyYW5z LmRtYV9hZGRyID0gaW5zdC0+dnNpLT50cmFucy5kbWFfYWRkcjsKPiA+ID4gKyAgICAgc2hhcmVf aW5mby0+dHJhbnMuZG1hX2FkZHJfZW5kID0gaW5zdC0+dnNpLQo+ID4gPiA+IHRyYW5zLmRtYV9h ZGRyX2VuZDsKPiA+ID4gKwo+ID4gPiArICAgICBtdGtfdmNvZGVjX2RlYnVnKGluc3QsICJsYXQ6 IHViZSBhZGRyL3NpemUoMHglbGx4IDB4JWxseCkKPiA+ID4gZXJyOjB4JWxseCIsCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNpLT51YmUuYnVmLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgIGluc3QtPnZzaS0+dWJlLnBhZGRpbmcsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgaW5zdC0+dnNpLT5lcnJfbWFwLmJ1Zik7Cj4gPiA+ICsKPiA+ID4gKyAgICAgbXRr X3Zjb2RlY19kZWJ1ZyhpbnN0LCAic2xpY2UgYWRkci9zaXplKDB4JWxseCAweCVsbHgpIHRyYW5z Cj4gPiA+IHN0YXJ0L2VuZCgoMHglbGx4IDB4JWxseCkpIiwKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBpbnN0LT52c2ktPnNsaWNlX2JjLmJ1ZiwKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICBpbnN0LT52c2ktPnNsaWNlX2JjLnBhZGRpbmcsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgaW5zdC0+dnNpLT50cmFucy5idWYsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg aW5zdC0+dnNpLT50cmFucy5wYWRkaW5nKTsKPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gMDsK PiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCB2ZGVjX2hldmNfc2xpY2Vfc2V0dXBf Y29yZV9idWZmZXIoc3RydWN0Cj4gPiA+IHZkZWNfaGV2Y19zbGljZV9pbnN0ICppbnN0LAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0Cj4gPiA+ IHZkZWNfaGV2Y19zbGljZV9zaGFyZV9pbmZvICpzaGFyZV9pbmZvLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZkZWNfbGF0X2J1Zgo+ID4g PiAqbGF0X2J1ZikKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IG10a192Y29kZWNfbWVtICpt ZW07Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4ID0gaW5zdC0+Y3R4Owo+ ID4gPiArICAgICBzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YjJfdjRsMjsKPiA+ID4gKyAgICAg c3RydWN0IHZkZWNfZmIgKmZiOwo+ID4gPiArICAgICB1NjQgeV9mYl9kbWEsIGNfZmJfZG1hOwo+ ID4gPiArICAgICBpbnQgaTsKPiA+ID4gKwo+ID4gPiArICAgICBmYiA9IGN0eC0+ZGV2LT52ZGVj X3BkYXRhLT5nZXRfY2FwX2J1ZmZlcihjdHgpOwo+ID4gPiArICAgICBpZiAoIWZiKSB7Cj4gPiA+ ICsgICAgICAgICAgICAgbXRrX3Zjb2RlY19lcnIoaW5zdCwgImZiIGJ1ZmZlciBpcyBOVUxMIik7 Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKPiA+ID4gKyAgICAgfQo+ID4gPiAr Cj4gPiA+ICsgICAgIHlfZmJfZG1hID0gKHU2NClmYi0+YmFzZV95LmRtYV9hZGRyOwo+ID4gPiAr ICAgICBpZiAoY3R4LT5xX2RhdGFbTVRLX1FfREFUQV9EU1RdLmZtdC0+bnVtX3BsYW5lcyA9PSAx KQo+ID4gPiArICAgICAgICAgICAgIGNfZmJfZG1hID0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHlfZmJfZG1hICsgaW5zdC0+Y3R4LT5waWNpbmZvLmJ1Zl93ICogaW5zdC0KPiA+ID4gPiBj dHgtPnBpY2luZm8uYnVmX2g7Cj4gPiA+ICsgICAgIGVsc2UKPiA+ID4gKyAgICAgICAgICAgICBj X2ZiX2RtYSA9ICh1NjQpZmItPmJhc2VfYy5kbWFfYWRkcjsKPiA+ID4gKwo+ID4gPiArICAgICBt dGtfdmNvZGVjX2RlYnVnKGluc3QsICJbaGV2Yy1jb3JlXSB5L2MgYWRkciA9IDB4JWxseAo+ID4g PiAweCVsbHgiLCB5X2ZiX2RtYSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBjX2ZiX2Rt YSk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPmZiLnkuZG1hX2FkZHIgPSB5 X2ZiX2RtYTsKPiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPmZiLnkuc2l6ZSA9IGN0eC0+cGlj aW5mby5mYl9zelswXTsKPiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPmZiLmMuZG1hX2FkZHIg PSBjX2ZiX2RtYTsKPiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPmZiLnkuc2l6ZSA9IGN0eC0+ cGljaW5mby5mYl9zelsxXTsKPiA+ID4gKwo+ID4gPiArICAgICBpbnN0LT52c2lfY29yZS0+ZGVj LnZkZWNfZmJfdmEgPSAodW5zaWduZWQgbG9uZylmYjsKPiA+ID4gKwo+ID4gPiArICAgICBpbnN0 LT52c2lfY29yZS0+dWJlLmRtYV9hZGRyID0gbGF0X2J1Zi0+Y3R4LQo+ID4gPiA+IG1zZ19xdWV1 ZS53ZG1hX2FkZHIuZG1hX2FkZHI7Cj4gPiA+ICsgICAgIGluc3QtPnZzaV9jb3JlLT51YmUuc2l6 ZSA9IGxhdF9idWYtPmN0eC0KPiA+ID4gPiBtc2dfcXVldWUud2RtYV9hZGRyLnNpemU7Cj4gPiA+ ICsKPiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPmVycl9tYXAuZG1hX2FkZHIgPSBsYXRfYnVm LQo+ID4gPiA+IHdkbWFfZXJyX2FkZHIuZG1hX2FkZHI7Cj4gPiA+ICsgICAgIGluc3QtPnZzaV9j b3JlLT5lcnJfbWFwLnNpemUgPSBsYXRfYnVmLT53ZG1hX2Vycl9hZGRyLnNpemU7Cj4gPiA+ICsK PiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPnNsaWNlX2JjLmRtYV9hZGRyID0gbGF0X2J1Zi0K PiA+ID4gPiBzbGljZV9iY19hZGRyLmRtYV9hZGRyOwo+ID4gPiArICAgICBpbnN0LT52c2lfY29y ZS0+c2xpY2VfYmMuc2l6ZSA9IGxhdF9idWYtPnNsaWNlX2JjX2FkZHIuc2l6ZTsKPiA+ID4gKwo+ ID4gPiArICAgICBpbnN0LT52c2lfY29yZS0+dHJhbnMuZG1hX2FkZHIgPSBzaGFyZV9pbmZvLT50 cmFucy5kbWFfYWRkcjsKPiA+ID4gKyAgICAgaW5zdC0+dnNpX2NvcmUtPnRyYW5zLmRtYV9hZGRy X2VuZCA9IHNoYXJlX2luZm8tCj4gPiA+ID4gdHJhbnMuZG1hX2FkZHJfZW5kOwo+ID4gPiArCj4g PiA+ICsgICAgIGluc3QtPnZzaV9jb3JlLT53cmFwLmRtYV9hZGRyID0gaW5zdC0+d3JhcF9hZGRy LmRtYV9hZGRyOwo+ID4gPiArICAgICBpbnN0LT52c2lfY29yZS0+d3JhcC5zaXplID0gaW5zdC0+ d3JhcF9hZGRyLnNpemU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEhFVkNf TUFYX01WX05VTTsgaSsrKSB7Cj4gPiA+ICsgICAgICAgICAgICAgbWVtID0gJmluc3QtPm12X2J1 ZltpXTsKPiA+ID4gKyAgICAgICAgICAgICBpbnN0LT52c2lfY29yZS0+bXZfYnVmX2RtYVtpXS5k bWFfYWRkciA9IG1lbS0KPiA+ID4gPiBkbWFfYWRkcjsKPiA+ID4gKyAgICAgICAgICAgICBpbnN0 LT52c2lfY29yZS0+bXZfYnVmX2RtYVtpXS5zaXplID0gbWVtLT5zaXplOwo+ID4gPiArICAgICB9 Cj4gPiA+ICsKPiA+ID4gKyAgICAgdmIyX3Y0bDIgPSB2NGwyX20ybV9uZXh0X2RzdF9idWYoY3R4 LT5tMm1fY3R4KTsKPiA+ID4gKyAgICAgdjRsMl9tMm1fYnVmX2NvcHlfbWV0YWRhdGEoJmxhdF9i dWYtPnRzX2luZm8sIHZiMl92NGwyLAo+ID4gPiB0cnVlKTsKPiA+ID4gKwo+ID4gPiArICAgICBy ZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCB2ZGVjX2hldmNfc2xp Y2VfaW5pdChzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkKPiA+ID4gK3sKPiA+ID4gKyAgICAg c3RydWN0IHZkZWNfaGV2Y19zbGljZV9pbnN0ICppbnN0Owo+ID4gPiArICAgICBpbnQgZXJyLCB2 c2lfc2l6ZTsKPiA+ID4gKwo+ID4gPiArICAgICBpbnN0ID0ga3phbGxvYyhzaXplb2YoKmluc3Qp LCBHRlBfS0VSTkVMKTsKPiA+ID4gKyAgICAgaWYgKCFpbnN0KQo+ID4gPiArICAgICAgICAgICAg IHJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsgICAgIGluc3QtPmN0eCA9IGN0eDsKPiA+ ID4gKwo+ID4gPiArICAgICBpbnN0LT52cHUuaWQgPSBTQ1BfSVBJX1ZERUNfTEFUOwo+ID4gPiAr ICAgICBpbnN0LT52cHUuY29yZV9pZCA9IFNDUF9JUElfVkRFQ19DT1JFOwo+ID4gPiArICAgICBp bnN0LT52cHUuY3R4ID0gY3R4Owo+ID4gPiArICAgICBpbnN0LT52cHUuY29kZWNfdHlwZSA9IGN0 eC0+Y3VycmVudF9jb2RlYzsKPiA+ID4gKyAgICAgaW5zdC0+dnB1LmNhcHR1cmVfdHlwZSA9IGN0 eC0+Y2FwdHVyZV9mb3VyY2M7Cj4gPiA+ICsKPiA+ID4gKyAgICAgY3R4LT5kcnZfaGFuZGxlID0g aW5zdDsKPiA+ID4gKyAgICAgZXJyID0gdnB1X2RlY19pbml0KCZpbnN0LT52cHUpOwo+ID4gPiAr ICAgICBpZiAoZXJyKSB7Cj4gPiA+ICsgICAgICAgICAgICAgbXRrX3Zjb2RlY19lcnIoaW5zdCwg InZkZWNfaGV2YyBpbml0IGVycj0lZCIsIGVycik7Cj4gPiA+ICsgICAgICAgICAgICAgZ290byBl cnJvcl9mcmVlX2luc3Q7Cj4gPiA+ICsgICAgIH0KPiA+ID4gKwo+ID4gPiArICAgICB2c2lfc2l6 ZSA9IHJvdW5kX3VwKHNpemVvZihzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX3ZzaSksCj4gPiA+IFZD T0RFQ19ERUNfQUxJR05FRF82NCk7Cj4gPiA+ICsgICAgIGluc3QtPnZzaSA9IGluc3QtPnZwdS52 c2k7Cj4gPiA+ICsgICAgIGluc3QtPnZzaV9jb3JlID0KPiA+ID4gKyAgICAgICAgICAgICAoc3Ry dWN0IHZkZWNfaGV2Y19zbGljZV92c2kgKikoKChjaGFyICopaW5zdC0KPiA+ID4gPiB2cHUudnNp KSArIHZzaV9zaXplKTsKPiA+ID4gKwo+ID4gPiArICAgICBpbnN0LT5yZXNvbHV0aW9uX2NoYW5n ZWQgPSB0cnVlOwo+ID4gPiArICAgICBpbnN0LT5yZWFsbG9jX212X2J1ZiA9IHRydWU7Cj4gPiA+ ICsKPiA+ID4gKyAgICAgaW5zdC0+d3JhcF9hZGRyLnNpemUgPSBWREVDX0hFVkNfV1JBUF9TWjsK PiA+ID4gKyAgICAgZXJyID0gbXRrX3Zjb2RlY19tZW1fYWxsb2MoY3R4LCAmaW5zdC0+d3JhcF9h ZGRyKTsKPiA+ID4gKyAgICAgaWYgKGVycikKPiA+ID4gKyAgICAgICAgICAgICBnb3RvIGVycm9y X2ZyZWVfaW5zdDsKPiA+ID4gKwo+ID4gPiArICAgICBtdGtfdmNvZGVjX2RlYnVnKGluc3QsICJs YXQgc3RydWN0IHNpemUgPSAlZCwlZCwlZCwlZCB2c2k6Cj4gPiA+ICVkXG4iLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHN0cnVjdCBtdGtfaGV2Y19zcHNfcGFyYW0p LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHN0cnVjdCBtdGtfaGV2 Y19wcHNfcGFyYW0pLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHN0 cnVjdAo+ID4gPiB2ZGVjX2hldmNfc2xpY2VfbGF0X2RlY19wYXJhbSksCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgKGludClzaXplb2Yoc3RydWN0IG10a19oZXZjX2RwYl9pbmZvKSwKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICB2c2lfc2l6ZSk7Cj4gPiA+ICsgICAgIG10a192Y29k ZWNfZGVidWcoaW5zdCwgImxhdCBoZXZjIGluc3RhbmNlID4+ICVwLCBjb2RlY190eXBlID0KPiA+ ID4gMHgleCIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgaW5zdCwgaW5zdC0+dnB1LmNv ZGVjX3R5cGUpOwo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiArZXJyb3JfZnJl ZV9pbnN0Ogo+ID4gPiArICAgICBrZnJlZShpbnN0KTsKPiA+ID4gKyAgICAgcmV0dXJuIGVycjsK PiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgdmRlY19oZXZjX3NsaWNlX2RlaW5p dCh2b2lkICpoX3ZkZWMpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX2hldmNfc2xp Y2VfaW5zdCAqaW5zdCA9IGhfdmRlYzsKPiA+ID4gKyAgICAgc3RydWN0IG10a192Y29kZWNfbWVt ICptZW07Cj4gPiA+ICsKPiA+ID4gKyAgICAgbXRrX3Zjb2RlY19kZWJ1Z19lbnRlcihpbnN0KTsK PiA+ID4gKwo+ID4gPiArICAgICB2cHVfZGVjX2RlaW5pdCgmaW5zdC0+dnB1KTsKPiA+ID4gKyAg ICAgdmRlY19oZXZjX3NsaWNlX2ZyZWVfbXZfYnVmKGluc3QpOwo+ID4gPiArCj4gPiA+ICsgICAg IG1lbSA9ICZpbnN0LT53cmFwX2FkZHI7Cj4gPiA+ICsgICAgIGlmIChtZW0tPnZhKQo+ID4gPiAr ICAgICAgICAgICAgIG10a192Y29kZWNfbWVtX2ZyZWUoaW5zdC0+Y3R4LCBtZW0pOwo+ID4gPiAr Cj4gPiA+ICsgICAgIHZkZWNfbXNnX3F1ZXVlX2RlaW5pdCgmaW5zdC0+Y3R4LT5tc2dfcXVldWUs IGluc3QtPmN0eCk7Cj4gPiA+ICsgICAgIGtmcmVlKGluc3QpOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgaW50IHZkZWNfaGV2Y19zbGljZV9jb3JlX2RlY29kZShzdHJ1Y3QgdmRlY19s YXRfYnVmCj4gPiA+ICpsYXRfYnVmKQo+ID4gPiArewo+ID4gPiArICAgICBpbnQgZXJyLCB0aW1l b3V0Owo+ID4gPiArICAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCA9IGxhdF9idWYtPmN0 eDsKPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfaGV2Y19zbGljZV9pbnN0ICppbnN0ID0gY3R4LT5k cnZfaGFuZGxlOwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY19oZXZjX3NsaWNlX3NoYXJlX2luZm8g KnNoYXJlX2luZm8gPSBsYXRfYnVmLQo+ID4gPiA+IHByaXZhdGVfZGF0YTsKPiA+ID4gKyAgICAg c3RydWN0IHZkZWNfdnB1X2luc3QgKnZwdSA9ICZpbnN0LT52cHU7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgbXRrX3Zjb2RlY19kZWJ1ZyhpbnN0LCAiW2hldmMtY29yZV0gdmRlY19oZXZjIGNvcmUgZGVj b2RlIik7Cj4gPiA+ICsgICAgIG1lbWNweSgmaW5zdC0+dnNpX2NvcmUtPmhldmNfc2xpY2VfcGFy YW1zLCAmc2hhcmVfaW5mby0KPiA+ID4gPiBoZXZjX3NsaWNlX3BhcmFtcywKPiA+ID4gKyAgICAg ICAgICAgIHNpemVvZihzaGFyZV9pbmZvLT5oZXZjX3NsaWNlX3BhcmFtcykpOwo+ID4gPiArCj4g PiA+ICsgICAgIGVyciA9IHZkZWNfaGV2Y19zbGljZV9zZXR1cF9jb3JlX2J1ZmZlcihpbnN0LCBz aGFyZV9pbmZvLAo+ID4gPiBsYXRfYnVmKTsKPiA+ID4gKyAgICAgaWYgKGVycikKPiA+ID4gKyAg ICAgICAgICAgICBnb3RvIHZkZWNfZGVjX2VuZDsKPiA+ID4gKwo+ID4gPiArICAgICB2ZGVjX2hl dmNfc2xpY2VfZmlsbF9kZWNvZGVfcmVmbGlzdChpbnN0LCAmaW5zdC0+dnNpX2NvcmUtCj4gPiA+ ID4gaGV2Y19zbGljZV9wYXJhbXMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNoYXJlX2luZm8pOwo+ID4gPiArICAgICBlcnIgPSB2cHVfZGVjX2NvcmUo dnB1KTsKPiA+ID4gKyAgICAgaWYgKGVycikgewo+ID4gPiArICAgICAgICAgICAgIG10a192Y29k ZWNfZXJyKGluc3QsICJjb3JlIGRlY29kZSBlcnI9JWQiLCBlcnIpOwo+ID4gPiArICAgICAgICAg ICAgIGdvdG8gdmRlY19kZWNfZW5kOwo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAg Lyogd2FpdCBkZWNvZGVyIGRvbmUgaW50ZXJydXB0ICovCj4gPiA+ICsgICAgIHRpbWVvdXQgPSBt dGtfdmNvZGVjX3dhaXRfZm9yX2RvbmVfY3R4KGluc3QtPmN0eCwKPiA+ID4gTVRLX0lOU1RfSVJR X1JFQ0VJVkVELAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBXQUlUX0lOVFJfVElNRU9VVF9NUywKPiA+ID4gTVRLX1ZERUNfQ09SRSk7Cj4gPiA+ICsg ICAgIGlmICh0aW1lb3V0KQo+ID4gPiArICAgICAgICAgICAgIG10a192Y29kZWNfZXJyKGluc3Qs ICJjb3JlIGRlY29kZSB0aW1lb3V0OiBwaWNfJWQiLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+ZGVjb2RlZF9mcmFtZV9jbnQpOwo+ID4gPiArICAgICBpbnN0LT52c2lf Y29yZS0+ZGVjLnRpbWVvdXQgPSAhIXRpbWVvdXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgdnB1X2Rl Y19jb3JlX2VuZCh2cHUpOwo+ID4gPiArICAgICBtdGtfdmNvZGVjX2RlYnVnKGluc3QsICJwaWNb JWRdIGNyYzogMHgleCAweCV4IDB4JXggMHgleCAweCV4Cj4gPiA+IDB4JXggMHgleCAweCV4IiwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBjdHgtPmRlY29kZWRfZnJhbWVfY250LAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgIGluc3QtPnZzaV9jb3JlLT5kZWMuY3JjWzBdLCBpbnN0 LT52c2lfY29yZS0KPiA+ID4gPiBkZWMuY3JjWzFdLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgIGluc3QtPnZzaV9jb3JlLT5kZWMuY3JjWzJdLCBpbnN0LT52c2lfY29yZS0KPiA+ID4gPiBk ZWMuY3JjWzNdLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGluc3QtPnZzaV9jb3JlLT5k ZWMuY3JjWzRdLCBpbnN0LT52c2lfY29yZS0KPiA+ID4gPiBkZWMuY3JjWzVdLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgIGluc3QtPnZzaV9jb3JlLT5kZWMuY3JjWzZdLCBpbnN0LT52c2lf Y29yZS0KPiA+ID4gPiBkZWMuY3JjWzddKTsKPiA+ID4gKwo+ID4gPiArdmRlY19kZWNfZW5kOgo+ ID4gPiArICAgICB2ZGVjX21zZ19xdWV1ZV91cGRhdGVfdWJlX3JwdHIoJmxhdF9idWYtPmN0eC0+ bXNnX3F1ZXVlLAo+ID4gPiBzaGFyZV9pbmZvLT50cmFucy5kbWFfYWRkcl9lbmQpOwo+ID4gPiAr ICAgICBjdHgtPmRldi0+dmRlY19wZGF0YS0+Y2FwX3RvX2Rpc3AoY3R4LCAhIWVyciwgbGF0X2J1 Zi0KPiA+ID4gPiBzcmNfYnVmX3JlcSk7Cj4gPiA+ICsgICAgIG10a192Y29kZWNfZGVidWcoaW5z dCwgImNvcmUgZGVjb2RlIGRvbmUgZXJyPSVkIiwgZXJyKTsKPiA+ID4gKyAgICAgY3R4LT5kZWNv ZGVkX2ZyYW1lX2NudCsrOwo+ID4gPiArICAgICByZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCB2ZGVjX2hldmNfc2xpY2VfbGF0X2RlY29kZSh2b2lkICpoX3ZkZWMs IHN0cnVjdAo+ID4gPiBtdGtfdmNvZGVjX21lbSAqYnMsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2ZGVjX2ZiICpmYiwgYm9vbAo+ID4gPiAqcmVzX2No ZykKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfaGV2Y19zbGljZV9pbnN0ICppbnN0 ID0gaF92ZGVjOwo+ID4gPiArICAgICBzdHJ1Y3QgdmRlY192cHVfaW5zdCAqdnB1ID0gJmluc3Qt PnZwdTsKPiA+ID4gKwo+ID4gPiArICAgICBpbnQgZXJyLCB0aW1lb3V0ID0gMDsKPiA+ID4gKyAg ICAgdW5zaWduZWQgaW50IGRhdGFbMl07Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX2xhdF9idWYg KmxhdF9idWY7Cj4gPiA+ICsgICAgIHN0cnVjdCB2ZGVjX2hldmNfc2xpY2Vfc2hhcmVfaW5mbyAq c2hhcmVfaW5mbzsKPiA+ID4gKwo+ID4gPiArICAgICBpZiAodmRlY19tc2dfcXVldWVfaW5pdCgm aW5zdC0+Y3R4LT5tc2dfcXVldWUsIGluc3QtPmN0eCwKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmRlY19oZXZjX3NsaWNlX2NvcmVfZGVjb2RlLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2YoKnNoYXJlX2luZm8pKSkKPiA+ID4gKyAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gKwo+ID4gPiArICAgICAvKiBicyBOVUxMIG1lYW5z IGZsdXNoIGRlY29kZXIgKi8KPiA+ID4gKyAgICAgaWYgKCFicykgewo+ID4gPiArICAgICAgICAg ICAgIHZkZWNfbXNnX3F1ZXVlX3dhaXRfbGF0X2J1Zl9mdWxsKCZpbnN0LT5jdHgtCj4gPiA+ID4g bXNnX3F1ZXVlKTsKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gdnB1X2RlY19yZXNldCh2cHUp Owo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgbGF0X2J1ZiA9IHZkZWNfbXNnX3F1 ZXVlX2RxYnVmKCZpbnN0LT5jdHgtCj4gPiA+ID4gbXNnX3F1ZXVlLmxhdF9jdHgpOwo+ID4gPiAr ICAgICBpZiAoIWxhdF9idWYpIHsKPiA+ID4gKyAgICAgICAgICAgICBtdGtfdmNvZGVjX2RlYnVn KGluc3QsICJmYWlsZWQgdG8gZ2V0IGxhdCBidWZmZXIiKTsKPiA+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVBR0FJTjsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIHNoYXJlX2lu Zm8gPSBsYXRfYnVmLT5wcml2YXRlX2RhdGE7Cj4gPiA+ICsgICAgIGVyciA9IHZkZWNfaGV2Y19z bGljZV9maWxsX2RlY29kZV9wYXJhbWV0ZXJzKGluc3QsCj4gPiA+IHNoYXJlX2luZm8pOwo+ID4g PiArICAgICBpZiAoZXJyKQo+ID4gPiArICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfZmJfb3V0 Owo+ID4gPiArCj4gPiA+ICsgICAgIGVyciA9IHZkZWNfaGV2Y19zbGljZV9zZXR1cF9sYXRfYnVm ZmVyKGluc3QsIGJzLCBsYXRfYnVmLAo+ID4gPiByZXNfY2hnKTsKPiA+ID4gKyAgICAgaWYgKGVy cikKPiA+ID4gKyAgICAgICAgICAgICBnb3RvIGVycl9mcmVlX2ZiX291dDsKPiA+ID4gKwo+ID4g PiArICAgICBlcnIgPSB2cHVfZGVjX3N0YXJ0KHZwdSwgZGF0YSwgMik7Cj4gPiA+ICsgICAgIGlm IChlcnIpIHsKPiA+ID4gKyAgICAgICAgICAgICBtdGtfdmNvZGVjX2RlYnVnKGluc3QsICJsYXQg ZGVjb2RlIGVycjogJWQiLCBlcnIpOwo+ID4gPiArICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVf ZmJfb3V0Owo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKElTX1ZERUNfSU5O RVJfUkFDSU5HKGluc3QtPmN0eC0+ZGV2LT5kZWNfY2FwYWJpbGl0eSkpIHsKPiA+ID4gKyAgICAg ICAgICAgICBtZW1jcHkoJnNoYXJlX2luZm8tPmhldmNfc2xpY2VfcGFyYW1zLCAmaW5zdC0+dnNp LQo+ID4gPiA+IGhldmNfc2xpY2VfcGFyYW1zLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICBz aXplb2Yoc2hhcmVfaW5mby0+aGV2Y19zbGljZV9wYXJhbXMpKTsKPiA+ID4gKyAgICAgICAgICAg ICB2ZGVjX21zZ19xdWV1ZV9xYnVmKCZpbnN0LT5jdHgtPmRldi0KPiA+ID4gPiBtc2dfcXVldWVf Y29yZV9jdHgsIGxhdF9idWYpOwo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgLyog d2FpdCBkZWNvZGVyIGRvbmUgaW50ZXJydXB0ICovCj4gPiA+ICsgICAgIHRpbWVvdXQgPSBtdGtf dmNvZGVjX3dhaXRfZm9yX2RvbmVfY3R4KGluc3QtPmN0eCwKPiA+ID4gTVRLX0lOU1RfSVJRX1JF Q0VJVkVELAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBXQUlUX0lOVFJfVElNRU9VVF9NUywKPiA+ID4gTVRLX1ZERUNfTEFUMCk7Cj4gPiA+ICsgICAg IGlmICh0aW1lb3V0KQo+ID4gPiArICAgICAgICAgICAgIG10a192Y29kZWNfZXJyKGluc3QsICJs YXQgZGVjb2RlIHRpbWVvdXQ6IHBpY18lZCIsCj4gPiA+IGluc3QtPnNsaWNlX2RlY19udW0pOwo+ ID4gPiArICAgICBpbnN0LT52c2ktPmRlYy50aW1lb3V0ID0gISF0aW1lb3V0Owo+ID4gPiArCj4g PiA+ICsgICAgIGVyciA9IHZwdV9kZWNfZW5kKHZwdSk7Cj4gPiA+ICsgICAgIGlmIChlcnIgPT0g U0xJQ0VfSEVBREVSX0ZVTEwgfHwgZXJyID09IFRSQU5TX0JVRkZFUl9GVUxMKSB7Cj4gPiA+ICsg ICAgICAgICAgICAgaWYgKCFJU19WREVDX0lOTkVSX1JBQ0lORyhpbnN0LT5jdHgtPmRldi0KPiA+ ID4gPiBkZWNfY2FwYWJpbGl0eSkpCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICB2ZGVjX21z Z19xdWV1ZV9xYnVmKCZpbnN0LT5jdHgtCj4gPiA+ID4gbXNnX3F1ZXVlLmxhdF9jdHgsIGxhdF9i dWYpOwo+ID4gPiArICAgICAgICAgICAgIGluc3QtPnNsaWNlX2RlY19udW0rKzsKPiA+ID4gKyAg ICAgICAgICAgICBtdGtfdmNvZGVjX2VycihpbnN0LCAibGF0IGRlYyBmYWlsOiBwaWNfJWQgZXJy OiVkIiwKPiA+ID4gaW5zdC0+c2xpY2VfZGVjX251bSwgZXJyKTsKPiA+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIHNoYXJl X2luZm8tPnRyYW5zLmRtYV9hZGRyX2VuZCA9IGluc3QtPmN0eC0KPiA+ID4gPiBtc2dfcXVldWUu d2RtYV9hZGRyLmRtYV9hZGRyICsKPiA+ID4gKyAgICAgICAgICAgICBpbnN0LT52c2ktPmRlYy53 ZG1hX2VuZF9hZGRyX29mZnNldDsKPiA+ID4gKyAgICAgdmRlY19tc2dfcXVldWVfdXBkYXRlX3Vi ZV93cHRyKCZsYXRfYnVmLT5jdHgtPm1zZ19xdWV1ZSwKPiA+ID4gc2hhcmVfaW5mby0+dHJhbnMu ZG1hX2FkZHJfZW5kKTsKPiA+ID4gKwo+ID4gPiArICAgICBpZiAoIUlTX1ZERUNfSU5ORVJfUkFD SU5HKGluc3QtPmN0eC0+ZGV2LT5kZWNfY2FwYWJpbGl0eSkpIHsKPiA+ID4gKyAgICAgICAgICAg ICBtZW1jcHkoJnNoYXJlX2luZm8tPmhldmNfc2xpY2VfcGFyYW1zLCAmaW5zdC0+dnNpLQo+ID4g PiA+IGhldmNfc2xpY2VfcGFyYW1zLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICBzaXplb2Yo c2hhcmVfaW5mby0+aGV2Y19zbGljZV9wYXJhbXMpKTsKPiA+ID4gKyAgICAgICAgICAgICB2ZGVj X21zZ19xdWV1ZV9xYnVmKCZpbnN0LT5jdHgtPmRldi0KPiA+ID4gPiBtc2dfcXVldWVfY29yZV9j dHgsIGxhdF9idWYpOwo+ID4gPiArICAgICB9Cj4gPiA+ICsgICAgIG10a192Y29kZWNfZGVidWco aW5zdCwgImRlYyBudW06ICVkIGxhdCBjcmM6IDB4JXggMHgleCAweCV4IiwKPiA+ID4gaW5zdC0+ c2xpY2VfZGVjX251bSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpbnN0LT52c2ktPmRl Yy5jcmNbMF0sIGluc3QtPnZzaS0KPiA+ID4gPiBkZWMuY3JjWzFdLCBpbnN0LT52c2ktPmRlYy5j cmNbMl0pOwo+ID4gPiArCj4gPiA+ICsgICAgIGluc3QtPnNsaWNlX2RlY19udW0rKzsKPiA+ID4g KyAgICAgcmV0dXJuIDA7Cj4gPiA+ICtlcnJfZnJlZV9mYl9vdXQ6Cj4gPiA+ICsgICAgIHZkZWNf bXNnX3F1ZXVlX3FidWYoJmluc3QtPmN0eC0+bXNnX3F1ZXVlLmxhdF9jdHgsIGxhdF9idWYpOwo+ ID4gPiArICAgICBtdGtfdmNvZGVjX2VycihpbnN0LCAic2xpY2UgZGVjIG51bWJlcjogJWQgZXJy OiAlZCIsIGluc3QtCj4gPiA+ID4gc2xpY2VfZGVjX251bSwgZXJyKTsKPiA+ID4gKyAgICAgcmV0 dXJuIGVycjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCB2ZGVjX2hldmNfc2xp Y2VfZGVjb2RlKHZvaWQgKmhfdmRlYywgc3RydWN0Cj4gPiA+IG10a192Y29kZWNfbWVtICpicywK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19mYiAqdW51 c2VkLCBib29sCj4gPiA+ICpyZXNfY2hnKQo+ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3QgdmRl Y19oZXZjX3NsaWNlX2luc3QgKmluc3QgPSBoX3ZkZWM7Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYg KCFoX3ZkZWMgfHwgaW5zdC0+Y3R4LT5kZXYtPnZkZWNfcGRhdGEtPmh3X2FyY2ggPT0KPiA+ID4g TVRLX1ZERUNfUFVSRV9TSU5HTEVfQ09SRSkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gdmRlY19oZXZjX3NsaWNlX2xhdF9kZWNv ZGUoaF92ZGVjLCBicywgdW51c2VkLAo+ID4gPiByZXNfY2hnKTsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCB2ZGVjX2hldmNfc2xpY2VfZ2V0X3BhcmFtKHZvaWQgKmhfdmRlYywg ZW51bQo+ID4gPiB2ZGVjX2dldF9wYXJhbV90eXBlIHR5cGUsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0KQo+ID4gPiArewo+ID4gPiArICAgICBzdHJ1 Y3QgdmRlY19oZXZjX3NsaWNlX2luc3QgKmluc3QgPSBoX3ZkZWM7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgc3dpdGNoICh0eXBlKSB7Cj4gPiA+ICsgICAgIGNhc2UgR0VUX1BBUkFNX1BJQ19JTkZPOgo+ ID4gPiArICAgICAgICAgICAgIHZkZWNfaGV2Y19zbGljZV9nZXRfcGljX2luZm8oaW5zdCk7Cj4g PiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgR0VUX1BBUkFNX0RQQl9T SVpFOgo+ID4gPiArICAgICAgICAgICAgICoodW5zaWduZWQgaW50ICopb3V0ID0gNjsKPiA+ID4g KyAgICAgICAgICAgICBicmVhazsKPiA+ID4gKyAgICAgY2FzZSBHRVRfUEFSQU1fQ1JPUF9JTkZP Ogo+ID4gPiArICAgICAgICAgICAgIHZkZWNfaGV2Y19zbGljZV9nZXRfY3JvcF9pbmZvKGluc3Qs IG91dCk7Cj4gPiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGRlZmF1bHQ6Cj4g PiA+ICsgICAgICAgICAgICAgbXRrX3Zjb2RlY19lcnIoaW5zdCwgImludmFsaWQgZ2V0IHBhcmFt ZXRlciB0eXBlPSVkIiwKPiA+ID4gdHlwZSk7Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gPiA+ICsgICAgIH0KPiA+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ ICsKPiA+ID4gK2NvbnN0IHN0cnVjdCB2ZGVjX2NvbW1vbl9pZiB2ZGVjX2hldmNfc2xpY2VfbXVs dGlfaWYgPSB7Cj4gPiA+ICsgICAgIC5pbml0ICAgICAgICAgICA9IHZkZWNfaGV2Y19zbGljZV9p bml0LAo+ID4gPiArICAgICAuZGVjb2RlICAgICAgICAgPSB2ZGVjX2hldmNfc2xpY2VfZGVjb2Rl LAo+ID4gPiArICAgICAuZ2V0X3BhcmFtICAgICAgPSB2ZGVjX2hldmNfc2xpY2VfZ2V0X3BhcmFt LAo+ID4gPiArICAgICAuZGVpbml0ICAgICAgICAgPSB2ZGVjX2hldmNfc2xpY2VfZGVpbml0LAo+ ID4gPiArfTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0 ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lmLmMKPiA+ID4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21l ZGlhdGVrL3Zjb2RlYy92ZGVjX2Rydl9pZi5jCj4gPiA+IGluZGV4IGYzODA3ZjAzZDg4MC4uMGJk ZTFlYjA0MDE1IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlh dGVrL3Zjb2RlYy92ZGVjX2Rydl9pZi5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lmLmMKPiA+ID4gQEAgLTQ5LDYgKzQ5LDEwIEBA IGludCB2ZGVjX2lmX2luaXQoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgsCj4gPiA+IHVuc2ln bmVkIGludCBmb3VyY2MpCj4gPiA+ICAgICAgICAgICAgICAgY3R4LT5kZWNfaWYgPSAmdmRlY192 cDlfc2xpY2VfbGF0X2lmOwo+ID4gPiAgICAgICAgICAgICAgIGN0eC0+aHdfaWQgPSBJU19WREVD X0xBVF9BUkNIKGh3X2FyY2gpID8KPiA+ID4gTVRLX1ZERUNfTEFUMCA6IE1US19WREVDX0NPUkU7 Cj4gPiA+ICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgVjRMMl9QSVhfRk1U X0hFVkNfU0xJQ0U6Cj4gPiA+ICsgICAgICAgICAgICAgY3R4LT5kZWNfaWYgPSAmdmRlY19oZXZj X3NsaWNlX211bHRpX2lmOwo+ID4gPiArICAgICAgICAgICAgIGN0eC0+aHdfaWQgPSBNVEtfVkRF Q19MQVQwOwo+ID4gPiArICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiAgICAgICBkZWZhdWx0Ogo+ ID4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiAgICAgICB9Cj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjX2Ry dl9pZi5oCj4gPiA+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRl Y19kcnZfaWYuaAo+ID4gPiBpbmRleCAwNzYzMDZmZjJkZDQuLmVmM2EwNzYyZmRjOCAxMDA2NDQK PiA+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19k cnZfaWYuaAo+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2Rl Yy92ZGVjX2Rydl9pZi5oCj4gPiA+IEBAIC02MSw2ICs2MSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1 Y3QgdmRlY19jb21tb25faWYgdmRlY192cDhfaWY7Cj4gPiA+ICBleHRlcm4gY29uc3Qgc3RydWN0 IHZkZWNfY29tbW9uX2lmIHZkZWNfdnA4X3NsaWNlX2lmOwo+ID4gPiAgZXh0ZXJuIGNvbnN0IHN0 cnVjdCB2ZGVjX2NvbW1vbl9pZiB2ZGVjX3ZwOV9pZjsKPiA+ID4gIGV4dGVybiBjb25zdCBzdHJ1 Y3QgdmRlY19jb21tb25faWYgdmRlY192cDlfc2xpY2VfbGF0X2lmOwo+ID4gPiArZXh0ZXJuIGNv bnN0IHN0cnVjdCB2ZGVjX2NvbW1vbl9pZiB2ZGVjX2hldmNfc2xpY2VfbXVsdGlfaWY7Cj4gPiA+ IAo+ID4gPiAgLyoqCj4gPiA+ICAgKiB2ZGVjX2lmX2luaXQoKSAtIGluaXRpYWxpemUgZGVjb2Rl IGRyaXZlcgo+ID4gCj4gPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==