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 B9998C43458 for ; Tue, 30 Jun 2026 06:14:27 +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=6MRrqSZQJyOZuQxPVJpr3MGRuN57Tf7XUDJYA09YRNg=; b=Z9pZZaFZwVC3Vn DPpI4g7a/A4SVO+A07JsXxASc/234skNeW3KJrD4SjiADmQXNlx8T/K/xVom0y4X4iripqJ4MpRxD T/DAC/x9xVlTU6E0oxpqdhfLijxv7cMnZOdDGdQLP4vb9A/kTbpjIkgg4T9QINANBIcHE462gyLKZ DPtqJNkiuVSJKNdQgP24mtq7U6KVqGk54arCP1BH6ZK9L8erLS4AiV/3/v3g8ber0mfQxW3zo1xbN LzqAZEm01eDH4ZlMnWzVq9wfsU+JGaEqDVRFpRdZ/hexhvVdgc5v3HlY1Y2V5UXho3garsij0Kpmo hjWQ+yofA4LDWtDB2ygg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1weRjd-0000000FtHg-0Hyo; Tue, 30 Jun 2026 06:14:17 +0000 Received: from mail-dl1-x122c.google.com ([2607:f8b0:4864:20::122c]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1weRjZ-0000000FtGK-2K92 for linux-riscv@lists.infradead.org; Tue, 30 Jun 2026 06:14:16 +0000 Received: by mail-dl1-x122c.google.com with SMTP id a92af1059eb24-139f71a5201so305535c88.0 for ; Mon, 29 Jun 2026 23:14:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782800053; x=1783404853; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=kQ4pwxtyxCm1G5M66xxdmEUDpbEAdNwzhoPavDK6tNs=; b=XFvGl1rh8XKcKjnle7lArChs+Z6KIdS3VxOU5xpeK8zq3DAmzlbUXV7F5K07kDKwux s8jwBCK2Lx1w3cydhCnKfqqa5ctycfFkwYJcKReXi83DX7kbFTkBZjJKznqV7ARd3/JF V/w5yTB2Z94QMw0V/QL6xm5BfdVLUhlxCk/3HlEdFArTsVoUaZd29QKiCrgtLHLDvC1R oUcHz2qnFHw8U33UvdlUt2/ycBFQWKGEXLSM8VrjSr1ToTVU1sD/saMqOZNrblrMYj31 xrtfVolKB3mAavTIbtTwhCxS5pi/35qagZKtf/Q3eSxGfVMu/c01d8QzhCNvJSZJQvMn KfeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782800053; x=1783404853; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kQ4pwxtyxCm1G5M66xxdmEUDpbEAdNwzhoPavDK6tNs=; b=n/w61xbqKTq4ObB9S5N4NuQn3RcglP+FNhGt9R6MhgRZp1AHt3wsIBy0DBcMtUU+iq N7Kz84Hl3mTV5YCDbyHVchv/AcoFJSAgepdYvQawjSTxRJO21/UspxhoVS+K40GJLig+ Bo8oEQZkk3zn2YxnNkvPuZACaLfFwuyppc0TcJ7byy6fsp+D/3yCESP3tfe4ONe+XTk9 Z+Q3AkRFPkWl+OSqEi1yQfUj0RA8bOYw0rDKX3qqm7n4zFYtAU+97IysE8zpL0OPkjWs E8EwHxVxDFTY1g9ZLC+/j9OFFbjYFiYBDmow/2+HPLdrHi1qX81opwIYQbhsCFuwP3Ad RAHg== X-Forwarded-Encrypted: i=1; AHgh+Ronc5GVwbfOeowq599cQF2eWjRvloeh6vMgV3/tNMfugknlCXjc0CPFdKIlDzHj8KFL3Un7moj8gh1jhg==@lists.infradead.org X-Gm-Message-State: AOJu0Yx9tjZ1oTwmu0DSsGzwdTSZkp0B/oTwYmVpCMx3DkII/+YwdUGv 1MBiYVhpYtNs7gaVwTcbaDR5iN+JrxHOrqlX2szcbJ64Rd7gc57hNNPWsxeBH5iV X-Gm-Gg: AfdE7ckTgtxVUXwo2fju4PKwZVaKGGXJpbe/bCqMuwACT3MCXLJsT75YZgLnHDfKjUo 8TwBL51/fA45p+cbdwwVvTQbSpQUtgwKAOh12i5M4ze0X3yUmSJe4Jo4OW7F7+Mhc0zjJCuJy+E tjfIBbPZmYnQuPq0dzrIZGjCCcznzhgLPilsBhRrcjVx4MYDnjqhPKaCxwgbIL1L2u/QZo5S29l E3sLfiZGOoCBgdkuk808P/m9HS65lAH5pfvDbIAe+HrLWrSkL7oJgCjRy5Ec6622rmmQdQJ77Vh XypAy3km8QgYizhJpjc1UkGuNdmtcG3hvB3B/Nhn1A+j+DEU5c2ClEhjPKupRYNMjzjXrpIEZdr UpEBw92PFe4sVyukngza5HerRFIzIjZIcP3xNOZWrIl1nDMzOsKXkjTjH+yy0RQGfQW/NcAb4CD TkgbgdTBhceOWxBW0MHPv7j8r3zf0UgP8r X-Received: by 2002:a05:7300:6115:b0:30c:9ca4:5cd0 with SMTP id 5a478bee46e88-30ee9f63cdamr444602eec.4.1782800052515; Mon, 29 Jun 2026 23:14:12 -0700 (PDT) Received: from blinky ([2601:647:6700:64d0::94ac]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30ee326c7a7sm4344373eec.29.2026.06.29.23.14.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 23:14:11 -0700 (PDT) Date: Mon, 29 Jun 2026 23:14:09 -0700 From: Charlie Jenkins To: Jesse T Cc: Paul Walmsley , Palmer Dabbelt , Nam Cao , Alexandre Ghiti , Anup Patel , Atish Patra , Conor Dooley , Paolo Bonzini , Andrew Morton , Shuah Khan , Radim =?utf-8?B?S3LEjW3DocWZ?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v2 07/16] riscv: Use generated instruction headers for misaligned loads/stores Message-ID: References: <20260621-riscv_insn_table-v2-0-7f0810ee2274@gmail.com> <20260621-riscv_insn_table-v2-7-7f0810ee2274@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260629_231413_617875_519B74D4 X-CRM114-Status: GOOD ( 25.88 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBKdW4gMjksIDIwMjYgYXQgMDQ6MjA6MTVQTSAtMDQwMCwgSmVzc2UgVCB3cm90ZToK PiBPbiBNb24sIEp1biAyMiwgMjAyNiBhdCAxMjowOOKAr0FNIENoYXJsaWUgSmVua2lucyB2aWEg QjQgUmVsYXkKPiA8ZGV2bnVsbCt0aGVjaGFybGVzamVua2lucy5nbWFpbC5jb21Aa2VybmVsLm9y Zz4gd3JvdGU6Cj4gPgo+ID4gRnJvbTogQ2hhcmxpZSBKZW5raW5zIDx0aGVjaGFybGVzamVua2lu c0BnbWFpbC5jb20+Cj4gPgo+ID4gTWlncmF0ZSB0aGUgbWlzYWxpZ25lZCBsb2Fkcy9zdG9yZSBj b2RlIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGluc3RydWN0aW9uCj4gPiBoZWFkZXJzIGluc3RlYWQg b2YgdGhlIGhhbmQtd3JpdHRlbiBpbnN0cnVjdGlvbiBjb21wb3NpdGlvbiBmdW5jdGlvbnMuCj4g Pgo+ID4gU2lnbmVkLW9mZi1ieTogQ2hhcmxpZSBKZW5raW5zIDx0aGVjaGFybGVzamVua2luc0Bn bWFpbC5jb20+Cj4gPgo+ID4gLS0tCj4gPgo+ID4gU2ltaWxhciB0byB0aGUgb3RoZXIgcGF0Y2hl cyBvZiB0aGlzIHNlcmllcywgSSBleHRyYWN0ZWQgb3V0IHRoZSBsb2dpYwo+ID4gb2YgdGhpcyBm dW5jdGlvbiBhbmQgYnJ1dGUgZm9yY2VkIGFsbCBwb3NzaWJsZSBpbnB1dHMgdG8gdmFsaWRhdGUg dGhhdAo+ID4gdGhlIG91dHB1dHMgYXJlIHRoZSBzYW1lLiBUbyB2ZXJpZnkgdGhpcyBjaGFuZ2Ug aW4gdGhlIGtlcm5lbCwgSSBib290ZWQKPiA+IG9uIFNwaWtlIGFuZCB1c2VkIHRoZSBtaXNhbGln bmVkIGFjY2VzcyBjaGVja2VyIHdoaWNoIGRvZXMgc29tZQo+ID4gbWlzYWxpZ25lZCBhY2Nlc3Nl cy4KPiA+IC0tLQo+ID4gIGFyY2gvcmlzY3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYyB8IDE4 MyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIDEgZmlsZSBjaGFuZ2Vk LCA4MyBpbnNlcnRpb25zKCspLCAxMDAgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBh L2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYyBiL2FyY2gvcmlzY3Yva2VybmVs L3RyYXBzX21pc2FsaWduZWQuYwo+ID4gaW5kZXggODFiNzY4MmU2YzZkLi40ZDJhMjQzMmUwYzQg MTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC90cmFwc19taXNhbGlnbmVkLmMKPiA+ ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYwo+ID4gQEAgLTIyLDE1 ICsyMiwxMSBAQAo+ID4KPiA+ICAjaWZkZWYgQ09ORklHX0ZQVQo+ID4KPiA+IC0jZGVmaW5lIEZQ X0dFVF9SRChpbnNuKSAgICAgICAgICAgICAgICAoaW5zbiA+PiA3ICYgMHgxRikKPiA+IC0KPiA+ ICBleHRlcm4gdm9pZCBwdXRfZjMyX3JlZyh1bnNpZ25lZCBsb25nIGZwX3JlZywgdW5zaWduZWQg bG9uZyB2YWx1ZSk7Cj4gPgo+ID4gLXN0YXRpYyBpbnQgc2V0X2YzMl9yZCh1bnNpZ25lZCBsb25n IGluc24sIHN0cnVjdCBwdF9yZWdzICpyZWdzLAo+ID4gK3N0YXRpYyBpbnQgc2V0X2YzMl9yZCh1 bnNpZ25lZCBsb25nIGZwX3JlZywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWwpCj4gPiAgewo+ID4gLSAgICAgICB1bnNpZ25l ZCBsb25nIGZwX3JlZyA9IEZQX0dFVF9SRChpbnNuKTsKPiA+IC0KPiA+ICAgICAgICAgcHV0X2Yz Ml9yZWcoZnBfcmVnLCB2YWwpOwo+ID4gICAgICAgICByZWdzLT5zdGF0dXMgfD0gU1JfRlNfRElS VFk7Cj4gPgo+ID4gQEAgLTM5LDkgKzM1LDggQEAgc3RhdGljIGludCBzZXRfZjMyX3JkKHVuc2ln bmVkIGxvbmcgaW5zbiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCj4gPgo+ID4gIGV4dGVybiB2b2lk IHB1dF9mNjRfcmVnKHVuc2lnbmVkIGxvbmcgZnBfcmVnLCB1bnNpZ25lZCBsb25nIHZhbHVlKTsK PiA+Cj4gPiAtc3RhdGljIGludCBzZXRfZjY0X3JkKHVuc2lnbmVkIGxvbmcgaW5zbiwgc3RydWN0 IHB0X3JlZ3MgKnJlZ3MsIHU2NCB2YWwpCj4gPiArc3RhdGljIGludCBzZXRfZjY0X3JkKHVuc2ln bmVkIGxvbmcgZnBfcmVnLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTY0IHZhbCkKPiA+ICB7Cj4g PiAtICAgICAgIHVuc2lnbmVkIGxvbmcgZnBfcmVnID0gRlBfR0VUX1JEKGluc24pOwo+ID4gICAg ICAgICB1bnNpZ25lZCBsb25nIHZhbHVlOwo+ID4KPiA+ICAjaWYgX19yaXNjdl94bGVuID09IDMy Cj4gPiBAQCAtNTgsMTAgKzUzLDggQEAgc3RhdGljIGludCBzZXRfZjY0X3JkKHVuc2lnbmVkIGxv bmcgaW5zbiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHU2NCB2YWwpCj4gPiAgI2lmIF9fcmlzY3Zf eGxlbiA9PSAzMgo+ID4gIGV4dGVybiB2b2lkIGdldF9mNjRfcmVnKHVuc2lnbmVkIGxvbmcgZnBf cmVnLCB1NjQgKnZhbHVlKTsKPiA+Cj4gPiAtc3RhdGljIHU2NCBnZXRfZjY0X3JzKHVuc2lnbmVk IGxvbmcgaW5zbiwgdTggZnBfcmVnX29mZnNldCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcHRfcmVncyAqcmVncykKPiA+ICtzdGF0aWMgdTY0IGdldF9mNjRfcnModW5zaWduZWQg bG9uZyBmcF9yZWcsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4gIHsKPiA+IC0gICAgICAgdW5z aWduZWQgbG9uZyBmcF9yZWcgPSAoaW5zbiA+PiBmcF9yZWdfb2Zmc2V0KSAmIDB4MUY7Cj4gPiAg ICAgICAgIHU2NCB2YWw7Cj4gPgo+ID4gICAgICAgICBnZXRfZjY0X3JlZyhmcF9yZWcsICZ2YWwp Owo+ID4gQEAgLTczLDEwICs2Niw4IEBAIHN0YXRpYyB1NjQgZ2V0X2Y2NF9ycyh1bnNpZ25lZCBs b25nIGluc24sIHU4IGZwX3JlZ19vZmZzZXQsCj4gPgo+ID4gIGV4dGVybiB1bnNpZ25lZCBsb25n IGdldF9mNjRfcmVnKHVuc2lnbmVkIGxvbmcgZnBfcmVnKTsKPiA+Cj4gPiAtc3RhdGljIHVuc2ln bmVkIGxvbmcgZ2V0X2Y2NF9ycyh1bnNpZ25lZCBsb25nIGluc24sIHU4IGZwX3JlZ19vZmZzZXQs Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdz KQo+ID4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9mNjRfcnModW5zaWduZWQgbG9uZyBmcF9y ZWcsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4gIHsKPiA+IC0gICAgICAgdW5zaWduZWQgbG9u ZyBmcF9yZWcgPSAoaW5zbiA+PiBmcF9yZWdfb2Zmc2V0KSAmIDB4MUY7Cj4gPiAgICAgICAgIHVu c2lnbmVkIGxvbmcgdmFsOwo+ID4KPiA+ICAgICAgICAgdmFsID0gZ2V0X2Y2NF9yZWcoZnBfcmVn KTsKPiA+IEBAIC04OSwxMCArODAsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfZjY0X3Jz KHVuc2lnbmVkIGxvbmcgaW5zbiwgdTggZnBfcmVnX29mZnNldCwKPiA+Cj4gPiAgZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZ2V0X2YzMl9yZWcodW5zaWduZWQgbG9uZyBmcF9yZWcpOwo+ID4KPiA+IC1z dGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfZjMyX3JzKHVuc2lnbmVkIGxvbmcgaW5zbiwgdTggZnBf cmVnX29mZnNldCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpCj4gPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0X2YzMl9ycyh1bnNpZ25l ZCBsb25nIGZwX3JlZywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gPiAgewo+ID4gLSAgICAgICB1 bnNpZ25lZCBsb25nIGZwX3JlZyA9IChpbnNuID4+IGZwX3JlZ19vZmZzZXQpICYgMHgxRjsKPiA+ ICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWw7Cj4gPgo+ID4gICAgICAgICB2YWwgPSBnZXRfZjMy X3JlZyhmcF9yZWcpOwo+ID4gQEAgLTEwNywyOCArOTYsMTggQEAgc3RhdGljIHZvaWQgc2V0X2Yz Ml9yZCh1bnNpZ25lZCBsb25nIGluc24sIHN0cnVjdCBwdF9yZWdzICpyZWdzLAo+ID4KPiA+ICBz dGF0aWMgdm9pZCBzZXRfZjY0X3JkKHVuc2lnbmVkIGxvbmcgaW5zbiwgc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIHU2NCB2YWwpIHt9Cj4gPgo+ID4gLXN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9mNjRf cnModW5zaWduZWQgbG9uZyBpbnNuLCB1OCBmcF9yZWdfb2Zmc2V0LAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKPiA+ICtzdGF0aWMgdW5z aWduZWQgbG9uZyBnZXRfZjY0X3JzKHVuc2lnbmVkIGxvbmcgZnBfcmVnLCBzdHJ1Y3QgcHRfcmVn cyAqcmVncykKPiA+ICB7Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3Rh dGljIHVuc2lnbmVkIGxvbmcgZ2V0X2YzMl9ycyh1bnNpZ25lZCBsb25nIGluc24sIHU4IGZwX3Jl Z19vZmZzZXQsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwdF9y ZWdzICpyZWdzKQo+ID4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9mMzJfcnModW5zaWduZWQg bG9uZyBmcF9yZWcsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4gIHsKPiA+ICAgICAgICAgcmV0 dXJuIDA7Cj4gPiAgfQo+ID4KPiA+ICAjZW5kaWYKPiA+Cj4gPiAtI2RlZmluZSBHRVRfRjY0X1JT MihpbnNuLCByZWdzKSAoZ2V0X2Y2NF9ycyhpbnNuLCAyMCwgcmVncykpCj4gPiAtI2RlZmluZSBH RVRfRjY0X1JTMkMoaW5zbiwgcmVncykgKGdldF9mNjRfcnMoaW5zbiwgMiwgcmVncykpCj4gPiAt I2RlZmluZSBHRVRfRjY0X1JTMlMoaW5zbiwgcmVncykgKGdldF9mNjRfcnMoUlZDX1JTMlMoaW5z biksIDAsIHJlZ3MpKQo+ID4gLQo+ID4gLSNkZWZpbmUgR0VUX0YzMl9SUzIoaW5zbiwgcmVncykg KGdldF9mMzJfcnMoaW5zbiwgMjAsIHJlZ3MpKQo+ID4gLSNkZWZpbmUgR0VUX0YzMl9SUzJDKGlu c24sIHJlZ3MpIChnZXRfZjMyX3JzKGluc24sIDIsIHJlZ3MpKQo+ID4gLSNkZWZpbmUgR0VUX0Yz Ml9SUzJTKGluc24sIHJlZ3MpIChnZXRfZjMyX3JzKFJWQ19SUzJTKGluc24pLCAwLCByZWdzKSkK PiA+IC0KPiA+ICAjZGVmaW5lIF9fcmVhZF9pbnNuKHJlZ3MsIGluc24sIGluc25fYWRkciwgdHlw ZSkgICAgICAgXAo+ID4gICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gPiAgICAgICAgIGludCBfX3JldDsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiA+IEBAIC0yMTcsMTMgKzE5NiwxMyBAQCBzdGF0aWMgaW50 IGhhbmRsZV92ZWN0b3JfbWlzYWxpZ25lZF9sb2FkKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4g IH0KPiA+ICAjZW5kaWYKPiA+Cj4gPiAtc3RhdGljIGludCBoYW5kbGVfc2NhbGFyX21pc2FsaWdu ZWRfbG9hZChzdHJ1Y3QgcHRfcmVncyAqcmVncykKPiA+ICtzdGF0aWMgbm9pbmxpbmUgaW50IGhh bmRsZV9zY2FsYXJfbWlzYWxpZ25lZF9sb2FkKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4gIHsK PiA+ICAgICAgICAgdW5pb24gcmVnX2RhdGEgdmFsOwo+ID4gICAgICAgICB1bnNpZ25lZCBsb25n IGVwYyA9IHJlZ3MtPmVwYzsKPiA+ICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnNuOwo+ID4gICAg ICAgICB1bnNpZ25lZCBsb25nIGFkZHIgPSByZWdzLT5iYWRhZGRyOwo+ID4gLSAgICAgICBpbnQg ZnAgPSAwLCBzaGlmdCA9IDAsIGxlbiA9IDA7Cj4gPiArICAgICAgIGludCBmcCA9IDAsIHNoaWZ0 ID0gMCwgbGVuID0gMCwgcmQgPSAwOwo+ID4KPiA+ICAgICAgICAgcGVyZl9zd19ldmVudChQRVJG X0NPVU5UX1NXX0FMSUdOTUVOVF9GQVVMVFMsIDEsIHJlZ3MsIGFkZHIpOwo+ID4KPiA+IEBAIC0y NDAsNjggKzIxOSw3MSBAQCBzdGF0aWMgaW50IGhhbmRsZV9zY2FsYXJfbWlzYWxpZ25lZF9sb2Fk KHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4KPiA+ICAgICAgICAgcmVncy0+ZXBjID0gMDsKPiA+ Cj4gPiAtICAgICAgIGlmICgoaW5zbiAmIElOU05fTUFTS19MVykgPT0gSU5TTl9NQVRDSF9MVykg ewo+ID4gKyAgICAgICBpZiAocmlzY3ZfaW5zbl9pc19sdyhpbnNuKSkgewo+ID4gICAgICAgICAg ICAgICAgIGxlbiA9IDQ7Cj4gPiAgICAgICAgICAgICAgICAgc2hpZnQgPSA4ICogKHNpemVvZih1 bnNpZ25lZCBsb25nKSAtIGxlbik7Cj4gPiAtI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKQo+ID4g LSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX0xEKSA9PSBJTlNOX01BVENIX0xE KSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX2x3X2V4dHJhY3RfeGQoaW5z bik7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAocmlzY3ZfaW5zbl9pc19sZChpbnNuKSkgewo+ID4g ICAgICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAgICAgICAgICAgICAgICAgc2hpZnQgPSA4ICog KHNpemVvZih1bnNpZ25lZCBsb25nKSAtIGxlbik7Cj4gPiAtICAgICAgIH0gZWxzZSBpZiAoKGlu c24gJiBJTlNOX01BU0tfTFdVKSA9PSBJTlNOX01BVENIX0xXVSkgewo+ID4gKyAgICAgICAgICAg ICAgIHJkID0gcmlzY3ZfaW5zbl9sZF9leHRyYWN0X3hkKGluc24pOwo+ID4gKyAgICAgICB9IGVs c2UgaWYgKHJpc2N2X2luc25faXNfbHd1KGluc24pKSB7Cj4gPiAgICAgICAgICAgICAgICAgbGVu ID0gNDsKPiA+IC0jZW5kaWYKPiA+IC0gICAgICAgfSBlbHNlIGlmICgoaW5zbiAmIElOU05fTUFT S19GTEQpID09IElOU05fTUFUQ0hfRkxEKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNj dl9pbnNuX2x3dV9leHRyYWN0X3hkKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2 X2luc25faXNfZmxkKGluc24pKSB7Cj4gPiAgICAgICAgICAgICAgICAgZnAgPSAxOwo+ID4gICAg ICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAtICAgICAgIH0gZWxzZSBpZiAoKGluc24gJiBJTlNO X01BU0tfRkxXKSA9PSBJTlNOX01BVENIX0ZMVykgewo+ID4gKyAgICAgICAgICAgICAgIHJkID0g cmlzY3ZfaW5zbl9mbGRfZXh0cmFjdF9mZChpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChy aXNjdl9pbnNuX2lzX2ZsdyhpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIGZwID0gMTsKPiA+ ICAgICAgICAgICAgICAgICBsZW4gPSA0Owo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYg SU5TTl9NQVNLX0xIKSA9PSBJTlNOX01BVENIX0xIKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQg PSByaXNjdl9pbnNuX2Zsd19leHRyYWN0X2ZkKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYg KHJpc2N2X2luc25faXNfbGgoaW5zbikpIHsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSAyOwo+ ID4gICAgICAgICAgICAgICAgIHNoaWZ0ID0gOCAqIChzaXplb2YodW5zaWduZWQgbG9uZykgLSBs ZW4pOwo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX0xIVSkgPT0gSU5T Tl9NQVRDSF9MSFUpIHsKPiA+ICsgICAgICAgICAgICAgICByZCA9IHJpc2N2X2luc25fbGhfZXh0 cmFjdF94ZChpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2xodShp bnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDI7Cj4gPiAtI2lmIGRlZmluZWQoQ09O RklHXzY0QklUKQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX0NfTEQp ID09IElOU05fTUFUQ0hfQ19MRCkgewo+ID4gKyAgICAgICAgICAgICAgIHJkID0gcmlzY3ZfaW5z bl9saHVfZXh0cmFjdF94ZChpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNu X2lzX2NfbGQoaW5zbikpIHsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSA4Owo+ID4gICAgICAg ICAgICAgICAgIHNoaWZ0ID0gOCAqIChzaXplb2YodW5zaWduZWQgbG9uZykgLSBsZW4pOwo+ID4g LSAgICAgICAgICAgICAgIGluc24gPSBSVkNfUlMyUyhpbnNuKSA8PCBTSF9SRDsKPiA+IC0gICAg ICAgfSBlbHNlIGlmICgoaW5zbiAmIElOU05fTUFTS19DX0xEU1ApID09IElOU05fTUFUQ0hfQ19M RFNQICYmCj4gPiAtICAgICAgICAgICAgICAgICAgKChpbnNuID4+IFNIX1JEKSAmIDB4MWYpKSB7 Cj4gPiArICAgICAgICAgICAgICAgcmQgPSAoOCArIHJpc2N2X2luc25fY19sZF9leHRyYWN0X3hk KGluc24pKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2NfbGRzcChpbnNu KSkgewo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAgICAgICAgICAgICAgICAgc2hp ZnQgPSA4ICogKHNpemVvZih1bnNpZ25lZCBsb25nKSAtIGxlbik7Cj4gPiAtI2VuZGlmCj4gPiAt ICAgICAgIH0gZWxzZSBpZiAoKGluc24gJiBJTlNOX01BU0tfQ19MVykgPT0gSU5TTl9NQVRDSF9D X0xXKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX2NfbGRzcF9leHRyYWN0 X3hkKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY19sdyhpbnNu KSkgewo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDQ7Cj4gPiAgICAgICAgICAgICAgICAgc2hp ZnQgPSA4ICogKHNpemVvZih1bnNpZ25lZCBsb25nKSAtIGxlbik7Cj4gPiAtICAgICAgICAgICAg ICAgaW5zbiA9IFJWQ19SUzJTKGluc24pIDw8IFNIX1JEOwo+ID4gLSAgICAgICB9IGVsc2UgaWYg KChpbnNuICYgSU5TTl9NQVNLX0NfTFdTUCkgPT0gSU5TTl9NQVRDSF9DX0xXU1AgJiYKPiA+IC0g ICAgICAgICAgICAgICAgICAoKGluc24gPj4gU0hfUkQpICYgMHgxZikpIHsKPiA+ICsgICAgICAg ICAgICAgICByZCA9ICg4ICsgcmlzY3ZfaW5zbl9jX2x3X2V4dHJhY3RfeGQoaW5zbikpOwo+ID4g KyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY19sd3NwKGluc24pKSB7Cj4gPiAgICAg ICAgICAgICAgICAgbGVuID0gNDsKPiA+ICAgICAgICAgICAgICAgICBzaGlmdCA9IDggKiAoc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpIC0gbGVuKTsKPiA+IC0gICAgICAgfSBlbHNlIGlmICgoaW5zbiAm IElOU05fTUFTS19DX0ZMRCkgPT0gSU5TTl9NQVRDSF9DX0ZMRCkgewo+ID4gKyAgICAgICAgICAg ICAgIHJkID0gcmlzY3ZfaW5zbl9jX2x3c3BfZXh0cmFjdF94ZChpbnNuKTsKPiA+ICsgICAgICAg fSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2NfZmxkKGluc24pKSB7Cj4gPiAgICAgICAgICAgICAg ICAgZnAgPSAxOwo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAtICAgICAgICAgICAg ICAgaW5zbiA9IFJWQ19SUzJTKGluc24pIDw8IFNIX1JEOwo+ID4gLSAgICAgICB9IGVsc2UgaWYg KChpbnNuICYgSU5TTl9NQVNLX0NfRkxEU1ApID09IElOU05fTUFUQ0hfQ19GTERTUCkgewo+ID4g KyAgICAgICAgICAgICAgIHJkID0gKDggKyByaXNjdl9pbnNuX2NfZmxkX2V4dHJhY3RfZmQoaW5z bikpOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY19mbGRzcChpbnNuKSkg ewo+ID4gICAgICAgICAgICAgICAgIGZwID0gMTsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSA4 Owo+ID4gLSNpZiBkZWZpbmVkKENPTkZJR18zMkJJVCkKPiA+IC0gICAgICAgfSBlbHNlIGlmICgo aW5zbiAmIElOU05fTUFTS19DX0ZMVykgPT0gSU5TTl9NQVRDSF9DX0ZMVykgewo+ID4gKyAgICAg ICAgICAgICAgIHJkID0gcmlzY3ZfaW5zbl9jX2ZsZHNwX2V4dHJhY3RfZmQoaW5zbik7Cj4gPiAr ICAgICAgIH0gZWxzZSBpZiAocmlzY3ZfaW5zbl9pc19jX2ZsdyhpbnNuKSkgewo+ID4gICAgICAg ICAgICAgICAgIGZwID0gMTsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSA0Owo+ID4gLSAgICAg ICAgICAgICAgIGluc24gPSBSVkNfUlMyUyhpbnNuKSA8PCBTSF9SRDsKPiA+IC0gICAgICAgfSBl bHNlIGlmICgoaW5zbiAmIElOU05fTUFTS19DX0ZMV1NQKSA9PSBJTlNOX01BVENIX0NfRkxXU1Ap IHsKPiA+ICsgICAgICAgICAgICAgICByZCA9ICg4ICsgcmlzY3ZfaW5zbl9jX2Zsd19leHRyYWN0 X2ZkKGluc24pKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2NfZmx3c3Ao aW5zbikpIHsKPiA+ICAgICAgICAgICAgICAgICBmcCA9IDE7Cj4gPiAgICAgICAgICAgICAgICAg bGVuID0gNDsKPiA+IC0jZW5kaWYKPiA+IC0gICAgICAgfSBlbHNlIGlmICgoaW5zbiAmIElOU05f TUFTS19DX0xIVSkgPT0gSU5TTl9NQVRDSF9DX0xIVSkgewo+ID4gKyAgICAgICAgICAgICAgIHJk ID0gcmlzY3ZfaW5zbl9jX2Zsd3NwX2V4dHJhY3RfZmQoaW5zbik7Cj4gPiArICAgICAgIH0gZWxz ZSBpZiAocmlzY3ZfaW5zbl9pc19jX2xodShpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIGxl biA9IDI7Cj4gPiAtICAgICAgICAgICAgICAgaW5zbiA9IFJWQ19SUzJTKGluc24pIDw8IFNIX1JE Owo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX0NfTEgpID09IElOU05f TUFUQ0hfQ19MSCkgewo+ID4gKyAgICAgICAgICAgICAgIHJkID0gKDggKyByaXNjdl9pbnNuX2Nf bGh1X2V4dHJhY3RfeGQoaW5zbikpOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25f aXNfY19saChpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDI7Cj4gPiAtICAgICAg ICAgICAgICAgc2hpZnQgPSA4ICogKHNpemVvZih1bG9uZykgLSBsZW4pOwo+ID4gLSAgICAgICAg ICAgICAgIGluc24gPSBSVkNfUlMyUyhpbnNuKSA8PCBTSF9SRDsKPiA+ICsgICAgICAgICAgICAg ICBzaGlmdCA9IDggKiAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gbGVuKTsKPiA+ICsgICAgICAg ICAgICAgICByZCA9ICg4ICsgcmlzY3ZfaW5zbl9jX2xoX2V4dHJhY3RfeGQoaW5zbikpOwo+ID4g ICAgICAgICB9IGVsc2Ugewo+ID4gICAgICAgICAgICAgICAgIHJlZ3MtPmVwYyA9IGVwYzsKPiA+ ICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gPiBAQCAtMzE5LDExICszMDEsMTEgQEAgc3Rh dGljIGludCBoYW5kbGVfc2NhbGFyX21pc2FsaWduZWRfbG9hZChzdHJ1Y3QgcHRfcmVncyAqcmVn cykKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKCFmcCkKPiA+IC0gICAgICAgICAg ICAgICBTRVRfUkQoaW5zbiwgcmVncywgKGxvbmcpKHZhbC5kYXRhX3Vsb25nIDw8IHNoaWZ0KSA+ PiBzaGlmdCk7Cj4gPiArICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopKCh1bnNpZ25l ZCBsb25nICopcmVncyArIHJkKSA9IHZhbC5kYXRhX3Vsb25nIDw8IHNoaWZ0Owo+ID4gICAgICAg ICBlbHNlIGlmIChsZW4gPT0gOCkKPiA+IC0gICAgICAgICAgICAgICBzZXRfZjY0X3JkKGluc24s IHJlZ3MsIHZhbC5kYXRhX3U2NCk7Cj4gPiArICAgICAgICAgICAgICAgc2V0X2Y2NF9yZChyZCwg cmVncywgdmFsLmRhdGFfdTY0KTsKPiA+ICAgICAgICAgZWxzZQo+ID4gLSAgICAgICAgICAgICAg IHNldF9mMzJfcmQoaW5zbiwgcmVncywgdmFsLmRhdGFfdWxvbmcpOwo+ID4gKyAgICAgICAgICAg ICAgIHNldF9mMzJfcmQocmQsIHJlZ3MsIHZhbC5kYXRhX3Vsb25nKTsKPiA+Cj4gPiAgICAgICAg IHJlZ3MtPmVwYyA9IGVwYyArIElOU05fTEVOKGluc24pOwo+ID4KPiA+IEBAIC0zMzYsNyArMzE4 LDcgQEAgc3RhdGljIGludCBoYW5kbGVfc2NhbGFyX21pc2FsaWduZWRfc3RvcmUoc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpCj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZXBjID0gcmVncy0+ZXBjOwo+ ID4gICAgICAgICB1bnNpZ25lZCBsb25nIGluc247Cj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcg YWRkciA9IHJlZ3MtPmJhZGFkZHI7Cj4gPiAtICAgICAgIGludCBsZW4gPSAwLCBmcCA9IDA7Cj4g PiArICAgICAgIGludCBmcCA9IDAsIGxlbiA9IDAsIHJkID0gMDsKPiA+Cj4gPiAgICAgICAgIHBl cmZfc3dfZXZlbnQoUEVSRl9DT1VOVF9TV19BTElHTk1FTlRfRkFVTFRTLCAxLCByZWdzLCBhZGRy KTsKPiA+Cj4gPiBAQCAtMzUxLDY3ICszMzMsNjggQEAgc3RhdGljIGludCBoYW5kbGVfc2NhbGFy X21pc2FsaWduZWRfc3RvcmUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gPgo+ID4gICAgICAgICBy ZWdzLT5lcGMgPSAwOwo+ID4KPiA+IC0gICAgICAgdmFsLmRhdGFfdWxvbmcgPSBHRVRfUlMyKGlu c24sIHJlZ3MpOwo+ID4gLQo+ID4gLSAgICAgICBpZiAoKGluc24gJiBJTlNOX01BU0tfU1cpID09 IElOU05fTUFUQ0hfU1cpIHsKPiA+ICsgICAgICAgaWYgKHJpc2N2X2luc25faXNfc3coaW5zbikp IHsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSA0Owo+ID4gLSNpZiBkZWZpbmVkKENPTkZJR182 NEJJVCkKPiA+IC0gICAgICAgfSBlbHNlIGlmICgoaW5zbiAmIElOU05fTUFTS19TRCkgPT0gSU5T Tl9NQVRDSF9TRCkgewo+ID4gKyAgICAgICAgICAgICAgIHJkID0gcmlzY3ZfaW5zbl9zd19leHRy YWN0X3hzMihpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX3NkKGlu c24pKSB7Cj4gPiAgICAgICAgICAgICAgICAgbGVuID0gODsKPiA+IC0jZW5kaWYKPiA+IC0gICAg ICAgfSBlbHNlIGlmICgoaW5zbiAmIElOU05fTUFTS19GU0QpID09IElOU05fTUFUQ0hfRlNEKSB7 Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX3NkX2V4dHJhY3RfeHMyKGluc24p Owo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfZnNkKGluc24pKSB7Cj4gPiAg ICAgICAgICAgICAgICAgZnAgPSAxOwo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAt ICAgICAgICAgICAgICAgdmFsLmRhdGFfdTY0ID0gR0VUX0Y2NF9SUzIoaW5zbiwgcmVncyk7Cj4g PiAtICAgICAgIH0gZWxzZSBpZiAoKGluc24gJiBJTlNOX01BU0tfRlNXKSA9PSBJTlNOX01BVENI X0ZTVykgewo+ID4gKyAgICAgICAgICAgICAgIHJkID0gcmlzY3ZfaW5zbl9mc2RfZXh0cmFjdF9m czIoaW5zbik7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAocmlzY3ZfaW5zbl9pc19mc3coaW5zbikp IHsKPiA+ICAgICAgICAgICAgICAgICBmcCA9IDE7Cj4gPiAgICAgICAgICAgICAgICAgbGVuID0g NDsKPiA+IC0gICAgICAgICAgICAgICB2YWwuZGF0YV91bG9uZyA9IEdFVF9GMzJfUlMyKGluc24s IHJlZ3MpOwo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX1NIKSA9PSBJ TlNOX01BVENIX1NIKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX2Zzd19l eHRyYWN0X2ZzMihpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX3No KGluc24pKSB7Cj4gPiAgICAgICAgICAgICAgICAgbGVuID0gMjsKPiA+IC0jaWYgZGVmaW5lZChD T05GSUdfNjRCSVQpCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoKGluc24gJiBJTlNOX01BU0tfQ19T RCkgPT0gSU5TTl9NQVRDSF9DX1NEKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9p bnNuX3NoX2V4dHJhY3RfeHMyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2lu c25faXNfY19zZChpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAtICAg ICAgICAgICAgICAgdmFsLmRhdGFfdWxvbmcgPSBHRVRfUlMyUyhpbnNuLCByZWdzKTsKPiA+IC0g ICAgICAgfSBlbHNlIGlmICgoaW5zbiAmIElOU05fTUFTS19DX1NEU1ApID09IElOU05fTUFUQ0hf Q19TRFNQKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX2Nfc2RfZXh0cmFj dF94czIoaW5zbik7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAocmlzY3ZfaW5zbl9pc19jX3Nkc3Ao aW5zbikpIHsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSA4Owo+ID4gLSAgICAgICAgICAgICAg IHZhbC5kYXRhX3Vsb25nID0gR0VUX1JTMkMoaW5zbiwgcmVncyk7Cj4gPiAtI2VuZGlmCj4gPiAt ICAgICAgIH0gZWxzZSBpZiAoKGluc24gJiBJTlNOX01BU0tfQ19TVykgPT0gSU5TTl9NQVRDSF9D X1NXKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX2Nfc2RzcF9leHRyYWN0 X3hzMihpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2Nfc3coaW5z bikpIHsKPiA+ICAgICAgICAgICAgICAgICBsZW4gPSA0Owo+ID4gLSAgICAgICAgICAgICAgIHZh bC5kYXRhX3Vsb25nID0gR0VUX1JTMlMoaW5zbiwgcmVncyk7Cj4gPiAtICAgICAgIH0gZWxzZSBp ZiAoKGluc24gJiBJTlNOX01BU0tfQ19TV1NQKSA9PSBJTlNOX01BVENIX0NfU1dTUCkgewo+ID4g KyAgICAgICAgICAgICAgIHJkID0gcmlzY3ZfaW5zbl9jX3N3X2V4dHJhY3RfeHMyKGluc24pOwo+ ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY19zd3NwKGluc24pKSB7Cj4gPiAg ICAgICAgICAgICAgICAgbGVuID0gNDsKPiA+IC0gICAgICAgICAgICAgICB2YWwuZGF0YV91bG9u ZyA9IEdFVF9SUzJDKGluc24sIHJlZ3MpOwo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNuICYg SU5TTl9NQVNLX0NfRlNEKSA9PSBJTlNOX01BVENIX0NfRlNEKSB7Cj4gPiArICAgICAgICAgICAg ICAgcmQgPSByaXNjdl9pbnNuX2Nfc3dzcF9leHRyYWN0X3hzMihpbnNuKTsKPiA+ICsgICAgICAg fSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2NfZnNkKGluc24pKSB7Cj4gPiAgICAgICAgICAgICAg ICAgZnAgPSAxOwo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDg7Cj4gPiAtICAgICAgICAgICAg ICAgdmFsLmRhdGFfdTY0ID0gR0VUX0Y2NF9SUzJTKGluc24sIHJlZ3MpOwo+ID4gLSAgICAgICB9 IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX0NfRlNEU1ApID09IElOU05fTUFUQ0hfQ19GU0RT UCkgewo+ID4gKyAgICAgICAgICAgICAgIHJkID0gcmlzY3ZfaW5zbl9jX2ZzZF9leHRyYWN0X2Zz MihpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2NfZnNkc3AoaW5z bikpIHsKPiA+ICAgICAgICAgICAgICAgICBmcCA9IDE7Cj4gPiAgICAgICAgICAgICAgICAgbGVu ID0gODsKPiA+IC0gICAgICAgICAgICAgICB2YWwuZGF0YV91NjQgPSBHRVRfRjY0X1JTMkMoaW5z biwgcmVncyk7Cj4gPiAtI2lmICFkZWZpbmVkKENPTkZJR182NEJJVCkKPiAKPiBTaG91bGRuJ3Qg d2Uga2VlcCB0aGlzPwoKVGhlIGlmZGVmIGRvZXNuJ3QgbWF0dGVyIGFueW1vcmUgYmVjYXVzZSB0 aGUgbmV3IHJpc2N2X2luc25faXNfKigpIGhhdmUKYXJlIGFsbCBpZmRlZidkIG91dCBzbyB1bmNv bmRpdGlvbmFsbHkgcmV0dXJuIGZhbHNlIGlmIHRoZXkgYXJlIG5vdApzdXBwb3J0ZWQgb24gQ09O RklHXzY0QklUL0NPTkZJR18zMkJJVC4KCj4gCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoKGluc24g JiBJTlNOX01BU0tfQ19GU1cpID09IElOU05fTUFUQ0hfQ19GU1cpIHsKPiA+ICsgICAgICAgICAg ICAgICByZCA9IHJpc2N2X2luc25fY19mc2RzcF9leHRyYWN0X2ZzMihpbnNuKTsKPiA+ICsgICAg ICAgfSBlbHNlIGlmIChyaXNjdl9pbnNuX2lzX2NfZnN3KGluc24pKSB7Cj4gPiAgICAgICAgICAg ICAgICAgZnAgPSAxOwo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IDQ7Cj4gPiAtICAgICAgICAg ICAgICAgdmFsLmRhdGFfdWxvbmcgPSBHRVRfRjMyX1JTMlMoaW5zbiwgcmVncyk7Cj4gPiAtICAg ICAgIH0gZWxzZSBpZiAoKGluc24gJiBJTlNOX01BU0tfQ19GU1dTUCkgPT0gSU5TTl9NQVRDSF9D X0ZTV1NQKSB7Cj4gPiArICAgICAgICAgICAgICAgcmQgPSByaXNjdl9pbnNuX2NfZnN3X2V4dHJh Y3RfZnMyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY19mc3dz cChpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIGZwID0gMTsKPiA+ICAgICAgICAgICAgICAg ICBsZW4gPSA0Owo+ID4gLSAgICAgICAgICAgICAgIHZhbC5kYXRhX3Vsb25nID0gR0VUX0YzMl9S UzJDKGluc24sIHJlZ3MpOwo+ID4gLSNlbmRpZgo+ID4gLSAgICAgICB9IGVsc2UgaWYgKChpbnNu ICYgSU5TTl9NQVNLX0NfU0gpID09IElOU05fTUFUQ0hfQ19TSCkgewo+ID4gKyAgICAgICAgICAg ICAgIHJkID0gcmlzY3ZfaW5zbl9jX2Zzd3NwX2V4dHJhY3RfZnMyKGluc24pOwo+ID4gKyAgICAg ICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY19zaChpbnNuKSkgewo+ID4gICAgICAgICAgICAg ICAgIGxlbiA9IDI7Cj4gPiAtICAgICAgICAgICAgICAgdmFsLmRhdGFfdWxvbmcgPSBHRVRfUlMy UyhpbnNuLCByZWdzKTsKPiA+ICsgICAgICAgICAgICAgICByZCA9IHJpc2N2X2luc25fY19zaF9l eHRyYWN0X3hzMihpbnNuKTsKPiA+ICAgICAgICAgfSBlbHNlIHsKPiA+IC0gICAgICAgICAgICAg ICByZWdzLT5lcGMgPSBlcGM7Cj4gCj4gVGhpcyBsaW5lIHNob3VsZCBiZSBrZXB0LgoKT2ggaHVo IEkgd29uZGVyIHdoeSBJIGdvdCByaWQgb2YgdGhpcy4gR29vZCBjYXRjaCwgdGhhbmsgeW91IQoK LSBDaGFybGllCgo+IAo+IFRoYW5rcywKPiBKZXNzZSBUYXViZQo+IAo+ID4gICAgICAgICAgICAg ICAgIHJldHVybiAtMTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKCFJU19FTkFC TEVEKENPTkZJR19GUFUpICYmIGZwKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9U U1VQUDsKPiA+Cj4gPiArICAgICAgIGlmICghZnApCj4gPiArICAgICAgICAgICAgICAgdmFsLmRh dGFfdWxvbmcgPSAqKHVuc2lnbmVkIGxvbmcgKikoKHVuc2lnbmVkIGxvbmcgKilyZWdzICsgcmQp Owo+ID4gKyAgICAgICBlbHNlIGlmIChsZW4gPT0gOCkKPiA+ICsgICAgICAgICAgICAgICB2YWwu ZGF0YV91NjQgPSBnZXRfZjY0X3JzKHJkLCByZWdzKTsKPiA+ICsgICAgICAgZWxzZQo+ID4gKyAg ICAgICAgICAgICAgIHZhbC5kYXRhX3Vsb25nID0gZ2V0X2YzMl9ycyhyZCwgcmVncyk7Cj4gPiAr Cj4gPiAgICAgICAgIGlmICh1c2VyX21vZGUocmVncykpIHsKPiA+ICAgICAgICAgICAgICAgICBp ZiAoY29weV90b191c2VyKCh1OCBfX3VzZXIgKilhZGRyLCAmdmFsLCBsZW4pKQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+ID4KPiA+IC0tCj4gPiAyLjU0LjAKPiA+Cj4g Pgo+ID4KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gPiBsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKPiA+IGxpbnV4LXJpc2N2QGxpc3RzLmluZnJh ZGVhZC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtcmlzY3YKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlz Y3YK