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 X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94A15C7618F for ; Tue, 16 Jul 2019 17:22:30 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 6570A2064B for ; Tue, 16 Jul 2019 17:22:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="dxBYtR1I"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="Mrymdx2G" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6570A2064B Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=S1EGoTx7nyf2yVYRplrf+D8ZgPxNqQQQS8YIrOTrj+Q=; b=dxBYtR1Imdp1gy nLLFBU+NHz0szNmqN2+0cN0zyQQsR/S9fln0UdIdYXe1G0jTQ8bhVoG8F5+CXke/vWwku2frBwdYZ REXhVO3H0/FGvsGAmmdKyDAA+2WEXtB4D4FKiCXWShlyUnfWFw8poNhQviR+6jjiXjY1YHolOpRT1 ev6hSafA9QcXDM0NQT0kMQVAvOzc2yHg54quzod3gMbzUaVhEJ1iaqifey0abg6j+wBXYuh2bs6yB 9zzFPvlpAWMuLLNmB7AIDu/vMzJsJuc4kDxKlri0SzHAsx2pA5IlASgM87n/wqxvKDNUB0iuhDsZZ ifi96kWv4svjhxvFOL7g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hnR9p-0000el-BE; Tue, 16 Jul 2019 17:22:29 +0000 Received: from lelv0142.ext.ti.com ([198.47.23.249]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hnR9k-0000eF-QD for linux-arm-kernel@lists.infradead.org; Tue, 16 Jul 2019 17:22:27 +0000 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id x6GHLDUB121252; Tue, 16 Jul 2019 12:21:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1563297673; bh=pGJ1pH9t9oveC+3vYJABnQ3Dl3UWKH//72W69udD7FY=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=Mrymdx2GYA40SecDfTaIbavUEsPGErwk1Zc2ttv1kBtfwP68dRGjycQ6wWFahEVK+ otTX3ti8R+FRahEWwbW2UjA1uRSKtwYidJYT4/ojUn1I2y9nbWVUhIAMj4c+/QgOvj k8YT+lFCY7TzinV3N6N/r/K5dYd5i4tUpZ3aphPU= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x6GHLD9E045222 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 16 Jul 2019 12:21:13 -0500 Received: from DFLE104.ent.ti.com (10.64.6.25) 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.1713.5; Tue, 16 Jul 2019 12:21:12 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) 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.1713.5 via Frontend Transport; Tue, 16 Jul 2019 12:21:12 -0500 Received: from [128.247.58.153] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id x6GHLCYw074615; Tue, 16 Jul 2019 12:21:12 -0500 Subject: Re: [PATCH 2/6] irqchip/irq-pruss-intc: Add a PRUSS irqchip driver for PRUSS interrupts To: David Lechner , Marc Zyngier , Rob Herring , Thomas Gleixner , Jason Cooper References: <20190708035243.12170-1-s-anna@ti.com> <20190708035243.12170-3-s-anna@ti.com> <3d91800b-e858-8c73-5ea8-e99e5ea30e8e@lechnology.com> From: Suman Anna Message-ID: <54e871a8-dfa4-f65b-5869-d1661144cbf0@ti.com> Date: Tue, 16 Jul 2019 12:21:12 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <3d91800b-e858-8c73-5ea8-e99e5ea30e8e@lechnology.com> Content-Language: en-US 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-20190716_102224_955971_E079DA33 X-CRM114-Status: GOOD ( 27.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Grygorii Strashko , Tony Lindgren , Sekhar Nori , linux-kernel@vger.kernel.org, "Andrew F. Davis" , Lokesh Vutla , Murali Karicheri , linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Roger Quadros Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgRGF2aWQsCgpPbiA3LzExLzE5IDExOjQ1IEFNLCBEYXZpZCBMZWNobmVyIHdyb3RlOgo+IE9u IDcvNy8xOSAxMDo1MiBQTSwgU3VtYW4gQW5uYSB3cm90ZToKPj4gRnJvbTogIkFuZHJldyBGLiBE YXZpcyIgPGFmZEB0aS5jb20+Cj4+Cj4+IFRoZSBQcm9ncmFtbWFibGUgUmVhbC1UaW1lIFVuaXQg U3Vic3lzdGVtIChQUlVTUykgY29udGFpbnMgYSBsb2NhbAo+PiBpbnRlcnJ1cHQgY29udHJvbGxl ciAoSU5UQykgdGhhdCBjYW4gaGFuZGxlIHZhcmlvdXMgc3lzdGVtIGlucHV0IGV2ZW50cwo+PiBh bmQgcG9zdCBpbnRlcnJ1cHRzIGJhY2sgdG8gdGhlIGRldmljZS1sZXZlbCBpbml0aWF0b3JzLiBU aGUgSU5UQyBjYW4KPj4gc3VwcG9ydCB1cHRvIDY0IGlucHV0IGV2ZW50cyB3aXRoIGluZGl2aWR1 YWwgY29udHJvbCBjb25maWd1cmF0aW9uIGFuZAo+PiBoYXJkd2FyZSBwcmlvcml0aXphdGlvbi4g VGhlc2UgZXZlbnRzIGFyZSBtYXBwZWQgb250byAxMCBvdXRwdXQgaW50ZXJydXB0Cj4+IGxpbmVz IHRocm91Z2ggdHdvIGxldmVscyBvZiBtYW55LXRvLW9uZSBtYXBwaW5nIHN1cHBvcnQuIERpZmZl cmVudAo+PiBpbnRlcnJ1cHQgbGluZXMgYXJlIHJvdXRlZCB0byB0aGUgaW5kaXZpZHVhbCBQUlUg Y29yZXMgb3IgdG8gdGhlIGhvc3QKPj4gQ1BVLCBvciB0byBvdGhlciBkZXZpY2VzIG9uIHRoZSBT b0MuIFNvbWUgb2YgdGhlc2UgZXZlbnRzIGFyZSBzb3VyY2VkCj4+IGZyb20gcGVyaXBoZXJhbHMg b3Igb3RoZXIgc3ViLW1vZHVsZXMgd2l0aGluIHRoYXQgUFJVU1MsIHdoaWxlIGEgZmV3Cj4+IG90 aGVycyBhcmUgc291cmNlZCBmcm9tIFNvQy1sZXZlbCBwZXJpcGhlcmFscy9kZXZpY2VzLgo+Pgo+ PiBUaGUgUFJVU1MgSU5UQyBwbGF0Zm9ybSBkcml2ZXIgbWFuYWdlcyB0aGlzIFBSVVNTIGludGVy cnVwdCBjb250cm9sbGVyCj4+IGFuZCBpbXBsZW1lbnRzIGFuIGlycWNoaXAgZHJpdmVyIHRvIHBy b3ZpZGUgYSBMaW51eCBzdGFuZGFyZCB3YXkgZm9yCj4+IHRoZSBQUlUgY2xpZW50IHVzZXJzIHRv IGVuYWJsZS9kaXNhYmxlL2Fjay9yZS10cmlnZ2VyIGEgUFJVU1Mgc3lzdGVtCj4+IGV2ZW50LiBU aGUgc3lzdGVtIGV2ZW50cyB0byBpbnRlcnJ1cHQgY2hhbm5lbHMgYW5kIGhvc3QgaW50ZXJydXB0 cwo+PiByZWxpZXMgb24gdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbiBwcm92aWRlZCBlaXRoZXIg dGhyb3VnaCB0aGUgUFJVCj4+IGZpcm13YXJlIGJsb2Igb3IgdmlhIHRoZSBQUlUgYXBwbGljYXRp b24ncyBkZXZpY2UgdHJlZSBub2RlLiBUaGUKPj4gbWFwcGluZ3Mgd2lsbCBiZSBwcm9ncmFtbWVk IGR1cmluZyB0aGUgYm9vdC9zaHV0ZG93biBvZiBhIFBSVSBjb3JlLgo+Pgo+PiBUaGUgUFJVU1Mg SU5UQyBtb2R1bGUgaXMgcmVmZXJlbmNlIGNvdW50ZWQgZHVyaW5nIHRoZSBpbnRlcnJ1cHQKPj4g c2V0dXAgcGhhc2UgdGhyb3VnaCB0aGUgaXJxY2hpcCdzIGlycV9yZXF1ZXN0X3Jlc291cmNlcygp IGFuZAo+PiBpcnFfcmVsZWFzZV9yZXNvdXJjZXMoKSBvcHMuIFRoaXMgcmVzdHJpY3RzIHRoZSBt b2R1bGUgZnJvbSBiZWluZwo+PiByZW1vdmVkIGFzIGxvbmcgYXMgdGhlcmUgYXJlIGFjdGl2ZSBp bnRlcnJ1cHQgdXNlcnMuCj4+Cj4+IFRoZSBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIGFuZCBj YW4gYmUgYnVpbHQgZm9yIE9NQVAgYXJjaGl0ZWN0dXJlCj4+IGJhc2VkIEFNMzM1eCwgQU00Mzd4 IGFuZCBBTTU3eHggU29DczsgS2V5c3RvbmUyIGFyY2hpdGVjdHVyZSBiYXNlZAo+PiA2NkFLMkcg U29DcyBhbmQgRGF2aW5jaSBhcmNoaXRlY3R1cmUgYmFzZWQgT01BUC1MMTN4L0FNMTh4L0RBODUw IFNvQ3MuCj4+IEFsbCBvZiB0aGVzZSBTb0NzIHN1cHBvcnQgNjQgc3lzdGVtIGV2ZW50cywgMTAg aW50ZXJydXB0IGNoYW5uZWxzIGFuZAo+PiAxMCBvdXRwdXQgaW50ZXJydXB0IGxpbmVzIHBlciBQ UlVTUyBJTlRDIHdpdGggYSBmZXcgU29DIGludGVncmF0aW9uCj4+IGRpZmZlcmVuY2VzLgo+Pgo+ PiBOT1RFOgo+PiBFYWNoIFBSVS1JQ1NTJ3MgSU5UQyBvbiBBTTU3eHggU29DcyBpcyBwcmVjZWRl ZCBieSBhIENyb3NzYmFyIHRoYXQKPj4gZW5hYmxlcyBtdWx0aXBsZSBleHRlcm5hbCBldmVudHMg dG8gYmUgcm91dGVkIHRvIGEgc3BlY2lmaWMgbnVtYmVyCj4+IG9mIGlucHV0IGludGVycnVwdCBl dmVudHMuIEFueSBub24tZGVmYXVsdCBleHRlcm5hbCBpbnRlcnJ1cHQgZXZlbnQKPj4gZGlyZWN0 ZWQgdG93YXJkcyBQUlVTUyBuZWVkcyB0aGlzIGNyb3NzYmFyIHRvIGJlIHNldHVwIHByb3Blcmx5 Lgo+IAo+IFRoZSBhbGwgb2YgdGhlIGV4cGxhbmF0aW9ucyBhYm92ZSBhcmUgdmVyeSBoZWxwZnVs LiBHcmVhdCB3b3JrLgo+IAo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRi4gRGF2aXMgPGFm ZEB0aS5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFN1bWFuIEFubmEgPHMtYW5uYUB0aS5jb20+Cj4+ IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFF1YWRyb3MgPHJvZ2VycUB0aS5jb20+Cj4+IC0tLQo+PiBQ cmlvciB2ZXJzaW9uOiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwNzk1NzYx Lwo+Pgo+PiDCoCBkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAg MTAgKwo+PiDCoCBkcml2ZXJzL2lycWNoaXAvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgIHzCoMKg IDEgKwo+PiDCoCBkcml2ZXJzL2lycWNoaXAvaXJxLXBydXNzLWludGMuYyB8IDM1MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4+IMKgIDMgZmlsZXMgY2hhbmdlZCwgMzYzIGluc2Vy dGlvbnMoKykKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaXJxY2hpcC9pcnEtcHJ1 c3MtaW50Yy5jCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZyBiL2Ry aXZlcnMvaXJxY2hpcC9LY29uZmlnCj4+IGluZGV4IDY1OWM1ZTBmYjgzNS4uYjBhOTQ3OWQ1Mjdj IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJz L2lycWNoaXAvS2NvbmZpZwo+PiBAQCAtNDQ3LDYgKzQ0NywxNiBAQCBjb25maWcgVElfU0NJX0lO VEFfSVJRQ0hJUAo+PiDCoMKgwqDCoMKgwqDCoCBJZiB5b3Ugd2lzaCB0byB1c2UgaW50ZXJydXB0 IGFnZ3JlZ2F0b3IgaXJxIHJlc291cmNlcyBtYW5hZ2VkCj4+IGJ5IHRoZQo+PiDCoMKgwqDCoMKg wqDCoCBUSSBTeXN0ZW0gQ29udHJvbGxlciwgc2F5IFkgaGVyZS4gT3RoZXJ3aXNlLCBzYXkgTi4K Pj4gwqAgK2NvbmZpZyBUSV9QUlVTU19JTlRDCj4+ICvCoMKgwqAgdHJpc3RhdGUgIlRJIFBSVS1J Q1NTIEludGVycnVwdCBDb250cm9sbGVyIgo+PiArwqDCoMKgIGRlcGVuZHMgb24gQVJDSF9EQVZJ TkNJIHx8IFNPQ19BTTMzWFggfHwgU09DX0FNNDM3WCB8fCBTT0NfRFJBN1hYCj4+IHx8IEFSQ0hf S0VZU1RPTkUKPj4gK8KgwqDCoCBzZWxlY3QgSVJRX0RPTUFJTgo+PiArwqDCoMKgIGhlbHAKPj4g K8KgwqDCoMKgwqDCoCBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFBSVS1JQ1NTIExvY2Fs IEludGVycnVwdCBDb250cm9sbGVyCj4+ICvCoMKgwqDCoMKgwqAgcHJlc2VudCB3aXRoaW4gYSBQ UlUtSUNTUyBzdWJzeXN0ZW0gcHJlc2VudCBvbiB2YXJpb3VzIFRJIFNvQ3MuCj4+ICvCoMKgwqDC oMKgwqAgVGhlIFBSVVNTIElOVEMgZW5hYmxlcyB2YXJpb3VzIGludGVycnVwdHMgdG8gYmUgcm91 dGVkIHRvCj4+IG11bHRpcGxlCj4+ICvCoMKgwqDCoMKgwqAgZGlmZmVyZW50IHByb2Nlc3NvcnMg d2l0aGluIHRoZSBTb0MuCj4+ICsKPj4gwqAgZW5kbWVudQo+PiDCoCDCoCBjb25maWcgU0lGSVZF X1BMSUMKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZSBiL2RyaXZlcnMv aXJxY2hpcC9NYWtlZmlsZQo+PiBpbmRleCA2MDZhMDAzYTAwMDAuLjcxN2YxZDQ5ZTU0OSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvaXJx Y2hpcC9NYWtlZmlsZQo+PiBAQCAtMTAwLDMgKzEwMCw0IEBAIG9iai0kKENPTkZJR19NQURFUkFf SVJRKcKgwqDCoMKgwqDCoMKgICs9IGlycS1tYWRlcmEubwo+PiDCoCBvYmotJChDT05GSUdfTFMx WF9JUlEpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBpcnEtbHMxeC5vCj4+IMKgIG9iai0kKENP TkZJR19USV9TQ0lfSU5UUl9JUlFDSElQKcKgwqDCoCArPSBpcnEtdGktc2NpLWludHIubwo+PiDC oCBvYmotJChDT05GSUdfVElfU0NJX0lOVEFfSVJRQ0hJUCnCoMKgwqAgKz0gaXJxLXRpLXNjaS1p bnRhLm8KPj4gK29iai0kKENPTkZJR19USV9QUlVTU19JTlRDKcKgwqDCoMKgwqDCoMKgICs9IGly cS1wcnVzcy1pbnRjLm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtcHJ1c3Mt aW50Yy5jCj4+IGIvZHJpdmVycy9pcnFjaGlwL2lycS1wcnVzcy1pbnRjLmMKPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kNjIxODZhZDFiZTQKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLXBydXNzLWludGMuYwo+PiBAQCAt MCwwICsxLDM1MiBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4g Ky8qCj4+ICsgKiBQUlUtSUNTUyBJTlRDIElSUUNoaXAgZHJpdmVyIGZvciB2YXJpb3VzIFRJIFNv Q3MKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBUZXhhcyBJbnN0cnVtZW50 cyBJbmNvcnBvcmF0ZWQgLQo+PiBodHRwOi8vd3d3LnRpLmNvbS8KPj4gKyAqwqDCoMKgIEFuZHJl dyBGLiBEYXZpcyA8YWZkQHRpLmNvbT4KPj4gKyAqwqDCoMKgIFN1bWFuIEFubmEgPHMtYW5uYUB0 aS5jb20+Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L2lycWNoaXAvY2hhaW5lZF9pcnEuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pcnFk b21haW4uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gKyNpbmNsdWRlIDxsaW51 eC9vZl9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4g Kwo+PiArLyoKPj4gKyAqIE51bWJlciBvZiBob3N0IGludGVycnVwdHMgcmVhY2hpbmcgdGhlIG1h aW4gTVBVIHN1Yi1zeXN0ZW0uIE5vdGUKPj4gdGhhdCB0aGlzCj4+ICsgKiBpcyBub3QgdGhlIHNh bWUgYXMgdGhlIHRvdGFsIG51bWJlciBvZiBob3N0IGludGVycnVwdHMgc3VwcG9ydGVkCj4+IGJ5 IHRoZSBQUlVTUwo+PiArICogSU5UQyBpbnN0YW5jZQo+PiArICovCj4+ICsjZGVmaW5lIE1BWF9O VU1fSE9TVF9JUlFTwqDCoMKgIDgKPj4gKwo+PiArLyogbWluaW11bSBzdGFydGluZyBob3N0IGlu dGVycnVwdCBudW1iZXIgZm9yIE1QVSAqLwo+PiArI2RlZmluZSBNSU5fUFJVX0hPU1RfSU5UwqDC oMKgIDIKPj4gKwo+PiArLyogbWF4aW11bSBudW1iZXIgb2Ygc3lzdGVtIGV2ZW50cyAqLwo+PiAr I2RlZmluZSBNQVhfUFJVX1NZU19FVkVOVFPCoMKgwqAgNjQKPj4gKwo+PiArLyogUFJVX0lDU1Nf SU5UQyByZWdpc3RlcnMgKi8KPj4gKyNkZWZpbmUgUFJVX0lOVENfUkVWSUTCoMKgwqDCoMKgwqDC oCAweDAwMDAKPj4gKyNkZWZpbmUgUFJVX0lOVENfQ1LCoMKgwqDCoMKgwqDCoCAweDAwMDQKPj4g KyNkZWZpbmUgUFJVX0lOVENfR0VSwqDCoMKgwqDCoMKgwqAgMHgwMDEwCj4+ICsjZGVmaW5lIFBS VV9JTlRDX0dOTFLCoMKgwqDCoMKgwqDCoCAweDAwMWMKPj4gKyNkZWZpbmUgUFJVX0lOVENfU0lT UsKgwqDCoMKgwqDCoMKgIDB4MDAyMAo+PiArI2RlZmluZSBQUlVfSU5UQ19TSUNSwqDCoMKgwqDC oMKgwqAgMHgwMDI0Cj4+ICsjZGVmaW5lIFBSVV9JTlRDX0VJU1LCoMKgwqDCoMKgwqDCoCAweDAw MjgKPj4gKyNkZWZpbmUgUFJVX0lOVENfRUlDUsKgwqDCoMKgwqDCoMKgIDB4MDAyYwo+PiArI2Rl ZmluZSBQUlVfSU5UQ19ISUVJU1LCoMKgwqDCoMKgwqDCoCAweDAwMzQKPj4gKyNkZWZpbmUgUFJV X0lOVENfSElESVNSwqDCoMKgwqDCoMKgwqAgMHgwMDM4Cj4+ICsjZGVmaW5lIFBSVV9JTlRDX0dQ SVLCoMKgwqDCoMKgwqDCoCAweDAwODAKPj4gKyNkZWZpbmUgUFJVX0lOVENfU1JTUjDCoMKgwqDC oMKgwqDCoCAweDAyMDAKPj4gKyNkZWZpbmUgUFJVX0lOVENfU1JTUjHCoMKgwqDCoMKgwqDCoCAw eDAyMDQKPj4gKyNkZWZpbmUgUFJVX0lOVENfU0VDUjDCoMKgwqDCoMKgwqDCoCAweDAyODAKPj4g KyNkZWZpbmUgUFJVX0lOVENfU0VDUjHCoMKgwqDCoMKgwqDCoCAweDAyODQKPj4gKyNkZWZpbmUg UFJVX0lOVENfRVNSMMKgwqDCoMKgwqDCoMKgIDB4MDMwMAo+PiArI2RlZmluZSBQUlVfSU5UQ19F U1IxwqDCoMKgwqDCoMKgwqAgMHgwMzA0Cj4+ICsjZGVmaW5lIFBSVV9JTlRDX0VDUjDCoMKgwqDC oMKgwqDCoCAweDAzODAKPj4gKyNkZWZpbmUgUFJVX0lOVENfRUNSMcKgwqDCoMKgwqDCoMKgIDB4 MDM4NAo+PiArI2RlZmluZSBQUlVfSU5UQ19DTVIoeCnCoMKgwqDCoMKgwqDCoCAoMHgwNDAwICsg KHgpICogNCkKPj4gKyNkZWZpbmUgUFJVX0lOVENfSE1SKHgpwqDCoMKgwqDCoMKgwqAgKDB4MDgw MCArICh4KSAqIDQpCj4+ICsjZGVmaW5lIFBSVV9JTlRDX0hJUElSKHgpwqDCoMKgICgweDA5MDAg KyAoeCkgKiA0KQo+PiArI2RlZmluZSBQUlVfSU5UQ19TSVBSMMKgwqDCoMKgwqDCoMKgIDB4MGQw MAo+PiArI2RlZmluZSBQUlVfSU5UQ19TSVBSMcKgwqDCoMKgwqDCoMKgIDB4MGQwNAo+PiArI2Rl ZmluZSBQUlVfSU5UQ19TSVRSMMKgwqDCoMKgwqDCoMKgIDB4MGQ4MAo+PiArI2RlZmluZSBQUlVf SU5UQ19TSVRSMcKgwqDCoMKgwqDCoMKgIDB4MGQ4NAo+PiArI2RlZmluZSBQUlVfSU5UQ19ISU5M Uih4KcKgwqDCoCAoMHgxMTAwICsgKHgpICogNCkKPj4gKyNkZWZpbmUgUFJVX0lOVENfSElFUsKg wqDCoMKgwqDCoMKgIDB4MTUwMAo+PiArCj4+ICsvKiBISVBJUiByZWdpc3RlciBiaXQtZmllbGRz ICovCj4+ICsjZGVmaW5lIElOVENfSElQSVJfTk9ORV9ISU5UwqDCoMKgIDB4ODAwMDAwMDAKPiAK PiBVbnVzZWQgbWFjcm8uIFNlZSBiZWxvdy4KCldpbGwgdXNlIHRoZSBtYWNybyBpbiB0aGUgY29k ZS4KCj4gCj4+ICsKPj4gKy8qKgo+PiArICogc3RydWN0IHBydXNzX2ludGMgLSBQUlVTUyBpbnRl cnJ1cHQgY29udHJvbGxlciBzdHJ1Y3R1cmUKPj4gKyAqIEBpcnFzOiBrZXJuZWwgaXJxIG51bWJl cnMgY29ycmVzcG9uZGluZyB0byBQUlVTUyBob3N0IGludGVycnVwdHMKPj4gKyAqIEBiYXNlOiBi YXNlIHZpcnR1YWwgYWRkcmVzcyBvZiBJTlRDIHJlZ2lzdGVyIHNwYWNlCj4+ICsgKiBAaXJxY2hp cDogaXJxIGNoaXAgZm9yIHRoaXMgaW50ZXJydXB0IGNvbnRyb2xsZXIKPj4gKyAqIEBkb21haW46 IGlycSBkb21haW4gZm9yIHRoaXMgaW50ZXJydXB0IGNvbnRyb2xsZXIKPj4gKyAqIEBsb2NrOiBt dXRleCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIElOVEMKPj4gKyAqIEBob3N0X21hc2s6IGluZGlj YXRlIHdoaWNoIEhPU1QgSVJRcyBhcmUgZW5hYmxlZAo+PiArICovCj4+ICtzdHJ1Y3QgcHJ1c3Nf aW50YyB7Cj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGlycXNbTUFYX05VTV9IT1NUX0lSUVNdOwo+ PiArwqDCoMKgIHZvaWQgX19pb21lbSAqYmFzZTsKPj4gK8KgwqDCoCBzdHJ1Y3QgaXJxX2NoaXAg KmlycWNoaXA7Cj4+ICvCoMKgwqAgc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsKPj4gK8KgwqDC oCBzdHJ1Y3QgbXV0ZXggbG9jazsgLyogUFJVU1MgSU5UQyBsb2NrICovCj4+ICvCoMKgwqAgdTMy IGhvc3RfbWFzazsKClRoaXMgaXMgYWxzbyB1bnVzZWQgaW4gdGhpcyBwYXRjaCwgd2lsbCBtb3Zl IHRoaXMgdG8gcGF0Y2ggNC4KCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHUzMiBwcnVz c19pbnRjX3JlYWRfcmVnKHN0cnVjdCBwcnVzc19pbnRjICppbnRjLAo+PiB1bnNpZ25lZCBpbnQg cmVnKQo+PiArewo+PiArwqDCoMKgIHJldHVybiByZWFkbF9yZWxheGVkKGludGMtPmJhc2UgKyBy ZWcpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgcHJ1c3NfaW50Y193cml0ZV9y ZWcoc3RydWN0IHBydXNzX2ludGMgKmludGMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsKQo+PiArewo+PiArwqDCoMKg IHdyaXRlbF9yZWxheGVkKHZhbCwgaW50Yy0+YmFzZSArIHJlZyk7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgcHJ1c3NfaW50Y19jaGVja193cml0ZShzdHJ1Y3QgcHJ1c3NfaW50YyAqaW50Yywg dW5zaWduZWQKPj4gaW50IHJlZywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgaW50IHN5c2V2ZW50KQo+PiArewo+PiArwqDCoMKgIGlmICghaW50YykKPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgaWYgKHN5c2V2 ZW50ID49IE1BWF9QUlVfU1lTX0VWRU5UUykKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlO VkFMOwo+PiArCj4+ICvCoMKgwqAgcHJ1c3NfaW50Y193cml0ZV9yZWcoaW50YywgcmVnLCBzeXNl dmVudCk7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZv aWQgcHJ1c3NfaW50Y19pbml0KHN0cnVjdCBwcnVzc19pbnRjICppbnRjKQo+PiArewo+PiArwqDC oMKgIGludCBpOwo+PiArCj4+ICvCoMKgwqAgLyogY29uZmlndXJlIHBvbGFyaXR5IHRvIGFjdGl2 ZSBoaWdoIGZvciBhbGwgc3lzdGVtIGludGVycnVwdHMgKi8KPj4gK8KgwqDCoCBwcnVzc19pbnRj X3dyaXRlX3JlZyhpbnRjLCBQUlVfSU5UQ19TSVBSMCwgMHhmZmZmZmZmZik7Cj4+ICvCoMKgwqAg cHJ1c3NfaW50Y193cml0ZV9yZWcoaW50YywgUFJVX0lOVENfU0lQUjEsIDB4ZmZmZmZmZmYpOwo+ PiArCj4+ICvCoMKgwqAgLyogY29uZmlndXJlIHR5cGUgdG8gcHVsc2UgaW50ZXJydXB0IGZvciBh bGwgc3lzdGVtIGludGVycnVwdHMgKi8KPj4gK8KgwqDCoCBwcnVzc19pbnRjX3dyaXRlX3JlZyhp bnRjLCBQUlVfSU5UQ19TSVRSMCwgMCk7Cj4+ICvCoMKgwqAgcHJ1c3NfaW50Y193cml0ZV9yZWco aW50YywgUFJVX0lOVENfU0lUUjEsIDApOwo+PiArCj4+ICvCoMKgwqAgLyogY2xlYXIgYWxsIDE2 IGludGVycnVwdCBjaGFubmVsIG1hcCByZWdpc3RlcnMgKi8KPj4gK8KgwqDCoCBmb3IgKGkgPSAw OyBpIDwgMTY7IGkrKykKPj4gK8KgwqDCoMKgwqDCoMKgIHBydXNzX2ludGNfd3JpdGVfcmVnKGlu dGMsIFBSVV9JTlRDX0NNUihpKSwgMCk7Cj4+ICsKPj4gK8KgwqDCoCAvKiBjbGVhciBhbGwgMyBo b3N0IGludGVycnVwdCBtYXAgcmVnaXN0ZXJzICovCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8 IDM7IGkrKykKPj4gK8KgwqDCoMKgwqDCoMKgIHBydXNzX2ludGNfd3JpdGVfcmVnKGludGMsIFBS VV9JTlRDX0hNUihpKSwgMCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHBydXNzX2ludGNf aXJxX2FjayhzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IHBy dXNzX2ludGMgKmludGMgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRhKTsKPj4gK8Kg wqDCoCB1bnNpZ25lZCBpbnQgaHdpcnEgPSBkYXRhLT5od2lycTsKPj4gKwo+PiArwqDCoMKgIHBy dXNzX2ludGNfY2hlY2tfd3JpdGUoaW50YywgUFJVX0lOVENfU0lDUiwgaHdpcnEpOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgdm9pZCBwcnVzc19pbnRjX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAq ZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgcHJ1c3NfaW50YyAqaW50YyA9IGlycV9kYXRh X2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOwo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBod2lycSA9 IGRhdGEtPmh3aXJxOwo+PiArCj4+ICvCoMKgwqAgcHJ1c3NfaW50Y19jaGVja193cml0ZShpbnRj LCBQUlVfSU5UQ19FSUNSLCBod2lycSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHBydXNz X2ludGNfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCj4+ICt7Cj4+ICvCoMKgwqAg c3RydWN0IHBydXNzX2ludGMgKmludGMgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRh KTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaHdpcnEgPSBkYXRhLT5od2lycTsKPj4gKwo+PiAr wqDCoMKgIHBydXNzX2ludGNfY2hlY2tfd3JpdGUoaW50YywgUFJVX0lOVENfRUlTUiwgaHdpcnEp Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHBydXNzX2ludGNfaXJxX3JldHJpZ2dlcihzdHJ1 Y3QgaXJxX2RhdGEgKmRhdGEpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IHBydXNzX2ludGMgKmlu dGMgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRhKTsKPj4gK8KgwqDCoCB1bnNpZ25l ZCBpbnQgaHdpcnEgPSBkYXRhLT5od2lycTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiBwcnVzc19p bnRjX2NoZWNrX3dyaXRlKGludGMsIFBSVV9JTlRDX1NJU1IsIGh3aXJxKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCBwcnVzc19pbnRjX2lycV9yZXFyZXMoc3RydWN0IGlycV9kYXRhICpkYXRh KQo+PiArewo+PiArwqDCoMKgIGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgcHJ1c3NfaW50Y19pcnFfcmVscmVzKHN0cnVjdCBp cnFfZGF0YSAqZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGludCBwcnVzc19pbnRjX2lycV9kb21haW5fbWFwKHN0cnVj dCBpcnFfZG9tYWluICpkLCB1bnNpZ25lZAo+PiBpbnQgdmlycSwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXJxX2h3X251bWJlcl90IGh3KQo+PiArewo+PiAr wqDCoMKgIHN0cnVjdCBwcnVzc19pbnRjICppbnRjID0gZC0+aG9zdF9kYXRhOwo+PiArCj4+ICvC oMKgwqAgaXJxX3NldF9jaGlwX2RhdGEodmlycSwgaW50Yyk7Cj4+ICvCoMKgwqAgaXJxX3NldF9j aGlwX2FuZF9oYW5kbGVyKHZpcnEsIGludGMtPmlycWNoaXAsIGhhbmRsZV9sZXZlbF9pcnEpOwo+ PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHBydXNz X2ludGNfaXJxX2RvbWFpbl91bm1hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCwKPj4gdW5zaWduZWQg aW50IHZpcnEpCj4+ICt7Cj4+ICvCoMKgwqAgaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKHZpcnEs IE5VTEwsIE5VTEwpOwo+PiArwqDCoMKgIGlycV9zZXRfY2hpcF9kYXRhKHZpcnEsIE5VTEwpOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIHBydXNzX2lu dGNfaXJxX2RvbWFpbl9vcHMgPSB7Cj4+ICvCoMKgwqAgLnhsYXRlwqDCoMKgID0gaXJxX2RvbWFp bl94bGF0ZV9vbmVjZWxsLAo+PiArwqDCoMKgIC5tYXDCoMKgwqAgPSBwcnVzc19pbnRjX2lycV9k b21haW5fbWFwLAo+PiArwqDCoMKgIC51bm1hcMKgwqDCoCA9IHBydXNzX2ludGNfaXJxX2RvbWFp bl91bm1hcCwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHBydXNzX2ludGNfaXJxX2hhbmRs ZXIoc3RydWN0IGlycV9kZXNjICpkZXNjKQo+PiArewo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBp cnEgPSBpcnFfZGVzY19nZXRfaXJxKGRlc2MpOwo+PiArwqDCoMKgIHN0cnVjdCBpcnFfY2hpcCAq Y2hpcCA9IGlycV9kZXNjX2dldF9jaGlwKGRlc2MpOwo+PiArwqDCoMKgIHN0cnVjdCBwcnVzc19p bnRjICppbnRjID0gaXJxX2dldF9oYW5kbGVyX2RhdGEoaXJxKTsKPj4gK8KgwqDCoCB1MzIgaGlw aXI7Cj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IHZpcnE7Cj4+ICvCoMKgwqAgaW50IGksIGh3aXJx Owo+PiArCj4+ICvCoMKgwqAgY2hhaW5lZF9pcnFfZW50ZXIoY2hpcCwgZGVzYyk7Cj4+ICsKPj4g K8KgwqDCoCAvKiBmaW5kIG91ciBob3N0IGlycSBudW1iZXIgKi8KPj4gK8KgwqDCoCBmb3IgKGkg PSAwOyBpIDwgTUFYX05VTV9IT1NUX0lSUVM7IGkrKykKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChp bnRjLT5pcnFzW2ldID09IGlycSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ ICvCoMKgwqAgaWYgKGkgPT0gTUFYX05VTV9IT1NUX0lSUVMpCj4+ICvCoMKgwqDCoMKgwqDCoCBn b3RvIGVycjsKPj4gKwo+PiArwqDCoMKgIGkgKz0gTUlOX1BSVV9IT1NUX0lOVDsKPj4gKwo+PiAr wqDCoMKgIC8qIGdldCBoaWdoZXN0IHByaW9yaXR5IHBlbmRpbmcgUFJVU1Mgc3lzdGVtIGV2ZW50 ICovCj4+ICvCoMKgwqAgaGlwaXIgPSBwcnVzc19pbnRjX3JlYWRfcmVnKGludGMsIFBSVV9JTlRD X0hJUElSKGkpKTsKPj4gK8KgwqDCoCB3aGlsZSAoIShoaXBpciAmIEJJVCgzMSkpKSB7Cj4gCj4g SXMgQklUKDMxKSBoZXJlIHN1cHBvc2VkIHRvIGJlIElOVENfSElQSVJfTk9ORV9ISU5UPwoKWWVz LCB3aWxsIHJlcGxhY2UgQklUKDMxKSB3aXRoIHRoZSBtYWNyby4KCj4gCj4+ICvCoMKgwqDCoMKg wqDCoCBod2lycSA9IGhpcGlyICYgR0VOTUFTSyg5LCAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHZp cnEgPSBpcnFfbGluZWFyX3Jldm1hcChpbnRjLT5kb21haW4sIGh3aXJxKTsKPj4gKwo+PiArwqDC oMKgwqDCoMKgwqAgLyoKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBOT1RFOiBtYW51YWxseSBBQ0sg YW55IHN5c3RlbSBldmVudHMgdGhhdCBkbyBub3QgaGF2ZSBhCj4+ICvCoMKgwqDCoMKgwqDCoMKg ICogaGFuZGxlciBtYXBwZWQgeWV0Cj4+ICvCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAodW5saWtlbHkoIXZpcnEpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw cnVzc19pbnRjX2NoZWNrX3dyaXRlKGludGMsIFBSVV9JTlRDX1NJQ1IsIGh3aXJxKTsKPj4gK8Kg wqDCoMKgwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2VuZXJpY19oYW5k bGVfaXJxKHZpcnEpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBnZXQgbmV4dCBzeXN0ZW0g ZXZlbnQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIGhpcGlyID0gcHJ1c3NfaW50Y19yZWFkX3JlZyhp bnRjLCBQUlVfSU5UQ19ISVBJUihpKSk7Cj4+ICvCoMKgwqAgfQo+PiArZXJyOgo+PiArwqDCoMKg IGNoYWluZWRfaXJxX2V4aXQoY2hpcCwgZGVzYyk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg cHJ1c3NfaW50Y19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiAr wqDCoMKgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaXJxX25hbWVzW10gPSB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImhvc3QwIiwgImhvc3QxIiwgImhvc3QyIiwgImhv c3QzIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiaG9zdDQiLCAiaG9zdDUi LCAiaG9zdDYiLCAiaG9zdDciLCB9Owo+PiArwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZw ZGV2LT5kZXY7Cj4+ICvCoMKgwqAgc3RydWN0IHBydXNzX2ludGMgKmludGM7Cj4+ICvCoMKgwqAg c3RydWN0IHJlc291cmNlICpyZXM7Cj4+ICvCoMKgwqAgc3RydWN0IGlycV9jaGlwICppcnFjaGlw Owo+PiArwqDCoMKgIGludCBpLCBpcnE7Cj4+ICsKPj4gK8KgwqDCoCBpbnRjID0gZGV2bV9remFs bG9jKGRldiwgc2l6ZW9mKCppbnRjKSwgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqAgaWYgKCFpbnRj KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+ICvCoMKgwqAgcGxhdGZvcm1f c2V0X2RydmRhdGEocGRldiwgaW50Yyk7Cj4+ICsKPj4gK8KgwqDCoCByZXMgPSBwbGF0Zm9ybV9n ZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+PiArwqDCoMKgIGludGMtPmJh c2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+PiArwqDCoMKgIGlmIChJU19F UlIoaW50Yy0+YmFzZSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIHBhcnNlIGFuZCBtYXAgaW50YyBtZW1vcnkgcmVzb3VyY2VcbiIpOwo+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIFBUUl9FUlIoaW50Yy0+YmFzZSk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqAgZGV2X2RiZyhkZXYsICJpbnRjIG1lbW9yeTogcGEgJXBhIHNpemUgMHglenggdmEgJXBL XG4iLCAmcmVzLT5zdGFydCwKPj4gK8KgwqDCoMKgwqDCoMKgIChzaXplX3QpcmVzb3VyY2Vfc2l6 ZShyZXMpLCBpbnRjLT5iYXNlKTsKPj4gKwo+PiArwqDCoMKgIG11dGV4X2luaXQoJmludGMtPmxv Y2spOwo+PiArCj4+ICvCoMKgwqAgcHJ1c3NfaW50Y19pbml0KGludGMpOwo+PiArCj4+ICvCoMKg wqAgaXJxY2hpcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaXJxY2hpcCksIEdGUF9LRVJO RUwpOwo+PiArwqDCoMKgIGlmICghaXJxY2hpcCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAt RU5PTUVNOwo+PiArCj4+ICvCoMKgwqAgaXJxY2hpcC0+aXJxX2FjayA9IHBydXNzX2ludGNfaXJx X2FjazsKPj4gK8KgwqDCoCBpcnFjaGlwLT5pcnFfbWFzayA9IHBydXNzX2ludGNfaXJxX21hc2s7 Cj4+ICvCoMKgwqAgaXJxY2hpcC0+aXJxX3VubWFzayA9IHBydXNzX2ludGNfaXJxX3VubWFzazsK Pj4gK8KgwqDCoCBpcnFjaGlwLT5pcnFfcmV0cmlnZ2VyID0gcHJ1c3NfaW50Y19pcnFfcmV0cmln Z2VyOwo+PiArwqDCoMKgIGlycWNoaXAtPmlycV9yZXF1ZXN0X3Jlc291cmNlcyA9IHBydXNzX2lu dGNfaXJxX3JlcXJlczsKPj4gK8KgwqDCoCBpcnFjaGlwLT5pcnFfcmVsZWFzZV9yZXNvdXJjZXMg PSBwcnVzc19pbnRjX2lycV9yZWxyZXM7Cj4+ICvCoMKgwqAgaXJxY2hpcC0+bmFtZSA9IGRldl9u YW1lKGRldik7Cj4gCj4gU2hvdWxkIHdlIGFsc28gc2V0IGBpcnFjaGlwLT5wYXJlbnRfZGV2aWNl ID0gZGV2O2AgaGVyZT8KPiAKPiBJIHRyaWVkIGl0IGFuZCBoYWQgdG8gYWRkIHBtIHJ1bnRpbWUg c3R1ZmYgYXMgd2VsbCwgb3RoZXJ3aXNlCj4gcmVxdWVzdGluZyBpcnFzIHdvdWxkIGZhaWwuCgpJ IGhhdmVuJ3Qgc2VlbiBhbnkgZHVyaW5nIG15IGxvY2FsIHRlc3RpbmcuIFdoYXQgc29ydCBvZiBm YWlsdXJlIGFyZSB5b3UKc2VlaW5nPwoKVGhlIGNsb2NraW5nIGZvciB0aGUgb3ZlcmFsbCBQUlVT UyBtb2R1bGUgd2lsbCBiZSBoYW5kbGVkIGluIGVpdGhlciB0aGUKdGktc3lzYyBkcml2ZXIgZm9y IE9NQVAgU29DcyBvciBpbiB0aGUgcHJ1c3MgcGxhdGZvcm0gZHJpdmVyLgoKPiAKPj4gK8KgwqDC oCBpbnRjLT5pcnFjaGlwID0gaXJxY2hpcDsKPj4gKwo+PiArwqDCoMKgIC8qIGFsd2F5cyA2NCBl dmVudHMgKi8KPj4gK8KgwqDCoCBpbnRjLT5kb21haW4gPSBpcnFfZG9tYWluX2FkZF9saW5lYXIo ZGV2LT5vZl9ub2RlLAo+PiBNQVhfUFJVX1NZU19FVkVOVFMsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnBydXNzX2ludGNfaXJxX2RvbWFpbl9v cHMsIGludGMpOwo+PiArwqDCoMKgIGlmICghaW50Yy0+ZG9tYWluKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgTUFYX05V TV9IT1NUX0lSUVM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaXJxID0gcGxhdGZvcm1fZ2V0 X2lycV9ieW5hbWUocGRldiwgaXJxX25hbWVzW2ldKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChp cnEgPCAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2LT5wYXJlbnQs ICJwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZSBmYWlsZWQgZm9yCj4+ICVzIDogJWRcbiIsCj4gCj4g V2h5IGRldi0+cGFyZW50IGluc3RlYWQgb2YganVzdCBkZXY/CgpZZWFoLCB3aWxsIGZpeCB0aGlz LiBJdCBpcyBhIHZlc3RpZ2UgZnJvbSBwcmV2aW91cyBjb2RlIHdoZXJlIHdlIHdlcmUKYWN0dWFs bHkgcGFyc2luZyB0aGUgaW50ZXJydXB0cyBmcm9tIHRoZSBQUlVTUyBub2RlIGluc3RlYWQgb2Yg dGhlIFBSVVNTCklOVEMgbm9kZS4KCj4gCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaXJxX25hbWVzW2ldLCBpcnEpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZh aWxfaXJxOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpbnRj LT5pcnFzW2ldID0gaXJxOwo+PiArwqDCoMKgwqDCoMKgwqAgaXJxX3NldF9oYW5kbGVyX2RhdGEo aXJxLCBpbnRjKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlycV9zZXRfY2hhaW5lZF9oYW5kbGVyKGly cSwgcHJ1c3NfaW50Y19pcnFfaGFuZGxlcik7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAg cmV0dXJuIDA7Cj4+ICsKPj4gK2ZhaWxfaXJxOgo+PiArwqDCoMKgIHdoaWxlICgtLWkgPj0gMCkg ewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGludGMtPmlycXNbaV0pCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlycV9zZXRfY2hhaW5lZF9oYW5kbGVyX2FuZF9kYXRhKGludGMtPmlycXNbaV0s IE5VTEwsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBOVUxMKTsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgaXJxX2RvbWFpbl9yZW1v dmUoaW50Yy0+ZG9tYWluKTsKPj4gK8KgwqDCoCByZXR1cm4gaXJxOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW50IHBydXNzX2ludGNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IHBydXNzX2ludGMgKmludGMgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaHdpcnE7Cj4+ICvCoMKgwqAg aW50IGk7Cj4+ICsKPj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgTUFYX05VTV9IT1NUX0lSUVM7 IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGludGMtPmlycXNbaV0pCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlycV9zZXRfY2hhaW5lZF9oYW5kbGVyX2FuZF9kYXRhKGludGMtPmly cXNbaV0sIE5VTEwsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBOVUxMKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZiAo aW50Yy0+ZG9tYWluKSB7Cj4gCj4gSXMgaXQgYWN0dWFsbCBwb3NzaWJsZSBmb3IgaW50Yy0+ZG9t YWluIHRvIGJlIE5VTEwgaGVyZT8KCk5vcGUsIHdpbGwgcmVtb3ZlIGl0LgoKVGhhbmsgeW91IGZv ciBhbGwgdGhlIHJldmlldyBjb21tZW50cy4KCnJlZ2FyZHMKU3VtYW4KCj4gCj4+ICvCoMKgwqDC oMKgwqDCoCBmb3IgKGh3aXJxID0gMDsgaHdpcnEgPCBNQVhfUFJVX1NZU19FVkVOVFM7IGh3aXJx KyspCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlycV9kaXNwb3NlX21hcHBpbmcoaXJxX2Zp bmRfbWFwcGluZyhpbnRjLT5kb21haW4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3aXJxKSk7Cj4+ICvCoMKgwqDC oMKgwqDCoCBpcnFfZG9tYWluX3JlbW92ZShpbnRjLT5kb21haW4pOwo+PiArwqDCoMKgIH0KPj4g Kwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBwcnVzc19pbnRjX29mX21hdGNoW10gPSB7Cj4+ICvCoMKgwqAgeyAuY29t cGF0aWJsZSA9ICJ0aSxwcnVzcy1pbnRjIiwgfSwKPj4gK8KgwqDCoCB7IC8qIHNlbnRpbmVsICov IH0sCj4+ICt9Owo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcHJ1c3NfaW50Y19vZl9tYXRj aCk7Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBydXNzX2ludGNfZHJp dmVyID0gewo+PiArwqDCoMKgIC5kcml2ZXIgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAubmFtZSA9 ICJwcnVzcy1pbnRjIiwKPj4gK8KgwqDCoMKgwqDCoMKgIC5vZl9tYXRjaF90YWJsZSA9IHBydXNz X2ludGNfb2ZfbWF0Y2gsCj4+ICvCoMKgwqAgfSwKPj4gK8KgwqDCoCAucHJvYmXCoCA9IHBydXNz X2ludGNfcHJvYmUsCj4+ICvCoMKgwqAgLnJlbW92ZSA9IHBydXNzX2ludGNfcmVtb3ZlLAo+PiAr fTsKPj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocHJ1c3NfaW50Y19kcml2ZXIpOwo+PiArCj4+ ICtNT0RVTEVfQVVUSE9SKCJBbmRyZXcgRi4gRGF2aXMgPGFmZEB0aS5jb20+Iik7Cj4+ICtNT0RV TEVfQVVUSE9SKCJTdW1hbiBBbm5hIDxzLWFubmFAdGkuY29tPiIpOwo+PiArTU9EVUxFX0RFU0NS SVBUSU9OKCJUSSBQUlUtSUNTUyBJTlRDIERyaXZlciIpOwo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQ TCB2MiIpOwo+Pgo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK