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=-13.8 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,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5D03C433B4 for ; Wed, 14 Apr 2021 15:35:50 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 1457E6112F for ; Wed, 14 Apr 2021 15:35:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1457E6112F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de 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=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date:Cc:To:From: Subject:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tXa2EIW0ZTaQ91xCugiwDbvwRJvpeHQUrhx8gyzn/Hw=; b=AapHIt+6n/1msUYrzSfoY5V2T zkwrhS6mUtcqzFLFUqTXqxeXX6Ol1IxCmi7krYDnckkHDLhuEE/NS2yK+sW1BMpO1EDxd7K3FyroB b9KsPJwyKh+8rvLdll9yc0wSUS+zJUpB6PW/zibnSUv+1vwgV8qmzvopAXUvfJk/dfw/YjJ48BpWX Luk9EY/9X1cM4PfjO/2HC3mhMjkzlmX1lnNaSNgcfrq4DKEMUnRAXzYGjFZzha+zfIp4mnjin1Cjw tBOpxx8OR69RBYkCiCedvbw9QnjKvQ+hFLCpSZuBPY8pxrOXgYJd2741ClrUQOYtqvQzWuZcEdfFz wvkVcNGlw==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lWhWS-00D1qa-Ro; Wed, 14 Apr 2021 15:33:45 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lWhWO-00D1px-RO for linux-arm-kernel@desiato.infradead.org; Wed, 14 Apr 2021 15:33:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:Content-Type:References:In-Reply-To:Date:Cc:To:From:Subject: Message-ID:Sender:Reply-To:Content-ID:Content-Description; bh=f7HoaKps0NYtPMCifC57kG96Hv1GwnfLouU1rnJiqAo=; b=xp3Z9Fx74/h4GcU3vGE2cq+fe3 IxbrEQZUctZ5XCovfVOAiMOwqU1dluCkpfulwb50C8ckSJXkK7C/m/13fZCnTPvZ33wC3EdM82fxN ciQgH4c/AQWb4EADSDzyy2U05ZFv+oJYd2tOx02kmSUbdHCe3+GFfbeUYAfOHhJ1YE0ucSGmDdCK2 g3bTz1wr4naqdOn/0bgl4wIpuBuLgzkfrd/io/tr6VcxTwszNy8bTV6PrOVI8xFGYB57p6ohs1g9h mmv1kCrZVDPiZOk8XvIoUyPyz4Kz2Wbp1gFLEL7fCreuuUwaRFis290W4f7sFQNUiqZtC+haJJJKp iUwDedxg==; Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lWhWK-007u8e-U0 for linux-arm-kernel@lists.infradead.org; Wed, 14 Apr 2021 15:33:39 +0000 Received: from gallifrey.ext.pengutronix.de ([2001:67c:670:201:5054:ff:fe8d:eefb] helo=[IPv6:::1]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lWhVq-0004Hr-0V; Wed, 14 Apr 2021 17:33:06 +0200 Message-ID: <50ef17a2d57b022c48bbca71fd4e074cc3ca9be5.camel@pengutronix.de> Subject: Re: [PATCH] ASoC: fsl: imx-pcm-dma: Don't request dma channel in probe From: Lucas Stach To: Robin Gong , Shengjiu Wang Cc: "sumit.semwal@linaro.org" , "linaro-mm-sig@lists.linaro.org" , Linux-ALSA , "linuxppc-dev@lists.ozlabs.org" , linux-kernel , Timur Tabi , Xiubo Li , "shawnguo@kernel.org" , "S.j. Wang" , Takashi Iwai , Liam Girdwood , "dri-devel@lists.freedesktop.org" , "perex@perex.cz" , Nicolin Chen , Mark Brown , dl-linux-imx , "kernel@pengutronix.de" , Fabio Estevam , "s.hauer@pengutronix.de" , "linux-arm-kernel@lists.infradead.org" , "linux-media@vger.kernel.org" Date: Wed, 14 Apr 2021 17:33:03 +0200 In-Reply-To: References: <1589881301-4143-1-git-send-email-shengjiu.wang@nxp.com> <0866cd8cdb0c22f0b2a6814c4dafa29202aad5f3.camel@pengutronix.de> <53258cd99caaf1199036737f8fad6cc097939567.camel@pengutronix.de> User-Agent: Evolution 3.38.4 (3.38.4-1.fc33) MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:201:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210414_083337_321333_A0EDE997 X-CRM114-Status: GOOD ( 61.85 ) 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 SGkgUm9iaW4sCgpBbSBNaXR0d29jaCwgZGVtIDE0LjA0LjIwMjEgdW0gMTQ6MzMgKzAwMDAgc2No cmllYiBSb2JpbiBHb25nOgo+IE9uIDIwMjAvMDUvMjAgMTc6NDMgTHVjYXMgU3RhY2ggPGwuc3Rh Y2hAcGVuZ3V0cm9uaXguZGU+IHdyb3RlOgo+ID4gQW0gTWl0dHdvY2gsIGRlbiAyMC4wNS4yMDIw LCAxNjoyMCArMDgwMCBzY2hyaWViIFNoZW5naml1IFdhbmc6Cj4gPiA+IEhpCj4gPiA+IAo+ID4g PiBPbiBUdWUsIE1heSAxOSwgMjAyMCBhdCA2OjA0IFBNIEx1Y2FzIFN0YWNoIDxsLnN0YWNoQHBl bmd1dHJvbml4LmRlPgo+ID4gd3JvdGU6Cj4gPiA+ID4gQW0gRGllbnN0YWcsIGRlbiAxOS4wNS4y MDIwLCAxNzo0MSArMDgwMCBzY2hyaWViIFNoZW5naml1IFdhbmc6Cj4gPiA+ID4gPiBUaGVyZSBh cmUgdHdvIHJlcXVpcmVtZW50cyB0aGF0IHdlIG5lZWQgdG8gbW92ZSB0aGUgcmVxdWVzdCBvZiBk bWEKPiA+ID4gPiA+IGNoYW5uZWwgZnJvbSBwcm9iZSB0byBvcGVuLgo+ID4gPiA+IAo+ID4gPiA+ IEhvdyBkbyB5b3UgaGFuZGxlIC1FUFJPQkVfREVGRVIgcmV0dXJuIGNvZGUgZnJvbSB0aGUgY2hh bm5lbCByZXF1ZXN0Cj4gPiA+ID4gaWYgeW91IGRvbid0IGRvIGl0IGluIHByb2JlPwo+ID4gPiAK PiA+ID4gSSB1c2UgdGhlIGRtYV9yZXF1ZXN0X3NsYXZlX2NoYW5uZWwgb3IgZG1hX3JlcXVlc3Rf Y2hhbm5lbCBpbnN0ZWFkIG9mCj4gPiA+IGRtYWVuZ2luZV9wY21fcmVxdWVzdF9jaGFuX29mLiBz byB0aGVyZSBzaG91bGQgYmUgbm90IC1FUFJPQkVfREVGRVIKPiA+ID4gcmV0dXJuIGNvZGUuCj4g PiAKPiA+IFRoaXMgaXMgYSBwcmV0dHkgd2VhayBhcmd1bWVudC4gVGhlIGRtYWVuZ2luZSBkZXZp Y2UgbWlnaHQgcHJvYmUgYWZ0ZXIgeW91Cj4gPiB0cnkgdG8gZ2V0IHRoZSBjaGFubmVsLiBVc2lu ZyBhIGZ1bmN0aW9uIHRvIHJlcXVlc3QgdGhlIGNoYW5uZWwgdGhhdCBkb2Vzbid0Cj4gPiBhbGxv dyB5b3UgdG8gaGFuZGxlIHByb2JlIGRlZmVycmFsIGlzIElNSE8gYSBidWcgYW5kIHNob3VsZCBi ZSBmaXhlZCwgaW5zdGVhZAo+ID4gb2YgYnVpbGRpbmcgZXZlbiBtb3JlIGFzc3VtcHRpb25zIG9u IHRvcCBvZiBpdC4KPiA+IAo+ID4gPiA+ID4gLSBXaGVuIGRtYSBkZXZpY2UgYmluZHMgd2l0aCBw b3dlci1kb21haW5zLCB0aGUgcG93ZXIgd2lsbCBiZQo+ID4gPiA+ID4gZW5hYmxlZCB3aGVuIHdl IHJlcXVlc3QgZG1hIGNoYW5uZWwuIElmIHRoZSByZXF1ZXN0IG9mIGRtYSBjaGFubmVsCj4gPiA+ ID4gPiBoYXBwZW4gb24gcHJvYmUsIHRoZW4gdGhlIHBvd2VyLWRvbWFpbnMgd2lsbCBiZSBhbHdh eXMgZW5hYmxlZAo+ID4gPiA+ID4gYWZ0ZXIga2VybmVsIGJvb3QgdXAsICB3aGljaCBpcyBub3Qg Z29vZCBmb3IgcG93ZXIgc2F2aW5nLCAgc28gd2UKPiA+ID4gPiA+IG5lZWQgdG8gbW92ZSB0aGUg cmVxdWVzdCBvZiBkbWEgY2hhbm5lbCB0byAub3BlbigpOwo+ID4gPiA+IAo+ID4gPiA+IFRoaXMg aXMgY2VydGFpbmx5IHNvbWV0aGluZyB3aGljaCBjb3VsZCBiZSBmaXhlZCBpbiB0aGUgZG1hZW5n aW5lCj4gPiA+ID4gZHJpdmVyLgo+ID4gPiAKPiA+ID4gRG1hIGRyaXZlciBhbHdheXMgY2FsbCB0 aGUgcG1fcnVudGltZV9nZXRfc3luYyBpbgo+ID4gPiBkZXZpY2VfYWxsb2NfY2hhbl9yZXNvdXJj ZXMsIHRoZSBkZXZpY2VfYWxsb2NfY2hhbl9yZXNvdXJjZXMgaXMgY2FsbGVkCj4gPiA+IHdoZW4g Y2hhbm5lbCBpcyByZXF1ZXN0ZWQuIHNvIHBvd2VyIGlzIGVuYWJsZWQgb24gY2hhbm5lbCByZXF1 ZXN0Lgo+ID4gCj4gPiBTbyB3aHkgY2FuJ3QgeW91IGZpeCB0aGUgZG1hZW5naW5lIGRyaXZlciB0 byBkbyB0aGF0IFJQTSBjYWxsIGF0IGEgbGF0ZXIgdGltZQo+ID4gd2hlbiB0aGUgY2hhbm5lbCBp cyBhY3R1YWxseSBnb2luZyB0byBiZSB1c2VkPyBUaGlzIHdpbGwgYWxsb3cgZnVydGhlciBwb3dl cgo+ID4gc2F2aW5ncyB3aXRoIG90aGVyIHNsYXZlIGRldmljZXMgdGhhbiB0aGUgYXVkaW8gUENN Lgo+IEhpIEx1Y2FzLAo+IMKgwqBUaGFua3MgZm9yIHlvdXIgc3VnZ2VzdGlvbi4gSSBoYXZlIHRy aWVkIHRvIGltcGxlbWVudCBydW50aW1lIGF1dG9zdXNwZW5kIGluCj4gZnNsLWVkbWEgZHJpdmVy IG9uIGkubXg4cW0vcXhwIHdpdGggZGVsYXkgdGltZSAoMiBzZWMpIGZvciB0aGlzIGZlYXR1cmUg YXMgYmVsb3cKPiAob3IgeW91IGNhbiByZWZlciB0byBkcml2ZXJzL2RtYS9xY29tL2hpZG1hLmMp LCBhbmQgcG1fcnVudGltZV9nZXRfc3luYy8KPiBwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZCBp biBhbGwgZG1hZW5naW5lIGRyaXZlciBpbnRlcmZhY2UgbGlrZQo+IGRldmljZV9hbGxvY19jaGFu X3Jlc291cmNlcy9kZXZpY2VfcHJlcF9zbGF2ZV9zZy9kZXZpY2VfcHJlcF9kbWFfY3ljbGljLwo+ IGRldmljZV90eF9zdGF0dXMuLi4KPiAKPiAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGZzbF9jaGFuLT5kZXYpOwo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXko ZnNsX2NoYW4tPmRldiwgMjAwMCk7Cj4gCj4gVGhhdCBjb3VsZCByZXNvbHZlIHRoaXMgYXVkaW8g Y2FzZSBzaW5jZSB0aGUgYXV0b3N1c3BlbmQgY291bGQgc3VzcGVuZCBydW50aW1lIGFmdGVyCj4g MiBzZWNvbmRzIGlmIHRoZXJlIGlzIG5vIGZ1cnRoZXIgZG1hIHRyYW5zZmVyIGJ1dCBvbmx5IGNo YW5uZWwgcmVxdWVzdChkZXZpY2VfYWxsb2NfY2hhbl9yZXNvdXJjZXMpLgo+IEJ1dCB1bmZvcnR1 bmF0ZWx5LCBpdCBjYXVzZSBhbm90aGVyIGlzc3VlLiBBcyB5b3Uga25vdywgb24gb3VyIGkubXg4 cW0vcXhwLCAKPiBwb3dlciBkb21haW4gZG9uZSBieSBzY2Z3IChkcml2ZXJzL2Zpcm13YXJlL2lt eC9zY3UtcGQuYykgb3ZlciBtYWlsYm94Ogo+IMKgaW14X3NjX3BkX3Bvd2VyKCktPmlteF9zY3Vf Y2FsbF9ycGMoKS0+IGlteF9zY3VfaXBjX3dyaXRlKCktPm1ib3hfc2VuZF9tZXNzYWdlKCkKPiB3 aGljaCBtZWFucyBoYXZlIHRvICd3YWl0cyBmb3IgY29tcGxldGlvbicsIG1lYW53aGlsZSwgc29t ZSBkcml2ZXIgbGlrZSB0dHkgd2lsbCBjYWxsIGRtYWVuZ2luZQo+IGludGVyZmFjZXMgaW4gbm9u LWF0b21pYyBjYXNlIGFzIGJlbG93LCAKPiAKPiBzdGF0aWMgaW50IHVhcnRfd3JpdGUoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpCj4g ewo+IMKgwqDCoC4uLi4uLi4KPiAJICAgIHBvcnQgPSB1YXJ0X3BvcnRfbG9jayhzdGF0ZSwgZmxh Z3MpOwo+IMKgwqDCoC4uLi4uLgo+IMKgwqDCoMKgwqDCoMKgwqBfX3VhcnRfc3RhcnQodHR5KTsg IC8vY2FsbCBzdGFydF90eCgpLT5kbWFlbmdpbmVfcHJlcF9zbGF2ZV9zZy4uLgo+IMKgwqDCoMKg wqDCoMKgwqB1YXJ0X3BvcnRfdW5sb2NrKHBvcnQsIGZsYWdzKTsKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiB9Cj4gCj4gVGh1cyBkbWEgcnVudGltZSByZXN1bWUgbWF5IGhhcHBlbiBp biB0aGF0IHRpbWluZyB3aW5kb3cgYW5kIGNhdXNlIGtlcm5lbCBhbGFybS4gCj4gSSdtIG5vdCBz dXJlIHdoZXRoZXIgdGhlcmUgYXJlIHNpbWlsYXIgbGltaXRhdGlvbnMgb24gb3RoZXIgZHJpdmVy IHN1YnN5c3RlbS4gQnV0IGZvciBtZSwKPiBJdCBsb29rcyBsaWtlIHRoZSBvbmx5IHdheSB0byBy ZXNvbHZlIHRoZSBjb250cmFkaWN0aW9uIGJldHdlZW4gdHR5IGFuZCBzY3UtcGQgKGhhcmR3YXJl Cj4gbGltaXRhdGlvbiBvbiBpLm14OHFtL3F4cCkgaXMgdG8gZ2l2ZSB1cCBhdXRvc3VzcGVuZCBh bmQga2VlcCBwbV9ydW50aW1lX2dldF9zeW5jCj4gb25seSBpbiBkZXZpY2VfYWxsb2NfY2hhbl9y ZXNvdXJjZXMgYmVjYXVzZSByZXF1ZXN0IGNoYW5uZWwgaXMgYSBzYWZlIG5vbi1hdG9taWMgcGhh c2UuIAo+IERvIHlvdSBoYXZlIGFueSBpZGVhPyBUaGFua3MgaW4gYWR2YW5jZS4gCgpJZiB5b3Ug bG9vayBjbG9zZWx5IGF0IHRoZSBkcml2ZXIgeW91IHVzZWQgYXMgYW4gZXhhbXBsZSAoaGlkbWEu YykgaXQKbG9va3MgbGlrZSB0aGVyZSBpcyBhbHJlYWR5IHNvbWV0aGluZyBpbiB0aGVyZSwgd2hp Y2ggbG9va3MgdmVyeSBtdWNoCmxpa2Ugd2hhdCB5b3UgbmVlZCBoZXJlOgoKSW4gaGlkbWFfaXNz dWVfcGVuZGluZygpIHRoZSBkcml2ZXIgdHJpZXMgdG8gZ2V0IHRoZSBkZXZpY2UgdG8gcnVudGlt ZQpyZXN1bWUuIElmIHRoaXMgZG9lc24ndCB3b3JrLCBtYXliZSBkdWUgdG8gdGhlIHBvd2VyIGRv bWFpbiBjb2RlIG5vdApiZWluZyBhYmxlIHRvIGJlIGNhbGxlZCBpbiBhdG9taWMgY29udGV4dCwg dGhlIGFjdHVhbCB3b3JrIG9mIHdha2luZyB1cAp0aGUgZG1hIGhhcmR3YXJlIGFuZCBpc3N1aW5n IHRoZSBkZXNjcmlwdG9yIGlzIHNodW50ZWQgdG8gYSB0YXNrbGV0LgoKSWYgSSdtIHJlYWRpbmcg dGhpcyByaWdodCwgdGhpcyBpcyBleGFjdGx5IHdoYXQgeW91IG5lZWQgaGVyZSB0byBiZQphYmxl IHRvIGNhbGwgdGhlIGRtYWVuZ2luZSBjb2RlIGZyb20gYXRvbWljIGNvbnRleHQ6IHRyeSB0aGUg cnBtIGdldAphbmQgaXNzdWUgaW1tZWRpYXRlbHkgd2hlbiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNo dW50IHRoZSB3b3JrIHRvIGEgbm9uLQphdG9taWMgY29udGV4dCB3aGVyZSB5b3UgY2FuIGRlYWwg d2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHNjdS1wZC4KCkFsc28geW91IGRvbid0IG5lZWQgdGhl IHJ1bnRpbWUgcmVzdW1lIGluIGFsbCBvZiB0aGUgZnVuY3Rpb25zIHlvdQptZW50aW9uZWQuIEZy b20gYSBxdWljayBsb29rIGludG8gdGhlIGVkbWEgZHJpdmVyIGl0IGxvb2tzIGxpa2UgZm9yCmV4 YW1wbGUgdGhlIHByZXBfc2xhdmVfZG1hKCkgZnVuY3Rpb24gb25seSB0b3VjaGVzIGRhdGEgc3Ry dWN0dXJlcyBpbgptZW1vcnksIHNvIHlvdSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSBkZXZpY2Ug dG8gYmUgYXdha2UgYXQgdGhhdApwb2ludC4gT25seSBsYXRlciBpbiB0aGUgZmxvdyB3aGVuIHlv dSB3cml0ZSByZWdpc3RlcnMgaW4gdGhlIGRtYQpoYXJkd2FyZSBhbmQgYWN0dWFsbHkgaXNzdWUg dGhlIHRyYW5zZmVyIHlvdSBuZWVkIHRvIHdha2UgdGhlIGRldmljZQpmcm9tIHNsZWVwLgoKUmVn YXJkcywKTHVjYXMKCj4gwqDCoAo+IAo+IAo+IAo+IAo+ID4gCj4gPiA+ID4gPiAtIFdpdGggRkUt QkUgY2FzZSwgaWYgdGhlIGRtYSBjaGFubmVsIGlzIHJlcXVlc3RlZCBpbiBwcm9iZSwgdGhlbgo+ ID4gPiA+ID4gdGhlcmUgd2lsbCBiZSBiZWxvdyBpc3N1ZSwgd2hpY2ggaXMgY2F1c2VkIGJ5IHRo YXQgdGhlIGRtYSBjaGFubmVsCj4gPiA+ID4gPiB3aWxsIGJlIHJlcXVlc3RlZCBkdXBsaWNhdGVs eQo+ID4gPiA+IAo+ID4gPiA+IFdoeSBpcyB0aGlzIHJlcXVlc3RlZCBhIHNlY29uZCB0aW1lPyBJ cyB0aGlzIGp1c3Qgc29tZSBtaXNzaW5nCj4gPiA+ID4gY2xlYW51cCBvbiBhIGRlZmVycmVkIHBy b2JlIHBhdGg/Cj4gPiA+IAo+ID4gPiBOb3QgcmVsYXRlIHdpdGggZGVmZXJyZWQgcHJvYmUuICBX aXRoIERNQTEtPkFTUkMtPkRNQTItPkVTQUkgY2FzZSwgdGhlCj4gPiA+IERNQTEtPkFTUkMtPkRN QTIgaXMgaW4gRkUsICBFU0FJIGlzIGluIEJFLiAgV2hlbiBFU0FJIGRydmllciBwcm9iZSwKPiA+ ID4gRE1BMyBjaGFubmVsIGlzIGNyZWF0ZWQgd2l0aCBFU0FJJ3MgImRtYTp0eCIgKERNQTMgY2hh bm5lbAo+ID4gPiBpcyBub3QgdXNlZCBpbiB0aGlzIEZFLUJFIGNhc2UpLiAgICBXaGVuIEZFLUJF IHN0YXJ0dXAsIERNQTIKPiA+ID4gY2hhbm5lbCBpcyBjcmVhdGVkLCBpdCBuZWVkcyB0aGUgRVNB SSdzICJkbWE6dHgiLCBzbyBiZWxvdyB3YXJuaW5nCj4gPiA+IGNvbWVzIG91dC4KPiA+ID4gCj4g PiA+ID4gUmVnYXJkcywKPiA+ID4gPiBMdWNhcwo+ID4gPiA+IAo+ID4gPiA+ID4gWyAgNjM4Ljkw NjI2OF0gc3lzZnM6IGNhbm5vdCBjcmVhdGUgZHVwbGljYXRlIGZpbGVuYW1lCj4gPiAnL2Rldmlj ZXMvc29jMC9zb2MvMjAwMDAwMC5idXMvMjAwMDAwMC5zcGJhLWJ1cy8yMDI0MDAwLmVzYWkvZG1h OnR4Jwo+ID4gPiA+ID4gWyAgNjM4LjkxOTA2MV0gQ1BVOiAxIFBJRDogNjczIENvbW06IGFwbGF5 IE5vdCB0YWludGVkCj4gPiA+ID4gPiA1LjcuMC1yYzEtMTI5NTYtZ2ZjNjRiMjU4NTU5MyAjMjg3 IFsgIDYzOC45MjcxMTNdIEhhcmR3YXJlIG5hbWU6Cj4gPiA+ID4gPiBGcmVlc2NhbGUgaS5NWDYg UXVhZC9EdWFsTGl0ZSAoRGV2aWNlIFRyZWUpIFsgIDYzOC45MzM2OTBdCj4gPiA+ID4gPiBbPGMw MTEwZGQ4Pl0gKHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDEwYjhlYz5dCj4gPiA+ID4gPiAo c2hvd19zdGFjaysweDEwLzB4MTQpIFsgIDYzOC45NDE0NjRdIFs8YzAxMGI4ZWM+XSAoc2hvd19z dGFjaykKPiA+ID4gPiA+IGZyb20gWzxjMDU1N2ZjMD5dIChkdW1wX3N0YWNrKzB4ZTQvMHgxMTgp IFsgIDYzOC45NDg4MDhdCj4gPiA+ID4gPiBbPGMwNTU3ZmMwPl0gKGR1bXBfc3RhY2spIGZyb20g WzxjMDMyYWViND5dCj4gPiA+ID4gPiAoc3lzZnNfd2Fybl9kdXArMHg1MC8weDY0KSBbICA2Mzgu OTU2NDA2XSBbPGMwMzJhZWI0Pl0KPiA+ID4gPiA+IChzeXNmc193YXJuX2R1cCkgZnJvbSBbPGMw MzJiMWE4Pl0KPiA+ID4gPiA+IChzeXNmc19kb19jcmVhdGVfbGlua19zZCsweGM4LzB4ZDQpCj4g PiA+ID4gPiBbICA2MzguOTY1MTM0XSBbPGMwMzJiMWE4Pl0gKHN5c2ZzX2RvX2NyZWF0ZV9saW5r X3NkKSBmcm9tCj4gPiA+ID4gPiBbPGMwNWRjNjY4Pl0gKGRtYV9yZXF1ZXN0X2NoYW4rMHhiMC8w eDIxMCkgWyAgNjM4Ljk3NDEyMF0KPiA+ID4gPiA+IFs8YzA1ZGM2Njg+XSAoZG1hX3JlcXVlc3Rf Y2hhbikgZnJvbSBbPGMwNWRjN2QwPl0KPiA+ID4gPiA+IChkbWFfcmVxdWVzdF9zbGF2ZV9jaGFu bmVsKzB4OC8weDE0KQo+ID4gPiA+ID4gWyAgNjM4Ljk4MzExMV0gWzxjMDVkYzdkMD5dIChkbWFf cmVxdWVzdF9zbGF2ZV9jaGFubmVsKSBmcm9tCj4gPiA+ID4gPiBbPGMwOWQ1NTQ4Pl0gKGZzbF9h c3JjX2RtYV9od19wYXJhbXMrMHgxZTAvMHg0MzgpCj4gPiA+ID4gPiBbICA2MzguOTkyODgxXSBb PGMwOWQ1NTQ4Pl0gKGZzbF9hc3JjX2RtYV9od19wYXJhbXMpIGZyb20KPiA+ID4gPiA+IFs8YzA5 YzE2NTQ+XSAoc29jX3BjbV9od19wYXJhbXMrMHg0YTAvMHg2YTgpIFsgIDYzOS4wMDE5NTJdCj4g PiA+ID4gPiBbPGMwOWMxNjU0Pl0gKHNvY19wY21faHdfcGFyYW1zKSBmcm9tIFs8YzA5YzM5ZDQ+ XQo+ID4gPiA+ID4gKGRwY21fZmVfZGFpX2h3X3BhcmFtcysweDcwLzB4ZTQpIFsgIDYzOS4wMTA3 NjVdIFs8YzA5YzM5ZDQ+XQo+ID4gPiA+ID4gKGRwY21fZmVfZGFpX2h3X3BhcmFtcykgZnJvbSBb PGMwOTliMjc0Pl0KPiA+ID4gPiA+IChzbmRfcGNtX2h3X3BhcmFtcysweDE1OC8weDQxOCkgWyAg NjM5LjAxOTc1MF0gWzxjMDk5YjI3ND5dCj4gPiA+ID4gPiAoc25kX3BjbV9od19wYXJhbXMpIGZy b20gWzxjMDk5YzVhMD5dCj4gPiAoc25kX3BjbV9pb2N0bCsweDczNC8weDE4M2MpIFsgIDYzOS4w MjgxMjldIFs8YzA5OWM1YTA+XSAoc25kX3BjbV9pb2N0bCkKPiA+IGZyb20gWzxjMDI5ZmY5ND5d IChrc3lzX2lvY3RsKzB4MmFjLzB4Yjk4KSBbICA2MzkuMDM1ODEyXSBbPGMwMjlmZjk0Pl0KPiA+ IChrc3lzX2lvY3RsKSBmcm9tIFs8YzAxMDAwODA+XSAocmV0X2Zhc3Rfc3lzY2FsbCsweDAvMHgy OCkgWyAgNjM5LjA0MzQ5MF0KPiA+IEV4Y2VwdGlvbiBzdGFjaygweGVjNTI5ZmE4IHRvIDB4ZWM1 MjlmZjApCj4gPiA+ID4gPiBbICA2MzkuMDQ4NTY1XSA5ZmEwOiAgICAgICAgICAgICAgICAgICBi ZWU4NDY1MCAwMTMyMTg3MAo+ID4gMDAwMDAwMDQgYzI1YzQxMTEgYmVlODQ2NTAgMDAwMjAwMGYK PiA+ID4gPiA+IFsgIDYzOS4wNTY3NjZdIDlmYzA6IGJlZTg0NjUwIDAxMzIxODcwIDAxMzIxODIw IDAwMDAwMDM2Cj4gPiAwMDAwMWY0MAo+ID4gPiA+ID4gMDAwMDAwMDAgMDAwMmMyZjggMDAwMDAw MDMgWyAgNjM5LjA2NDk2NF0gOWZlMDogYjZmNDgzZmMgYmVlODQ1MWMKPiA+ID4gPiA+IGI2ZWUy NjU1IGI2ZTFkY2Y4IFsgIDYzOS4wNzAzMzldIGZzbC1lc2FpLWRhaSAyMDI0MDAwLmVzYWk6IENh bm5vdAo+ID4gPiA+ID4gY3JlYXRlIERNQSBkbWE6dHggc3ltbGluawo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBTaGVuZ2ppdSBXYW5nIDxzaGVuZ2ppdS53YW5nQG54cC5jb20+ Cj4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+IMKgc291bmQvc29jL2ZzbC9pbXgtcGNtLWRtYS5jIHwg MTczCj4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiA+ID4g PiA+IMKgMSBmaWxlIGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkK PiA+ID4gPiA+IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9mc2wvaW14LXBjbS1k bWEuYwo+ID4gPiA+ID4gYi9zb3VuZC9zb2MvZnNsL2lteC1wY20tZG1hLmMgaW5kZXggMDRhOWJj NzQ5MDE2Li5kYWU1M2IzODRkZjQKPiA+ID4gPiA+IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvc291 bmQvc29jL2ZzbC9pbXgtcGNtLWRtYS5jCj4gPiA+ID4gPiArKysgYi9zb3VuZC9zb2MvZnNsL2lt eC1wY20tZG1hLmMKPiA+ID4gPiA+IEBAIC0xMSw2ICsxMSw3IEBACj4gPiA+ID4gPiDCoCNpbmNs dWRlIDxsaW51eC9kbWFlbmdpbmUuaD4KPiA+ID4gPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+Cj4gPiA+ID4gPiDCoCNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ID4gPiA+ICsjaW5j bHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gwqAjaW5jbHVk ZSA8c291bmQvY29yZS5oPgo+ID4gPiA+ID4gwqAjaW5jbHVkZSA8c291bmQvcGNtLmg+Cj4gPiA+ ID4gPiBAQCAtMjksMjQgKzMwLDE2OCBAQCBzdGF0aWMgYm9vbCBmaWx0ZXIoc3RydWN0IGRtYV9j aGFuICpjaGFuLCB2b2lkCj4gPiAqcGFyYW0pCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqByZXR1cm4g dHJ1ZTsKPiA+ID4gPiA+IMKgfQo+ID4gPiA+ID4gCj4gPiA+ID4gPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBzbmRfZG1hZW5naW5lX3BjbV9jb25maWcKPiA+IGlteF9kbWFlbmdpbmVfcGNtX2NvbmZp ZyA9IHsKPiA+ID4gPiA+IC0gICAgIC5wcmVwYXJlX3NsYXZlX2NvbmZpZyA9Cj4gPiBzbmRfZG1h ZW5naW5lX3BjbV9wcmVwYXJlX3NsYXZlX2NvbmZpZywKPiA+ID4gPiA+IC0gICAgIC5jb21wYXRf ZmlsdGVyX2ZuID0gZmlsdGVyLAo+ID4gPiA+ID4gLX07Cj4gPiA+ID4gPiArc3RhdGljIGludCBp bXhfcGNtX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQKPiA+ICpjb21wb25lbnQs Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJz dHJlYW0gKnN1YnN0cmVhbSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKSB7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3Qg c25kX3BjbV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOwo+ID4gPiA+ID4g KyAgICAgc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHN1YnN0cmVhbS0+cHJpdmF0 ZV9kYXRhOwo+ID4gPiA+ID4gKyAgICAgc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gYXNv Y19ydGRfdG9fY3B1KHJ0ZCwgMCk7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3Qgc25kX2RtYWVuZ2lu ZV9kYWlfZG1hX2RhdGEgKmRtYV9kYXRhOwo+ID4gPiA+ID4gKyAgICAgc3RydWN0IGRtYV9zbGF2 ZV9jb25maWcgY29uZmlnOwo+ID4gPiA+ID4gKyAgICAgc3RydWN0IGRtYV9jaGFuICpjaGFuOwo+ ID4gPiA+ID4gKyAgICAgaW50IHJldCA9IDA7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IC1pbnQgaW14 X3BjbV9kbWFfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzaXplX3Qgc2l6ZSkK PiA+ID4gPiA+ICsgICAgIHNuZF9wY21fc2V0X3J1bnRpbWVfYnVmZmVyKHN1YnN0cmVhbSwKPiA+ ICZzdWJzdHJlYW0tPmRtYV9idWZmZXIpOwo+ID4gPiA+ID4gKyAgICAgcnVudGltZS0+ZG1hX2J5 dGVzID0gcGFyYW1zX2J1ZmZlcl9ieXRlcyhwYXJhbXMpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KyAgICAgY2hhbiA9IHNuZF9kbWFlbmdpbmVfcGNtX2dldF9jaGFuKHN1YnN0cmVhbSk7Cj4gPiA+ ID4gPiArICAgICBpZiAoIWNoYW4pCj4gPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgcmV0ID0gc25kX2h3cGFyYW1zX3RvX2Rt YV9zbGF2ZV9jb25maWcoc3Vic3RyZWFtLCBwYXJhbXMsCj4gPiAmY29uZmlnKTsKPiA+ID4gPiA+ ICsgICAgIGlmIChyZXQpCj4gPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArICAgICBkbWFfZGF0YSA9IHNuZF9zb2NfZGFpX2dldF9kbWFfZGF0 YShjcHVfZGFpLCBzdWJzdHJlYW0pOwo+ID4gPiA+ID4gKyAgICAgaWYgKCFkbWFfZGF0YSkKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArICAgICBzbmRfZG1hZW5naW5lX3BjbV9zZXRfY29uZmlnX2Zyb21fZGFpX2RhdGEoc3Vic3Ry ZWFtLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRtYV9kYXRhLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZjb25maWcpOwo+ID4gPiA+ID4gKyAgICAgcmV0dXJuIGRtYWVu Z2luZV9zbGF2ZV9jb25maWcoY2hhbiwgJmNvbmZpZyk7IH0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICtzdGF0aWMgaW50IGlteF9wY21faHdfZnJlZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3Bj bV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKPiA+ID4gPiA+IMKgewo+ID4gPiA+ID4gLSAgICAgc3Ry dWN0IHNuZF9kbWFlbmdpbmVfcGNtX2NvbmZpZyAqY29uZmlnOwo+ID4gPiA+ID4gKyAgICAgc25k X3BjbV9zZXRfcnVudGltZV9idWZmZXIoc3Vic3RyZWFtLCBOVUxMKTsKPiA+ID4gPiA+ICsgICAg IHJldHVybiAwOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgc25k X3BjbV91ZnJhbWVzX3QgaW14X3BjbV9wb2ludGVyKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudAo+ ID4gKmNvbXBvbmVudCwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQo+ID4gPiA+ID4gKypzdWJzdHJlYW0pIHsK PiA+ID4gPiA+ICsgICAgIHJldHVybiBzbmRfZG1hZW5naW5lX3BjbV9wb2ludGVyKHN1YnN0cmVh bSk7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyBpbnQgaW14X3Bj bV90cmlnZ2VyKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LAo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtLCBpbnQKPiA+ID4gPiA+ICtjbWQpIHsKPiA+ID4gPiA+ICsgICAgIHJldHVybiBzbmRfZG1h ZW5naW5lX3BjbV90cmlnZ2VyKHN1YnN0cmVhbSwgY21kKTsgfQo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gK3N0YXRpYyBpbnQgaW14X3BjbV9vcGVuKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29t cG9uZW50LAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX3N1 YnN0cmVhbSAqc3Vic3RyZWFtKSB7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3Qgc25kX3NvY19wY21f cnVudGltZSAqcnRkID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7Cj4gPiA+ID4gPiArICAgICBi b29sIHR4ID0gc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSzsK PiA+ID4gPiA+ICsgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9IGFzb2NfcnRkX3Rv X2NwdShydGQsIDApOwo+ID4gPiA+ID4gKyAgICAgc3RydWN0IHNuZF9kbWFlbmdpbmVfZGFpX2Rt YV9kYXRhICpkbWFfZGF0YTsKPiA+ID4gPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGNv bXBvbmVudC0+ZGV2Owo+ID4gPiA+ID4gKyAgICAgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgaHc7 Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3QgZG1hX2NoYW4gKmNoYW47Cj4gPiA+ID4gPiArICAgICBp bnQgcmV0Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgcmV0ID0gc25kX3BjbV9od19jb25z dHJhaW50X2ludGVnZXIoc3Vic3RyZWFtLT5ydW50aW1lLAo+ID4gPiA+ID4gKwo+ID4gU05EUlZf UENNX0hXX1BBUkFNX1BFUklPRFMpOwo+ID4gPiA+ID4gKyAgICAgaWYgKHJldCA8IDApIHsKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gc2V0IHBjbSBodyBw YXJhbXMgcGVyaW9kc1xuIik7Cj4gPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g PiA+ID4gPiArICAgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICBkbWFfZGF0YSA9IHNu ZF9zb2NfZGFpX2dldF9kbWFfZGF0YShjcHVfZGFpLCBzdWJzdHJlYW0pOwo+ID4gPiA+ID4gKyAg ICAgaWYgKCFkbWFfZGF0YSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICBjaGFuID0gZG1hX3JlcXVlc3Rfc2xhdmVfY2hh bm5lbChjcHVfZGFpLT5kZXYsIHR4ID8gInR4IiA6ICJyeCIpOwo+ID4gPiA+ID4gKyAgICAgaWYg KCFjaGFuKSB7Cj4gPiA+ID4gPiArICAgICAgICAgICAgIC8qIFRyeSB0byByZXF1ZXN0IGNoYW5u ZWwgdXNpbmcgY29tcGF0X2ZpbHRlcl9mbiAqLwo+ID4gPiA+ID4gKyAgICAgICAgICAgICBjaGFu ID0gc25kX2RtYWVuZ2luZV9wY21fcmVxdWVzdF9jaGFubmVsKGZpbHRlciwKPiA+ID4gPiA+ICsK PiA+IGRtYV9kYXRhLT5maWx0ZXJfZGF0YSk7Cj4gPiA+ID4gPiArICAgICAgICAgICAgIGlmICgh Y2hhbikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOWElPOwo+ID4g PiA+ID4gKyAgICAgfQo+ID4gPiA+ID4gCj4gPiA+ID4gPiAtICAgICBjb25maWcgPSBkZXZtX2t6 YWxsb2MoJnBkZXYtPmRldiwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBzaXplb2Yo c3RydWN0IHNuZF9kbWFlbmdpbmVfcGNtX2NvbmZpZyksCj4gPiBHRlBfS0VSTkVMKTsKPiA+ID4g PiA+IC0gICAgIGlmICghY29uZmlnKQo+ID4gPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPiA+ID4gPiA+IC0gICAgICpjb25maWcgPSBpbXhfZG1hZW5naW5lX3BjbV9jb25maWc7 Cj4gPiA+ID4gPiArICAgICByZXQgPSBzbmRfZG1hZW5naW5lX3BjbV9vcGVuKHN1YnN0cmVhbSwg Y2hhbik7Cj4gPiA+ID4gPiArICAgICBpZiAocmV0KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICBn b3RvIHBjbV9vcGVuX2ZhaWw7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IC0gICAgIHJldHVybiBkZXZt X3NuZF9kbWFlbmdpbmVfcGNtX3JlZ2lzdGVyKCZwZGV2LT5kZXYsCj4gPiA+ID4gPiAtICAgICAg ICAgICAgIGNvbmZpZywKPiA+ID4gPiA+IC0gICAgICAgICAgICAgU05EX0RNQUVOR0lORV9QQ01f RkxBR19DT01QQVQpOwo+ID4gPiA+ID4gKyAgICAgbWVtc2V0KCZodywgMCwgc2l6ZW9mKGh3KSk7 Cj4gPiA+ID4gPiArICAgICBody5pbmZvID0gU05EUlZfUENNX0lORk9fTU1BUCB8Cj4gPiBTTkRS Vl9QQ01fSU5GT19NTUFQX1ZBTElEIHwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBT TkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRDsKPiA+ID4gPiA+ICsgICAgIGh3LnBlcmlvZHNfbWlu ID0gMjsKPiA+ID4gPiA+ICsgICAgIGh3LnBlcmlvZHNfbWF4ID0gVUlOVF9NQVg7Cj4gPiA+ID4g PiArICAgICBody5wZXJpb2RfYnl0ZXNfbWluID0gMjU2Owo+ID4gPiA+ID4gKyAgICAgaHcucGVy aW9kX2J5dGVzX21heCA9Cj4gPiBkbWFfZ2V0X21heF9zZWdfc2l6ZShjaGFuLT5kZXZpY2UtPmRl dik7Cj4gPiA+ID4gPiArICAgICBody5idWZmZXJfYnl0ZXNfbWF4ID0gSU1YX0RFRkFVTFRfRE1B QlVGX1NJWkU7Cj4gPiA+ID4gPiArICAgICBody5maWZvX3NpemUgPSBkbWFfZGF0YS0+Zmlmb19z aXplOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgLyogUmVmaW5lIHRoZSBodyBhY2NvcmRp bmcgdG8gY2FwcyBvZiBETUEuICovCj4gPiA+ID4gPiArICAgICByZXQgPSBzbmRfZG1hZW5naW5l X3BjbV9yZWZpbmVfcnVudGltZV9od3BhcmFtcyhzdWJzdHJlYW0sCj4gPiA+ID4gPiArCj4gPiBk bWFfZGF0YSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZodywKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW4pOwo+ID4gPiA+ID4gKyAgICAgaWYgKHJl dCA8IDApCj4gPiA+ID4gPiArICAgICAgICAgICAgIGdvdG8gcmVmaW5lX3J1bnRpbWVfaHdwYXJh bXNfZmFpbDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgIHNuZF9zb2Nfc2V0X3J1bnRpbWVf aHdwYXJhbXMoc3Vic3RyZWFtLCAmaHcpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgLyog U3VwcG9ydCBhbGxvY2F0ZSBtZW1vcnkgZnJvbSBJUkFNICovCj4gPiA+ID4gPiArICAgICByZXQg PSBzbmRfZG1hX2FsbG9jX3BhZ2VzKFNORFJWX0RNQV9UWVBFX0RFVl9JUkFNLAo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuLT5kZXZpY2UtPmRldiwKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHcuYnVmZmVyX2J5dGVzX21heCwK PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1YnN0cmVhbS0+ZG1h X2J1ZmZlcik7Cj4gPiA+ID4gPiArICAgICBpZiAocmV0IDwgMCkKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgZ290byBhbGxvY19wYWdhc19mYWlsOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAg cmV0dXJuIDA7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArYWxsb2NfcGFnYXNfZmFpbDoKPiA+ID4g PiA+ICtyZWZpbmVfcnVudGltZV9od3BhcmFtc19mYWlsOgo+ID4gPiA+ID4gKyAgICAgc25kX2Rt YWVuZ2luZV9wY21fY2xvc2Uoc3Vic3RyZWFtKTsKPiA+ID4gPiA+ICtwY21fb3Blbl9mYWlsOgo+ ID4gPiA+ID4gKyAgICAgZG1hX3JlbGVhc2VfY2hhbm5lbChjaGFuKTsKPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gK3N0YXRpYyBpbnQgaW14X3BjbV9jbG9zZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9wY21f c3Vic3RyZWFtICpzdWJzdHJlYW0pIHsKPiA+ID4gPiA+ICsgICAgIGlmIChzdWJzdHJlYW0pIHsK PiA+ID4gPiA+ICsgICAgICAgICAgICAgc25kX2RtYV9mcmVlX3BhZ2VzKCZzdWJzdHJlYW0tPmRt YV9idWZmZXIpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICBzdWJzdHJlYW0tPmRtYV9idWZmZXIu YXJlYSA9IE5VTEw7Cj4gPiA+ID4gPiArICAgICAgICAgICAgIHN1YnN0cmVhbS0+ZG1hX2J1ZmZl ci5hZGRyID0gMDsKPiA+ID4gPiA+ICsgICAgIH0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAg IHJldHVybiBzbmRfZG1hZW5naW5lX3BjbV9jbG9zZV9yZWxlYXNlX2NoYW4oc3Vic3RyZWFtKTsK PiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGludCBpbXhfcGNtX25l dyhzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQpIHsKPiA+ID4gPiA+ ICsgICAgIHN0cnVjdCBzbmRfY2FyZCAqY2FyZCA9IHJ0ZC0+Y2FyZC0+c25kX2NhcmQ7Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArICAgICByZXR1cm4gZG1hX2NvZXJjZV9tYXNrX2FuZF9jb2hlcmVu dChjYXJkLT5kZXYsCj4gPiA+ID4gPiArRE1BX0JJVF9NQVNLKDMyKSk7IH0KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciBp bXhfcGNtX2NvbXBvbmVudCA9IHsKPiA+ID4gPiA+ICsgICAgIC5uYW1lICAgICAgICAgICA9ICJp bXgtcGNtLWRtYSIsCj4gPiA+ID4gPiArICAgICAucGNtX2NvbnN0cnVjdCAgPSBpbXhfcGNtX25l dywKPiA+ID4gPiA+ICsgICAgIC5vcGVuICAgICAgICAgICA9IGlteF9wY21fb3BlbiwKPiA+ID4g PiA+ICsgICAgIC5jbG9zZSAgICAgICAgICA9IGlteF9wY21fY2xvc2UsCj4gPiA+ID4gPiArICAg ICAuaHdfcGFyYW1zICAgICAgPSBpbXhfcGNtX2h3X3BhcmFtcywKPiA+ID4gPiA+ICsgICAgIC5o d19mcmVlICAgICAgICA9IGlteF9wY21faHdfZnJlZSwKPiA+ID4gPiA+ICsgICAgIC50cmlnZ2Vy ICAgICAgICA9IGlteF9wY21fdHJpZ2dlciwKPiA+ID4gPiA+ICsgICAgIC5wb2ludGVyICAgICAg ICA9IGlteF9wY21fcG9pbnRlciwKPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g K2ludCBpbXhfcGNtX2RtYV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHNpemVf dCBzaXplKSB7Cj4gPiA+ID4gPiArICAgICByZXR1cm4gZGV2bV9zbmRfc29jX3JlZ2lzdGVyX2Nv bXBvbmVudCgmcGRldi0+ZGV2LAo+ID4gPiA+ID4gKwo+ID4gJmlteF9wY21fY29tcG9uZW50LAo+ ID4gPiA+ID4gK05VTEwsIDApOwo+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiDCoEVYUE9SVF9TWU1C T0xfR1BMKGlteF9wY21fZG1hX2luaXQpOwo+ID4gPiA+ID4gCj4gCgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK