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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED 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 2D611C169C4 for ; Wed, 6 Feb 2019 16:04:25 +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 E96FE217F9 for ; Wed, 6 Feb 2019 16:04:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="NTI/QT09"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="1UEqSdHR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E96FE217F9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.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:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rOUP2KFroZQvgJbyDHvOPiszXBiI3JSHA8OjXNs6OTg=; b=NTI/QT099TA+OL 3+VWAN3ZP8c94JPRpLy3NAHCVj+7R8gZN7GPxMH2XnctygCTiMUCSlzciyXhWi7Cl7FagLNf7fvnl Vk9+PMWrCWVegXKLrRTILyWGzz0hkmjpcACLtXQUkhX/nUEgJzzInsn27c7lVqX0yCi8L8bV6JeR8 0NnZKV0V2KOND9iIXgb9UrsxbQdwIALWsiqsh/JDNOEekxJlreSe8hF6rL5HoiSbfspDYu7aL/INr ABw8q4t/GSelj1bdGeU4QwFCWqApadN+3eQacLKbzKlRJFZWeOUObrcNnB+MPm0b7srie+XAvR0YV Tf8+cxHvpxf4Q4sO5sOg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1grPgR-0005cl-K6; Wed, 06 Feb 2019 16:04:19 +0000 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1grPgI-0005bw-KY for linux-arm-kernel@lists.infradead.org; Wed, 06 Feb 2019 16:04:13 +0000 Received: by mail-ot1-x342.google.com with SMTP id s13so12738735otq.4 for ; Wed, 06 Feb 2019 08:04:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=MK5O0bvgsa5+dJS1XcxHLpNaF52J8dLnKrBgofaIMcE=; b=1UEqSdHRJPHsnS9M8cAmVmPkPKEoY6bo7TS1al2+MlwSa/8ZG9m5jQlx9ucqufAAsl N6s1xoCxSZ6eWpzbb6CbuUfyVxbSn6TVNVweLGJpzSfhdP8Eu0NyuXbmxILGa+1/01cB jDGNEyT2hi9etIYZKBD1pAR7vym5lYbf5v3vVPtoYjYx50Eash6DHXy+1v98Gql6xu+3 PlHBgk4us1R1kxsAkcaUGf3mX/20mULOLF2b+nJycsVHisALYxPjJA/Arbhark+a8Vh3 doG8uCOZP+1QZXvLfQWYOmb9g8jEWAUbXqcQ5BYiP16WR1BwaInUzUhNrQ8/3iYH6ger yNng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=MK5O0bvgsa5+dJS1XcxHLpNaF52J8dLnKrBgofaIMcE=; b=VSA6u6NzjbTjXkdnIclKIviv9RnAzMvR7EScDSNcUzvKYHlFLnzZ6JWsx90knPtL/o gLxAWO++o5STNm1lEj04mRDIivRUMMAVwGpuAR5WYdPXgxNhEoRBUqVWZ0lSBGj1ud9U I+8z+HRmYyB+8fNDQIWpIaTXnbFF468COUzJkjxQr1++BrvDBpH+F3TUPj6qDCvSL67w mKA1n3S0JK5ry2ePUTRtPzFqKe47TXsRx9zZsARtrBVVS7/SovNGMsJJ/MEnjV+wxIyk sOsWnrlDnfjTI9Wx+IlEwyfSKNN/oss0tDBW1fq8fbm9PLkeR9TNIfqXY8XpjmGaCgWa Iptg== X-Gm-Message-State: AHQUAuY0yOuKrJZOkRYyel4aP49jHH9B8M3qGZlu3t5jxf1WN2yTHQt6 qYfxsjjcJHA/kAELCLaHa2gf13S6Fy0yQNOysk8Ia6TVfOulsA== X-Google-Smtp-Source: AHgI3IYQ+V6CcUTwzUkmTVaxgry9vuAKeA8COgmnDOVg6n3NPkBVM2sLXqPRmR+OtTvA07blZGrj5qxgmZc4C8l5Wxs= X-Received: by 2002:aca:644:: with SMTP id 65mr49779oig.21.1549469049305; Wed, 06 Feb 2019 08:04:09 -0800 (PST) MIME-Version: 1.0 References: <20190203214205.13594-1-linus.walleij@linaro.org> <20190203214205.13594-6-linus.walleij@linaro.org> In-Reply-To: <20190203214205.13594-6-linus.walleij@linaro.org> From: Bartosz Golaszewski Date: Wed, 6 Feb 2019 17:03:58 +0100 Message-ID: Subject: Re: [PATCH 05/17 v1] gpio: ixp4xx: Add driver for the IXP4xx GPIO To: Linus Walleij X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190206_080410_822336_BBC95513 X-CRM114-Status: GOOD ( 36.76 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Arnd Bergmann , Tim Harvey , Krzysztof Halasa , Olof Johansson , Imre Kaloz , arm-soc 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 bmllZHouLCAzIGx1dCAyMDE5IG8gMjI6NDIgTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBs aW5hcm8ub3JnPiBuYXBpc2HFgihhKToKPgo+IFRoaXMgYWRkcyBhIGRyaXZlciBmb3IgdGhlIElY UDR4eCBHUElPIGJsb2NrIGZvdW5kIGluCj4gdGhlIEludGVsIFhTY2FsZSBJWFA0eHggc3lzdGVt cy4KPgo+IFRoZSBHUElPIHBhcnQgb2YgdGhpcyBibG9jayBpcyBwcmV0dHkgc3RyYWlnaHQtZm9y d2FyZCBhbmQKPiBqdXN0IHVzZXMgdGhlIGdlbmVyaWMgTU1JTyBHUElPIGxpYnJhcnkuCj4KPiBU aGUgaXJxY2hpcCBzaWRlIG9mIHRoaXMgZHJpdmVyIGlzIGhpZXJhcmNoaWNhbCB3aGVyZQo+IHRo ZSBtYWluIGlycWNoaXAgd2lsbCByZWNlaXZlIGEgcHJvY2Vzc2VkIGxldmVsIHRyaWdnZXIKPiBp biByZXNwb25zZSB0byB0aGUgZWRnZSBkZXRlY3RvciBvZiB0aGUgR1BJTyBibG9jaywKPiBzbyBm b3IgdGhpcyByZWFzb24gdGhlIHYyIHZlcnNpb24gb2YgdGhlIGlycWRvbWFpbiBBUEkKPiBpcyB1 c2VkIChhcyB3ZWxsIGFzIGluIHRoZSBwYXJlbnQgSVhQNHh4IGlycWNoaXApIGFuZAo+IG1hc2tp bmcsIHVubWFza2luZyBhbmQgc2V0dGluZyB1cCB0aGUgdHlwZSBvbiBJUlEKPiBoYXBwZW5zIG9u IHNldmVyYWwgbGV2ZWxzLgo+Cj4gQ3VycmVudGx5IHRoaXMgR1BJTyBjb250cm9sbGVyIHdpbGwg Z3JhYiB0aGUgcGFyZW50Cj4gaXJxZG9tYWluIHVzaW5nIGEgc3BlY2lhbCBmdW5jdGlvbiwgYnV0 IGFzIHRoZSBwbGF0Zm9ybQo+IG1vdmUgdG93YXJkIGRldmljZSB0cmVlIHByb2JpbmcsIHRoaXMg d2lsbCBub3QgYmUgbmVlZGVkOgo+IHdlIGNhbiBqdXN0IGxvb2sgdXAgdGhlIHBhcmVudCBpcnFk b21haW4gZnJvbSB0aGUgZGV2aWNlCj4gdHJlZS4KPgo+IENjOiBCYXJ0b3N6IEdvbGFzemV3c2tp IDxiZ29sYXN6ZXdza2lAYmF5bGlicmUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IExpbnVzIFdhbGxl aWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KPiAtLS0KPiBCYXJ0b3N6OiBsb29raW5nIGZv ciB5b3VyIEFDSyBvbiB0aGlzLCBpdCdkIGJlIGdvb2QgaWYKPiB0aGUgb3RoZXIgR1BJTyBtYWlu dGFpbmVyIGlzIGFsaWduZWQgd2l0aCBteSBpZGVhcyBoZXJlLgo+IEkgaW50ZW5kIHRvIG1lcmdl IHRoaXMgdGhyb3VnaCB0aGUgQVJNIFNvQyB0cmVlLgo+IC0tLQoKTGludXMsCgpNeSByZW1hcmtz IGFyZSBiZWxvdy4gTW9zdGx5IGp1c3Qgbml0cyAoZmVlbCBmcmVlIHRvIGlnbm9yZSkgb3IKcXVl c3Rpb25zIHRoYXQgSSdkIGxpa2UgY2xhcmlmaWVkLgoKPiAgTUFJTlRBSU5FUlMgICAgICAgICAg ICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwaW8vS2NvbmZpZyAgICAgICB8ICAxMiArCj4gIGRy aXZlcnMvZ3Bpby9NYWtlZmlsZSAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncGlvL2dwaW8taXhw NHh4LmMgfCA0NDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA0IGZp bGVzIGNoYW5nZWQsIDQ1NyBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwaW8vZ3Bpby1peHA0eHguYwo+Cj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJ TlRBSU5FUlMKPiBpbmRleCAwZDQ4ZmFhM2U2MzUuLjZjMTYxYmQ4MjIzOCAxMDA2NDQKPiAtLS0g YS9NQUlOVEFJTkVSUwo+ICsrKyBiL01BSU5UQUlORVJTCj4gQEAgLTE2NTEsNiArMTY1MSw3IEBA IE06ICAgICAgICBLcnp5c3p0b2YgSGFsYXNhIDxraGFsYXNhQHBpYXAucGw+Cj4gIEw6ICAgICBs aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1 YnNjcmliZXJzKQo+ICBTOiAgICAgTWFpbnRhaW5lZAo+ICBGOiAgICAgYXJjaC9hcm0vbWFjaC1p eHA0eHgvCj4gK0Y6ICAgICBkcml2ZXJzL2dwaW8vZ3Bpby1peHA0eHguYwo+ICBGOiAgICAgZHJp dmVycy9pcnFjaGlwL2lycS1peHA0eHguYwo+ICBGOiAgICAgaW5jbHVkZS9saW51eC9pcnFjaGlw L2lycS1peHA0eHguaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3Bpby9LY29uZmlnIGIvZHJp dmVycy9ncGlvL0tjb25maWcKPiBpbmRleCA2OTlhODExOGM0MzMuLmZlNGE0N2U0OWEyNCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwaW8vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3Bpby9LY29u ZmlnCj4gQEAgLTI4Niw2ICsyODYsMTggQEAgY29uZmlnIEdQSU9fSU9QCj4KPiAgICAgICAgICAg SWYgdW5zdXJlLCBzYXkgTi4KPgo+ICtjb25maWcgR1BJT19JWFA0WFgKPiArICAgICAgIGJvb2wg IkludGVsIElYUDR4eCBHUElPIgo+ICsgICAgICAgZGVwZW5kcyBvbiBBUkNIX0lYUDRYWCB8fCBD T01QSUxFX1RFU1QKPiArICAgICAgIHNlbGVjdCBHUElPX0dFTkVSSUMKPiArICAgICAgIHNlbGVj dCBJUlFfRE9NQUlOCj4gKyAgICAgICBzZWxlY3QgSVJRX0RPTUFJTl9ISUVSQVJDSFkKPiArICAg ICAgIGhlbHAKPiArICAgICAgICAgU2F5IHllcyBoZXJlIHRvIHN1cHBvcnQgdGhlIEdQSU8gZnVu Y3Rpb25hbGl0eSBvZiBhIG51bWJlciBvZiBJbnRlbAo+ICsgICAgICAgICBJWFA0eHggc2VyaWVz IG9mIGNoaXBzLgo+ICsKPiArICAgICAgICAgSWYgdW5zdXJlLCBzYXkgTi4KPiArCj4gIGNvbmZp ZyBHUElPX0xPT05HU09OCj4gICAgICAgICBib29sICJMb29uZ3Nvbi0yLzMgR1BJTyBzdXBwb3J0 Igo+ICAgICAgICAgZGVwZW5kcyBvbiBDUFVfTE9PTkdTT04yIHx8IENQVV9MT09OR1NPTjMKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL01ha2VmaWxlIGIvZHJpdmVycy9ncGlvL01ha2VmaWxl Cj4gaW5kZXggMDU2OGJiZTZmZTY4Li5jZjY2NTIzYjVlZWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncGlvL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncGlvL01ha2VmaWxlCj4gQEAgLTYwLDYg KzYwLDcgQEAgb2JqLSQoQ09ORklHX0dQSU9fSExXRCkgICAgICAgICAgICAgICArPSBncGlvLWhs d2Qubwo+ICBvYmotJChDT05GSUdfSFRDX0VHUElPKSAgICAgICAgICAgICAgICArPSBncGlvLWh0 Yy1lZ3Bpby5vCj4gIG9iai0kKENPTkZJR19HUElPX0lDSCkgICAgICAgICArPSBncGlvLWljaC5v Cj4gIG9iai0kKENPTkZJR19HUElPX0lPUCkgICAgICAgICArPSBncGlvLWlvcC5vCj4gK29iai0k KENPTkZJR19HUElPX0lYUDRYWCkgICAgICArPSBncGlvLWl4cDR4eC5vCj4gIG9iai0kKENPTkZJ R19HUElPX0lUODcpICAgICAgICAgICAgICAgICs9IGdwaW8taXQ4Ny5vCj4gIG9iai0kKENPTkZJ R19HUElPX0pBTlpfVFRMKSAgICArPSBncGlvLWphbnotdHRsLm8KPiAgb2JqLSQoQ09ORklHX0dQ SU9fS0VNUExEKSAgICAgICs9IGdwaW8ta2VtcGxkLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cGlvL2dwaW8taXhwNHh4LmMgYi9kcml2ZXJzL2dwaW8vZ3Bpby1peHA0eHguYwo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi40NGMyNDk0ODM3OWQKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncGlvL2dwaW8taXhwNHh4LmMKPiBAQCAtMCwwICsxLDQ0 MyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBJ WFA0IEdQSU8gZHJpdmVyCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBMaW51cyBXYWxsZWlqIDxs aW51cy53YWxsZWlqQGxpbmFyby5vcmc+Cj4gKyAqCj4gKyAqIGJhc2VkIG9uIHByZXZpb3VzIHdv cmsgYW5kIGtub3ctaG93IGZyb206Cj4gKyAqIERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0 eS5uZXQ+Cj4gKyAqLwoKSnVzdCBhIG5pdCwgYnV0IEknZCBhZGQgYSBuZXdsaW5lIGJldHdlZW4g dGhlIGluY2x1ZGVzIGFuZCB0aGUgaGVhZGVyLgpBbHNvOiBDKysgc3R5bGUgY29tbWVudCBmb3Ig dGhlIGhlYWRlci4KCj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2RyaXZlci5oPgo+ICsjaW5jbHVk ZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvaXJxZG9tYWluLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnFjaGlwLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ ICsvKiBJbmNsdWRlIHRoYXQgZ28gYXdheSB3aXRoIERUIHRyYW5zaXRpb24gKi8KPiArI2luY2x1 ZGUgPGxpbnV4L2lycWNoaXAvaXJxLWl4cDR4eC5oPgoKSSB0aGluayBhIG5ld2xpbmUgYmV0d2Vl biBsaW51eC8gYW5kIGFzbS8gaW5jbHVkZXMgaXMgYSBnb29kIHJ1bGUuCgo+ICsjaW5jbHVkZSA8 YXNtL21hY2gtdHlwZXMuaD4KPiArCj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPVVRSICAgICAw eDAwCj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPRVIgICAgICAweDA0Cj4gKyNkZWZpbmUgSVhQ NFhYX0dQSU9fR1BJTlIgICAgICAweDA4Cj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJU1IgICAg ICAweDBDCj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJVDFSICAgICAweDEwCj4gKyNkZWZpbmUg SVhQNFhYX0dQSU9fR1BJVDJSICAgICAweDE0Cj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BDTEtS ICAgICAweDE4Cj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BEQlNFTFIgICAweDFDCj4gKwoKU2lu Y2UgdGhlc2UgYXJlIHJlZ2lzdGVycyBvZmZzZXRzIC0gbWF5YmUgdGhlIHByZWZpeCBjb3VsZCBi ZQpJWFA0WFhfR1BJT19SRUdfKiBvciBJWFA0WFhfR1BJT19PRkZfKj8gSSB0aGluayBpdCdzIG1v cmUgcmVhZGFibGUuCgo+ICsvKgo+ICsgKiBUaGUgaGFyZHdhcmUgdXNlcyAzIGJpdHMgdG8gaW5k aWNhdGUgaW50ZXJydXB0ICJzdHlsZSIuCj4gKyAqIHdlIGNsZWFyIGFuZCBzZXQgdGhlc2UgdGhy ZWUgYml0cyBhY2NvcmRpbmdseS4gVGhlIGxvd2VyIDI0Cj4gKyAqIGJpdHMgaW4gdHdvIHJlZ2lz dGVycyAoR1BJVDFSIGFuZCBHUElUMlIpIGFyZSB1c2VkIHRvIHNldCB1cAo+ICsgKiB0aGUgc3R5 bGUgZm9yIDggbGluZXMgZWFjaCBmb3IgYSB0b3RhbCBvZiAxNiBHUElPIGxpbmVzLgo+ICsgKi8K PiArI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9BQ1RJVkVfSElHSCAgMHgwCj4gKyNkZWZpbmUg SVhQNFhYX0dQSU9fU1RZTEVfQUNUSVZFX0xPVyAgIDB4MQo+ICsjZGVmaW5lIElYUDRYWF9HUElP X1NUWUxFX1JJU0lOR19FREdFICAweDIKPiArI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9GQUxM SU5HX0VER0UgMHgzCj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfVFJBTlNJVElPTkFMIDB4 NAo+ICsjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX01BU0sgICAgICAgICAweDcKCkknZCB1c2Ug R0VOTUFTSygyLCAwKSBoZXJlLgoKPiArI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9TSVpFICAg ICAgICAgMwo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCBpeHA0eHhfZ3BpbyAtIElYUDQgR1BJTyBz dGF0ZSBjb250YWluZXIKPiArICogQGRldjogY29udGFpbmluZyBkZXZpY2UgZm9yIHRoaXMgaW5z dGFuY2UKPiArICogQGZ3bm9kZTogdGhlIGZ3bm9kZSBmb3IgdGhpcyBHUElPIGNoaXAKPiArICog QGdjOiBncGlvY2hpcCBmb3IgdGhpcyBpbnN0YW5jZQo+ICsgKiBAZG9tYWluOiBpcnFkb21haW4g Zm9yIHRoaXMgY2hpcCBpbnN0YW5jZQo+ICsgKiBAYmFzZTogcmVtYXBwZWQgSS9PLW1lbW9yeSBi YXNlCj4gKyAqIEBpcnFfZWRnZTogRWFjaCBiaXQgcmVwcmVzZW50cyBhbiBJUlE6IDE6IGVkZ2Ut dHJpZ2dlcmVkLAo+ICsgKiAwOiBsZXZlbCB0cmlnZ2VyZWQKPiArICovCj4gK3N0cnVjdCBpeHA0 eHhfZ3BpbyB7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKyAgICAgICBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlOwo+ICsgICAgICAgc3RydWN0IGdwaW9fY2hpcCBnYzsKPiAr ICAgICAgIHN0cnVjdCBpcnFfZG9tYWluICpkb21haW47Cj4gKyAgICAgICB2b2lkIF9faW9tZW0g KmJhc2U7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaXJxX2VkZ2U7Cj4gK307Cj4gKwo+ ICsvKioKPiArICogc3RydWN0IGl4cDR4eF9ncGlvX21hcCAtIElYUDQgR1BJTyB0byBwYXJlbnQg SVJRIG1hcAo+ICsgKiBAZ3Bpb19vZmZzZXQ6IG9mZnNldCBvZiB0aGUgSVhQNCBHUElPIGxpbmUK PiArICogQHBhcmVudF9od2lycTogaHdpcnEgb24gdGhlIHBhcmVudCBJUlEgY29udHJvbGxlcgo+ ICsgKi8KPiArc3RydWN0IGl4cDR4eF9ncGlvX21hcCB7Cj4gKyAgICAgICBpbnQgZ3Bpb19vZmZz ZXQ7Cj4gKyAgICAgICBpbnQgcGFyZW50X2h3aXJxOwo+ICt9Owo+ICsKPiArLyogR1BJTyBsaW5l cyAwLi4xMiBoYXZlIGNvcnJlc3BvbmRpbmcgSVJRcywgR1BJT3MgMTMuLjE1IGhhdmUgbm8gSVJR cyAqLwo+ICtjb25zdCBzdHJ1Y3QgaXhwNHh4X2dwaW9fbWFwIGl4cDR4eF9ncGlvbWFwW10gPSB7 Cj4gKyAgICAgICB7IC5ncGlvX29mZnNldCA9IDAsIC5wYXJlbnRfaHdpcnEgPSA2IH0sCj4gKyAg ICAgICB7IC5ncGlvX29mZnNldCA9IDEsIC5wYXJlbnRfaHdpcnEgPSA3IH0sCj4gKyAgICAgICB7 IC5ncGlvX29mZnNldCA9IDIsIC5wYXJlbnRfaHdpcnEgPSAxOSB9LAo+ICsgICAgICAgeyAuZ3Bp b19vZmZzZXQgPSAzLCAucGFyZW50X2h3aXJxID0gMjAgfSwKPiArICAgICAgIHsgLmdwaW9fb2Zm c2V0ID0gNCwgLnBhcmVudF9od2lycSA9IDIxIH0sCj4gKyAgICAgICB7IC5ncGlvX29mZnNldCA9 IDUsIC5wYXJlbnRfaHdpcnEgPSAyMiB9LAo+ICsgICAgICAgeyAuZ3Bpb19vZmZzZXQgPSA2LCAu cGFyZW50X2h3aXJxID0gMjMgfSwKPiArICAgICAgIHsgLmdwaW9fb2Zmc2V0ID0gNywgLnBhcmVu dF9od2lycSA9IDI0IH0sCj4gKyAgICAgICB7IC5ncGlvX29mZnNldCA9IDgsIC5wYXJlbnRfaHdp cnEgPSAyNSB9LAo+ICsgICAgICAgeyAuZ3Bpb19vZmZzZXQgPSA5LCAucGFyZW50X2h3aXJxID0g MjYgfSwKPiArICAgICAgIHsgLmdwaW9fb2Zmc2V0ID0gMTAsIC5wYXJlbnRfaHdpcnEgPSAyNyB9 LAo+ICsgICAgICAgeyAuZ3Bpb19vZmZzZXQgPSAxMSwgLnBhcmVudF9od2lycSA9IDI4IH0sCj4g KyAgICAgICB7IC5ncGlvX29mZnNldCA9IDEyLCAucGFyZW50X2h3aXJxID0gMjkgfSwKPiArfTsK PiArCj4gK3N0YXRpYyB2b2lkIGl4cDR4eF9ncGlvX2lycV9hY2soc3RydWN0IGlycV9kYXRhICpk KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgaXhwNHh4X2dwaW8gKmcgPSBpcnFfZGF0YV9nZXRfaXJx X2NoaXBfZGF0YShkKTsKPiArCj4gKyAgICAgICBfX3Jhd193cml0ZWwoQklUKGQtPmh3aXJxKSwg Zy0+YmFzZSArIElYUDRYWF9HUElPX0dQSVNSKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaXhw NHh4X2dwaW9faXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4gK3sKPiArICAgICAgIHN0 cnVjdCBpeHA0eHhfZ3BpbyAqZyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOwo+ICsK PiArICAgICAgIC8qIEFDSyB3aGVuIHVubWFza2luZyBpZiBub3QgZWRnZS10cmlnZ2VyZWQgKi8K PiArICAgICAgIGlmICghKGctPmlycV9lZGdlICYgQklUKGQtPmh3aXJxKSkpCj4gKyAgICAgICAg ICAgICAgIGl4cDR4eF9ncGlvX2lycV9hY2soZCk7Cj4gKwo+ICsgICAgICAgaXJxX2NoaXBfdW5t YXNrX3BhcmVudChkKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpeHA0eHhfZ3Bpb19pcnFfc2V0 X3R5cGUoc3RydWN0IGlycV9kYXRhICpkLCB1bnNpZ25lZCBpbnQgdHlwZSkKPiArewo+ICsgICAg ICAgc3RydWN0IGl4cDR4eF9ncGlvICpnID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7 Cj4gKyAgICAgICBpbnQgbGluZSA9IGQtPmh3aXJxOwo+ICsgICAgICAgdTMyIGludF9zdHlsZTsK PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyAgICAgICB1MzIgaW50X3JlZzsKPiAr ICAgICAgIHUzMiB2YWw7Cj4gKwoKSSdtIHBlcnNvbmFsbHkgYSBmYW4gb2YgcHV0dGluZyB2YXJp YWJsZXMgb2YgdGhlIHNhbWUgdHlwZSBpbiB0aGUgc2FtZQpsaW5lIGFuZCBhcnJhbmdpbmcgdGhl bSBpbiByZXZlcnNlLWNocmlzdG1hcyB0cmVlIG9yZGVyLCBidXQgZmVlbCBmcmVlCnRvIGlnbm9y ZSBpdC4KCj4gKyAgICAgICBzd2l0Y2ggKHR5cGUpIHsKPiArICAgICAgIGNhc2UgSVJRX1RZUEVf RURHRV9CT1RIOgo+ICsgICAgICAgICAgICAgICBpcnFfc2V0X2hhbmRsZXJfbG9ja2VkKGQsIGhh bmRsZV9lZGdlX2lycSk7Cj4gKyAgICAgICAgICAgICAgIGludF9zdHlsZSA9IElYUDRYWF9HUElP X1NUWUxFX1RSQU5TSVRJT05BTDsKPiArICAgICAgICAgICAgICAgZy0+aXJxX2VkZ2UgfD0gQklU KGQtPmh3aXJxKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIElSUV9U WVBFX0VER0VfUklTSU5HOgo+ICsgICAgICAgICAgICAgICBpcnFfc2V0X2hhbmRsZXJfbG9ja2Vk KGQsIGhhbmRsZV9lZGdlX2lycSk7Cj4gKyAgICAgICAgICAgICAgIGludF9zdHlsZSA9IElYUDRY WF9HUElPX1NUWUxFX1JJU0lOR19FREdFOwo+ICsgICAgICAgICAgICAgICBnLT5pcnFfZWRnZSB8 PSBCSVQoZC0+aHdpcnEpOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2Ug SVJRX1RZUEVfRURHRV9GQUxMSU5HOgo+ICsgICAgICAgICAgICAgICBpcnFfc2V0X2hhbmRsZXJf bG9ja2VkKGQsIGhhbmRsZV9lZGdlX2lycSk7Cj4gKyAgICAgICAgICAgICAgIGludF9zdHlsZSA9 IElYUDRYWF9HUElPX1NUWUxFX0ZBTExJTkdfRURHRTsKPiArICAgICAgICAgICAgICAgZy0+aXJx X2VkZ2UgfD0gQklUKGQtPmh3aXJxKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAg ICBjYXNlIElSUV9UWVBFX0xFVkVMX0hJR0g6Cj4gKyAgICAgICAgICAgICAgIGlycV9zZXRfaGFu ZGxlcl9sb2NrZWQoZCwgaGFuZGxlX2xldmVsX2lycSk7Cj4gKyAgICAgICAgICAgICAgIGludF9z dHlsZSA9IElYUDRYWF9HUElPX1NUWUxFX0FDVElWRV9ISUdIOwo+ICsgICAgICAgICAgICAgICBn LT5pcnFfZWRnZSAmPSB+QklUKGQtPmh3aXJxKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4g KyAgICAgICBjYXNlIElSUV9UWVBFX0xFVkVMX0xPVzoKPiArICAgICAgICAgICAgICAgaXJxX3Nl dF9oYW5kbGVyX2xvY2tlZChkLCBoYW5kbGVfbGV2ZWxfaXJxKTsKPiArICAgICAgICAgICAgICAg aW50X3N0eWxlID0gSVhQNFhYX0dQSU9fU1RZTEVfQUNUSVZFX0xPVzsKPiArICAgICAgICAgICAg ICAgZy0+aXJxX2VkZ2UgJj0gfkJJVChkLT5od2lycSk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g KyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGxpbmUgPj0gOCkgewo+ICsgICAgICAgICAgICAg ICAvKiBwaW5zIDgtMTUgKi8KPiArICAgICAgICAgICAgICAgbGluZSAtPSA4Owo+ICsgICAgICAg ICAgICAgICBpbnRfcmVnID0gSVhQNFhYX0dQSU9fR1BJVDJSOwo+ICsgICAgICAgfSBlbHNlIHsK PiArICAgICAgICAgICAgICAgLyogcGlucyAwLTcgKi8KPiArICAgICAgICAgICAgICAgaW50X3Jl ZyA9IElYUDRYWF9HUElPX0dQSVQxUjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmZy0+Z2MuYmdwaW9fbG9jaywgZmxhZ3MpOwo+ICsKPiArICAgICAgIC8qIENs ZWFyIHRoZSBzdHlsZSBmb3IgdGhlIGFwcHJvcHJpYXRlIHBpbiAqLwo+ICsgICAgICAgdmFsID0g X19yYXdfcmVhZGwoZy0+YmFzZSArIGludF9yZWcpOwo+ICsgICAgICAgdmFsICY9IH4oSVhQNFhY X0dQSU9fU1RZTEVfTUFTSyA8PCAobGluZSAqIElYUDRYWF9HUElPX1NUWUxFX1NJWkUpKTsKPiAr ICAgICAgIF9fcmF3X3dyaXRlbCh2YWwsIGctPmJhc2UgKyBpbnRfcmVnKTsKCkkga25vdyB5b3Un cmUgbm90IHVzaW5nIHJlZ21hcCwgYmVjYXVzZSB0aGlzIGRyaXZlcidzIGJhc2VkIG9uCmdwaW8t bW1pbywgYnV0IEknbSB3b25kZXJpbmcgaWYgeW91IGNvdWxkIG1heWJlIHdyYXAgdGhvc2UgdGhy ZWUKb3BlcmF0aW9ucyBpbiBhIGhlbHBlciB3cmFwcGVyIGUuZy4gaXhwNHh4X3VwZGF0ZV9yZWco KSBvciBzb21ldGhpbmcKdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhZC4gU2FtZSBiZWxvdy4KCj4g Kwo+ICsgICAgICAgX19yYXdfd3JpdGVsKEJJVChsaW5lKSwgZy0+YmFzZSArIElYUDRYWF9HUElP X0dQSVNSKTsKPiArCj4gKyAgICAgICAvKiBTZXQgdGhlIG5ldyBzdHlsZSAqLwo+ICsgICAgICAg dmFsID0gX19yYXdfcmVhZGwoZy0+YmFzZSArIGludF9yZWcpOwo+ICsgICAgICAgdmFsIHw9IChp bnRfc3R5bGUgPDwgKGxpbmUgKiBJWFA0WFhfR1BJT19TVFlMRV9TSVpFKSk7Cj4gKyAgICAgICBf X3Jhd193cml0ZWwodmFsLCBnLT5iYXNlICsgaW50X3JlZyk7Cj4gKwo+ICsgICAgICAgLyogRm9y Y2UtY29uZmlndXJlIHRoaXMgbGluZSBhcyBhbiBpbnB1dCAqLwo+ICsgICAgICAgdmFsID0gX19y YXdfcmVhZGwoZy0+YmFzZSArIElYUDRYWF9HUElPX0dQT0VSKTsKPiArICAgICAgIHZhbCB8PSBC SVQoZC0+aHdpcnEpOwo+ICsgICAgICAgX19yYXdfd3JpdGVsKHZhbCwgZy0+YmFzZSArIElYUDRY WF9HUElPX0dQT0VSKTsKPiArCj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZnLT5n Yy5iZ3Bpb19sb2NrLCBmbGFncyk7Cj4gKwo+ICsgICAgICAgLyogVGhpcyBwYXJlbnQgb25seSBh Y2NlcHQgbGV2ZWwgaGlnaCAoYXNzZXJ0ZWQpICovCj4gKyAgICAgICByZXR1cm4gaXJxX2NoaXBf c2V0X3R5cGVfcGFyZW50KGQsIElSUV9UWVBFX0xFVkVMX0hJR0gpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IGlycV9jaGlwIGl4cDR4eF9ncGlvX2lycWNoaXAgPSB7Cj4gKyAgICAgICAubmFt ZSA9ICJJWFA0R1BJTyIsCj4gKyAgICAgICAuaXJxX2FjayA9IGl4cDR4eF9ncGlvX2lycV9hY2ss Cj4gKyAgICAgICAuaXJxX21hc2sgPSBpcnFfY2hpcF9tYXNrX3BhcmVudCwKPiArICAgICAgIC5p cnFfdW5tYXNrID0gaXhwNHh4X2dwaW9faXJxX3VubWFzaywKPiArICAgICAgIC5pcnFfc2V0X3R5 cGUgPSBpeHA0eHhfZ3Bpb19pcnFfc2V0X3R5cGUsCj4gK307CgpJIGFzc3VtZSB0aGlzIGRldmlj ZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMsIHNvIGl0J3Mgc2FmZSB0bwpoYXZlIGEg c3RhdGljIGlycWNoaXA/Cgo+ICsKPiArc3RhdGljIGludCBpeHA0eHhfZ3Bpb190b19pcnEoc3Ry dWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVkIGludCBvZmZzZXQpCj4gK3sKPiArICAgICAgIHN0 cnVjdCBpeHA0eHhfZ3BpbyAqZyA9IGdwaW9jaGlwX2dldF9kYXRhKGdjKTsKPiArICAgICAgIHN0 cnVjdCBpcnFfZndzcGVjIGZ3c3BlYzsKPiArCj4gKyAgICAgICBmd3NwZWMuZndub2RlID0gZy0+ Zndub2RlOwo+ICsgICAgICAgZndzcGVjLnBhcmFtX2NvdW50ID0gMjsKPiArICAgICAgIGZ3c3Bl Yy5wYXJhbVswXSA9IG9mZnNldDsKPiArICAgICAgIGZ3c3BlYy5wYXJhbVsxXSA9IElSUV9UWVBF X05PTkU7Cj4gKwo+ICsgICAgICAgcmV0dXJuIGlycV9jcmVhdGVfZndzcGVjX21hcHBpbmcoJmZ3 c3BlYyk7Cj4gK30KPiArCgpUaGlzIGlzIHdlcmUgSSBzdGFydCB0byBzdHJ1Z2dsZS4gSSdtIHN0 aWxsIG5vdCB2ZXJ5IHdlbGwgdmVyc2VkIGluCmlycSBkb21haW4gaGllcmFyY2hpZXMgeWV0LiBZ b3UgYWxyZWFkeSBleHBsYWluIHRoZSBjb25jZXB0IGluIHRoZQpjb21taXQgbWVzc2FnZSwgYnV0 IGl0IHdvdWxkIGJlIGdyZWF0IGlmIHlvdSBjb3VsZCBhZGQgYSBjb21tZW50CmRlc2NyaWJpbmcg dGhlIHRlY2huaWNhbCBkZXRhaWxzIG9mIGltcGxlbWVudGF0aW9uIGhlcmUgYW5kIGluIG90aGVy CnJlbGF0ZWQgY2FsbGJhY2tzLiBUaGUgd2hvbGUgZndzcGVjIHRoaW5neSBpcyBub3QgdmVyeSBv YnZpb3VzIGFuZCBpdAp3b3VsZCBzZXJ2ZSBhcyBhbiBleGFtcGxlIGZvciB0aGUgZnV0dXJlLgoK PiArc3RhdGljIGludCBpeHA0eHhfZ3Bpb19pcnFfZG9tYWluX3RyYW5zbGF0ZShzdHJ1Y3QgaXJx X2RvbWFpbiAqZG9tYWluLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGlycV9md3NwZWMgKmZ3c3BlYywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmh3aXJxLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICp0eXBlKQo+ICt7 Cj4gKwo+ICsgICAgICAgLyogV2Ugc3VwcG9ydCBzdGFuZGFyZCBEVCB0cmFuc2xhdGlvbiAqLwo+ ICsgICAgICAgaWYgKGlzX29mX25vZGUoZndzcGVjLT5md25vZGUpICYmIGZ3c3BlYy0+cGFyYW1f Y291bnQgPT0gMikgewo+ICsgICAgICAgICAgICAgICAqaHdpcnEgPSBmd3NwZWMtPnBhcmFtWzBd Owo+ICsgICAgICAgICAgICAgICAqdHlwZSA9IGZ3c3BlYy0+cGFyYW1bMV07Cj4gKyAgICAgICAg ICAgICAgIHJldHVybiAwOwo+ICsgICAgICAgfQoKVGhpcyBsb2dpYyBpcyBhIGJpdCBub24taW50 dWl0aXZlIC0gbWF5YmUgeW91IGNvdWxkIGZpcnN0IGNoZWNrIGZvcgplcnJvciBjb25kaXRpb25z IGFuZCB0aGVuIGRvIGFueSBwcm9jZXNzaW5nPwoKPiArCj4gKyAgICAgICAvKiBUaGlzIGdvZXMg YXdheSB3aGVuIHdlIHRyYW5zaXRpb24gdG8gRFQgKi8KPiArICAgICAgIGlmIChpc19md25vZGVf aXJxY2hpcChmd3NwZWMtPmZ3bm9kZSkpIHsKPiArICAgICAgICAgICAgICAgaWYgKGZ3c3BlYy0+ cGFyYW1fY291bnQgIT0gMikKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiArICAgICAgICAgICAgICAgKmh3aXJxID0gZndzcGVjLT5wYXJhbVswXTsKPiArICAgICAg ICAgICAgICAgKnR5cGUgPSBmd3NwZWMtPnBhcmFtWzFdOwo+ICsgICAgICAgICAgICAgICBXQVJO X09OKCp0eXBlID09IElSUV9UWVBFX05PTkUpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsK PiArICAgICAgIH0KPiArICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGl4cDR4eF9ncGlvX2lycV9kb21haW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmQsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpcnEs IHVuc2lnbmVkIGludCBucl9pcnFzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgaXhwNHh4X2dwaW8gKmcg PSBkLT5ob3N0X2RhdGE7Cj4gKyAgICAgICBpcnFfaHdfbnVtYmVyX3QgaHdpcnE7Cj4gKyAgICAg ICB1bnNpZ25lZCBpbnQgdHlwZSA9IElSUV9UWVBFX05PTkU7Cj4gKyAgICAgICBzdHJ1Y3QgaXJx X2Z3c3BlYyAqZndzcGVjID0gZGF0YTsKPiArICAgICAgIGludCByZXQ7Cj4gKyAgICAgICBpbnQg aTsKPiArCj4gKyAgICAgICByZXQgPSBpeHA0eHhfZ3Bpb19pcnFfZG9tYWluX3RyYW5zbGF0ZShk LCBmd3NwZWMsICZod2lycSwgJnR5cGUpOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICBkZXZfZGJnKGctPmRldiwgImFsbG9jYXRl IElSUSAlZC4uJWQsIGh3aXJxICVsdS4uJWx1XG4iLAo+ICsgICAgICAgICAgICAgICBpcnEsIGly cSArIG5yX2lycXMgLSAxLAo+ICsgICAgICAgICAgICAgICBod2lycSwgaHdpcnEgKyBucl9pcnFz IC0gMSk7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IG5yX2lycXM7IGkrKykgewo+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgaXJxX2Z3c3BlYyBwYXJlbnRfZndzcGVjOwo+ICsgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgaXhwNHh4X2dwaW9fbWFwICptYXA7Cj4gKyAgICAgICAgICAg ICAgIGludCBqOwo+ICsKPiArICAgICAgICAgICAgICAgLyogTm90IGFsbCBsaW5lcyBzdXBwb3J0 IElSUXMgKi8KPiArICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoaXhw NHh4X2dwaW9tYXApOyBqKyspIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBtYXAgPSAmaXhw NHh4X2dwaW9tYXBbal07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC0+Z3Bpb19v ZmZzZXQgPT0gaHdpcnEpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICBpZiAoaiA9PSBBUlJBWV9TSVpF KGl4cDR4eF9ncGlvbWFwKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZy0+ ZGV2LCAiY2FuJ3QgbG9vayB1cCBod2lycSAlbHVcbiIsIGh3aXJxKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICAgICBkZXZfZGJnKGctPmRldiwgImZvdW5kIHBhcmVudCBod2lycSAldVxuIiwgbWFwLT5w YXJlbnRfaHdpcnEpOwo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAg ICogV2Ugc2V0IGhhbmRsZV9iYWRfaXJxIGJlY2F1c2UgdGhlIC5zZXRfdHlwZSgpIHNob3VsZAo+ ICsgICAgICAgICAgICAgICAgKiBhbHdheXMgYmUgaW52b2tlZCBhbmQgc2V0IHRoZSByaWdodCB0 eXBlIG9mIGhhbmRsZXIuCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICBp cnFfZG9tYWluX3NldF9pbmZvKGQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXJxICsgaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2lycSAr IGksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml4cDR4eF9ncGlvX2ly cWNoaXAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZywKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYmFkX2lycSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKPiArICAgICAgICAgICAgICAg aXJxX3NldF9wcm9iZShpcnEgKyBpKTsKPiArCj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAg ICAgICAgICAgICAqIENyZWF0ZSBhIElSUSBmd3NwZWMgdG8gc2VuZCB1cCB0byB0aGUgcGFyZW50 IGlycWRvbWFpbjoKPiArICAgICAgICAgICAgICAgICogc3BlY2lmeSB0aGUgaHdpcnEgd2UgYWRk cmVzcyBvbiB0aGUgcGFyZW50IGFuZCB0aWUgaXQKPiArICAgICAgICAgICAgICAgICogYWxsIHRv Z2V0aGVyIHVwIHRoZSBjaGFpbi4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAg ICAgIHBhcmVudF9md3NwZWMuZndub2RlID0gZC0+cGFyZW50LT5md25vZGU7Cj4gKyAgICAgICAg ICAgICAgIHBhcmVudF9md3NwZWMucGFyYW1fY291bnQgPSAyOwo+ICsgICAgICAgICAgICAgICBw YXJlbnRfZndzcGVjLnBhcmFtWzBdID0gbWFwLT5wYXJlbnRfaHdpcnE7Cj4gKyAgICAgICAgICAg ICAgIC8qIFRoaXMgcGFyZW50IG9ubHkgaGFuZGxlcyBhc3NlcnRlZCBsZXZlbCBJUlFzICovCj4g KyAgICAgICAgICAgICAgIHBhcmVudF9md3NwZWMucGFyYW1bMV0gPSBJUlFfVFlQRV9MRVZFTF9I SUdIOwo+ICsgICAgICAgICAgICAgICBkZXZfZGJnKGctPmRldiwgImFsbG9jX2lycXNfcGFyZW50 IGZvciAlZCBwYXJlbnQgaHdpcnEgJWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaXJx ICsgaSwgbWFwLT5wYXJlbnRfaHdpcnEpOwo+ICsgICAgICAgICAgICAgICByZXQgPSBpcnFfZG9t YWluX2FsbG9jX2lycXNfcGFyZW50KGQsIGlycSArIGksIDEsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmVudF9md3NwZWMpOwo+ICsgICAg ICAgICAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZy0+ ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhbGxvY2F0 ZSBwYXJlbnQgaHdpcnEgJWQgZm9yIGh3aXJxICVsdVxuIiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1hcC0+cGFyZW50X2h3aXJxLCBod2lycSk7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2Rv bWFpbl9vcHMgaXhwNHh4X2dwaW9faXJxZG9tYWluX29wcyA9IHsKPiArICAgICAgIC50cmFuc2xh dGUgPSBpeHA0eHhfZ3Bpb19pcnFfZG9tYWluX3RyYW5zbGF0ZSwKPiArICAgICAgIC5hbGxvYyA9 IGl4cDR4eF9ncGlvX2lycV9kb21haW5fYWxsb2MsCj4gKyAgICAgICAuZnJlZSA9IGlycV9kb21h aW5fZnJlZV9pcnFzX2NvbW1vbiwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgaXhwNHh4X2dwaW9f cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7 Cj4gKyAgICAgICBzdHJ1Y3QgaXJxX2RvbWFpbiAqcGFyZW50Owo+ICsgICAgICAgc3RydWN0IHJl c291cmNlICpyZXM7Cj4gKyAgICAgICBzdHJ1Y3QgaXhwNHh4X2dwaW8gKmc7Cj4gKyAgICAgICBp bnQgcmV0Owo+ICsgICAgICAgaW50IGk7Cj4gKwo+ICsgICAgICAgZyA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqZyksIEdGUF9LRVJORUwpOwo+ICsgICAgICAgaWYgKCFnKQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAgICAgIGctPmRldiA9IGRldjsKPiArCj4gKyAg ICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDAp Owo+ICsgICAgICAgZy0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4g KyAgICAgICBpZiAoSVNfRVJSKGctPmJhc2UpKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo ZGV2LCAiaW9yZW1hcCBlcnJvclxuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGctPmJhc2UpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBNYWtl IHN1cmUgR1BJTyAxNCBhbmQgMTUgYXJlIE5PVCB1c2VkIGFzIGNsb2NrcyBidXQgR1BJTyBvbgo+ ICsgICAgICAgICogc3BlY2lmaWMgbWFjaGluZXMuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlm IChtYWNoaW5lX2lzX2RzbWc2MDAoKSB8fCBtYWNoaW5lX2lzX25hczEwMGQoKSkKPiArICAgICAg ICAgICAgICAgX19yYXdfd3JpdGVsKDB4MCwgZy0+YmFzZSArIElYUDRYWF9HUElPX0dQQ0xLUik7 Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFRoaXMgaXMgYSB2ZXJ5IHNwZWNpYWwgYmln LWVuZGlhbiBBUk0gaXNzdWU6IHdoZW4gdGhlIElYUDR4eCBpcwo+ICsgICAgICAgICogcnVuIGlu IGJpZyBlbmRpYW4gbW9kZSwgYWxsIHJlZ2lzdGVycyBpbiB0aGUgbWFjaGluZSBhcmUgc3dpdGNo ZWQKPiArICAgICAgICAqIGFyb3VuZCB0byB0aGUgQ1BVLW5hdGl2ZSBlbmRpYW5uZXNzLiBBcyB5 b3Ugc2VlIG1vc3RseSBpbiB0aGUKPiArICAgICAgICAqIGRyaXZlciB3ZSB1c2UgX19yYXdfcmVh ZGwoKS9fX3Jhd193cml0ZWwoKSB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVycwo+ICsgICAgICAgICog aW4gdGhlIGFwcHJvcHJpYXRlIG9yZGVyLiBXaXRoIHRoZSBHUElPIGxpYnJhcnkgd2UgbmVlZCB0 byBzcGVjaWZ5Cj4gKyAgICAgICAgKiBieXRlIG9yZGVyIGV4cGxpY2l0bHksIHNvIHRoaXMgZmxh ZyBuZWVkcyB0byBiZSBzZXQgd2hlbiBjb21waWxpbmcKPiArICAgICAgICAqIGZvciBiaWcgZW5k aWFuLgo+ICsgICAgICAgICovCj4gKyNpZiBkZWZpbmVkKENPTkZJR19DUFVfQklHX0VORElBTikK PiArICAgICAgIGZsYWdzID0gQkdQSU9GX0JJR19FTkRJQU5fQllURV9PUkRFUjsKPiArI2Vsc2UK PiArICAgICAgIGZsYWdzID0gMDsKPiArI2VuZGlmCj4gKwo+ICsgICAgICAgLyogUG9wdWxhdGUg YW5kIHJlZ2lzdGVyIGdwaW8gY2hpcCAqLwo+ICsgICAgICAgcmV0ID0gYmdwaW9faW5pdCgmZy0+ Z2MsIGRldiwgNCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgZy0+YmFzZSArIElYUDRYWF9H UElPX0dQSU5SLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnLT5iYXNlICsgSVhQNFhYX0dQ SU9fR1BPVVRSLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnLT5iYXNlICsg SVhQNFhYX0dQSU9fR1BPRVIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKPiAr ICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJ1bmFibGUg dG8gaW5pdCBnZW5lcmljIEdQSU9cbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ICsgICAgICAgfQo+ICsgICAgICAgZy0+Z2MudG9faXJxID0gaXhwNHh4X2dwaW9fdG9faXJxOwo+ ICsgICAgICAgZy0+Z2MubmdwaW8gPSAxNjsKPiArICAgICAgIGctPmdjLmxhYmVsID0gIklYUDRY WF9HUElPX0NISVAiOwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFRPRE86IHdoZW4gd2UgaGF2 ZSBtaWdyYXRlZCB0byBkZXZpY2UgdHJlZSBhbmQgYWxsIEdQSU9zCj4gKyAgICAgICAgKiBhcmUg ZmV0Y2hlZCB1c2luZyBwaGFuZGxlcywgc2V0IHRoaXMgdG8gLTEgdG8gZ2V0IHJpZCBvZgo+ICsg ICAgICAgICogdGhlIGZpeGVkIGdwaW9jaGlwIGJhc2UuCj4gKyAgICAgICAgKi8KPiArICAgICAg IGctPmdjLmJhc2UgPSAwOwo+ICsgICAgICAgZy0+Z2MucGFyZW50ID0gJnBkZXYtPmRldjsKPiAr ICAgICAgIGctPmdjLm93bmVyID0gVEhJU19NT0RVTEU7Cj4gKwo+ICsgICAgICAgcmV0ID0gZGV2 bV9ncGlvY2hpcF9hZGRfZGF0YShkZXYsICZnLT5nYywgZyk7Cj4gKyAgICAgICBpZiAocmV0KSB7 Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFkZCBTb0MgZ3Bpb2No aXBcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiAr ICAgICAgIC8qCj4gKyAgICAgICAgKiBXaGVuIHdlIGNvbnZlcnQgdG8gZGV2aWNlIHRyZWUgd2Ug d2lsbCBzaW1wbHkgbG9vayB1cCB0aGUKPiArICAgICAgICAqIHBhcmVudCBpcnFkb21haW4gdXNp bmcgaXJxX2ZpbmRfaG9zdChwYXJlbnQpIGFzIHBhcmVudCBjb21lcwo+ICsgICAgICAgICogZnJv bSBJUlFDSElQX0RFQ0xBUkUoKSwgdGhlbiB1c2Ugb2Zfbm9kZV90b19md25vZGUoKSB0byBnZXQK PiArICAgICAgICAqIHRoZSBmd25vZGUuIEZvciBub3cgd2UgbmVlZCB0aGlzIGJvYXJkZmlsZSBz dHlsZSBjb2RlLgo+ICsgICAgICAgICovCj4gKyAgICAgICBwYXJlbnQgPSBpeHA0eHhfZ2V0X2ly cV9kb21haW4oKTsKPiArICAgICAgIGctPmZ3bm9kZSA9IGlycV9kb21haW5fYWxsb2NfZndub2Rl KGctPmJhc2UpOwo+ICsgICAgICAgaWYgKCFnLT5md25vZGUpIHsKPiArICAgICAgICAgICAgICAg ZGV2X2VycihkZXYsICJubyBkb21haW4gYmFzZVxuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRU5PREVWOwo+ICsgICAgICAgfQo+ICsgICAgICAgZy0+ZG9tYWluID0gaXJxX2RvbWFpbl9j cmVhdGVfaGllcmFyY2h5KHBhcmVudCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJUlFfRE9NQUlOX0ZMQUdfSElFUkFSQ0hZLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoaXhwNHh4X2dw aW9tYXApLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGctPmZ3bm9kZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmaXhwNHh4X2dwaW9faXJxZG9tYWluX29wcywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnKTsKPiArICAgICAgIGlmICghZy0+ZG9tYWluKSB7 Cj4gKyAgICAgICAgICAgICAgIGlycV9kb21haW5fZnJlZV9md25vZGUoZy0+Zndub2RlKTsKPiAr ICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJubyBoaWVyYXJjaGljYWwgaXJxIGRvbWFpblxu Iik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg ICAgLyoKPiArICAgICAgICAqIEFmdGVyIGFkZGluZyBPRiBzdXBwb3J0LCB0aGlzIGlzIG5vIGxv bmdlciBuZWVkZWQ6IGlycXMKPiArICAgICAgICAqIHdpbGwgYmUgYWxsb2NhdGVkIGZvciB0aGUg cmVzcGVjdGl2ZSBmd25vZGVzLgo+ICsgICAgICAgICovCj4gKyAgICAgICBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShpeHA0eHhfZ3Bpb21hcCk7IGkrKykgewo+ICsgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgaXhwNHh4X2dwaW9fbWFwICptYXAgPSAmaXhwNHh4X2dwaW9tYXBbaV07Cj4g KyAgICAgICAgICAgICAgIHN0cnVjdCBpcnFfZndzcGVjIGZ3c3BlYzsKPiArCj4gKyAgICAgICAg ICAgICAgIGZ3c3BlYy5md25vZGUgPSBnLT5md25vZGU7Cj4gKyAgICAgICAgICAgICAgIC8qIFRo aXMgaXMgdGhlIGh3aXJxIGZvciB0aGUgR1BJTyBsaW5lIHNpZGUgb2YgdGhpbmdzICovCj4gKyAg ICAgICAgICAgICAgIGZ3c3BlYy5wYXJhbVswXSA9IG1hcC0+Z3Bpb19vZmZzZXQ7Cj4gKyAgICAg ICAgICAgICAgIGZ3c3BlYy5wYXJhbVsxXSA9IElSUV9UWVBFX0VER0VfUklTSU5HOwo+ICsgICAg ICAgICAgICAgICBmd3NwZWMucGFyYW1fY291bnQgPSAyOwo+ICsgICAgICAgICAgICAgICByZXQg PSBfX2lycV9kb21haW5fYWxsb2NfaXJxcyhnLT5kb21haW4sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAvKiBqdXN0IHBpY2sgc29tZXRoaW5nICov Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTUFfTk9fTk9ERSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ3c3BlYywK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwo+ICsg ICAgICAgICAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGly cV9kb21haW5fZnJlZV9md25vZGUoZy0+Zndub2RlKTsKPiArICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4gbm90 IGFsbG9jYXRlIGlycSBmb3IgR1BJTyBsaW5lICVkIHBhcmVudCBod2lycSAlZCBpbiBoaWVyYXJj aHkgZG9tYWluOiAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC0+ Z3Bpb19vZmZzZXQsIG1hcC0+cGFyZW50X2h3aXJxLCByZXQpOwo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiArCj4g KyAgICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBnKTsKPiArICAgICAgIGRldl9pbmZv KGRldiwgIklYUDQgR1BJTyBAJXAgcmVnaXN0ZXJlZFxuIiwgZy0+YmFzZSk7Cj4gKwo+ICsgICAg ICAgcmV0dXJuIDA7Cj4gK30KPiArCgpEb24ndCB5b3UgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBk b21haW4gaW4gdGhlIHJlbW92ZSBjYWxsYmFjaz8gVGhleQpkb24ndCBzZWVtIHRvIGhhdmUgZGV2 bV8gdmFyaWFudHMgeWV0LgoKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXhwNHh4 X2dwaW9fZHJpdmVyID0gewo+ICsgICAgICAgLmRyaXZlciA9IHsKPiArICAgICAgICAgICAgICAg Lm5hbWUgICAgICAgICAgID0gIml4cDR4eC1ncGlvIiwKPiArICAgICAgIH0sCj4gKyAgICAgICAu cHJvYmUgPSBpeHA0eHhfZ3Bpb19wcm9iZSwKPiArfTsKPiArYnVpbHRpbl9wbGF0Zm9ybV9kcml2 ZXIoaXhwNHh4X2dwaW9fZHJpdmVyKTsKPiAtLQo+IDIuMjAuMQo+CgpCZXN0IHJlZ2FyZHMsCkJh cnRvc3ogR29sYXN6ZXdza2kKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK