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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 22838C05027 for ; Mon, 6 Feb 2023 09:15:04 +0000 (UTC) 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:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mcbKIZ91adj03nQ4u3ZmlfDTa+d6R/M+B3Bv047BID0=; b=3paHjliwmonSwb nhlHn2+wYGLWGll71DizlcffL+DrRb1MZ2LZnPMAfw/5DCkKueWCTcP8Cctzs3F3k+fAGd06cOaKN AhqQY6LlRy/HuPkS8fbXvaPzLbZRxn9uFIMLtW0xehe5WSS8NCqhdCKk7KLTeVBgNiyQwA7WfzZJe ALuFByJL6sIepVSFnwFHon0upCvTiTP1JpICe0WLaefCV+Kcr3BxmK9uHCnP8vtkflp1hfPu7wZPq mCn+YBUk81s7Ab27xMMzlxlDymoz89BkZNWOncvTYJ8vBIqNwBRilb/O9Bjt3IjA2inx2qxPHCRgL yEP2djZObQwJHfWDzsHQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pOxZb-007os8-Um; Mon, 06 Feb 2023 09:14:04 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pOxZT-007onf-Hf for linux-arm-kernel@lists.infradead.org; Mon, 06 Feb 2023 09:13:59 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E2CFB113E; Mon, 6 Feb 2023 01:14:29 -0800 (PST) Received: from FVFF77S0Q05N (unknown [10.57.91.13]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BCF4A3F71E; Mon, 6 Feb 2023 01:13:46 -0800 (PST) Date: Mon, 6 Feb 2023 09:13:39 +0000 From: Mark Rutland To: Ruan Jinjie Cc: linux-arm-kernel@lists.infradead.org, "liaochang (A)" Subject: Re: [PATCH v2 9/9] arm64: armv8_deprecated: rework deprected instruction handling Message-ID: References: <20221019144123.612388-1-mark.rutland@arm.com> <20221019144123.612388-10-mark.rutland@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230206_011355_782556_A215E555 X-CRM114-Status: GOOD ( 45.58 ) 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 T24gTW9uLCBGZWIgMDYsIDIwMjMgYXQgMTA6MDM6MTdBTSArMDgwMCwgUnVhbiBKaW5qaWUgd3Jv dGU6Cj4gT24gMjAyMy8yLzQgMToyNywgTWFyayBSdXRsYW5kIHdyb3RlOgo+ID4gT24gRnJpLCBG ZWIgMDMsIDIwMjMgYXQgMDY6MDg6MDhQTSArMDgwMCwgUnVhbiBKaW5qaWUgd3JvdGU6Cj4gPj4g SGksIE1hcmssIEkgd2FudCB0byBtZXJnZSB0aGlzIHBhdGNoIHRvIGxpbnV4LTUuMTAueSB0byBz b2x2ZSBhIGxpc3RfYWRkCj4gPj4gZG91YmxlIHByb2JsZW0uIEhvd2V2ZXIsIEkgY2FuIG5vdCB0 cmlnZ2VyIHRoZSBlbXVsYXRpb24gb2YgdGhlc2UKPiA+PiBkZXByZWNhdGVkIGluc3RydWN0aW9u cyBpbiBxZW11IHdpdGggdXNlcnNwYWNlIHByb2dyYW0gYXMgYmVsb3csIGJ1dAo+ID4+IGNhdXNl IElBQlQgYW5kIERBQlQsCj4gPiAKPiA+IFdlbGwgdGhhdCBjZXJ0YWlubHkgc291bmRzIHdyb25n IQo+ID4gCj4gPiBXaGVuIHlvdSBzYXkgImluIHFlbXUiLCBzbyB5b3UgbWVhbiBpbiBhIEtWTSBW TSwgYSBUQ0cgVk0sIG9yIHVzZXJtb2RlCj4gPiBlbXVsYXRpb24/Cj4gPiAKPiA+IENhbiB5b3Ug dGVsbCBtZSBleGFjdGx5IGhvdyB5b3UncmUgaW52b2tpbmcgcWVtdT8KPiAKPiBTb3JyeSwgdGhl IGluZm9ybWF0aW9uIGdpdmVuIHdhcyBpbmNvbXBsZXRlLkkgaW52b2tlIHFlbXUgNi4xLjEgd2l0 aAo+IGZvbGxvd2luZyBjb21tYW5kcywgd2hpY2ggaXMgYSBUQ0cgVk06Cj4gCj4gcWVtdS1zeXN0 ZW0tYWFyY2g2NAo+IAktTSB2aXJ0IFwKPiAJLWNwdSBjb3J0ZXgtYTU3IFwKPiAJLXNtcCA0IFwK PiAJLW0gNDA5NiBcCj4gCS1ub2dyYXBoaWMgXAo+IAkta2VybmVsIGxpbnV4LXN0YWJsZS9hcmNo L2FybTY0L2Jvb3QvSW1hZ2UgXAo+IAktZHJpdmUgaWY9bm9uZSxmaWxlPXJvb3Rmcy5pbWcsZm9y bWF0PXJhdyxpZD1oZDAgXAo+IAktZGV2aWNlIHZpcnRpby1uZXQtZGV2aWNlLG5ldGRldj1uZXQw IFwKPiAJLW5ldGRldiB1c2VyLGlkPW5ldDAsaG9zdD0xMC4wLjIuMSxob3N0ZndkPXRjcDo6NTU1 NS06MjIgXAo+IAktZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWhkMCBcCj4gCS1hcHBl bmQgInJvb3Q9L2Rldi92ZGEgY29uc29sZT10dHlBTUEwIHJvb3Rmc3R5cGU9ZXh0NCBpbml0PS9s aW51eHJjIHJ3Cj4gb29wcz1wYW5pYyBubWlfd2F0Y2hkb2c9cGFuaWMgcGFuaWM9MSIKPiAKPiA+ IAo+ID4gQ2FuIHlvdSBnaXZlIGFuIGV4YW1wbGUgb2YgdGhlIElBQlQgYW5kIERBQlQgeW91IHNl ZT8KPiAKPiBCZWNhdXNlIHRoZSBlbXVsYXRpb24gb2YgY3AxNSBkZXByZWNhdGVkIGluc3RydWN0 aW9ucyBpcyBub3QgdHJpZ2dlcmVkLEkKPiBhZGQgcHJpbnRrIG1lc3NhZ2UgaW4gZWwwX3N5bmNf Y29tcGF0X2hhbmRsZXIoKSBmdW5jdGlvbiAKCkFoISBTbyB5b3UgbWVhbiB0aGF0IHRob3NlIGFy ZSB0aGUgKm9ubHkqIGV4Y2VwdGlvbnMgeW91IHNlZSwgbm90IHRoYXQgdGhvc2UKYXJlICp1bmV4 cGVjdGVkKi4gQUZBSUNULCB0aG9zZSBhcmUganN1dCB0aGUgdGVzdCBjb2RlIGFuZCBkYXRhIGJl aW5nIGZhdWx0ZWQKaW4gYXMgdXN1YWwsIGFuZCBhcmUgbm90IHJlbGF0ZWQgdG8gdGhlIGVtdWxh dGlvbi4KCkkgYXNzdW1lIHRoZSB0ZXN0IGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksIGFuZCByZXR1 cm5zIDA/CgpJIGhhZCBhIHBsYXkgd2l0aCB0aGlzIGxvY2FsbHkgKHdpdGggUUVNVSA2LjIuOTQp LCBhbmQgSSBzZWUgdGhhdCB0aGUKZGVwcmVjYXRlZCBpbnN0cnVjdGlvbnMgd29yayBldmVuIHdo ZW4gbmVpdGhlciB0aGUgZW11bGF0aW9uIG5vciBIVyBzdXBwb3J0IGlzCmVuYWJsZWQgKGluIHRo ZSByZWxldmFudCBTQ1RMUl9FTHggYml0cyksIGFuZCBJIHRoaW5rIHRoYXQgd2hhdCdzIGhhcHBl bmluZwpoZXJlIGlzIHRoZSBRRU1VIGlzbid0IGNvcnJlY3RseSBlbXVsYXRpbmcgdGhlIGFyY2hp dGVjdHVyZToKCiogUUVNVSBzZWVtcyB0byBpZ25vcmUgU0NUTFJfRUx4LkNQMTVCRU4sIGFuZCBh bHdheXMgaW1lcGxlbWVudHMgdGhvc2UgcmF0aGVyCiAgdGhhbiBtYWtpbmcgdGhvc2UgVU5ERUZJ TkVEIHdoZW4gU0NUTFJfRUx4LkNQMTVCRU4gPT0gMGIwLgoKKiBRRU1VIHNlZW1zIHRvIGlnbm9y ZSBTQ1RMUl9FTHguU0VELCBhbmQgYWx3YXlzIGltcGxlbWVudHMgU0VURU5EIHJhdGhlciB0aGFu CiAgbWFraW5nIHRoYXQgVU5ERUZJTkVEIHdoZW4gU0NUTFJfRUx4LlNFRCA9PSAwYjEuCgoqIFFF TVUgc2VlbXMgdG8gaW1wbGVtZW50IFNXUCosIGV2ZW4gdGhvdWdoIHRob3NlIGluc3RydWN0aW9u cyBkb24ndCBleGlzdCBpbgogIEFSTXY4LUEgYW5kIHNob3VsZCBhbHdheXMgYmUgVU5ERUZJTkVE LgogCj4gdG8gY2hlY2sgdGhlIEVDIGNvZGUgV2hlbiB0aGUgZm9sbG93aW5nIHVzZXItc3BhY2Ug Y29kZSBpcyBleGVjdXRlZC5UaGUgcHJpbnQKPiBpcyBhcyBmb2xsb3dzOgo+IAo+IC9ob21lICMg Li9jcDE1X2JhcnJpZXJfdGVzdAo+IFsgICA3Mi40NjkzNjZdIGVsMF9zeW5jX2NvbXBhdF9oYW5k bGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjAKPiBbICAgNzIuNDcwNDc3XSBlbDBfc3luY19jb21w YXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDI0Cj4gWyAgIDcyLjQ3MTM0Ml0gZWwwX3N5 bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgyNAo+IFsgICA3Mi40NzIzNDFd IGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjAKPiBbICAgNzIu NDc0MDMzXSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDI0Cj4g WyAgIDcyLjQ3NTE0NV0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0g MHgyMAo+IFsgICA3Mi40NzYyNTVdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VD KGVzcik9IDB4MjAKPiBbICAgNzIuNDc3ODYxXSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNS X0VMeF9FQyhlc3IpPSAweDExCj4gWyAgIDcyLjQ3ODQyN10gZWwwX3N5bmNfY29tcGF0X2hhbmRs ZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQo+IFsgICA3Mi40NzkxMTFdIGVsMF9zeW5jX2NvbXBh dF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjQKPiBbICAgNzIuNDc5OTE5XSBlbDBfc3lu Y19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDExCj4gWyAgIDcyLjQ4MDQ2N10g ZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQo+IFsgICA3Mi40 ODE2MTZdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MTEKPiBb ICAgNzIuNDgzMzg2XSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAw eDIwCj4gWyAgIDcyLjQ4NDE4N10gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMo ZXNyKT0gMHgxMQo+IFsgICA3Mi40ODUyMTVdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1Jf RUx4X0VDKGVzcik9IDB4MTEKPiBbICAgNzIuNDg1ODgyXSBlbDBfc3luY19jb21wYXRfaGFuZGxl ciwgRVNSX0VMeF9FQyhlc3IpPSAweDI0Cj4gWyAgIDcyLjQ4NjYyOF0gZWwwX3N5bmNfY29tcGF0 X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQo+IFsgICA3Mi40ODc0OTVdIGVsMF9zeW5j X2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjAKPiBbICAgNzIuNDg4NTQ4XSBl bDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDExCj4gCj4gSSB3ZW50 IHRocm91Z2ggIkFSTcKuIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFsIEFSTXY4LCBmb3Ig QVJNdjgtQQo+IGFyY2hpdGVjdHVyZSBwcm9maWxlIiBhbmQgY2hlY2sgdGhlIGhlYWRlciBhcmNo L2FybTY0L2luY2x1ZGUvYXNtL2Vzci5oLAo+IGZpbmQgaXQncyBFQyBjb2RlcyBmb3IgU1ZDMzIs IElBQlQgYW5kIERBQlQuCj4gCj4gICNkZWZpbmUgRVNSX0VMeF9FQ19TVkMzMiAgICAoMHgxMSkK PiAgI2RlZmluZSBFU1JfRUx4X0VDX0lBQlRfTE9XICgweDIwKQo+ICAjZGVmaW5lIEVTUl9FTHhf RUNfREFCVF9MT1cgKDB4MjQpCj4gCj4gSSBhbHNvIGxlYXJuZWQgZnJvbSB0aGUgbWFudWFsIHRo YXQgdGhlIFNDVExSX0VMMS5DUDE1QkVOIGlzIGNyaXRpY2FsLAo+IHdoaWNoIGNvbnRyb2wgdGhl IGJlaGF2aW9yIG9mIGFib3ZlIGRlcHJlY2F0aW5nIG1lbW9yeSBiYXJyaWVyCj4gaW5zdHJ1Y3Rp b25zIHdoaWNoIGNhbiBiZSBzZXQgYnkgdGhlICdlY2hvIDIgPgo+IC9wcm9jL3N5cy9hYmkvY3Ax NV9iYXJyaWVyJyBjb21tYW5kLkhvd2V2ZXIsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKPiB3aGV0 aGVyIGl0IGlzIHNldCBvciBub3QuCgpBcyBhYm92ZSwgSSB0aGluayB0aGlzIGlzIGEgUUVNVSBi dWcsIHdpdGggUUVNVSBlcnJvbmVvc3VseSBpbXBsZW1lbnRpbmcgdGhlCmluc3RydWN0aW9ucyB3 aGVuIHRoZXkgc2hvdWxkIGJlIFVOREVGSU5FRC4gVGhlIGFib3J0cyBhcmUgdW5yZWxhdGVkLCBh bmQgYXJlCmp1c3QgdGhlIHVzdWFsIGZhdWx0aW5nIGluIG9mIGNvZGUgYW5kIGRhdGEgcGFnZXMu CgpTbyBJJ2QgcmVjb21tZW5kIHJlcG9ydGluZyB0aGEgdG8gUUVNVSBmb2xrLCBhbmQgaW4gdGhl IG1lYW4gdGltZSB0ZXN0aW5nIG9uCnJlYWwgSFcgcmF0aGVyIHRoYW4gUUVNVSBpbiBUQ0cgbW9k ZS4gV2hlbiBJIHdyb3RlIHRoZXNlIHBhdGNoZXMgSSB0ZXN0ZWQgb24gYQpSYXNwYmVycnkgUGkg NCwgdW5kZXIgYSBLVk0gdmlydHVhbCBtYWNoaW5lLgoKVGhhbmtzLApNYXJrLgoKPiAKPiBJIHRo aW5rIHRoZSBjb2RlIHdlbnQgaW50byB0aGUgd3JvbmcgY29kZSBmbG93IGJlY2F1c2Ugb2YgdGhl IHdyb25nIEVDCj4gY29kZSwgYnV0IEkgZG9uJ3Qga25vdyB3aHkgdGhlIHdyb25nIEVDIHZhbHVl IHdhcyBwYXNzZWQgaW4uCj4gCj4gPiAKPiA+PiBzbyB0aGF0IEkgY2FuIG5vdCB2ZXJpZnkgdGhl IGNvcnJlY3RuZXNzIG9mIHRoZQo+ID4+IHBhdGNoLkNhbiB5b3UgZ2l2ZSBtZSBzb21lIGhlbHAg dG8gdGVzdCB0aGUgZW11bGF0aW9uIG9mIHRoZXNlCj4gPj4gZGVwcmVjYXRlZCBpbnN0cnVjdGlv bnM/Cj4gPj4KPiA+PiAjaW5jbHVkZTxzdGRpby5oPgo+ID4+Cj4gPj4gI2RlZmluZSBpc2IoeCkg X19hc21fXyBfX3ZvbGF0aWxlX18gKCJtY3IgcDE1LCAwLCAlMCwgYzcsIGM1LCA0IiBcCj4gPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICJyIiAoMCkgOiAibWVtb3J5 IikKPiA+PiAjZGVmaW5lIGRzYih4KSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1jciBwMTUsIDAs ICUwLCBjNywgYzEwLCA0IiBcCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOiA6ICJyIiAoMCkgOiAibWVtb3J5IikKPiA+PiAjZGVmaW5lIGRtYih4KSBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoIm1jciBwMTUsIDAsICUwLCBjNywgYzEwLCA1IiBcCj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICJyIiAoMCkgOiAibWVtb3J5IikKPiA+IAo+ ID4gRldJVywgdGhlc2UgZW5jb2RpbmdzIGxvb2sgY29ycmVjIHRvIG1lLgo+ID4gCj4gPiBUaGFu a3MsCj4gPiBNYXJrLgo+ID4gCj4gPj4KPiA+PiBpbnQgbWFpbigpewo+ID4+ICAgICAgICAgaXNi KCk7Cj4gPj4gICAgICAgICBkc2IoKTsKPiA+PiAgICAgICAgIGRtYigpOwo+ID4+ICAgICAgICAg cmV0dXJuIDA7Cj4gPj4gfQo+ID4+Cj4gPj4+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IE1hcmsgUnV0 bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+Cj4gPj4+IENjOiBDYXRhbGluIE1hcmluYXMgPGNh dGFsaW4ubWFyaW5hc0Bhcm0uY29tPgo+ID4+PiBDYzogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNl QGFybS5jb20+Cj4gPj4+IENjOiBKb2V5IEdvdWx5IDxqb2V5LmdvdWx5QGFybS5jb20+Cj4gPj4+ IENjOiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+Cj4gPj4+IENjOiBXaWxs IERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBNYXJrIFJ1dGxh bmQgPG1hcmsucnV0bGFuZEBhcm0uY29tPgo+ID4+PiAtLS0KPiA+Pj4gIGFyY2gvYXJtNjQvaW5j bHVkZS9hc20vdHJhcHMuaCAgICAgICB8ICAxOSArLQo+ID4+PiAgYXJjaC9hcm02NC9rZXJuZWwv YXJtdjhfZGVwcmVjYXRlZC5jIHwgMjgyICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ID4+ PiAgYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYyAgICAgICAgICAgIHwgIDQwICstLS0KPiA+Pj4g IDMgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDE5MiBkZWxldGlvbnMoLSkKPiA+ Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHJhcHMuaCBiL2Fy Y2gvYXJtNjQvaW5jbHVkZS9hc20vdHJhcHMuaAo+ID4+PiBpbmRleCA2ZTU4MjY0NzBiZWEuLjFm MzYxZTJkYTUxNiAxMDA2NDQKPiA+Pj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFw cy5oCj4gPj4+ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHJhcHMuaAo+ID4+PiBAQCAt MTMsMTcgKzEzLDE2IEBACj4gPj4+ICAKPiA+Pj4gIHN0cnVjdCBwdF9yZWdzOwo+ID4+PiAgCj4g Pj4+IC1zdHJ1Y3QgdW5kZWZfaG9vayB7Cj4gPj4+IC0Jc3RydWN0IGxpc3RfaGVhZCBub2RlOwo+ ID4+PiAtCXUzMiBpbnN0cl9tYXNrOwo+ID4+PiAtCXUzMiBpbnN0cl92YWw7Cj4gPj4+IC0JdTY0 IHBzdGF0ZV9tYXNrOwo+ID4+PiAtCXU2NCBwc3RhdGVfdmFsOwo+ID4+PiAtCWludCAoKmZuKShz dHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluc3RyKTsKPiA+Pj4gLX07Cj4gPj4+ICsjaWZkZWYg Q09ORklHX0FSTVY4X0RFUFJFQ0FURUQKPiA+Pj4gK2Jvb2wgdHJ5X2VtdWxhdGVfYXJtdjhfZGVw cmVjYXRlZChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluc24pOwo+ID4+PiArI2Vsc2UKPiA+ Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ID4+PiArdHJ5X2VtdWxhdGVfYXJtdjhfZGVwcmVjYXRl ZChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluc24pCj4gPj4+ICt7Cj4gPj4+ICsJcmV0dXJu IGZhbHNlOwo+ID4+PiArfQo+ID4+PiArI2VuZGlmIC8qIENPTkZJR19BUk1WOF9ERVBSRUNBVEVE ICovCj4gPj4+ICAKPiA+Pj4gLXZvaWQgcmVnaXN0ZXJfdW5kZWZfaG9vayhzdHJ1Y3QgdW5kZWZf aG9vayAqaG9vayk7Cj4gPj4+IC12b2lkIHVucmVnaXN0ZXJfdW5kZWZfaG9vayhzdHJ1Y3QgdW5k ZWZfaG9vayAqaG9vayk7Cj4gPj4+ICB2b2lkIGZvcmNlX3NpZ25hbF9pbmplY3QoaW50IHNpZ25h bCwgaW50IGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBlcnIpOwo+ ID4+PiAgdm9pZCBhcm02NF9ub3RpZnlfc2VnZmF1bHQodW5zaWduZWQgbG9uZyBhZGRyKTsKPiA+ Pj4gIHZvaWQgYXJtNjRfZm9yY2Vfc2lnX2ZhdWx0KGludCBzaWdubywgaW50IGNvZGUsIHVuc2ln bmVkIGxvbmcgZmFyLCBjb25zdCBjaGFyICpzdHIpOwo+ID4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9rZXJuZWwvYXJtdjhfZGVwcmVjYXRlZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvYXJtdjhf ZGVwcmVjYXRlZC5jCj4gPj4+IGluZGV4IDdmMmNlNDlkYmY5Ny4uZWQwNzg4Y2Y2YmJiIDEwMDY0 NAo+ID4+PiAtLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9hcm12OF9kZXByZWNhdGVkLmMKPiA+Pj4g KysrIGIvYXJjaC9hcm02NC9rZXJuZWwvYXJtdjhfZGVwcmVjYXRlZC5jCj4gPj4+IEBAIC0zOCwx NyArMzgsMjQgQEAgZW51bSBpbnNuX2VtdWxhdGlvbl9tb2RlIHsKPiA+Pj4gIGVudW0gbGVnYWN5 X2luc25fc3RhdHVzIHsKPiA+Pj4gIAlJTlNOX0RFUFJFQ0FURUQsCj4gPj4+ICAJSU5TTl9PQlNP TEVURSwKPiA+Pj4gKwlJTlNOX1VOQVZBSUxBQkxFLAo+ID4+PiAgfTsKPiA+Pj4gIAo+ID4+PiAg c3RydWN0IGluc25fZW11bGF0aW9uIHsKPiA+Pj4gIAljb25zdCBjaGFyCQkJKm5hbWU7Cj4gPj4+ IC0Jc3RydWN0IGxpc3RfaGVhZAkJbm9kZTsKPiA+Pj4gIAllbnVtIGxlZ2FjeV9pbnNuX3N0YXR1 cwkJc3RhdHVzOwo+ID4+PiAtCXN0cnVjdCB1bmRlZl9ob29rCQkqaG9va3M7Cj4gPj4+ICsJYm9v bAkJCQkoKnRyeV9lbXVsYXRlKShzdHJ1Y3QgcHRfcmVncyAqcmVncywKPiA+Pj4gKwkJCQkJCSAg ICAgICB1MzIgaW5zbik7Cj4gPj4+ICAJaW50CQkJCSgqc2V0X2h3X21vZGUpKGJvb2wgZW5hYmxl KTsKPiA+Pj4gKwo+ID4+PiAgCWludCBjdXJyZW50X21vZGU7Cj4gPj4+ICAJaW50IG1pbjsKPiA+ Pj4gIAlpbnQgbWF4Owo+ID4+PiArCj4gPj4+ICsJLyoKPiA+Pj4gKwkgKiBzeXNjdGwgZm9yIHRo aXMgZW11bGF0aW9uICsgYSBzZW50aW5hbCBlbnRyeS4KPiA+Pj4gKwkgKi8KPiA+Pj4gKwlzdHJ1 Y3QgY3RsX3RhYmxlIHN5c2N0bFsyXTsKPiA+Pj4gIH07Cj4gPj4+ICAKPiA+Pj4gICNkZWZpbmUg QVJNX09QQ09ERV9DT05EVEVTVF9GQUlMICAgMAo+ID4+PiBAQCAtNzAsNiArNzcsNyBAQCBzdGF0 aWMgdW5zaWduZWQgaW50IGFhcmNoMzJfY2hlY2tfY29uZGl0aW9uKHUzMiBvcGNvZGUsIHUzMiBw c3IpCj4gPj4+ICAJcmV0dXJuIEFSTV9PUENPREVfQ09ORFRFU1RfVU5DT05EOwo+ID4+PiAgfQo+ ID4+PiAgCj4gPj4+ICsjaWZkZWYgQ09ORklHX1NXUF9FTVVMQVRJT04KPiA+Pj4gIC8qCj4gPj4+ ICAgKiAgSW1wbGVtZW50IGVtdWxhdGlvbiBvZiB0aGUgU1dQL1NXUEIgaW5zdHJ1Y3Rpb25zIHVz aW5nIGxvYWQtZXhjbHVzaXZlIGFuZAo+ID4+PiAgICogIHN0b3JlLWV4Y2x1c2l2ZS4KPiA+Pj4g QEAgLTIyMiwyOCArMjMwLDI3IEBAIHN0YXRpYyBpbnQgc3dwX2hhbmRsZXIoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsIHUzMiBpbnN0cikKPiA+Pj4gIAlyZXR1cm4gMDsKPiA+Pj4gIH0KPiA+Pj4gIAo+ ID4+PiAtLyoKPiA+Pj4gLSAqIE9ubHkgZW11bGF0ZSBTV1AvU1dQQiBleGVjdXRlZCBpbiBBUk0g c3RhdGUvVXNlciBtb2RlLgo+ID4+PiAtICogVGhlIGtlcm5lbCBtdXN0IGJlIFNXUCBmcmVlIGFu ZCBTV1B7Qn0gZG9lcyBub3QgZXhpc3QgaW4gVGh1bWIuCj4gPj4+IC0gKi8KPiA+Pj4gLXN0YXRp YyBzdHJ1Y3QgdW5kZWZfaG9vayBzd3BfaG9va3NbXSA9IHsKPiA+Pj4gLQl7Cj4gPj4+IC0JCS5p bnN0cl9tYXNrCT0gMHgwZmIwMGZmMCwKPiA+Pj4gLQkJLmluc3RyX3ZhbAk9IDB4MDEwMDAwOTAs Cj4gPj4+IC0JCS5wc3RhdGVfbWFzawk9IFBTUl9BQTMyX01PREVfTUFTSywKPiA+Pj4gLQkJLnBz dGF0ZV92YWwJPSBQU1JfQUEzMl9NT0RFX1VTUiwKPiA+Pj4gLQkJLmZuCQk9IHN3cF9oYW5kbGVy Cj4gPj4+IC0JfSwKPiA+Pj4gLQl7IH0KPiA+Pj4gLX07Cj4gPj4+ICtzdGF0aWMgYm9vbCB0cnlf ZW11bGF0ZV9zd3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnNuKQo+ID4+PiArewo+ID4+ PiArCS8qIFNXUHtCfSBvbmx5IGV4aXN0cyBpbiBBUk0gc3RhdGUgYW5kIGRvZXMgbm90IGV4aXN0 IGluIFRodW1iICovCj4gPj4+ICsJaWYgKCFjb21wYXRfdXNlcl9tb2RlKHJlZ3MpIHx8IGNvbXBh dF90aHVtYl9tb2RlKHJlZ3MpKQo+ID4+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4+ICsKPiA+Pj4g KwlpZiAoKGluc24gJiAweDBmYjAwZmYwKSAhPSAweDAxMDAwMDkwKQo+ID4+PiArCQlyZXR1cm4g ZmFsc2U7Cj4gPj4+ICsKPiA+Pj4gKwlyZXR1cm4gc3dwX2hhbmRsZXIocmVncywgaW5zbikgPT0g MDsKPiA+Pj4gK30KPiA+Pj4gIAo+ID4+PiAgc3RhdGljIHN0cnVjdCBpbnNuX2VtdWxhdGlvbiBp bnNuX3N3cCA9IHsKPiA+Pj4gIAkubmFtZSA9ICJzd3AiLAo+ID4+PiAgCS5zdGF0dXMgPSBJTlNO X09CU09MRVRFLAo+ID4+PiAtCS5ob29rcyA9IHN3cF9ob29rcywKPiA+Pj4gKwkudHJ5X2VtdWxh dGUgPSB0cnlfZW11bGF0ZV9zd3AsCj4gPj4+ICAJLnNldF9od19tb2RlID0gTlVMTCwKPiA+Pj4g IH07Cj4gPj4+ICsjZW5kaWYgLyogQ09ORklHX1NXUF9FTVVMQVRJT04gKi8KPiA+Pj4gIAo+ID4+ PiArI2lmZGVmIENPTkZJR19DUDE1X0JBUlJJRVJfRU1VTEFUSU9OCj4gPj4+ICBzdGF0aWMgaW50 IGNwMTViYXJyaWVyX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0cikKPiA+ Pj4gIHsKPiA+Pj4gIAlwZXJmX3N3X2V2ZW50KFBFUkZfQ09VTlRfU1dfRU1VTEFUSU9OX0ZBVUxU UywgMSwgcmVncywgcmVncy0+cGMpOwo+ID4+PiBAQCAtMzA2LDMxICszMTMsMjkgQEAgc3RhdGlj IGludCBjcDE1X2JhcnJpZXJfc2V0X2h3X21vZGUoYm9vbCBlbmFibGUpCj4gPj4+ICAJcmV0dXJu IDA7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gLXN0YXRpYyBzdHJ1Y3QgdW5kZWZfaG9vayBjcDE1 X2JhcnJpZXJfaG9va3NbXSA9IHsKPiA+Pj4gLQl7Cj4gPj4+IC0JCS5pbnN0cl9tYXNrCT0gMHgw ZmZmMGZkZiwKPiA+Pj4gLQkJLmluc3RyX3ZhbAk9IDB4MGUwNzBmOWEsCj4gPj4+IC0JCS5wc3Rh dGVfbWFzawk9IFBTUl9BQTMyX01PREVfTUFTSywKPiA+Pj4gLQkJLnBzdGF0ZV92YWwJPSBQU1Jf QUEzMl9NT0RFX1VTUiwKPiA+Pj4gLQkJLmZuCQk9IGNwMTViYXJyaWVyX2hhbmRsZXIsCj4gPj4+ IC0JfSwKPiA+Pj4gLQl7Cj4gPj4+IC0JCS5pbnN0cl9tYXNrCT0gMHgwZmZmMGZmZiwKPiA+Pj4g LQkJLmluc3RyX3ZhbAk9IDB4MGUwNzBmOTUsCj4gPj4+IC0JCS5wc3RhdGVfbWFzawk9IFBTUl9B QTMyX01PREVfTUFTSywKPiA+Pj4gLQkJLnBzdGF0ZV92YWwJPSBQU1JfQUEzMl9NT0RFX1VTUiwK PiA+Pj4gLQkJLmZuCQk9IGNwMTViYXJyaWVyX2hhbmRsZXIsCj4gPj4+IC0JfSwKPiA+Pj4gLQl7 IH0KPiA+Pj4gLX07Cj4gPj4+ICtzdGF0aWMgYm9vbCB0cnlfZW11bGF0ZV9jcDE1X2JhcnJpZXIo c3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnNuKQo+ID4+PiArewo+ID4+PiArCWlmICghY29t cGF0X3VzZXJfbW9kZShyZWdzKSB8fCBjb21wYXRfdGh1bWJfbW9kZShyZWdzKSkKPiA+Pj4gKwkJ cmV0dXJuIGZhbHNlOwo+ID4+PiArCj4gPj4+ICsJaWYgKChpbnNuICYgMHgwZmZmMGZkZikgPT0g MHgwZTA3MGY5YSkKPiA+Pj4gKwkJcmV0dXJuIGNwMTViYXJyaWVyX2hhbmRsZXIocmVncywgaW5z bikgPT0gMDsKPiA+Pj4gKwo+ID4+PiArCWlmICgoaW5zbiAmIDB4MGZmZjBmZmYpID09IDB4MGUw NzBmOTUpCj4gPj4+ICsJCXJldHVybiBjcDE1YmFycmllcl9oYW5kbGVyKHJlZ3MsIGluc24pID09 IDA7Cj4gPj4+ICsKPiA+Pj4gKwlyZXR1cm4gZmFsc2U7Cj4gPj4+ICt9Cj4gPj4+ICAKPiA+Pj4g IHN0YXRpYyBzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gaW5zbl9jcDE1X2JhcnJpZXIgPSB7Cj4gPj4+ ICAJLm5hbWUgPSAiY3AxNV9iYXJyaWVyIiwKPiA+Pj4gIAkuc3RhdHVzID0gSU5TTl9ERVBSRUNB VEVELAo+ID4+PiAtCS5ob29rcyA9IGNwMTVfYmFycmllcl9ob29rcywKPiA+Pj4gKwkudHJ5X2Vt dWxhdGUgPSB0cnlfZW11bGF0ZV9jcDE1X2JhcnJpZXIsCj4gPj4+ICAJLnNldF9od19tb2RlID0g Y3AxNV9iYXJyaWVyX3NldF9od19tb2RlLAo+ID4+PiAgfTsKPiA+Pj4gKyNlbmRpZiAvKiBDT05G SUdfQ1AxNV9CQVJSSUVSX0VNVUxBVElPTiAqLwo+ID4+PiAgCj4gPj4+ICsjaWZkZWYgQ09ORklH X1NFVEVORF9FTVVMQVRJT04KPiA+Pj4gIHN0YXRpYyBpbnQgc2V0ZW5kX3NldF9od19tb2RlKGJv b2wgZW5hYmxlKQo+ID4+PiAgewo+ID4+PiAgCWlmICghY3B1X3N1cHBvcnRzX21peGVkX2VuZGlh bl9lbDAoKSkKPiA+Pj4gQEAgLTM3OCw2MSArMzgzLDQxIEBAIHN0YXRpYyBpbnQgdDE2X3NldGVu ZF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zdHIpCj4gPj4+ICAJcmV0dXJu IHJjOwo+ID4+PiAgfQo+ID4+PiAgCj4gPj4+IC1zdGF0aWMgc3RydWN0IHVuZGVmX2hvb2sgc2V0 ZW5kX2hvb2tzW10gPSB7Cj4gPj4+IC0Jewo+ID4+PiAtCQkuaW5zdHJfbWFzawk9IDB4ZmZmZmZk ZmYsCj4gPj4+IC0JCS5pbnN0cl92YWwJPSAweGYxMDEwMDAwLAo+ID4+PiAtCQkucHN0YXRlX21h c2sJPSBQU1JfQUEzMl9NT0RFX01BU0ssCj4gPj4+IC0JCS5wc3RhdGVfdmFsCT0gUFNSX0FBMzJf TU9ERV9VU1IsCj4gPj4+IC0JCS5mbgkJPSBhMzJfc2V0ZW5kX2hhbmRsZXIsCj4gPj4+IC0JfSwK PiA+Pj4gLQl7Cj4gPj4+IC0JCS8qIFRodW1iIG1vZGUgKi8KPiA+Pj4gLQkJLmluc3RyX21hc2sJ PSAweGZmZmZmZmY3LAo+ID4+PiAtCQkuaW5zdHJfdmFsCT0gMHgwMDAwYjY1MCwKPiA+Pj4gLQkJ LnBzdGF0ZV9tYXNrCT0gKFBTUl9BQTMyX1RfQklUIHwgUFNSX0FBMzJfTU9ERV9NQVNLKSwKPiA+ Pj4gLQkJLnBzdGF0ZV92YWwJPSAoUFNSX0FBMzJfVF9CSVQgfCBQU1JfQUEzMl9NT0RFX1VTUiks Cj4gPj4+IC0JCS5mbgkJPSB0MTZfc2V0ZW5kX2hhbmRsZXIsCj4gPj4+IC0JfSwKPiA+Pj4gLQl7 fQo+ID4+PiAtfTsKPiA+Pj4gK3N0YXRpYyBib29sIHRyeV9lbXVsYXRlX3NldGVuZChzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdTMyIGluc24pCj4gPj4+ICt7Cj4gPj4+ICsJaWYgKGNvbXBhdF90aHVt Yl9tb2RlKHJlZ3MpICYmCj4gPj4+ICsJICAgIChpbnNuICYgMHhmZmZmZmZmNykgPT0gMHgwMDAw YjY1MCkKPiA+Pj4gKwkJcmV0dXJuIHQxNl9zZXRlbmRfaGFuZGxlcihyZWdzLCBpbnNuKSA9PSAw Owo+ID4+PiArCj4gPj4+ICsJaWYgKGNvbXBhdF91c2VyX21vZGUocmVncykgJiYKPiA+Pj4gKwkg ICAgKGluc24gJiAweGZmZmZmZGZmKSA9PSAweGYxMDEwMDAwKQo+ID4+PiArCQlyZXR1cm4gYTMy X3NldGVuZF9oYW5kbGVyKHJlZ3MsIGluc24pID09IDA7Cj4gPj4+ICsKPiA+Pj4gKwlyZXR1cm4g ZmFsc2U7Cj4gPj4+ICt9Cj4gPj4+ICAKPiA+Pj4gIHN0YXRpYyBzdHJ1Y3QgaW5zbl9lbXVsYXRp b24gaW5zbl9zZXRlbmQgPSB7Cj4gPj4+ICAJLm5hbWUgPSAic2V0ZW5kIiwKPiA+Pj4gIAkuc3Rh dHVzID0gSU5TTl9ERVBSRUNBVEVELAo+ID4+PiAtCS5ob29rcyA9IHNldGVuZF9ob29rcywKPiA+ Pj4gKwkudHJ5X2VtdWxhdGUgPSB0cnlfZW11bGF0ZV9zZXRlbmQsCj4gPj4+ICAJLnNldF9od19t b2RlID0gc2V0ZW5kX3NldF9od19tb2RlLAo+ID4+PiAgfTsKPiA+Pj4gKyNlbmRpZiAvKiBDT05G SUdfU0VURU5EX0VNVUxBVElPTiAqLwo+ID4+PiArCj4gPj4+ICtzdGF0aWMgc3RydWN0IGluc25f ZW11bGF0aW9uICppbnNuX2VtdWxhdGlvbnNbXSA9IHsKPiA+Pj4gKyNpZmRlZiBDT05GSUdfU1dQ X0VNVUxBVElPTgo+ID4+PiArCSZpbnNuX3N3cCwKPiA+Pj4gKyNlbmRpZgo+ID4+PiArI2lmZGVm IENPTkZJR19DUDE1X0JBUlJJRVJfRU1VTEFUSU9OCj4gPj4+ICsJJmluc25fY3AxNV9iYXJyaWVy LAo+ID4+PiArI2VuZGlmCj4gPj4+ICsjaWZkZWYgQ09ORklHX1NFVEVORF9FTVVMQVRJT04KPiA+ Pj4gKwkmaW5zbl9zZXRlbmQsCj4gPj4+ICsjZW5kaWYKPiA+Pj4gK307Cj4gPj4+ICAKPiA+Pj4g LXN0YXRpYyBMSVNUX0hFQUQoaW5zbl9lbXVsYXRpb24pOwo+ID4+PiAtc3RhdGljIGludCBucl9p bnNuX2VtdWxhdGVkIF9faW5pdGRhdGE7Cj4gPj4+IC1zdGF0aWMgREVGSU5FX1JBV19TUElOTE9D SyhpbnNuX2VtdWxhdGlvbl9sb2NrKTsKPiA+Pj4gIHN0YXRpYyBERUZJTkVfTVVURVgoaW5zbl9l bXVsYXRpb25fbXV0ZXgpOwo+ID4+PiAgCj4gPj4+IC1zdGF0aWMgdm9pZCByZWdpc3Rlcl9lbXVs YXRpb25faG9va3Moc3RydWN0IGluc25fZW11bGF0aW9uICppbnNuKQo+ID4+PiAtewo+ID4+PiAt CXN0cnVjdCB1bmRlZl9ob29rICpob29rOwo+ID4+PiAtCj4gPj4+IC0JQlVHX09OKCFpbnNuLT5o b29rcyk7Cj4gPj4+IC0KPiA+Pj4gLQlmb3IgKGhvb2sgPSBpbnNuLT5ob29rczsgaG9vay0+aW5z dHJfbWFzazsgaG9vaysrKQo+ID4+PiAtCQlyZWdpc3Rlcl91bmRlZl9ob29rKGhvb2spOwo+ID4+ PiAtCj4gPj4+IC0JcHJfbm90aWNlKCJSZWdpc3RlcmVkICVzIGVtdWxhdGlvbiBoYW5kbGVyXG4i LCBpbnNuLT5uYW1lKTsKPiA+Pj4gLX0KPiA+Pj4gLQo+ID4+PiAtc3RhdGljIHZvaWQgcmVtb3Zl X2VtdWxhdGlvbl9ob29rcyhzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gKmluc24pCj4gPj4+IC17Cj4g Pj4+IC0Jc3RydWN0IHVuZGVmX2hvb2sgKmhvb2s7Cj4gPj4+IC0KPiA+Pj4gLQlCVUdfT04oIWlu c24tPmhvb2tzKTsKPiA+Pj4gLQo+ID4+PiAtCWZvciAoaG9vayA9IGluc24tPmhvb2tzOyBob29r LT5pbnN0cl9tYXNrOyBob29rKyspCj4gPj4+IC0JCXVucmVnaXN0ZXJfdW5kZWZfaG9vayhob29r KTsKPiA+Pj4gLQo+ID4+PiAtCXByX25vdGljZSgiUmVtb3ZlZCAlcyBlbXVsYXRpb24gaGFuZGxl clxuIiwgaW5zbi0+bmFtZSk7Cj4gPj4+IC19Cj4gPj4+IC0KPiA+Pj4gIHN0YXRpYyB2b2lkIGVu YWJsZV9pbnNuX2h3X21vZGUodm9pZCAqZGF0YSkKPiA+Pj4gIHsKPiA+Pj4gIAlzdHJ1Y3QgaW5z bl9lbXVsYXRpb24gKmluc24gPSAoc3RydWN0IGluc25fZW11bGF0aW9uICopZGF0YTsKPiA+Pj4g QEAgLTQ2OSwxOCArNDU0LDI0IEBAIHN0YXRpYyBpbnQgcnVuX2FsbF9pbnNuX3NldF9od19tb2Rl KHVuc2lnbmVkIGludCBjcHUpCj4gPj4+ICB7Cj4gPj4+ICAJaW50IHJjID0gMDsKPiA+Pj4gIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4+PiAtCXN0cnVjdCBpbnNuX2VtdWxhdGlvbiAqaW5zbjsK PiA+Pj4gIAo+ID4+PiAtCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmaW5zbl9lbXVsYXRpb25fbG9j aywgZmxhZ3MpOwo+ID4+PiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoaW5zbiwgJmluc25fZW11bGF0 aW9uLCBub2RlKSB7Cj4gPj4+IC0JCWJvb2wgZW5hYmxlID0gKGluc24tPmN1cnJlbnRfbW9kZSA9 PSBJTlNOX0hXKTsKPiA+Pj4gKwkvKgo+ID4+PiArCSAqIERpc2FibGUgSVJRcyB0byBzZXJpYWxp emUgYWdhaW5zdCBhbiBJUEkgZnJvbQo+ID4+PiArCSAqIHJ1bl9hbGxfY3B1X3NldF9od19tb2Rl KCksIGVuc3VyaW5nIHRoZSBIVyBpcyBwcm9ncmFtbWVkIHRvIHRoZSBtb3N0Cj4gPj4+ICsJICog cmVjZW50IGVuYWJsZW1lbnQgc3RhdGUgaWYgdGhlIHR3byByYWNlIHdpdGggb25lIGFub3RoZXIu Cj4gPj4+ICsJICovCj4gPj4+ICsJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwo+ID4+PiArCWZvciAo aW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnNuX2VtdWxhdGlvbnMpOyBpKyspIHsKPiA+Pj4g KwkJc3RydWN0IGluc25fZW11bGF0aW9uICppbnNuID0gaW5zbl9lbXVsYXRpb25zW2ldOwo+ID4+ PiArCQlib29sIGVuYWJsZSA9IFJFQURfT05DRShpbnNuLT5jdXJyZW50X21vZGUpID09IElOU05f SFc7Cj4gPj4+ICAJCWlmIChpbnNuLT5zZXRfaHdfbW9kZSAmJiBpbnNuLT5zZXRfaHdfbW9kZShl bmFibGUpKSB7Cj4gPj4+ICAJCQlwcl93YXJuKCJDUFVbJXVdIGNhbm5vdCBzdXBwb3J0IHRoZSBl bXVsYXRpb24gb2YgJXMiLAo+ID4+PiAgCQkJCWNwdSwgaW5zbi0+bmFtZSk7Cj4gPj4+ICAJCQly YyA9IC1FSU5WQUw7Cj4gPj4+ICAJCX0KPiA+Pj4gIAl9Cj4gPj4+IC0JcmF3X3NwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmluc25fZW11bGF0aW9uX2xvY2ssIGZsYWdzKTsKPiA+Pj4gKwlsb2NhbF9p cnFfcmVzdG9yZShmbGFncyk7Cj4gPj4+ICsKPiA+Pj4gIAlyZXR1cm4gcmM7Cj4gPj4+ICB9Cj4g Pj4+ICAKPiA+Pj4gQEAgLTQ5Myw3ICs0ODQsNiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9pbnNuX2Vt dWxhdGlvbl9tb2RlKHN0cnVjdCBpbnNuX2VtdWxhdGlvbiAqaW5zbiwKPiA+Pj4gIAljYXNlIElO U05fVU5ERUY6IC8qIE5vdGhpbmcgdG8gYmUgZG9uZSAqLwo+ID4+PiAgCQlicmVhazsKPiA+Pj4g IAljYXNlIElOU05fRU1VTEFURToKPiA+Pj4gLQkJcmVtb3ZlX2VtdWxhdGlvbl9ob29rcyhpbnNu KTsKPiA+Pj4gIAkJYnJlYWs7Cj4gPj4+ICAJY2FzZSBJTlNOX0hXOgo+ID4+PiAgCQlpZiAoIXJ1 bl9hbGxfY3B1X3NldF9od19tb2RlKGluc24sIGZhbHNlKSkKPiA+Pj4gQEAgLTUwNSw3ICs0OTUs NiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9pbnNuX2VtdWxhdGlvbl9tb2RlKHN0cnVjdCBpbnNuX2Vt dWxhdGlvbiAqaW5zbiwKPiA+Pj4gIAljYXNlIElOU05fVU5ERUY6Cj4gPj4+ICAJCWJyZWFrOwo+ ID4+PiAgCWNhc2UgSU5TTl9FTVVMQVRFOgo+ID4+PiAtCQlyZWdpc3Rlcl9lbXVsYXRpb25faG9v a3MoaW5zbik7Cj4gPj4+ICAJCWJyZWFrOwo+ID4+PiAgCWNhc2UgSU5TTl9IVzoKPiA+Pj4gIAkJ cmV0ID0gcnVuX2FsbF9jcHVfc2V0X2h3X21vZGUoaW5zbiwgdHJ1ZSk7Cj4gPj4+IEBAIC01MTcs MzQgKzUwNiw2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX2luc25fZW11bGF0aW9uX21vZGUoc3RydWN0 IGluc25fZW11bGF0aW9uICppbnNuLAo+ID4+PiAgCXJldHVybiByZXQ7Cj4gPj4+ICB9Cj4gPj4+ ICAKPiA+Pj4gLXN0YXRpYyB2b2lkIF9faW5pdCByZWdpc3Rlcl9pbnNuX2VtdWxhdGlvbihzdHJ1 Y3QgaW5zbl9lbXVsYXRpb24gKmluc24pCj4gPj4+IC17Cj4gPj4+IC0JdW5zaWduZWQgbG9uZyBm bGFnczsKPiA+Pj4gLQo+ID4+PiAtCWluc24tPm1pbiA9IElOU05fVU5ERUY7Cj4gPj4+IC0KPiA+ Pj4gLQlzd2l0Y2ggKGluc24tPnN0YXR1cykgewo+ID4+PiAtCWNhc2UgSU5TTl9ERVBSRUNBVEVE Ogo+ID4+PiAtCQlpbnNuLT5jdXJyZW50X21vZGUgPSBJTlNOX0VNVUxBVEU7Cj4gPj4+IC0JCS8q IERpc2FibGUgdGhlIEhXIG1vZGUgaWYgaXQgd2FzIHR1cm5lZCBvbiBhdCBlYXJseSBib290IHRp bWUgKi8KPiA+Pj4gLQkJcnVuX2FsbF9jcHVfc2V0X2h3X21vZGUoaW5zbiwgZmFsc2UpOwo+ID4+ PiAtCQlpbnNuLT5tYXggPSBJTlNOX0hXOwo+ID4+PiAtCQlicmVhazsKPiA+Pj4gLQljYXNlIElO U05fT0JTT0xFVEU6Cj4gPj4+IC0JCWluc24tPmN1cnJlbnRfbW9kZSA9IElOU05fVU5ERUY7Cj4g Pj4+IC0JCWluc24tPm1heCA9IElOU05fRU1VTEFURTsKPiA+Pj4gLQkJYnJlYWs7Cj4gPj4+IC0J fQo+ID4+PiAtCj4gPj4+IC0JcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZpbnNuX2VtdWxhdGlvbl9s b2NrLCBmbGFncyk7Cj4gPj4+IC0JbGlzdF9hZGQoJmluc24tPm5vZGUsICZpbnNuX2VtdWxhdGlv bik7Cj4gPj4+IC0JbnJfaW5zbl9lbXVsYXRlZCsrOwo+ID4+PiAtCXJhd19zcGluX3VubG9ja19p cnFyZXN0b3JlKCZpbnNuX2VtdWxhdGlvbl9sb2NrLCBmbGFncyk7Cj4gPj4+IC0KPiA+Pj4gLQkv KiBSZWdpc3RlciBhbnkgaGFuZGxlcnMgaWYgcmVxdWlyZWQgKi8KPiA+Pj4gLQl1cGRhdGVfaW5z bl9lbXVsYXRpb25fbW9kZShpbnNuLCBJTlNOX1VOREVGKTsKPiA+Pj4gLX0KPiA+Pj4gLQo+ID4+ PiAgc3RhdGljIGludCBlbXVsYXRpb25fcHJvY19oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKnRh YmxlLCBpbnQgd3JpdGUsCj4gPj4+ICAJCQkJICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwK PiA+Pj4gIAkJCQkgIGxvZmZfdCAqcHBvcykKPiA+Pj4gQEAgLTU2Miw3ICs1MjMsNyBAQCBzdGF0 aWMgaW50IGVtdWxhdGlvbl9wcm9jX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGlu dCB3cml0ZSwKPiA+Pj4gIAlyZXQgPSB1cGRhdGVfaW5zbl9lbXVsYXRpb25fbW9kZShpbnNuLCBw cmV2X21vZGUpOwo+ID4+PiAgCWlmIChyZXQpIHsKPiA+Pj4gIAkJLyogTW9kZSBjaGFuZ2UgZmFp bGVkLCByZXZlcnQgdG8gcHJldmlvdXMgbW9kZS4gKi8KPiA+Pj4gLQkJaW5zbi0+Y3VycmVudF9t b2RlID0gcHJldl9tb2RlOwo+ID4+PiArCQlXUklURV9PTkNFKGluc24tPmN1cnJlbnRfbW9kZSwg cHJldl9tb2RlKTsKPiA+Pj4gIAkJdXBkYXRlX2luc25fZW11bGF0aW9uX21vZGUoaW5zbiwgSU5T Tl9VTkRFRik7Cj4gPj4+ICAJfQo+ID4+PiAgcmV0Ogo+ID4+PiBAQCAtNTcwLDIxICs1MzEsMzQg QEAgc3RhdGljIGludCBlbXVsYXRpb25fcHJvY19oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKnRh YmxlLCBpbnQgd3JpdGUsCj4gPj4+ICAJcmV0dXJuIHJldDsKPiA+Pj4gIH0KPiA+Pj4gIAo+ID4+ PiAtc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2luc25fZW11bGF0aW9uX3N5c2N0bCh2b2lk KQo+ID4+PiArc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2luc25fZW11bGF0aW9uKHN0cnVj dCBpbnNuX2VtdWxhdGlvbiAqaW5zbikKPiA+Pj4gIHsKPiA+Pj4gLQl1bnNpZ25lZCBsb25nIGZs YWdzOwo+ID4+PiAtCWludCBpID0gMDsKPiA+Pj4gLQlzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gKmlu c247Cj4gPj4+IC0Jc3RydWN0IGN0bF90YWJsZSAqaW5zbnNfc3lzY3RsLCAqc3lzY3RsOwo+ID4+ PiArCXN0cnVjdCBjdGxfdGFibGUgKnN5c2N0bDsKPiA+Pj4gIAo+ID4+PiAtCWluc25zX3N5c2N0 bCA9IGtjYWxsb2MobnJfaW5zbl9lbXVsYXRlZCArIDEsIHNpemVvZigqc3lzY3RsKSwKPiA+Pj4g LQkJCSAgICAgICBHRlBfS0VSTkVMKTsKPiA+Pj4gLQlpZiAoIWluc25zX3N5c2N0bCkKPiA+Pj4g LQkJcmV0dXJuOwo+ID4+PiArCWluc24tPm1pbiA9IElOU05fVU5ERUY7Cj4gPj4+ICAKPiA+Pj4g LQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmluc25fZW11bGF0aW9uX2xvY2ssIGZsYWdzKTsKPiA+ Pj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluc24sICZpbnNuX2VtdWxhdGlvbiwgbm9kZSkgewo+ ID4+PiAtCQlzeXNjdGwgPSAmaW5zbnNfc3lzY3RsW2ldOwo+ID4+PiArCXN3aXRjaCAoaW5zbi0+ c3RhdHVzKSB7Cj4gPj4+ICsJY2FzZSBJTlNOX0RFUFJFQ0FURUQ6Cj4gPj4+ICsJCWluc24tPmN1 cnJlbnRfbW9kZSA9IElOU05fRU1VTEFURTsKPiA+Pj4gKwkJLyogRGlzYWJsZSB0aGUgSFcgbW9k ZSBpZiBpdCB3YXMgdHVybmVkIG9uIGF0IGVhcmx5IGJvb3QgdGltZSAqLwo+ID4+PiArCQlydW5f YWxsX2NwdV9zZXRfaHdfbW9kZShpbnNuLCBmYWxzZSk7Cj4gPj4+ICsJCWluc24tPm1heCA9IElO U05fSFc7Cj4gPj4+ICsJCWJyZWFrOwo+ID4+PiArCWNhc2UgSU5TTl9PQlNPTEVURToKPiA+Pj4g KwkJaW5zbi0+Y3VycmVudF9tb2RlID0gSU5TTl9VTkRFRjsKPiA+Pj4gKwkJaW5zbi0+bWF4ID0g SU5TTl9FTVVMQVRFOwo+ID4+PiArCQlicmVhazsKPiA+Pj4gKwljYXNlIElOU05fVU5BVkFJTEFC TEU6Cj4gPj4+ICsJCWluc24tPmN1cnJlbnRfbW9kZSA9IElOU05fVU5ERUY7Cj4gPj4+ICsJCWlu c24tPm1heCA9IElOU05fVU5ERUY7Cj4gPj4+ICsJCWJyZWFrOwo+ID4+PiArCX0KPiA+Pj4gKwo+ ID4+PiArCS8qIFByb2dyYW0gdGhlIEhXIGlmIHJlcXVpcmVkICovCj4gPj4+ICsJdXBkYXRlX2lu c25fZW11bGF0aW9uX21vZGUoaW5zbiwgSU5TTl9VTkRFRik7Cj4gPj4+ICsKPiA+Pj4gKwlpZiAo aW5zbi0+c3RhdHVzICE9IElOU05fVU5BVkFJTEFCTEUpIHsKPiA+Pj4gKwkJc3lzY3RsID0gJmlu c24tPnN5c2N0bFswXTsKPiA+Pj4gIAo+ID4+PiAgCQlzeXNjdGwtPm1vZGUgPSAwNjQ0Owo+ID4+ PiAgCQlzeXNjdGwtPm1heGxlbiA9IHNpemVvZihpbnQpOwo+ID4+PiBAQCAtNTk0LDExICs1Njgs MzIgQEAgc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2luc25fZW11bGF0aW9uX3N5c2N0bCh2 b2lkKQo+ID4+PiAgCQlzeXNjdGwtPmV4dHJhMSA9ICZpbnNuLT5taW47Cj4gPj4+ICAJCXN5c2N0 bC0+ZXh0cmEyID0gJmluc24tPm1heDsKPiA+Pj4gIAkJc3lzY3RsLT5wcm9jX2hhbmRsZXIgPSBl bXVsYXRpb25fcHJvY19oYW5kbGVyOwo+ID4+PiAtCQlpKys7Cj4gPj4+ICsKPiA+Pj4gKwkJcmVn aXN0ZXJfc3lzY3RsKCJhYmkiLCBzeXNjdGwpOwo+ID4+PiArCX0KPiA+Pj4gK30KPiA+Pj4gKwo+ ID4+PiArYm9vbCB0cnlfZW11bGF0ZV9hcm12OF9kZXByZWNhdGVkKHN0cnVjdCBwdF9yZWdzICpy ZWdzLCB1MzIgaW5zbikKPiA+Pj4gK3sKPiA+Pj4gKwlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZ X1NJWkUoaW5zbl9lbXVsYXRpb25zKTsgaSsrKSB7Cj4gPj4+ICsJCXN0cnVjdCBpbnNuX2VtdWxh dGlvbiAqaWUgPSBpbnNuX2VtdWxhdGlvbnNbaV07Cj4gPj4+ICsKPiA+Pj4gKwkJaWYgKGllLT5z dGF0dXMgPT0gSU5TTl9VTkFWQUlMQUJMRSkKPiA+Pj4gKwkJCWNvbnRpbnVlOwo+ID4+PiArCj4g Pj4+ICsJCS8qCj4gPj4+ICsJCSAqIEEgdHJhcCBtYXkgcmFjZSB3aXRoIHRoZSBtb2RlIGJlaW5n IGNoYW5nZWQKPiA+Pj4gKwkJICogSU5TTl9FTVVMQVRFPC0+SU5TTl9IVy4gVHJ5IHRvIGVtdWxh dGUgdGhlIGluc3RydWN0aW9uIHRvCj4gPj4+ICsJCSAqIGF2b2lkIGEgc3B1cmlvdXMgVU5ERUYu Cj4gPj4+ICsJCSAqLwo+ID4+PiArCQlpZiAoUkVBRF9PTkNFKGllLT5jdXJyZW50X21vZGUpID09 IElOU05fVU5ERUYpCj4gPj4+ICsJCQljb250aW51ZTsKPiA+Pj4gKwo+ID4+PiArCQlpZiAoaWUt PnRyeV9lbXVsYXRlKHJlZ3MsIGluc24pKQo+ID4+PiArCQkJcmV0dXJuIHRydWU7Cj4gPj4+ICAJ fQo+ID4+PiAtCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbnNuX2VtdWxhdGlvbl9sb2Nr LCBmbGFncyk7Cj4gPj4+ICAKPiA+Pj4gLQlyZWdpc3Rlcl9zeXNjdGwoImFiaSIsIGluc25zX3N5 c2N0bCk7Cj4gPj4+ICsJcmV0dXJuIGZhbHNlOwo+ID4+PiAgfQo+ID4+PiAgCj4gPj4+ICAvKgo+ ID4+PiBAQCAtNjA3LDI0ICs2MDIsMjUgQEAgc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2lu c25fZW11bGF0aW9uX3N5c2N0bCh2b2lkKQo+ID4+PiAgICovCj4gPj4+ICBzdGF0aWMgaW50IF9f aW5pdCBhcm12OF9kZXByZWNhdGVkX2luaXQodm9pZCkKPiA+Pj4gIHsKPiA+Pj4gLQlpZiAoSVNf RU5BQkxFRChDT05GSUdfU1dQX0VNVUxBVElPTikpCj4gPj4+IC0JCXJlZ2lzdGVyX2luc25fZW11 bGF0aW9uKCZpbnNuX3N3cCk7Cj4gPj4+ICsjaWZkZWYgQ09ORklHX1NFVEVORF9FTVVMQVRJT04K PiA+Pj4gKwlpZiAoIXN5c3RlbV9zdXBwb3J0c19taXhlZF9lbmRpYW5fZWwwKCkpIHsKPiA+Pj4g KwkJaW5zbl9zZXRlbmQuc3RhdHVzID0gSU5TTl9VTkFWQUlMQUJMRTsKPiA+Pj4gKwkJcHJfaW5m bygic2V0ZW5kIGluc3RydWN0aW9uIGVtdWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg c3lzdGVtXG4iKTsKPiA+Pj4gKwl9Cj4gPj4+ICAKPiA+Pj4gLQlpZiAoSVNfRU5BQkxFRChDT05G SUdfQ1AxNV9CQVJSSUVSX0VNVUxBVElPTikpCj4gPj4+IC0JCXJlZ2lzdGVyX2luc25fZW11bGF0 aW9uKCZpbnNuX2NwMTVfYmFycmllcik7Cj4gPj4+ICsjZW5kaWYKPiA+Pj4gKwlmb3IgKGludCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5zbl9lbXVsYXRpb25zKTsgaSsrKSB7Cj4gPj4+ICsJCXN0 cnVjdCBpbnNuX2VtdWxhdGlvbiAqaWUgPSBpbnNuX2VtdWxhdGlvbnNbaV07Cj4gPj4+ICAKPiA+ Pj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfU0VURU5EX0VNVUxBVElPTikpIHsKPiA+Pj4gLQkJ aWYgKHN5c3RlbV9zdXBwb3J0c19taXhlZF9lbmRpYW5fZWwwKCkpCj4gPj4+IC0JCQlyZWdpc3Rl cl9pbnNuX2VtdWxhdGlvbigmaW5zbl9zZXRlbmQpOwo+ID4+PiAtCQllbHNlCj4gPj4+IC0JCQlw cl9pbmZvKCJzZXRlbmQgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24g dGhpcyBzeXN0ZW1cbiIpOwo+ID4+PiArCQlpZiAoaWUtPnN0YXR1cyA9PSBJTlNOX1VOQVZBSUxB QkxFKQo+ID4+PiArCQkJY29udGludWU7Cj4gPj4+ICsKPiA+Pj4gKwkJcmVnaXN0ZXJfaW5zbl9l bXVsYXRpb24oaWUpOwo+ID4+PiAgCX0KPiA+Pj4gIAo+ID4+PiAgCWNwdWhwX3NldHVwX3N0YXRl X25vY2FsbHMoQ1BVSFBfQVBfQVJNNjRfSVNOREVQX1NUQVJUSU5HLAo+ID4+PiAgCQkJCSAgImFy bTY0L2lzbmRlcDpzdGFydGluZyIsCj4gPj4+ICAJCQkJICBydW5fYWxsX2luc25fc2V0X2h3X21v ZGUsIE5VTEwpOwo+ID4+PiAtCXJlZ2lzdGVyX2luc25fZW11bGF0aW9uX3N5c2N0bCgpOwo+ID4+ PiAtCj4gPj4+ICAJcmV0dXJuIDA7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gZGlmZiAtLWdpdCBh L2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMgYi9hcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jCj4g Pj4+IGluZGV4IDk2ZWFmMWFhZWMxMi4uNGMwY2FhNTg5ZTEyIDEwMDY0NAo+ID4+PiAtLS0gYS9h cmNoL2FybTY0L2tlcm5lbC90cmFwcy5jCj4gPj4+ICsrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Ry YXBzLmMKPiA+Pj4gQEAgLTM3MywyNyArMzczLDYgQEAgdm9pZCBhcm02NF9za2lwX2ZhdWx0aW5n X2luc3RydWN0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHNpemUpCj4g Pj4+ICAJCXJlZ3MtPnBzdGF0ZSAmPSB+UFNSX0JUWVBFX01BU0s7Cj4gPj4+ICB9Cj4gPj4+ICAK PiA+Pj4gLXN0YXRpYyBMSVNUX0hFQUQodW5kZWZfaG9vayk7Cj4gPj4+IC1zdGF0aWMgREVGSU5F X1JBV19TUElOTE9DSyh1bmRlZl9sb2NrKTsKPiA+Pj4gLQo+ID4+PiAtdm9pZCByZWdpc3Rlcl91 bmRlZl9ob29rKHN0cnVjdCB1bmRlZl9ob29rICpob29rKQo+ID4+PiAtewo+ID4+PiAtCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4gPj4+IC0KPiA+Pj4gLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnVu ZGVmX2xvY2ssIGZsYWdzKTsKPiA+Pj4gLQlsaXN0X2FkZCgmaG9vay0+bm9kZSwgJnVuZGVmX2hv b2spOwo+ID4+PiAtCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1bmRlZl9sb2NrLCBmbGFn cyk7Cj4gPj4+IC19Cj4gPj4+IC0KPiA+Pj4gLXZvaWQgdW5yZWdpc3Rlcl91bmRlZl9ob29rKHN0 cnVjdCB1bmRlZl9ob29rICpob29rKQo+ID4+PiAtewo+ID4+PiAtCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gPj4+IC0KPiA+Pj4gLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnVuZGVmX2xvY2ssIGZs YWdzKTsKPiA+Pj4gLQlsaXN0X2RlbCgmaG9vay0+bm9kZSk7Cj4gPj4+IC0JcmF3X3NwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnVuZGVmX2xvY2ssIGZsYWdzKTsKPiA+Pj4gLX0KPiA+Pj4gLQo+ID4+ PiAgc3RhdGljIGludCB1c2VyX2luc25fcmVhZChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyICpp bnNucCkKPiA+Pj4gIHsKPiA+Pj4gIAl1MzIgaW5zdHI7Cj4gPj4+IEBAIC00MjUsMjMgKzQwNCw2 IEBAIHN0YXRpYyBpbnQgdXNlcl9pbnNuX3JlYWQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiAq aW5zbnApCj4gPj4+ICAJcmV0dXJuIDA7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gLXN0YXRpYyBp bnQgY2FsbF91bmRlZl9ob29rKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zdHIpCj4gPj4+ IC17Cj4gPj4+IC0Jc3RydWN0IHVuZGVmX2hvb2sgKmhvb2s7Cj4gPj4+IC0JdW5zaWduZWQgbG9u ZyBmbGFnczsKPiA+Pj4gLQlpbnQgKCpmbikoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0 cikgPSBOVUxMOwo+ID4+PiAtCj4gPj4+IC0JcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZ1bmRlZl9s b2NrLCBmbGFncyk7Cj4gPj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShob29rLCAmdW5kZWZfaG9v aywgbm9kZSkKPiA+Pj4gLQkJaWYgKChpbnN0ciAmIGhvb2stPmluc3RyX21hc2spID09IGhvb2st Pmluc3RyX3ZhbCAmJgo+ID4+PiAtCQkJKHJlZ3MtPnBzdGF0ZSAmIGhvb2stPnBzdGF0ZV9tYXNr KSA9PSBob29rLT5wc3RhdGVfdmFsKQo+ID4+PiAtCQkJZm4gPSBob29rLT5mbjsKPiA+Pj4gLQo+ ID4+PiAtCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1bmRlZl9sb2NrLCBmbGFncyk7Cj4g Pj4+IC0KPiA+Pj4gLQlyZXR1cm4gZm4gPyBmbihyZWdzLCBpbnN0cikgOiAxOwo+ID4+PiAtfQo+ ID4+PiAtCj4gPj4+ICB2b2lkIGZvcmNlX3NpZ25hbF9pbmplY3QoaW50IHNpZ25hbCwgaW50IGNv ZGUsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBlcnIpCj4gPj4+ICB7Cj4g Pj4+ICAJY29uc3QgY2hhciAqZGVzYzsKPiA+Pj4gQEAgLTUwMiw3ICs0NjQsNyBAQCB2b2lkIGRv X2VsMF91bmRlZihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpCj4gPj4+ ICAJaWYgKHRyeV9lbXVsYXRlX21ycyhyZWdzLCBpbnNuKSkKPiA+Pj4gIAkJcmV0dXJuOwo+ID4+ PiAgCj4gPj4+IC0JaWYgKGNhbGxfdW5kZWZfaG9vayhyZWdzLCBpbnNuKSA9PSAwKQo+ID4+PiAr CWlmICh0cnlfZW11bGF0ZV9hcm12OF9kZXByZWNhdGVkKHJlZ3MsIGluc24pKQo+ID4+PiAgCQly ZXR1cm47Cj4gPj4+ICAKPiA+Pj4gIG91dF9lcnI6Cj4gPj4KPiA+PiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+IGxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0Cj4gPj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4gPj4g aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCj4gPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK