From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74C9FC433E6 for ; Wed, 20 Jan 2021 03:44:12 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AF73D2310D for ; Wed, 20 Jan 2021 03:44:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AF73D2310D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l24Pi-0007ez-N4 for qemu-devel@archiver.kernel.org; Tue, 19 Jan 2021 22:44:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47882) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l24Cs-0000CN-3m for qemu-devel@nongnu.org; Tue, 19 Jan 2021 22:30:54 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:5511) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l24Co-0007VU-8u for qemu-devel@nongnu.org; Tue, 19 Jan 2021 22:30:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1611113450; x=1642649450; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ySYulH9gfa5BR4ZafgpUvvtNgN3vuAukGIXP1k/rQaw=; b=GPc3T6ilq1+4Yv9inBMqpSDoknm/PI6WTqqh7mSntJa8UqepF1xxd3IP g9YzsmIdQU4LJkCEt7u4bv2v264Gj5LJ5E9lbVMLWhhwhVxK5AlRB4N2B Akks9v+5FhLzlAoOlydsFMU6a5z4n+6rkvFqoAPUDovzxmOjxZ3p2qvcZ o=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 19 Jan 2021 19:29:28 -0800 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 19 Jan 2021 19:29:28 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 3F5CB28DD; Tue, 19 Jan 2021 21:29:28 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v7 32/35] Hexagon (tests/tcg/hexagon) TCG tests - atomics/load/store/misc Date: Tue, 19 Jan 2021 21:29:05 -0600 Message-Id: <1611113349-24906-33-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1611113349-24906-1-git-send-email-tsimpson@quicinc.com> References: <1611113349-24906-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.248, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ale@rev.ng, bcain@quicinc.com, philmd@redhat.com, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" LS0tCiB0ZXN0cy90Y2cvaGV4YWdvbi9hdG9taWNzLmMgICAgICAgfCAxMzkgKysrKysrKysrKysr KysKIHRlc3RzL3RjZy9oZXhhZ29uL2R1YWxfc3RvcmVzLmMgICB8ICA2MCArKysrKysKIHRlc3Rz L3RjZy9oZXhhZ29uL21lbV9ub3NodWYuYyAgICB8IDMyOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogdGVzdHMvdGNnL2hleGFnb24vbWlzYy5jICAgICAgICAgIHwgMzgwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy90Y2cvaGV4YWdvbi9wcmVn X2FsaWFzLmMgICAgfCAxNjkgKysrKysrKysrKysrKysrKysKIHRlc3RzL3RjZy9oZXhhZ29uL01h a2VmaWxlLnRhcmdldCB8ICAxNSArKwogdGVzdHMvdGNnL2hleGFnb24vZmlyc3QuUyAgICAgICAg IHwgIDU2ICsrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMTQ3IGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Y2cvaGV4YWdvbi9hdG9taWNzLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0cy90Y2cvaGV4YWdvbi9kdWFsX3N0b3Jlcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg dGVzdHMvdGNnL2hleGFnb24vbWVtX25vc2h1Zi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMv dGNnL2hleGFnb24vbWlzYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGNnL2hleGFnb24v cHJlZ19hbGlhcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGNnL2hleGFnb24vZmlyc3Qu UwoKZGlmZiAtLWdpdCBhL3Rlc3RzL3RjZy9oZXhhZ29uL2F0b21pY3MuYyBiL3Rlc3RzL3RjZy9o ZXhhZ29uL2F0b21pY3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjFj ZWVlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGNnL2hleGFnb24vYXRvbWljcy5jCkBAIC0w LDAgKzEsMTM5IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0 ZC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorCisvKiBV c2luZyB2b2xhdGlsZSBiZWNhdXNlIHdlIGFyZSB0ZXN0aW5nIGF0b21pY3MgKi8KK3N0YXRpYyBp bmxpbmUgaW50IGF0b21pY19pbmMzMih2b2xhdGlsZSBpbnQgKngpCit7CisgICAgaW50IG9sZCwg ZHVtbXk7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCisgICAgICAgICIxOiAlMCA9IG1lbXdf bG9ja2VkKCUyKVxuXHQiCisgICAgICAgICIgICAlMSA9IGFkZCglMCwgIzEpXG5cdCIKKyAgICAg ICAgIiAgIG1lbXdfbG9ja2VkKCUyLCBwMCkgPSAlMVxuXHQiCisgICAgICAgICIgICBpZiAoIXAw KSBqdW1wIDFiXG5cdCIKKyAgICAgICAgOiAiPSZyIihvbGQpLCAiPSZyIihkdW1teSkKKyAgICAg ICAgOiAiciIoeCkKKyAgICAgICAgOiAicDAiLCAibWVtb3J5Iik7CisgICAgcmV0dXJuIG9sZDsK K30KKworLyogVXNpbmcgdm9sYXRpbGUgYmVjYXVzZSB3ZSBhcmUgdGVzdGluZyBhdG9taWNzICov CitzdGF0aWMgaW5saW5lIGxvbmcgbG9uZyBhdG9taWNfaW5jNjQodm9sYXRpbGUgbG9uZyBsb25n ICp4KQoreworICAgIGxvbmcgbG9uZyBvbGQsIGR1bW15OworICAgIF9fYXNtX18gX192b2xhdGls ZV9fKAorICAgICAgICAiMTogJTAgPSBtZW1kX2xvY2tlZCglMilcblx0IgorICAgICAgICAiICAg JTEgPSAjMVxuXHQiCisgICAgICAgICIgICAlMSA9IGFkZCglMCwgJTEpXG5cdCIKKyAgICAgICAg IiAgIG1lbWRfbG9ja2VkKCUyLCBwMCkgPSAlMVxuXHQiCisgICAgICAgICIgICBpZiAoIXAwKSBq dW1wIDFiXG5cdCIKKyAgICAgICAgOiAiPSZyIihvbGQpLCAiPSZyIihkdW1teSkKKyAgICAgICAg OiAiciIoeCkKKyAgICAgICAgOiAicDAiLCAibWVtb3J5Iik7CisgICAgcmV0dXJuIG9sZDsKK30K KworLyogVXNpbmcgdm9sYXRpbGUgYmVjYXVzZSB3ZSBhcmUgdGVzdGluZyBhdG9taWNzICovCitz dGF0aWMgaW5saW5lIGludCBhdG9taWNfZGVjMzIodm9sYXRpbGUgaW50ICp4KQoreworICAgIGlu dCBvbGQsIGR1bW15OworICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAorICAgICAgICAiMTogJTAg PSBtZW13X2xvY2tlZCglMilcblx0IgorICAgICAgICAiICAgJTEgPSBhZGQoJTAsICMtMSlcblx0 IgorICAgICAgICAiICAgbWVtd19sb2NrZWQoJTIsIHAwKSA9ICUxXG5cdCIKKyAgICAgICAgIiAg IGlmICghcDApIGp1bXAgMWJcblx0IgorICAgICAgICA6ICI9JnIiKG9sZCksICI9JnIiKGR1bW15 KQorICAgICAgICA6ICJyIih4KQorICAgICAgICA6ICJwMCIsICJtZW1vcnkiKTsKKyAgICByZXR1 cm4gb2xkOworfQorCisvKiBVc2luZyB2b2xhdGlsZSBiZWNhdXNlIHdlIGFyZSB0ZXN0aW5nIGF0 b21pY3MgKi8KK3N0YXRpYyBpbmxpbmUgbG9uZyBsb25nIGF0b21pY19kZWM2NCh2b2xhdGlsZSBs b25nIGxvbmcgKngpCit7CisgICAgbG9uZyBsb25nIG9sZCwgZHVtbXk7CisgICAgX19hc21fXyBf X3ZvbGF0aWxlX18oCisgICAgICAgICIxOiAlMCA9IG1lbWRfbG9ja2VkKCUyKVxuXHQiCisgICAg ICAgICIgICAlMSA9ICMtMVxuXHQiCisgICAgICAgICIgICAlMSA9IGFkZCglMCwgJTEpXG5cdCIK KyAgICAgICAgIiAgIG1lbWRfbG9ja2VkKCUyLCBwMCkgPSAlMVxuXHQiCisgICAgICAgICIgICBp ZiAoIXAwKSBqdW1wIDFiXG5cdCIKKyAgICAgICAgOiAiPSZyIihvbGQpLCAiPSZyIihkdW1teSkK KyAgICAgICAgOiAiciIoeCkKKyAgICAgICAgOiAicDAiLCAibWVtb3J5Iik7CisgICAgcmV0dXJu IG9sZDsKK30KKworI2RlZmluZSBMT09QX0NOVCAxMDAwCisvKiBVc2luZyB2b2xhdGlsZSBiZWNh dXNlIHdlIGFyZSB0ZXN0aW5nIGF0b21pY3MgKi8KK3ZvbGF0aWxlIGludCB0aWNrMzIgPSAxOwor LyogVXNpbmcgdm9sYXRpbGUgYmVjYXVzZSB3ZSBhcmUgdGVzdGluZyBhdG9taWNzICovCit2b2xh dGlsZSBsb25nIGxvbmcgdGljazY0ID0gMTsKK2ludCBlcnI7CisKK3ZvaWQgKnRocmVhZDFfZnVu Yyh2b2lkICphcmcpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTE9PUF9D TlQ7IGkrKykgeworICAgICAgICBhdG9taWNfaW5jMzIoJnRpY2szMik7CisgICAgICAgIGF0b21p Y19kZWM2NCgmdGljazY0KTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgKnRo cmVhZDJfZnVuYyh2b2lkICphcmcpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8 IExPT1BfQ05UOyBpKyspIHsKKyAgICAgICAgYXRvbWljX2RlYzMyKCZ0aWNrMzIpOworICAgICAg ICBhdG9taWNfaW5jNjQoJnRpY2s2NCk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCit2 b2lkIHRlc3RfcHRocmVhZCh2b2lkKQoreworICAgIHB0aHJlYWRfdCB0aWQxLCB0aWQyOworCisg ICAgcHRocmVhZF9jcmVhdGUoJnRpZDEsIE5VTEwsIHRocmVhZDFfZnVuYywgImhlbGxvMSIpOwor ICAgIHB0aHJlYWRfY3JlYXRlKCZ0aWQyLCBOVUxMLCB0aHJlYWQyX2Z1bmMsICJoZWxsbzIiKTsK KyAgICBwdGhyZWFkX2pvaW4odGlkMSwgTlVMTCk7CisgICAgcHRocmVhZF9qb2luKHRpZDIsIE5V TEwpOworCisgICAgaWYgKHRpY2szMiAhPSAxKSB7CisgICAgICAgIHByaW50ZigiRVJST1I6IHRp Y2szMiAlZCAhPSAxXG4iLCB0aWNrMzIpOworICAgICAgICBlcnIrKzsKKyAgICB9CisgICAgaWYg KHRpY2s2NCAhPSAxKSB7CisgICAgICAgIHByaW50ZigiRVJST1I6IHRpY2s2NCAlbGxkICE9IDFc biIsIHRpY2s2NCk7CisgICAgICAgIGVycisrOworICAgIH0KK30KKworaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQoreworICAgIHRlc3RfcHRocmVhZCgpOworICAgIHB1dHMoZXJyID8g IkZBSUwiIDogIlBBU1MiKTsKKyAgICByZXR1cm4gZXJyOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMv dGNnL2hleGFnb24vZHVhbF9zdG9yZXMuYyBiL3Rlc3RzL3RjZy9oZXhhZ29uL2R1YWxfc3RvcmVz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2YTM4MQotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3RzL3RjZy9oZXhhZ29uL2R1YWxfc3RvcmVzLmMKQEAgLTAsMCArMSw2MCBA QAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1YWxjb21tIElubm92YXRpb24gQ2Vu dGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKworLyoKKyAqICBN YWtlIHN1cmUgdGhhdCB0d28gc3RvcmVzIGluIHRoZSBzYW1lIHBhY2tldCBob25vciBwcm9wZXIK KyAqICBzZW1hbnRpY3M6IHNsb3QgMSBleGVjdXRlcyBmaXJzdCwgdGhlbiBzbG90IDAuCisgKiAg VGhpcyBpcyBpbXBvcnRhbnQgd2hlbiB0aGUgYWRkcmVzc2VzIG92ZXJsYXAuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZCBkdWFsX3N0b3JlcyhpbnQgKnAsIGNoYXIgKnEsIGludCB4LCBjaGFyIHkp Cit7CisgIGFzbSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAgICAgICAgICAiICAgIG1lbXcoJTAp ID0gJTJcblx0IgorICAgICAgICAgICAgICAgIiAgICBtZW1iKCUxKSA9ICUzXG5cdCIKKyAgICAg ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICA6OiAiciIocCksICJyIihxKSwgInIiKHgp LCAiciIoeSkKKyAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOworfQorCit0eXBlZGVmIHVuaW9u IHsKKyAgICBpbnQgd29yZDsKKyAgICBjaGFyIGJ5dGU7Cit9IER1YWw7CisKK2ludCBlcnI7CisK K3N0YXRpYyB2b2lkIGNoZWNrKER1YWwgZCwgaW50IGV4cGVjdCkKK3sKKyAgICBpZiAoZC53b3Jk ICE9IGV4cGVjdCkgeworICAgICAgICBwcmludGYoIkVSUk9SOiAweCUwOHggIT0gMHglMDh4XG4i LCBkLndvcmQsIGV4cGVjdCk7CisgICAgICAgIGVycisrOworICAgIH0KK30KKworaW50IG1haW4o KQoreworICAgIER1YWwgZDsKKworICAgIGQud29yZCA9IH4wOworICAgIGR1YWxfc3RvcmVzKCZk LndvcmQsICZkLmJ5dGUsIDB4MTIzNDU2NzgsIDB4ZmYpOworICAgIGNoZWNrKGQsIDB4MTIzNDU2 ZmYpOworCisgICAgcHV0cyhlcnIgPyAiRkFJTCIgOiAiUEFTUyIpOworICAgIHJldHVybiBlcnI7 Cit9CmRpZmYgLS1naXQgYS90ZXN0cy90Y2cvaGV4YWdvbi9tZW1fbm9zaHVmLmMgYi90ZXN0cy90 Y2cvaGV4YWdvbi9tZW1fbm9zaHVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZGQ3MTRkNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3RjZy9oZXhhZ29uL21lbV9ub3No dWYuYwpAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1 YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor ICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8 c3RkaW8uaD4KKworLyoKKyAqICBNYWtlIHN1cmUgdGhhdCB0aGUgOm1lbV9ub3NodWYgcGFja2V0 IGF0dHJpYnV0ZSBpcyBob25vcmVkLgorICogIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gdGhlIGFk ZHJlc3NlcyBvdmVybGFwLgorICogIFRoZSBzdG9yZSBpbnN0cnVjdGlvbiBpbiBzbG90IDEgZWZm ZWN0aXZlbHkgZXhlY3V0ZXMgZmlyc3QsCisgKiAgZm9sbG93ZWQgYnkgdGhlIGxvYWQgaW5zdHJ1 Y3Rpb24gaW4gc2xvdCAwLgorICovCisKKyNkZWZpbmUgTUVNX05PU0hVRjMyKE5BTUUsIFNUX1RZ UEUsIExEX1RZUEUsIFNUX09QLCBMRF9PUCkgXAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg TkFNRShTVF9UWVBFICogcCwgTERfVFlQRSAqIHEsIFNUX1RZUEUgeCkgXAoreyBcCisgICAgdW5z aWduZWQgaW50IHJldDsgXAorICAgIGFzbSB2b2xhdGlsZSgie1xuXHQiIFwKKyAgICAgICAgICAg ICAgICAgIiAgICAiICNTVF9PUCAiKCUxKSA9ICUzXG5cdCIgXAorICAgICAgICAgICAgICAgICAi ICAgICUwID0gIiAjTERfT1AgIiglMilcblx0IiBcCisgICAgICAgICAgICAgICAgICJ9Om1lbV9u b3NodWZcbiIgXAorICAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSBcCisgICAgICAgICAgICAg ICAgIDogInIiKHApLCAiciIocSksICJyIih4KSBcCisgICAgICAgICAgICAgICAgIDogIm1lbW9y eSIpOyBcCisgICAgcmV0dXJuIHJldDsgXAorfQorCisjZGVmaW5lIE1FTV9OT1NIVUY2NChOQU1F LCBTVF9UWVBFLCBMRF9UWVBFLCBTVF9PUCwgTERfT1ApIFwKK3N0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgbG9uZyBsb25nIE5BTUUoU1RfVFlQRSAqIHAsIExEX1RZUEUgKiBxLCBTVF9UWVBFIHgpIFwK K3sgXAorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXQ7IFwKKyAgICBhc20gdm9sYXRpbGUoIntc blx0IiBcCisgICAgICAgICAgICAgICAgICIgICAgIiAjU1RfT1AgIiglMSkgPSAlM1xuXHQiIFwK KyAgICAgICAgICAgICAgICAgIiAgICAlMCA9ICIgI0xEX09QICIoJTIpXG5cdCIgXAorICAgICAg ICAgICAgICAgICAifTptZW1fbm9zaHVmXG4iIFwKKyAgICAgICAgICAgICAgICAgOiAiPXIiKHJl dCkgXAorICAgICAgICAgICAgICAgICA6ICJyIihwKSwgInIiKHEpLCAiciIoeCkgXAorICAgICAg ICAgICAgICAgICA6ICJtZW1vcnkiKTsgXAorICAgIHJldHVybiByZXQ7IFwKK30KKworLyogU3Rv cmUgYnl0ZSBjb21iaW5hdGlvbnMgKi8KK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3NiX2xiLCAg c2lnbmVkIGNoYXIsICBzaWduZWQgY2hhciwgICAgICBtZW1iLCBtZW1iKQorTUVNX05PU0hVRjMy KG1lbV9ub3NodWZfc2JfbHViLCBzaWduZWQgY2hhciwgIHVuc2lnbmVkIGNoYXIsICAgIG1lbWIs IG1lbXViKQorTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc2JfbGgsICBzaWduZWQgY2hhciwgIHNp Z25lZCBzaG9ydCwgICAgIG1lbWIsIG1lbWgpCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zYl9s dWgsIHNpZ25lZCBjaGFyLCAgdW5zaWduZWQgc2hvcnQsICAgbWVtYiwgbWVtdWgpCitNRU1fTk9T SFVGMzIobWVtX25vc2h1Zl9zYl9sdywgIHNpZ25lZCBjaGFyLCAgc2lnbmVkIGludCwgICAgICAg bWVtYiwgbWVtdykKK01FTV9OT1NIVUY2NChtZW1fbm9zaHVmX3NiX2xkLCAgc2lnbmVkIGNoYXIs ICBzaWduZWQgbG9uZyBsb25nLCBtZW1iLCBtZW1kKQorCisvKiBTdG9yZSBoYWxmIGNvbWJpbmF0 aW9ucyAqLworTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc2hfbGIsICBzaWduZWQgc2hvcnQsIHNp Z25lZCBjaGFyLCAgICAgIG1lbWgsIG1lbWIpCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zaF9s dWIsIHNpZ25lZCBzaG9ydCwgdW5zaWduZWQgY2hhciwgICAgbWVtaCwgbWVtdWIpCitNRU1fTk9T SFVGMzIobWVtX25vc2h1Zl9zaF9saCwgIHNpZ25lZCBzaG9ydCwgc2lnbmVkIHNob3J0LCAgICAg bWVtaCwgbWVtaCkKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3NoX2x1aCwgc2lnbmVkIHNob3J0 LCB1bnNpZ25lZCBzaG9ydCwgICBtZW1oLCBtZW11aCkKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVm X3NoX2x3LCAgc2lnbmVkIHNob3J0LCBzaWduZWQgaW50LCAgICAgICBtZW1oLCBtZW13KQorTUVN X05PU0hVRjY0KG1lbV9ub3NodWZfc2hfbGQsICBzaWduZWQgc2hvcnQsIHNpZ25lZCBsb25nIGxv bmcsIG1lbWgsIG1lbWQpCisKKy8qIFN0b3JlIHdvcmQgY29tYmluYXRpb25zICovCitNRU1fTk9T SFVGMzIobWVtX25vc2h1Zl9zd19sYiwgIHNpZ25lZCBpbnQsICAgc2lnbmVkIGNoYXIsICAgICAg bWVtdywgbWVtYikKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3N3X2x1Yiwgc2lnbmVkIGludCwg ICB1bnNpZ25lZCBjaGFyLCAgICBtZW13LCBtZW11YikKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVm X3N3X2xoLCAgc2lnbmVkIGludCwgICBzaWduZWQgc2hvcnQsICAgICBtZW13LCBtZW1oKQorTUVN X05PU0hVRjMyKG1lbV9ub3NodWZfc3dfbHVoLCBzaWduZWQgaW50LCAgIHVuc2lnbmVkIHNob3J0 LCAgIG1lbXcsIG1lbXVoKQorTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc3dfbHcsICBzaWduZWQg aW50LCAgIHNpZ25lZCBpbnQsICAgICAgIG1lbXcsIG1lbXcpCitNRU1fTk9TSFVGNjQobWVtX25v c2h1Zl9zd19sZCwgIHNpZ25lZCBpbnQsICAgc2lnbmVkIGxvbmcgbG9uZywgbWVtdywgbWVtZCkK KworLyogU3RvcmUgZG91YmxlIGNvbWJpbmF0aW9ucyAqLworTUVNX05PU0hVRjMyKG1lbV9ub3No dWZfc2RfbGIsICBsb25nIGxvbmcsICAgIHNpZ25lZCBjaGFyLCAgICAgIG1lbWQsIG1lbWIpCitN RU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zZF9sdWIsIGxvbmcgbG9uZywgICAgdW5zaWduZWQgY2hh ciwgICAgbWVtZCwgbWVtdWIpCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zZF9saCwgIGxvbmcg bG9uZywgICAgc2lnbmVkIHNob3J0LCAgICAgbWVtZCwgbWVtaCkKK01FTV9OT1NIVUYzMihtZW1f bm9zaHVmX3NkX2x1aCwgbG9uZyBsb25nLCAgICB1bnNpZ25lZCBzaG9ydCwgICBtZW1kLCBtZW11 aCkKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3NkX2x3LCAgbG9uZyBsb25nLCAgICBzaWduZWQg aW50LCAgICAgICBtZW1kLCBtZW13KQorTUVNX05PU0hVRjY0KG1lbV9ub3NodWZfc2RfbGQsICBs b25nIGxvbmcsICAgIHNpZ25lZCBsb25nIGxvbmcsIG1lbWQsIG1lbWQpCisKK3N0YXRpYyBpbmxp bmUgdW5zaWduZWQgaW50IGNhbmNlbF9zd19sYihpbnQgcHJlZCwgaW50ICpwLCBzaWduZWQgY2hh ciAqcSwgaW50IHgpCit7CisgICAgdW5zaWduZWQgaW50IHJldDsKKyAgICBhc20gdm9sYXRpbGUo InAwID0gY21wLmVxKCU0LCAjMClcblx0IgorICAgICAgICAgICAgICAgICAie1xuXHQiCisgICAg ICAgICAgICAgICAgICIgICAgaWYgKCFwMCkgbWVtdyglMSkgPSAlM1xuXHQiCisgICAgICAgICAg ICAgICAgICIgICAgJTAgPSBtZW1iKCUyKVxuXHQiCisgICAgICAgICAgICAgICAgICJ9Om1lbV9u b3NodWZcbiIKKyAgICAgICAgICAgICAgICAgOiAiPXIiKHJldCkKKyAgICAgICAgICAgICAgICAg OiAiciIocCksICJyIihxKSwgInIiKHgpLCAiciIocHJlZCkKKyAgICAgICAgICAgICAgICAgOiAi cDAiLCAibWVtb3J5Iik7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZQordW5z aWduZWQgbG9uZyBsb25nIGNhbmNlbF9zd19sZChpbnQgcHJlZCwgaW50ICpwLCBsb25nIGxvbmcg KnEsIGludCB4KQoreworICAgIGxvbmcgbG9uZyByZXQ7CisgICAgYXNtIHZvbGF0aWxlKCJwMCA9 IGNtcC5lcSglNCwgIzApXG5cdCIKKyAgICAgICAgICAgICAgICAgIntcblx0IgorICAgICAgICAg ICAgICAgICAiICAgIGlmICghcDApIG1lbXcoJTEpID0gJTNcblx0IgorICAgICAgICAgICAgICAg ICAiICAgICUwID0gbWVtZCglMilcblx0IgorICAgICAgICAgICAgICAgICAifTptZW1fbm9zaHVm XG4iCisgICAgICAgICAgICAgICAgIDogIj1yIihyZXQpCisgICAgICAgICAgICAgICAgIDogInIi KHApLCAiciIocSksICJyIih4KSwgInIiKHByZWQpCisgICAgICAgICAgICAgICAgIDogInAwIiwg Im1lbW9yeSIpOworICAgIHJldHVybiByZXQ7Cit9CisKK3R5cGVkZWYgdW5pb24geworICAgIHNp Z25lZCBsb25nIGxvbmcgZFsyXTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdWRbMl07CisgICAg c2lnbmVkIGludCB3WzRdOworICAgIHVuc2lnbmVkIGludCB1d1s0XTsKKyAgICBzaWduZWQgc2hv cnQgaFs4XTsKKyAgICB1bnNpZ25lZCBzaG9ydCB1aFs4XTsKKyAgICBzaWduZWQgY2hhciBiWzE2 XTsKKyAgICB1bnNpZ25lZCBjaGFyIHViWzE2XTsKK30gTWVtb3J5OworCitpbnQgZXJyOworCitz dGF0aWMgdm9pZCBjaGVjazMyKGludCBuLCBpbnQgZXhwZWN0KQoreworICAgIGlmIChuICE9IGV4 cGVjdCkgeworICAgICAgICBwcmludGYoIkVSUk9SOiAweCUwOHggIT0gMHglMDh4XG4iLCBuLCBl eHBlY3QpOworICAgICAgICBlcnIrKzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrNjQo bG9uZyBsb25nIG4sIGxvbmcgbG9uZyBleHBlY3QpCit7CisgICAgaWYgKG4gIT0gZXhwZWN0KSB7 CisgICAgICAgIHByaW50ZigiRVJST1I6IDB4JTA4bGx4ICE9IDB4JTA4bGx4XG4iLCBuLCBleHBl Y3QpOworICAgICAgICBlcnIrKzsKKyAgICB9Cit9CisKK2ludCBtYWluKCkKK3sKKyAgICBNZW1v cnkgbjsKKyAgICB1bnNpZ25lZCBpbnQgcmVzMzI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHJl czY0OworCisgICAgLyoKKyAgICAgKiBTdG9yZSBieXRlIGNvbWJpbmF0aW9ucworICAgICAqLwor ICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zYl9sYigmbi5iWzBdLCAm bi5iWzBdLCAweDg3KTsKKyAgICBjaGVjazMyKHJlczMyLCAweGZmZmZmZjg3KTsKKworICAgIG4u d1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zYl9sdWIoJm4uYlswXSwgJm4udWJb MF0sIDB4ODcpOworICAgIGNoZWNrMzIocmVzMzIsIDB4MDAwMDAwODcpOworCisgICAgbi53WzBd ID0gfjA7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NiX2xoKCZuLmJbMF0sICZuLmhbMF0sIDB4 ODcpOworICAgIGNoZWNrMzIocmVzMzIsIDB4ZmZmZmZmODcpOworCisgICAgbi53WzBdID0gfjA7 CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NiX2x1aCgmbi5iWzBdLCAmbi51aFswXSwgMHg4Nyk7 CisgICAgY2hlY2szMihyZXMzMiwgMHgwMDAwZmY4Nyk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAg ICByZXMzMiA9IG1lbV9ub3NodWZfc2JfbHcoJm4uYlswXSwgJm4ud1swXSwgMHg4Nyk7CisgICAg Y2hlY2szMihyZXMzMiwgMHhmZmZmZmY4Nyk7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJl czY0ID0gbWVtX25vc2h1Zl9zYl9sZCgmbi5iWzBdLCAmbi5kWzBdLCAweDg3KTsKKyAgICBjaGVj azY0KHJlczY0LCAweGZmZmZmZmZmZmZmZmZmODdMTCk7CisKKyAgICAvKgorICAgICAqIFN0b3Jl IGhhbGYgY29tYmluYXRpb25zCisgICAgICovCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIg PSBtZW1fbm9zaHVmX3NoX2xiKCZuLmhbMF0sICZuLmJbMF0sIDB4ODc4Nyk7CisgICAgY2hlY2sz MihyZXMzMiwgMHhmZmZmZmY4Nyk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1l bV9ub3NodWZfc2hfbHViKCZuLmhbMF0sICZuLnViWzFdLCAweDhmODcpOworICAgIGNoZWNrMzIo cmVzMzIsIDB4MDAwMDAwOGYpOworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIgPSBtZW1f bm9zaHVmX3NoX2xoKCZuLmhbMF0sICZuLmhbMF0sIDB4OGE4Nyk7CisgICAgY2hlY2szMihyZXMz MiwgMHhmZmZmOGE4Nyk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1lbV9ub3No dWZfc2hfbHVoKCZuLmhbMF0sICZuLnVoWzBdLCAweDhhODcpOworICAgIGNoZWNrMzIocmVzMzIs IDB4OGE4Nyk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1lbV9ub3NodWZfc2hf bHcoJm4uaFsxXSwgJm4ud1swXSwgMHg4YTg3KTsKKyAgICBjaGVjazMyKHJlczMyLCAweDhhODdm ZmZmKTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczY0ID0gbWVtX25vc2h1Zl9zaF9sZCgm bi5oWzFdLCAmbi5kWzBdLCAweDhhODcpOworICAgIGNoZWNrNjQocmVzNjQsIDB4ZmZmZmZmZmY4 YTg3ZmZmZkxMKTsKKworICAgIC8qCisgICAgICogU3RvcmUgd29yZCBjb21iaW5hdGlvbnMKKyAg ICAgKi8KKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1lbV9ub3NodWZfc3dfbGIoJm4u d1swXSwgJm4uYlswXSwgMHgxMjM0NTY4Nyk7CisgICAgY2hlY2szMihyZXMzMiwgMHhmZmZmZmY4 Nyk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1lbV9ub3NodWZfc3dfbHViKCZu LndbMF0sICZuLnViWzBdLCAweDEyMzQ1Njg3KTsKKyAgICBjaGVjazMyKHJlczMyLCAweDAwMDAw MDg3KTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zd19saCgm bi53WzBdLCAmbi5oWzBdLCAweDEyMzRmNjc4KTsKKyAgICBjaGVjazMyKHJlczMyLCAweGZmZmZm Njc4KTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zd19sdWgo Jm4ud1swXSwgJm4udWhbMF0sIDB4MTIzNDU2NzgpOworICAgIGNoZWNrMzIocmVzMzIsIDB4MDAw MDU2NzgpOworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3N3X2x3 KCZuLndbMF0sICZuLndbMF0sIDB4MTIzNDU2NzgpOworICAgIGNoZWNrMzIocmVzMzIsIDB4MTIz NDU2NzgpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICByZXM2NCA9IG1lbV9ub3NodWZfc3df bGQoJm4ud1swXSwgJm4uZFswXSwgMHgxMjM0NTY3OCk7CisgICAgY2hlY2s2NChyZXM2NCwgMHhm ZmZmZmZmZjEyMzQ1Njc4TEwpOworCisgICAgLyoKKyAgICAgKiBTdG9yZSBkb3VibGUgY29tYmlu YXRpb25zCisgICAgICovCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICByZXMzMiA9IG1lbV9ub3No dWZfc2RfbGIoJm4uZFswXSwgJm4uYlsxXSwgMHgxMjM0NTY3ODlhYmNkZWYwKTsKKyAgICBjaGVj azMyKHJlczMyLCAweGZmZmZmZmRlKTsKKworICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzMzIg PSBtZW1fbm9zaHVmX3NkX2x1Yigmbi5kWzBdLCAmbi51YlsxXSwgMHgxMjM0NTY3ODlhYmNkZWYw KTsKKyAgICBjaGVjazMyKHJlczMyLCAweDAwMDAwMGRlKTsKKworICAgIG4uZFswXSA9IH4wTEw7 CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NkX2xoKCZuLmRbMF0sICZuLmhbMV0sIDB4MTIzNDU2 Nzg5YWJjZGVmMCk7CisgICAgY2hlY2szMihyZXMzMiwgMHhmZmZmOWFiYyk7CisKKyAgICBuLmRb MF0gPSB+MExMOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zZF9sdWgoJm4uZFswXSwgJm4udWhb MV0sIDB4MTIzNDU2Nzg5YWJjZGVmMCk7CisgICAgY2hlY2szMihyZXMzMiwgMHgwMDAwOWFiYyk7 CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zZF9sdygmbi5k WzBdLCAmbi53WzFdLCAweDEyMzQ1Njc4OWFiY2RlZjApOworICAgIGNoZWNrMzIocmVzMzIsIDB4 MTIzNDU2NzgpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICByZXM2NCA9IG1lbV9ub3NodWZf c2RfbGQoJm4uZFswXSwgJm4uZFswXSwgMHgxMjM0NTY3ODlhYmNkZWYwKTsKKyAgICBjaGVjazY0 KHJlczY0LCAweDEyMzQ1Njc4OWFiY2RlZjBMTCk7CisKKyAgICAvKgorICAgICAqIFByZWRpY2F0 ZWQgd29yZCBzdG9yZXMKKyAgICAgKi8KKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IGNh bmNlbF9zd19sYigwLCAmbi53WzBdLCAmbi5iWzBdLCAweDEyMzQ1Njc4KTsKKyAgICBjaGVjazMy KHJlczMyLCAweGZmZmZmZmZmKTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gY2Fu Y2VsX3N3X2xiKDEsICZuLndbMF0sICZuLmJbMF0sIDB4MTIzNDU2ODcpOworICAgIGNoZWNrMzIo cmVzMzIsIDB4ZmZmZmZmODcpOworCisgICAgLyoKKyAgICAgKiBQcmVkaWNhdGVkIGRvdWJsZSBz dG9yZXMKKyAgICAgKi8KKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJlczY0ID0gY2FuY2VsX3N3 X2xkKDAsICZuLndbMF0sICZuLmRbMF0sIDB4MTIzNDU2NzgpOworICAgIGNoZWNrNjQocmVzNjQs IDB4ZmZmZmZmZmZmZmZmZmZmZkxMKTsKKworICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzNjQg PSBjYW5jZWxfc3dfbGQoMSwgJm4ud1swXSwgJm4uZFswXSwgMHgxMjM0NTY3OCk7CisgICAgY2hl Y2s2NChyZXM2NCwgMHhmZmZmZmZmZjEyMzQ1Njc4TEwpOworCisgICAgbi5kWzBdID0gfjBMTDsK KyAgICByZXM2NCA9IGNhbmNlbF9zd19sZCgwLCAmbi53WzFdLCAmbi5kWzBdLCAweDEyMzQ1Njc4 KTsKKyAgICBjaGVjazY0KHJlczY0LCAweGZmZmZmZmZmZmZmZmZmZmZMTCk7CisKKyAgICBuLmRb MF0gPSB+MExMOworICAgIHJlczY0ID0gY2FuY2VsX3N3X2xkKDEsICZuLndbMV0sICZuLmRbMF0s IDB4MTIzNDU2NzgpOworICAgIGNoZWNrNjQocmVzNjQsIDB4MTIzNDU2NzhmZmZmZmZmZkxMKTsK KworICAgIC8qCisgICAgICogTm8gb3ZlcmxhcCB0ZXN0cworICAgICAqLworICAgIG4ud1swXSA9 IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zYl9sYigmbi5iWzFdLCAmbi5iWzBdLCAweDg3 KTsKKyAgICBjaGVjazMyKHJlczMyLCAweGZmZmZmZmZmKTsKKworICAgIG4ud1swXSA9IH4wOwor ICAgIHJlczMyID0gbWVtX25vc2h1Zl9zYl9sYigmbi5iWzBdLCAmbi5iWzFdLCAweDg3KTsKKyAg ICBjaGVjazMyKHJlczMyLCAweGZmZmZmZmZmKTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJl czMyID0gbWVtX25vc2h1Zl9zaF9saCgmbi5oWzFdLCAmbi5oWzBdLCAweDg3ODcpOworICAgIGNo ZWNrMzIocmVzMzIsIDB4ZmZmZmZmZmYpOworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIg PSBtZW1fbm9zaHVmX3NoX2xoKCZuLmhbMF0sICZuLmhbMV0sIDB4ODc4Nyk7CisgICAgY2hlY2sz MihyZXMzMiwgMHhmZmZmZmZmZik7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJlczMyID0g bWVtX25vc2h1Zl9zd19sdygmbi53WzBdLCAmbi53WzFdLCAweDEyMzQ1Njc4KTsKKyAgICBjaGVj azMyKHJlczMyLCAweGZmZmZmZmZmKTsKKworICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzMzIg PSBtZW1fbm9zaHVmX3N3X2x3KCZuLndbMV0sICZuLndbMF0sIDB4MTIzNDU2NzgpOworICAgIGNo ZWNrMzIocmVzMzIsIDB4ZmZmZmZmZmYpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICBuLmRb MV0gPSB+MExMOworICAgIHJlczY0ID0gbWVtX25vc2h1Zl9zZF9sZCgmbi5kWzFdLCAmbi5kWzBd LCAweDEyMzQ1Njc4OWFiY2RlZjBMTCk7CisgICAgY2hlY2s2NChyZXM2NCwgMHhmZmZmZmZmZmZm ZmZmZmZmTEwpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICBuLmRbMV0gPSB+MExMOworICAg IHJlczY0ID0gbWVtX25vc2h1Zl9zZF9sZCgmbi5kWzBdLCAmbi5kWzFdLCAweDEyMzQ1Njc4OWFi Y2RlZjBMTCk7CisgICAgY2hlY2s2NChyZXM2NCwgMHhmZmZmZmZmZmZmZmZmZmZmTEwpOworCisg ICAgcHV0cyhlcnIgPyAiRkFJTCIgOiAiUEFTUyIpOworICAgIHJldHVybiBlcnI7Cit9CmRpZmYg LS1naXQgYS90ZXN0cy90Y2cvaGV4YWdvbi9taXNjLmMgYi90ZXN0cy90Y2cvaGV4YWdvbi9taXNj LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU4NzU5ZgotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3RzL3RjZy9oZXhhZ29uL21pc2MuYwpAQCAtMCwwICsxLDM4MCBAQAorLyoK KyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJ bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNo b3J0IHVpbnQxNl90OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CisKKworc3RhdGlj IGlubGluZSB2b2lkIFM0X3N0b3JlcmhuZXdfcnIodm9pZCAqcCwgaW50IGluZGV4LCB1aW50MTZf dCB2KQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAgICAgICAgIiAgICByMCA9 ICUwXG5cbiIKKyAgICAgICAgICAgICAgICIgICAgbWVtaCglMSslMjw8IzIpID0gcjAubmV3XG5c dCIKKyAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICA6OiAiciIodiksICJyIihw KSwgInIiKGluZGV4KQorICAgICAgICAgICAgICAgOiAicjAiLCAibWVtb3J5Iik7Cit9CisKK3N0 YXRpYyB1aW50MzJfdCBkYXRhOworc3RhdGljIGlubGluZSB2b2lkICpTNF9zdG9yZXJibmV3X2Fw KHVpbnQ4X3QgdikKK3sKKyAgdm9pZCAqcmV0OworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAg ICAgICAgICAgICAgIiAgICByMCA9ICUxXG5cbiIKKyAgICAgICAgICAgICAgICIgICAgbWVtYigl MCA9ICMjZGF0YSkgPSByMC5uZXdcblx0IgorICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg ICAgICAgIDogIj1yIihyZXQpCisgICAgICAgICAgICAgICA6ICJyIih2KQorICAgICAgICAgICAg ICAgOiAicjAiLCAibWVtb3J5Iik7CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCAqUzRfc3RvcmVyaG5ld19hcCh1aW50MTZfdCB2KQoreworICB2b2lkICpyZXQ7CisgIGFz bSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAgICAgICAgICAiICAgIHIwID0gJTFcblxuIgorICAg ICAgICAgICAgICAgIiAgICBtZW1oKCUwID0gIyNkYXRhKSA9IHIwLm5ld1xuXHQiCisgICAgICAg ICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgOiAiPXIiKHJldCkKKyAgICAgICAgICAgICAg IDogInIiKHYpCisgICAgICAgICAgICAgICA6ICJyMCIsICJtZW1vcnkiKTsKKyAgcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGlubGluZSB2b2lkICpTNF9zdG9yZXJpbmV3X2FwKHVpbnQzMl90IHYp Cit7CisgIHZvaWQgKnJldDsKKyAgYXNtIHZvbGF0aWxlKCJ7XG5cdCIKKyAgICAgICAgICAgICAg ICIgICAgcjAgPSAlMVxuXG4iCisgICAgICAgICAgICAgICAiICAgIG1lbXcoJTAgPSAjI2RhdGEp ID0gcjAubmV3XG5cdCIKKyAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICA6ICI9 ciIocmV0KQorICAgICAgICAgICAgICAgOiAiciIodikKKyAgICAgICAgICAgICAgIDogInIwIiwg Im1lbW9yeSIpOworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3Rv cmVpcmJ0X2lvKHZvaWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoInAwID0gY21w LmVxKCUwLCAjMSlcblx0IgorICAgICAgICAgICAgICAgImlmIChwMCkgbWVtYiglMSsjNCk9IzI3 XG5cdCIKKyAgICAgICAgICAgICAgIDo6ICJyIihwcmVkKSwgInIiKHApCisgICAgICAgICAgICAg ICA6ICJwMCIsICJtZW1vcnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFM0X3N0b3JlaXJi Zl9pbyh2b2lkICpwLCBpbnQgcHJlZCkKK3sKKyAgYXNtIHZvbGF0aWxlKCJwMCA9IGNtcC5lcSgl MCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICJpZiAoIXAwKSBtZW1iKCUxKyM0KT0jMjdcblx0 IgorICAgICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDog InAwIiwgIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmJ0bmV3 X2lvKHZvaWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAg ICAgICAgICAgIiAgICBwMCA9IGNtcC5lcSglMCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICIg ICAgaWYgKHAwLm5ldykgbWVtYiglMSsjNCk9IzI3XG5cdCIKKyAgICAgICAgICAgICAgICJ9XG5c dCIKKyAgICAgICAgICAgICAgIDo6ICJyIihwcmVkKSwgInIiKHApCisgICAgICAgICAgICAgICA6 ICJwMCIsICJtZW1vcnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFM0X3N0b3JlaXJiZm5l d19pbyh2b2lkICpwLCBpbnQgcHJlZCkKK3sKKyAgYXNtIHZvbGF0aWxlKCJ7XG5cdCIKKyAgICAg ICAgICAgICAgICIgICAgcDAgPSBjbXAuZXEoJTAsICMxKVxuXHQiCisgICAgICAgICAgICAgICAi ICAgIGlmICghcDAubmV3KSBtZW1iKCUxKyM0KT0jMjdcblx0IgorICAgICAgICAgICAgICAgIn1c blx0IgorICAgICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAg IDogInAwIiwgIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmh0 X2lvKHZvaWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoInAwID0gY21wLmVxKCUw LCAjMSlcblx0IgorICAgICAgICAgICAgICAgImlmIChwMCkgbWVtaCglMSsjNCk9IzI3XG5cdCIK KyAgICAgICAgICAgICAgIDo6ICJyIihwcmVkKSwgInIiKHApCisgICAgICAgICAgICAgICA6ICJw MCIsICJtZW1vcnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFM0X3N0b3JlaXJoZl9pbyh2 b2lkICpwLCBpbnQgcHJlZCkKK3sKKyAgYXNtIHZvbGF0aWxlKCJwMCA9IGNtcC5lcSglMCwgIzEp XG5cdCIKKyAgICAgICAgICAgICAgICJpZiAoIXAwKSBtZW1oKCUxKyM0KT0jMjdcblx0IgorICAg ICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwg Im1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmh0bmV3X2lvKHZv aWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAgICAg ICAgIiAgICBwMCA9IGNtcC5lcSglMCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICIgICAgaWYg KHAwLm5ldykgbWVtaCglMSsjNCk9IzI3XG5cdCIKKyAgICAgICAgICAgICAgICJ9XG5cdCIKKyAg ICAgICAgICAgICAgIDo6ICJyIihwcmVkKSwgInIiKHApCisgICAgICAgICAgICAgICA6ICJwMCIs ICJtZW1vcnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFM0X3N0b3JlaXJoZm5ld19pbyh2 b2lkICpwLCBpbnQgcHJlZCkKK3sKKyAgYXNtIHZvbGF0aWxlKCJ7XG5cdCIKKyAgICAgICAgICAg ICAgICIgICAgcDAgPSBjbXAuZXEoJTAsICMxKVxuXHQiCisgICAgICAgICAgICAgICAiICAgIGlm ICghcDAubmV3KSBtZW1oKCUxKyM0KT0jMjdcblx0IgorICAgICAgICAgICAgICAgIn1cblx0Igor ICAgICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAw IiwgIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcml0X2lvKHZv aWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoInAwID0gY21wLmVxKCUwLCAjMSlc blx0IgorICAgICAgICAgICAgICAgImlmIChwMCkgbWVtdyglMSsjNCk9IzI3XG5cdCIKKyAgICAg ICAgICAgICAgIDo6ICJyIihwcmVkKSwgInIiKHApCisgICAgICAgICAgICAgICA6ICJwMCIsICJt ZW1vcnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFM0X3N0b3JlaXJpZl9pbyh2b2lkICpw LCBpbnQgcHJlZCkKK3sKKyAgYXNtIHZvbGF0aWxlKCJwMCA9IGNtcC5lcSglMCwgIzEpXG5cdCIK KyAgICAgICAgICAgICAgICJpZiAoIXAwKSBtZW13KCUxKyM0KT0jMjdcblx0IgorICAgICAgICAg ICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwgIm1lbW9y eSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcml0bmV3X2lvKHZvaWQgKnAs IGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAgICAgICAgIiAg ICBwMCA9IGNtcC5lcSglMCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICIgICAgaWYgKHAwLm5l dykgbWVtdyglMSsjNCk9IzI3XG5cdCIKKyAgICAgICAgICAgICAgICJ9XG5cdCIKKyAgICAgICAg ICAgICAgIDo6ICJyIihwcmVkKSwgInIiKHApCisgICAgICAgICAgICAgICA6ICJwMCIsICJtZW1v cnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFM0X3N0b3JlaXJpZm5ld19pbyh2b2lkICpw LCBpbnQgcHJlZCkKK3sKKyAgYXNtIHZvbGF0aWxlKCJ7XG5cdCIKKyAgICAgICAgICAgICAgICIg ICAgcDAgPSBjbXAuZXEoJTAsICMxKVxuXHQiCisgICAgICAgICAgICAgICAiICAgIGlmICghcDAu bmV3KSBtZW13KCUxKyM0KT0jMjdcblx0IgorICAgICAgICAgICAgICAgIn1cblx0IgorICAgICAg ICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwgIm1l bW9yeSIpOworfQorCisvKgorICogVGVzdCB0aGF0IGNvbXBvdW5kLWNvbXBhcmUtanVtcCBpcyBl eGVjdXRlZCBpbiAyIHBhcnRzCisgKiBGaXJzdCB3ZSBoYXZlIHRvIGRvIGFsbCB0aGUgY29tcGFy ZXMgaW4gdGhlIHBhY2tldCBhbmQKKyAqIGFjY291bnQgZm9yIGF1dG8tYW5kaW5nLiAgVGhlbiwg d2UgY2FuIGRvIHRoZSBwcmVkaWNhdGVkCisgKiBqdW1wLgorICovCitzdGF0aWMgaW5saW5lIGlu dCBjbXBuZF9jbXBfanVtcCh2b2lkKQoreworICAgIGludCByZXR2YWw7CisgICAgYXNtICgicjUg PSAjN1xuXHQiCisgICAgICAgICAicjYgPSAjOVxuXHQiCisgICAgICAgICAie1xuXHQiCisgICAg ICAgICAiICAgIHAwID0gY21wLmVxKHI1LCAjNylcblx0IgorICAgICAgICAgIiAgICBpZiAocDAu bmV3KSBqdW1wOm50IDFmXG5cdCIKKyAgICAgICAgICIgICAgcDAgPSBjbXAuZXEocjYsICM3KVxu XHQiCisgICAgICAgICAifVxuXHQiCisgICAgICAgICAiJTAgPSAjMTJcblx0IgorICAgICAgICAg Imp1bXAgMmZcblx0IgorICAgICAgICAgIjE6XG5cdCIKKyAgICAgICAgICIlMCA9ICMxM1xuXHQi CisgICAgICAgICAiMjpcblx0IgorICAgICAgICAgOiAiPXIiKHJldHZhbCkgOjogInI1IiwgInI2 IiwgInAwIik7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGlubGluZSBpbnQgdGVz dF9jbHJ0bmV3KGludCBhcmcxLCBpbnQgb2xkX3ZhbCkKK3sKKyAgaW50IHJldDsKKyAgYXNtIHZv bGF0aWxlKCJyNSA9ICUyXG5cdCIKKyAgICAgICAgICAgICAgICJ7XG5cdCIKKyAgICAgICAgICAg ICAgICAgICAicDAgPSBjbXAuZXEoJTEsICMxKVxuXHQiCisgICAgICAgICAgICAgICAgICAgImlm IChwMC5uZXcpIHI1PSMwXG5cdCIKKyAgICAgICAgICAgICAgICJ9XG5cdCIKKyAgICAgICAgICAg ICAgICIlMCA9IHI1XG5cdCIKKyAgICAgICAgICAgICAgIDogIj1yIihyZXQpCisgICAgICAgICAg ICAgICA6ICJyIihhcmcxKSwgInIiKG9sZF92YWwpCisgICAgICAgICAgICAgICA6ICJwMCIsICJy NSIpOworICByZXR1cm4gcmV0OworfQorCitpbnQgZXJyOworCitzdGF0aWMgdm9pZCBjaGVjayhp bnQgdmFsLCBpbnQgZXhwZWN0KQoreworICAgIGlmICh2YWwgIT0gZXhwZWN0KSB7CisgICAgICAg IHByaW50ZigiRVJST1I6IDB4JTA0eCAhPSAweCUwNHhcbiIsIHZhbCwgZXhwZWN0KTsKKyAgICAg ICAgZXJyKys7CisgICAgfQorfQorCit1aW50MzJfdCBpbml0WzEwXSA9IHsgMCwgMSwgMiwgMywg NCwgNSwgNiwgNywgOCwgOSB9OwordWludDMyX3QgYXJyYXlbMTBdOworCit1aW50MzJfdCBlYXJs eV9leGl0OworCisvKgorICogV3JpdGUgdGhpcyBhcyBhIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgY2Fu J3QgZ3VhcmFudGVlIHRoZSBjb21waWxlciB3aWxsCisgKiBhbGxvY2F0ZSBhIGZyYW1lIHdpdGgg anVzdCB0aGUgU0wyX3JldHVybl90bmV3IHBhY2tldC4KKyAqLworc3RhdGljIHZvaWQgU0wyX3Jl dHVybl90bmV3KGludCB4KTsKK2FzbSAoIlNMMl9yZXR1cm5fdG5ldzpcblx0IgorICAgICAiICAg YWxsb2NmcmFtZSgjMClcblx0IgorICAgICAiICAgcjEgPSAjMVxuXHQiCisgICAgICIgICBtZW13 KCMjZWFybHlfZXhpdCkgPSByMVxuXHQiCisgICAgICIgICB7XG5cdCIKKyAgICAgIiAgICAgICBw MCA9IGNtcC5lcShyMCwgIzEpXG5cdCIKKyAgICAgIiAgICAgICBpZiAocDAubmV3KSBkZWFsbG9j X3JldHVybjpudFxuXHQiICAgIC8qIFNMMl9yZXR1cm5fdG5ldyAqLworICAgICAiICAgfVxuXHQi CisgICAgICIgICByMSA9ICMwXG5cdCIKKyAgICAgIiAgIG1lbXcoIyNlYXJseV9leGl0KSA9IHIx XG5cdCIKKyAgICAgIiAgIGRlYWxsb2NfcmV0dXJuXG5cdCIKKyAgICApOworCitzdGF0aWMgbG9u ZyBsb25nIGNyZWdfcGFpcihpbnQgeCwgaW50IHkpCit7CisgICAgbG9uZyBsb25nIHJldHZhbDsK KyAgICBhc20gKCJtMCA9ICUxXG5cdCIKKyAgICAgICAgICJtMSA9ICUyXG5cdCIKKyAgICAgICAg ICIlMCA9IGM3OjZcblx0IgorICAgICAgICAgOiAiPXIiKHJldHZhbCkgOiAiciIoeCksICJyIih5 KSA6ICJtMCIsICJtMSIpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludCBtYWluKCkKK3sK KworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9mKGFycmF5KSk7CisgICAgUzRfc3RvcmVy aG5ld19ycihhcnJheSwgNCwgMHhmZmZmKTsKKyAgICBjaGVjayhhcnJheVs0XSwgMHhmZmZmKTsK KworICAgIGRhdGEgPSB+MDsKKyAgICBjaGVjaygodWludDMyX3QpUzRfc3RvcmVyYm5ld19hcCgw eDEyKSwgKHVpbnQzMl90KSZkYXRhKTsKKyAgICBjaGVjayhkYXRhLCAweGZmZmZmZjEyKTsKKwor ICAgIGRhdGEgPSB+MDsKKyAgICBjaGVjaygodWludDMyX3QpUzRfc3RvcmVyaG5ld19hcCgweDEy MzQpLCAodWludDMyX3QpJmRhdGEpOworICAgIGNoZWNrKGRhdGEsIDB4ZmZmZjEyMzQpOworCisg ICAgZGF0YSA9IH4wOworICAgIGNoZWNrKCh1aW50MzJfdClTNF9zdG9yZXJpbmV3X2FwKDB4MTIz NDU2NzgpLCAodWludDMyX3QpJmRhdGEpOworICAgIGNoZWNrKGRhdGEsIDB4MTIzNDU2NzgpOwor CisgICAgLyogQnl0ZSAqLworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9mKGFycmF5KSk7 CisgICAgUzRfc3RvcmVpcmJ0X2lvKCZhcnJheVsxXSwgMSk7CisgICAgY2hlY2soYXJyYXlbMl0s IDI3KTsKKyAgICBTNF9zdG9yZWlyYnRfaW8oJmFycmF5WzJdLCAwKTsKKyAgICBjaGVjayhhcnJh eVszXSwgMyk7CisKKyAgICBtZW1jcHkoYXJyYXksIGluaXQsIHNpemVvZihhcnJheSkpOworICAg IFM0X3N0b3JlaXJiZl9pbygmYXJyYXlbM10sIDApOworICAgIGNoZWNrKGFycmF5WzRdLCAyNyk7 CisgICAgUzRfc3RvcmVpcmJmX2lvKCZhcnJheVs0XSwgMSk7CisgICAgY2hlY2soYXJyYXlbNV0s IDUpOworCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2YoYXJyYXkpKTsKKyAgICBTNF9z dG9yZWlyYnRuZXdfaW8oJmFycmF5WzVdLCAxKTsKKyAgICBjaGVjayhhcnJheVs2XSwgMjcpOwor ICAgIFM0X3N0b3JlaXJidG5ld19pbygmYXJyYXlbNl0sIDApOworICAgIGNoZWNrKGFycmF5Wzdd LCA3KTsKKworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9mKGFycmF5KSk7CisgICAgUzRf c3RvcmVpcmJmbmV3X2lvKCZhcnJheVs3XSwgMCk7CisgICAgY2hlY2soYXJyYXlbOF0sIDI3KTsK KyAgICBTNF9zdG9yZWlyYmZuZXdfaW8oJmFycmF5WzhdLCAxKTsKKyAgICBjaGVjayhhcnJheVs5 XSwgOSk7CisKKyAgICAvKiBIYWxmIHdvcmQgKi8KKyAgICBtZW1jcHkoYXJyYXksIGluaXQsIHNp emVvZihhcnJheSkpOworICAgIFM0X3N0b3JlaXJodF9pbygmYXJyYXlbMV0sIDEpOworICAgIGNo ZWNrKGFycmF5WzJdLCAyNyk7CisgICAgUzRfc3RvcmVpcmh0X2lvKCZhcnJheVsyXSwgMCk7Cisg ICAgY2hlY2soYXJyYXlbM10sIDMpOworCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2Yo YXJyYXkpKTsKKyAgICBTNF9zdG9yZWlyaGZfaW8oJmFycmF5WzNdLCAwKTsKKyAgICBjaGVjayhh cnJheVs0XSwgMjcpOworICAgIFM0X3N0b3JlaXJoZl9pbygmYXJyYXlbNF0sIDEpOworICAgIGNo ZWNrKGFycmF5WzVdLCA1KTsKKworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9mKGFycmF5 KSk7CisgICAgUzRfc3RvcmVpcmh0bmV3X2lvKCZhcnJheVs1XSwgMSk7CisgICAgY2hlY2soYXJy YXlbNl0sIDI3KTsKKyAgICBTNF9zdG9yZWlyaHRuZXdfaW8oJmFycmF5WzZdLCAwKTsKKyAgICBj aGVjayhhcnJheVs3XSwgNyk7CisKKyAgICBtZW1jcHkoYXJyYXksIGluaXQsIHNpemVvZihhcnJh eSkpOworICAgIFM0X3N0b3JlaXJoZm5ld19pbygmYXJyYXlbN10sIDApOworICAgIGNoZWNrKGFy cmF5WzhdLCAyNyk7CisgICAgUzRfc3RvcmVpcmhmbmV3X2lvKCZhcnJheVs4XSwgMSk7CisgICAg Y2hlY2soYXJyYXlbOV0sIDkpOworCisgICAgLyogV29yZCAqLworICAgIG1lbWNweShhcnJheSwg aW5pdCwgc2l6ZW9mKGFycmF5KSk7CisgICAgUzRfc3RvcmVpcml0X2lvKCZhcnJheVsxXSwgMSk7 CisgICAgY2hlY2soYXJyYXlbMl0sIDI3KTsKKyAgICBTNF9zdG9yZWlyaXRfaW8oJmFycmF5WzJd LCAwKTsKKyAgICBjaGVjayhhcnJheVszXSwgMyk7CisKKyAgICBtZW1jcHkoYXJyYXksIGluaXQs IHNpemVvZihhcnJheSkpOworICAgIFM0X3N0b3JlaXJpZl9pbygmYXJyYXlbM10sIDApOworICAg IGNoZWNrKGFycmF5WzRdLCAyNyk7CisgICAgUzRfc3RvcmVpcmlmX2lvKCZhcnJheVs0XSwgMSk7 CisgICAgY2hlY2soYXJyYXlbNV0sIDUpOworCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXpl b2YoYXJyYXkpKTsKKyAgICBTNF9zdG9yZWlyaXRuZXdfaW8oJmFycmF5WzVdLCAxKTsKKyAgICBj aGVjayhhcnJheVs2XSwgMjcpOworICAgIFM0X3N0b3JlaXJpdG5ld19pbygmYXJyYXlbNl0sIDAp OworICAgIGNoZWNrKGFycmF5WzddLCA3KTsKKworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6 ZW9mKGFycmF5KSk7CisgICAgUzRfc3RvcmVpcmlmbmV3X2lvKCZhcnJheVs3XSwgMCk7CisgICAg Y2hlY2soYXJyYXlbOF0sIDI3KTsKKyAgICBTNF9zdG9yZWlyaWZuZXdfaW8oJmFycmF5WzhdLCAx KTsKKyAgICBjaGVjayhhcnJheVs5XSwgOSk7CisKKyAgICBpbnQgeCA9IGNtcG5kX2NtcF9qdW1w KCk7CisgICAgY2hlY2soeCwgMTIpOworCisgICAgU0wyX3JldHVybl90bmV3KDApOworICAgIGNo ZWNrKGVhcmx5X2V4aXQsIDApOworICAgIFNMMl9yZXR1cm5fdG5ldygxKTsKKyAgICBjaGVjayhl YXJseV9leGl0LCAxKTsKKworICAgIGxvbmcgbG9uZyBwYWlyID0gY3JlZ19wYWlyKDUsIDcpOwor ICAgIGNoZWNrKChpbnQpcGFpciwgNSk7CisgICAgY2hlY2soKGludCkocGFpciA+PiAzMiksIDcp OworCisgICAgaW50IHJlcyA9IHRlc3RfY2xydG5ldygxLCA3KTsKKyAgICBjaGVjayhyZXMsIDAp OworICAgIHJlcyA9IHRlc3RfY2xydG5ldygyLCA3KTsKKyAgICBjaGVjayhyZXMsIDcpOworCisg ICAgcHV0cyhlcnIgPyAiRkFJTCIgOiAiUEFTUyIpOworICAgIHJldHVybiBlcnI7Cit9CmRpZmYg LS1naXQgYS90ZXN0cy90Y2cvaGV4YWdvbi9wcmVnX2FsaWFzLmMgYi90ZXN0cy90Y2cvaGV4YWdv bi9wcmVnX2FsaWFzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNhYzQ2 OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3RjZy9oZXhhZ29uL3ByZWdfYWxpYXMuYwpAQCAt MCwwICsxLDE2OSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1YWxjb21tIElu bm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4K Kworc3RhdGljIGlubGluZSBpbnQgcHJlZ19hbGlhcyhpbnQgdjAsIGludCB2MSwgaW50IHYyLCBp bnQgdjMpCit7CisgIGludCByZXQ7CisgIGFzbSB2b2xhdGlsZSgicDAgPSAlMVxuXHQiCisgICAg ICAgICAgICAgICAicDEgPSAlMlxuXHQiCisgICAgICAgICAgICAgICAicDIgPSAlM1xuXHQiCisg ICAgICAgICAgICAgICAicDMgPSAlNFxuXHQiCisgICAgICAgICAgICAgICAiJTAgPSBDNFxuIgor ICAgICAgICAgICAgICAgOiAiPXIiKHJldCkKKyAgICAgICAgICAgICAgIDogInIiKHYwKSwgInIi KHYxKSwgInIiKHYyKSwgInIiKHYzKQorICAgICAgICAgICAgICAgOiAicDAiLCAicDEiLCAicDIi LCAicDMiKTsKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZSBpbnQgcHJlZ19hbGlh c19wYWlyKGludCB2MCwgaW50IHYxLCBpbnQgdjIsIGludCB2MykKK3sKKyAgbG9uZyBsb25nIGM1 NDsKKyAgYXNtIHZvbGF0aWxlKCJwMCA9ICUxXG5cdCIKKyAgICAgICAgICAgICAgICJwMSA9ICUy XG5cdCIKKyAgICAgICAgICAgICAgICJwMiA9ICUzXG5cdCIKKyAgICAgICAgICAgICAgICJwMyA9 ICU0XG5cdCIKKyAgICAgICAgICAgICAgICIlMCA9IEM1OjRcbiIKKyAgICAgICAgICAgICAgIDog Ij1yIihjNTQpCisgICAgICAgICAgICAgICA6ICJyIih2MCksICJyIih2MSksICJyIih2MiksICJy Iih2MykKKyAgICAgICAgICAgICAgIDogInAwIiwgInAxIiwgInAyIiwgInAzIik7CisgIHJldHVy biAoaW50KWM1NDsKK30KKwordHlwZWRlZiB1bmlvbiB7CisgICAgaW50IGNyZWc7CisgICAgc3Ry dWN0IHsKKyAgICAgIHVuc2lnbmVkIGNoYXIgcDA7CisgICAgICB1bnNpZ25lZCBjaGFyIHAxOwor ICAgICAgdW5zaWduZWQgY2hhciBwMjsKKyAgICAgIHVuc2lnbmVkIGNoYXIgcDM7CisgICAgfSBw cmVnczsKK30gUFJlZ3M7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcmVnX2FsaWFzKGludCBjdmFs LCBQUmVncyAqcHJlZ3MpCit7CisgIHVuc2lnbmVkIGNoYXIgdmFsOworICBhc20gdm9sYXRpbGUo ImM0ID0gJTAiIDogOiAiciIoY3ZhbCkpOworCisgIGFzbSB2b2xhdGlsZSgiJTAgPSBwMCIgOiAi PXIiKHZhbCkpOworICBwcmVncy0+cHJlZ3MucDAgPSB2YWw7CisgIGFzbSB2b2xhdGlsZSgiJTAg PSBwMSIgOiAiPXIiKHZhbCkpOworICBwcmVncy0+cHJlZ3MucDEgPSB2YWw7CisgIGFzbSB2b2xh dGlsZSgiJTAgPSBwMiIgOiAiPXIiKHZhbCkpOworICBwcmVncy0+cHJlZ3MucDIgPSB2YWw7Cisg IGFzbSB2b2xhdGlsZSgiJTAgPSBwMyIgOiAiPXIiKHZhbCkpOworICBwcmVncy0+cHJlZ3MucDMg PSB2YWw7Cit9CisKK2ludCBlcnI7CisKK3N0YXRpYyB2b2lkIGNoZWNrKGludCB2YWwsIGludCBl eHBlY3QpCit7CisgICAgaWYgKHZhbCAhPSBleHBlY3QpIHsKKyAgICAgICAgcHJpbnRmKCJFUlJP UjogMHglMDh4ICE9IDB4JTA4eFxuIiwgdmFsLCBleHBlY3QpOworICAgICAgICBlcnIrKzsKKyAg ICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcmVnX2FsaWFzX3BhaXIodW5zaWduZWQgaW50 IGN2YWwsIFBSZWdzICpwcmVncykKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIGN2YWxfcGFpciA9 ICgweGRlYWRiZWVmVUxMIDw8IDMyKSB8IGN2YWw7CisgIHVuc2lnbmVkIGNoYXIgdmFsOworICBp bnQgYzU7CisgIGFzbSB2b2xhdGlsZSgiYzU6NCA9ICUwIiA6IDogInIiKGN2YWxfcGFpcikpOwor CisgIGFzbSB2b2xhdGlsZSgiJTAgPSBwMCIgOiAiPXIiKHZhbCkpOworICBwcmVncy0+cHJlZ3Mu cDAgPSB2YWw7CisgIGFzbSB2b2xhdGlsZSgiJTAgPSBwMSIgOiAiPXIiKHZhbCkpOworICBwcmVn cy0+cHJlZ3MucDEgPSB2YWw7CisgIGFzbSB2b2xhdGlsZSgiJTAgPSBwMiIgOiAiPXIiKHZhbCkp OworICBwcmVncy0+cHJlZ3MucDIgPSB2YWw7CisgIGFzbSB2b2xhdGlsZSgiJTAgPSBwMyIgOiAi PXIiKHZhbCkpOworICBwcmVncy0+cHJlZ3MucDMgPSB2YWw7CisgIGFzbSB2b2xhdGlsZSgiJTAg PSBjNSIgOiAiPXIiKGM1KSk7CisgIGNoZWNrKGM1LCAweGRlYWRiZWVmKTsKK30KKworaW50IG1h aW4oKQoreworICAgIGludCBjNDsKKyAgICBQUmVncyBwcmVnczsKKworICAgIGM0ID0gcHJlZ19h bGlhcygweGZmLCAweDAwLCAweGZmLCAweDAwKTsKKyAgICBjaGVjayhjNCwgMHgwMGZmMDBmZik7 CisgICAgYzQgPSBwcmVnX2FsaWFzKDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDApOworICAgIGNoZWNr KGM0LCAweDAwMDAwMGZmKTsKKyAgICBjNCA9IHByZWdfYWxpYXMoMHgwMCwgMHhmZiwgMHgwMCwg MHgwMCk7CisgICAgY2hlY2soYzQsIDB4MDAwMGZmMDApOworICAgIGM0ID0gcHJlZ19hbGlhcygw eDAwLCAweDAwLCAweGZmLCAweDAwKTsKKyAgICBjaGVjayhjNCwgMHgwMGZmMDAwMCk7CisgICAg YzQgPSBwcmVnX2FsaWFzKDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYpOworICAgIGNoZWNrKGM0LCAw eGZmMDAwMDAwKTsKKyAgICBjNCA9IHByZWdfYWxpYXMoMHhmZiwgMHhmZiwgMHhmZiwgMHhmZik7 CisgICAgY2hlY2soYzQsIDB4ZmZmZmZmZmYpOworCisgICAgYzQgPSBwcmVnX2FsaWFzX3BhaXIo MHhmZiwgMHgwMCwgMHhmZiwgMHgwMCk7CisgICAgY2hlY2soYzQsIDB4MDBmZjAwZmYpOworICAg ICAgYzQgPSBwcmVnX2FsaWFzX3BhaXIoMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCk7CisgICAgY2hl Y2soYzQsIDB4MDAwMDAwZmYpOworICAgIGM0ID0gcHJlZ19hbGlhc19wYWlyKDB4MDAsIDB4ZmYs IDB4MDAsIDB4MDApOworICAgIGNoZWNrKGM0LCAweDAwMDBmZjAwKTsKKyAgICBjNCA9IHByZWdf YWxpYXNfcGFpcigweDAwLCAweDAwLCAweGZmLCAweDAwKTsKKyAgICBjaGVjayhjNCwgMHgwMGZm MDAwMCk7CisgICAgYzQgPSBwcmVnX2FsaWFzX3BhaXIoMHgwMCwgMHgwMCwgMHgwMCwgMHhmZik7 CisgICAgY2hlY2soYzQsIDB4ZmYwMDAwMDApOworICAgIGM0ID0gcHJlZ19hbGlhc19wYWlyKDB4 ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYpOworICAgIGNoZWNrKGM0LCAweGZmZmZmZmZmKTsKKworICAg IGNyZWdfYWxpYXMoMHgwMGZmMDBmZiwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAw eDAwZmYwMGZmKTsKKyAgICBjcmVnX2FsaWFzKDB4MDBmZmZmMDAsICZwcmVncyk7CisgICAgY2hl Y2socHJlZ3MuY3JlZywgMHgwMGZmZmYwMCk7CisgICAgY3JlZ19hbGlhcygweDAwMDAwMDAwLCAm cHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDAwMDAwMDApOworICAgIGNyZWdfYWxp YXMoMHhmZjAwMDAwMCwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweGZmMDAwMDAw KTsKKyAgICBjcmVnX2FsaWFzKDB4MDBmZjAwMDAsICZwcmVncyk7CisgICAgY2hlY2socHJlZ3Mu Y3JlZywgMHgwMGZmMDAwMCk7CisgICAgY3JlZ19hbGlhcygweDAwMDBmZjAwLCAmcHJlZ3MpOwor ICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDAwMGZmMDApOworICAgIGNyZWdfYWxpYXMoMHgwMDAw MDBmZiwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweDAwMDAwMGZmKTsKKyAgICBj cmVnX2FsaWFzKDB4ZmZmZmZmZmYsICZwcmVncyk7CisgICAgY2hlY2socHJlZ3MuY3JlZywgMHhm ZmZmZmZmZik7CisKKyAgICBjcmVnX2FsaWFzX3BhaXIoMHgwMGZmMDBmZiwgJnByZWdzKTsKKyAg ICBjaGVjayhwcmVncy5jcmVnLCAweDAwZmYwMGZmKTsKKyAgICBjcmVnX2FsaWFzX3BhaXIoMHgw MGZmZmYwMCwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweDAwZmZmZjAwKTsKKyAg ICBjcmVnX2FsaWFzX3BhaXIoMHgwMDAwMDAwMCwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5j cmVnLCAweDAwMDAwMDAwKTsKKyAgICBjcmVnX2FsaWFzX3BhaXIoMHhmZjAwMDAwMCwgJnByZWdz KTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweGZmMDAwMDAwKTsKKyAgICBjcmVnX2FsaWFzX3Bh aXIoMHgwMGZmMDAwMCwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweDAwZmYwMDAw KTsKKyAgICBjcmVnX2FsaWFzX3BhaXIoMHgwMDAwZmYwMCwgJnByZWdzKTsKKyAgICBjaGVjayhw cmVncy5jcmVnLCAweDAwMDBmZjAwKTsKKyAgICBjcmVnX2FsaWFzX3BhaXIoMHgwMDAwMDBmZiwg JnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweDAwMDAwMGZmKTsKKyAgICBjcmVnX2Fs aWFzX3BhaXIoMHhmZmZmZmZmZiwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweGZm ZmZmZmZmKTsKKworICAgIHB1dHMoZXJyID8gIkZBSUwiIDogIlBBU1MiKTsKKyAgICByZXR1cm4g ZXJyOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvdGNnL2hleGFnb24vTWFrZWZpbGUudGFyZ2V0IGIv dGVzdHMvdGNnL2hleGFnb24vTWFrZWZpbGUudGFyZ2V0CmluZGV4IDEwYjdjODQuLmE1NGUzYzcg MTAwNjQ0Ci0tLSBhL3Rlc3RzL3RjZy9oZXhhZ29uL01ha2VmaWxlLnRhcmdldAorKysgYi90ZXN0 cy90Y2cvaGV4YWdvbi9NYWtlZmlsZS50YXJnZXQKQEAgLTI4LDMgKzI4LDE4IEBAIGVuZGlmCiAK IAogQ0ZMQUdTICs9IC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMgLVduby11bmRlZmlu ZWQtaW50ZXJuYWwKKworSEVYX1NSQz0kKFNSQ19QQVRIKS90ZXN0cy90Y2cvaGV4YWdvbgorVlBB VEggKz0gJChIRVhfU1JDKQorCitmaXJzdDogJChIRVhfU1JDKS9maXJzdC5TCisJJChDQykgLXN0 YXRpYyAtbXY2NyAtbm9zdGRsaWIgJF4gLW8gJEAKKworSEVYX1RFU1RTID0gZmlyc3QKK0hFWF9U RVNUUyArPSBtaXNjCitIRVhfVEVTVFMgKz0gcHJlZ19hbGlhcworSEVYX1RFU1RTICs9IGR1YWxf c3RvcmVzCitIRVhfVEVTVFMgKz0gbWVtX25vc2h1ZgorSEVYX1RFU1RTICs9IGF0b21pY3MKKwor VEVTVFMgKz0gJChIRVhfVEVTVFMpCmRpZmYgLS1naXQgYS90ZXN0cy90Y2cvaGV4YWdvbi9maXJz dC5TIGIvdGVzdHMvdGNnL2hleGFnb24vZmlyc3QuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lOWYyZDk2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGNnL2hleGFnb24v Zmlyc3QuUwpAQCAtMCwwICsxLDU2IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEg UXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq CisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNkZWZpbmUg U1lTX3dyaXRlCQkgNjQKKyNkZWZpbmUgU1lTX2V4aXRfZ3JvdXAgICAgICAgICAgIDk0CisjZGVm aW5lIFNZU19leGl0ICAgICAgICAgICAgICAgICA5MworCisjZGVmaW5lIEZEX1NURE9VVCAgICAg ICAgICAgICAgICAxCisKKwkudHlwZQlzdHIsQG9iamVjdAorCS5zZWN0aW9uCS5yb2RhdGEKK3N0 cjoKKwkuc3RyaW5nCSJIZWxsbyFcbiIKKwkuc2l6ZQlzdHIsIDgKKworLnRleHQKKy5nbG9iYWwg X3N0YXJ0Citfc3RhcnQ6CisJcjYgPSAjU1lTX3dyaXRlCisJcjAgPSAjRkRfU1RET1VUCisJcjEg PSAjI3N0cgorCXIyID0gIzcKKwl0cmFwMCgjMSkKKworCXIwID0gIzAKKwlyNiA9ICNTWVNfZXhp dF9ncm91cAorCXRyYXAwKCMxKQorCisuc2VjdGlvbiAiLm5vdGUuQUJJLXRhZyIsICJhIgorLmFs aWduIDQKKy5sb25nIDFmIC0gMGYgICAgICAgICAgLyogbmFtZSBsZW5ndGggKi8KKy5sb25nIDNm IC0gMmYgICAgICAgICAgLyogZGF0YSBsZW5ndGggKi8KKy5sb25nICAxICAgICAgICAgICAgICAg Lyogbm90ZSB0eXBlICovCisKKy8qCisgKiB2ZW5kb3IgbmFtZSBzZWVtcyBsaWtlIHRoaXMgc2hv dWxkIGJlIE1VU0wgYnV0IGxsZGIgZG9lc24ndCBhZ3JlZS4KKyAqLworMDogICAgIC5hc2NpeiAi R05VIgorMTogICAgIC5hbGlnbiA0CisyOiAgICAgLmxvbmcgMCAvKiBsaW51eCAqLworICAgICAg IC5sb25nIDMsMCwwCiszOiAgICAgLmFsaWduIDQKLS0gCjIuNy40Cgo=