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=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32069C2B9F4 for ; Sat, 19 Jun 2021 19:54:56 +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 C6C3D610A1 for ; Sat, 19 Jun 2021 19:54:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6C3D610A1 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sholland.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:Subject:From:References:Cc:To:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=sZZOndRGR3JJnzf0NOiImPfSI4EvC4vf3C+RgdJYGzc=; b=ElrIDX0TYEoWtwXqgAOawYzx9E fhZ4UHFO9U7219qHkYaZFK3q5qxB9oMUIzXeVa8cT+ZpT0MyLrX2wSs6UJ+KeyFQfi2u/55Ls6pTZ 00+1vnd2iD9jwPHwglVjI5EyMGRUL2+40JHmTj+xfEZX6wP5CXZznsIzGdjBKxRPOFgX7at+NUuqZ yg+GCQp3dY6EDNdl1Mshn7uhj1p1LVSOHB3F9AIVDg3xcx5p1OKh08n22P/3okzcyvl+Umb9GXiGI eG+1VrFc4E1azRGBW6ADyEDHQ1QEzZGYMxqoNdnDHmkM+mx/zDDZxjD5x54QwgmSxJgQWkOvcEDdQ OpL4iGiw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1luh1I-00HW3W-55; Sat, 19 Jun 2021 19:52:44 +0000 Received: from wnew3-smtp.messagingengine.com ([64.147.123.17]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1luh1C-00HW2s-VG for linux-arm-kernel@lists.infradead.org; Sat, 19 Jun 2021 19:52:41 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.west.internal (Postfix) with ESMTP id B0ED91414; Sat, 19 Jun 2021 15:52:30 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Sat, 19 Jun 2021 15:52:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= to:cc:references:from:subject:message-id:date:mime-version :in-reply-to:content-type:content-transfer-encoding; s=fm3; bh=B OKXUwoUdshth40cRhUhwAHqs/93mVTPn01/eBhAFeQ=; b=tpzvjyDMveu2ziQtQ WH1Gdgtrlja7+4eyP29OVjR0f11yecyvoPma7Q4yTEpGrFup5rXnzCJWjsiBXrJD /WyIY1JBBTNJHAJdmCSmyoF1lb+yUWYQxMaStmc38uCty16wiY+JIwAq7Fck/oiy Tl96DXTCALJcFy5QrVt5yrfANPAV2gxAdEStToTgXeEb5KQ6yIWf5B9tQZPDaVbh tIowa38Y0QFC5rzZEB9p40PO6HmUmRrmP+mj6aB7V9/gtUTl+elFqqrbkVFSNYs2 6mIGsIl7GtgmYPZSoA1eXFLoucKrkCx7VmasMueXlhgo5N+wl2keJNT9Mxxtnc34 4912g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; bh=BOKXUwoUdshth40cRhUhwAHqs/93mVTPn01/eBhAF eQ=; b=X+pB+7jYt3nqngS3ZtUBtK5vcHqpwSv0sXVbLdhiEyigKGws1kgfg4FU+ R+04dFAv+S6Sgi/FL83kuWLBhzTh9/0TONKgokrLywCnGrOXTqswBsDgtWFEqAB3 v4t8AbP/ZatpaVu6g0yAV/OgJIksckqxpIDSSw/JO0IslBnsJFvmjLkaFf+m9S3j im9/EXUkLlhXub+rytRBGWs3TOzYMMMnVcmQof6WvCbHrk5lemHNboMs6U/AVzUp FdzGYIYv3Utgg94v3lNB5RGj+PTRbIHPvYY7m5IMhyjZmw1i28VvCq9Npg/bYLnE P7hGp2L1thmTkZCoP1B4LaFZiXmPQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfeefiedgtdduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefvfhfhuffkffgfgggjtgfgsehtke ertddtfeejnecuhfhrohhmpefurghmuhgvlhcujfholhhlrghnugcuoehsrghmuhgvlhes shhhohhllhgrnhgurdhorhhgqeenucggtffrrghtthgvrhhnpedvtddtjeeiuddugfffve etkeffgeffgedutdfgfeekudevudekffehtdefveeuvdenucevlhhushhtvghrufhiiigv pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehsrghmuhgvlhesshhhohhllhgrnhgurd horhhg X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 19 Jun 2021 15:52:28 -0400 (EDT) To: =?UTF-8?B?54+t5rab?= Cc: lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, mripard@kernel.org, wens@csie.org, jernej.skrabec@gmail.com, p.zabel@pengutronix.de, krzk@kernel.org, linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev References: <20210615130326.2044-1-fengzheng923@gmail.com> <8fa2cd5b-b7b0-f39f-2c97-a8a839642fc2@sholland.org> From: Samuel Holland Subject: Re: [PATCH 1/2] ASoC: sunxi: Add Allwinner H6 Digital MIC driver Message-ID: <68482244-aec8-db57-3b87-7099cbc219d6@sholland.org> Date: Sat, 19 Jun 2021 14:52:27 -0500 User-Agent: Mozilla/5.0 (X11; Linux ppc64; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210619_125239_251499_47EE95CC X-CRM114-Status: GOOD ( 29.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gNi8xNi8yMSAxOjIxIEFNLCDnj63mtpsgd3JvdGU6Cj4gSGnvvIwKPiAKPiBTYW11ZWwgSG9s bGFuZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4g5LqOMjAyMeW5tDbmnIgxNuaXpeWRqOS4iSDkuIrl jYgxMTowNuWGmemBk++8mgo+IAo+PiBIZWxsbywKPj4KPj4gT24gNi8xNS8yMSA4OjAzIEFNLCBC YW4gVGFvIHdyb3RlOgo+Pj4gVGhlIEFsbHdpbm5lciBINiBhbmQgbGF0ZXIgU29DcyBoYXZlIGFu IERNSUMgYmxvY2sKPj4+IHdoaWNoIGlzIGNhcGFibGUgb2YgY2FwdHVyZS4KPj4+Cj4+PiBTaWdu ZWQtb2ZmLWJ5OiBCYW4gVGFvIDxmZW5nemhlbmc5MjNAZ21haWwuY29tPgo+Pj4gLS0tCj4+PiAg TUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgfCAgIDcgKwo+Pj4gIHNvdW5kL3NvYy9zdW54 aS9LY29uZmlnICAgICAgIHwgICA4ICsKPj4+ICBzb3VuZC9zb2Mvc3VueGkvTWFrZWZpbGUgICAg ICB8ICAgMSArCj4+PiAgc291bmQvc29jL3N1bnhpL3N1bjUwaS1kbWljLmMgfCA0MDggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gIDQgZmlsZXMgY2hhbmdlZCwgNDI0IGlu c2VydGlvbnMoKykKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3N1bnhpL3N1bjUw aS1kbWljLmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwo+ Pj4gaW5kZXggYjQwOTRmMDcyMTRlLi4xYjg3MjI1YzM5YjAgMTAwNjQ0Cj4+PiAtLS0gYS9NQUlO VEFJTkVSUwo+Pj4gKysrIGIvTUFJTlRBSU5FUlMKPj4+IEBAIC03NjAsNiArNzYwLDEzIEBAIEw6 ICAgICAgIGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwo+Pj4gIFM6ICAgTWFpbnRhaW5lZAo+ Pj4gIEY6ICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL2NlZHJ1cy8KPj4+Cj4+PiArQUxM V0lOTkVSIERNSUMgRFJJVkVSUwo+Pj4gK006ICAgQmFuIFRhbyA8ZmVuZ3poZW5nOTIzQGdtYWls LmNvbT4KPj4+ICtMOiAgIGFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGZv ciBub24tc3Vic2NyaWJlcnMpCj4+PiArUzogICBNYWludGFpbmVkCj4+PiArRjoKPj4gIERvY3Vt ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hbGx3aW5uZXIsc3VuNTBpLWg2LWRt aWMueWFtbAo+Pj4gK0Y6ICAgc291bmQvc29jL3N1bnhpL3N1bjUwaS1kbWljLmMKPj4+ICsKPj4+ ICBBTFBIQSBQT1JUCj4+PiAgTTogICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0 Pgo+Pj4gIE06ICAgSXZhbiBLb2tzaGF5c2t5IDxpbmtAanVyYXNzaWMucGFyay5tc3UucnU+Cj4+ PiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL3N1bnhpL0tjb25maWcgYi9zb3VuZC9zb2Mvc3VueGkv S2NvbmZpZwo+Pj4gaW5kZXggZGRjYWFhOThkM2NiLi4yYTNiZjc3MjJlMTEgMTAwNjQ0Cj4+PiAt LS0gYS9zb3VuZC9zb2Mvc3VueGkvS2NvbmZpZwo+Pj4gKysrIGIvc291bmQvc29jL3N1bnhpL0tj b25maWcKPj4+IEBAIC01Niw2ICs1NiwxNCBAQCBjb25maWcgU05EX1NVTjRJX1NQRElGCj4+PiAg ICAgICAgIFNheSBZIG9yIE0gdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBTL1BESUYgYXVkaW8gYmxv Y2sgaW4gdGhlCj4+IEFsbHdpbm5lcgo+Pj4gICAgICAgICBBMTAgYW5kIGFmZmlsaWF0ZWQgU29D cy4KPj4+Cj4+PiArY29uZmlnIFNORF9TVU41MElfRE1JQwo+Pj4gKyAgICAgdHJpc3RhdGUgIkFs bHdpbm5lciBINiBETUlDIFN1cHBvcnQiCj4+PiArICAgICBkZXBlbmRzIG9uIChPRiAmJiBBUkNI X1NVTlhJKSB8fCBDT01QSUxFX1RFU1QKPj4+ICsgICAgIHNlbGVjdCBTTkRfU09DX0dFTkVSSUNf RE1BRU5HSU5FX1BDTQo+Pj4gKyAgICAgaGVscAo+Pj4gKyAgICAgICBTYXkgWSBvciBNIHRvIGFk ZCBzdXBwb3J0IGZvciB0aGUgRE1JQyBhdWRpbyBibG9jayBpbiB0aGUKPj4gQWxsd2lubmVyCj4+ PiArICAgICAgIEg2IGFuZCBhZmZpbGlhdGVkIFNvQ3MuCj4+PiArCj4+PiAgY29uZmlnIFNORF9T VU44SV9BRERBX1BSX1JFR01BUAo+Pj4gICAgICAgdHJpc3RhdGUKPj4+ICAgICAgIHNlbGVjdCBS RUdNQVAKPj4+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc3VueGkvTWFrZWZpbGUgYi9zb3VuZC9z b2Mvc3VueGkvTWFrZWZpbGUKPj4+IGluZGV4IGE4NmJlMzQwYTA3Ni4uNDQ4M2ZlOWM5NGVmIDEw MDY0NAo+Pj4gLS0tIGEvc291bmQvc29jL3N1bnhpL01ha2VmaWxlCj4+PiArKysgYi9zb3VuZC9z b2Mvc3VueGkvTWFrZWZpbGUKPj4+IEBAIC02LDMgKzYsNCBAQCBvYmotJChDT05GSUdfU05EX1NV TjhJX0NPREVDX0FOQUxPRykgKz0KPj4gc3VuOGktY29kZWMtYW5hbG9nLm8KPj4+ICBvYmotJChD T05GSUdfU05EX1NVTjUwSV9DT0RFQ19BTkFMT0cpICs9IHN1bjUwaS1jb2RlYy1hbmFsb2cubwo+ Pj4gIG9iai0kKENPTkZJR19TTkRfU1VOOElfQ09ERUMpICs9IHN1bjhpLWNvZGVjLm8KPj4+ICBv YmotJChDT05GSUdfU05EX1NVTjhJX0FEREFfUFJfUkVHTUFQKSArPSBzdW44aS1hZGRhLXByLXJl Z21hcC5vCj4+PiArb2JqLSQoQ09ORklHX1NORF9TVU41MElfRE1JQykgKz0gc3VuNTBpLWRtaWMu bwo+Pj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zdW54aS9zdW41MGktZG1pYy5jCj4+IGIvc291 bmQvc29jL3N1bnhpL3N1bjUwaS1kbWljLmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjc4ZDUxMmQ5Mzk3NAo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysr IGIvc291bmQvc29jL3N1bnhpL3N1bjUwaS1kbWljLmMKPj4+IEBAIC0wLDAgKzEsNDA4IEBACj4+ PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPj4+ICsvKgo+ Pj4gKyAqIEFMU0EgU29DIERNSUMgQXVkaW8gTGF5ZXIKPj4+ICsgKgo+Pj4gKyAqIENvcHlyaWdo dCAyMDIxIEJhbiBUYW8gPGZlbmd6aGVuZzkyM0BnbWFpbC5jb20+Cj4+PiArICoKPj4+ICsgKi8K Pj4+ICsKPj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2Rl dmljZS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4+ICsjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ Pj4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L3Jl c2V0Lmg+Cj4+PiArI2luY2x1ZGUgPHNvdW5kL2RtYWVuZ2luZV9wY20uaD4KPj4+ICsjaW5jbHVk ZSA8c291bmQvcGNtX3BhcmFtcy5oPgo+Pj4gKyNpbmNsdWRlIDxzb3VuZC9zb2MuaD4KPj4+ICsK Pj4+ICsKPj4+ICsjZGVmaW5lIFNVTjUwSV9ETUlDX0VOX0NUTCAgICAgICAgICAgKDB4MDApCj4+ PiArICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX0VOX0NUTF9HTE9CRSAgICAgICAgICAgICAgICAg ICAgICAgIEJJVCg4KQo+Pj4gKyAgICAgI2RlZmluZSBTVU41MElfRE1JQ19FTl9DVExfQ0hBTih2 KSAgICAgICAgICAgICAgKCh2KSA8PCAwKQo+Pj4gKyAgICAgI2RlZmluZSBTVU41MElfRE1JQ19F Tl9DVExfQ0hBTl9NQVNLICAgICAgICAgICAgR0VOTUFTSyg3LCAwKQo+Pj4gKyNkZWZpbmUgU1VO NTBJX0RNSUNfU1IgICAgICAgICAgICAgICAgICAgICAgICgweDA0KQo+Pj4gKyAgICAgI2RlZmlu ZSBTVU41MElfRE1JQ19TUl9TQU1PTEVfUkFURSh2KSAgICAgICAgICAgKCh2KSA8PCAwKQo+Pj4g KyAgICAgI2RlZmluZSBTVU41MElfRE1JQ19TUl9TQU1PTEVfUkFURV9NQVNLICAgICAgICAgR0VO TUFTSygyLCAwKQo+Pj4gKyNkZWZpbmUgU1VONTBJX0RNSUNfQ1RMICAgICAgICAgICAgICAgICAg ICAgICgweDA4KQo+Pj4gKyAgICAgI2RlZmluZSBTVU41MElfRE1JQ19DVExfT1ZFUlNBTVBMRV9S QVRFICAgICAgICAgQklUKDApCj4+PiArI2RlZmluZSBTVU41MElfRE1JQ19EQVRBICAgICAgICAg ICAgICAgICAgICAgKDB4MTApCj4+PiArI2RlZmluZSBTVU41MElfRE1JQ19JTlRDICAgICAgICAg ICAgICAgICAgICAgKDB4MTQpCj4+PiArICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX0ZJRk9fRFJR X0VOICAgICAgICAgICAgICAgICBCSVQoMikKPj4+ICsjZGVmaW5lIFNVTjUwSV9ETUlDX0lOVF9T VEEgICAgICAgICAgKDB4MTgpCj4+PiArICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX0lOVF9TVEFf T1ZFUlJVTl9JUlFfUEVORElORyBCSVQoMSkKPj4+ICsgICAgICNkZWZpbmUgU1VONTBJX0RNSUNf SU5UX1NUQV9EQVRBX0lSUV9QRU5ESU5HICAgIEJJVCgwKQo+Pj4gKyNkZWZpbmUgU1VONTBJX0RN SUNfUlhGSUZPX0NUTCAgICAgICAgICAgICAgICgweDFjKQo+Pj4gKyAgICAgI2RlZmluZSBTVU41 MElfRE1JQ19SWEZJRk9fQ1RMX0ZMVVNIICAgICAgICAgICAgQklUKDMxKQo+Pj4gKyAgICAgI2Rl ZmluZSBTVU41MElfRE1JQ19SWEZJRk9fQ1RMX01PREUgICAgICAgICAgICAgQklUKDkpCj4+PiAr ICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX1JYRklGT19DVExfUkVTT0xVVElPTiAgICAgICBCSVQo OCkKPj4+ICsjZGVmaW5lIFNVTjUwSV9ETUlDX0NIX05VTSAgICAgICAgICAgKDB4MjQpCj4+PiAr ICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX0NIX05VTV9OKHYpICAgICAgICAgICAgICAgICAoKHYp IDw8IDApCj4+PiArICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX0NIX05VTV9OX01BU0sgICAgICAg ICAgICAgICBHRU5NQVNLKDIsIDApCj4+PiArI2RlZmluZSBTVU41MElfRE1JQ19DTlQgICAgICAg ICAgICAgICAgICAgICAgKDB4MmMpCj4+PiArICAgICAjZGVmaW5lIFNVTjUwSV9ETUlDX0NOVF9O ICAgICAgICAgICAgICAgICAgICAgICBCSVQoMCkKPj4+ICsjZGVmaW5lIFNVTjUwSV9ETUlDX0hQ Rl9DVFJMICAgICAgICAgKDB4MzgpCj4+PiArI2RlZmluZSBTVU41MElfRE1JQ19WRVJTSU9OICAg ICAgICAgICgweDUwKQo+Pj4gKwo+Pj4gKwo+Pj4gK3N0cnVjdCBzdW41MGlfZG1pY19kZXYgewo+ Pj4gKyAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPj4+ICsgICAgIHN0cnVjdCBj bGsgKmRtaWNfY2xrOwo+Pj4gKyAgICAgc3RydWN0IGNsayAqYXBiX2NsazsKPj4+ICsgICAgIHN0 cnVjdCByZXNldF9jb250cm9sICpyc3Q7Cj4+PiArICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7 Cj4+PiArICAgICBzdHJ1Y3Qgc25kX2RtYWVuZ2luZV9kYWlfZG1hX2RhdGEgZG1hX3BhcmFtc19y eDsKPj4+ICsgICAgIHVuc2lnbmVkIGludCBjaGFuX2VuOwo+Pj4gK307Cj4+PiArCj4+PiArc3Ry dWN0IGRtaWNfcmF0ZSB7Cj4+PiArICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlcmF0ZTsKPj4+ICsg ICAgIHVuc2lnbmVkIGludCByYXRlX2JpdDsKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lk IHN1bjUwaV9zbmRfcnhjdHJsX2VuYWJsZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0KPj4gKnN1 YnN0cmVhbSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Vu NTBpX2RtaWNfZGV2ICpob3N0LCBib29sCj4+IGVuYWJsZSkKPj4+ICt7Cj4+PiArICAgICBpZiAo ZW5hYmxlKSB7Cj4+PiArICAgICAgICAgICAgIC8qIERSUSBFTkFCTEUgKi8KPj4+ICsgICAgICAg ICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGhvc3QtPnJlZ21hcCwgU1VONTBJX0RNSUNfSU5UQywK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVTjUwSV9ETUlDX0ZJRk9fRFJR X0VOLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfRklG T19EUlFfRU4pOwo+Pj4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVn bWFwLCBTVU41MElfRE1JQ19FTl9DVEwsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTVU41MElfRE1JQ19FTl9DVExfQ0hBTl9NQVNLLAo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfRU5fQ1RMX0NIQU4oaG9zdC0+Y2hhbl9lbikpOwo+ Pj4gKyAgICAgICAgICAgICAvKiBHbG9iYWwgZW5hYmxlICovCj4+PiArICAgICAgICAgICAgIHJl Z21hcF91cGRhdGVfYml0cyhob3N0LT5yZWdtYXAsIFNVTjUwSV9ETUlDX0VOX0NUTCwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVTjUwSV9ETUlDX0VOX0NUTF9HTE9CRSwK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVTjUwSV9ETUlDX0VOX0NUTF9H TE9CRSk7Cj4+PiArICAgICB9IGVsc2Ugewo+Pj4gKyAgICAgICAgICAgICAvKiBEUlEgRElTQUJM RSAqLwo+Pj4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBT VU41MElfRE1JQ19JTlRDLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VO NTBJX0RNSUNfRklGT19EUlFfRU4sIDApOwo+Pj4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRl X2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1JQ19FTl9DVEwsCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTVU41MElfRE1JQ19FTl9DVExfQ0hBTl9NQVNLLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfRU5fQ1RMX0NIQU4oMCkp Owo+Pj4gKyAgICAgICAgICAgICAvKiBHbG9iYWwgZGlzYWJsZSAqLwo+Pj4gKyAgICAgICAgICAg ICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1JQ19FTl9DVEwsCj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVU41MElfRE1JQ19FTl9DVExfR0xP QkUsIDApOwo+Pj4gKyAgICAgfQo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IHN1bjUwaV9k bWljX3N0YXJ0dXAoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSkKPj4+ ICt7Cj4+PiArICAgICBzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFt LT5wcml2YXRlX2RhdGE7Cj4+PiArICAgICBzdHJ1Y3Qgc3VuNTBpX2RtaWNfZGV2ICpob3N0ID0K Pj4gc25kX3NvY19kYWlfZ2V0X2RydmRhdGEocnRkLT5jcHVfZGFpKTsKPj4KPj4gVGhpcyBpcyBl cXVpdmFsZW50IHRvIHRoZSBzaW1wbGVyIGNvZGUgeW91IHVzZSBiZWxvdzoKPj4KPj4gc3RydWN0 IHN1bjUwaV9kbWljX2RldiAqaG9zdCA9IHNuZF9zb2NfZGFpX2dldF9kcnZkYXRhKGNwdV9kYWkp Owo+Pgo+Pj4gKwo+Pj4gKyAgICAgLyogb25seSBzdXBwb3J0IGNhcHR1cmUgKi8KPj4+ICsgICAg IGlmIChzdWJzdHJlYW0tPnN0cmVhbSAhPSBTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUpCj4+PiAr ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICAgcmVnbWFwX3dyaXRl KGhvc3QtPnJlZ21hcCwgU1VONTBJX0RNSUNfSU5UX1NUQSwKPj4+ICsgICAgICAgICAgICAgICAg ICBTVU41MElfRE1JQ19JTlRfU1RBX09WRVJSVU5fSVJRX1BFTkRJTkcgfAo+Pj4gKyAgICAgICAg ICAgICAgICAgIFNVTjUwSV9ETUlDX0lOVF9TVEFfREFUQV9JUlFfUEVORElORyk7Cj4+Cj4+IFRo ZSBpbnRlcnJ1cHQgaXMgbmV2ZXIgZW5hYmxlZCwgc28gZG8gd2UgcmVhbGx5IGNhcmUgYWJvdXQg SVJRIHN0YXR1cz8KPj4KPiAKPiBPaywgSSB3aWxsIGRlbGV0ZSBpdCAuCj4gCj4+Cj4+PiArICAg ICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1JQ19SWEZJRk9fQ1RM LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNVTjUwSV9ETUlDX1JYRklGT19DVExfRkxV U0gsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfUlhGSUZPX0NUTF9G TFVTSCk7Cj4+PiArICAgICByZWdtYXBfd3JpdGUoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1JQ19D TlQsIFNVTjUwSV9ETUlDX0NOVF9OKTsKPj4+ICsKPj4+ICsgICAgIHJldHVybiAwOwo+Pj4gK30K Pj4+ICsKPj4+ICtzdGF0aWMgaW50IHN1bjUwaV9kbWljX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3Bj bV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkpCj4+PiArewo+Pj4gKyAg ICAgaW50IGkgPSAwOwo+Pj4gKyAgICAgdW5zaWduZWQgbG9uZyByYXRlID0gcGFyYW1zX3JhdGUo cGFyYW1zKTsKPj4+ICsgICAgIHVuc2lnbmVkIGludCBjaGFubmVscyA9IHBhcmFtc19jaGFubmVs cyhwYXJhbXMpOwo+Pj4gKyAgICAgc3RydWN0IHN1bjUwaV9kbWljX2RldiAqaG9zdCA9IHNuZF9z b2NfZGFpX2dldF9kcnZkYXRhKGNwdV9kYWkpOwo+Pj4gKyAgICAgc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiA9IGhvc3QtPnBkZXY7Cj4+PiArICAgICBzdHJ1Y3QgZG1pY19yYXRlIGRtaWNf cmF0ZV9zW10gPSB7Cj4+PiArICAgICAgICAgICAgIHs0NDEwMCwgMHgwfSwKPj4+ICsgICAgICAg ICAgICAgezQ4MDAwLCAweDB9LAo+Pj4gKyAgICAgICAgICAgICB7MjIwNTAsIDB4Mn0sCj4+PiAr ICAgICAgICAgICAgIHsyNDAwMCwgMHgyfSwKPj4+ICsgICAgICAgICAgICAgezExMDI1LCAweDR9 LAo+Pj4gKyAgICAgICAgICAgICB7MTIwMDAsIDB4NH0sCj4+PiArICAgICAgICAgICAgIHszMjAw MCwgMHgxfSwKPj4+ICsgICAgICAgICAgICAgezE2MDAwLCAweDN9LAo+Pj4gKyAgICAgICAgICAg ICB7ODAwMCwgIDB4NX0sCj4+PiArICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgLyogRE1JQyBudW0g aXMgTisxICovCj4+PiArICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41 MElfRE1JQ19DSF9OVU0sCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNf Q0hfTlVNX05fTUFTSywKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBTVU41MElfRE1JQ19D SF9OVU1fTihjaGFubmVscyAtIDEpKTsKPj4+ICsgICAgIGhvc3QtPmNoYW5fZW4gPSAoMSA8PCBj aGFubmVscykgLSAxOwo+Pj4gKyAgICAgcmVnbWFwX3dyaXRlKGhvc3QtPnJlZ21hcCwgU1VONTBJ X0RNSUNfSFBGX0NUUkwsIGhvc3QtPmNoYW5fZW4pOwo+Pj4gKwo+Pj4gKyAgICAgc3dpdGNoIChw YXJhbXNfZm9ybWF0KHBhcmFtcykpIHsKPj4+ICsgICAgIGNhc2UgU05EUlZfUENNX0ZPUk1BVF9T MTZfTEU6Cj4+PiArICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhob3N0LT5yZWdtYXAs IFNVTjUwSV9ETUlDX1JYRklGT19DVEwsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTVU41MElfRE1JQ19SWEZJRk9fQ1RMX01PREUsCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTVU41MElfRE1JQ19SWEZJRk9fQ1RMX01PREUpOwo+Pj4gKyAgICAgICAg ICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1JQ19SWEZJRk9f Q1RMLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfUlhG SUZPX0NUTF9SRVNPTFVUSU9OLCAwKTsKPj4+ICsgICAgICAgICAgICAgYnJlYWs7Cj4+PiArICAg ICBjYXNlIFNORFJWX1BDTV9GT1JNQVRfUzI0X0xFOgo+Pj4gKyAgICAgICAgICAgICByZWdtYXBf dXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1JQ19SWEZJRk9fQ1RMLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfUlhGSUZPX0NUTF9NT0RF LCAwKTsKPj4KPj4gSW4gU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUsIHRoZSBzYW1wbGUgaXMgaW4g dGhlIHRocmVlIGxlYXN0IHNpZ25pZmljYW50Cj4+IGJ5dGVzLCBzbyB3b3VsZG4ndCB3ZSB3YW50 IHRvIHN0aWxsIHVzZSBtb2RlIDEgaGVyZT8gVG8gbWUsIG1vZGUgMCBvbmx5Cj4+IG1ha2VzIHNl bnNlIHdoZW4gdXNpbmcgU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUuCj4+Cj4gCj4gSSBkb24ndCB1 bmRlcnN0YW5kLiBUaGUgRE1JQyBkb2VzIG5vdCBzdXBwb3J0IDMyYml0cywgd2h5IHVzZQo+IFNO RFJWX1BDTV9GT1JNQVRfUzMyX0xFID8KClRoZSBoYXJkd2FyZSBzdXBwb3J0cyBleHRlbmRpbmcg dGhlIHNhbXBsZXMgdG8gMzIgYml0cy4gU28gaWYgdXNlcnNwYWNlCndhbnRzIDMyLWJpdCBzYW1w bGVzIChmb3Igd2hhdGV2ZXIgcmVhc29uKSwgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gZG8KdGhl IGV4dGVuc2lvbiBpbiBoYXJkd2FyZSB0aGFuIGluIHNvZnR3YXJlLiBZb3UgZG8gbm90IG5lZWQg dG8gYWRkCnN1cHBvcnQgZm9yIFNORFJWX1BDTV9GT1JNQVRfUzMyX0xFOyB0aGUgZHJpdmVyIHdp bGwgd29yayBmaW5lIHdpdGhvdXQgaXQuCgpCdXQgdGhpcyBpcyB1bnJlbGF0ZWQgdG8gdGhlIGZh Y3QgdGhhdCBtb2RlIDAgaXMgd3JvbmcgZm9yClNORFJWX1BDTV9GT1JNQVRfUzI0X0xFLgoKU05E UlZfUENNX0ZPUk1BVF9TMTZfTEUgPT4gc2FtcGxlcyBtdXN0IGJlIGluIDIgbG93ZXIgYnl0ZXMu CiAgIE1vZGUgMSBkb2VzIHRoaXMuIFRoZSB1cHBlciAyIGJ5dGVzIGFyZSBpZ25vcmVkLgoKU05E UlZfUENNX0ZPUk1BVF9TMjRfTEUgPT4gc2FtcGxlcyBtdXN0IGJlIGluIDMgbG93ZXIgYnl0ZXMu CiAgIE1vZGUgMSBkb2VzIHRoaXMuIFRoZSAyMS1iaXQgc2FtcGxlIGlzIGV4dGVuZGVkIHdpdGgg MyB6ZXJvZXMuCgpJbiBmYWN0LCBzaW5jZSBvbmx5IDIxIGJpdHMgaW4gdGhlIDI0LWJpdCBzYW1w bGUgYXJlIG1lYW5pbmdmdWwsIHlvdQpzaG91bGQgc2V0IHRoZSBzaWdfYml0cyBmaWVsZCBpbiB0 aGUgREFJIGRyaXZlciBzbyB1c2Vyc3BhY2UgY2FuIGtub3cuCgooRG9lcyBpdCBtYWtlIHNlbnNl IHRoYXQgZXh0ZW5kaW5nIDIxIC0+IDI0IGJpdHMgdG8gZml0IGluIGEgc3RhbmRhcmQKUENNIGZv cm1hdCBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZSBhcyBleHRlbmRpbmcgMjEgLT4gMzIgYml0cz8p Cgo+Pgo+Pj4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBT VU41MElfRE1JQ19SWEZJRk9fQ1RMLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU1VONTBJX0RNSUNfUlhGSUZPX0NUTF9SRVNPTFVUSU9OLAo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1VONTBJX0RNSUNfUlhGSUZPX0NUTF9SRVNPTFVUSU9OKTsKPj4+ ICsgICAgICAgICAgICAgYnJlYWs7Cj4+PiArICAgICBkZWZhdWx0Ogo+Pj4gKyAgICAgICAgICAg ICBkZXZfZXJyKCZwZGV2LT5kZXYsICJJbnZhbGlkIGZvcm1hdCFcbiIpOwo+Pgo+PiBUaGUgY2Fs bHMgdG8gZGV2X2VycigpIGNhbiB1c2UgY3B1X2RhaS0+ZGV2LiBUaGVuIHlvdSBkb24ndCBuZWVk IHRvIGtlZXAKPj4gYSBwb2ludGVyIHRvIHBkZXYgaW4gdGhlIGRyaXZlciBkYXRhLgo+Pgo+Pj4g KyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAg IGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRtaWNfcmF0ZV9zKTsgaSsrKSB7Cj4+PiArICAg ICAgICAgICAgIGlmIChkbWljX3JhdGVfc1tpXS5zYW1wbGVyYXRlID09IHJhdGUpIHsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41 MElfRE1JQ19TUiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U1VONTBJX0RNSUNfU1JfU0FNT0xFX1JBVEVfTUFTSywKPj4+ICsKPj4gU1VONTBJX0RNSUNfU1Jf U0FNT0xFX1JBVEUoZG1pY19yYXRlX3NbaV0ucmF0ZV9iaXQpKTsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICBicmVhazsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKyAgICAgfQo+Pj4gKyAgICAg aWYgKGkgPT0gQVJSQVlfU0laRShkbWljX3JhdGVfcykpIHsKPj4+ICsgICAgICAgICAgICAgZGV2 X2VycigmcGRldi0+ZGV2LCAiSW52YWxpZCByYXRlIVxuIik7Cj4+PiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgLyogb3ZlcnNhbXBsZXJh dGUgYWRqdXN0ICovCj4+PiArICAgICBpZiAocGFyYW1zX3JhdGUocGFyYW1zKSA+PSAyNDAwMCkK Pj4+ICsgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGhvc3QtPnJlZ21hcCwgU1VONTBJ X0RNSUNfQ1RMLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VONTBJX0RN SUNfQ1RMX09WRVJTQU1QTEVfUkFURSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNVTjUwSV9ETUlDX0NUTF9PVkVSU0FNUExFX1JBVEUpOwo+Pj4gKyAgICAgZWxzZQo+Pj4g KyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBTVU41MElfRE1J Q19DVEwsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVU41MElfRE1JQ19D VExfT1ZFUlNBTVBMRV9SQVRFLCAwKTsKPj4+ICsKPj4+ICsgICAgIHJldHVybiAwOwo+Pj4gK30K Pj4+ICsKPj4+ICtzdGF0aWMgaW50IHN1bjUwaV9kbWljX3RyaWdnZXIoc3RydWN0IHNuZF9wY21f c3Vic3RyZWFtICpzdWJzdHJlYW0sIGludAo+PiBjbWQsCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQo+Pj4gK3sKPj4+ICsgICAgIGludCBy ZXQgPSAwOwo+Pj4gKyAgICAgc3RydWN0IHN1bjUwaV9kbWljX2RldiAqaG9zdCA9IHNuZF9zb2Nf ZGFpX2dldF9kcnZkYXRhKGRhaSk7Cj4+PiArCj4+PiArICAgICBpZiAoc3Vic3RyZWFtLT5zdHJl YW0gIT0gU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKPj4+ICsKPj4+ICsgICAgIHN3aXRjaCAoY21kKSB7Cj4+PiArICAgICBjYXNlIFNO RFJWX1BDTV9UUklHR0VSX1NUQVJUOgo+Pj4gKyAgICAgY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9S RVNVTUU6Cj4+PiArICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1JFTEVBU0U6Cj4+ PiArICAgICAgICAgICAgIHN1bjUwaV9zbmRfcnhjdHJsX2VuYWJsZShzdWJzdHJlYW0sIGhvc3Qs IHRydWUpOwo+Pj4gKyAgICAgICAgICAgICBicmVhazsKPj4+ICsKPj4+ICsgICAgIGNhc2UgU05E UlZfUENNX1RSSUdHRVJfU1RPUDoKPj4+ICsgICAgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1VT UEVORDoKPj4+ICsgICAgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfUEFVU0VfUFVTSDoKPj4+ICsg ICAgICAgICAgICAgc3VuNTBpX3NuZF9yeGN0cmxfZW5hYmxlKHN1YnN0cmVhbSwgaG9zdCwgZmFs c2UpOwo+Pj4gKyAgICAgICAgICAgICBicmVhazsKPj4+ICsKPj4+ICsgICAgIGRlZmF1bHQ6Cj4+ PiArICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+ Pj4gKyAgICAgfQo+Pj4gKyAgICAgcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGlj IGludCBzdW41MGlfZG1pY19zZXRfc3lzY2xrKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpLCBpbnQg Y2xrX2lkLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBm cmVxLCBpbnQgZGlyKQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBzdW41MGlfZG1pY19kZXYgKmhv c3QgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKGNs a19zZXRfcmF0ZShob3N0LT5kbWljX2NsaywgZnJlcSkpIHsKPj4KPj4gQ3VycmVudGx5LCBtYWlu bGluZSBkb2VzIG5vdCBoYXZlIGFueSBzdW54aS1zcGVjaWZpYyBtYWNoaW5lIGRyaXZlcnMuIFdl Cj4+IGFyZSB1c2luZyBzaW1wbGUtYXVkaW8tY2FyZCBmb3Igc3VuNTBpLiBBbmQgYXNvY19zaW1w bGVfaHdfcGFyYW1zKCkgb25seQo+PiBjYWxscyAuc2V0X3N5c2NsayBpZiBtY2xrLWZzIGlzIHNl dCB0byBzb21lIGZpeGVkIHZhbHVlLCBmcm9tIHRoZSBkZXZpY2UKPj4gdHJlZS4gSG93ZXZlciwg Zm9yIHN1bnhpLCBtY2xrLWZzIGNhbm5vdCBiZSBhIGZpeGVkIHZhbHVlLCBiZWNhdXNlCj4+IHN5 c2NsayBpcyB0aGUgc2FtZSAyMi8yNCBNSHogcmVnYXJkbGVzcyBvZiBzYW1wbGUgcmF0ZS4gU28g LnNldF9zeXNjbGsKPj4gd2lsbCBuZXZlciBiZSBjYWxsZWQuCj4+Cj4+IFNvIGZvciBub3cgSSB3 b3VsZCBzdWdnZXN0IGNhbGxpbmcgY2xrX3NldF9yYXRlKCkgZnJvbSAuaHdfcGFyYW1zLCB1c2lu Zwo+PiBzb21ldGhpbmcgbGlrZSBzdW44aV9jb2RlY19nZXRfc3lzY2xrX3JhdGUoKSB0byBnZXQg dGhlIHJpZ2h0IGZyZXF1ZW5jeS4KPj4KPiAKPiBUaGFua3MsIGkgd2lsbCBkbyBpdAo+IAo+Pgo+ Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRhaS0+ZGV2LCAiRnJlcSA6ICV1IG5vdCBzdXBwb3J0 XG4iLCBmcmVxKTsKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArICAgICB9 Cj4+PiArCj4+PiArICAgICByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBz dW41MGlfZG1pY19zb2NfZGFpX3Byb2JlKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQo+Pj4gK3sK Pj4+ICsgICAgIHN0cnVjdCBzdW41MGlfZG1pY19kZXYgKmhvc3QgPSBzbmRfc29jX2RhaV9nZXRf ZHJ2ZGF0YShkYWkpOwo+Pj4gKwo+Pj4gKyAgICAgc25kX3NvY19kYWlfaW5pdF9kbWFfZGF0YShk YWksIE5VTEwsICZob3N0LT5kbWFfcGFyYW1zX3J4KTsKPj4+ICsKPj4+ICsgICAgIHJldHVybiAw Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBz dW41MGlfZG1pY19kYWlfb3BzID0gewo+Pj4gKyAgICAgLnN0YXJ0dXAgICAgICAgID0gc3VuNTBp X2RtaWNfc3RhcnR1cCwKPj4+ICsgICAgIC50cmlnZ2VyICAgICAgICA9IHN1bjUwaV9kbWljX3Ry aWdnZXIsCj4+PiArICAgICAuaHdfcGFyYW1zICAgICAgPSBzdW41MGlfZG1pY19od19wYXJhbXMs Cj4+PiArICAgICAuc2V0X3N5c2NsayAgICAgPSBzdW41MGlfZG1pY19zZXRfc3lzY2xrLAo+Pj4g K307Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHN1bjUwaV9k bWljX3JlZ21hcF9jb25maWcgPSB7Cj4+PiArICAgICAucmVnX2JpdHMgPSAzMiwKPj4+ICsgICAg IC5yZWdfc3RyaWRlID0gNCwKPj4+ICsgICAgIC52YWxfYml0cyA9IDMyLAo+Pj4gKyAgICAgLm1h eF9yZWdpc3RlciA9IFNVTjUwSV9ETUlDX1ZFUlNJT04sCj4+PiArICAgICAuY2FjaGVfdHlwZSA9 IFJFR0NBQ0hFX05PTkUsCj4+PiArfTsKPj4+ICsKPj4+ICsjZGVmaW5lICAgICAgU1VONTBJX0RN SUNfUkFURVMgKFNORFJWX1BDTV9SQVRFXzgwMDBfNDgwMDAgfAo+PiBTTkRSVl9QQ01fUkFURV9L Tk9UKQo+Pgo+PiBJZiB5b3UgdXNlIFNORFJWX1BDTV9SQVRFX0tOT1QsIHlvdSBhbHNvIG5lZWQg dG8gcHJvdmlkZSBhIGxpc3Qgb2YKPj4gc2FtcGxlIHJhdGVzIGFzIGEgY29uc3RyYWludCBpbiAu c3RhcnR1cC4KPj4KPj4+ICsjZGVmaW5lIFNVTjUwSV9GT1JNQVRTICAgICAgIChTTkRSVl9QQ01f Rk1UQklUX1MxNl9MRSB8Cj4+IFNORFJWX1BDTV9GTVRCSVRfUzI0X0xFKQo+Pj4gKwo+Pj4gK3N0 YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVyIHN1bjUwaV9kbWljX2RhaSA9IHsKPj4+ICsg ICAgIC5jYXB0dXJlID0gewo+Pj4gKyAgICAgICAgICAgICAuY2hhbm5lbHNfbWluID0gMSwKPj4+ ICsgICAgICAgICAgICAgLmNoYW5uZWxzX21heCA9IDgsCj4+PiArICAgICAgICAgICAgIC5yYXRl cyA9IFNVTjUwSV9ETUlDX1JBVEVTLAo+Pj4gKyAgICAgICAgICAgICAuZm9ybWF0cyA9IFNVTjUw SV9GT1JNQVRTLAoKIi5zaWdfYml0cyA9IDIxLCIgc2hvdWxkIGdvIGhlcmUuCgpSZWdhcmRzLApT YW11ZWwKCj4+PiArICAgICB9LAo+Pj4gKyAgICAgLnByb2JlID0gc3VuNTBpX2RtaWNfc29jX2Rh aV9wcm9iZSwKPj4+ICsgICAgIC5vcHMgPSAmc3VuNTBpX2RtaWNfZGFpX29wcywKPj4+ICsgICAg IC5uYW1lID0gImRtaWMiLAo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgc3VuNTBpX2RtaWNfb2ZfbWF0Y2hbXSA9IHsKPj4+ICsgICAgIHsKPj4+ICsg ICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjUwaS1oNi1kbWljIiwKPj4+ ICsgICAgIH0sCj4+PiArICAgICB7IC8qIHNlbnRpbmVsICovIH0KPj4+ICt9Owo+Pj4gK01PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIHN1bjUwaV9kbWljX29mX21hdGNoKTsKPj4+ICsKPj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciBzdW41MGlfZG1pY19jb21w b25lbnQgPSB7Cj4+PiArICAgICAubmFtZSAgICAgICAgICAgPSAic3VuNTBpLWRtaWMiLAo+Pj4g K307Cj4+PiArCj4+PiArc3RhdGljIGludCBzdW41MGlfZG1pY19ydW50aW1lX3N1c3BlbmQoc3Ry dWN0IGRldmljZSAqZGV2KQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBzdW41MGlfZG1pY19kZXYg Kmhvc3QgID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+PiArCj4+PiArICAgICBjbGtfZGlzYWJs ZV91bnByZXBhcmUoaG9zdC0+ZG1pY19jbGspOwo+Pj4gKyAgICAgY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGhvc3QtPmFwYl9jbGspOwo+Pj4gKwo+Pj4gKyAgICAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4g Kwo+Pj4gK3N0YXRpYyBpbnQgc3VuNTBpX2RtaWNfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBzdW41MGlfZG1pY19kZXYgKmhvc3QgID0g ZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+PiArICAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAgICAg cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGhvc3QtPmRtaWNfY2xrKTsKPj4+ICsgICAgIGlmIChy ZXQpCj4+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgICByZXQgPSBjbGtfcHJl cGFyZV9lbmFibGUoaG9zdC0+YXBiX2Nsayk7Cj4+PiArICAgICBpZiAocmV0KQo+Pj4gKyAgICAg ICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoaG9zdC0+ZG1pY19jbGspOwo+Pj4gKwo+Pj4g KyAgICAgcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBzdW41MGlfZG1p Y19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gK3sKPj4+ICsgICAgIHN0 cnVjdCBzdW41MGlfZG1pY19kZXYgKmhvc3Q7Cj4+PiArICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJl czsKPj4+ICsgICAgIGludCByZXQ7Cj4+PiArICAgICB2b2lkIF9faW9tZW0gKmJhc2U7Cj4+PiAr Cj4+PiArICAgICBob3N0ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqaG9zdCks IEdGUF9LRVJORUwpOwo+Pj4gKyAgICAgaWYgKCFob3N0KQo+Pj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVOT01FTTsKPj4+ICsKPj4+ICsgICAgIGhvc3QtPnBkZXYgPSBwZGV2Owo+Pj4gKwo+Pj4g KyAgICAgLyogR2V0IHRoZSBhZGRyZXNzZXMgKi8KPj4+ICsgICAgIHJlcyA9IHBsYXRmb3JtX2dl dF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4+PiArICAgICBiYXNlID0gZGV2 bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7Cj4+PiArICAgICBpZiAoSVNfRVJS KGJhc2UpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2 LCBQVFJfRVJSKGJhc2UpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Z2V0IHJlc291cmNlIGZhaWxlZC5cbiIpOwo+Pj4gKwo+Pj4gKyAgICAgaG9zdC0+cmVnbWFwID0g ZGV2bV9yZWdtYXBfaW5pdF9tbWlvKCZwZGV2LT5kZXYsIGJhc2UsCj4+PiArCj4+ICAmc3VuNTBp X2RtaWNfcmVnbWFwX2NvbmZpZyk7Cj4+PiArCj4+PiArICAgICAvKiBDbG9ja3MgKi8KPj4+ICsg ICAgIGhvc3QtPmFwYl9jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgImFwYiIpOwo+Pj4g KyAgICAgaWYgKElTX0VSUihob3N0LT5hcGJfY2xrKSkKPj4+ICsgICAgICAgICAgICAgcmV0dXJu IGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgUFRSX0VSUihob3N0LT5hcGJfY2xrKSwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBnZXQgYXBiIGNsb2Nr LlxuIik7Cj4+PiArCj4+PiArICAgICBob3N0LT5kbWljX2NsayA9IGRldm1fY2xrX2dldCgmcGRl di0+ZGV2LCAiZG1pYyIpOwo+Pj4gKyAgICAgaWYgKElTX0VSUihob3N0LT5kbWljX2NsaykpCj4+ PiArICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIo aG9zdC0+ZG1pY19jbGspLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ZmFpbGVkIHRvIGdldCBkbWljIGNsb2NrLlxuIik7Cj4+PiArCj4+PiArICAgICBob3N0LT5kbWFf cGFyYW1zX3J4LmFkZHIgPSByZXMtPnN0YXJ0ICsgU1VONTBJX0RNSUNfREFUQTsKPj4+ICsgICAg IGhvc3QtPmRtYV9wYXJhbXNfcngubWF4YnVyc3QgPSA4Owo+Pj4gKyAgICAgaG9zdC0+ZG1hX3Bh cmFtc19yeC5hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzJfQllURVM7Cj4+Cj4+IFRo aXMgbmVlZHMgdG8gYmUgRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMgaWYgeW91IGFyZSB1c2lu ZyBsYXJnZXIgdGhhbgo+PiAxNi1iaXQgc2FtcGxlcy4gU2VlIGZvciBleGFtcGxlIHN1bjRpX2ky c19od19wYXJhbXMoKS4KPj4KPj4gUmVnYXJkcywKPj4gU2FtdWVsCj4+Cj4gCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=