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 CB909C636CD for ; Tue, 7 Feb 2023 07:02:24 +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:From:References:CC:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WCS33rhrqMv4g1dVyBnGGuYlIBuRnOBFnOB16IPBJkY=; b=qd5JtjB8BjqquJ gENSPxVonR+uhBEbLHtfzByfptn9bXY3VBWMSAKq2F1QSQuIqd4swbMo9ZJFIP0IrX2yaMNrRaJ3L y+3RU/xlY45YwOERtP+9ztrIOOEDNRPJ7P/LRl5c7X9XgnCOpy/FE+2PTAbF8wvr+u/kvL4Y6h2Ld CnDBf4quOrpbwYyia5NgHogCeO0Ul49kAri0xxCNLnzFKlXCj51FIx78QBKZOnIfUi/XWB1NJpij9 VkjSykx05oY1eB8q/xPqnI/ArrNVkcdQMj5XtLCm2zanIPaL1mdS4Eg/FKkY5T6mE3gR4XwXSUHzF A97idKDBZcb2JeCRdqDQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pPHym-00B3sO-Fx; Tue, 07 Feb 2023 07:01:24 +0000 Received: from szxga02-in.huawei.com ([45.249.212.188]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pPHyg-00B3nC-WA for linux-arm-kernel@lists.infradead.org; Tue, 07 Feb 2023 07:01:23 +0000 Received: from kwepemi500008.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4P9vBR2WYkzJsGb; Tue, 7 Feb 2023 14:59:27 +0800 (CST) Received: from [10.67.109.254] (10.67.109.254) by kwepemi500008.china.huawei.com (7.221.188.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 7 Feb 2023 15:01:07 +0800 Message-ID: <852c2115-cbdd-40e8-f04b-aef4f74c2176@huawei.com> Date: Tue, 7 Feb 2023 15:01:07 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH v2 9/9] arm64: armv8_deprecated: rework deprected instruction handling Content-Language: en-US To: Mark Rutland CC: , "liaochang (A)" References: <20221019144123.612388-1-mark.rutland@arm.com> <20221019144123.612388-10-mark.rutland@arm.com> From: Ruan Jinjie In-Reply-To: X-Originating-IP: [10.67.109.254] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemi500008.china.huawei.com (7.221.188.139) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230206_230119_460922_18944242 X-CRM114-Status: GOOD ( 37.94 ) 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 CgpPbiAyMDIzLzIvNiAxNzoxMywgTWFyayBSdXRsYW5kIHdyb3RlOgo+IE9uIE1vbiwgRmViIDA2 LCAyMDIzIGF0IDEwOjAzOjE3QU0gKzA4MDAsIFJ1YW4gSmluamllIHdyb3RlOgo+PiBPbiAyMDIz LzIvNCAxOjI3LCBNYXJrIFJ1dGxhbmQgd3JvdGU6Cj4+PiBPbiBGcmksIEZlYiAwMywgMjAyMyBh dCAwNjowODowOFBNICswODAwLCBSdWFuIEppbmppZSB3cm90ZToKPj4+PiBIaSwgTWFyaywgSSB3 YW50IHRvIG1lcmdlIHRoaXMgcGF0Y2ggdG8gbGludXgtNS4xMC55IHRvIHNvbHZlIGEgbGlzdF9h ZGQKPj4+PiBkb3VibGUgcHJvYmxlbS4gSG93ZXZlciwgSSBjYW4gbm90IHRyaWdnZXIgdGhlIGVt dWxhdGlvbiBvZiB0aGVzZQo+Pj4+IGRlcHJlY2F0ZWQgaW5zdHJ1Y3Rpb25zIGluIHFlbXUgd2l0 aCB1c2Vyc3BhY2UgcHJvZ3JhbSBhcyBiZWxvdywgYnV0Cj4+Pj4gY2F1c2UgSUFCVCBhbmQgREFC VCwKPj4+Cj4+PiBXZWxsIHRoYXQgY2VydGFpbmx5IHNvdW5kcyB3cm9uZyEKPj4+Cj4+PiBXaGVu IHlvdSBzYXkgImluIHFlbXUiLCBzbyB5b3UgbWVhbiBpbiBhIEtWTSBWTSwgYSBUQ0cgVk0sIG9y IHVzZXJtb2RlCj4+PiBlbXVsYXRpb24/Cj4+Pgo+Pj4gQ2FuIHlvdSB0ZWxsIG1lIGV4YWN0bHkg aG93IHlvdSdyZSBpbnZva2luZyBxZW11Pwo+Pgo+PiBTb3JyeSwgdGhlIGluZm9ybWF0aW9uIGdp dmVuIHdhcyBpbmNvbXBsZXRlLkkgaW52b2tlIHFlbXUgNi4xLjEgd2l0aAo+PiBmb2xsb3dpbmcg Y29tbWFuZHMsIHdoaWNoIGlzIGEgVENHIFZNOgo+Pgo+PiBxZW11LXN5c3RlbS1hYXJjaDY0Cj4+ IAktTSB2aXJ0IFwKPj4gCS1jcHUgY29ydGV4LWE1NyBcCj4+IAktc21wIDQgXAo+PiAJLW0gNDA5 NiBcCj4+IAktbm9ncmFwaGljIFwKPj4gCS1rZXJuZWwgbGludXgtc3RhYmxlL2FyY2gvYXJtNjQv Ym9vdC9JbWFnZSBcCj4+IAktZHJpdmUgaWY9bm9uZSxmaWxlPXJvb3Rmcy5pbWcsZm9ybWF0PXJh dyxpZD1oZDAgXAo+PiAJLWRldmljZSB2aXJ0aW8tbmV0LWRldmljZSxuZXRkZXY9bmV0MCBcCj4+ IAktbmV0ZGV2IHVzZXIsaWQ9bmV0MCxob3N0PTEwLjAuMi4xLGhvc3Rmd2Q9dGNwOjo1NTU1LToy MiBcCj4+IAktZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWhkMCBcCj4+IAktYXBwZW5k ICJyb290PS9kZXYvdmRhIGNvbnNvbGU9dHR5QU1BMCByb290ZnN0eXBlPWV4dDQgaW5pdD0vbGlu dXhyYyBydwo+PiBvb3BzPXBhbmljIG5taV93YXRjaGRvZz1wYW5pYyBwYW5pYz0xIgo+Pgo+Pj4K Pj4+IENhbiB5b3UgZ2l2ZSBhbiBleGFtcGxlIG9mIHRoZSBJQUJUIGFuZCBEQUJUIHlvdSBzZWU/ Cj4+Cj4+IEJlY2F1c2UgdGhlIGVtdWxhdGlvbiBvZiBjcDE1IGRlcHJlY2F0ZWQgaW5zdHJ1Y3Rp b25zIGlzIG5vdCB0cmlnZ2VyZWQsSQo+PiBhZGQgcHJpbnRrIG1lc3NhZ2UgaW4gZWwwX3N5bmNf Y29tcGF0X2hhbmRsZXIoKSBmdW5jdGlvbiAKPiAKPiBBaCEgU28geW91IG1lYW4gdGhhdCB0aG9z ZSBhcmUgdGhlICpvbmx5KiBleGNlcHRpb25zIHlvdSBzZWUsIG5vdCB0aGF0IHRob3NlCj4gYXJl ICp1bmV4cGVjdGVkKi4gQUZBSUNULCB0aG9zZSBhcmUganN1dCB0aGUgdGVzdCBjb2RlIGFuZCBk YXRhIGJlaW5nIGZhdWx0ZWQKPiBpbiBhcyB1c3VhbCwgYW5kIGFyZSBub3QgcmVsYXRlZCB0byB0 aGUgZW11bGF0aW9uLgo+IAo+IEkgYXNzdW1lIHRoZSB0ZXN0IGNvbXBsZXRlcyBzdWNjZXNzZnVs bHksIGFuZCByZXR1cm5zIDA/Cj4gCj4gSSBoYWQgYSBwbGF5IHdpdGggdGhpcyBsb2NhbGx5ICh3 aXRoIFFFTVUgNi4yLjk0KSwgYW5kIEkgc2VlIHRoYXQgdGhlCj4gZGVwcmVjYXRlZCBpbnN0cnVj dGlvbnMgd29yayBldmVuIHdoZW4gbmVpdGhlciB0aGUgZW11bGF0aW9uIG5vciBIVyBzdXBwb3J0 IGlzCj4gZW5hYmxlZCAoaW4gdGhlIHJlbGV2YW50IFNDVExSX0VMeCBiaXRzKSwgYW5kIEkgdGhp bmsgdGhhdCB3aGF0J3MgaGFwcGVuaW5nCj4gaGVyZSBpcyB0aGUgUUVNVSBpc24ndCBjb3JyZWN0 bHkgZW11bGF0aW5nIHRoZSBhcmNoaXRlY3R1cmU6Cj4gCj4gKiBRRU1VIHNlZW1zIHRvIGlnbm9y ZSBTQ1RMUl9FTHguQ1AxNUJFTiwgYW5kIGFsd2F5cyBpbWVwbGVtZW50cyB0aG9zZSByYXRoZXIK PiAgIHRoYW4gbWFraW5nIHRob3NlIFVOREVGSU5FRCB3aGVuIFNDVExSX0VMeC5DUDE1QkVOID09 IDBiMC4KPiAKPiAqIFFFTVUgc2VlbXMgdG8gaWdub3JlIFNDVExSX0VMeC5TRUQsIGFuZCBhbHdh eXMgaW1wbGVtZW50cyBTRVRFTkQgcmF0aGVyIHRoYW4KPiAgIG1ha2luZyB0aGF0IFVOREVGSU5F RCB3aGVuIFNDVExSX0VMeC5TRUQgPT0gMGIxLgo+IAo+ICogUUVNVSBzZWVtcyB0byBpbXBsZW1l bnQgU1dQKiwgZXZlbiB0aG91Z2ggdGhvc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IGV4aXN0IGluCj4g ICBBUk12OC1BIGFuZCBzaG91bGQgYWx3YXlzIGJlIFVOREVGSU5FRC4KCkkgYWdyZWUgd2l0aCB5 b3UhIEl0IGlzIGNvbW1vbiB0aGF0IHRoZSBxZW11IGltcGxlbWVudGF0aW9uIGlzCmluY29uc2lz dGVudCB3aXRoIHRoZSBhcmNoaXRlY3R1cmUgbWFudWFsIHNwZWNpZmljYXRpb24gaW4gc29tZSBk ZXRhaWxzLgoKPiAgCj4+IHRvIGNoZWNrIHRoZSBFQyBjb2RlIFdoZW4gdGhlIGZvbGxvd2luZyB1 c2VyLXNwYWNlIGNvZGUgaXMgZXhlY3V0ZWQuVGhlIHByaW50Cj4+IGlzIGFzIGZvbGxvd3M6Cj4+ Cj4+IC9ob21lICMgLi9jcDE1X2JhcnJpZXJfdGVzdAo+PiBbICAgNzIuNDY5MzY2XSBlbDBfc3lu Y19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDIwCj4+IFsgICA3Mi40NzA0Nzdd IGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjQKPj4gWyAgIDcy LjQ3MTM0Ml0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgyNAo+ PiBbICAgNzIuNDcyMzQxXSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3Ip PSAweDIwCj4+IFsgICA3Mi40NzQwMzNdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4 X0VDKGVzcik9IDB4MjQKPj4gWyAgIDcyLjQ3NTE0NV0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIs IEVTUl9FTHhfRUMoZXNyKT0gMHgyMAo+PiBbICAgNzIuNDc2MjU1XSBlbDBfc3luY19jb21wYXRf aGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDIwCj4+IFsgICA3Mi40Nzc4NjFdIGVsMF9zeW5j X2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MTEKPj4gWyAgIDcyLjQ3ODQyN10g ZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQo+PiBbICAgNzIu NDc5MTExXSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDI0Cj4+ IFsgICA3Mi40Nzk5MTldIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9 IDB4MTEKPj4gWyAgIDcyLjQ4MDQ2N10gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhf RUMoZXNyKT0gMHgxMQo+PiBbICAgNzIuNDgxNjE2XSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwg RVNSX0VMeF9FQyhlc3IpPSAweDExCj4+IFsgICA3Mi40ODMzODZdIGVsMF9zeW5jX2NvbXBhdF9o YW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjAKPj4gWyAgIDcyLjQ4NDE4N10gZWwwX3N5bmNf Y29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQo+PiBbICAgNzIuNDg1MjE1XSBl bDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDExCj4+IFsgICA3Mi40 ODU4ODJdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjQKPj4g WyAgIDcyLjQ4NjYyOF0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0g MHgxMQo+PiBbICAgNzIuNDg3NDk1XSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9F Qyhlc3IpPSAweDIwCj4+IFsgICA3Mi40ODg1NDhdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBF U1JfRUx4X0VDKGVzcik9IDB4MTEKPj4KPj4gSSB3ZW50IHRocm91Z2ggIkFSTcKuIEFyY2hpdGVj dHVyZSBSZWZlcmVuY2UgTWFudWFsIEFSTXY4LCBmb3IgQVJNdjgtQQo+PiBhcmNoaXRlY3R1cmUg cHJvZmlsZSIgYW5kIGNoZWNrIHRoZSBoZWFkZXIgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lc3Iu aCwKPj4gZmluZCBpdCdzIEVDIGNvZGVzIGZvciBTVkMzMiwgSUFCVCBhbmQgREFCVC4KPj4KPj4g ICNkZWZpbmUgRVNSX0VMeF9FQ19TVkMzMiAgICAoMHgxMSkKPj4gICNkZWZpbmUgRVNSX0VMeF9F Q19JQUJUX0xPVyAoMHgyMCkKPj4gICNkZWZpbmUgRVNSX0VMeF9FQ19EQUJUX0xPVyAoMHgyNCkK Pj4KPj4gSSBhbHNvIGxlYXJuZWQgZnJvbSB0aGUgbWFudWFsIHRoYXQgdGhlIFNDVExSX0VMMS5D UDE1QkVOIGlzIGNyaXRpY2FsLAo+PiB3aGljaCBjb250cm9sIHRoZSBiZWhhdmlvciBvZiBhYm92 ZSBkZXByZWNhdGluZyBtZW1vcnkgYmFycmllcgo+PiBpbnN0cnVjdGlvbnMgd2hpY2ggY2FuIGJl IHNldCBieSB0aGUgJ2VjaG8gMiA+Cj4+IC9wcm9jL3N5cy9hYmkvY3AxNV9iYXJyaWVyJyBjb21t YW5kLkhvd2V2ZXIsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKPj4gd2hldGhlciBpdCBpcyBzZXQg b3Igbm90Lgo+IAo+IEFzIGFib3ZlLCBJIHRoaW5rIHRoaXMgaXMgYSBRRU1VIGJ1Zywgd2l0aCBR RU1VIGVycm9uZW9zdWx5IGltcGxlbWVudGluZyB0aGUKPiBpbnN0cnVjdGlvbnMgd2hlbiB0aGV5 IHNob3VsZCBiZSBVTkRFRklORUQuIFRoZSBhYm9ydHMgYXJlIHVucmVsYXRlZCwgYW5kIGFyZQo+ IGp1c3QgdGhlIHVzdWFsIGZhdWx0aW5nIGluIG9mIGNvZGUgYW5kIGRhdGEgcGFnZXMuCj4gCj4g U28gSSdkIHJlY29tbWVuZCByZXBvcnRpbmcgdGhhIHRvIFFFTVUgZm9saywgYW5kIGluIHRoZSBt ZWFuIHRpbWUgdGVzdGluZyBvbgo+IHJlYWwgSFcgcmF0aGVyIHRoYW4gUUVNVSBpbiBUQ0cgbW9k ZS4gV2hlbiBJIHdyb3RlIHRoZXNlIHBhdGNoZXMgSSB0ZXN0ZWQgb24gYQo+IFJhc3BiZXJyeSBQ aSA0LCB1bmRlciBhIEtWTSB2aXJ0dWFsIG1hY2hpbmUuCgpUaGFua3MgZm9yIHlvdXIgYWR2aWNl LiBJJ2xsIHRlc3QgaXQgb24gcmVhbCBIVy4KCj4gCj4gVGhhbmtzLAo+IE1hcmsuCj4gCj4+Cj4+ IEkgdGhpbmsgdGhlIGNvZGUgd2VudCBpbnRvIHRoZSB3cm9uZyBjb2RlIGZsb3cgYmVjYXVzZSBv ZiB0aGUgd3JvbmcgRUMKPj4gY29kZSwgYnV0IEkgZG9uJ3Qga25vdyB3aHkgdGhlIHdyb25nIEVD IHZhbHVlIHdhcyBwYXNzZWQgaW4uCj4+Cj4+Pgo+Pj4+IHNvIHRoYXQgSSBjYW4gbm90IHZlcmlm eSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlCj4+Pj4gcGF0Y2guQ2FuIHlvdSBnaXZlIG1lIHNvbWUg aGVscCB0byB0ZXN0IHRoZSBlbXVsYXRpb24gb2YgdGhlc2UKPj4+PiBkZXByZWNhdGVkIGluc3Ry dWN0aW9ucz8KPj4+Pgo+Pj4+ICNpbmNsdWRlPHN0ZGlvLmg+Cj4+Pj4KPj4+PiAjZGVmaW5lIGlz Yih4KSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1jciBwMTUsIDAsICUwLCBjNywgYzUsIDQiIFwK Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogInIiICgwKSA6ICJt ZW1vcnkiKQo+Pj4+ICNkZWZpbmUgZHNiKHgpIF9fYXNtX18gX192b2xhdGlsZV9fICgibWNyIHAx NSwgMCwgJTAsIGM3LCBjMTAsIDQiIFwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6IDogInIiICgwKSA6ICJtZW1vcnkiKQo+Pj4+ICNkZWZpbmUgZG1iKHgpIF9fYXNt X18gX192b2xhdGlsZV9fICgibWNyIHAxNSwgMCwgJTAsIGM3LCBjMTAsIDUiIFwKPj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogInIiICgwKSA6ICJtZW1vcnkiKQo+ Pj4KPj4+IEZXSVcsIHRoZXNlIGVuY29kaW5ncyBsb29rIGNvcnJlYyB0byBtZS4KPj4+Cj4+PiBU aGFua3MsCj4+PiBNYXJrLgo+Pj4KPj4+Pgo+Pj4+IGludCBtYWluKCl7Cj4+Pj4gICAgICAgICBp c2IoKTsKPj4+PiAgICAgICAgIGRzYigpOwo+Pj4+ICAgICAgICAgZG1iKCk7Cj4+Pj4gICAgICAg ICByZXR1cm4gMDsKPj4+PiB9Cj4+Pj4KPj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTogTWFyayBS dXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KPj4+Pj4gQ2M6IENhdGFsaW4gTWFyaW5hcyA8 Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cj4+Pj4+IENjOiBKYW1lcyBNb3JzZSA8amFtZXMubW9y c2VAYXJtLmNvbT4KPj4+Pj4gQ2M6IEpvZXkgR291bHkgPGpvZXkuZ291bHlAYXJtLmNvbT4KPj4+ Pj4gQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KPj4+Pj4gQ2M6IFdp bGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE1hcmsgUnV0 bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgYXJjaC9hcm02NC9p bmNsdWRlL2FzbS90cmFwcy5oICAgICAgIHwgIDE5ICstCj4+Pj4+ICBhcmNoL2FybTY0L2tlcm5l bC9hcm12OF9kZXByZWNhdGVkLmMgfCAyODIgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4+ Pj4+ICBhcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jICAgICAgICAgICAgfCAgNDAgKy0tLQo+Pj4+ PiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgMTkyIGRlbGV0aW9ucygtKQo+ Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oIGIv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oCj4+Pj4+IGluZGV4IDZlNTgyNjQ3MGJlYS4u MWYzNjFlMmRhNTE2IDEwMDY0NAo+Pj4+PiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Ry YXBzLmgKPj4+Pj4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oCj4+Pj4+IEBA IC0xMywxNyArMTMsMTYgQEAKPj4+Pj4gIAo+Pj4+PiAgc3RydWN0IHB0X3JlZ3M7Cj4+Pj4+ICAK Pj4+Pj4gLXN0cnVjdCB1bmRlZl9ob29rIHsKPj4+Pj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7 Cj4+Pj4+IC0JdTMyIGluc3RyX21hc2s7Cj4+Pj4+IC0JdTMyIGluc3RyX3ZhbDsKPj4+Pj4gLQl1 NjQgcHN0YXRlX21hc2s7Cj4+Pj4+IC0JdTY0IHBzdGF0ZV92YWw7Cj4+Pj4+IC0JaW50ICgqZm4p KHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zdHIpOwo+Pj4+PiAtfTsKPj4+Pj4gKyNpZmRl ZiBDT05GSUdfQVJNVjhfREVQUkVDQVRFRAo+Pj4+PiArYm9vbCB0cnlfZW11bGF0ZV9hcm12OF9k ZXByZWNhdGVkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zbik7Cj4+Pj4+ICsjZWxzZQo+ Pj4+PiArc3RhdGljIGlubGluZSBib29sCj4+Pj4+ICt0cnlfZW11bGF0ZV9hcm12OF9kZXByZWNh dGVkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zbikKPj4+Pj4gK3sKPj4+Pj4gKwlyZXR1 cm4gZmFsc2U7Cj4+Pj4+ICt9Cj4+Pj4+ICsjZW5kaWYgLyogQ09ORklHX0FSTVY4X0RFUFJFQ0FU RUQgKi8KPj4+Pj4gIAo+Pj4+PiAtdm9pZCByZWdpc3Rlcl91bmRlZl9ob29rKHN0cnVjdCB1bmRl Zl9ob29rICpob29rKTsKPj4+Pj4gLXZvaWQgdW5yZWdpc3Rlcl91bmRlZl9ob29rKHN0cnVjdCB1 bmRlZl9ob29rICpob29rKTsKPj4+Pj4gIHZvaWQgZm9yY2Vfc2lnbmFsX2luamVjdChpbnQgc2ln bmFsLCBpbnQgY29kZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIGVycik7 Cj4+Pj4+ICB2b2lkIGFybTY0X25vdGlmeV9zZWdmYXVsdCh1bnNpZ25lZCBsb25nIGFkZHIpOwo+ Pj4+PiAgdm9pZCBhcm02NF9mb3JjZV9zaWdfZmF1bHQoaW50IHNpZ25vLCBpbnQgY29kZSwgdW5z aWduZWQgbG9uZyBmYXIsIGNvbnN0IGNoYXIgKnN0cik7Cj4+Pj4+IGRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2tlcm5lbC9hcm12OF9kZXByZWNhdGVkLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9hcm12 OF9kZXByZWNhdGVkLmMKPj4+Pj4gaW5kZXggN2YyY2U0OWRiZjk3Li5lZDA3ODhjZjZiYmIgMTAw NjQ0Cj4+Pj4+IC0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2FybXY4X2RlcHJlY2F0ZWQuYwo+Pj4+ PiArKysgYi9hcmNoL2FybTY0L2tlcm5lbC9hcm12OF9kZXByZWNhdGVkLmMKPj4+Pj4gQEAgLTM4 LDE3ICszOCwyNCBAQCBlbnVtIGluc25fZW11bGF0aW9uX21vZGUgewo+Pj4+PiAgZW51bSBsZWdh Y3lfaW5zbl9zdGF0dXMgewo+Pj4+PiAgCUlOU05fREVQUkVDQVRFRCwKPj4+Pj4gIAlJTlNOX09C U09MRVRFLAo+Pj4+PiArCUlOU05fVU5BVkFJTEFCTEUsCj4+Pj4+ICB9Owo+Pj4+PiAgCj4+Pj4+ ICBzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gewo+Pj4+PiAgCWNvbnN0IGNoYXIJCQkqbmFtZTsKPj4+ Pj4gLQlzdHJ1Y3QgbGlzdF9oZWFkCQlub2RlOwo+Pj4+PiAgCWVudW0gbGVnYWN5X2luc25fc3Rh dHVzCQlzdGF0dXM7Cj4+Pj4+IC0Jc3RydWN0IHVuZGVmX2hvb2sJCSpob29rczsKPj4+Pj4gKwli b29sCQkJCSgqdHJ5X2VtdWxhdGUpKHN0cnVjdCBwdF9yZWdzICpyZWdzLAo+Pj4+PiArCQkJCQkJ ICAgICAgIHUzMiBpbnNuKTsKPj4+Pj4gIAlpbnQJCQkJKCpzZXRfaHdfbW9kZSkoYm9vbCBlbmFi bGUpOwo+Pj4+PiArCj4+Pj4+ICAJaW50IGN1cnJlbnRfbW9kZTsKPj4+Pj4gIAlpbnQgbWluOwo+ Pj4+PiAgCWludCBtYXg7Cj4+Pj4+ICsKPj4+Pj4gKwkvKgo+Pj4+PiArCSAqIHN5c2N0bCBmb3Ig dGhpcyBlbXVsYXRpb24gKyBhIHNlbnRpbmFsIGVudHJ5Lgo+Pj4+PiArCSAqLwo+Pj4+PiArCXN0 cnVjdCBjdGxfdGFibGUgc3lzY3RsWzJdOwo+Pj4+PiAgfTsKPj4+Pj4gIAo+Pj4+PiAgI2RlZmlu ZSBBUk1fT1BDT0RFX0NPTkRURVNUX0ZBSUwgICAwCj4+Pj4+IEBAIC03MCw2ICs3Nyw3IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgYWFyY2gzMl9jaGVja19jb25kaXRpb24odTMyIG9wY29kZSwgdTMy IHBzcikKPj4+Pj4gIAlyZXR1cm4gQVJNX09QQ09ERV9DT05EVEVTVF9VTkNPTkQ7Cj4+Pj4+ICB9 Cj4+Pj4+ICAKPj4+Pj4gKyNpZmRlZiBDT05GSUdfU1dQX0VNVUxBVElPTgo+Pj4+PiAgLyoKPj4+ Pj4gICAqICBJbXBsZW1lbnQgZW11bGF0aW9uIG9mIHRoZSBTV1AvU1dQQiBpbnN0cnVjdGlvbnMg dXNpbmcgbG9hZC1leGNsdXNpdmUgYW5kCj4+Pj4+ICAgKiAgc3RvcmUtZXhjbHVzaXZlLgo+Pj4+ PiBAQCAtMjIyLDI4ICsyMzAsMjcgQEAgc3RhdGljIGludCBzd3BfaGFuZGxlcihzdHJ1Y3QgcHRf cmVncyAqcmVncywgdTMyIGluc3RyKQo+Pj4+PiAgCXJldHVybiAwOwo+Pj4+PiAgfQo+Pj4+PiAg Cj4+Pj4+IC0vKgo+Pj4+PiAtICogT25seSBlbXVsYXRlIFNXUC9TV1BCIGV4ZWN1dGVkIGluIEFS TSBzdGF0ZS9Vc2VyIG1vZGUuCj4+Pj4+IC0gKiBUaGUga2VybmVsIG11c3QgYmUgU1dQIGZyZWUg YW5kIFNXUHtCfSBkb2VzIG5vdCBleGlzdCBpbiBUaHVtYi4KPj4+Pj4gLSAqLwo+Pj4+PiAtc3Rh dGljIHN0cnVjdCB1bmRlZl9ob29rIHN3cF9ob29rc1tdID0gewo+Pj4+PiAtCXsKPj4+Pj4gLQkJ Lmluc3RyX21hc2sJPSAweDBmYjAwZmYwLAo+Pj4+PiAtCQkuaW5zdHJfdmFsCT0gMHgwMTAwMDA5 MCwKPj4+Pj4gLQkJLnBzdGF0ZV9tYXNrCT0gUFNSX0FBMzJfTU9ERV9NQVNLLAo+Pj4+PiAtCQku cHN0YXRlX3ZhbAk9IFBTUl9BQTMyX01PREVfVVNSLAo+Pj4+PiAtCQkuZm4JCT0gc3dwX2hhbmRs ZXIKPj4+Pj4gLQl9LAo+Pj4+PiAtCXsgfQo+Pj4+PiAtfTsKPj4+Pj4gK3N0YXRpYyBib29sIHRy eV9lbXVsYXRlX3N3cChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluc24pCj4+Pj4+ICt7Cj4+ Pj4+ICsJLyogU1dQe0J9IG9ubHkgZXhpc3RzIGluIEFSTSBzdGF0ZSBhbmQgZG9lcyBub3QgZXhp c3QgaW4gVGh1bWIgKi8KPj4+Pj4gKwlpZiAoIWNvbXBhdF91c2VyX21vZGUocmVncykgfHwgY29t cGF0X3RodW1iX21vZGUocmVncykpCj4+Pj4+ICsJCXJldHVybiBmYWxzZTsKPj4+Pj4gKwo+Pj4+ PiArCWlmICgoaW5zbiAmIDB4MGZiMDBmZjApICE9IDB4MDEwMDAwOTApCj4+Pj4+ICsJCXJldHVy biBmYWxzZTsKPj4+Pj4gKwo+Pj4+PiArCXJldHVybiBzd3BfaGFuZGxlcihyZWdzLCBpbnNuKSA9 PSAwOwo+Pj4+PiArfQo+Pj4+PiAgCj4+Pj4+ICBzdGF0aWMgc3RydWN0IGluc25fZW11bGF0aW9u IGluc25fc3dwID0gewo+Pj4+PiAgCS5uYW1lID0gInN3cCIsCj4+Pj4+ICAJLnN0YXR1cyA9IElO U05fT0JTT0xFVEUsCj4+Pj4+IC0JLmhvb2tzID0gc3dwX2hvb2tzLAo+Pj4+PiArCS50cnlfZW11 bGF0ZSA9IHRyeV9lbXVsYXRlX3N3cCwKPj4+Pj4gIAkuc2V0X2h3X21vZGUgPSBOVUxMLAo+Pj4+ PiAgfTsKPj4+Pj4gKyNlbmRpZiAvKiBDT05GSUdfU1dQX0VNVUxBVElPTiAqLwo+Pj4+PiAgCj4+ Pj4+ICsjaWZkZWYgQ09ORklHX0NQMTVfQkFSUklFUl9FTVVMQVRJT04KPj4+Pj4gIHN0YXRpYyBp bnQgY3AxNWJhcnJpZXJfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluc3RyKQo+ Pj4+PiAgewo+Pj4+PiAgCXBlcmZfc3dfZXZlbnQoUEVSRl9DT1VOVF9TV19FTVVMQVRJT05fRkFV TFRTLCAxLCByZWdzLCByZWdzLT5wYyk7Cj4+Pj4+IEBAIC0zMDYsMzEgKzMxMywyOSBAQCBzdGF0 aWMgaW50IGNwMTVfYmFycmllcl9zZXRfaHdfbW9kZShib29sIGVuYWJsZSkKPj4+Pj4gIAlyZXR1 cm4gMDsKPj4+Pj4gIH0KPj4+Pj4gIAo+Pj4+PiAtc3RhdGljIHN0cnVjdCB1bmRlZl9ob29rIGNw MTVfYmFycmllcl9ob29rc1tdID0gewo+Pj4+PiAtCXsKPj4+Pj4gLQkJLmluc3RyX21hc2sJPSAw eDBmZmYwZmRmLAo+Pj4+PiAtCQkuaW5zdHJfdmFsCT0gMHgwZTA3MGY5YSwKPj4+Pj4gLQkJLnBz dGF0ZV9tYXNrCT0gUFNSX0FBMzJfTU9ERV9NQVNLLAo+Pj4+PiAtCQkucHN0YXRlX3ZhbAk9IFBT Ul9BQTMyX01PREVfVVNSLAo+Pj4+PiAtCQkuZm4JCT0gY3AxNWJhcnJpZXJfaGFuZGxlciwKPj4+ Pj4gLQl9LAo+Pj4+PiAtCXsKPj4+Pj4gLQkJLmluc3RyX21hc2sJPSAweDBmZmYwZmZmLAo+Pj4+ PiAtCQkuaW5zdHJfdmFsCT0gMHgwZTA3MGY5NSwKPj4+Pj4gLQkJLnBzdGF0ZV9tYXNrCT0gUFNS X0FBMzJfTU9ERV9NQVNLLAo+Pj4+PiAtCQkucHN0YXRlX3ZhbAk9IFBTUl9BQTMyX01PREVfVVNS LAo+Pj4+PiAtCQkuZm4JCT0gY3AxNWJhcnJpZXJfaGFuZGxlciwKPj4+Pj4gLQl9LAo+Pj4+PiAt CXsgfQo+Pj4+PiAtfTsKPj4+Pj4gK3N0YXRpYyBib29sIHRyeV9lbXVsYXRlX2NwMTVfYmFycmll cihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluc24pCj4+Pj4+ICt7Cj4+Pj4+ICsJaWYgKCFj b21wYXRfdXNlcl9tb2RlKHJlZ3MpIHx8IGNvbXBhdF90aHVtYl9tb2RlKHJlZ3MpKQo+Pj4+PiAr CQlyZXR1cm4gZmFsc2U7Cj4+Pj4+ICsKPj4+Pj4gKwlpZiAoKGluc24gJiAweDBmZmYwZmRmKSA9 PSAweDBlMDcwZjlhKQo+Pj4+PiArCQlyZXR1cm4gY3AxNWJhcnJpZXJfaGFuZGxlcihyZWdzLCBp bnNuKSA9PSAwOwo+Pj4+PiArCj4+Pj4+ICsJaWYgKChpbnNuICYgMHgwZmZmMGZmZikgPT0gMHgw ZTA3MGY5NSkKPj4+Pj4gKwkJcmV0dXJuIGNwMTViYXJyaWVyX2hhbmRsZXIocmVncywgaW5zbikg PT0gMDsKPj4+Pj4gKwo+Pj4+PiArCXJldHVybiBmYWxzZTsKPj4+Pj4gK30KPj4+Pj4gIAo+Pj4+ PiAgc3RhdGljIHN0cnVjdCBpbnNuX2VtdWxhdGlvbiBpbnNuX2NwMTVfYmFycmllciA9IHsKPj4+ Pj4gIAkubmFtZSA9ICJjcDE1X2JhcnJpZXIiLAo+Pj4+PiAgCS5zdGF0dXMgPSBJTlNOX0RFUFJF Q0FURUQsCj4+Pj4+IC0JLmhvb2tzID0gY3AxNV9iYXJyaWVyX2hvb2tzLAo+Pj4+PiArCS50cnlf ZW11bGF0ZSA9IHRyeV9lbXVsYXRlX2NwMTVfYmFycmllciwKPj4+Pj4gIAkuc2V0X2h3X21vZGUg PSBjcDE1X2JhcnJpZXJfc2V0X2h3X21vZGUsCj4+Pj4+ICB9Owo+Pj4+PiArI2VuZGlmIC8qIENP TkZJR19DUDE1X0JBUlJJRVJfRU1VTEFUSU9OICovCj4+Pj4+ICAKPj4+Pj4gKyNpZmRlZiBDT05G SUdfU0VURU5EX0VNVUxBVElPTgo+Pj4+PiAgc3RhdGljIGludCBzZXRlbmRfc2V0X2h3X21vZGUo Ym9vbCBlbmFibGUpCj4+Pj4+ICB7Cj4+Pj4+ICAJaWYgKCFjcHVfc3VwcG9ydHNfbWl4ZWRfZW5k aWFuX2VsMCgpKQo+Pj4+PiBAQCAtMzc4LDYxICszODMsNDEgQEAgc3RhdGljIGludCB0MTZfc2V0 ZW5kX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0cikKPj4+Pj4gIAlyZXR1 cm4gcmM7Cj4+Pj4+ICB9Cj4+Pj4+ICAKPj4+Pj4gLXN0YXRpYyBzdHJ1Y3QgdW5kZWZfaG9vayBz ZXRlbmRfaG9va3NbXSA9IHsKPj4+Pj4gLQl7Cj4+Pj4+IC0JCS5pbnN0cl9tYXNrCT0gMHhmZmZm ZmRmZiwKPj4+Pj4gLQkJLmluc3RyX3ZhbAk9IDB4ZjEwMTAwMDAsCj4+Pj4+IC0JCS5wc3RhdGVf bWFzawk9IFBTUl9BQTMyX01PREVfTUFTSywKPj4+Pj4gLQkJLnBzdGF0ZV92YWwJPSBQU1JfQUEz Ml9NT0RFX1VTUiwKPj4+Pj4gLQkJLmZuCQk9IGEzMl9zZXRlbmRfaGFuZGxlciwKPj4+Pj4gLQl9 LAo+Pj4+PiAtCXsKPj4+Pj4gLQkJLyogVGh1bWIgbW9kZSAqLwo+Pj4+PiAtCQkuaW5zdHJfbWFz awk9IDB4ZmZmZmZmZjcsCj4+Pj4+IC0JCS5pbnN0cl92YWwJPSAweDAwMDBiNjUwLAo+Pj4+PiAt CQkucHN0YXRlX21hc2sJPSAoUFNSX0FBMzJfVF9CSVQgfCBQU1JfQUEzMl9NT0RFX01BU0spLAo+ Pj4+PiAtCQkucHN0YXRlX3ZhbAk9IChQU1JfQUEzMl9UX0JJVCB8IFBTUl9BQTMyX01PREVfVVNS KSwKPj4+Pj4gLQkJLmZuCQk9IHQxNl9zZXRlbmRfaGFuZGxlciwKPj4+Pj4gLQl9LAo+Pj4+PiAt CXt9Cj4+Pj4+IC19Owo+Pj4+PiArc3RhdGljIGJvb2wgdHJ5X2VtdWxhdGVfc2V0ZW5kKHN0cnVj dCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zbikKPj4+Pj4gK3sKPj4+Pj4gKwlpZiAoY29tcGF0X3Ro dW1iX21vZGUocmVncykgJiYKPj4+Pj4gKwkgICAgKGluc24gJiAweGZmZmZmZmY3KSA9PSAweDAw MDBiNjUwKQo+Pj4+PiArCQlyZXR1cm4gdDE2X3NldGVuZF9oYW5kbGVyKHJlZ3MsIGluc24pID09 IDA7Cj4+Pj4+ICsKPj4+Pj4gKwlpZiAoY29tcGF0X3VzZXJfbW9kZShyZWdzKSAmJgo+Pj4+PiAr CSAgICAoaW5zbiAmIDB4ZmZmZmZkZmYpID09IDB4ZjEwMTAwMDApCj4+Pj4+ICsJCXJldHVybiBh MzJfc2V0ZW5kX2hhbmRsZXIocmVncywgaW5zbikgPT0gMDsKPj4+Pj4gKwo+Pj4+PiArCXJldHVy biBmYWxzZTsKPj4+Pj4gK30KPj4+Pj4gIAo+Pj4+PiAgc3RhdGljIHN0cnVjdCBpbnNuX2VtdWxh dGlvbiBpbnNuX3NldGVuZCA9IHsKPj4+Pj4gIAkubmFtZSA9ICJzZXRlbmQiLAo+Pj4+PiAgCS5z dGF0dXMgPSBJTlNOX0RFUFJFQ0FURUQsCj4+Pj4+IC0JLmhvb2tzID0gc2V0ZW5kX2hvb2tzLAo+ Pj4+PiArCS50cnlfZW11bGF0ZSA9IHRyeV9lbXVsYXRlX3NldGVuZCwKPj4+Pj4gIAkuc2V0X2h3 X21vZGUgPSBzZXRlbmRfc2V0X2h3X21vZGUsCj4+Pj4+ICB9Owo+Pj4+PiArI2VuZGlmIC8qIENP TkZJR19TRVRFTkRfRU1VTEFUSU9OICovCj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgaW5z bl9lbXVsYXRpb24gKmluc25fZW11bGF0aW9uc1tdID0gewo+Pj4+PiArI2lmZGVmIENPTkZJR19T V1BfRU1VTEFUSU9OCj4+Pj4+ICsJJmluc25fc3dwLAo+Pj4+PiArI2VuZGlmCj4+Pj4+ICsjaWZk ZWYgQ09ORklHX0NQMTVfQkFSUklFUl9FTVVMQVRJT04KPj4+Pj4gKwkmaW5zbl9jcDE1X2JhcnJp ZXIsCj4+Pj4+ICsjZW5kaWYKPj4+Pj4gKyNpZmRlZiBDT05GSUdfU0VURU5EX0VNVUxBVElPTgo+ Pj4+PiArCSZpbnNuX3NldGVuZCwKPj4+Pj4gKyNlbmRpZgo+Pj4+PiArfTsKPj4+Pj4gIAo+Pj4+ PiAtc3RhdGljIExJU1RfSEVBRChpbnNuX2VtdWxhdGlvbik7Cj4+Pj4+IC1zdGF0aWMgaW50IG5y X2luc25fZW11bGF0ZWQgX19pbml0ZGF0YTsKPj4+Pj4gLXN0YXRpYyBERUZJTkVfUkFXX1NQSU5M T0NLKGluc25fZW11bGF0aW9uX2xvY2spOwo+Pj4+PiAgc3RhdGljIERFRklORV9NVVRFWChpbnNu X2VtdWxhdGlvbl9tdXRleCk7Cj4+Pj4+ICAKPj4+Pj4gLXN0YXRpYyB2b2lkIHJlZ2lzdGVyX2Vt dWxhdGlvbl9ob29rcyhzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gKmluc24pCj4+Pj4+IC17Cj4+Pj4+ IC0Jc3RydWN0IHVuZGVmX2hvb2sgKmhvb2s7Cj4+Pj4+IC0KPj4+Pj4gLQlCVUdfT04oIWluc24t Pmhvb2tzKTsKPj4+Pj4gLQo+Pj4+PiAtCWZvciAoaG9vayA9IGluc24tPmhvb2tzOyBob29rLT5p bnN0cl9tYXNrOyBob29rKyspCj4+Pj4+IC0JCXJlZ2lzdGVyX3VuZGVmX2hvb2soaG9vayk7Cj4+ Pj4+IC0KPj4+Pj4gLQlwcl9ub3RpY2UoIlJlZ2lzdGVyZWQgJXMgZW11bGF0aW9uIGhhbmRsZXJc biIsIGluc24tPm5hbWUpOwo+Pj4+PiAtfQo+Pj4+PiAtCj4+Pj4+IC1zdGF0aWMgdm9pZCByZW1v dmVfZW11bGF0aW9uX2hvb2tzKHN0cnVjdCBpbnNuX2VtdWxhdGlvbiAqaW5zbikKPj4+Pj4gLXsK Pj4+Pj4gLQlzdHJ1Y3QgdW5kZWZfaG9vayAqaG9vazsKPj4+Pj4gLQo+Pj4+PiAtCUJVR19PTigh aW5zbi0+aG9va3MpOwo+Pj4+PiAtCj4+Pj4+IC0JZm9yIChob29rID0gaW5zbi0+aG9va3M7IGhv b2stPmluc3RyX21hc2s7IGhvb2srKykKPj4+Pj4gLQkJdW5yZWdpc3Rlcl91bmRlZl9ob29rKGhv b2spOwo+Pj4+PiAtCj4+Pj4+IC0JcHJfbm90aWNlKCJSZW1vdmVkICVzIGVtdWxhdGlvbiBoYW5k bGVyXG4iLCBpbnNuLT5uYW1lKTsKPj4+Pj4gLX0KPj4+Pj4gLQo+Pj4+PiAgc3RhdGljIHZvaWQg ZW5hYmxlX2luc25faHdfbW9kZSh2b2lkICpkYXRhKQo+Pj4+PiAgewo+Pj4+PiAgCXN0cnVjdCBp bnNuX2VtdWxhdGlvbiAqaW5zbiA9IChzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gKilkYXRhOwo+Pj4+ PiBAQCAtNDY5LDE4ICs0NTQsMjQgQEAgc3RhdGljIGludCBydW5fYWxsX2luc25fc2V0X2h3X21v ZGUodW5zaWduZWQgaW50IGNwdSkKPj4+Pj4gIHsKPj4+Pj4gIAlpbnQgcmMgPSAwOwo+Pj4+PiAg CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+IC0Jc3RydWN0IGluc25fZW11bGF0aW9uICppbnNu Owo+Pj4+PiAgCj4+Pj4+IC0JcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZpbnNuX2VtdWxhdGlvbl9s b2NrLCBmbGFncyk7Cj4+Pj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShpbnNuLCAmaW5zbl9lbXVs YXRpb24sIG5vZGUpIHsKPj4+Pj4gLQkJYm9vbCBlbmFibGUgPSAoaW5zbi0+Y3VycmVudF9tb2Rl ID09IElOU05fSFcpOwo+Pj4+PiArCS8qCj4+Pj4+ICsJICogRGlzYWJsZSBJUlFzIHRvIHNlcmlh bGl6ZSBhZ2FpbnN0IGFuIElQSSBmcm9tCj4+Pj4+ICsJICogcnVuX2FsbF9jcHVfc2V0X2h3X21v ZGUoKSwgZW5zdXJpbmcgdGhlIEhXIGlzIHByb2dyYW1tZWQgdG8gdGhlIG1vc3QKPj4+Pj4gKwkg KiByZWNlbnQgZW5hYmxlbWVudCBzdGF0ZSBpZiB0aGUgdHdvIHJhY2Ugd2l0aCBvbmUgYW5vdGhl ci4KPj4+Pj4gKwkgKi8KPj4+Pj4gKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Cj4+Pj4+ICsJZm9y IChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGluc25fZW11bGF0aW9ucyk7IGkrKykgewo+Pj4+ PiArCQlzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gKmluc24gPSBpbnNuX2VtdWxhdGlvbnNbaV07Cj4+ Pj4+ICsJCWJvb2wgZW5hYmxlID0gUkVBRF9PTkNFKGluc24tPmN1cnJlbnRfbW9kZSkgPT0gSU5T Tl9IVzsKPj4+Pj4gIAkJaWYgKGluc24tPnNldF9od19tb2RlICYmIGluc24tPnNldF9od19tb2Rl KGVuYWJsZSkpIHsKPj4+Pj4gIAkJCXByX3dhcm4oIkNQVVsldV0gY2Fubm90IHN1cHBvcnQgdGhl IGVtdWxhdGlvbiBvZiAlcyIsCj4+Pj4+ICAJCQkJY3B1LCBpbnNuLT5uYW1lKTsKPj4+Pj4gIAkJ CXJjID0gLUVJTlZBTDsKPj4+Pj4gIAkJfQo+Pj4+PiAgCX0KPj4+Pj4gLQlyYXdfc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmaW5zbl9lbXVsYXRpb25fbG9jaywgZmxhZ3MpOwo+Pj4+PiArCWxvY2Fs X2lycV9yZXN0b3JlKGZsYWdzKTsKPj4+Pj4gKwo+Pj4+PiAgCXJldHVybiByYzsKPj4+Pj4gIH0K Pj4+Pj4gIAo+Pj4+PiBAQCAtNDkzLDcgKzQ4NCw2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX2luc25f ZW11bGF0aW9uX21vZGUoc3RydWN0IGluc25fZW11bGF0aW9uICppbnNuLAo+Pj4+PiAgCWNhc2Ug SU5TTl9VTkRFRjogLyogTm90aGluZyB0byBiZSBkb25lICovCj4+Pj4+ICAJCWJyZWFrOwo+Pj4+ PiAgCWNhc2UgSU5TTl9FTVVMQVRFOgo+Pj4+PiAtCQlyZW1vdmVfZW11bGF0aW9uX2hvb2tzKGlu c24pOwo+Pj4+PiAgCQlicmVhazsKPj4+Pj4gIAljYXNlIElOU05fSFc6Cj4+Pj4+ICAJCWlmICgh cnVuX2FsbF9jcHVfc2V0X2h3X21vZGUoaW5zbiwgZmFsc2UpKQo+Pj4+PiBAQCAtNTA1LDcgKzQ5 NSw2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX2luc25fZW11bGF0aW9uX21vZGUoc3RydWN0IGluc25f ZW11bGF0aW9uICppbnNuLAo+Pj4+PiAgCWNhc2UgSU5TTl9VTkRFRjoKPj4+Pj4gIAkJYnJlYWs7 Cj4+Pj4+ICAJY2FzZSBJTlNOX0VNVUxBVEU6Cj4+Pj4+IC0JCXJlZ2lzdGVyX2VtdWxhdGlvbl9o b29rcyhpbnNuKTsKPj4+Pj4gIAkJYnJlYWs7Cj4+Pj4+ICAJY2FzZSBJTlNOX0hXOgo+Pj4+PiAg CQlyZXQgPSBydW5fYWxsX2NwdV9zZXRfaHdfbW9kZShpbnNuLCB0cnVlKTsKPj4+Pj4gQEAgLTUx NywzNCArNTA2LDYgQEAgc3RhdGljIGludCB1cGRhdGVfaW5zbl9lbXVsYXRpb25fbW9kZShzdHJ1 Y3QgaW5zbl9lbXVsYXRpb24gKmluc24sCj4+Pj4+ICAJcmV0dXJuIHJldDsKPj4+Pj4gIH0KPj4+ Pj4gIAo+Pj4+PiAtc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2luc25fZW11bGF0aW9uKHN0 cnVjdCBpbnNuX2VtdWxhdGlvbiAqaW5zbikKPj4+Pj4gLXsKPj4+Pj4gLQl1bnNpZ25lZCBsb25n IGZsYWdzOwo+Pj4+PiAtCj4+Pj4+IC0JaW5zbi0+bWluID0gSU5TTl9VTkRFRjsKPj4+Pj4gLQo+ Pj4+PiAtCXN3aXRjaCAoaW5zbi0+c3RhdHVzKSB7Cj4+Pj4+IC0JY2FzZSBJTlNOX0RFUFJFQ0FU RUQ6Cj4+Pj4+IC0JCWluc24tPmN1cnJlbnRfbW9kZSA9IElOU05fRU1VTEFURTsKPj4+Pj4gLQkJ LyogRGlzYWJsZSB0aGUgSFcgbW9kZSBpZiBpdCB3YXMgdHVybmVkIG9uIGF0IGVhcmx5IGJvb3Qg dGltZSAqLwo+Pj4+PiAtCQlydW5fYWxsX2NwdV9zZXRfaHdfbW9kZShpbnNuLCBmYWxzZSk7Cj4+ Pj4+IC0JCWluc24tPm1heCA9IElOU05fSFc7Cj4+Pj4+IC0JCWJyZWFrOwo+Pj4+PiAtCWNhc2Ug SU5TTl9PQlNPTEVURToKPj4+Pj4gLQkJaW5zbi0+Y3VycmVudF9tb2RlID0gSU5TTl9VTkRFRjsK Pj4+Pj4gLQkJaW5zbi0+bWF4ID0gSU5TTl9FTVVMQVRFOwo+Pj4+PiAtCQlicmVhazsKPj4+Pj4g LQl9Cj4+Pj4+IC0KPj4+Pj4gLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmluc25fZW11bGF0aW9u X2xvY2ssIGZsYWdzKTsKPj4+Pj4gLQlsaXN0X2FkZCgmaW5zbi0+bm9kZSwgJmluc25fZW11bGF0 aW9uKTsKPj4+Pj4gLQlucl9pbnNuX2VtdWxhdGVkKys7Cj4+Pj4+IC0JcmF3X3NwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmluc25fZW11bGF0aW9uX2xvY2ssIGZsYWdzKTsKPj4+Pj4gLQo+Pj4+PiAt CS8qIFJlZ2lzdGVyIGFueSBoYW5kbGVycyBpZiByZXF1aXJlZCAqLwo+Pj4+PiAtCXVwZGF0ZV9p bnNuX2VtdWxhdGlvbl9tb2RlKGluc24sIElOU05fVU5ERUYpOwo+Pj4+PiAtfQo+Pj4+PiAtCj4+ Pj4+ICBzdGF0aWMgaW50IGVtdWxhdGlvbl9wcm9jX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAq dGFibGUsIGludCB3cml0ZSwKPj4+Pj4gIAkJCQkgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5w LAo+Pj4+PiAgCQkJCSAgbG9mZl90ICpwcG9zKQo+Pj4+PiBAQCAtNTYyLDcgKzUyMyw3IEBAIHN0 YXRpYyBpbnQgZW11bGF0aW9uX3Byb2NfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwg aW50IHdyaXRlLAo+Pj4+PiAgCXJldCA9IHVwZGF0ZV9pbnNuX2VtdWxhdGlvbl9tb2RlKGluc24s IHByZXZfbW9kZSk7Cj4+Pj4+ICAJaWYgKHJldCkgewo+Pj4+PiAgCQkvKiBNb2RlIGNoYW5nZSBm YWlsZWQsIHJldmVydCB0byBwcmV2aW91cyBtb2RlLiAqLwo+Pj4+PiAtCQlpbnNuLT5jdXJyZW50 X21vZGUgPSBwcmV2X21vZGU7Cj4+Pj4+ICsJCVdSSVRFX09OQ0UoaW5zbi0+Y3VycmVudF9tb2Rl LCBwcmV2X21vZGUpOwo+Pj4+PiAgCQl1cGRhdGVfaW5zbl9lbXVsYXRpb25fbW9kZShpbnNuLCBJ TlNOX1VOREVGKTsKPj4+Pj4gIAl9Cj4+Pj4+ICByZXQ6Cj4+Pj4+IEBAIC01NzAsMjEgKzUzMSwz NCBAQCBzdGF0aWMgaW50IGVtdWxhdGlvbl9wcm9jX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAq dGFibGUsIGludCB3cml0ZSwKPj4+Pj4gIAlyZXR1cm4gcmV0Owo+Pj4+PiAgfQo+Pj4+PiAgCj4+ Pj4+IC1zdGF0aWMgdm9pZCBfX2luaXQgcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb25fc3lzY3RsKHZv aWQpCj4+Pj4+ICtzdGF0aWMgdm9pZCBfX2luaXQgcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb24oc3Ry dWN0IGluc25fZW11bGF0aW9uICppbnNuKQo+Pj4+PiAgewo+Pj4+PiAtCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4+Pj4+IC0JaW50IGkgPSAwOwo+Pj4+PiAtCXN0cnVjdCBpbnNuX2VtdWxhdGlvbiAq aW5zbjsKPj4+Pj4gLQlzdHJ1Y3QgY3RsX3RhYmxlICppbnNuc19zeXNjdGwsICpzeXNjdGw7Cj4+ Pj4+ICsJc3RydWN0IGN0bF90YWJsZSAqc3lzY3RsOwo+Pj4+PiAgCj4+Pj4+IC0JaW5zbnNfc3lz Y3RsID0ga2NhbGxvYyhucl9pbnNuX2VtdWxhdGVkICsgMSwgc2l6ZW9mKCpzeXNjdGwpLAo+Pj4+ PiAtCQkJICAgICAgIEdGUF9LRVJORUwpOwo+Pj4+PiAtCWlmICghaW5zbnNfc3lzY3RsKQo+Pj4+ PiAtCQlyZXR1cm47Cj4+Pj4+ICsJaW5zbi0+bWluID0gSU5TTl9VTkRFRjsKPj4+Pj4gIAo+Pj4+ PiAtCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmaW5zbl9lbXVsYXRpb25fbG9jaywgZmxhZ3MpOwo+ Pj4+PiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoaW5zbiwgJmluc25fZW11bGF0aW9uLCBub2RlKSB7 Cj4+Pj4+IC0JCXN5c2N0bCA9ICZpbnNuc19zeXNjdGxbaV07Cj4+Pj4+ICsJc3dpdGNoIChpbnNu LT5zdGF0dXMpIHsKPj4+Pj4gKwljYXNlIElOU05fREVQUkVDQVRFRDoKPj4+Pj4gKwkJaW5zbi0+ Y3VycmVudF9tb2RlID0gSU5TTl9FTVVMQVRFOwo+Pj4+PiArCQkvKiBEaXNhYmxlIHRoZSBIVyBt b2RlIGlmIGl0IHdhcyB0dXJuZWQgb24gYXQgZWFybHkgYm9vdCB0aW1lICovCj4+Pj4+ICsJCXJ1 bl9hbGxfY3B1X3NldF9od19tb2RlKGluc24sIGZhbHNlKTsKPj4+Pj4gKwkJaW5zbi0+bWF4ID0g SU5TTl9IVzsKPj4+Pj4gKwkJYnJlYWs7Cj4+Pj4+ICsJY2FzZSBJTlNOX09CU09MRVRFOgo+Pj4+ PiArCQlpbnNuLT5jdXJyZW50X21vZGUgPSBJTlNOX1VOREVGOwo+Pj4+PiArCQlpbnNuLT5tYXgg PSBJTlNOX0VNVUxBVEU7Cj4+Pj4+ICsJCWJyZWFrOwo+Pj4+PiArCWNhc2UgSU5TTl9VTkFWQUlM QUJMRToKPj4+Pj4gKwkJaW5zbi0+Y3VycmVudF9tb2RlID0gSU5TTl9VTkRFRjsKPj4+Pj4gKwkJ aW5zbi0+bWF4ID0gSU5TTl9VTkRFRjsKPj4+Pj4gKwkJYnJlYWs7Cj4+Pj4+ICsJfQo+Pj4+PiAr Cj4+Pj4+ICsJLyogUHJvZ3JhbSB0aGUgSFcgaWYgcmVxdWlyZWQgKi8KPj4+Pj4gKwl1cGRhdGVf aW5zbl9lbXVsYXRpb25fbW9kZShpbnNuLCBJTlNOX1VOREVGKTsKPj4+Pj4gKwo+Pj4+PiArCWlm IChpbnNuLT5zdGF0dXMgIT0gSU5TTl9VTkFWQUlMQUJMRSkgewo+Pj4+PiArCQlzeXNjdGwgPSAm aW5zbi0+c3lzY3RsWzBdOwo+Pj4+PiAgCj4+Pj4+ICAJCXN5c2N0bC0+bW9kZSA9IDA2NDQ7Cj4+ Pj4+ICAJCXN5c2N0bC0+bWF4bGVuID0gc2l6ZW9mKGludCk7Cj4+Pj4+IEBAIC01OTQsMTEgKzU2 OCwzMiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb25fc3lzY3Rs KHZvaWQpCj4+Pj4+ICAJCXN5c2N0bC0+ZXh0cmExID0gJmluc24tPm1pbjsKPj4+Pj4gIAkJc3lz Y3RsLT5leHRyYTIgPSAmaW5zbi0+bWF4Owo+Pj4+PiAgCQlzeXNjdGwtPnByb2NfaGFuZGxlciA9 IGVtdWxhdGlvbl9wcm9jX2hhbmRsZXI7Cj4+Pj4+IC0JCWkrKzsKPj4+Pj4gKwo+Pj4+PiArCQly ZWdpc3Rlcl9zeXNjdGwoImFiaSIsIHN5c2N0bCk7Cj4+Pj4+ICsJfQo+Pj4+PiArfQo+Pj4+PiAr Cj4+Pj4+ICtib29sIHRyeV9lbXVsYXRlX2FybXY4X2RlcHJlY2F0ZWQoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIHUzMiBpbnNuKQo+Pj4+PiArewo+Pj4+PiArCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShpbnNuX2VtdWxhdGlvbnMpOyBpKyspIHsKPj4+Pj4gKwkJc3RydWN0IGluc25fZW11 bGF0aW9uICppZSA9IGluc25fZW11bGF0aW9uc1tpXTsKPj4+Pj4gKwo+Pj4+PiArCQlpZiAoaWUt PnN0YXR1cyA9PSBJTlNOX1VOQVZBSUxBQkxFKQo+Pj4+PiArCQkJY29udGludWU7Cj4+Pj4+ICsK Pj4+Pj4gKwkJLyoKPj4+Pj4gKwkJICogQSB0cmFwIG1heSByYWNlIHdpdGggdGhlIG1vZGUgYmVp bmcgY2hhbmdlZAo+Pj4+PiArCQkgKiBJTlNOX0VNVUxBVEU8LT5JTlNOX0hXLiBUcnkgdG8gZW11 bGF0ZSB0aGUgaW5zdHJ1Y3Rpb24gdG8KPj4+Pj4gKwkJICogYXZvaWQgYSBzcHVyaW91cyBVTkRF Ri4KPj4+Pj4gKwkJICovCj4+Pj4+ICsJCWlmIChSRUFEX09OQ0UoaWUtPmN1cnJlbnRfbW9kZSkg PT0gSU5TTl9VTkRFRikKPj4+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4+PiArCj4+Pj4+ICsJCWlmIChp ZS0+dHJ5X2VtdWxhdGUocmVncywgaW5zbikpCj4+Pj4+ICsJCQlyZXR1cm4gdHJ1ZTsKPj4+Pj4g IAl9Cj4+Pj4+IC0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmluc25fZW11bGF0aW9uX2xv Y2ssIGZsYWdzKTsKPj4+Pj4gIAo+Pj4+PiAtCXJlZ2lzdGVyX3N5c2N0bCgiYWJpIiwgaW5zbnNf c3lzY3RsKTsKPj4+Pj4gKwlyZXR1cm4gZmFsc2U7Cj4+Pj4+ICB9Cj4+Pj4+ICAKPj4+Pj4gIC8q Cj4+Pj4+IEBAIC02MDcsMjQgKzYwMiwyNSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmVnaXN0ZXJf aW5zbl9lbXVsYXRpb25fc3lzY3RsKHZvaWQpCj4+Pj4+ICAgKi8KPj4+Pj4gIHN0YXRpYyBpbnQg X19pbml0IGFybXY4X2RlcHJlY2F0ZWRfaW5pdCh2b2lkKQo+Pj4+PiAgewo+Pj4+PiAtCWlmIChJ U19FTkFCTEVEKENPTkZJR19TV1BfRU1VTEFUSU9OKSkKPj4+Pj4gLQkJcmVnaXN0ZXJfaW5zbl9l bXVsYXRpb24oJmluc25fc3dwKTsKPj4+Pj4gKyNpZmRlZiBDT05GSUdfU0VURU5EX0VNVUxBVElP Tgo+Pj4+PiArCWlmICghc3lzdGVtX3N1cHBvcnRzX21peGVkX2VuZGlhbl9lbDAoKSkgewo+Pj4+ PiArCQlpbnNuX3NldGVuZC5zdGF0dXMgPSBJTlNOX1VOQVZBSUxBQkxFOwo+Pj4+PiArCQlwcl9p bmZvKCJzZXRlbmQgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhp cyBzeXN0ZW1cbiIpOwo+Pj4+PiArCX0KPj4+Pj4gIAo+Pj4+PiAtCWlmIChJU19FTkFCTEVEKENP TkZJR19DUDE1X0JBUlJJRVJfRU1VTEFUSU9OKSkKPj4+Pj4gLQkJcmVnaXN0ZXJfaW5zbl9lbXVs YXRpb24oJmluc25fY3AxNV9iYXJyaWVyKTsKPj4+Pj4gKyNlbmRpZgo+Pj4+PiArCWZvciAoaW50 IGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnNuX2VtdWxhdGlvbnMpOyBpKyspIHsKPj4+Pj4gKwkJ c3RydWN0IGluc25fZW11bGF0aW9uICppZSA9IGluc25fZW11bGF0aW9uc1tpXTsKPj4+Pj4gIAo+ Pj4+PiAtCWlmIChJU19FTkFCTEVEKENPTkZJR19TRVRFTkRfRU1VTEFUSU9OKSkgewo+Pj4+PiAt CQlpZiAoc3lzdGVtX3N1cHBvcnRzX21peGVkX2VuZGlhbl9lbDAoKSkKPj4+Pj4gLQkJCXJlZ2lz dGVyX2luc25fZW11bGF0aW9uKCZpbnNuX3NldGVuZCk7Cj4+Pj4+IC0JCWVsc2UKPj4+Pj4gLQkJ CXByX2luZm8oInNldGVuZCBpbnN0cnVjdGlvbiBlbXVsYXRpb24gaXMgbm90IHN1cHBvcnRlZCBv biB0aGlzIHN5c3RlbVxuIik7Cj4+Pj4+ICsJCWlmIChpZS0+c3RhdHVzID09IElOU05fVU5BVkFJ TEFCTEUpCj4+Pj4+ICsJCQljb250aW51ZTsKPj4+Pj4gKwo+Pj4+PiArCQlyZWdpc3Rlcl9pbnNu X2VtdWxhdGlvbihpZSk7Cj4+Pj4+ICAJfQo+Pj4+PiAgCj4+Pj4+ICAJY3B1aHBfc2V0dXBfc3Rh dGVfbm9jYWxscyhDUFVIUF9BUF9BUk02NF9JU05ERVBfU1RBUlRJTkcsCj4+Pj4+ICAJCQkJICAi YXJtNjQvaXNuZGVwOnN0YXJ0aW5nIiwKPj4+Pj4gIAkJCQkgIHJ1bl9hbGxfaW5zbl9zZXRfaHdf bW9kZSwgTlVMTCk7Cj4+Pj4+IC0JcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb25fc3lzY3RsKCk7Cj4+ Pj4+IC0KPj4+Pj4gIAlyZXR1cm4gMDsKPj4+Pj4gIH0KPj4+Pj4gIAo+Pj4+PiBkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMK Pj4+Pj4gaW5kZXggOTZlYWYxYWFlYzEyLi40YzBjYWE1ODllMTIgMTAwNjQ0Cj4+Pj4+IC0tLSBh L2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMKPj4+Pj4gKysrIGIvYXJjaC9hcm02NC9rZXJuZWwv dHJhcHMuYwo+Pj4+PiBAQCAtMzczLDI3ICszNzMsNiBAQCB2b2lkIGFybTY0X3NraXBfZmF1bHRp bmdfaW5zdHJ1Y3Rpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSkK Pj4+Pj4gIAkJcmVncy0+cHN0YXRlICY9IH5QU1JfQlRZUEVfTUFTSzsKPj4+Pj4gIH0KPj4+Pj4g IAo+Pj4+PiAtc3RhdGljIExJU1RfSEVBRCh1bmRlZl9ob29rKTsKPj4+Pj4gLXN0YXRpYyBERUZJ TkVfUkFXX1NQSU5MT0NLKHVuZGVmX2xvY2spOwo+Pj4+PiAtCj4+Pj4+IC12b2lkIHJlZ2lzdGVy X3VuZGVmX2hvb2soc3RydWN0IHVuZGVmX2hvb2sgKmhvb2spCj4+Pj4+IC17Cj4+Pj4+IC0JdW5z aWduZWQgbG9uZyBmbGFnczsKPj4+Pj4gLQo+Pj4+PiAtCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgm dW5kZWZfbG9jaywgZmxhZ3MpOwo+Pj4+PiAtCWxpc3RfYWRkKCZob29rLT5ub2RlLCAmdW5kZWZf aG9vayk7Cj4+Pj4+IC0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVuZGVmX2xvY2ssIGZs YWdzKTsKPj4+Pj4gLX0KPj4+Pj4gLQo+Pj4+PiAtdm9pZCB1bnJlZ2lzdGVyX3VuZGVmX2hvb2so c3RydWN0IHVuZGVmX2hvb2sgKmhvb2spCj4+Pj4+IC17Cj4+Pj4+IC0JdW5zaWduZWQgbG9uZyBm bGFnczsKPj4+Pj4gLQo+Pj4+PiAtCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmdW5kZWZfbG9jaywg ZmxhZ3MpOwo+Pj4+PiAtCWxpc3RfZGVsKCZob29rLT5ub2RlKTsKPj4+Pj4gLQlyYXdfc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmdW5kZWZfbG9jaywgZmxhZ3MpOwo+Pj4+PiAtfQo+Pj4+PiAtCj4+ Pj4+ICBzdGF0aWMgaW50IHVzZXJfaW5zbl9yZWFkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIg Kmluc25wKQo+Pj4+PiAgewo+Pj4+PiAgCXUzMiBpbnN0cjsKPj4+Pj4gQEAgLTQyNSwyMyArNDA0 LDYgQEAgc3RhdGljIGludCB1c2VyX2luc25fcmVhZChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMy ICppbnNucCkKPj4+Pj4gIAlyZXR1cm4gMDsKPj4+Pj4gIH0KPj4+Pj4gIAo+Pj4+PiAtc3RhdGlj IGludCBjYWxsX3VuZGVmX2hvb2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0cikKPj4+ Pj4gLXsKPj4+Pj4gLQlzdHJ1Y3QgdW5kZWZfaG9vayAqaG9vazsKPj4+Pj4gLQl1bnNpZ25lZCBs b25nIGZsYWdzOwo+Pj4+PiAtCWludCAoKmZuKShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGlu c3RyKSA9IE5VTEw7Cj4+Pj4+IC0KPj4+Pj4gLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnVuZGVm X2xvY2ssIGZsYWdzKTsKPj4+Pj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGhvb2ssICZ1bmRlZl9o b29rLCBub2RlKQo+Pj4+PiAtCQlpZiAoKGluc3RyICYgaG9vay0+aW5zdHJfbWFzaykgPT0gaG9v ay0+aW5zdHJfdmFsICYmCj4+Pj4+IC0JCQkocmVncy0+cHN0YXRlICYgaG9vay0+cHN0YXRlX21h c2spID09IGhvb2stPnBzdGF0ZV92YWwpCj4+Pj4+IC0JCQlmbiA9IGhvb2stPmZuOwo+Pj4+PiAt Cj4+Pj4+IC0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVuZGVmX2xvY2ssIGZsYWdzKTsK Pj4+Pj4gLQo+Pj4+PiAtCXJldHVybiBmbiA/IGZuKHJlZ3MsIGluc3RyKSA6IDE7Cj4+Pj4+IC19 Cj4+Pj4+IC0KPj4+Pj4gIHZvaWQgZm9yY2Vfc2lnbmFsX2luamVjdChpbnQgc2lnbmFsLCBpbnQg Y29kZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIGVycikKPj4+Pj4gIHsK Pj4+Pj4gIAljb25zdCBjaGFyICpkZXNjOwo+Pj4+PiBAQCAtNTAyLDcgKzQ2NCw3IEBAIHZvaWQg ZG9fZWwwX3VuZGVmKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIGVzcikKPj4+ Pj4gIAlpZiAodHJ5X2VtdWxhdGVfbXJzKHJlZ3MsIGluc24pKQo+Pj4+PiAgCQlyZXR1cm47Cj4+ Pj4+ICAKPj4+Pj4gLQlpZiAoY2FsbF91bmRlZl9ob29rKHJlZ3MsIGluc24pID09IDApCj4+Pj4+ ICsJaWYgKHRyeV9lbXVsYXRlX2FybXY4X2RlcHJlY2F0ZWQocmVncywgaW5zbikpCj4+Pj4+ICAJ CXJldHVybjsKPj4+Pj4gIAo+Pj4+PiAgb3V0X2VycjoKPj4+Pgo+Pj4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4gbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKPj4+PiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+ PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwKPj4+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==