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=-6.7 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,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=unavailable 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 D0E8FC352BE for ; Thu, 16 Apr 2020 18:24:12 +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 A53132223D for ; Thu, 16 Apr 2020 18:24:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CBZBYUI3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A53132223D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.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-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=vp8xVZhbJdbDmieW+MSzw3SjtZvPDGLy4HNsQDdRjtY=; b=CBZBYUI3o6WY8/KxYhhDHYoo/ eS8Qu7g6sVocrp+RZmfPZ1qRiQI3+LnoddRZL3jCdWZt+XtRILfSAof0k2wujgQ+yPoTOTgP89lw/ PyL42FLMfoRQSizj9rWLq3odn5UdoagM9rVNFfVBvI4klFAeHe0XWOU56O4sz1YEZ/XMQsFCogV/u jcjScOpqhznpEDKKzPxUManT7KI6iIu8XFUM97VWlpy8qRK576FieFWCFHKc4k4uPtM7oRm5Hv6RK 8SUJTQTEbfSfVmeFycVB3E8xLlwsyIzxFm+ziIw1+kcXb6zptTw6xNLTlv0zoTAEh88VZ4qQ/48rw bIAQeCbNQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jP9BL-0000hl-Et; Thu, 16 Apr 2020 18:24:11 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jP9BH-0000h5-Qr; Thu, 16 Apr 2020 18:24:10 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: aratiu) with ESMTPSA id 97C682A2383 From: Adrian Ratiu To: Enric Balletbo Serra , Adrian Ratiu Subject: Re: [PATCH v6 1/8] drm: bridge: dw_mipi_dsi: add initial regmap infrastructure In-Reply-To: References: <20200414151955.311949-1-adrian.ratiu@collabora.com> <20200414151955.311949-2-adrian.ratiu@collabora.com> Date: Thu, 16 Apr 2020 21:25:12 +0300 Message-ID: <87o8rrjnjr.fsf@collabora.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200416_112408_136711_837A7112 X-CRM114-Status: GOOD ( 14.00 ) 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" , Jernej Skrabec , Adrian Pop , Jonas Karlman , linux-kernel , dri-devel , Andrzej Hajda , "open list:ARM/Rockchip SoC..." , Laurent Pinchart , Arnaud Ferraris , Collabora Kernel ML , Ezequiel Garcia , linux-stm32@st-md-mailman.stormreply.com, Linux ARM , linux-imx@nxp.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCAxNSBBcHIgMjAyMCwgRW5yaWMgQmFsbGV0Ym8gU2VycmEgPGViYWxsZXRib0BnbWFp bC5jb20+IAp3cm90ZToKPiBIaSBBZHJpYW4sIAo+IAo+IFNvbWUgZmV3IGNvbW1lbnRzL25pdHMg YmVsb3csIAo+IAoKSGkgRW5yaWMsCgpUaGFuayB5b3UgZm9yIHlvdXIgcmV2aWV3LCBhbGwgeW91 ciBzdWdnZXN0ZWQgY2hhbmdlcyB3aWxsIGJlIHBhcnQgCm9mIHY3LiBJIGhhdmUgb25seSBvbmUg bWlub3IgY29tbWVudCBiZWxvdy4KCj4gTWlzc2F0Z2UgZGUgQWRyaWFuIFJhdGl1IDxhZHJpYW4u cmF0aXVAY29sbGFib3JhLmNvbT4gZGVsIGRpYSAKPiBkdC4sIDE0IGTigJlhYnIuIDIwMjAgYSBs ZXMgMTc6MTk6IAo+PiAKPj4gSW4gb3JkZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSB2ZXJzaW9ucyBv ZiB0aGUgU3lub3BzaXMgTUlQSSBEU0kgCj4+IGhvc3QgY29udHJvbGxlciwgd2hpY2ggaGF2ZSBk aWZmZXJlbnQgcmVnaXN0ZXIgbGF5b3V0cyBidXQgCj4+IGFsbW9zdCBpZGVudGljYWwgSFcgcHJv dG9jb2xzLCB3ZSBhZGQgYSByZWdtYXAgaW5mcmFzdHJ1Y3R1cmUgCj4+IHdoaWNoIGNhbiBhYnN0 cmFjdCBhd2F5IHJlZ2lzdGVyIGFjY2Vzc2VzIGZvciBwbGF0Zm9ybSBkcml2ZXJzIAo+PiB1c2lu ZyB0aGUgYnJpZGdlLiAKPj4gCj4+IFRoZSBjb250cm9sbGVyIEhXIHJldmlzaW9uIGlzIGRldGVj dGVkIGR1cmluZyBicmlkZ2UgcHJvYmUgCj4+IHdoaWNoIHdpbGwgYmUgdXNlZCBpbiBmdXR1cmUg Y29tbWl0cyB0byBsb2FkIHRoZSByZWxldmFudCAKPj4gcmVnaXN0ZXIgbGF5b3V0IHdoaWNoIHRo ZSBicmlkZ2Ugd2lsbCB1c2UgdHJhbnNwYXJlbnRseSB0byB0aGUgCj4+IHBsYXRmb3JtIGRyaXZl cnMuIAo+PiAKPj4gU3VnZ2VzdGVkLWJ5OiBFemVxdWllbCBHYXJjaWEgPGV6ZXF1aWVsQGNvbGxh Ym9yYS5jb20+IAo+PiBUZXN0ZWQtYnk6IEFkcmlhbiBQb3AgPHBvcC5hZHJpYW42MUBnbWFpbC5j b20+IFRlc3RlZC1ieTogCj4+IEFybmF1ZCBGZXJyYXJpcyA8YXJuYXVkLmZlcnJhcmlzQGNvbGxh Ym9yYS5jb20+IFNpZ25lZC1vZmYtYnk6IAo+PiBBZHJpYW4gUmF0aXUgPGFkcmlhbi5yYXRpdUBj b2xsYWJvcmEuY29tPiAtLS0gTmV3IGluIHY1LiAgLS0tIAo+PiAgZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jIHwgMjA4IAo+PiAgKysrKysrKysrKy0tLS0tLS0t IDEgZmlsZSBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgOTEgCj4+ICBkZWxldGlvbnMoLSkg Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1t aXBpLWRzaS5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1k c2kuYyBpbmRleCAKPj4gNWVmMGYxNTRhYTdiLi42ZDllMmYyMWM5Y2MgMTAwNjQ0IC0tLSAKPj4g YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMgKysrIAo+PiBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYyBAQCAtMTUsNiAr MTUsNyAKPj4gQEAgCj4+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ICNpbmNsdWRlIDxsaW51 eC9vZl9kZXZpY2UuaD4gCj4+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPiAKPj4gKyNp bmNsdWRlIDxsaW51eC9yZWdtYXAuaD4gCj4gCj4gU2hvdWxkIEtjb25maWcgc2VsZWN0IFJFR01B UCBmb3IgdGhpcyBkcml2ZXI/IAo+IAo+PiAgI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+IAo+PiAK Pj4gICNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4gCj4+IEBAIC0yMjcsNiArMjI4LDcg QEAgc3RydWN0IGR3X21pcGlfZHNpIHsgCj4+ICAgICAgICAgc3RydWN0IGRybV9icmlkZ2UgKnBh bmVsX2JyaWRnZTsgc3RydWN0IGRldmljZSAqZGV2OyAKPj4gICAgICAgICB2b2lkIF9faW9tZW0g KmJhc2U7IAo+PiArICAgICAgIHN0cnVjdCByZWdtYXAgKnJlZ3M7IAo+PiAKPj4gICAgICAgICBz dHJ1Y3QgY2xrICpwY2xrOyAKPj4gCj4+IEBAIC0yMzUsNiArMjM3LDcgQEAgc3RydWN0IGR3X21p cGlfZHNpIHsgCj4+ICAgICAgICAgdTMyIGxhbmVzOyB1MzIgZm9ybWF0OyB1bnNpZ25lZCBsb25n IG1vZGVfZmxhZ3M7IAo+PiArICAgICAgIHUzMiBod192ZXJzaW9uOyAKPj4gCj4+ICAjaWZkZWYg Q09ORklHX0RFQlVHX0ZTIAo+PiAgICAgICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnM7IAo+PiBA QCAtMjQ5LDYgKzI1MiwxMyBAQCBzdHJ1Y3QgZHdfbWlwaV9kc2kgeyAKPj4gICAgICAgICBjb25z dCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGE7IAo+PiAgfTsgCj4+IAo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGR3X21pcGlfZHNpX3JlZ21hcF9j ZmcgPSB7ICsgCj4+IC5yZWdfYml0cyA9IDMyLCArICAgICAgIC52YWxfYml0cyA9IDMyLCArICAg ICAgIC5yZWdfc3RyaWRlID0gCj4+IDQsICsgICAgICAgLm5hbWUgPSAiZHctbWlwaS1kc2kiLCAr fTsgKyAKPj4gIC8qIAo+PiAgICogQ2hlY2sgaWYgZWl0aGVyIGEgbGluayB0byBhIG1hc3RlciBv ciBzbGF2ZSBpcyBwcmVzZW50ICovIAo+PiBAQCAtMjgwLDE2ICsyOTAsNiBAQCBzdGF0aWMgaW5s aW5lIHN0cnVjdCBkd19taXBpX2RzaSAKPj4gKmJyaWRnZV90b19kc2koc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkgCj4+ICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihicmlkZ2UsIHN0cnVj dCBkd19taXBpX2RzaSwgCj4+ICAgICAgICAgYnJpZGdlKTsgCj4+ICB9IAo+PiAKPj4gLXN0YXRp YyBpbmxpbmUgdm9pZCBkc2lfd3JpdGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksIHUzMiByZWcs IAo+PiB1MzIgdmFsKSAteyAtICAgICAgIHdyaXRlbCh2YWwsIGRzaS0+YmFzZSArIHJlZyk7IC19 IC0gLXN0YXRpYyAKPj4gaW5saW5lIHUzMiBkc2lfcmVhZChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRz aSwgdTMyIHJlZykgLXsgLSAKPj4gcmV0dXJuIHJlYWRsKGRzaS0+YmFzZSArIHJlZyk7IC19IC0g Cj4+ICBzdGF0aWMgaW50IGR3X21pcGlfZHNpX2hvc3RfYXR0YWNoKHN0cnVjdCBtaXBpX2RzaV9o b3N0ICpob3N0LCAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlIAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpk ZXZpY2UpIAo+PiAgeyAKPj4gQEAgLTM2NiwyOSArMzY2LDI5IEBAIHN0YXRpYyB2b2lkIGR3X21p cGlfbWVzc2FnZV9jb25maWcoc3RydWN0IAo+PiBkd19taXBpX2RzaSAqZHNpLCAKPj4gICAgICAg ICBpZiAobHBtKSAKPj4gICAgICAgICAgICAgICAgIHZhbCB8PSBDTURfTU9ERV9BTExfTFA7IAo+ PiAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfTFBDTEtfQ1RSTCwgbHBtID8gMCA6IAo+ PiBQSFlfVFhSRVFVRVNUQ0xLSFMpOyAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9DTURfTU9E RV9DRkcsIAo+PiB2YWwpOyArICAgICAgIHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9MUENM S19DVFJMLCBscG0gPyAwIDogCj4+IFBIWV9UWFJFUVVFU1RDTEtIUyk7ICsgICAgICAgcmVnbWFw X3dyaXRlKGRzaS0+cmVncywgCj4+IERTSV9DTURfTU9ERV9DRkcsIHZhbCk7IAo+PiAgfSAKPj4g Cj4+ICBzdGF0aWMgaW50IGR3X21pcGlfZHNpX2dlbl9wa3RfaGRyX3dyaXRlKHN0cnVjdCBkd19t aXBpX2RzaSAKPj4gICpkc2ksIHUzMiBoZHJfdmFsKSB7IAo+PiAgICAgICAgIGludCByZXQ7IAo+ PiAtICAgICAgIHUzMiB2YWwsIG1hc2s7ICsgICAgICAgdTMyIHZhbCA9IDAsIG1hc2s7IAo+PiAK PiAKPiBJIHRoaW5rIHRoYXQgdGhpcyBjaGFuZ2UgaXMgbm90IG5lZWRlZCwgYHZhbGAgaXMgYW4g aW5wdXQgCj4gdmFyaWFibGUgdGhhdCB3aWxsIGJlIG92ZXJ3cml0dGVuIGluc2lkZSB0aGUgCj4g cmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0LiAgSW5pdGlhbGl6ZSBoZXJlIGlzIG5vdCBuZWVkZWQu IAo+IAo+PiAtICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2ktPmJhc2UgKyAKPj4g RFNJX0NNRF9QS1RfU1RBVFVTLCAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWws ICEodmFsIAo+PiAmIEdFTl9DTURfRlVMTCksIDEwMDAsIC0gCj4+IENNRF9QS1RfU1RBVFVTX1RJ TUVPVVRfVVMpOyArICAgICAgIHJldCA9IAo+PiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNp LT5yZWdzLCBEU0lfQ01EX1BLVF9TVEFUVVMsICsgCj4+IHZhbCwgISh2YWwgJiBHRU5fQ01EX0ZV TEwpLCAxMDAwLCArIAo+PiBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsgCj4+ICAgICAgICAg aWYgKHJldCkgeyAKPj4gICAgICAgICAgICAgICAgIGRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQg dG8gZ2V0IGF2YWlsYWJsZSAKPj4gICAgICAgICAgICAgICAgIGNvbW1hbmQgRklGT1xuIik7IHJl dHVybiByZXQ7IAo+PiAgICAgICAgIH0gCj4+IAo+PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERT SV9HRU5fSERSLCBoZHJfdmFsKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX0dF Tl9IRFIsIGhkcl92YWwpOyAKPj4gCj4+ICAgICAgICAgbWFzayA9IEdFTl9DTURfRU1QVFkgfCBH RU5fUExEX1dfRU1QVFk7IAo+PiAtICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2kt PmJhc2UgKyAKPj4gRFNJX0NNRF9QS1RfU1RBVFVTLCAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWwsICh2YWwgCj4+ICYgbWFzaykgPT0gbWFzaywgLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTAwMCwgCj4+IENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyArICAg ICAgIHJldCA9IAo+PiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lfQ01E X1BLVF9TVEFUVVMsICsgCj4+IHZhbCwgKHZhbCAmIG1hc2spID09IG1hc2ssICsgCj4+IDEwMDAs IENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyAKPj4gICAgICAgICBpZiAocmV0KSB7IAo+PiAg ICAgICAgICAgICAgICAgZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0byB3cml0ZSBjb21tYW5k IAo+PiAgICAgICAgICAgICAgICAgRklGT1xuIik7IHJldHVybiByZXQ7IAo+PiBAQCAtNDAzLDI0 ICs0MDMsMjYgQEAgc3RhdGljIGludCBkd19taXBpX2RzaV93cml0ZShzdHJ1Y3QgCj4+IGR3X21p cGlfZHNpICpkc2ksIAo+PiAgICAgICAgIGNvbnN0IHU4ICp0eF9idWYgPSBwYWNrZXQtPnBheWxv YWQ7IGludCBsZW4gPSAKPj4gICAgICAgICBwYWNrZXQtPnBheWxvYWRfbGVuZ3RoLCBwbGRfZGF0 YV9ieXRlcyA9IHNpemVvZih1MzIpLCAKPj4gICAgICAgICByZXQ7IF9fbGUzMiB3b3JkOyAKPj4g LSAgICAgICB1MzIgdmFsOyArICAgICAgIHUzMiB2YWwgPSAwOyAKPj4gCj4gCj4gVGhlIHNhbWUg aGVyZSwgJ3ZhbCcgaXMgdXNlZCBmb3IgdGhlIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dCAKPiBh bmQgd2lsbCBiZSBvdmVyd3JpdHRlbiwgbm8gbmVlZCB0byBpbml0aWFsaXplLiAKPiAKPj4gICAg ICAgICB3aGlsZSAobGVuKSB7IAo+PiAgICAgICAgICAgICAgICAgaWYgKGxlbiA8IHBsZF9kYXRh X2J5dGVzKSB7IAo+PiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkID0gMDsgbWVtY3B5KCZ3 b3JkLCB0eF9idWYsIGxlbik7IAo+PiAtICAgICAgICAgICAgICAgICAgICAgICBkc2lfd3JpdGUo ZHNpLCBEU0lfR0VOX1BMRF9EQVRBLCAKPj4gbGUzMl90b19jcHUod29yZCkpOyArIAo+PiByZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfR0VOX1BMRF9EQVRBLCArIAo+PiBsZTMyX3RvX2NwdSh3 b3JkKSk7IAo+PiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOyAKPj4gICAgICAgICAg ICAgICAgIH0gZWxzZSB7IAo+PiAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoJndvcmQs IHR4X2J1ZiwgcGxkX2RhdGFfYnl0ZXMpOyAKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZHNp X3dyaXRlKGRzaSwgRFNJX0dFTl9QTERfREFUQSwgCj4+IGxlMzJfdG9fY3B1KHdvcmQpKTsgKyAK Pj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX0dFTl9QTERfREFUQSwgKyAKPj4gbGUzMl90 b19jcHUod29yZCkpOyAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgdHhfYnVmICs9IHBsZF9k YXRhX2J5dGVzOyBsZW4gLT0gCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHBsZF9kYXRhX2J5 dGVzOyAKPj4gICAgICAgICAgICAgICAgIH0gCj4+IAo+PiAtICAgICAgICAgICAgICAgcmV0ID0g cmVhZGxfcG9sbF90aW1lb3V0KGRzaS0+YmFzZSArIAo+PiBEU0lfQ01EX1BLVF9TVEFUVVMsIC0g Cj4+IHZhbCwgISh2YWwgJiBHRU5fUExEX1dfRlVMTCksIDEwMDAsIC0gCj4+IENNRF9QS1RfU1RB VFVTX1RJTUVPVVRfVVMpOyArICAgICAgICAgICAgICAgcmV0ID0gCj4+IHJlZ21hcF9yZWFkX3Bv bGxfdGltZW91dChkc2ktPnJlZ3MsIERTSV9DTURfUEtUX1NUQVRVUywgKyAKPj4gdmFsLCAhKHZh bCAmIEdFTl9QTERfV19GVUxMKSwgKyAKPj4gMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9V Uyk7IAo+PiAgICAgICAgICAgICAgICAgaWYgKHJldCkgeyAKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgZGV2X2Vycihkc2ktPmRldiwgCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImZhaWxlZCB0byBnZXQgYXZhaWxhYmxlIHdyaXRlIAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBheWxvYWQgRklGT1xuIik7IAo+PiBAQCAtNDM4LDEyICs0NDAsMTIgQEAg c3RhdGljIGludCBkd19taXBpX2RzaV9yZWFkKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSwg Cj4+ICB7IAo+PiAgICAgICAgIGludCBpLCBqLCByZXQsIGxlbiA9IG1zZy0+cnhfbGVuOyB1OCAq YnVmID0gCj4+ICAgICAgICAgbXNnLT5yeF9idWY7IAo+PiAtICAgICAgIHUzMiB2YWw7ICsgICAg ICAgdTMyIHZhbCA9IDA7IAo+PiAKPiAKPiBkaXR0byAKPiAKPj4gICAgICAgICAvKiBXYWl0IGVu ZCBvZiB0aGUgcmVhZCBvcGVyYXRpb24gKi8gCj4+IC0gICAgICAgcmV0ID0gcmVhZGxfcG9sbF90 aW1lb3V0KGRzaS0+YmFzZSArIAo+PiBEU0lfQ01EX1BLVF9TVEFUVVMsIC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbCwgISh2YWwgCj4+ICYgR0VOX1JEX0NNRF9CVVNZKSwgLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCwgCj4+IENNRF9QS1RfU1RBVFVTX1RJ TUVPVVRfVVMpOyArICAgICAgIHJldCA9IAo+PiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNp LT5yZWdzLCBEU0lfQ01EX1BLVF9TVEFUVVMsICsgCj4+IHZhbCwgISh2YWwgJiBHRU5fUkRfQ01E X0JVU1kpLCArIAo+PiAxMDAwLCBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsgCj4+ICAgICAg ICAgaWYgKHJldCkgeyAKPj4gICAgICAgICAgICAgICAgIGRldl9lcnIoZHNpLT5kZXYsICJUaW1l b3V0IGR1cmluZyByZWFkIAo+PiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uXG4iKTsgcmV0dXJu IHJldDsgCj4+IEBAIC00NTEsMTUgKzQ1MywxNSBAQCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX3Jl YWQoc3RydWN0IAo+PiBkd19taXBpX2RzaSAqZHNpLCAKPj4gCj4+ICAgICAgICAgZm9yIChpID0g MDsgaSA8IGxlbjsgaSArPSA0KSB7IAo+PiAgICAgICAgICAgICAgICAgLyogUmVhZCBmaWZvIG11 c3Qgbm90IGJlIGVtcHR5IGJlZm9yZSBhbGwgYnl0ZXMgCj4+ICAgICAgICAgICAgICAgICBhcmUg cmVhZCAqLyAKPj4gLSAgICAgICAgICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2kt PmJhc2UgKyAKPj4gRFNJX0NNRF9QS1RfU1RBVFVTLCAtIAo+PiB2YWwsICEodmFsICYgR0VOX1BM RF9SX0VNUFRZKSwgLSAKPj4gMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7ICsgICAg ICAgICAgICAgICByZXQgPSAKPj4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywg RFNJX0NNRF9QS1RfU1RBVFVTLCArIAo+PiB2YWwsICEodmFsICYgR0VOX1BMRF9SX0VNUFRZKSwg KyAKPj4gMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7IAo+PiAgICAgICAgICAgICAg ICAgaWYgKHJldCkgeyAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihkc2ktPmRl diwgIlJlYWQgcGF5bG9hZCBGSUZPIGlzIAo+PiAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0 eVxuIik7IHJldHVybiByZXQ7IAo+PiAgICAgICAgICAgICAgICAgfSAKPj4gCj4+IC0gICAgICAg ICAgICAgICB2YWwgPSBkc2lfcmVhZChkc2ksIERTSV9HRU5fUExEX0RBVEEpOyArIAo+PiByZWdt YXBfcmVhZChkc2ktPnJlZ3MsIERTSV9HRU5fUExEX0RBVEEsICZ2YWwpOyAKPj4gICAgICAgICAg ICAgICAgIGZvciAoaiA9IDA7IGogPCA0ICYmIGogKyBpIDwgbGVuOyBqKyspIAo+PiAgICAgICAg ICAgICAgICAgICAgICAgICBidWZbaSArIGpdID0gdmFsID4+ICg4ICogaik7IAo+PiAgICAgICAg IH0gCj4+IEBAIC01MzYsMjkgKzUzOCwyOSBAQCBzdGF0aWMgdm9pZCAKPj4gZHdfbWlwaV9kc2lf dmlkZW9fbW9kZV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+PiAgICAgICAgIH0g Cj4+ICAjZW5kaWYgLyogQ09ORklHX0RFQlVHX0ZTICovIAo+PiAKPj4gLSAgICAgICBkc2lfd3Jp dGUoZHNpLCBEU0lfVklEX01PREVfQ0ZHLCB2YWwpOyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5y ZWdzLCBEU0lfVklEX01PREVfQ0ZHLCB2YWwpOyAKPj4gIH0gCj4+IAo+PiAgc3RhdGljIHZvaWQg ZHdfbWlwaV9kc2lfc2V0X21vZGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksIAo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1vZGVfZmxhZ3MpIAo+PiAg eyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfUFdSX1VQLCBSRVNFVCk7ICsgCj4+IHJl Z21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QV1JfVVAsIFJFU0VUKTsgCj4+IAo+PiAgICAgICAg IGlmIChtb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykgeyAKPj4gLSAgICAgICAgICAg ICAgIGRzaV93cml0ZShkc2ksIERTSV9NT0RFX0NGRywgCj4+IEVOQUJMRV9WSURFT19NT0RFKTsg KyAgICAgICAgICAgICAgIHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIAo+PiBEU0lfTU9ERV9DRkcs IEVOQUJMRV9WSURFT19NT0RFKTsgCj4+ICAgICAgICAgICAgICAgICBkd19taXBpX2RzaV92aWRl b19tb2RlX2NvbmZpZyhkc2kpOyAKPj4gLSAgICAgICAgICAgICAgIGRzaV93cml0ZShkc2ksIERT SV9MUENMS19DVFJMLCAKPj4gUEhZX1RYUkVRVUVTVENMS0hTKTsgKyAgICAgICAgICAgICAgIHJl Z21hcF93cml0ZShkc2ktPnJlZ3MsIAo+PiBEU0lfTFBDTEtfQ1RSTCwgUEhZX1RYUkVRVUVTVENM S0hTKTsgCj4+ICAgICAgICAgfSBlbHNlIHsgCj4+IC0gICAgICAgICAgICAgICBkc2lfd3JpdGUo ZHNpLCBEU0lfTU9ERV9DRkcsIEVOQUJMRV9DTURfTU9ERSk7IAo+PiArICAgICAgICAgICAgICAg cmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX01PREVfQ0ZHLCAKPj4gRU5BQkxFX0NNRF9NT0RF KTsgCj4+ICAgICAgICAgfSAKPj4gCj4+IC0gICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9V UCwgUE9XRVJVUCk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QV1JfVVAsIFBP V0VSVVApOyAKPj4gIH0gCj4+IAo+PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZGlzYWJsZShz dHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkgeyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lf UFdSX1VQLCBSRVNFVCk7IC0gCj4+IGRzaV93cml0ZShkc2ksIERTSV9QSFlfUlNUWiwgUEhZX1JT VFopOyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBSRVNFVCk7ICsg Cj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfUlNUWiwgUEhZX1JTVFopOyAKPj4g IH0gCj4+IAo+PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfaW5pdChzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSkgCj4+IEBAIC01NzMsMTQgKzU3NSwxNCBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2Rz aV9pbml0KHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSkgCj4+ICAgICAgICAgICovIAo+PiAg ICAgICAgIHUzMiBlc2NfY2xrX2RpdmlzaW9uID0gKGRzaS0+bGFuZV9tYnBzID4+IDMpIC8gMjAg KyAxOyAKPj4gCj4+IC0gICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUkVTRVQpOyAr IAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBSRVNFVCk7IAo+PiAKPj4g ICAgICAgICAvKiAKPj4gICAgICAgICAgKiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMgKiB0aW1l b3V0IGNsb2NrIGRpdmlzaW9uIAo+PiAgICAgICAgICBzaG91bGQgYmUgY29tcHV0ZWQgd2l0aCB0 aGUgKiBoaWdoIHNwZWVkIHRyYW5zbWlzc2lvbiAKPj4gICAgICAgICAgY291bnRlciB0aW1lb3V0 IGFuZCBieXRlIGxhbmUuLi4gICovIAo+PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9DTEtN R1JfQ0ZHLCBUT19DTEtfRElWSVNJT04oMTApIHwgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVn cywgRFNJX0NMS01HUl9DRkcsIFRPX0NMS19ESVZJU0lPTigxMCkgfCAKPj4gICAgICAgICAgICAg ICAgICAgVFhfRVNDX0NMS19ESVZJU0lPTihlc2NfY2xrX2RpdmlzaW9uKSk7IAo+PiAgfSAKPj4g Cj4+IEBAIC02MDksMjIgKzYxMSwyMiBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGlfY29u ZmlnKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAgICAgICAgaWYgKG1vZGUtPmZs YWdzICYgRFJNX01PREVfRkxBR19OSFNZTkMpIAo+PiAgICAgICAgICAgICAgICAgdmFsIHw9IEhT WU5DX0FDVElWRV9MT1c7IAo+PiAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfRFBJX1ZD SUQsIERQSV9WQ0lEKGRzaS0+Y2hhbm5lbCkpOyAtIAo+PiBkc2lfd3JpdGUoZHNpLCBEU0lfRFBJ X0NPTE9SX0NPRElORywgY29sb3IpOyAtIAo+PiBkc2lfd3JpdGUoZHNpLCBEU0lfRFBJX0NGR19Q T0wsIHZhbCk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9EUElfVkNJRCwgRFBJ X1ZDSUQoZHNpLT5jaGFubmVsKSk7IAo+PiArICAgICAgIHJlZ21hcF93cml0ZShkc2ktPnJlZ3Ms IERTSV9EUElfQ09MT1JfQ09ESU5HLCBjb2xvcik7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJl Z3MsIERTSV9EUElfQ0ZHX1BPTCwgdmFsKTsgCj4+ICAgICAgICAgLyogCj4+ICAgICAgICAgICog VE9ETyBkdyBkcnYgaW1wcm92ZW1lbnRzICogbGFyZ2VzdCBwYWNrZXQgc2l6ZXMgCj4+ICAgICAg ICAgIGR1cmluZyBoZnAgb3IgZHVyaW5nIHZzYS92cGIvdmZwICogc2hvdWxkIGJlIGNvbXB1dGVk IAo+PiAgICAgICAgICBhY2NvcmRpbmcgdG8gYnl0ZSBsYW5lLCBsYW5lIG51bWJlciBhbmQgb25s eSAqIGlmIAo+PiAgICAgICAgICBzZW5kaW5nIGxwIGNtZHMgaW4gaGlnaCBzcGVlZCBpcyBlbmFi bGUgCj4+ICAgICAgICAgIChQSFlfVFhSRVFVRVNUQ0xLSFMpICovIAo+PiAtICAgICAgIGRzaV93 cml0ZShkc2ksIERTSV9EUElfTFBfQ01EX1RJTSwgCj4+IE9VVFZBQ1RfTFBDTURfVElNRSg0KSAr ICAgICAgIHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIAo+PiBEU0lfRFBJX0xQX0NNRF9USU0sIE9V VFZBQ1RfTFBDTURfVElNRSg0KSAKPj4gICAgICAgICAgICAgICAgICAgfCBJTlZBQ1RfTFBDTURf VElNRSg0KSk7IAo+PiAgfSAKPj4gCj4+ICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9wYWNrZXRf aGFuZGxlcl9jb25maWcoc3RydWN0IAo+PiAgZHdfbWlwaV9kc2kgKmRzaSkgeyAKPj4gLSAgICAg ICBkc2lfd3JpdGUoZHNpLCBEU0lfUENLSERMX0NGRywgQ1JDX1JYX0VOIHwgRUNDX1JYX0VOIHwg Cj4+IEJUQV9FTik7ICsgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BDS0hETF9D RkcsIAo+PiBDUkNfUlhfRU4gfCBFQ0NfUlhfRU4gfCBCVEFfRU4pOyAKPj4gIH0gCj4+IAo+PiAg c3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlw aV9kc2kgCj4+ICAqZHNpLCAKPj4gQEAgLTYzOCw3ICs2NDAsNyBAQCBzdGF0aWMgdm9pZCAKPj4g ZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwg Cj4+ICAgICAgICAgICogbm9uLWJ1cnN0IHZpZGVvIG1vZGVzLCBzZWUgCj4+ICAgICAgICAgIGR3 X21pcGlfZHNpX3ZpZGVvX21vZGVfY29uZmlnKCkuLi4gICovIAo+PiAKPj4gLSAgICAgICBkc2lf d3JpdGUoZHNpLCBEU0lfVklEX1BLVF9TSVpFLCArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdz LCBEU0lfVklEX1BLVF9TSVpFLCAKPj4gICAgICAgICAgICAgICAgICAgICAgICBkd19taXBpX2lz X2R1YWxfbW9kZShkc2kpID8gCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklE X1BLVF9TSVpFKG1vZGUtPmhkaXNwbGF5IC8gCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMikgOiAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSURfUEtUX1NJ WkUobW9kZS0+aGRpc3BsYXkpKTsgCj4+IEBAIC02NTEsMTQgKzY1MywxNSBAQCBzdGF0aWMgdm9p ZCAKPj4gZHdfbWlwaV9kc2lfY29tbWFuZF9tb2RlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kg KmRzaSkgCj4+ICAgICAgICAgICogY29tcHV0ZSBoaWdoIHNwZWVkIHRyYW5zbWlzc2lvbiBjb3Vu dGVyIHRpbWVvdXQgCj4+ICAgICAgICAgIGFjY29yZGluZyAqIHRvIHRoZSB0aW1lb3V0IGNsb2Nr IGRpdmlzaW9uIAo+PiAgICAgICAgICAoVE9fQ0xLX0RJVklTSU9OKSBhbmQgYnl0ZSBsYW5lLi4u ICAqLyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfVE9fQ05UX0NGRywgSFNUWF9UT19D TlQoMTAwMCkgfCAKPj4gTFBSWF9UT19DTlQoMTAwMCkpOyArICAgICAgIHJlZ21hcF93cml0ZShk c2ktPnJlZ3MsIAo+PiBEU0lfVE9fQ05UX0NGRywgKyAgICAgICAgICAgICAgICAgICAgSFNUWF9U T19DTlQoMTAwMCkgfCAKPj4gTFBSWF9UT19DTlQoMTAwMCkpOyAKPj4gICAgICAgICAvKiAKPj4g ICAgICAgICAgKiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMgKiB0aGUgQnVzLVR1cm4tQXJvdW5k IAo+PiAgICAgICAgICBUaW1lb3V0IENvdW50ZXIgc2hvdWxkIGJlIGNvbXB1dGVkICogYWNjb3Jk aW5nIHRvIGJ5dGUgCj4+ICAgICAgICAgIGxhbmUuLi4gICovIAo+PiAtICAgICAgIGRzaV93cml0 ZShkc2ksIERTSV9CVEFfVE9fQ05ULCAweGQwMCk7IC0gCj4+IGRzaV93cml0ZShkc2ksIERTSV9N T0RFX0NGRywgRU5BQkxFX0NNRF9NT0RFKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywg RFNJX0JUQV9UT19DTlQsIDB4ZDAwKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJ X01PREVfQ0ZHLCBFTkFCTEVfQ01EX01PREUpOyAKPj4gIH0gCj4+IAo+PiAgLyogR2V0IGxhbmUg Ynl0ZSBjbG9jayBjeWNsZXMuICovIAo+PiBAQCAtNjkyLDEzICs2OTUsMTMgQEAgc3RhdGljIHZv aWQgCj4+IGR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAq ZHNpLCAKPj4gICAgICAgICAgKiBjb21wdXRhdGlvbnMgYmVsb3cgbWF5IGJlIGltcHJvdmVkLi4u ICAqLyAKPj4gICAgICAgICBsYmNjID0gZHdfbWlwaV9kc2lfZ2V0X2hjb21wb25lbnRfbGJjYyhk c2ksIG1vZGUsIAo+PiAgICAgICAgIGh0b3RhbCk7IAo+PiAtICAgICAgIGRzaV93cml0ZShkc2ks IERTSV9WSURfSExJTkVfVElNRSwgbGJjYyk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3Ms IERTSV9WSURfSExJTkVfVElNRSwgbGJjYyk7IAo+PiAKPj4gICAgICAgICBsYmNjID0gZHdfbWlw aV9kc2lfZ2V0X2hjb21wb25lbnRfbGJjYyhkc2ksIG1vZGUsIGhzYSk7IAo+PiAtICAgICAgIGRz aV93cml0ZShkc2ksIERTSV9WSURfSFNBX1RJTUUsIGxiY2MpOyArIAo+PiByZWdtYXBfd3JpdGUo ZHNpLT5yZWdzLCBEU0lfVklEX0hTQV9USU1FLCBsYmNjKTsgCj4+IAo+PiAgICAgICAgIGxiY2Mg PSBkd19taXBpX2RzaV9nZXRfaGNvbXBvbmVudF9sYmNjKGRzaSwgbW9kZSwgaGJwKTsgCj4+IC0g ICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1ZJRF9IQlBfVElNRSwgbGJjYyk7ICsgCj4+IHJlZ21h cF93cml0ZShkc2ktPnJlZ3MsIERTSV9WSURfSEJQX1RJTUUsIGxiY2MpOyAKPj4gIH0gCj4+IAo+ PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhzdHJ1Y3Qg Cj4+ICBkd19taXBpX2RzaSAqZHNpLCAKPj4gQEAgLTcxMSwxMCArNzE0LDEwIEBAIHN0YXRpYyB2 b2lkIAo+PiBkd19taXBpX2RzaV92ZXJ0aWNhbF90aW1pbmdfY29uZmlnKHN0cnVjdCBkd19taXBp X2RzaSAqZHNpLCAKPj4gICAgICAgICB2ZnAgPSBtb2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZk aXNwbGF5OyB2YnAgPSAKPj4gICAgICAgICBtb2RlLT52dG90YWwgLSBtb2RlLT52c3luY19lbmQ7 IAo+PiAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfVklEX1ZBQ1RJVkVfTElORVMsIHZh Y3RpdmUpOyAtIAo+PiBkc2lfd3JpdGUoZHNpLCBEU0lfVklEX1ZTQV9MSU5FUywgdnNhKTsgLSAg ICAgICBkc2lfd3JpdGUoZHNpLCAKPj4gRFNJX1ZJRF9WRlBfTElORVMsIHZmcCk7IC0gICAgICAg ZHNpX3dyaXRlKGRzaSwgCj4+IERTSV9WSURfVkJQX0xJTkVTLCB2YnApOyArICAgICAgIHJlZ21h cF93cml0ZShkc2ktPnJlZ3MsIAo+PiBEU0lfVklEX1ZBQ1RJVkVfTElORVMsIHZhY3RpdmUpOyAr IAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfVklEX1ZTQV9MSU5FUywgdnNhKTsgKyAK Pj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1ZJRF9WRlBfTElORVMsIHZmcCk7ICsgCj4+ IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9WSURfVkJQX0xJTkVTLCB2YnApOyAKPj4gIH0g Cj4+IAo+PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBoeV90aW1pbmdfY29uZmlnKHN0cnVj dCBkd19taXBpX2RzaSAKPj4gICpkc2kpIAo+PiBAQCAtNzM3LDIzICs3NDAsMjUgQEAgc3RhdGlj IHZvaWQgCj4+IGR3X21pcGlfZHNpX2RwaHlfdGltaW5nX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSkgCj4+ICAgICAgICAgICogRFNJX0NNRF9NT0RFX0NGRy5NQVhfUkRfUEtUX1NJWkVf TFAgKHNlZSAKPj4gICAgICAgICAgQ01EX01PREVfQUxMX0xQKSAqLyAKPj4gCj4+IC0gICAgICAg aHdfdmVyc2lvbiA9IGRzaV9yZWFkKGRzaSwgRFNJX1ZFUlNJT04pICYgVkVSU0lPTjsgKyAKPj4g cmVnbWFwX3JlYWQoZHNpLT5yZWdzLCBEU0lfVkVSU0lPTiwgJmh3X3ZlcnNpb24pOyArIAo+PiBo d192ZXJzaW9uICY9IFZFUlNJT047IAo+IAo+IElmIEkgYW0gbm90IHdyb25nLCB5b3UgYWxyZWFk eSBpbnRyb2R1Y2VkIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSAKPiBoYXJkd2FyZSB2ZXJzaW9uIGFu ZCBpcyBzdG9yZWQgaW4gZHNpLT5od192ZXJzaW9uLiBNYXliZSB5b3UgCj4gY291bGQgeW91IHVz ZSB0aGF0IHZhcmlhYmxlIGFuZCByZW1vdmUgdGhhdCBjb2RlLiAKPgoKTmljZSBvYnNlcnZhdGlv biEgVGhlcmUncyBhIHJlYXNvbiB3aHkgSSBtaXNzZWQgdGhpcyBjaGFuZ2UgaW4gdGhlIApwYXN0 OgppbiB0aGUgbmV4dCBwYXRjaCBJIHJlbW92ZSB0aGUgdmVyc2lvbiBjaGVjayBlbnRpcmVseSBm cm9tIHRoaXMgCmZ1bmN0aW9uICh5ZXQgYW5vdGhlciBiZW5lZml0IG9mIHVzaW5nIHJlZ21hcCBm aWVsZHMgZm9yIGxheW91dHMgCmhlaCkuCgpJIHdpbGwgZG8gdGhpcyBjaGFuZ2UgYmVjYXVzZSBp dCBtYWtlcyB0aGUgcGF0Y2ggbG9vayBhIGJpdCBuaWNlciAKOikKCj4+Cj4+ICAgICAgICAgaWYg KGh3X3ZlcnNpb24gPj0gSFdWRVJfMTMxKSB7Cj4+IC0gICAgICAgICAgICAgICBkc2lfd3JpdGUo ZHNpLCBEU0lfUEhZX1RNUl9DRkcsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgUEhZX0hT MkxQX1RJTUVfVjEzMSh0aW1pbmcuZGF0YV9oczJscCkgfAo+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgIFBIWV9MUDJIU19USU1FX1YxMzEodGltaW5nLmRhdGFfbHAyaHMpKTsKPj4gLSAgICAg ICAgICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9QSFlfVE1SX1JEX0NGRywgTUFYX1JEX1RJTUVf VjEzMSgxMDAwMCkpOwo+PiArICAgICAgICAgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+cmVncywg RFNJX1BIWV9UTVJfQ0ZHLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBIWV9IUzJM UF9USU1FX1YxMzEodGltaW5nLmRhdGFfaHMybHApIHwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQSFlfTFAySFNfVElNRV9WMTMxKHRpbWluZy5kYXRhX2xwMmhzKSk7Cj4+ICsgICAg ICAgICAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1RNUl9SRF9DRkcsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1JEX1RJTUVfVjEzMSgxMDAwMCkpOwo+ PiAgICAgICAgIH0gZWxzZSB7Cj4+IC0gICAgICAgICAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lf UEhZX1RNUl9DRkcsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgUEhZX0hTMkxQX1RJTUUo dGltaW5nLmRhdGFfaHMybHApIHwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBQSFlfTFAy SFNfVElNRSh0aW1pbmcuZGF0YV9scDJocykgfAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg IE1BWF9SRF9USU1FKDEwMDAwKSk7Cj4+ICsgICAgICAgICAgICAgICByZWdtYXBfd3JpdGUoZHNp LT5yZWdzLCBEU0lfUEhZX1RNUl9DRkcsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEhZX0hTMkxQX1RJTUUodGltaW5nLmRhdGFfaHMybHApIHwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQSFlfTFAySFNfVElNRSh0aW1pbmcuZGF0YV9scDJocykgfAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1BWF9SRF9USU1FKDEwMDAwKSk7Cj4+ICAgICAgICAgfQo+ Pgo+PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9QSFlfVE1SX0xQQ0xLX0NGRywKPj4gLSAg ICAgICAgICAgICAgICAgUEhZX0NMS0hTMkxQX1RJTUUodGltaW5nLmNsa19oczJscCkgfAo+PiAt ICAgICAgICAgICAgICAgICBQSFlfQ0xLTFAySFNfVElNRSh0aW1pbmcuY2xrX2xwMmhzKSk7Cj4+ ICsgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BIWV9UTVJfTFBDTEtfQ0ZHLAo+ PiArICAgICAgICAgICAgICAgICAgICBQSFlfQ0xLSFMyTFBfVElNRSh0aW1pbmcuY2xrX2hzMmxw KSB8Cj4+ICsgICAgICAgICAgICAgICAgICAgIFBIWV9DTEtMUDJIU19USU1FKHRpbWluZy5jbGtf bHAyaHMpKTsKPj4gIH0KPj4KPj4gIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaHlfaW50ZXJm YWNlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPj4gQEAgLTc2Myw0NiArNzY4LDQ5 IEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhzdHJ1Y3Qg ZHdfbWlwaV9kc2kgKmRzaSkKPj4gICAgICAgICAgKiBzdG9wIHdhaXQgdGltZSBzaG91bGQgYmUg dGhlIG1heGltdW0gYmV0d2VlbiBob3N0IGRzaQo+PiAgICAgICAgICAqIGFuZCBwYW5lbCBzdG9w IHdhaXQgdGltZXMKPj4gICAgICAgICAgKi8KPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lf UEhZX0lGX0NGRywgUEhZX1NUT1BfV0FJVF9USU1FKDB4MjApIHwKPj4gLSAgICAgICAgICAgICAg ICAgTl9MQU5FUyhkc2ktPmxhbmVzKSk7Cj4+ICsgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+cmVn cywgRFNJX1BIWV9JRl9DRkcsCj4+ICsgICAgICAgICAgICAgICAgICAgIFBIWV9TVE9QX1dBSVRf VElNRSgweDIwKSB8IE5fTEFORVMoZHNpLT5sYW5lcykpOwo+PiAgfQo+Pgo+PiAgc3RhdGljIHZv aWQgZHdfbWlwaV9kc2lfZHBoeV9pbml0KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+PiAgewo+ PiAgICAgICAgIC8qIENsZWFyIFBIWSBzdGF0ZSAqLwo+PiAtICAgICAgIGRzaV93cml0ZShkc2ks IERTSV9QSFlfUlNUWiwgUEhZX0RJU0ZPUkNFUExMIHwgUEhZX0RJU0FCTEVDTEsKPj4gLSAgICAg ICAgICAgICAgICAgfCBQSFlfUlNUWiB8IFBIWV9TSFVURE9XTlopOwo+PiAtICAgICAgIGRzaV93 cml0ZShkc2ksIERTSV9QSFlfVFNUX0NUUkwwLCBQSFlfVU5URVNUQ0xSKTsKPj4gLSAgICAgICBk c2lfd3JpdGUoZHNpLCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1RFU1RDTFIpOwo+PiAtICAgICAg IGRzaV93cml0ZShkc2ksIERTSV9QSFlfVFNUX0NUUkwwLCBQSFlfVU5URVNUQ0xSKTsKPj4gKyAg ICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1JTVFosIFBIWV9ESVNGT1JDRVBM TCB8IFBIWV9ESVNBQkxFQ0xLCj4+ICsgICAgICAgICAgICAgICAgICAgIHwgUEhZX1JTVFogfCBQ SFlfU0hVVERPV05aKTsKPj4gKyAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZ X1RTVF9DVFJMMCwgUEhZX1VOVEVTVENMUik7Cj4+ICsgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+ cmVncywgRFNJX1BIWV9UU1RfQ1RSTDAsIFBIWV9URVNUQ0xSKTsKPj4gKyAgICAgICByZWdtYXBf d3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1VOVEVTVENMUik7Cj4+ICB9 Cj4+Cj4+ICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGh5X2VuYWJsZShzdHJ1Y3QgZHdfbWlw aV9kc2kgKmRzaSkKPj4gIHsKPj4gLSAgICAgICB1MzIgdmFsOwo+PiArICAgICAgIHUzMiB2YWwg PSAwOwo+Cj4gZGl0dG8KPgo+PiAgICAgICAgIGludCByZXQ7Cj4+Cj4+IC0gICAgICAgZHNpX3dy aXRlKGRzaSwgRFNJX1BIWV9SU1RaLCBQSFlfRU5GT1JDRVBMTCB8IFBIWV9FTkFCTEVDTEsgfAo+ PiAtICAgICAgICAgICAgICAgICBQSFlfVU5SU1RaIHwgUEhZX1VOU0hVVERPV05aKTsKPj4gKyAg ICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1JTVFosIFBIWV9FTkZPUkNFUExM IHwgUEhZX0VOQUJMRUNMSyB8Cj4+ICsgICAgICAgICAgICAgICAgICAgIFBIWV9VTlJTVFogfCBQ SFlfVU5TSFVURE9XTlopOwo+Pgo+PiAtICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChk c2ktPmJhc2UgKyBEU0lfUEhZX1NUQVRVUywgdmFsLAo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YWwgJiBQSFlfTE9DSywgMTAwMCwgUEhZX1NUQVRVU19USU1FT1VUX1VTKTsK Pj4gKyAgICAgICByZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lf UEhZX1NUQVRVUywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs LCB2YWwgJiBQSFlfTE9DSywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTAwMCwgUEhZX1NUQVRVU19USU1FT1VUX1VTKTsKPj4gICAgICAgICBpZiAocmV0KQo+PiAg ICAgICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHdhaXQgcGh5IGxvY2sg c3RhdGVcbiIpOwo+Pgo+PiAtICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2ktPmJh c2UgKyBEU0lfUEhZX1NUQVRVUywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmFsLCB2YWwgJiBQSFlfU1RPUF9TVEFURV9DTEtfTEFORSwgMTAwMCwKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUEhZX1NUQVRVU19USU1FT1VUX1VTKTsKPj4gKyAgICAgICBy ZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lfUEhZX1NUQVRVUywK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLCB2YWwgJiBQSFlf U1RPUF9TVEFURV9DTEtfTEFORSwgMTAwMCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUEhZX1NUQVRVU19USU1FT1VUX1VTKTsKPj4gICAgICAgICBpZiAocmV0KQo+ PiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHdhaXQgcGh5IGNs ayBsYW5lIHN0b3Agc3RhdGVcbiIpOwo+PiAgfQo+Pgo+PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9k c2lfY2xlYXJfZXJyKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+PiAgewo+PiAtICAgICAgIGRz aV9yZWFkKGRzaSwgRFNJX0lOVF9TVDApOwo+PiAtICAgICAgIGRzaV9yZWFkKGRzaSwgRFNJX0lO VF9TVDEpOwo+PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9JTlRfTVNLMCwgMCk7Cj4+IC0g ICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX0lOVF9NU0sxLCAwKTsKPj4gKyAgICAgICB1MzIgdmFs Owo+PiArCj4+ICsgICAgICAgcmVnbWFwX3JlYWQoZHNpLT5yZWdzLCBEU0lfSU5UX1NUMCwgJnZh bCk7Cj4+ICsgICAgICAgcmVnbWFwX3JlYWQoZHNpLT5yZWdzLCBEU0lfSU5UX1NUMSwgJnZhbCk7 Cj4+ICsgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX0lOVF9NU0swLCAwKTsKPj4g KyAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfSU5UX01TSzEsIDApOwo+PiAgfQo+ Pgo+PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQo+PiBAQCAtOTg5LDYgKzk5NywxNCBAQCBzdGF0aWMgdm9pZCBk d19taXBpX2RzaV9kZWJ1Z2ZzX3JlbW92ZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkgeyB9Cj4+ Cj4+ICAjZW5kaWYgLyogQ09ORklHX0RFQlVHX0ZTICovCj4+Cj4+ICtzdGF0aWMgdm9pZCBkd19t aXBpX2RzaV9nZXRfaHdfdmVyc2lvbihzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPj4gK3sKPj4g KyAgICAgICByZWdtYXBfcmVhZChkc2ktPnJlZ3MsIERTSV9WRVJTSU9OLCAmZHNpLT5od192ZXJz aW9uKTsKPj4gKyAgICAgICBkc2ktPmh3X3ZlcnNpb24gJj0gVkVSU0lPTjsKPj4gKyAgICAgICBp ZiAoIWRzaS0+aHdfdmVyc2lvbikKPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZHNpLT5kZXYs ICJGYWlsZWQgdG8gcmVhZCBEU0kgaHcgdmVyc2lvbiByZWdpc3RlclxuIik7Cj4KPiBJcyB0aGlz IGFuIGVycm9yIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQ/IElmIHlvdSBjYW4ndCBnZXQgdGhlIEhX Cj4gdmVyc2lvbiwgcHJvYmFibHksIHRoZXJlIGlzIHNvbWV0aGluZyB3cm9uZyB3aXRoIHlvdXIg aGFyZHdhcmUgc28sCj4gZG9uJ3QgeW91IG5lZWQgdG8gcmV0dXJuIGFuIGVycm9yPwo+Cj4KPj4g K30KPj4gKwo+PiAgc3RhdGljIHN0cnVjdCBkd19taXBpX2RzaSAqCj4+ICBfX2R3X21pcGlfZHNp X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9kYXRhKQo+PiBAQCAt MTAyMCw2ICsxMDM2LDE0IEBAIF9fZHdfbWlwaV9kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwKPj4gICAgICAgICAgICAgICAgIGRzaS0+YmFzZSA9IHBsYXRfZGF0YS0+YmFz ZTsKPj4gICAgICAgICB9Cj4+Cj4+ICsgICAgICAgZHNpLT5yZWdzID0gZGV2bV9yZWdtYXBfaW5p dF9tbWlvKGRldiwgZHNpLT5iYXNlLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZHdfbWlwaV9kc2lfcmVnbWFwX2NmZyk7Cj4+ICsgICAgICAgaWYgKElTX0VS Uihkc2ktPnJlZ3MpKSB7Cj4+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGRzaS0+cmVn cyk7Cj4+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRFcgTUlQ SSBEU0kgcmVnbWFwOiAlZFxuIiwgcmV0KTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBFUlJf UFRSKHJldCk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICAgICAgICAgZHNpLT5wY2xrID0gZGV2bV9j bGtfZ2V0KGRldiwgInBjbGsiKTsKPj4gICAgICAgICBpZiAoSVNfRVJSKGRzaS0+cGNsaykpIHsK Pj4gICAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoZHNpLT5wY2xrKTsKPj4gQEAgLTEwNTUs NiArMTA3OSw4IEBAIF9fZHdfbWlwaV9kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiwKPj4gICAgICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPnBjbGsp Owo+PiAgICAgICAgIH0KPj4KPj4gKyAgICAgICBkd19taXBpX2RzaV9nZXRfaHdfdmVyc2lvbihk c2kpOwo+PiArCj4+ICAgICAgICAgZHdfbWlwaV9kc2lfZGVidWdmc19pbml0KGRzaSk7Cj4+ICAg ICAgICAgcG1fcnVudGltZV9lbmFibGUoZGV2KTsKPj4KPj4gLS0KPj4gMi4yNi4wCj4+Cj4+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=