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=-9.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,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 F1AD5C4346E for ; Thu, 24 Sep 2020 06:21:44 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 6010D23741 for ; Thu, 24 Sep 2020 06:21:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ANzc+JWd"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FgU40QuX" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6010D23741 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.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=OdF9F6Zs2kgIf4G2wriLyOPjvpk6juxJ7jd7FMkxB7M=; b=ANzc+JWdN/vwChcC4DyqJToZS 02kV/7sunxdWAqUSl2Wqoq/at6dtw+Z36uGdgXs85OnT+9tMeV1vvOzzKTxdFJxPMTlAAeupZ4HdR bfMfIE3NMXotYdGv5QlducE2GtkvxHlz6+y4NNNoO/vIhvp0GjzVYlst0TGuViaY7aAP2QdAl0+MT /D08jcPExxqPh2xdgre6cNR8k7aTUMMGHbmf2LAA8yEmTlHjEfv45y/Nm9vCSJfryfUrG9Cbp5Qg/ kg98F7t8V87AczH53GZtDEngc2GhMRLt+Fe9uGsHXBjAEfdfSqWnt+B9t6vRg75OaBOo+FjlYK4Ci hl6z+ZAtQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kLKdG-00015P-KB; Thu, 24 Sep 2020 06:21:30 +0000 Received: from mail-il1-x141.google.com ([2607:f8b0:4864:20::141]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kLKdB-00014F-Fu; Thu, 24 Sep 2020 06:21:26 +0000 Received: by mail-il1-x141.google.com with SMTP id q5so2060268ilj.1; Wed, 23 Sep 2020 23:21:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=2QCuAsAnPZ84dWE2f3z8HYI+deWW3HrO+4EJeaF6gpY=; b=FgU40QuXZXwjqIBe3WzexGwce2Aot5+ChvB0BMApSXLSWE3zK3SquoVtzA+rib1Di5 bwsjMiShAyRAL4K3UzUx+xOyJDA18xJHEldqVk4YlA2y8yRiq6YQySCIe1tL/LZLt0qd qzgleBS97I9zp6fyUIge+CnIUBQsY93Z0hvNC+q9zmbUKWTfeXVzKv32txSb5XyumXn0 Vf3cVmGkz+zZWtLbjEQFbzirTkKqhh8JNOz04xDANOQpvDqNETXxDGMHLRc7UOeQoDbh 5j4cADS6IKrnw/p8zFHnmiUxNDO2JNaBXdH/u0e/gHdGLJlOLHs0FtSVChbu2s5u5JOV cj8Q== 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=2QCuAsAnPZ84dWE2f3z8HYI+deWW3HrO+4EJeaF6gpY=; b=qmUUjZg/4VeLZFqHVHWoYaoCW0O63BruHVFi3fh7afS7T6YhdS9+ZO6M7Y0yKSrmrw xgl6HexaW8KojzitajaT6B35PnU2Sv4zdKn0yKBA16aD/sfdXJMaPRQ5jB/v3Ezwn0ZQ 8+maGRL/uOGQXGQFrUxHPl29vAoVNg9DY8b12MXs/n3Mle89kHFpxS59a4h9sdoUoc6o Jq1UfQyG9g+qxnfrNNScHKIsCwjvg3wr+N8XAUjaraoQex6IKtahk9f9UjMneLHxI4yN 1G/vb4fb9BoQWVz85d1xrrfy+NUcF+U+SWYIZ0/ctPjE/ilFSqqsX3We9ExOQulj65aq N1+A== X-Gm-Message-State: AOAM533XurPqwYZ716wPQKhkkM4FNe5ZiLoVO2whoK7cS2HNFoYUNjAg w1UUl3tCUVmFxVoqd//Ue9SpK+/ZJRH/y8TPJ68= X-Google-Smtp-Source: ABdhPJwQzZ3vzTT4R3CTI14Of/NB/rBSlUaYsBSkzUR3fqMfM7kxIqUkW50W2d9gPsRF586SKwCGbXiCV8xhZM8lfNA= X-Received: by 2002:a92:1589:: with SMTP id 9mr2791271ilv.292.1600928481841; Wed, 23 Sep 2020 23:21:21 -0700 (PDT) MIME-Version: 1.0 References: <1600865452-19649-1-git-send-email-gene.chen.richtek@gmail.com> <1600865452-19649-3-git-send-email-gene.chen.richtek@gmail.com> In-Reply-To: From: Gene Chen Date: Thu, 24 Sep 2020 14:21:10 +0800 Message-ID: Subject: Re: [PATCH v4 2/2] leds: mt6360: Add LED driver for MT6360 To: Jacek Anaszewski X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200924_022125_565490_2FEACE35 X-CRM114-Status: GOOD ( 38.38 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm Mailing List , devicetree , cy_huang@richtek.com, Linux Kernel Mailing List , Gene Chen , benjamin.chao@mediatek.com, Rob Herring , "moderated list:ARM/Mediatek SoC support" , Dan Murphy , Pavel Machek , Matthias Brugger , Wilma.Wu@mediatek.com, Linux LED Subsystem , shufan_lee@richtek.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SmFjZWsgQW5hc3pld3NraSA8amFjZWsuYW5hc3pld3NraUBnbWFpbC5jb20+IOaWvCAyMDIw5bm0 OeaciDI05pelIOmAseWbmyDkuIrljYg1OjQ55a+r6YGT77yaCgo+Cj4gSGkgR2VuZSwKPgo+IFRo YW5rIHlvdSBmb3IgdGhlIHVwZGF0ZS4gSSBoYXZlIHNvbWUgbW9yZSBjb21tZW50cyBiZWxvdy4K Pgo+IE9uIDkvMjMvMjAgMjo1MCBQTSwgR2VuZSBDaGVuIHdyb3RlOgo+ID4gRnJvbTogR2VuZSBD aGVuIDxnZW5lX2NoZW5AcmljaHRlay5jb20+Cj4gPgo+ID4gQWRkIE1UNjM2MCBMRUQgZHJpdmVy IGluY2x1ZGUgMi1jaGFubmVsIEZsYXNoIExFRCB3aXRoIHRvcmNoL3N0cm9iZSBtb2RlLAo+ID4g YW5kIDQtY2hhbm5lbCBSR0IgTEVEIHN1cHBvcnQgUmVnaXN0ZXIvRmxhc2gvQnJlYXRoIE1vZGUK PiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBHZW5lIENoZW4gPGdlbmVfY2hlbkByaWNodGVrLmNvbT4K PiA+IC0tLQo+ID4gICBkcml2ZXJzL2xlZHMvS2NvbmZpZyAgICAgICB8ICAxMSArCj4gPiAgIGRy aXZlcnMvbGVkcy9NYWtlZmlsZSAgICAgIHwgICAxICsKPiA+ICAgZHJpdmVycy9sZWRzL2xlZHMt bXQ2MzYwLmMgfCA3MDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgNzE3IGluc2VydGlvbnMoKykKPiA+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbGVkcy9sZWRzLW10NjM2MC5jCj4gPgo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbGVkcy9LY29uZmlnIGIvZHJpdmVycy9sZWRzL0tjb25maWcKPiA+IGluZGV4 IDFjMTgxZGYuLjU1NjFiMDggMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvS2NvbmZpZwo+ ID4gKysrIGIvZHJpdmVycy9sZWRzL0tjb25maWcKPiA+IEBAIC0yNzEsNiArMjcxLDE3IEBAIGNv bmZpZyBMRURTX01UNjMyMwo+ID4gICAgICAgICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQg Zm9yIG9uLWNoaXAgTEVEIGRyaXZlcnMgZm91bmQgb24KPiA+ICAgICAgICAgTWVkaWF0ZWsgTVQ2 MzIzIFBNSUMuCj4gPgo+ID4gK2NvbmZpZyBMRURTX01UNjM2MAo+ID4gKyAgICAgdHJpc3RhdGUg IkxFRCBTdXBwb3J0IGZvciBNZWRpYXRlayBNVDYzNjAgUE1JQyIKPiA+ICsgICAgIGRlcGVuZHMg b24gTEVEU19DTEFTU19GTEFTSCAmJiBPRgo+ID4gKyAgICAgZGVwZW5kcyBvbiBWNEwyX0ZMQVNI X0xFRF9DTEFTUyB8fCAhVjRMMl9GTEFTSF9MRURfQ0xBU1MKPiA+ICsgICAgIGRlcGVuZHMgb24g TUZEX01UNjM2MAo+ID4gKyAgICAgaGVscAo+ID4gKyAgICAgICBUaGlzIG9wdGlvbiBlbmFibGVz IHN1cHBvcnQgZm9yIGR1YWwgRmxhc2ggTEVEIGRyaXZlcnMgZm91bmQgb24KPiA+ICsgICAgICAg TWVkaWF0ZWsgTVQ2MzYwIFBNSUMuCj4gPiArICAgICAgIEluZGVwZW5kZW50IGN1cnJlbnQgc291 cmNlcyBzdXBwbHkgZm9yIGVhY2ggZmxhc2ggTEVEIHN1cHBvcnQgdG9yY2gKPiA+ICsgICAgICAg YW5kIHN0cm9iZSBtb2RlLgo+ID4gKwo+ID4gICBjb25maWcgTEVEU19TM0MyNFhYCj4gPiAgICAg ICB0cmlzdGF0ZSAiTEVEIFN1cHBvcnQgZm9yIFNhbXN1bmcgUzNDMjRYWCBHUElPIExFRHMiCj4g PiAgICAgICBkZXBlbmRzIG9uIExFRFNfQ0xBU1MKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xl ZHMvTWFrZWZpbGUgYi9kcml2ZXJzL2xlZHMvTWFrZWZpbGUKPiA+IGluZGV4IGMyYzdkN2EuLjU1 OTY0MjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvTWFrZWZpbGUKPiA+ICsrKyBiL2Ry aXZlcnMvbGVkcy9NYWtlZmlsZQo+ID4gQEAgLTY2LDYgKzY2LDcgQEAgb2JqLSQoQ09ORklHX0xF RFNfTUlLUk9USUtfUkI1MzIpICAgKz0gbGVkcy1yYjUzMi5vCj4gPiAgIG9iai0kKENPTkZJR19M RURTX01MWENQTEQpICAgICAgICAgICs9IGxlZHMtbWx4Y3BsZC5vCj4gPiAgIG9iai0kKENPTkZJ R19MRURTX01MWFJFRykgICAgICAgICAgICs9IGxlZHMtbWx4cmVnLm8KPiA+ICAgb2JqLSQoQ09O RklHX0xFRFNfTVQ2MzIzKSAgICAgICAgICAgKz0gbGVkcy1tdDYzMjMubwo+ID4gK29iai0kKENP TkZJR19MRURTX01UNjM2MCkgICAgICAgICAgICArPSBsZWRzLW10NjM2MC5vCj4gPiAgIG9iai0k KENPTkZJR19MRURTX05FVDQ4WFgpICAgICAgICAgICs9IGxlZHMtbmV0NDh4eC5vCj4gPiAgIG9i ai0kKENPTkZJR19MRURTX05FVFhCSUcpICAgICAgICAgICs9IGxlZHMtbmV0eGJpZy5vCj4gPiAg IG9iai0kKENPTkZJR19MRURTX05JQzc4QlgpICAgICAgICAgICs9IGxlZHMtbmljNzhieC5vCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtbXQ2MzYwLmMgYi9kcml2ZXJzL2xlZHMv bGVkcy1tdDYzNjAuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAu LjFjMzQ4NmUKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLW10 NjM2MC5jCj4gPiBAQCAtMCwwICsxLDcwNSBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkKPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiA+ ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQu aD4KPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2xl ZC1jbGFzcy1mbGFzaC5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3Byb3Bl cnR5Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ID4gKyNpbmNsdWRlIDxtZWRp YS92NGwyLWZsYXNoLWxlZC1jbGFzcy5oPgo+ID4gKwo+ID4gK2VudW0gewo+ID4gKyAgICAgTVQ2 MzYwX0xFRF9JU05LMSA9IDAsCj4gPiArICAgICBNVDYzNjBfTEVEX0lTTksyLAo+ID4gKyAgICAg TVQ2MzYwX0xFRF9JU05LMywKPiA+ICsgICAgIE1UNjM2MF9MRURfSVNOSzQsCj4KPiBPbmUgcXVl c3Rpb24gYWJvdXQgdGhlc2UgSVNJTktzIC0gaG93IGFyZSB0aGV5IGV4cGxvaXRlZCBpbiB5b3Vy IGRldmljZT8KPiBBcmUgdGhlc2UgTEVEcyB1c2VkIHRvIGluZGljYXRlIGNhbWVyYSBhY3Rpdml0 eSBvciBpdCBpcyBvbmUgUkdCIExFRAo+IGZvciBzdGF0dXM/IEFuZCB3aGF0IGZ1bmN0aW9uYWxp dHkgaGFzIHRoZSByZW1haW5pbmcgYW1iZXIgb25lIChzdGlja2luZwo+IHRvIHRoZSBuYW1pbmcg ZnJvbSB5b3VyIERUIGJpbmRpbmdzKT8KPgo+IENhbiB5b3Ugc2hhcmUgaG93IHRoZSBkb2N1bWVu YXRpb24gZm9yIHRoaXMgZGV2aWNlIGRlc2NyaWJlcyB0aGUgcHVycG9zZQo+IG9mIHRoZXNlIHNp bmtzLCBpZiBpdCBkb2VzIGl0IGF0IGFsbD8KPgo+IEkgZ290IHByb2JhYmx5IG1pc2xlYWQgYnkg eW91ciBuYW1pbmcgaW4gdGhlIGRyaXZlciBhbmQgZ290IGZpeGVkIG9uCj4gdGhlaXIgZnVuY3Rp b24gYXMgY2FtZXJhIGFjdGl2aXR5IGluZGljYXRvcnMsIGZvciB3aGljaCBWNEwyIGhhcwo+IHN1 cHBvcnQuIElmIHRoYXQgaXMgbm90IHRoZSBjYXNlLCB0aGVuIHlvdSdkIGJldHRlciBzd2l0Y2gg dG8gdXNpbmcKPiBtdWx0aWNvbG9yIGZyYW1ld29yayBmb3IgYWxsIGZvdXIgImluZGljYXRvciIg TEVEcy4KPgoKSXQncyBvbmUgUkdCIExFRCBmb3Igc3RhdHVzLCBub3QgZm9yIGNhbWVyYS4KClRo ZSBNVDYzNjAgaW50ZWdyYXRlcyBhIHRocmVlLWNoYW5uZWwgUkdCIExFRCBkcml2ZXIsIGRlc2ln bmVkIHRvCnByb3ZpZGUgYSB2YXJpZXR5IG9mIGxpZ2h0aW5nIGVmZmVjdHMgZm9yIG1vYmlsZSBk ZXZpY2UgYXBwbGljYXRpb25zLgpUaGUgUkdCIExFRCBkcml2ZXIgaW5jbHVkZXMgYSBzbWFydCBM RUQgc3RyaW5nIGNvbnRyb2xsZXIsIGFuZCBpdCBjYW4KZHJpdmUgMyBjaGFubmVscyBvZiBMRURz IHdpdGggYSBzaW5rIGN1cnJlbnQgb2YgdXAgdG8gMjRtQS4gVGhlCmRlZmF1bHQgc2V0dGluZyBv ZiBSR0JfSVNJTksxIGlzIGF1dG8gbW9kZSBmb3IgVEEgY2hhcmdpbmcgaW5kaWNhdG9yLAphbmQg UkdCX0lTSU5LMSBhbHNvIHN1cHBvcnRzIHNvZnR3YXJlIG1vZGUuIEl0IHByb3ZpZGVzIHRocmVl Cm9wZXJhdGlvbiBtb2RlcyBmb3IgdGhlIFJHQiBMRURzOiBmbGFzaCBtb2RlLCBicmVhdGggbW9k ZSwgYW5kCnJlZ2lzdGVyIG1vZGUuIFRoZSBkZXZpY2UgY2FuIGluY3JlYXNlIG9yIGRlY3JlYXNl IHRoZSBicmlnaHRuZXNzIG9mCnRoZSBSR0IgTEVEcyB1cG9uIGNvbW1hbmQgdmlhIHRoZSBJMkMg aW50ZXJmYWNlLiBUaGUgUkdCX0lTSU5LNApwcm92aWRlIG1vcmUgc2luayBjdXJyZW50IHVwIHRv IDE1MG1BLCB3aGljaCB3ZSBjYW4gbW9vbmxpZ2h0IG1vZGUuCgpEbyB5b3UgbWVhbiB3ZSBzaG91 bGQgcmVtb3ZlICJpc2luayByZWdpc3RlciB2NGwyIGRldmljZSwgb25seSBuZWVkCnJlZ2lzdGVy IGxlZGNsYXNzIGRldmljZSI/Cgo+ID4gKyAgICAgTVQ2MzYwX0xFRF9GTEFTSDEsCj4gPiArICAg ICBNVDYzNjBfTEVEX0ZMQVNIMiwKPiA+ICsgICAgIE1UNjM2MF9NQVhfTEVEUwo+ID4gK307Cj4g PiArCj4gPiArI2RlZmluZSBNVDYzNjBfUkVHX1JHQkVOICAgICAgICAgICAgIDB4MzgwCj4gPiAr I2RlZmluZSBNVDYzNjBfUkVHX0lTTksoX2xlZF9ubykgICAgICgweDM4MSArIChfbGVkX25vKSkK PiA+ICsjZGVmaW5lIE1UNjM2MF9JU05LX0VOTUFTSyhfbGVkX25vKSAgQklUKDcgLSAoX2xlZF9u bykpCj4gPiArI2RlZmluZSBNVDYzNjBfSVNOS19NQVNLICAgICAgICAgICAgIEdFTk1BU0soNCwg MCkKPiA+ICsjZGVmaW5lIE1UNjM2MF9DSFJJTkRTRUxfTUFTSyAgICAgICAgICAgICAgICBCSVQo MykKPiA+ICsKPiA+ICsjZGVmaW5lIE1UNjM2MF9SRUdfRkxFREVOICAgICAgICAgICAgMHgzN0UK PiA+ICsjZGVmaW5lIE1UNjM2MF9SRUdfU1RSQlRPICAgICAgICAgICAgMHgzNzMKPiA+ICsjZGVm aW5lIE1UNjM2MF9SRUdfRkxFREJBU0UoX2lkKSAgICAgKDB4MzcyICsgNCAqIChfaWQgLSBNVDYz NjBfTEVEX0ZMQVNIMSkpCj4gPiArI2RlZmluZSBNVDYzNjBfUkVHX0ZMRURJU1RSQihfaWQpICAg IChNVDYzNjBfUkVHX0ZMRURCQVNFKF9pZCkgKyAyKQo+ID4gKyNkZWZpbmUgTVQ2MzYwX1JFR19G TEVESVRPUihfaWQpICAgICAoTVQ2MzYwX1JFR19GTEVEQkFTRShfaWQpICsgMykKPiA+ICsjZGVm aW5lIE1UNjM2MF9SRUdfQ0hHU1RBVDIgICAgICAgICAgMHgzRTEKPiA+ICsjZGVmaW5lIE1UNjM2 MF9SRUdfRkxFRFNUQVQxICAgICAgICAgMHgzRTkKPiA+ICsjZGVmaW5lIE1UNjM2MF9JVE9SQ0hf TUFTSyAgICAgICAgICAgR0VOTUFTSyg0LCAwKQo+ID4gKyNkZWZpbmUgTVQ2MzYwX0lTVFJPQkVf TUFTSyAgICAgICAgICBHRU5NQVNLKDYsIDApCj4gPiArI2RlZmluZSBNVDYzNjBfU1RSQlRPX01B U0sgICAgICAgICAgIEdFTk1BU0soNiwgMCkKPiA+ICsjZGVmaW5lIE1UNjM2MF9UT1JDSEVOX01B U0sgICAgICAgICAgQklUKDMpCj4gPiArI2RlZmluZSBNVDYzNjBfU1RST0JFTl9NQVNLICAgICAg ICAgIEJJVCgyKQo+ID4gKyNkZWZpbmUgTVQ2MzYwX0ZMQ1NFTl9NQVNLKF9pZCkgICAgICAgICAg ICAgIEJJVChNVDYzNjBfTEVEX0ZMQVNIMiAtIF9pZCkKPiA+ICsjZGVmaW5lIE1UNjM2MF9GTEVE Q0hHVklOT1ZQX01BU0sgICAgQklUKDMpCj4gPiArI2RlZmluZSBNVDYzNjBfRkxFRDFTVFJCVE9f TUFTSyAgICAgICAgICAgICAgQklUKDExKQo+ID4gKyNkZWZpbmUgTVQ2MzYwX0ZMRUQyU1RSQlRP X01BU0sgICAgICAgICAgICAgIEJJVCgxMCkKPiA+ICsjZGVmaW5lIE1UNjM2MF9GTEVEMVNUUkJf TUFTSyAgICAgICAgICAgICAgICBCSVQoOSkKPiA+ICsjZGVmaW5lIE1UNjM2MF9GTEVEMlNUUkJf TUFTSyAgICAgICAgICAgICAgICBCSVQoOCkKPiA+ICsjZGVmaW5lIE1UNjM2MF9GTEVEMVNIT1JU X01BU0sgICAgICAgICAgICAgICBCSVQoNykKPiA+ICsjZGVmaW5lIE1UNjM2MF9GTEVEMlNIT1JU X01BU0sgICAgICAgICAgICAgICBCSVQoNikKPiA+ICsjZGVmaW5lIE1UNjM2MF9GTEVETFZGX01B U0sgICAgICAgICAgQklUKDMpCj4gPiArCj4gPiArI2RlZmluZSBNVDYzNjBfSVNOSzFfU1RFUFVB ICAgICAgICAgIDIwMDAKPiA+ICsjZGVmaW5lIE1UNjM2MF9JU05LMV9NQVhVQSAgICAgICAgICAg MjQwMDAKPiA+ICsjZGVmaW5lIE1UNjM2MF9JU05LNF9TVEVQVUEgICAgICAgICAgNTAwMAo+ID4g KyNkZWZpbmUgTVQ2MzYwX0lTTks0X01BWFVBICAgICAgICAgICAxNTAwMDAKPiA+ICsKPiA+ICsj ZGVmaW5lIE1UNjM2MF9JVE9SQ0hfTUlOVUEgICAgICAgICAgMjUwMDAKPiA+ICsjZGVmaW5lIE1U NjM2MF9JVE9SQ0hfU1RFUFVBICAgICAgICAgMTI1MDAKPiA+ICsjZGVmaW5lIE1UNjM2MF9JVE9S Q0hfTUFYVUEgICAgICAgICAgNDAwMDAwCj4gPiArI2RlZmluZSBNVDYzNjBfSVNUUkJfTUlOVUEg ICAgICAgICAgIDUwMDAwCj4gPiArI2RlZmluZSBNVDYzNjBfSVNUUkJfU1RFUFVBICAgICAgICAg IDEyNTAwCj4gPiArI2RlZmluZSBNVDYzNjBfSVNUUkJfTUFYVUEgICAgICAgICAgIDE1MDAwMDAK PiA+ICsjZGVmaW5lIE1UNjM2MF9TVFJCVE9fTUlOVVMgICAgICAgICAgNjQwMDAKPiA+ICsjZGVm aW5lIE1UNjM2MF9TVFJCVE9fU1RFUFVTICAgICAgICAgMzIwMDAKPiA+ICsjZGVmaW5lIE1UNjM2 MF9TVFJCVE9fTUFYVVMgICAgICAgICAgMjQzMjAwMAo+ID4gKwo+ID4gKyNkZWZpbmUgU1RBVEVf T0ZGICAgICAgICAgICAgICAgICAgICAwCj4gPiArI2RlZmluZSBTVEFURV9LRUVQICAgICAgICAg ICAgICAgICAgIDEKPiA+ICsjZGVmaW5lIFNUQVRFX09OICAgICAgICAgICAgICAgICAgICAgMgo+ ID4gKwo+ID4gK3N0cnVjdCBtdDYzNjBfbGVkIHsKPiA+ICsgICAgIHVuaW9uIHsKPiA+ICsgICAg ICAgICAgICAgc3RydWN0IGxlZF9jbGFzc2RldiBpc25rOwo+ID4gKyAgICAgICAgICAgICBzdHJ1 Y3QgbGVkX2NsYXNzZGV2X2ZsYXNoIGZsYXNoOwo+ID4gKyAgICAgfTsKPiA+ICsgICAgIHN0cnVj dCB2NGwyX2ZsYXNoICp2NGwyX2ZsYXNoOwo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9wcml2ICpw cml2Owo+ID4gKyAgICAgdTMyIGxlZF9ubzsKPiA+ICsgICAgIHUzMiBkZWZhdWx0X3N0YXRlOwo+ ID4gK307Cj4gPiArCj4gPiArc3RydWN0IG10NjM2MF9wcml2IHsKPiA+ICsgICAgIHN0cnVjdCBk ZXZpY2UgKmRldjsKPiA+ICsgICAgIHN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiA+ICsgICAgIHVu c2lnbmVkIGludCBmbGVkX3N0cm9iZV91c2VkOwo+ID4gKyAgICAgdW5zaWduZWQgaW50IGZsZWRf dG9yY2hfdXNlZDsKPiA+ICsgICAgIHVuc2lnbmVkIGludCBsZWRzX2FjdGl2ZTsKPiA+ICsgICAg IHVuc2lnbmVkIGludCBsZWRzX2NvdW50Owo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9sZWQgbGVk c1tdOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGludCBtdDYzNjBfaXNua19icmlnaHRuZXNz X3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsY2RldiwgZW51bSBsZWRfYnJpZ2h0bmVzcyBsZXZl bCkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgbXQ2MzYwX2xlZCAqbGVkID0gY29udGFpbmVyX29m KGxjZGV2LCBzdHJ1Y3QgbXQ2MzYwX2xlZCwgaXNuayk7Cj4gPiArICAgICBzdHJ1Y3QgbXQ2MzYw X3ByaXYgKnByaXYgPSBsZWQtPnByaXY7Cj4gPiArICAgICB1MzIgZW5hYmxlX21hc2sgPSBNVDYz NjBfSVNOS19FTk1BU0sobGVkLT5sZWRfbm8pOwo+ID4gKyAgICAgdTMyIHZhbCA9IGxldmVsID8g TVQ2MzYwX0lTTktfRU5NQVNLKGxlZC0+bGVkX25vKSA6IDA7Cj4gPiArICAgICBpbnQgcmV0Owo+ Cj4gWW91IG1lZWQgbXV0ZXggcHJvdGVjdGlvbiBpbiBhbGwgZnVuY3Rpb25zIGFjZXNzaW5nIGRl dmljZSByZWdpc3RlcnMuCj4KCkFDSwoKPiA+ICsgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0 cyhwcml2LT5yZWdtYXAsIE1UNjM2MF9SRUdfSVNOSyhsZWQtPmxlZF9ubyksCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTVQ2MzYwX0lTTktfTUFTSywgbGV2ZWwpOwo+ID4gKyAg ICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAg IHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNjBfUkVHX1JHQkVO LCBlbmFibGVfbWFzaywgdmFsKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtdDYzNjBf dG9yY2hfYnJpZ2h0bmVzc19zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGNkZXYsIGVudW0gbGVk X2JyaWdodG5lc3MgbGV2ZWwpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9sZWQgKmxl ZCA9IGNvbnRhaW5lcl9vZihsY2Rldiwgc3RydWN0IG10NjM2MF9sZWQsIGZsYXNoLmxlZF9jZGV2 KTsKPiA+ICsgICAgIHN0cnVjdCBtdDYzNjBfcHJpdiAqcHJpdiA9IGxlZC0+cHJpdjsKPiA+ICsg ICAgIHUzMiBlbmFibGVfbWFzayA9IE1UNjM2MF9UT1JDSEVOX01BU0sgfCBNVDYzNjBfRkxDU0VO X01BU0sobGVkLT5sZWRfbm8pOwo+ID4gKyAgICAgdTMyIHZhbCA9IGxldmVsID8gTVQ2MzYwX0ZM Q1NFTl9NQVNLKGxlZC0+bGVkX25vKSA6IDA7Cj4gPiArICAgICB1MzIgcHJldiA9IHByaXYtPmZs ZWRfdG9yY2hfdXNlZCwgY3VycjsKPgo+IEFib3ZlIGFzc2lnbm1lbnQgbXVzdCBiZSBtYWRlIHVu ZGVyIG11dGV4Lgo+CgpBQ0sKCj4gPiArICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgLyog T25seSBvbmUgc2V0IG9mIGZsYXNoIGNvbnRyb2wgbG9naWMsIHVzZSB0aGUgZmxhZyB0byBhdm9p ZCBzdHJvYmUgaXMgY3VycmVudGx5IHVzZWQgKi8KPiA+ICsgICAgIGlmIChwcml2LT5mbGVkX3N0 cm9iZV91c2VkKSB7Cj4gPiArICAgICAgICAgICAgIGRldl93YXJuKGxjZGV2LT5kZXYsICJQbGVh c2UgZGlzYWJsZSBzdHJvYmUgZmlyc3QgWyVkXVxuIiwgcHJpdi0+ZmxlZF9zdHJvYmVfdXNlZCk7 Cj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAr ICAgICBpZiAobGV2ZWwpCj4gPiArICAgICAgICAgICAgIGN1cnIgPSBwcmV2IHwgQklUKGxlZC0+ bGVkX25vKTsKPiA+ICsgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgY3VyciA9IHByZXYgJiB+ QklUKGxlZC0+bGVkX25vKTsKPiA+ICsKPiA+ICsgICAgIGlmIChjdXJyKQo+ID4gKyAgICAgICAg ICAgICB2YWwgfD0gTVQ2MzYwX1RPUkNIRU5fTUFTSzsKPiA+ICsKPiA+ICsgICAgIGlmIChsZXZl bCkgewo+ID4gKyAgICAgICAgICAgICByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLCBNVDYzNjBfUkVHX0ZMRURJVE9SKGxlZC0+bGVkX25vKSwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1UNjM2MF9JVE9SQ0hfTUFTSywgbGV2ZWwgLSAxKTsK PiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9i aXRzKHByaXYtPnJlZ21hcCwgTVQ2MzYwX1JFR19GTEVERU4sIGVuYWJsZV9tYXNrLCB2YWwpOwo+ ID4gKyAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ ICsgICAgIHByaXYtPmZsZWRfdG9yY2hfdXNlZCA9IGN1cnI7Cj4KPiBEaXR0by4gQW5kIGV2ZXJ5 dGhpbmcgYmV0d2VlbiBhcyB3ZWxsIG9mIGNvdXJzZS4KPgoKQUNLCgo+ID4gKwo+ID4gKyAgICAg cmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX2ZsYXNoX2JyaWdo dG5lc3Nfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZsX2NkZXYsIHUzMiBicmlnaHRu ZXNzKQo+ID4gK3sKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBEdWUgdG8gdGhlIGN1cnJlbnQg c3Bpa2Ugd2hlbiB0dXJuaW5nIG9uIGZsYXNoLCBvbmx5IGxldCBicmlnaHRuZXNzIGtlZXAgYnkg ZnJhbWV3b3JrCj4KPiBzL2tlZXAgYnkvdG8gYmUga2VwdC8KPgo+ID4gKyAgICAgICogVGhpcyBl bXB0eSBmdW5jdGlvbiBpcyB1c2VkIHRvIHByZXZlbnQgbGVkX2NsYXNzZGV2X2ZsYXNoIHJlZ2lz dGVyIG9wcyBjaGVjawo+Cj4gcy9sZWRfY2xhc3NkZXZfZmxhc2gvbGVkX2NsYXNzZGV2X2ZsYXNo KCkvCj4gcy9jaGVjay9jaGVjayBmYWlsdXJlLwo+Cj4gQW5kIHBsZWFzZSBwdXQgZG90cyBhdCB0 aGUgZW5kIG9mIHNlbnRlbmNlcy4KPgoKQUNLCgo+ID4gKyAgICAgICovCj4gPiArICAgICByZXR1 cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBfbXQ2MzYwX2ZsYXNoX2JyaWdodG5l c3Nfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZsX2NkZXYsIHUzMiBicmlnaHRuZXNz KQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBtdDYzNjBfbGVkICpsZWQgPSBjb250YWluZXJfb2Yo ZmxfY2Rldiwgc3RydWN0IG10NjM2MF9sZWQsIGZsYXNoKTsKPiA+ICsgICAgIHN0cnVjdCBtdDYz NjBfcHJpdiAqcHJpdiA9IGxlZC0+cHJpdjsKPiA+ICsgICAgIHN0cnVjdCBsZWRfZmxhc2hfc2V0 dGluZyAqcyA9ICZmbF9jZGV2LT5icmlnaHRuZXNzOwo+ID4gKyAgICAgdTMyIHZhbCA9IChicmln aHRuZXNzIC0gcy0+bWluKSAvIHMtPnN0ZXA7Cj4gPiArCj4gPiArICAgICByZXR1cm4gcmVnbWFw X3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzYwX1JFR19GTEVESVNUUkIobGVkLT5sZWRf bm8pLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UNjM2MF9JU1RST0JFX01B U0ssIHZhbCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX3N0cm9iZV9zZXQo c3RydWN0IGxlZF9jbGFzc2Rldl9mbGFzaCAqZmxfY2RldiwgYm9vbCBzdGF0ZSkKPiA+ICt7Cj4g PiArICAgICBzdHJ1Y3QgbXQ2MzYwX2xlZCAqbGVkID0gY29udGFpbmVyX29mKGZsX2NkZXYsIHN0 cnVjdCBtdDYzNjBfbGVkLCBmbGFzaCk7Cj4gPiArICAgICBzdHJ1Y3QgbXQ2MzYwX3ByaXYgKnBy aXYgPSBsZWQtPnByaXY7Cj4gPiArICAgICBzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsY2RldiA9ICZm bF9jZGV2LT5sZWRfY2RldjsKPiA+ICsgICAgIHN0cnVjdCBsZWRfZmxhc2hfc2V0dGluZyAqcyA9 ICZmbF9jZGV2LT5icmlnaHRuZXNzOwo+ID4gKyAgICAgdTMyIGVuYWJsZV9tYXNrID0gTVQ2MzYw X1NUUk9CRU5fTUFTSyB8IE1UNjM2MF9GTENTRU5fTUFTSyhsZWQtPmxlZF9ubyk7Cj4gPiArICAg ICB1MzIgdmFsID0gc3RhdGUgPyBNVDYzNjBfRkxDU0VOX01BU0sobGVkLT5sZWRfbm8pIDogMDsK PiA+ICsgICAgIHUzMiBwcmV2ID0gcHJpdi0+ZmxlZF9zdHJvYmVfdXNlZCwgY3VycjsKPiA+ICsg ICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAgICAvKiBPbmx5IG9uZSBzZXQgb2YgZmxhc2ggY29u dHJvbCBsb2dpYywgdXNlIHRoZSBmbGFnIHRvIGF2b2lkIHRvcmNoIGlzIGN1cnJlbnRseSB1c2Vk ICovCj4gPiArICAgICBpZiAocHJpdi0+ZmxlZF90b3JjaF91c2VkKSB7Cj4gPiArICAgICAgICAg ICAgIGRldl93YXJuKGxjZGV2LT5kZXYsICJQbGVhc2UgZGlzYWJsZSB0b3JjaCBmaXJzdCBbMHgl eF1cbiIsIHByaXYtPmZsZWRfdG9yY2hfdXNlZCk7Cj4gPiArICAgICAgICAgICAgIHJldHVybiAt RUJVU1k7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBpZiAoc3RhdGUpCj4gPiArICAgICAg ICAgICAgIGN1cnIgPSBwcmV2IHwgQklUKGxlZC0+bGVkX25vKTsKPiA+ICsgICAgIGVsc2UKPiA+ ICsgICAgICAgICAgICAgY3VyciA9IHByZXYgJiB+QklUKGxlZC0+bGVkX25vKTsKPiA+ICsKPiA+ ICsgICAgIGlmIChjdXJyKQo+ID4gKyAgICAgICAgICAgICB2YWwgfD0gTVQ2MzYwX1NUUk9CRU5f TUFTSzsKPiA+ICsKPiA+ICsgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdt YXAsIE1UNjM2MF9SRUdfRkxFREVOLCBlbmFibGVfbWFzaywgdmFsKTsKPiA+ICsgICAgIGlmIChy ZXQpIHsKPiA+ICsgICAgICAgICAgICAgZGV2X2VycihsY2Rldi0+ZGV2LCAiWyVkXSBjb250cm9s IGN1cnJlbnQgc291cmNlICVkIGZhaWxcbiIsIGxlZC0+bGVkX25vLCBzdGF0ZSk7Cj4gPiArICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICAvKgo+ID4g KyAgICAgICogSWYgdGhlIGZsYXNoIG5lZWQgdG8gYmUgb24sIGNvbmZpZyB0aGUgZmxhc2ggY3Vy cmVudCByYW1waW5nIHVwIHRvIHRoZSBzZXR0aW5nIHZhbHVlCj4gPiArICAgICAgKiBFbHNlLCBh bHdheXMgcmVjb3ZlciBiYWNrIHRvIHRoZSBtaW5pbXVtIG9uZQo+ID4gKyAgICAgICovCj4gPiAr ICAgICByZXQgPSBfbXQ2MzYwX2ZsYXNoX2JyaWdodG5lc3Nfc2V0KGZsX2NkZXYsIHN0YXRlID8g cy0+dmFsIDogcy0+bWluKTsKPiA+ICsgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAvKiBGb3IgdGhlIGZsYXNoIHR1cm4gb24vb2ZmLCBI VyByYW1wcGluZyB1cC9kb3duIHRpbWUgaXMgNW1zLzUwMHVzLCByZXNwZWN0aXZlbHkgKi8KPiA+ ICsgICAgIGlmICghcHJldiAmJiBjdXJyKQo+ID4gKyAgICAgICAgICAgICB1c2xlZXBfcmFuZ2Uo NTAwMCwgNjAwMCk7Cj4gPiArICAgICBlbHNlIGlmIChwcmV2ICYmICFjdXJyKQo+ID4gKyAgICAg ICAgICAgICB1ZGVsYXkoNTAwKTsKPiA+ICsKPiA+ICsgICAgIHByaXYtPmZsZWRfc3Ryb2JlX3Vz ZWQgPSBjdXJyOwo+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBp bnQgbXQ2MzYwX3N0cm9iZV9nZXQoc3RydWN0IGxlZF9jbGFzc2Rldl9mbGFzaCAqZmxfY2Rldiwg Ym9vbCAqc3RhdGUpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9sZWQgKmxlZCA9IGNv bnRhaW5lcl9vZihmbF9jZGV2LCBzdHJ1Y3QgbXQ2MzYwX2xlZCwgZmxhc2gpOwo+ID4gKyAgICAg c3RydWN0IG10NjM2MF9wcml2ICpwcml2ID0gbGVkLT5wcml2Owo+ID4gKwo+ID4gKyAgICAgKnN0 YXRlID0gISEocHJpdi0+ZmxlZF9zdHJvYmVfdXNlZCAmIEJJVChsZWQtPmxlZF9ubykpOwo+ID4g KyAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX3RpbWVv dXRfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZsX2NkZXYsIHUzMiB0aW1lb3V0KQo+ ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBtdDYzNjBfbGVkICpsZWQgPSBjb250YWluZXJfb2YoZmxf Y2Rldiwgc3RydWN0IG10NjM2MF9sZWQsIGZsYXNoKTsKPiA+ICsgICAgIHN0cnVjdCBtdDYzNjBf cHJpdiAqcHJpdiA9IGxlZC0+cHJpdjsKPiA+ICsgICAgIHN0cnVjdCBsZWRfZmxhc2hfc2V0dGlu ZyAqcyA9ICZmbF9jZGV2LT50aW1lb3V0Owo+ID4gKyAgICAgdTMyIHZhbCA9ICh0aW1lb3V0IC0g cy0+bWluKSAvIHMtPnN0ZXA7Cj4gPiArCj4gPiArICAgICByZXR1cm4gcmVnbWFwX3VwZGF0ZV9i aXRzKHByaXYtPnJlZ21hcCwgTVQ2MzYwX1JFR19TVFJCVE8sIE1UNjM2MF9TVFJCVE9fTUFTSywg dmFsKTsKPiA+ICsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtdDYzNjBfZmF1bHRfZ2V0 KHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZsX2NkZXYsIHUzMiAqZmF1bHQpCj4gPiArewo+ ID4gKyAgICAgc3RydWN0IG10NjM2MF9sZWQgKmxlZCA9IGNvbnRhaW5lcl9vZihmbF9jZGV2LCBz dHJ1Y3QgbXQ2MzYwX2xlZCwgZmxhc2gpOwo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9wcml2ICpw cml2ID0gbGVkLT5wcml2Owo+ID4gKyAgICAgdTE2IGZsZWRfc3RhdDsKPiA+ICsgICAgIHVuc2ln bmVkIGludCBjaGdfc3RhdCwgc3Ryb2JlX3RpbWVvdXRfbWFzaywgZmxlZF9zaG9ydF9tYXNrOwo+ ID4gKyAgICAgdTMyIHJmYXVsdCA9IDA7Cj4gPiArICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAg ICAgcmV0ID0gcmVnbWFwX3JlYWQocHJpdi0+cmVnbWFwLCBNVDYzNjBfUkVHX0NIR1NUQVQyLCAm Y2hnX3N0YXQpOwo+ID4gKyAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPiA+ICsKPiA+ICsgICAgIHJldCA9IHJlZ21hcF9yYXdfcmVhZChwcml2LT5yZWdtYXAsIE1U NjM2MF9SRUdfRkxFRFNUQVQxLCAmZmxlZF9zdGF0LCBzaXplb2YoZmxlZF9zdGF0KSk7Cj4gPiAr ICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAg ICAgaWYgKGxlZC0+bGVkX25vID09IE1UNjM2MF9MRURfRkxBU0gxKSB7Cj4gPiArICAgICAgICAg ICAgIHN0cm9iZV90aW1lb3V0X21hc2sgPSBNVDYzNjBfRkxFRDFTVFJCVE9fTUFTSzsKPiA+ICsg ICAgICAgICAgICAgZmxlZF9zaG9ydF9tYXNrID0gTVQ2MzYwX0ZMRUQxU0hPUlRfTUFTSzsKPiA+ ICsgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgIHN0cm9iZV90aW1lb3V0X21hc2sgPSBN VDYzNjBfRkxFRDJTVFJCVE9fTUFTSzsKPiA+ICsgICAgICAgICAgICAgZmxlZF9zaG9ydF9tYXNr ID0gTVQ2MzYwX0ZMRUQyU0hPUlRfTUFTSzsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGlm IChjaGdfc3RhdCAmIE1UNjM2MF9GTEVEQ0hHVklOT1ZQX01BU0spCj4gPiArICAgICAgICAgICAg IHJmYXVsdCB8PSBMRURfRkFVTFRfSU5QVVRfVk9MVEFHRTsKPiA+ICsKPiA+ICsgICAgIGlmIChm bGVkX3N0YXQgJiBzdHJvYmVfdGltZW91dF9tYXNrKQo+ID4gKyAgICAgICAgICAgICByZmF1bHQg fD0gTEVEX0ZBVUxUX1RJTUVPVVQ7Cj4gPiArCj4gPiArICAgICBpZiAoZmxlZF9zdGF0ICYgZmxl ZF9zaG9ydF9tYXNrKQo+ID4gKyAgICAgICAgICAgICByZmF1bHQgfD0gTEVEX0ZBVUxUX1NIT1JU X0NJUkNVSVQ7Cj4gPiArCj4gPiArICAgICBpZiAoZmxlZF9zdGF0ICYgTVQ2MzYwX0ZMRURMVkZf TUFTSykKPiA+ICsgICAgICAgICAgICAgcmZhdWx0IHw9IExFRF9GQVVMVF9VTkRFUl9WT0xUQUdF Owo+ID4gKwo+ID4gKyAgICAgKmZhdWx0ID0gcmZhdWx0Owo+ID4gKyAgICAgcmV0dXJuIDA7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbGVkX2ZsYXNoX29wcyBtdDYzNjBf Zmxhc2hfb3BzID0gewo+ID4gKyAgICAgLmZsYXNoX2JyaWdodG5lc3Nfc2V0ID0gbXQ2MzYwX2Zs YXNoX2JyaWdodG5lc3Nfc2V0LAo+ID4gKyAgICAgLnN0cm9iZV9zZXQgPSBtdDYzNjBfc3Ryb2Jl X3NldCwKPiA+ICsgICAgIC5zdHJvYmVfZ2V0ID0gbXQ2MzYwX3N0cm9iZV9nZXQsCj4gPiArICAg ICAudGltZW91dF9zZXQgPSBtdDYzNjBfdGltZW91dF9zZXQsCj4gPiArICAgICAuZmF1bHRfZ2V0 ID0gbXQ2MzYwX2ZhdWx0X2dldCwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYw X2lzbmtfaW5pdF9kZWZhdWx0X3N0YXRlKHN0cnVjdCBtdDYzNjBfbGVkICpsZWQpCj4gPiArewo+ ID4gKyAgICAgc3RydWN0IG10NjM2MF9wcml2ICpwcml2ID0gbGVkLT5wcml2Owo+ID4gKyAgICAg dW5zaWduZWQgaW50IHJlZ3ZhbDsKPiA+ICsgICAgIHUzMiBsZXZlbDsKPiA+ICsgICAgIGludCBy ZXQ7Cj4gPiArCj4gPiArICAgICByZXQgPSByZWdtYXBfcmVhZChwcml2LT5yZWdtYXAsIE1UNjM2 MF9SRUdfSVNOSyhsZWQtPmxlZF9ubyksICZyZWd2YWwpOwo+ID4gKyAgICAgaWYgKHJldCkKPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsgICAgIGxldmVsID0gcmVndmFsICYgTVQ2 MzYwX0lTTktfTUFTSzsKPiA+ICsKPiA+ICsgICAgIHJldCA9IHJlZ21hcF9yZWFkKHByaXYtPnJl Z21hcCwgTVQ2MzYwX1JFR19SR0JFTiwgJnJlZ3ZhbCk7Cj4gPiArICAgICBpZiAocmV0KQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAgICAgaWYgKCEocmVndmFsICYg TVQ2MzYwX0lTTktfRU5NQVNLKGxlZC0+bGVkX25vKSkpCj4gPiArICAgICAgICAgICAgIGxldmVs ID0gTEVEX09GRjsKPiA+ICsKPiA+ICsgICAgIHN3aXRjaCAobGVkLT5kZWZhdWx0X3N0YXRlKSB7 Cj4gPiArICAgICBjYXNlIFNUQVRFX09OOgo+ID4gKyAgICAgICAgICAgICBsZWQtPmlzbmsuYnJp Z2h0bmVzcyA9IGxlZC0+aXNuay5tYXhfYnJpZ2h0bmVzczsKPiA+ICsgICAgICAgICAgICAgYnJl YWs7Cj4gPiArICAgICBjYXNlIFNUQVRFX0tFRVA6Cj4gPiArICAgICAgICAgICAgIGxlZC0+aXNu ay5icmlnaHRuZXNzID0gbWluKGxldmVsLCBsZWQtPmlzbmsubWF4X2JyaWdodG5lc3MpOwo+ID4g KyAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgIGRlZmF1bHQ6Cj4gPiArICAgICAgICAgICAg IGxlZC0+aXNuay5icmlnaHRuZXNzID0gTEVEX09GRjsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsg ICAgIHJldHVybiBtdDYzNjBfaXNua19icmlnaHRuZXNzX3NldCgmbGVkLT5pc25rLCBsZWQtPmlz bmsuYnJpZ2h0bmVzcyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX2ZsYXNo X2luaXRfZGVmYXVsdF9zdGF0ZShzdHJ1Y3QgbXQ2MzYwX2xlZCAqbGVkKQo+ID4gK3sKPiA+ICsg ICAgIHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZsYXNoID0gJmxlZC0+Zmxhc2g7Cj4gPiAr ICAgICBzdHJ1Y3QgbXQ2MzYwX3ByaXYgKnByaXYgPSBsZWQtPnByaXY7Cj4gPiArICAgICB1MzIg ZW5hYmxlX21hc2sgPSBNVDYzNjBfVE9SQ0hFTl9NQVNLIHwgTVQ2MzYwX0ZMQ1NFTl9NQVNLKGxl ZC0+bGVkX25vKTsKPiA+ICsgICAgIHUzMiBsZXZlbDsKPiA+ICsgICAgIHVuc2lnbmVkIGludCBy ZWd2YWw7Cj4gPiArICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgcmV0ID0gcmVnbWFwX3Jl YWQocHJpdi0+cmVnbWFwLCBNVDYzNjBfUkVHX0ZMRURJVE9SKGxlZC0+bGVkX25vKSwgJnJlZ3Zh bCk7Cj4gPiArICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4g KyAgICAgbGV2ZWwgPSByZWd2YWwgJiBNVDYzNjBfSVRPUkNIX01BU0s7Cj4gPiArCj4gPiArICAg ICByZXQgPSByZWdtYXBfcmVhZChwcml2LT5yZWdtYXAsIE1UNjM2MF9SRUdfRkxFREVOLCAmcmVn dmFsKTsKPiA+ICsgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g PiArCj4gPiArICAgICBpZiAoKHJlZ3ZhbCAmIGVuYWJsZV9tYXNrKSA9PSBlbmFibGVfbWFzaykK PiA+ICsgICAgICAgICAgICAgbGV2ZWwgKz0gMTsKPgo+IGxldmVsKysgZml0cyBiZXR0ZXIgaGVy ZS4KPgoKQUNLCgo+ID4gKyAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgICBsZXZlbCA9IExFRF9P RkY7Cj4gPiArCj4gPiArICAgICBzd2l0Y2ggKGxlZC0+ZGVmYXVsdF9zdGF0ZSkgewo+ID4gKyAg ICAgY2FzZSBTVEFURV9PTjoKPiA+ICsgICAgICAgICAgICAgZmxhc2gtPmxlZF9jZGV2LmJyaWdo dG5lc3MgPSBmbGFzaC0+bGVkX2NkZXYubWF4X2JyaWdodG5lc3M7Cj4gPiArICAgICAgICAgICAg IGJyZWFrOwo+ID4gKyAgICAgY2FzZSBTVEFURV9LRUVQOgo+ID4gKyAgICAgICAgICAgICBmbGFz aC0+bGVkX2NkZXYuYnJpZ2h0bmVzcyA9IG1pbihsZXZlbCwgZmxhc2gtPmxlZF9jZGV2Lm1heF9i cmlnaHRuZXNzKTsKPiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICBkZWZhdWx0Ogo+ ID4gKyAgICAgICAgICAgICBmbGFzaC0+bGVkX2NkZXYuYnJpZ2h0bmVzcyA9IExFRF9PRkY7Cj4g PiArICAgICB9Cj4gPiArCj4gPiArICAgICByZXR1cm4gbXQ2MzYwX3RvcmNoX2JyaWdodG5lc3Nf c2V0KCZmbGFzaC0+bGVkX2NkZXYsIGZsYXNoLT5sZWRfY2Rldi5icmlnaHRuZXNzKTsKPiA+ICt9 Cj4gPiArCj4gPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX1Y0TDJfRkxBU0hfTEVEX0NMQVNTKQo+ ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX2ZsYXNoX2V4dGVybmFsX3N0cm9iZV9zZXQoc3RydWN0IHY0 bDJfZmxhc2ggKnY0bDJfZmxhc2gsIGJvb2wgZW5hYmxlKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVj dCBsZWRfY2xhc3NkZXZfZmxhc2ggKmZsYXNoID0gdjRsMl9mbGFzaC0+ZmxlZF9jZGV2Owo+ID4g KyAgICAgc3RydWN0IG10NjM2MF9sZWQgKmxlZCA9IGNvbnRhaW5lcl9vZihmbGFzaCwgc3RydWN0 IG10NjM2MF9sZWQsIGZsYXNoKTsKPiA+ICsgICAgIHN0cnVjdCBtdDYzNjBfcHJpdiAqcHJpdiA9 IGxlZC0+cHJpdjsKPiA+ICsgICAgIHUzMiBtYXNrID0gTVQ2MzYwX0ZMQ1NFTl9NQVNLKGxlZC0+ bGVkX25vKTsKPiA+ICsgICAgIHUzMiB2YWwgPSBlbmFibGUgPyBtYXNrIDogMDsKPiA+ICsgICAg IGludCByZXQ7Cj4gPiArCj4gPiArICAgICByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+ cmVnbWFwLCBNVDYzNjBfUkVHX0ZMRURFTiwgbWFzaywgdmFsKTsKPiA+ICsgICAgIGlmIChyZXQp Cj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAgICBpZiAoZW5hYmxl KQo+ID4gKyAgICAgICAgICAgICBwcml2LT5mbGVkX3N0cm9iZV91c2VkIHw9IEJJVChsZWQtPmxl ZF9ubyk7Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIHByaXYtPmZsZWRfc3Ryb2Jl X3VzZWQgJj0gfkJJVChsZWQtPmxlZF9ubyk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZsYXNoX29wcyB2NGwyX2Zs YXNoX29wcyA9IHsKPiA+ICsgICAgIC5leHRlcm5hbF9zdHJvYmVfc2V0ID0gbXQ2MzYwX2ZsYXNo X2V4dGVybmFsX3N0cm9iZV9zZXQsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBtdDYz NjBfaW5pdF92NGwyX2NvbmZpZyhzdHJ1Y3QgbXQ2MzYwX2xlZCAqbGVkLCBzdHJ1Y3QgdjRsMl9m bGFzaF9jb25maWcgKmNvbmZpZykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgbGVkX2NsYXNzZGV2 ICpsY2RldjsKPiA+ICsgICAgIHN0cnVjdCBsZWRfZmxhc2hfc2V0dGluZyAqcyA9ICZjb25maWct PmludGVuc2l0eTsKPiA+ICsKPiA+ICsgICAgIHN3aXRjaCAobGVkLT5sZWRfbm8pIHsKPiA+ICsg ICAgIGNhc2UgTVQ2MzYwX0xFRF9JU05LMSAuLi4gTVQ2MzYwX0xFRF9JU05LNDoKPiA+ICsgICAg ICAgICAgICAgbGNkZXYgPSAmbGVkLT5pc25rOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAo bGVkLT5sZWRfbm8gPT0gTVQ2MzYwX0xFRF9JU05LNCkKPiA+ICsgICAgICAgICAgICAgICAgICAg ICBzLT5zdGVwID0gTVQ2MzYwX0lTTks0X1NURVBVQTsKPiA+ICsgICAgICAgICAgICAgZWxzZQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIHMtPnN0ZXAgPSBNVDYzNjBfSVNOSzFfU1RFUFVBOwo+ ID4gKwo+ID4gKyAgICAgICAgICAgICBzLT5taW4gPSAwOwo+ID4gKyAgICAgICAgICAgICBzLT52 YWwgPSBsY2Rldi0+YnJpZ2h0bmVzcyAqIHMtPnN0ZXA7Cj4gPiArICAgICAgICAgICAgIHMtPm1h eCA9IGxjZGV2LT5tYXhfYnJpZ2h0bmVzcyAqIHMtPnN0ZXA7Cj4gPiArICAgICAgICAgICAgIGJy ZWFrOwo+ID4gKyAgICAgZGVmYXVsdDoKPiA+ICsgICAgICAgICAgICAgbGNkZXYgPSAmbGVkLT5m bGFzaC5sZWRfY2RldjsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgcy0+bWluID0gTVQ2MzYwX0lU T1JDSF9NSU5VQTsKPiA+ICsgICAgICAgICAgICAgcy0+c3RlcCA9IE1UNjM2MF9JVE9SQ0hfU1RF UFVBOwo+ID4gKyAgICAgICAgICAgICBzLT52YWwgPSBzLT5tYXggPSBzLT5taW4gKyAobGNkZXYt Pm1heF9icmlnaHRuZXNzIC0gMSkgKiBzLT5zdGVwOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBj b25maWctPmhhc19leHRlcm5hbF9zdHJvYmUgPSAxOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAg ICAgc25wcmludGYoY29uZmlnLT5kZXZfbmFtZSwgc2l6ZW9mKGNvbmZpZy0+ZGV2X25hbWUpLCAi JXMiLCBsY2Rldi0+bmFtZSk7Cj4KPiBZb3UncmUgdXNpbmcgZGV2bV9sZWRfY2xhc3NkZXZfcmVn aXN0ZXJfZXh0KCkgc28gbGNkZXYtPm5hbWUgcmVtYWlucwo+IHVuaW5pdGlhbGl6ZWQsIGJ1dCBl dmVuIGlmIHlvdSB1c2VkIG5vbi1leHQgQVBJLCBpdCB3b3VsZG4ndCBuZWNlc3NhcnkKPiBjb250 YWluIHRoZSBmaW5hbCBMRUQgbmFtZSwgaWYgcmVuYW1pbmcgaGFkIG9jY3VycmVkLgo+Cj4gUGxl YXNlIHVzZSBiZWxvdyBpbnN0ZWFkOgo+Cj4gc3Ryc2NweShjb25maWctPmRldl9uYW1lLCBsY2Rl di0+ZGV2LT5rb2JqLm5hbWUsICBzaXplb2YoY29uZmlnLT5kZXZfbmFtZSkpOwo+Cj4KCkFDSwoK PiA+ICt9Cj4gPiArI2Vsc2UKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZmxhc2hfb3Bz IHY0bDJfZmxhc2hfb3BzOwo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIG10NjM2MF9pbml0X3Y0bDJf Y29uZmlnKHN0cnVjdCBtdDYzNjBfbGVkICpsZWQsIHN0cnVjdCB2NGwyX2ZsYXNoX2NvbmZpZyAq Y29uZmlnKQo+ID4gK3sKPiA+ICt9Cj4gPiArI2VuZGlmCj4gPiArCj4gPiArc3RhdGljIGludCBt dDYzNjBfbGVkX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKnBhcmVudCwgc3RydWN0IG10NjM2MF9s ZWQgKmxlZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsZWRfaW5p dF9kYXRhICppbml0X2RhdGEpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9wcml2ICpw cml2ID0gbGVkLT5wcml2Owo+ID4gKyAgICAgc3RydWN0IHY0bDJfZmxhc2hfY29uZmlnIHY0bDJf Y29uZmlnID0gezB9Owo+ID4gKyAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgIHN3aXRjaCAo bGVkLT5sZWRfbm8pIHsKPiA+ICsgICAgIGNhc2UgTVQ2MzYwX0xFRF9JU05LMSAuLi4gTVQ2MzYw X0xFRF9JU05LNDoKPiA+ICsgICAgICAgICAgICAgaWYgKGxlZC0+bGVkX25vID09IE1UNjM2MF9M RURfSVNOSzEpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAvKiBDaGFuZ2UgaXNpbmsxIHRv IFNXIGNvbnRyb2wgbW9kZSwgZGlzY29ubmVjdCBpdCB3aXRoIGNoYXJnZXIgc3RhdGUgKi8KPiA+ ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLCBNVDYzNjBfUkVHX1JHQkVOLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNVDYzNjBfQ0hSSU5EU0VMX01BU0ssIE1UNjM2MF9DSFJJTkRTRUxf TUFTSyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkgewo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihwYXJlbnQsICJGYWlsZWQgdG8gY29uZmlnIElT TksxIHRvIFNXIG1vZGVcbiIpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgIH0K PiA+ICsKPiA+ICsgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2lzbmtfaW5pdF9kZWZhdWx0X3N0 YXRlKGxlZCk7Cj4gPiArICAgICAgICAgICAgIGlmIChyZXQpIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZfZXJyKHBhcmVudCwgIkZhaWxlZCB0byBpbml0ICVkIGlzbmsgc3RhdGVcbiIs IGxlZC0+bGVkX25vKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4g KyAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgIHJldCA9IGRldm1fbGVkX2Ns YXNzZGV2X3JlZ2lzdGVyX2V4dChwYXJlbnQsICZsZWQtPmlzbmssIGluaXRfZGF0YSk7Cj4gPiAr ICAgICAgICAgICAgIGlmIChyZXQpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZXJy KHBhcmVudCwgIkNvdWxkbid0IHJlZ2lzdGVyIGlzaW5rICVkXG4iLCBsZWQtPmxlZF9ubyk7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsgICAgICAgICAgICAgfQo+ ID4gKwo+ID4gKyAgICAgICAgICAgICBtdDYzNjBfaW5pdF92NGwyX2NvbmZpZyhsZWQsICZ2NGwy X2NvbmZpZyk7Cj4gPiArICAgICAgICAgICAgIGxlZC0+djRsMl9mbGFzaCA9IHY0bDJfZmxhc2hf aW5kaWNhdG9yX2luaXQocGFyZW50LCBpbml0X2RhdGEtPmZ3bm9kZSwgJmxlZC0+aXNuaywKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdjRsMl9jb25maWcpOwo+ID4gKyAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgIGRlZmF1 bHQ6Cj4gPiArICAgICAgICAgICAgIHJldCA9IG10NjM2MF9mbGFzaF9pbml0X2RlZmF1bHRfc3Rh dGUobGVkKTsKPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkgewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGRldl9lcnIocGFyZW50LCAiRmFpbGVkIHRvIGluaXQgJWQgZmxhc2ggc3RhdGVcbiIs IGxlZC0+bGVkX25vKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4g KyAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgIHJldCA9IGRldm1fbGVkX2Ns YXNzZGV2X2ZsYXNoX3JlZ2lzdGVyX2V4dChwYXJlbnQsICZsZWQtPmZsYXNoLCBpbml0X2RhdGEp Owo+ID4gKyAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ZGV2X2VycihwYXJlbnQsICJDb3VsZG4ndCByZWdpc3RlciBmbGFzaCAlZFxuIiwgbGVkLT5sZWRf bm8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAgICAg ICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAgbXQ2MzYwX2luaXRfdjRsMl9jb25maWcobGVk LCAmdjRsMl9jb25maWcpOwo+ID4gKyAgICAgICAgICAgICBsZWQtPnY0bDJfZmxhc2ggPSB2NGwy X2ZsYXNoX2luaXQocGFyZW50LCBpbml0X2RhdGEtPmZ3bm9kZSwgJmxlZC0+Zmxhc2gsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdjRsMl9mbGFz aF9vcHMsICZ2NGwyX2NvbmZpZyk7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBpZiAoSVNf RVJSKGxlZC0+djRsMl9mbGFzaCkpIHsKPiA+ICsgICAgICAgICAgICAgZGV2X2VycihwYXJlbnQs ICJGYWlsZWQgdG8gcmVnaXN0ZXIgJWQgdjRsMiBzZFxuIiwgbGVkLT5sZWRfbm8pOwo+ID4gKyAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihsZWQtPnY0bDJfZmxhc2gpOwo+ID4gKyAgICAgfQo+ ID4gKwo+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB1MzIgY2xh bXBfYWxpZ24odTMyIHZhbCwgdTMyIG1pbiwgdTMyIG1heCwgdTMyIHN0ZXApCj4gPiArewo+ID4g KyAgICAgdTMyIHJldHZhbDsKPiA+ICsKPiA+ICsgICAgIHJldHZhbCA9IGNsYW1wX3ZhbCh2YWws IG1pbiwgbWF4KTsKPiA+ICsgICAgIGlmIChzdGVwID4gMSkKPiA+ICsgICAgICAgICAgICAgcmV0 dmFsID0gcm91bmRkb3duKHJldHZhbCAtIG1pbiwgc3RlcCkgKyBtaW47Cj4gPiArCj4gPiArICAg ICByZXR1cm4gcmV0dmFsOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IG10NjM2MF9pbml0 X2lzbmtfcHJvcGVydGllcyhzdHJ1Y3QgbXQ2MzYwX2xlZCAqbGVkLCBzdHJ1Y3QgbGVkX2luaXRf ZGF0YSAqaW5pdF9kYXRhKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBsZWRfY2xhc3NkZXYgKmlz bmsgPSAmbGVkLT5pc25rOwo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9wcml2ICpwcml2ID0gbGVk LT5wcml2Owo+ID4gKyAgICAgdTMyIHN0ZXBfdUEsIG1heF91QTsKPiA+ICsgICAgIHUzMiB2YWw7 Cj4gPiArICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgaWYgKGxlZC0+bGVkX25vID09IE1U NjM2MF9MRURfSVNOSzQpIHsKPiA+ICsgICAgICAgICAgICAgc3RlcF91QSA9IE1UNjM2MF9JU05L NF9TVEVQVUE7Cj4gPiArICAgICAgICAgICAgIG1heF91QSA9IE1UNjM2MF9JU05LNF9NQVhVQTsK PiA+ICsgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgIHN0ZXBfdUEgPSBNVDYzNjBfSVNO SzFfU1RFUFVBOwo+ID4gKyAgICAgICAgICAgICBtYXhfdUEgPSBNVDYzNjBfSVNOSzFfTUFYVUE7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICByZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91 MzIoaW5pdF9kYXRhLT5md25vZGUsICJsZWQtbWF4LW1pY3JvYW1wIiwgJnZhbCk7Cj4gPiArICAg ICBpZiAocmV0KSB7Cj4gPiArICAgICAgICAgICAgIGRldl93YXJuKHByaXYtPmRldiwgIk5vdCBz cGVjaWZpZWQgbGVkLW1heC1taWNyb2FtcCwgY29uZmlnIHRvIHRoZSBtaW5pbXVtIHN0ZXBcbiIp Owo+ID4gKyAgICAgICAgICAgICB2YWwgPSAxICogc3RlcF91QTsKPiA+ICsgICAgIH0gZWxzZQo+ ID4gKyAgICAgICAgICAgICB2YWwgPSBjbGFtcF9hbGlnbih2YWwsIDAsIG1heF91QSwgc3RlcF91 QSk7Cj4gPiArCj4gPiArICAgICBpc25rLT5tYXhfYnJpZ2h0bmVzcyA9IHZhbCAvIHN0ZXBfdUE7 Cj4gPiArICAgICBpc25rLT5icmlnaHRuZXNzX3NldF9ibG9ja2luZyA9IG10NjM2MF9pc25rX2Jy aWdodG5lc3Nfc2V0Owo+ID4gKwo+ID4gKyAgICAgZndub2RlX3Byb3BlcnR5X3JlYWRfc3RyaW5n KGluaXRfZGF0YS0+Zndub2RlLCAibGludXgsZGVmYXVsdC10cmlnZ2VyIiwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNuay0+ZGVmYXVsdF90cmlnZ2VyKTsKPiA+ICsK PiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IG10NjM2MF9p bml0X2ZsYXNoX3Byb3BlcnRpZXMoc3RydWN0IG10NjM2MF9sZWQgKmxlZCwgc3RydWN0IGxlZF9p bml0X2RhdGEgKmluaXRfZGF0YSkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgbGVkX2NsYXNzZGV2 X2ZsYXNoICpmbGFzaCA9ICZsZWQtPmZsYXNoOwo+ID4gKyAgICAgc3RydWN0IGxlZF9jbGFzc2Rl diAqbGNkZXYgPSAmZmxhc2gtPmxlZF9jZGV2Owo+ID4gKyAgICAgc3RydWN0IG10NjM2MF9wcml2 ICpwcml2ID0gbGVkLT5wcml2Owo+ID4gKyAgICAgc3RydWN0IGxlZF9mbGFzaF9zZXR0aW5nICpz Owo+ID4gKyAgICAgdTMyIHZhbDsKPiA+ICsgICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAgICBy ZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF91MzIoaW5pdF9kYXRhLT5md25vZGUsICJsZWQtbWF4 LW1pY3JvYW1wIiwgJnZhbCk7Cj4gPiArICAgICBpZiAocmV0KSB7Cj4gPiArICAgICAgICAgICAg IGRldl93YXJuKHByaXYtPmRldiwgIk5vdCBzcGVjaWZpZWQgbGVkLW1heC1taWNyb2FtcCwgY29u ZmlnIHRvIHRoZSBtaW5pbXVtXG4iKTsKPiA+ICsgICAgICAgICAgICAgdmFsID0gTVQ2MzYwX0lU T1JDSF9NSU5VQTsKPiA+ICsgICAgIH0gZWxzZQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBjbGFt cF9hbGlnbih2YWwsIE1UNjM2MF9JVE9SQ0hfTUlOVUEsIE1UNjM2MF9JVE9SQ0hfTUFYVUEsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UNjM2MF9JVE9SQ0hfU1RFUFVBKTsK PiA+ICsKPiA+ICsgICAgIGxjZGV2LT5tYXhfYnJpZ2h0bmVzcyA9ICh2YWwgLSBNVDYzNjBfSVRP UkNIX01JTlVBKSAvIE1UNjM2MF9JVE9SQ0hfU1RFUFVBICsgMTsKPiA+ICsgICAgIGxjZGV2LT5i cmlnaHRuZXNzX3NldF9ibG9ja2luZyA9IG10NjM2MF90b3JjaF9icmlnaHRuZXNzX3NldDsKPiA+ ICsgICAgIGxjZGV2LT5mbGFncyB8PSBMRURfREVWX0NBUF9GTEFTSDsKPiA+ICsKPiA+ICsgICAg IHJldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihpbml0X2RhdGEtPmZ3bm9kZSwgImZsYXNo LW1heC1taWNyb2FtcCIsICZ2YWwpOwo+ID4gKyAgICAgaWYgKHJldCkgewo+ID4gKyAgICAgICAg ICAgICBkZXZfd2Fybihwcml2LT5kZXYsICJOb3Qgc3BlY2lmaWVkIGZsYXNoLW1heC1taWNyb2Ft cCwgY29uZmlnIHRvIHRoZSBtaW5pbXVtXG4iKTsKPiA+ICsgICAgICAgICAgICAgdmFsID0gTVQ2 MzYwX0lTVFJCX01JTlVBOwo+ID4gKyAgICAgfSBlbHNlCj4gPiArICAgICAgICAgICAgIHZhbCA9 IGNsYW1wX2FsaWduKHZhbCwgTVQ2MzYwX0lTVFJCX01JTlVBLCBNVDYzNjBfSVNUUkJfTUFYVUEs IE1UNjM2MF9JU1RSQl9TVEVQVUEpOwo+ID4gKwo+ID4gKyAgICAgcyA9ICZmbGFzaC0+YnJpZ2h0 bmVzczsKPiA+ICsgICAgIHMtPm1pbiA9IE1UNjM2MF9JU1RSQl9NSU5VQTsKPiA+ICsgICAgIHMt PnN0ZXAgPSBNVDYzNjBfSVNUUkJfU1RFUFVBOwo+ID4gKyAgICAgcy0+dmFsID0gcy0+bWF4ID0g dmFsOwo+ID4gKwo+ID4gKyAgICAgLyogQWx3YXlzIGNvbmZpZ3VyZSBhcyBtaW4gbGV2ZWwgd2hl biBvZmYgdG8gcHJldmVudCBmbGFzaCBjdXJyZW50IHNwaWtlICovCj4gPiArICAgICByZXQgPSBf bXQ2MzYwX2ZsYXNoX2JyaWdodG5lc3Nfc2V0KGZsYXNoLCBzLT5taW4pOwo+ID4gKyAgICAgaWYg KHJldCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgIHJldCA9 IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihpbml0X2RhdGEtPmZ3bm9kZSwgImZsYXNoLW1heC10 aW1lb3V0LXVzIiwgJnZhbCk7Cj4gPiArICAgICBpZiAocmV0KSB7Cj4gPiArICAgICAgICAgICAg IGRldl93YXJuKHByaXYtPmRldiwgIk5vdCBzcGVjaWZpZWQgZmxhc2gtbWF4LXRpbWVvdXQtdXMs IGNvbmZpZyB0byB0aGUgbWluaW11bVxuIik7Cj4gPiArICAgICAgICAgICAgIHZhbCA9IE1UNjM2 MF9TVFJCVE9fTUlOVVM7Cj4gPiArICAgICB9IGVsc2UKPiA+ICsgICAgICAgICAgICAgdmFsID0g Y2xhbXBfYWxpZ24odmFsLCBNVDYzNjBfU1RSQlRPX01JTlVTLCBNVDYzNjBfU1RSQlRPX01BWFVT LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVDYzNjBfU1RSQlRPX1NURVBV Uyk7Cj4gPiArCj4gPiArICAgICBzID0gJmZsYXNoLT50aW1lb3V0Owo+ID4gKyAgICAgcy0+bWlu ID0gTVQ2MzYwX1NUUkJUT19NSU5VUzsKPiA+ICsgICAgIHMtPnN0ZXAgPSBNVDYzNjBfU1RSQlRP X1NURVBVUzsKPiA+ICsgICAgIHMtPnZhbCA9IHMtPm1heCA9IHZhbDsKPiA+ICsKPiA+ICsgICAg IGZsYXNoLT5vcHMgPSAmbXQ2MzYwX2ZsYXNoX29wczsKPiA+ICsKPiA+ICsgICAgIHJldHVybiAw Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IG10NjM2MF9pbml0X2NvbW1vbl9wcm9wZXJ0 aWVzKHN0cnVjdCBtdDYzNjBfbGVkICpsZWQsIHN0cnVjdCBsZWRfaW5pdF9kYXRhICppbml0X2Rh dGEpCj4gPiArewo+ID4gKyAgICAgY29uc3QgY2hhciAqIGNvbnN0IHN0YXRlc1tdID0geyAib2Zm IiwgImtlZXAiLCAib24iIH07Cj4gPiArICAgICBjb25zdCBjaGFyICpzdHI7Cj4gPiArICAgICBp bnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgaWYgKCFmd25vZGVfcHJvcGVydHlfcmVhZF9zdHJpbmco aW5pdF9kYXRhLT5md25vZGUsICJkZWZhdWx0LXN0YXRlIiwgJnN0cikpIHsKPiA+ICsgICAgICAg ICAgICAgcmV0ID0gbWF0Y2hfc3RyaW5nKHN0YXRlcywgQVJSQVlfU0laRShzdGF0ZXMpLCBzdHIp Owo+ID4gKyAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICAgICAgICAg ICByZXQgPSBTVEFURV9PRkY7Cj4gPiArCj4gPiArICAgICAgICAgICAgIGxlZC0+ZGVmYXVsdF9z dGF0ZSA9IHJldDsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBtdDYzNjBfdjRsMl9mbGFzaF9yZWxlYXNlKHN0cnVjdCBt dDYzNjBfcHJpdiAqcHJpdikKPiA+ICt7Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAg IGZvciAoaSA9IDA7IGkgPCBwcml2LT5sZWRzX2NvdW50OyBpKyspIHsKPiA+ICsgICAgICAgICAg ICAgc3RydWN0IG10NjM2MF9sZWQgKmxlZCA9IHByaXYtPmxlZHMgKyBpOwo+ID4gKwo+ID4gKyAg ICAgICAgICAgICBpZiAobGVkLT52NGwyX2ZsYXNoKQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IHY0bDJfZmxhc2hfcmVsZWFzZShsZWQtPnY0bDJfZmxhc2gpOwo+ID4gKwo+ID4gKyAgICAgfQo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IG10NjM2MF9sZWRfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgbXQ2MzYwX3ByaXYgKnBy aXY7Cj4gPiArICAgICBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQ7Cj4gPiArICAgICBzaXpl X3QgY291bnQ7Cj4gPiArICAgICBpbnQgaSA9IDAsIHJldDsKPiA+ICsKPiA+ICsgICAgIGNvdW50 ID0gZGV2aWNlX2dldF9jaGlsZF9ub2RlX2NvdW50KCZwZGV2LT5kZXYpOwo+ID4gKyAgICAgaWYg KCFjb3VudCB8fCBjb3VudCA+IE1UNjM2MF9NQVhfTEVEUykKPgo+IFBsZWFzZSBhZGQgZGV2X2Vy cigpIGhlcmUuCj4KCmRldl9lcnIoJnBkZXYtPmRldiwgIk5vIGNoaWxkIG5vZGUgb3Igbm9kZSBj b3VudCBvdmVyIG1heCBsZWQgbnVtYmVyCiVkXG4iLCBjb3VudCk7Cgo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgIHByaXYgPSBkZXZtX2t6YWxsb2MoJnBk ZXYtPmRldiwgc3RydWN0X3NpemUocHJpdiwgbGVkcywgY291bnQpLCBHRlBfS0VSTkVMKTsKPiA+ ICsgICAgIGlmICghcHJpdikKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiAr Cj4gPiArICAgICBwcml2LT5sZWRzX2NvdW50ID0gY291bnQ7Cj4gPiArICAgICBwcml2LT5kZXYg PSAmcGRldi0+ZGV2Owo+ID4gKwo+ID4gKyAgICAgcHJpdi0+cmVnbWFwID0gZGV2X2dldF9yZWdt YXAocGRldi0+ZGV2LnBhcmVudCwgTlVMTCk7Cj4gPiArICAgICBpZiAoIXByaXYtPnJlZ21hcCkg ewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IHBh cmVudCByZWdtYXBcbiIpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiA+ICsg ICAgIH0KPiA+ICsKPiA+ICsgICAgIGRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlKCZwZGV2LT5k ZXYsIGNoaWxkKSB7Cj4gPiArICAgICAgICAgICAgIHN0cnVjdCBtdDYzNjBfbGVkICpsZWQgPSBw cml2LT5sZWRzICsgaTsKPiA+ICsgICAgICAgICAgICAgc3RydWN0IGxlZF9pbml0X2RhdGEgaW5p dF9kYXRhID0geyAuZndub2RlID0gY2hpbGQsIH07Cj4gPiArICAgICAgICAgICAgIHUzMiByZWc7 Cj4gPiArCj4gPiArICAgICAgICAgICAgIHJldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihj aGlsZCwgInJlZyIsICZyZWcpOwo+ID4gKyAgICAgICAgICAgICBpZiAocmV0KQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGdvdG8gb3V0X2ZsYXNoX3JlbGVhc2U7Cj4gPiArCj4gPiArICAgICAg ICAgICAgIGlmIChyZWcgPj0gTVQ2MzYwX01BWF9MRURTIHx8IHByaXYtPmxlZHNfYWN0aXZlICYg QklUKHJlZykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiAr ICAgICAgICAgICAgIHByaXYtPmxlZHNfYWN0aXZlIHw9IEJJVChyZWcpOwo+ID4gKwo+ID4gKyAg ICAgICAgICAgICBsZWQtPmxlZF9ubyA9IHJlZzsKPiA+ICsgICAgICAgICAgICAgbGVkLT5wcml2 ID0gcHJpdjsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2luaXRfY29tbW9u X3Byb3BlcnRpZXMobGVkLCAmaW5pdF9kYXRhKTsKPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkK PiA+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9mbGFzaF9yZWxlYXNlOwo+ID4gKwo+ ID4gKyAgICAgICAgICAgICBzd2l0Y2ggKHJlZykgewo+ID4gKyAgICAgICAgICAgICBjYXNlIE1U NjM2MF9MRURfSVNOSzEgLi4uIE1UNjM2MF9MRURfSVNOSzQ6Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gbXQ2MzYwX2luaXRfaXNua19wcm9wZXJ0aWVzKGxlZCwgJmluaXRfZGF0YSk7 Cj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICAgICAgIGRlZmF1 bHQ6Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2luaXRfZmxhc2hfcHJv cGVydGllcyhsZWQsICZpbml0X2RhdGEpOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiArCj4gPiAr ICAgICAgICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRf Zmxhc2hfcmVsZWFzZTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgcmV0ID0gbXQ2MzYwX2xlZF9y ZWdpc3RlcigmcGRldi0+ZGV2LCBsZWQsICZpbml0X2RhdGEpOwo+ID4gKyAgICAgICAgICAgICBp ZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X2ZsYXNoX3JlbGVhc2U7 Cj4gPiArCj4gPiArICAgICAgICAgICAgIGkrKzsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAg IHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpOwo+ID4gKyAgICAgcmV0dXJuIDA7Cj4g PiArCj4gPiArb3V0X2ZsYXNoX3JlbGVhc2U6Cj4gPiArICAgICBtdDYzNjBfdjRsMl9mbGFzaF9y ZWxlYXNlKHByaXYpOwo+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3Rh dGljIGludCBtdDYzNjBfbGVkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBtdDYzNjBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9k cnZkYXRhKHBkZXYpOwo+ID4gKwo+ID4gKyAgICAgbXQ2MzYwX3Y0bDJfZmxhc2hfcmVsZWFzZShw cml2KTsKPiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtdDYzNjBfbGVkX29mX2lkW10gPSB7 Cj4gPiArICAgICB7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjM2MC1sZWQiLCB9LAo+ID4g KyAgICAge30KPiA+ICt9Owo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NjM2MF9sZWRf b2ZfaWQpOwo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10NjM2MF9s ZWRfZHJpdmVyID0gewo+ID4gKyAgICAgLmRyaXZlciA9IHsKPiA+ICsgICAgICAgICAgICAgLm5h bWUgPSAibXQ2MzYwLWxlZCIsCj4gPiArICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IG10 NjM2MF9sZWRfb2ZfaWQsCj4gPiArICAgICB9LAo+ID4gKyAgICAgLnByb2JlID0gbXQ2MzYwX2xl ZF9wcm9iZSwKPiA+ICsgICAgIC5yZW1vdmUgPSBtdDYzNjBfbGVkX3JlbW92ZSwKPiA+ICt9Owo+ ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXQ2MzYwX2xlZF9kcml2ZXIpOwo+ID4gKwo+ID4g K01PRFVMRV9BVVRIT1IoIkdlbmUgQ2hlbiA8Z2VuZV9jaGVuQHJpY2h0ZWsuY29tPiIpOwo+ID4g K01PRFVMRV9ERVNDUklQVElPTigiTVQ2MzYwIExFRCBEcml2ZXIiKTsKPiA+ICtNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7Cj4gPgo+Cj4gLS0KPiBCZXN0IHJlZ2FyZHMsCj4gSmFjZWsgQW5hc3pl d3NraQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXgtbWVkaWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRp YXRlawo=