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 47353C46CD2 for ; Tue, 2 Jan 2024 06:50:59 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Gj1t9GGZBV1zIfQyMpjzw4MXme1FmY2ilZY/jYhnuRk=; b=v5WQqH6jhtKrmN vi+sWOfxRWGISBUYvgD7qR0BDfdRVKTJdTyzWWQ2+nRWefD1PCc+2MEbTRD/RuHxmEY29L+DRRwvf cicZQv8gogeAlE5WKa+jjRqrxRxOGXscTdBhQzz4GX/LGylAHsvLGq/1LTlNtP0ZG2FwDjgmpLR2Z ZM3AWwN9W9Bnf9VY+GjZJhDU4SONXZy8ST6Q27PeQS+tHYe7yz9+LzUfA3mb+OYU6Na1flD3BYI/b d3aVkXXibavZC6/MvrcbtJnO1qYOk9MTfRWLgdlw0Z51leibESdescVrewgOj3OwmuNkgr/pXH0Gc ibQim2tQK6ZlLcwGiJsw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rKYbz-007CaN-2T; Tue, 02 Jan 2024 06:50:51 +0000 Received: from sin.source.kernel.org ([145.40.73.55]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rKYbs-007CQu-14 for linux-riscv@lists.infradead.org; Tue, 02 Jan 2024 06:50:48 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 2A740CE0B8A; Tue, 2 Jan 2024 06:50:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 910FDC433CC; Tue, 2 Jan 2024 06:50:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704178241; bh=ND9Tv7H6FJIXTYm2p0CmtFR+DV+u8u1ZvhgPdvx4ufo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WT/Vo8V9vq2qzHAipvEGbPzGkblpLDLfthoMXbDqJOBh7R3yyaNURZoDDM0+I13ZS xRjWLX8VhChMw6BNZu4X7+78KCiPQJo0Pm4T+QoHZdq2d1OMI4Y5HksqaSDVxADvB4 gXTm92I6RIJvf+yvEmP0GhsIsbgEYCfh8peQs5N4PP91gV2Xifc2rvylG6Gih9q/M1 UqgmtpeRurSkNdRnBwp05dCCygAFKMeArVn1TyhjaaNEFeLPwGlR80mRVZbgyJhMhX evas9C+IE2sOOHz5q6efiQ5aVns6EdnUTnPZmf886g3X8nMFli2JHSdLYPAEdMPg1e hBTYd+Ch4Dq8g== From: Eric Biggers To: linux-crypto@vger.kernel.org, linux-riscv@lists.infradead.org, Jerry Shih Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel , Heiko Stuebner , Phoebe Chen , hongrong.hsu@sifive.com, Paul Walmsley , Palmer Dabbelt , Albert Ou , Andy Chiu , Charalampos Mitrodimas , Heiko Stuebner Subject: [RFC PATCH 10/13] crypto: riscv - add vector crypto accelerated SHA-{256,224} Date: Tue, 2 Jan 2024 00:47:36 -0600 Message-ID: <20240102064743.220490-11-ebiggers@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240102064743.220490-1-ebiggers@kernel.org> References: <20240102064743.220490-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240101_225044_833021_805B6932 X-CRM114-Status: GOOD ( 31.06 ) 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 RnJvbTogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgoKQWRkIGFuIGltcGxlbWVu dGF0aW9uIG9mIFNIQS0yMjQgYW5kIFNIQS0yNTYgdXNpbmcgdGhlIFp2a25oYSBvciBadmtuaGIK ZXh0ZW5zaW9uLiAgVGhlIGFzc2VtYmx5IGNvZGUgaXMgZGVyaXZlZCBmcm9tIE9wZW5TU0wgY29k ZQoob3BlbnNzbC9vcGVuc3NsIzIxOTIzKSB0aGF0IHdhcyBkdWFsLWxpY2Vuc2VkIHNvIHRoYXQg aXQgY291bGQgYmUKcmV1c2VkIGluIHRoZSBrZXJuZWwuICBOZXZlcnRoZWxlc3MsIHRoZSBhc3Nl bWJseSBoYXMgYmVlbiBzaWduaWZpY2FudGx5CnJld29ya2VkIGZvciBpbnRlZ3JhdGlvbiB3aXRo IHRoZSBrZXJuZWwsIGZvciBleGFtcGxlIGJ5IHVzaW5nIGEgcmVndWxhcgouUyBmaWxlIGluc3Rl YWQgb2YgdGhlIHNvLWNhbGxlZCBwZXJsYXNtLCB1c2luZyB0aGUgYXNzZW1ibGVyIGluc3RlYWQg b2YKYmFyZSAnLmluc3QnLCBhbmQgZ3JlYXRseSByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uLgoK Q28tZGV2ZWxvcGVkLWJ5OiBDaGFyYWxhbXBvcyBNaXRyb2RpbWFzIDxjaGFyYWxhbXBvcy5taXRy b2RpbWFzQHZydWxsLmV1PgpTaWduZWQtb2ZmLWJ5OiBDaGFyYWxhbXBvcyBNaXRyb2RpbWFzIDxj aGFyYWxhbXBvcy5taXRyb2RpbWFzQHZydWxsLmV1PgpDby1kZXZlbG9wZWQtYnk6IEhlaWtvIFN0 dWVibmVyIDxoZWlrby5zdHVlYm5lckB2cnVsbC5ldT4KU2lnbmVkLW9mZi1ieTogSGVpa28gU3R1 ZWJuZXIgPGhlaWtvLnN0dWVibmVyQHZydWxsLmV1PgpDby1kZXZlbG9wZWQtYnk6IFBob2ViZSBD aGVuIDxwaG9lYmUuY2hlbkBzaWZpdmUuY29tPgpTaWduZWQtb2ZmLWJ5OiBQaG9lYmUgQ2hlbiA8 cGhvZWJlLmNoZW5Ac2lmaXZlLmNvbT4KU2lnbmVkLW9mZi1ieTogSmVycnkgU2hpaCA8amVycnku c2hpaEBzaWZpdmUuY29tPgpDby1kZXZlbG9wZWQtYnk6IEVyaWMgQmlnZ2VycyA8ZWJpZ2dlcnNA Z29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bnb29nbGUu Y29tPgotLS0KIGFyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8 ICAxMSArCiBhcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAg IDMgKwogYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2NjQtZ2x1ZS5jICAgICAgIHwgMTM3 ICsrKysrKysrKysrCiAuLi4vc2hhMjU2LXJpc2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiLlMg ICAgfCAyMjUgKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2 NjQtZ2x1ZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJp c2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiLlMKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2Ny eXB0by9LY29uZmlnIGIvYXJjaC9yaXNjdi9jcnlwdG8vS2NvbmZpZwppbmRleCA1NzM4MThiYjNl Njc3Li41MzNiYzZkZWYxMjNhIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmln CisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcKQEAgLTQ3LDExICs0NywyMiBAQCBjb25m aWcgQ1JZUFRPX0NIQUNIQV9SSVNDVjY0CiBjb25maWcgQ1JZUFRPX0dIQVNIX1JJU0NWNjQKIAl0 cmlzdGF0ZSAiSGFzaCBmdW5jdGlvbnM6IEdIQVNIIgogCWRlcGVuZHMgb24gNjRCSVQgJiYgUklT Q1ZfSVNBX1YgJiYgVE9PTENIQUlOX0hBU19WRUNUT1JfQ1JZUFRPCiAJc2VsZWN0IENSWVBUT19H Q00KIAloZWxwCiAJICBHQ00gR0hBU0ggZnVuY3Rpb24gKE5JU1QgU1AgODAwLTM4RCkKIAogCSAg QXJjaGl0ZWN0dXJlOiByaXNjdjY0IHVzaW5nOgogCSAgLSBadmtnIHZlY3RvciBjcnlwdG8gZXh0 ZW5zaW9uCiAKK2NvbmZpZyBDUllQVE9fU0hBMjU2X1JJU0NWNjQKKwl0cmlzdGF0ZSAiSGFzaCBm dW5jdGlvbnM6IFNIQS0yMjQgYW5kIFNIQS0yNTYiCisJZGVwZW5kcyBvbiA2NEJJVCAmJiBSSVND Vl9JU0FfViAmJiBUT09MQ0hBSU5fSEFTX1ZFQ1RPUl9DUllQVE8KKwlzZWxlY3QgQ1JZUFRPX1NI QTI1NgorCWhlbHAKKwkgIFNIQS0yMjQgYW5kIFNIQS0yNTYgc2VjdXJlIGhhc2ggYWxnb3JpdGht IChGSVBTIDE4MCkKKworCSAgQXJjaGl0ZWN0dXJlOiByaXNjdjY0IHVzaW5nOgorCSAgLSBadmtu aGEgb3IgWnZrbmhiIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9ucworCSAgLSBadmtiIHZlY3RvciBj cnlwdG8gZXh0ZW5zaW9uCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvY3J5cHRv L01ha2VmaWxlIGIvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUKaW5kZXggZDIxZDNhM2ZjMTU3 Yy4uMjhhNThlODk5MjdhZSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUK KysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUKQEAgLTcsMTAgKzcsMTMgQEAgb2JqLSQo Q09ORklHX0NSWVBUT19BRVNfUklTQ1Y2NCkgKz0gYWVzLXJpc2N2NjQubwogYWVzLXJpc2N2NjQt eSA6PSBhZXMtcmlzY3Y2NC1nbHVlLm8gYWVzLXJpc2N2NjQtenZrbmVkLm8KIAogb2JqLSQoQ09O RklHX0NSWVBUT19BRVNfQkxPQ0tfUklTQ1Y2NCkgKz0gYWVzLWJsb2NrLXJpc2N2NjQubwogYWVz LWJsb2NrLXJpc2N2NjQteSA6PSBhZXMtcmlzY3Y2NC1ibG9jay1tb2RlLWdsdWUubyBhZXMtcmlz Y3Y2NC16dmtuZWQtenZiYi16dmtnLm8gYWVzLXJpc2N2NjQtenZrbmVkLXp2a2IubwogCiBvYmot JChDT05GSUdfQ1JZUFRPX0NIQUNIQV9SSVNDVjY0KSArPSBjaGFjaGEtcmlzY3Y2NC5vCiBjaGFj aGEtcmlzY3Y2NC15IDo9IGNoYWNoYS1yaXNjdjY0LWdsdWUubyBjaGFjaGEtcmlzY3Y2NC16dmti Lm8KIAogb2JqLSQoQ09ORklHX0NSWVBUT19HSEFTSF9SSVNDVjY0KSArPSBnaGFzaC1yaXNjdjY0 Lm8KIGdoYXNoLXJpc2N2NjQteSA6PSBnaGFzaC1yaXNjdjY0LWdsdWUubyBnaGFzaC1yaXNjdjY0 LXp2a2cubworCitvYmotJChDT05GSUdfQ1JZUFRPX1NIQTI1Nl9SSVNDVjY0KSArPSBzaGEyNTYt cmlzY3Y2NC5vCitzaGEyNTYtcmlzY3Y2NC15IDo9IHNoYTI1Ni1yaXNjdjY0LWdsdWUubyBzaGEy NTYtcmlzY3Y2NC16dmtuaGFfb3JfenZrbmhiLXp2a2IubwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNj di9jcnlwdG8vc2hhMjU2LXJpc2N2NjQtZ2x1ZS5jIGIvYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2 LXJpc2N2NjQtZ2x1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAu LjVjM2ZhM2QwMTc0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2NyeXB0by9zaGEy NTYtcmlzY3Y2NC1nbHVlLmMKQEAgLTAsMCArMSwxMzcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCisvKgorICogU0hBLTI1NiBhbmQgU0hBLTIyNCB1c2lu ZyB0aGUgUklTQy1WIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9ucworICoKKyAqIENvcHlyaWdodCAo QykgMjAyMiBWUlVMTCBHbWJICisgKiBBdXRob3I6IEhlaWtvIFN0dWVibmVyIDxoZWlrby5zdHVl Ym5lckB2cnVsbC5ldT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjMgU2lGaXZlLCBJbmMuCisg KiBBdXRob3I6IEplcnJ5IFNoaWggPGplcnJ5LnNoaWhAc2lmaXZlLmNvbT4KKyAqLworCisjaW5j bHVkZSA8YXNtL3NpbWQuaD4KKyNpbmNsdWRlIDxhc20vdmVjdG9yLmg+CisjaW5jbHVkZSA8Y3J5 cHRvL2ludGVybmFsL2hhc2guaD4KKyNpbmNsdWRlIDxjcnlwdG8vaW50ZXJuYWwvc2ltZC5oPgor I2luY2x1ZGUgPGNyeXB0by9zaGEyNTZfYmFzZS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2Uu aD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworLyoKKyAqIE5vdGU6IHRoZSBhc20gZnVu Y3Rpb24gb25seSB1c2VzIHRoZSAnc3RhdGUnIGZpZWxkIG9mIHN0cnVjdCBzaGEyNTZfc3RhdGUu CisgKiBJdCBpcyBhc3N1bWVkIHRvIGJlIHRoZSBmaXJzdCBmaWVsZC4KKyAqLworYXNtbGlua2Fn ZSB2b2lkIHNoYTI1Nl90cmFuc2Zvcm1fenZrbmhhX29yX3p2a25oYl96dmtiKAorCXN0cnVjdCBz aGEyNTZfc3RhdGUgKnN0YXRlLCBjb25zdCB1OCAqZGF0YSwgaW50IG51bV9ibG9ja3MpOworCitz dGF0aWMgaW50IHJpc2N2NjRfc2hhMjU2X3VwZGF0ZShzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywg Y29uc3QgdTggKmRhdGEsCisJCQkJIHVuc2lnbmVkIGludCBsZW4pCit7CisJLyoKKwkgKiBFbnN1 cmUgc3RydWN0IHNoYTI1Nl9zdGF0ZSBiZWdpbnMgZGlyZWN0bHkgd2l0aCB0aGUgU0hBLTI1Ngor CSAqIDI1Ni1iaXQgaW50ZXJuYWwgc3RhdGUsIGFzIHRoaXMgaXMgd2hhdCB0aGUgYXNtIGZ1bmN0 aW9uIGV4cGVjdHMuCisJICovCisJQlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBzaGEyNTZf c3RhdGUsIHN0YXRlKSAhPSAwKTsKKworCWlmIChjcnlwdG9fc2ltZF91c2FibGUoKSkgeworCQlr ZXJuZWxfdmVjdG9yX2JlZ2luKCk7CisJCXNoYTI1Nl9iYXNlX2RvX3VwZGF0ZShkZXNjLCBkYXRh LCBsZW4sCisJCQkJICAgICAgc2hhMjU2X3RyYW5zZm9ybV96dmtuaGFfb3JfenZrbmhiX3p2a2Ip OworCQlrZXJuZWxfdmVjdG9yX2VuZCgpOworCX0gZWxzZSB7CisJCWNyeXB0b19zaGEyNTZfdXBk YXRlKGRlc2MsIGRhdGEsIGxlbik7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJp c2N2NjRfc2hhMjU2X2ZpbnVwKHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjLCBjb25zdCB1OCAqZGF0 YSwKKwkJCQl1bnNpZ25lZCBpbnQgbGVuLCB1OCAqb3V0KQoreworCWlmIChjcnlwdG9fc2ltZF91 c2FibGUoKSkgeworCQlrZXJuZWxfdmVjdG9yX2JlZ2luKCk7CisJCWlmIChsZW4pCisJCQlzaGEy NTZfYmFzZV9kb191cGRhdGUoCisJCQkJZGVzYywgZGF0YSwgbGVuLAorCQkJCXNoYTI1Nl90cmFu c2Zvcm1fenZrbmhhX29yX3p2a25oYl96dmtiKTsKKwkJc2hhMjU2X2Jhc2VfZG9fZmluYWxpemUo CisJCQlkZXNjLCBzaGEyNTZfdHJhbnNmb3JtX3p2a25oYV9vcl96dmtuaGJfenZrYik7CisJCWtl cm5lbF92ZWN0b3JfZW5kKCk7CisKKwkJcmV0dXJuIHNoYTI1Nl9iYXNlX2ZpbmlzaChkZXNjLCBv dXQpOworCX0KKworCXJldHVybiBjcnlwdG9fc2hhMjU2X2ZpbnVwKGRlc2MsIGRhdGEsIGxlbiwg b3V0KTsKK30KKworc3RhdGljIGludCByaXNjdjY0X3NoYTI1Nl9maW5hbChzdHJ1Y3Qgc2hhc2hf ZGVzYyAqZGVzYywgdTggKm91dCkKK3sKKwlyZXR1cm4gcmlzY3Y2NF9zaGEyNTZfZmludXAoZGVz YywgTlVMTCwgMCwgb3V0KTsKK30KKworc3RhdGljIGludCByaXNjdjY0X3NoYTI1Nl9kaWdlc3Qo c3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICpkYXRhLAorCQkJCSB1bnNpZ25lZCBp bnQgbGVuLCB1OCAqb3V0KQoreworCXJldHVybiBzaGEyNTZfYmFzZV9pbml0KGRlc2MpID86CisJ ICAgICAgIHJpc2N2NjRfc2hhMjU2X2ZpbnVwKGRlc2MsIGRhdGEsIGxlbiwgb3V0KTsKK30KKwor c3RhdGljIHN0cnVjdCBzaGFzaF9hbGcgcmlzY3Y2NF9zaGEyNTZfYWxnc1tdID0geworCXsKKwkJ LmluaXQgPSBzaGEyNTZfYmFzZV9pbml0LAorCQkudXBkYXRlID0gcmlzY3Y2NF9zaGEyNTZfdXBk YXRlLAorCQkuZmluYWwgPSByaXNjdjY0X3NoYTI1Nl9maW5hbCwKKwkJLmZpbnVwID0gcmlzY3Y2 NF9zaGEyNTZfZmludXAsCisJCS5kaWdlc3QgPSByaXNjdjY0X3NoYTI1Nl9kaWdlc3QsCisJCS5k ZXNjc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2hhMjU2X3N0YXRlKSwKKwkJLmRpZ2VzdHNpemUgPSBT SEEyNTZfRElHRVNUX1NJWkUsCisJCS5iYXNlID0geworCQkJLmNyYV9ibG9ja3NpemUgPSBTSEEy NTZfQkxPQ0tfU0laRSwKKwkJCS5jcmFfcHJpb3JpdHkgPSAzMDAsCisJCQkuY3JhX25hbWUgPSAi c2hhMjU2IiwKKwkJCS5jcmFfZHJpdmVyX25hbWUgPSAic2hhMjU2LXJpc2N2NjQtenZrbmhhX29y X3p2a25oYi16dmtiIiwKKwkJCS5jcmFfbW9kdWxlID0gVEhJU19NT0RVTEUsCisJCX0sCisJfSwg eworCQkuaW5pdCA9IHNoYTIyNF9iYXNlX2luaXQsCisJCS51cGRhdGUgPSByaXNjdjY0X3NoYTI1 Nl91cGRhdGUsCisJCS5maW5hbCA9IHJpc2N2NjRfc2hhMjU2X2ZpbmFsLAorCQkuZmludXAgPSBy aXNjdjY0X3NoYTI1Nl9maW51cCwKKwkJLmRlc2NzaXplID0gc2l6ZW9mKHN0cnVjdCBzaGEyNTZf c3RhdGUpLAorCQkuZGlnZXN0c2l6ZSA9IFNIQTIyNF9ESUdFU1RfU0laRSwKKwkJLmJhc2UgPSB7 CisJCQkuY3JhX2Jsb2Nrc2l6ZSA9IFNIQTIyNF9CTE9DS19TSVpFLAorCQkJLmNyYV9wcmlvcml0 eSA9IDMwMCwKKwkJCS5jcmFfbmFtZSA9ICJzaGEyMjQiLAorCQkJLmNyYV9kcml2ZXJfbmFtZSA9 ICJzaGEyMjQtcmlzY3Y2NC16dmtuaGFfb3JfenZrbmhiLXp2a2IiLAorCQkJLmNyYV9tb2R1bGUg PSBUSElTX01PRFVMRSwKKwkJfSwKKwl9LAorfTsKKworc3RhdGljIGludCBfX2luaXQgcmlzY3Y2 NF9zaGEyNTZfbW9kX2luaXQodm9pZCkKK3sKKwkvKiBCb3RoIHp2a25oYSBhbmQgenZrbmhiIHBy b3ZpZGUgdGhlIFNIQS0yNTYgaW5zdHJ1Y3Rpb25zLiAqLworCWlmICgocmlzY3ZfaXNhX2V4dGVu c2lvbl9hdmFpbGFibGUoTlVMTCwgWlZLTkhBKSB8fAorCSAgICAgcmlzY3ZfaXNhX2V4dGVuc2lv bl9hdmFpbGFibGUoTlVMTCwgWlZLTkhCKSkgJiYKKwkgICAgcmlzY3ZfaXNhX2V4dGVuc2lvbl9h dmFpbGFibGUoTlVMTCwgWlZLQikgJiYKKwkgICAgcmlzY3ZfdmVjdG9yX3ZsZW4oKSA+PSAxMjgp CisJCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfc2hhc2hlcyhyaXNjdjY0X3NoYTI1Nl9hbGdzLAor CQkJCQkgICAgICAgQVJSQVlfU0laRShyaXNjdjY0X3NoYTI1Nl9hbGdzKSk7CisKKwlyZXR1cm4g LUVOT0RFVjsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHJpc2N2NjRfc2hhMjU2X21vZF9maW5p KHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfc2hhc2hlcyhyaXNjdjY0X3NoYTI1Nl9hbGdz LAorCQkJCSAgQVJSQVlfU0laRShyaXNjdjY0X3NoYTI1Nl9hbGdzKSk7Cit9CisKK21vZHVsZV9p bml0KHJpc2N2NjRfc2hhMjU2X21vZF9pbml0KTsKK21vZHVsZV9leGl0KHJpc2N2NjRfc2hhMjU2 X21vZF9maW5pKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJTSEEtMjU2IChSSVNDLVYgYWNjZWxl cmF0ZWQpIik7CitNT0RVTEVfQVVUSE9SKCJIZWlrbyBTdHVlYm5lciA8aGVpa28uc3R1ZWJuZXJA dnJ1bGwuZXU+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVNfQ1JZUFRP KCJzaGEyNTYiKTsKK01PRFVMRV9BTElBU19DUllQVE8oInNoYTIyNCIpOwpkaWZmIC0tZ2l0IGEv YXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiLlMg Yi9hcmNoL3Jpc2N2L2NyeXB0by9zaGEyNTYtcmlzY3Y2NC16dmtuaGFfb3JfenZrbmhiLXp2a2Iu UwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mYWE3ZWUyYjEyOWIx Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2NjQtenZr bmhhX29yX3p2a25oYi16dmtiLlMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBBcGFjaGUtMi4wIE9SIEJTRC0yLUNsYXVzZSAqLworLy8KKy8vIFRoaXMgZmls ZSBpcyBkdWFsLWxpY2Vuc2VkLCBtZWFuaW5nIHRoYXQgeW91IGNhbiB1c2UgaXQgdW5kZXIgeW91 cgorLy8gY2hvaWNlIG9mIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIHR3byBsaWNlbnNlczoKKy8v CisvLyBDb3B5cmlnaHQgMjAyMyBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIu MCAodGhlICJMaWNlbnNlIikuIFlvdSBjYW4gb2J0YWluCisvLyBhIGNvcHkgaW4gdGhlIGZpbGUg TElDRU5TRSBpbiB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBvciBhdAorLy8gaHR0cHM6Ly93d3cu b3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorLy8KKy8vIG9yCisvLworLy8gQ29weXJp Z2h0IChjKSAyMDIzLCBDaHJpc3RvcGggTcO8bGxuZXIgPGNocmlzdG9waC5tdWVsbG5lckB2cnVs bC5ldT4KKy8vIENvcHlyaWdodCAoYykgMjAyMywgUGhvZWJlIENoZW4gPHBob2ViZS5jaGVuQHNp Zml2ZS5jb20+CisvLyBDb3B5cmlnaHQgMjAyNCBHb29nbGUgTExDCisvLyBBbGwgcmlnaHRzIHJl c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8g MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisv LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFRoZSBnZW5lcmF0ZWQgY29kZSBvZiB0aGlzIGZp bGUgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIFJJU0MtViBleHRlbnNpb25zOgorLy8gLSBSVjY0 SQorLy8gLSBSSVNDLVYgVmVjdG9yICgnVicpIHdpdGggVkxFTiA+PSAxMjgKKy8vIC0gUklTQy1W IFZlY3RvciBTSEEtMiBTZWN1cmUgSGFzaCBleHRlbnNpb24gKCdadmtuaGEnIG9yICdadmtuaGIn KQorLy8gLSBSSVNDLVYgVmVjdG9yIENyeXB0b2dyYXBoeSBCaXQtbWFuaXB1bGF0aW9uIGV4dGVu c2lvbiAoJ1p2a2InKQorCisjaW5jbHVkZSA8bGludXgvY2ZpX3R5cGVzLmg+CisKKy50ZXh0Cisu b3B0aW9uIGFyY2gsICt6dmtuaGEsICt6dmtiCisKKyNkZWZpbmUgU1RBVEVQCQlhMAorI2RlZmlu ZSBEQVRBCQlhMQorI2RlZmluZSBOVU1fQkxPQ0tTCWEyCisKKyNkZWZpbmUgU1RBVEVQX0MJYTMK KworI2RlZmluZSBNQVNLCQl2MAorI2RlZmluZSBJTkRJQ0VTCQl2MQorI2RlZmluZSBXMAkJdjIK KyNkZWZpbmUgVzEJCXYzCisjZGVmaW5lIFcyCQl2NAorI2RlZmluZSBXMwkJdjUKKyNkZWZpbmUg VlRNUAkJdjYKKyNkZWZpbmUgRkVCQQkJdjcKKyNkZWZpbmUgSEdEQwkJdjgKKyNkZWZpbmUgSzAJ CXYxMAorI2RlZmluZSBLMQkJdjExCisjZGVmaW5lIEsyCQl2MTIKKyNkZWZpbmUgSzMJCXYxMwor I2RlZmluZSBLNAkJdjE0CisjZGVmaW5lIEs1CQl2MTUKKyNkZWZpbmUgSzYJCXYxNgorI2RlZmlu ZSBLNwkJdjE3CisjZGVmaW5lIEs4CQl2MTgKKyNkZWZpbmUgSzkJCXYxOQorI2RlZmluZSBLMTAJ CXYyMAorI2RlZmluZSBLMTEJCXYyMQorI2RlZmluZSBLMTIJCXYyMgorI2RlZmluZSBLMTMJCXYy MworI2RlZmluZSBLMTQJCXYyNAorI2RlZmluZSBLMTUJCXYyNQorI2RlZmluZSBQUkVWX0ZFQkEJ djMwCisjZGVmaW5lIFBSRVZfSEdEQwl2MzEKKworLy8gRG8gNCByb3VuZHMgb2YgU0hBLTI1Ni4g IHcwIGNvbnRhaW5zIHRoZSBjdXJyZW50IDQgbWVzc2FnZSBzY2hlZHVsZSB3b3Jkcy4KKy8vCisv LyBJZiBub3QgYWxsIHRoZSBtZXNzYWdlIHNjaGVkdWxlIHdvcmRzIGhhdmUgYmVlbiBjb21wdXRl ZCB5ZXQsIHRoZW4gdGhpcyBhbHNvCisvLyBjb21wdXRlcyA0IG1vcmUgbWVzc2FnZSBzY2hlZHVs ZSB3b3Jkcy4gIHcxLXczIGNvbnRhaW4gdGhlIG5leHQgMyBncm91cHMgb2YgNAorLy8gbWVzc2Fn ZSBzY2hlZHVsZSB3b3JkczsgdGhpcyBtYWNybyBjb21wdXRlcyB0aGUgZ3JvdXAgYWZ0ZXIgdzMg YW5kIHdyaXRlcyBpdAorLy8gdG8gdzAuICBUaGlzIG1lYW5zIHRoYXQgdGhlIG5leHQgKHcwLCB3 MSwgdzIsIHczKSBpcyB0aGUgY3VycmVudCAodzEsIHcyLCB3MywKKy8vIHcwKSwgc28gdGhlIGNh bGxlciBtdXN0IGN5Y2xlIHRocm91Z2ggdGhlIHJlZ2lzdGVycyBhY2NvcmRpbmdseS4KKy5tYWNy bwlzaGEyNTZfNHJvdW5kcwlsYXN0LCBrLCB3MCwgdzEsIHcyLCB3MworCXZhZGQudnYJCVZUTVAs IFxrLCBcdzAKKwl2c2hhMmNsLnZ2CUhHREMsIEZFQkEsIFZUTVAKKwl2c2hhMmNoLnZ2CUZFQkEs IEhHREMsIFZUTVAKKy5pZiAhXGxhc3QKKwl2bWVyZ2UudnZtCVZUTVAsIFx3MiwgXHcxLCBNQVNL CisJdnNoYTJtcy52dglcdzAsIFZUTVAsIFx3MworLmVuZGlmCisuZW5kbQorCisubWFjcm8Jc2hh MjU2XzE2cm91bmRzCWxhc3QsIGswLCBrMSwgazIsIGszCisJc2hhMjU2XzRyb3VuZHMJXGxhc3Qs IFxrMCwgVzAsIFcxLCBXMiwgVzMKKwlzaGEyNTZfNHJvdW5kcwlcbGFzdCwgXGsxLCBXMSwgVzIs IFczLCBXMAorCXNoYTI1Nl80cm91bmRzCVxsYXN0LCBcazIsIFcyLCBXMywgVzAsIFcxCisJc2hh MjU2XzRyb3VuZHMJXGxhc3QsIFxrMywgVzMsIFcwLCBXMSwgVzIKKy5lbmRtCisKKy8vIHZvaWQg c2hhMjU2X3RyYW5zZm9ybV96dmtuaGFfb3JfenZrbmhiX3p2a2IodTMyIHN0YXRlWzhdLCBjb25z dCB1OCAqZGF0YSwKKy8vCQkJCQkgICAgICAgaW50IG51bV9ibG9ja3MpOworU1lNX1RZUEVEX0ZV TkNfU1RBUlQoc2hhMjU2X3RyYW5zZm9ybV96dmtuaGFfb3JfenZrbmhiX3p2a2IpCisKKwkvLyBM b2FkIHRoZSByb3VuZCBjb25zdGFudHMgaW50byBLMC1LMTUuCisJdnNldGl2bGkJemVybywgNCwg ZTMyLCBtMSwgdGEsIG1hCisJbGEJCXQwLCBLMjU2CisJdmxlMzIudgkJSzAsICh0MCkKKwlhZGRp CQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzEsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxl MzIudgkJSzIsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzMsICh0MCkKKwlh ZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzQsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJ dmxlMzIudgkJSzUsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzYsICh0MCkK KwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzcsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2 CisJdmxlMzIudgkJSzgsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzksICh0 MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzEwLCAodDApCisJYWRkaQkJdDAsIHQw LCAxNgorCXZsZTMyLnYJCUsxMSwgKHQwKQorCWFkZGkJCXQwLCB0MCwgMTYKKwl2bGUzMi52CQlL MTIsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIudgkJSzEzLCAodDApCisJYWRkaQkJ dDAsIHQwLCAxNgorCXZsZTMyLnYJCUsxNCwgKHQwKQorCWFkZGkJCXQwLCB0MCwgMTYKKwl2bGUz Mi52CQlLMTUsICh0MCkKKworCS8vIFNldHVwIG1hc2sgZm9yIHRoZSB2bWVyZ2UgdG8gcmVwbGFj ZSB0aGUgZmlyc3Qgd29yZCAoaWR4PT0wKSBpbgorCS8vIG1lc3NhZ2Ugc2NoZWR1bGluZy4gIFRo ZXJlIGFyZSA0IHdvcmRzLCBzbyBhbiA4LWJpdCBtYXNrIHN1ZmZpY2VzLgorCXZzZXRpdmxpCXpl cm8sIDEsIGU4LCBtMSwgdGEsIG1hCisJdm12LnYuaQkJTUFTSywgMHgwMQorCisJLy8gTG9hZCB0 aGUgc3RhdGUuICBUaGUgc3RhdGUgaXMgc3RvcmVkIGFzIHthLGIsYyxkLGUsZixnLGh9LCBidXQg d2UKKwkvLyBuZWVkIHtmLGUsYixhfSx7aCxnLGQsY30uICBUaGUgZHN0IHZ0eXBlIGlzIGUzMm0x IGFuZCB0aGUgaW5kZXggdnR5cGUKKwkvLyBpcyBlOG1mNC4gIFdlIHVzZSBpbmRleC1sb2FkIHdp dGggdGhlIGk4IGluZGljZXMgezIwLCAxNiwgNCwgMH0sCisJLy8gbG9hZGVkIHVzaW5nIHRoZSAz Mi1iaXQgbGl0dGxlIGVuZGlhbiB2YWx1ZSAweDAwMDQxMDE0LgorCWxpCQl0MCwgMHgwMDA0MTAx NAorCXZzZXRpdmxpCXplcm8sIDEsIGUzMiwgbTEsIHRhLCBtYQorCXZtdi52LngJCUlORElDRVMs IHQwCisJYWRkaQkJU1RBVEVQX0MsIFNUQVRFUCwgOAorCXZzZXRpdmxpCXplcm8sIDQsIGUzMiwg bTEsIHRhLCBtYQorCXZsdXhlaTgudglGRUJBLCAoU1RBVEVQKSwgSU5ESUNFUworCXZsdXhlaTgu dglIR0RDLCAoU1RBVEVQX0MpLCBJTkRJQ0VTCisKKy5MbmV4dF9ibG9jazoKKwlhZGRpCQlOVU1f QkxPQ0tTLCBOVU1fQkxPQ0tTLCAtMQorCisJLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGUsIGFz IGl0J3MgbmVlZGVkIGxhdGVyLgorCXZtdi52LnYJCVBSRVZfRkVCQSwgRkVCQQorCXZtdi52LnYJ CVBSRVZfSEdEQywgSEdEQworCisJLy8gTG9hZCB0aGUgbmV4dCA1MTItYml0IG1lc3NhZ2UgYmxv Y2sgYW5kIGVuZGlhbi1zd2FwIGVhY2ggMzItYml0IHdvcmQuCisJdmxlMzIudgkJVzAsIChEQVRB KQorCXZyZXY4LnYJCVcwLCBXMAorCWFkZGkJCURBVEEsIERBVEEsIDE2CisJdmxlMzIudgkJVzEs IChEQVRBKQorCXZyZXY4LnYJCVcxLCBXMQorCWFkZGkJCURBVEEsIERBVEEsIDE2CisJdmxlMzIu dgkJVzIsIChEQVRBKQorCXZyZXY4LnYJCVcyLCBXMgorCWFkZGkJCURBVEEsIERBVEEsIDE2CisJ dmxlMzIudgkJVzMsIChEQVRBKQorCXZyZXY4LnYJCVczLCBXMworCWFkZGkJCURBVEEsIERBVEEs IDE2CisKKwkvLyBEbyB0aGUgNjQgcm91bmRzIG9mIFNIQS0yNTYuCisJc2hhMjU2XzE2cm91bmRz CTAsIEswLCBLMSwgSzIsIEszCisJc2hhMjU2XzE2cm91bmRzCTAsIEs0LCBLNSwgSzYsIEs3CisJ c2hhMjU2XzE2cm91bmRzCTAsIEs4LCBLOSwgSzEwLCBLMTEKKwlzaGEyNTZfMTZyb3VuZHMJMSwg SzEyLCBLMTMsIEsxNCwgSzE1CisKKwkvLyBBZGQgdGhlIHByZXZpb3VzIHN0YXRlLgorCXZhZGQu dnYJCUZFQkEsIEZFQkEsIFBSRVZfRkVCQQorCXZhZGQudnYJCUhHREMsIEhHREMsIFBSRVZfSEdE QworCisJLy8gUmVwZWF0IGlmIG1vcmUgYmxvY2tzIHJlbWFpbi4KKwlibmV6CQlOVU1fQkxPQ0tT LCAuTG5leHRfYmxvY2sKKworCS8vIFN0b3JlIHRoZSBuZXcgc3RhdGUgYW5kIHJldHVybi4KKwl2 c3V4ZWk4LnYJRkVCQSwgKFNUQVRFUCksIElORElDRVMKKwl2c3V4ZWk4LnYJSEdEQywgKFNUQVRF UF9DKSwgSU5ESUNFUworCXJldAorU1lNX0ZVTkNfRU5EKHNoYTI1Nl90cmFuc2Zvcm1fenZrbmhh X29yX3p2a25oYl96dmtiKQorCisuc2VjdGlvbiAiLnJvZGF0YSIKKy5wMmFsaWduIDIKKy50eXBl IEsyNTYsIEBvYmplY3QKK0syNTY6CisJLndvcmQJCTB4NDI4YTJmOTgsIDB4NzEzNzQ0OTEsIDB4 YjVjMGZiY2YsIDB4ZTliNWRiYTUKKwkud29yZAkJMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5 MjNmODJhNCwgMHhhYjFjNWVkNQorCS53b3JkCQkweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0 MzE4NWJlLCAweDU1MGM3ZGMzCisJLndvcmQJCTB4NzJiZTVkNzQsIDB4ODBkZWIxZmUsIDB4OWJk YzA2YTcsIDB4YzE5YmYxNzQKKwkud29yZAkJMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMx OWRjNiwgMHgyNDBjYTFjYworCS53b3JkCQkweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBh OWRjLCAweDc2Zjk4OGRhCisJLndvcmQJCTB4OTgzZTUxNTIsIDB4YTgzMWM2NmQsIDB4YjAwMzI3 YzgsIDB4YmY1OTdmYzcKKwkud29yZAkJMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1 MSwgMHgxNDI5Mjk2NworCS53b3JkCQkweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZj LCAweDUzMzgwZDEzCisJLndvcmQJCTB4NjUwYTczNTQsIDB4NzY2YTBhYmIsIDB4ODFjMmM5MmUs IDB4OTI3MjJjODUKKwkud29yZAkJMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwg MHhjNzZjNTFhMworCS53b3JkCQkweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAw eDEwNmFhMDcwCisJLndvcmQJCTB4MTlhNGMxMTYsIDB4MWUzNzZjMDgsIDB4Mjc0ODc3NGMsIDB4 MzRiMGJjYjUKKwkud29yZAkJMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2 ODJlNmZmMworCS53b3JkCQkweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhj YzcwMjA4CisJLndvcmQJCTB4OTBiZWZmZmEsIDB4YTQ1MDZjZWIsIDB4YmVmOWEzZjcsIDB4YzY3 MTc4ZjIKKy5zaXplIEsyNTYsIC4gLSBLMjU2Ci0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==