From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id D1E303858C53 for ; Wed, 14 Jun 2023 15:44:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D1E303858C53 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="6.00,242,1681200000"; d="diff'?scan'208";a="9869014" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 14 Jun 2023 07:44:33 -0800 IronPort-SDR: thsFS540Jn3lKOMwwzACftT17d2QqBI++Vt2p95QRh8QrG6mciJDclQs8auWpdOpNaAEWEOOyD JLXH9+EUnFrQpZoy641O5JHyf0IjJP74DBp136M3XEk6QwF2e0OQ/G5xo3kf8Cfk+T7BnDXbUn SagaaZB7bQJ9WFxFtIOakQdFsyt2bXFUAuYKZcpQm5dtPPCqh6ic53Sckpbl2B9g/YiziETrSi nVrCvcHVptjqUrK/upeWCX1BrBMnM79YgpYRGt3RQcghYaxvi/9MafvEos7ZjM4n94FY06e6E1 RDM= Content-Type: multipart/mixed; boundary="------------v8PrLnJ8uOVIYORFhXN0GKlg" Message-ID: <20040247-ac0c-6660-eb6d-17bd307ca643@codesourcery.com> Date: Wed, 14 Jun 2023 17:44:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: [patch] libgomp: Extend OMP_ALLOCATOR, add affinity env var doc (was: [Patch] libgomp.texi: Document allocator + affininity env vars) Content-Language: en-US From: Tobias Burnus To: gcc-patches , Sandra Loosemore , Jakub Jelinek References: <641f281f-4ba2-0ab2-f52b-9e30fd200a14@codesourcery.com> In-Reply-To: <641f281f-4ba2-0ab2-f52b-9e30fd200a14@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-15.mgc.mentorg.com (139.181.222.15) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------v8PrLnJ8uOVIYORFhXN0GKlg Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 14.06.23 12:34, Tobias Burnus wrote: > Comments on the wording and/or the content? This remains =E2=80=94 however, the attached patch now additionally lists t= he predefined allocators, fixes one awkward wording of mine =E2=80=93 and it documents the OpenMP 5.1 syntax of the OMP_ALLOCATOR environment variable. Plus: it actually implements the latter, i.e. besides predefined allocators also predefined memory spaces optionally followed by traits can be specified in the env var. Comments are highly welcome! Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------v8PrLnJ8uOVIYORFhXN0GKlg Content-Type: text/x-patch; charset="UTF-8"; name="omp-allocator.diff" Content-Disposition: attachment; filename="omp-allocator.diff" Content-Transfer-Encoding: base64 bGliZ29tcDogRXh0ZW5kIE9NUF9BTExPQ0FUT1IsIGFkZCBhZmZpbml0eSBlbnYgdmFyIGRv YwoKU3VwcG9ydCBPcGVuTVAgNS4xJ3Mgc3ludGF4IGZvciBPTVBfQUxMT0NBVE9SIGFzIHdl bGwsCndoaWNoIHBlcm1pdHMgYmVzaWRlcyBwcmVkZWZpbmVkIGFsbG9jYXRvcnMgYWxzbwpw cmVkZWZpbmVkIG1lbXNwYWNlcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IHRyYWl0cy4KCkFk ZGl0aW9uYWxseSwgdGhpcyBjb21taXQgYWRkcyB0aGUgcHJldmlvdXNseSBsYWNraW5nCmRv Y3VtZW50YXRpb24gZm9yIE9NUF9BTExPQ0FUT1IsIE9NUF9BRkZJTklUWV9GT1JNQVQKYW5k IE9NUF9ESVNQTEFZX0FGRklOSVRZLgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBlbnYuYyAo Z29tcF9kZWZfYWxsb2NhdG9yX2VudnZhcik6IE5ldyB2YXIuCgkocGFyc2VfYWxsb2NhdG9y KTogSGFuZGxlIE9wZW5NUCA1LjEgc3ludGF4LgoJKGNsZWFudXBfZW52KTogTmV3LgoJKG9t cF9kaXNwbGF5X2Vudik6IE91dHB1dCBnb21wX2RlZl9hbGxvY2F0b3JfZW52dmFyCglmb3Ig YW4gYWxsb2NhdG9yIHdpdGggdHJhaXRzLgoJKiBsaWJnb21wLnRleGkgKE9NUF9BTExPQ0FU T1IsIE9NUF9BRkZJTklUWV9GT1JNQVQsCglPTVBfRElTUExBWV9BRkZJTklUWSk6IE5ldy4K CSogdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3ItMS5jOiBOZXcgdGVzdC4KCSogdGVz dHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3ItMi5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRl L2xpYmdvbXAuYy9hbGxvY2F0b3ItMy5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRlL2xpYmdv bXAuYy9hbGxvY2F0b3ItNC5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy9h bGxvY2F0b3ItNS5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0 b3ItNi5jOiBOZXcgdGVzdC4KCiBsaWJnb21wL2Vudi5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDE4OCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGxpYmdvbXAv bGliZ29tcC50ZXhpICAgICAgICAgICAgICAgICAgICAgIHwgMTQyICsrKysrKysrKysrKysr KysrKysrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3ItMS5jIHwg IDE1ICsrKwogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL2FsbG9jYXRvci0yLmMgfCAg MTcgKysrCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvYWxsb2NhdG9yLTMuYyB8ICAy NyArKysrKwogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL2FsbG9jYXRvci00LmMgfCAg MTUgKysrCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvYWxsb2NhdG9yLTUuYyB8ICAx NSArKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3ItNi5jIHwgIDE1 ICsrKwogOCBmaWxlcyBjaGFuZ2VkLCA0MjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9lbnYuYyBiL2xpYmdvbXAvZW52LmMKaW5kZXgg MjVjMDIxMWRkYTEuLmYyNDQ4NGQ3ZjcwIDEwMDY0NAotLS0gYS9saWJnb21wL2Vudi5jCisr KyBiL2xpYmdvbXAvZW52LmMKQEAgLTExMiw2ICsxMTIsNyBAQCB1bnNpZ25lZCBsb25nIGdv bXBfYmluZF92YXJfbGlzdF9sZW47CiB2b2lkICoqZ29tcF9wbGFjZXNfbGlzdDsKIHVuc2ln bmVkIGxvbmcgZ29tcF9wbGFjZXNfbGlzdF9sZW47CiB1aW50cHRyX3QgZ29tcF9kZWZfYWxs b2NhdG9yID0gb21wX2RlZmF1bHRfbWVtX2FsbG9jOworY2hhciAqZ29tcF9kZWZfYWxsb2Nh dG9yX2VudnZhciA9IE5VTEw7CiBpbnQgZ29tcF9kZWJ1Z192YXI7CiB1bnNpZ25lZCBpbnQg Z29tcF9udW1fdGVhbXNfdmFyOwogaW50IGdvbXBfbnRlYW1zX3ZhcjsKQEAgLTEyMzMsOCAr MTIzNCwxMiBAQCBwYXJzZV9hZmZpbml0eSAoYm9vbCBpZ25vcmUpCiBzdGF0aWMgYm9vbAog cGFyc2VfYWxsb2NhdG9yIChjb25zdCBjaGFyICplbnYsIGNvbnN0IGNoYXIgKnZhbCwgdm9p ZCAqY29uc3QgcGFyYW1zW10pCiB7CisgIGNvbnN0IGNoYXIgKm9yaWdfdmFsID0gdmFsOwog ICB1aW50cHRyX3QgKnJldCA9ICh1aW50cHRyX3QgKikgcGFyYW1zWzBdOwogICAqcmV0ID0g b21wX2RlZmF1bHRfbWVtX2FsbG9jOworICBib29sIG1lbXNwYWNlID0gZmFsc2U7CisgIHNp emVfdCBudHJhaXRzID0gMDsKKyAgb21wX2FsbG9jdHJhaXRfdCAqdHJhaXRzOwogCiAgIGlm ICh2YWwgPT0gTlVMTCkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjQzLDI4ICsxMjQ4LDE2 OSBAQCBwYXJzZV9hbGxvY2F0b3IgKGNvbnN0IGNoYXIgKmVudiwgY29uc3QgY2hhciAqdmFs LCB2b2lkICpjb25zdCBwYXJhbXNbXSkKICAgICArK3ZhbDsKICAgaWYgKDApCiAgICAgOwot I2RlZmluZSBDKHYpIFwKKyNkZWZpbmUgQyh2LCBtKSBcCiAgIGVsc2UgaWYgKHN0cm5jYXNl Y21wICh2YWwsICN2LCBzaXplb2YgKCN2KSAtIDEpID09IDApCVwKICAgICB7CQkJCQkJCVwK ICAgICAgICpyZXQgPSB2OwkJCQkJCVwKICAgICAgIHZhbCArPSBzaXplb2YgKCN2KSAtIDE7 CQkJCVwKLSAgICB9Ci0gIEMgKG9tcF9kZWZhdWx0X21lbV9hbGxvYykKLSAgQyAob21wX2xh cmdlX2NhcF9tZW1fYWxsb2MpCi0gIEMgKG9tcF9jb25zdF9tZW1fYWxsb2MpCi0gIEMgKG9t cF9oaWdoX2J3X21lbV9hbGxvYykKLSAgQyAob21wX2xvd19sYXRfbWVtX2FsbG9jKQotICBD IChvbXBfY2dyb3VwX21lbV9hbGxvYykKLSAgQyAob21wX3B0ZWFtX21lbV9hbGxvYykKLSAg QyAob21wX3RocmVhZF9tZW1fYWxsb2MpCisgICAgICBtZW1zcGFjZSA9IG07CQkJCQlcCisg ICAgfQorICBDIChvbXBfZGVmYXVsdF9tZW1fYWxsb2MsIGZhbHNlKQorICBDIChvbXBfbGFy Z2VfY2FwX21lbV9hbGxvYywgZmFsc2UpCisgIEMgKG9tcF9jb25zdF9tZW1fYWxsb2MsIGZh bHNlKQorICBDIChvbXBfaGlnaF9id19tZW1fYWxsb2MsIGZhbHNlKQorICBDIChvbXBfbG93 X2xhdF9tZW1fYWxsb2MsIGZhbHNlKQorICBDIChvbXBfY2dyb3VwX21lbV9hbGxvYywgZmFs c2UpCisgIEMgKG9tcF9wdGVhbV9tZW1fYWxsb2MsIGZhbHNlKQorICBDIChvbXBfdGhyZWFk X21lbV9hbGxvYywgZmFsc2UpCisgIEMgKG9tcF9kZWZhdWx0X21lbV9zcGFjZSwgdHJ1ZSkK KyAgQyAob21wX2xhcmdlX2NhcF9tZW1fc3BhY2UsIHRydWUpCisgIEMgKG9tcF9jb25zdF9t ZW1fc3BhY2UsIHRydWUpCisgIEMgKG9tcF9oaWdoX2J3X21lbV9zcGFjZSwgdHJ1ZSkKKyAg QyAob21wX2xvd19sYXRfbWVtX3NwYWNlLCB0cnVlKQogI3VuZGVmIEMKICAgZWxzZQotICAg IHZhbCA9ICJYIjsKKyAgICBnb3RvIGludmFsaWQ7CisgIGlmIChtZW1zcGFjZSAmJiAqdmFs ID09ICc6JykKKyAgICB7CisgICAgICArK3ZhbDsKKyAgICAgIGNvbnN0IGNoYXIgKmNwID0g dmFsOworICAgICAgd2hpbGUgKCpjcCAhPSAnXDAnKQorCXsKKwkgIGlmICgqY3AgPT0gJz0n KQorCSAgICArK250cmFpdHM7CisJICArK2NwOworCX0KKyAgICAgIHRyYWl0cyA9IGdvbXBf YWxsb2NhIChudHJhaXRzICogc2l6ZW9mIChvbXBfYWxsb2N0cmFpdF90KSk7CisgICAgICBz aXplX3QgbiA9IDA7CisgICAgICB3aGlsZSAoKnZhbCAhPSAnXDAnKQorCXsKKyNkZWZpbmUg Qyh2KSBcCisJICBlbHNlIGlmIChzdHJuY2FzZWNtcCAodmFsLCAjdiAiPSIsIHNpemVvZiAo I3YpKSA9PSAwKQlcCisJICAgIHsJCQkJCQkJXAorCSAgICAgIHZhbCArPSBzaXplb2YgKCN2 KTsJCQkJXAorCSAgICAgIHRyYWl0c1tuXS5rZXkgPSBvbXBfYXRrXyAjIyB2OworI2RlZmlu ZSBWKHYpIFwKKwkgICAgZWxzZSBpZiAoc3RybmNhc2VjbXAgKHZhbCwgI3YsIHNpemVvZiAo I3YpIC0gMSkgPT0gMCkJXAorCSAgICAgIHsJCQkJCQkJCVwKKwkJdmFsICs9IHNpemVvZiAo I3YpIC0gMTsJCQkJCVwKKwkJdHJhaXRzW25dLnZhbHVlID0gb21wX2F0dl8gIyMgdjsJCQlc CisJICAgICAgfQorCSAgaWYgKDApCisJICAgIDsKKwkgIEMgKHN5bmNfaGludCkKKwkgICAg ICBpZiAoMCkKKwkJOworCSAgICAgIFYgKGNvbnRlbmRlZCkKKwkgICAgICBWICh1bmNvbnRl bmRlZCkKKwkgICAgICBWIChzZXJpYWxpemVkKQorCSAgICAgIFYgKHByaXZhdGUpCisJICAg ICAgZWxzZQorCQlnb3RvIGludmFsaWQ7CisJICAgIH0KKwkgIEMgKGFsaWdubWVudCkKKwkg ICAgICBjaGFyICplbmQ7CisJICAgICAgZXJybm8gPSAwOworCSAgICAgIHRyYWl0c1tuXS52 YWx1ZSA9IHN0cnRvbCAodmFsLCAmZW5kLCAxMCk7CisJICAgICAgaWYgKGVycm5vIHx8IGVu ZCA9PSB2YWwgfHwgdHJhaXRzW25dLnZhbHVlIDw9IDApCisJCWdvdG8gaW52YWxpZDsKKwkg ICAgICB2YWwgPSBlbmQ7CisJICAgIH0KKwkgIEMgKGFjY2VzcykKKwkgICAgICBpZiAoMCkK KwkJOworCSAgICAgIFYgKGFsbCkKKwkgICAgICBWIChjZ3JvdXApCisJICAgICAgViAocHRl YW0pCisJICAgICAgViAodGhyZWFkKQorCSAgICAgIGVsc2UKKwkJZ290byBpbnZhbGlkOwor CSAgICB9CisJICBDIChwb29sX3NpemUpCisJICAgICAgY2hhciAqZW5kOworCSAgICAgIGVy cm5vID0gMDsKKwkgICAgICB0cmFpdHNbbl0udmFsdWUgPSBzdHJ0b2wgKHZhbCwgJmVuZCwg MTApOworCSAgICAgIGlmIChlcnJubyB8fCBlbmQgPT0gdmFsIHx8IHRyYWl0c1tuXS52YWx1 ZSA8PSAwKQorCQlnb3RvIGludmFsaWQ7CisJICAgICAgdmFsID0gZW5kOworCSAgICB9CisJ ICBDIChmYWxsYmFjaykKKwkgICAgICBpZiAoMCkKKwkJOworCSAgICAgIFYgKGRlZmF1bHRf bWVtX2ZiKQorCSAgICAgIFYgKG51bGxfZmIpCisJICAgICAgViAoYWJvcnRfZmIpCisJICAg ICAgViAoYWxsb2NhdG9yX2ZiKQorCSAgICAgIGVsc2UKKwkJZ290byBpbnZhbGlkOworCSAg ICB9CisJICAvKiBJZ25vcmUgZmJfZGF0YSwgd2hpY2ggZXhwZWN0cyBhbiBhbGxvY2F0b3Ig aGFuZGxlLiAgKi8KKwkgIEMgKHBpbm5lZCkKKwkgICAgICBpZiAoMCkKKwkJOworCSAgICAg IFYgKHRydWUpCisJICAgICAgViAoZmFsc2UpCisJICAgICAgZWxzZQorCQlnb3RvIGludmFs aWQ7CisJICAgIH0KKwkgIEMgKHBhcnRpdGlvbikKKwkgICAgICBpZiAoMCkKKwkJOworCSAg ICAgIFYgKGVudmlyb25tZW50KQorCSAgICAgIFYgKG5lYXJlc3QpCisJICAgICAgViAoYmxv Y2tlZCkKKwkgICAgICBWIChpbnRlcmxlYXZlZCkKKwkgICAgICBlbHNlCisJCWdvdG8gaW52 YWxpZDsKKwkgICAgfQorCSAgZWxzZQorCSAgICBnb3RvIGludmFsaWQ7CisJICBpZiAoKnZh bCAhPSAnLCcpCisJICAgIGJyZWFrOworCSAgKyt2YWw7CisJICArK247CisJICBpZiAoKnZh bCA9PSAnXDAnKQorCSAgICBnb3RvIGludmFsaWQ7CisJfQorI3VuZGVmIEMKKyN1bmRlZiBW CisgICAgfQorICBlbHNlIGlmIChtZW1zcGFjZSkKKyAgICBzd2l0Y2ggKCpyZXQpCisgICAg ICB7CisJY2FzZSBvbXBfZGVmYXVsdF9tZW1fc3BhY2U6ICpyZXQgPSBvbXBfZGVmYXVsdF9t ZW1fYWxsb2M7IGJyZWFrOworCWNhc2Ugb21wX2xhcmdlX2NhcF9tZW1fc3BhY2U6ICpyZXQg PSBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYzsgYnJlYWs7CisJY2FzZSBvbXBfY29uc3RfbWVt X3NwYWNlOiAqcmV0ID0gb21wX2NvbnN0X21lbV9hbGxvYzsgYnJlYWs7CisJY2FzZSBvbXBf aGlnaF9id19tZW1fc3BhY2U6ICpyZXQgPSBvbXBfaGlnaF9id19tZW1fYWxsb2M7IGJyZWFr OworCWNhc2Ugb21wX2xvd19sYXRfbWVtX3NwYWNlOiAqcmV0ID0gb21wX2xvd19sYXRfbWVt X2FsbG9jOyBicmVhazsKKwlkZWZhdWx0OiBfX2J1aWx0aW5fdW5yZWFjaGFibGUgKCk7Cisg ICAgICB9CiAgIHdoaWxlIChpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKnZhbCkpCiAgICAg Kyt2YWw7CiAgIGlmICgqdmFsID09ICdcMCcpCi0gICAgcmV0dXJuIHRydWU7Ci0gIHByaW50 X2Vudl92YXJfZXJyb3IgKGVudiwgdmFsKTsKKyAgICB7CisgICAgICBpZiAobnRyYWl0cykK Kwl7CisJICAqcmV0ID0gb21wX2luaXRfYWxsb2NhdG9yICgqcmV0LCBudHJhaXRzLCB0cmFp dHMpOworCSAgaWYgKCpyZXQgPT0gb21wX251bGxfYWxsb2NhdG9yKQorCSAgICB7CisJICAg ICAgZ29tcF9lcnJvciAoIkFsbG9jYXRvciBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlLipz IGNhbm5vdCBiZSAiCisJCQkgICJjcmVhdGVkLCB1c2luZyBvbXBfZGVmYXVsdF9tZW1fYWxs b2MgaW5zdGVhZCIsCisJCQkgIChpbnQpIChvcmlnX3ZhbCAtIGVudiAtIDEpLCBlbnYpOwor CSAgICAgICpyZXQgPSBvbXBfZGVmYXVsdF9tZW1fYWxsb2M7CisJICAgIH0KKwkgIGVsc2UK KwkgICAgZ29tcF9kZWZfYWxsb2NhdG9yX2VudnZhciA9IHN0cmR1cCAob3JpZ192YWwpOwor CX0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KK2ludmFsaWQ6CisgIGludCBsZW4gPSAo b3JpZ192YWwgLSBlbnYgLSAxKTsKKyAgaWYgKCp2YWwgPT0gJ1wwJykKKyAgICBnb21wX2Vy cm9yICgiTWlzc2luZyB2YWx1ZSBhdCB0aGUgZW5kIG9mIGVudmlyb25tZW50IHZhcmlhYmxl ICVzIiwgZW52KTsKKyAgZWxzZQorICAgIGdvbXBfZXJyb3IgKCJJbnZhbGlkIHZhbHVlIGZv ciBlbnZpcm9ubWVudCB2YXJpYWJsZSAlLipzIHdoZW4gcGFyc2luZzogJXMiLAorCQlsZW4s IGVudiwgdmFsKTsKICAgKnJldCA9IG9tcF9kZWZhdWx0X21lbV9hbGxvYzsKICAgcmV0dXJu IGZhbHNlOwogfQpAQCAtMTc4NCw3ICsxOTMwLDExIEBAIG9tcF9kaXNwbGF5X2VudiAoaW50 IHZlcmJvc2UpCiAgICAgQyAob21wX3B0ZWFtX21lbV9hbGxvYykKICAgICBDIChvbXBfdGhy ZWFkX21lbV9hbGxvYykKICN1bmRlZiBDCi0gICAgZGVmYXVsdDogYnJlYWs7CisgICAgLyog Rm9yIGFuIE9NUF9BTExPQ0FUT1Igd2l0aCB0cmFpdHMsICcnIHdpbGwgYmUgb3V0cHV0LiAg Ki8KKyAgICBkZWZhdWx0OgorICAgICAgaWYgKGdvbXBfZGVmX2FsbG9jYXRvcl9lbnZ2YXIp CisJZnB1dHMgKGdvbXBfZGVmX2FsbG9jYXRvcl9lbnZ2YXIsIHN0ZGVycik7CisgICAgICBi cmVhazsKICAgICB9CiAgIGZwdXRzICgiJ1xuIiwgc3RkZXJyKTsKIApAQCAtMjAzNiw2ICsy MTg2LDE2IEBAIHN0YXJ0c3dpdGggKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcHJl Zml4KQogICByZXR1cm4gc3RybmNtcCAoc3RyLCBwcmVmaXgsIHN0cmxlbiAocHJlZml4KSkg PT0gMDsKIH0KIAorc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoZGVzdHJ1Y3RvcikpCitj bGVhbnVwX2VudiAodm9pZCkKK3sKKyAgaWYgKGdvbXBfZGVmX2FsbG9jYXRvcl9lbnZ2YXIg IT0gTlVMTCkKKyAgICB7CisgICAgICBmcmVlIChnb21wX2RlZl9hbGxvY2F0b3JfZW52dmFy KTsKKyAgICAgIG9tcF9kZXN0cm95X2FsbG9jYXRvciAoZ29tcF9kZWZfYWxsb2NhdG9yKTsK KyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkK IGluaXRpYWxpemVfZW52ICh2b2lkKQogewpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21w LnRleGkgYi9saWJnb21wL2xpYmdvbXAudGV4aQppbmRleCAyMWQzNTgyYTY2NS4uMWM1N2Y1 YWEyNjEgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC50ZXhpCisrKyBiL2xpYmdvbXAv bGliZ29tcC50ZXhpCkBAIC0xOTM3LDcgKzE5MzcsMTAgQEAgc2VjdGlvbiA0IG9mIHRoZSBP cGVuTVAgc3BlY2lmaWNhdGlvbiBpbiB2ZXJzaW9uIDQuNSwgd2hpbGUgdGhvc2UKIGJlZ2lu bmluZyB3aXRoIEBlbnZ7R09NUF99IGFyZSBHTlUgZXh0ZW5zaW9ucy4KIAogQG1lbnUKKyog T01QX0FMTE9DQVRPUjo6ICAgICAgICAgICBTZXQgdGhlIGRlZmF1bHQgYWxsb2NhdG9yCisq IE9NUF9BRkZJTklUWV9GT1JNQVQ6OiAgICAgU2V0IHRoZSBmb3JtYXQgc3RyaW5nIHVzZWQg Zm9yIGFmZmluaXR5IGRpc3BsYXkKICogT01QX0NBTkNFTExBVElPTjo6ICAgICAgICBTZXQg d2hldGhlciBjYW5jZWxsYXRpb24gaXMgYWN0aXZhdGVkCisqIE9NUF9ESVNQTEFZX0FGRklO SVRZOjogICAgRGlzcGxheSB0aHJlYWQgYWZmaW5pdHkgaW5mb3JtYXRpb24KICogT01QX0RJ U1BMQVlfRU5WOjogICAgICAgICBTaG93IE9wZW5NUCB2ZXJzaW9uIGFuZCBlbnZpcm9ubWVu dCB2YXJpYWJsZXMKICogT01QX0RFRkFVTFRfREVWSUNFOjogICAgICBTZXQgdGhlIGRldmlj ZSB1c2VkIGluIHRhcmdldCByZWdpb25zCiAqIE9NUF9EWU5BTUlDOjogICAgICAgICAgICAg RHluYW1pYyBhZGp1c3RtZW50IG9mIHRocmVhZHMKQEAgLTE5NjIsNiArMTk2NSwxMjUgQEAg YmVnaW5uaW5nIHdpdGggQGVudntHT01QX30gYXJlIEdOVSBleHRlbnNpb25zLgogQGVuZCBt ZW51CiAKIAorQG5vZGUgT01QX0FMTE9DQVRPUgorQHNlY3Rpb24gQGVudntPTVBfQUxMT0NB VE9SfSAtLSBTZXQgdGhlIGRlZmF1bHQgYWxsb2NhdG9yCitAY2luZGV4IEVudmlyb25tZW50 IFZhcmlhYmxlCitAdGFibGUgQGFzaXMKK0BpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKK1Nl dHMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIHRoYXQgaXMgdXNlZCB3aGVuIG5vIGFsbG9jYXRv ciBoYXMgYmVlbiBzcGVjaWZpZWQKK2luIHRoZSBAY29kZXthbGxvY2F0ZX0gb3IgQGNvZGV7 YWxsb2NhdG9yfSBjbGF1c2Ugb3IgaWYgYW4gT3Blbk1QIG1lbW9yeQorcm91dGluZSBpcyBp bnZva2VkIHdpdGggdGhlIEBjb2Rle29tcF9udWxsX2FsbG9jYXRvcn0gYWxsb2NhdG9yLgor SWYgdW5zZXQsIEBjb2Rle29tcF9kZWZhdWx0X21lbV9hbGxvY30gaXMgdXNlZC4KKworVGhl IHZhbHVlIGNhbiBlaXRoZXIgYmUgYSBwcmVkZWZpbmVkIGFsbG9jYXRvciBvciBhIHByZWRl ZmluZWQgbWVtb3J5IHNwYWNlCitvciBhIHByZWRlZmluZWQgbWVtb3J5IHNwYWNlIGZvbGxv d2VkIGJ5IGEgY29sb24gYW5kIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QKK29mIG1lbW9yeSB0 cmFpdCBhbmQgdmFsdWUgcGFpcnMsIHNlcGFyYXRlZCBieSBAY29kZXs9fS4KKworQG11bHRp dGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuNDUgLjQ1CitAaGVhZGl0ZW0gUHJlZGVmaW5lZCBh bGxvY2F0b3JzIEB0YWIgUHJlZGVmaW5lZCBtZW1vcnkgc3BhY2VzCitAaXRlbSBvbXBfZGVm YXVsdF9tZW1fYWxsb2MgICAgIEB0YWIgb21wX2RlZmF1bHRfbWVtX3NwYWNlCitAaXRlbSBv bXBfbGFyZ2VfY2FwX21lbV9hbGxvYyAgIEB0YWIgb21wX2xhcmdlX2NhcF9tZW1fc3BhY2UK K0BpdGVtIG9tcF9jb25zdF9tZW1fYWxsb2MgICAgICAgQHRhYiBvbXBfY29uc3RfbWVtX3Nw YWNlCitAaXRlbSBvbXBfaGlnaF9id19tZW1fYWxsb2MgICAgIEB0YWIgb21wX2hpZ2hfYndf bWVtX3NwYWNlCitAaXRlbSBvbXBfbG93X2xhdF9tZW1fYWxsb2MgICAgIEB0YWIgb21wX2xv d19sYXRfbWVtX3NwYWNlCitAaXRlbSBvbXBfY2dyb3VwX21lbV9hbGxvYyAgICAgIEB0YWIg LS0KK0BpdGVtIG9tcF9wdGVhbV9tZW1fYWxsb2MgICAgICAgQHRhYiAtLQorQGl0ZW0gb21w X3RocmVhZF9tZW1fYWxsb2MgICAgICBAdGFiIC0tCitAZW5kIG11bHRpdGFibGUKKworQG11 bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMzAgLjYwCitAaGVhZGl0ZW0gVHJhaXQgQHRh YiBBbGxvd2VkIHZhbHVlcworQGl0ZW0gQGNvZGV7c3luY19oaW50fSBAdGFiIEBjb2Rle2Nv bnRlbmRlZH0sIEBjb2Rle3VuY29udGVuZGVkfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBAY29kZXtzZXJpYWxpemVkfSwgQGNvZGV7cHJpdmF0ZX0KK0BpdGVtIEBjb2Rle2Fs aWdubWVudH0gQHRhYiBQb3NpdGl2ZSBpbnRlZ2VyIGJlaW5nIGEgcG93ZXIgb2YgdHdvCitA aXRlbSBAY29kZXthY2Nlc3N9ICAgIEB0YWIgQGNvZGV7YWxsfSwgQGNvZGV7Y2dyb3VwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY29kZXtwdGVhbX0sIEBjb2Rle3RocmVh ZH0KK0BpdGVtIEBjb2Rle3Bvb2xfc2l6ZX0gQHRhYiBQb3NpdGl2ZSBpbnRlZ2VyCitAaXRl bSBAY29kZXtmYWxsYmFja30gIEB0YWIgQGNvZGV7ZGVmYXVsdF9tZW1fZmJ9LCBAY29kZXtu dWxsX2ZifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY29kZXthYm9ydF9mYn0s IEBjb2Rle2FsbG9jYXRvcl9mYn0KK0BpdGVtIEBjb2Rle2ZiX2RhdGF9ICAgQHRhYiBAZW1w aHt1bnN1cHBvcnRlZCBhcyBpdCBuZWVkcyBhbiBhbGxvY2F0b3IgaGFuZGxlfQorQGl0ZW0g QGNvZGV7cGlubmVkfSAgICBAdGFiIEBjb2Rle3RydWV9LCBAY29kZXtmYWxzZX0KK0BpdGVt IEBjb2Rle3BhcnRpdGlvbn0gQHRhYiBAY29kZXtlbnZpcm9ubWVudH0sIEBjb2Rle25lYXJl c3R9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjb2Rle2Jsb2NrZWR9LCBAY29k ZXtpbnRlcmxlYXZlZH0KK0BlbmQgbXVsdGl0YWJsZQorCitFeGFtcGxlczoKK0BzbWFsbGV4 YW1wbGUKK09NUF9BTExPQ0FUT1I9b21wX2hpZ2hfYndfbWVtX2FsbG9jCitPTVBfQUxMT0NB VE9SPW9tcF9sYXJnZV9jYXBfbWVtX3NwYWNlCitPTVBfQUxMT0NBVFI9b21wX2xvd19sYXRf bWVtX3NwYWNlOnBpbm5lZD10cnVlLHBhcnRpdGlvbj1uZWFyZXN0CitAZW5kIHNtYWxsZXhh bXBsZQorCitAYyBAaXRlbSBAZW1waHtTZWUgYWxzb306CisKK0BpdGVtIEBlbXBoe1JlZmVy ZW5jZX06CitAdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNh dGlvbiB2NS4wfSwgU2VjdGlvbiA2LjIxCitAZW5kIHRhYmxlCisKKworCitAbm9kZSBPTVBf QUZGSU5JVFlfRk9STUFUCitAc2VjdGlvbiBAZW52e09NUF9BRkZJTklUWV9GT1JNQVR9IC0t IFNldCB0aGUgZm9ybWF0IHN0cmluZyB1c2VkIGZvciBhZmZpbml0eSBkaXNwbGF5CitAY2lu ZGV4IEVudmlyb25tZW50IFZhcmlhYmxlCitAdGFibGUgQGFzaXMKK0BpdGVtIEBlbXBoe0Rl c2NyaXB0aW9ufToKK1NldHMgdGhlIGZvcm1hdCBzdHJpbmcgdXNlZCB3aGVuIGRpc3BsYXlp bmcgT3Blbk1QIHRocmVhZCBhZmZpbml0eSBpbmZvcm1hdGlvbi4KK1NwZWNpYWwgdmFsdWVz IGFyZSBvdXRwdXQgdXNpbmcgQGNvZGV7JX0gZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgc2l6 ZQorc3BlY2lmaWNhdGlvbiBhbmQgdGhlbiBlaXRoZXIgdGhlIHNpbmdsZS1jaGFyYWN0ZXIg ZmllbGQgdHlwZSBvciBpdHMgbG9uZworbmFtZSBlbmNsb3NlZCBpbiBjdXJseSBicmFjZXM7 IHVzaW5nIEBjb2RleyUlfSB3aWxsIGRpc3BsYXkgYSBsaXRlcmFsIHBlcmNlbnQuCitUaGUg c2l6ZSBzcGVjaWZpY2F0aW9uIGNvbnNpc3RzIG9mIGFuIG9wdGlvbmFsIEBjb2RlezAufSBv ciBAY29kZXsufSBmb2xsb3dlZAorYnkgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBzcGVjaWZpbmcg dGhlIG1pbmltYWwgd2lkdGggb2YgdGhlIG91dHB1dC4gIFdpdGgKK0Bjb2RlezAufSBhbmQg bnVtZXJpY2FsIHZhbHVlcywgdGhlIG91dHB1dCBpcyBwYWRkZWQgd2l0aCB6ZXJvcyBvbiB0 aGUgbGVmdDsKK3dpdGggQGNvZGV7Ln0sIHRoZSBvdXRwdXQgaXMgcGFkZGVkIGJ5IHNwYWNl cyBvbiB0aGUgbGVmdDsgb3RoZXJ3aXNlLCB0aGUKK291dHB1dCBpcyBwYWRkZWQgYnkgc3Bh Y2VzIG9uIHRoZSByaWdodC4gIElmIHVuc2V0LCB0aGUgdmFsdWUgaXMKK2BgQGNvZGV7bGV2 ZWwgJUwgdGhyZWFkICVpIGFmZmluaXR5ICVBfScnLgorCitTdXBwb3J0ZWQgZmllbGQgdHlw ZXMgYXJlOgorCitAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4xMCAuMjUgLjYwCitA aXRlbSB0IEB0YWIgdGVhbV9udW0gQHRhYiB2YWx1ZSByZXR1cm5lZCBieSBAY29kZXtvbXBf Z2V0X3RlYW1fbnVtfQorQGl0ZW0gVCBAdGFiIG51bV90ZWFtcyBAdGFiIHZhbHVlIHJldHVy bmVkIGJ5IEBjb2Rle29tcF9nZXRfbnVtX3RlYW1zfQorQGl0ZW0gTCBAdGFiIG5lc3Rpbmdf bGV2ZWwgQHRhYiB2YWx1ZSByZXR1cm5lZCBieSBAY29kZXtvbXBfZ2V0X2xldmVsfQorQGl0 ZW0gbiBAdGFiIHRocmVhZF9udW0gQHRhYiB2YWx1ZSByZXR1cm5lZCBieSBAY29kZXtvbXBf Z2V0X3RocmVhZF9udW19CitAaXRlbSBOIEB0YWIgbnVtX3RocmVhZHMgQHRhYiB2YWx1ZSBy ZXR1cm5lZCBieSBAY29kZXtvbXBfZ2V0X251bV90aHJlYWRzfQorQGl0ZW0gYSBAdGFiIGFu Y2VzdG9yX3RudW0KKyAgICAgIEB0YWIgdmFsdWUgcmV0dXJuZWQgYnkKKyAgICAgICAgICAg QGNvZGV7b21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtKG9tcF9nZXRfbGV2ZWwoKS0xKX0K K0BpdGVtIEggQHRhYiBob3N0IEB0YWIgbmFtZSBvZiB0aGUgaG9zdCB0aGF0IGV4ZWN1dGVz IHRoZSB0aHJlYWQKK0BpdGVtIFAgQHRhYiBwcm9jZXNzX2lkIEB0YWIgcHJvY2VzcyBpZGVu dGnvrIFlcgorQGl0ZW0gaSBAdGFiIG5hdGl2ZV90aHJlYWRfaWQgQHRhYiBuYXRpdmUgdGhy ZWFkIGlkZW50ae+sgWVyCitAaXRlbSBBIEB0YWIgdGhyZWFkX2FmZmluaXR5CisgICAgICBA dGFiIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGludGVnZXIgdmFsdWVzIG9yIHJhbmdlcywg cmVwcmVzZW50aW5nIHRoZQorICAgICAgICAgICBwcm9jZXNzb3JzIG9uIHdoaWNoIGEgcHJv Y2VzcyBtaWdodCBleGVjdXRlLCBzdWJqZWN0IHRvIGFmZmluaXR5CisgICAgICAgICAgIG1l Y2hhbmlzbXMKK0BlbmQgbXVsdGl0YWJsZQorCitGb3IgaW5zdGFuY2UsIGFmdGVyIHNldHRp bmcKKworQHNtYWxsZXhhbXBsZQorT01QX0FGRklOSVRZX0ZPUk1BVD0iJTAuMmEhJW4hJS40 TCElTjslLjJ0OyUwLjJUOyVAe3RlYW1fbnVtQH07JUB7bnVtX3RlYW1zQH07JUEiCitAZW5k IHNtYWxsZXhhbXBsZQorCit3aXRoIGVpdGhlciBAY29kZXtPTVBfRElTUExBWV9BRkZJTklU WX0gYmVpbmcgc2V0IG9yIHdoZW4gY2FsbGluZworQGNvZGV7b21wX2Rpc3BsYXlfYWZmaW5p dHl9IHdpdGggQGNvZGV7TlVMTH0gb3IgYW4gZW1wdHkgc3RyaW5nLCB0aGUgcHJvZ3JhbQor bWlnaHQgZGlzcGxheSB0aGUgZm9sbG93aW5nOgorCitAc21hbGxleGFtcGxlCiswMCEwISAg IDEhNDsgMDswMTswOzE7MC0xMQorMDAhMyEgICAxITQ7IDA7MDE7MDsxOzAtMTEKKzAwITIh ICAgMSE0OyAwOzAxOzA7MTswLTExCiswMCExISAgIDEhNDsgMDswMTswOzE7MC0xMQorQGVu ZCBzbWFsbGV4YW1wbGUKKworQGl0ZW0gQGVtcGh7U2VlIGFsc299OgorQHJlZntPTVBfRElT UExBWV9BRkZJTklUWX0KKworQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKK0B1cmVme2h0dHBz Oi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY1LjB9LCBTZWN0aW9u IDYuMTQKK0BlbmQgdGFibGUKKworCisKIEBub2RlIE9NUF9DQU5DRUxMQVRJT04KIEBzZWN0 aW9uIEBlbnZ7T01QX0NBTkNFTExBVElPTn0gLS0gU2V0IHdoZXRoZXIgY2FuY2VsbGF0aW9u IGlzIGFjdGl2YXRlZAogQGNpbmRleCBFbnZpcm9ubWVudCBWYXJpYWJsZQpAQCAtMTk3OSw2 ICsyMTAxLDI2IEBAIGlmIHVuc2V0LCBjYW5jZWxsYXRpb24gaXMgZGlzYWJsZWQgYW5kIHRo ZSBAY29kZXtjYW5jZWx9IGNvbnN0cnVjdCBpcyBpZ25vcmVkLgogCiAKIAorQG5vZGUgT01Q X0RJU1BMQVlfQUZGSU5JVFkKK0BzZWN0aW9uIEBlbnZ7T01QX0RJU1BMQVlfQUZGSU5JVFl9 IC0tIERpc3BsYXkgdGhyZWFkIGFmZmluaXR5IGluZm9ybWF0aW9uCitAY2luZGV4IEVudmly b25tZW50IFZhcmlhYmxlCitAdGFibGUgQGFzaXMKK0BpdGVtIEBlbXBoe0Rlc2NyaXB0aW9u fToKK0lmIHNldCB0byBAY29kZXtGQUxTRX0gb3IgaWYgdW5zZXQsIGFmZmluaXR5IGRpc3Bs YXlpbmcgaXMgZGlzYWJsZWQuCitJZiBzZXQgdG8gQGNvZGV7VFJVRX0sIHRoZSBydW50aW1l IHdpbGwgZGlzcGxheSBhZmZpbml0eSBpbmZvcm1hdGlvbiBhYm91dAorT3Blbk1QIHRocmVh ZHMgaW4gYSBwYXJhbGxlbCByZWdpb24gdXBvbiBlbnRlcmluZyB0aGUgcmVnaW9uIGFuZCBl dmVyeSB0aW1lCithbnkgY2hhbmdlIG9jY3Vycy4KKworQGl0ZW0gQGVtcGh7U2VlIGFsc299 OgorQHJlZntPTVBfQUZGSU5JVFlfRk9STUFUfQorCitAaXRlbSBAZW1waHtSZWZlcmVuY2V9 OgorQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24g djUuMH0sIFNlY3Rpb24gNi4xMworQGVuZCB0YWJsZQorCisKKworCiBAbm9kZSBPTVBfRElT UExBWV9FTlYKIEBzZWN0aW9uIEBlbnZ7T01QX0RJU1BMQVlfRU5WfSAtLSBTaG93IE9wZW5N UCB2ZXJzaW9uIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKIEBjaW5kZXggRW52aXJvbm1l bnQgVmFyaWFibGUKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy9h bGxvY2F0b3ItMS5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL2FsbG9jYXRvci0x LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3NTc3OTJhYTYy Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL2FsbG9j YXRvci0xLmMKQEAgLTAsMCArMSwxNSBAQAorLyogeyBkZy1zZXQtdGFyZ2V0LWVudi12YXIg T01QX0FMTE9DQVRPUiAib21wX2xhcmdlX2NhcF9tZW1fYWxsb2MiIH0gKi8KKy8qIHsgZGct c2V0LXRhcmdldC1lbnYtdmFyIE9NUF9ESVNQTEFZX0VOViAidHJ1ZSIgfSAqLworCisvKiB7 IGRnLW91dHB1dCAiLlxcXFtob3N0XFxcXSBPTVBfQUxMT0NBVE9SID0gJ29tcF9sYXJnZV9j YXBfbWVtX2FsbG9jJy4qIiB9ICovCisKKyNpbmNsdWRlIDxvbXAuaD4KKworaW50CittYWlu ICgpCit7CisgIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3QgbSA9IG9tcF9nZXRfZGVmYXVsdF9h bGxvY2F0b3IgKCk7CisgIGlmIChtICE9IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jKQorICAg IF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvYWxsb2NhdG9yLTIuYyBiL2xpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3ItMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5hYzY4MGU1OWJmYgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAv dGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3ItMi5jCkBAIC0wLDAgKzEsMTcgQEAKKy8q IHsgZGctc2V0LXRhcmdldC1lbnYtdmFyIE9NUF9BTExPQ0FUT1IgIm9tcF9sYXJnZV9jYXBf bWVtX3NwYWNlIiB9ICovCisvKiB7IGRnLXNldC10YXJnZXQtZW52LXZhciBPTVBfRElTUExB WV9FTlYgInRydWUiIH0gKi8KKworLyogRXhwZWN0IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9j IGFzIGFsbG9jYXRvciBmb3Igb21wX2xhcmdlX2NhcF9tZW1fc3BhY2UuICovCisvKiB7IGRn LW91dHB1dCAiLlxcXFtob3N0XFxcXSBPTVBfQUxMT0NBVE9SID0gJ29tcF9sYXJnZV9jYXBf bWVtX2FsbG9jJy4qIiB9ICovCisjaW5jbHVkZSA8b21wLmg+CisKK2ludAorbWFpbiAoKQor eworICBvbXBfYWxsb2NhdG9yX2hhbmRsZV90IG0gPSBvbXBfZ2V0X2RlZmF1bHRfYWxsb2Nh dG9yICgpOworICAvKiBXaXRob3V0IHRyYWl0cywgb21wX2xhcmdlX2NhcF9tZW1fc3BhY2Ug aW1wbGllcworICAgICBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYy4gICovCisgIGlmIChtICE9 IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAg cmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMv YWxsb2NhdG9yLTMuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxvY2F0b3It My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMjhmNGU3NTNi MAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxv Y2F0b3ItMy5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGctc2V0LXRhcmdldC1lbnYtdmFy IE9NUF9BTExPQ0FUT1IgIiAgb21wX2RlZmF1bHRfbWVtX3NwYWNlOmFsaWdubWVudD01MTIs cGlubmVkPWZhbHNlLGFjY2Vzcz1hbGwgICIgfSAqLworLyogeyBkZy1zZXQtdGFyZ2V0LWVu di12YXIgT01QX0RJU1BMQVlfRU5WICJ0cnVlIiB9ICovCisKKy8qIFdlIGNvcGllZCB0aGUg ZW52aXJvbm1lbnQgc3RyaW5nOyBoZW5jZSwgaXQgbWF5IGNvbnRhaW4gd2hpdGUgc3BhY2Uu ICAqLworLyogeyBkZy1vdXRwdXQgIi5cXFxbaG9zdFxcXF0gT01QX0FMTE9DQVRPUiA9ICcg IG9tcF9kZWZhdWx0X21lbV9zcGFjZTphbGlnbm1lbnQ9NTEyLHBpbm5lZD1mYWxzZSxhY2Nl c3M9YWxsICAnLioiIH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPG9t cC5oPgorCitpbnQKK21haW4gKCkKK3sKKyAgaW50ICphLCAqYjsKKyAgYSA9IG9tcF9hbGxv YyAoc2l6ZW9mIChpbnQpICogMTAyNCwgb21wX251bGxfYWxsb2NhdG9yKTsKKworICBvbXBf YWxsb2NhdG9yX2hhbmRsZV90IG0gPSBvbXBfZ2V0X2RlZmF1bHRfYWxsb2NhdG9yICgpOwor ICBiID0gb21wX2FsbG9jIChzaXplb2YgKGludCkgKiAxMDI0LCBtKTsKKworICBpZiAoKHVp bnRwdHJfdCkgYSAlIDUxMiAhPSAwKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKworICBp ZiAoKHVpbnRwdHJfdCkgYiAlIDUxMiAhPSAwKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KyAgb21wX2ZyZWUgKGEsIG9tcF9udWxsX2FsbG9jYXRvcik7CisgIG9tcF9mcmVlIChiLCBt KTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLmMvYWxsb2NhdG9yLTQuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy9hbGxv Y2F0b3ItNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNWQw YjA5YmI0ZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy9hbGxvY2F0b3ItNC5jCkBAIC0wLDAgKzEsMTUgQEAKKy8qIHsgZGctc2V0LXRhcmdldC1l bnYtdmFyIE9NUF9BTExPQ0FUT1IgIm9tcF9jb25zdF9tZW1fc3BhY2U6YWxpZ25tZW50PTMs cGlubmVkPSIgfSAqLworCisvKiB7IGRnLW91dHB1dCAiLipsaWJnb21wOiBNaXNzaW5nIHZh bHVlIGF0IHRoZSBlbmQgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgT01QX0FMTE9DQVRPUj1v bXBfY29uc3RfbWVtX3NwYWNlOmFsaWdubWVudD0zLHBpbm5lZD0uKiIgfSAqLworLyogT01Q X0FMTE9DQVRPUiBzeW50YXggZXJyb3IgLT4gdXNlIG9tcF9kZWZhdWx0X21lbV9hbGxvYy4g ICovCisKKyNpbmNsdWRlIDxvbXAuaD4KKworaW50CittYWluICgpCit7CisgIG9tcF9hbGxv Y2F0b3JfaGFuZGxlX3QgbSA9IG9tcF9nZXRfZGVmYXVsdF9hbGxvY2F0b3IgKCk7CisgIGlm IChtICE9IG9tcF9kZWZhdWx0X21lbV9hbGxvYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5jL2FsbG9jYXRvci01LmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvYWxsb2Nh dG9yLTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGY5MDBj ZjIxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMv YWxsb2NhdG9yLTUuYwpAQCAtMCwwICsxLDE1IEBACisvKiB7IGRnLXNldC10YXJnZXQtZW52 LXZhciBPTVBfQUxMT0NBVE9SICJvbXBfY29uc3RfbWVtX3NwYWNlOmFjY2Vzcz1ub25lLHBp bm5lZD1mYWxzZSIgfSAqLworCisvKiB7IGRnLW91dHB1dCAiLipsaWJnb21wOiBJbnZhbGlk IHZhbHVlIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSBPTVBfQUxMT0NBVE9SIHdoZW4gcGFy c2luZzogbm9uZSxwaW5uZWQ9ZmFsc2UuKiIgfSAqLworLyogT01QX0FMTE9DQVRPUiBzeW50 YXggZXJyb3IgLT4gdXNlIG9tcF9kZWZhdWx0X21lbV9hbGxvYy4gICovCisKKyNpbmNsdWRl IDxvbXAuaD4KKworaW50CittYWluICgpCit7CisgIG9tcF9hbGxvY2F0b3JfaGFuZGxlX3Qg bSA9IG9tcF9nZXRfZGVmYXVsdF9hbGxvY2F0b3IgKCk7CisgIGlmIChtICE9IG9tcF9kZWZh dWx0X21lbV9hbGxvYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIHJldHVybiAwOwor fQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL2FsbG9jYXRvci02 LmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvYWxsb2NhdG9yLTYuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2M5OWUwZTE3NTAKLS0tIC9kZXYv bnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvYWxsb2NhdG9yLTYuYwpA QCAtMCwwICsxLDE1IEBACisvKiB7IGRnLXNldC10YXJnZXQtZW52LXZhciBPTVBfQUxMT0NB VE9SICJvbXBfZGVmYXVsdF9tZW1fc3BhY2U6YWxpZ25tZW50PTMiIH0gKi8KKworLyogeyBk Zy1vdXRwdXQgIi4qbGliZ29tcDogQWxsb2NhdG9yIG9mIGVudmlyb25tZW50IHZhcmlhYmxl IE9NUF9BTExPQ0FUT1IgY2Fubm90IGJlIGNyZWF0ZWQsIHVzaW5nIG9tcF9kZWZhdWx0X21l bV9hbGxvYyBpbnN0ZWFkLioiIH0gKi8KKy8qIE9NUF9BTExPQ0FUT1IncyBhbGlnbm1lbnQg aXMgbm90IHBvd2VyIG9mIDIgLT4gdXNlIG9tcF9kZWZhdWx0X21lbV9hbGxvYy4gICovCisK KyNpbmNsdWRlIDxvbXAuaD4KKworaW50CittYWluICgpCit7CisgIG9tcF9hbGxvY2F0b3Jf aGFuZGxlX3QgbSA9IG9tcF9nZXRfZGVmYXVsdF9hbGxvY2F0b3IgKCk7CisgIGlmIChtICE9 IG9tcF9kZWZhdWx0X21lbV9hbGxvYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIHJl dHVybiAwOworfQo= --------------v8PrLnJ8uOVIYORFhXN0GKlg--