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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 B0387C07E99 for ; Mon, 5 Jul 2021 23:46:26 +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 5B50F60238 for ; Mon, 5 Jul 2021 23:46:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5B50F60238 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]:34998 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m0YID-0003j2-HK for qemu-devel@archiver.kernel.org; Mon, 05 Jul 2021 19:46:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35574) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m0Y7L-0004Sf-4d for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:35:11 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:37352) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1m0Y7I-0004a6-7F for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:35:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1625528108; x=1657064108; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Hmqc5yEhqcedysfd8G5DYoQNdDeNGnFtnjqTSrafu2g=; b=xRBsTus25MtohPSB4UJ6slW7QUmYiUPOdsRTqO/WjCBXQYxXalUM/AGz lAn88jVuoBLnPfoHUzabNd1Shk0UnCXcoK4uXgnYlH5ltyfRHhcRJ49EP Kw895vNQixDzumuAY0C46+HhGUpfyytZS57cbsPSA8dvzoIFMiPPhf/TX c=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 05 Jul 2021 16:34:39 -0700 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; 05 Jul 2021 16:34:38 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 008F41530; Mon, 5 Jul 2021 18:34:37 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH 13/20] Hexagon HVX (target/hexagon) TCG generation Date: Mon, 5 Jul 2021 18:34:27 -0500 Message-Id: <1625528074-19440-14-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> References: <1625528074-19440-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.249, 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, peter.maydell@linaro.org, bcain@quicinc.com, richard.henderson@linaro.org, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5oIHwgIDU0ICsrKysrKysrKysrKwogdGFyZ2V0L2hl eGFnb24vZ2VucHRyLmMgICAgfCAgMTUgKysrKwogdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMg fCAxOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDI2OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vdHJhbnNsYXRlLmggYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaAppbmRleCA3MDNmZDEz Li5mZTNjN2M1IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaAorKysgYi90 YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaApAQCAtMjksNiArMjksNyBAQCB0eXBlZGVmIHN0cnVj dCBEaXNhc0NvbnRleHQgewogICAgIHVpbnQzMl90IG1lbV9pZHg7CiAgICAgdWludDMyX3QgbnVt X3BhY2tldHM7CiAgICAgdWludDMyX3QgbnVtX2luc25zOworICAgIHVpbnQzMl90IG51bV9odnhf aW5zbnM7CiAgICAgaW50IHJlZ19sb2dbUkVHX1dSSVRFU19NQVhdOwogICAgIGludCByZWdfbG9n X2lkeDsKICAgICBERUNMQVJFX0JJVE1BUChyZWdzX3dyaXR0ZW4sIFRPVEFMX1BFUl9USFJFQURf UkVHUyk7CkBAIC0zNyw2ICszOCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBEaXNhc0NvbnRleHQgewog ICAgIERFQ0xBUkVfQklUTUFQKHByZWdzX3dyaXR0ZW4sIE5VTV9QUkVHUyk7CiAgICAgdWludDhf dCBzdG9yZV93aWR0aFtTVE9SRVNfTUFYXTsKICAgICBib29sIHMxX3N0b3JlX3Byb2Nlc3NlZDsK KyAgICBpbnQgdnJlZ19sb2dbTlVNX1ZSRUdTXTsKKyAgICBib29sIHZyZWdfaXNfcHJlZGljYXRl ZFtOVU1fVlJFR1NdOworICAgIGludCB2cmVnX2xvZ19pZHg7CisgICAgREVDTEFSRV9CSVRNQVAo dnJlZ3NfdXBkYXRlZF90bXAsIE5VTV9WUkVHUyk7CisgICAgREVDTEFSRV9CSVRNQVAodnJlZ3Nf dXBkYXRlZCwgTlVNX1ZSRUdTKTsKKyAgICBERUNMQVJFX0JJVE1BUCh2cmVnc19zZWxlY3QsIE5V TV9WUkVHUyk7CisgICAgaW50IHFyZWdfbG9nW05VTV9RUkVHU107CisgICAgYm9vbCBxcmVnX2lz X3ByZWRpY2F0ZWRbTlVNX1FSRUdTXTsKKyAgICBpbnQgcXJlZ19sb2dfaWR4OworICAgIGJvb2wg aXNfZ2F0aGVyX3N0b3JlX2luc247CiB9IERpc2FzQ29udGV4dDsKIAogc3RhdGljIGlubGluZSB2 b2lkIGN0eF9sb2dfcmVnX3dyaXRlKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgcm51bSkKQEAgLTY3 LDYgKzc4LDQxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19wcmVsb2FkZWQoRGlzYXNDb250ZXh0 ICpjdHgsIGludCBudW0pCiAgICAgcmV0dXJuIHRlc3RfYml0KG51bSwgY3R4LT5yZWdzX3dyaXR0 ZW4pOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY3R4X2xvZ192cmVnX3dyaXRlKERpc2FzQ29u dGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm51 bSwgVlJlZ1dyaXRlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIGlzX3ByZWRpY2F0ZWQpCit7CisgICAgaWYgKHR5cGUgIT0gRVhUX1RNUCkgewor ICAgICAgICBjdHgtPnZyZWdfbG9nW2N0eC0+dnJlZ19sb2dfaWR4XSA9IHJudW07CisgICAgICAg IGN0eC0+dnJlZ19pc19wcmVkaWNhdGVkW2N0eC0+dnJlZ19sb2dfaWR4XSA9IGlzX3ByZWRpY2F0 ZWQ7CisgICAgICAgIGN0eC0+dnJlZ19sb2dfaWR4Kys7CisKKyAgICAgICAgc2V0X2JpdChybnVt LCBjdHgtPnZyZWdzX3VwZGF0ZWQpOworICAgIH0KKyAgICBpZiAodHlwZSA9PSBFWFRfTkVXKSB7 CisgICAgICAgIHNldF9iaXQocm51bSwgY3R4LT52cmVnc19zZWxlY3QpOworICAgIH0KKyAgICBp ZiAodHlwZSA9PSBFWFRfVE1QKSB7CisgICAgICAgIHNldF9iaXQocm51bSwgY3R4LT52cmVnc191 cGRhdGVkX3RtcCk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY3R4X2xvZ192cmVn X3dyaXRlX3BhaXIoRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHJudW0sIFZSZWdXcml0ZVR5cGUgdHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3ByZWRpY2F0ZWQpCit7 CisgICAgY3R4X2xvZ192cmVnX3dyaXRlKGN0eCwgcm51bSBeIDAsIHR5cGUsIGlzX3ByZWRpY2F0 ZWQpOworICAgIGN0eF9sb2dfdnJlZ193cml0ZShjdHgsIHJudW0gXiAxLCB0eXBlLCBpc19wcmVk aWNhdGVkKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGN0eF9sb2dfcXJlZ193cml0ZShEaXNh c0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHJudW0sIGJvb2wgaXNfcHJlZGljYXRlZCkKK3sKKyAgICBjdHgtPnFyZWdfbG9nW2N0eC0+cXJl Z19sb2dfaWR4XSA9IHJudW07CisgICAgY3R4LT5xcmVnX2lzX3ByZWRpY2F0ZWRbY3R4LT5xcmVn X2xvZ19pZHhdID0gaXNfcHJlZGljYXRlZDsKKyAgICBjdHgtPnFyZWdfbG9nX2lkeCsrOworfQor CiBleHRlcm4gVENHdiBoZXhfZ3ByW1RPVEFMX1BFUl9USFJFQURfUkVHU107CiBleHRlcm4gVENH diBoZXhfcHJlZFtOVU1fUFJFR1NdOwogZXh0ZXJuIFRDR3YgaGV4X25leHRfUEM7CkBAIC04NSw2 ICsxMzEsMTQgQEAgZXh0ZXJuIFRDR3YgaGV4X2RjemVyb19hZGRyOwogZXh0ZXJuIFRDR3YgaGV4 X2xsc2NfYWRkcjsKIGV4dGVybiBUQ0d2IGhleF9sbHNjX3ZhbDsKIGV4dGVybiBUQ0d2X2k2NCBo ZXhfbGxzY192YWxfaTY0OworZXh0ZXJuIFRDR3YgaGV4X2lzX2dhdGhlcl9zdG9yZV9pbnNuOwor ZXh0ZXJuIFRDR3YgaGV4X1ZSZWdzX3VwZGF0ZWRfdG1wOworZXh0ZXJuIFRDR3YgaGV4X1ZSZWdz X3VwZGF0ZWQ7CitleHRlcm4gVENHdiBoZXhfVlJlZ3Nfc2VsZWN0OworZXh0ZXJuIFRDR3YgaGV4 X1FSZWdzX3VwZGF0ZWQ7CitleHRlcm4gVENHdiBoZXhfdnN0b3JlX2FkZHJbVlNUT1JFU19NQVhd OworZXh0ZXJuIFRDR3YgaGV4X3ZzdG9yZV9zaXplW1ZTVE9SRVNfTUFYXTsKK2V4dGVybiBUQ0d2 IGhleF92c3RvcmVfcGVuZGluZ1tWU1RPUkVTX01BWF07CiAKIHZvaWQgcHJvY2Vzc19zdG9yZShE aXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QsIGludCBzbG90X251bSk7CiAjZW5kaWYKZGlm ZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5jIGIvdGFyZ2V0L2hleGFnb24vZ2VucHRy LmMKaW5kZXggNzMzMzI5OS4uZGE4NTI3ZCAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vZ2Vu cHRyLmMKKysrIGIvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMKQEAgLTE2Nyw2ICsxNjcsOSBAQCBz dGF0aWMgaW5saW5lIHZvaWQgZ2VuX3JlYWRfY3RybF9yZWcoRGlzYXNDb250ZXh0ICpjdHgsIGNv bnN0IGludCByZWdfbnVtLAogICAgIH0gZWxzZSBpZiAocmVnX251bSA9PSBIRVhfUkVHX1FFTVVf SU5TTl9DTlQpIHsKICAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGRlc3QsIGhleF9ncHJbSEVYX1JF R19RRU1VX0lOU05fQ05UXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+bnVtX2luc25z KTsKKyAgICB9IGVsc2UgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19RRU1VX0hWWF9DTlQpIHsKKyAg ICAgICAgdGNnX2dlbl9hZGRpX3RsKGRlc3QsIGhleF9ncHJbSEVYX1JFR19RRU1VX0hWWF9DTlRd LAorICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5udW1faHZ4X2luc25zKTsKICAgICB9IGVs c2UgewogICAgICAgICB0Y2dfZ2VuX21vdl90bChkZXN0LCBoZXhfZ3ByW3JlZ19udW1dKTsKICAg ICB9CkBAIC0xOTQsNiArMTk3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fcmVhZF9jdHJs X3JlZ19wYWlyKERpc2FzQ29udGV4dCAqY3R4LCBjb25zdCBpbnQgcmVnX251bSwKICAgICAgICAg dGNnX2dlbl9jb25jYXRfaTMyX2k2NChkZXN0LCBwa3RfY250LCBpbnNuX2NudCk7CiAgICAgICAg IHRjZ190ZW1wX2ZyZWUocGt0X2NudCk7CiAgICAgICAgIHRjZ190ZW1wX2ZyZWUoaW5zbl9jbnQp OworICAgIH0gZWxzZSBpZiAocmVnX251bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAg ICAgICBUQ0d2IGh2eF9jbnQgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICAgICAgdGNnX2dlbl9hZGRp X3RsKGh2eF9jbnQsIGhleF9ncHJbSEVYX1JFR19RRU1VX0hWWF9DTlRdLAorICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LT5udW1faHZ4X2luc25zKTsKKyAgICAgICAgdGNnX2dlbl9jb25jYXRf aTMyX2k2NChkZXN0LCBodnhfY250LCBoZXhfZ3ByW3JlZ19udW0gKyAxXSk7CisgICAgICAgIHRj Z190ZW1wX2ZyZWUoaHZ4X2NudCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGNnX2dlbl9jb25j YXRfaTMyX2k2NChkZXN0LAogICAgICAgICAgICAgaGV4X2dwcltyZWdfbnVtXSwKQEAgLTIyOSw2 ICsyMzgsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3dyaXRlX2N0cmxfcmVnKERpc2FzQ29u dGV4dCAqY3R4LCBpbnQgcmVnX251bSwKICAgICAgICAgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19R RU1VX0lOU05fQ05UKSB7CiAgICAgICAgICAgICBjdHgtPm51bV9pbnNucyA9IDA7CiAgICAgICAg IH0KKyAgICAgICAgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19RRU1VX0hWWF9DTlQpIHsKKyAgICAg ICAgICAgIGN0eC0+bnVtX2h2eF9pbnNucyA9IDA7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAg LTI1MCw2ICsyNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3dyaXRlX2N0cmxfcmVnX3Bh aXIoRGlzYXNDb250ZXh0ICpjdHgsIGludCByZWdfbnVtLAogICAgICAgICAgICAgY3R4LT5udW1f cGFja2V0cyA9IDA7CiAgICAgICAgICAgICBjdHgtPm51bV9pbnNucyA9IDA7CiAgICAgICAgIH0K KyAgICAgICAgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19RRU1VX0hWWF9DTlQpIHsKKyAgICAgICAg ICAgIGN0eC0+bnVtX2h2eF9pbnNucyA9IDA7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAt LWdpdCBhL3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5jIGIvdGFyZ2V0L2hleGFnb24vdHJhbnNs YXRlLmMKaW5kZXggYjIzZDM2YS4uMDZkMzAwNCAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24v dHJhbnNsYXRlLmMKKysrIGIvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKQEAgLTE5LDYgKzE5 LDcgQEAKICNpbmNsdWRlICJxZW11L29zZGVwLmgiCiAjaW5jbHVkZSAiY3B1LmgiCiAjaW5jbHVk ZSAidGNnL3RjZy1vcC5oIgorI2luY2x1ZGUgInRjZy90Y2ctb3AtZ3ZlYy5oIgogI2luY2x1ZGUg ImV4ZWMvY3B1X2xkc3QuaCIKICNpbmNsdWRlICJleGVjL2xvZy5oIgogI2luY2x1ZGUgImludGVy bmFsLmgiCkBAIC00Nyw2ICs0OCwxNCBAQCBUQ0d2IGhleF9kY3plcm9fYWRkcjsKIFRDR3YgaGV4 X2xsc2NfYWRkcjsKIFRDR3YgaGV4X2xsc2NfdmFsOwogVENHdl9pNjQgaGV4X2xsc2NfdmFsX2k2 NDsKK1RDR3YgaGV4X2lzX2dhdGhlcl9zdG9yZV9pbnNuOworVENHdiBoZXhfVlJlZ3NfdXBkYXRl ZF90bXA7CitUQ0d2IGhleF9WUmVnc191cGRhdGVkOworVENHdiBoZXhfVlJlZ3Nfc2VsZWN0Owor VENHdiBoZXhfUVJlZ3NfdXBkYXRlZDsKK1RDR3YgaGV4X3ZzdG9yZV9hZGRyW1ZTVE9SRVNfTUFY XTsKK1RDR3YgaGV4X3ZzdG9yZV9zaXplW1ZTVE9SRVNfTUFYXTsKK1RDR3YgaGV4X3ZzdG9yZV9w ZW5kaW5nW1ZTVE9SRVNfTUFYXTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoZXhhZ29u X3ByZWRuYW1lc1tdID0gewogICAicDAiLCAicDEiLCAicDIiLCAicDMiCkBAIC02NSw2ICs3NCw4 IEBAIHN0YXRpYyB2b2lkIGdlbl9leGVjX2NvdW50ZXJzKERpc2FzQ29udGV4dCAqY3R4KQogICAg ICAgICAgICAgICAgICAgICBoZXhfZ3ByW0hFWF9SRUdfUUVNVV9QS1RfQ05UXSwgY3R4LT5udW1f cGFja2V0cyk7CiAgICAgdGNnX2dlbl9hZGRpX3RsKGhleF9ncHJbSEVYX1JFR19RRU1VX0lOU05f Q05UXSwKICAgICAgICAgICAgICAgICAgICAgaGV4X2dwcltIRVhfUkVHX1FFTVVfSU5TTl9DTlRd LCBjdHgtPm51bV9pbnNucyk7CisgICAgdGNnX2dlbl9hZGRpX3RsKGhleF9ncHJbSEVYX1JFR19R RU1VX0hWWF9DTlRdLAorICAgICAgICAgICAgICAgICAgICBoZXhfZ3ByW0hFWF9SRUdfUUVNVV9I VlhfQ05UXSwgY3R4LT5udW1faHZ4X2luc25zKTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuX2VuZF90 YihEaXNhc0NvbnRleHQgKmN0eCkKQEAgLTE3Miw2ICsxODMsMTEgQEAgc3RhdGljIHZvaWQgZ2Vu X3N0YXJ0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCiAgICAgYml0bWFw X3plcm8oY3R4LT5yZWdzX3dyaXR0ZW4sIFRPVEFMX1BFUl9USFJFQURfUkVHUyk7CiAgICAgY3R4 LT5wcmVnX2xvZ19pZHggPSAwOwogICAgIGJpdG1hcF96ZXJvKGN0eC0+cHJlZ3Nfd3JpdHRlbiwg TlVNX1BSRUdTKTsKKyAgICBjdHgtPnZyZWdfbG9nX2lkeCA9IDA7CisgICAgYml0bWFwX3plcm8o Y3R4LT52cmVnc191cGRhdGVkX3RtcCwgTlVNX1ZSRUdTKTsKKyAgICBiaXRtYXBfemVybyhjdHgt PnZyZWdzX3VwZGF0ZWQsIE5VTV9WUkVHUyk7CisgICAgYml0bWFwX3plcm8oY3R4LT52cmVnc19z ZWxlY3QsIE5VTV9WUkVHUyk7CisgICAgY3R4LT5xcmVnX2xvZ19pZHggPSAwOwogICAgIGZvciAo aSA9IDA7IGkgPCBTVE9SRVNfTUFYOyBpKyspIHsKICAgICAgICAgY3R4LT5zdG9yZV93aWR0aFtp XSA9IDA7CiAgICAgfQpAQCAtMTk4LDYgKzIxNCwzMiBAQCBzdGF0aWMgdm9pZCBnZW5fc3RhcnRf cGFja2V0KERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkKICAgICBpZiAobmVlZF9wcmVk X3dyaXR0ZW4ocGt0KSkgewogICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X3ByZWRfd3JpdHRl biwgMCk7CiAgICAgfQorCisgICAgaWYgKHBrdC0+cGt0X2hhc19odngpIHsKKyAgICAgICAgaWYg KHBrdC0+cGt0X2hhc192aGlzdCkgeworICAgICAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9W UmVnc191cGRhdGVkX3RtcCwgMCk7CisgICAgICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X1ZS ZWdzX3NlbGVjdCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9W UmVnc191cGRhdGVkLCAwKTsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9RUmVnc191cGRh dGVkLCAwKTsKKyAgICAgICAgY3R4LT5pc19nYXRoZXJfc3RvcmVfaW5zbiA9IGZhbHNlOworICAg ICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X2lzX2dhdGhlcl9zdG9yZV9pbnNuLCAwKTsKKyAgICB9 Cit9CisKK3N0YXRpYyBib29sIGlzX2dhdGhlcl9zdG9yZV9pbnNuKEluc24gKmluc24sIFBhY2tl dCAqcGt0KQoreworICAgIGlmIChHRVRfQVRUUklCKGluc24tPm9wY29kZSwgQV9DVklfTkVXKSAm JgorICAgICAgICBpbnNuLT5uZXdfdmFsdWVfcHJvZHVjZXJfc2xvdCA9PSAxKSB7CisgICAgICAg IC8qIExvb2sgZm9yIGdhdGhlciBpbnN0cnVjdGlvbiAqLworICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IHBrdC0+bnVtX2luc25zOyBpKyspIHsKKyAgICAgICAgICAgIEluc24gKmluID0gJnBr dC0+aW5zbltpXTsKKyAgICAgICAgICAgIGlmIChHRVRfQVRUUklCKGluLT5vcGNvZGUsIEFfQ1ZJ X0dBVEhFUikgJiYgaW4tPnNsb3QgPT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0K IAogLyoKQEAgLTI0OSw2ICsyOTEsMTAgQEAgc3RhdGljIHZvaWQgZ2VuX2luc24oQ1BVSGV4YWdv blN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgSW5z biAqaW5zbiwgUGFja2V0ICpwa3QpCiB7CiAgICAgaWYgKGluc24tPmdlbmVyYXRlKSB7CisgICAg ICAgIGlmIChpc19nYXRoZXJfc3RvcmVfaW5zbihpbnNuLCBwa3QpKSB7CisgICAgICAgICAgICBj dHgtPmlzX2dhdGhlcl9zdG9yZV9pbnNuID0gdHJ1ZTsKKyAgICAgICAgICAgIHRjZ19nZW5fbW92 aV90bChoZXhfaXNfZ2F0aGVyX3N0b3JlX2luc24sIDEpOworICAgICAgICB9CiAgICAgICAgIG1h cmtfaW1wbGljaXRfcmVnX3dyaXRlcyhjdHgsIGluc24pOwogICAgICAgICBpbnNuLT5nZW5lcmF0 ZShlbnYsIGN0eCwgaW5zbiwgcGt0KTsKICAgICAgICAgbWFya19pbXBsaWNpdF9wcmVkX3dyaXRl cyhjdHgsIGluc24pOwpAQCAtNDUxLDEwICs0OTcsMTI1IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nf ZGN6ZXJvYShEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCiAgICAgfQogfQogCitzdGF0 aWMgYm9vbCBwa3RfaGFzX2h2eF9zdG9yZShQYWNrZXQgKnBrdCkKK3sKKyAgICBpbnQgaTsKKyAg ICBmb3IgKGkgPSAwOyBpIDwgcGt0LT5udW1faW5zbnM7IGkrKykgeworICAgICAgICBpbnQgb3Bj b2RlID0gcGt0LT5pbnNuW2ldLm9wY29kZTsKKyAgICAgICAgaWYgKEdFVF9BVFRSSUIob3Bjb2Rl LCBBX0NWSSkgJiYgR0VUX0FUVFJJQihvcGNvZGUsIEFfU1RPUkUpKSB7CisgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0 YXRpYyB2b2lkIGdlbl9jb21taXRfaHZ4KERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkK K3sKKyAgICBpbnQgaTsKKworICAgIC8qCisgICAgICogdmhpc3QgaW5zdHJ1Y3Rpb25zIG5lZWQg c3BlY2lhbCBoYW5kbGluZworICAgICAqIFRoZXkgcG90ZW50aWFsbHkgd3JpdGUgdGhlIGVudGly ZSB2ZWN0b3IgcmVnaXN0ZXIgZmlsZQorICAgICAqLworICAgIGlmIChwa3QtPnBrdF9oYXNfdmhp c3QpIHsKKyAgICAgICAgVENHdiBjbXAgPSB0Y2dfdGVtcF9sb2NhbF9uZXcoKTsKKyAgICAgICAg c2l6ZV90IHNpemUgPSBzaXplb2YoTU1WZWN0b3IpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwg TlVNX1ZSRUdTOyBpKyspIHsKKyAgICAgICAgICAgIGludHB0cl90IGRzdG9mZiA9IG9mZnNldG9m KENQVUhleGFnb25TdGF0ZSwgVlJlZ3NbaV0pOworICAgICAgICAgICAgaW50cHRyX3Qgc3Jjb2Zm ID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfVlJlZ3NbaV0pOworICAgICAgICAg ICAgVENHTGFiZWwgKmxhYmVsX3NraXAgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICAgICAgICAg IHRjZ19nZW5fYW5kaV90bChjbXAsIGhleF9WUmVnc191cGRhdGVkLCAxIDw8IGkpOworICAgICAg ICAgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0VRLCBjbXAsIDAsIGxhYmVsX3NraXAp OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9fNjQs IGRzdG9mZiwgc3Jjb2ZmLCBzaXplLCBzaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IGdlbl9zZXRfbGFiZWwobGFiZWxfc2tpcCk7CisgICAgICAgIH0KKyAgICAgICAgdGNnX3RlbXBf ZnJlZShjbXApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgICBm b3IgKGkgPSAwOyBpIDwgY3R4LT52cmVnX2xvZ19pZHg7IGkrKykgeworICAgICAqICAgICAgICBp bnQgcm51bSA9IGN0eC0+dnJlZ19sb2dbaV07CisgICAgICogICAgICAgIGlmIChjdHgtPnZyZWdf aXNfcHJlZGljYXRlZFtpXSkgeworICAgICAqICAgICAgICAgICAgaWYgKGVudi0+VlJlZ3NfdXBk YXRlZCAmICgxIDw8IHJudW0pKSB7CisgICAgICogICAgICAgICAgICAgICAgZW52LT5WUmVnc1ty bnVtXSA9IGVudi0+ZnV0dXJlX1ZSZWdzW3JudW1dOworICAgICAqICAgICAgICAgICAgfQorICAg ICAqICAgICAgICB9IGVsc2UgeworICAgICAqICAgICAgICAgICAgZW52LT5WUmVnc1tybnVtXSA9 IGVudi0+ZnV0dXJlX1ZSZWdzW3JudW1dOworICAgICAqICAgICAgICB9CisgICAgICogICAgfQor ICAgICAqLworICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPnZyZWdfbG9nX2lkeDsgaSsrKSB7Cisg ICAgICAgIGludCBybnVtID0gY3R4LT52cmVnX2xvZ1tpXTsKKyAgICAgICAgYm9vbCBpc19wcmVk aWNhdGVkID0gY3R4LT52cmVnX2lzX3ByZWRpY2F0ZWRbaV07CisgICAgICAgIGludHB0cl90IGRz dG9mZiA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgVlJlZ3Nbcm51bV0pOworICAgICAgICBp bnRwdHJfdCBzcmNvZmYgPSBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGZ1dHVyZV9WUmVnc1ty bnVtXSk7CisgICAgICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKE1NVmVjdG9yKTsKKworICAgICAg ICBpZiAoaXNfcHJlZGljYXRlZCkgeworICAgICAgICAgICAgVENHdiBjbXAgPSB0Y2dfdGVtcF9s b2NhbF9uZXcoKTsKKyAgICAgICAgICAgIFRDR0xhYmVsICpsYWJlbF9za2lwID0gZ2VuX25ld19s YWJlbCgpOworCisgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoY21wLCBoZXhfVlJlZ3NfdXBk YXRlZCwgMSA8PCBybnVtKTsKKyAgICAgICAgICAgIHRjZ19nZW5fYnJjb25kaV90bChUQ0dfQ09O RF9FUSwgY21wLCAwLCBsYWJlbF9za2lwKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICB0Y2dfZ2VuX2d2ZWNfbW92KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZSwgc2l6ZSk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX3NraXApOworICAg ICAgICAgICAgdGNnX3RlbXBfZnJlZShjbXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemUsIHNpemUpOwor ICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgICBmb3IgKGkgPSAwOyBpIDwgY3R4 LT5xcmVnX2xvZ19pZHg7IGkrKykgeworICAgICAqICAgICAgICBpbnQgcm51bSA9IGN0eC0+cXJl Z19sb2dbaV07CisgICAgICogICAgICAgIGlmIChjdHgtPnFyZWdfaXNfcHJlZGljYXRlZFtpXSkg eworICAgICAqICAgICAgICAgICAgaWYgKGVudi0+UVJlZ3NfdXBkYXRlZCkgJiAoMSA8PCBybnVt KSkgeworICAgICAqICAgICAgICAgICAgICAgIGVudi0+UVJlZ3Nbcm51bV0gPSBlbnYtPmZ1dHVy ZV9RUmVnc1tybnVtXTsKKyAgICAgKiAgICAgICAgICAgIH0KKyAgICAgKiAgICAgICAgfSBlbHNl IHsKKyAgICAgKiAgICAgICAgICAgIGVudi0+UVJlZ3Nbcm51bV0gPSBlbnYtPmZ1dHVyZV9RUmVn c1tybnVtXTsKKyAgICAgKiAgICAgICAgfQorICAgICAqICAgIH0KKyAgICAgKi8KKyAgICBmb3Ig KGkgPSAwOyBpIDwgY3R4LT5xcmVnX2xvZ19pZHg7IGkrKykgeworICAgICAgICBpbnQgcm51bSA9 IGN0eC0+cXJlZ19sb2dbaV07CisgICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCA9IGN0eC0+cXJl Z19pc19wcmVkaWNhdGVkW2ldOworICAgICAgICBpbnRwdHJfdCBkc3RvZmYgPSBvZmZzZXRvZihD UFVIZXhhZ29uU3RhdGUsIFFSZWdzW3JudW1dKTsKKyAgICAgICAgaW50cHRyX3Qgc3Jjb2ZmID0g b2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfUVJlZ3Nbcm51bV0pOworICAgICAgICBz aXplX3Qgc2l6ZSA9IHNpemVvZihNTVFSZWcpOworCisgICAgICAgIGlmIChpc19wcmVkaWNhdGVk KSB7CisgICAgICAgICAgICBUQ0d2IGNtcCA9IHRjZ190ZW1wX2xvY2FsX25ldygpOworICAgICAg ICAgICAgVENHTGFiZWwgKmxhYmVsX3NraXAgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICAgICAg ICAgIHRjZ19nZW5fYW5kaV90bChjbXAsIGhleF9RUmVnc191cGRhdGVkLCAxIDw8IHJudW0pOwor ICAgICAgICAgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0VRLCBjbXAsIDAsIGxhYmVs X3NraXApOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3Yo TU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLCBzaXplLCBzaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIGdlbl9zZXRfbGFiZWwobGFiZWxfc2tpcCk7CisgICAgICAgICAgICB0Y2dfdGVtcF9m cmVlKGNtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0Y2dfZ2VuX2d2ZWNfbW92 KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZSwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisK KyAgICBpZiAocGt0X2hhc19odnhfc3RvcmUocGt0KSkgeworICAgICAgICBnZW5faGVscGVyX2Nv bW1pdF9odnhfc3RvcmVzKGNwdV9lbnYpOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgdXBkYXRl X2V4ZWNfY291bnRlcnMoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogewogICAgIGlu dCBudW1faW5zbnMgPSBwa3QtPm51bV9pbnNuczsKICAgICBpbnQgbnVtX3JlYWxfaW5zbnMgPSAw OworICAgIGludCBudW1faHZ4X2luc25zID0gMDsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg bnVtX2luc25zOyBpKyspIHsKICAgICAgICAgaWYgKCFwa3QtPmluc25baV0uaXNfZW5kbG9vcCAm JgpAQCAtNDYyLDEwICs2MjMsMTQgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2V4ZWNfY291bnRlcnMo RGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogICAgICAgICAgICAgIUdFVF9BVFRSSUIo cGt0LT5pbnNuW2ldLm9wY29kZSwgQV9JVF9OT1ApKSB7CiAgICAgICAgICAgICBudW1fcmVhbF9p bnNucysrOwogICAgICAgICB9CisgICAgICAgIGlmIChHRVRfQVRUUklCKHBrdC0+aW5zbltpXS5v cGNvZGUsIEFfQ1ZJKSkgeworICAgICAgICAgICAgbnVtX2h2eF9pbnNucysrOworICAgICAgICB9 CiAgICAgfQogCiAgICAgY3R4LT5udW1fcGFja2V0cysrOwogICAgIGN0eC0+bnVtX2luc25zICs9 IG51bV9yZWFsX2luc25zOworICAgIGN0eC0+bnVtX2h2eF9pbnNucyArPSBudW1faHZ4X2luc25z OwogfQogCiBzdGF0aWMgdm9pZCBnZW5fY29tbWl0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwg UGFja2V0ICpwa3QpCkBAIC00NzQsNiArNjM5LDkgQEAgc3RhdGljIHZvaWQgZ2VuX2NvbW1pdF9w YWNrZXQoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogICAgIGdlbl9wcmVkX3dyaXRl cyhjdHgsIHBrdCk7CiAgICAgcHJvY2Vzc19zdG9yZV9sb2coY3R4LCBwa3QpOwogICAgIHByb2Nl c3NfZGN6ZXJvYShjdHgsIHBrdCk7CisgICAgaWYgKHBrdC0+cGt0X2hhc19odngpIHsKKyAgICAg ICAgZ2VuX2NvbW1pdF9odngoY3R4LCBwa3QpOworICAgIH0KICAgICB1cGRhdGVfZXhlY19jb3Vu dGVycyhjdHgsIHBrdCk7CiAgICAgaWYgKEhFWF9ERUJVRykgewogICAgICAgICBUQ0d2IGhhc19z dDAgPQpAQCAtNTI3LDYgKzY5NSw3IEBAIHN0YXRpYyB2b2lkIGhleGFnb25fdHJfaW5pdF9kaXNh c19jb250ZXh0KERpc2FzQ29udGV4dEJhc2UgKmRjYmFzZSwKICAgICBjdHgtPm1lbV9pZHggPSBN TVVfVVNFUl9JRFg7CiAgICAgY3R4LT5udW1fcGFja2V0cyA9IDA7CiAgICAgY3R4LT5udW1faW5z bnMgPSAwOworICAgIGN0eC0+bnVtX2h2eF9pbnNucyA9IDA7CiB9CiAKIHN0YXRpYyB2b2lkIGhl eGFnb25fdHJfdGJfc3RhcnQoRGlzYXNDb250ZXh0QmFzZSAqZGIsIENQVVN0YXRlICpjcHUpCkBA IC02NTIsNiArODIxLDkgQEAgc3RhdGljIGNoYXIgc3RvcmVfYWRkcl9uYW1lc1tTVE9SRVNfTUFY XVtOQU1FX0xFTl07CiBzdGF0aWMgY2hhciBzdG9yZV93aWR0aF9uYW1lc1tTVE9SRVNfTUFYXVtO QU1FX0xFTl07CiBzdGF0aWMgY2hhciBzdG9yZV92YWwzMl9uYW1lc1tTVE9SRVNfTUFYXVtOQU1F X0xFTl07CiBzdGF0aWMgY2hhciBzdG9yZV92YWw2NF9uYW1lc1tTVE9SRVNfTUFYXVtOQU1FX0xF Tl07CitzdGF0aWMgY2hhciB2c3RvcmVfYWRkcl9uYW1lc1tWU1RPUkVTX01BWF1bTkFNRV9MRU5d Oworc3RhdGljIGNoYXIgdnN0b3JlX3NpemVfbmFtZXNbVlNUT1JFU19NQVhdW05BTUVfTEVOXTsK K3N0YXRpYyBjaGFyIHZzdG9yZV9wZW5kaW5nX25hbWVzW1ZTVE9SRVNfTUFYXVtOQU1FX0xFTl07 CiAKIHZvaWQgaGV4YWdvbl90cmFuc2xhdGVfaW5pdCh2b2lkKQogewpAQCAtNzE0LDYgKzg4Niwx NyBAQCB2b2lkIGhleGFnb25fdHJhbnNsYXRlX2luaXQodm9pZCkKICAgICAgICAgb2Zmc2V0b2Yo Q1BVSGV4YWdvblN0YXRlLCBsbHNjX3ZhbCksICJsbHNjX3ZhbCIpOwogICAgIGhleF9sbHNjX3Zh bF9pNjQgPSB0Y2dfZ2xvYmFsX21lbV9uZXdfaTY0KGNwdV9lbnYsCiAgICAgICAgIG9mZnNldG9m KENQVUhleGFnb25TdGF0ZSwgbGxzY192YWxfaTY0KSwgImxsc2NfdmFsX2k2NCIpOworICAgIGhl eF9pc19nYXRoZXJfc3RvcmVfaW5zbiA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAg ICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGlzX2dhdGhlcl9zdG9yZV9pbnNuKSwKKyAg ICAgICAgImlzX2dhdGhlcl9zdG9yZV9pbnNuIik7CisgICAgaGV4X1ZSZWdzX3VwZGF0ZWRfdG1w ID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCisgICAgICAgIG9mZnNldG9mKENQVUhleGFn b25TdGF0ZSwgVlJlZ3NfdXBkYXRlZF90bXApLCAiVlJlZ3NfdXBkYXRlZF90bXAiKTsKKyAgICBo ZXhfVlJlZ3NfdXBkYXRlZCA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICBv ZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIFZSZWdzX3VwZGF0ZWQpLCAiVlJlZ3NfdXBkYXRlZCIp OworICAgIGhleF9WUmVnc19zZWxlY3QgPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAg ICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBWUmVnc19zZWxlY3QpLCAiVlJlZ3Nfc2Vs ZWN0Iik7CisgICAgaGV4X1FSZWdzX3VwZGF0ZWQgPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2Vu diwKKyAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBRUmVnc191cGRhdGVkKSwgIlFS ZWdzX3VwZGF0ZWQiKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgU1RPUkVTX01BWDsgaSsrKSB7CiAg ICAgICAgIHNucHJpbnRmKHN0b3JlX2FkZHJfbmFtZXNbaV0sIE5BTUVfTEVOLCAic3RvcmVfYWRk cl8lZCIsIGkpOwogICAgICAgICBoZXhfc3RvcmVfYWRkcltpXSA9IHRjZ19nbG9iYWxfbWVtX25l dyhjcHVfZW52LApAQCAtNzM1LDQgKzkxOCwyMCBAQCB2b2lkIGhleGFnb25fdHJhbnNsYXRlX2lu aXQodm9pZCkKICAgICAgICAgICAgIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgbWVtX2xvZ19z dG9yZXNbaV0uZGF0YTY0KSwKICAgICAgICAgICAgIHN0b3JlX3ZhbDY0X25hbWVzW2ldKTsKICAg ICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWU1RPUkVTX01BWDsgaSsrKSB7CisgICAgICAg IHNucHJpbnRmKHZzdG9yZV9hZGRyX25hbWVzW2ldLCBOQU1FX0xFTiwgInZzdG9yZV9hZGRyXyVk IiwgaSk7CisgICAgICAgIGhleF92c3RvcmVfYWRkcltpXSA9IHRjZ19nbG9iYWxfbWVtX25ldyhj cHVfZW52LAorICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB2c3RvcmVbaV0u dmEpLAorICAgICAgICAgICAgdnN0b3JlX2FkZHJfbmFtZXNbaV0pOworCisgICAgICAgIHNucHJp bnRmKHZzdG9yZV9zaXplX25hbWVzW2ldLCBOQU1FX0xFTiwgInZzdG9yZV9zaXplXyVkIiwgaSk7 CisgICAgICAgIGhleF92c3RvcmVfc2l6ZVtpXSA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52 LAorICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB2c3RvcmVbaV0uc2l6ZSks CisgICAgICAgICAgICB2c3RvcmVfc2l6ZV9uYW1lc1tpXSk7CisKKyAgICAgICAgc25wcmludGYo dnN0b3JlX3BlbmRpbmdfbmFtZXNbaV0sIE5BTUVfTEVOLCAidnN0b3JlX3BlbmRpbmdfJWQiLCBp KTsKKyAgICAgICAgaGV4X3ZzdG9yZV9wZW5kaW5nW2ldID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNw dV9lbnYsCisgICAgICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIHZzdG9yZV9wZW5k aW5nW2ldKSwKKyAgICAgICAgICAgIHZzdG9yZV9wZW5kaW5nX25hbWVzW2ldKTsKKyAgICB9CiB9 Ci0tIAoyLjcuNAoK