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.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 CF672C43613 for ; Thu, 20 Jun 2019 09:43:44 +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 9E7EA2080C for ; Thu, 20 Jun 2019 09:43: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="cjgIOc0M"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="ja9Py+yN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E7EA2080C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vmrxTmPoDAaRfsDI2oojP8VnTJoHxASnrbKbQ8vWqeQ=; b=cjgIOc0MH4FS8u 3CzafanmCUWsG0cZjw+tvgcpBDSXL+dsnblDLEy4hvUYouhOlkfyfrQ2AI0Oxs+3qJqFkTQpB9kjo wXYhteSXVCjTEuhQJjNVpHkPxBVGcBhvU82iV9vb2oB8egCcu0CEQuDHKIADczZGaprAHAvwt5nYt CUKhui5e2mob5f2LBuN4R76Ycg/Bc9olDvYqqjKWtQ/+NCMuekz4vPgBdv4yn97OFXsbBW11/6NgQ DGa353kzA/t1Pwlj8WuoJiovBUz+KOOG1zZPe+Jac5r0Q+IO/0hG7cmXdCWCL441isQOO/tuLAPzW VXB/GK2k0K2zDRsEbN3g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hdtbY-0004NL-Cw; Thu, 20 Jun 2019 09:43:40 +0000 Received: from mail-qk1-x743.google.com ([2607:f8b0:4864:20::743]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hdtbS-0004Kf-7X for linux-arm-kernel@lists.infradead.org; Thu, 20 Jun 2019 09:43:37 +0000 Received: by mail-qk1-x743.google.com with SMTP id b18so1432724qkc.9 for ; Thu, 20 Jun 2019 02:43:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FT738BizcRxJsybn1A29WHqn9B1uTSCNaTbRDaw3njo=; b=ja9Py+yNWVfz9P2UkXKkS7YdZdmio851wSLQ9n0jONbXWxhudpMLMw3NgAgNvMBJlL E4xrYACl6v4kVH2vOlLxcuC+bSRkaS4Mi26kFLwKMGZ0f2MQhtA+6gWRvdAjipn4EtCV ZHThmI6xAyXUKAQ6Bl/9wymbwPhGVs6TiKOHE= 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=FT738BizcRxJsybn1A29WHqn9B1uTSCNaTbRDaw3njo=; b=jjVJPjMElvxSN5+S+ggAbcR0SRmYc2J3yv35Dlcf7R9HdU2bwOmRseDZKEBCc4KPvj SYMa35Qwi12CNd4xSQSLU7dg+kYpnBJ8GTRHETqlTxy781HKN7Dn1Ix2k87ihfcLAkBD EeNeq6U0kGg/r2aCcIoOQ8XMjyTSQhKjtD3FMtn5yeZFFv+Fx0pT01veoH3b2zhUyWEc oPYsLKHUvEYlUZKMKLSUih40VI0wpyhUyq5RR5TgtM6Mw7esD75MPFgqx291FXTLwJxc XOGazu5D+7gAFnfXrC+vIV9ZqIWpU6y4BIK7WL2dSswuk5gGbd+cwVN0dQwXmcRMKozg 0n5Q== X-Gm-Message-State: APjAAAUZiid1bDp8G5dGixazlHL8aWkjx2GH0Fk70/3UdX6BBSWtsy83 EM/+texuSFk1DeL0PXnZm8xtxR7BUgUo4pUfimUCgw== X-Google-Smtp-Source: APXvYqwtAh6vLma/ZHLOEDLgSuuN573qecE19LHE6EvdjubpSy6QhXEClYd/G1EPVA2pXKaF97hWuozGDperGue9w0Q= X-Received: by 2002:a05:620a:16c1:: with SMTP id a1mr61675856qkn.269.1561023812722; Thu, 20 Jun 2019 02:43:32 -0700 (PDT) MIME-Version: 1.0 References: <20190618041433.245629-1-hsinyi@chromium.org> <20190618041433.245629-2-hsinyi@chromium.org> <958b27ff-6e64-b4e2-44e6-bc342e3606bc@samsung.com> <04bbd518efef8296e450e984e6afdba2@codeaurora.org> In-Reply-To: <04bbd518efef8296e450e984e6afdba2@codeaurora.org> From: Hsin-Yi Wang Date: Thu, 20 Jun 2019 17:43:06 +0800 Message-ID: Subject: Re: [PATCH RFC 1/2] PM / devfreq: Generic CPU frequency to device frequency mapping governor To: Sibi Sankar X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190620_024334_316276_40C96271 X-CRM114-Status: GOOD ( 38.57 ) 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: linux-kernel-owner@vger.kernel.org, "Andrew-sh . Cheng" , linux-pm@vger.kernel.org, lkml , Chanwoo Choi , Kyungmin Park , Saravana Kannan , linux-mediatek@lists.infradead.org, MyungJoo Ham , Matthias Brugger , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhhbmtzIQoKT24gVGh1LCBKdW4gMjAsIDIwMTkgYXQgNTo0MSBQTSBTaWJpIFNhbmthciA8c2li aXNAY29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+Cj4gSGV5IEhzaW4tWWksIENoYW53b28KPgo+IE9u IDIwMTktMDYtMjAgMTU6MDIsIEhzaW4tWWkgV2FuZyB3cm90ZToKPiA+IEhpIENoYW53b28gQ2hv aSwgU2FyYXZhbmEgS2FubmFuIGFuZCBTaWJpIFNhbmthciwKPiA+Cj4gPiBJJ3ZlIGFsc28gdGVz dGVkIFNpYmkgU2Fua2FyJ3MgcGF0Y2hbMV0gbG9jYWxseSB3aXRoIG10ODE4My1jY2ksIGFuZAo+ ID4gaXQgd29ya3MgZmluZSB0b28hCj4gPiBJdCdkIGJlIGdyZWF0IGlmIFNpYmkgU2Fua2FyIG9y IGFueW9uZSB3aG8gaXMgZmFtaWxpYXIgd2l0aCB0aGUKPiA+IG9yaWdpbmFsIGRlc2lnbiBjYW4g ZmluaXNoIHRoaXMgaW1wbGVtZW50YXRpb24uIEJ1dCBpZiBubyBvbmUgaGFzIHRpbWUKPiA+IHRv IGRvIHRoYXQsIEkgdGhpbmsgSSBjYW4gYWxzbyBoZWxwIG9uIGFkZHJlc3MgdGhlIGNvbW1lbnRz LiBUaGFua3MhCj4KPiBOb3cgdGhhdCB3ZSBoYXZlIGEgdXNlciA6KSBJIGFtIGhhcHB5Cj4gdG8g cmVwb3N0IHRoZSBwYXRjaCB3aXRoIHRoZSBjb21tZW50cwo+IGFkZHJlc3NlZC4KPgo+IGh0dHBz Oi8vbGttbC5vcmcvbGttbC8yMDE5LzYvMTQvNAo+IEFsc28gd2l0aCBeXiBwYXRjaCBhbmQgZmV3 IG1vcmUgaW4gdGhlCj4gc2VyaWVzIHRoZSBkdCBwYXJzaW5nIG9mIHJlcXVpcmVkLW9wcHMKPiBz aG91bGQgZ2V0IGZ1cnRoZXIgc2ltcGxpZmllZC4KPgo+ID4KPiA+Cj4gPiBbMV0KPiA+IFtSRkMs Mi85XSBPUFA6IEV4cG9ydCBhIG51bWJlciBvZiBoZWxwZXJzIHRvIHByZXZlbnQgY29kZSBkdXBs aWNhdGlvbgo+ID4gLSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwODc1MTk5 Lwo+ID4gW1JGQywzLzldIFBNIC8gZGV2ZnJlcTogQWRkIGNwdSBiYXNlZCBzY2FsaW5nIHN1cHBv cnQgdG8KPiA+IHBhc3NpdmVfZ292ZXJub3IKPiA+IC0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVs Lm9yZy9wYXRjaC8xMDg3NTE5NS8KPiA+Cj4gPiBIc2luLVlpCj4gPgo+ID4gT24gVGh1LCBKdW4g MjAsIDIwMTkgYXQgMjo1NiBQTSBDaGFud29vIENob2kgPGN3MDAuY2hvaUBzYW1zdW5nLmNvbT4K PiA+IHdyb3RlOgo+ID4+Cj4gPj4gKyBTaWJpIFNhbmthcgo+ID4+Cj4gPj4gSGksIEhzaW4tWWkg V2FuZywgU2FyYXZhbmEgS2FubmFuIGFuZCBTaWJpIFNhbmthcgo+ID4+Cj4gPj4gSSBzdW1tYXJp emVkIHRoZSBoaXN0b3J5IG9mIHRoZSByZWxhdGVkIHBhdGNoIGFib3V0IHRoaXMgdGl0bGUuCj4g Pj4KPiA+PiBGaXJzdGx5LAo+ID4+IEFzIEkga25ldywgU2FyYXZhbmEgc2VudCB0aGUgcGF0Y2hb MV0gd2hpY2ggY29udGFpbnMKPiA+PiAnZ292ZXJub3JfY3B1ZnJlcV9tYXAuYycgbGFzdCB5ZWFy LiBBY2NvcmRpbmcgdG8gdGhlIE15dW5nb28ncwo+ID4+IGNvbW1lbnQsCj4gPj4KPiA+PiBTZWNv bmRseSwKPiA+PiBTaWJpIFNhbmthciBtb2RpZmllZCB0aGUgJ2dvdmVybm9yX3Bhc3NpdmUuYydb Ml0gaW4gb3JkZXIgdG8gc3VwcG9ydAo+ID4+IHRoZSBtYXBwaW5nIGJldHdlZW4gY3B1IGZyZXF1 ZW5jeSBhbmQgZGV2aWNlIGZyZXF1ZW5jeS4KPiA+PiBVbmZvcnR1bmF0ZWx5LCBTaWJpIFNhbmth ciBzdG9wcGVkIHRoZSBkZXZlbG9wbWVudCBhYm91dCB0aGlzCj4gPj4gYmVjYXVzZSBoZSBoYWQg Zm91bmQgdGhlIG90aGVyIG1ldGhvZCB0byBnZXQgaGlzIHB1cnBvc2UgYXMgSSBrbmV3Lgo+ID4+ Cj4gPj4gVGhpcmRseSwKPiA+PiBIc2luLVlpIFdhbmcgc2VuZCB0aGUgb3JpZ2luYWwgcGF0Y2gg b2YgU2FyYXZhbmEgd2l0aG91dCBtb2RpZmljYXRpb24uCj4gPj4KPiA+Pgo+ID4+IFNpbmNlcmVs eSwgSSB0aGluayB0aGF0IHRoZSBtYXBwaW5nIGJldHdlZW4gY3B1IGZyZXF1ZW5jeSBhbmQgZGV2 aWNlCj4gPj4gZnJlcXVlbmN5IGlzIG5lY2Vzc2FyeS4gQW5kIEkgcHJlZmVyIHRoZSBTaWJpJ3Mg YXBwcm9hY2ggd2hpY2gKPiA+PiBpbXBsZW1lbnRzCj4gPj4gc3R1ZmYgdG8gdGhlIGV4aXN0aW5n ICdwYXNzaXZlJyBnb3Zlcm5vci4KPiA+Pgo+ID4+IFdlIG5lZWQgdG8gZGlzY3VzcyBhYm91dCBo b3cgdG8gaW1wbGVtZW50IHRoZW0gYnkgd2hvbS4KPiA+Pgo+ID4+Cj4gPj4gWzFdIFt2MywxLzJd IFBNIC8gZGV2ZnJlcTogR2VuZXJpYyBDUFUgZnJlcXVlbmN5IHRvIGRldmljZSBmcmVxdWVuY3kK PiA+PiBtYXBwaW5nIGdvdmVybm9yCj4gPj4gLSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3Jn L3BhdGNoLzEwNTUzMTcxLwo+ID4+Cj4gPj4gWzJdCj4gPj4gW1BBVENIIFJGQyAwLzldIEFkZCBD UFUgYmFzZWQgc2NhbGluZyBzdXBwb3J0IHRvIFBhc3NpdmUgZ292ZXJub3IKPiA+PiAtCj4gPj4g aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8wOGMzY2ZmOGMzOWUzZDgyZTA0NGRiOTNlOTky ZGE3MkBjb2RlYXVyb3JhLm9yZy9ULwo+ID4+IFtQQVRDSCBSRkMgMy85XSBQTSAvIGRldmZyZXE6 IEFkZCBjcHUgYmFzZWQgc2NhbGluZyBzdXBwb3J0IHRvCj4gPj4gcGFzc2l2ZV9nb3Zlcm5vcgo+ ID4+IC0KPiA+PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzA4YzNjZmY4YzM5ZTNkODJl MDQ0ZGI5M2U5OTJkYTcyQGNvZGVhdXJvcmEub3JnL1QvI20xY2FmYjdiYWY2ODdkMmE2ODBkMzlj ODVkM2VjN2QxYjU5MGI2OGZjCj4gPj4KPiA+Pgo+ID4+IEJlc3QgUmVnYXJkcywKPiA+PiBDaGFu d29vIENob2kKPiA+Pgo+ID4+IE9uIDE5LiA2LiAxOC4g7Jik7ZuEIDE6MTQsIEhzaW4tWWkgV2Fu ZyB3cm90ZToKPiA+PiA+IEZyb206IFNhcmF2YW5hIEthbm5hbiA8c2thbm5hbkBjb2RlYXVyb3Jh Lm9yZz4KPiA+PiA+Cj4gPj4gPiBGcm9tOiBTYXJhdmFuYSBLYW5uYW4gPHNrYW5uYW5AY29kZWF1 cm9yYS5vcmc+Cj4gPj4gPgo+ID4+ID4gTWFueSBDUFUgYXJjaGl0ZWN0dXJlcyBoYXZlIGNhY2hl cyB0aGF0IGNhbiBzY2FsZSBpbmRlcGVuZGVudCBvZiB0aGUgQ1BVcy4KPiA+PiA+IEZyZXF1ZW5j eSBzY2FsaW5nIG9mIHRoZSBjYWNoZXMgaXMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSB0aGUgY2Fj aGUgaXMgbm90Cj4gPj4gPiBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgdGhhdCBsZWFkcyB0byBw b29yIHBlcmZvcm1hbmNlIGFuZCBwb3dlci4gVGhlIHNhbWUKPiA+PiA+IGlkZWEgYXBwbGllcyBm b3IgUkFNL0REUi4KPiA+PiA+Cj4gPj4gPiBUbyBhY2hpZXZlIHRoaXMsIHRoaXMgcGF0Y2ggYWRk cyBhIGdlbmVyaWMgZGV2ZnJlcSBnb3Zlcm5vciB0aGF0IHRha2VzIHRoZQo+ID4+ID4gY3VycmVu dCBmcmVxdWVuY3kgb2YgZWFjaCBDUFUgZnJlcXVlbmN5IGRvbWFpbiBhbmQgdGhlbiBhZGp1c3Rz IHRoZQo+ID4+ID4gZnJlcXVlbmN5IG9mIHRoZSBjYWNoZSAob3IgYW55IGRldmZyZXEgZGV2aWNl KSBiYXNlZCBvbiB0aGUgZnJlcXVlbmN5IG9mCj4gPj4gPiB0aGUgQ1BVcy4gSXQgbGlzdGVucyB0 byBDUFUgZnJlcXVlbmN5IHRyYW5zaXRpb24gbm90aWZpZXJzIHRvIGtlZXAgaXRzZWxmCj4gPj4g PiB1cCB0byBkYXRlIG9uIHRoZSBjdXJyZW50IENQVSBmcmVxdWVuY3kuCj4gPj4gPgo+ID4+ID4g VG8gZGVjaWRlIHRoZSBmcmVxdWVuY3kgb2YgdGhlIGRldmljZSwgdGhlIGdvdmVybm9yIGRvZXMg b25lIG9mIHRoZQo+ID4+ID4gZm9sbG93aW5nOgo+ID4+ID4KPiA+PiA+ICogVXNlcyBhIENQVSBm cmVxdWVuY3kgdG8gZGV2aWNlIGZyZXF1ZW5jeSBtYXBwaW5nIHRhYmxlCj4gPj4gPiAgIC0gRWl0 aGVyIG9uZSBtYXBwaW5nIHRhYmxlIHVzZWQgZm9yIGFsbCBDUFUgZnJlcSBwb2xpY2llcyAodHlw aWNhbGx5IHVzZWQKPiA+PiA+ICAgICBmb3Igc3lzdGVtIHdpdGggaG9tb2dlbmVvdXMgY29yZXMv Y2x1c3RlcnMgdGhhdCBoYXZlIHRoZSBzYW1lIE9QUHMpLgo+ID4+ID4gICAtIE9uZSBtYXBwaW5n IHRhYmxlIHBlciBDUFUgZnJlcSBwb2xpY3kgKHR5cGljYWxseSB1c2VkIGZvciBBU01QIHN5c3Rl bXMKPiA+PiA+ICAgICB3aXRoIGhldGVyb2dlbmVvdXMgQ1BVcyB3aXRoIGRpZmZlcmVudCBPUFBz KQo+ID4+ID4KPiA+PiA+IE9SCj4gPj4gPgo+ID4+ID4gKiBTY2FsZXMgdGhlIGRldmljZSBmcmVx dWVuY3kgaW4gcHJvcG9ydGlvbiB0byB0aGUgQ1BVIGZyZXF1ZW5jeS4gU28sIGlmCj4gPj4gPiAg IHRoZSBDUFVzIGFyZSBydW5uaW5nIGF0IHRoZWlyIG1heCBmcmVxdWVuY3ksIHRoZSBkZXZpY2Ug cnVucyBhdCBpdHMgbWF4Cj4gPj4gPiAgIGZyZXF1ZW5jeS4gIElmIHRoZSBDUFVzIGFyZSBydW5u aW5nIGF0IHRoZWlyIG1pbiBmcmVxdWVuY3ksIHRoZSBkZXZpY2UKPiA+PiA+ICAgcnVucyBhdCBp dHMgbWluIGZyZXF1ZW5jeS4gQW5kIGludGVycG9sYXRlZCBmb3IgZnJlcXVlbmNpZXMgaW4gYmV0 d2Vlbi4KPiA+PiA+Cj4gPj4gPiBTaWduZWQtb2ZmLWJ5OiBTYXJhdmFuYSBLYW5uYW4gPHNrYW5u YW5AY29kZWF1cm9yYS5vcmc+Cj4gPj4gPiBTaWduZWQtb2ZmLWJ5OiBIc2luLVlpIFdhbmcgPGhz aW55aUBjaHJvbWl1bS5vcmc+Cj4gPj4gPiAtLS0KPiA+PiA+ICAuLi4vYmluZGluZ3MvZGV2ZnJl cS9kZXZmcmVxLWNwdWZyZXEtbWFwLnR4dCAgfCAgNTMgKysKPiA+PiA+ICBkcml2ZXJzL2RldmZy ZXEvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwo+ID4+ID4gIGRyaXZlcnMv ZGV2ZnJlcS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPj4gPiAgZHJp dmVycy9kZXZmcmVxL2dvdmVybm9yX2NwdWZyZXFfbWFwLmMgICAgICAgIHwgNTgzICsrKysrKysr KysrKysrKysrKwo+ID4+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNjQ1IGluc2VydGlvbnMoKykKPiA+ PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2RldmZyZXEvZGV2ZnJlcS1jcHVmcmVxLW1hcC50eHQKPiA+PiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9kZXZmcmVxL2dvdmVybm9yX2NwdWZyZXFfbWFwLmMKPiA+PiA+Cj4gPj4gPiBk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RldmZyZXEvZGV2 ZnJlcS1jcHVmcmVxLW1hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv ZGV2ZnJlcS9kZXZmcmVxLWNwdWZyZXEtbWFwLnR4dAo+ID4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTgyYTMwYmNmYzg2Cj4gPj4gPiAtLS0gL2Rl di9udWxsCj4gPj4gPiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGV2 ZnJlcS9kZXZmcmVxLWNwdWZyZXEtbWFwLnR4dAo+ID4+ID4gQEAgLTAsMCArMSw1MyBAQAo+ID4+ ID4gK0RldmZyZXEgQ1BVZnJlcSBnb3Zlcm5vcgo+ID4+ID4gKwo+ID4+ID4gK2RldmZyZXEtY3B1 ZnJlcS1tYXAgaXMgYSBwYXJlbnQgZGV2aWNlIHRoYXQgY29udGFpbnMgb25lIG9yIG1vcmUgY2hp bGQgZGV2aWNlcy4KPiA+PiA+ICtFYWNoIGNoaWxkIGRldmljZSBwcm92aWRlcyBDUFUgZnJlcXVl bmN5IHRvIGRldmljZSBmcmVxdWVuY3kgbWFwcGluZyBmb3IgYQo+ID4+ID4gK3NwZWNpZmljIGRl dmljZS4gRXhhbXBsZXMgb2YgZGV2aWNlcyB0aGF0IGNvdWxkIHVzZSB0aGlzIGFyZTogRERSLCBj YWNoZSBhbmQKPiA+PiA+ICtDQ0kuCj4gPj4gPiArCj4gPj4gPiArUGFyZW50IGRldmljZSBuYW1l IHNoYWxsIGJlICJkZXZmcmVxLWNwdWZyZXEtbWFwIi4KPiA+PiA+ICsKPiA+PiA+ICtSZXF1aXJl ZCBjaGlsZCBkZXZpY2UgcHJvcGVydGllczoKPiA+PiA+ICstIGNwdS10by1kZXYtbWFwLCBvciBj cHUtdG8tZGV2LW1hcC08WD46Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9m IHR1cGxlcyB3aGVyZSBlYWNoIHR1cGxlIGNvbnNpc3RzIG9mIGEKPiA+PiA+ICsgICAgICAgICAg ICAgICAgICAgICBDUFUgZnJlcXVlbmN5IChLSHopIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZXZp Y2UKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3kuIENQVSBmcmVxdWVuY2ll cyBub3QgbGlzdGVkIGluIHRoZSB0YWJsZQo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgIHdp bGwgdXNlIHRoZSBkZXZpY2UgZnJlcXVlbmN5IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlCj4gPj4g PiArICAgICAgICAgICAgICAgICAgICAgbmV4dCByb3VuZGVkIHVwIENQVSBmcmVxdWVuY3kuCj4g Pj4gPiArICAgICAgICAgICAgICAgICAgICAgVXNlICJjcHUtdG8tZGV2LW1hcCIgaWYgYWxsIENQ VXMgaW4gdGhlIHN5c3RlbSBzaG91bGQKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICBzaGFy ZSBzYW1lIG1hcHBpbmcuCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgVXNlIGNwdS10by1k ZXYtbWFwLTxjcHVpZD4gdG8gZGVzY3JpYmUgZGlmZmVyZW50Cj4gPj4gPiArICAgICAgICAgICAg ICAgICAgICAgbWFwcGluZ3MgZm9yIGRpZmZlcmVudCBDUFVzLiBUaGUgcHJvcGVydHkgc2hvdWxk IGJlCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgbGlzdGVkIG9ubHkgZm9yIHRoZSBmaXJz dCBDUFUgaWYgbXVsdGlwbGUgQ1BVcyBhcmUKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICBz eW5jaHJvbm91cy4KPiA+PiA+ICstIHRhcmdldC1kZXY6ICAgICAgICAgICAgICAgIFBoYW5kbGUg dG8gZGV2aWNlIHRoYXQgdGhpcyBtYXBwaW5nIGFwcGxpZXMgdG8uCj4gPj4gPiArCj4gPj4gPiAr RXhhbXBsZToKPiA+PiA+ICsgICAgIGRldmZyZXEtY3B1ZnJlcS1tYXAgewo+ID4+ID4gKyAgICAg ICAgICAgICBjcHVidy1jcHVmcmVxIHsKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICB0YXJn ZXQtZGV2ID0gPCZjcHVidz47Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgY3B1LXRvLWRl di1tYXAgPQo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCAgMzAwMDAwICAx MTQ0MDAwID4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ICA0MjI0MDAg IDIyODgwMDAgPiwKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgIDY1Mjgw MCAgMzA1MTAwMCA+LAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCAgODgz MjAwICA1OTk2MDAwID4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IDEx OTA0MDAgIDgwNTYwMDAgPiwKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwg MTQ5NzYwMCAxMDEwMTAwMCA+LAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PCAxNzI4MDAwIDEyMTQ1MDAwID4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8IDI2NDk2MDAgMTYyNTAwMDAgPjsKPiA+PiA+ICsgICAgICAgICAgICAgfTsKPiA+PiA+ICsK PiA+PiA+ICsgICAgICAgICAgICAgY2FjaGUtY3B1ZnJlcSB7Cj4gPj4gPiArICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0LWRldiA9IDwmY2FjaGU+Owo+ID4+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGNwdS10by1kZXYtbWFwID0KPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwgIDMwMDAwMCAgMzAwMDAwID4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8ICA0MjI0MDAgIDQyMjQwMCA+LAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPCAgNjUyODAwICA0OTkyMDAgPiwKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwgIDg4MzIwMCAgNTc2MDAwID4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8ICA5NjAwMDAgIDk2MDAwMCA+LAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPCAxNDk3NjAwIDEwMzY4MDAgPiwKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDwgMTU3NDQwMCAxNTc0NDAwID4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8IDE3MjgwMDAgMTY1MTIwMCA+LAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPCAyNjQ5NjAwIDE3MjgwMDAgPjsKPiA+PiA+ICsgICAgICAgICAgICAgfTsKPiA+ PiA+ICsgICAgIH07Cj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL0tjb25maWcg Yi9kcml2ZXJzL2RldmZyZXEvS2NvbmZpZwo+ID4+ID4gaW5kZXggMGM4MjA0ZDZiNzhhLi4wMzAz ZjVhNDAwYjYgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2RldmZyZXEvS2NvbmZpZwo+ID4+ ID4gKysrIGIvZHJpdmVycy9kZXZmcmVxL0tjb25maWcKPiA+PiA+IEBAIC03NCw2ICs3NCwxNCBA QCBjb25maWcgREVWRlJFUV9HT1ZfUEFTU0lWRQo+ID4+ID4gICAgICAgICB0aHJvdWdoIHN5c2Zz IGVudHJpZXMuIFRoZSBwYXNzaXZlIGdvdmVybm9yIHJlY29tbWVuZHMgdGhhdAo+ID4+ID4gICAg ICAgICBkZXZmcmVxIGRldmljZSB1c2VzIHRoZSBPUFAgdGFibGUgdG8gZ2V0IHRoZSBmcmVxdWVu Y3kvdm9sdGFnZS4KPiA+PiA+Cj4gPj4gPiArY29uZmlnIERFVkZSRVFfR09WX0NQVUZSRVFfTUFQ Cj4gPj4gPiArICAgICB0cmlzdGF0ZSAiQ1BVZnJlcSBNYXAiCj4gPj4gPiArICAgICBkZXBlbmRz IG9uIENQVV9GUkVRCj4gPj4gPiArICAgICBoZWxwCj4gPj4gPiArICAgICAgIENob29zZXMgZnJl cXVlbmN5IGJhc2VkIG9uIHRoZSBvbmxpbmUgQ1BVcycgY3VycmVudCBmcmVxdWVuY3kgYW5kIGEK PiA+PiA+ICsgICAgICAgQ1BVIGZyZXF1ZW5jeSB0byBkZXZpY2UgZnJlcXVlbmN5IG1hcHBpbmcg dGFibGUocykuIFRoaXMgZ292ZXJub3IKPiA+PiA+ICsgICAgICAgY2FuIGJlIHVzZWZ1bCBmb3Ig Y29udHJvbGxpbmcgZGV2aWNlcyBzdWNoIGFzIEREUiwgY2FjaGUsIENDSSwgZXRjLgo+ID4+ID4g Kwo+ID4+ID4gIGNvbW1lbnQgIkRFVkZSRVEgRHJpdmVycyIKPiA+PiA+Cj4gPj4gPiAgY29uZmln IEFSTV9FWFlOT1NfQlVTX0RFVkZSRVEKPiA+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RldmZy ZXEvTWFrZWZpbGUgYi9kcml2ZXJzL2RldmZyZXEvTWFrZWZpbGUKPiA+PiA+IGluZGV4IDgxN2Rk ZTc3OWYxNi4uODExNDFlMmM3ODRmIDEwMDY0NAo+ID4+ID4gLS0tIGEvZHJpdmVycy9kZXZmcmVx L01ha2VmaWxlCj4gPj4gPiArKysgYi9kcml2ZXJzL2RldmZyZXEvTWFrZWZpbGUKPiA+PiA+IEBA IC02LDYgKzYsNyBAQCBvYmotJChDT05GSUdfREVWRlJFUV9HT1ZfUEVSRk9STUFOQ0UpICs9IGdv dmVybm9yX3BlcmZvcm1hbmNlLm8KPiA+PiA+ICBvYmotJChDT05GSUdfREVWRlJFUV9HT1ZfUE9X RVJTQVZFKSAgKz0gZ292ZXJub3JfcG93ZXJzYXZlLm8KPiA+PiA+ICBvYmotJChDT05GSUdfREVW RlJFUV9HT1ZfVVNFUlNQQUNFKSAgKz0gZ292ZXJub3JfdXNlcnNwYWNlLm8KPiA+PiA+ICBvYmot JChDT05GSUdfREVWRlJFUV9HT1ZfUEFTU0lWRSkgICAgKz0gZ292ZXJub3JfcGFzc2l2ZS5vCj4g Pj4gPiArb2JqLSQoQ09ORklHX0RFVkZSRVFfR09WX0NQVUZSRVFfTUFQKSAgICAgICAgKz0gZ292 ZXJub3JfY3B1ZnJlcV9tYXAubwo+ID4+ID4KPiA+PiA+ICAjIERFVkZSRVEgRHJpdmVycwo+ID4+ ID4gIG9iai0kKENPTkZJR19BUk1fRVhZTk9TX0JVU19ERVZGUkVRKSArPSBleHlub3MtYnVzLm8K PiA+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RldmZyZXEvZ292ZXJub3JfY3B1ZnJlcV9tYXAu YyBiL2RyaXZlcnMvZGV2ZnJlcS9nb3Zlcm5vcl9jcHVmcmVxX21hcC5jCj4gPj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wODRhM2ZmYjhmNTQKPiA+ PiA+IC0tLSAvZGV2L251bGwKPiA+PiA+ICsrKyBiL2RyaXZlcnMvZGV2ZnJlcS9nb3Zlcm5vcl9j cHVmcmVxX21hcC5jCj4gPj4gPiBAQCAtMCwwICsxLDU4MyBAQAo+ID4+ID4gKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPj4gPiArLyoKPiA+PiA+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMTQtMjAxNSwgMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCj4gPj4gPiArICovCj4gPj4gPiArCj4gPj4gPiArI2RlZmluZSBwcl9mbXQoZm10KSAi ZGV2LWNwdWZyZXEtbWFwOiAiIGZtdAo+ID4+ID4gKwo+ID4+ID4gKyNpbmNsdWRlIDxsaW51eC9k ZXZmcmVxLmg+Cj4gPj4gPiArI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgo+ID4+ID4gKyNpbmNsdWRl IDxsaW51eC9jcHVmcmVxLmg+Cj4gPj4gPiArI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KPiA+ PiA+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KPiA+PiA+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiA+PiA+ICsjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPj4gPiArI2luY2x1ZGUgImdvdmVybm9yLmgiCj4gPj4g PiArCj4gPj4gPiArc3RydWN0IGNwdV9zdGF0ZSB7Cj4gPj4gPiArICAgICB1bnNpZ25lZCBpbnQg ZnJlcTsKPiA+PiA+ICsgICAgIHVuc2lnbmVkIGludCBtaW5fZnJlcTsKPiA+PiA+ICsgICAgIHVu c2lnbmVkIGludCBtYXhfZnJlcTsKPiA+PiA+ICsgICAgIHVuc2lnbmVkIGludCBmaXJzdF9jcHU7 Cj4gPj4gPiArfTsKPiA+PiA+ICtzdGF0aWMgc3RydWN0IGNwdV9zdGF0ZSAqc3RhdGVbTlJfQ1BV U107Cj4gPj4gPiArc3RhdGljIGludCBjcHVmcmVxX2NudDsKPiA+PiA+ICsKPiA+PiA+ICtzdHJ1 Y3QgZnJlcV9tYXAgewo+ID4+ID4gKyAgICAgdW5zaWduZWQgaW50IGNwdV9raHo7Cj4gPj4gPiAr ICAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0X2ZyZXE7Cj4gPj4gPiArfTsKPiA+PiA+ICsKPiA+PiA+ ICtzdHJ1Y3QgZGV2ZnJlcV9ub2RlIHsKPiA+PiA+ICsgICAgIHN0cnVjdCBkZXZmcmVxICpkZjsK PiA+PiA+ICsgICAgIHZvaWQgKm9yaWdfZGF0YTsKPiA+PiA+ICsgICAgIHN0cnVjdCBkZXZpY2Ug KmRldjsKPiA+PiA+ICsgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZTsKPiA+PiA+ICsg ICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiA+PiA+ICsgICAgIHN0cnVjdCBmcmVxX21hcCAq Km1hcDsKPiA+PiA+ICsgICAgIHN0cnVjdCBmcmVxX21hcCAqY29tbW9uX21hcDsKPiA+PiA+ICt9 Owo+ID4+ID4gK3N0YXRpYyBMSVNUX0hFQUQoZGV2ZnJlcV9saXN0KTsKPiA+PiA+ICtzdGF0aWMg REVGSU5FX01VVEVYKHN0YXRlX2xvY2spOwo+ID4+ID4gK3N0YXRpYyBERUZJTkVfTVVURVgoY3B1 ZnJlcV9yZWdfbG9jayk7Cj4gPj4gPiArCj4gPj4gPiArc3RhdGljIHZvaWQgdXBkYXRlX2FsbF9k ZXZmcmVxcyh2b2lkKQo+ID4+ID4gK3sKPiA+PiA+ICsgICAgIHN0cnVjdCBkZXZmcmVxX25vZGUg Km5vZGU7Cj4gPj4gPiArCj4gPj4gPiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZk ZXZmcmVxX2xpc3QsIGxpc3QpIHsKPiA+PiA+ICsgICAgICAgICAgICAgc3RydWN0IGRldmZyZXEg KmRmID0gbm9kZS0+ZGY7Cj4gPj4gPiArCj4gPj4gPiArICAgICAgICAgICAgIGlmICghbm9kZS0+ ZGYpCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4gPiArICAgICAg ICAgICAgIG11dGV4X2xvY2soJmRmLT5sb2NrKTsKPiA+PiA+ICsgICAgICAgICAgICAgdXBkYXRl X2RldmZyZXEoZGYpOwo+ID4+ID4gKyAgICAgICAgICAgICBtdXRleF91bmxvY2soJmRmLT5sb2Nr KTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIH0KPiA+PiA+ICt9Cj4gPj4gPiArCj4gPj4gPiArc3Rh dGljIHN0cnVjdCBkZXZmcmVxX25vZGUgKmZpbmRfZGV2ZnJlcV9ub2RlKHN0cnVjdCBkZXZpY2Ug KmRldikKPiA+PiA+ICt7Cj4gPj4gPiArICAgICBzdHJ1Y3QgZGV2ZnJlcV9ub2RlICpub2RlOwo+ ID4+ID4gKwo+ID4+ID4gKyAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmZGV2ZnJlcV9s aXN0LCBsaXN0KQo+ID4+ID4gKyAgICAgICAgICAgICBpZiAobm9kZS0+ZGV2ID09IGRldiB8fCBu b2RlLT5vZl9ub2RlID09IGRldi0+b2Zfbm9kZSkKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gbm9kZTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIHJldHVybiBOVUxMOwo+ID4+ID4g K30KPiA+PiA+ICsKPiA+PiA+ICsvKiA9PT09PT09PT09PT09PT09PT09PSBjcHVmcmVxIHBhcnQg PT09PT09PT09PT09PT09PT09PT0gKi8KPiA+PiA+ICtzdGF0aWMgc3RydWN0IGNwdV9zdGF0ZSAq YWRkX3BvbGljeShzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSkKPiA+PiA+ICt7Cj4gPj4g PiArICAgICBzdHJ1Y3QgY3B1X3N0YXRlICpuZXdfc3RhdGU7Cj4gPj4gPiArICAgICB1bnNpZ25l ZCBpbnQgY3B1LCBmaXJzdF9jcHU7Cj4gPj4gPiArCj4gPj4gPiArICAgICBuZXdfc3RhdGUgPSBr emFsbG9jKHNpemVvZihzdHJ1Y3QgY3B1X3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gPj4gPiArICAg ICBpZiAoIW5ld19zdGF0ZSkKPiA+PiA+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPj4g PiArCj4gPj4gPiArICAgICBmaXJzdF9jcHUgPSBjcHVtYXNrX2ZpcnN0KHBvbGljeS0+cmVsYXRl ZF9jcHVzKTsKPiA+PiA+ICsgICAgIG5ld19zdGF0ZS0+Zmlyc3RfY3B1ID0gZmlyc3RfY3B1Owo+ ID4+ID4gKyAgICAgbmV3X3N0YXRlLT5mcmVxID0gcG9saWN5LT5jdXI7Cj4gPj4gPiArICAgICBu ZXdfc3RhdGUtPm1pbl9mcmVxID0gcG9saWN5LT5jcHVpbmZvLm1pbl9mcmVxOwo+ID4+ID4gKyAg ICAgbmV3X3N0YXRlLT5tYXhfZnJlcSA9IHBvbGljeS0+Y3B1aW5mby5tYXhfZnJlcTsKPiA+PiA+ ICsKPiA+PiA+ICsgICAgIGZvcl9lYWNoX2NwdShjcHUsIHBvbGljeS0+cmVsYXRlZF9jcHVzKQo+ ID4+ID4gKyAgICAgICAgICAgICBzdGF0ZVtjcHVdID0gbmV3X3N0YXRlOwo+ID4+ID4gKwo+ID4+ ID4gKyAgICAgcmV0dXJuIG5ld19zdGF0ZTsKPiA+PiA+ICt9Cj4gPj4gPiArCj4gPj4gPiArc3Rh dGljIGludCBjcHVmcmVxX3RyYW5zX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIs Cj4gPj4gPiArICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpCj4g Pj4gPiArewo+ID4+ID4gKyAgICAgc3RydWN0IGNwdWZyZXFfZnJlcXMgKmZyZXEgPSBkYXRhOwo+ ID4+ID4gKyAgICAgc3RydWN0IGNwdV9zdGF0ZSAqczsKPiA+PiA+ICsgICAgIHN0cnVjdCBjcHVm cmVxX3BvbGljeSAqcG9saWN5ID0gTlVMTDsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIGlmIChldmVu dCAhPSBDUFVGUkVRX1BPU1RDSEFOR0UpCj4gPj4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4+ID4gKwo+ID4+ID4gKyAgICAgbXV0ZXhfbG9jaygmc3RhdGVfbG9jayk7Cj4gPj4gPiArCj4g Pj4gPiArICAgICBzID0gc3RhdGVbZnJlcS0+Y3B1XTsKPiA+PiA+ICsgICAgIGlmICghcykgewo+ ID4+ID4gKyAgICAgICAgICAgICBwb2xpY3kgPSBjcHVmcmVxX2NwdV9nZXQoZnJlcS0+Y3B1KTsK PiA+PiA+ICsgICAgICAgICAgICAgaWYgKHBvbGljeSkgewo+ID4+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHMgPSBhZGRfcG9saWN5KHBvbGljeSk7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAg ICAgY3B1ZnJlcV9jcHVfcHV0KHBvbGljeSk7Cj4gPj4gPiArICAgICAgICAgICAgIH0KPiA+PiA+ ICsgICAgIH0KPiA+PiA+ICsgICAgIGlmICghcykKPiA+PiA+ICsgICAgICAgICAgICAgZ290byBv dXQ7Cj4gPj4gPiArCj4gPj4gPiArICAgICBpZiAocy0+ZnJlcSAhPSBmcmVxLT5uZXcgfHwgcG9s aWN5KSB7Cj4gPj4gPiArICAgICAgICAgICAgIHMtPmZyZXEgPSBmcmVxLT5uZXc7Cj4gPj4gPiAr ICAgICAgICAgICAgIHVwZGF0ZV9hbGxfZGV2ZnJlcXMoKTsKPiA+PiA+ICsgICAgIH0KPiA+PiA+ ICsKPiA+PiA+ICtvdXQ6Cj4gPj4gPiArICAgICBtdXRleF91bmxvY2soJnN0YXRlX2xvY2spOwo+ ID4+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyBz dHJ1Y3Qgbm90aWZpZXJfYmxvY2sgY3B1ZnJlcV90cmFuc19uYiA9IHsKPiA+PiA+ICsgICAgIC5u b3RpZmllcl9jYWxsID0gY3B1ZnJlcV90cmFuc19ub3RpZmllcgo+ID4+ID4gK307Cj4gPj4gPiAr Cj4gPj4gPiArc3RhdGljIGludCByZWdpc3Rlcl9jcHVmcmVxKHZvaWQpCj4gPj4gPiArewo+ID4+ ID4gKyAgICAgaW50IHJldCA9IDA7Cj4gPj4gPiArICAgICB1bnNpZ25lZCBpbnQgY3B1Owo+ID4+ ID4gKyAgICAgc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3k7Cj4gPj4gPiArCj4gPj4gPiAr ICAgICBtdXRleF9sb2NrKCZjcHVmcmVxX3JlZ19sb2NrKTsKPiA+PiA+ICsKPiA+PiA+ICsgICAg IGlmIChjcHVmcmVxX2NudCkKPiA+PiA+ICsgICAgICAgICAgICAgZ290byBjbnRfbm90X3plcm87 Cj4gPj4gPiArCj4gPj4gPiArICAgICBnZXRfb25saW5lX2NwdXMoKTsKPiA+PiA+ICsgICAgIHJl dCA9IGNwdWZyZXFfcmVnaXN0ZXJfbm90aWZpZXIoJmNwdWZyZXFfdHJhbnNfbmIsCj4gPj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVGUkVRX1RSQU5TSVRJT05fTk9USUZJRVIp Owo+ID4+ID4gKyAgICAgaWYgKHJldCkKPiA+PiA+ICsgICAgICAgICAgICAgZ290byBvdXQ7Cj4g Pj4gPiArCj4gPj4gPiArICAgICBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkgewo+ID4+ID4gKyAg ICAgICAgICAgICBwb2xpY3kgPSBjcHVmcmVxX2NwdV9nZXQoY3B1KTsKPiA+PiA+ICsgICAgICAg ICAgICAgaWYgKHBvbGljeSkgewo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGFkZF9wb2xp Y3kocG9saWN5KTsKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICBjcHVmcmVxX2NwdV9wdXQo cG9saWN5KTsKPiA+PiA+ICsgICAgICAgICAgICAgfQo+ID4+ID4gKyAgICAgfQo+ID4+ID4gK291 dDoKPiA+PiA+ICsgICAgIHB1dF9vbmxpbmVfY3B1cygpOwo+ID4+ID4gK2NudF9ub3RfemVybzoK PiA+PiA+ICsgICAgIGlmICghcmV0KQo+ID4+ID4gKyAgICAgICAgICAgICBjcHVmcmVxX2NudCsr Owo+ID4+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZjcHVmcmVxX3JlZ19sb2NrKTsKPiA+PiA+ICsg ICAgIHJldHVybiByZXQ7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyBpbnQgdW5y ZWdpc3Rlcl9jcHVmcmVxKHZvaWQpCj4gPj4gPiArewo+ID4+ID4gKyAgICAgaW50IHJldCA9IDA7 Cj4gPj4gPiArICAgICBpbnQgY3B1Owo+ID4+ID4gKwo+ID4+ID4gKyAgICAgbXV0ZXhfbG9jaygm Y3B1ZnJlcV9yZWdfbG9jayk7Cj4gPj4gPiArCj4gPj4gPiArICAgICBpZiAoY3B1ZnJlcV9jbnQg PiAxKQo+ID4+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsKPiA+PiA+ICsKPiA+PiA+ICsgICAg IGNwdWZyZXFfdW5yZWdpc3Rlcl9ub3RpZmllcigmY3B1ZnJlcV90cmFuc19uYiwKPiA+PiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVUZSRVFfVFJBTlNJVElPTl9OT1RJRklFUik7 Cj4gPj4gPiArCj4gPj4gPiArICAgICBmb3IgKGNwdSA9IEFSUkFZX1NJWkUoc3RhdGUpIC0gMTsg Y3B1ID49IDA7IGNwdS0tKSB7Cj4gPj4gPiArICAgICAgICAgICAgIGlmICghc3RhdGVbY3B1XSkK PiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+PiA+ICsgICAgICAgICAg ICAgaWYgKHN0YXRlW2NwdV0tPmZpcnN0X2NwdSA9PSBjcHUpCj4gPj4gPiArICAgICAgICAgICAg ICAgICAgICAga2ZyZWUoc3RhdGVbY3B1XSk7Cj4gPj4gPiArICAgICAgICAgICAgIHN0YXRlW2Nw dV0gPSBOVUxMOwo+ID4+ID4gKyAgICAgfQo+ID4+ID4gKwo+ID4+ID4gK291dDoKPiA+PiA+ICsg ICAgIGNwdWZyZXFfY250LS07Cj4gPj4gPiArICAgICBtdXRleF91bmxvY2soJmNwdWZyZXFfcmVn X2xvY2spOwo+ID4+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+PiA+ICt9Cj4gPj4gPiArCj4gPj4g PiArLyogPT09PT09PT09PT09PT09PT09PT0gZGV2ZnJlcSBwYXJ0ID09PT09PT09PT09PT09PT09 PT09ICovCj4gPj4gPiArCj4gPj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBpbnRlcnBvbGF0ZV9m cmVxKHN0cnVjdCBkZXZmcmVxICpkZiwgdW5zaWduZWQgaW50IGNwdSkKPiA+PiA+ICt7Cj4gPj4g PiArICAgICB1bnNpZ25lZCBsb25nICpmcmVxX3RhYmxlID0gZGYtPnByb2ZpbGUtPmZyZXFfdGFi bGU7Cj4gPj4gPiArICAgICB1bnNpZ25lZCBpbnQgY3B1X21pbiA9IHN0YXRlW2NwdV0tPm1pbl9m cmVxOwo+ID4+ID4gKyAgICAgdW5zaWduZWQgaW50IGNwdV9tYXggPSBzdGF0ZVtjcHVdLT5tYXhf ZnJlcTsKPiA+PiA+ICsgICAgIHVuc2lnbmVkIGludCBjcHVfZnJlcSA9IHN0YXRlW2NwdV0tPmZy ZXE7Cj4gPj4gPiArICAgICB1bnNpZ25lZCBpbnQgZGV2X21pbiwgZGV2X21heCwgY3B1X3BlcmNl bnQ7Cj4gPj4gPiArCj4gPj4gPiArICAgICBpZiAoZnJlcV90YWJsZSkgewo+ID4+ID4gKyAgICAg ICAgICAgICBkZXZfbWluID0gZnJlcV90YWJsZVswXTsKPiA+PiA+ICsgICAgICAgICAgICAgZGV2 X21heCA9IGZyZXFfdGFibGVbZGYtPnByb2ZpbGUtPm1heF9zdGF0ZSAtIDFdOwo+ID4+ID4gKyAg ICAgfSBlbHNlIHsKPiA+PiA+ICsgICAgICAgICAgICAgaWYgKGRmLT5tYXhfZnJlcSA8PSBkZi0+ bWluX2ZyZXEpCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gPiAr ICAgICAgICAgICAgIGRldl9taW4gPSBkZi0+bWluX2ZyZXE7Cj4gPj4gPiArICAgICAgICAgICAg IGRldl9tYXggPSBkZi0+bWF4X2ZyZXE7Cj4gPj4gPiArICAgICB9Cj4gPj4gPiArCj4gPj4gPiAr ICAgICBjcHVfcGVyY2VudCA9ICgoY3B1X2ZyZXEgLSBjcHVfbWluKSAqIDEwMCkgLyAoY3B1X21h eCAtIGNwdV9taW4pOwo+ID4+ID4gKyAgICAgcmV0dXJuIGRldl9taW4gKyBtdWx0X2ZyYWMoZGV2 X21heCAtIGRldl9taW4sIGNwdV9wZXJjZW50LCAxMDApOwo+ID4+ID4gK30KPiA+PiA+ICsKPiA+ PiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IGNwdV90b19kZXZfZnJlcShzdHJ1Y3QgZGV2ZnJlcSAq ZGYsIHVuc2lnbmVkIGludCBjcHUpCj4gPj4gPiArewo+ID4+ID4gKyAgICAgc3RydWN0IGZyZXFf bWFwICptYXAgPSBOVUxMOwo+ID4+ID4gKyAgICAgdW5zaWduZWQgaW50IGNwdV9raHogPSAwLCBm cmVxOwo+ID4+ID4gKyAgICAgc3RydWN0IGRldmZyZXFfbm9kZSAqbiA9IGRmLT5kYXRhOwo+ID4+ ID4gKwo+ID4+ID4gKyAgICAgaWYgKCFzdGF0ZVtjcHVdIHx8IHN0YXRlW2NwdV0tPmZpcnN0X2Nw dSAhPSBjcHUpIHsKPiA+PiA+ICsgICAgICAgICAgICAgZnJlcSA9IDA7Cj4gPj4gPiArICAgICAg ICAgICAgIGdvdG8gb3V0Owo+ID4+ID4gKyAgICAgfQo+ID4+ID4gKwo+ID4+ID4gKyAgICAgaWYg KG4tPmNvbW1vbl9tYXApCj4gPj4gPiArICAgICAgICAgICAgIG1hcCA9IG4tPmNvbW1vbl9tYXA7 Cj4gPj4gPiArICAgICBlbHNlIGlmIChuLT5tYXApCj4gPj4gPiArICAgICAgICAgICAgIG1hcCA9 IG4tPm1hcFtjcHVdOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAgY3B1X2toeiA9IHN0YXRlW2NwdV0t PmZyZXE7Cj4gPj4gPiArCj4gPj4gPiArICAgICBpZiAoIW1hcCkgewo+ID4+ID4gKyAgICAgICAg ICAgICBmcmVxID0gaW50ZXJwb2xhdGVfZnJlcShkZiwgY3B1KTsKPiA+PiA+ICsgICAgICAgICAg ICAgZ290byBvdXQ7Cj4gPj4gPiArICAgICB9Cj4gPj4gPiArCj4gPj4gPiArICAgICB3aGlsZSAo bWFwLT5jcHVfa2h6ICYmIG1hcC0+Y3B1X2toeiA8IGNwdV9raHopCj4gPj4gPiArICAgICAgICAg ICAgIG1hcCsrOwo+ID4+ID4gKyAgICAgaWYgKCFtYXAtPmNwdV9raHopCj4gPj4gPiArICAgICAg ICAgICAgIG1hcC0tOwo+ID4+ID4gKyAgICAgZnJlcSA9IG1hcC0+dGFyZ2V0X2ZyZXE7Cj4gPj4g PiArCj4gPj4gPiArb3V0Ogo+ID4+ID4gKyAgICAgZGV2X2RiZyhkZi0+ZGV2LnBhcmVudCwgIkNQ VSV1OiAlZCAtPiBkZXY6ICV1XG4iLCBjcHUsIGNwdV9raHosIGZyZXEpOwo+ID4+ID4gKyAgICAg cmV0dXJuIGZyZXE7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyBpbnQgZGV2ZnJl cV9jcHVmcmVxX2dldF9mcmVxKHN0cnVjdCBkZXZmcmVxICpkZiwKPiA+PiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZnJlcSkKPiA+PiA+ICt7 Cj4gPj4gPiArICAgICB1bnNpZ25lZCBpbnQgY3B1LCB0Z3RfZnJlcSA9IDA7Cj4gPj4gPiArICAg ICBzdHJ1Y3QgZGV2ZnJlcV9ub2RlICpub2RlOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAgbm9kZSA9 IGRmLT5kYXRhOwo+ID4+ID4gKyAgICAgaWYgKCFub2RlKSB7Cj4gPj4gPiArICAgICAgICAgICAg IHByX2VycigiVW5hYmxlIHRvIGZpbmQgZGV2ZnJlcSBub2RlIVxuIik7Cj4gPj4gPiArICAgICAg ICAgICAgIHJldHVybiAtRU5PREVWOwo+ID4+ID4gKyAgICAgfQo+ID4+ID4gKwo+ID4+ID4gKyAg ICAgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkKPiA+PiA+ICsgICAgICAgICAgICAgdGd0X2Zy ZXEgPSBtYXgodGd0X2ZyZXEsIGNwdV90b19kZXZfZnJlcShkZiwgY3B1KSk7Cj4gPj4gPiArCj4g Pj4gPiArICAgICAqZnJlcSA9IHRndF9mcmVxOwo+ID4+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPj4g PiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgc2hvd190YWJsZShjaGFy ICpidWYsIHVuc2lnbmVkIGludCBsZW4sCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZnJlcV9tYXAgKm1hcCkKPiA+PiA+ICt7Cj4gPj4gPiArICAgICB1bnNpZ25l ZCBpbnQgY250ID0gMDsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIGNudCArPSBzbnByaW50ZihidWYg KyBjbnQsIGxlbiAtIGNudCwgIkNQVSBmcmVxXHREZXZpY2UgZnJlcVxuIik7Cj4gPj4gPiArCj4g Pj4gPiArICAgICB3aGlsZSAobWFwLT5jcHVfa2h6ICYmIGNudCA8IGxlbikgewo+ID4+ID4gKyAg ICAgICAgICAgICBjbnQgKz0gc25wcmludGYoYnVmICsgY250LCBsZW4gLSBjbnQsICIlOHVcdCUx MXVcbiIsCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAtPmNwdV9raHos IG1hcC0+dGFyZ2V0X2ZyZXEpOwo+ID4+ID4gKyAgICAgICAgICAgICBtYXArKzsKPiA+PiA+ICsg ICAgIH0KPiA+PiA+ICsgICAgIGlmIChjbnQgPCBsZW4pCj4gPj4gPiArICAgICAgICAgICAgIGNu dCArPSBzbnByaW50ZihidWYgKyBjbnQsIGxlbiAtIGNudCwgIlxuIik7Cj4gPj4gPiArCj4gPj4g PiArICAgICByZXR1cm4gY250Owo+ID4+ID4gK30KPiA+PiA+ICsKPiA+PiA+ICtzdGF0aWMgc3Np emVfdCBmcmVxX21hcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmKQo+ID4+ ID4gK3sKPiA+PiA+ICsgICAgIHN0cnVjdCBkZXZmcmVxICpkZiA9IHRvX2RldmZyZXEoZGV2KTsK PiA+PiA+ICsgICAgIHN0cnVjdCBkZXZmcmVxX25vZGUgKm4gPSBkZi0+ZGF0YTsKPiA+PiA+ICsg ICAgIHN0cnVjdCBmcmVxX21hcCAqbWFwOwo+ID4+ID4gKyAgICAgdW5zaWduZWQgaW50IGNudCA9 IDAsIGNwdTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIG11dGV4X2xvY2soJnN0YXRlX2xvY2spOwo+ ID4+ID4gKyAgICAgaWYgKG4tPmNvbW1vbl9tYXApIHsKPiA+PiA+ICsgICAgICAgICAgICAgbWFw ID0gbi0+Y29tbW9uX21hcDsKPiA+PiA+ICsgICAgICAgICAgICAgY250ICs9IHNucHJpbnRmKGJ1 ZiArIGNudCwgUEFHRV9TSVpFIC0gY250LAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkNvbW1vbiB0YWJsZSBmb3IgYWxsIENQVXM6XG4iKTsKPiA+PiA+ICsgICAgICAgICAg ICAgY250ICs9IHNob3dfdGFibGUoYnVmICsgY250LCBQQUdFX1NJWkUgLSBjbnQsIG1hcCk7Cj4g Pj4gPiArICAgICB9IGVsc2UgaWYgKG4tPm1hcCkgewo+ID4+ID4gKyAgICAgICAgICAgICBmb3Jf ZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgbWFw ID0gbi0+bWFwW2NwdV07Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXApCj4g Pj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+PiA+ICsgICAg ICAgICAgICAgICAgICAgICBjbnQgKz0gc25wcmludGYoYnVmICsgY250LCBQQUdFX1NJWkUgLSBj bnQsCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDUFUgJXU6 XG4iLCBjcHUpOwo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChjbnQgPj0gUEFHRV9T SVpFKQo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4gPiAr ICAgICAgICAgICAgICAgICAgICAgY250ICs9IHNob3dfdGFibGUoYnVmICsgY250LCBQQUdFX1NJ WkUgLSBjbnQsIG1hcCk7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGNudCA+PSBQ QUdFX1NJWkUpCj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ PiA+ICsgICAgICAgICAgICAgfQo+ID4+ID4gKyAgICAgfSBlbHNlIHsKPiA+PiA+ICsgICAgICAg ICAgICAgY250ICs9IHNucHJpbnRmKGJ1ZiArIGNudCwgUEFHRV9TSVpFIC0gY250LAo+ID4+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRldmljZSBmcmVxIGludGVycG9sYXRlZCBi YXNlZCBvbiBDUFUgZnJlcVxuIik7Cj4gPj4gPiArICAgICB9Cj4gPj4gPiArICAgICBtdXRleF91 bmxvY2soJnN0YXRlX2xvY2spOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAgcmV0dXJuIGNudDsKPiA+ PiA+ICt9Cj4gPj4gPiArCj4gPj4gPiArc3RhdGljIERFVklDRV9BVFRSX1JPKGZyZXFfbWFwKTsK PiA+PiA+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGV2X2F0dHJbXSA9IHsKPiA+PiA+ICsg ICAgICZkZXZfYXR0cl9mcmVxX21hcC5hdHRyLAo+ID4+ID4gKyAgICAgTlVMTCwKPiA+PiA+ICt9 Owo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRldl9hdHRy X2dyb3VwID0gewo+ID4+ID4gKyAgICAgLm5hbWUgPSAiY3B1ZnJlcS1tYXAiLAo+ID4+ID4gKyAg ICAgLmF0dHJzID0gZGV2X2F0dHIsCj4gPj4gPiArfTsKPiA+PiA+ICsKPiA+PiA+ICtzdGF0aWMg aW50IGRldmZyZXFfY3B1ZnJlcV9nb3Zfc3RhcnQoc3RydWN0IGRldmZyZXEgKmRldmZyZXEpCj4g Pj4gPiArewo+ID4+ID4gKyAgICAgaW50IHJldCA9IDA7Cj4gPj4gPiArICAgICBzdHJ1Y3QgZGV2 ZnJlcV9ub2RlICpub2RlOwo+ID4+ID4gKyAgICAgYm9vbCBhbGxvYyA9IGZhbHNlOwo+ID4+ID4g Kwo+ID4+ID4gKyAgICAgcmV0ID0gcmVnaXN0ZXJfY3B1ZnJlcSgpOwo+ID4+ID4gKyAgICAgaWYg KHJldCkKPiA+PiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+PiA+ICsKPiA+PiA+ICsg ICAgIHJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmZGV2ZnJlcS0+ZGV2LmtvYmosICZkZXZfYXR0 cl9ncm91cCk7Cj4gPj4gPiArICAgICBpZiAocmV0KSB7Cj4gPj4gPiArICAgICAgICAgICAgIHVu cmVnaXN0ZXJfY3B1ZnJlcSgpOwo+ID4+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ ID4gKyAgICAgfQo+ID4+ID4gKwo+ID4+ID4gKyAgICAgbXV0ZXhfbG9jaygmc3RhdGVfbG9jayk7 Cj4gPj4gPiArCj4gPj4gPiArICAgICBub2RlID0gZmluZF9kZXZmcmVxX25vZGUoZGV2ZnJlcS0+ ZGV2LnBhcmVudCk7Cj4gPj4gPiArICAgICBpZiAobm9kZSA9PSBOVUxMKSB7Cj4gPj4gPiArICAg ICAgICAgICAgIG5vZGUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZGV2ZnJlcV9ub2RlKSwgR0ZQ X0tFUk5FTCk7Cj4gPj4gPiArICAgICAgICAgICAgIGlmICghbm9kZSkgewo+ID4+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gPj4gPiArICAgICAgICAgICAgICAgICAg ICAgZ290byBhbGxvY19mYWlsOwo+ID4+ID4gKyAgICAgICAgICAgICB9Cj4gPj4gPiArICAgICAg ICAgICAgIGFsbG9jID0gdHJ1ZTsKPiA+PiA+ICsgICAgICAgICAgICAgbm9kZS0+ZGV2ID0gZGV2 ZnJlcS0+ZGV2LnBhcmVudDsKPiA+PiA+ICsgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmbm9k ZS0+bGlzdCwgJmRldmZyZXFfbGlzdCk7Cj4gPj4gPiArICAgICB9Cj4gPj4gPiArICAgICBub2Rl LT5kZiA9IGRldmZyZXE7Cj4gPj4gPiArICAgICBub2RlLT5vcmlnX2RhdGEgPSBkZXZmcmVxLT5k YXRhOwo+ID4+ID4gKyAgICAgZGV2ZnJlcS0+ZGF0YSA9IG5vZGU7Cj4gPj4gPiArCj4gPj4gPiAr ICAgICBtdXRleF9sb2NrKCZkZXZmcmVxLT5sb2NrKTsKPiA+PiA+ICsgICAgIHJldCA9IHVwZGF0 ZV9kZXZmcmVxKGRldmZyZXEpOwo+ID4+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZkZXZmcmVxLT5s b2NrKTsKPiA+PiA+ICsgICAgIGlmIChyZXQpIHsKPiA+PiA+ICsgICAgICAgICAgICAgcHJfZXJy KCJGcmVxIHVwZGF0ZSBmYWlsZWQhXG4iKTsKPiA+PiA+ICsgICAgICAgICAgICAgZ290byB1cGRh dGVfZmFpbDsKPiA+PiA+ICsgICAgIH0KPiA+PiA+ICsKPiA+PiA+ICsgICAgIG11dGV4X3VubG9j aygmc3RhdGVfbG9jayk7Cj4gPj4gPiArICAgICByZXR1cm4gMDsKPiA+PiA+ICsKPiA+PiA+ICt1 cGRhdGVfZmFpbDoKPiA+PiA+ICsgICAgIGRldmZyZXEtPmRhdGEgPSBub2RlLT5vcmlnX2RhdGE7 Cj4gPj4gPiArICAgICBpZiAoYWxsb2MpIHsKPiA+PiA+ICsgICAgICAgICAgICAgbGlzdF9kZWwo Jm5vZGUtPmxpc3QpOwo+ID4+ID4gKyAgICAgICAgICAgICBrZnJlZShub2RlKTsKPiA+PiA+ICsg ICAgIH0KPiA+PiA+ICthbGxvY19mYWlsOgo+ID4+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZzdGF0 ZV9sb2NrKTsKPiA+PiA+ICsgICAgIHN5c2ZzX3JlbW92ZV9ncm91cCgmZGV2ZnJlcS0+ZGV2Lmtv YmosICZkZXZfYXR0cl9ncm91cCk7Cj4gPj4gPiArICAgICB1bnJlZ2lzdGVyX2NwdWZyZXEoKTsK PiA+PiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRp YyB2b2lkIGRldmZyZXFfY3B1ZnJlcV9nb3Zfc3RvcChzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcSkK PiA+PiA+ICt7Cj4gPj4gPiArICAgICBzdHJ1Y3QgZGV2ZnJlcV9ub2RlICpub2RlID0gZGV2ZnJl cS0+ZGF0YTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIG11dGV4X2xvY2soJnN0YXRlX2xvY2spOwo+ ID4+ID4gKyAgICAgZGV2ZnJlcS0+ZGF0YSA9IG5vZGUtPm9yaWdfZGF0YTsKPiA+PiA+ICsgICAg IGlmIChub2RlLT5tYXAgfHwgbm9kZS0+Y29tbW9uX21hcCkgewo+ID4+ID4gKyAgICAgICAgICAg ICBub2RlLT5kZiA9IE5VTEw7Cj4gPj4gPiArICAgICB9IGVsc2Ugewo+ID4+ID4gKyAgICAgICAg ICAgICBsaXN0X2RlbCgmbm9kZS0+bGlzdCk7Cj4gPj4gPiArICAgICAgICAgICAgIGtmcmVlKG5v ZGUpOwo+ID4+ID4gKyAgICAgfQo+ID4+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZzdGF0ZV9sb2Nr KTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIHN5c2ZzX3JlbW92ZV9ncm91cCgmZGV2ZnJlcS0+ZGV2 LmtvYmosICZkZXZfYXR0cl9ncm91cCk7Cj4gPj4gPiArICAgICB1bnJlZ2lzdGVyX2NwdWZyZXEo KTsKPiA+PiA+ICt9Cj4gPj4gPiArCj4gPj4gPiArc3RhdGljIGludCBkZXZmcmVxX2NwdWZyZXFf ZXZfaGFuZGxlcihzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcSwKPiA+PiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV2ZW50LCB2b2lkICpkYXRhKQo+ ID4+ID4gK3sKPiA+PiA+ICsgICAgIGludCByZXQ7Cj4gPj4gPiArCj4gPj4gPiArICAgICBzd2l0 Y2ggKGV2ZW50KSB7Cj4gPj4gPiArICAgICBjYXNlIERFVkZSRVFfR09WX1NUQVJUOgo+ID4+ID4g Kwo+ID4+ID4gKyAgICAgICAgICAgICByZXQgPSBkZXZmcmVxX2NwdWZyZXFfZ292X3N0YXJ0KGRl dmZyZXEpOwo+ID4+ID4gKyAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gPj4gPiArICAgICAgICAg ICAgICAgICAgICAgcHJfZXJyKCJHb3Zlcm5vciBzdGFydCBmYWlsZWQhXG4iKTsKPiA+PiA+ICsg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ID4gKyAgICAgICAgICAgICB9Cj4g Pj4gPiArICAgICAgICAgICAgIHByX2RlYnVnKCJFbmFibGVkIENQVWZyZXEtbWFwIGdvdmVybm9y XG4iKTsKPiA+PiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPj4gPiArCj4gPj4gPiArICAgICBj YXNlIERFVkZSRVFfR09WX1NUT1A6Cj4gPj4gPiArCj4gPj4gPiArICAgICAgICAgICAgIGRldmZy ZXFfY3B1ZnJlcV9nb3Zfc3RvcChkZXZmcmVxKTsKPiA+PiA+ICsgICAgICAgICAgICAgcHJfZGVi dWcoIkRpc2FibGVkIGRldiBDUFVmcmVxLW1hcCBnb3Zlcm5vclxuIik7Cj4gPj4gPiArICAgICAg ICAgICAgIGJyZWFrOwo+ID4+ID4gKyAgICAgfQo+ID4+ID4gKwo+ID4+ID4gKyAgICAgcmV0dXJu IDA7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyBzdHJ1Y3QgZGV2ZnJlcV9nb3Zl cm5vciBkZXZmcmVxX2NwdWZyZXEgPSB7Cj4gPj4gPiArICAgICAubmFtZSA9ICJjcHVmcmVxLW1h cCIsCj4gPj4gPiArICAgICAuZ2V0X3RhcmdldF9mcmVxID0gZGV2ZnJlcV9jcHVmcmVxX2dldF9m cmVxLAo+ID4+ID4gKyAgICAgLmV2ZW50X2hhbmRsZXIgPSBkZXZmcmVxX2NwdWZyZXFfZXZfaGFu ZGxlciwKPiA+PiA+ICt9Owo+ID4+ID4gKwo+ID4+ID4gKyNkZWZpbmUgTlVNX0NPTFMgICAgIDIK PiA+PiA+ICtzdGF0aWMgc3RydWN0IGZyZXFfbWFwICpyZWFkX3RibChzdHJ1Y3QgZGV2aWNlX25v ZGUgKm9mX25vZGUsIGNoYXIgKnByb3BfbmFtZSkKPiA+PiA+ICt7Cj4gPj4gPiArICAgICBpbnQg bGVuLCBuZiwgaSwgajsKPiA+PiA+ICsgICAgIHUzMiBkYXRhOwo+ID4+ID4gKyAgICAgc3RydWN0 IGZyZXFfbWFwICp0Ymw7Cj4gPj4gPiArCj4gPj4gPiArICAgICBpZiAoIW9mX2ZpbmRfcHJvcGVy dHkob2Zfbm9kZSwgcHJvcF9uYW1lLCAmbGVuKSkKPiA+PiA+ICsgICAgICAgICAgICAgcmV0dXJu IE5VTEw7Cj4gPj4gPiArICAgICBsZW4gLz0gc2l6ZW9mKGRhdGEpOwo+ID4+ID4gKwo+ID4+ID4g KyAgICAgaWYgKGxlbiAlIE5VTV9DT0xTIHx8IGxlbiA9PSAwKQo+ID4+ID4gKyAgICAgICAgICAg ICByZXR1cm4gTlVMTDsKPiA+PiA+ICsgICAgIG5mID0gbGVuIC8gTlVNX0NPTFM7Cj4gPj4gPiAr Cj4gPj4gPiArICAgICB0YmwgPSBremFsbG9jKChuZiArIDEpICogc2l6ZW9mKCp0YmwpLCBHRlBf S0VSTkVMKTsKPiA+PiA+ICsgICAgIGlmICghdGJsKQo+ID4+ID4gKyAgICAgICAgICAgICByZXR1 cm4gTlVMTDsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbmY7 IGkrKywgaiArPSAyKSB7Cj4gPj4gPiArICAgICAgICAgICAgIG9mX3Byb3BlcnR5X3JlYWRfdTMy X2luZGV4KG9mX25vZGUsIHByb3BfbmFtZSwgaiwgJmRhdGEpOwo+ID4+ID4gKyAgICAgICAgICAg ICB0YmxbaV0uY3B1X2toeiA9IGRhdGE7Cj4gPj4gPiArCj4gPj4gPiArICAgICAgICAgICAgIG9m X3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KG9mX25vZGUsIHByb3BfbmFtZSwgaiArIDEsICZkYXRh KTsKPiA+PiA+ICsgICAgICAgICAgICAgdGJsW2ldLnRhcmdldF9mcmVxID0gZGF0YTsKPiA+PiA+ ICsgICAgIH0KPiA+PiA+ICsgICAgIHRibFtpXS5jcHVfa2h6ID0gMDsKPiA+PiA+ICsKPiA+PiA+ ICsgICAgIHJldHVybiB0Ymw7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gKyNkZWZpbmUgUFJP UF9UQVJHRVQgInRhcmdldC1kZXYiCj4gPj4gPiArI2RlZmluZSBQUk9QX1RBQkxFICJjcHUtdG8t ZGV2LW1hcCIKPiA+PiA+ICtzdGF0aWMgaW50IGFkZF90YWJsZV9mcm9tX29mKHN0cnVjdCBkZXZp Y2Vfbm9kZSAqb2Zfbm9kZSkKPiA+PiA+ICt7Cj4gPj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlX25v ZGUgKnRhcmdldF9vZl9ub2RlOwo+ID4+ID4gKyAgICAgc3RydWN0IGRldmZyZXFfbm9kZSAqbm9k ZTsKPiA+PiA+ICsgICAgIHN0cnVjdCBmcmVxX21hcCAqY29tbW9uX3RibDsKPiA+PiA+ICsgICAg IHN0cnVjdCBmcmVxX21hcCAqKnRibF9saXN0ID0gTlVMTDsKPiA+PiA+ICsgICAgIHN0YXRpYyBj aGFyIHByb3BfbmFtZVtdID0gUFJPUF9UQUJMRSAiLTk5OTk5OSI7Cj4gPj4gPiArICAgICBpbnQg Y3B1LCByZXQsIGNudCA9IDAsIHByb3Bfc3ogPSBBUlJBWV9TSVpFKHByb3BfbmFtZSk7Cj4gPj4g PiArCj4gPj4gPiArICAgICB0YXJnZXRfb2Zfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUob2Zfbm9k ZSwgUFJPUF9UQVJHRVQsIDApOwo+ID4+ID4gKyAgICAgaWYgKCF0YXJnZXRfb2Zfbm9kZSkKPiA+ PiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPj4gPiArCj4gPj4gPiArICAgICBu b2RlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGRldmZyZXFfbm9kZSksIEdGUF9LRVJORUwpOwo+ ID4+ID4gKyAgICAgaWYgKCFub2RlKQo+ID4+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgIGNvbW1vbl90YmwgPSByZWFkX3RibChvZl9ub2RlLCBQ Uk9QX1RBQkxFKTsKPiA+PiA+ICsgICAgIGlmICghY29tbW9uX3RibCkgewo+ID4+ID4gKyAgICAg ICAgICAgICB0YmxfbGlzdCA9IGt6YWxsb2Moc2l6ZW9mKCp0YmxfbGlzdCkgKiBOUl9DUFVTLCBH RlBfS0VSTkVMKTsKPiA+PiA+ICsgICAgICAgICAgICAgaWYgKCF0YmxfbGlzdCkgewo+ID4+ID4g KyAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gPj4gPiArICAgICAgICAgICAg ICAgICAgICAgZ290byBlcnJfbGlzdDsKPiA+PiA+ICsgICAgICAgICAgICAgfQo+ID4+ID4gKwo+ ID4+ID4gKyAgICAgICAgICAgICBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7Cj4gPj4gPiAr ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc25wcmludGYocHJvcF9uYW1lLCBwcm9wX3N6LCAi JXMtJWQiLAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q X1RBQkxFLCBjcHUpOwo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPj0gcHJv cF9zeikgewo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJfd2FybigiTW9y ZSBDUFVzIHRoYW4gSSBjYW4gaGFuZGxlIVxuIik7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcl93YXJuKCJTa2lwcGluZyByZXN0IG9mIHRoZSB0YWJsZXMhXG4iKTsKPiA+ PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4+ID4gKyAgICAgICAg ICAgICAgICAgICAgIH0KPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICB0YmxfbGlzdFtjcHVd ID0gcmVhZF90Ymwob2Zfbm9kZSwgcHJvcF9uYW1lKTsKPiA+PiA+ICsgICAgICAgICAgICAgICAg ICAgICBpZiAodGJsX2xpc3RbY3B1XSkKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNudCsrOwo+ID4+ID4gKyAgICAgICAgICAgICB9Cj4gPj4gPiArICAgICB9Cj4gPj4gPiAr ICAgICBpZiAoIWNvbW1vbl90YmwgJiYgIWNudCkgewo+ID4+ID4gKyAgICAgICAgICAgICByZXQg PSAtRUlOVkFMOwo+ID4+ID4gKyAgICAgICAgICAgICBnb3RvIGVycl90Ymw7Cj4gPj4gPiArICAg ICB9Cj4gPj4gPiArCj4gPj4gPiArICAgICBtdXRleF9sb2NrKCZzdGF0ZV9sb2NrKTsKPiA+PiA+ ICsgICAgIG5vZGUtPm9mX25vZGUgPSB0YXJnZXRfb2Zfbm9kZTsKPiA+PiA+ICsgICAgIG5vZGUt Pm1hcCA9IHRibF9saXN0Owo+ID4+ID4gKyAgICAgbm9kZS0+Y29tbW9uX21hcCA9IGNvbW1vbl90 Ymw7Cj4gPj4gPiArICAgICBsaXN0X2FkZF90YWlsKCZub2RlLT5saXN0LCAmZGV2ZnJlcV9saXN0 KTsKPiA+PiA+ICsgICAgIG11dGV4X3VubG9jaygmc3RhdGVfbG9jayk7Cj4gPj4gPiArCj4gPj4g PiArICAgICByZXR1cm4gMDsKPiA+PiA+ICtlcnJfdGJsOgo+ID4+ID4gKyAgICAga2ZyZWUodGJs X2xpc3QpOwo+ID4+ID4gK2Vycl9saXN0Ogo+ID4+ID4gKyAgICAga2ZyZWUobm9kZSk7Cj4gPj4g PiArICAgICByZXR1cm4gcmV0Owo+ID4+ID4gK30KPiA+PiA+ICsKPiA+PiA+ICtzdGF0aWMgaW50 IF9faW5pdCBkZXZmcmVxX2NwdWZyZXFfaW5pdCh2b2lkKQo+ID4+ID4gK3sKPiA+PiA+ICsgICAg IGludCByZXQ7Cj4gPj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX3BhciwgKm9mX2No aWxkOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAgb2ZfcGFyID0gb2ZfZmluZF9ub2RlX2J5X25hbWUo TlVMTCwgImRldmZyZXEtY3B1ZnJlcS1tYXAiKTsKPiA+PiA+ICsgICAgIGlmIChvZl9wYXIpIHsK PiA+PiA+ICsgICAgICAgICAgICAgZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShvZl9wYXIsIG9mX2No aWxkKSB7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYWRkX3RhYmxlX2Zyb21f b2Yob2ZfY2hpbGQpOwo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQpCj4gPj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcl9lcnIoIlBhcnNpbmcgJXMgZmFpbGVk IVxuIiwgb2ZfY2hpbGQtPm5hbWUpOwo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGVsc2UK PiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByX2RlYnVnKCJQYXJzZWQgJXMu XG4iLCBvZl9jaGlsZC0+bmFtZSk7Cj4gPj4gPiArICAgICAgICAgICAgIH0KPiA+PiA+ICsgICAg ICAgICAgICAgb2Zfbm9kZV9wdXQob2ZfcGFyKTsKPiA+PiA+ICsgICAgIH0gZWxzZSB7Cj4gPj4g PiArICAgICAgICAgICAgIHByX2luZm8oIk5vIHRhYmxlcyBwYXJzZWQgZnJvbSBEVC5cbiIpOwo+ ID4+ID4gKyAgICAgfQo+ID4+ID4gKwo+ID4+ID4gKyAgICAgcmV0ID0gZGV2ZnJlcV9hZGRfZ292 ZXJub3IoJmRldmZyZXFfY3B1ZnJlcSk7Cj4gPj4gPiArICAgICBpZiAocmV0KSB7Cj4gPj4gPiAr ICAgICAgICAgICAgIHByX2VycigiY3B1ZnJlcS1tYXAgZ292ZXJub3IgYWRkIGZhaWxlZCFcbiIp Owo+ID4+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ID4gKyAgICAgfQo+ID4+ID4g Kwo+ID4+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPj4gPiArfQo+ID4+ID4gK3N1YnN5c19pbml0Y2Fs bChkZXZmcmVxX2NwdWZyZXFfaW5pdCk7Cj4gPj4gPiArCj4gPj4gPiArc3RhdGljIHZvaWQgX19l eGl0IGRldmZyZXFfY3B1ZnJlcV9leGl0KHZvaWQpCj4gPj4gPiArewo+ID4+ID4gKyAgICAgaW50 IHJldCwgY3B1Owo+ID4+ID4gKyAgICAgc3RydWN0IGRldmZyZXFfbm9kZSAqbm9kZSwgKnRtcDsK PiA+PiA+ICsKPiA+PiA+ICsgICAgIHJldCA9IGRldmZyZXFfcmVtb3ZlX2dvdmVybm9yKCZkZXZm cmVxX2NwdWZyZXEpOwo+ID4+ID4gKyAgICAgaWYgKHJldCkKPiA+PiA+ICsgICAgICAgICAgICAg cHJfZXJyKCJjcHVmcmVxLW1hcCBnb3Zlcm5vciByZW1vdmUgZmFpbGVkIVxuIik7Cj4gPj4gPiAr Cj4gPj4gPiArICAgICBtdXRleF9sb2NrKCZzdGF0ZV9sb2NrKTsKPiA+PiA+ICsgICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCB0bXAsICZkZXZmcmVxX2xpc3QsIGxpc3QpIHsKPiA+ PiA+ICsgICAgICAgICAgICAga2ZyZWUobm9kZS0+Y29tbW9uX21hcCk7Cj4gPj4gPiArICAgICAg ICAgICAgIGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpCj4gPj4gPiArICAgICAgICAgICAgICAg ICAgICAga2ZyZWUobm9kZS0+bWFwW2NwdV0pOwo+ID4+ID4gKyAgICAgICAgICAgICBrZnJlZShu b2RlLT5tYXApOwo+ID4+ID4gKyAgICAgICAgICAgICBsaXN0X2RlbCgmbm9kZS0+bGlzdCk7Cj4g Pj4gPiArICAgICAgICAgICAgIGtmcmVlKG5vZGUpOwo+ID4+ID4gKyAgICAgfQo+ID4+ID4gKyAg ICAgbXV0ZXhfdW5sb2NrKCZzdGF0ZV9sb2NrKTsKPiA+PiA+ICt9Cj4gPj4gPiArbW9kdWxlX2V4 aXQoZGV2ZnJlcV9jcHVmcmVxX2V4aXQpOwo+ID4+ID4gKwo+ID4+ID4gK01PRFVMRV9ERVNDUklQ VElPTigiZGV2ZnJlcSBnb3YgdGhhdCBzZXRzIGRldiBmcmVxIGJhc2VkIG9uIGN1cnJlbnQgQ1BV IGZyZXEiKTsKPiA+PiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gPj4gPgo+Cj4gLS0K PiAtLSBTaWJpIFNhbmthciAtLQo+IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlz IGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAo+IGEgTGludXggRm91bmRhdGlvbiBDb2xs YWJvcmF0aXZlIFByb2plY3QuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==